diff --git a/doc/src/Eqs/fix_mvv_dpd.jpg b/doc/src/Eqs/fix_mvv_dpd.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b5f39bb4702c93feed1e083aa67566feec41e1df Binary files /dev/null and b/doc/src/Eqs/fix_mvv_dpd.jpg differ diff --git a/doc/src/Eqs/fix_mvv_dpd.tex b/doc/src/Eqs/fix_mvv_dpd.tex new file mode 100644 index 0000000000000000000000000000000000000000..685d527763aeb6558f396ca4081c50e465fbf359 --- /dev/null +++ b/doc/src/Eqs/fix_mvv_dpd.tex @@ -0,0 +1,21 @@ +\documentclass[12pt]{article} + +\begin{document} + +$$ + v(t+\frac{\Delta t}{2}) = v(t) + \frac{\Delta t}{2}\cdot a(t), +$$ + +$$ + r(t+\Delta t) = r(t) + \Delta t\cdot v(t+\frac{\Delta t}{2}), +$$ + +$$ + a(t+\Delta t) = \frac{1}{m}\cdot F\left[ r(t+\Delta t), v(t) +\lambda \cdot \Delta t\cdot a(t)\right], +$$ + +$$ + v(t+\Delta t) = v(t+\frac{\Delta t}{2}) + \frac{\Delta t}{2}\cdot a(t+\Delta t) +$$ + +\end{document} diff --git a/doc/src/Eqs/pair_edpd_force.jpg b/doc/src/Eqs/pair_edpd_force.jpg new file mode 100644 index 0000000000000000000000000000000000000000..fabb6f772e2b61f199d6f36bb4f192f328e42aaf Binary files /dev/null and b/doc/src/Eqs/pair_edpd_force.jpg differ diff --git a/doc/src/Eqs/pair_edpd_force.tex b/doc/src/Eqs/pair_edpd_force.tex new file mode 100644 index 0000000000000000000000000000000000000000..f6a0ca0d3cb46d714dd0b23ab23ac50e2d241197 --- /dev/null +++ b/doc/src/Eqs/pair_edpd_force.tex @@ -0,0 +1,33 @@ +\documentclass[12pt]{article} + +\begin{document} + +$$ + \mathbf{F}_{ij}^{C} = \alpha_{ij}{\omega_{C}}(r_{ij})\mathbf{e}_{ij}, +$$ + +$$ + \mathbf{F}_{ij}^{D} = -\gamma {\omega_{D}}(r_{ij})(\mathbf{e}_{ij} \cdot \mathbf{v}_{ij})\mathbf{e}_{ij}, +$$ + +$$ + \mathbf{F}_{ij}^{R} = \sigma {\omega_{R}}(r_{ij}){\xi_{ij}}\Delta t^{-1/2} \mathbf{e}_{ij}, +$$ + +$$ + \omega_{C}(r) = 1 - r/r_c, +$$ + +$$ + \alpha_{ij} = A\cdot k_B(T_i + T_j)/2, +$$ + +$$ + \omega_{D}(r) = \omega^2_{R}(r) = (1-r/r_c)^s, +$$ + +$$ + \sigma_{ij}^2 = 4\gamma k_B T_i T_j/(T_i + T_j), +$$ + +\end{document} diff --git a/doc/src/Eqs/pair_edpd_gov.jpg b/doc/src/Eqs/pair_edpd_gov.jpg new file mode 100644 index 0000000000000000000000000000000000000000..10b303a218b0fa1f1bcf78fa6a416162189f2cd0 Binary files /dev/null and b/doc/src/Eqs/pair_edpd_gov.jpg differ diff --git a/doc/src/Eqs/pair_edpd_gov.tex b/doc/src/Eqs/pair_edpd_gov.tex new file mode 100644 index 0000000000000000000000000000000000000000..782cdec99ec9ee0205d47d93c404d71ef5fb09d9 --- /dev/null +++ b/doc/src/Eqs/pair_edpd_gov.tex @@ -0,0 +1,15 @@ +\documentclass[12pt]{article} + +\begin{document} + +$$ + \frac{\mathrm{d}^2 \mathbf{r}_i}{\mathrm{d} t^2}= + \frac{\mathrm{d} \mathbf{v}_i}{\mathrm{d} t} + =\mathbf{F}_{i}=\sum_{i\neq j}(\mathbf{F}_{ij}^{C}+\mathbf{F}_{ij}^{D}+\mathbf{F}_{ij}^{R}), +$$ + +$$ + C_v\frac{\mathrm{d} T_i}{\mathrm{d} t}= q_{i} = \sum_{i\neq j}(q_{ij}^{C}+q_{ij}^{V}+q_{ij}^{R}), +$$ + +\end{document} diff --git a/doc/src/Eqs/pair_edpd_heat.jpg b/doc/src/Eqs/pair_edpd_heat.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b9256a1d13301ad83ffe4bb538b10090aa73b223 Binary files /dev/null and b/doc/src/Eqs/pair_edpd_heat.jpg differ diff --git a/doc/src/Eqs/pair_edpd_heat.tex b/doc/src/Eqs/pair_edpd_heat.tex new file mode 100644 index 0000000000000000000000000000000000000000..241a1bad643a3ebea5a93115973f8f2446c34571 --- /dev/null +++ b/doc/src/Eqs/pair_edpd_heat.tex @@ -0,0 +1,29 @@ +\documentclass[12pt]{article} + +\begin{document} + +$$ + q_i^C = \sum_{j \ne i} k_{ij} \omega_{CT}(r_{ij}) \left( \frac{1}{T_i} - \frac{1}{T_j} \right), +$$ + +$$ + q_i^V = \frac{1}{2 C_v}\sum_{j \ne i}{ \left\{ \omega_D(r_{ij})\left[\gamma_{ij} \left( \mathbf{e}_{ij} \cdot \mathbf{v}_{ij} \right)^2 - \frac{\left( \sigma _{ij} \right)^2}{m}\right] - \sigma _{ij} \omega_R(r_{ij})\left( \mathbf{e}_{ij} \cdot \mathbf{v}_{ij} \right){\xi_{ij}} \right\} }, +$$ + +$$ + q_i^R = \sum_{j \ne i} \beta _{ij} \omega_{RT}(r_{ij}) d {t^{ - 1/2}} \xi_{ij}^e, +$$ + +$$ + \omega_{CT}(r)=\omega_{RT}^2(r)=\left(1-r/r_{ct}\right)^{s_T}, +$$ + +$$ + k_{ij}=C_v^2\kappa(T_i + T_j)^2/4k_B, +$$ + +$$ + \beta_{ij}^2=2k_Bk_{ij}, +$$ + +\end{document} diff --git a/doc/src/Eqs/pair_edpd_kappa.jpg b/doc/src/Eqs/pair_edpd_kappa.jpg new file mode 100644 index 0000000000000000000000000000000000000000..158974d37427261ccecdedbc98ed7503ad82760f Binary files /dev/null and b/doc/src/Eqs/pair_edpd_kappa.jpg differ diff --git a/doc/src/Eqs/pair_edpd_kappa.tex b/doc/src/Eqs/pair_edpd_kappa.tex new file mode 100644 index 0000000000000000000000000000000000000000..ac5ca9f740337377e09592bc3119f4ec77fc96e8 --- /dev/null +++ b/doc/src/Eqs/pair_edpd_kappa.tex @@ -0,0 +1,9 @@ +\documentclass[12pt]{article} + +\begin{document} + +$$ + \kappa = \frac{315k_B\upsilon }{2\pi \rho C_v r_{ct}^5}\frac{1}{Pr}, +$$ + +\end{document} diff --git a/doc/src/Eqs/pair_mdpd_force.jpg b/doc/src/Eqs/pair_mdpd_force.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9b0e573b79a3d2f0cb31706a0fcd0c61e64ecdad Binary files /dev/null and b/doc/src/Eqs/pair_mdpd_force.jpg differ diff --git a/doc/src/Eqs/pair_mdpd_force.tex b/doc/src/Eqs/pair_mdpd_force.tex new file mode 100644 index 0000000000000000000000000000000000000000..b5c8d9be4a25f66515a404cdc7223fe09f323af0 --- /dev/null +++ b/doc/src/Eqs/pair_mdpd_force.tex @@ -0,0 +1,17 @@ +\documentclass[12pt]{article} + +\begin{document} + +$$ + \mathbf{F}_{ij}^C = Aw_c(r_{ij})\mathbf{e}_{ij} + B(\rho_i+\rho_j)w_d(r_{ij})\mathbf{e}_{ij}, +$$ + +$$ + \mathbf{F}_{ij}^{D} = -\gamma {\omega_{D}}(r_{ij})(\mathbf{e}_{ij} \cdot \mathbf{v}_{ij})\mathbf{e}_{ij}, +$$ + +$$ + \mathbf{F}_{ij}^{R} = \sigma {\omega_{R}}(r_{ij}){\xi_{ij}}\Delta t^{-1/2} \mathbf{e}_{ij}, +$$ + +\end{document} diff --git a/doc/src/Eqs/pair_tdpd_flux.jpg b/doc/src/Eqs/pair_tdpd_flux.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9da788ae9bdb1b4f927af09206a55c307926d3fc Binary files /dev/null and b/doc/src/Eqs/pair_tdpd_flux.jpg differ diff --git a/doc/src/Eqs/pair_tdpd_flux.tex b/doc/src/Eqs/pair_tdpd_flux.tex new file mode 100644 index 0000000000000000000000000000000000000000..f753f16acff39c7d07ce010c45e6cbc8aa96475c --- /dev/null +++ b/doc/src/Eqs/pair_tdpd_flux.tex @@ -0,0 +1,21 @@ +\documentclass[12pt]{article} + +\begin{document} + +$$ + Q_{ij}^D = -\kappa_{ij} w_{DC}(r_{ij}) \left( C_i - C_j \right), +$$ + +$$ + Q_{ij}^R = \epsilon_{ij}\left( C_i + C_j \right) w_{RC}(r_{ij}) \xi_{ij}, +$$ + +$$ + w_{DC}(r_{ij})=w^2_{RC}(r_{ij}) = (1 - r/r_{cc})^{\rm power\_{cc}}, +$$ + +$$ + \epsilon_{ij}^2 = m_s^2\kappa_{ij}\rho, +$$ + +\end{document} diff --git a/doc/src/Eqs/pair_tdpd_force.jpg b/doc/src/Eqs/pair_tdpd_force.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f6feb353970879cae9830c57c79df1c63daaf44f Binary files /dev/null and b/doc/src/Eqs/pair_tdpd_force.jpg differ diff --git a/doc/src/Eqs/pair_tdpd_force.tex b/doc/src/Eqs/pair_tdpd_force.tex new file mode 100644 index 0000000000000000000000000000000000000000..49edff97005e77f110567650b84b5e9a71bf6664 --- /dev/null +++ b/doc/src/Eqs/pair_tdpd_force.tex @@ -0,0 +1,29 @@ +\documentclass[12pt]{article} + +\begin{document} + +$$ + \mathbf{F}_{ij}^{C} = A{\omega_{C}}(r_{ij})\mathbf{e}_{ij}, +$$ + +$$ + \mathbf{F}_{ij}^{D} = -\gamma {\omega_{D}}(r_{ij})(\mathbf{e}_{ij} \cdot \mathbf{v}_{ij})\mathbf{e}_{ij}, +$$ + +$$ + \mathbf{F}_{ij}^{R} = \sigma {\omega_{R}}(r_{ij}){\xi_{ij}}\Delta t^{-1/2} \mathbf{e}_{ij}, +$$ + +$$ + \omega_{C}(r) = 1 - r/r_c, +$$ + +$$ + \omega_{D}(r) = \omega^2_{R}(r) = (1-r/r_c)^{\rm power\_f}, +$$ + +$$ + \sigma^2 = 2\gamma k_B T, +$$ + +\end{document} diff --git a/doc/src/Eqs/pair_tdpd_gov.jpg b/doc/src/Eqs/pair_tdpd_gov.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0ed793a1326ec15203df2d3e77d6db3d0ee73905 Binary files /dev/null and b/doc/src/Eqs/pair_tdpd_gov.jpg differ diff --git a/doc/src/Eqs/pair_tdpd_gov.tex b/doc/src/Eqs/pair_tdpd_gov.tex new file mode 100644 index 0000000000000000000000000000000000000000..e4b5f5790a23efbf7cafc13b7720123c3f120d49 --- /dev/null +++ b/doc/src/Eqs/pair_tdpd_gov.tex @@ -0,0 +1,13 @@ +\documentclass[12pt]{article} + +\begin{document} + +$$ + \frac{\mathrm{d}^2 \mathbf{r}_i}{\mathrm{d} t^2} = \frac{\mathrm{d} \mathbf{v}_i}{\mathrm{d} t}=\mathbf{F}_{i}=\sum_{i\neq j}(\mathbf{F}_{ij}^{C}+\mathbf{F}_{ij}^{D}+\mathbf{F}_{ij}^{R}), +$$ + +$$ + \frac{\mathrm{d} C_{i}}{\mathrm{d} t}= Q_{i} = \sum_{i\neq j}(Q_{ij}^{D}+Q_{ij}^{R}) + Q_{i}^{S}, +$$ + +\end{document} diff --git a/doc/src/JPG/examples_edpd.jpg b/doc/src/JPG/examples_edpd.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4d0cde6370c9cb575902eb66d08ff2f2716c1607 Binary files /dev/null and b/doc/src/JPG/examples_edpd.jpg differ diff --git a/doc/src/JPG/examples_mdpd.gif b/doc/src/JPG/examples_mdpd.gif new file mode 100644 index 0000000000000000000000000000000000000000..29ace1a0b2558d110a9afdf5f2d136121e50d628 Binary files /dev/null and b/doc/src/JPG/examples_mdpd.gif differ diff --git a/doc/src/JPG/examples_mdpd_first.jpg b/doc/src/JPG/examples_mdpd_first.jpg new file mode 100644 index 0000000000000000000000000000000000000000..958912e662fc5ae032f26a9dfa390b75b52a6c07 Binary files /dev/null and b/doc/src/JPG/examples_mdpd_first.jpg differ diff --git a/doc/src/JPG/examples_mdpd_last.jpg b/doc/src/JPG/examples_mdpd_last.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1bf8b9ac8274e38fcebea62fe8fb79365f56892e Binary files /dev/null and b/doc/src/JPG/examples_mdpd_last.jpg differ diff --git a/doc/src/JPG/examples_tdpd.jpg b/doc/src/JPG/examples_tdpd.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c00e83e00342334106b9aa465de8f71b9ac937ce Binary files /dev/null and b/doc/src/JPG/examples_tdpd.jpg differ diff --git a/doc/src/Manual.txt b/doc/src/Manual.txt index bb2e1b81143c75134eb1b8f3b93921687d46e1c6..110df7b16c88602f37fe0eaa084d1bafc74c52c9 100644 --- a/doc/src/Manual.txt +++ b/doc/src/Manual.txt @@ -1,7 +1,7 @@ LAMMPS Users Manual - + @@ -21,7 +21,7 @@

LAMMPS Documentation :c,h3 -17 Aug 2017 version :c,h4 +1 Sep 2017 version :c,h4 Version info: :h4 diff --git a/doc/src/PDF/USER-CGDNA-overview.pdf b/doc/src/PDF/USER-CGDNA-overview.pdf index cada7eaebf80121698d5ef4812c04f0864b77d98..e329877bc2cc5953574ea8fbd65789158a050879 100644 Binary files a/doc/src/PDF/USER-CGDNA-overview.pdf and b/doc/src/PDF/USER-CGDNA-overview.pdf differ diff --git a/doc/src/Section_commands.txt b/doc/src/Section_commands.txt index 571c6c4920eb658b20d03c3540e0341fe8e7ddad..32b714e1dec7234c5b9cc583de13b300a6119597 100644 --- a/doc/src/Section_commands.txt +++ b/doc/src/Section_commands.txt @@ -532,7 +532,8 @@ package"_Section_start.html#start_3. "dump vtk"_dump_vtk.html, "group2ndx"_group2ndx.html, "ndx2group"_group2ndx.html, -"temper/grem"_temper_grem.html :tb(c=3,ea=c) +"temper/grem"_temper_grem.html +"temper/npt"_temper_npt.html :tb(c=3,ea=c) :line @@ -685,6 +686,7 @@ package"_Section_start.html#start_3. "drude"_fix_drude.html, "drude/transform/direct"_fix_drude_transform.html, "drude/transform/reverse"_fix_drude_transform.html, +"edpd/source"_fix_dpd_source.html, "eos/cv"_fix_eos_cv.html, "eos/table"_fix_eos_table.html, "eos/table/rx"_fix_eos_table_rx.html, @@ -704,6 +706,9 @@ package"_Section_start.html#start_3. "meso"_fix_meso.html, "manifoldforce"_fix_manifoldforce.html, "meso/stationary"_fix_meso_stationary.html, +"mvv/dpd"_fix_mvv_dpd.html, +"mvv/edpd"_fix_mvv_dpd.html, +"mvv/tdpd"_fix_mvv_dpd.html, "nve/dot"_fix_nve_dot.html, "nve/dotc/langevin"_fix_nve_dotc_langevin.html, "nve/manifold/rattle"_fix_nve_manifold_rattle.html, @@ -732,6 +737,7 @@ package"_Section_start.html#start_3. "smd/move/triangulated/surface"_fix_smd_move_triangulated_surface.html, "smd/setvel"_fix_smd_setvel.html, "smd/wall/surface"_fix_smd_wall_surface.html, +"tdpd/source"_fix_dpd_source.html, "temp/rescale/eff"_fix_temp_rescale_eff.html, "ti/spring"_fix_ti_spring.html, "ttm/mod"_fix_ttm.html, @@ -750,6 +756,7 @@ package"_Section_accelerate.html. This is indicated by additional letters in parenthesis: g = GPU, i = USER-INTEL, k = KOKKOS, o = USER-OMP, t = OPT. +"aggregate/atom"_compute_cluster_atom.html, "angle"_compute_angle.html, "angle/local"_compute_angle_local.html, "angmom/chunk"_compute_angmom_chunk.html, @@ -775,6 +782,7 @@ KOKKOS, o = USER-OMP, t = OPT. "erotate/sphere"_compute_erotate_sphere.html, "erotate/sphere/atom"_compute_erotate_sphere_atom.html, "event/displace"_compute_event_displace.html, +"fragment/atom"_compute_cluster_atom.html, "global/atom"_compute_global_atom.html, "group/group"_compute_group_group.html, "gyration"_compute_gyration.html, @@ -836,6 +844,7 @@ package"_Section_start.html#start_3. "cnp/atom"_compute_cnp_atom.html, "dpd"_compute_dpd.html, "dpd/atom"_compute_dpd_atom.html, +"edpd/temp/atom"_compute_edpd_temp_atom.html, "fep"_compute_fep.html, "force/tally"_compute_tally.html, "heat/flux/tally"_compute_tally.html, @@ -868,6 +877,7 @@ package"_Section_start.html#start_3. "smd/ulsph/stress"_compute_smd_ulsph_stress.html, "smd/vol"_compute_smd_vol.html, "stress/tally"_compute_tally.html, +"tdpd/cc/atom"_compute_tdpd_cc_atom.html, "temp/drude"_compute_temp_drude.html, "temp/eff"_compute_temp_eff.html, "temp/deform/eff"_compute_temp_deform_eff.html, @@ -1024,6 +1034,7 @@ package"_Section_start.html#start_3. "eam/cd (o)"_pair_eam.html, "edip (o)"_pair_edip.html, "edip/multi"_pair_edip.html, +"edpd"_pair_meso.html, "eff/cut"_pair_eff.html, "exp6/rx"_pair_exp6_rx.html, "gauss/cut"_pair_gauss.html, @@ -1041,6 +1052,8 @@ package"_Section_start.html#start_3. "lj/sdk (gko)"_pair_sdk.html, "lj/sdk/coul/long (go)"_pair_sdk.html, "lj/sdk/coul/msm (o)"_pair_sdk.html, +"mdpd"_pair_meso.html, +"mdpd/rhosum"_pair_meso.html, "meam/c"_pair_meam.html, "meam/spline (o)"_pair_meam_spline.html, "meam/sw/spline"_pair_meam_sw_spline.html, @@ -1074,6 +1087,7 @@ package"_Section_start.html#start_3. "sph/taitwater/morris"_pair_sph_taitwater_morris.html, "srp"_pair_srp.html, "table/rx"_pair_table_rx.html, +"tdpd"_pair_meso.html, "tersoff/table (o)"_pair_tersoff.html, "thole"_pair_thole.html, "tip4p/long/soft (o)"_pair_lj_soft.html :tb(c=4,ea=c) diff --git a/doc/src/Section_howto.txt b/doc/src/Section_howto.txt index 6d699fe24be8d06956605689192b9bfb2ac1f4c6..65ae2220fe7b8c2ab37ab5aa9e9daa2e522e6c25 100644 --- a/doc/src/Section_howto.txt +++ b/doc/src/Section_howto.txt @@ -2859,8 +2859,8 @@ The nature of the atoms (core, Drude particle or non-polarizable) is specified via the "fix drude"_fix_drude.html command. The special list of neighbors is automatically refactored to account for the equivalence of core and Drude particles as regards special 1-2 to 1-4 -screening. It may be necessary to use the {extra} keyword of the -"special_bonds"_special_bonds.html command. If using "fix +screening. It may be necessary to use the {extra/special/per/atom} +keyword of the "read_data"_read_data.html command. If using "fix shake"_fix_shake.html, make sure no Drude particle is in this fix group. diff --git a/doc/src/Section_packages.txt b/doc/src/Section_packages.txt index 16864bcdc47fe84a61b4d7b3b28ecb0aca32b34a..6122dfac78f00f7f8cf7a9bff33e4a9c1713bcf1 100644 --- a/doc/src/Section_packages.txt +++ b/doc/src/Section_packages.txt @@ -112,7 +112,7 @@ Package, Description, Doc page, Example, Library "REPLICA"_#REPLICA, multi-replica methods, "Section 6.6.5"_Section_howto.html#howto_5, tad, - "RIGID"_#RIGID, rigid bodies and constraints, "fix rigid"_fix_rigid.html, rigid, - "SHOCK"_#SHOCK, shock loading methods, "fix msst"_fix_msst.html, -, - -"SNAP"_#SNAP, quantum-fitted potential, "pair snap"_pair_snap.html, snap, - +"SNAP"_#SNAP, quantum-fitted potential, "pair_style snap"_pair_snap.html, snap, - "SRD"_#SRD, stochastic rotation dynamics, "fix srd"_fix_srd.html, srd, - "VORONOI"_#VORONOI, Voronoi tesselation, "compute voronoi/atom"_compute_voronoi_atom.html, -, ext :tb(ea=c,ca1=l) @@ -134,6 +134,7 @@ Package, Description, Doc page, Example, Library "USER-LB"_#USER-LB, Lattice Boltzmann fluid,"fix lb/fluid"_fix_lb_fluid.html, USER/lb, - "USER-MANIFOLD"_#USER-MANIFOLD, motion on 2d surfaces,"fix manifoldforce"_fix_manifoldforce.html, USER/manifold, - "USER-MEAMC"_#USER-MEAMC, modified EAM potential (C++), "pair_style meam/c"_pair_meam.html, meam, - +"USER-MESO"_#USER-MESO, mesoscale DPD models, "pair_style edpd"_pair_meso.html, USER/meso, - "USER-MGPT"_#USER-MGPT, fast MGPT multi-ion potentials, "pair_style mgpt"_pair_mgpt.html, USER/mgpt, - "USER-MISC"_#USER-MISC, single-file contributions, USER-MISC/README, USER/misc, - "USER-MOLFILE"_#USER-MOLFILE, "VMD"_vmd_home molfile plug-ins,"dump molfile"_dump_molfile.html, -, ext @@ -1342,7 +1343,7 @@ make machine :pre [Supporting info:] src/SNAP: filenames -> commands -"pair snap"_pair_snap.html +"pair_style snap"_pair_snap.html "compute sna/atom"_compute_sna_atom.html "compute snad/atom"_compute_sna_atom.html "compute snav/atom"_compute_sna_atom.html @@ -1556,7 +1557,7 @@ make machine :pre src/USER-AWPMD: filenames -> commands src/USER-AWPMD/README -"pair awpmd/cut"_pair_awpmd.html +"pair_style awpmd/cut"_pair_awpmd.html examples/USER/awpmd :ul :line @@ -1745,12 +1746,12 @@ src/USER-DPD: filenames -> commands "fix eos/table/rx"_fix_eos_table_rx.html "fix shardlow"_fix_shardlow.html "fix rx"_fix_rx.html -"pair table/rx"_pair_table_rx.html -"pair dpd/fdt"_pair_dpd_fdt.html -"pair dpd/fdt/energy"_pair_dpd_fdt.html -"pair exp6/rx"_pair_exp6_rx.html -"pair multi/lucy"_pair_multi_lucy.html -"pair multi/lucy/rx"_pair_multi_lucy_rx.html +"pair_style table/rx"_pair_table_rx.html +"pair_style dpd/fdt"_pair_dpd_fdt.html +"pair_style dpd/fdt/energy"_pair_dpd_fdt.html +"pair_style exp6/rx"_pair_exp6_rx.html +"pair_style multi/lucy"_pair_multi_lucy.html +"pair_style multi/lucy/rx"_pair_multi_lucy_rx.html examples/USER/dpd :ul :line @@ -1785,8 +1786,8 @@ src/USER-DRUDE/README "fix drude"_fix_drude.html "fix drude/transform/*"_fix_drude_transform.html "compute temp/drude"_compute_temp_drude.html -"pair thole"_pair_thole.html -"pair lj/cut/thole/long"_pair_thole.html +"pair_style thole"_pair_thole.html +"pair_style lj/cut/thole/long"_pair_thole.html examples/USER/drude tools/drude :ul @@ -1824,8 +1825,8 @@ src/USER-EFF/README "fix npt/eff"_fix_nh_eff.html "fix langevin/eff"_fix_langevin_eff.html "compute temp/eff"_compute_temp_eff.html -"pair eff/cut"_pair_eff.html -"pair eff/inline"_pair_eff.html +"pair_style eff/cut"_pair_eff.html +"pair_style eff/inline"_pair_eff.html examples/USER/eff tools/eff/README tools/eff @@ -2155,11 +2156,47 @@ make machine :pre src/USER-MEAMC: filenames -> commands src/USER-MEAMC/README -"pair meam/c"_pair_meam.html +"pair_style meam/c"_pair_meam.html examples/meam :ul :line +USER-MESO package :link(USER-MESO),h4 + +[Contents:] + +Several extensions of the the dissipative particle dynamics (DPD) +method. Specifically, energy-conserving DPD (eDPD) that can model +non-isothermal processes, many-body DPD (mDPD) for simulating +vapor-liquid coexistence, and transport DPD (tDPD) for modeling +advection-diffuion-reaction systems. The equations of motion of these +DPD extensions are integrated through a modified velocity-Verlet (MVV) +algorithm. + +[Author:] Zhen Li (Division of Applied Mathematics, Brown University) + +[Install or un-install:] + +make yes-user-meso +make machine :pre + +make no-user-meso +make machine :pre + +[Supporting info:] + +src/USER-MESO: filenames -> commands +src/USER-MESO/README +"atom_style edpd"_atom_style.html +"pair_style edpd"_pair_meso.html +"pair_style mdpd"_pair_meso.html +"pair_style tdpd"_pair_meso.html +"fix mvv/dpd"_fix_mvv.html +examples/USER/meso +http://lammps.sandia.gov/movies.html#mesodpd :ul + +:line + USER-MOLFILE package :link(USER-MOLFILE),h4 [Contents:] diff --git a/doc/src/Section_start.txt b/doc/src/Section_start.txt index a25ec11cfe8507a989e3f453f5433d362f92484f..5f9ac36a4a679ff4b9dea00fd5ca27f2f7f95a9f 100644 --- a/doc/src/Section_start.txt +++ b/doc/src/Section_start.txt @@ -536,7 +536,7 @@ You should get the executable lmp_foo when the build is complete. :line -Errors that can occur when making LAMMPS: h5 :link(start_2_3) +Errors that can occur when making LAMMPS :h5 :link(start_2_3) If an error occurs when building LAMMPS, the compiler or linker will state very explicitly what the problem is. The error message should diff --git a/doc/src/atom_style.txt b/doc/src/atom_style.txt index 077636dfd117d7bd53e6fe4c26a2dfb6b231d7b5..49d9dde79119dee8b7b4ab7efa43519ac9910744 100644 --- a/doc/src/atom_style.txt +++ b/doc/src/atom_style.txt @@ -13,17 +13,19 @@ atom_style command :h3 atom_style style args :pre style = {angle} or {atomic} or {body} or {bond} or {charge} or {dipole} or \ - {dpd} or {electron} or {ellipsoid} or {full} or {line} or {meso} or \ - {molecular} or {peri} or {smd} or {sphere} or {tri} or \ - {template} or {hybrid} :ulb,l + {dpd} or {edpd} or {mdpd} or {tdpd} or {electron} or {ellipsoid} or \ + {full} or {line} or {meso} or {molecular} or {peri} or {smd} or \ + {sphere} or {tri} or {template} or {hybrid} :ulb,l args = none for any style except the following - {body} args = bstyle bstyle-args - bstyle = style of body particles - bstyle-args = additional arguments specific to the bstyle - see the "body"_body.html doc page for details - {template} args = template-ID - template-ID = ID of molecule template specified in a separate "molecule"_molecule.html command - {hybrid} args = list of one or more sub-styles, each with their args :pre + {body} args = bstyle bstyle-args + bstyle = style of body particles + bstyle-args = additional arguments specific to the bstyle + see the "body"_body.html doc page for details + {tdpd} arg = Nspecies + Nspecies = # of chemical species + {template} arg = template-ID + template-ID = ID of molecule template specified in a separate "molecule"_molecule.html command + {hybrid} args = list of one or more sub-styles, each with their args :pre accelerated styles (with same args) = {angle/kk} or {atomic/kk} or {bond/kk} or {charge/kk} or {full/kk} or {molecular/kk} :l :ule @@ -36,7 +38,8 @@ atom_style full atom_style body nparticle 2 10 atom_style hybrid charge bond atom_style hybrid charge body nparticle 2 5 -atom_style template myMols :pre +atom_style template myMols +atom_style tdpd 2 :pre [Description:] @@ -74,6 +77,9 @@ quantities. {charge} | charge | atomic system with charges | {dipole} | charge and dipole moment | system with dipolar particles | {dpd} | internal temperature and internal energies | DPD particles | +{edpd} | temperature and heat capacity | eDPD particles | +{mdpd} | density | mDPD particles | +{tdpd} | chemical concentration | tDPD particles | {electron} | charge and spin and eradius | electronic force field | {ellipsoid} | shape, quaternion, angular momentum | aspherical particles | {full} | molecular + charge | bio-molecules | @@ -145,6 +151,19 @@ properties with internal temperature (dpdTheta), internal conductive energy (uCond), internal mechanical energy (uMech), and internal chemical energy (uChem). +The {edpd} style is for energy-conserving dissipative particle +dynamics (eDPD) particles which store a temperature (edpd_temp), and +heat capacity(edpd_cv). + +The {mdpd} style is for many-body dissipative particle dynamics (mDPD) +particles which store a density (rho) for considering +density-dependent many-body interactions. + +The {tdpd} style is for transport dissipative particle dynamics (tDPD) +particles which store a set of chemical concentration. An integer +"cc_species" is required to specify the number of chemical species +involved in a tDPD system. + The {meso} style is for smoothed particle hydrodynamics (SPH) particles which store a density (rho), energy (e), and heat capacity (cv). @@ -284,6 +303,11 @@ force fields"_pair_eff.html. The {dpd} style is part of the USER-DPD package for dissipative particle dynamics (DPD). +The {edpd}, {mdpd}, and {tdpd} styles are part of the USER-MESO package +for energy-conserving dissipative particle dynamics (eDPD), many-body +dissipative particle dynamics (mDPD), and transport dissipative particle +dynamics (tDPD), respectively. + The {meso} style is part of the USER-SPH package for smoothed particle hydrodynamics (SPH). See "this PDF guide"_USER/sph/SPH_LAMMPS_userguide.pdf to using SPH in LAMMPS. diff --git a/doc/src/commands.txt b/doc/src/commands.txt index 7889ea5e7a3638ae40d3b057675f30570f5b9bfd..06752f6960af88e82a389977681e81a29ac89ba7 100644 --- a/doc/src/commands.txt +++ b/doc/src/commands.txt @@ -92,6 +92,7 @@ Commands :h1 tad temper temper_grem + temper_npt thermo thermo_modify thermo_style diff --git a/doc/src/compute.txt b/doc/src/compute.txt index eed190aeb25df73b632acd00ffd76d39509b284e..c06735d28e3dbe0091b3426eebbf264f1e147ad0 100644 --- a/doc/src/compute.txt +++ b/doc/src/compute.txt @@ -169,6 +169,7 @@ 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#cmd_5. +"aggregate/atom"_compute_cluster_atom.html - aggregate ID for each atom "angle/local"_compute_bond_local.html - theta and energy of each angle "angmom/chunk"_compute_angmom_chunk.html - angular momentum for each chunk "body/local"_compute_body_local.html - attributes of body sub-particles @@ -191,6 +192,7 @@ section of "this page"_Section_commands.html#cmd_5. "erotate/sphere"_compute_erotate_sphere.html - rotational energy of spherical particles "erotate/sphere/atom"_compute_erotate_sphere.html - rotational energy for each spherical particle "event/displace"_compute_event_displace.html - detect event on atom displacement +"fragment/atom"_compute_cluster_atom.html - fragment ID for each atom "group/group"_compute_group_group.html - energy/force between two groups of atoms "gyration"_compute_gyration.html - radius of gyration of group of atoms "gyration/chunk"_compute_gyration_chunk.html - radius of gyration for each chunk diff --git a/doc/src/compute_cluster_atom.txt b/doc/src/compute_cluster_atom.txt index 147d06c2a820d525071adf9518620cf5e557d3cf..0aa38ae5903a61a11acb0186cf868f52173e6a56 100644 --- a/doc/src/compute_cluster_atom.txt +++ b/doc/src/compute_cluster_atom.txt @@ -7,37 +7,62 @@ :line compute cluster/atom command :h3 +compute fragment/atom command :h3 +compute aggregate/atom command :h3 [Syntax:] -compute ID group-ID cluster/atom cutoff :pre +compute ID group-ID cluster/atom cutoff +compute ID group-ID fragment/atom +compute ID group-ID aggregate/atom cutoff :pre ID, group-ID are documented in "compute"_compute.html command -cluster/atom = style name of this compute command +{cluster/atom} or {fragment/atom} or {aggregate/atom} = style name of this compute command cutoff = distance within which to label atoms as part of same cluster (distance units) :ul [Examples:] -compute 1 all cluster/atom 1.0 :pre +compute 1 all cluster/atom 3.5 +compute 1 all fragment/atom :pre +compute 1 all aggregate/atom 3.5 :pre [Description:] -Define a computation that assigns each atom a cluster ID. +Define a computation that assigns each atom a cluster, fragement, +or aggregate ID. A cluster is defined as a set of atoms, each of which is within the cutoff distance from one or more other atoms in the cluster. If an atom has no neighbors within the cutoff distance, then it is a 1-atom -cluster. The ID of every atom in the cluster will be the smallest -atom ID of any atom in the cluster. +cluster. + +A fragment is similarly defined as a set of atoms, each of +which has an explicit bond (i.e. defined via a "data file"_read_data.html, +the "create_bonds"_create_bonds.html command, or through fixes like +"fix bond/create"_fix_bond_create.html, "fix bond/swap"_fix_bond_swap.html, +or "fix bond/break"_fix_bond_break.html). The cluster ID or fragment ID +of every atom in the cluster will be set to the smallest atom ID of any atom +in the cluster or fragment, respectively. + +An aggregate is defined by combining the rules for clusters and +fragments, i.e. a set of atoms, where each of it is within the cutoff +distance from one or more atoms within a fragment that is part of +the same cluster. This measure can be used to track molecular assemblies +like micelles. Only atoms in the compute group are clustered and assigned cluster -IDs. Atoms not in the compute group are assigned a cluster ID = 0. - -The neighbor list needed to compute this quantity is constructed each -time the calculation is performed (i.e. each time a snapshot of atoms -is dumped). Thus it can be inefficient to compute/dump this quantity -too frequently or to have multiple compute/dump commands, each of a -{cluster/atom} style. +IDs. Atoms not in the compute group are assigned a cluster ID = 0. +For fragments, only bonds where [both] atoms of the bond are included +in the compute group are assigned to fragments, so that only fragmets +are detected where [all] atoms are in the compute group. Thus atoms +may be included in the compute group, yes still have a fragment ID of 0. + +For computes {cluster/atom} and {aggregate/atom} the neighbor list needed +to compute this quantity is constructed each time the calculation is +performed (i.e. each time a snapshot of atoms is dumped). Thus it can be +inefficient to compute/dump this quantity too frequently or to have +multiple compute/dump commands, each of a {cluster/atom} or +{aggregate/atom} style. NOTE: If you have a bonded system, then the settings of "special_bonds"_special_bonds.html command can remove pairwise diff --git a/doc/src/compute_edpd_temp_atom.txt b/doc/src/compute_edpd_temp_atom.txt new file mode 100644 index 0000000000000000000000000000000000000000..5b8c8ebd67c371c20deb465941d4007008c60b35 --- /dev/null +++ b/doc/src/compute_edpd_temp_atom.txt @@ -0,0 +1,62 @@ +"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 edpd/temp/atom command :h3 + +[Syntax:] + +compute ID group-ID edpd/temp/atom :pre + +ID, group-ID are documented in "compute"_compute.html command +edpd/temp/atom = style name of this compute command :ul + +[Examples:] + +compute 1 all edpd/temp/atom :pre + +[Description:] + +Define a computation that calculates the per-atom temperature +for each eDPD particle in a group. + +The temperature is a local temperature derived from the internal energy +of each eDPD particle based on the local equilibrium hypothesis. +For more details please see "(Espanol1997)"_#Espanol1997 and +"(Li2014)"_#Li2014a. + +[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 +"Section 6.15"_Section_howto.html#howto_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-MESO 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_style edpd"_pair_meso.html + +[Default:] none + +:line + +:link(Espanol1997) +[(Espanol1997)] Espanol, Europhys Lett, 40(6): 631-636 (1997). DOI: +10.1209/epl/i1997-00515-8 + +:link(Li2014a) +[(Li2014)] Li, Tang, Lei, Caswell, Karniadakis, J Comput Phys, 265: +113-127 (2014). DOI: 10.1016/j.jcp.2014.02.003. + diff --git a/doc/src/compute_tdpd_cc_atom.txt b/doc/src/compute_tdpd_cc_atom.txt new file mode 100644 index 0000000000000000000000000000000000000000..a6a12dc52ccb31febe7a8bc5559b50913e0f242a --- /dev/null +++ b/doc/src/compute_tdpd_cc_atom.txt @@ -0,0 +1,60 @@ +"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 tdpd/cc/atom command :h3 + +[Syntax:] + +compute ID group-ID tdpd/cc/atom index :pre + +ID, group-ID are documented in "compute"_compute.html command +tdpd/cc/atom = style name of this compute command +index = index of chemical species (1 to Nspecies) :ul + +[Examples:] + +compute 1 all tdpd/cc/atom 2 :pre + +[Description:] + +Define a computation that calculates the per-atom chemical +concentration of a specified species for each tDPD particle in a +group. + +The chemical concentration of each species is defined as the number of +molecules carried by a tDPD particle for dilute solution. For more +details see "(Li2015)"_#Li2015a. + +[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 +"Section 6.15"_Section_howto.html#howto_15 for an overview of +LAMMPS output options. + +The per-atom vector values will be in the units of chemical species +per unit mass. + +[Restrictions:] + +This compute is part of the USER-MESO 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_style tdpd"_pair_meso.html + +[Default:] none + +:line + +:link(Li2015a) +[(Li2015)] Li, Yazdani, Tartakovsky, Karniadakis, J Chem Phys, 143: +014101 (2015). DOI: 10.1063/1.4923254 + diff --git a/doc/src/computes.txt b/doc/src/computes.txt index 5a6ca66c461cdbff262e18ac51d660640e37f297..c443bfaba2376bd5244ad0eef735d72fb9a388f6 100644 --- a/doc/src/computes.txt +++ b/doc/src/computes.txt @@ -30,6 +30,7 @@ Computes :h1 compute_displace_atom compute_dpd compute_dpd_atom + compute_edpd_temp_atom compute_erotate_asphere compute_erotate_rigid compute_erotate_sphere @@ -95,6 +96,7 @@ Computes :h1 compute_sna_atom compute_stress_atom compute_tally + compute_tdpd_cc_atom compute_temp compute_temp_asphere compute_temp_body diff --git a/doc/src/fix_dpd_energy.txt b/doc/src/fix_dpd_energy.txt index ed49e5a671983c3788a1f4070ad4828f95f4fb2f..1c10d954d6eb910f5863120a405ace281b12e6da 100644 --- a/doc/src/fix_dpd_energy.txt +++ b/doc/src/fix_dpd_energy.txt @@ -7,6 +7,7 @@ :line fix dpd/energy command :h3 +fix dpd/energy/kk command :h3 [Syntax:] @@ -46,6 +47,29 @@ examples/USER/dpd directory. :line +Styles with a {gpu}, {intel}, {kk}, {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 "Section 5"_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 GPU, USER-INTEL, KOKKOS, +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 "Section 5"_Section_accelerate.html of the manual for +more instructions on how to use the accelerated styles effectively. + +:line + [Restrictions:] This command is part of the USER-DPD package. It is only enabled if diff --git a/doc/src/fix_dpd_source.txt b/doc/src/fix_dpd_source.txt new file mode 100644 index 0000000000000000000000000000000000000000..b6decc657cea412ac80a96ff4bcf7d8d84bb6348 --- /dev/null +++ b/doc/src/fix_dpd_source.txt @@ -0,0 +1,101 @@ +"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 edpd/source command :h3 +fix tdpd/source command :h3 + +[Syntax:] + +fix ID group-ID edpd/source keyword values ... +fix ID group-ID tdpd/source cc_index keyword values ... :pre + +ID, group-ID are documented in "fix"_fix.html command :ulb,l +edpd/source or tdpd/source = style name of this fix command :l +index (only specified for tdpd/source) = index of chemical species (1 to Nspecies) :l +keyword = {sphere} or {cuboid} :l + {sphere} values = cx,cy,cz,radius,source + cx,cy,cz = x,y,z center of spherical domain (distance units) + radius = radius of a spherical domain (distance units) + source = heat source or concentration source (flux units, see below) + {cuboid} values = cx,cy,cz,dLx,dLy,dLz,source + cx,cy,cz = x,y,z lower left corner of a cuboid domain (distance units) + dLx,dLy,dLz = x,y,z side length of a cuboid domain (distance units) + source = heat source or concentration source (flux units, see below) :pre +:ule + +[Examples:] + +fix 1 all edpd/source sphere 0.0 0.0 0.0 5.0 0.01 +fix 1 all edpd/source cuboid 0.0 0.0 0.0 20.0 10.0 10.0 -0.01 +fix 1 all tdpd/source 1 sphere 5.0 0.0 0.0 5.0 0.01 +fix 1 all tdpd/source 2 cuboid 0.0 0.0 0.0 20.0 10.0 10.0 0.01 :pre + +[Description:] + +Fix {edpd/source} adds a heat source as an external heat flux to each +atom in a spherical or cuboid domain, where the {source} is in units +of energy/time. Fix {tdpd/source} adds an external concentration +source of the chemical species specified by {index} as an external +concentration flux for each atom in a spherical or cuboid domain, +where the {source} is in units of mole/volume/time. + +This command can be used to give an additional heat/concentration +source term to atoms in a simulation, such as for a simulation of a +heat conduction with a source term (see Fig.12 in "(Li2014)"_#Li2014b) +or diffusion with a source term (see Fig.1 in "(Li2015)"_#Li2015b), as +an analog of a periodic Poiseuille flow problem. + +If the {sphere} keyword is used, the {cx,cy,cz,radius} defines a +spherical domain to apply the source flux to. + +If the {cuboid} keyword is used, the {cx,cy,cz,dLx,dLy,dLz} defines a +cuboid domain to apply the source flux to. + +: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 USER-MESO 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. + +Fix {edpd/source} must be used with the "pair_style +edpd"_pair_meso.html command. Fix {tdpd/source} must be used with the +"pair_style tdpd"_pair_meso.html command. + +[Related commands:] + +"pair_style edpd"_pair_meso.html, "pair_style tdpd"_pair_meso.html, +"compute edpd/temp/atom"_compute_edpd_temp_atom.html, "compute +tdpd/cc/atom"_compute_tdpd_cc_atom.html + +[Default:] none + +:line + +:link(Li2014b) +[(Li2014)] Z. Li, Y.-H. Tang, H. Lei, B. Caswell and G.E. Karniadakis, +"Energy-conserving dissipative particle dynamics with +temperature-dependent properties", J. Comput. Phys., 265: 113-127 +(2014). DOI: 10.1016/j.jcp.2014.02.003 + +:link(Li2015b) +[(Li2015)] Z. Li, A. Yazdani, A. Tartakovsky and G.E. Karniadakis, +"Transport dissipative particle dynamics model for mesoscopic +advection-diffusion-reaction problems", J. Chem. Phys., 143: 014101 +(2015). DOI: 10.1063/1.4923254 diff --git a/doc/src/fix_eos_table_rx.txt b/doc/src/fix_eos_table_rx.txt index e5e4f772f6d36dc7d2e86f0b2460bc9bd64fbb55..0c878743471ae03c5bd76fec05f16dbc7631f01e 100644 --- a/doc/src/fix_eos_table_rx.txt +++ b/doc/src/fix_eos_table_rx.txt @@ -7,6 +7,7 @@ :line fix eos/table/rx command :h3 +fix eos/table/rx/kk command :h3 [Syntax:] @@ -152,6 +153,29 @@ no 0.93 0.00 0.000 -1.76 :pre :line +Styles with a {gpu}, {intel}, {kk}, {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 "Section 5"_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 GPU, USER-INTEL, KOKKOS, +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 "Section 5"_Section_accelerate.html of the manual for +more instructions on how to use the accelerated styles effectively. + +:line + [Restrictions:] This command is part of the USER-DPD package. It is only enabled if diff --git a/doc/src/fix_mvv_dpd.txt b/doc/src/fix_mvv_dpd.txt new file mode 100644 index 0000000000000000000000000000000000000000..3c1c1a7cba5aeae31aa496dbd3b2d028770fefc1 --- /dev/null +++ b/doc/src/fix_mvv_dpd.txt @@ -0,0 +1,97 @@ +"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 mvv/dpd command :h3 +fix mvv/edpd command :h3 +fix mvv/tdpd command :h3 + +[Syntax:] + +fix ID group-ID mvv/dpd lambda :pre +fix ID group-ID mvv/edpd lambda :pre +fix ID group-ID mvv/tdpd lambda :pre + +ID, group-ID are documented in "fix"_fix.html command +mvv/dpd, mvv/edpd, mvv/tdpd = style name of this fix command +lambda = (optional) relaxation parameter (unitless) :ul + +[Examples:] + +fix 1 all mvv/dpd +fix 1 all mvv/dpd 0.5 +fix 1 all mvv/edpd +fix 1 all mvv/edpd 0.5 +fix 1 all mvv/tdpd +fix 1 all mvv/tdpd 0.5 :pre + +[Description:] + +Perform time integration using the modified velocity-Verlet (MVV) +algorithm to update position and velocity (fix mvv/dpd), or position, +velocity and temperature (fix mvv/edpd), or position, velocity and +concentration (fix mvv/tdpd) for particles in the group each timestep. + +The modified velocity-Verlet (MVV) algorithm aims to improve the +stability of the time integrator by using an extrapolated version of +the velocity for the force evaluation: + +:c,image(Eqs/fix_mvv_dpd.jpg) + +where the parameter λ depends on the +specific choice of DPD parameters, and needs to be tuned on a +case-by-case basis. Specification of a {lambda} value is opttional. +If specified, the setting must be from 0.0 to 1.0. If not specified, +a default value of 0.5 is used, which effectively reproduces the +standard velocity-Verlet (VV) scheme. For more details, see +"Groot"_#Groot2. + +Fix {mvv/dpd} updates the position and velocity of each atom. It can +be used with the "pair_style mdpd"_pair_meso.html command or other +pair styles such as "pair dpd"_pair_dpd.html. + +Fix {mvv/edpd} updates the per-atom temperature, in addition to +position and velocity, and must be used with the "pair_style +edpd"_pair_meso.html command. + +Fix {mvv/tdpd} updates the per-atom chemical concentration, in +addition to position and velocity, and must be used with the +"pair_style tdpd"_pair_meso.html 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 USER-MESO 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_style mdpd"_pair_meso.html, "pair_style edpd"_pair_meso.html, +"pair_style tdpd"_pair_meso.html + +[Default:] + +The default value for the optional {lambda} parameter is 0.5. + +:line + +:link(Groot2) +[(Groot)] Groot and Warren, J Chem Phys, 107: 4423-4435 (1997). DOI: +10.1063/1.474784 + diff --git a/doc/src/fix_nve_dot.txt b/doc/src/fix_nve_dot.txt index 7ad51f37685d7da8347dab99a937ad4b5cca3ce5..0e0c8f8ecf5d9d02f3a6982ee1ae3e5cd8aa3746 100644 --- a/doc/src/fix_nve_dot.txt +++ b/doc/src/fix_nve_dot.txt @@ -44,7 +44,7 @@ A technical report with more information on this integrator can be found [Restrictions:] These pair styles can only be used if LAMMPS was built with the -USER-CGDNA package and the MOLECULE and ASPHERE package. See the "Making +"USER-CGDNA"_#USER-CGDNA package and the MOLECULE and ASPHERE package. See the "Making LAMMPS"_Section_start.html#start_3 section for more info on packages. [Related commands:] diff --git a/doc/src/fix_nve_dotc_langevin.txt b/doc/src/fix_nve_dotc_langevin.txt index 5de8e663c43166d19e1ae88db2a679d8623c0e63..93d875bca5436127526cdb5f1dad6b170d6c46b3 100644 --- a/doc/src/fix_nve_dotc_langevin.txt +++ b/doc/src/fix_nve_dotc_langevin.txt @@ -24,7 +24,8 @@ keyword = {angmom} :l [Examples:] -fix 1 all nve/dotc/langevin 1.0 1.0 0.03 457145 angmom 10 :pre +fix 1 all nve/dotc/langevin 1.0 1.0 0.03 457145 angmom 10 +fix 1 all nve/dotc/langevin 0.1 0.1 78.9375 457145 angmom 10 :pre [Description:] @@ -78,7 +79,9 @@ a Gaussian random number) for speed. :line {Tstart} and {Tstop} have to be constant values, i.e. they cannot -be variables. +be variables. If used together with the oxDNA force field for +coarse-grained simulation of DNA please note that T = 0.1 in oxDNA units +corresponds to T = 300 K. The {damp} parameter is specified in time units and determines how rapidly the temperature is relaxed. For example, a value of 0.03 @@ -89,6 +92,10 @@ viscosity of the solvent, i.e. a small relaxation time implies a hi-viscosity solvent and vice versa. See the discussion about gamma and viscosity in the documentation for the "fix viscous"_fix_viscous.html command for more details. +Note that the value 78.9375 in the second example above corresponds +to a diffusion constant, which is about an order of magnitude larger +than realistic ones. This has been used to sample configurations faster +in Brownian dynamics simulations. The random # {seed} must be a positive integer. A Marsaglia random number generator is used. Each processor uses the input seed to @@ -115,12 +122,12 @@ A technical report with more information on this integrator can be found [Restrictions:] These pair styles can only be used if LAMMPS was built with the -USER-CGDNA package and the MOLECULE and ASPHERE package. See the "Making +"USER-CGDNA"_#USER-CGDNA package and the MOLECULE and ASPHERE package. See the "Making LAMMPS"_Section_start.html#start_3 section for more info on packages. [Related commands:] -"fix nve"_fix_nve.html, "fix langevin"_fix_langevin.html, "fix nve/dot"_fix_nve_dot.html, +"fix nve"_fix_nve.html, "fix langevin"_fix_langevin.html, "fix nve/dot"_fix_nve_dot.html, "bond_style oxdna/fene"_bond_oxdna.html, "bond_style oxdna2/fene"_bond_oxdna.html, "pair_style oxdna/excv"_pair_oxdna.html, "pair_style oxdna2/excv"_pair_oxdna2.html [Default:] none diff --git a/doc/src/fix_qeq.txt b/doc/src/fix_qeq.txt index 22f47668965c0958a3c23172bd09b90ededc0c3c..194361e990afdedbfccecf47be254c71df4623b7 100644 --- a/doc/src/fix_qeq.txt +++ b/doc/src/fix_qeq.txt @@ -90,9 +90,14 @@ file specified by {qfile}. The file has the following format ... Ntype chi eta gamma zeta qcore :pre -There is one line per atom type with the following parameters. +There have to be parameters given for every atom type. Wildcard entries +are possible using the same syntax as elsewhere in LAMMPS +(i.e., n*m, n*, *m, *). Later entries will overwrite previous ones. +Empty lines or any text following the pound sign (#) are ignored. +Each line starts with the atom type followed by five parameters. Only a subset of the parameters is used by each QEq style as described -below, thus the others can be set to 0.0 if desired. +below, thus the others can be set to 0.0 if desired, but all five +entries per line are required. {chi} = electronegativity in energy units {eta} = self-Coulomb potential in energy units diff --git a/doc/src/fix_rx.txt b/doc/src/fix_rx.txt index 6a800f386535294714de33964bac7e2f3ee6e383..0810a347408f33cf20586448cf2141fb4c037275 100644 --- a/doc/src/fix_rx.txt +++ b/doc/src/fix_rx.txt @@ -7,6 +7,7 @@ :line fix rx command :h3 +fix rx/kk command :h3 [Syntax:] @@ -182,6 +183,29 @@ read_data data.dpd fix foo_SPECIES NULL Species :line +Styles with a {gpu}, {intel}, {kk}, {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 "Section 5"_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 GPU, USER-INTEL, KOKKOS, +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 "Section 5"_Section_accelerate.html of the manual for +more instructions on how to use the accelerated styles effectively. + +:line + [Restrictions:] This command is part of the USER-DPD package. It is only enabled if diff --git a/doc/src/fix_saed_vtk.txt b/doc/src/fix_saed_vtk.txt index 3523233cee6172a830708cebca035a34497ff044..814e17b8e952ad71d3ffe918c99596a0d10dc575 100644 --- a/doc/src/fix_saed_vtk.txt +++ b/doc/src/fix_saed_vtk.txt @@ -37,8 +37,8 @@ keyword = {file} or {ave} or {start} or {file} or {overwrite}:l compute 1 all saed 0.0251 Al O Kmax 1.70 Zone 0 0 1 dR_Ewald 0.01 c 0.5 0.5 0.5 compute 2 all saed 0.0251 Ni Kmax 1.70 Zone 0 0 0 c 0.05 0.05 0.05 manual echo :pre -fix saed/vtk 1 1 1 c_1 file Al2O3_001.saed -fix saed/vtk 1 1 1 c_2 file Ni_000.saed :pre +fix 1 all saed/vtk 1 1 1 c_1 file Al2O3_001.saed +fix 2 all saed/vtk 1 1 1 c_2 file Ni_000.saed :pre [Description:] diff --git a/doc/src/fix_shardlow.txt b/doc/src/fix_shardlow.txt index 8354b4c41c414a62a0125ac4696e3e92c9c41918..24726d8610abf0a79db6e14b163731d61ff46404 100644 --- a/doc/src/fix_shardlow.txt +++ b/doc/src/fix_shardlow.txt @@ -7,6 +7,7 @@ :line fix shardlow command :h3 +fix shardlow/kk command :h3 [Syntax:] @@ -52,6 +53,29 @@ examples/USER/dpd directory. :line +Styles with a {gpu}, {intel}, {kk}, {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 "Section 5"_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 GPU, USER-INTEL, KOKKOS, +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 "Section 5"_Section_accelerate.html of the manual for +more instructions on how to use the accelerated styles effectively. + +:line + [Restrictions:] This command is part of the USER-DPD package. It is only enabled if diff --git a/doc/src/fix_wall.txt b/doc/src/fix_wall.txt index 6d76956620c4334314e3b3311972f1fb3196a111..6bbfccf9db22b9d73499d9822053f13ee2d5a424 100644 --- a/doc/src/fix_wall.txt +++ b/doc/src/fix_wall.txt @@ -7,6 +7,7 @@ :line fix wall/lj93 command :h3 +fix wall/lj93/kk command :h3 fix wall/lj126 command :h3 fix wall/lj1043 command :h3 fix wall/colloid command :h3 @@ -277,6 +278,31 @@ 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. +:line + +Styles with a {gpu}, {intel}, {kk}, {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 "Section 5"_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 GPU, USER-INTEL, KOKKOS, +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 "Section 5"_Section_accelerate.html of the manual for +more instructions on how to use the accelerated styles effectively. + +:line + [Restrictions:] none [Related commands:] diff --git a/doc/src/fix_wall_ees.txt b/doc/src/fix_wall_ees.txt index a8688e8e4140ff4f7556e125b9dcff07c33d392c..f141a194057f30fbb940922bf04d18044c4937b4 100644 --- a/doc/src/fix_wall_ees.txt +++ b/doc/src/fix_wall_ees.txt @@ -50,17 +50,17 @@ fix ees_cube all wall/region/ees myCube 1.0 1.0 2.5 :pre Fix {wall/ees} bounds the simulation domain on one or more of its faces with a flat wall that interacts with the ellipsoidal atoms in the group by generating a force on the atom in a direction perpendicular to -the wall and a torque parallel with the wall.  The energy of +the wall and a torque parallel with the wall. The energy of wall-particle interactions E is given by: :c,image(Eqs/fix_wall_ees.jpg) Introduced by Babadi and Ejtehadi in "(Babadi)"_#BabadiEjtehadi. Here, {r} is the distance from the particle to the wall at position {coord}, -and Rc is the {cutoff} distance at which the  particle and wall no -longer interact. Also,  sigma_n is the distance between center of -ellipsoid and the nearest point of its surface to the wall  The energy -of the wall (see the image below). +and Rc is the {cutoff} distance at which the particle and wall no +longer interact. Also, sigma_n is the distance between center of +ellipsoid and the nearest point of its surface to the wall. The energy +of the wall is: :c,image(JPG/fix_wall_ees_image.jpg) @@ -68,21 +68,22 @@ Details of using this command and specifications are the same as fix/wall command. You can also find an example in USER/ees/ under examples/ directory. -The prefactor {epsilon} can be thought of as an -effective Hamaker constant with energy units for the strength of the -ellipsoid-wall interaction.  More specifically, the {epsilon} pre-factor -= 8 * pi^2 * rho_wall * rho_ellipsoid * epsilon -* sigma_a * sigma_b * sigma_c, where epsilon is the LJ parameters for -the constituent LJ particles and sigma_a, sigma_b, and sigma_c are radii -of ellipsoidal particles. Rho_wall and rho_ellipsoid are the number +The prefactor {epsilon} can be thought of as an +effective Hamaker constant with energy units for the strength of the +ellipsoid-wall interaction. More specifically, the {epsilon} pre-factor += 8 * pi^2 * rho_wall * rho_ellipsoid * epsilon +* sigma_a * sigma_b * sigma_c, where epsilon is the LJ parameters for +the constituent LJ particles and sigma_a, sigma_b, and sigma_c are radii +of ellipsoidal particles. Rho_wall and rho_ellipsoid are the number density of the constituent particles, in the wall and ellipsoid respectively, in units of 1/volume. NOTE: You must insure that r is always bigger than sigma_n for -all particles in the group, or LAMMPS will generate an error.  This +all particles in the group, or LAMMPS will generate an error. This means you cannot start your simulation with particles touching the wall -position {coord} (r = sigma_n) or with particles penetrating the wall (0 =< r < sigma_n) or with particles on the wrong side of the -wall (r < 0). +position {coord} (r = sigma_n) or with particles penetrating the wall +(0 =< r < sigma_n) or with particles on the wrong side of the +wall (r < 0). Fix {wall/region/ees} treats the surface of the geometric region defined @@ -93,7 +94,7 @@ Other details of this command are the same as for the "fix wall/region"_fix_wall_region.html command. One may also find an example of using this fix in the examples/USER/misc/ees/ directory. -[Restrictions:] +[Restrictions:] This fix is part of the USER-MISC package. It is only enabled if LAMMPS was built with that package. See the "Making diff --git a/doc/src/fixes.txt b/doc/src/fixes.txt index 3dc5e77e14258362fb80930643ad677ce85cf295..7000a66c51dc3df60b1c9701fa77e57c5768fd22 100644 --- a/doc/src/fixes.txt +++ b/doc/src/fixes.txt @@ -33,6 +33,7 @@ Fixes :h1 fix_drude fix_drude_transform fix_dpd_energy + fix_dpd_source fix_dt_reset fix_efield fix_ehex @@ -71,6 +72,7 @@ Fixes :h1 fix_move fix_mscg fix_msst + fix_mvv_dpd fix_neb fix_nh fix_nh_eff diff --git a/doc/src/lammps.book b/doc/src/lammps.book index 76b67436578d1ffa2969052dd1eab3fb91487d73..86dfe78af35b27f8c58ba50da4fd5b280fe1a4c2 100644 --- a/doc/src/lammps.book +++ b/doc/src/lammps.book @@ -21,6 +21,7 @@ Section_python.html Section_errors.html Section_history.html +tutorial_bash_on_windows.html tutorial_drude.html tutorial_github.html tutorial_pylammps.html @@ -115,6 +116,7 @@ suffix.html tad.html temper.html temper_grem.html +temper_npt.html thermo.html thermo_modify.html thermo_style.html @@ -156,6 +158,7 @@ fix_controller.html fix_deform.html fix_deposit.html fix_dpd_energy.html +fix_dpd_source.html fix_drag.html fix_drude.html fix_drude_transform.html @@ -197,6 +200,7 @@ fix_momentum.html fix_move.html fix_mscg.html fix_msst.html +fix_mvv_dpd.html fix_neb.html fix_nh.html fix_nh_eff.html @@ -315,6 +319,7 @@ compute_dipole_chunk.html compute_displace_atom.html compute_dpd.html compute_dpd_atom.html +compute_edpd_temp_atom.html compute_erotate_asphere.html compute_erotate_rigid.html compute_erotate_sphere.html @@ -380,6 +385,7 @@ compute_smd_vol.html compute_sna_atom.html compute_stress_atom.html compute_tally.html +compute_tdpd_cc_atom.html compute_temp.html compute_temp_asphere.html compute_temp_body.html @@ -457,6 +463,7 @@ pair_mdf.html pair_meam.html pair_meam_spline.html pair_meam_sw_spline.html +pair_meso.html pair_mgpt.html pair_mie.html pair_momb.html @@ -644,4 +651,3 @@ USER/atc/man_unfix_flux.html USER/atc/man_unfix_nodes.html USER/atc/man_write_atom_weights.html USER/atc/man_write_restart.html - diff --git a/doc/src/pair_dpd.txt b/doc/src/pair_dpd.txt index 9dd204ad2db7d580daa79d7c4d4bb5649de9349a..8d194bb0920999dadfaf7673619369c0550e68d5 100644 --- a/doc/src/pair_dpd.txt +++ b/doc/src/pair_dpd.txt @@ -36,7 +36,7 @@ pair_coeff 1 1 1.0 1.0 :pre [Description:] Style {dpd} computes a force field for dissipative particle dynamics -(DPD) following the exposition in "(Groot)"_#Groot. +(DPD) following the exposition in "(Groot)"_#Groot1. Style {dpd/tstat} invokes a DPD thermostat on pairwise interactions, which is equivalent to the non-conservative portion of the DPD force @@ -196,7 +196,7 @@ langevin"_fix_langevin.html, "pair_style srp"_pair_srp.html :line -:link(Groot) +:link(Groot1) [(Groot)] Groot and Warren, J Chem Phys, 107, 4423-35 (1997). :link(Afshar) diff --git a/doc/src/pair_dpd_fdt.txt b/doc/src/pair_dpd_fdt.txt index b75e7c323cf1dc59a0c53c640dc105a75db83c3a..867f3f2315dcb9d908438f91710016abe4ccf9d8 100644 --- a/doc/src/pair_dpd_fdt.txt +++ b/doc/src/pair_dpd_fdt.txt @@ -8,6 +8,7 @@ pair_style dpd/fdt command :h3 pair_style dpd/fdt/energy command :h3 +pair_style dpd/fdt/energy/kk command :h3 [Syntax:] @@ -125,6 +126,29 @@ significantly larger timesteps to be taken. :line +Styles with a {gpu}, {intel}, {kk}, {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 "Section 5"_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 GPU, USER-INTEL, KOKKOS, +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 "Section 5"_Section_accelerate.html of the manual for +more instructions on how to use the accelerated styles effectively. + +:line + [Restrictions:] These commands are part of the USER-DPD package. They are only diff --git a/doc/src/pair_exp6_rx.txt b/doc/src/pair_exp6_rx.txt index cbc17d357d398222b23e5431ffbf2b0cbc7c113f..7eafa235434386bcfe3438367cee1cec1852e74b 100644 --- a/doc/src/pair_exp6_rx.txt +++ b/doc/src/pair_exp6_rx.txt @@ -7,6 +7,7 @@ :line pair_style exp6/rx command :h3 +pair_style exp6/rx/kk command :h3 [Syntax:] @@ -147,6 +148,31 @@ This style does not support the pair_modify tail option for adding long-range tail corrections to energy and pressure for the A,C terms in the pair interaction. +:line + +Styles with a {gpu}, {intel}, {kk}, {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 "Section 5"_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 GPU, USER-INTEL, KOKKOS, +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 "Section 5"_Section_accelerate.html of the manual for +more instructions on how to use the accelerated styles effectively. + +:line + [Restrictions:] This command is part of the USER-DPD package. It is only enabled if diff --git a/doc/src/pair_hybrid.txt b/doc/src/pair_hybrid.txt index fc1824cf62736fcc4612953721c7cd6230069dd4..d37dedc709b82c43e6c49701f3b7916db93ef6d8 100644 --- a/doc/src/pair_hybrid.txt +++ b/doc/src/pair_hybrid.txt @@ -10,6 +10,7 @@ pair_style hybrid command :h3 pair_style hybrid/omp command :h3 pair_style hybrid/overlay command :h3 pair_style hybrid/overlay/omp command :h3 +pair_style hybrid/overlay/kk command :h3 [Syntax:] diff --git a/doc/src/pair_meso.txt b/doc/src/pair_meso.txt new file mode 100644 index 0000000000000000000000000000000000000000..bcdf717d68cb6d06e84422abffe278f6c382eb94 --- /dev/null +++ b/doc/src/pair_meso.txt @@ -0,0 +1,277 @@ +"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 edpd command :h3 +pair_style mdpd command :h3 +pair_style mdpd/rhosum command :h3 +pair_style tdpd command :h3 + +[Syntax:] + +pair_style style args :pre + +style = {edpd} or {mdpd} or {mdpd/rhosum} or {tdpd} :ulb,l +args = list of arguments for a particular style :l + {edpd} args = cutoff seed + cutoff = global cutoff for eDPD interactions (distance units) + seed = random # seed (integer) (if <= 0, eDPD will use current time as the seed) + {mdpd} args = T cutoff seed + T = temperature (temperature units) + cutoff = global cutoff for mDPD interactions (distance units) + seed = random # seed (integer) (if <= 0, mDPD will use current time as the seed) + {mdpd/rhosum} args = + {tdpd} args = T cutoff seed + T = temperature (temperature units) + cutoff = global cutoff for tDPD interactions (distance units) + seed = random # seed (integer) (if <= 0, tDPD will use current time as the seed) :pre +:ule + +[Examples:] + +pair_style edpd 1.58 9872598 +pair_coeff * * 18.75 4.5 0.41 1.58 1.42E-5 2.0 1.58 +pair_coeff 1 1 18.75 4.5 0.41 1.58 1.42E-5 2.0 1.58 power 10.54 -3.66 3.44 -4.10 +pair_coeff 1 1 18.75 4.5 0.41 1.58 1.42E-5 2.0 1.58 power 10.54 -3.66 3.44 -4.10 kappa -0.44 -3.21 5.04 0.00 :pre + +pair_style hybrid/overlay mdpd/rhosum mdpd 1.0 1.0 65689 +pair_coeff 1 1 mdpd/rhosum 0.75 +pair_coeff 1 1 mdpd -40.0 25.0 18.0 1.0 0.75 :pre + +pair_style tdpd 1.0 1.58 935662 +pair_coeff * * 18.75 4.5 0.41 1.58 1.58 1.0 1.0E-5 2.0 +pair_coeff 1 1 18.75 4.5 0.41 1.58 1.58 1.0 1.0E-5 2.0 3.0 1.0E-5 2.0 :pre + +[Description:] + +The {edpd} style computes the pairwise interactions and heat fluxes +for eDPD particles following the formulations in +"(Li2014_JCP)"_#Li2014_JCP and "Li2015_CC"_#Li2015_CC. The time +evolution of an eDPD particle is governed by the conservation of +momentum and energy given by + +:c,image(Eqs/pair_edpd_gov.jpg) + +where the three components of Fi +including the conservative force FijC, dissipative force FijD and random force FijR are expressed as + +:c,image(Eqs/pair_edpd_force.jpg) + +in which the exponent of the weighting function s can be defined as a temperature-dependent +variable. The heat flux between particles accounting for the +collisional heat flux qC, viscous +heat flux qV, and random heat flux +qR are given by + +:c,image(Eqs/pair_edpd_heat.jpg) + +where the mesoscopic heat friction κ is given by + +:c,image(Eqs/pair_edpd_kappa.jpg) + +with υ being the kinematic +viscosity. For more details, see Eq.(15) in "(Li2014_JCP)"_#Li2014_JCP. + +The following coefficients must be defined in eDPD system for each +pair of atom types via the "pair_coeff"_pair_coeff.html command as in +the examples above. + +A (force units) +gamma (force/velocity units) +power_f (positive real) +cutoff (distance units) +kappa (thermal conductivity units) +power_T (positive real) +cutoff_T (distance units) +optional keyword = power or kappa :ul + +The keyword {power} or {kappa} is optional. Both "power" and "kappa" +require 4 parameters c1, c2, +c4, c4 showing the temperature dependence +of the exponent
s(T) = +power_f*(1+c1*(T-1)+c2*(T-1)2 ++c3*(T-1)3+c4*(T-1)4)
+and of the mesoscopic heat friction
+sT(T) = +kappa*(1+c1*(T-1)+c2*(T-1)2 ++c3*(T-1)3+c4*(T-1)4)
+If the keyword {power} or {kappa} is not specified, the eDPD system +will use constant power_f and kappa, which is independent to +temperature changes. + +:line + +The {mdpd/rhosum} style computes the local particle mass density rho +for mDPD particles by kernel function interpolation. + +The following coefficients must be defined for each pair of atom types +via the "pair_coeff"_pair_coeff.html command as in the examples above. + +cutoff (distance units) :ul + +:line + +The {mdpd} style computes the many-body interactions between mDPD +particles following the formulations in +"(Li2013_POF)"_#Li2013_POF. The dissipative and random forces are in +the form same as the classical DPD, but the conservative force is +local density dependent, which are given by + +:c,image(Eqs/pair_mdpd_force.jpg) + +where the first term in FC with a +negative coefficient A < 0 stands for an attractive force within an +interaction range rc, and the second +term with B > 0 is the density-dependent repulsive force within an +interaction range rd. + +The following coefficients must be defined for each pair of atom types via the +"pair_coeff"_pair_coeff.html command as in the examples above. + +A (force units) +B (force units) +gamma (force/velocity units) +cutoff_c (distance units) +cutoff_d (distance units) :ul + +:line + +The {tdpd} style computes the pairwise interactions and chemical +concentration fluxes for tDPD particles following the formulations in +"(Li2015_JCP)"_#Li2015_JCP. The time evolution of a tDPD particle is +governed by the conservation of momentum and concentration given by + +:c,image(Eqs/pair_tdpd_gov.jpg) + +where the three components of Fi +including the conservative force FijC, dissipative force FijD and random force FijR are expressed as + +:c,image(Eqs/pair_tdpd_force.jpg) + +The concentration flux between two tDPD particles includes the Fickian +flux QijD and random flux +QijR, which are given by + +:c,image(Eqs/pair_tdpd_flux.jpg) + +where the parameters kappa and epsilon determine the strength of the +Fickian and random fluxes. ms +is the mass of a single solute molecule. In general, ms is much smaller than the mass of +a tDPD particle m. For more details, see +"(Li2015_JCP)"_#Li2015_JCP. + +The following coefficients must be defined for each pair of atom types via the +"pair_coeff"_pair_coeff.html command as in the examples above. + +A (force units) +gamma (force/velocity units) +power_f (positive real) +cutoff (distance units) +cutoff_CC (distance units) +kappa_i (diffusivity units) +epsilon_i (diffusivity units) +power_cc_i (positive real) :ul + +The last 3 values must be repeated Nspecies times, so that values for +each of the Nspecies chemical species are specified, as indicated by +the "I" suffix. In the first pair_coeff example above for pair_style +tdpd, Nspecies = 1. In the second example, Nspecies = 2, so 3 +additional coeffs are specified (for species 2). + +:line + +[Example scripts] + +There are example scripts for using all these pair styles in +examples/USER/meso. The example for an eDPD simulation models heat +conduction with source terms analog of periodic Poiseuille flow +problem. The setup follows Fig.12 in "(Li2014_JCP)"_#Li2014_JCP. The +output of the short eDPD simulation (about 2 minutes on a single core) +gives a temperature and density profiles as + +:c,image(JPG/examples_edpd.jpg) + +The example for a mDPD simulation models the oscillations of a liquid +droplet started from a liquid film. The mDPD parameters are adopted +from "(Li2013_POF)"_#Li2013_POF. The short mDPD run (about 2 minutes +on a single core) generates a particle trajectory which can +be visualized as follows. + +:c,image(JPG/examples_mdpd_first.jpg,JPG/examples_mdpd.gif) +:c,image(JPG/examples_mdpd_last.jpg) + +The first image is the initial state of the simulation. If you +click it a GIF movie should play in your browser. The second image +is the final state of the simulation. + +The example for a tDPD simulation computes the effective diffusion +coefficient of a tDPD system using a method analogous to the periodic +Poiseuille flow. The tDPD system is specified with two chemical +species, and the setup follows Fig.1 in +"(Li2015_JCP)"_#Li2015_JCP. The output of the short tDPD simulation +(about one and a half minutes on a single core) gives the +concentration profiles of the two chemical species as + +:c,image(JPG/examples_tdpd.jpg) + +:line + +[Mixing, shift, table, tail correction, restart, rRESPA info]: + +The styles {edpd}, {mdpd}, {mdpd/rhosum} and {tdpd} do not support +mixing. Thus, coefficients for all I,J pairs must be specified explicitly. + +The styles {edpd}, {mdpd}, {mdpd/rhosum} and {tdpd} do not support +the "pair_modify"_pair_modify.html shift, table, and tail options. + +The styles {edpd}, {mdpd}, {mdpd/rhosum} and {tdpd} do 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. + +[Restrictions:] + +The pair styles {edpd}, {mdpd}, {mdpd/rhosum} and {tdpd} are part of +the USER-MESO 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, "fix mvv/dpd"_fix_mvv_dpd.html, +"fix mvv/edpd"_fix_mvv_dpd.html, "fix mvv/tdpd"_fix_mvv_dpd.html, +"fix edpd/source"_fix_dpd_source.html, "fix tdpd/source"_fix_dpd_source.html, +"compute edpd/temp/atom"_compute_edpd_temp_atom.html, +"compute tdpd/cc/atom"_compute_tdpd_cc_atom.html + +[Default:] none + +:line + +:link(Li2014_JCP) +[(Li2014_JCP)] Li, Tang, Lei, Caswell, Karniadakis, J Comput Phys, +265: 113-127 (2014). DOI: 10.1016/j.jcp.2014.02.003. + +:link(Li2015_CC) +[(Li2015_CC)] Li, Tang, Li, Karniadakis, Chem Commun, 51: 11038-11040 +(2015). DOI: 10.1039/C5CC01684C. + +:link(Li2013_POF) +[(Li2013_POF)] Li, Hu, Wang, Ma, Zhou, Phys Fluids, 25: 072103 (2013). +DOI: 10.1063/1.4812366. + +:link(Li2015_JCP) +[(Li2015_JCP)] Li, Yazdani, Tartakovsky, Karniadakis, J Chem Phys, +143: 014101 (2015). DOI: 10.1063/1.4923254. diff --git a/doc/src/pair_multi_lucy_rx.txt b/doc/src/pair_multi_lucy_rx.txt index 77ed223e2aa8b4bdf196b66fba72462db77aed55..57abcf4a4c30c904b55cd07464ca60118ca13d3c 100644 --- a/doc/src/pair_multi_lucy_rx.txt +++ b/doc/src/pair_multi_lucy_rx.txt @@ -7,6 +7,7 @@ :line pair_style multi/lucy/rx command :h3 +pair_style multi/lucy/rx/kk command :h3 [Syntax:] @@ -200,6 +201,29 @@ This pair style can only be used via the {pair} keyword of the :line +Styles with a {gpu}, {intel}, {kk}, {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 "Section 5"_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 GPU, USER-INTEL, KOKKOS, +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 "Section 5"_Section_accelerate.html of the manual for +more instructions on how to use the accelerated styles effectively. + +:line + [Restrictions:] This command is part of the USER-DPD package. It is only enabled if diff --git a/doc/src/pair_oxdna.txt b/doc/src/pair_oxdna.txt index d9734f122df4ff18498fd7490262db8fd649270b..26a205bcf9b449ee20eea88ce5aff6a3feca024b 100644 --- a/doc/src/pair_oxdna.txt +++ b/doc/src/pair_oxdna.txt @@ -20,20 +20,24 @@ pair_coeff * * style2 args :pre style1 = {hybrid/overlay oxdna/excv oxdna/stk oxdna/hbond oxdna/xstk oxdna/coaxstk} :ul -style2 = {oxdna/stk} -args = list of arguments for these two particular styles :ul +style2 = {oxdna/excv} or {oxdna/stk} or {oxdna/hbond} or {oxdna/xstk} or {oxdna/coaxstk} +args = list of arguments for these particular styles :ul - {oxdna2/stk} args = T 6.0 0.4 0.9 0.32 0.6 1.3 0 0.8 0.9 0 0.95 0.9 0 0.95 2.0 0.65 2.0 0.65 - T = temperature (oxDNA units, 0.1 = 300 K) :pre + {oxdna/stk} args = seq T 6.0 0.4 0.9 0.32 0.6 1.3 0 0.8 0.9 0 0.95 0.9 0 0.95 2.0 0.65 2.0 0.65 + seq = seqav (for average sequence stacking strength) or seqdep (for sequence-dependent stacking strength) + T = temperature (oxDNA units, 0.1 = 300 K) + {oxdna/hbond} args = seq eps 8.0 0.4 0.75 0.34 0.7 1.5 0 0.7 1.5 0 0.7 1.5 0 0.7 0.46 3.141592653589793 0.7 4.0 1.5707963267948966 0.45 4.0 1.5707963267948966 0.45 + seq = seqav (for average sequence base-pairing strength) or seqdep (for sequence-dependent base-pairing strength) + eps = 1.077 (between base pairs A-T and C-G) or 0 (all other pairs) :pre [Examples:] pair_style hybrid/overlay oxdna/excv oxdna/stk oxdna/hbond oxdna/xstk oxdna/coaxstk pair_coeff * * oxdna/excv 2.0 0.7 0.675 2.0 0.515 0.5 2.0 0.33 0.32 -pair_coeff * * oxdna/stk 0.1 6.0 0.4 0.9 0.32 0.6 1.3 0 0.8 0.9 0 0.95 0.9 0 0.95 2.0 0.65 2.0 0.65 -pair_coeff * * oxdna/hbond 0.0 8.0 0.4 0.75 0.34 0.7 1.5 0 0.7 1.5 0 0.7 1.5 0 0.7 0.46 3.141592653589793 0.7 4.0 1.5707963267948966 0.45 4.0 1.5707963267948966 0.45 -pair_coeff 1 4 oxdna/hbond 1.077 8.0 0.4 0.75 0.34 0.7 1.5 0 0.7 1.5 0 0.7 1.5 0 0.7 0.46 3.141592653589793 0.7 4.0 1.5707963267948966 0.45 4.0 1.5707963267948966 0.45 -pair_coeff 2 3 oxdna/hbond 1.077 8.0 0.4 0.75 0.34 0.7 1.5 0 0.7 1.5 0 0.7 1.5 0 0.7 0.46 3.141592653589793 0.7 4.0 1.5707963267948966 0.45 4.0 1.5707963267948966 0.45 +pair_coeff * * oxdna/stk seqdep 0.1 6.0 0.4 0.9 0.32 0.6 1.3 0 0.8 0.9 0 0.95 0.9 0 0.95 2.0 0.65 2.0 0.65 +pair_coeff * * oxdna/hbond seqdep 0.0 8.0 0.4 0.75 0.34 0.7 1.5 0 0.7 1.5 0 0.7 1.5 0 0.7 0.46 3.141592653589793 0.7 4.0 1.5707963267948966 0.45 4.0 1.5707963267948966 0.45 +pair_coeff 1 4 oxdna/hbond seqdep 1.077 8.0 0.4 0.75 0.34 0.7 1.5 0 0.7 1.5 0 0.7 1.5 0 0.7 0.46 3.141592653589793 0.7 4.0 1.5707963267948966 0.45 4.0 1.5707963267948966 0.45 +pair_coeff 2 3 oxdna/hbond seqdep 1.077 8.0 0.4 0.75 0.34 0.7 1.5 0 0.7 1.5 0 0.7 1.5 0 0.7 0.46 3.141592653589793 0.7 4.0 1.5707963267948966 0.45 4.0 1.5707963267948966 0.45 pair_coeff * * oxdna/xstk 47.5 0.575 0.675 0.495 0.655 2.25 0.791592653589793 0.58 1.7 1.0 0.68 1.7 1.0 0.68 1.5 0 0.65 1.7 0.875 0.68 1.7 0.875 0.68 pair_coeff * * oxdna/coaxstk 46.0 0.4 0.6 0.22 0.58 2.0 2.541592653589793 0.65 1.3 0 0.8 0.9 0 0.95 0.9 0 0.95 2.0 -0.65 2.0 -0.65 :pre @@ -44,10 +48,11 @@ for coarse-grained modelling of DNA. The effective interaction between the nucle excluded volume interaction {oxdna/excv}, the stacking {oxdna/stk}, cross-stacking {oxdna/xstk} and coaxial stacking interaction {oxdna/coaxstk} as well as the hydrogen-bonding interaction {oxdna/hbond} between complementary pairs of nucleotides on -opposite strands. +opposite strands. Average sequence or sequence-dependent stacking and base-pairing strengths +are supported "(Sulc)"_#Sulc1. -The exact functional form of the pair styles is rather complex, which manifests itself in the 144 coefficients -in the above example. The individual potentials consist of products of modulation factors, +The exact functional form of the pair styles is rather complex. +The individual potentials consist of products of modulation factors, which themselves are constructed from a number of more basic potentials (Morse, Lennard-Jones, harmonic angle and distance) as well as quadratic smoothing and modulation terms. We refer to "(Ouldridge-DPhil)"_#Ouldridge-DPhil1 and "(Ouldridge)"_#Ouldridge1 @@ -55,9 +60,10 @@ for a detailed description of the oxDNA force field. NOTE: These pair styles have to be used together with the related oxDNA bond style {oxdna/fene} for the connectivity of the phosphate backbone (see also documentation of -"bond_style oxdna/fene"_bond_oxdna.html). With one exception the coefficients +"bond_style oxdna/fene"_bond_oxdna.html). Most of the coefficients in the above example have to be kept fixed and cannot be changed without reparametrizing the entire model. -The exception is the first coefficient after {oxdna/stk} (T=0.1 in the above example). +Exceptions are the first and second coefficient after {oxdna/stk} (seq=seqdep and T=0.1 in the above example) +and the first coefficient after {oxdna/hbond} (seq=seqdep in the above example). When using a Langevin thermostat, e.g. through "fix langevin"_fix_langevin.html or "fix nve/dotc/langevin"_fix_nve_dotc_langevin.html the temperature coefficients have to be matched to the one used in the fix. @@ -86,7 +92,11 @@ LAMMPS"_Section_start.html#start_3 section for more info on packages. :line +:link(Sulc1) +[(Sulc)] P. Sulc, F. Romano, T.E. Ouldridge, L. Rovigatti, J.P.K. Doye, A.A. Louis, J. Chem. Phys. 137, 135101 (2012). + :link(Ouldridge-DPhil1) [(Ouldrigde-DPhil)] T.E. Ouldridge, Coarse-grained modelling of DNA and DNA self-assembly, DPhil. University of Oxford (2011). + :link(Ouldridge1) [(Ouldridge)] T.E. Ouldridge, A.A. Louis, J.P.K. Doye, J. Chem. Phys. 134, 085101 (2011). diff --git a/doc/src/pair_oxdna2.txt b/doc/src/pair_oxdna2.txt index 1728a0bc7b0b57019b2d8eca96abdd3a223ba59e..2408c02d101135639561652db8f5e74dae7e037f 100644 --- a/doc/src/pair_oxdna2.txt +++ b/doc/src/pair_oxdna2.txt @@ -21,11 +21,15 @@ pair_coeff * * style2 args :pre style1 = {hybrid/overlay oxdna2/excv oxdna2/stk oxdna2/hbond oxdna2/xstk oxdna2/coaxstk oxdna2/dh} :ul -style2 = {oxdna2/stk} or {oxdna2/dh} -args = list of arguments for these two particular styles :ul +style2 = {oxdna2/excv} or {oxdna2/stk} or {oxdna2/hbond} or {oxdna2/xstk} or {oxdna2/coaxstk} or {oxdna2/dh} +args = list of arguments for these particular styles :ul - {oxdna2/stk} args = T 6.0 0.4 0.9 0.32 0.6 1.3 0 0.8 0.9 0 0.95 0.9 0 0.95 2.0 0.65 2.0 0.65 + {oxdna2/stk} args = seq T 6.0 0.4 0.9 0.32 0.6 1.3 0 0.8 0.9 0 0.95 0.9 0 0.95 2.0 0.65 2.0 0.65 + seq = seqav (for average sequence stacking strength) or seqdep (for sequence-dependent stacking strength) T = temperature (oxDNA units, 0.1 = 300 K) + {oxdna/hbond} args = seq eps 8.0 0.4 0.75 0.34 0.7 1.5 0 0.7 1.5 0 0.7 1.5 0 0.7 0.46 3.141592653589793 0.7 4.0 1.5707963267948966 0.45 4.0 1.5707963267948966 0.45 + seq = seqav (for average sequence base-pairing strength) or seqdep (for sequence-dependent base-pairing strength) + eps = 1.0678 (between base pairs A-T and C-G) or 0 (all other pairs) {oxdna2/dh} args = T rhos qeff T = temperature (oxDNA units, 0.1 = 300 K) rhos = salt concentration (mole per litre) @@ -35,10 +39,10 @@ args = list of arguments for these two particular styles :ul pair_style hybrid/overlay oxdna2/excv oxdna2/stk oxdna2/hbond oxdna2/xstk oxdna2/coaxstk oxdna2/dh pair_coeff * * oxdna2/excv 2.0 0.7 0.675 2.0 0.515 0.5 2.0 0.33 0.32 -pair_coeff * * oxdna2/stk 0.1 6.0 0.4 0.9 0.32 0.6 1.3 0 0.8 0.9 0 0.95 0.9 0 0.95 2.0 0.65 2.0 0.65 -pair_coeff * * oxdna2/hbond 0.0 8.0 0.4 0.75 0.34 0.7 1.5 0 0.7 1.5 0 0.7 1.5 0 0.7 0.46 3.141592653589793 0.7 4.0 1.5707963267948966 0.45 4.0 1.5707963267948966 0.45 -pair_coeff 1 4 oxdna2/hbond 1.0678 8.0 0.4 0.75 0.34 0.7 1.5 0 0.7 1.5 0 0.7 1.5 0 0.7 0.46 3.141592653589793 0.7 4.0 1.5707963267948966 0.45 4.0 1.5707963267948966 0.45 -pair_coeff 2 3 oxdna2/hbond 1.0678 8.0 0.4 0.75 0.34 0.7 1.5 0 0.7 1.5 0 0.7 1.5 0 0.7 0.46 3.141592653589793 0.7 4.0 1.5707963267948966 0.45 4.0 1.5707963267948966 0.45 +pair_coeff * * oxdna2/stk seqdep 0.1 6.0 0.4 0.9 0.32 0.6 1.3 0 0.8 0.9 0 0.95 0.9 0 0.95 2.0 0.65 2.0 0.65 +pair_coeff * * oxdna2/hbond seqdep 0.0 8.0 0.4 0.75 0.34 0.7 1.5 0 0.7 1.5 0 0.7 1.5 0 0.7 0.46 3.141592653589793 0.7 4.0 1.5707963267948966 0.45 4.0 1.5707963267948966 0.45 +pair_coeff 1 4 oxdna2/hbond seqdep 1.0678 8.0 0.4 0.75 0.34 0.7 1.5 0 0.7 1.5 0 0.7 1.5 0 0.7 0.46 3.141592653589793 0.7 4.0 1.5707963267948966 0.45 4.0 1.5707963267948966 0.45 +pair_coeff 2 3 oxdna2/hbond seqdep 1.0678 8.0 0.4 0.75 0.34 0.7 1.5 0 0.7 1.5 0 0.7 1.5 0 0.7 0.46 3.141592653589793 0.7 4.0 1.5707963267948966 0.45 4.0 1.5707963267948966 0.45 pair_coeff * * oxdna2/xstk 47.5 0.575 0.675 0.495 0.655 2.25 0.791592653589793 0.58 1.7 1.0 0.68 1.7 1.0 0.68 1.5 0 0.65 1.7 0.875 0.68 1.7 0.875 0.68 pair_coeff * * oxdna2/coaxstk 58.5 0.4 0.6 0.22 0.58 2.0 2.891592653589793 0.65 1.3 0 0.8 0.9 0 0.95 0.9 0 0.95 40.0 3.116592653589793 pair_coeff * * oxdna2/dh 0.1 1.0 0.815 :pre @@ -50,7 +54,8 @@ for coarse-grained modelling of DNA. The effective interaction between the nucle excluded volume interaction {oxdna2/excv}, the stacking {oxdna2/stk}, cross-stacking {oxdna2/xstk} and coaxial stacking interaction {oxdna2/coaxstk}, electrostatic Debye-Hueckel interaction {oxdna2/dh} as well as the hydrogen-bonding interaction {oxdna2/hbond} between complementary pairs of nucleotides on -opposite strands. +opposite strands. Average sequence or sequence-dependent stacking and base-pairing strengths +are supported "(Sulc)"_#Sulc2. The exact functional form of the pair styles is rather complex. The individual potentials consist of products of modulation factors, @@ -61,9 +66,10 @@ and "(Ouldridge)"_#Ouldridge2 for a detailed description of the oxDNA2 force fi NOTE: These pair styles have to be used together with the related oxDNA2 bond style {oxdna2/fene} for the connectivity of the phosphate backbone (see also documentation of -"bond_style oxdna2/fene"_bond_oxdna.html). Almost all coefficients +"bond_style oxdna2/fene"_bond_oxdna.html). Most of the coefficients in the above example have to be kept fixed and cannot be changed without reparametrizing the entire model. -Exceptions are the first coefficient after {oxdna2/stk} (T=0.1 in the above example) and the coefficients +Exceptions are the first and the second coefficient after {oxdna2/stk} (seq=seqdep and T=0.1 in the above example), +the first coefficient after {oxdna/hbond} (seq=seqdep in the above example) and the three coefficients after {oxdna2/dh} (T=0.1, rhos=1.0, qeff=0.815 in the above example). When using a Langevin thermostat e.g. through "fix langevin"_fix_langevin.html or "fix nve/dotc/langevin"_fix_nve_dotc_langevin.html the temperature coefficients have to be matched to the one used in the fix. @@ -92,6 +98,9 @@ LAMMPS"_Section_start.html#start_3 section for more info on packages. :line +:link(Sulc2) +[(Sulc)] P. Sulc, F. Romano, T.E. Ouldridge, L. Rovigatti, J.P.K. Doye, A.A. Louis, J. Chem. Phys. 137, 135101 (2012). + :link(Snodin) [(Snodin)] B.E. Snodin, F. Randisi, M. Mosayebi, et al., J. Chem. Phys. 142, 234901 (2015). diff --git a/doc/src/pair_snap.txt b/doc/src/pair_snap.txt index fa90dc34e92a2b30390317dcce77f5c0d55f5547..593765aa633b3f117a9e2b67d0966144472a6f3d 100644 --- a/doc/src/pair_snap.txt +++ b/doc/src/pair_snap.txt @@ -10,8 +10,7 @@ pair_style snap command :h3 [Syntax:] -pair_style snap -:pre +pair_style snap :pre [Examples:] @@ -20,17 +19,16 @@ pair_coeff * * InP.snapcoeff In P InP.snapparam In In P P :pre [Description:] -Pair style {snap} computes interactions -using the spectral neighbor analysis potential (SNAP) -"(Thompson)"_#Thompson20142. Like the GAP framework of Bartok et al. -"(Bartok2010)"_#Bartok20102, "(Bartok2013)"_#Bartok2013 -which uses bispectrum components +Pair style {snap} computes interactions using the spectral +neighbor analysis potential (SNAP) "(Thompson)"_#Thompson20142. +Like the GAP framework of Bartok et al. "(Bartok2010)"_#Bartok20102, +"(Bartok2013)"_#Bartok2013 which uses bispectrum components to characterize the local neighborhood of each atom in a very general way. The mathematical definition of the bispectrum calculation used by SNAP is identical to that used by "compute sna/atom"_compute_sna_atom.html. In SNAP, the total energy is decomposed into a sum over -atom energies. The energy of atom {i } is +atom energies. The energy of atom {i} is expressed as a weighted sum over bispectrum components. :c,image(Eqs/pair_snap.jpg) diff --git a/doc/src/pair_table_rx.txt b/doc/src/pair_table_rx.txt index f93af21da4172f5b24186c20217b1d82f4d9df2b..cd3a7ef31b87d15268cfe93050889b4699a4adc7 100644 --- a/doc/src/pair_table_rx.txt +++ b/doc/src/pair_table_rx.txt @@ -7,6 +7,7 @@ :line pair_style table/rx command :h3 +pair_style table/rx/kk command :h3 [Syntax:] @@ -223,6 +224,29 @@ This pair style can only be used via the {pair} keyword of the :line +Styles with a {gpu}, {intel}, {kk}, {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 "Section 5"_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 GPU, USER-INTEL, KOKKOS, +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 "Section 5"_Section_accelerate.html of the manual for +more instructions on how to use the accelerated styles effectively. + +:line + [Restrictions:] This command is part of the USER-DPD package. It is only enabled if diff --git a/doc/src/pairs.txt b/doc/src/pairs.txt index 2c1b20f4d3c847f92bd997bb77626d9826d54933..ec21b7a02e429436da14ea8baa3c33ad66b1d8b2 100644 --- a/doc/src/pairs.txt +++ b/doc/src/pairs.txt @@ -58,6 +58,7 @@ Pair Styles :h1 pair_meam pair_meam_spline pair_meam_sw_spline + pair_meso pair_mgpt pair_mie pair_momb diff --git a/doc/src/read_data.txt b/doc/src/read_data.txt index a8aca5369306915b7ad280797bbb72d7e64e9141..8c9aa02e22c37f52e4f048476eb8948ef0043c3f 100644 --- a/doc/src/read_data.txt +++ b/doc/src/read_data.txt @@ -374,10 +374,9 @@ needed if new bonds (angles, dihedrals, impropers) will be added to the system when a simulation runs, e.g. by using the "fix bond/create"_fix_bond_create.html command. Using this header flag is deprecated; please use the {extra/bond/per/atom} keyword (and -correspondingly for angles, dihedrals and impropers) in the -read_data command instead. Either will pre-allocate space in LAMMPS - data structures for storing the new bonds (angles, -dihedrals, impropers). +correspondingly for angles, dihedrals and impropers) in the read_data +command instead. Either will pre-allocate space in LAMMPS data +structures for storing the new bonds (angles, dihedrals, impropers). The "extra special per atom" setting is typically only needed if new bonds/angles/etc will be added to the system, e.g. by using the "fix @@ -547,6 +546,9 @@ bond: atom-ID molecule-ID atom-type x y z charge: atom-ID atom-type q x y z dipole: atom-ID atom-type q x y z mux muy muz dpd: atom-ID atom-type theta x y z +edpd: atom-ID atom-type edpd_temp edpd_cv x y z +mdpd: atom-ID atom-type x y z +tdpd: atom-ID atom-type x y z cc1 cc2 ... ccNspecies 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 @@ -566,12 +568,15 @@ The per-atom values have these meanings and units, listed alphabetically: atom-ID = integer ID of atom atom-type = type of atom (1-Ntype) bodyflag = 1 for body particles, 0 for point particles +cc = chemical concentration for tDPD particles for each species (mole/volume units) contact-radius = ??? (distance units) cs_re,cs_im = real/imaginary parts of wavepacket coefficients cv = heat capacity (need units) for SPH particles density = density of particle (mass/distance^3 or mass/distance^2 or mass/distance units, depending on dimensionality of particle) diameter = diameter of spherical atom (distance units) e = energy (need units) for SPH particles +edpd_temp = temperature for eDPD particles (temperature units) +edpd_cv = volumetric heat capacity for eDPD particles (energy/temperature/volume units) ellipsoidflag = 1 for ellipsoidal particles, 0 for point particles eradius = electron radius (or fixed-core radius) etag = integer ID of electron that each wavepacket belongs to diff --git a/doc/src/set.txt b/doc/src/set.txt index 14460c9741ea933e5ba8905a002c1e29754d89e6..4757d1c5758f9ed027a9932c07452ddcc2567f95 100644 --- a/doc/src/set.txt +++ b/doc/src/set.txt @@ -24,7 +24,7 @@ keyword = {type} or {type/fraction} or {mol} or {x} or {y} or {z} or \ {bond} or {angle} or {dihedral} or {improper} or \ {meso/e} or {meso/cv} or {meso/rho} or \ {smd/contact/radius} or {smd/mass/density} or {dpd/theta} or \ - {i_name} or {d_name} :l + {edpd/temp} or {edpd/cv} or {cc} or {i_name} or {d_name} :l {type} value = atom type value can be an atom-style variable (see below) {type/fraction} values = type fraction seed @@ -98,6 +98,13 @@ keyword = {type} or {type/fraction} or {mol} or {x} or {y} or {z} or \ {dpd/theta} value = internal temperature of DPD particles (temperature units) value can be an atom-style variable (see below) value can be NULL which sets internal temp of each particle to KE temp + {edpd/temp} value = temperature of eDPD particles (temperature units) + value can be an atom-style variable (see below) + {edpd/cv} value = volumetric heat capacity of eDPD particles (energy/temperature/volume units) + value can be an atom-style variable (see below) + {cc} values = index cc + index = index of a chemical species (1 to Nspecies) + cc = chemical concentration of tDPD particles for a species (mole/volume units) {i_name} value = value for custom integer vector with name {d_name} value = value for custom floating-point vector with name :pre :ule @@ -418,6 +425,19 @@ value >= 0.0, the internal temperature is set to that value. If it is < 0.0, the computation of Tkin is performed and the internal temperature is set to that value. +Keywords {edpd/temp} and {edpd/cv} set the temperature and volumetric +heat capacity of an eDPD particle as defined by the USER-MESO package. +Currently, only "atom_style edpd"_atom_style.html defines particles +with these attributes. The values for the temperature and heat +capacity must be positive. + +Keyword {cc} sets the chemical concentration of a tDPD particle for a +specified species as defined by the USER-MESO package. Currently, only +"atom_style tdpd"_atom_style.html defines particles with this +attribute. An integer for "index" selects a chemical species (1 to +Nspecies) where Nspecies is set by the atom_style command. The value +for the chemical concentration must be >= 0.0. + Keywords {i_name} and {d_name} refer to custom integer and floating-point properties that have been added to each atom via the "fix property/atom"_fix_property_atom.html command. When that command diff --git a/doc/src/temper_npt.txt b/doc/src/temper_npt.txt new file mode 100644 index 0000000000000000000000000000000000000000..4ad49f9e3327ded89da41c2fd405929175990a67 --- /dev/null +++ b/doc/src/temper_npt.txt @@ -0,0 +1,67 @@ +"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 +temper/npt command :h3 + +[Syntax:] + +temper/npt N M temp fix-ID seed1 seed2 pressure index :pre + +N = total # of timesteps to run +M = attempt a tempering swap every this many steps +temp = initial temperature for this ensemble +fix-ID = ID of the fix that will control temperature and pressure during the run +seed1 = random # seed used to decide on adjacent temperature to partner with +seed2 = random # seed for Boltzmann factor in Metropolis swap +pressure = setpoint pressure for the ensemble +index = which temperature (0 to N-1) I am simulating (optional) :ul + +[Examples:] + +temper/npt 100000 100 $t nptfix 0 58728 1 +temper/npt 2500000 1000 300 nptfix 0 32285 $p +temper/npt 5000000 2000 $t nptfix 0 12523 1 $w :pre + +[Description:] + +Run a parallel tempering or replica exchange simulation using multiple +replicas (ensembles) of a system in the isothermal-isobaric (NPT) +ensemble. The command temper/npt works like "temper"_temper.html but +requires running replicas in the NPT ensemble instead of the canonical +(NVT) ensemble and allows for pressure to be set in the ensembles. +These multiple ensembles can run in parallel at different temperatures +or different pressures. The acceptance criteria for temper/npt is +specific to the NPT ensemble and can be found in references +"(Okabe)"_#Okabe2 and "(Mori)"_#Mori2. + +Apart from the difference in acceptance criteria and the specification +of pressure, this command works much like the "temper"_temper.html +command. See the documentation on "temper"_temper.html for information +on how the parallel tempering is handled in general. + +:line + +[Restrictions:] + +This command 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 command should be used with a fix that maintains the +isothermal-isobaric (NPT) ensemble. + +[Related commands:] + +"temper"_temper.html, "variable"_variable.html, "fix_npt"_fix_nh.html + +[Default:] none + +:link(Okabe2) +[(Okabe)] T. Okabe, M. Kawata, Y. Okamoto, M. Masuhiro, Chem. Phys. Lett., 335, 435-439 (2001). + +:link(Mori2) +[(Mori)] Y. Mori, Y. Okamoto, J. Phys. Soc. Jpn., 7, 074003 (2010). diff --git a/examples/USER/cgdna/examples/oxDNA/duplex1/input.duplex1 b/examples/USER/cgdna/examples/oxDNA/duplex1/input.duplex1 index 07409eea8b3af785079ac2ebc0d4196ec9b2ee86..af0f965336df5bfc063df6d8a0d1c36122e122bb 100644 --- a/examples/USER/cgdna/examples/oxDNA/duplex1/input.duplex1 +++ b/examples/USER/cgdna/examples/oxDNA/duplex1/input.duplex1 @@ -30,10 +30,10 @@ bond_coeff * 2.0 0.25 0.7525 # oxDNA pair interactions pair_style hybrid/overlay oxdna/excv oxdna/stk oxdna/hbond oxdna/xstk oxdna/coaxstk pair_coeff * * oxdna/excv 2.0 0.7 0.675 2.0 0.515 0.5 2.0 0.33 0.32 -pair_coeff * * oxdna/stk 0.1 6.0 0.4 0.9 0.32 0.6 1.3 0 0.8 0.9 0 0.95 0.9 0 0.95 2.0 0.65 2.0 0.65 -pair_coeff * * oxdna/hbond 0.0 8.0 0.4 0.75 0.34 0.7 1.5 0 0.7 1.5 0 0.7 1.5 0 0.7 0.46 3.141592653589793 0.7 4.0 1.5707963267948966 0.45 4.0 1.5707963267948966 0.45 -pair_coeff 1 4 oxdna/hbond 1.077 8.0 0.4 0.75 0.34 0.7 1.5 0 0.7 1.5 0 0.7 1.5 0 0.7 0.46 3.141592653589793 0.7 4.0 1.5707963267948966 0.45 4.0 1.5707963267948966 0.45 -pair_coeff 2 3 oxdna/hbond 1.077 8.0 0.4 0.75 0.34 0.7 1.5 0 0.7 1.5 0 0.7 1.5 0 0.7 0.46 3.141592653589793 0.7 4.0 1.5707963267948966 0.45 4.0 1.5707963267948966 0.45 +pair_coeff * * oxdna/stk seqav 0.1 6.0 0.4 0.9 0.32 0.6 1.3 0 0.8 0.9 0 0.95 0.9 0 0.95 2.0 0.65 2.0 0.65 +pair_coeff * * oxdna/hbond seqav 0.0 8.0 0.4 0.75 0.34 0.7 1.5 0 0.7 1.5 0 0.7 1.5 0 0.7 0.46 3.141592653589793 0.7 4.0 1.5707963267948966 0.45 4.0 1.5707963267948966 0.45 +pair_coeff 1 4 oxdna/hbond seqav 1.077 8.0 0.4 0.75 0.34 0.7 1.5 0 0.7 1.5 0 0.7 1.5 0 0.7 0.46 3.141592653589793 0.7 4.0 1.5707963267948966 0.45 4.0 1.5707963267948966 0.45 +pair_coeff 2 3 oxdna/hbond seqav 1.077 8.0 0.4 0.75 0.34 0.7 1.5 0 0.7 1.5 0 0.7 1.5 0 0.7 0.46 3.141592653589793 0.7 4.0 1.5707963267948966 0.45 4.0 1.5707963267948966 0.45 pair_coeff * * oxdna/xstk 47.5 0.575 0.675 0.495 0.655 2.25 0.791592653589793 0.58 1.7 1.0 0.68 1.7 1.0 0.68 1.5 0 0.65 1.7 0.875 0.68 1.7 0.875 0.68 pair_coeff * * oxdna/coaxstk 46.0 0.4 0.6 0.22 0.58 2.0 2.541592653589793 0.65 1.3 0 0.8 0.9 0 0.95 0.9 0 0.95 2.0 -0.65 2.0 -0.65 diff --git a/examples/USER/cgdna/examples/oxDNA/duplex1/log.24Mar17.duplex1.g++.1 b/examples/USER/cgdna/examples/oxDNA/duplex1/log.24Mar17.duplex1.g++.1 index e1ba51d045b8bc818e904b6206734bf253956554..3afed6b6ce0cbdec88dd3154406658ef305e2cc2 100644 --- a/examples/USER/cgdna/examples/oxDNA/duplex1/log.24Mar17.duplex1.g++.1 +++ b/examples/USER/cgdna/examples/oxDNA/duplex1/log.24Mar17.duplex1.g++.1 @@ -48,10 +48,10 @@ bond_coeff * 2.0 0.25 0.7525 # oxDNA pair interactions pair_style hybrid/overlay oxdna/excv oxdna/stk oxdna/hbond oxdna/xstk oxdna/coaxstk pair_coeff * * oxdna/excv 2.0 0.7 0.675 2.0 0.515 0.5 2.0 0.33 0.32 -pair_coeff * * oxdna/stk 0.1 6.0 0.4 0.9 0.32 0.6 1.3 0 0.8 0.9 0 0.95 0.9 0 0.95 2.0 0.65 2.0 0.65 -pair_coeff * * oxdna/hbond 0.0 8.0 0.4 0.75 0.34 0.7 1.5 0 0.7 1.5 0 0.7 1.5 0 0.7 0.46 3.141592653589793 0.7 4.0 1.5707963267948966 0.45 4.0 1.5707963267948966 0.45 -pair_coeff 1 4 oxdna/hbond 1.077 8.0 0.4 0.75 0.34 0.7 1.5 0 0.7 1.5 0 0.7 1.5 0 0.7 0.46 3.141592653589793 0.7 4.0 1.5707963267948966 0.45 4.0 1.5707963267948966 0.45 -pair_coeff 2 3 oxdna/hbond 1.077 8.0 0.4 0.75 0.34 0.7 1.5 0 0.7 1.5 0 0.7 1.5 0 0.7 0.46 3.141592653589793 0.7 4.0 1.5707963267948966 0.45 4.0 1.5707963267948966 0.45 +pair_coeff * * oxdna/stk seqav 0.1 6.0 0.4 0.9 0.32 0.6 1.3 0 0.8 0.9 0 0.95 0.9 0 0.95 2.0 0.65 2.0 0.65 +pair_coeff * * oxdna/hbond seqav 0.0 8.0 0.4 0.75 0.34 0.7 1.5 0 0.7 1.5 0 0.7 1.5 0 0.7 0.46 3.141592653589793 0.7 4.0 1.5707963267948966 0.45 4.0 1.5707963267948966 0.45 +pair_coeff 1 4 oxdna/hbond seqav 1.077 8.0 0.4 0.75 0.34 0.7 1.5 0 0.7 1.5 0 0.7 1.5 0 0.7 0.46 3.141592653589793 0.7 4.0 1.5707963267948966 0.45 4.0 1.5707963267948966 0.45 +pair_coeff 2 3 oxdna/hbond seqav 1.077 8.0 0.4 0.75 0.34 0.7 1.5 0 0.7 1.5 0 0.7 1.5 0 0.7 0.46 3.141592653589793 0.7 4.0 1.5707963267948966 0.45 4.0 1.5707963267948966 0.45 pair_coeff * * oxdna/xstk 47.5 0.575 0.675 0.495 0.655 2.25 0.791592653589793 0.58 1.7 1.0 0.68 1.7 1.0 0.68 1.5 0 0.65 1.7 0.875 0.68 1.7 0.875 0.68 pair_coeff * * oxdna/coaxstk 46.0 0.4 0.6 0.22 0.58 2.0 2.541592653589793 0.65 1.3 0 0.8 0.9 0 0.95 0.9 0 0.95 2.0 -0.65 2.0 -0.65 diff --git a/examples/USER/cgdna/examples/oxDNA/duplex1/log.24Mar17.duplex1.g++.4 b/examples/USER/cgdna/examples/oxDNA/duplex1/log.24Mar17.duplex1.g++.4 index 0d41a5813ee985d21a5249462fc58ae94c05b74e..ba8d0999138ba8091ac7eed3b0e140a68e16bf8c 100644 --- a/examples/USER/cgdna/examples/oxDNA/duplex1/log.24Mar17.duplex1.g++.4 +++ b/examples/USER/cgdna/examples/oxDNA/duplex1/log.24Mar17.duplex1.g++.4 @@ -48,10 +48,10 @@ bond_coeff * 2.0 0.25 0.7525 # oxDNA pair interactions pair_style hybrid/overlay oxdna/excv oxdna/stk oxdna/hbond oxdna/xstk oxdna/coaxstk pair_coeff * * oxdna/excv 2.0 0.7 0.675 2.0 0.515 0.5 2.0 0.33 0.32 -pair_coeff * * oxdna/stk 0.1 6.0 0.4 0.9 0.32 0.6 1.3 0 0.8 0.9 0 0.95 0.9 0 0.95 2.0 0.65 2.0 0.65 -pair_coeff * * oxdna/hbond 0.0 8.0 0.4 0.75 0.34 0.7 1.5 0 0.7 1.5 0 0.7 1.5 0 0.7 0.46 3.141592653589793 0.7 4.0 1.5707963267948966 0.45 4.0 1.5707963267948966 0.45 -pair_coeff 1 4 oxdna/hbond 1.077 8.0 0.4 0.75 0.34 0.7 1.5 0 0.7 1.5 0 0.7 1.5 0 0.7 0.46 3.141592653589793 0.7 4.0 1.5707963267948966 0.45 4.0 1.5707963267948966 0.45 -pair_coeff 2 3 oxdna/hbond 1.077 8.0 0.4 0.75 0.34 0.7 1.5 0 0.7 1.5 0 0.7 1.5 0 0.7 0.46 3.141592653589793 0.7 4.0 1.5707963267948966 0.45 4.0 1.5707963267948966 0.45 +pair_coeff * * oxdna/stk seqav 0.1 6.0 0.4 0.9 0.32 0.6 1.3 0 0.8 0.9 0 0.95 0.9 0 0.95 2.0 0.65 2.0 0.65 +pair_coeff * * oxdna/hbond seqav 0.0 8.0 0.4 0.75 0.34 0.7 1.5 0 0.7 1.5 0 0.7 1.5 0 0.7 0.46 3.141592653589793 0.7 4.0 1.5707963267948966 0.45 4.0 1.5707963267948966 0.45 +pair_coeff 1 4 oxdna/hbond seqav 1.077 8.0 0.4 0.75 0.34 0.7 1.5 0 0.7 1.5 0 0.7 1.5 0 0.7 0.46 3.141592653589793 0.7 4.0 1.5707963267948966 0.45 4.0 1.5707963267948966 0.45 +pair_coeff 2 3 oxdna/hbond seqav 1.077 8.0 0.4 0.75 0.34 0.7 1.5 0 0.7 1.5 0 0.7 1.5 0 0.7 0.46 3.141592653589793 0.7 4.0 1.5707963267948966 0.45 4.0 1.5707963267948966 0.45 pair_coeff * * oxdna/xstk 47.5 0.575 0.675 0.495 0.655 2.25 0.791592653589793 0.58 1.7 1.0 0.68 1.7 1.0 0.68 1.5 0 0.65 1.7 0.875 0.68 1.7 0.875 0.68 pair_coeff * * oxdna/coaxstk 46.0 0.4 0.6 0.22 0.58 2.0 2.541592653589793 0.65 1.3 0 0.8 0.9 0 0.95 0.9 0 0.95 2.0 -0.65 2.0 -0.65 diff --git a/examples/USER/cgdna/examples/oxDNA/duplex2/input.duplex2 b/examples/USER/cgdna/examples/oxDNA/duplex2/input.duplex2 index 859e6af436c774dd080eb559717b2c26cb2d491b..dd14c3ae11babf261e4f51150665f42077b88ac5 100644 --- a/examples/USER/cgdna/examples/oxDNA/duplex2/input.duplex2 +++ b/examples/USER/cgdna/examples/oxDNA/duplex2/input.duplex2 @@ -30,10 +30,10 @@ bond_coeff * 2.0 0.25 0.7525 # oxDNA pair interactions pair_style hybrid/overlay oxdna/excv oxdna/stk oxdna/hbond oxdna/xstk oxdna/coaxstk pair_coeff * * oxdna/excv 2.0 0.7 0.675 2.0 0.515 0.5 2.0 0.33 0.32 -pair_coeff * * oxdna/stk 0.1 6.0 0.4 0.9 0.32 0.6 1.3 0 0.8 0.9 0 0.95 0.9 0 0.95 2.0 0.65 2.0 0.65 -pair_coeff * * oxdna/hbond 0.0 8.0 0.4 0.75 0.34 0.7 1.5 0 0.7 1.5 0 0.7 1.5 0 0.7 0.46 3.141592653589793 0.7 4.0 1.5707963267948966 0.45 4.0 1.5707963267948966 0.45 -pair_coeff 1 4 oxdna/hbond 1.077 8.0 0.4 0.75 0.34 0.7 1.5 0 0.7 1.5 0 0.7 1.5 0 0.7 0.46 3.141592653589793 0.7 4.0 1.5707963267948966 0.45 4.0 1.5707963267948966 0.45 -pair_coeff 2 3 oxdna/hbond 1.077 8.0 0.4 0.75 0.34 0.7 1.5 0 0.7 1.5 0 0.7 1.5 0 0.7 0.46 3.141592653589793 0.7 4.0 1.5707963267948966 0.45 4.0 1.5707963267948966 0.45 +pair_coeff * * oxdna/stk seqav 0.1 6.0 0.4 0.9 0.32 0.6 1.3 0 0.8 0.9 0 0.95 0.9 0 0.95 2.0 0.65 2.0 0.65 +pair_coeff * * oxdna/hbond seqav 0.0 8.0 0.4 0.75 0.34 0.7 1.5 0 0.7 1.5 0 0.7 1.5 0 0.7 0.46 3.141592653589793 0.7 4.0 1.5707963267948966 0.45 4.0 1.5707963267948966 0.45 +pair_coeff 1 4 oxdna/hbond seqav 1.077 8.0 0.4 0.75 0.34 0.7 1.5 0 0.7 1.5 0 0.7 1.5 0 0.7 0.46 3.141592653589793 0.7 4.0 1.5707963267948966 0.45 4.0 1.5707963267948966 0.45 +pair_coeff 2 3 oxdna/hbond seqav 1.077 8.0 0.4 0.75 0.34 0.7 1.5 0 0.7 1.5 0 0.7 1.5 0 0.7 0.46 3.141592653589793 0.7 4.0 1.5707963267948966 0.45 4.0 1.5707963267948966 0.45 pair_coeff * * oxdna/xstk 47.5 0.575 0.675 0.495 0.655 2.25 0.791592653589793 0.58 1.7 1.0 0.68 1.7 1.0 0.68 1.5 0 0.65 1.7 0.875 0.68 1.7 0.875 0.68 pair_coeff * * oxdna/coaxstk 46.0 0.4 0.6 0.22 0.58 2.0 2.541592653589793 0.65 1.3 0 0.8 0.9 0 0.95 0.9 0 0.95 2.0 -0.65 2.0 -0.65 diff --git a/examples/USER/cgdna/examples/oxDNA/duplex2/log.24Mar17.duplex2.g++.1 b/examples/USER/cgdna/examples/oxDNA/duplex2/log.24Mar17.duplex2.g++.1 index e1cfa1017584cfc3b89b067352fc076484953d59..f59e6bd0168ea7f3c7ecada9b6088a8f9632fe73 100644 --- a/examples/USER/cgdna/examples/oxDNA/duplex2/log.24Mar17.duplex2.g++.1 +++ b/examples/USER/cgdna/examples/oxDNA/duplex2/log.24Mar17.duplex2.g++.1 @@ -48,10 +48,10 @@ bond_coeff * 2.0 0.25 0.7525 # oxDNA pair interactions pair_style hybrid/overlay oxdna/excv oxdna/stk oxdna/hbond oxdna/xstk oxdna/coaxstk pair_coeff * * oxdna/excv 2.0 0.7 0.675 2.0 0.515 0.5 2.0 0.33 0.32 -pair_coeff * * oxdna/stk 0.1 6.0 0.4 0.9 0.32 0.6 1.3 0 0.8 0.9 0 0.95 0.9 0 0.95 2.0 0.65 2.0 0.65 -pair_coeff * * oxdna/hbond 0.0 8.0 0.4 0.75 0.34 0.7 1.5 0 0.7 1.5 0 0.7 1.5 0 0.7 0.46 3.141592653589793 0.7 4.0 1.5707963267948966 0.45 4.0 1.5707963267948966 0.45 -pair_coeff 1 4 oxdna/hbond 1.077 8.0 0.4 0.75 0.34 0.7 1.5 0 0.7 1.5 0 0.7 1.5 0 0.7 0.46 3.141592653589793 0.7 4.0 1.5707963267948966 0.45 4.0 1.5707963267948966 0.45 -pair_coeff 2 3 oxdna/hbond 1.077 8.0 0.4 0.75 0.34 0.7 1.5 0 0.7 1.5 0 0.7 1.5 0 0.7 0.46 3.141592653589793 0.7 4.0 1.5707963267948966 0.45 4.0 1.5707963267948966 0.45 +pair_coeff * * oxdna/stk seqav 0.1 6.0 0.4 0.9 0.32 0.6 1.3 0 0.8 0.9 0 0.95 0.9 0 0.95 2.0 0.65 2.0 0.65 +pair_coeff * * oxdna/hbond seqav 0.0 8.0 0.4 0.75 0.34 0.7 1.5 0 0.7 1.5 0 0.7 1.5 0 0.7 0.46 3.141592653589793 0.7 4.0 1.5707963267948966 0.45 4.0 1.5707963267948966 0.45 +pair_coeff 1 4 oxdna/hbond seqav 1.077 8.0 0.4 0.75 0.34 0.7 1.5 0 0.7 1.5 0 0.7 1.5 0 0.7 0.46 3.141592653589793 0.7 4.0 1.5707963267948966 0.45 4.0 1.5707963267948966 0.45 +pair_coeff 2 3 oxdna/hbond seqav 1.077 8.0 0.4 0.75 0.34 0.7 1.5 0 0.7 1.5 0 0.7 1.5 0 0.7 0.46 3.141592653589793 0.7 4.0 1.5707963267948966 0.45 4.0 1.5707963267948966 0.45 pair_coeff * * oxdna/xstk 47.5 0.575 0.675 0.495 0.655 2.25 0.791592653589793 0.58 1.7 1.0 0.68 1.7 1.0 0.68 1.5 0 0.65 1.7 0.875 0.68 1.7 0.875 0.68 pair_coeff * * oxdna/coaxstk 46.0 0.4 0.6 0.22 0.58 2.0 2.541592653589793 0.65 1.3 0 0.8 0.9 0 0.95 0.9 0 0.95 2.0 -0.65 2.0 -0.65 diff --git a/examples/USER/cgdna/examples/oxDNA/duplex2/log.24Mar17.duplex2.g++.4 b/examples/USER/cgdna/examples/oxDNA/duplex2/log.24Mar17.duplex2.g++.4 index 5900f5b4bf53c5582da222eb9bba04f4ac2fe41d..54ec267735ca184feee6231caa4f3894412adb95 100644 --- a/examples/USER/cgdna/examples/oxDNA/duplex2/log.24Mar17.duplex2.g++.4 +++ b/examples/USER/cgdna/examples/oxDNA/duplex2/log.24Mar17.duplex2.g++.4 @@ -48,10 +48,10 @@ bond_coeff * 2.0 0.25 0.7525 # oxDNA pair interactions pair_style hybrid/overlay oxdna/excv oxdna/stk oxdna/hbond oxdna/xstk oxdna/coaxstk pair_coeff * * oxdna/excv 2.0 0.7 0.675 2.0 0.515 0.5 2.0 0.33 0.32 -pair_coeff * * oxdna/stk 0.1 6.0 0.4 0.9 0.32 0.6 1.3 0 0.8 0.9 0 0.95 0.9 0 0.95 2.0 0.65 2.0 0.65 -pair_coeff * * oxdna/hbond 0.0 8.0 0.4 0.75 0.34 0.7 1.5 0 0.7 1.5 0 0.7 1.5 0 0.7 0.46 3.141592653589793 0.7 4.0 1.5707963267948966 0.45 4.0 1.5707963267948966 0.45 -pair_coeff 1 4 oxdna/hbond 1.077 8.0 0.4 0.75 0.34 0.7 1.5 0 0.7 1.5 0 0.7 1.5 0 0.7 0.46 3.141592653589793 0.7 4.0 1.5707963267948966 0.45 4.0 1.5707963267948966 0.45 -pair_coeff 2 3 oxdna/hbond 1.077 8.0 0.4 0.75 0.34 0.7 1.5 0 0.7 1.5 0 0.7 1.5 0 0.7 0.46 3.141592653589793 0.7 4.0 1.5707963267948966 0.45 4.0 1.5707963267948966 0.45 +pair_coeff * * oxdna/stk seqav 0.1 6.0 0.4 0.9 0.32 0.6 1.3 0 0.8 0.9 0 0.95 0.9 0 0.95 2.0 0.65 2.0 0.65 +pair_coeff * * oxdna/hbond seqav 0.0 8.0 0.4 0.75 0.34 0.7 1.5 0 0.7 1.5 0 0.7 1.5 0 0.7 0.46 3.141592653589793 0.7 4.0 1.5707963267948966 0.45 4.0 1.5707963267948966 0.45 +pair_coeff 1 4 oxdna/hbond seqav 1.077 8.0 0.4 0.75 0.34 0.7 1.5 0 0.7 1.5 0 0.7 1.5 0 0.7 0.46 3.141592653589793 0.7 4.0 1.5707963267948966 0.45 4.0 1.5707963267948966 0.45 +pair_coeff 2 3 oxdna/hbond seqav 1.077 8.0 0.4 0.75 0.34 0.7 1.5 0 0.7 1.5 0 0.7 1.5 0 0.7 0.46 3.141592653589793 0.7 4.0 1.5707963267948966 0.45 4.0 1.5707963267948966 0.45 pair_coeff * * oxdna/xstk 47.5 0.575 0.675 0.495 0.655 2.25 0.791592653589793 0.58 1.7 1.0 0.68 1.7 1.0 0.68 1.5 0 0.65 1.7 0.875 0.68 1.7 0.875 0.68 pair_coeff * * oxdna/coaxstk 46.0 0.4 0.6 0.22 0.58 2.0 2.541592653589793 0.65 1.3 0 0.8 0.9 0 0.95 0.9 0 0.95 2.0 -0.65 2.0 -0.65 diff --git a/examples/USER/cgdna/examples/oxDNA2/duplex1/input.duplex1 b/examples/USER/cgdna/examples/oxDNA2/duplex1/input.duplex1 index b15262b1d38928336277745f1bc3313106674256..366e5db67ae70f4e19208a6eedbad95d4ad63447 100644 --- a/examples/USER/cgdna/examples/oxDNA2/duplex1/input.duplex1 +++ b/examples/USER/cgdna/examples/oxDNA2/duplex1/input.duplex1 @@ -30,10 +30,10 @@ bond_coeff * 2.0 0.25 0.7564 # oxDNA pair interactions pair_style hybrid/overlay oxdna2/excv oxdna2/stk oxdna2/hbond oxdna2/xstk oxdna2/coaxstk oxdna2/dh pair_coeff * * oxdna2/excv 2.0 0.7 0.675 2.0 0.515 0.5 2.0 0.33 0.32 -pair_coeff * * oxdna2/stk 0.1 6.0 0.4 0.9 0.32 0.6 1.3 0 0.8 0.9 0 0.95 0.9 0 0.95 2.0 0.65 2.0 0.65 -pair_coeff * * oxdna2/hbond 0.0 8.0 0.4 0.75 0.34 0.7 1.5 0 0.7 1.5 0 0.7 1.5 0 0.7 0.46 3.141592653589793 0.7 4.0 1.5707963267948966 0.45 4.0 1.5707963267948966 0.45 -pair_coeff 1 4 oxdna2/hbond 1.0678 8.0 0.4 0.75 0.34 0.7 1.5 0 0.7 1.5 0 0.7 1.5 0 0.7 0.46 3.141592653589793 0.7 4.0 1.5707963267948966 0.45 4.0 1.5707963267948966 0.45 -pair_coeff 2 3 oxdna2/hbond 1.0678 8.0 0.4 0.75 0.34 0.7 1.5 0 0.7 1.5 0 0.7 1.5 0 0.7 0.46 3.141592653589793 0.7 4.0 1.5707963267948966 0.45 4.0 1.5707963267948966 0.45 +pair_coeff * * oxdna2/stk seqav 0.1 6.0 0.4 0.9 0.32 0.6 1.3 0 0.8 0.9 0 0.95 0.9 0 0.95 2.0 0.65 2.0 0.65 +pair_coeff * * oxdna2/hbond seqav 0.0 8.0 0.4 0.75 0.34 0.7 1.5 0 0.7 1.5 0 0.7 1.5 0 0.7 0.46 3.141592653589793 0.7 4.0 1.5707963267948966 0.45 4.0 1.5707963267948966 0.45 +pair_coeff 1 4 oxdna2/hbond seqav 1.0678 8.0 0.4 0.75 0.34 0.7 1.5 0 0.7 1.5 0 0.7 1.5 0 0.7 0.46 3.141592653589793 0.7 4.0 1.5707963267948966 0.45 4.0 1.5707963267948966 0.45 +pair_coeff 2 3 oxdna2/hbond seqav 1.0678 8.0 0.4 0.75 0.34 0.7 1.5 0 0.7 1.5 0 0.7 1.5 0 0.7 0.46 3.141592653589793 0.7 4.0 1.5707963267948966 0.45 4.0 1.5707963267948966 0.45 pair_coeff * * oxdna2/xstk 47.5 0.575 0.675 0.495 0.655 2.25 0.791592653589793 0.58 1.7 1.0 0.68 1.7 1.0 0.68 1.5 0 0.65 1.7 0.875 0.68 1.7 0.875 0.68 pair_coeff * * oxdna2/coaxstk 58.5 0.4 0.6 0.22 0.58 2.0 2.891592653589793 0.65 1.3 0 0.8 0.9 0 0.95 0.9 0 0.95 40.0 3.116592653589793 pair_coeff * * oxdna2/dh 0.1 1.0 0.815 diff --git a/examples/USER/cgdna/examples/oxDNA2/duplex1/log.24Mar17.duplex1.g++.1 b/examples/USER/cgdna/examples/oxDNA2/duplex1/log.24Mar17.duplex1.g++.1 index 481422a6f28acbd3288d751fcdef46fb3126a2c3..25c705daf8ac9c4fb2df33946d88d9d5ea634567 100644 --- a/examples/USER/cgdna/examples/oxDNA2/duplex1/log.24Mar17.duplex1.g++.1 +++ b/examples/USER/cgdna/examples/oxDNA2/duplex1/log.24Mar17.duplex1.g++.1 @@ -48,10 +48,10 @@ bond_coeff * 2.0 0.25 0.7564 # oxDNA pair interactions pair_style hybrid/overlay oxdna2/excv oxdna2/stk oxdna2/hbond oxdna2/xstk oxdna2/coaxstk oxdna2/dh pair_coeff * * oxdna2/excv 2.0 0.7 0.675 2.0 0.515 0.5 2.0 0.33 0.32 -pair_coeff * * oxdna2/stk 0.1 6.0 0.4 0.9 0.32 0.6 1.3 0 0.8 0.9 0 0.95 0.9 0 0.95 2.0 0.65 2.0 0.65 -pair_coeff * * oxdna2/hbond 0.0 8.0 0.4 0.75 0.34 0.7 1.5 0 0.7 1.5 0 0.7 1.5 0 0.7 0.46 3.141592653589793 0.7 4.0 1.5707963267948966 0.45 4.0 1.5707963267948966 0.45 -pair_coeff 1 4 oxdna2/hbond 1.0678 8.0 0.4 0.75 0.34 0.7 1.5 0 0.7 1.5 0 0.7 1.5 0 0.7 0.46 3.141592653589793 0.7 4.0 1.5707963267948966 0.45 4.0 1.5707963267948966 0.45 -pair_coeff 2 3 oxdna2/hbond 1.0678 8.0 0.4 0.75 0.34 0.7 1.5 0 0.7 1.5 0 0.7 1.5 0 0.7 0.46 3.141592653589793 0.7 4.0 1.5707963267948966 0.45 4.0 1.5707963267948966 0.45 +pair_coeff * * oxdna2/stk seqav 0.1 6.0 0.4 0.9 0.32 0.6 1.3 0 0.8 0.9 0 0.95 0.9 0 0.95 2.0 0.65 2.0 0.65 +pair_coeff * * oxdna2/hbond seqav 0.0 8.0 0.4 0.75 0.34 0.7 1.5 0 0.7 1.5 0 0.7 1.5 0 0.7 0.46 3.141592653589793 0.7 4.0 1.5707963267948966 0.45 4.0 1.5707963267948966 0.45 +pair_coeff 1 4 oxdna2/hbond seqav 1.0678 8.0 0.4 0.75 0.34 0.7 1.5 0 0.7 1.5 0 0.7 1.5 0 0.7 0.46 3.141592653589793 0.7 4.0 1.5707963267948966 0.45 4.0 1.5707963267948966 0.45 +pair_coeff 2 3 oxdna2/hbond seqav 1.0678 8.0 0.4 0.75 0.34 0.7 1.5 0 0.7 1.5 0 0.7 1.5 0 0.7 0.46 3.141592653589793 0.7 4.0 1.5707963267948966 0.45 4.0 1.5707963267948966 0.45 pair_coeff * * oxdna2/xstk 47.5 0.575 0.675 0.495 0.655 2.25 0.791592653589793 0.58 1.7 1.0 0.68 1.7 1.0 0.68 1.5 0 0.65 1.7 0.875 0.68 1.7 0.875 0.68 pair_coeff * * oxdna2/coaxstk 58.5 0.4 0.6 0.22 0.58 2.0 2.891592653589793 0.65 1.3 0 0.8 0.9 0 0.95 0.9 0 0.95 40.0 3.116592653589793 pair_coeff * * oxdna2/dh 0.1 1.0 0.815 diff --git a/examples/USER/cgdna/examples/oxDNA2/duplex1/log.24Mar17.duplex1.g++.4 b/examples/USER/cgdna/examples/oxDNA2/duplex1/log.24Mar17.duplex1.g++.4 index aff8fe9bba4d45bb701f34ab9d32b2a0bf70d0cd..6ee77cb00584a840d75007db724136bd9e2c0055 100644 --- a/examples/USER/cgdna/examples/oxDNA2/duplex1/log.24Mar17.duplex1.g++.4 +++ b/examples/USER/cgdna/examples/oxDNA2/duplex1/log.24Mar17.duplex1.g++.4 @@ -48,10 +48,10 @@ bond_coeff * 2.0 0.25 0.7564 # oxDNA pair interactions pair_style hybrid/overlay oxdna2/excv oxdna2/stk oxdna2/hbond oxdna2/xstk oxdna2/coaxstk oxdna2/dh pair_coeff * * oxdna2/excv 2.0 0.7 0.675 2.0 0.515 0.5 2.0 0.33 0.32 -pair_coeff * * oxdna2/stk 0.1 6.0 0.4 0.9 0.32 0.6 1.3 0 0.8 0.9 0 0.95 0.9 0 0.95 2.0 0.65 2.0 0.65 -pair_coeff * * oxdna2/hbond 0.0 8.0 0.4 0.75 0.34 0.7 1.5 0 0.7 1.5 0 0.7 1.5 0 0.7 0.46 3.141592653589793 0.7 4.0 1.5707963267948966 0.45 4.0 1.5707963267948966 0.45 -pair_coeff 1 4 oxdna2/hbond 1.0678 8.0 0.4 0.75 0.34 0.7 1.5 0 0.7 1.5 0 0.7 1.5 0 0.7 0.46 3.141592653589793 0.7 4.0 1.5707963267948966 0.45 4.0 1.5707963267948966 0.45 -pair_coeff 2 3 oxdna2/hbond 1.0678 8.0 0.4 0.75 0.34 0.7 1.5 0 0.7 1.5 0 0.7 1.5 0 0.7 0.46 3.141592653589793 0.7 4.0 1.5707963267948966 0.45 4.0 1.5707963267948966 0.45 +pair_coeff * * oxdna2/stk seqav 0.1 6.0 0.4 0.9 0.32 0.6 1.3 0 0.8 0.9 0 0.95 0.9 0 0.95 2.0 0.65 2.0 0.65 +pair_coeff * * oxdna2/hbond seqav 0.0 8.0 0.4 0.75 0.34 0.7 1.5 0 0.7 1.5 0 0.7 1.5 0 0.7 0.46 3.141592653589793 0.7 4.0 1.5707963267948966 0.45 4.0 1.5707963267948966 0.45 +pair_coeff 1 4 oxdna2/hbond seqav 1.0678 8.0 0.4 0.75 0.34 0.7 1.5 0 0.7 1.5 0 0.7 1.5 0 0.7 0.46 3.141592653589793 0.7 4.0 1.5707963267948966 0.45 4.0 1.5707963267948966 0.45 +pair_coeff 2 3 oxdna2/hbond seqav 1.0678 8.0 0.4 0.75 0.34 0.7 1.5 0 0.7 1.5 0 0.7 1.5 0 0.7 0.46 3.141592653589793 0.7 4.0 1.5707963267948966 0.45 4.0 1.5707963267948966 0.45 pair_coeff * * oxdna2/xstk 47.5 0.575 0.675 0.495 0.655 2.25 0.791592653589793 0.58 1.7 1.0 0.68 1.7 1.0 0.68 1.5 0 0.65 1.7 0.875 0.68 1.7 0.875 0.68 pair_coeff * * oxdna2/coaxstk 58.5 0.4 0.6 0.22 0.58 2.0 2.891592653589793 0.65 1.3 0 0.8 0.9 0 0.95 0.9 0 0.95 40.0 3.116592653589793 pair_coeff * * oxdna2/dh 0.1 1.0 0.815 diff --git a/examples/USER/cgdna/examples/oxDNA2/duplex2/input.duplex2 b/examples/USER/cgdna/examples/oxDNA2/duplex2/input.duplex2 index 1cb16c82ca4e9b8228c33cf7ae2fec99c61d523c..451fe62e3c8c0c92c0939bdb7fc53ee706eda9c4 100644 --- a/examples/USER/cgdna/examples/oxDNA2/duplex2/input.duplex2 +++ b/examples/USER/cgdna/examples/oxDNA2/duplex2/input.duplex2 @@ -30,10 +30,10 @@ bond_coeff * 2.0 0.25 0.7564 # oxDNA pair interactions pair_style hybrid/overlay oxdna2/excv oxdna2/stk oxdna2/hbond oxdna2/xstk oxdna2/coaxstk oxdna2/dh pair_coeff * * oxdna2/excv 2.0 0.7 0.675 2.0 0.515 0.5 2.0 0.33 0.32 -pair_coeff * * oxdna2/stk 0.1 6.0 0.4 0.9 0.32 0.6 1.3 0 0.8 0.9 0 0.95 0.9 0 0.95 2.0 0.65 2.0 0.65 -pair_coeff * * oxdna2/hbond 0.0 8.0 0.4 0.75 0.34 0.7 1.5 0 0.7 1.5 0 0.7 1.5 0 0.7 0.46 3.141592653589793 0.7 4.0 1.5707963267948966 0.45 4.0 1.5707963267948966 0.45 -pair_coeff 1 4 oxdna2/hbond 1.0678 8.0 0.4 0.75 0.34 0.7 1.5 0 0.7 1.5 0 0.7 1.5 0 0.7 0.46 3.141592653589793 0.7 4.0 1.5707963267948966 0.45 4.0 1.5707963267948966 0.45 -pair_coeff 2 3 oxdna2/hbond 1.0678 8.0 0.4 0.75 0.34 0.7 1.5 0 0.7 1.5 0 0.7 1.5 0 0.7 0.46 3.141592653589793 0.7 4.0 1.5707963267948966 0.45 4.0 1.5707963267948966 0.45 +pair_coeff * * oxdna2/stk seqav 0.1 6.0 0.4 0.9 0.32 0.6 1.3 0 0.8 0.9 0 0.95 0.9 0 0.95 2.0 0.65 2.0 0.65 +pair_coeff * * oxdna2/hbond seqav 0.0 8.0 0.4 0.75 0.34 0.7 1.5 0 0.7 1.5 0 0.7 1.5 0 0.7 0.46 3.141592653589793 0.7 4.0 1.5707963267948966 0.45 4.0 1.5707963267948966 0.45 +pair_coeff 1 4 oxdna2/hbond seqav 1.0678 8.0 0.4 0.75 0.34 0.7 1.5 0 0.7 1.5 0 0.7 1.5 0 0.7 0.46 3.141592653589793 0.7 4.0 1.5707963267948966 0.45 4.0 1.5707963267948966 0.45 +pair_coeff 2 3 oxdna2/hbond seqav 1.0678 8.0 0.4 0.75 0.34 0.7 1.5 0 0.7 1.5 0 0.7 1.5 0 0.7 0.46 3.141592653589793 0.7 4.0 1.5707963267948966 0.45 4.0 1.5707963267948966 0.45 pair_coeff * * oxdna2/xstk 47.5 0.575 0.675 0.495 0.655 2.25 0.791592653589793 0.58 1.7 1.0 0.68 1.7 1.0 0.68 1.5 0 0.65 1.7 0.875 0.68 1.7 0.875 0.68 pair_coeff * * oxdna2/coaxstk 58.5 0.4 0.6 0.22 0.58 2.0 2.891592653589793 0.65 1.3 0 0.8 0.9 0 0.95 0.9 0 0.95 40.0 3.116592653589793 pair_coeff * * oxdna2/dh 0.1 1.0 0.815 diff --git a/examples/USER/cgdna/examples/oxDNA2/duplex2/log.24Mar17.duplex2.g++.1 b/examples/USER/cgdna/examples/oxDNA2/duplex2/log.24Mar17.duplex2.g++.1 index f05e61a7a7ac6891ad02ae28de104c9bda79cfe0..386fbd75799bd2f63decee92aca9136b363a0689 100644 --- a/examples/USER/cgdna/examples/oxDNA2/duplex2/log.24Mar17.duplex2.g++.1 +++ b/examples/USER/cgdna/examples/oxDNA2/duplex2/log.24Mar17.duplex2.g++.1 @@ -48,10 +48,10 @@ bond_coeff * 2.0 0.25 0.7564 # oxDNA pair interactions pair_style hybrid/overlay oxdna2/excv oxdna2/stk oxdna2/hbond oxdna2/xstk oxdna2/coaxstk oxdna2/dh pair_coeff * * oxdna2/excv 2.0 0.7 0.675 2.0 0.515 0.5 2.0 0.33 0.32 -pair_coeff * * oxdna2/stk 0.1 6.0 0.4 0.9 0.32 0.6 1.3 0 0.8 0.9 0 0.95 0.9 0 0.95 2.0 0.65 2.0 0.65 -pair_coeff * * oxdna2/hbond 0.0 8.0 0.4 0.75 0.34 0.7 1.5 0 0.7 1.5 0 0.7 1.5 0 0.7 0.46 3.141592653589793 0.7 4.0 1.5707963267948966 0.45 4.0 1.5707963267948966 0.45 -pair_coeff 1 4 oxdna2/hbond 1.0678 8.0 0.4 0.75 0.34 0.7 1.5 0 0.7 1.5 0 0.7 1.5 0 0.7 0.46 3.141592653589793 0.7 4.0 1.5707963267948966 0.45 4.0 1.5707963267948966 0.45 -pair_coeff 2 3 oxdna2/hbond 1.0678 8.0 0.4 0.75 0.34 0.7 1.5 0 0.7 1.5 0 0.7 1.5 0 0.7 0.46 3.141592653589793 0.7 4.0 1.5707963267948966 0.45 4.0 1.5707963267948966 0.45 +pair_coeff * * oxdna2/stk seqav 0.1 6.0 0.4 0.9 0.32 0.6 1.3 0 0.8 0.9 0 0.95 0.9 0 0.95 2.0 0.65 2.0 0.65 +pair_coeff * * oxdna2/hbond seqav 0.0 8.0 0.4 0.75 0.34 0.7 1.5 0 0.7 1.5 0 0.7 1.5 0 0.7 0.46 3.141592653589793 0.7 4.0 1.5707963267948966 0.45 4.0 1.5707963267948966 0.45 +pair_coeff 1 4 oxdna2/hbond seqav 1.0678 8.0 0.4 0.75 0.34 0.7 1.5 0 0.7 1.5 0 0.7 1.5 0 0.7 0.46 3.141592653589793 0.7 4.0 1.5707963267948966 0.45 4.0 1.5707963267948966 0.45 +pair_coeff 2 3 oxdna2/hbond seqav 1.0678 8.0 0.4 0.75 0.34 0.7 1.5 0 0.7 1.5 0 0.7 1.5 0 0.7 0.46 3.141592653589793 0.7 4.0 1.5707963267948966 0.45 4.0 1.5707963267948966 0.45 pair_coeff * * oxdna2/xstk 47.5 0.575 0.675 0.495 0.655 2.25 0.791592653589793 0.58 1.7 1.0 0.68 1.7 1.0 0.68 1.5 0 0.65 1.7 0.875 0.68 1.7 0.875 0.68 pair_coeff * * oxdna2/coaxstk 58.5 0.4 0.6 0.22 0.58 2.0 2.891592653589793 0.65 1.3 0 0.8 0.9 0 0.95 0.9 0 0.95 40.0 3.116592653589793 pair_coeff * * oxdna2/dh 0.1 1.0 0.815 diff --git a/examples/USER/cgdna/examples/oxDNA2/duplex2/log.24Mar17.duplex2.g++.4 b/examples/USER/cgdna/examples/oxDNA2/duplex2/log.24Mar17.duplex2.g++.4 index f3ceee3309fe7af51a1f7afead9673dde42fab57..320d186f801edd05d8fe1f38d06e5f3057334d50 100644 --- a/examples/USER/cgdna/examples/oxDNA2/duplex2/log.24Mar17.duplex2.g++.4 +++ b/examples/USER/cgdna/examples/oxDNA2/duplex2/log.24Mar17.duplex2.g++.4 @@ -48,10 +48,10 @@ bond_coeff * 2.0 0.25 0.7564 # oxDNA pair interactions pair_style hybrid/overlay oxdna2/excv oxdna2/stk oxdna2/hbond oxdna2/xstk oxdna2/coaxstk oxdna2/dh pair_coeff * * oxdna2/excv 2.0 0.7 0.675 2.0 0.515 0.5 2.0 0.33 0.32 -pair_coeff * * oxdna2/stk 0.1 6.0 0.4 0.9 0.32 0.6 1.3 0 0.8 0.9 0 0.95 0.9 0 0.95 2.0 0.65 2.0 0.65 -pair_coeff * * oxdna2/hbond 0.0 8.0 0.4 0.75 0.34 0.7 1.5 0 0.7 1.5 0 0.7 1.5 0 0.7 0.46 3.141592653589793 0.7 4.0 1.5707963267948966 0.45 4.0 1.5707963267948966 0.45 -pair_coeff 1 4 oxdna2/hbond 1.0678 8.0 0.4 0.75 0.34 0.7 1.5 0 0.7 1.5 0 0.7 1.5 0 0.7 0.46 3.141592653589793 0.7 4.0 1.5707963267948966 0.45 4.0 1.5707963267948966 0.45 -pair_coeff 2 3 oxdna2/hbond 1.0678 8.0 0.4 0.75 0.34 0.7 1.5 0 0.7 1.5 0 0.7 1.5 0 0.7 0.46 3.141592653589793 0.7 4.0 1.5707963267948966 0.45 4.0 1.5707963267948966 0.45 +pair_coeff * * oxdna2/stk seqav 0.1 6.0 0.4 0.9 0.32 0.6 1.3 0 0.8 0.9 0 0.95 0.9 0 0.95 2.0 0.65 2.0 0.65 +pair_coeff * * oxdna2/hbond seqav 0.0 8.0 0.4 0.75 0.34 0.7 1.5 0 0.7 1.5 0 0.7 1.5 0 0.7 0.46 3.141592653589793 0.7 4.0 1.5707963267948966 0.45 4.0 1.5707963267948966 0.45 +pair_coeff 1 4 oxdna2/hbond seqav 1.0678 8.0 0.4 0.75 0.34 0.7 1.5 0 0.7 1.5 0 0.7 1.5 0 0.7 0.46 3.141592653589793 0.7 4.0 1.5707963267948966 0.45 4.0 1.5707963267948966 0.45 +pair_coeff 2 3 oxdna2/hbond seqav 1.0678 8.0 0.4 0.75 0.34 0.7 1.5 0 0.7 1.5 0 0.7 1.5 0 0.7 0.46 3.141592653589793 0.7 4.0 1.5707963267948966 0.45 4.0 1.5707963267948966 0.45 pair_coeff * * oxdna2/xstk 47.5 0.575 0.675 0.495 0.655 2.25 0.791592653589793 0.58 1.7 1.0 0.68 1.7 1.0 0.68 1.5 0 0.65 1.7 0.875 0.68 1.7 0.875 0.68 pair_coeff * * oxdna2/coaxstk 58.5 0.4 0.6 0.22 0.58 2.0 2.891592653589793 0.65 1.3 0 0.8 0.9 0 0.95 0.9 0 0.95 40.0 3.116592653589793 pair_coeff * * oxdna2/dh 0.1 1.0 0.815 diff --git a/examples/USER/drude/README b/examples/USER/drude/README index 28395507b75bc8d568eb428e5b68a9b4e977d05d..fb58fae83fb90a45b0e746c122d826b0f2e2d442 100644 --- a/examples/USER/drude/README +++ b/examples/USER/drude/README @@ -6,8 +6,11 @@ Nosé-Hoover or Langevin thermostats. * `butane` -- simulation in NVT ensemble with Thole damping +* `toluene` -- simulation in NVT ensemble with Thole damping and +use of the `extra/special/per/atom` keyword + * `ethanol` -- simulation in NpT ensemble with Thole damping -* `swm4-ndp` -- 4-site rigid water model in NpT ensemble (no Thole +* `swm4-ndp` -- 4-site rigid water model in NpT ensemble (no Thole damping) diff --git a/examples/USER/drude/toluene/data.toluene b/examples/USER/drude/toluene/data.toluene new file mode 100644 index 0000000000000000000000000000000000000000..48d44016d782c207004557b4a03eaed0a7835ee5 --- /dev/null +++ b/examples/USER/drude/toluene/data.toluene @@ -0,0 +1,24601 @@ +data.lmp create_conf simbox.xyz (Built with Packmol) + +5500 atoms +5500 bonds +6000 angles +6000 dihedrals +1500 impropers + +12 atom types +13 bond types +12 angle types +12 dihedral types +4 improper types + +-18.290765 18.335673 xlo xhi +-18.163588 18.162094 ylo yhi +-18.223046 18.328654 zlo zhi + +Masses + + 1 11.91100 # CAT + 2 11.91100 # CAO + 3 11.91100 # CAM + 4 11.91100 # CAP + 5 11.91100 # CTT + 6 1.00800 # HAT + 7 1.00800 # HT + 8 0.10000 # D_CAT + 9 0.10000 # D_CAO + 10 0.10000 # D_CAM + 11 0.10000 # D_CAP + 12 0.10000 # D_CTT + +Bond Coeffs + + 1 468.9897 1.4000 # CAT-CAO + 2 316.9976 1.5100 # CAT-CTT + 3 468.9897 1.4000 # CAO-CAM + 4 366.9964 1.0800 # CAO-HAT + 5 468.9897 1.4000 # CAM-CAP + 6 366.9964 1.0800 # CAM-HAT + 7 366.9964 1.0800 # CAP-HAT + 8 339.9894 1.0900 # CTT-HT + 9 500.0000 0.0000 # D_CAT + 10 500.0000 0.0000 # D_CAO + 11 500.0000 0.0000 # D_CAM + 12 500.0000 0.0000 # D_CAP + 13 500.0000 0.0000 # D_CTT + +Angle Coeffs + + 1 63.0004 120.0000 # CAT-CAO-CAM + 2 35.0015 120.0000 # CAT-CAO-HAT + 3 49.9988 109.5000 # CAT-CTT-HT + 4 70.0031 120.0000 # CAO-CAT-CTT + 5 63.0004 120.0000 # CAO-CAT-CAO + 6 63.0004 120.0000 # CAO-CAM-CAP + 7 35.0015 120.0000 # CAO-CAM-HAT + 8 35.0015 120.0000 # CAM-CAO-HAT + 9 63.0004 120.0000 # CAM-CAP-CAM + 10 35.0015 120.0000 # CAM-CAP-HAT + 11 35.0015 120.0000 # CAP-CAM-HAT + 12 32.9939 107.8000 # HT-CTT-HT + +Dihedral Coeffs + + 1 0.0000 7.2498 0.0000 0.0000 # CAT-CAO-CAM-CAP + 2 0.0000 7.2498 0.0000 0.0000 # CAT-CAO-CAM-HAT + 3 0.0000 7.2498 0.0000 0.0000 # CAO-CAT-CAO-CAM + 4 0.0000 7.2498 0.0000 0.0000 # CAO-CAT-CAO-HAT + 5 0.0000 7.2498 0.0000 0.0000 # CAO-CAM-CAP-CAM + 6 0.0000 7.2498 0.0000 0.0000 # CAO-CAM-CAP-HAT + 7 0.0000 7.2498 0.0000 0.0000 # CTT-CAT-CAO-CAM + 8 0.0000 7.2498 0.0000 0.0000 # CAM-CAP-CAM-HAT + 9 0.0000 7.2498 0.0000 0.0000 # CAP-CAM-CAO-HAT + 10 0.0000 7.2498 0.0000 0.0000 # CTT-CAT-CAO-HAT + 11 0.0000 7.2498 0.0000 0.0000 # HAT-CAO-CAM-HAT + 12 0.0000 7.2498 0.0000 0.0000 # HAT-CAM-CAP-HAT + +Improper Coeffs + + 1 0.0000 2.1999 0.0000 0.0000 # CAO-CAO-CAT-CTT + 2 0.0000 2.1999 0.0000 0.0000 # CAT-CAM-CAO-HAT + 3 0.0000 2.1999 0.0000 0.0000 # CAO-CAP-CAM-HAT + 4 0.0000 2.1999 0.0000 0.0000 # CAM-CAM-CAP-HAT + +Atoms + + 1 1 1 -2.2897 -3.322109e+00 6.095540e+00 -1.811877e+00 # CAT + 2 1 2 -2.3557 -3.122514e+00 5.166589e+00 -7.836690e-01 # CAO + 3 1 3 -2.3537 -4.088997e+00 5.011926e+00 2.173260e-01 # CAM + 4 1 4 -2.3627 -5.255074e+00 5.786214e+00 1.901130e-01 # CAP + 5 1 3 -2.3537 -5.454669e+00 6.715166e+00 -8.380940e-01 # CAM + 6 1 2 -2.3557 -4.488187e+00 6.869829e+00 -1.839089e+00 # CAO + 7 1 5 -2.4057 -2.279689e+00 6.262356e+00 -2.891521e+00 # CTT + 8 1 6 0.1480 -2.222969e+00 4.569281e+00 -7.626760e-01 # HAT + 9 1 6 0.1480 -3.935023e+00 4.295306e+00 1.010515e+00 # HAT + 10 1 6 0.1480 -6.000647e+00 5.666903e+00 9.623090e-01 # HAT + 11 1 6 0.1480 -6.354215e+00 7.312474e+00 -8.590870e-01 # HAT + 12 1 6 0.1480 -4.642160e+00 7.586449e+00 -2.632278e+00 # HAT + 13 1 7 0.0920 -1.760670e+00 5.316298e+00 -3.045455e+00 # HT + 14 1 7 0.0920 -2.762956e+00 6.566329e+00 -3.820043e+00 # HT + 15 1 7 0.0920 -1.561895e+00 7.025026e+00 -2.589519e+00 # HT + 16 2 1 -2.2897 1.330080e+01 1.242859e+01 -6.628229e+00 # CAT + 17 2 2 -2.3557 1.309005e+01 1.275263e+01 -7.973808e+00 # CAO + 18 2 3 -2.3537 1.378722e+01 1.381879e+01 -8.554560e+00 # CAM + 19 2 4 -2.3627 1.469514e+01 1.456090e+01 -7.789733e+00 # CAP + 20 2 3 -2.3537 1.490588e+01 1.423686e+01 -6.444154e+00 # CAM + 21 2 2 -2.3557 1.420871e+01 1.317071e+01 -5.863402e+00 # CAO + 22 2 5 -2.4057 1.254886e+01 1.127867e+01 -6.001846e+00 # CTT + 23 2 6 0.1480 1.238967e+01 1.218015e+01 -8.563818e+00 # HAT + 24 2 6 0.1480 1.362465e+01 1.406876e+01 -9.592579e+00 # HAT + 25 2 6 0.1480 1.523295e+01 1.538336e+01 -8.237742e+00 # HAT + 26 2 6 0.1480 1.560627e+01 1.480935e+01 -5.854145e+00 # HAT + 27 2 6 0.1480 1.437129e+01 1.292073e+01 -4.825384e+00 # HAT + 28 2 7 0.0920 1.233441e+01 1.052720e+01 -6.761720e+00 # HT + 29 2 7 0.0920 1.315541e+01 1.083403e+01 -5.212864e+00 # HT + 30 2 7 0.0920 1.161319e+01 1.164352e+01 -5.578156e+00 # HT + 31 3 1 -2.2897 -1.408348e+01 5.594982e+00 -2.513424e+00 # CAT + 32 3 2 -2.3557 -1.291948e+01 5.491245e+00 -1.742491e+00 # CAO + 33 3 3 -2.3537 -1.179772e+01 4.828081e+00 -2.254234e+00 # CAM + 34 3 4 -2.3627 -1.183997e+01 4.268654e+00 -3.536909e+00 # CAP + 35 3 3 -2.3537 -1.300397e+01 4.372391e+00 -4.307842e+00 # CAM + 36 3 2 -2.3557 -1.412572e+01 5.035554e+00 -3.796099e+00 # CAO + 37 3 5 -2.4057 -1.529337e+01 6.310251e+00 -1.961473e+00 # CTT + 38 3 6 0.1480 -1.288688e+01 5.922803e+00 -7.529990e-01 # HAT + 39 3 6 0.1480 -1.089978e+01 4.748056e+00 -1.659514e+00 # HAT + 40 3 6 0.1480 -1.097462e+01 3.757070e+00 -3.931682e+00 # HAT + 41 3 6 0.1480 -1.303656e+01 3.940832e+00 -5.297334e+00 # HAT + 42 3 6 0.1480 -1.502367e+01 5.115579e+00 -4.390819e+00 # HAT + 43 3 7 0.0920 -1.497146e+01 7.091848e+00 -1.273301e+00 # HT + 44 3 7 0.0920 -1.585674e+01 6.757410e+00 -2.780472e+00 # HT + 45 3 7 0.0920 -1.592651e+01 5.598550e+00 -1.431652e+00 # HT + 46 4 1 -2.2897 9.996776e+00 -8.572805e+00 1.865019e+00 # CAT + 47 4 2 -2.3557 1.107481e+01 -8.713030e+00 9.828700e-01 # CAO + 48 4 3 -2.3537 1.095335e+01 -8.284936e+00 -3.445280e-01 # CAM + 49 4 4 -2.3627 9.753863e+00 -7.716618e+00 -7.897760e-01 # CAP + 50 4 3 -2.3537 8.675833e+00 -7.576394e+00 9.237300e-02 # CAM + 51 4 2 -2.3557 8.797289e+00 -8.004487e+00 1.419771e+00 # CAO + 52 4 5 -2.4057 1.012777e+01 -9.034534e+00 3.296712e+00 # CTT + 53 4 6 0.1480 1.200012e+01 -9.151446e+00 1.326347e+00 # HAT + 54 4 6 0.1480 1.178497e+01 -8.393110e+00 -1.025043e+00 # HAT + 55 4 6 0.1480 9.660168e+00 -7.386375e+00 -1.813769e+00 # HAT + 56 4 6 0.1480 7.750514e+00 -7.137977e+00 -2.511040e-01 # HAT + 57 4 6 0.1480 7.965665e+00 -7.896313e+00 2.100286e+00 # HAT + 58 4 7 0.0920 1.116573e+01 -8.940268e+00 3.615892e+00 # HT + 59 4 7 0.0920 9.494223e+00 -8.420259e+00 3.936540e+00 # HT + 60 4 7 0.0920 9.818074e+00 -1.007685e+01 3.372648e+00 # HT + 61 5 1 -2.2897 9.714973e+00 7.617683e+00 -7.105923e+00 # CAT + 62 5 2 -2.3557 9.300090e+00 8.888751e+00 -7.520961e+00 # CAO + 63 5 3 -2.3537 1.015024e+01 9.682967e+00 -8.299714e+00 # CAM + 64 5 4 -2.3627 1.141528e+01 9.206115e+00 -8.663429e+00 # CAP + 65 5 3 -2.3537 1.183017e+01 7.935046e+00 -8.248390e+00 # CAM + 66 5 2 -2.3557 1.098001e+01 7.140830e+00 -7.469638e+00 # CAO + 67 5 5 -2.4057 8.798020e+00 6.761064e+00 -6.265982e+00 # CTT + 68 5 6 0.1480 8.324203e+00 9.256609e+00 -7.240381e+00 # HAT + 69 5 6 0.1480 9.830193e+00 1.066351e+01 -8.619887e+00 # HAT + 70 5 6 0.1480 1.207112e+01 9.818796e+00 -9.264181e+00 # HAT + 71 5 6 0.1480 1.280606e+01 7.567189e+00 -8.528971e+00 # HAT + 72 5 6 0.1480 1.130007e+01 6.160292e+00 -7.149465e+00 # HAT + 73 5 7 0.0920 7.760789e+00 6.991484e+00 -6.509210e+00 # HT + 74 5 7 0.0920 8.993707e+00 5.708661e+00 -6.471543e+00 # HT + 75 5 7 0.0920 8.976715e+00 6.963813e+00 -5.210018e+00 # HT + 76 6 1 -2.2897 -1.352073e+01 1.296150e+01 1.439885e+01 # CAT + 77 6 2 -2.3557 -1.303733e+01 1.426398e+01 1.422604e+01 # CAO + 78 6 3 -2.3537 -1.167562e+01 1.453488e+01 1.440593e+01 # CAM + 79 6 4 -2.3627 -1.079731e+01 1.350329e+01 1.475863e+01 # CAP + 80 6 3 -2.3537 -1.128071e+01 1.220081e+01 1.493144e+01 # CAM + 81 6 2 -2.3557 -1.264242e+01 1.192991e+01 1.475155e+01 # CAO + 82 6 5 -2.4057 -1.498943e+01 1.266933e+01 1.420482e+01 # CTT + 83 6 6 0.1480 -1.371488e+01 1.505978e+01 1.395396e+01 # HAT + 84 6 6 0.1480 -1.130271e+01 1.553965e+01 1.427262e+01 # HAT + 85 6 6 0.1480 -9.746848e+00 1.371226e+01 1.489741e+01 # HAT + 86 6 6 0.1480 -1.060316e+01 1.140501e+01 1.520352e+01 # HAT + 87 6 6 0.1480 -1.301533e+01 1.092514e+01 1.488485e+01 # HAT + 88 6 7 0.0920 -1.540316e+01 1.335789e+01 1.346806e+01 # HT + 89 6 7 0.0920 -1.511334e+01 1.164488e+01 1.385374e+01 # HT + 90 6 7 0.0920 -1.551350e+01 1.279400e+01 1.515240e+01 # HT + 91 7 1 -2.2897 4.518322e+00 6.121948e+00 -1.516985e+01 # CAT + 92 7 2 -2.3557 4.488764e+00 7.521332e+00 -1.519903e+01 # CAO + 93 7 3 -2.3537 5.681482e+00 8.244300e+00 -1.532045e+01 # CAM + 94 7 4 -2.3627 6.903755e+00 7.567885e+00 -1.541269e+01 # CAP + 95 7 3 -2.3537 6.933312e+00 6.168501e+00 -1.538351e+01 # CAM + 96 7 2 -2.3557 5.740596e+00 5.445533e+00 -1.526209e+01 # CAO + 97 7 5 -2.4057 3.231892e+00 5.342175e+00 -1.503889e+01 # CTT + 98 7 6 0.1480 3.545868e+00 8.043138e+00 -1.512787e+01 # HAT + 99 7 6 0.1480 5.658680e+00 9.323825e+00 -1.534296e+01 # HAT + 100 7 6 0.1480 7.823851e+00 8.125604e+00 -1.550636e+01 # HAT + 101 7 6 0.1480 7.876210e+00 5.646695e+00 -1.545467e+01 # HAT + 102 7 6 0.1480 5.763397e+00 4.366008e+00 -1.523958e+01 # HAT + 103 7 7 0.0920 2.417503e+00 5.904391e+00 -1.549582e+01 # HT + 104 7 7 0.0920 3.336239e+00 4.380933e+00 -1.554210e+01 # HT + 105 7 7 0.0920 3.011997e+00 5.177518e+00 -1.398408e+01 # HT + 106 8 1 -2.2897 -5.377166e+00 5.156898e+00 9.712011e+00 # CAT + 107 8 2 -2.3557 -4.563142e+00 4.268089e+00 1.042432e+01 # CAO + 108 8 3 -2.3537 -4.033520e+00 3.139720e+00 9.786916e+00 # CAM + 109 8 4 -2.3627 -4.317922e+00 2.900160e+00 8.437203e+00 # CAP + 110 8 3 -2.3537 -5.131946e+00 3.788968e+00 7.724894e+00 # CAM + 111 8 2 -2.3557 -5.661568e+00 4.917337e+00 8.362297e+00 # CAO + 112 8 5 -2.4057 -5.948401e+00 6.373924e+00 1.039950e+01 # CTT + 113 8 6 0.1480 -4.343746e+00 4.452893e+00 1.146553e+01 # HAT + 114 8 6 0.1480 -3.405558e+00 2.454068e+00 1.033641e+01 # HAT + 115 8 6 0.1480 -3.909356e+00 2.029703e+00 7.945491e+00 # HAT + 116 8 6 0.1480 -5.351342e+00 3.604164e+00 6.683686e+00 # HAT + 117 8 6 0.1480 -6.289530e+00 5.602989e+00 7.812802e+00 # HAT + 118 8 7 0.0920 -5.268241e+00 6.700153e+00 1.118630e+01 # HT + 119 8 7 0.0920 -6.074391e+00 7.176645e+00 9.672953e+00 # HT + 120 8 7 0.0920 -6.915505e+00 6.124740e+00 1.083621e+01 # HT + 121 9 1 -2.2897 -1.150352e+01 -2.635798e+00 -5.817707e+00 # CAT + 122 9 2 -2.3557 -1.078710e+01 -1.579569e+00 -6.393141e+00 # CAO + 123 9 3 -2.3537 -1.059426e+01 -1.537647e+00 -7.779162e+00 # CAM + 124 9 4 -2.3627 -1.111783e+01 -2.551955e+00 -8.589748e+00 # CAP + 125 9 3 -2.3537 -1.183425e+01 -3.608184e+00 -8.014314e+00 # CAM + 126 9 2 -2.3557 -1.202709e+01 -3.650106e+00 -6.628294e+00 # CAO + 127 9 5 -2.4057 -1.171151e+01 -2.681014e+00 -4.322784e+00 # CTT + 128 9 6 0.1480 -1.038320e+01 -7.971030e-01 -5.767832e+00 # HAT + 129 9 6 0.1480 -1.004159e+01 -7.228420e-01 -8.223068e+00 # HAT + 130 9 6 0.1480 -1.096906e+01 -2.519615e+00 -9.658965e+00 # HAT + 131 9 6 0.1480 -1.223815e+01 -4.390650e+00 -8.639624e+00 # HAT + 132 9 6 0.1480 -1.257976e+01 -4.464911e+00 -6.184387e+00 # HAT + 133 9 7 0.0920 -1.174239e+01 -1.665163e+00 -3.928835e+00 # HT + 134 9 7 0.0920 -1.265244e+01 -3.184759e+00 -4.101417e+00 # HT + 135 9 7 0.0920 -1.089007e+01 -3.225804e+00 -3.857451e+00 # HT + 136 10 1 -2.2897 1.392120e+01 -2.108610e+00 -1.308417e+01 # CAT + 137 10 2 -2.3557 1.254408e+01 -2.352254e+00 -1.301957e+01 # CAO + 138 10 3 -2.3537 1.197493e+01 -2.844561e+00 -1.183901e+01 # CAM + 139 10 4 -2.3627 1.278291e+01 -3.093223e+00 -1.072306e+01 # CAP + 140 10 3 -2.3537 1.416003e+01 -2.849579e+00 -1.078767e+01 # CAM + 141 10 2 -2.3557 1.472917e+01 -2.357272e+00 -1.196822e+01 # CAO + 142 10 5 -2.4057 1.453506e+01 -1.577622e+00 -1.435748e+01 # CTT + 143 10 6 0.1480 1.192078e+01 -2.160429e+00 -1.388044e+01 # HAT + 144 10 6 0.1480 1.091258e+01 -3.032515e+00 -1.178917e+01 # HAT + 145 10 6 0.1480 1.234385e+01 -3.473003e+00 -9.812350e+00 # HAT + 146 10 6 0.1480 1.478333e+01 -3.041404e+00 -9.926794e+00 # HAT + 147 10 6 0.1480 1.579153e+01 -2.169318e+00 -1.201806e+01 # HAT + 148 10 7 0.0920 1.380371e+01 -9.669060e-01 -1.488687e+01 # HT + 149 10 7 0.0920 1.540739e+01 -9.705890e-01 -1.411528e+01 # HT + 150 10 7 0.0920 1.483784e+01 -2.411529e+00 -1.499075e+01 # HT + 151 11 1 -2.2897 1.483606e+01 -2.727292e+00 -5.740444e+00 # CAT + 152 11 2 -2.3557 1.468234e+01 -3.925798e+00 -5.033370e+00 # CAO + 153 11 3 -2.3537 1.473882e+01 -3.925451e+00 -3.634509e+00 # CAM + 154 11 4 -2.3627 1.494901e+01 -2.726598e+00 -2.942723e+00 # CAP + 155 11 3 -2.3537 1.510273e+01 -1.528091e+00 -3.649797e+00 # CAM + 156 11 2 -2.3557 1.504626e+01 -1.528438e+00 -5.048657e+00 # CAO + 157 11 5 -2.4057 1.477515e+01 -2.727666e+00 -7.249214e+00 # CTT + 158 11 6 0.1480 1.452019e+01 -4.850628e+00 -5.567034e+00 # HAT + 159 11 6 0.1480 1.462023e+01 -4.850013e+00 -3.089052e+00 # HAT + 160 11 6 0.1480 1.499258e+01 -2.726330e+00 -1.863602e+00 # HAT + 161 11 6 0.1480 1.526488e+01 -6.032610e-01 -3.116133e+00 # HAT + 162 11 6 0.1480 1.516484e+01 -6.038770e-01 -5.594114e+00 # HAT + 163 11 7 0.0920 1.411943e+01 -3.530317e+00 -7.586688e+00 # HT + 164 11 7 0.0920 1.438651e+01 -1.770862e+00 -7.597908e+00 # HT + 165 11 7 0.0920 1.577547e+01 -2.882092e+00 -7.653708e+00 # HT + 166 12 1 -2.2897 -1.418351e+01 1.029711e+01 -6.488122e+00 # CAT + 167 12 2 -2.3557 -1.308377e+01 1.038532e+01 -5.626265e+00 # CAO + 168 12 3 -2.3537 -1.268345e+01 9.266821e+00 -4.885525e+00 # CAM + 169 12 4 -2.3627 -1.338286e+01 8.060110e+00 -5.006642e+00 # CAP + 170 12 3 -2.3537 -1.448259e+01 7.971898e+00 -5.868499e+00 # CAM + 171 12 2 -2.3557 -1.488292e+01 9.090399e+00 -6.609239e+00 # CAO + 172 12 5 -2.4057 -1.461529e+01 1.150349e+01 -7.287063e+00 # CTT + 173 12 6 0.1480 -1.254422e+01 1.131621e+01 -5.532832e+00 # HAT + 174 12 6 0.1480 -1.183508e+01 9.334869e+00 -4.220664e+00 # HAT + 175 12 6 0.1480 -1.307404e+01 7.197266e+00 -4.435213e+00 # HAT + 176 12 6 0.1480 -1.502214e+01 7.041006e+00 -5.961931e+00 # HAT + 177 12 6 0.1480 -1.573129e+01 9.022350e+00 -7.274100e+00 # HAT + 178 12 7 0.0920 -1.374758e+01 1.212724e+01 -7.501845e+00 # HT + 179 12 7 0.0920 -1.506800e+01 1.117687e+01 -8.223263e+00 # HT + 180 12 7 0.0920 -1.534240e+01 1.207844e+01 -6.713621e+00 # HT + 181 13 1 -2.2897 -4.403558e+00 -1.346616e+01 -9.613074e+00 # CAT + 182 13 2 -2.3557 -5.060220e+00 -1.343664e+01 -8.376982e+00 # CAO + 183 13 3 -2.3537 -4.680611e+00 -1.432230e+01 -7.361350e+00 # CAM + 184 13 4 -2.3627 -3.644342e+00 -1.523747e+01 -7.581810e+00 # CAP + 185 13 3 -2.3537 -2.987680e+00 -1.526699e+01 -8.817903e+00 # CAM + 186 13 2 -2.3557 -3.367288e+00 -1.438133e+01 -9.833535e+00 # CAO + 187 13 5 -2.4057 -4.812992e+00 -1.251091e+01 -1.070851e+01 # CTT + 188 13 6 0.1480 -5.859628e+00 -1.273065e+01 -8.206913e+00 # HAT + 189 13 6 0.1480 -5.187179e+00 -1.429953e+01 -6.407793e+00 # HAT + 190 13 6 0.1480 -3.351501e+00 -1.592069e+01 -6.798323e+00 # HAT + 191 13 6 0.1480 -2.188271e+00 -1.597298e+01 -8.987972e+00 # HAT + 192 13 6 0.1480 -2.860720e+00 -1.440410e+01 -1.078709e+01 # HAT + 193 13 7 0.0920 -5.192471e+00 -1.159020e+01 -1.026534e+01 # HT + 194 13 7 0.0920 -3.950005e+00 -1.228352e+01 -1.133432e+01 # HT + 195 13 7 0.0920 -5.592474e+00 -1.296848e+01 -1.131772e+01 # HT + 196 14 1 -2.2897 1.813791e+00 3.337542e+00 -6.732800e-01 # CAT + 197 14 2 -2.3557 1.154851e+00 2.140895e+00 -9.796040e-01 # CAO + 198 14 3 -2.3537 3.310130e-01 2.064694e+00 -2.108978e+00 # CAM + 199 14 4 -2.3627 1.661160e-01 3.185139e+00 -2.932027e+00 # CAP + 200 14 3 -2.3537 8.250570e-01 4.381786e+00 -2.625703e+00 # CAM + 201 14 2 -2.3557 1.648894e+00 4.457987e+00 -1.496330e+00 # CAO + 202 14 5 -2.4057 2.702359e+00 3.419730e+00 5.448300e-01 # CTT + 203 14 6 0.1480 1.282057e+00 1.276552e+00 -3.446800e-01 # HAT + 204 14 6 0.1480 -1.773120e-01 1.141567e+00 -2.345285e+00 # HAT + 205 14 6 0.1480 -4.694160e-01 3.126356e+00 -3.803259e+00 # HAT + 206 14 6 0.1480 6.978500e-01 5.246130e+00 -3.260628e+00 # HAT + 207 14 6 0.1480 2.157219e+00 5.381115e+00 -1.260023e+00 # HAT + 208 14 7 0.0920 3.137146e+00 2.440404e+00 7.447830e-01 # HT + 209 14 7 0.0920 3.499731e+00 4.140949e+00 3.655510e-01 # HT + 210 14 7 0.0920 2.112529e+00 3.737249e+00 1.404703e+00 # HT + 211 15 1 -2.2897 -1.490141e+01 -1.346290e+01 -7.801144e+00 # CAT + 212 15 2 -2.3557 -1.494447e+01 -1.206668e+01 -7.894572e+00 # CAO + 213 15 3 -2.3537 -1.510236e+01 -1.145320e+01 -9.143055e+00 # CAM + 214 15 4 -2.3627 -1.521717e+01 -1.223593e+01 -1.029811e+01 # CAP + 215 15 3 -2.3537 -1.517411e+01 -1.363214e+01 -1.020468e+01 # CAM + 216 15 2 -2.3557 -1.501623e+01 -1.424563e+01 -8.956200e+00 # CAO + 217 15 5 -2.4057 -1.473112e+01 -1.412459e+01 -6.454567e+00 # CTT + 218 15 6 0.1480 -1.485590e+01 -1.146287e+01 -7.003530e+00 # HAT + 219 15 6 0.1480 -1.513558e+01 -1.037612e+01 -9.215127e+00 # HAT + 220 15 6 0.1480 -1.533897e+01 -1.176267e+01 -1.126122e+01 # HAT + 221 15 6 0.1480 -1.526268e+01 -1.423596e+01 -1.109572e+01 # HAT + 222 15 6 0.1480 -1.498301e+01 -1.532271e+01 -8.884128e+00 # HAT + 223 15 7 0.0920 -1.517400e+01 -1.349626e+01 -5.681803e+00 # HT + 224 15 7 0.0920 -1.522666e+01 -1.509541e+01 -6.460946e+00 # HT + 225 15 7 0.0920 -1.366962e+01 -1.426041e+01 -6.247539e+00 # HT + 226 16 1 -2.2897 -1.304159e+00 -2.149027e+00 -8.322736e+00 # CAT + 227 16 2 -2.3557 -3.711000e-02 -1.761204e+00 -7.870871e+00 # CAO + 228 16 3 -2.3537 6.666540e-01 -2.576093e+00 -6.976069e+00 # CAM + 229 16 4 -2.3627 1.033700e-01 -3.778805e+00 -6.533131e+00 # CAP + 230 16 3 -2.3537 -1.163679e+00 -4.166628e+00 -6.984995e+00 # CAM + 231 16 2 -2.3557 -1.867443e+00 -3.351740e+00 -7.879797e+00 # CAO + 232 16 5 -2.4057 -2.063219e+00 -1.270111e+00 -9.287844e+00 # CTT + 233 16 6 0.1480 3.974230e-01 -8.333980e-01 -8.212566e+00 # HAT + 234 16 6 0.1480 1.644091e+00 -2.276916e+00 -6.627488e+00 # HAT + 235 16 6 0.1480 6.462740e-01 -4.407434e+00 -5.842854e+00 # HAT + 236 16 6 0.1480 -1.598212e+00 -5.094436e+00 -6.643300e+00 # HAT + 237 16 6 0.1480 -2.844880e+00 -3.650918e+00 -8.228378e+00 # HAT + 238 16 7 0.0920 -1.357992e+00 -7.215660e-01 -9.912227e+00 # HT + 239 16 7 0.0920 -2.701298e+00 -1.888882e+00 -9.918778e+00 # HT + 240 16 7 0.0920 -2.679075e+00 -5.645350e-01 -8.730185e+00 # HT + 241 17 1 -2.2897 -7.611989e+00 -7.448325e+00 -1.200176e+01 # CAT + 242 17 2 -2.3557 -6.822933e+00 -8.246950e+00 -1.116535e+01 # CAO + 243 17 3 -2.3537 -5.698847e+00 -7.701741e+00 -1.053354e+01 # CAM + 244 17 4 -2.3627 -5.363817e+00 -6.357907e+00 -1.073815e+01 # CAP + 245 17 3 -2.3537 -6.152873e+00 -5.559282e+00 -1.157457e+01 # CAM + 246 17 2 -2.3557 -7.276959e+00 -6.104491e+00 -1.220637e+01 # CAO + 247 17 5 -2.4057 -8.824397e+00 -8.036372e+00 -1.268321e+01 # CTT + 248 17 6 0.1480 -7.081385e+00 -9.283622e+00 -1.100751e+01 # HAT + 249 17 6 0.1480 -5.090147e+00 -8.317823e+00 -9.888309e+00 # HAT + 250 17 6 0.1480 -4.496664e+00 -5.937317e+00 -1.025076e+01 # HAT + 251 17 6 0.1480 -5.894421e+00 -4.522610e+00 -1.173241e+01 # HAT + 252 17 6 0.1480 -7.885659e+00 -5.488409e+00 -1.285160e+01 # HAT + 253 17 7 0.0920 -9.240665e+00 -8.830581e+00 -1.206349e+01 # HT + 254 17 7 0.0920 -9.573881e+00 -7.258201e+00 -1.282751e+01 # HT + 255 17 7 0.0920 -8.535069e+00 -8.445421e+00 -1.365123e+01 # HT + 256 18 1 -2.2897 7.923460e+00 1.302445e+01 1.357670e+00 # CAT + 257 18 2 -2.3557 6.852707e+00 1.375915e+01 8.345080e-01 # CAO + 258 18 3 -2.3537 7.062252e+00 1.463533e+01 -2.371250e-01 # CAM + 259 18 4 -2.3627 8.342551e+00 1.477681e+01 -7.855940e-01 # CAP + 260 18 3 -2.3537 9.413304e+00 1.404211e+01 -2.624310e-01 # CAM + 261 18 2 -2.3557 9.203759e+00 1.316593e+01 8.092010e-01 # CAO + 262 18 5 -2.4057 7.697451e+00 1.207943e+01 2.513502e+00 # CTT + 263 18 6 0.1480 5.865048e+00 1.365001e+01 1.257612e+00 # HAT + 264 18 6 0.1480 6.236242e+00 1.520210e+01 -6.407080e-01 # HAT + 265 18 6 0.1480 8.504200e+00 1.545273e+01 -1.612282e+00 # HAT + 266 18 6 0.1480 1.040096e+01 1.415125e+01 -6.855360e-01 # HAT + 267 18 6 0.1480 1.002977e+01 1.259916e+01 1.212783e+00 # HAT + 268 18 7 0.0920 6.680698e+00 1.168893e+01 2.470753e+00 # HT + 269 18 7 0.0920 8.406167e+00 1.125356e+01 2.452180e+00 # HT + 270 18 7 0.0920 7.842109e+00 1.261265e+01 3.453100e+00 # HT + 271 19 1 -2.2897 -2.186224e+00 -1.425547e+01 -5.395257e+00 # CAT + 272 19 2 -2.3557 -3.218403e+00 -1.332156e+01 -5.245537e+00 # CAO + 273 19 3 -2.3537 -3.525908e+00 -1.244425e+01 -6.292331e+00 # CAM + 274 19 4 -2.3627 -2.801235e+00 -1.250086e+01 -7.488843e+00 # CAP + 275 19 3 -2.3537 -1.769056e+00 -1.343477e+01 -7.638563e+00 # CAM + 276 19 2 -2.3557 -1.461551e+00 -1.431207e+01 -6.591770e+00 # CAO + 277 19 5 -2.4057 -1.854558e+00 -1.520170e+01 -4.266216e+00 # CTT + 278 19 6 0.1480 -3.777437e+00 -1.327789e+01 -4.322513e+00 # HAT + 279 19 6 0.1480 -4.322161e+00 -1.172381e+01 -6.176832e+00 # HAT + 280 19 6 0.1480 -3.038453e+00 -1.182408e+01 -8.296370e+00 # HAT + 281 19 6 0.1480 -1.210022e+00 -1.347844e+01 -8.561588e+00 # HAT + 282 19 6 0.1480 -6.652980e-01 -1.503252e+01 -6.707269e+00 # HAT + 283 19 7 0.0920 -2.754968e+00 -1.540718e+01 -3.687303e+00 # HT + 284 19 7 0.0920 -1.465590e+00 -1.613414e+01 -4.675322e+00 # HT + 285 19 7 0.0920 -1.103360e+00 -1.474780e+01 -3.619859e+00 # HT + 286 20 1 -2.2897 -1.346451e+00 6.661046e+00 8.787523e+00 # CAT + 287 20 2 -2.3557 -6.521460e-01 7.709245e+00 9.403331e+00 # CAO + 288 20 3 -2.3537 5.137470e-01 8.216290e+00 8.817157e+00 # CAM + 289 20 4 -2.3627 9.853350e-01 7.675137e+00 7.615177e+00 # CAP + 290 20 3 -2.3537 2.910300e-01 6.626938e+00 6.999369e+00 # CAM + 291 20 2 -2.3557 -8.748630e-01 6.119893e+00 7.585541e+00 # CAO + 292 20 5 -2.4057 -2.603949e+00 6.114161e+00 9.419752e+00 # CTT + 293 20 6 0.1480 -1.015941e+00 8.126706e+00 1.033057e+01 # HAT + 294 20 6 0.1480 1.049354e+00 9.024901e+00 9.292209e+00 # HAT + 295 20 6 0.1480 1.884738e+00 8.066287e+00 7.162986e+00 # HAT + 296 20 6 0.1480 6.548260e-01 6.209477e+00 6.072126e+00 # HAT + 297 20 6 0.1480 -1.410470e+00 5.311282e+00 7.110489e+00 # HAT + 298 20 7 0.0920 -3.105695e+00 6.906086e+00 9.975816e+00 # HT + 299 20 7 0.0920 -3.269150e+00 5.739638e+00 8.641716e+00 # HT + 300 20 7 0.0920 -2.346023e+00 5.301427e+00 1.009875e+01 # HT + 301 21 1 -2.2897 -6.695500e-01 6.618239e+00 1.261271e+01 # CAT + 302 21 2 -2.3557 1.759880e-01 7.733820e+00 1.258937e+01 # CAO + 303 21 3 -2.3537 -3.674810e-01 9.023277e+00 1.254529e+01 # CAM + 304 21 4 -2.3627 -1.756486e+00 9.197152e+00 1.252454e+01 # CAP + 305 21 3 -2.3537 -2.602023e+00 8.081571e+00 1.254787e+01 # CAM + 306 21 2 -2.3557 -2.058556e+00 6.792114e+00 1.259196e+01 # CAO + 307 21 5 -2.4057 -8.338100e-02 5.227468e+00 1.266026e+01 # CTT + 308 21 6 0.1480 1.247506e+00 7.599688e+00 1.260538e+01 # HAT + 309 21 6 0.1480 2.847910e-01 9.883868e+00 1.252728e+01 # HAT + 310 21 6 0.1480 -2.175733e+00 1.019188e+01 1.249052e+01 # HAT + 311 21 6 0.1480 -3.673543e+00 8.215703e+00 1.253186e+01 # HAT + 312 21 6 0.1480 -2.710827e+00 5.931523e+00 1.260996e+01 # HAT + 313 21 7 0.0920 8.720660e-01 5.253034e+00 1.318426e+01 # HT + 314 21 7 0.0920 -7.678960e-01 4.561903e+00 1.318615e+01 # HT + 315 21 7 0.0920 6.941900e-02 4.862105e+00 1.164475e+01 # HT + 316 22 1 -2.2897 3.267763e+00 -7.412651e+00 -5.063502e+00 # CAT + 317 22 2 -2.3557 4.097818e+00 -7.104204e+00 -3.979127e+00 # CAO + 318 22 3 -2.3537 5.248325e+00 -6.331161e+00 -4.175947e+00 # CAM + 319 22 4 -2.3627 5.568777e+00 -5.866566e+00 -5.457142e+00 # CAP + 320 22 3 -2.3537 4.738722e+00 -6.175013e+00 -6.541517e+00 # CAM + 321 22 2 -2.3557 3.588215e+00 -6.948055e+00 -6.344697e+00 # CAO + 322 22 5 -2.4057 2.026859e+00 -8.246432e+00 -4.851217e+00 # CTT + 323 22 6 0.1480 3.850612e+00 -7.462606e+00 -2.990776e+00 # HAT + 324 22 6 0.1480 5.888653e+00 -6.093216e+00 -3.339430e+00 # HAT + 325 22 6 0.1480 6.456312e+00 -5.270218e+00 -5.608975e+00 # HAT + 326 22 6 0.1480 4.985929e+00 -5.816610e+00 -7.529868e+00 # HAT + 327 22 6 0.1480 2.947887e+00 -7.186000e+00 -7.181215e+00 # HAT + 328 22 7 0.0920 1.642767e+00 -8.077600e+00 -3.845200e+00 # HT + 329 22 7 0.0920 1.268763e+00 -7.963000e+00 -5.581325e+00 # HT + 330 22 7 0.0920 2.272021e+00 -9.301421e+00 -4.973670e+00 # HT + 331 23 1 -2.2897 -1.396646e+01 1.398547e+01 -1.488841e+01 # CAT + 332 23 2 -2.3557 -1.260950e+01 1.432984e+01 -1.488085e+01 # CAO + 333 23 3 -2.3537 -1.163478e+01 1.333847e+01 -1.504552e+01 # CAM + 334 23 4 -2.3627 -1.201703e+01 1.200272e+01 -1.521775e+01 # CAP + 335 23 3 -2.3537 -1.337400e+01 1.165835e+01 -1.522532e+01 # CAM + 336 23 2 -2.3557 -1.434871e+01 1.264972e+01 -1.506065e+01 # CAO + 337 23 5 -2.4057 -1.501776e+01 1.505473e+01 -1.471081e+01 # CTT + 338 23 6 0.1480 -1.231462e+01 1.536028e+01 -1.474798e+01 # HAT + 339 23 6 0.1480 -1.058798e+01 1.360413e+01 -1.503968e+01 # HAT + 340 23 6 0.1480 -1.126511e+01 1.123795e+01 -1.534478e+01 # HAT + 341 23 6 0.1480 -1.366887e+01 1.062792e+01 -1.535819e+01 # HAT + 342 23 6 0.1480 -1.539551e+01 1.238406e+01 -1.506649e+01 # HAT + 343 23 7 0.0920 -1.464775e+01 1.599878e+01 -1.511078e+01 # HT + 344 23 7 0.0920 -1.592418e+01 1.476572e+01 -1.524274e+01 # HT + 345 23 7 0.0920 -1.524129e+01 1.517266e+01 -1.365051e+01 # HT + 346 24 1 -2.2897 7.073328e+00 3.274310e-01 1.124904e+01 # CAT + 347 24 2 -2.3557 6.704396e+00 -8.240710e-01 1.054339e+01 # CAO + 348 24 3 -2.3537 7.426782e+00 -2.011111e+00 1.071397e+01 # CAM + 349 24 4 -2.3627 8.518099e+00 -2.046648e+00 1.159019e+01 # CAP + 350 24 3 -2.3537 8.887030e+00 -8.951470e-01 1.229584e+01 # CAM + 351 24 2 -2.3557 8.164646e+00 2.918920e-01 1.212526e+01 # CAO + 352 24 5 -2.4057 6.294184e+00 1.607737e+00 1.106506e+01 # CTT + 353 24 6 0.1480 5.862523e+00 -7.966560e-01 9.867451e+00 # HAT + 354 24 6 0.1480 7.142177e+00 -2.899412e+00 1.016962e+01 # HAT + 355 24 6 0.1480 9.075368e+00 -2.962365e+00 1.172178e+01 # HAT + 356 24 6 0.1480 9.728904e+00 -9.225620e-01 1.297178e+01 # HAT + 357 24 6 0.1480 8.449250e+00 1.180194e+00 1.266961e+01 # HAT + 358 24 7 0.0920 5.257627e+00 1.371496e+00 1.082456e+01 # HT + 359 24 7 0.0920 6.329323e+00 2.190517e+00 1.198551e+01 # HT + 360 24 7 0.0920 6.732373e+00 2.186707e+00 1.025211e+01 # HT + 361 25 1 -2.2897 1.404970e+01 9.282252e+00 -6.988980e-01 # CAT + 362 25 2 -2.3557 1.397606e+01 8.699221e+00 5.717920e-01 # CAO + 363 25 3 -2.3537 1.297396e+01 9.094110e+00 1.466140e+00 # CAM + 364 25 4 -2.3627 1.204550e+01 1.007203e+01 1.089798e+00 # CAP + 365 25 3 -2.3537 1.211914e+01 1.065506e+01 -1.808920e-01 # CAM + 366 25 2 -2.3557 1.312124e+01 1.026017e+01 -1.075239e+00 # CAO + 367 25 5 -2.4057 1.513054e+01 8.856337e+00 -1.663516e+00 # CTT + 368 25 6 0.1480 1.469230e+01 7.944826e+00 8.621120e-01 # HAT + 369 25 6 0.1480 1.291715e+01 8.644343e+00 2.446386e+00 # HAT + 370 25 6 0.1480 1.127245e+01 1.037666e+01 1.779723e+00 # HAT + 371 25 6 0.1480 1.140290e+01 1.140946e+01 -4.712120e-01 # HAT + 372 25 6 0.1480 1.317805e+01 1.070994e+01 -2.055486e+00 # HAT + 373 25 7 0.0920 1.539497e+01 7.815443e+00 -1.477193e+00 # HT + 374 25 7 0.0920 1.476761e+01 8.961046e+00 -2.685972e+00 # HT + 375 25 7 0.0920 1.601035e+01 9.484634e+00 -1.524685e+00 # HT + 376 26 1 -2.2897 3.982353e+00 5.958042e+00 1.417544e+01 # CAT + 377 26 2 -2.3557 3.685958e+00 6.519328e+00 1.292760e+01 # CAO + 378 26 3 -2.3537 4.184851e+00 7.783769e+00 1.259249e+01 # CAM + 379 26 4 -2.3627 4.980137e+00 8.486925e+00 1.350523e+01 # CAP + 380 26 3 -2.3537 5.276532e+00 7.925639e+00 1.475308e+01 # CAM + 381 26 2 -2.3557 4.777639e+00 6.661198e+00 1.508818e+01 # CAO + 382 26 5 -2.4057 3.444262e+00 4.594252e+00 1.453687e+01 # CTT + 383 26 6 0.1480 3.072452e+00 5.976894e+00 1.222349e+01 # HAT + 384 26 6 0.1480 3.956204e+00 8.216761e+00 1.162987e+01 # HAT + 385 26 6 0.1480 5.364998e+00 9.462351e+00 1.324672e+01 # HAT + 386 26 6 0.1480 5.890039e+00 8.468074e+00 1.545719e+01 # HAT + 387 26 6 0.1480 5.006286e+00 6.228207e+00 1.605080e+01 # HAT + 388 26 7 0.0920 3.334621e+00 3.995093e+00 1.363294e+01 # HT + 389 26 7 0.0920 4.135821e+00 4.099214e+00 1.521862e+01 # HT + 390 26 7 0.0920 2.473367e+00 4.702592e+00 1.502033e+01 # HT + 391 27 1 -2.2897 -8.156929e+00 -6.727910e-01 1.041336e+01 # CAT + 392 27 2 -2.3557 -7.256069e+00 -1.681662e+00 1.005193e+01 # CAO + 393 27 3 -2.3537 -5.889993e+00 -1.394764e+00 9.944572e+00 # CAM + 394 27 4 -2.3627 -5.424776e+00 -9.899400e-02 1.019865e+01 # CAP + 395 27 3 -2.3537 -6.325636e+00 9.098770e-01 1.056008e+01 # CAM + 396 27 2 -2.3557 -7.691711e+00 6.229790e-01 1.066743e+01 # CAO + 397 27 5 -2.4057 -9.630339e+00 -9.822310e-01 1.052914e+01 # CTT + 398 27 6 0.1480 -7.614950e+00 -2.681256e+00 9.855926e+00 # HAT + 399 27 6 0.1480 -5.195044e+00 -2.173036e+00 9.665756e+00 # HAT + 400 27 6 0.1480 -4.370945e+00 1.223280e-01 1.011583e+01 # HAT + 401 27 6 0.1480 -5.966754e+00 1.909471e+00 1.075608e+01 # HAT + 402 27 6 0.1480 -8.386660e+00 1.401251e+00 1.094625e+01 # HAT + 403 27 7 0.0920 -9.761346e+00 -2.022664e+00 1.082653e+01 # HT + 404 27 7 0.0920 -1.008107e+01 -3.312560e-01 1.127826e+01 # HT + 405 27 7 0.0920 -1.011370e+01 -8.164640e-01 9.566345e+00 # HT + 406 28 1 -2.2897 1.090031e+01 5.485730e-01 -1.378836e+00 # CAT + 407 28 2 -2.3557 1.165724e+01 5.792750e-01 -2.015000e-01 # CAO + 408 28 3 -2.3537 1.120518e+01 1.312097e+00 9.024110e-01 # CAM + 409 28 4 -2.3627 9.996198e+00 2.014216e+00 8.289840e-01 # CAP + 410 28 3 -2.3537 9.239272e+00 1.983514e+00 -3.483520e-01 # CAM + 411 28 2 -2.3557 9.691327e+00 1.250693e+00 -1.452262e+00 # CAO + 412 28 5 -2.4057 1.138788e+01 -2.418270e-01 -2.569483e+00 # CTT + 413 28 6 0.1480 1.258988e+01 3.764000e-02 -1.448570e-01 # HAT + 414 28 6 0.1480 1.178909e+01 1.335781e+00 1.810641e+00 # HAT + 415 28 6 0.1480 9.647468e+00 2.579535e+00 1.680573e+00 # HAT + 416 28 6 0.1480 8.306628e+00 2.525149e+00 -4.049940e-01 # HAT + 417 28 6 0.1480 9.107413e+00 1.227009e+00 -2.360493e+00 # HAT + 418 28 7 0.0920 1.197590e+01 -1.092643e+00 -2.225321e+00 # HT + 419 28 7 0.0920 1.053310e+01 -5.998800e-01 -3.143272e+00 # HT + 420 28 7 0.0920 1.200711e+01 3.956780e-01 -3.200549e+00 # HT + 421 29 1 -2.2897 1.363202e+01 -6.775318e+00 -1.215244e+01 # CAT + 422 29 2 -2.3557 1.403126e+01 -7.995461e+00 -1.271088e+01 # CAO + 423 29 3 -2.3537 1.331979e+01 -9.165234e+00 -1.241857e+01 # CAM + 424 29 4 -2.3627 1.220908e+01 -9.114862e+00 -1.156781e+01 # CAP + 425 29 3 -2.3537 1.180984e+01 -7.894719e+00 -1.100937e+01 # CAM + 426 29 2 -2.3557 1.252130e+01 -6.724947e+00 -1.130169e+01 # CAO + 427 29 5 -2.4057 1.439938e+01 -5.513635e+00 -1.246773e+01 # CTT + 428 29 6 0.1480 1.488809e+01 -8.034319e+00 -1.336718e+01 # HAT + 429 29 6 0.1480 1.362778e+01 -1.010649e+01 -1.284936e+01 # HAT + 430 29 6 0.1480 1.166024e+01 -1.001726e+01 -1.134231e+01 # HAT + 431 29 6 0.1480 1.095300e+01 -7.855862e+00 -1.035308e+01 # HAT + 432 29 6 0.1480 1.221331e+01 -5.783694e+00 -1.087089e+01 # HAT + 433 29 7 0.0920 1.483271e+01 -5.590916e+00 -1.346490e+01 # HT + 434 29 7 0.0920 1.372454e+01 -4.658468e+00 -1.243067e+01 # HT + 435 29 7 0.0920 1.519561e+01 -5.379476e+00 -1.173552e+01 # HT + 436 30 1 -2.2897 1.311201e+01 -4.467822e+00 7.465110e+00 # CAT + 437 30 2 -2.3557 1.442032e+01 -4.250114e+00 7.016857e+00 # CAO + 438 30 3 -2.3537 1.493802e+01 -2.950089e+00 6.972985e+00 # CAM + 439 30 4 -2.3627 1.414741e+01 -1.867773e+00 7.377365e+00 # CAP + 440 30 3 -2.3537 1.283910e+01 -2.085480e+00 7.825617e+00 # CAM + 441 30 2 -2.3557 1.232140e+01 -3.385504e+00 7.869490e+00 # CAO + 442 30 5 -2.4057 1.255364e+01 -5.869991e+00 7.512429e+00 # CTT + 443 30 6 0.1480 1.503022e+01 -5.085044e+00 6.704907e+00 # HAT + 444 30 6 0.1480 1.594729e+01 -2.782143e+00 6.627190e+00 # HAT + 445 30 6 0.1480 1.454678e+01 -8.648960e-01 7.343520e+00 # HAT + 446 30 6 0.1480 1.222920e+01 -1.250549e+00 8.137568e+00 # HAT + 447 30 6 0.1480 1.131213e+01 -3.553450e+00 8.215285e+00 # HAT + 448 30 7 0.0920 1.336279e+01 -6.577996e+00 7.691616e+00 # HT + 449 30 7 0.0920 1.182236e+01 -5.943447e+00 8.317375e+00 # HT + 450 30 7 0.0920 1.207213e+01 -6.102132e+00 6.562503e+00 # HT + 451 31 1 -2.2897 -6.823581e+00 1.490997e+01 -8.926240e+00 # CAT + 452 31 2 -2.3557 -7.713620e+00 1.544262e+01 -7.985965e+00 # CAO + 453 31 3 -2.3537 -7.390246e+00 1.541864e+01 -6.624034e+00 # CAM + 454 31 4 -2.3627 -6.176835e+00 1.486200e+01 -6.202379e+00 # CAP + 455 31 3 -2.3537 -5.286797e+00 1.432935e+01 -7.142653e+00 # CAM + 456 31 2 -2.3557 -5.610169e+00 1.435334e+01 -8.504583e+00 # CAO + 457 31 5 -2.4057 -7.172362e+00 1.493584e+01 -1.039518e+01 # CTT + 458 31 6 0.1480 -8.649680e+00 1.587202e+01 -8.311242e+00 # HAT + 459 31 6 0.1480 -8.076848e+00 1.582954e+01 -5.898680e+00 # HAT + 460 31 6 0.1480 -5.927376e+00 1.484350e+01 -5.151746e+00 # HAT + 461 31 6 0.1480 -4.350736e+00 1.389995e+01 -6.817375e+00 # HAT + 462 31 6 0.1480 -4.923568e+00 1.394244e+01 -9.229938e+00 # HAT + 463 31 7 0.0920 -7.801895e+00 1.580069e+01 -1.060450e+01 # HT + 464 31 7 0.0920 -6.258144e+00 1.500125e+01 -1.098512e+01 # HT + 465 31 7 0.0920 -7.709173e+00 1.402426e+01 -1.065779e+01 # HT + 466 32 1 -2.2897 1.411995e+01 1.456169e+01 1.351718e+01 # CAT + 467 32 2 -2.3557 1.297633e+01 1.522716e+01 1.305969e+01 # CAO + 468 32 3 -2.3537 1.266342e+01 1.522396e+01 1.169511e+01 # CAM + 469 32 4 -2.3627 1.349413e+01 1.455529e+01 1.078802e+01 # CAP + 470 32 3 -2.3537 1.463775e+01 1.388982e+01 1.124551e+01 # CAM + 471 32 2 -2.3557 1.495065e+01 1.389302e+01 1.261009e+01 # CAO + 472 32 5 -2.4057 1.445745e+01 1.456514e+01 1.498898e+01 # CTT + 473 32 6 0.1480 1.233550e+01 1.574299e+01 1.375944e+01 # HAT + 474 32 6 0.1480 1.178121e+01 1.573732e+01 1.134219e+01 # HAT + 475 32 6 0.1480 1.325274e+01 1.455282e+01 9.735345e+00 # HAT + 476 32 6 0.1480 1.527858e+01 1.337399e+01 1.054575e+01 # HAT + 477 32 6 0.1480 1.583287e+01 1.337966e+01 1.296301e+01 # HAT + 478 32 7 0.0920 1.353899e+01 1.462655e+01 1.557274e+01 # HT + 479 32 7 0.0920 1.498797e+01 1.364741e+01 1.524277e+01 # HT + 480 32 7 0.0920 1.508934e+01 1.542396e+01 1.521536e+01 # HT + 481 33 1 -2.2897 3.215304e+00 1.411064e+01 -1.236815e+01 # CAT + 482 33 2 -2.3557 3.329978e+00 1.277388e+01 -1.276805e+01 # CAO + 483 33 3 -2.3537 4.588659e+00 1.216269e+01 -1.281470e+01 # CAM + 484 33 4 -2.3627 5.732666e+00 1.288827e+01 -1.246145e+01 # CAP + 485 33 3 -2.3537 5.617992e+00 1.422503e+01 -1.206155e+01 # CAM + 486 33 2 -2.3557 4.359312e+00 1.483621e+01 -1.201490e+01 # CAO + 487 33 5 -2.4057 1.857727e+00 1.476984e+01 -1.231784e+01 # CTT + 488 33 6 0.1480 2.447459e+00 1.221415e+01 -1.304056e+01 # HAT + 489 33 6 0.1480 4.677122e+00 1.113148e+01 -1.312319e+01 # HAT + 490 33 6 0.1480 6.703648e+00 1.241678e+01 -1.249743e+01 # HAT + 491 33 6 0.1480 6.500512e+00 1.478476e+01 -1.178904e+01 # HAT + 492 33 6 0.1480 4.270849e+00 1.586743e+01 -1.170641e+01 # HAT + 493 33 7 0.0920 1.097783e+00 1.402117e+01 -1.209406e+01 # HT + 494 33 7 0.0920 1.853225e+00 1.553475e+01 -1.154131e+01 # HT + 495 33 7 0.0920 1.640808e+00 1.523013e+01 -1.328178e+01 # HT + 496 34 1 -2.2897 3.000548e+00 1.515891e+01 2.865667e+00 # CAT + 497 34 2 -2.3557 2.835921e+00 1.496898e+01 1.488415e+00 # CAO + 498 34 3 -2.3537 1.554469e+00 1.500150e+01 9.255440e-01 # CAM + 499 34 4 -2.3627 4.376440e-01 1.522395e+01 1.739926e+00 # CAP + 500 34 3 -2.3537 6.022710e-01 1.541388e+01 3.117178e+00 # CAM + 501 34 2 -2.3557 1.883722e+00 1.538136e+01 3.680049e+00 # CAO + 502 34 5 -2.4057 4.382685e+00 1.512384e+01 3.472763e+00 # CTT + 503 34 6 0.1480 3.697471e+00 1.479738e+01 8.601770e-01 # HAT + 504 34 6 0.1480 1.427471e+00 1.485498e+01 -1.369080e-01 # HAT + 505 34 6 0.1480 -5.509050e-01 1.524903e+01 1.305711e+00 # HAT + 506 34 6 0.1480 -2.592810e-01 1.558548e+01 3.745416e+00 # HAT + 507 34 6 0.1480 2.010720e+00 1.552788e+01 4.742501e+00 # HAT + 508 34 7 0.0920 5.111052e+00 1.547018e+01 2.739529e+00 # HT + 509 34 7 0.0920 4.412221e+00 1.577283e+01 4.348000e+00 # HT + 510 34 7 0.0920 4.623902e+00 1.410316e+01 3.769617e+00 # HT + 511 35 1 -2.2897 -8.172544e+00 -1.299712e+01 -3.742319e+00 # CAT + 512 35 2 -2.3557 -8.933558e+00 -1.351687e+01 -4.796228e+00 # CAO + 513 35 3 -2.3537 -8.454042e+00 -1.460443e+01 -5.536013e+00 # CAM + 514 35 4 -2.3627 -7.213514e+00 -1.517224e+01 -5.221888e+00 # CAP + 515 35 3 -2.3537 -6.452500e+00 -1.465250e+01 -4.167979e+00 # CAM + 516 35 2 -2.3557 -6.932015e+00 -1.356494e+01 -3.428195e+00 # CAO + 517 35 5 -2.4057 -8.689735e+00 -1.182411e+01 -2.944409e+00 # CTT + 518 35 6 0.1480 -9.890537e+00 -1.307884e+01 -5.038553e+00 # HAT + 519 35 6 0.1480 -9.041110e+00 -1.500537e+01 -6.349028e+00 # HAT + 520 35 6 0.1480 -6.843602e+00 -1.601121e+01 -5.792579e+00 # HAT + 521 35 6 0.1480 -5.495520e+00 -1.509052e+01 -3.925655e+00 # HAT + 522 35 6 0.1480 -6.344947e+00 -1.316399e+01 -2.615180e+00 # HAT + 523 35 7 0.0920 -9.779371e+00 -1.184717e+01 -2.928226e+00 # HT + 524 35 7 0.0920 -8.310411e+00 -1.188245e+01 -1.924208e+00 # HT + 525 35 7 0.0920 -8.353290e+00 -1.089477e+01 -3.403999e+00 # HT + 526 36 1 -2.2897 9.752079e+00 1.395551e+01 1.150840e+01 # CAT + 527 36 2 -2.3557 1.053444e+01 1.379872e+01 1.265876e+01 # CAO + 528 36 3 -2.3537 1.008963e+01 1.431168e+01 1.388310e+01 # CAM + 529 36 4 -2.3627 8.862450e+00 1.498143e+01 1.395708e+01 # CAP + 530 36 3 -2.3537 8.080087e+00 1.513822e+01 1.280672e+01 # CAM + 531 36 2 -2.3557 8.524902e+00 1.462526e+01 1.158238e+01 # CAO + 532 36 5 -2.4057 1.023184e+01 1.340225e+01 1.018786e+01 # CTT + 533 36 6 0.1480 1.148112e+01 1.328206e+01 1.260168e+01 # HAT + 534 36 6 0.1480 1.069316e+01 1.419073e+01 1.477052e+01 # HAT + 535 36 6 0.1480 8.519306e+00 1.537714e+01 1.490157e+01 # HAT + 536 36 6 0.1480 7.133407e+00 1.565488e+01 1.286380e+01 # HAT + 537 36 6 0.1480 7.921365e+00 1.474621e+01 1.069496e+01 # HAT + 538 36 7 0.0920 1.084817e+01 1.252085e+01 1.036500e+01 # HT + 539 36 7 0.0920 9.373337e+00 1.312746e+01 9.575030e+00 # HT + 540 36 7 0.0920 1.082084e+01 1.415850e+01 9.668949e+00 # HT + 541 37 1 -2.2897 6.562359e+00 -9.208247e+00 -1.006677e+01 # CAT + 542 37 2 -2.3557 6.568936e+00 -1.026614e+01 -1.098374e+01 # CAO + 543 37 3 -2.3537 5.360046e+00 -1.078344e+01 -1.146435e+01 # CAM + 544 37 4 -2.3627 4.144580e+00 -1.024286e+01 -1.102799e+01 # CAP + 545 37 3 -2.3537 4.138003e+00 -9.184968e+00 -1.011102e+01 # CAM + 546 37 2 -2.3557 5.346892e+00 -8.667663e+00 -9.630414e+00 # CAO + 547 37 5 -2.4057 7.866232e+00 -8.650297e+00 -9.548406e+00 # CTT + 548 37 6 0.1480 7.506581e+00 -1.068316e+01 -1.132036e+01 # HAT + 549 37 6 0.1480 5.365120e+00 -1.159953e+01 -1.217172e+01 # HAT + 550 37 6 0.1480 3.212008e+00 -1.064192e+01 -1.139874e+01 # HAT + 551 37 6 0.1480 3.200357e+00 -8.767946e+00 -9.774400e+00 # HAT + 552 37 6 0.1480 5.341818e+00 -7.851577e+00 -8.923040e+00 # HAT + 553 37 7 0.0920 8.639165e+00 -8.765964e+00 -1.030821e+01 # HT + 554 37 7 0.0920 7.742290e+00 -7.592822e+00 -9.314982e+00 # HT + 555 37 7 0.0920 8.159786e+00 -9.188772e+00 -8.647312e+00 # HT + 556 38 1 -2.2897 -4.019183e+00 1.916059e+00 -7.112550e-01 # CAT + 557 38 2 -2.3557 -4.483269e+00 1.194991e+00 3.954000e-01 # CAO + 558 38 3 -2.3537 -5.706562e+00 1.531552e+00 9.872470e-01 # CAM + 559 38 4 -2.3627 -6.465768e+00 2.589180e+00 4.724390e-01 # CAP + 560 38 3 -2.3537 -6.001682e+00 3.310248e+00 -6.342160e-01 # CAM + 561 38 2 -2.3557 -4.778390e+00 2.973688e+00 -1.226063e+00 # CAO + 562 38 5 -2.4057 -2.699775e+00 1.553054e+00 -1.349604e+00 # CTT + 563 38 6 0.1480 -3.897596e+00 3.791060e-01 7.925370e-01 # HAT + 564 38 6 0.1480 -6.064571e+00 9.753000e-01 1.840952e+00 # HAT + 565 38 6 0.1480 -7.409451e+00 2.848813e+00 9.290060e-01 # HAT + 566 38 6 0.1480 -6.587355e+00 4.126134e+00 -1.031354e+00 # HAT + 567 38 6 0.1480 -4.420381e+00 3.529940e+00 -2.079768e+00 # HAT + 568 38 7 0.0920 -2.515446e+00 4.862790e-01 -1.222658e+00 # HT + 569 38 7 0.0920 -2.732039e+00 1.791689e+00 -2.412672e+00 # HT + 570 38 7 0.0920 -1.898066e+00 2.118784e+00 -8.749340e-01 # HT + 571 39 1 -2.2897 -1.255099e+01 -1.432022e+01 1.295543e+01 # CAT + 572 39 2 -2.3557 -1.207889e+01 -1.486004e+01 1.415781e+01 # CAO + 573 39 3 -2.3537 -1.070272e+01 -1.490979e+01 1.441019e+01 # CAM + 574 39 4 -2.3627 -9.798659e+00 -1.441972e+01 1.346019e+01 # CAP + 575 39 3 -2.3537 -1.027076e+01 -1.387990e+01 1.225781e+01 # CAM + 576 39 2 -2.3557 -1.164692e+01 -1.383015e+01 1.200543e+01 # CAO + 577 39 5 -2.4057 -1.403528e+01 -1.426656e+01 1.268322e+01 # CTT + 578 39 6 0.1480 -1.277631e+01 -1.523809e+01 1.489067e+01 # HAT + 579 39 6 0.1480 -1.033853e+01 -1.532622e+01 1.533774e+01 # HAT + 580 39 6 0.1480 -8.737046e+00 -1.445810e+01 1.365488e+01 # HAT + 581 39 6 0.1480 -9.573338e+00 -1.350185e+01 1.152495e+01 # HAT + 582 39 6 0.1480 -1.201112e+01 -1.341372e+01 1.107788e+01 # HAT + 583 39 7 0.0920 -1.457458e+01 -1.416682e+01 1.362519e+01 # HT + 584 39 7 0.0920 -1.425755e+01 -1.341097e+01 1.204553e+01 # HT + 585 39 7 0.0920 -1.434667e+01 -1.518312e+01 1.218216e+01 # HT + 586 40 1 -2.2897 -1.288795e+01 -5.477285e+00 -2.280075e+00 # CAT + 587 40 2 -2.3557 -1.196205e+01 -5.955224e+00 -3.215111e+00 # CAO + 588 40 3 -2.3537 -1.236716e+01 -6.864406e+00 -4.199627e+00 # CAM + 589 40 4 -2.3627 -1.369817e+01 -7.295648e+00 -4.249108e+00 # CAP + 590 40 3 -2.3537 -1.462407e+01 -6.817709e+00 -3.314072e+00 # CAM + 591 40 2 -2.3557 -1.421895e+01 -5.908527e+00 -2.329555e+00 # CAO + 592 40 5 -2.4057 -1.245100e+01 -4.496668e+00 -1.218204e+00 # CTT + 593 40 6 0.1480 -1.093527e+01 -5.622551e+00 -3.176941e+00 # HAT + 594 40 6 0.1480 -1.165290e+01 -7.233102e+00 -4.920941e+00 # HAT + 595 40 6 0.1480 -1.401069e+01 -7.997017e+00 -5.008592e+00 # HAT + 596 40 6 0.1480 -1.565084e+01 -7.150382e+00 -3.352242e+00 # HAT + 597 40 6 0.1480 -1.493322e+01 -5.539831e+00 -1.608242e+00 # HAT + 598 40 7 0.0920 -1.163241e+01 -3.886974e+00 -1.600679e+00 # HT + 599 40 7 0.0920 -1.328879e+01 -3.852702e+00 -9.507580e-01 # HT + 600 40 7 0.0920 -1.211595e+01 -5.041457e+00 -3.355690e-01 # HT + 601 41 1 -2.2897 -1.047485e+01 2.136872e+00 -1.505524e+01 # CAT + 602 41 2 -2.3557 -1.086108e+01 8.189820e-01 -1.532726e+01 # CAO + 603 41 3 -2.3537 -1.221469e+01 5.086590e-01 -1.550455e+01 # CAM + 604 41 4 -2.3627 -1.318208e+01 1.516226e+00 -1.540982e+01 # CAP + 605 41 3 -2.3537 -1.279585e+01 2.834115e+00 -1.513780e+01 # CAM + 606 41 2 -2.3557 -1.144224e+01 3.144439e+00 -1.496051e+01 # CAO + 607 41 5 -2.4057 -9.014887e+00 2.471578e+00 -1.486401e+01 # CTT + 608 41 6 0.1480 -1.011481e+01 4.171700e-02 -1.540034e+01 # HAT + 609 41 6 0.1480 -1.251264e+01 -5.079990e-01 -1.571440e+01 # HAT + 610 41 6 0.1480 -1.422630e+01 1.276834e+00 -1.554659e+01 # HAT + 611 41 6 0.1480 -1.354212e+01 3.611381e+00 -1.506472e+01 # HAT + 612 41 6 0.1480 -1.114429e+01 4.161096e+00 -1.475066e+01 # HAT + 613 41 7 0.0920 -8.404664e+00 1.789605e+00 -1.545616e+01 # HT + 614 41 7 0.0920 -8.831185e+00 3.496289e+00 -1.518700e+01 # HT + 615 41 7 0.0920 -8.753430e+00 2.370791e+00 -1.381065e+01 # HT + 616 42 1 -2.2897 -1.318090e+01 7.763980e+00 -1.044097e+01 # CAT + 617 42 2 -2.3557 -1.250450e+01 8.983816e+00 -1.056132e+01 # CAO + 618 42 3 -2.3537 -1.111011e+01 9.001788e+00 -1.068521e+01 # CAM + 619 42 4 -2.3627 -1.039212e+01 7.799925e+00 -1.068875e+01 # CAP + 620 42 3 -2.3537 -1.106852e+01 6.580089e+00 -1.056841e+01 # CAM + 621 42 2 -2.3557 -1.246291e+01 6.562116e+00 -1.044452e+01 # CAO + 622 42 5 -2.4057 -1.468485e+01 7.744595e+00 -1.030735e+01 # CTT + 623 42 6 0.1480 -1.305838e+01 9.910968e+00 -1.055858e+01 # HAT + 624 42 6 0.1480 -1.058831e+01 9.942805e+00 -1.077804e+01 # HAT + 625 42 6 0.1480 -9.316443e+00 7.813790e+00 -1.078433e+01 # HAT + 626 42 6 0.1480 -1.051464e+01 5.652937e+00 -1.057115e+01 # HAT + 627 42 6 0.1480 -1.298470e+01 5.621100e+00 -1.035168e+01 # HAT + 628 42 7 0.0920 -1.510759e+01 8.603158e+00 -1.082914e+01 # HT + 629 42 7 0.0920 -1.507707e+01 6.825840e+00 -1.074342e+01 # HT + 630 42 7 0.0920 -1.495707e+01 7.790774e+00 -9.252900e+00 # HT + 631 43 1 -2.2897 1.392383e+00 -3.646782e+00 -9.449799e+00 # CAT + 632 43 2 -2.3557 1.455034e+00 -4.722187e+00 -8.555607e+00 # CAO + 633 43 3 -2.3537 3.450150e-01 -5.558685e+00 -8.387891e+00 # CAM + 634 43 4 -2.3627 -8.276550e-01 -5.319778e+00 -9.114367e+00 # CAP + 635 43 3 -2.3537 -8.903060e-01 -4.244373e+00 -1.000856e+01 # CAM + 636 43 2 -2.3557 2.197120e-01 -3.407875e+00 -1.017628e+01 # CAO + 637 43 5 -2.4057 2.589618e+00 -2.744559e+00 -9.630692e+00 # CTT + 638 43 6 0.1480 2.359665e+00 -4.906487e+00 -7.995182e+00 # HAT + 639 43 6 0.1480 3.933460e-01 -6.388283e+00 -7.698086e+00 # HAT + 640 43 6 0.1480 -1.683956e+00 -5.965077e+00 -8.984987e+00 # HAT + 641 43 6 0.1480 -1.794938e+00 -4.060074e+00 -1.056898e+01 # HAT + 642 43 6 0.1480 1.713810e-01 -2.578277e+00 -1.086608e+01 # HAT + 643 43 7 0.0920 3.503212e+00 -3.313048e+00 -9.456719e+00 # HT + 644 43 7 0.0920 2.596593e+00 -2.348457e+00 -1.064615e+01 # HT + 645 43 7 0.0920 2.534506e+00 -1.919975e+00 -8.919972e+00 # HT + 646 44 1 -2.2897 1.212087e+01 1.338823e+01 -1.297049e+01 # CAT + 647 44 2 -2.3557 1.181938e+01 1.346860e+01 -1.433527e+01 # CAO + 648 44 3 -2.3537 1.205557e+01 1.236992e+01 -1.517021e+01 # CAM + 649 44 4 -2.3627 1.259324e+01 1.119087e+01 -1.464036e+01 # CAP + 650 44 3 -2.3537 1.289474e+01 1.111050e+01 -1.327557e+01 # CAM + 651 44 2 -2.3557 1.265855e+01 1.220918e+01 -1.244064e+01 # CAO + 652 44 5 -2.4057 1.186613e+01 1.457323e+01 -1.206995e+01 # CTT + 653 44 6 0.1480 1.140460e+01 1.437815e+01 -1.474401e+01 # HAT + 654 44 6 0.1480 1.182299e+01 1.243192e+01 -1.622305e+01 # HAT + 655 44 6 0.1480 1.277544e+01 1.034332e+01 -1.528445e+01 # HAT + 656 44 6 0.1480 1.330951e+01 1.020094e+01 -1.286683e+01 # HAT + 657 44 6 0.1480 1.289113e+01 1.214717e+01 -1.138780e+01 # HAT + 658 44 7 0.0920 1.102267e+01 1.514718e+01 -1.245369e+01 # HT + 659 44 7 0.0920 1.163854e+01 1.422287e+01 -1.106319e+01 # HT + 660 44 7 0.0920 1.275302e+01 1.520627e+01 -1.204197e+01 # HT + 661 45 1 -2.2897 7.711795e+00 -2.613003e+00 -1.408413e+01 # CAT + 662 45 2 -2.3557 7.279556e+00 -1.455632e+00 -1.474266e+01 # CAO + 663 45 3 -2.3537 6.088643e+00 -8.315960e-01 -1.435239e+01 # CAM + 664 45 4 -2.3627 5.329970e+00 -1.364931e+00 -1.330360e+01 # CAP + 665 45 3 -2.3537 5.762210e+00 -2.522303e+00 -1.264507e+01 # CAM + 666 45 2 -2.3557 6.953122e+00 -3.146339e+00 -1.303533e+01 # CAO + 667 45 5 -2.4057 8.996279e+00 -3.286071e+00 -1.450506e+01 # CTT + 668 45 6 0.1480 7.864817e+00 -1.044202e+00 -1.555173e+01 # HAT + 669 45 6 0.1480 5.755201e+00 6.123400e-02 -1.486040e+01 # HAT + 670 45 6 0.1480 4.411266e+00 -8.835320e-01 -1.300254e+01 # HAT + 671 45 6 0.1480 5.176947e+00 -2.933733e+00 -1.183600e+01 # HAT + 672 45 6 0.1480 7.286563e+00 -4.039169e+00 -1.252733e+01 # HAT + 673 45 7 0.0920 9.686659e+00 -2.539419e+00 -1.489747e+01 # HT + 674 45 7 0.0920 9.447085e+00 -3.780252e+00 -1.364444e+01 # HT + 675 45 7 0.0920 8.783621e+00 -4.025087e+00 -1.527754e+01 # HT + 676 46 1 -2.2897 4.820759e+00 -1.500242e+01 7.600837e+00 # CAT + 677 46 2 -2.3557 4.647658e+00 -1.514626e+01 6.219047e+00 # CAO + 678 46 3 -2.3537 5.751327e+00 -1.505734e+01 5.362305e+00 # CAM + 679 46 4 -2.3627 7.028096e+00 -1.482456e+01 5.887353e+00 # CAP + 680 46 3 -2.3537 7.201197e+00 -1.468071e+01 7.269143e+00 # CAM + 681 46 2 -2.3557 6.097529e+00 -1.476965e+01 8.125885e+00 # CAO + 682 46 5 -2.4057 3.630374e+00 -1.509834e+01 8.524895e+00 # CTT + 683 46 6 0.1480 3.662722e+00 -1.532583e+01 5.814010e+00 # HAT + 684 46 6 0.1480 5.617792e+00 -1.516830e+01 4.296352e+00 # HAT + 685 46 6 0.1480 7.879498e+00 -1.475596e+01 5.226437e+00 # HAT + 686 46 6 0.1480 8.186134e+00 -1.450115e+01 7.674180e+00 # HAT + 687 46 6 0.1480 6.231064e+00 -1.465868e+01 9.191838e+00 # HAT + 688 46 7 0.0920 2.885989e+00 -1.576611e+01 8.091219e+00 # HT + 689 46 7 0.0920 3.950069e+00 -1.548970e+01 9.490674e+00 # HT + 690 46 7 0.0920 3.194557e+00 -1.410854e+01 8.660775e+00 # HT + 691 47 1 -2.2897 9.764872e+00 -1.331634e+01 1.332376e+01 # CAT + 692 47 2 -2.3557 9.185102e+00 -1.340091e+01 1.205226e+01 # CAO + 693 47 3 -2.3537 7.837319e+00 -1.306677e+01 1.187384e+01 # CAM + 694 47 4 -2.3627 7.069307e+00 -1.264806e+01 1.296693e+01 # CAP + 695 47 3 -2.3537 7.649077e+00 -1.256349e+01 1.423843e+01 # CAM + 696 47 2 -2.3557 8.996860e+00 -1.289763e+01 1.441685e+01 # CAO + 697 47 5 -2.4057 1.121855e+01 -1.367674e+01 1.351619e+01 # CTT + 698 47 6 0.1480 9.777568e+00 -1.372391e+01 1.120902e+01 # HAT + 699 47 6 0.1480 7.390067e+00 -1.313200e+01 1.089297e+01 # HAT + 700 47 6 0.1480 6.029588e+00 -1.239029e+01 1.282930e+01 # HAT + 701 47 6 0.1480 7.056610e+00 -1.224048e+01 1.508167e+01 # HAT + 702 47 6 0.1480 9.444111e+00 -1.283239e+01 1.539772e+01 # HAT + 703 47 7 0.0920 1.177106e+01 -1.346089e+01 1.260173e+01 # HT + 704 47 7 0.0920 1.163291e+01 -1.309153e+01 1.433713e+01 # HT + 705 47 7 0.0920 1.130252e+01 -1.473831e+01 1.374882e+01 # HT + 706 48 1 -2.2897 -5.467190e-01 1.109515e+01 -9.120245e+00 # CAT + 707 48 2 -2.3557 -7.564600e-02 1.175994e+01 -1.025873e+01 # CAO + 708 48 3 -2.3537 -5.495780e-01 1.139983e+01 -1.152590e+01 # CAM + 709 48 4 -2.3627 -1.494582e+00 1.037493e+01 -1.165458e+01 # CAP + 710 48 3 -2.3537 -1.965655e+00 9.710148e+00 -1.051609e+01 # CAM + 711 48 2 -2.3557 -1.491723e+00 1.007025e+01 -9.248926e+00 # CAO + 712 48 5 -2.4057 -3.555000e-02 1.148355e+01 -7.753515e+00 # CTT + 713 48 6 0.1480 6.533570e-01 1.255057e+01 -1.015946e+01 # HAT + 714 48 6 0.1480 -1.861790e-01 1.191266e+01 -1.240416e+01 # HAT + 715 48 6 0.1480 -1.860187e+00 1.009714e+01 -1.263211e+01 # HAT + 716 48 6 0.1480 -2.694658e+00 8.919515e+00 -1.061536e+01 # HAT + 717 48 6 0.1480 -1.855122e+00 9.557420e+00 -8.370666e+00 # HAT + 718 48 7 0.0920 2.282170e-01 1.254115e+01 -7.750728e+00 # HT + 719 48 7 0.0920 -8.110620e-01 1.130107e+01 -7.009618e+00 # HT + 720 48 7 0.0920 8.457100e-01 1.088920e+01 -7.512218e+00 # HT + 721 49 1 -2.2897 1.027240e+01 -5.417260e-01 -8.013583e+00 # CAT + 722 49 2 -2.3557 1.166978e+01 -4.638740e-01 -7.978000e+00 # CAO + 723 49 3 -2.3537 1.230242e+01 3.269810e-01 -7.011399e+00 # CAM + 724 49 4 -2.3627 1.153768e+01 1.039985e+00 -6.080382e+00 # CAP + 725 49 3 -2.3537 1.014030e+01 9.621340e-01 -6.115965e+00 # CAM + 726 49 2 -2.3557 9.507662e+00 1.712790e-01 -7.082565e+00 # CAO + 727 49 5 -2.4057 9.590059e+00 -1.394719e+00 -9.056131e+00 # CTT + 728 49 6 0.1480 1.225973e+01 -1.013906e+00 -8.696214e+00 # HAT + 729 49 6 0.1480 1.338040e+01 3.870380e-01 -6.983950e+00 # HAT + 730 49 6 0.1480 1.202572e+01 1.650074e+00 -5.334718e+00 # HAT + 731 49 6 0.1480 9.550356e+00 1.512166e+00 -5.397751e+00 # HAT + 732 49 6 0.1480 8.429682e+00 1.112220e-01 -7.110015e+00 # HAT + 733 49 7 0.0920 1.023331e+01 -2.235325e+00 -9.316357e+00 # HT + 734 49 7 0.0920 8.646494e+00 -1.769177e+00 -8.659185e+00 # HT + 735 49 7 0.0920 9.397124e+00 -7.962700e-01 -9.946487e+00 # HT + 736 50 1 -2.2897 1.050095e+01 1.503957e+01 6.028631e+00 # CAT + 737 50 2 -2.3557 1.047309e+01 1.512451e+01 4.631488e+00 # CAO + 738 50 3 -2.3537 9.247246e+00 1.513918e+01 3.955396e+00 # CAM + 739 50 4 -2.3627 8.049270e+00 1.506892e+01 4.676448e+00 # CAP + 740 50 3 -2.3537 8.077134e+00 1.498398e+01 6.073591e+00 # CAM + 741 50 2 -2.3557 9.302974e+00 1.496931e+01 6.749683e+00 # CAO + 742 50 5 -2.4057 1.182311e+01 1.502375e+01 6.757844e+00 # CTT + 743 50 6 0.1480 1.139724e+01 1.517872e+01 4.075248e+00 # HAT + 744 50 6 0.1480 9.225750e+00 1.520471e+01 2.877600e+00 # HAT + 745 50 6 0.1480 7.103621e+00 1.508023e+01 4.154891e+00 # HAT + 746 50 6 0.1480 7.152980e+00 1.492977e+01 6.629831e+00 # HAT + 747 50 6 0.1480 9.324469e+00 1.490378e+01 7.827479e+00 # HAT + 748 50 7 0.0920 1.255990e+01 1.558955e+01 6.187658e+00 # HT + 749 50 7 0.0920 1.170114e+01 1.547564e+01 7.742231e+00 # HT + 750 50 7 0.0920 1.216405e+01 1.399462e+01 6.870776e+00 # HT + 751 51 1 -2.2897 1.198479e+01 -4.731049e+00 -3.780931e+00 # CAT + 752 51 2 -2.3557 1.186218e+01 -5.989429e+00 -4.382136e+00 # CAO + 753 51 3 -2.3537 1.177712e+01 -6.094168e+00 -5.775619e+00 # CAM + 754 51 4 -2.3627 1.181467e+01 -4.940528e+00 -6.567897e+00 # CAP + 755 51 3 -2.3537 1.193728e+01 -3.682148e+00 -5.966691e+00 # CAM + 756 51 2 -2.3557 1.202234e+01 -3.577409e+00 -4.573209e+00 # CAO + 757 51 5 -2.4057 1.207654e+01 -4.618080e+00 -2.277960e+00 # CTT + 758 51 6 0.1480 1.183321e+01 -6.879379e+00 -3.770951e+00 # HAT + 759 51 6 0.1480 1.168254e+01 -7.064917e+00 -6.239406e+00 # HAT + 760 51 6 0.1480 1.174906e+01 -5.021326e+00 -7.642870e+00 # HAT + 761 51 6 0.1480 1.196625e+01 -2.792197e+00 -6.577878e+00 # HAT + 762 51 6 0.1480 1.211693e+01 -2.606659e+00 -4.109422e+00 # HAT + 763 51 7 0.0920 1.255154e+01 -5.512201e+00 -1.874198e+00 # HT + 764 51 7 0.0920 1.266908e+01 -3.741986e+00 -2.014429e+00 # HT + 765 51 7 0.0920 1.107531e+01 -4.518391e+00 -1.858786e+00 # HT + 766 52 1 -2.2897 1.555598e+00 -1.219226e+01 -6.042517e+00 # CAT + 767 52 2 -2.3557 2.702586e+00 -1.154517e+01 -6.517580e+00 # CAO + 768 52 3 -2.3537 2.587985e+00 -1.032673e+01 -7.197485e+00 # CAM + 769 52 4 -2.3627 1.326396e+00 -9.755383e+00 -7.402326e+00 # CAP + 770 52 3 -2.3537 1.794080e-01 -1.040248e+01 -6.927263e+00 # CAM + 771 52 2 -2.3557 2.940090e-01 -1.162092e+01 -6.247359e+00 # CAO + 772 52 5 -2.4057 1.679203e+00 -1.350644e+01 -5.309192e+00 # CTT + 773 52 6 0.1480 3.675811e+00 -1.198592e+01 -6.359560e+00 # HAT + 774 52 6 0.1480 3.472804e+00 -9.827537e+00 -7.563962e+00 # HAT + 775 52 6 0.1480 1.237989e+00 -8.815443e+00 -7.926824e+00 # HAT + 776 52 6 0.1480 -7.938180e-01 -9.961728e+00 -7.085284e+00 # HAT + 777 52 6 0.1480 -5.908100e-01 -1.212011e+01 -5.880881e+00 # HAT + 778 52 7 0.0920 2.634862e+00 -1.354280e+01 -4.786224e+00 # HT + 779 52 7 0.0920 8.671750e-01 -1.359839e+01 -4.587905e+00 # HT + 780 52 7 0.0920 1.624924e+00 -1.432811e+01 -6.023338e+00 # HT + 781 53 1 -2.2897 1.358410e+01 4.592482e+00 -1.702511e+00 # CAT + 782 53 2 -2.3557 1.283435e+01 5.448527e+00 -8.869910e-01 # CAO + 783 53 3 -2.3537 1.144342e+01 5.306593e+00 -8.150550e-01 # CAM + 784 53 4 -2.3627 1.080224e+01 4.308613e+00 -1.558640e+00 # CAP + 785 53 3 -2.3537 1.155198e+01 3.452568e+00 -2.374160e+00 # CAM + 786 53 2 -2.3557 1.294291e+01 3.594502e+00 -2.446095e+00 # CAO + 787 53 5 -2.4057 1.508431e+01 4.745568e+00 -1.780098e+00 # CTT + 788 53 6 0.1480 1.332898e+01 6.218397e+00 -3.133690e-01 # HAT + 789 53 6 0.1480 1.086505e+01 5.966970e+00 -1.859400e-01 # HAT + 790 53 6 0.1480 9.729239e+00 4.199121e+00 -1.503147e+00 # HAT + 791 53 6 0.1480 1.105735e+01 2.682698e+00 -2.947782e+00 # HAT + 792 53 6 0.1480 1.352128e+01 2.934124e+00 -3.075211e+00 # HAT + 793 53 7 0.0920 1.545964e+01 5.135810e+00 -8.340840e-01 # HT + 794 53 7 0.0920 1.553931e+01 3.775115e+00 -1.978333e+00 # HT + 795 53 7 0.0920 1.533846e+01 5.436443e+00 -2.583964e+00 # HT + 796 54 1 -2.2897 2.946326e+00 1.231817e+01 1.120154e+01 # CAT + 797 54 2 -2.3557 3.413214e+00 1.353105e+01 1.172203e+01 # CAO + 798 54 3 -2.3537 3.004023e+00 1.474181e+01 1.115052e+01 # CAM + 799 54 4 -2.3627 2.127946e+00 1.473968e+01 1.005851e+01 # CAP + 800 54 3 -2.3537 1.661058e+00 1.352679e+01 9.538017e+00 # CAM + 801 54 2 -2.3557 2.070248e+00 1.231603e+01 1.010953e+01 # CAO + 802 54 5 -2.4057 3.387667e+00 1.101228e+01 1.181796e+01 # CTT + 803 54 6 0.1480 4.089045e+00 1.353270e+01 1.256444e+01 # HAT + 804 54 6 0.1480 3.364193e+00 1.567747e+01 1.155204e+01 # HAT + 805 54 6 0.1480 1.812284e+00 1.567370e+01 9.617630e+00 # HAT + 806 54 6 0.1480 9.852260e-01 1.352515e+01 8.695610e+00 # HAT + 807 54 6 0.1480 1.710078e+00 1.138038e+01 9.708006e+00 # HAT + 808 54 7 0.0920 3.586288e+00 1.115977e+01 1.287951e+01 # HT + 809 54 7 0.0920 2.600668e+00 1.026805e+01 1.169607e+01 # HT + 810 54 7 0.0920 4.295081e+00 1.066501e+01 1.132389e+01 # HT + 811 55 1 -2.2897 1.509559e+01 -9.015908e+00 -4.919870e+00 # CAT + 812 55 2 -2.3557 1.504119e+01 -9.790899e+00 -3.755211e+00 # CAO + 813 55 3 -2.3537 1.508387e+01 -1.118761e+01 -3.841170e+00 # CAM + 814 55 4 -2.3627 1.518095e+01 -1.180932e+01 -5.091787e+00 # CAP + 815 55 3 -2.3537 1.523534e+01 -1.103433e+01 -6.256447e+00 # CAM + 816 55 2 -2.3557 1.519266e+01 -9.637625e+00 -6.170488e+00 # CAO + 817 55 5 -2.4057 1.504955e+01 -7.509461e+00 -4.827157e+00 # CTT + 818 55 6 0.1480 1.496631e+01 -9.311290e+00 -2.790448e+00 # HAT + 819 55 6 0.1480 1.504191e+01 -1.178546e+01 -2.942718e+00 # HAT + 820 55 6 0.1480 1.521387e+01 -1.288678e+01 -5.158099e+00 # HAT + 821 55 6 0.1480 1.531023e+01 -1.151394e+01 -7.221209e+00 # HAT + 822 55 6 0.1480 1.523462e+01 -9.039775e+00 -7.068939e+00 # HAT + 823 55 7 0.0920 1.549537e+01 -7.189083e+00 -3.885508e+00 # HT + 824 55 7 0.0920 1.560654e+01 -7.076592e+00 -5.658113e+00 # HT + 825 55 7 0.0920 1.401347e+01 -7.173726e+00 -4.870828e+00 # HT + 826 56 1 -2.2897 1.504423e+01 1.367656e+01 -1.353903e+01 # CAT + 827 56 2 -2.3557 1.515546e+01 1.362343e+01 -1.214447e+01 # CAO + 828 56 3 -2.3537 1.536449e+01 1.239557e+01 -1.150519e+01 # CAM + 829 56 4 -2.3627 1.546230e+01 1.122085e+01 -1.226048e+01 # CAP + 830 56 3 -2.3537 1.535107e+01 1.127398e+01 -1.365504e+01 # CAM + 831 56 2 -2.3557 1.514203e+01 1.250184e+01 -1.429432e+01 # CAO + 832 56 5 -2.4057 1.481877e+01 1.500089e+01 -1.422854e+01 # CTT + 833 56 6 0.1480 1.508001e+01 1.452965e+01 -1.156182e+01 # HAT + 834 56 6 0.1480 1.545030e+01 1.235459e+01 -1.042939e+01 # HAT + 835 56 6 0.1480 1.562355e+01 1.027365e+01 -1.176732e+01 # HAT + 836 56 6 0.1480 1.542651e+01 1.036777e+01 -1.423769e+01 # HAT + 837 56 6 0.1480 1.505622e+01 1.254283e+01 -1.537012e+01 # HAT + 838 56 7 0.0920 1.527734e+01 1.579829e+01 -1.364375e+01 # HT + 839 56 7 0.0920 1.526749e+01 1.497514e+01 -1.522156e+01 # HT + 840 56 7 0.0920 1.374849e+01 1.518659e+01 -1.431873e+01 # HT + 841 57 1 -2.2897 3.073517e+00 -2.366873e+00 -1.448425e+01 # CAT + 842 57 2 -2.3557 2.748964e+00 -3.255809e+00 -1.345253e+01 # CAO + 843 57 3 -2.3537 3.602298e+00 -4.325242e+00 -1.315565e+01 # CAM + 844 57 4 -2.3627 4.780184e+00 -4.505739e+00 -1.389050e+01 # CAP + 845 57 3 -2.3537 5.104736e+00 -3.616802e+00 -1.492223e+01 # CAM + 846 57 2 -2.3557 4.251403e+00 -2.547370e+00 -1.521911e+01 # CAO + 847 57 5 -2.4057 2.153136e+00 -1.213413e+00 -1.480446e+01 # CTT + 848 57 6 0.1480 1.840310e+00 -3.116569e+00 -1.288564e+01 # HAT + 849 57 6 0.1480 3.351929e+00 -5.010993e+00 -1.235975e+01 # HAT + 850 57 6 0.1480 5.438470e+00 -5.330730e+00 -1.366149e+01 # HAT + 851 57 6 0.1480 6.013391e+00 -3.756043e+00 -1.548911e+01 # HAT + 852 57 6 0.1480 4.501772e+00 -1.861619e+00 -1.601501e+01 # HAT + 853 57 7 0.0920 1.634102e+00 -8.998150e-01 -1.389872e+01 # HT + 854 57 7 0.0920 2.736762e+00 -3.798820e-01 -1.519523e+01 # HT + 855 57 7 0.0920 1.423218e+00 -1.526728e+00 -1.555088e+01 # HT + 856 58 1 -2.2897 -4.576135e+00 -7.197530e+00 2.226547e+00 # CAT + 857 58 2 -2.3557 -5.896264e+00 -7.198509e+00 1.760437e+00 # CAO + 858 58 3 -2.3537 -6.909917e+00 -6.612010e+00 2.527593e+00 # CAM + 859 58 4 -2.3627 -6.603440e+00 -6.024533e+00 3.760858e+00 # CAP + 860 58 3 -2.3537 -5.283311e+00 -6.023554e+00 4.226967e+00 # CAM + 861 58 2 -2.3557 -4.269659e+00 -6.610053e+00 3.459813e+00 # CAO + 862 58 5 -2.4057 -3.482838e+00 -7.830111e+00 1.399116e+00 # CTT + 863 58 6 0.1480 -6.132688e+00 -7.651706e+00 8.090620e-01 # HAT + 864 58 6 0.1480 -7.928302e+00 -6.612765e+00 2.168023e+00 # HAT + 865 58 6 0.1480 -7.385401e+00 -5.572090e+00 4.352663e+00 # HAT + 866 58 6 0.1480 -5.046887e+00 -5.570357e+00 5.178344e+00 # HAT + 867 58 6 0.1480 -3.251273e+00 -6.609298e+00 3.819383e+00 # HAT + 868 58 7 0.0920 -3.733779e+00 -7.748958e+00 3.415030e-01 # HT + 869 58 7 0.0920 -2.539991e+00 -7.317082e+00 1.588698e+00 # HT + 870 58 7 0.0920 -3.384421e+00 -8.881572e+00 1.669011e+00 # HT + 871 59 1 -2.2897 -7.772433e+00 3.565982e+00 1.411000e+01 # CAT + 872 59 2 -2.3557 -7.230055e+00 3.567265e+00 1.281933e+01 # CAO + 873 59 3 -2.3537 -8.063716e+00 3.752056e+00 1.170989e+01 # CAM + 874 59 4 -2.3627 -9.439754e+00 3.935563e+00 1.189111e+01 # CAP + 875 59 3 -2.3537 -9.982132e+00 3.934280e+00 1.318178e+01 # CAM + 876 59 2 -2.3557 -9.148472e+00 3.749489e+00 1.429123e+01 # CAO + 877 59 5 -2.4057 -6.873271e+00 3.366672e+00 1.530661e+01 # CTT + 878 59 6 0.1480 -6.168540e+00 3.425703e+00 1.267953e+01 # HAT + 879 59 6 0.1480 -7.645310e+00 3.753046e+00 1.071423e+01 # HAT + 880 59 6 0.1480 -1.008286e+01 4.078115e+00 1.103526e+01 # HAT + 881 59 6 0.1480 -1.104365e+01 4.075842e+00 1.332159e+01 # HAT + 882 59 6 0.1480 -9.566878e+00 3.748499e+00 1.528688e+01 # HAT + 883 59 7 0.0920 -5.880878e+00 3.759558e+00 1.508549e+01 # HT + 884 59 7 0.0920 -7.288830e+00 3.893294e+00 1.616573e+01 # HT + 885 59 7 0.0920 -6.800118e+00 2.303088e+00 1.553363e+01 # HT + 886 60 1 -2.2897 -2.982640e+00 7.509455e+00 -7.413426e+00 # CAT + 887 60 2 -2.3557 -2.407439e+00 8.205173e+00 -6.343322e+00 # CAO + 888 60 3 -2.3537 -2.797571e+00 9.522525e+00 -6.074284e+00 # CAM + 889 60 4 -2.3627 -3.762903e+00 1.014416e+01 -6.875349e+00 # CAP + 890 60 3 -2.3537 -4.338103e+00 9.448441e+00 -7.945452e+00 # CAM + 891 60 2 -2.3557 -3.947972e+00 8.131090e+00 -8.214491e+00 # CAO + 892 60 5 -2.4057 -2.561855e+00 6.088598e+00 -7.703604e+00 # CTT + 893 60 6 0.1480 -1.662755e+00 7.725627e+00 -5.725358e+00 # HAT + 894 60 6 0.1480 -2.353845e+00 1.005922e+01 -5.248775e+00 # HAT + 895 60 6 0.1480 -4.063862e+00 1.116040e+01 -6.667805e+00 # HAT + 896 60 6 0.1480 -5.082788e+00 9.927988e+00 -8.563417e+00 # HAT + 897 60 6 0.1480 -4.391698e+00 7.594394e+00 -9.040000e+00 # HAT + 898 60 7 0.0920 -2.265165e+00 5.600221e+00 -6.775399e+00 # HT + 899 60 7 0.0920 -3.395783e+00 5.545850e+00 -8.148675e+00 # HT + 900 60 7 0.0920 -1.720440e+00 6.092613e+00 -8.396499e+00 # HT + 901 61 1 -2.2897 3.258301e+00 -4.694480e-01 4.582762e+00 # CAT + 902 61 2 -2.3557 1.983033e+00 -1.037576e+00 4.687274e+00 # CAO + 903 61 3 -2.3537 1.724756e+00 -2.002305e+00 5.668392e+00 # CAM + 904 61 4 -2.3627 2.741747e+00 -2.398904e+00 6.544998e+00 # CAP + 905 61 3 -2.3537 4.017015e+00 -1.830776e+00 6.440486e+00 # CAM + 906 61 2 -2.3557 4.275292e+00 -8.660480e-01 5.459369e+00 # CAO + 907 61 5 -2.4057 3.536871e+00 5.710800e-01 3.524557e+00 # CTT + 908 61 6 0.1480 1.198498e+00 -7.316280e-01 4.011035e+00 # HAT + 909 61 6 0.1480 7.409790e-01 -2.440575e+00 5.749015e+00 # HAT + 910 61 6 0.1480 2.542505e+00 -3.143123e+00 7.301861e+00 # HAT + 911 61 6 0.1480 4.801550e+00 -2.136725e+00 7.116726e+00 # HAT + 912 61 6 0.1480 5.259070e+00 -4.277770e-01 5.378745e+00 # HAT + 913 61 7 0.0920 2.624647e+00 1.129379e+00 3.314195e+00 # HT + 914 61 7 0.0920 4.306967e+00 1.255266e+00 3.880845e+00 # HT + 915 61 7 0.0920 3.880371e+00 8.077400e-02 2.613674e+00 # HT + 916 62 1 -2.2897 -1.408416e+01 6.936970e+00 1.496073e+01 # CAT + 917 62 2 -2.3557 -1.268811e+01 6.990609e+00 1.505098e+01 # CAO + 918 62 3 -2.3537 -1.195414e+01 5.815894e+00 1.525429e+01 # CAM + 919 62 4 -2.3627 -1.261623e+01 4.587541e+00 1.536736e+01 # CAP + 920 62 3 -2.3537 -1.401229e+01 4.533902e+00 1.527711e+01 # CAM + 921 62 2 -2.3557 -1.474625e+01 5.708616e+00 1.507380e+01 # CAO + 922 62 5 -2.4057 -1.487580e+01 8.203983e+00 1.474144e+01 # CTT + 923 62 6 0.1480 -1.217735e+01 7.938196e+00 1.496376e+01 # HAT + 924 62 6 0.1480 -1.087718e+01 5.857273e+00 1.532391e+01 # HAT + 925 62 6 0.1480 -1.205002e+01 3.681332e+00 1.552420e+01 # HAT + 926 62 6 0.1480 -1.452304e+01 3.586314e+00 1.536434e+01 # HAT + 927 62 6 0.1480 -1.582321e+01 5.667237e+00 1.500418e+01 # HAT + 928 62 7 0.0920 -1.427591e+01 8.913860e+00 1.417196e+01 # HT + 929 62 7 0.0920 -1.578642e+01 7.972988e+00 1.418871e+01 # HT + 930 62 7 0.0920 -1.513733e+01 8.641001e+00 1.570514e+01 # HT + 931 63 1 -2.2897 4.427510e+00 1.380200e+01 -2.876622e+00 # CAT + 932 63 2 -2.3557 3.351363e+00 1.334945e+01 -2.103896e+00 # CAO + 933 63 3 -2.3537 3.583186e+00 1.252985e+01 -9.928050e-01 # CAM + 934 63 4 -2.3627 4.891157e+00 1.216281e+01 -6.544420e-01 # CAP + 935 63 3 -2.3537 5.967304e+00 1.261535e+01 -1.427168e+00 # CAM + 936 63 2 -2.3557 5.735481e+00 1.343495e+01 -2.538258e+00 # CAO + 937 63 5 -2.4057 4.177472e+00 1.468599e+01 -4.075012e+00 # CTT + 938 63 6 0.1480 2.342357e+00 1.363260e+01 -2.364919e+00 # HAT + 939 63 6 0.1480 2.753016e+00 1.218074e+01 -3.967020e-01 # HAT + 940 63 6 0.1480 5.069992e+00 1.153055e+01 2.026860e-01 # HAT + 941 63 6 0.1480 6.976310e+00 1.233221e+01 -1.166144e+00 # HAT + 942 63 6 0.1480 6.565652e+00 1.378406e+01 -3.134362e+00 # HAT + 943 63 7 0.0920 3.281851e+00 1.528373e+01 -3.905683e+00 # HT + 944 63 7 0.0920 5.031588e+00 1.534648e+01 -4.224468e+00 # HT + 945 63 7 0.0920 4.038229e+00 1.406678e+01 -4.961179e+00 # HT + 946 64 1 -2.2897 1.294754e+01 1.091054e+01 1.325336e+01 # CAT + 947 64 2 -2.3557 1.303118e+01 1.132003e+01 1.458952e+01 # CAO + 948 64 3 -2.3537 1.186669e+01 1.163965e+01 1.529790e+01 # CAM + 949 64 4 -2.3627 1.061857e+01 1.154977e+01 1.467013e+01 # CAP + 950 64 3 -2.3537 1.053493e+01 1.114028e+01 1.333397e+01 # CAM + 951 64 2 -2.3557 1.169942e+01 1.082066e+01 1.262559e+01 # CAO + 952 64 5 -2.4057 1.420353e+01 1.056581e+01 1.248932e+01 # CTT + 953 64 6 0.1480 1.399402e+01 1.138937e+01 1.507380e+01 # HAT + 954 64 6 0.1480 1.193121e+01 1.195555e+01 1.632865e+01 # HAT + 955 64 6 0.1480 9.720244e+00 1.179633e+01 1.521660e+01 # HAT + 956 64 6 0.1480 9.572085e+00 1.107094e+01 1.284969e+01 # HAT + 957 64 6 0.1480 1.163490e+01 1.050477e+01 1.159484e+01 # HAT + 958 64 7 0.0920 1.495341e+01 1.017713e+01 1.317831e+01 # HT + 959 64 7 0.0920 1.397601e+01 9.810639e+00 1.173695e+01 # HT + 960 64 7 0.0920 1.458909e+01 1.146045e+01 1.200038e+01 # HT + 961 65 1 -2.2897 8.908436e+00 -5.228769e+00 -5.981125e+00 # CAT + 962 65 2 -2.3557 8.694744e+00 -5.687037e+00 -4.675627e+00 # CAO + 963 65 3 -2.3537 8.944404e+00 -4.842216e+00 -3.587533e+00 # CAM + 964 65 4 -2.3627 9.407756e+00 -3.539128e+00 -3.804938e+00 # CAP + 965 65 3 -2.3537 9.621449e+00 -3.080860e+00 -5.110437e+00 # CAM + 966 65 2 -2.3557 9.371789e+00 -3.925680e+00 -6.198530e+00 # CAO + 967 65 5 -2.4057 8.639160e+00 -6.139969e+00 -7.154712e+00 # CTT + 968 65 6 0.1480 8.337301e+00 -6.692276e+00 -4.507914e+00 # HAT + 969 65 6 0.1480 8.779556e+00 -5.195736e+00 -2.580434e+00 # HAT + 970 65 6 0.1480 9.600352e+00 -2.887408e+00 -2.965552e+00 # HAT + 971 65 6 0.1480 9.978892e+00 -2.075620e+00 -5.278149e+00 # HAT + 972 65 6 0.1480 9.536637e+00 -3.572160e+00 -7.205629e+00 # HAT + 973 65 7 0.0920 7.841102e+00 -6.836853e+00 -6.898671e+00 # HT + 974 65 7 0.0920 8.337994e+00 -5.544170e+00 -8.016351e+00 # HT + 975 65 7 0.0920 9.543728e+00 -6.697572e+00 -7.397475e+00 # HT + 976 66 1 -2.2897 4.271883e+00 1.385249e+01 1.507117e+01 # CAT + 977 66 2 -2.3557 3.745530e+00 1.255618e+01 1.512165e+01 # CAO + 978 66 3 -2.3537 4.605755e+00 1.145201e+01 1.515002e+01 # CAM + 979 66 4 -2.3627 5.992332e+00 1.164413e+01 1.512791e+01 # CAP + 980 66 3 -2.3537 6.518686e+00 1.294044e+01 1.507743e+01 # CAM + 981 66 2 -2.3557 5.658462e+00 1.404461e+01 1.504907e+01 # CAO + 982 66 5 -2.4057 3.344070e+00 1.504342e+01 1.504058e+01 # CTT + 983 66 6 0.1480 2.675884e+00 1.240797e+01 1.513870e+01 # HAT + 984 66 6 0.1480 4.199710e+00 1.045200e+01 1.518896e+01 # HAT + 985 66 6 0.1480 6.655934e+00 1.079234e+01 1.514979e+01 # HAT + 986 66 6 0.1480 7.588332e+00 1.308865e+01 1.506038e+01 # HAT + 987 66 6 0.1480 6.064506e+00 1.504462e+01 1.501013e+01 # HAT + 988 66 7 0.0920 2.424279e+00 1.480186e+01 1.557324e+01 # HT + 989 66 7 0.0920 3.828206e+00 1.589424e+01 1.551997e+01 # HT + 990 66 7 0.0920 3.109027e+00 1.529507e+01 1.400640e+01 # HT + 991 67 1 -2.2897 -7.561472e+00 1.370177e+01 6.200833e+00 # CAT + 992 67 2 -2.3557 -6.272456e+00 1.402062e+01 5.757246e+00 # CAO + 993 67 3 -2.3537 -5.576063e+00 1.313004e+01 4.931472e+00 # CAM + 994 67 4 -2.3627 -6.168687e+00 1.192061e+01 4.549285e+00 # CAP + 995 67 3 -2.3537 -7.457703e+00 1.160176e+01 4.992872e+00 # CAM + 996 67 2 -2.3557 -8.154096e+00 1.249234e+01 5.818646e+00 # CAO + 997 67 5 -2.4057 -8.312581e+00 1.466233e+01 7.091488e+00 # CTT + 998 67 6 0.1480 -5.815289e+00 1.495361e+01 6.052075e+00 # HAT + 999 67 6 0.1480 -4.581679e+00 1.337601e+01 4.589276e+00 # HAT + 1000 67 6 0.1480 -5.631469e+00 1.123359e+01 3.912260e+00 # HAT + 1001 67 6 0.1480 -7.914870e+00 1.066876e+01 4.698042e+00 # HAT + 1002 67 6 0.1480 -9.148480e+00 1.224637e+01 6.160841e+00 # HAT + 1003 67 7 0.0920 -8.002345e+00 1.568327e+01 6.868917e+00 # HT + 1004 67 7 0.0920 -9.383306e+00 1.456164e+01 6.913980e+00 # HT + 1005 67 7 0.0920 -8.095055e+00 1.443645e+01 8.135404e+00 # HT + 1006 68 1 -2.2897 1.113894e+01 1.100598e+01 5.908326e+00 # CAT + 1007 68 2 -2.3557 1.160678e+01 9.846555e+00 5.278348e+00 # CAO + 1008 68 3 -2.3537 1.212450e+01 8.794542e+00 6.043353e+00 # CAM + 1009 68 4 -2.3627 1.217439e+01 8.901951e+00 7.438334e+00 # CAP + 1010 68 3 -2.3537 1.170656e+01 1.006137e+01 8.068312e+00 # CAM + 1011 68 2 -2.3557 1.118883e+01 1.111339e+01 7.303308e+00 # CAO + 1012 68 5 -2.4057 1.058054e+01 1.214065e+01 5.083215e+00 # CTT + 1013 68 6 0.1480 1.156829e+01 9.763697e+00 4.202220e+00 # HAT + 1014 68 6 0.1480 1.248540e+01 7.900131e+00 5.557370e+00 # HAT + 1015 68 6 0.1480 1.257378e+01 8.090398e+00 8.028480e+00 # HAT + 1016 68 6 0.1480 1.174504e+01 1.014423e+01 9.144441e+00 # HAT + 1017 68 6 0.1480 1.082793e+01 1.200780e+01 7.789291e+00 # HAT + 1018 68 7 0.0920 1.013032e+01 1.174215e+01 4.174038e+00 # HT + 1019 68 7 0.0920 9.823584e+00 1.267189e+01 5.660184e+00 # HT + 1020 68 7 0.0920 1.138406e+01 1.282813e+01 4.818966e+00 # HT + 1021 69 1 -2.2897 -5.279193e+00 1.087257e+01 8.274740e-01 # CAT + 1022 69 2 -2.3557 -5.525088e+00 9.494584e+00 8.538170e-01 # CAO + 1023 69 3 -2.3537 -6.666408e+00 8.999337e+00 1.495782e+00 # CAM + 1024 69 4 -2.3627 -7.561833e+00 9.882074e+00 2.111403e+00 # CAP + 1025 69 3 -2.3537 -7.315938e+00 1.126006e+01 2.085060e+00 # CAM + 1026 69 2 -2.3557 -6.174618e+00 1.175531e+01 1.443095e+00 # CAO + 1027 69 5 -2.4057 -4.048198e+00 1.140673e+01 1.350690e-01 # CTT + 1028 69 6 0.1480 -4.834332e+00 8.813616e+00 3.789100e-01 # HAT + 1029 69 6 0.1480 -6.856099e+00 7.936320e+00 1.516104e+00 # HAT + 1030 69 6 0.1480 -8.442280e+00 9.500026e+00 2.606633e+00 # HAT + 1031 69 6 0.1480 -8.006695e+00 1.194103e+01 2.559968e+00 # HAT + 1032 69 6 0.1480 -5.984928e+00 1.281832e+01 1.422773e+00 # HAT + 1033 69 7 0.0920 -3.777019e+00 1.074453e+01 -6.871560e-01 # HT + 1034 69 7 0.0920 -4.253717e+00 1.240370e+01 -2.546770e-01 # HT + 1035 69 7 0.0920 -3.223997e+00 1.145809e+01 8.465140e-01 # HT + 1036 70 1 -2.2897 9.133436e+00 7.176267e+00 1.077745e+01 # CAT + 1037 70 2 -2.3557 8.434500e+00 7.432350e+00 9.591744e+00 # CAO + 1038 70 3 -2.3537 7.652014e+00 6.427969e+00 9.009563e+00 # CAM + 1039 70 4 -2.3627 7.568465e+00 5.167505e+00 9.613092e+00 # CAP + 1040 70 3 -2.3537 8.267401e+00 4.911421e+00 1.079880e+01 # CAM + 1041 70 2 -2.3557 9.049886e+00 5.915801e+00 1.138098e+01 # CAO + 1042 70 5 -2.4057 9.977402e+00 8.259563e+00 1.140538e+01 # CTT + 1043 70 6 0.1480 8.498952e+00 8.404709e+00 9.126164e+00 # HAT + 1044 70 6 0.1480 7.112834e+00 6.625519e+00 8.094872e+00 # HAT + 1045 70 6 0.1480 6.964833e+00 4.392696e+00 9.163981e+00 # HAT + 1046 70 6 0.1480 8.202948e+00 3.939061e+00 1.126438e+01 # HAT + 1047 70 6 0.1480 9.589066e+00 5.718251e+00 1.229567e+01 # HAT + 1048 70 7 0.0920 9.549380e+00 9.234757e+00 1.117322e+01 # HT + 1049 70 7 0.0920 1.000102e+01 8.121741e+00 1.248637e+01 # HT + 1050 70 7 0.0920 1.099189e+01 8.205286e+00 1.101045e+01 # HT + 1051 71 1 -2.2897 4.710830e-01 -5.315780e+00 1.262183e+00 # CAT + 1052 71 2 -2.3557 5.895940e-01 -6.504279e+00 5.318220e-01 # CAO + 1053 71 3 -2.3537 1.499878e+00 -6.586382e+00 -5.286700e-01 # CAM + 1054 71 4 -2.3627 2.291651e+00 -5.479988e+00 -8.588000e-01 # CAP + 1055 71 3 -2.3537 2.173141e+00 -4.291490e+00 -1.284380e-01 # CAM + 1056 71 2 -2.3557 1.262857e+00 -4.209386e+00 9.320530e-01 # CAO + 1057 71 5 -2.4057 -5.107230e-01 -5.227226e+00 2.405998e+00 # CTT + 1058 71 6 0.1480 -2.120300e-02 -7.357783e+00 7.864930e-01 # HAT + 1059 71 6 0.1480 1.591300e+00 -7.503223e+00 -1.092092e+00 # HAT + 1060 71 6 0.1480 2.993871e+00 -5.543324e+00 -1.676893e+00 # HAT + 1061 71 6 0.1480 2.783938e+00 -3.437985e+00 -3.831100e-01 # HAT + 1062 71 6 0.1480 1.171435e+00 -3.292544e+00 1.495474e+00 # HAT + 1063 71 7 0.0920 -6.310350e-01 -6.211197e+00 2.859240e+00 # HT + 1064 71 7 0.0920 -1.369180e-01 -4.526943e+00 3.152975e+00 # HT + 1065 71 7 0.0920 -1.473943e+00 -4.879524e+00 2.032622e+00 # HT + 1066 72 1 -2.2897 -1.108013e+01 -6.188383e+00 8.896229e+00 # CAT + 1067 72 2 -2.3557 -1.071769e+01 -6.033910e+00 1.023965e+01 # CAO + 1068 72 3 -2.3537 -1.106984e+01 -4.868023e+00 1.093008e+01 # CAM + 1069 72 4 -2.3627 -1.178444e+01 -3.856609e+00 1.027709e+01 # CAP + 1070 72 3 -2.3537 -1.214688e+01 -4.011081e+00 8.933676e+00 # CAM + 1071 72 2 -2.3557 -1.179473e+01 -5.176968e+00 8.243244e+00 # CAO + 1072 72 5 -2.4057 -1.070031e+01 -7.445875e+00 8.151548e+00 # CTT + 1073 72 6 0.1480 -1.016642e+01 -6.814144e+00 1.074338e+01 # HAT + 1074 72 6 0.1480 -1.079023e+01 -4.748858e+00 1.196643e+01 # HAT + 1075 72 6 0.1480 -1.205609e+01 -2.957209e+00 1.080971e+01 # HAT + 1076 72 6 0.1480 -1.269815e+01 -3.230847e+00 8.429945e+00 # HAT + 1077 72 6 0.1480 -1.207434e+01 -5.296132e+00 7.206894e+00 # HAT + 1078 72 7 0.0920 -1.065533e+01 -8.282266e+00 8.849064e+00 # HT + 1079 72 7 0.0920 -1.144579e+01 -7.653344e+00 7.383877e+00 # HT + 1080 72 7 0.0920 -9.725253e+00 -7.311032e+00 7.683389e+00 # HT + 1081 73 1 -2.2897 -9.089503e+00 -1.159685e+01 4.608762e+00 # CAT + 1082 73 2 -2.3557 -8.523278e+00 -1.061468e+01 5.430178e+00 # CAO + 1083 73 3 -2.3537 -7.162889e+00 -1.067332e+01 5.755606e+00 # CAM + 1084 73 4 -2.3627 -6.368726e+00 -1.171414e+01 5.259618e+00 # CAP + 1085 73 3 -2.3537 -6.934951e+00 -1.269631e+01 4.438202e+00 # CAM + 1086 73 2 -2.3557 -8.295339e+00 -1.263767e+01 4.112774e+00 # CAO + 1087 73 5 -2.4057 -1.055678e+01 -1.153360e+01 4.257765e+00 # CTT + 1088 73 6 0.1480 -9.135918e+00 -9.811760e+00 5.812798e+00 # HAT + 1089 73 6 0.1480 -6.726086e+00 -9.915643e+00 6.389270e+00 # HAT + 1090 73 6 0.1480 -5.319282e+00 -1.175938e+01 5.510662e+00 # HAT + 1091 73 6 0.1480 -6.322310e+00 -1.349923e+01 4.055582e+00 # HAT + 1092 73 6 0.1480 -8.732141e+00 -1.339534e+01 3.479110e+00 # HAT + 1093 73 7 0.0920 -1.088266e+01 -1.049357e+01 4.242172e+00 # HT + 1094 73 7 0.0920 -1.071537e+01 -1.197827e+01 3.275311e+00 # HT + 1095 73 7 0.0920 -1.113297e+01 -1.208323e+01 5.002081e+00 # HT + 1096 74 1 -2.2897 1.155483e+01 -7.697853e+00 -1.484975e+01 # CAT + 1097 74 2 -2.3557 1.101652e+01 -6.405634e+00 -1.483011e+01 # CAO + 1098 74 3 -2.3537 1.184001e+01 -5.300457e+00 -1.507594e+01 # CAM + 1099 74 4 -2.3627 1.320183e+01 -5.487500e+00 -1.534141e+01 # CAP + 1100 74 3 -2.3537 1.374015e+01 -6.779719e+00 -1.536105e+01 # CAM + 1101 74 2 -2.3557 1.291665e+01 -7.884895e+00 -1.511521e+01 # CAO + 1102 74 5 -2.4057 1.066663e+01 -8.889864e+00 -1.458460e+01 # CTT + 1103 74 6 0.1480 9.965971e+00 -6.261344e+00 -1.462532e+01 # HAT + 1104 74 6 0.1480 1.142474e+01 -4.303603e+00 -1.506080e+01 # HAT + 1105 74 6 0.1480 1.383710e+01 -4.634935e+00 -1.553105e+01 # HAT + 1106 74 6 0.1480 1.479069e+01 -6.924008e+00 -1.556583e+01 # HAT + 1107 74 6 0.1480 1.333192e+01 -8.881750e+00 -1.513036e+01 # HAT + 1108 74 7 0.0920 9.652627e+00 -8.669426e+00 -1.491822e+01 # HT + 1109 74 7 0.0920 1.104716e+01 -9.755076e+00 -1.512746e+01 # HT + 1110 74 7 0.0920 1.065803e+01 -9.106773e+00 -1.351643e+01 # HT + 1111 75 1 -2.2897 4.533850e-01 1.554472e+00 -1.405462e+01 # CAT + 1112 75 2 -2.3557 3.674000e-02 9.675280e-01 -1.285383e+01 # CAO + 1113 75 3 -2.3537 9.848330e-01 5.628790e-01 -1.190653e+01 # CAM + 1114 75 4 -2.3627 2.349571e+00 7.451730e-01 -1.216002e+01 # CAP + 1115 75 3 -2.3537 2.766216e+00 1.332116e+00 -1.336082e+01 # CAM + 1116 75 2 -2.3557 1.818123e+00 1.736766e+00 -1.430812e+01 # CAO + 1117 75 5 -2.4057 -5.692010e-01 1.990916e+00 -1.507635e+01 # CTT + 1118 75 6 0.1480 -1.016058e+00 8.269020e-01 -1.265828e+01 # HAT + 1119 75 6 0.1480 6.634210e-01 1.100930e-01 -1.098020e+01 # HAT + 1120 75 6 0.1480 3.080958e+00 4.330140e-01 -1.142925e+01 # HAT + 1121 75 6 0.1480 3.819014e+00 1.472743e+00 -1.355637e+01 # HAT + 1122 75 6 0.1480 2.139535e+00 2.189551e+00 -1.523444e+01 # HAT + 1123 75 7 0.0920 -1.490515e+00 2.277830e+00 -1.456944e+01 # HT + 1124 75 7 0.0920 -1.831330e-01 2.842384e+00 -1.563676e+01 # HT + 1125 75 7 0.0920 -7.731630e-01 1.168031e+00 -1.576145e+01 # HT + 1126 76 1 -2.2897 -1.453937e+01 -4.604499e+00 9.359840e+00 # CAT + 1127 76 2 -2.3557 -1.465981e+01 -4.694566e+00 7.967941e+00 # CAO + 1128 76 3 -2.3537 -1.498582e+01 -3.557864e+00 7.218524e+00 # CAM + 1129 76 4 -2.3627 -1.519139e+01 -2.331096e+00 7.861004e+00 # CAP + 1130 76 3 -2.3537 -1.507094e+01 -2.241030e+00 9.252903e+00 # CAM + 1131 76 2 -2.3557 -1.474493e+01 -3.377731e+00 1.000232e+01 # CAO + 1132 76 5 -2.4057 -1.418774e+01 -5.830513e+00 1.016814e+01 # CTT + 1133 76 6 0.1480 -1.450123e+01 -5.640930e+00 7.472313e+00 # HAT + 1134 76 6 0.1480 -1.507873e+01 -3.627344e+00 6.144773e+00 # HAT + 1135 76 6 0.1480 -1.544288e+01 -1.454212e+00 7.282882e+00 # HAT + 1136 76 6 0.1480 -1.522952e+01 -1.294665e+00 9.748531e+00 # HAT + 1137 76 6 0.1480 -1.465202e+01 -3.308250e+00 1.107607e+01 # HAT + 1138 76 7 0.0920 -1.357249e+01 -6.499135e+00 9.566054e+00 # HT + 1139 76 7 0.0920 -1.363496e+01 -5.532692e+00 1.105911e+01 # HT + 1140 76 7 0.0920 -1.510159e+01 -6.345974e+00 1.046356e+01 # HT + 1141 77 1 -2.2897 -1.356475e+00 1.280972e+01 -1.503091e+01 # CAT + 1142 77 2 -2.3557 -2.646687e+00 1.334968e+01 -1.509245e+01 # CAO + 1143 77 3 -2.3537 -3.759439e+00 1.250109e+01 -1.513348e+01 # CAM + 1144 77 4 -2.3627 -3.581977e+00 1.111254e+01 -1.511297e+01 # CAP + 1145 77 3 -2.3537 -2.291764e+00 1.057257e+01 -1.505143e+01 # CAM + 1146 77 2 -2.3557 -1.179013e+00 1.142116e+01 -1.501041e+01 # CAO + 1147 77 5 -2.4057 -1.562930e-01 1.372498e+01 -1.498666e+01 # CTT + 1148 77 6 0.1480 -2.783586e+00 1.442085e+01 -1.510827e+01 # HAT + 1149 77 6 0.1480 -4.754745e+00 1.291764e+01 -1.518094e+01 # HAT + 1150 77 6 0.1480 -4.440385e+00 1.045791e+01 -1.514462e+01 # HAT + 1151 77 6 0.1480 -2.154865e+00 9.501400e+00 -1.503561e+01 # HAT + 1152 77 6 0.1480 -1.837060e-01 1.100461e+01 -1.496294e+01 # HAT + 1153 77 7 0.0920 -4.281800e-01 1.465791e+01 -1.449288e+01 # HT + 1154 77 7 0.0920 6.489660e-01 1.324254e+01 -1.443267e+01 # HT + 1155 77 7 0.0920 1.779210e-01 1.393611e+01 -1.600245e+01 # HT + 1156 78 1 -2.2897 -1.451534e+01 -1.140433e+01 -1.362441e+00 # CAT + 1157 78 2 -2.3557 -1.500953e+01 -1.012406e+01 -1.639323e+00 # CAO + 1158 78 3 -2.3537 -1.507508e+01 -9.163990e+00 -6.224780e-01 # CAM + 1159 78 4 -2.3627 -1.464643e+01 -9.484199e+00 6.712480e-01 # CAP + 1160 78 3 -2.3537 -1.415224e+01 -1.076448e+01 9.481300e-01 # CAM + 1161 78 2 -2.3557 -1.408669e+01 -1.172455e+01 -6.871400e-02 # CAO + 1162 78 5 -2.4057 -1.444464e+01 -1.243984e+01 -2.459180e+00 # CTT + 1163 78 6 0.1480 -1.534020e+01 -9.877039e+00 -2.637340e+00 # HAT + 1164 78 6 0.1480 -1.545631e+01 -8.176347e+00 -8.360730e-01 # HAT + 1165 78 6 0.1480 -1.469699e+01 -8.743575e+00 1.455671e+00 # HAT + 1166 78 6 0.1480 -1.382157e+01 -1.101150e+01 1.946148e+00 # HAT + 1167 78 6 0.1480 -1.370546e+01 -1.271219e+01 1.448800e-01 # HAT + 1168 78 7 0.0920 -1.429178e+01 -1.194446e+01 -3.417998e+00 # HT + 1169 78 7 0.0920 -1.361449e+01 -1.311908e+01 -2.265307e+00 # HT + 1170 78 7 0.0920 -1.537655e+01 -1.300452e+01 -2.487048e+00 # HT + 1171 79 1 -2.2897 1.742080e-01 -1.134914e+01 1.270981e+01 # CAT + 1172 79 2 -2.3557 -8.388630e-01 -1.185601e+01 1.188715e+01 # CAO + 1173 79 3 -2.3537 -1.509277e+00 -1.100707e+01 1.099842e+01 # CAM + 1174 79 4 -2.3627 -1.166620e+00 -9.651261e+00 1.093234e+01 # CAP + 1175 79 3 -2.3537 -1.535490e-01 -9.144390e+00 1.175500e+01 # CAM + 1176 79 2 -2.3557 5.168650e-01 -9.993328e+00 1.264374e+01 # CAO + 1177 79 5 -2.4057 8.972970e-01 -1.226478e+01 1.366837e+01 # CTT + 1178 79 6 0.1480 -1.103198e+00 -1.290192e+01 1.193812e+01 # HAT + 1179 79 6 0.1480 -2.290788e+00 -1.139809e+01 1.036379e+01 # HAT + 1180 79 6 0.1480 -1.683796e+00 -8.996364e+00 1.024675e+01 # HAT + 1181 79 6 0.1480 1.107860e-01 -8.098479e+00 1.170403e+01 # HAT + 1182 79 6 0.1480 1.298377e+00 -9.602313e+00 1.327836e+01 # HAT + 1183 79 7 0.0920 9.217550e-01 -1.327451e+01 1.325857e+01 # HT + 1184 79 7 0.0920 1.916742e+00 -1.190747e+01 1.381384e+01 # HT + 1185 79 7 0.0920 3.761020e-01 -1.227426e+01 1.462564e+01 # HT + 1186 80 1 -2.2897 -9.539257e+00 1.287627e+01 -8.732643e+00 # CAT + 1187 80 2 -2.3557 -8.340077e+00 1.276433e+01 -8.018895e+00 # CAO + 1188 80 3 -2.3537 -7.243438e+00 1.210868e+01 -8.591176e+00 # CAM + 1189 80 4 -2.3627 -7.345979e+00 1.156497e+01 -9.877203e+00 # CAP + 1190 80 3 -2.3537 -8.545159e+00 1.167692e+01 -1.059095e+01 # CAM + 1191 80 2 -2.3557 -9.641798e+00 1.233257e+01 -1.001867e+01 # CAO + 1192 80 5 -2.4057 -1.072206e+01 1.358344e+01 -8.115398e+00 # CTT + 1193 80 6 0.1480 -8.260974e+00 1.318376e+01 -7.026816e+00 # HAT + 1194 80 6 0.1480 -6.318356e+00 1.202232e+01 -8.040570e+00 # HAT + 1195 80 6 0.1480 -6.500000e+00 1.105919e+01 -1.031868e+01 # HAT + 1196 80 6 0.1480 -8.624262e+00 1.125749e+01 -1.158303e+01 # HAT + 1197 80 6 0.1480 -1.056688e+01 1.241892e+01 -1.056928e+01 # HAT + 1198 80 7 0.0920 -1.036837e+01 1.435688e+01 -7.433644e+00 # HT + 1199 80 7 0.0920 -1.132372e+01 1.404001e+01 -8.901307e+00 # HT + 1200 80 7 0.0920 -1.132912e+01 1.286463e+01 -7.565047e+00 # HT + 1201 81 1 -2.2897 -1.067394e+01 1.385396e+01 1.014313e+01 # CAT + 1202 81 2 -2.3557 -1.028730e+01 1.297778e+01 1.116432e+01 # CAO + 1203 81 3 -2.3537 -1.079180e+01 1.167219e+01 1.119479e+01 # CAM + 1204 81 4 -2.3627 -1.168292e+01 1.124278e+01 1.020408e+01 # CAP + 1205 81 3 -2.3537 -1.206955e+01 1.211896e+01 9.182895e+00 # CAM + 1206 81 2 -2.3557 -1.156506e+01 1.342455e+01 9.152419e+00 # CAO + 1207 81 5 -2.4057 -1.012981e+01 1.526213e+01 1.011026e+01 # CTT + 1208 81 6 0.1480 -9.599867e+00 1.330904e+01 1.192858e+01 # HAT + 1209 81 6 0.1480 -1.049353e+01 1.099628e+01 1.198256e+01 # HAT + 1210 81 6 0.1480 -1.207209e+01 1.023561e+01 1.022759e+01 # HAT + 1211 81 6 0.1480 -1.275699e+01 1.178770e+01 8.418632e+00 # HAT + 1212 81 6 0.1480 -1.186332e+01 1.410046e+01 8.364646e+00 # HAT + 1213 81 7 0.0920 -9.134375e+00 1.527801e+01 1.055406e+01 # HT + 1214 81 7 0.0920 -1.007214e+01 1.560590e+01 9.077497e+00 # HT + 1215 81 7 0.0920 -1.078958e+01 1.592042e+01 1.067546e+01 # HT + 1216 82 1 -2.2897 -9.909117e+00 -3.793439e+00 1.879500e-01 # CAT + 1217 82 2 -2.3557 -1.055152e+01 -2.549535e+00 1.926740e-01 # CAO + 1218 82 3 -2.3537 -1.042096e+01 -1.690100e+00 -9.047440e-01 # CAM + 1219 82 4 -2.3627 -9.648002e+00 -2.074569e+00 -2.006886e+00 # CAP + 1220 82 3 -2.3537 -9.005600e+00 -3.318473e+00 -2.011610e+00 # CAM + 1221 82 2 -2.3557 -9.136157e+00 -4.177908e+00 -9.141920e-01 # CAO + 1222 82 5 -2.4057 -1.004993e+01 -4.720401e+00 1.371593e+00 # CTT + 1223 82 6 0.1480 -1.114780e+01 -2.252945e+00 1.042897e+00 # HAT + 1224 82 6 0.1480 -1.091653e+01 -7.305170e-01 -9.011000e-01 # HAT + 1225 82 6 0.1480 -9.547286e+00 -1.411576e+00 -2.853466e+00 # HAT + 1226 82 6 0.1480 -8.409316e+00 -3.615063e+00 -2.861834e+00 # HAT + 1227 82 6 0.1480 -8.640590e+00 -5.137491e+00 -9.178370e-01 # HAT + 1228 82 7 0.0920 -1.101763e+01 -4.559403e+00 1.846724e+00 # HT + 1229 82 7 0.0920 -9.978873e+00 -5.754489e+00 1.034380e+00 # HT + 1230 82 7 0.0920 -9.255091e+00 -4.517393e+00 2.089309e+00 # HT + 1231 83 1 -2.2897 -1.083905e+01 -9.379606e+00 -4.000286e+00 # CAT + 1232 83 2 -2.3557 -9.716936e+00 -8.596094e+00 -3.705379e+00 # CAO + 1233 83 3 -2.3537 -9.728335e+00 -7.748314e+00 -2.591314e+00 # CAM + 1234 83 4 -2.3627 -1.086185e+01 -7.684047e+00 -1.772157e+00 # CAP + 1235 83 3 -2.3537 -1.198396e+01 -8.467559e+00 -2.067064e+00 # CAM + 1236 83 2 -2.3557 -1.197256e+01 -9.315338e+00 -3.181128e+00 # CAO + 1237 83 5 -2.4057 -1.082676e+01 -1.029400e+01 -5.201884e+00 # CTT + 1238 83 6 0.1480 -8.842512e+00 -8.645672e+00 -4.337300e+00 # HAT + 1239 83 6 0.1480 -8.862704e+00 -7.143891e+00 -2.363814e+00 # HAT + 1240 83 6 0.1480 -1.087064e+01 -7.030045e+00 -9.127350e-01 # HAT + 1241 83 6 0.1480 -1.285839e+01 -8.417980e+00 -1.435142e+00 # HAT + 1242 83 6 0.1480 -1.283819e+01 -9.919761e+00 -3.408628e+00 # HAT + 1243 83 7 0.0920 -9.807557e+00 -1.062977e+01 -5.393173e+00 # HT + 1244 83 7 0.0920 -1.146299e+01 -1.115764e+01 -5.008419e+00 # HT + 1245 83 7 0.0920 -1.120083e+01 -9.755576e+00 -6.072673e+00 # HT + 1246 84 1 -2.2897 -1.457376e+01 1.395836e+01 8.709069e+00 # CAT + 1247 84 2 -2.3557 -1.507878e+01 1.267616e+01 8.462217e+00 # CAO + 1248 84 3 -2.3537 -1.500554e+01 1.169185e+01 9.455081e+00 # CAM + 1249 84 4 -2.3627 -1.442730e+01 1.198974e+01 1.069479e+01 # CAP + 1250 84 3 -2.3537 -1.392228e+01 1.327194e+01 1.094165e+01 # CAM + 1251 84 2 -2.3557 -1.399551e+01 1.425624e+01 9.948784e+00 # CAO + 1252 84 5 -2.4057 -1.465275e+01 1.502000e+01 7.638195e+00 # CTT + 1253 84 6 0.1480 -1.552485e+01 1.244636e+01 7.505866e+00 # HAT + 1254 84 6 0.1480 -1.539513e+01 1.070273e+01 9.264652e+00 # HAT + 1255 84 6 0.1480 -1.437081e+01 1.123042e+01 1.146072e+01 # HAT + 1256 84 6 0.1480 -1.347620e+01 1.350174e+01 1.189800e+01 # HAT + 1257 84 6 0.1480 -1.360593e+01 1.524536e+01 1.013921e+01 # HAT + 1258 84 7 0.0920 -1.552813e+01 1.484228e+01 7.013521e+00 # HT + 1259 84 7 0.0920 -1.473311e+01 1.600192e+01 8.104532e+00 # HT + 1260 84 7 0.0920 -1.375410e+01 1.498324e+01 7.022420e+00 # HT + 1261 85 1 -2.2897 -4.326090e+00 -1.501734e+01 9.998178e+00 # CAT + 1262 85 2 -2.3557 -5.108654e+00 -1.507744e+01 1.115748e+01 # CAO + 1263 85 3 -2.3537 -6.501509e+00 -1.517717e+01 1.105743e+01 # CAM + 1264 85 4 -2.3627 -7.111800e+00 -1.521679e+01 9.798072e+00 # CAP + 1265 85 3 -2.3537 -6.329236e+00 -1.515669e+01 8.638770e+00 # CAM + 1266 85 2 -2.3557 -4.936381e+00 -1.505697e+01 8.738822e+00 # CAO + 1267 85 5 -2.4057 -2.823797e+00 -1.490978e+01 1.010609e+01 # CTT + 1268 85 6 0.1480 -4.637859e+00 -1.504688e+01 1.212898e+01 # HAT + 1269 85 6 0.1480 -7.105202e+00 -1.522353e+01 1.195175e+01 # HAT + 1270 85 6 0.1480 -8.186288e+00 -1.529373e+01 9.720888e+00 # HAT + 1271 85 6 0.1480 -6.800032e+00 -1.518726e+01 7.667267e+00 # HAT + 1272 85 6 0.1480 -4.332689e+00 -1.501060e+01 7.844503e+00 # HAT + 1273 85 7 0.0920 -2.488210e+00 -1.540379e+01 1.101792e+01 # HT + 1274 85 7 0.0920 -2.361776e+00 -1.538876e+01 9.242836e+00 # HT + 1275 85 7 0.0920 -2.535428e+00 -1.385903e+01 1.013553e+01 # HT + 1276 86 1 -2.2897 -7.760465e+00 8.226135e+00 1.389052e+01 # CAT + 1277 86 2 -2.3557 -7.924327e+00 8.977335e+00 1.506049e+01 # CAO + 1278 86 3 -2.3537 -8.141873e+00 1.035805e+01 1.498114e+01 # CAM + 1279 86 4 -2.3627 -8.195558e+00 1.098757e+01 1.373181e+01 # CAP + 1280 86 3 -2.3537 -8.031696e+00 1.023637e+01 1.256183e+01 # CAM + 1281 86 2 -2.3557 -7.814150e+00 8.855652e+00 1.264119e+01 # CAO + 1282 86 5 -2.4057 -7.525827e+00 6.736935e+00 1.397610e+01 # CTT + 1283 86 6 0.1480 -7.882913e+00 8.491708e+00 1.602426e+01 # HAT + 1284 86 6 0.1480 -8.268281e+00 1.093755e+01 1.588370e+01 # HAT + 1285 86 6 0.1480 -8.363379e+00 1.205269e+01 1.367060e+01 # HAT + 1286 86 6 0.1480 -8.073110e+00 1.072200e+01 1.159806e+01 # HAT + 1287 86 6 0.1480 -7.687742e+00 8.276156e+00 1.173863e+01 # HAT + 1288 86 7 0.0920 -8.016681e+00 6.341779e+00 1.486549e+01 # HT + 1289 86 7 0.0920 -7.935820e+00 6.252474e+00 1.308993e+01 # HT + 1290 86 7 0.0920 -6.455364e+00 6.540037e+00 1.403476e+01 # HT + 1291 87 1 -2.2897 -5.665998e+00 -1.453981e+00 -1.300441e+01 # CAT + 1292 87 2 -2.3557 -4.478425e+00 -1.864129e+00 -1.238679e+01 # CAO + 1293 87 3 -2.3537 -3.242805e+00 -1.473060e+00 -1.291623e+01 # CAM + 1294 87 4 -2.3627 -3.194760e+00 -6.718440e-01 -1.406329e+01 # CAP + 1295 87 3 -2.3537 -4.382333e+00 -2.616960e-01 -1.468091e+01 # CAM + 1296 87 2 -2.3557 -5.617952e+00 -6.527640e-01 -1.415146e+01 # CAO + 1297 87 5 -2.4057 -6.998702e+00 -1.875777e+00 -1.243336e+01 # CTT + 1298 87 6 0.1480 -4.515489e+00 -2.482211e+00 -1.150192e+01 # HAT + 1299 87 6 0.1480 -2.326678e+00 -1.789460e+00 -1.243979e+01 # HAT + 1300 87 6 0.1480 -2.241567e+00 -3.701620e-01 -1.447172e+01 # HAT + 1301 87 6 0.1480 -4.345268e+00 3.563860e-01 -1.556578e+01 # HAT + 1302 87 6 0.1480 -6.534080e+00 -3.363640e-01 -1.462791e+01 # HAT + 1303 87 7 0.0920 -6.909051e+00 -2.000661e+00 -1.135426e+01 # HT + 1304 87 7 0.0920 -7.745366e+00 -1.111623e+00 -1.264938e+01 # HT + 1305 87 7 0.0920 -7.305072e+00 -2.819954e+00 -1.288366e+01 # HT + 1306 88 1 -2.2897 -1.721862e+00 -1.003904e+01 -1.428543e+01 # CAT + 1307 88 2 -2.3557 -2.279951e+00 -1.130601e+01 -1.449359e+01 # CAO + 1308 88 3 -2.3537 -1.677385e+00 -1.243741e+01 -1.393071e+01 # CAM + 1309 88 4 -2.3627 -5.167300e-01 -1.230185e+01 -1.315967e+01 # CAP + 1310 88 3 -2.3537 4.135900e-02 -1.103489e+01 -1.295151e+01 # CAM + 1311 88 2 -2.3557 -5.612070e-01 -9.903480e+00 -1.351439e+01 # CAO + 1312 88 5 -2.4057 -2.371772e+00 -8.818738e+00 -1.489254e+01 # CTT + 1313 88 6 0.1480 -3.175313e+00 -1.141058e+01 -1.508839e+01 # HAT + 1314 88 6 0.1480 -2.107911e+00 -1.341479e+01 -1.409129e+01 # HAT + 1315 88 6 0.1480 -5.189300e-02 -1.317465e+01 -1.272545e+01 # HAT + 1316 88 6 0.1480 9.367220e-01 -1.093031e+01 -1.235671e+01 # HAT + 1317 88 6 0.1480 -1.306810e-01 -8.926105e+00 -1.335381e+01 # HAT + 1318 88 7 0.0920 -3.446204e+00 -8.982247e+00 -1.497598e+01 # HT + 1319 88 7 0.0920 -2.184794e+00 -7.952912e+00 -1.425733e+01 # HT + 1320 88 7 0.0920 -1.954127e+00 -8.638922e+00 -1.588316e+01 # HT + 1321 89 1 -2.2897 -1.216032e+01 -1.089932e+01 1.505688e+01 # CAT + 1322 89 2 -2.3557 -1.178544e+01 -9.550441e+00 1.505823e+01 # CAO + 1323 89 3 -2.3537 -1.276617e+01 -8.551349e+00 1.505863e+01 # CAM + 1324 89 4 -2.3627 -1.412176e+01 -8.901132e+00 1.505766e+01 # CAP + 1325 89 3 -2.3537 -1.449664e+01 -1.025001e+01 1.505631e+01 # CAM + 1326 89 2 -2.3557 -1.351592e+01 -1.124910e+01 1.505592e+01 # CAO + 1327 89 5 -2.4057 -1.110254e+01 -1.197691e+01 1.505645e+01 # CTT + 1328 89 6 0.1480 -1.073969e+01 -9.280609e+00 1.505898e+01 # HAT + 1329 89 6 0.1480 -1.247697e+01 -7.510788e+00 1.505967e+01 # HAT + 1330 89 6 0.1480 -1.487832e+01 -8.130403e+00 1.505797e+01 # HAT + 1331 89 6 0.1480 -1.554239e+01 -1.051984e+01 1.505556e+01 # HAT + 1332 89 6 0.1480 -1.380511e+01 -1.228966e+01 1.505487e+01 # HAT + 1333 89 7 0.0920 -1.021290e+01 -1.161368e+01 1.557094e+01 # HT + 1334 89 7 0.0920 -1.148292e+01 -1.286035e+01 1.556924e+01 # HT + 1335 89 7 0.0920 -1.084716e+01 -1.223567e+01 1.402887e+01 # HT + 1336 90 1 -2.2897 1.840033e+00 -7.284373e+00 -1.384030e+01 # CAT + 1337 90 2 -2.3557 1.841175e+00 -6.950912e+00 -1.248059e+01 # CAO + 1338 90 3 -2.3537 1.062150e+00 -5.882190e+00 -1.202129e+01 # CAM + 1339 90 4 -2.3627 2.819840e-01 -5.146931e+00 -1.292170e+01 # CAP + 1340 90 3 -2.3537 2.808430e-01 -5.480391e+00 -1.428141e+01 # CAM + 1341 90 2 -2.3557 1.059868e+00 -6.549112e+00 -1.474071e+01 # CAO + 1342 90 5 -2.4057 2.680267e+00 -8.437064e+00 -1.433569e+01 # CTT + 1343 90 6 0.1480 2.443016e+00 -7.518112e+00 -1.178599e+01 # HAT + 1344 90 6 0.1480 1.063030e+00 -5.624949e+00 -1.097238e+01 # HAT + 1345 90 6 0.1480 -3.189780e-01 -4.322488e+00 -1.256738e+01 # HAT + 1346 90 6 0.1480 -3.209990e-01 -4.913190e+00 -1.497601e+01 # HAT + 1347 90 6 0.1480 1.058987e+00 -6.806353e+00 -1.578962e+01 # HAT + 1348 90 7 0.0920 2.775980e+00 -9.183011e+00 -1.354670e+01 # HT + 1349 90 7 0.0920 2.202568e+00 -8.888125e+00 -1.520543e+01 # HT + 1350 90 7 0.0920 3.669641e+00 -8.073316e+00 -1.461304e+01 # HT + 1351 91 1 -2.2897 -5.690301e+00 1.122488e+01 -4.040437e+00 # CAT + 1352 91 2 -2.3557 -4.946904e+00 1.004591e+01 -4.172300e+00 # CAO + 1353 91 3 -2.3537 -5.264129e+00 9.127371e+00 -5.180096e+00 # CAM + 1354 91 4 -2.3627 -6.324750e+00 9.387802e+00 -6.056028e+00 # CAP + 1355 91 3 -2.3537 -7.068147e+00 1.056677e+01 -5.924164e+00 # CAM + 1356 91 2 -2.3557 -6.750923e+00 1.148531e+01 -4.916369e+00 # CAO + 1357 91 5 -2.4057 -5.348151e+00 1.221559e+01 -2.953458e+00 # CTT + 1358 91 6 0.1480 -4.128710e+00 9.845008e+00 -3.496582e+00 # HAT + 1359 91 6 0.1480 -4.690651e+00 8.217879e+00 -5.281819e+00 # HAT + 1360 91 6 0.1480 -6.569467e+00 8.679213e+00 -6.833470e+00 # HAT + 1361 91 6 0.1480 -7.886342e+00 1.076768e+01 -6.599884e+00 # HAT + 1362 91 6 0.1480 -7.324401e+00 1.239480e+01 -4.814646e+00 # HAT + 1363 91 7 0.0920 -4.280758e+00 1.216553e+01 -2.738362e+00 # HT + 1364 91 7 0.0920 -5.604752e+00 1.322193e+01 -3.284444e+00 # HT + 1365 91 7 0.0920 -5.911609e+00 1.197549e+01 -2.051811e+00 # HT + 1366 92 1 -2.2897 1.434381e+01 -1.521711e+01 -4.979180e+00 # CAT + 1367 92 2 -2.3557 1.297434e+01 -1.517910e+01 -5.267442e+00 # CAO + 1368 92 3 -2.3537 1.254027e+01 -1.511957e+01 -6.597120e+00 # CAM + 1369 92 4 -2.3627 1.347568e+01 -1.509806e+01 -7.638536e+00 # CAP + 1370 92 3 -2.3537 1.484516e+01 -1.513607e+01 -7.350274e+00 # CAM + 1371 92 2 -2.3557 1.527922e+01 -1.519560e+01 -6.020596e+00 # CAO + 1372 92 5 -2.4057 1.481198e+01 -1.528131e+01 -3.545027e+00 # CTT + 1373 92 6 0.1480 1.225274e+01 -1.519569e+01 -4.464064e+00 # HAT + 1374 92 6 0.1480 1.148382e+01 -1.509025e+01 -6.819494e+00 # HAT + 1375 92 6 0.1480 1.314083e+01 -1.505214e+01 -8.664288e+00 # HAT + 1376 92 6 0.1480 1.556676e+01 -1.511948e+01 -8.153652e+00 # HAT + 1377 92 6 0.1480 1.633567e+01 -1.522493e+01 -5.798222e+00 # HAT + 1378 92 7 0.0920 1.406889e+01 -1.580399e+01 -2.942756e+00 # HT + 1379 92 7 0.0920 1.576048e+01 -1.581610e+01 -3.495506e+00 # HT + 1380 92 7 0.0920 1.494500e+01 -1.427026e+01 -3.160097e+00 # HT + 1381 93 1 -2.2897 -1.238449e+01 -9.611322e+00 1.166292e+01 # CAT + 1382 93 2 -2.3557 -1.351364e+01 -1.039426e+01 1.139453e+01 # CAO + 1383 93 3 -2.3537 -1.478705e+01 -9.929297e+00 1.174414e+01 # CAM + 1384 93 4 -2.3627 -1.493132e+01 -8.681393e+00 1.236214e+01 # CAP + 1385 93 3 -2.3537 -1.380217e+01 -7.898453e+00 1.263053e+01 # CAM + 1386 93 2 -2.3557 -1.252876e+01 -8.363418e+00 1.228092e+01 # CAO + 1387 93 5 -2.4057 -1.101103e+01 -1.011282e+01 1.128584e+01 # CTT + 1388 93 6 0.1480 -1.340235e+01 -1.135693e+01 1.091779e+01 # HAT + 1389 93 6 0.1480 -1.565811e+01 -1.053328e+01 1.153710e+01 # HAT + 1390 93 6 0.1480 -1.591367e+01 -8.322706e+00 1.263184e+01 # HAT + 1391 93 6 0.1480 -1.391346e+01 -6.935784e+00 1.310727e+01 # HAT + 1392 93 6 0.1480 -1.165770e+01 -7.759436e+00 1.248796e+01 # HAT + 1393 93 7 0.0920 -1.108656e+01 -1.075597e+01 1.040906e+01 # HT + 1394 93 7 0.0920 -1.036374e+01 -9.265509e+00 1.105959e+01 # HT + 1395 93 7 0.0920 -1.058992e+01 -1.067950e+01 1.211629e+01 # HT + 1396 94 1 -2.2897 1.312021e+01 -1.378752e+01 2.987183e+00 # CAT + 1397 94 2 -2.3557 1.206443e+01 -1.292926e+01 3.316933e+00 # CAO + 1398 94 3 -2.3537 1.077308e+01 -1.319503e+01 2.846008e+00 # CAM + 1399 94 4 -2.3627 1.053750e+01 -1.431905e+01 2.045333e+00 # CAP + 1400 94 3 -2.3537 1.159328e+01 -1.517730e+01 1.715582e+00 # CAM + 1401 94 2 -2.3557 1.288463e+01 -1.491154e+01 2.186507e+00 # CAO + 1402 94 5 -2.4057 1.451303e+01 -1.350087e+01 3.495109e+00 # CTT + 1403 94 6 0.1480 1.224617e+01 -1.206216e+01 3.934597e+00 # HAT + 1404 94 6 0.1480 9.958623e+00 -1.253294e+01 3.100387e+00 # HAT + 1405 94 6 0.1480 9.541311e+00 -1.452407e+01 1.682048e+00 # HAT + 1406 94 6 0.1480 1.141154e+01 -1.604440e+01 1.097918e+00 # HAT + 1407 94 6 0.1480 1.369909e+01 -1.557362e+01 1.932128e+00 # HAT + 1408 94 7 0.0920 1.445186e+01 -1.298375e+01 4.452683e+00 # HT + 1409 94 7 0.0920 1.505382e+01 -1.443857e+01 3.623047e+00 # HT + 1410 94 7 0.0920 1.504025e+01 -1.287308e+01 2.776767e+00 # HT + 1411 95 1 -2.2897 6.124870e+00 -1.159902e+01 -1.509942e+01 # CAT + 1412 95 2 -2.3557 7.518826e+00 -1.146922e+01 -1.510562e+01 # CAO + 1413 95 3 -2.3537 8.328187e+00 -1.261152e+01 -1.511493e+01 # CAM + 1414 95 4 -2.3627 7.743591e+00 -1.388362e+01 -1.511804e+01 # CAP + 1415 95 3 -2.3537 6.349635e+00 -1.401342e+01 -1.511183e+01 # CAM + 1416 95 2 -2.3557 5.540275e+00 -1.287112e+01 -1.510252e+01 # CAO + 1417 95 5 -2.4057 5.251916e+00 -1.036697e+01 -1.508937e+01 # CTT + 1418 95 6 0.1480 7.969799e+00 -1.048789e+01 -1.510323e+01 # HAT + 1419 95 6 0.1480 9.403524e+00 -1.251139e+01 -1.511972e+01 # HAT + 1420 95 6 0.1480 8.367955e+00 -1.476483e+01 -1.512522e+01 # HAT + 1421 95 6 0.1480 5.898662e+00 -1.499476e+01 -1.511422e+01 # HAT + 1422 95 6 0.1480 4.464937e+00 -1.297126e+01 -1.509773e+01 # HAT + 1423 95 7 0.0920 5.765101e+00 -9.553253e+00 -1.560182e+01 # HT + 1424 95 7 0.0920 4.313015e+00 -1.058213e+01 -1.559954e+01 # HT + 1425 95 7 0.0920 5.046593e+00 -1.007491e+01 -1.405950e+01 # HT + 1426 96 1 -2.2897 8.018714e+00 -6.023042e+00 6.060337e+00 # CAT + 1427 96 2 -2.3557 8.013557e+00 -4.831507e+00 6.795334e+00 # CAO + 1428 96 3 -2.3537 7.171494e+00 -3.779107e+00 6.416674e+00 # CAM + 1429 96 4 -2.3627 6.334588e+00 -3.918241e+00 5.303018e+00 # CAP + 1430 96 3 -2.3537 6.339745e+00 -5.109775e+00 4.568022e+00 # CAM + 1431 96 2 -2.3557 7.181807e+00 -6.162175e+00 4.946681e+00 # CAO + 1432 96 5 -2.4057 8.926939e+00 -7.158131e+00 6.468749e+00 # CTT + 1433 96 6 0.1480 8.659170e+00 -4.724176e+00 7.654440e+00 # HAT + 1434 96 6 0.1480 7.167515e+00 -2.859923e+00 6.983671e+00 # HAT + 1435 96 6 0.1480 5.684996e+00 -3.106389e+00 5.010909e+00 # HAT + 1436 96 6 0.1480 5.694131e+00 -5.217106e+00 3.708915e+00 # HAT + 1437 96 6 0.1480 7.185785e+00 -7.081359e+00 4.379684e+00 # HAT + 1438 96 7 0.0920 9.080333e+00 -7.131256e+00 7.547567e+00 # HT + 1439 96 7 0.0920 8.469901e+00 -8.107851e+00 6.190816e+00 # HT + 1440 96 7 0.0920 9.887120e+00 -7.055818e+00 5.963097e+00 # HT + 1441 97 1 -2.2897 1.159832e+01 -1.139460e+01 -4.402062e+00 # CAT + 1442 97 2 -2.3557 1.161785e+01 -1.181286e+01 -5.737980e+00 # CAO + 1443 97 3 -2.3537 1.109937e+01 -1.098275e+01 -6.739033e+00 # CAM + 1444 97 4 -2.3627 1.056137e+01 -9.734388e+00 -6.404167e+00 # CAP + 1445 97 3 -2.3537 1.054184e+01 -9.316128e+00 -5.068249e+00 # CAM + 1446 97 2 -2.3557 1.106032e+01 -1.014623e+01 -4.067197e+00 # CAO + 1447 97 5 -2.4057 1.215753e+01 -1.228993e+01 -3.322355e+00 # CTT + 1448 97 6 0.1480 1.203288e+01 -1.277589e+01 -5.996305e+00 # HAT + 1449 97 6 0.1480 1.111444e+01 -1.130541e+01 -7.769598e+00 # HAT + 1450 97 6 0.1480 1.016140e+01 -9.094019e+00 -7.176408e+00 # HAT + 1451 97 6 0.1480 1.012681e+01 -8.353102e+00 -4.809925e+00 # HAT + 1452 97 6 0.1480 1.104525e+01 -9.823576e+00 -3.036631e+00 # HAT + 1453 97 7 0.0920 1.295923e+01 -1.290170e+01 -3.736023e+00 # HT + 1454 97 7 0.0920 1.255005e+01 -1.167854e+01 -2.509812e+00 # HT + 1455 97 7 0.0920 1.136756e+01 -1.293677e+01 -2.940732e+00 # HT + 1456 98 1 -2.2897 1.097270e+01 -1.040427e+01 7.794839e+00 # CAT + 1457 98 2 -2.3557 9.768431e+00 -1.080133e+01 7.201475e+00 # CAO + 1458 98 3 -2.3537 9.740620e+00 -1.191187e+01 6.349457e+00 # CAM + 1459 98 4 -2.3627 1.091708e+01 -1.262535e+01 6.090803e+00 # CAP + 1460 98 3 -2.3537 1.212134e+01 -1.222828e+01 6.684167e+00 # CAM + 1461 98 2 -2.3557 1.214916e+01 -1.111775e+01 7.536185e+00 # CAO + 1462 98 5 -2.4057 1.100270e+01 -9.206479e+00 8.713800e+00 # CTT + 1463 98 6 0.1480 8.860879e+00 -1.025094e+01 7.401008e+00 # HAT + 1464 98 6 0.1480 8.811613e+00 -1.221818e+01 5.891719e+00 # HAT + 1465 98 6 0.1480 1.089562e+01 -1.348205e+01 5.433532e+00 # HAT + 1466 98 6 0.1480 1.302890e+01 -1.277868e+01 6.484634e+00 # HAT + 1467 98 6 0.1480 1.307816e+01 -1.081144e+01 7.993922e+00 # HAT + 1468 98 7 0.0920 1.003925e+01 -9.107301e+00 9.213841e+00 # HT + 1469 98 7 0.0920 1.178650e+01 -9.339522e+00 9.459490e+00 # HT + 1470 98 7 0.0920 1.120402e+01 -8.306753e+00 8.132370e+00 # HT + 1471 99 1 -2.2897 5.902108e+00 -1.280254e+01 -5.594853e+00 # CAT + 1472 99 2 -2.3557 6.108247e+00 -1.215230e+01 -6.817429e+00 # CAO + 1473 99 3 -2.3537 5.895951e+00 -1.077236e+01 -6.920873e+00 # CAM + 1474 99 4 -2.3627 5.477516e+00 -1.004266e+01 -5.801742e+00 # CAP + 1475 99 3 -2.3537 5.271377e+00 -1.069290e+01 -4.579166e+00 # CAM + 1476 99 2 -2.3557 5.483673e+00 -1.207284e+01 -4.475722e+00 # CAO + 1477 99 5 -2.4057 6.131085e+00 -1.429090e+01 -5.483281e+00 # CTT + 1478 99 6 0.1480 6.431040e+00 -1.271520e+01 -7.680759e+00 # HAT + 1479 99 6 0.1480 6.054972e+00 -1.027074e+01 -7.864003e+00 # HAT + 1480 99 6 0.1480 5.313744e+00 -8.978137e+00 -5.881541e+00 # HAT + 1481 99 6 0.1480 4.948584e+00 -1.012999e+01 -3.715835e+00 # HAT + 1482 99 6 0.1480 5.324652e+00 -1.257446e+01 -3.532592e+00 # HAT + 1483 99 7 0.0920 6.905706e+00 -1.459368e+01 -6.187828e+00 # HT + 1484 99 7 0.0920 6.447323e+00 -1.453537e+01 -4.469217e+00 # HT + 1485 99 7 0.0920 5.205750e+00 -1.481955e+01 -5.712147e+00 # HT + 1486 100 1 -2.2897 5.216360e-01 7.390706e+00 3.157980e-01 # CAT + 1487 100 2 -2.3557 -6.668380e-01 6.672686e+00 4.946240e-01 # CAO + 1488 100 3 -2.3537 -7.306110e-01 5.651322e+00 1.450003e+00 # CAM + 1489 100 4 -2.3627 3.940880e-01 5.347977e+00 2.226554e+00 # CAP + 1490 100 3 -2.3537 1.582561e+00 6.065997e+00 2.047728e+00 # CAM + 1491 100 2 -2.3557 1.646335e+00 7.087361e+00 1.092350e+00 # CAO + 1492 100 5 -2.4057 5.904210e-01 8.492320e+00 -7.146450e-01 # CTT + 1493 100 6 0.1480 -1.534463e+00 6.906695e+00 -1.044300e-01 # HAT + 1494 100 6 0.1480 -1.647434e+00 5.097421e+00 1.587954e+00 # HAT + 1495 100 6 0.1480 3.448910e-01 4.560067e+00 2.963560e+00 # HAT + 1496 100 6 0.1480 2.450187e+00 5.831987e+00 2.646783e+00 # HAT + 1497 100 6 0.1480 2.563158e+00 7.641262e+00 9.543990e-01 # HAT + 1498 100 7 0.0920 -3.941800e-01 8.945800e+00 -8.287500e-01 # HT + 1499 100 7 0.0920 1.303490e+00 9.250136e+00 -3.900710e-01 # HT + 1500 100 7 0.0920 9.116740e-01 8.077362e+00 -1.670001e+00 # HT + 1501 101 1 -2.2897 3.742060e+00 9.359838e+00 -1.051156e+01 # CAT + 1502 101 2 -2.3557 3.067834e+00 9.013687e+00 -1.168867e+01 # CAO + 1503 101 3 -2.3537 3.009054e+00 7.674891e+00 -1.209385e+01 # CAM + 1504 101 4 -2.3627 3.624502e+00 6.682247e+00 -1.132192e+01 # CAP + 1505 101 3 -2.3537 4.298729e+00 7.028398e+00 -1.014481e+01 # CAM + 1506 101 2 -2.3557 4.357508e+00 8.367192e+00 -9.739626e+00 # CAO + 1507 101 5 -2.4057 3.805458e+00 1.080382e+01 -1.007454e+01 # CTT + 1508 101 6 0.1480 2.593060e+00 9.779441e+00 -1.228416e+01 # HAT + 1509 101 6 0.1480 2.488937e+00 7.407861e+00 -1.300191e+01 # HAT + 1510 101 6 0.1480 3.579158e+00 5.649462e+00 -1.163449e+01 # HAT + 1511 101 6 0.1480 4.773503e+00 6.262642e+00 -9.549317e+00 # HAT + 1512 101 6 0.1480 4.877626e+00 8.634223e+00 -8.831567e+00 # HAT + 1513 101 7 0.0920 2.912960e+00 1.132726e+01 -1.041742e+01 # HT + 1514 101 7 0.0920 3.859470e+00 1.085279e+01 -8.986983e+00 # HT + 1515 101 7 0.0920 4.689772e+00 1.127525e+01 -1.050332e+01 # HT + 1516 102 1 -2.2897 5.790821e+00 1.743258e+00 -1.151733e+01 # CAT + 1517 102 2 -2.3557 6.762540e+00 1.054323e+00 -1.225295e+01 # CAO + 1518 102 3 -2.3537 7.158187e+00 -2.298010e-01 -1.185990e+01 # CAM + 1519 102 4 -2.3627 6.582116e+00 -8.249900e-01 -1.073123e+01 # CAP + 1520 102 3 -2.3537 5.610397e+00 -1.360550e-01 -9.995616e+00 # CAM + 1521 102 2 -2.3557 5.214749e+00 1.148068e+00 -1.038867e+01 # CAO + 1522 102 5 -2.4057 5.364088e+00 3.128277e+00 -1.194127e+01 # CTT + 1523 102 6 0.1480 7.206939e+00 1.513469e+00 -1.312364e+01 # HAT + 1524 102 6 0.1480 7.907799e+00 -7.612650e-01 -1.242737e+01 # HAT + 1525 102 6 0.1480 6.887329e+00 -1.815600e+00 -1.042802e+01 # HAT + 1526 102 6 0.1480 5.165998e+00 -5.952020e-01 -9.124929e+00 # HAT + 1527 102 6 0.1480 4.465138e+00 1.679532e+00 -9.821192e+00 # HAT + 1528 102 7 0.0920 5.461378e+00 3.223926e+00 -1.302270e+01 # HT + 1529 102 7 0.0920 4.325433e+00 3.292727e+00 -1.165447e+01 # HT + 1530 102 7 0.0920 5.996975e+00 3.869380e+00 -1.145309e+01 # HT + 1531 103 1 -2.2897 1.440694e+01 -6.070601e+00 1.167603e+01 # CAT + 1532 103 2 -2.3557 1.413987e+01 -7.085700e+00 1.260244e+01 # CAO + 1533 103 3 -2.3537 1.447403e+01 -6.908831e+00 1.395042e+01 # CAM + 1534 103 4 -2.3627 1.507527e+01 -5.716864e+00 1.437199e+01 # CAP + 1535 103 3 -2.3537 1.534235e+01 -4.701764e+00 1.344557e+01 # CAM + 1536 103 2 -2.3557 1.500819e+01 -4.878633e+00 1.209760e+01 # CAO + 1537 103 5 -2.4057 1.404652e+01 -6.261366e+00 1.022213e+01 # CTT + 1538 103 6 0.1480 1.367605e+01 -8.005218e+00 1.227723e+01 # HAT + 1539 103 6 0.1480 1.426800e+01 -7.691908e+00 1.466508e+01 # HAT + 1540 103 6 0.1480 1.533306e+01 -5.580422e+00 1.541186e+01 # HAT + 1541 103 6 0.1480 1.580617e+01 -3.782246e+00 1.377078e+01 # HAT + 1542 103 6 0.1480 1.521422e+01 -4.095556e+00 1.138293e+01 # HAT + 1543 103 7 0.0920 1.317731e+01 -6.914573e+00 1.014543e+01 # HT + 1544 103 7 0.0920 1.381458e+01 -5.294776e+00 9.774916e+00 # HT + 1545 103 7 0.0920 1.488714e+01 -6.712652e+00 9.695068e+00 # HT + 1546 104 1 -2.2897 -2.482202e+00 1.402149e+01 1.418476e+01 # CAT + 1547 104 2 -2.3557 -1.144630e+00 1.434808e+01 1.443822e+01 # CAO + 1548 104 3 -2.3537 -1.453870e-01 1.395269e+01 1.354090e+01 # CAM + 1549 104 4 -2.3627 -4.837150e-01 1.323071e+01 1.239013e+01 # CAP + 1550 104 3 -2.3537 -1.821287e+00 1.290411e+01 1.213667e+01 # CAM + 1551 104 2 -2.3557 -2.820530e+00 1.329950e+01 1.303399e+01 # CAO + 1552 104 5 -2.4057 -3.559957e+00 1.444794e+01 1.515258e+01 # CTT + 1553 104 6 0.1480 -8.836330e-01 1.490503e+01 1.532595e+01 # HAT + 1554 104 6 0.1480 8.864550e-01 1.420463e+01 1.373642e+01 # HAT + 1555 104 6 0.1480 2.871300e-01 1.292569e+01 1.169791e+01 # HAT + 1556 104 6 0.1480 -2.082284e+00 1.234716e+01 1.124893e+01 # HAT + 1557 104 6 0.1480 -3.852372e+00 1.304756e+01 1.283847e+01 # HAT + 1558 104 7 0.0920 -3.263036e+00 1.537540e+01 1.564224e+01 # HT + 1559 104 7 0.0920 -4.493003e+00 1.460583e+01 1.461166e+01 # HT + 1560 104 7 0.0920 -3.702920e+00 1.367087e+01 1.590347e+01 # HT + 1561 105 1 -2.2897 -1.333497e+01 8.938620e-01 8.000506e+00 # CAT + 1562 105 2 -2.3557 -1.282236e+01 -3.141580e-01 7.512741e+00 # CAO + 1563 105 3 -2.3537 -1.327348e+01 -8.226600e-01 6.288849e+00 # CAM + 1564 105 4 -2.3627 -1.423722e+01 -1.231420e-01 5.552723e+00 # CAP + 1565 105 3 -2.3537 -1.474983e+01 1.084878e+00 6.040489e+00 # CAM + 1566 105 2 -2.3557 -1.429871e+01 1.593380e+00 7.264380e+00 # CAO + 1567 105 5 -2.4057 -1.284840e+01 1.442318e+00 9.320561e+00 # CTT + 1568 105 6 0.1480 -1.207890e+01 -8.537860e-01 8.080609e+00 # HAT + 1569 105 6 0.1480 -1.287804e+01 -1.754561e+00 5.912572e+00 # HAT + 1570 105 6 0.1480 -1.458523e+01 -5.154150e-01 4.608578e+00 # HAT + 1571 105 6 0.1480 -1.549329e+01 1.624507e+00 5.472620e+00 # HAT + 1572 105 6 0.1480 -1.469415e+01 2.525282e+00 7.640656e+00 # HAT + 1573 105 7 0.0920 -1.181698e+01 1.130972e+00 9.485945e+00 # HT + 1574 105 7 0.0920 -1.290050e+01 2.530941e+00 9.303670e+00 # HT + 1575 105 7 0.0920 -1.347598e+01 1.061508e+00 1.012631e+01 # HT + 1576 106 1 -2.2897 -1.090187e+01 -1.510898e+01 -2.175142e+00 # CAT + 1577 106 2 -2.3557 -9.518208e+00 -1.529910e+01 -2.271776e+00 # CAO + 1578 106 3 -2.3537 -8.743893e+00 -1.540864e+01 -1.110553e+00 # CAM + 1579 106 4 -2.3627 -9.353240e+00 -1.532806e+01 1.473030e-01 # CAP + 1580 106 3 -2.3537 -1.073690e+01 -1.513795e+01 2.439370e-01 # CAM + 1581 106 2 -2.3557 -1.151121e+01 -1.502841e+01 -9.172850e-01 # CAO + 1582 106 5 -2.4057 -1.173702e+01 -1.499084e+01 -3.427603e+00 # CTT + 1583 106 6 0.1480 -9.048140e+00 -1.536126e+01 -3.242123e+00 # HAT + 1584 106 6 0.1480 -7.676498e+00 -1.555530e+01 -1.185100e+00 # HAT + 1585 106 6 0.1480 -8.755912e+00 -1.541257e+01 1.043104e+00 # HAT + 1586 106 6 0.1480 -1.120697e+01 -1.507579e+01 1.214285e+00 # HAT + 1587 106 6 0.1480 -1.257861e+01 -1.488175e+01 -8.427380e-01 # HAT + 1588 106 7 0.0920 -1.127693e+01 -1.557064e+01 -4.227756e+00 # HT + 1589 106 7 0.0920 -1.273963e+01 -1.537198e+01 -3.233676e+00 # HT + 1590 106 7 0.0920 -1.179822e+01 -1.394448e+01 -3.726759e+00 # HT + 1591 107 1 -2.2897 1.485156e+01 -8.683868e+00 3.837336e+00 # CAT + 1592 107 2 -2.3557 1.448918e+01 -9.659552e+00 2.901002e+00 # CAO + 1593 107 3 -2.3537 1.461091e+01 -9.395029e+00 1.531618e+00 # CAM + 1594 107 4 -2.3627 1.509501e+01 -8.154824e+00 1.098569e+00 # CAP + 1595 107 3 -2.3537 1.545739e+01 -7.179140e+00 2.034904e+00 # CAM + 1596 107 2 -2.3557 1.533567e+01 -7.443662e+00 3.404287e+00 # CAO + 1597 107 5 -2.4057 1.472027e+01 -8.969174e+00 5.314314e+00 # CTT + 1598 107 6 0.1480 1.411573e+01 -1.061628e+01 3.235068e+00 # HAT + 1599 107 6 0.1480 1.433136e+01 -1.014770e+01 8.093030e-01 # HAT + 1600 107 6 0.1480 1.518891e+01 -7.950763e+00 4.218700e-02 # HAT + 1601 107 6 0.1480 1.583085e+01 -6.222410e+00 1.700837e+00 # HAT + 1602 107 6 0.1480 1.561522e+01 -6.690992e+00 4.126602e+00 # HAT + 1603 107 7 0.0920 1.485736e+01 -1.003575e+01 5.492456e+00 # HT + 1604 107 7 0.0920 1.547861e+01 -8.409473e+00 5.861824e+00 # HT + 1605 107 7 0.0920 1.372995e+01 -8.668546e+00 5.656340e+00 # HT + 1606 108 1 -2.2897 7.053604e+00 -1.198305e+00 1.433600e+01 # CAT + 1607 108 2 -2.3557 5.850128e+00 -8.496370e-01 1.371143e+01 # CAO + 1608 108 3 -2.3537 5.410047e+00 4.792340e-01 1.373219e+01 # CAM + 1609 108 4 -2.3627 6.173441e+00 1.459437e+00 1.437750e+01 # CAP + 1610 108 3 -2.3537 7.376917e+00 1.110769e+00 1.500206e+01 # CAM + 1611 108 2 -2.3557 7.816999e+00 -2.181010e-01 1.498131e+01 # CAO + 1612 108 5 -2.4057 7.528264e+00 -2.631586e+00 1.431361e+01 # CTT + 1613 108 6 0.1480 5.261224e+00 -1.605793e+00 1.321362e+01 # HAT + 1614 108 6 0.1480 4.481651e+00 7.482070e-01 1.325038e+01 # HAT + 1615 108 6 0.1480 5.833950e+00 2.484566e+00 1.439351e+01 # HAT + 1616 108 6 0.1480 7.965822e+00 1.866926e+00 1.549988e+01 # HAT + 1617 108 6 0.1480 8.745395e+00 -4.870740e-01 1.546311e+01 # HAT + 1618 108 7 0.0920 7.174268e+00 -3.117948e+00 1.340463e+01 # HT + 1619 108 7 0.0920 8.617781e+00 -2.654456e+00 1.433661e+01 # HT + 1620 108 7 0.0920 7.135865e+00 -3.158447e+00 1.518340e+01 # HT + 1621 109 1 -2.2897 -5.062468e+00 -8.672008e+00 -5.149188e+00 # CAT + 1622 109 2 -2.3557 -5.546499e+00 -9.500329e+00 -6.168795e+00 # CAO + 1623 109 3 -2.3537 -4.847095e+00 -9.604849e+00 -7.377063e+00 # CAM + 1624 109 4 -2.3627 -3.663660e+00 -8.881048e+00 -7.565723e+00 # CAP + 1625 109 3 -2.3537 -3.179628e+00 -8.052728e+00 -6.546116e+00 # CAM + 1626 109 2 -2.3557 -3.879032e+00 -7.948208e+00 -5.337849e+00 # CAO + 1627 109 5 -2.4057 -5.816824e+00 -8.559276e+00 -3.845986e+00 # CTT + 1628 109 6 0.1480 -6.459435e+00 -1.005869e+01 -6.023257e+00 # HAT + 1629 109 6 0.1480 -5.220491e+00 -1.024384e+01 -8.163617e+00 # HAT + 1630 109 6 0.1480 -3.124119e+00 -8.961678e+00 -8.497815e+00 # HAT + 1631 109 6 0.1480 -2.266692e+00 -7.494367e+00 -6.691654e+00 # HAT + 1632 109 6 0.1480 -3.505636e+00 -7.309217e+00 -4.551295e+00 # HAT + 1633 109 7 0.0920 -6.339824e+00 -9.494515e+00 -3.646235e+00 # HT + 1634 109 7 0.0920 -5.116047e+00 -8.355392e+00 -3.036392e+00 # HT + 1635 109 7 0.0920 -6.539911e+00 -7.746431e+00 -3.913271e+00 # HT + 1636 110 1 -2.2897 7.826080e-01 -1.315461e+01 9.963484e+00 # CAT + 1637 110 2 -2.3557 -7.975300e-02 -1.240422e+01 9.155251e+00 # CAO + 1638 110 3 -2.3537 7.728100e-02 -1.101605e+01 9.064012e+00 # CAM + 1639 110 4 -2.3627 1.096675e+00 -1.037827e+01 9.781006e+00 # CAP + 1640 110 3 -2.3537 1.959035e+00 -1.112867e+01 1.058924e+01 # CAM + 1641 110 2 -2.3557 1.802002e+00 -1.251684e+01 1.068048e+01 # CAO + 1642 110 5 -2.4057 6.132360e-01 -1.465185e+01 1.006189e+01 # CTT + 1643 110 6 0.1480 -8.661420e-01 -1.289621e+01 8.602142e+00 # HAT + 1644 110 6 0.1480 -5.879680e-01 -1.043717e+01 8.440518e+00 # HAT + 1645 110 6 0.1480 1.217816e+00 -9.307398e+00 9.710622e+00 # HAT + 1646 110 6 0.1480 2.745425e+00 -1.063667e+01 1.114235e+01 # HAT + 1647 110 6 0.1480 2.467251e+00 -1.309572e+01 1.130397e+01 # HAT + 1648 110 7 0.0920 2.007540e-01 -1.503353e+01 9.127930e+00 # HT + 1649 110 7 0.0920 1.581799e+00 -1.511618e+01 1.024732e+01 # HT + 1650 110 7 0.0920 -6.528200e-02 -1.488817e+01 1.088157e+01 # HT + 1651 111 1 -2.2897 -1.291260e+01 -8.264540e-01 -9.041030e+00 # CAT + 1652 111 2 -2.3557 -1.280581e+01 -3.265760e-01 -7.737680e+00 # CAO + 1653 111 3 -2.3537 -1.336279e+01 -1.037064e+00 -6.667642e+00 # CAM + 1654 111 4 -2.3627 -1.402655e+01 -2.247430e+00 -6.900953e+00 # CAP + 1655 111 3 -2.3537 -1.413334e+01 -2.747308e+00 -8.204302e+00 # CAM + 1656 111 2 -2.3557 -1.357636e+01 -2.036820e+00 -9.274340e+00 # CAO + 1657 111 5 -2.4057 -1.231185e+01 -6.014200e-02 -1.019514e+01 # CTT + 1658 111 6 0.1480 -1.229377e+01 6.071350e-01 -7.557698e+00 # HAT + 1659 111 6 0.1480 -1.328041e+01 -6.514440e-01 -5.662201e+00 # HAT + 1660 111 6 0.1480 -1.445622e+01 -2.795521e+00 -6.075494e+00 # HAT + 1661 111 6 0.1480 -1.464538e+01 -3.681019e+00 -8.384284e+00 # HAT + 1662 111 6 0.1480 -1.365873e+01 -2.422440e+00 -1.027978e+01 # HAT + 1663 111 7 0.0920 -1.144219e+01 4.977990e-01 -9.848044e+00 # HT + 1664 111 7 0.0920 -1.200770e+01 -7.573720e-01 -1.097582e+01 # HT + 1665 111 7 0.0920 -1.305142e+01 6.331000e-01 -1.059585e+01 # HT + 1666 112 1 -2.2897 3.669180e+00 -1.289656e+01 1.859004e+00 # CAT + 1667 112 2 -2.3557 3.066123e+00 -1.258217e+01 6.352890e-01 # CAO + 1668 112 3 -2.3537 3.856992e+00 -1.222813e+01 -4.643390e-01 # CAM + 1669 112 4 -2.3627 5.250918e+00 -1.218848e+01 -3.402530e-01 # CAP + 1670 112 3 -2.3537 5.853976e+00 -1.250288e+01 8.834620e-01 # CAM + 1671 112 2 -2.3557 5.063107e+00 -1.285692e+01 1.983090e+00 # CAO + 1672 112 5 -2.4057 2.816172e+00 -1.327842e+01 3.045032e+00 # CTT + 1673 112 6 0.1480 1.990809e+00 -1.261275e+01 5.395650e-01 # HAT + 1674 112 6 0.1480 3.391777e+00 -1.198559e+01 -1.408348e+00 # HAT + 1675 112 6 0.1480 5.861018e+00 -1.191537e+01 -1.188538e+00 # HAT + 1676 112 6 0.1480 6.929291e+00 -1.247229e+01 9.791860e-01 # HAT + 1677 112 6 0.1480 5.528323e+00 -1.309945e+01 2.927099e+00 # HAT + 1678 112 7 0.0920 1.904314e+00 -1.376323e+01 2.696357e+00 # HT + 1679 112 7 0.0920 3.369928e+00 -1.396487e+01 3.685527e+00 # HT + 1680 112 7 0.0920 2.557650e+00 -1.238319e+01 3.610567e+00 # HT + 1681 113 1 -2.2897 2.691100e+00 -3.765048e+00 1.065112e+01 # CAT + 1682 113 2 -2.3557 3.376504e+00 -2.573420e+00 1.038608e+01 # CAO + 1683 113 3 -2.3537 3.142258e+00 -1.440821e+00 1.117498e+01 # CAM + 1684 113 4 -2.3627 2.222609e+00 -1.499851e+00 1.222890e+01 # CAP + 1685 113 3 -2.3537 1.537206e+00 -2.691479e+00 1.249394e+01 # CAM + 1686 113 2 -2.3557 1.771451e+00 -3.824078e+00 1.170505e+01 # CAO + 1687 113 5 -2.4057 2.943750e+00 -4.986637e+00 9.800245e+00 # CTT + 1688 113 6 0.1480 4.085947e+00 -2.527883e+00 9.573056e+00 # HAT + 1689 113 6 0.1480 3.670999e+00 -5.215650e-01 1.097052e+01 # HAT + 1690 113 6 0.1480 2.041906e+00 -6.261320e-01 1.283748e+01 # HAT + 1691 113 6 0.1480 8.277620e-01 -2.737016e+00 1.330697e+01 # HAT + 1692 113 6 0.1480 1.242710e+00 -4.743334e+00 1.190950e+01 # HAT + 1693 113 7 0.0920 3.968988e+00 -4.966915e+00 9.430650e+00 # HT + 1694 113 7 0.0920 2.791017e+00 -5.884790e+00 1.039865e+01 # HT + 1695 113 7 0.0920 2.253882e+00 -4.991268e+00 8.956349e+00 # HT + 1696 114 1 -2.2897 1.480026e+01 7.773135e+00 -6.883086e+00 # CAT + 1697 114 2 -2.3557 1.483961e+01 9.031244e+00 -7.495959e+00 # CAO + 1698 114 3 -2.3537 1.500052e+01 9.129373e+00 -8.883216e+00 # CAM + 1699 114 4 -2.3627 1.512208e+01 7.969393e+00 -9.657598e+00 # CAP + 1700 114 3 -2.3537 1.508273e+01 6.711284e+00 -9.044725e+00 # CAM + 1701 114 2 -2.3557 1.492182e+01 6.613154e+00 -7.657469e+00 # CAO + 1702 114 5 -2.4057 1.462671e+01 7.667296e+00 -5.386832e+00 # CTT + 1703 114 6 0.1480 1.474583e+01 9.926085e+00 -6.898579e+00 # HAT + 1704 114 6 0.1480 1.503087e+01 1.009991e+01 -9.356003e+00 # HAT + 1705 114 6 0.1480 1.524621e+01 8.045092e+00 -1.072777e+01 # HAT + 1706 114 6 0.1480 1.517651e+01 5.816442e+00 -9.642106e+00 # HAT + 1707 114 6 0.1480 1.489147e+01 5.642613e+00 -7.184681e+00 # HAT + 1708 114 7 0.0920 1.404468e+01 8.515801e+00 -5.027129e+00 # HT + 1709 114 7 0.0920 1.410502e+01 6.741132e+00 -5.145663e+00 # HT + 1710 114 7 0.0920 1.560496e+01 7.668446e+00 -4.906090e+00 # HT + 1711 115 1 -2.2897 8.921963e+00 3.704670e-01 8.737032e+00 # CAT + 1712 115 2 -2.3557 9.429860e+00 -9.116820e-01 8.978142e+00 # CAO + 1713 115 3 -2.3537 1.039505e+01 -1.106532e+00 9.973352e+00 # CAM + 1714 115 4 -2.3627 1.085234e+01 -1.923400e-02 1.072745e+01 # CAP + 1715 115 3 -2.3537 1.034445e+01 1.262915e+00 1.048634e+01 # CAM + 1716 115 2 -2.3557 9.379256e+00 1.457766e+00 9.491131e+00 # CAO + 1717 115 5 -2.4057 7.880937e+00 5.806270e-01 7.663628e+00 # CTT + 1718 115 6 0.1480 9.077092e+00 -1.750455e+00 8.396409e+00 # HAT + 1719 115 6 0.1480 1.078686e+01 -2.095618e+00 1.015935e+01 # HAT + 1720 115 6 0.1480 1.159692e+01 -1.695470e-01 1.149518e+01 # HAT + 1721 115 6 0.1480 1.069721e+01 2.101689e+00 1.106807e+01 # HAT + 1722 115 6 0.1480 8.987449e+00 2.446852e+00 9.305132e+00 # HAT + 1723 115 7 0.0920 7.276682e+00 -3.207680e-01 7.561331e+00 # HT + 1724 115 7 0.0920 7.239543e+00 1.418202e+00 7.937820e+00 # HT + 1725 115 7 0.0920 8.374047e+00 7.963680e-01 6.715789e+00 # HT + 1726 116 1 -2.2897 -8.783770e+00 2.631318e+00 4.578235e+00 # CAT + 1727 116 2 -2.3557 -9.809750e+00 3.577836e+00 4.471148e+00 # CAO + 1728 116 3 -2.3537 -1.114535e+01 3.180924e+00 4.607636e+00 # CAM + 1729 116 4 -2.3627 -1.145497e+01 1.837493e+00 4.851210e+00 # CAP + 1730 116 3 -2.3537 -1.042899e+01 8.909750e-01 4.958296e+00 # CAM + 1731 116 2 -2.3557 -9.093392e+00 1.287887e+00 4.821809e+00 # CAO + 1732 116 5 -2.4057 -7.343228e+00 3.059416e+00 4.431024e+00 # CTT + 1733 116 6 0.1480 -9.570899e+00 4.614197e+00 4.283249e+00 # HAT + 1734 116 6 0.1480 -1.193682e+01 3.911095e+00 4.525026e+00 # HAT + 1735 116 6 0.1480 -1.248530e+01 1.531303e+00 4.956500e+00 # HAT + 1736 116 6 0.1480 -1.066784e+01 -1.453870e-01 5.146196e+00 # HAT + 1737 116 6 0.1480 -8.301921e+00 5.577150e-01 4.904418e+00 # HAT + 1738 116 7 0.0920 -7.232752e+00 4.088554e+00 4.772741e+00 # HT + 1739 116 7 0.0920 -6.707007e+00 2.407929e+00 5.030095e+00 # HT + 1740 116 7 0.0920 -7.048587e+00 2.991229e+00 3.383819e+00 # HT + 1741 117 1 -2.2897 9.838466e+00 7.528724e+00 3.793763e+00 # CAT + 1742 117 2 -2.3557 1.040992e+01 6.412119e+00 4.415559e+00 # CAO + 1743 117 3 -2.3537 1.053779e+01 6.375987e+00 5.809240e+00 # CAM + 1744 117 4 -2.3627 1.009419e+01 7.456458e+00 6.581124e+00 # CAP + 1745 117 3 -2.3537 9.522736e+00 8.573063e+00 5.959328e+00 # CAM + 1746 117 2 -2.3557 9.394872e+00 8.609195e+00 4.565648e+00 # CAO + 1747 117 5 -2.4057 9.700556e+00 7.567695e+00 2.290580e+00 # CTT + 1748 117 6 0.1480 1.075213e+01 5.578613e+00 3.820106e+00 # HAT + 1749 117 6 0.1480 1.097863e+01 5.514607e+00 6.288912e+00 # HAT + 1750 117 6 0.1480 1.019283e+01 7.428585e+00 7.656249e+00 # HAT + 1751 117 6 0.1480 9.180535e+00 9.406569e+00 6.554782e+00 # HAT + 1752 117 6 0.1480 8.954032e+00 9.470576e+00 4.085976e+00 # HAT + 1753 117 7 0.0920 9.575607e+00 6.553868e+00 1.910259e+00 # HT + 1754 117 7 0.0920 8.830646e+00 8.166332e+00 2.020410e+00 # HT + 1755 117 7 0.0920 1.059572e+01 8.011056e+00 1.854447e+00 # HT + 1756 118 1 -2.2897 -1.442953e+01 3.205871e+00 1.871362e+00 # CAT + 1757 118 2 -2.3557 -1.524982e+01 4.269017e+00 1.475329e+00 # CAO + 1758 118 3 -2.3537 -1.472075e+01 5.561214e+00 1.373811e+00 # CAM + 1759 118 4 -2.3627 -1.337138e+01 5.790264e+00 1.668325e+00 # CAP + 1760 118 3 -2.3537 -1.255109e+01 4.727119e+00 2.064358e+00 # CAM + 1761 118 2 -2.3557 -1.308016e+01 3.434923e+00 2.165876e+00 # CAO + 1762 118 5 -2.4057 -1.500018e+01 1.812145e+00 1.980856e+00 # CTT + 1763 118 6 0.1480 -1.629077e+01 4.092320e+00 1.248133e+00 # HAT + 1764 118 6 0.1480 -1.535354e+01 6.381355e+00 1.068300e+00 # HAT + 1765 118 6 0.1480 -1.296323e+01 6.787102e+00 1.590011e+00 # HAT + 1766 118 6 0.1480 -1.151014e+01 4.903816e+00 2.291554e+00 # HAT + 1767 118 6 0.1480 -1.244736e+01 2.614782e+00 2.471387e+00 # HAT + 1768 118 7 0.0920 -1.581163e+01 1.693768e+00 1.262782e+00 # HT + 1769 118 7 0.0920 -1.421929e+01 1.081615e+00 1.769584e+00 # HT + 1770 118 7 0.0920 -1.538212e+01 1.653555e+00 2.989353e+00 # HT + 1771 119 1 -2.2897 -1.115158e+01 -1.425992e+01 6.732243e+00 # CAT + 1772 119 2 -2.3557 -1.196293e+01 -1.435384e+01 5.595186e+00 # CAO + 1773 119 3 -2.3537 -1.143741e+01 -1.485937e+01 4.400083e+00 # CAM + 1774 119 4 -2.3627 -1.010054e+01 -1.527098e+01 4.342037e+00 # CAP + 1775 119 3 -2.3537 -9.289195e+00 -1.517705e+01 5.479094e+00 # CAM + 1776 119 2 -2.3557 -9.814715e+00 -1.467153e+01 6.674196e+00 # CAO + 1777 119 5 -2.4057 -1.171839e+01 -1.371467e+01 8.021246e+00 # CTT + 1778 119 6 0.1480 -1.299422e+01 -1.403632e+01 5.639964e+00 # HAT + 1779 119 6 0.1480 -1.206330e+01 -1.493182e+01 3.522925e+00 # HAT + 1780 119 6 0.1480 -9.695138e+00 -1.566095e+01 3.420100e+00 # HAT + 1781 119 6 0.1480 -8.257898e+00 -1.549458e+01 5.434315e+00 # HAT + 1782 119 6 0.1480 -9.188820e+00 -1.459908e+01 7.551354e+00 # HAT + 1783 119 7 0.0920 -1.278327e+01 -1.394104e+01 8.074971e+00 # HT + 1784 119 7 0.0920 -1.120667e+01 -1.417420e+01 8.866872e+00 # HT + 1785 119 7 0.0920 -1.157497e+01 -1.263464e+01 8.053691e+00 # HT + 1786 120 1 -2.2897 1.928003e+00 2.853704e+00 7.037061e+00 # CAT + 1787 120 2 -2.3557 1.367216e+00 3.864441e+00 7.826953e+00 # CAO + 1788 120 3 -2.3537 2.346030e-01 3.597334e+00 8.605313e+00 # CAM + 1789 120 4 -2.3627 -3.372200e-01 2.319491e+00 8.593781e+00 # CAP + 1790 120 3 -2.3537 2.235670e-01 1.308754e+00 7.803889e+00 # CAM + 1791 120 2 -2.3557 1.356178e+00 1.575861e+00 7.025529e+00 # CAO + 1792 120 5 -2.4057 3.149605e+00 3.141798e+00 6.197544e+00 # CTT + 1793 120 6 0.1480 1.808337e+00 4.850206e+00 7.835849e+00 # HAT + 1794 120 6 0.1480 -1.980040e-01 4.377045e+00 9.214658e+00 # HAT + 1795 120 6 0.1480 -1.210950e+00 2.113436e+00 9.194231e+00 # HAT + 1796 120 6 0.1480 -2.175550e-01 3.229890e-01 7.794994e+00 # HAT + 1797 120 6 0.1480 1.788786e+00 7.961500e-01 6.416184e+00 # HAT + 1798 120 7 0.0920 3.749979e+00 3.912365e+00 6.681156e+00 # HT + 1799 120 7 0.0920 3.741879e+00 2.232744e+00 6.092980e+00 # HT + 1800 120 7 0.0920 2.840032e+00 3.488543e+00 5.211627e+00 # HT + 1801 121 1 -2.2897 -2.751472e+00 -5.157973e+00 -1.772767e+00 # CAT + 1802 121 2 -2.3557 -2.764936e+00 -4.342735e+00 -2.910839e+00 # CAO + 1803 121 3 -2.3537 -3.275484e+00 -3.041429e+00 -2.833738e+00 # CAM + 1804 121 4 -2.3627 -3.772568e+00 -2.555362e+00 -1.618565e+00 # CAP + 1805 121 3 -2.3537 -3.759104e+00 -3.370599e+00 -4.804940e-01 # CAM + 1806 121 2 -2.3557 -3.248556e+00 -4.671904e+00 -5.575940e-01 # CAO + 1807 121 5 -2.4057 -2.200809e+00 -6.561523e+00 -1.855926e+00 # CTT + 1808 121 6 0.1480 -2.381471e+00 -4.717702e+00 -3.848258e+00 # HAT + 1809 121 6 0.1480 -3.285870e+00 -2.412532e+00 -3.711678e+00 # HAT + 1810 121 6 0.1480 -4.166420e+00 -1.551497e+00 -1.559087e+00 # HAT + 1811 121 6 0.1480 -4.142569e+00 -2.995632e+00 4.569260e-01 # HAT + 1812 121 6 0.1480 -3.238170e+00 -5.300801e+00 3.203460e-01 # HAT + 1813 121 7 0.0920 -1.423395e+00 -6.602760e+00 -2.618834e+00 # HT + 1814 121 7 0.0920 -1.778331e+00 -6.844342e+00 -8.917560e-01 # HT + 1815 121 7 0.0920 -3.002638e+00 -7.252068e+00 -2.117305e+00 # HT + 1816 122 1 -2.2897 1.350243e+01 2.696234e+00 -7.919477e+00 # CAT + 1817 122 2 -2.3557 1.273451e+01 3.410477e+00 -6.992039e+00 # CAO + 1818 122 3 -2.3537 1.133731e+01 3.330882e+00 -7.030958e+00 # CAM + 1819 122 4 -2.3627 1.070805e+01 2.537044e+00 -7.997315e+00 # CAP + 1820 122 3 -2.3537 1.147598e+01 1.822801e+00 -8.924754e+00 # CAM + 1821 122 2 -2.3557 1.287317e+01 1.902396e+00 -8.885835e+00 # CAO + 1822 122 5 -2.4057 1.500941e+01 2.782083e+00 -7.877500e+00 # CTT + 1823 122 6 0.1480 1.321994e+01 4.022867e+00 -6.246563e+00 # HAT + 1824 122 6 0.1480 1.074491e+01 3.881870e+00 -6.315505e+00 # HAT + 1825 122 6 0.1480 9.630212e+00 2.475642e+00 -8.027339e+00 # HAT + 1826 122 6 0.1480 1.099054e+01 1.210411e+00 -9.670230e+00 # HAT + 1827 122 6 0.1480 1.346557e+01 1.351408e+00 -9.601287e+00 # HAT + 1828 122 7 0.0920 1.533557e+01 2.954933e+00 -6.851908e+00 # HT + 1829 122 7 0.0920 1.543734e+01 1.848132e+00 -8.241791e+00 # HT + 1830 122 7 0.0920 1.534467e+01 3.605243e+00 -8.508457e+00 # HT + 1831 123 1 -2.2897 3.785378e+00 7.806950e+00 -4.675381e+00 # CAT + 1832 123 2 -2.3557 2.552886e+00 7.449670e+00 -4.115636e+00 # CAO + 1833 123 3 -2.3537 1.364288e+00 7.743054e+00 -4.794724e+00 # CAM + 1834 123 4 -2.3627 1.408182e+00 8.393720e+00 -6.033556e+00 # CAP + 1835 123 3 -2.3537 2.640673e+00 8.751001e+00 -6.593302e+00 # CAM + 1836 123 2 -2.3557 3.829271e+00 8.457616e+00 -5.914215e+00 # CAO + 1837 123 5 -2.4057 5.067366e+00 7.490514e+00 -3.942937e+00 # CTT + 1838 123 6 0.1480 2.519025e+00 6.947728e+00 -3.159965e+00 # HAT + 1839 123 6 0.1480 4.135090e-01 7.467438e+00 -4.362920e+00 # HAT + 1840 123 6 0.1480 4.912630e-01 8.620045e+00 -6.557425e+00 # HAT + 1841 123 6 0.1480 2.674534e+00 9.252943e+00 -7.548974e+00 # HAT + 1842 123 6 0.1480 4.780050e+00 8.733233e+00 -6.346019e+00 # HAT + 1843 123 7 0.0920 4.931625e+00 6.589710e+00 -3.344415e+00 # HT + 1844 123 7 0.0920 5.868382e+00 7.329456e+00 -4.664417e+00 # HT + 1845 123 7 0.0920 5.328814e+00 8.323630e+00 -3.290509e+00 # HT + 1846 124 1 -2.2897 8.061584e+00 6.340090e+00 -1.306458e+01 # CAT + 1847 124 2 -2.3557 6.711833e+00 6.688290e+00 -1.293446e+01 # CAO + 1848 124 3 -2.3537 6.331200e+00 8.035379e+00 -1.295612e+01 # CAM + 1849 124 4 -2.3627 7.300317e+00 9.034268e+00 -1.310788e+01 # CAP + 1850 124 3 -2.3537 8.650068e+00 8.686068e+00 -1.323799e+01 # CAM + 1851 124 2 -2.3557 9.030701e+00 7.338979e+00 -1.321634e+01 # CAO + 1852 124 5 -2.4057 8.472125e+00 4.887158e+00 -1.304122e+01 # CTT + 1853 124 6 0.1480 5.964228e+00 5.917718e+00 -1.281739e+01 # HAT + 1854 124 6 0.1480 5.289963e+00 8.303991e+00 -1.285574e+01 # HAT + 1855 124 6 0.1480 7.006685e+00 1.007345e+01 -1.312458e+01 # HAT + 1856 124 6 0.1480 9.397673e+00 9.456640e+00 -1.335506e+01 # HAT + 1857 124 6 0.1480 1.007194e+01 7.070368e+00 -1.331671e+01 # HAT + 1858 124 7 0.0920 7.664794e+00 4.274450e+00 -1.344236e+01 # HT + 1859 124 7 0.0920 9.366643e+00 4.752000e+00 -1.364923e+01 # HT + 1860 124 7 0.0920 8.681708e+00 4.584728e+00 -1.201521e+01 # HT + 1861 125 1 -2.2897 -2.549713e+00 9.789634e+00 8.472710e+00 # CAT + 1862 125 2 -2.3557 -1.424449e+00 1.061945e+01 8.400703e+00 # CAO + 1863 125 3 -2.3537 -4.451710e-01 1.038803e+01 7.427327e+00 # CAM + 1864 125 4 -2.3627 -5.911570e-01 9.326795e+00 6.525959e+00 # CAP + 1865 125 3 -2.3537 -1.716421e+00 8.496978e+00 6.597966e+00 # CAM + 1866 125 2 -2.3557 -2.695699e+00 8.728398e+00 7.571341e+00 # CAO + 1867 125 5 -2.4057 -3.605934e+00 1.003924e+01 9.522565e+00 # CTT + 1868 125 6 0.1480 -1.311831e+00 1.143812e+01 9.096044e+00 # HAT + 1869 125 6 0.1480 4.228900e-01 1.102818e+01 7.371779e+00 # HAT + 1870 125 6 0.1480 1.642860e-01 9.148271e+00 5.775069e+00 # HAT + 1871 125 6 0.1480 -1.829039e+00 7.678310e+00 5.902624e+00 # HAT + 1872 125 6 0.1480 -3.563760e+00 8.088253e+00 7.626890e+00 # HAT + 1873 125 7 0.0920 -3.643457e+00 1.110348e+01 9.755114e+00 # HT + 1874 125 7 0.0920 -4.576445e+00 9.715610e+00 9.146434e+00 # HT + 1875 125 7 0.0920 -3.361421e+00 9.479054e+00 1.042507e+01 # HT + 1876 126 1 -2.2897 1.451605e+01 2.865241e+00 2.456541e+00 # CAT + 1877 126 2 -2.3557 1.504542e+01 3.373650e+00 3.648721e+00 # CAO + 1878 126 3 -2.3537 1.458030e+01 4.592116e+00 4.157650e+00 # CAM + 1879 126 4 -2.3627 1.358582e+01 5.302173e+00 3.474400e+00 # CAP + 1880 126 3 -2.3537 1.305646e+01 4.793763e+00 2.282220e+00 # CAM + 1881 126 2 -2.3557 1.352157e+01 3.575298e+00 1.773290e+00 # CAO + 1882 126 5 -2.4057 1.501771e+01 1.551039e+00 1.907624e+00 # CTT + 1883 126 6 0.1480 1.581259e+01 2.825893e+00 4.175800e+00 # HAT + 1884 126 6 0.1480 1.498867e+01 4.984318e+00 5.077332e+00 # HAT + 1885 126 6 0.1480 1.322702e+01 6.242133e+00 3.867003e+00 # HAT + 1886 126 6 0.1480 1.228929e+01 5.341522e+00 1.755141e+00 # HAT + 1887 126 6 0.1480 1.311321e+01 3.183097e+00 8.536080e-01 # HAT + 1888 126 7 0.0920 1.533643e+01 9.110070e-01 2.730349e+00 # HT + 1889 126 7 0.0920 1.421806e+01 1.058999e+00 1.353945e+00 # HT + 1890 126 7 0.0920 1.586128e+01 1.733099e+00 1.241777e+00 # HT + 1891 127 1 -2.2897 -1.372433e+01 1.514106e+01 -5.264600e+00 # CAT + 1892 127 2 -2.3557 -1.240982e+01 1.519323e+01 -4.785692e+00 # CAO + 1893 127 3 -2.3537 -1.216919e+01 1.527912e+01 -3.409203e+00 # CAM + 1894 127 4 -2.3627 -1.324307e+01 1.531284e+01 -2.511623e+00 # CAP + 1895 127 3 -2.3537 -1.455757e+01 1.526068e+01 -2.990531e+00 # CAM + 1896 127 2 -2.3557 -1.479820e+01 1.517479e+01 -4.367019e+00 # CAO + 1897 127 5 -2.4057 -1.398386e+01 1.504843e+01 -6.749241e+00 # CTT + 1898 127 6 0.1480 -1.158140e+01 1.516721e+01 -5.478111e+00 # HAT + 1899 127 6 0.1480 -1.115514e+01 1.531936e+01 -3.039760e+00 # HAT + 1900 127 6 0.1480 -1.305744e+01 1.537910e+01 -1.449760e+00 # HAT + 1901 127 6 0.1480 -1.538599e+01 1.528669e+01 -2.298111e+00 # HAT + 1902 127 6 0.1480 -1.581225e+01 1.513455e+01 -4.736462e+00 # HAT + 1903 127 7 0.0920 -1.316068e+01 1.452011e+01 -7.230243e+00 # HT + 1904 127 7 0.0920 -1.491355e+01 1.450658e+01 -6.922973e+00 # HT + 1905 127 7 0.0920 -1.406497e+01 1.605162e+01 -7.167724e+00 # HT + 1906 128 1 -2.2897 -1.483493e+00 8.383138e+00 2.980222e+00 # CAT + 1907 128 2 -2.3557 -2.845707e+00 8.484447e+00 2.673446e+00 # CAO + 1908 128 3 -2.3537 -3.717088e+00 7.439458e+00 3.003136e+00 # CAM + 1909 128 4 -2.3627 -3.226256e+00 6.293162e+00 3.639601e+00 # CAP + 1910 128 3 -2.3537 -1.864043e+00 6.191854e+00 3.946377e+00 # CAM + 1911 128 2 -2.3557 -9.926610e-01 7.236841e+00 3.616687e+00 # CAO + 1912 128 5 -2.4057 -5.436460e-01 9.510231e+00 2.624628e+00 # CTT + 1913 128 6 0.1480 -3.224349e+00 9.368732e+00 2.182459e+00 # HAT + 1914 128 6 0.1480 -4.767938e+00 7.517611e+00 2.766480e+00 # HAT + 1915 128 6 0.1480 -3.898464e+00 5.487028e+00 3.893933e+00 # HAT + 1916 128 6 0.1480 -1.485401e+00 5.307567e+00 4.437364e+00 # HAT + 1917 128 6 0.1480 5.818900e-02 7.158688e+00 3.853343e+00 # HAT + 1918 128 7 0.0920 -1.084086e+00 1.045647e+01 2.650371e+00 # HT + 1919 128 7 0.0920 2.758900e-01 9.540833e+00 3.342628e+00 # HT + 1920 128 7 0.0920 -1.433470e-01 9.348148e+00 1.623834e+00 # HT + 1921 129 1 -2.2897 -1.498436e+01 1.154171e+01 -1.505108e+00 # CAT + 1922 129 2 -2.3557 -1.472194e+01 1.249848e+01 -5.173210e-01 # CAO + 1923 129 3 -2.3537 -1.468057e+01 1.212039e+01 8.300240e-01 # CAM + 1924 129 4 -2.3627 -1.490163e+01 1.078553e+01 1.189582e+00 # CAP + 1925 129 3 -2.3537 -1.516406e+01 9.828762e+00 2.017960e-01 # CAM + 1926 129 2 -2.3557 -1.520542e+01 1.020685e+01 -1.145549e+00 # CAO + 1927 129 5 -2.4057 -1.502898e+01 1.194950e+01 -2.958315e+00 # CTT + 1928 129 6 0.1480 -1.455140e+01 1.352823e+01 -7.946950e-01 # HAT + 1929 129 6 0.1480 -1.447813e+01 1.285847e+01 1.592031e+00 # HAT + 1930 129 6 0.1480 -1.486973e+01 1.049386e+01 2.228963e+00 # HAT + 1931 129 6 0.1480 -1.533459e+01 8.799013e+00 4.791700e-01 # HAT + 1932 129 6 0.1480 -1.540787e+01 9.468769e+00 -1.907555e+00 # HAT + 1933 129 7 0.0920 -1.435911e+01 1.279405e+01 -3.119956e+00 # HT + 1934 129 7 0.0920 -1.471395e+01 1.111219e+01 -3.581021e+00 # HT + 1935 129 7 0.0920 -1.604612e+01 1.223706e+01 -3.224464e+00 # HT + 1936 130 1 -2.2897 7.162802e+00 4.203182e+00 2.047940e+00 # CAT + 1937 130 2 -2.3557 6.589962e+00 2.974944e+00 1.696819e+00 # CAO + 1938 130 3 -2.3537 6.631757e+00 1.901063e+00 2.594056e+00 # CAM + 1939 130 4 -2.3627 7.246392e+00 2.055421e+00 3.842414e+00 # CAP + 1940 130 3 -2.3537 7.819231e+00 3.283659e+00 4.193535e+00 # CAM + 1941 130 2 -2.3557 7.777436e+00 4.357540e+00 3.296298e+00 # CAO + 1942 130 5 -2.4057 7.117723e+00 5.361438e+00 1.080206e+00 # CTT + 1943 130 6 0.1480 6.115816e+00 2.855868e+00 7.338000e-01 # HAT + 1944 130 6 0.1480 6.189852e+00 9.535650e-01 2.323191e+00 # HAT + 1945 130 6 0.1480 7.278633e+00 1.226999e+00 4.534568e+00 # HAT + 1946 130 6 0.1480 8.293378e+00 3.402735e+00 5.156555e+00 # HAT + 1947 130 6 0.1480 8.219341e+00 5.305038e+00 3.567163e+00 # HAT + 1948 130 7 0.0920 6.223448e+00 5.284297e+00 4.618020e-01 # HT + 1949 130 7 0.0920 7.094951e+00 6.299003e+00 1.635682e+00 # HT + 1950 130 7 0.0920 8.002182e+00 5.338296e+00 4.435770e-01 # HT + 1951 131 1 -2.2897 -5.388345e+00 1.137542e+01 7.418770e+00 # CAT + 1952 131 2 -2.3557 -4.077509e+00 1.183212e+01 7.236760e+00 # CAO + 1953 131 3 -2.3537 -3.239993e+00 1.120372e+01 6.307417e+00 # CAM + 1954 131 4 -2.3627 -3.713314e+00 1.011861e+01 5.560085e+00 # CAP + 1955 131 3 -2.3537 -5.024151e+00 9.661906e+00 5.742095e+00 # CAM + 1956 131 2 -2.3557 -5.861666e+00 1.029031e+01 6.671437e+00 # CAO + 1957 131 5 -2.4057 -6.291665e+00 1.205320e+01 8.421132e+00 # CTT + 1958 131 6 0.1480 -3.712375e+00 1.266921e+01 7.813273e+00 # HAT + 1959 131 6 0.1480 -2.228776e+00 1.155604e+01 6.167009e+00 # HAT + 1960 131 6 0.1480 -3.067231e+00 9.633843e+00 4.843164e+00 # HAT + 1961 131 6 0.1480 -5.389284e+00 8.824821e+00 5.165582e+00 # HAT + 1962 131 6 0.1480 -6.872883e+00 9.937993e+00 6.811845e+00 # HAT + 1963 131 7 0.0920 -6.017697e+00 1.310486e+01 8.505030e+00 # HT + 1964 131 7 0.0920 -7.327115e+00 1.197330e+01 8.090133e+00 # HT + 1965 131 7 0.0920 -6.183175e+00 1.157137e+01 9.392819e+00 # HT + 1966 132 1 -2.2897 1.082242e+01 4.282266e+00 -1.074652e+01 # CAT + 1967 132 2 -2.3557 9.922925e+00 4.897800e+00 -9.867866e+00 # CAO + 1968 132 3 -2.3537 8.712925e+00 4.269041e+00 -9.550750e+00 # CAM + 1969 132 4 -2.3627 8.402418e+00 3.024750e+00 -1.011229e+01 # CAP + 1970 132 3 -2.3537 9.301910e+00 2.409217e+00 -1.099094e+01 # CAM + 1971 132 2 -2.3557 1.051191e+01 3.037975e+00 -1.130806e+01 # CAO + 1972 132 5 -2.4057 1.212749e+01 4.960427e+00 -1.108855e+01 # CTT + 1973 132 6 0.1480 1.016246e+01 5.857682e+00 -9.434681e+00 # HAT + 1974 132 6 0.1480 8.019031e+00 4.743881e+00 -8.872932e+00 # HAT + 1975 132 6 0.1480 7.468988e+00 2.539708e+00 -9.867654e+00 # HAT + 1976 132 6 0.1480 9.062375e+00 1.449334e+00 -1.142413e+01 # HAT + 1977 132 6 0.1480 1.120580e+01 2.563134e+00 -1.198588e+01 # HAT + 1978 132 7 0.0920 1.245211e+01 5.570864e+00 -1.024589e+01 # HT + 1979 132 7 0.0920 1.288438e+01 4.205913e+00 -1.130286e+01 # HT + 1980 132 7 0.0920 1.198939e+01 5.594732e+00 -1.196416e+01 # HT + 1981 133 1 -2.2897 -9.177104e+00 6.175441e+00 -5.703014e+00 # CAT + 1982 133 2 -2.3557 -7.847634e+00 5.794025e+00 -5.919881e+00 # CAO + 1983 133 3 -2.3537 -7.546785e+00 4.472275e+00 -6.269835e+00 # CAM + 1984 133 4 -2.3627 -8.575406e+00 3.531942e+00 -6.402922e+00 # CAP + 1985 133 3 -2.3537 -9.904876e+00 3.913359e+00 -6.186056e+00 # CAM + 1986 133 2 -2.3557 -1.020572e+01 5.235108e+00 -5.836102e+00 # CAO + 1987 133 5 -2.4057 -9.501591e+00 7.601042e+00 -5.325564e+00 # CTT + 1988 133 6 0.1480 -7.054127e+00 6.519424e+00 -5.817214e+00 # HAT + 1989 133 6 0.1480 -6.521194e+00 4.178039e+00 -6.437132e+00 # HAT + 1990 133 6 0.1480 -8.343323e+00 2.512306e+00 -6.672887e+00 # HAT + 1991 133 6 0.1480 -1.069838e+01 3.187958e+00 -6.288723e+00 # HAT + 1992 133 6 0.1480 -1.123132e+01 5.529343e+00 -5.668805e+00 # HAT + 1993 133 7 0.0920 -8.760819e+00 8.270721e+00 -5.762471e+00 # HT + 1994 133 7 0.0920 -1.049145e+01 7.860525e+00 -5.700985e+00 # HT + 1995 133 7 0.0920 -9.487066e+00 7.702421e+00 -4.240386e+00 # HT + 1996 134 1 -2.2897 5.627380e+00 -2.965699e+00 -5.690414e+00 # CAT + 1997 134 2 -2.3557 4.416214e+00 -3.593700e+00 -5.376263e+00 # CAO + 1998 134 3 -2.3537 4.049351e+00 -3.777065e+00 -4.037686e+00 # CAM + 1999 134 4 -2.3627 4.893654e+00 -3.332429e+00 -3.013260e+00 # CAP + 2000 134 3 -2.3537 6.104820e+00 -2.704427e+00 -3.327410e+00 # CAM + 2001 134 2 -2.3557 6.471683e+00 -2.521062e+00 -4.665986e+00 # CAO + 2002 134 5 -2.4057 6.023068e+00 -2.767927e+00 -7.134164e+00 # CTT + 2003 134 6 0.1480 3.764894e+00 -3.936706e+00 -6.166535e+00 # HAT + 2004 134 6 0.1480 3.115023e+00 -4.261524e+00 -3.795341e+00 # HAT + 2005 134 6 0.1480 4.610645e+00 -3.473881e+00 -1.980642e+00 # HAT + 2006 134 6 0.1480 6.756140e+00 -2.361421e+00 -2.537137e+00 # HAT + 2007 134 6 0.1480 7.406012e+00 -2.036604e+00 -4.908331e+00 # HAT + 2008 134 7 0.0920 5.127153e+00 -2.658079e+00 -7.745206e+00 # HT + 2009 134 7 0.0920 6.635690e+00 -1.870855e+00 -7.223924e+00 # HT + 2010 134 7 0.0920 6.592395e+00 -3.631880e+00 -7.477023e+00 # HT + 2011 135 1 -2.2897 -1.717690e-01 -1.103069e+01 -1.166510e-01 # CAT + 2012 135 2 -2.3557 9.866870e-01 -1.039695e+01 -5.817830e-01 # CAO + 2013 135 3 -2.3537 1.326610e+00 -1.046738e+01 -1.938062e+00 # CAM + 2014 135 4 -2.3627 5.080780e-01 -1.117155e+01 -2.829208e+00 # CAP + 2015 135 3 -2.3537 -6.503780e-01 -1.180530e+01 -2.364076e+00 # CAM + 2016 135 2 -2.3557 -9.903010e-01 -1.173487e+01 -1.007798e+00 # CAO + 2017 135 5 -2.4057 -5.384000e-01 -1.095473e+01 1.346192e+00 # CTT + 2018 135 6 0.1480 1.618127e+00 -9.853730e+00 1.056730e-01 # HAT + 2019 135 6 0.1480 2.220276e+00 -9.978491e+00 -2.296878e+00 # HAT + 2020 135 6 0.1480 7.703040e-01 -1.122589e+01 -3.875481e+00 # HAT + 2021 135 6 0.1480 -1.281817e+00 -1.234852e+01 -3.051533e+00 # HAT + 2022 135 6 0.1480 -1.883967e+00 -1.222376e+01 -6.489820e-01 # HAT + 2023 135 7 0.0920 -1.713360e-01 -1.001778e+01 1.765114e+00 # HT + 2024 135 7 0.0920 -1.622275e+00 -1.099970e+01 1.452456e+00 # HT + 2025 135 7 0.0920 -8.661900e-02 -1.179180e+01 1.878468e+00 # HT + 2026 136 1 -2.2897 8.563566e+00 -1.178331e+01 -4.534035e+00 # CAT + 2027 136 2 -2.3557 8.924931e+00 -1.312727e+01 -4.381769e+00 # CAO + 2028 136 3 -2.3537 9.182152e+00 -1.391513e+01 -5.510093e+00 # CAM + 2029 136 4 -2.3627 9.078009e+00 -1.335903e+01 -6.790681e+00 # CAP + 2030 136 3 -2.3537 8.716645e+00 -1.201507e+01 -6.942946e+00 # CAM + 2031 136 2 -2.3557 8.459423e+00 -1.122721e+01 -5.814624e+00 # CAO + 2032 136 5 -2.4057 8.286135e+00 -1.093354e+01 -3.317059e+00 # CTT + 2033 136 6 0.1480 9.005269e+00 -1.355626e+01 -3.393887e+00 # HAT + 2034 136 6 0.1480 9.460919e+00 -1.495190e+01 -5.392630e+00 # HAT + 2035 136 6 0.1480 9.276437e+00 -1.396681e+01 -7.661102e+00 # HAT + 2036 136 6 0.1480 8.636306e+00 -1.158608e+01 -7.930830e+00 # HAT + 2037 136 6 0.1480 8.180656e+00 -1.019044e+01 -5.932087e+00 # HAT + 2038 136 7 0.0920 8.885376e+00 -1.129076e+01 -2.479560e+00 # HT + 2039 136 7 0.0920 8.543734e+00 -9.896283e+00 -3.531152e+00 # HT + 2040 136 7 0.0920 7.228745e+00 -1.099930e+01 -3.060735e+00 # HT + 2041 137 1 -2.2897 7.375371e+00 5.980524e+00 1.362288e+01 # CAT + 2042 137 2 -2.3557 6.537586e+00 5.649783e+00 1.255109e+01 # CAO + 2043 137 3 -2.3537 6.171405e+00 6.629625e+00 1.162059e+01 # CAM + 2044 137 4 -2.3627 6.643009e+00 7.940207e+00 1.176188e+01 # CAP + 2045 137 3 -2.3537 7.480794e+00 8.270948e+00 1.283367e+01 # CAM + 2046 137 2 -2.3557 7.846975e+00 7.291107e+00 1.376417e+01 # CAO + 2047 137 5 -2.4057 7.770324e+00 4.923695e+00 1.462648e+01 # CTT + 2048 137 6 0.1480 6.173777e+00 4.638762e+00 1.244209e+01 # HAT + 2049 137 6 0.1480 5.525114e+00 6.374482e+00 1.079379e+01 # HAT + 2050 137 6 0.1480 6.360527e+00 8.696085e+00 1.104407e+01 # HAT + 2051 137 6 0.1480 7.844603e+00 9.281969e+00 1.294267e+01 # HAT + 2052 137 6 0.1480 8.493267e+00 7.546250e+00 1.459097e+01 # HAT + 2053 137 7 0.0920 7.795996e+00 3.949590e+00 1.413805e+01 # HT + 2054 137 7 0.0920 8.756974e+00 5.154179e+00 1.502835e+01 # HT + 2055 137 7 0.0920 7.043505e+00 4.903354e+00 1.543853e+01 # HT + 2056 138 1 -2.2897 5.710643e+00 7.296478e+00 3.951699e+00 # CAT + 2057 138 2 -2.3557 5.056977e+00 6.447365e+00 3.050741e+00 # CAO + 2058 138 3 -2.3537 4.957378e+00 5.078232e+00 3.325617e+00 # CAM + 2059 138 4 -2.3627 5.511446e+00 4.558214e+00 4.501453e+00 # CAP + 2060 138 3 -2.3537 6.165112e+00 5.407327e+00 5.402412e+00 # CAM + 2061 138 2 -2.3557 6.264711e+00 6.776459e+00 5.127535e+00 # CAO + 2062 138 5 -2.4057 5.818067e+00 8.773185e+00 3.655226e+00 # CTT + 2063 138 6 0.1480 4.629553e+00 6.848522e+00 2.143668e+00 # HAT + 2064 138 6 0.1480 4.453122e+00 4.423202e+00 2.630592e+00 # HAT + 2065 138 6 0.1480 5.434613e+00 3.502025e+00 4.713501e+00 # HAT + 2066 138 6 0.1480 6.592536e+00 5.006169e+00 6.309485e+00 # HAT + 2067 138 6 0.1480 6.768967e+00 7.431489e+00 5.822561e+00 # HAT + 2068 138 7 0.0920 4.956781e+00 9.089789e+00 3.066965e+00 # HT + 2069 138 7 0.0920 5.843154e+00 9.331316e+00 4.591153e+00 # HT + 2070 138 7 0.0920 6.731918e+00 8.965931e+00 3.093244e+00 # HT + 2071 139 1 -2.2897 -1.373410e+01 5.414493e+00 -1.333437e+01 # CAT + 2072 139 2 -2.3557 -1.431209e+01 6.385914e+00 -1.416037e+01 # CAO + 2073 139 3 -2.3537 -1.352599e+01 7.422290e+00 -1.467803e+01 # CAM + 2074 139 4 -2.3627 -1.216191e+01 7.487246e+00 -1.436971e+01 # CAP + 2075 139 3 -2.3537 -1.158393e+01 6.515825e+00 -1.354371e+01 # CAM + 2076 139 2 -2.3557 -1.237002e+01 5.479449e+00 -1.302604e+01 # CAO + 2077 139 5 -2.4057 -1.458196e+01 4.296688e+00 -1.277602e+01 # CTT + 2078 139 6 0.1480 -1.536438e+01 6.335806e+00 -1.439822e+01 # HAT + 2079 139 6 0.1480 -1.397187e+01 8.171672e+00 -1.531523e+01 # HAT + 2080 139 6 0.1480 -1.155550e+01 8.286736e+00 -1.476905e+01 # HAT + 2081 139 6 0.1480 -1.053163e+01 6.565934e+00 -1.330585e+01 # HAT + 2082 139 6 0.1480 -1.192414e+01 4.730067e+00 -1.238884e+01 # HAT + 2083 139 7 0.0920 -1.539202e+01 4.072895e+00 -1.347015e+01 # HT + 2084 139 7 0.0920 -1.396671e+01 3.407628e+00 -1.263765e+01 # HT + 2085 139 7 0.0920 -1.500004e+01 4.601499e+00 -1.181665e+01 # HT + 2086 140 1 -2.2897 4.140618e+00 8.961519e+00 7.208404e+00 # CAT + 2087 140 2 -2.3557 4.256650e+00 7.654541e+00 6.720198e+00 # CAO + 2088 140 3 -2.3537 3.632181e+00 7.297977e+00 5.518990e+00 # CAM + 2089 140 4 -2.3627 2.891680e+00 8.248390e+00 4.805989e+00 # CAP + 2090 140 3 -2.3537 2.775648e+00 9.555369e+00 5.294194e+00 # CAM + 2091 140 2 -2.3557 3.400117e+00 9.911933e+00 6.495401e+00 # CAO + 2092 140 5 -2.4057 4.814152e+00 9.346100e+00 8.503992e+00 # CTT + 2093 140 6 0.1480 4.827893e+00 6.921365e+00 7.270228e+00 # HAT + 2094 140 6 0.1480 3.721691e+00 6.289736e+00 5.142375e+00 # HAT + 2095 140 6 0.1480 2.409946e+00 7.973326e+00 3.879342e+00 # HAT + 2096 140 6 0.1480 2.204404e+00 1.028854e+01 4.744163e+00 # HAT + 2097 140 6 0.1480 3.310607e+00 1.092017e+01 6.872017e+00 # HAT + 2098 140 7 0.0920 5.713235e+00 8.744859e+00 8.639124e+00 # HT + 2099 140 7 0.0920 5.084614e+00 1.040159e+01 8.474143e+00 # HT + 2100 140 7 0.0920 4.131493e+00 9.169856e+00 9.335265e+00 # HT + 2101 141 1 -2.2897 1.364885e+01 -2.553844e+00 1.367616e+01 # CAT + 2102 141 2 -2.3557 1.282678e+01 -3.658050e+00 1.393099e+01 # CAO + 2103 141 3 -2.3537 1.215234e+01 -4.286606e+00 1.287740e+01 # CAM + 2104 141 4 -2.3627 1.229997e+01 -3.810958e+00 1.156898e+01 # CAP + 2105 141 3 -2.3537 1.312204e+01 -2.706753e+00 1.131415e+01 # CAM + 2106 141 2 -2.3557 1.379647e+01 -2.078196e+00 1.236774e+01 # CAO + 2107 141 5 -2.4057 1.437627e+01 -1.875901e+00 1.481254e+01 # CTT + 2108 141 6 0.1480 1.271290e+01 -4.024978e+00 1.494035e+01 # HAT + 2109 141 6 0.1480 1.151818e+01 -5.138422e+00 1.307399e+01 # HAT + 2110 141 6 0.1480 1.177969e+01 -4.295845e+00 1.075622e+01 # HAT + 2111 141 6 0.1480 1.323592e+01 -2.339824e+00 1.030480e+01 # HAT + 2112 141 6 0.1480 1.443064e+01 -1.226380e+00 1.217116e+01 # HAT + 2113 141 7 0.0920 1.459631e+01 -2.606440e+00 1.559099e+01 # HT + 2114 141 7 0.0920 1.530798e+01 -1.446964e+00 1.444370e+01 # HT + 2115 141 7 0.0920 1.375038e+01 -1.084227e+00 1.522437e+01 # HT + 2116 142 1 -2.2897 -3.421791e+00 -1.030121e+01 -2.050744e+00 # CAT + 2117 142 2 -2.3557 -2.296499e+00 -9.672944e+00 -1.503934e+00 # CAO + 2118 142 3 -2.3537 -1.272438e+00 -9.217228e+00 -2.342756e+00 # CAM + 2119 142 4 -2.3627 -1.373670e+00 -9.389776e+00 -3.728389e+00 # CAP + 2120 142 3 -2.3537 -2.498962e+00 -1.001804e+01 -4.275200e+00 # CAM + 2121 142 2 -2.3557 -3.523022e+00 -1.047376e+01 -3.436378e+00 # CAO + 2122 142 5 -2.4057 -4.526313e+00 -1.079273e+01 -1.146015e+00 # CTT + 2123 142 6 0.1480 -2.218406e+00 -9.539835e+00 -4.350170e-01 # HAT + 2124 142 6 0.1480 -4.043560e-01 -8.732567e+00 -1.920931e+00 # HAT + 2125 142 6 0.1480 -5.836800e-01 -9.038224e+00 -4.375481e+00 # HAT + 2126 142 6 0.1480 -2.577054e+00 -1.015115e+01 -5.344117e+00 # HAT + 2127 142 6 0.1480 -4.391104e+00 -1.095842e+01 -3.858203e+00 # HAT + 2128 142 7 0.0920 -4.577301e+00 -1.016213e+01 -2.584050e-01 # HT + 2129 142 7 0.0920 -5.477463e+00 -1.074986e+01 -1.676652e+00 # HT + 2130 142 7 0.0920 -4.322613e+00 -1.182150e+01 -8.489760e-01 # HT + 2131 143 1 -2.2897 -3.254075e+00 -1.542278e+00 3.485028e+00 # CAT + 2132 143 2 -2.3557 -3.735366e+00 -4.399480e-01 4.201426e+00 # CAO + 2133 143 3 -2.3537 -5.000521e+00 -4.914670e-01 4.798695e+00 # CAM + 2134 143 4 -2.3627 -5.784384e+00 -1.645315e+00 4.679565e+00 # CAP + 2135 143 3 -2.3537 -5.303093e+00 -2.747645e+00 3.963166e+00 # CAM + 2136 143 2 -2.3557 -4.037939e+00 -2.696127e+00 3.365898e+00 # CAO + 2137 143 5 -2.4057 -1.889516e+00 -1.486712e+00 2.840831e+00 # CTT + 2138 143 6 0.1480 -3.130672e+00 4.501630e-01 4.293327e+00 # HAT + 2139 143 6 0.1480 -5.371803e+00 3.589020e-01 5.351345e+00 # HAT + 2140 143 6 0.1480 -6.760361e+00 -1.685058e+00 5.140315e+00 # HAT + 2141 143 6 0.1480 -5.907788e+00 -3.637757e+00 3.871266e+00 # HAT + 2142 143 6 0.1480 -3.666657e+00 -3.546496e+00 2.813247e+00 # HAT + 2143 143 7 0.0920 -1.239241e+00 -8.327180e-01 3.421810e+00 # HT + 2144 143 7 0.0920 -1.461303e+00 -2.488558e+00 2.808604e+00 # HT + 2145 143 7 0.0920 -1.981588e+00 -1.098693e+00 1.826404e+00 # HT + 2146 144 1 -2.2897 -1.321271e+01 1.486223e+00 1.342973e+01 # CAT + 2147 144 2 -2.3557 -1.191691e+01 1.077110e+00 1.376667e+01 # CAO + 2148 144 3 -2.3537 -1.172798e+01 -9.540000e-04 1.463964e+01 # CAM + 2149 144 4 -2.3627 -1.283486e+01 -6.699040e-01 1.517568e+01 # CAP + 2150 144 3 -2.3537 -1.413066e+01 -2.607900e-01 1.483875e+01 # CAM + 2151 144 2 -2.3557 -1.431959e+01 8.172730e-01 1.396577e+01 # CAO + 2152 144 5 -2.4057 -1.341649e+01 2.648992e+00 1.248817e+01 # CTT + 2153 144 6 0.1480 -1.106304e+01 1.593156e+00 1.335315e+01 # HAT + 2154 144 6 0.1480 -1.072837e+01 -3.165560e-01 1.489956e+01 # HAT + 2155 144 6 0.1480 -1.268911e+01 -1.501553e+00 1.584912e+01 # HAT + 2156 144 6 0.1480 -1.498453e+01 -7.768380e-01 1.525226e+01 # HAT + 2157 144 6 0.1480 -1.531921e+01 1.132875e+00 1.370585e+01 # HAT + 2158 144 7 0.0920 -1.258207e+01 2.701417e+00 1.178881e+01 # HT + 2159 144 7 0.0920 -1.434542e+01 2.510720e+00 1.193494e+01 # HT + 2160 144 7 0.0920 -1.346928e+01 3.575381e+00 1.306011e+01 # HT + 2161 145 1 -2.2897 2.676064e+00 -1.393412e+01 -9.307367e+00 # CAT + 2162 145 2 -2.3557 1.589914e+00 -1.464981e+01 -9.825116e+00 # CAO + 2163 145 3 -2.3537 4.557370e-01 -1.396767e+01 -1.028154e+01 # CAM + 2164 145 4 -2.3627 4.077100e-01 -1.256984e+01 -1.022022e+01 # CAP + 2165 145 3 -2.3537 1.493860e+00 -1.185415e+01 -9.702476e+00 # CAM + 2166 145 2 -2.3557 2.628037e+00 -1.253629e+01 -9.246047e+00 # CAO + 2167 145 5 -2.4057 3.899355e+00 -1.466986e+01 -8.815076e+00 # CTT + 2168 145 6 0.1480 1.626963e+00 -1.572814e+01 -9.872420e+00 # HAT + 2169 145 6 0.1480 -3.821500e-01 -1.451978e+01 -1.068095e+01 # HAT + 2170 145 6 0.1480 -4.672270e-01 -1.204362e+01 -1.057233e+01 # HAT + 2171 145 6 0.1480 1.456811e+00 -1.077582e+01 -9.655172e+00 # HAT + 2172 145 6 0.1480 3.465924e+00 -1.198418e+01 -8.846641e+00 # HAT + 2173 145 7 0.0920 4.018934e+00 -1.559503e+01 -9.378867e+00 # HT + 2174 145 7 0.0920 4.780827e+00 -1.404388e+01 -8.953881e+00 # HT + 2175 145 7 0.0920 3.782598e+00 -1.490251e+01 -7.756615e+00 # HT + 2176 146 1 -2.2897 -1.508577e+01 -1.366191e+01 4.111691e+00 # CAT + 2177 146 2 -2.3557 -1.520451e+01 -1.480745e+01 4.907706e+00 # CAO + 2178 146 3 -2.3537 -1.528508e+01 -1.468698e+01 6.300185e+00 # CAM + 2179 146 4 -2.3627 -1.524691e+01 -1.342097e+01 6.896648e+00 # CAP + 2180 146 3 -2.3537 -1.512818e+01 -1.227543e+01 6.100633e+00 # CAM + 2181 146 2 -2.3557 -1.504761e+01 -1.239590e+01 4.708155e+00 # CAO + 2182 146 5 -2.4057 -1.499887e+01 -1.379184e+01 2.609804e+00 # CTT + 2183 146 6 0.1480 -1.523395e+01 -1.578408e+01 4.447577e+00 # HAT + 2184 146 6 0.1480 -1.537668e+01 -1.557068e+01 6.914253e+00 # HAT + 2185 146 6 0.1480 -1.530907e+01 -1.332804e+01 7.970846e+00 # HAT + 2186 146 6 0.1480 -1.509874e+01 -1.129880e+01 6.560762e+00 # HAT + 2187 146 6 0.1480 -1.495601e+01 -1.151220e+01 4.094086e+00 # HAT + 2188 146 7 0.0920 -1.554732e+01 -1.467745e+01 2.288872e+00 # HT + 2189 146 7 0.0920 -1.543217e+01 -1.290758e+01 2.142418e+00 # HT + 2190 146 7 0.0920 -1.395431e+01 -1.388441e+01 2.312436e+00 # HT + 2191 147 1 -2.2897 -1.493266e+01 -7.051872e+00 -1.339764e+01 # CAT + 2192 147 2 -2.3557 -1.515348e+01 -7.930497e+00 -1.233028e+01 # CAO + 2193 147 3 -2.3537 -1.522821e+01 -7.437767e+00 -1.102198e+01 # CAM + 2194 147 4 -2.3627 -1.508213e+01 -6.066413e+00 -1.078105e+01 # CAP + 2195 147 3 -2.3537 -1.486132e+01 -5.187788e+00 -1.184841e+01 # CAM + 2196 147 2 -2.3557 -1.478659e+01 -5.680517e+00 -1.315670e+01 # CAO + 2197 147 5 -2.4057 -1.485206e+01 -7.583315e+00 -1.480872e+01 # CTT + 2198 147 6 0.1480 -1.526616e+01 -8.988399e+00 -1.251614e+01 # HAT + 2199 147 6 0.1480 -1.539855e+01 -8.115564e+00 -1.019859e+01 # HAT + 2200 147 6 0.1480 -1.513979e+01 -5.686307e+00 -9.771793e+00 # HAT + 2201 147 6 0.1480 -1.474864e+01 -4.129885e+00 -1.166255e+01 # HAT + 2202 147 6 0.1480 -1.461625e+01 -5.002720e+00 -1.398010e+01 # HAT + 2203 147 7 0.0920 -1.547435e+01 -8.473726e+00 -1.489828e+01 # HT + 2204 147 7 0.0920 -1.520509e+01 -6.822435e+00 -1.550481e+01 # HT + 2205 147 7 0.0920 -1.381846e+01 -7.837954e+00 -1.504313e+01 # HT + 2206 148 1 -2.2897 -9.003944e+00 -1.518163e+01 -1.201469e+01 # CAT + 2207 148 2 -2.3557 -7.698917e+00 -1.524014e+01 -1.251816e+01 # CAO + 2208 148 3 -2.3537 -6.611785e+00 -1.530902e+01 -1.163872e+01 # CAM + 2209 148 4 -2.3627 -6.829682e+00 -1.531939e+01 -1.025582e+01 # CAP + 2210 148 3 -2.3537 -8.134709e+00 -1.526088e+01 -9.752355e+00 # CAM + 2211 148 2 -2.3557 -9.221840e+00 -1.519200e+01 -1.063179e+01 # CAO + 2212 148 5 -2.4057 -1.017649e+01 -1.510734e+01 -1.296322e+01 # CTT + 2213 148 6 0.1480 -7.530826e+00 -1.523214e+01 -1.358497e+01 # HAT + 2214 148 6 0.1480 -5.605050e+00 -1.535415e+01 -1.202711e+01 # HAT + 2215 148 6 0.1480 -5.991037e+00 -1.537252e+01 -9.577404e+00 # HAT + 2216 148 6 0.1480 -8.302800e+00 -1.526888e+01 -8.685546e+00 # HAT + 2217 148 6 0.1480 -1.022858e+01 -1.514687e+01 -1.024340e+01 # HAT + 2218 148 7 0.0920 -9.926252e+00 -1.562012e+01 -1.389195e+01 # HT + 2219 148 7 0.0920 -1.104395e+01 -1.558479e+01 -1.250751e+01 # HT + 2220 148 7 0.0920 -1.040689e+01 -1.406341e+01 -1.317587e+01 # HT + 2221 149 1 -2.2897 -2.124431e+00 -8.312026e+00 1.500379e+01 # CAT + 2222 149 2 -2.3557 -3.503661e+00 -8.176363e+00 1.520208e+01 # CAO + 2223 149 3 -2.3537 -4.271812e+00 -9.289741e+00 1.556310e+01 # CAM + 2224 149 4 -2.3627 -3.660733e+00 -1.053878e+01 1.572582e+01 # CAP + 2225 149 3 -2.3537 -2.281503e+00 -1.067445e+01 1.552753e+01 # CAM + 2226 149 2 -2.3557 -1.513353e+00 -9.561068e+00 1.516651e+01 # CAO + 2227 149 5 -2.4057 -1.295926e+00 -7.111169e+00 1.461441e+01 # CTT + 2228 149 6 0.1480 -3.975064e+00 -7.212817e+00 1.507656e+01 # HAT + 2229 149 6 0.1480 -5.335789e+00 -9.185087e+00 1.571607e+01 # HAT + 2230 149 6 0.1480 -4.253307e+00 -1.139767e+01 1.600432e+01 # HAT + 2231 149 6 0.1480 -1.810100e+00 -1.163799e+01 1.565305e+01 # HAT + 2232 149 6 0.1480 -4.493750e-01 -9.665723e+00 1.501354e+01 # HAT + 2233 149 7 0.0920 -1.745002e+00 -6.209082e+00 1.502994e+01 # HT + 2234 149 7 0.0920 -2.842870e-01 -7.225335e+00 1.500383e+01 # HT + 2235 149 7 0.0920 -1.259577e+00 -7.031012e+00 1.352797e+01 # HT + 2236 150 1 -2.2897 6.160140e-01 6.504548e+00 -1.121167e+01 # CAT + 2237 150 2 -2.3557 2.635550e-01 7.662884e+00 -1.191455e+01 # CAO + 2238 150 3 -2.3537 4.372600e-02 7.603825e+00 -1.329592e+01 # CAM + 2239 150 4 -2.3627 1.763560e-01 6.386431e+00 -1.397442e+01 # CAP + 2240 150 3 -2.3537 5.288140e-01 5.228095e+00 -1.327154e+01 # CAM + 2241 150 2 -2.3557 7.486430e-01 5.287153e+00 -1.189017e+01 # CAO + 2242 150 5 -2.4057 8.531150e-01 6.568247e+00 -9.721768e+00 # CTT + 2243 150 6 0.1480 1.612420e-01 8.602017e+00 -1.139114e+01 # HAT + 2244 150 6 0.1480 -2.281700e-01 8.497399e+00 -1.383814e+01 # HAT + 2245 150 6 0.1480 6.773000e-03 6.340871e+00 -1.504005e+01 # HAT + 2246 150 6 0.1480 6.311280e-01 4.288962e+00 -1.379496e+01 # HAT + 2247 150 6 0.1480 1.020539e+00 4.393580e+00 -1.134796e+01 # HAT + 2248 150 7 0.0920 2.353910e-01 7.354794e+00 -9.288336e+00 # HT + 2249 150 7 0.0920 5.914040e-01 5.611212e+00 -9.270446e+00 # HT + 2250 150 7 0.0920 1.903945e+00 6.784783e+00 -9.529496e+00 # HT + 2251 151 1 -2.2897 1.207702e+01 -1.370896e+01 -4.524010e-01 # CAT + 2252 151 2 -2.3557 1.133644e+01 -1.269888e+01 1.731330e-01 # CAO + 2253 151 3 -2.3537 9.940848e+00 -1.268379e+01 6.318200e-02 # CAM + 2254 151 4 -2.3627 9.285827e+00 -1.367878e+01 -6.723020e-01 # CAP + 2255 151 3 -2.3537 1.002640e+01 -1.468886e+01 -1.297836e+00 # CAM + 2256 151 2 -2.3557 1.142199e+01 -1.470395e+01 -1.187885e+00 # CAO + 2257 151 5 -2.4057 1.358226e+01 -1.372523e+01 -3.338110e-01 # CTT + 2258 151 6 0.1480 1.184174e+01 -1.193131e+01 7.405070e-01 # HAT + 2259 151 6 0.1480 9.369549e+00 -1.190459e+01 5.457360e-01 # HAT + 2260 151 6 0.1480 8.209226e+00 -1.366714e+01 -7.571220e-01 # HAT + 2261 151 6 0.1480 9.521098e+00 -1.545643e+01 -1.865210e+00 # HAT + 2262 151 6 0.1480 1.199329e+01 -1.548315e+01 -1.670440e+00 # HAT + 2263 151 7 0.0920 1.387711e+01 -1.328224e+01 6.174680e-01 # HT + 2264 151 7 0.0920 1.393989e+01 -1.475379e+01 -3.814020e-01 # HT + 2265 151 7 0.0920 1.401791e+01 -1.315142e+01 -1.151770e+00 # HT + 2266 152 1 -2.2897 -1.493725e+01 2.303280e+00 -8.327449e+00 # CAT + 2267 152 2 -2.3557 -1.502782e+01 1.857168e+00 -9.651376e+00 # CAO + 2268 152 3 -2.3537 -1.539929e+01 5.344440e-01 -9.920480e+00 # CAM + 2269 152 4 -2.3627 -1.568018e+01 -3.421670e-01 -8.865659e+00 # CAP + 2270 152 3 -2.3537 -1.558962e+01 1.039450e-01 -7.541732e+00 # CAM + 2271 152 2 -2.3557 -1.521815e+01 1.426668e+00 -7.272627e+00 # CAO + 2272 152 5 -2.4057 -1.453660e+01 3.729931e+00 -8.037200e+00 # CTT + 2273 152 6 0.1480 -1.481113e+01 2.533411e+00 -1.046509e+01 # HAT + 2274 152 6 0.1480 -1.546915e+01 1.903010e-01 -1.094180e+01 # HAT + 2275 152 6 0.1480 -1.596674e+01 -1.362554e+00 -9.073254e+00 # HAT + 2276 152 6 0.1480 -1.580631e+01 -5.722990e-01 -6.728012e+00 # HAT + 2277 152 6 0.1480 -1.514828e+01 1.770811e+00 -6.251312e+00 # HAT + 2278 152 7 0.0920 -1.486390e+01 4.373142e+00 -8.854058e+00 # HT + 2279 152 7 0.0920 -1.500359e+01 4.057192e+00 -7.108262e+00 # HT + 2280 152 7 0.0920 -1.345270e+01 3.790758e+00 -7.939466e+00 # HT + 2281 153 1 -2.2897 -8.212781e+00 3.518071e+00 -1.036323e+01 # CAT + 2282 153 2 -2.3557 -8.529789e+00 4.396365e+00 -1.140635e+01 # CAO + 2283 153 3 -2.3537 -7.856827e+00 5.618628e+00 -1.152123e+01 # CAM + 2284 153 4 -2.3627 -6.866857e+00 5.962596e+00 -1.059298e+01 # CAP + 2285 153 3 -2.3537 -6.549848e+00 5.084301e+00 -9.549860e+00 # CAM + 2286 153 2 -2.3557 -7.222810e+00 3.862039e+00 -9.434985e+00 # CAO + 2287 153 5 -2.4057 -8.938618e+00 2.199774e+00 -1.023933e+01 # CTT + 2288 153 6 0.1480 -9.293481e+00 4.131018e+00 -1.212243e+01 # HAT + 2289 153 6 0.1480 -8.101377e+00 6.296169e+00 -1.232592e+01 # HAT + 2290 153 6 0.1480 -6.347714e+00 6.905484e+00 -1.068160e+01 # HAT + 2291 153 6 0.1480 -5.786156e+00 5.349649e+00 -8.833783e+00 # HAT + 2292 153 6 0.1480 -6.978260e+00 3.184498e+00 -8.630290e+00 # HAT + 2293 153 7 0.0920 -9.237774e+00 1.854707e+00 -1.122905e+01 # HT + 2294 153 7 0.0920 -8.278564e+00 1.462557e+00 -9.782231e+00 # HT + 2295 153 7 0.0920 -9.824209e+00 2.329085e+00 -9.617153e+00 # HT + 2296 154 1 -2.2897 7.033272e+00 1.353738e+01 -1.470868e+01 # CAT + 2297 154 2 -2.3557 6.369972e+00 1.237288e+01 -1.511362e+01 # CAO + 2298 154 3 -2.3537 4.977919e+00 1.237602e+01 -1.526254e+01 # CAM + 2299 154 4 -2.3627 4.249166e+00 1.354365e+01 -1.500653e+01 # CAP + 2300 154 3 -2.3537 4.912466e+00 1.470815e+01 -1.460159e+01 # CAM + 2301 154 2 -2.3557 6.304518e+00 1.470501e+01 -1.445266e+01 # CAO + 2302 154 5 -2.4057 8.534700e+00 1.353399e+01 -1.454805e+01 # CTT + 2303 154 6 0.1480 6.932153e+00 1.147213e+01 -1.531112e+01 # HAT + 2304 154 6 0.1480 4.466231e+00 1.147769e+01 -1.557493e+01 # HAT + 2305 154 6 0.1480 3.175296e+00 1.354607e+01 -1.512141e+01 # HAT + 2306 154 6 0.1480 4.350284e+00 1.560890e+01 -1.440409e+01 # HAT + 2307 154 6 0.1480 6.816207e+00 1.560334e+01 -1.414028e+01 # HAT + 2308 154 7 0.0920 8.973376e+00 1.281809e+01 -1.524315e+01 # HT + 2309 154 7 0.0920 8.925339e+00 1.452968e+01 -1.475806e+01 # HT + 2310 154 7 0.0920 8.790738e+00 1.325175e+01 -1.352683e+01 # HT + 2311 155 1 -2.2897 1.494315e+01 7.729348e+00 8.620680e+00 # CAT + 2312 155 2 -2.3557 1.481343e+01 7.137743e+00 7.358469e+00 # CAO + 2313 155 3 -2.3537 1.500194e+01 7.905314e+00 6.202916e+00 # CAM + 2314 155 4 -2.3627 1.532016e+01 9.264490e+00 6.309575e+00 # CAP + 2315 155 3 -2.3537 1.544987e+01 9.856095e+00 7.571787e+00 # CAM + 2316 155 2 -2.3557 1.526137e+01 9.088525e+00 8.727339e+00 # CAO + 2317 155 5 -2.4057 1.473983e+01 6.901468e+00 9.867025e+00 # CTT + 2318 155 6 0.1480 1.456795e+01 6.089236e+00 7.276189e+00 # HAT + 2319 155 6 0.1480 1.490187e+01 7.448933e+00 5.229210e+00 # HAT + 2320 155 6 0.1480 1.546557e+01 9.856617e+00 5.418149e+00 # HAT + 2321 155 6 0.1480 1.569536e+01 1.090460e+01 7.654066e+00 # HAT + 2322 155 6 0.1480 1.536144e+01 9.544906e+00 9.701044e+00 # HAT + 2323 155 7 0.0920 1.502661e+01 5.868749e+00 9.668646e+00 # HT + 2324 155 7 0.0920 1.535535e+01 7.300454e+00 1.067328e+01 # HT + 2325 155 7 0.0920 1.369057e+01 6.936742e+00 1.016011e+01 # HT + 2326 156 1 -2.2897 -6.158456e+00 -2.559693e+00 1.238154e+01 # CAT + 2327 156 2 -2.3557 -5.156109e+00 -1.583005e+00 1.234440e+01 # CAO + 2328 156 3 -2.3537 -5.462517e+00 -2.532580e-01 1.265728e+01 # CAM + 2329 156 4 -2.3627 -6.771273e+00 9.979900e-02 1.300729e+01 # CAP + 2330 156 3 -2.3537 -7.773621e+00 -8.768900e-01 1.304443e+01 # CAM + 2331 156 2 -2.3557 -7.467212e+00 -2.206635e+00 1.273155e+01 # CAO + 2332 156 5 -2.4057 -5.827973e+00 -3.993919e+00 1.204409e+01 # CTT + 2333 156 6 0.1480 -4.146497e+00 -1.855363e+00 1.207439e+01 # HAT + 2334 156 6 0.1480 -4.689278e+00 5.001870e-01 1.262863e+01 # HAT + 2335 156 6 0.1480 -7.007646e+00 1.125603e+00 1.324865e+01 # HAT + 2336 156 6 0.1480 -8.783233e+00 -6.045310e-01 1.331443e+01 # HAT + 2337 156 6 0.1480 -8.240452e+00 -2.960081e+00 1.276020e+01 # HAT + 2338 156 7 0.0920 -4.792829e+00 -4.202137e+00 1.231469e+01 # HT + 2339 156 7 0.0920 -6.488980e+00 -4.659828e+00 1.259882e+01 # HT + 2340 156 7 0.0920 -5.963207e+00 -4.156564e+00 1.097481e+01 # HT + 2341 157 1 -2.2897 5.347793e+00 -8.630432e+00 1.406359e+01 # CAT + 2342 157 2 -2.3557 6.333015e+00 -8.775293e+00 1.307954e+01 # CAO + 2343 157 3 -2.3537 7.062091e+00 -7.660184e+00 1.264945e+01 # CAM + 2344 157 4 -2.3627 6.805945e+00 -6.400215e+00 1.320340e+01 # CAP + 2345 157 3 -2.3537 5.820723e+00 -6.255354e+00 1.418745e+01 # CAM + 2346 157 2 -2.3557 5.091647e+00 -7.370462e+00 1.461754e+01 # CAO + 2347 157 5 -2.4057 4.561432e+00 -9.833155e+00 1.452748e+01 # CTT + 2348 157 6 0.1480 6.530613e+00 -9.747269e+00 1.265220e+01 # HAT + 2349 157 6 0.1480 7.822119e+00 -7.771934e+00 1.189032e+01 # HAT + 2350 157 6 0.1480 7.368375e+00 -5.539988e+00 1.287161e+01 # HAT + 2351 157 6 0.1480 5.623125e+00 -5.283377e+00 1.461479e+01 # HAT + 2352 157 6 0.1480 4.331619e+00 -7.258712e+00 1.537667e+01 # HAT + 2353 157 7 0.0920 5.178453e+00 -1.072737e+01 1.443935e+01 # HT + 2354 157 7 0.0920 4.267396e+00 -9.696346e+00 1.556811e+01 # HT + 2355 157 7 0.0920 3.670004e+00 -9.945175e+00 1.391030e+01 # HT + 2356 158 1 -2.2897 3.321750e-01 -7.796423e+00 4.481877e+00 # CAT + 2357 158 2 -2.3557 1.512905e+00 -8.140109e+00 3.812731e+00 # CAO + 2358 158 3 -2.3537 2.630578e+00 -7.300482e+00 3.889099e+00 # CAM + 2359 158 4 -2.3627 2.567522e+00 -6.117168e+00 4.634613e+00 # CAP + 2360 158 3 -2.3537 1.386793e+00 -5.773481e+00 5.303759e+00 # CAM + 2361 158 2 -2.3557 2.691190e-01 -6.613108e+00 5.227392e+00 # CAO + 2362 158 5 -2.4057 -8.733150e-01 -8.702020e+00 4.399509e+00 # CTT + 2363 158 6 0.1480 1.561548e+00 -9.052951e+00 3.237620e+00 # HAT + 2364 158 6 0.1480 3.541427e+00 -7.565612e+00 3.372900e+00 # HAT + 2365 158 6 0.1480 3.429728e+00 -5.469455e+00 4.693525e+00 # HAT + 2366 158 6 0.1480 1.338150e+00 -4.860639e+00 5.878871e+00 # HAT + 2367 158 6 0.1480 -6.417290e-01 -6.347978e+00 5.743591e+00 # HAT + 2368 158 7 0.0920 -5.452730e-01 -9.734224e+00 4.276853e+00 # HT + 2369 158 7 0.0920 -1.458105e+00 -8.613537e+00 5.315092e+00 # HT + 2370 158 7 0.0920 -1.487993e+00 -8.412939e+00 3.547041e+00 # HT + 2371 159 1 -2.2897 5.524772e+00 -9.960755e+00 2.157545e+00 # CAT + 2372 159 2 -2.3557 4.454155e+00 -9.613388e+00 1.325009e+00 # CAO + 2373 159 3 -2.3537 4.673169e+00 -9.386165e+00 -3.895700e-02 # CAM + 2374 159 4 -2.3627 5.962800e+00 -9.506309e+00 -5.703870e-01 # CAP + 2375 159 3 -2.3537 7.033416e+00 -9.853676e+00 2.621490e-01 # CAM + 2376 159 2 -2.3557 6.814403e+00 -1.008090e+01 1.626114e+00 # CAO + 2377 159 5 -2.4057 5.288550e+00 -1.020583e+01 3.628679e+00 # CTT + 2378 159 6 0.1480 3.459297e+00 -9.520705e+00 1.734969e+00 # HAT + 2379 159 6 0.1480 3.847265e+00 -9.118196e+00 -6.811990e-01 # HAT + 2380 159 6 0.1480 6.131754e+00 -9.331023e+00 -1.622589e+00 # HAT + 2381 159 6 0.1480 8.028275e+00 -9.946359e+00 -1.478120e-01 # HAT + 2382 159 6 0.1480 7.640307e+00 -1.034887e+01 2.268356e+00 # HAT + 2383 159 7 0.0920 4.279375e+00 -1.059049e+01 3.776017e+00 # HT + 2384 159 7 0.0920 6.011593e+00 -1.093360e+01 3.997003e+00 # HT + 2385 159 7 0.0920 5.403920e+00 -9.270570e+00 4.176471e+00 # HT + 2386 160 1 -2.2897 5.104672e+00 1.661963e+00 -3.318084e+00 # CAT + 2387 160 2 -2.3557 5.569579e+00 7.517380e-01 -4.274825e+00 # CAO + 2388 160 3 -2.3537 4.663457e+00 1.028640e-01 -5.122119e+00 # CAM + 2389 160 4 -2.3627 3.292429e+00 3.642150e-01 -5.012672e+00 # CAP + 2390 160 3 -2.3537 2.827523e+00 1.274441e+00 -4.055931e+00 # CAM + 2391 160 2 -2.3557 3.733644e+00 1.923314e+00 -3.208638e+00 # CAO + 2392 160 5 -2.4057 6.081989e+00 2.361820e+00 -2.404218e+00 # CTT + 2393 160 6 0.1480 6.627228e+00 5.501240e-01 -4.359255e+00 # HAT + 2394 160 6 0.1480 5.022099e+00 -5.993100e-01 -5.860176e+00 # HAT + 2395 160 6 0.1480 2.593421e+00 -1.363440e-01 -5.666298e+00 # HAT + 2396 160 6 0.1480 1.769873e+00 1.476054e+00 -3.971501e+00 # HAT + 2397 160 6 0.1480 3.375002e+00 2.625488e+00 -2.470581e+00 # HAT + 2398 160 7 0.0920 7.036720e+00 2.482145e+00 -2.916187e+00 # HT + 2399 160 7 0.0920 5.689303e+00 3.341981e+00 -2.133697e+00 # HT + 2400 160 7 0.0920 6.226428e+00 1.767246e+00 -1.502154e+00 # HT + 2401 161 1 -2.2897 -7.990068e+00 -5.329315e+00 -6.623098e+00 # CAT + 2402 161 2 -2.3557 -6.680085e+00 -5.810586e+00 -6.734102e+00 # CAO + 2403 161 3 -2.3537 -5.826116e+00 -5.295764e+00 -7.716801e+00 # CAM + 2404 161 4 -2.3627 -6.282131e+00 -4.299671e+00 -8.588494e+00 # CAP + 2405 161 3 -2.3537 -7.592114e+00 -3.818400e+00 -8.477489e+00 # CAM + 2406 161 2 -2.3557 -8.446083e+00 -4.333222e+00 -7.494791e+00 # CAO + 2407 161 5 -2.4057 -8.911135e+00 -5.884587e+00 -5.563188e+00 # CTT + 2408 161 6 0.1480 -6.328302e+00 -6.579001e+00 -6.061654e+00 # HAT + 2409 161 6 0.1480 -4.815558e+00 -5.667030e+00 -7.802433e+00 # HAT + 2410 161 6 0.1480 -5.623355e+00 -3.902522e+00 -9.346576e+00 # HAT + 2411 161 6 0.1480 -7.943896e+00 -3.049985e+00 -9.149938e+00 # HAT + 2412 161 6 0.1480 -9.456641e+00 -3.961955e+00 -7.409159e+00 # HAT + 2413 161 7 0.0920 -8.324591e+00 -6.199585e+00 -4.700144e+00 # HT + 2414 161 7 0.0920 -9.620681e+00 -5.115327e+00 -5.258423e+00 # HT + 2415 161 7 0.0920 -9.453951e+00 -6.740246e+00 -5.964807e+00 # HT + 2416 162 1 -2.2897 1.292764e+01 6.799594e+00 1.480299e+01 # CAT + 2417 162 2 -2.3557 1.176741e+01 6.066701e+00 1.508001e+01 # CAO + 2418 162 3 -2.3537 1.185052e+01 4.691027e+00 1.532621e+01 # CAM + 2419 162 4 -2.3627 1.309385e+01 4.048247e+00 1.529539e+01 # CAP + 2420 162 3 -2.3537 1.425408e+01 4.781140e+00 1.501837e+01 # CAM + 2421 162 2 -2.3557 1.417097e+01 6.156813e+00 1.477217e+01 # CAO + 2422 162 5 -2.4057 1.283800e+01 8.283357e+00 1.453745e+01 # CTT + 2423 162 6 0.1480 1.080827e+01 6.562560e+00 1.510379e+01 # HAT + 2424 162 6 0.1480 1.095549e+01 4.125652e+00 1.553991e+01 # HAT + 2425 162 6 0.1480 1.315797e+01 2.987012e+00 1.548532e+01 # HAT + 2426 162 6 0.1480 1.521322e+01 4.285280e+00 1.499459e+01 # HAT + 2427 162 6 0.1480 1.506601e+01 6.722188e+00 1.455847e+01 # HAT + 2428 162 7 0.0920 1.199512e+01 8.701239e+00 1.508794e+01 # HT + 2429 162 7 0.0920 1.375913e+01 8.767374e+00 1.486201e+01 # HT + 2430 162 7 0.0920 1.269494e+01 8.454039e+00 1.347044e+01 # HT + 2431 163 1 -2.2897 -3.377246e+00 3.740501e+00 -1.361312e+01 # CAT + 2432 163 2 -2.3557 -3.073129e+00 2.710030e+00 -1.271554e+01 # CAO + 2433 163 3 -2.3537 -2.321238e+00 2.981930e+00 -1.156631e+01 # CAM + 2434 163 4 -2.3627 -1.873465e+00 4.284300e+00 -1.131466e+01 # CAP + 2435 163 3 -2.3537 -2.177581e+00 5.314771e+00 -1.221223e+01 # CAM + 2436 163 2 -2.3557 -2.929471e+00 5.042872e+00 -1.336146e+01 # CAO + 2437 163 5 -2.4057 -4.188213e+00 3.447239e+00 -1.485265e+01 # CTT + 2438 163 6 0.1480 -3.418554e+00 1.705345e+00 -1.290968e+01 # HAT + 2439 163 6 0.1480 -2.086634e+00 2.186995e+00 -1.087390e+01 # HAT + 2440 163 6 0.1480 -1.293434e+00 4.494051e+00 -1.042811e+01 # HAT + 2441 163 6 0.1480 -1.832155e+00 6.319457e+00 -1.201810e+01 # HAT + 2442 163 6 0.1480 -3.164076e+00 5.837807e+00 -1.405388e+01 # HAT + 2443 163 7 0.0920 -4.868631e+00 2.619001e+00 -1.465477e+01 # HT + 2444 163 7 0.0920 -4.763199e+00 4.331105e+00 -1.512882e+01 # HT + 2445 163 7 0.0920 -3.519043e+00 3.179615e+00 -1.567038e+01 # HT + 2446 164 1 -2.2897 -5.047939e+00 -4.647917e+00 -1.503865e+01 # CAT + 2447 164 2 -2.3557 -5.061912e+00 -6.047845e+00 -1.503660e+01 # CAO + 2448 164 3 -2.3537 -6.277979e+00 -6.735872e+00 -1.512494e+01 # CAM + 2449 164 4 -2.3627 -7.480071e+00 -6.023970e+00 -1.521532e+01 # CAP + 2450 164 3 -2.3537 -7.466098e+00 -4.624042e+00 -1.521737e+01 # CAM + 2451 164 2 -2.3557 -6.250032e+00 -3.936015e+00 -1.512903e+01 # CAO + 2452 164 5 -2.4057 -3.736326e+00 -3.905831e+00 -1.494337e+01 # CTT + 2453 164 6 0.1480 -4.134584e+00 -6.597027e+00 -1.496688e+01 # HAT + 2454 164 6 0.1480 -6.288758e+00 -7.815817e+00 -1.512336e+01 # HAT + 2455 164 6 0.1480 -8.418179e+00 -6.554734e+00 -1.528347e+01 # HAT + 2456 164 6 0.1480 -8.393427e+00 -4.074860e+00 -1.528709e+01 # HAT + 2457 164 6 0.1480 -6.239253e+00 -2.856070e+00 -1.513061e+01 # HAT + 2458 164 7 0.0920 -2.946436e+00 -4.503095e+00 -1.539884e+01 # HT + 2459 164 7 0.0920 -3.818413e+00 -2.953194e+00 -1.546668e+01 # HT + 2460 164 7 0.0920 -3.495988e+00 -3.724764e+00 -1.389573e+01 # HT + 2461 165 1 -2.2897 8.001863e+00 -6.090471e+00 -1.129725e+01 # CAT + 2462 165 2 -2.3557 8.091928e+00 -7.164614e+00 -1.219062e+01 # CAO + 2463 165 3 -2.3537 6.944618e+00 -7.892469e+00 -1.252812e+01 # CAM + 2464 165 4 -2.3627 5.707243e+00 -7.546182e+00 -1.197226e+01 # CAP + 2465 165 3 -2.3537 5.617178e+00 -6.472039e+00 -1.107889e+01 # CAM + 2466 165 2 -2.3557 6.764487e+00 -5.744184e+00 -1.074139e+01 # CAO + 2467 165 5 -2.4057 9.239318e+00 -5.305428e+00 -1.093323e+01 # CTT + 2468 165 6 0.1480 9.046474e+00 -7.431750e+00 -1.261943e+01 # HAT + 2469 165 6 0.1480 7.014096e+00 -8.721093e+00 -1.321729e+01 # HAT + 2470 165 6 0.1480 4.822175e+00 -8.107670e+00 -1.223261e+01 # HAT + 2471 165 6 0.1480 4.662631e+00 -6.204903e+00 -1.065008e+01 # HAT + 2472 165 6 0.1480 6.695008e+00 -4.915560e+00 -1.005222e+01 # HAT + 2473 165 7 0.0920 9.937528e+00 -5.318082e+00 -1.177016e+01 # HT + 2474 165 7 0.0920 8.963301e+00 -4.275609e+00 -1.070655e+01 # HT + 2475 165 7 0.0920 9.711657e+00 -5.755100e+00 -1.005986e+01 # HT + 2476 166 1 -2.2897 -1.110602e+00 2.274025e+00 3.053234e+00 # CAT + 2477 166 2 -2.3557 -3.738200e-01 2.535818e+00 4.214534e+00 # CAO + 2478 166 3 -2.3537 -1.023746e+00 2.989927e+00 5.368389e+00 # CAM + 2479 166 4 -2.3627 -2.410454e+00 3.182243e+00 5.360944e+00 # CAP + 2480 166 3 -2.3537 -3.147236e+00 2.920449e+00 4.199645e+00 # CAM + 2481 166 2 -2.3557 -2.497311e+00 2.466341e+00 3.045790e+00 # CAO + 2482 166 5 -2.4057 -4.096110e-01 1.784236e+00 1.808719e+00 # CTT + 2483 166 6 0.1480 6.959260e-01 2.387460e+00 4.220277e+00 # HAT + 2484 166 6 0.1480 -4.553720e-01 3.191881e+00 6.264248e+00 # HAT + 2485 166 6 0.1480 -2.911826e+00 3.532555e+00 6.251061e+00 # HAT + 2486 166 6 0.1480 -4.216983e+00 3.068808e+00 4.193902e+00 # HAT + 2487 166 6 0.1480 -3.065686e+00 2.264386e+00 2.149930e+00 # HAT + 2488 166 7 0.0920 4.703450e-01 1.205971e+00 2.090480e+00 # HT + 2489 166 7 0.0920 -1.088114e+00 1.154981e+00 1.232723e+00 # HT + 2490 166 7 0.0920 -1.043300e-01 2.637696e+00 1.203319e+00 # HT + 2491 167 1 -2.2897 2.019364e+00 1.358022e+01 -6.321715e+00 # CAT + 2492 167 2 -2.3557 2.403359e+00 1.224988e+01 -6.114996e+00 # CAO + 2493 167 3 -2.3537 1.950629e+00 1.155811e+01 -4.985177e+00 # CAM + 2494 167 4 -2.3627 1.113906e+00 1.219668e+01 -4.062077e+00 # CAP + 2495 167 3 -2.3537 7.299110e-01 1.352703e+01 -4.268796e+00 # CAM + 2496 167 2 -2.3557 1.182640e+00 1.421880e+01 -5.398614e+00 # CAO + 2497 167 5 -2.4057 2.507665e+00 1.432634e+01 -7.540306e+00 # CTT + 2498 167 6 0.1480 3.048832e+00 1.175726e+01 -6.827102e+00 # HAT + 2499 167 6 0.1480 2.246854e+00 1.053184e+01 -4.825708e+00 # HAT + 2500 167 6 0.1480 7.646570e-01 1.166303e+01 -3.190501e+00 # HAT + 2501 167 6 0.1480 8.443800e-02 1.401964e+01 -3.556689e+00 # HAT + 2502 167 6 0.1480 8.864150e-01 1.524506e+01 -5.558083e+00 # HAT + 2503 167 7 0.0920 2.661644e+00 1.362399e+01 -8.359505e+00 # HT + 2504 167 7 0.0920 1.765742e+00 1.506901e+01 -7.833743e+00 # HT + 2505 167 7 0.0920 3.448592e+00 1.482540e+01 -7.308566e+00 # HT + 2506 168 1 -2.2897 1.087030e+01 -1.087734e+01 1.120032e+01 # CAT + 2507 168 2 -2.3557 1.125090e+01 -1.176333e+01 1.018535e+01 # CAO + 2508 168 3 -2.3537 1.029277e+01 -1.225833e+01 9.292617e+00 # CAM + 2509 168 4 -2.3627 8.954049e+00 -1.186732e+01 9.414847e+00 # CAP + 2510 168 3 -2.3537 8.573453e+00 -1.098133e+01 1.042981e+01 # CAM + 2511 168 2 -2.3557 9.531578e+00 -1.048633e+01 1.132255e+01 # CAO + 2512 168 5 -2.4057 1.190371e+01 -1.034345e+01 1.216320e+01 # CTT + 2513 168 6 0.1480 1.228362e+01 -1.206497e+01 1.009106e+01 # HAT + 2514 168 6 0.1480 1.058637e+01 -1.294181e+01 8.509642e+00 # HAT + 2515 168 6 0.1480 8.214923e+00 -1.224917e+01 8.726164e+00 # HAT + 2516 168 6 0.1480 7.540724e+00 -1.067969e+01 1.052411e+01 # HAT + 2517 168 6 0.1480 9.237975e+00 -9.802851e+00 1.210553e+01 # HAT + 2518 168 7 0.0920 1.287097e+01 -1.028625e+01 1.166397e+01 # HT + 2519 168 7 0.0920 1.160914e+01 -9.349042e+00 1.249857e+01 # HT + 2520 168 7 0.0920 1.197804e+01 -1.100914e+01 1.302311e+01 # HT + 2521 169 1 -2.2897 -1.353616e+01 -1.030034e+00 -1.354210e+01 # CAT + 2522 169 2 -2.3557 -1.247673e+01 -1.935247e+00 -1.367696e+01 # CAO + 2523 169 3 -2.3537 -1.116202e+01 -1.513760e+00 -1.344479e+01 # CAM + 2524 169 4 -2.3627 -1.090675e+01 -1.870620e-01 -1.307777e+01 # CAP + 2525 169 3 -2.3537 -1.196618e+01 7.181510e-01 -1.294291e+01 # CAM + 2526 169 2 -2.3557 -1.328089e+01 2.966650e-01 -1.317507e+01 # CAO + 2527 169 5 -2.4057 -1.495416e+01 -1.484636e+00 -1.379250e+01 # CTT + 2528 169 6 0.1480 -1.267365e+01 -2.958700e+00 -1.396009e+01 # HAT + 2529 169 6 0.1480 -1.034474e+01 -2.212067e+00 -1.354883e+01 # HAT + 2530 169 6 0.1480 -9.892549e+00 1.380850e-01 -1.289867e+01 # HAT + 2531 169 6 0.1480 -1.176926e+01 1.741604e+00 -1.265977e+01 # HAT + 2532 169 6 0.1480 -1.409817e+01 9.949720e-01 -1.307104e+01 # HAT + 2533 169 7 0.0920 -1.504715e+01 -2.541299e+00 -1.354167e+01 # HT + 2534 169 7 0.0920 -1.563734e+01 -9.032690e-01 -1.317333e+01 # HT + 2535 169 7 0.0920 -1.520304e+01 -1.337965e+00 -1.484352e+01 # HT + 2536 170 1 -2.2897 -9.776519e+00 8.663007e+00 8.064009e+00 # CAT + 2537 170 2 -2.3557 -8.973606e+00 7.580481e+00 7.685238e+00 # CAO + 2538 170 3 -2.3537 -9.466861e+00 6.621857e+00 6.792074e+00 # CAM + 2539 170 4 -2.3627 -1.076303e+01 6.745760e+00 6.277683e+00 # CAP + 2540 170 3 -2.3537 -1.156594e+01 7.828287e+00 6.656455e+00 # CAM + 2541 170 2 -2.3557 -1.107269e+01 8.786910e+00 7.549618e+00 # CAO + 2542 170 5 -2.4057 -9.244509e+00 9.696951e+00 9.027350e+00 # CTT + 2543 170 6 0.1480 -7.973706e+00 7.484899e+00 8.082054e+00 # HAT + 2544 170 6 0.1480 -8.847471e+00 5.786766e+00 6.499878e+00 # HAT + 2545 170 6 0.1480 -1.114354e+01 6.006251e+00 5.588671e+00 # HAT + 2546 170 6 0.1480 -1.256584e+01 7.923869e+00 6.259638e+00 # HAT + 2547 170 6 0.1480 -1.169208e+01 9.622002e+00 7.841813e+00 # HAT + 2548 170 7 0.0920 -8.163304e+00 9.776977e+00 8.914678e+00 # HT + 2549 170 7 0.0920 -9.703848e+00 1.066239e+01 8.815145e+00 # HT + 2550 170 7 0.0920 -9.481793e+00 9.398902e+00 1.004861e+01 # HT + 2551 171 1 -2.2897 -1.360872e+01 1.342994e+01 -1.165809e+01 # CAT + 2552 171 2 -2.3557 -1.228082e+01 1.335143e+01 -1.209454e+01 # CAO + 2553 171 3 -2.3537 -1.181263e+01 1.218177e+01 -1.270504e+01 # CAM + 2554 171 4 -2.3627 -1.267236e+01 1.109063e+01 -1.287908e+01 # CAP + 2555 171 3 -2.3537 -1.400027e+01 1.116915e+01 -1.244262e+01 # CAM + 2556 171 2 -2.3557 -1.446845e+01 1.233881e+01 -1.183213e+01 # CAO + 2557 171 5 -2.4057 -1.411369e+01 1.469150e+01 -1.099962e+01 # CTT + 2558 171 6 0.1480 -1.161760e+01 1.419316e+01 -1.196029e+01 # HAT + 2559 171 6 0.1480 -1.078825e+01 1.212120e+01 -1.304174e+01 # HAT + 2560 171 6 0.1480 -1.231119e+01 1.018832e+01 -1.335004e+01 # HAT + 2561 171 6 0.1480 -1.466348e+01 1.032741e+01 -1.257688e+01 # HAT + 2562 171 6 0.1480 -1.549284e+01 1.239938e+01 -1.149543e+01 # HAT + 2563 171 7 0.0920 -1.357260e+01 1.555059e+01 -1.139622e+01 # HT + 2564 171 7 0.0920 -1.517814e+01 1.480742e+01 -1.120363e+01 # HT + 2565 171 7 0.0920 -1.395537e+01 1.462846e+01 -9.923027e+00 # HT + 2566 172 1 -2.2897 1.389519e+01 2.485259e+00 1.299849e+01 # CAT + 2567 172 2 -2.3557 1.290828e+01 1.539973e+00 1.330255e+01 # CAO + 2568 172 3 -2.3537 1.156842e+01 1.933772e+00 1.340100e+01 # CAM + 2569 172 4 -2.3627 1.121546e+01 3.272856e+00 1.319539e+01 # CAP + 2570 172 3 -2.3537 1.220237e+01 4.218143e+00 1.289134e+01 # CAM + 2571 172 2 -2.3557 1.354223e+01 3.824345e+00 1.279289e+01 # CAO + 2572 172 5 -2.4057 1.534032e+01 2.060520e+00 1.289231e+01 # CTT + 2573 172 6 0.1480 1.318056e+01 5.069640e-01 1.346116e+01 # HAT + 2574 172 6 0.1480 1.080709e+01 1.204550e+00 1.363555e+01 # HAT + 2575 172 6 0.1480 1.018185e+01 3.576644e+00 1.327134e+01 # HAT + 2576 172 6 0.1480 1.193009e+01 5.251152e+00 1.273273e+01 # HAT + 2577 172 6 0.1480 1.430356e+01 4.553566e+00 1.255833e+01 # HAT + 2578 172 7 0.0920 1.539151e+01 1.026013e+00 1.255278e+01 # HT + 2579 172 7 0.0920 1.585677e+01 2.702545e+00 1.217874e+01 # HT + 2580 172 7 0.0920 1.581735e+01 2.145964e+00 1.386865e+01 # HT + 2581 173 1 -2.2897 -1.484313e+01 -2.172971e+00 -2.676600e-02 # CAT + 2582 173 2 -2.3557 -1.401990e+01 -1.171460e+00 -5.552330e-01 # CAO + 2583 173 3 -2.3537 -1.393181e+01 -9.968400e-01 -1.941504e+00 # CAM + 2584 173 4 -2.3627 -1.466695e+01 -1.823731e+00 -2.799308e+00 # CAP + 2585 173 3 -2.3537 -1.549017e+01 -2.825242e+00 -2.270842e+00 # CAM + 2586 173 2 -2.3557 -1.557826e+01 -2.999863e+00 -8.845710e-01 # CAO + 2587 173 5 -2.4057 -1.493814e+01 -2.361311e+00 1.468426e+00 # CTT + 2588 173 6 0.1480 -1.345280e+01 -5.335730e-01 1.065020e-01 # HAT + 2589 173 6 0.1480 -1.329675e+01 -2.242460e-01 -2.349178e+00 # HAT + 2590 173 6 0.1480 -1.459899e+01 -1.689025e+00 -3.868718e+00 # HAT + 2591 173 6 0.1480 -1.605728e+01 -3.463130e+00 -2.932577e+00 # HAT + 2592 173 6 0.1480 -1.621332e+01 -3.772457e+00 -4.768970e-01 # HAT + 2593 173 7 0.0920 -1.478146e+01 -1.404438e+00 1.966367e+00 # HT + 2594 173 7 0.0920 -1.592516e+01 -2.746327e+00 1.724661e+00 # HT + 2595 173 7 0.0920 -1.417649e+01 -3.069315e+00 1.795096e+00 # HT + 2596 174 1 -2.2897 1.158764e+01 6.596540e-01 -1.381122e+01 # CAT + 2597 174 2 -2.3557 1.171831e+01 -3.742800e-02 -1.260416e+01 # CAO + 2598 174 3 -2.3537 1.295993e+01 -9.496100e-02 -1.195990e+01 # CAM + 2599 174 4 -2.3627 1.407088e+01 5.445890e-01 -1.252271e+01 # CAP + 2600 174 3 -2.3537 1.394022e+01 1.241670e+00 -1.372977e+01 # CAM + 2601 174 2 -2.3557 1.269860e+01 1.299203e+00 -1.437403e+01 # CAO + 2602 174 5 -2.4057 1.024846e+01 7.217070e-01 -1.450610e+01 # CTT + 2603 174 6 0.1480 1.086128e+01 -5.307950e-01 -1.216999e+01 # HAT + 2604 174 6 0.1480 1.306073e+01 -6.327100e-01 -1.102874e+01 # HAT + 2605 174 6 0.1480 1.502871e+01 5.002060e-01 -1.202571e+01 # HAT + 2606 174 6 0.1480 1.479724e+01 1.735037e+00 -1.416394e+01 # HAT + 2607 174 6 0.1480 1.259780e+01 1.836952e+00 -1.530519e+01 # HAT + 2608 174 7 0.0920 9.451144e+00 6.742970e-01 -1.376439e+01 # HT + 2609 174 7 0.0920 1.017059e+01 1.655269e+00 -1.506332e+01 # HT + 2610 174 7 0.0920 1.015559e+01 -1.195900e-01 -1.519290e+01 # HT + 2611 175 1 -2.2897 5.827072e+00 9.473576e+00 -1.185464e+00 # CAT + 2612 175 2 -2.3557 6.676509e+00 1.006857e+01 -2.125910e+00 # CAO + 2613 175 3 -2.3537 6.140518e+00 1.083965e+01 -3.164252e+00 # CAM + 2614 175 4 -2.3627 4.755090e+00 1.101573e+01 -3.262148e+00 # CAP + 2615 175 3 -2.3537 3.905653e+00 1.042074e+01 -2.321702e+00 # CAM + 2616 175 2 -2.3557 4.441644e+00 9.649659e+00 -1.283360e+00 # CAO + 2617 175 5 -2.4057 6.405177e+00 8.641916e+00 -6.553700e-02 # CTT + 2618 175 6 0.1480 7.745268e+00 9.932736e+00 -2.050390e+00 # HAT + 2619 175 6 0.1480 6.795798e+00 1.129864e+01 -3.889739e+00 # HAT + 2620 175 6 0.1480 4.341611e+00 1.161056e+01 -4.063156e+00 # HAT + 2621 175 6 0.1480 2.836894e+00 1.055657e+01 -2.397222e+00 # HAT + 2622 175 6 0.1480 3.786364e+00 9.190663e+00 -5.578730e-01 # HAT + 2623 175 7 0.0920 7.397067e+00 9.014753e+00 1.899000e-01 # HT + 2624 175 7 0.0920 5.756868e+00 8.707308e+00 8.082590e-01 # HT + 2625 175 7 0.0920 6.479497e+00 7.602496e+00 -3.851980e-01 # HT + 2626 176 1 -2.2897 -2.122912e+00 -1.483338e+01 7.414950e-01 # CAT + 2627 176 2 -2.3557 -2.789685e+00 -1.475037e+01 -4.867240e-01 # CAO + 2628 176 3 -2.3537 -4.181364e+00 -1.489362e+01 -5.387970e-01 # CAM + 2629 176 4 -2.3627 -4.906269e+00 -1.511987e+01 6.373490e-01 # CAP + 2630 176 3 -2.3537 -4.239496e+00 -1.520288e+01 1.865568e+00 # CAM + 2631 176 2 -2.3557 -2.847818e+00 -1.505964e+01 1.917642e+00 # CAO + 2632 176 5 -2.4057 -6.218880e-01 -1.467888e+01 7.976600e-01 # CTT + 2633 176 6 0.1480 -2.230472e+00 -1.457583e+01 -1.394037e+00 # HAT + 2634 176 6 0.1480 -4.695731e+00 -1.482958e+01 -1.486281e+00 # HAT + 2635 176 6 0.1480 -5.979850e+00 -1.523038e+01 5.971780e-01 # HAT + 2636 176 6 0.1480 -4.798710e+00 -1.537742e+01 2.772881e+00 # HAT + 2637 176 6 0.1480 -2.333450e+00 -1.512368e+01 2.865125e+00 # HAT + 2638 176 7 0.0920 -2.934260e-01 -1.402134e+01 -7.234000e-03 # HT + 2639 176 7 0.0920 -3.360900e-01 -1.424832e+01 1.757364e+00 # HT + 2640 176 7 0.0920 -1.510860e-01 -1.565531e+01 6.834490e-01 # HT + 2641 177 1 -2.2897 9.515090e+00 -8.536665e+00 1.503099e+01 # CAT + 2642 177 2 -2.3557 8.489560e+00 -7.588200e+00 1.512428e+01 # CAO + 2643 177 3 -2.3537 8.801377e+00 -6.225783e+00 1.520545e+01 # CAM + 2644 177 4 -2.3627 1.013872e+01 -5.811831e+00 1.519334e+01 # CAP + 2645 177 3 -2.3537 1.116425e+01 -6.760296e+00 1.510005e+01 # CAM + 2646 177 2 -2.3557 1.085244e+01 -8.122712e+00 1.501888e+01 # CAO + 2647 177 5 -2.4057 9.178773e+00 -1.000613e+01 1.494343e+01 # CTT + 2648 177 6 0.1480 7.457892e+00 -7.907535e+00 1.513362e+01 # HAT + 2649 177 6 0.1480 8.010254e+00 -5.494110e+00 1.527742e+01 # HAT + 2650 177 6 0.1480 1.037927e+01 -4.760823e+00 1.525596e+01 # HAT + 2651 177 6 0.1480 1.219592e+01 -6.440961e+00 1.509071e+01 # HAT + 2652 177 6 0.1480 1.164356e+01 -8.854385e+00 1.494691e+01 # HAT + 2653 177 7 0.0920 8.215495e+00 -1.013007e+01 1.444862e+01 # HT + 2654 177 7 0.0920 9.949643e+00 -1.052235e+01 1.437127e+01 # HT + 2655 177 7 0.0920 9.128063e+00 -1.042821e+01 1.594711e+01 # HT + 2656 178 1 -2.2897 1.367948e+01 5.896505e+00 -1.390580e+01 # CAT + 2657 178 2 -2.3557 1.296901e+01 4.728532e+00 -1.420757e+01 # CAO + 2658 178 3 -2.3537 1.174486e+01 4.808414e+00 -1.488216e+01 # CAM + 2659 178 4 -2.3627 1.123118e+01 6.056268e+00 -1.525498e+01 # CAP + 2660 178 3 -2.3537 1.194166e+01 7.224241e+00 -1.495321e+01 # CAM + 2661 178 2 -2.3557 1.316581e+01 7.144360e+00 -1.427862e+01 # CAO + 2662 178 5 -2.4057 1.499982e+01 5.810348e+00 -1.317820e+01 # CTT + 2663 178 6 0.1480 1.336528e+01 3.765902e+00 -1.391996e+01 # HAT + 2664 178 6 0.1480 1.119678e+01 3.907406e+00 -1.511495e+01 # HAT + 2665 178 6 0.1480 1.028684e+01 6.117892e+00 -1.577537e+01 # HAT + 2666 178 6 0.1480 1.154539e+01 8.186872e+00 -1.524081e+01 # HAT + 2667 178 6 0.1480 1.371389e+01 8.045368e+00 -1.404582e+01 # HAT + 2668 178 7 0.0920 1.549151e+01 4.869830e+00 -1.342672e+01 # HT + 2669 178 7 0.0920 1.563595e+01 6.642839e+00 -1.347887e+01 # HT + 2670 178 7 0.0920 1.482644e+01 5.856091e+00 -1.210305e+01 # HT + 2671 179 1 -2.2897 7.461620e-01 8.867300e-01 1.424244e+01 # CAT + 2672 179 2 -2.3557 4.145600e-02 -3.086450e-01 1.442810e+01 # CAO + 2673 179 3 -2.3537 -1.062513e+00 -6.032940e-01 1.361913e+01 # CAM + 2674 179 4 -2.3627 -1.461776e+00 2.974320e-01 1.262450e+01 # CAP + 2675 179 3 -2.3537 -7.570700e-01 1.492807e+00 1.243885e+01 # CAM + 2676 179 2 -2.3557 3.468990e-01 1.787456e+00 1.324782e+01 # CAO + 2677 179 5 -2.4057 1.936871e+00 1.204531e+00 1.511498e+01 # CTT + 2678 179 6 0.1480 3.494590e-01 -1.003490e+00 1.519538e+01 # HAT + 2679 179 6 0.1480 -1.606144e+00 -1.525440e+00 1.376235e+01 # HAT + 2680 179 6 0.1480 -2.313410e+00 7.013100e-02 1.200044e+01 # HAT + 2681 179 6 0.1480 -1.065073e+00 2.187653e+00 1.167156e+01 # HAT + 2682 179 6 0.1480 8.905290e-01 2.709603e+00 1.310460e+01 # HAT + 2683 179 7 0.0920 2.420938e+00 2.773530e-01 1.542177e+01 # HT + 2684 179 7 0.0920 2.645106e+00 1.815710e+00 1.455555e+01 # HT + 2685 179 7 0.0920 1.605311e+00 1.750259e+00 1.599835e+01 # HT + 2686 180 1 -2.2897 8.257893e+00 1.390264e+01 -8.376581e+00 # CAT + 2687 180 2 -2.3557 9.097894e+00 1.306944e+01 -7.628136e+00 # CAO + 2688 180 3 -2.3537 8.556801e+00 1.200737e+01 -6.893824e+00 # CAM + 2689 180 4 -2.3627 7.175709e+00 1.177849e+01 -6.907958e+00 # CAP + 2690 180 3 -2.3537 6.335708e+00 1.261170e+01 -7.656404e+00 # CAM + 2691 180 2 -2.3557 6.876800e+00 1.367377e+01 -8.390715e+00 # CAO + 2692 180 5 -2.4057 8.841499e+00 1.504817e+01 -9.168589e+00 # CTT + 2693 180 6 0.1480 1.016331e+01 1.324600e+01 -7.617232e+00 # HAT + 2694 180 6 0.1480 9.204802e+00 1.136461e+01 -6.316452e+00 # HAT + 2695 180 6 0.1480 6.758295e+00 1.095918e+01 -6.341489e+00 # HAT + 2696 180 6 0.1480 5.270293e+00 1.243514e+01 -7.667307e+00 # HAT + 2697 180 6 0.1480 6.228799e+00 1.431653e+01 -8.968087e+00 # HAT + 2698 180 7 0.0920 9.852580e+00 1.479317e+01 -9.486066e+00 # HT + 2699 180 7 0.0920 8.222489e+00 1.523670e+01 -1.004573e+01 # HT + 2700 180 7 0.0920 8.871305e+00 1.594271e+01 -8.546493e+00 # HT + 2701 181 1 -2.2897 1.444772e+01 -3.863891e+00 1.817972e+00 # CAT + 2702 181 2 -2.3557 1.422203e+01 -4.194798e+00 3.159451e+00 # CAO + 2703 181 3 -2.3537 1.359364e+01 -5.402369e+00 3.486394e+00 # CAM + 2704 181 4 -2.3627 1.319093e+01 -6.279033e+00 2.471857e+00 # CAP + 2705 181 3 -2.3537 1.341661e+01 -5.948125e+00 1.130378e+00 # CAM + 2706 181 2 -2.3557 1.404501e+01 -4.740555e+00 8.034350e-01 # CAO + 2707 181 5 -2.4057 1.512549e+01 -2.561440e+00 1.465340e+00 # CTT + 2708 181 6 0.1480 1.453270e+01 -3.518515e+00 3.942093e+00 # HAT + 2709 181 6 0.1480 1.341954e+01 -5.657641e+00 4.521249e+00 # HAT + 2710 181 6 0.1480 1.270617e+01 -7.210588e+00 2.724070e+00 # HAT + 2711 181 6 0.1480 1.310595e+01 -6.624409e+00 3.477350e-01 # HAT + 2712 181 6 0.1480 1.421911e+01 -4.485284e+00 -2.314210e-01 # HAT + 2713 181 7 0.0920 1.581131e+01 -2.280137e+00 2.264475e+00 # HT + 2714 181 7 0.0920 1.568139e+01 -2.680675e+00 5.353630e-01 # HT + 2715 181 7 0.0920 1.437371e+01 -1.781991e+00 1.341273e+00 # HT + 2716 182 1 -2.2897 -7.049633e+00 3.258089e+00 -3.485856e+00 # CAT + 2717 182 2 -2.3557 -5.944612e+00 3.940870e+00 -4.008100e+00 # CAO + 2718 182 3 -2.3537 -5.908871e+00 5.340124e+00 -3.979612e+00 # CAM + 2719 182 4 -2.3627 -6.978151e+00 6.056597e+00 -3.428880e+00 # CAP + 2720 182 3 -2.3537 -8.083172e+00 5.373816e+00 -2.906636e+00 # CAM + 2721 182 2 -2.3557 -8.118913e+00 3.974563e+00 -2.935124e+00 # CAO + 2722 182 5 -2.4057 -7.088183e+00 1.748895e+00 -3.516583e+00 # CTT + 2723 182 6 0.1480 -5.119739e+00 3.388162e+00 -4.432951e+00 # HAT + 2724 182 6 0.1480 -5.056426e+00 5.866840e+00 -4.382486e+00 # HAT + 2725 182 6 0.1480 -6.950579e+00 7.136021e+00 -3.406903e+00 # HAT + 2726 182 6 0.1480 -8.908045e+00 5.926525e+00 -2.481785e+00 # HAT + 2727 182 6 0.1480 -8.971358e+00 3.447847e+00 -2.532250e+00 # HAT + 2728 182 7 0.0920 -6.072539e+00 1.357698e+00 -3.457133e+00 # HT + 2729 182 7 0.0920 -7.668289e+00 1.382425e+00 -2.669661e+00 # HT + 2730 182 7 0.0920 -7.551586e+00 1.415593e+00 -4.445166e+00 # HT + 2731 183 1 -2.2897 2.502015e+00 4.732922e+00 -7.662594e+00 # CAT + 2732 183 2 -2.3557 1.227819e+00 4.651111e+00 -7.088372e+00 # CAO + 2733 183 3 -2.3537 2.742260e-01 3.776189e+00 -7.622387e+00 # CAM + 2734 183 4 -2.3627 5.948300e-01 2.983078e+00 -8.730624e+00 # CAP + 2735 183 3 -2.3537 1.869026e+00 3.064889e+00 -9.304845e+00 # CAM + 2736 183 2 -2.3557 2.822619e+00 3.939811e+00 -8.770831e+00 # CAO + 2737 183 5 -2.4057 3.530533e+00 5.676588e+00 -7.086621e+00 # CTT + 2738 183 6 0.1480 9.804960e-01 5.262940e+00 -6.233447e+00 # HAT + 2739 183 6 0.1480 -7.087250e-01 3.713077e+00 -7.179416e+00 # HAT + 2740 183 6 0.1480 -1.407990e-01 2.308138e+00 -9.142578e+00 # HAT + 2741 183 6 0.1480 2.116348e+00 2.453060e+00 -1.015977e+01 # HAT + 2742 183 6 0.1480 3.805570e+00 4.002923e+00 -9.213802e+00 # HAT + 2743 183 7 0.0920 3.358422e+00 5.793319e+00 -6.016643e+00 # HT + 2744 183 7 0.0920 4.528867e+00 5.271286e+00 -7.251423e+00 # HT + 2745 183 7 0.0920 3.447806e+00 6.647317e+00 -7.575437e+00 # HT + 2746 184 1 -2.2897 2.488684e+00 -1.208082e+00 -1.389090e+00 # CAT + 2747 184 2 -2.3557 2.406245e+00 -1.648242e+00 -2.715537e+00 # CAO + 2748 184 3 -2.3537 1.238156e+00 -2.267307e+00 -3.176329e+00 # CAM + 2749 184 4 -2.3627 1.525080e-01 -2.446211e+00 -2.310674e+00 # CAP + 2750 184 3 -2.3537 2.349470e-01 -2.006051e+00 -9.842260e-01 # CAM + 2751 184 2 -2.3557 1.403034e+00 -1.386987e+00 -5.234340e-01 # CAO + 2752 184 5 -2.4057 3.748550e+00 -5.403760e-01 -8.920920e-01 # CTT + 2753 184 6 0.1480 3.243745e+00 -1.510229e+00 -3.383328e+00 # HAT + 2754 184 6 0.1480 1.174561e+00 -2.606858e+00 -4.199589e+00 # HAT + 2755 184 6 0.1480 -7.485890e-01 -2.923776e+00 -2.666142e+00 # HAT + 2756 184 6 0.1480 -6.025540e-01 -2.144064e+00 -3.164350e-01 # HAT + 2757 184 6 0.1480 1.466630e+00 -1.047435e+00 4.998260e-01 # HAT + 2758 184 7 0.0920 4.233116e+00 -1.790700e-02 -1.716909e+00 # HT + 2759 184 7 0.0920 3.496847e+00 1.738310e-01 -1.080940e-01 # HT + 2760 184 7 0.0920 4.426419e+00 -1.294381e+00 -4.920050e-01 # HT + 2761 185 1 -2.2897 6.499895e+00 1.238470e+01 7.987218e+00 # CAT + 2762 185 2 -2.3557 6.407935e+00 1.292084e+01 9.277217e+00 # CAO + 2763 185 3 -2.3537 5.541048e+00 1.399058e+01 9.530512e+00 # CAM + 2764 185 4 -2.3627 4.766122e+00 1.452418e+01 8.493807e+00 # CAP + 2765 185 3 -2.3537 4.858083e+00 1.398804e+01 7.203808e+00 # CAM + 2766 185 2 -2.3557 5.724968e+00 1.291830e+01 6.950513e+00 # CAO + 2767 185 5 -2.4057 7.434893e+00 1.123090e+01 7.714021e+00 # CTT + 2768 185 6 0.1480 7.005734e+00 1.250920e+01 1.007696e+01 # HAT + 2769 185 6 0.1480 5.470107e+00 1.440417e+01 1.052565e+01 # HAT + 2770 185 6 0.1480 4.097381e+00 1.534941e+01 8.689206e+00 # HAT + 2771 185 6 0.1480 4.260282e+00 1.439968e+01 6.404064e+00 # HAT + 2772 185 6 0.1480 5.795909e+00 1.250471e+01 5.955371e+00 # HAT + 2773 185 7 0.0920 7.534249e+00 1.062240e+01 8.612887e+00 # HT + 2774 185 7 0.0920 7.033011e+00 1.062054e+01 6.905287e+00 # HT + 2775 185 7 0.0920 8.413312e+00 1.161571e+01 7.426403e+00 # HT + 2776 186 1 -2.2897 -6.530651e+00 -1.265391e+00 -6.616663e+00 # CAT + 2777 186 2 -2.3557 -7.198240e+00 -2.283231e+00 -5.925051e+00 # CAO + 2778 186 3 -2.3537 -6.469391e+00 -3.320646e+00 -5.331293e+00 # CAM + 2779 186 4 -2.3627 -5.072952e+00 -3.340221e+00 -5.429148e+00 # CAP + 2780 186 3 -2.3537 -4.405363e+00 -2.322382e+00 -6.120760e+00 # CAM + 2781 186 2 -2.3557 -5.134212e+00 -1.284967e+00 -6.714517e+00 # CAO + 2782 186 5 -2.4057 -7.316767e+00 -1.464650e-01 -7.257074e+00 # CTT + 2783 186 6 0.1480 -8.275493e+00 -2.268130e+00 -5.849564e+00 # HAT + 2784 186 6 0.1480 -6.984388e+00 -4.105836e+00 -4.797764e+00 # HAT + 2785 186 6 0.1480 -4.510696e+00 -4.140513e+00 -4.971106e+00 # HAT + 2786 186 6 0.1480 -3.328110e+00 -2.337483e+00 -6.196247e+00 # HAT + 2787 186 6 0.1480 -4.619215e+00 -4.997760e-01 -7.248047e+00 # HAT + 2788 186 7 0.0920 -8.229357e+00 2.936800e-02 -6.687544e+00 # HT + 2789 186 7 0.0920 -6.714538e+00 7.620080e-01 -7.266944e+00 # HT + 2790 186 7 0.0920 -7.574675e+00 -4.219210e-01 -8.279672e+00 # HT + 2791 187 1 -2.2897 6.095636e+00 -8.359262e+00 7.428506e+00 # CAT + 2792 187 2 -2.3557 6.964857e+00 -8.012640e+00 8.469807e+00 # CAO + 2793 187 3 -2.3537 7.037953e+00 -6.684987e+00 8.907979e+00 # CAM + 2794 187 4 -2.3627 6.241829e+00 -5.703957e+00 8.304850e+00 # CAP + 2795 187 3 -2.3537 5.372608e+00 -6.050579e+00 7.263549e+00 # CAM + 2796 187 2 -2.3557 5.299511e+00 -7.378231e+00 6.825377e+00 # CAO + 2797 187 5 -2.4057 6.016796e+00 -9.791230e+00 6.955906e+00 # CTT + 2798 187 6 0.1480 7.579010e+00 -8.769435e+00 8.935078e+00 # HAT + 2799 187 6 0.1480 7.708495e+00 -6.417592e+00 9.711268e+00 # HAT + 2800 187 6 0.1480 6.298217e+00 -4.679767e+00 8.642868e+00 # HAT + 2801 187 6 0.1480 4.758454e+00 -5.293783e+00 6.798278e+00 # HAT + 2802 187 6 0.1480 4.628969e+00 -7.645626e+00 6.022087e+00 # HAT + 2803 187 7 0.0920 6.236452e+00 -1.046132e+01 7.787073e+00 # HT + 2804 187 7 0.0920 5.014232e+00 -9.995714e+00 6.580204e+00 # HT + 2805 187 7 0.0920 6.742711e+00 -9.951804e+00 6.158810e+00 # HT + 2806 188 1 -2.2897 -1.740414e+00 -8.387832e+00 -1.100746e+01 # CAT + 2807 188 2 -2.3557 -1.999287e+00 -7.117476e+00 -1.153583e+01 # CAO + 2808 188 3 -2.3537 -3.185823e+00 -6.880791e+00 -1.224018e+01 # CAM + 2809 188 4 -2.3627 -4.113485e+00 -7.914461e+00 -1.241616e+01 # CAP + 2810 188 3 -2.3537 -3.854612e+00 -9.184817e+00 -1.188779e+01 # CAM + 2811 188 2 -2.3557 -2.668077e+00 -9.421503e+00 -1.118343e+01 # CAO + 2812 188 5 -2.4057 -4.606500e-01 -8.643115e+00 -1.024776e+01 # CTT + 2813 188 6 0.1480 -1.283662e+00 -6.320074e+00 -1.140008e+01 # HAT + 2814 188 6 0.1480 -3.385525e+00 -5.900802e+00 -1.264779e+01 # HAT + 2815 188 6 0.1480 -5.028813e+00 -7.731875e+00 -1.295952e+01 # HAT + 2816 188 6 0.1480 -4.570238e+00 -9.982220e+00 -1.202354e+01 # HAT + 2817 188 6 0.1480 -2.468374e+00 -1.040149e+01 -1.077583e+01 # HAT + 2818 188 7 0.0920 -1.398260e-01 -7.724587e+00 -9.756357e+00 # HT + 2819 188 7 0.0920 -6.306590e-01 -9.415543e+00 -9.497727e+00 # HT + 2820 188 7 0.0920 3.136500e-01 -8.973753e+00 -1.094003e+01 # HT + 2821 189 1 -2.2897 -6.395831e+00 -8.968700e+00 4.116490e+00 # CAT + 2822 189 2 -2.3557 -7.311288e+00 -8.133883e+00 4.768426e+00 # CAO + 2823 189 3 -2.3537 -6.946709e+00 -7.487054e+00 5.955310e+00 # CAM + 2824 189 4 -2.3627 -5.666674e+00 -7.675041e+00 6.490259e+00 # CAP + 2825 189 3 -2.3537 -4.751217e+00 -8.509857e+00 5.838323e+00 # CAM + 2826 189 2 -2.3557 -5.115795e+00 -9.156686e+00 4.651439e+00 # CAO + 2827 189 5 -2.4057 -6.789055e+00 -9.666351e+00 2.836351e+00 # CTT + 2828 189 6 0.1480 -8.298743e+00 -7.988865e+00 4.355752e+00 # HAT + 2829 189 6 0.1480 -7.652919e+00 -6.843053e+00 6.458232e+00 # HAT + 2830 189 6 0.1480 -5.385427e+00 -7.176058e+00 7.405855e+00 # HAT + 2831 189 6 0.1480 -3.763760e+00 -8.654875e+00 6.250998e+00 # HAT + 2832 189 6 0.1480 -4.409585e+00 -9.800688e+00 4.148517e+00 # HAT + 2833 189 7 0.0920 -7.517201e+00 -9.058342e+00 2.299482e+00 # HT + 2834 189 7 0.0920 -5.905899e+00 -9.808991e+00 2.213623e+00 # HT + 2835 189 7 0.0920 -7.228318e+00 -1.063604e+01 3.070560e+00 # HT + 2836 190 1 -2.2897 -1.552224e+00 1.304410e+01 -1.945146e+00 # CAT + 2837 190 2 -2.3557 -1.811149e+00 1.441590e+01 -1.839755e+00 # CAO + 2838 190 3 -2.3537 -2.388413e+00 1.510384e+01 -2.913768e+00 # CAM + 2839 190 4 -2.3627 -2.706752e+00 1.441998e+01 -4.093170e+00 # CAP + 2840 190 3 -2.3537 -2.447828e+00 1.304818e+01 -4.198561e+00 # CAM + 2841 190 2 -2.3557 -1.870564e+00 1.236023e+01 -3.124549e+00 # CAO + 2842 190 5 -2.4057 -9.296040e-01 1.230210e+01 -7.867480e-01 # CTT + 2843 190 6 0.1480 -1.565572e+00 1.494345e+01 -9.299310e-01 # HAT + 2844 190 6 0.1480 -2.588154e+00 1.616209e+01 -2.832466e+00 # HAT + 2845 190 6 0.1480 -3.152070e+00 1.495068e+01 -4.921694e+00 # HAT + 2846 190 6 0.1480 -2.693404e+00 1.252062e+01 -5.108386e+00 # HAT + 2847 190 6 0.1480 -1.670822e+00 1.130198e+01 -3.205851e+00 # HAT + 2848 190 7 0.0920 -1.225639e+00 1.277507e+01 1.496080e-01 # HT + 2849 190 7 0.0920 -1.269245e+00 1.126639e+01 -7.933200e-01 # HT + 2850 190 7 0.0920 1.561520e-01 1.232847e+01 -8.791480e-01 # HT + 2851 191 1 -2.2897 5.414297e+00 2.981189e+00 -6.176554e+00 # CAT + 2852 191 2 -2.3557 4.958390e+00 2.000237e+00 -7.065307e+00 # CAO + 2853 191 3 -2.3537 3.594411e+00 1.690726e+00 -7.126671e+00 # CAM + 2854 191 4 -2.3627 2.686340e+00 2.362168e+00 -6.299282e+00 # CAP + 2855 191 3 -2.3537 3.142247e+00 3.343119e+00 -5.410529e+00 # CAM + 2856 191 2 -2.3557 4.506225e+00 3.652630e+00 -5.349164e+00 # CAO + 2857 191 5 -2.4057 6.885445e+00 3.315018e+00 -6.110368e+00 # CTT + 2858 191 6 0.1480 5.658902e+00 1.482268e+00 -7.703578e+00 # HAT + 2859 191 6 0.1480 3.242711e+00 9.339920e-01 -7.812280e+00 # HAT + 2860 191 6 0.1480 1.634127e+00 2.123402e+00 -6.346620e+00 # HAT + 2861 191 6 0.1480 2.441734e+00 3.861089e+00 -4.772257e+00 # HAT + 2862 191 6 0.1480 4.857925e+00 4.409364e+00 -4.663555e+00 # HAT + 2863 191 7 0.0920 7.340821e+00 3.147531e+00 -7.086422e+00 # HT + 2864 191 7 0.0920 7.008972e+00 4.360245e+00 -5.826922e+00 # HT + 2865 191 7 0.0920 7.370006e+00 2.678597e+00 -5.369917e+00 # HT + 2866 192 1 -2.2897 -1.317401e+01 2.235010e+00 -2.093310e+00 # CAT + 2867 192 2 -2.3557 -1.201646e+01 2.075060e+00 -1.322284e+00 # CAO + 2868 192 3 -2.3537 -1.082984e+01 1.638379e+00 -1.923327e+00 # CAM + 2869 192 4 -2.3627 -1.080078e+01 1.361647e+00 -3.295396e+00 # CAP + 2870 192 3 -2.3537 -1.195833e+01 1.521596e+00 -4.066422e+00 # CAM + 2871 192 2 -2.3557 -1.314495e+01 1.958277e+00 -3.465380e+00 # CAO + 2872 192 5 -2.4057 -1.445386e+01 2.706002e+00 -1.445043e+00 # CTT + 2873 192 6 0.1480 -1.203887e+01 2.288539e+00 -2.638300e-01 # HAT + 2874 192 6 0.1480 -9.936868e+00 1.514989e+00 -1.328535e+00 # HAT + 2875 192 6 0.1480 -9.885389e+00 1.024778e+00 -3.759058e+00 # HAT + 2876 192 6 0.1480 -1.193592e+01 1.308117e+00 -5.124877e+00 # HAT + 2877 192 6 0.1480 -1.403792e+01 2.081667e+00 -4.060172e+00 # HAT + 2878 192 7 0.0920 -1.421714e+01 3.349828e+00 -5.979570e-01 # HT + 2879 192 7 0.0920 -1.504536e+01 3.264120e+00 -2.170805e+00 # HT + 2880 192 7 0.0920 -1.502425e+01 1.844529e+00 -1.097746e+00 # HT + 2881 193 1 -2.2897 5.525683e+00 -1.475982e+01 1.370636e+01 # CAT + 2882 193 2 -2.3557 5.896111e+00 -1.506207e+01 1.239052e+01 # CAO + 2883 193 3 -2.3537 7.219616e+00 -1.541329e+01 1.209901e+01 # CAM + 2884 193 4 -2.3627 8.172692e+00 -1.546227e+01 1.312334e+01 # CAP + 2885 193 3 -2.3537 7.802263e+00 -1.516002e+01 1.443918e+01 # CAM + 2886 193 2 -2.3557 6.478759e+00 -1.480880e+01 1.473069e+01 # CAO + 2887 193 5 -2.4057 4.098189e+00 -1.438101e+01 1.402078e+01 # CTT + 2888 193 6 0.1480 5.160881e+00 -1.502429e+01 1.160033e+01 # HAT + 2889 193 6 0.1480 7.505375e+00 -1.564645e+01 1.108394e+01 # HAT + 2890 193 6 0.1480 9.193682e+00 -1.573321e+01 1.289846e+01 # HAT + 2891 193 6 0.1480 8.537494e+00 -1.519781e+01 1.522937e+01 # HAT + 2892 193 6 0.1480 6.193000e+00 -1.457564e+01 1.574576e+01 # HAT + 2893 193 7 0.0920 3.427204e+00 -1.487707e+01 1.331949e+01 # HT + 2894 193 7 0.0920 3.854817e+00 -1.469120e+01 1.503697e+01 # HT + 2895 193 7 0.0920 3.980636e+00 -1.330091e+01 1.393315e+01 # HT + 2896 194 1 -2.2897 -3.310230e-01 -1.389826e+01 5.677412e+00 # CAT + 2897 194 2 -2.3557 -1.358414e+00 -1.481879e+01 5.916352e+00 # CAO + 2898 194 3 -2.3537 -2.634615e+00 -1.459690e+01 5.385241e+00 # CAM + 2899 194 4 -2.3627 -2.883424e+00 -1.345449e+01 4.615191e+00 # CAP + 2900 194 3 -2.3537 -1.856033e+00 -1.253396e+01 4.376251e+00 # CAM + 2901 194 2 -2.3557 -5.798320e-01 -1.275584e+01 4.907361e+00 # CAO + 2902 194 5 -2.4057 1.045450e+00 -1.413758e+01 6.250252e+00 # CTT + 2903 194 6 0.1480 -1.166475e+00 -1.570008e+01 6.510390e+00 # HAT + 2904 194 6 0.1480 -3.427173e+00 -1.530703e+01 5.569566e+00 # HAT + 2905 194 6 0.1480 -3.867922e+00 -1.328332e+01 4.205477e+00 # HAT + 2906 194 6 0.1480 -2.047972e+00 -1.165266e+01 3.782212e+00 # HAT + 2907 194 6 0.1480 2.127260e-01 -1.204572e+01 4.723037e+00 # HAT + 2908 194 7 0.0920 1.223345e+00 -1.520970e+01 6.333984e+00 # HT + 2909 194 7 0.0920 1.794757e+00 -1.369568e+01 5.593472e+00 # HT + 2910 194 7 0.0920 1.113275e+00 -1.368037e+01 7.237396e+00 # HT + 2911 195 1 -2.2897 -5.882757e+00 1.207718e+01 1.390659e+01 # CAT + 2912 195 2 -2.3557 -6.150973e+00 1.226499e+01 1.254542e+01 # CAO + 2913 195 3 -2.3537 -6.910744e+00 1.336384e+01 1.212678e+01 # CAM + 2914 195 4 -2.3627 -7.402299e+00 1.427489e+01 1.306931e+01 # CAP + 2915 195 3 -2.3537 -7.134083e+00 1.408708e+01 1.443048e+01 # CAM + 2916 195 2 -2.3557 -6.374312e+00 1.298823e+01 1.484912e+01 # CAO + 2917 195 5 -2.4057 -5.063289e+00 1.089198e+01 1.435813e+01 # CTT + 2918 195 6 0.1480 -5.771774e+00 1.156218e+01 1.181833e+01 # HAT + 2919 195 6 0.1480 -7.117654e+00 1.350873e+01 1.107673e+01 # HAT + 2920 195 6 0.1480 -7.988408e+00 1.512258e+01 1.274636e+01 # HAT + 2921 195 6 0.1480 -7.513283e+00 1.478989e+01 1.515758e+01 # HAT + 2922 195 6 0.1480 -6.167402e+00 1.284334e+01 1.589917e+01 # HAT + 2923 195 7 0.0920 -4.354971e+00 1.062002e+01 1.357555e+01 # HT + 2924 195 7 0.0920 -4.518882e+00 1.115081e+01 1.526627e+01 # HT + 2925 195 7 0.0920 -5.723637e+00 1.004836e+01 1.455896e+01 # HT + 2926 196 1 -2.2897 -1.238219e+01 -6.156582e+00 3.380572e+00 # CAT + 2927 196 2 -2.3557 -1.334353e+01 -5.343366e+00 3.992551e+00 # CAO + 2928 196 3 -2.3537 -1.451124e+01 -4.998602e+00 3.301471e+00 # CAM + 2929 196 4 -2.3627 -1.471761e+01 -5.467054e+00 1.998412e+00 # CAP + 2930 196 3 -2.3537 -1.375628e+01 -6.280269e+00 1.386433e+00 # CAM + 2931 196 2 -2.3557 -1.258857e+01 -6.625033e+00 2.077513e+00 # CAO + 2932 196 5 -2.4057 -1.112273e+01 -6.528434e+00 4.125951e+00 # CTT + 2933 196 6 0.1480 -1.318432e+01 -4.981989e+00 4.997767e+00 # HAT + 2934 196 6 0.1480 -1.525284e+01 -4.371265e+00 3.773569e+00 # HAT + 2935 196 6 0.1480 -1.561842e+01 -5.201093e+00 1.465293e+00 # HAT + 2936 196 6 0.1480 -1.391548e+01 -6.641646e+00 3.812160e-01 # HAT + 2937 196 6 0.1480 -1.184697e+01 -7.252371e+00 1.605415e+00 # HAT + 2938 196 7 0.0920 -1.133024e+01 -6.565081e+00 5.195389e+00 # HT + 2939 196 7 0.0920 -1.077617e+01 -7.505714e+00 3.789917e+00 # HT + 2940 196 7 0.0920 -1.035135e+01 -5.783314e+00 3.931368e+00 # HT + 2941 197 1 -2.2897 -5.514279e+00 -2.651366e+00 1.504457e+01 # CAT + 2942 197 2 -2.3557 -5.915400e+00 -3.987426e+00 1.492606e+01 # CAO + 2943 197 3 -2.3537 -7.265943e+00 -4.328013e+00 1.506761e+01 # CAM + 2944 197 4 -2.3627 -8.215362e+00 -3.332539e+00 1.532768e+01 # CAP + 2945 197 3 -2.3537 -7.814241e+00 -1.996479e+00 1.544619e+01 # CAM + 2946 197 2 -2.3557 -6.463700e+00 -1.655892e+00 1.530463e+01 # CAO + 2947 197 5 -2.4057 -4.057624e+00 -2.284019e+00 1.489189e+01 # CTT + 2948 197 6 0.1480 -5.182991e+00 -4.755363e+00 1.472544e+01 # HAT + 2949 197 6 0.1480 -7.575379e+00 -5.358688e+00 1.497619e+01 # HAT + 2950 197 6 0.1480 -9.257209e+00 -3.595277e+00 1.543688e+01 # HAT + 2951 197 6 0.1480 -8.546651e+00 -1.228542e+00 1.564681e+01 # HAT + 2952 197 6 0.1480 -6.154263e+00 -6.252170e-01 1.539605e+01 # HAT + 2953 197 7 0.0920 -3.574883e+00 -2.985449e+00 1.421141e+01 # HT + 2954 197 7 0.0920 -3.977287e+00 -1.274304e+00 1.448925e+01 # HT + 2955 197 7 0.0920 -3.567713e+00 -2.326756e+00 1.586465e+01 # HT + 2956 198 1 -2.2897 -1.086921e+01 -1.289564e+01 -9.489864e+00 # CAT + 2957 198 2 -2.3557 -1.033218e+01 -1.226149e+01 -1.061656e+01 # CAO + 2958 198 3 -2.3537 -9.084394e+00 -1.163164e+01 -1.053711e+01 # CAM + 2959 198 4 -2.3627 -8.373641e+00 -1.163593e+01 -9.330952e+00 # CAP + 2960 198 3 -2.3537 -8.910675e+00 -1.227008e+01 -8.204252e+00 # CAM + 2961 198 2 -2.3557 -1.015846e+01 -1.289993e+01 -8.283708e+00 # CAO + 2962 198 5 -2.4057 -1.221504e+01 -1.357498e+01 -9.575563e+00 # CTT + 2963 198 6 0.1480 -1.088047e+01 -1.225818e+01 -1.154703e+01 # HAT + 2964 198 6 0.1480 -8.670111e+00 -1.114244e+01 -1.140628e+01 # HAT + 2965 198 6 0.1480 -7.411063e+00 -1.115004e+01 -9.269656e+00 # HAT + 2966 198 6 0.1480 -8.362379e+00 -1.227339e+01 -7.273788e+00 # HAT + 2967 198 6 0.1480 -1.057274e+01 -1.338913e+01 -7.414539e+00 # HAT + 2968 198 7 0.0920 -1.237304e+01 -1.394282e+01 -1.058939e+01 # HT + 2969 198 7 0.0920 -1.224555e+01 -1.441138e+01 -8.877270e+00 # HT + 2970 198 7 0.0920 -1.299940e+01 -1.286184e+01 -9.321986e+00 # HT + 2971 199 1 -2.2897 -3.678911e+00 -1.404636e+01 1.441704e+01 # CAT + 2972 199 2 -2.3557 -3.908525e+00 -1.274929e+01 1.394281e+01 # CAO + 2973 199 3 -2.3537 -5.200093e+00 -1.221011e+01 1.397639e+01 # CAM + 2974 199 4 -2.3627 -6.262047e+00 -1.296798e+01 1.448421e+01 # CAP + 2975 199 3 -2.3537 -6.032434e+00 -1.426505e+01 1.495844e+01 # CAM + 2976 199 2 -2.3557 -4.740866e+00 -1.480424e+01 1.492486e+01 # CAO + 2977 199 5 -2.4057 -2.285863e+00 -1.462791e+01 1.438082e+01 # CTT + 2978 199 6 0.1480 -3.089303e+00 -1.216465e+01 1.355107e+01 # HAT + 2979 199 6 0.1480 -5.377223e+00 -1.120951e+01 1.361056e+01 # HAT + 2980 199 6 0.1480 -7.258400e+00 -1.255204e+01 1.451011e+01 # HAT + 2981 199 6 0.1480 -6.851656e+00 -1.484970e+01 1.535018e+01 # HAT + 2982 199 6 0.1480 -4.563736e+00 -1.580483e+01 1.529069e+01 # HAT + 2983 199 7 0.0920 -1.554187e+00 -1.382625e+01 1.448129e+01 # HT + 2984 199 7 0.0920 -2.165054e+00 -1.533441e+01 1.520203e+01 # HT + 2985 199 7 0.0920 -2.131342e+00 -1.514348e+01 1.343297e+01 # HT + 2986 200 1 -2.2897 -1.063285e+01 8.561015e+00 -8.050563e+00 # CAT + 2987 200 2 -2.3557 -9.532956e+00 7.704269e+00 -8.177930e+00 # CAO + 2988 200 3 -2.3537 -9.726573e+00 6.318431e+00 -8.222262e+00 # CAM + 2989 200 4 -2.3627 -1.102008e+01 5.789339e+00 -8.139227e+00 # CAP + 2990 200 3 -2.3537 -1.211998e+01 6.646085e+00 -8.011861e+00 # CAM + 2991 200 2 -2.3557 -1.192636e+01 8.031922e+00 -7.967528e+00 # CAO + 2992 200 5 -2.4057 -1.042402e+01 1.005574e+01 -8.002748e+00 # CTT + 2993 200 6 0.1480 -8.535106e+00 8.112425e+00 -8.241985e+00 # HAT + 2994 200 6 0.1480 -8.878084e+00 5.657512e+00 -8.320516e+00 # HAT + 2995 200 6 0.1480 -1.116944e+01 4.720263e+00 -8.173426e+00 # HAT + 2996 200 6 0.1480 -1.311782e+01 6.237927e+00 -7.947805e+00 # HAT + 2997 200 6 0.1480 -1.277485e+01 8.692841e+00 -7.869274e+00 # HAT + 2998 200 7 0.0920 -9.537351e+00 1.031790e+01 -8.579978e+00 # HT + 2999 200 7 0.0920 -1.129390e+01 1.055837e+01 -8.425562e+00 # HT + 3000 200 7 0.0920 -1.028985e+01 1.037147e+01 -6.968139e+00 # HT + 3001 201 1 -2.2897 -3.364643e+00 -4.878223e+00 8.756435e+00 # CAT + 3002 201 2 -2.3557 -3.105328e+00 -5.029538e+00 7.389007e+00 # CAO + 3003 201 3 -2.3537 -2.590532e+00 -3.956828e+00 6.651255e+00 # CAM + 3004 201 4 -2.3627 -2.335051e+00 -2.732803e+00 7.280931e+00 # CAP + 3005 201 3 -2.3537 -2.594366e+00 -2.581488e+00 8.648359e+00 # CAM + 3006 201 2 -2.3557 -3.109162e+00 -3.654198e+00 9.386111e+00 # CAO + 3007 201 5 -2.4057 -3.919887e+00 -6.035217e+00 9.552153e+00 # CTT + 3008 201 6 0.1480 -3.302414e+00 -5.973786e+00 6.903257e+00 # HAT + 3009 201 6 0.1480 -2.390489e+00 -4.073556e+00 5.596382e+00 # HAT + 3010 201 6 0.1480 -1.937922e+00 -1.905284e+00 6.711808e+00 # HAT + 3011 201 6 0.1480 -2.397280e+00 -1.637240e+00 9.134109e+00 # HAT + 3012 201 6 0.1480 -3.309204e+00 -3.537469e+00 1.044098e+01 # HAT + 3013 201 7 0.0920 -3.574526e+00 -6.973853e+00 9.118805e+00 # HT + 3014 201 7 0.0920 -3.577339e+00 -5.964472e+00 1.058451e+01 # HT + 3015 201 7 0.0920 -5.009172e+00 -6.003696e+00 9.528355e+00 # HT + 3016 202 1 -2.2897 -6.204205e+00 -1.326058e+01 -1.472969e+01 # CAT + 3017 202 2 -2.3557 -5.991274e+00 -1.209594e+01 -1.398253e+01 # CAO + 3018 202 3 -2.3537 -7.024459e+00 -1.116365e+01 -1.382967e+01 # CAM + 3019 202 4 -2.3627 -8.270574e+00 -1.139600e+01 -1.442399e+01 # CAP + 3020 202 3 -2.3537 -8.483505e+00 -1.256065e+01 -1.517115e+01 # CAM + 3021 202 2 -2.3557 -7.450321e+00 -1.349294e+01 -1.532401e+01 # CAO + 3022 202 5 -2.4057 -5.089842e+00 -1.426613e+01 -1.489456e+01 # CTT + 3023 202 6 0.1480 -5.029985e+00 -1.191669e+01 -1.352406e+01 # HAT + 3024 202 6 0.1480 -6.860198e+00 -1.026520e+01 -1.325329e+01 # HAT + 3025 202 6 0.1480 -9.067603e+00 -1.067681e+01 -1.430607e+01 # HAT + 3026 202 6 0.1480 -9.444795e+00 -1.273990e+01 -1.562962e+01 # HAT + 3027 202 6 0.1480 -7.614582e+00 -1.439138e+01 -1.590039e+01 # HAT + 3028 202 7 0.0920 -4.442863e+00 -1.423927e+01 -1.401775e+01 # HT + 3029 202 7 0.0920 -5.513677e+00 -1.526455e+01 -1.500228e+01 # HT + 3030 202 7 0.0920 -4.507433e+00 -1.402143e+01 -1.578283e+01 # HT + 3031 203 1 -2.2897 1.034287e+01 1.302354e+01 -3.944776e+00 # CAT + 3032 203 2 -2.3557 9.343867e+00 1.357643e+01 -4.754899e+00 # CAO + 3033 203 3 -2.3537 9.640272e+00 1.465964e+01 -5.590836e+00 # CAM + 3034 203 4 -2.3627 1.093568e+01 1.518997e+01 -5.616649e+00 # CAP + 3035 203 3 -2.3537 1.193469e+01 1.463708e+01 -4.806526e+00 # CAM + 3036 203 2 -2.3557 1.163828e+01 1.355387e+01 -3.970589e+00 # CAO + 3037 203 5 -2.4057 1.002318e+01 1.185522e+01 -3.043158e+00 # CTT + 3038 203 6 0.1480 8.344550e+00 1.316732e+01 -4.734986e+00 # HAT + 3039 203 6 0.1480 8.869611e+00 1.508616e+01 -6.215789e+00 # HAT + 3040 203 6 0.1480 1.116434e+01 1.602559e+01 -6.261515e+00 # HAT + 3041 203 6 0.1480 1.293401e+01 1.504619e+01 -4.826439e+00 # HAT + 3042 203 6 0.1480 1.240895e+01 1.312735e+01 -3.345637e+00 # HAT + 3043 203 7 0.0920 9.229905e+00 1.125655e+01 -3.490834e+00 # HT + 3044 203 7 0.0920 1.091381e+01 1.123999e+01 -2.915217e+00 # HT + 3045 203 7 0.0920 9.694721e+00 1.222456e+01 -2.071663e+00 # HT + 3046 204 1 -2.2897 -2.744967e+00 1.345101e+00 -6.350607e+00 # CAT + 3047 204 2 -2.3557 -1.400370e+00 9.885780e-01 -6.192646e+00 # CAO + 3048 204 3 -2.3537 -9.972000e-01 2.585550e-01 -5.068137e+00 # CAM + 3049 204 4 -2.3627 -1.938625e+00 -1.149460e-01 -4.101590e+00 # CAP + 3050 204 3 -2.3537 -3.283222e+00 2.415770e-01 -4.259550e+00 # CAM + 3051 204 2 -2.3557 -3.686393e+00 9.716000e-01 -5.384058e+00 # CAO + 3052 204 5 -2.4057 -3.179815e+00 2.132483e+00 -7.563469e+00 # CTT + 3053 204 6 0.1480 -6.741270e-01 1.276707e+00 -6.938268e+00 # HAT + 3054 204 6 0.1480 4.006100e-02 -1.647700e-02 -4.946282e+00 # HAT + 3055 204 6 0.1480 -1.627608e+00 -6.781070e-01 -3.234111e+00 # HAT + 3056 204 6 0.1480 -4.009465e+00 -4.655200e-02 -3.513927e+00 # HAT + 3057 204 6 0.1480 -4.723653e+00 1.246632e+00 -5.505914e+00 # HAT + 3058 204 7 0.0920 -2.532164e+00 1.890089e+00 -8.406021e+00 # HT + 3059 204 7 0.0920 -4.209907e+00 1.877629e+00 -7.812588e+00 # HT + 3060 204 7 0.0920 -3.111718e+00 3.198913e+00 -7.348553e+00 # HT + 3061 205 1 -2.2897 4.540297e+00 -3.988752e+00 1.300658e+00 # CAT + 3062 205 2 -2.3557 3.827865e+00 -5.176111e+00 1.507103e+00 # CAO + 3063 205 3 -2.3537 4.106183e+00 -6.304247e+00 7.261740e-01 # CAM + 3064 205 4 -2.3627 5.096933e+00 -6.245023e+00 -2.611990e-01 # CAP + 3065 205 3 -2.3537 5.809365e+00 -5.057665e+00 -4.676440e-01 # CAM + 3066 205 2 -2.3557 5.531048e+00 -3.929529e+00 3.132840e-01 # CAO + 3067 205 5 -2.4057 4.240111e+00 -2.771978e+00 2.142945e+00 # CTT + 3068 205 6 0.1480 3.063572e+00 -5.221797e+00 2.268791e+00 # HAT + 3069 205 6 0.1480 3.556592e+00 -7.220209e+00 8.854320e-01 # HAT + 3070 205 6 0.1480 5.311636e+00 -7.115300e+00 -8.636300e-01 # HAT + 3071 205 6 0.1480 6.573659e+00 -5.011979e+00 -1.229332e+00 # HAT + 3072 205 6 0.1480 6.080638e+00 -3.013567e+00 1.540270e-01 # HAT + 3073 205 7 0.0920 3.893913e+00 -3.087223e+00 3.127256e+00 # HT + 3074 205 7 0.0920 5.143902e+00 -2.172340e+00 2.251096e+00 # HT + 3075 205 7 0.0920 3.465521e+00 -2.176788e+00 1.659356e+00 # HT + 3076 206 1 -2.2897 1.255695e+01 2.235945e+00 4.897591e+00 # CAT + 3077 206 2 -2.3557 1.304331e+01 9.618420e-01 4.581186e+00 # CAO + 3078 206 3 -2.3537 1.425329e+01 5.186480e-01 5.128477e+00 # CAM + 3079 206 4 -2.3627 1.497691e+01 1.349557e+00 5.992172e+00 # CAP + 3080 206 3 -2.3537 1.449054e+01 2.623660e+00 6.308577e+00 # CAM + 3081 206 2 -2.3557 1.328056e+01 3.066854e+00 5.761287e+00 # CAO + 3082 206 5 -2.4057 1.125190e+01 2.713962e+00 4.307299e+00 # CTT + 3083 206 6 0.1480 1.248509e+01 3.208560e-01 3.914907e+00 # HAT + 3084 206 6 0.1480 1.462849e+01 -4.642310e-01 4.884394e+00 # HAT + 3085 206 6 0.1480 1.591032e+01 1.007665e+00 6.414368e+00 # HAT + 3086 206 6 0.1480 1.504876e+01 3.264647e+00 6.974857e+00 # HAT + 3087 206 6 0.1480 1.290537e+01 4.049734e+00 6.005370e+00 # HAT + 3088 206 7 0.0920 1.059688e+01 1.860261e+00 4.133371e+00 # HT + 3089 206 7 0.0920 1.077101e+01 3.405158e+00 4.999462e+00 # HT + 3090 206 7 0.0920 1.144441e+01 3.222014e+00 3.362354e+00 # HT + 3091 207 1 -2.2897 -1.498549e+01 8.233727e+00 5.715321e+00 # CAT + 3092 207 2 -2.3557 -1.499714e+01 7.430636e+00 4.568626e+00 # CAO + 3093 207 3 -2.3537 -1.513734e+01 6.042748e+00 4.687433e+00 # CAM + 3094 207 4 -2.3627 -1.526588e+01 5.457954e+00 5.952933e+00 # CAP + 3095 207 3 -2.3537 -1.525423e+01 6.261046e+00 7.099627e+00 # CAM + 3096 207 2 -2.3557 -1.511403e+01 7.648932e+00 6.980821e+00 # CAO + 3097 207 5 -2.4057 -1.483427e+01 9.730662e+00 5.587180e+00 # CTT + 3098 207 6 0.1480 -1.489798e+01 7.881763e+00 3.592383e+00 # HAT + 3099 207 6 0.1480 -1.514633e+01 5.423221e+00 3.802840e+00 # HAT + 3100 207 6 0.1480 -1.537403e+01 4.387298e+00 6.044584e+00 # HAT + 3101 207 6 0.1480 -1.535339e+01 5.809917e+00 8.075871e+00 # HAT + 3102 207 6 0.1480 -1.510504e+01 8.268460e+00 7.865414e+00 # HAT + 3103 207 7 0.0920 -1.526550e+01 1.006033e+01 4.641950e+00 # HT + 3104 207 7 0.0920 -1.535129e+01 1.022054e+01 6.412293e+00 # HT + 3105 207 7 0.0920 -1.377673e+01 9.993212e+00 5.614664e+00 # HT + 3106 208 1 -2.2897 -9.936892e+00 -3.099620e-01 2.660255e+00 # CAT + 3107 208 2 -2.3557 -1.131494e+01 -5.310740e-01 2.770235e+00 # CAO + 3108 208 3 -2.3537 -1.179012e+01 -1.701989e+00 3.372865e+00 # CAM + 3109 208 4 -2.3627 -1.088725e+01 -2.651792e+00 3.865514e+00 # CAP + 3110 208 3 -2.3537 -9.509204e+00 -2.430680e+00 3.755534e+00 # CAM + 3111 208 2 -2.3557 -9.034024e+00 -1.259765e+00 3.152905e+00 # CAO + 3112 208 5 -2.4057 -9.424378e+00 9.529530e-01 2.010276e+00 # CTT + 3113 208 6 0.1480 -1.201144e+01 2.016310e-01 2.390191e+00 # HAT + 3114 208 6 0.1480 -1.285318e+01 -1.872561e+00 3.457707e+00 # HAT + 3115 208 6 0.1480 -1.125382e+01 -3.555070e+00 4.330401e+00 # HAT + 3116 208 6 0.1480 -8.812705e+00 -3.163386e+00 4.135578e+00 # HAT + 3117 208 6 0.1480 -7.970959e+00 -1.089193e+00 3.068063e+00 # HAT + 3118 208 7 0.0920 -1.013923e+01 1.760193e+00 2.169800e+00 # HT + 3119 208 7 0.0920 -8.465238e+00 1.225396e+00 2.450647e+00 # HT + 3120 208 7 0.0920 -9.298175e+00 7.862090e-01 9.405240e-01 # HT + 3121 209 1 -2.2897 -1.128588e+01 1.082310e+01 -7.797800e-01 # CAT + 3122 209 2 -2.3557 -1.018425e+01 1.033878e+01 -6.435400e-02 # CAO + 3123 209 3 -2.3537 -9.865241e+00 8.976310e+00 -1.080970e-01 # CAM + 3124 209 4 -2.3627 -1.064787e+01 8.098158e+00 -8.672670e-01 # CAP + 3125 209 3 -2.3537 -1.174951e+01 8.582475e+00 -1.582693e+00 # CAM + 3126 209 2 -2.3557 -1.206851e+01 9.944944e+00 -1.538950e+00 # CAO + 3127 209 5 -2.4057 -1.162995e+01 1.229262e+01 -7.326000e-01 # CTT + 3128 209 6 0.1480 -9.580504e+00 1.101621e+01 5.212910e-01 # HAT + 3129 209 6 0.1480 -9.015408e+00 8.602694e+00 4.438030e-01 # HAT + 3130 209 6 0.1480 -1.040178e+01 7.047110e+00 -9.010120e-01 # HAT + 3131 209 6 0.1480 -1.235325e+01 7.905043e+00 -2.168339e+00 # HAT + 3132 209 6 0.1480 -1.291835e+01 1.031856e+01 -2.090851e+00 # HAT + 3133 209 7 0.0920 -1.071999e+01 1.287489e+01 -5.876350e-01 # HT + 3134 209 7 0.0920 -1.210287e+01 1.258585e+01 -1.669861e+00 # HT + 3135 209 7 0.0920 -1.231572e+01 1.247939e+01 9.380100e-02 # HT + 3136 210 1 -2.2897 1.301040e+01 2.812060e+00 9.018224e+00 # CAT + 3137 210 2 -2.3557 1.250388e+01 1.946096e+00 8.041730e+00 # CAO + 3138 210 3 -2.3537 1.129930e+01 2.247944e+00 7.395293e+00 # CAM + 3139 210 4 -2.3627 1.060124e+01 3.415756e+00 7.725349e+00 # CAP + 3140 210 3 -2.3537 1.110777e+01 4.281720e+00 8.701843e+00 # CAM + 3141 210 2 -2.3557 1.231235e+01 3.979872e+00 9.348280e+00 # CAO + 3142 210 5 -2.4057 1.430962e+01 2.486495e+00 9.715452e+00 # CTT + 3143 210 6 0.1480 1.304237e+01 1.045213e+00 7.787115e+00 # HAT + 3144 210 6 0.1480 1.090855e+01 1.579915e+00 6.641997e+00 # HAT + 3145 210 6 0.1480 9.671998e+00 3.648610e+00 7.226669e+00 # HAT + 3146 210 6 0.1480 1.056927e+01 5.182603e+00 8.956458e+00 # HAT + 3147 210 6 0.1480 1.270309e+01 4.647901e+00 1.010158e+01 # HAT + 3148 210 7 0.0920 1.495160e+01 1.918646e+00 9.042022e+00 # HT + 3149 210 7 0.0920 1.481104e+01 3.411262e+00 1.000092e+01 # HT + 3150 210 7 0.0920 1.410541e+01 1.894235e+00 1.060743e+01 # HT + 3151 211 1 -2.2897 9.281277e+00 6.265614e+00 -2.826980e+00 # CAT + 3152 211 2 -2.3557 9.830021e+00 7.297883e+00 -2.056720e+00 # CAO + 3153 211 3 -2.3537 1.121024e+01 7.531180e+00 -2.080367e+00 # CAM + 3154 211 4 -2.3627 1.204172e+01 6.732208e+00 -2.874274e+00 # CAP + 3155 211 3 -2.3537 1.149298e+01 5.699939e+00 -3.644534e+00 # CAM + 3156 211 2 -2.3557 1.011275e+01 5.466641e+00 -3.620886e+00 # CAO + 3157 211 5 -2.4057 7.792609e+00 6.013986e+00 -2.801474e+00 # CTT + 3158 211 6 0.1480 9.188595e+00 7.914233e+00 -1.444278e+00 # HAT + 3159 211 6 0.1480 1.163356e+01 8.327502e+00 -1.486167e+00 # HAT + 3160 211 6 0.1480 1.310646e+01 6.912180e+00 -2.892516e+00 # HAT + 3161 211 6 0.1480 1.213440e+01 5.083589e+00 -4.256976e+00 # HAT + 3162 211 6 0.1480 9.689438e+00 4.670319e+00 -4.215087e+00 # HAT + 3163 211 7 0.0920 7.268372e+00 6.951036e+00 -2.613820e+00 # HT + 3164 211 7 0.0920 7.475874e+00 5.607063e+00 -3.761783e+00 # HT + 3165 211 7 0.0920 7.557451e+00 5.301963e+00 -2.010384e+00 # HT + 3166 212 1 -2.2897 -4.721170e-01 -5.109767e+00 9.475459e+00 # CAT + 3167 212 2 -2.3557 -1.063280e-01 -3.903542e+00 8.866181e+00 # CAO + 3168 212 3 -2.3537 -2.049970e-01 -2.701819e+00 9.577607e+00 # CAM + 3169 212 4 -2.3627 -6.694560e-01 -2.706321e+00 1.089831e+01 # CAP + 3170 212 3 -2.3537 -1.035245e+00 -3.912546e+00 1.150759e+01 # CAM + 3171 212 2 -2.3557 -9.365750e-01 -5.114269e+00 1.079616e+01 # CAO + 3172 212 5 -2.4057 -3.656950e-01 -6.405911e+00 8.708136e+00 # CTT + 3173 212 6 0.1480 2.519690e-01 -3.900068e+00 7.847353e+00 # HAT + 3174 212 6 0.1480 7.718300e-02 -1.771302e+00 9.107593e+00 # HAT + 3175 212 6 0.1480 -7.455720e-01 -1.779278e+00 1.144712e+01 # HAT + 3176 212 6 0.1480 -1.393541e+00 -3.916019e+00 1.252642e+01 # HAT + 3177 212 6 0.1480 -1.218755e+00 -6.044785e+00 1.126618e+01 # HAT + 3178 212 7 0.0920 4.459430e-01 -6.334511e+00 7.984086e+00 # HT + 3179 212 7 0.0920 -1.633870e-01 -7.223081e+00 9.400526e+00 # HT + 3180 212 7 0.0920 -1.302708e+00 -6.597096e+00 8.185112e+00 # HT + 3181 213 1 -2.2897 2.686429e+00 -9.732333e+00 7.577507e+00 # CAT + 3182 213 2 -2.3557 3.221801e+00 -1.090485e+01 8.123937e+00 # CAO + 3183 213 3 -2.3537 4.195198e+00 -1.082862e+01 9.127275e+00 # CAM + 3184 213 4 -2.3627 4.633223e+00 -9.579871e+00 9.584183e+00 # CAP + 3185 213 3 -2.3537 4.097851e+00 -8.407355e+00 9.037754e+00 # CAM + 3186 213 2 -2.3557 3.124455e+00 -8.483587e+00 8.034416e+00 # CAO + 3187 213 5 -2.4057 1.636551e+00 -9.814554e+00 6.495336e+00 # CTT + 3188 213 6 0.1480 2.883895e+00 -1.186817e+01 7.771465e+00 # HAT + 3189 213 6 0.1480 4.608199e+00 -1.173313e+01 9.548806e+00 # HAT + 3190 213 6 0.1480 5.384129e+00 -9.521063e+00 1.035819e+01 # HAT + 3191 213 6 0.1480 4.435757e+00 -7.444036e+00 9.390226e+00 # HAT + 3192 213 6 0.1480 2.711454e+00 -7.579075e+00 7.612885e+00 # HAT + 3193 213 7 0.0920 1.050628e+00 -1.072446e+01 6.625212e+00 # HT + 3194 213 7 0.0920 9.791840e-01 -8.947462e+00 6.559511e+00 # HT + 3195 213 7 0.0920 2.120906e+00 -9.831179e+00 5.519004e+00 # HT + 3196 214 1 -2.2897 3.165577e+00 -1.495072e+01 -1.389433e+00 # CAT + 3197 214 2 -2.3557 4.360512e+00 -1.492252e+01 -2.118359e+00 # CAO + 3198 214 3 -2.3537 5.588826e+00 -1.501285e+01 -1.452711e+00 # CAM + 3199 214 4 -2.3627 5.622203e+00 -1.513138e+01 -5.813800e-02 # CAP + 3200 214 3 -2.3537 4.427267e+00 -1.515958e+01 6.707890e-01 # CAM + 3201 214 2 -2.3557 3.198954e+00 -1.506925e+01 5.142000e-03 # CAO + 3202 214 5 -2.4057 1.840753e+00 -1.485328e+01 -2.107381e+00 # CTT + 3203 214 6 0.1480 4.334764e+00 -1.483108e+01 -3.194173e+00 # HAT + 3204 214 6 0.1480 6.510633e+00 -1.499110e+01 -2.015026e+00 # HAT + 3205 214 6 0.1480 6.569759e+00 -1.520107e+01 4.553620e-01 # HAT + 3206 214 6 0.1480 4.453016e+00 -1.525102e+01 1.746603e+00 # HAT + 3207 214 6 0.1480 2.277147e+00 -1.509100e+01 5.674560e-01 # HAT + 3208 214 7 0.0920 1.933517e+00 -1.528769e+01 -3.102764e+00 # HT + 3209 214 7 0.0920 1.081033e+00 -1.539537e+01 -1.544298e+00 # HT + 3210 214 7 0.0920 1.550020e+00 -1.380635e+01 -2.194072e+00 # HT + 3211 215 1 -2.2897 8.304900e+00 -1.400075e+01 -1.118018e+01 # CAT + 3212 215 2 -2.3557 9.076243e+00 -1.308215e+01 -1.190213e+01 # CAO + 3213 215 3 -2.3537 1.044605e+01 -1.295965e+01 -1.164017e+01 # CAM + 3214 215 4 -2.3627 1.104451e+01 -1.375574e+01 -1.065626e+01 # CAP + 3215 215 3 -2.3537 1.027317e+01 -1.467434e+01 -9.934312e+00 # CAM + 3216 215 2 -2.3557 8.903363e+00 -1.479684e+01 -1.019628e+01 # CAO + 3217 215 5 -2.4057 6.827467e+00 -1.413288e+01 -1.146273e+01 # CTT + 3218 215 6 0.1480 8.614573e+00 -1.246802e+01 -1.266114e+01 # HAT + 3219 215 6 0.1480 1.104109e+01 -1.225101e+01 -1.219709e+01 # HAT + 3220 215 6 0.1480 1.210122e+01 -1.366123e+01 -1.045417e+01 # HAT + 3221 215 6 0.1480 1.073484e+01 -1.528847e+01 -9.175297e+00 # HAT + 3222 215 6 0.1480 8.308326e+00 -1.550548e+01 -9.639347e+00 # HAT + 3223 215 7 0.0920 6.634505e+00 -1.389597e+01 -1.250903e+01 # HT + 3224 215 7 0.0920 6.507625e+00 -1.515440e+01 -1.125708e+01 # HT + 3225 215 7 0.0920 6.272264e+00 -1.344379e+01 -1.082634e+01 # HT + 3226 216 1 -2.2897 -1.032770e+01 8.121681e+00 3.445124e+00 # CAT + 3227 216 2 -2.3557 -9.530305e+00 8.376676e+00 4.567240e+00 # CAO + 3228 216 3 -2.3537 -8.292679e+00 7.737217e+00 4.706429e+00 # CAM + 3229 216 4 -2.3627 -7.852444e+00 6.842764e+00 3.723501e+00 # CAP + 3230 216 3 -2.3537 -8.649835e+00 6.587769e+00 2.601385e+00 # CAM + 3231 216 2 -2.3557 -9.887461e+00 7.227227e+00 2.462196e+00 # CAO + 3232 216 5 -2.4057 -1.166257e+01 8.811382e+00 3.294999e+00 # CTT + 3233 216 6 0.1480 -9.869915e+00 9.066682e+00 5.325498e+00 # HAT + 3234 216 6 0.1480 -7.677548e+00 7.933927e+00 5.572061e+00 # HAT + 3235 216 6 0.1480 -6.897703e+00 6.349467e+00 3.830875e+00 # HAT + 3236 216 6 0.1480 -8.310225e+00 5.897762e+00 1.843127e+00 # HAT + 3237 216 6 0.1480 -1.050259e+01 7.030517e+00 1.596564e+00 # HAT + 3238 216 7 0.0920 -1.162524e+01 9.786103e+00 3.781443e+00 # HT + 3239 216 7 0.0920 -1.188736e+01 8.942508e+00 2.236522e+00 # HT + 3240 216 7 0.0920 -1.244005e+01 8.204109e+00 3.758510e+00 # HT + 3241 217 1 -2.2897 -1.002253e+01 4.173486e+00 8.199715e+00 # CAT + 3242 217 2 -2.3557 -1.127824e+01 3.901538e+00 7.643638e+00 # CAO + 3243 217 3 -2.3537 -1.233910e+01 4.793599e+00 7.840629e+00 # CAM + 3244 217 4 -2.3627 -1.214424e+01 5.957608e+00 8.593698e+00 # CAP + 3245 217 3 -2.3537 -1.088853e+01 6.229556e+00 9.149776e+00 # CAM + 3246 217 2 -2.3557 -9.827670e+00 5.337496e+00 8.952784e+00 # CAO + 3247 217 5 -2.4057 -8.878315e+00 3.211335e+00 7.987245e+00 # CTT + 3248 217 6 0.1480 -1.142856e+01 3.003588e+00 7.062699e+00 # HAT + 3249 217 6 0.1480 -1.330780e+01 4.583810e+00 7.411656e+00 # HAT + 3250 217 6 0.1480 -1.296262e+01 6.645770e+00 8.745664e+00 # HAT + 3251 217 6 0.1480 -1.073821e+01 7.127507e+00 9.730715e+00 # HAT + 3252 217 6 0.1480 -8.858975e+00 5.547285e+00 9.381758e+00 # HAT + 3253 217 7 0.0920 -9.000981e+00 2.705974e+00 7.029297e+00 # HT + 3254 217 7 0.0920 -7.936385e+00 3.759843e+00 7.990098e+00 # HT + 3255 217 7 0.0920 -8.870450e+00 2.472668e+00 8.788750e+00 # HT + 3256 218 1 -2.2897 -1.848644e+00 1.429582e+01 -8.960886e+00 # CAT + 3257 218 2 -2.3557 -2.568974e+00 1.311960e+01 -9.200977e+00 # CAO + 3258 218 3 -2.3537 -2.764197e+00 1.267394e+01 -1.051371e+01 # CAM + 3259 218 4 -2.3627 -2.239089e+00 1.340449e+01 -1.158635e+01 # CAP + 3260 218 3 -2.3537 -1.518759e+00 1.458070e+01 -1.134626e+01 # CAM + 3261 218 2 -2.3557 -1.323536e+00 1.502637e+01 -1.003353e+01 # CAO + 3262 218 5 -2.4057 -1.638083e+00 1.477650e+01 -7.545009e+00 # CTT + 3263 218 6 0.1480 -2.974057e+00 1.255604e+01 -8.373510e+00 # HAT + 3264 218 6 0.1480 -3.319880e+00 1.176657e+01 -1.069892e+01 # HAT + 3265 218 6 0.1480 -2.389689e+00 1.306069e+01 -1.259903e+01 # HAT + 3266 218 6 0.1480 -1.113676e+00 1.514427e+01 -1.217373e+01 # HAT + 3267 218 6 0.1480 -7.678530e-01 1.593373e+01 -9.848315e+00 # HAT + 3268 218 7 0.0920 -1.609427e+00 1.392062e+01 -6.870664e+00 # HT + 3269 218 7 0.0920 -6.953830e-01 1.532002e+01 -7.481685e+00 # HT + 3270 218 7 0.0920 -2.457227e+00 1.543635e+01 -7.259168e+00 # HT + 3271 219 1 -2.2897 -5.251021e+00 2.389609e+00 -1.119055e+01 # CAT + 3272 219 2 -2.3557 -6.056942e+00 2.536566e+00 -1.232584e+01 # CAO + 3273 219 3 -2.3537 -6.203449e+00 3.794699e+00 -1.292220e+01 # CAM + 3274 219 4 -2.3627 -5.544037e+00 4.905876e+00 -1.238325e+01 # CAP + 3275 219 3 -2.3537 -4.738116e+00 4.758920e+00 -1.124796e+01 # CAM + 3276 219 2 -2.3557 -4.591608e+00 3.500787e+00 -1.065160e+01 # CAO + 3277 219 5 -2.4057 -5.093002e+00 1.032623e+00 -1.054734e+01 # CTT + 3278 219 6 0.1480 -6.565632e+00 1.679372e+00 -1.274160e+01 # HAT + 3279 219 6 0.1480 -6.825160e+00 3.908066e+00 -1.379799e+01 # HAT + 3280 219 6 0.1480 -5.657057e+00 5.876437e+00 -1.284329e+01 # HAT + 3281 219 6 0.1480 -4.229426e+00 5.616114e+00 -1.083220e+01 # HAT + 3282 219 6 0.1480 -3.969898e+00 3.387421e+00 -9.775804e+00 # HAT + 3283 219 7 0.0920 -5.186858e+00 2.566940e-01 -1.130709e+01 # HT + 3284 219 7 0.0920 -4.111429e+00 9.643490e-01 -1.007835e+01 # HT + 3285 219 7 0.0920 -5.866490e+00 8.958860e-01 -9.791614e+00 # HT + 3286 220 1 -2.2897 -2.368165e+00 1.502559e+01 8.934386e+00 # CAT + 3287 220 2 -2.3557 -3.766193e+00 1.509228e+01 8.967111e+00 # CAO + 3288 220 3 -2.3537 -4.430353e+00 1.526555e+01 1.018730e+01 # CAM + 3289 220 4 -2.3627 -3.696486e+00 1.537211e+01 1.137477e+01 # CAP + 3290 220 3 -2.3537 -2.298458e+00 1.530542e+01 1.134205e+01 # CAM + 3291 220 2 -2.3557 -1.634298e+00 1.513215e+01 1.012186e+01 # CAO + 3292 220 5 -2.4057 -1.651821e+00 1.483871e+01 7.618321e+00 # CTT + 3293 220 6 0.1480 -4.332319e+00 1.501008e+01 8.051064e+00 # HAT + 3294 220 6 0.1480 -5.508831e+00 1.531700e+01 1.021255e+01 # HAT + 3295 220 6 0.1480 -4.208838e+00 1.550577e+01 1.231607e+01 # HAT + 3296 220 6 0.1480 -1.732332e+00 1.538763e+01 1.225810e+01 # HAT + 3297 220 6 0.1480 -5.558200e-01 1.508070e+01 1.009661e+01 # HAT + 3298 220 7 0.0920 -2.238610e+00 1.528877e+01 6.817555e+00 # HT + 3299 220 7 0.0920 -6.739830e-01 1.531803e+01 7.665037e+00 # HT + 3300 220 7 0.0920 -1.525041e+00 1.377424e+01 7.421013e+00 # HT + 3301 221 1 -2.2897 -9.343050e+00 1.213794e+01 -3.331035e+00 # CAT + 3302 221 2 -2.3557 -8.863913e+00 1.284139e+01 -2.219463e+00 # CAO + 3303 221 3 -2.3537 -8.176929e+00 1.216377e+01 -1.205124e+00 # CAM + 3304 221 4 -2.3627 -7.969083e+00 1.078270e+01 -1.302358e+00 # CAP + 3305 221 3 -2.3537 -8.448220e+00 1.007925e+01 -2.413929e+00 # CAM + 3306 221 2 -2.3557 -9.135204e+00 1.075687e+01 -3.428268e+00 # CAO + 3307 221 5 -2.4057 -1.008401e+01 1.286880e+01 -4.425072e+00 # CTT + 3308 221 6 0.1480 -9.024251e+00 1.390678e+01 -2.144455e+00 # HAT + 3309 221 6 0.1480 -7.807309e+00 1.270642e+01 -3.476260e-01 # HAT + 3310 221 6 0.1480 -7.439124e+00 1.025996e+01 -5.198680e-01 # HAT + 3311 221 6 0.1480 -8.287882e+00 9.013859e+00 -2.488937e+00 # HAT + 3312 221 6 0.1480 -9.504824e+00 1.021422e+01 -4.285766e+00 # HAT + 3313 221 7 0.0920 -9.719070e+00 1.389387e+01 -4.489640e+00 # HT + 3314 221 7 0.0920 -9.918175e+00 1.236401e+01 -5.376799e+00 # HT + 3315 221 7 0.0920 -1.115041e+01 1.287686e+01 -4.199634e+00 # HT + 3316 222 1 -2.2897 -6.493769e+00 -9.969038e+00 1.173161e+01 # CAT + 3317 222 2 -2.3557 -7.283025e+00 -8.949753e+00 1.227763e+01 # CAO + 3318 222 3 -2.3537 -6.691773e+00 -7.746524e+00 1.268094e+01 # CAM + 3319 222 4 -2.3627 -5.311265e+00 -7.562582e+00 1.253824e+01 # CAP + 3320 222 3 -2.3537 -4.522009e+00 -8.581868e+00 1.199223e+01 # CAM + 3321 222 2 -2.3557 -5.113260e+00 -9.785096e+00 1.158891e+01 # CAO + 3322 222 5 -2.4057 -7.131476e+00 -1.126681e+01 1.129661e+01 # CTT + 3323 222 6 0.1480 -8.347988e+00 -9.091651e+00 1.238771e+01 # HAT + 3324 222 6 0.1480 -7.300628e+00 -6.960218e+00 1.310215e+01 # HAT + 3325 222 6 0.1480 -4.855156e+00 -6.634377e+00 1.284937e+01 # HAT + 3326 222 6 0.1480 -3.457045e+00 -8.439969e+00 1.188215e+01 # HAT + 3327 222 6 0.1480 -4.504406e+00 -1.057140e+01 1.116770e+01 # HAT + 3328 222 7 0.0920 -8.155768e+00 -1.107893e+01 1.097469e+01 # HT + 3329 222 7 0.0920 -6.563349e+00 -1.169200e+01 1.046924e+01 # HT + 3330 222 7 0.0920 -7.136298e+00 -1.196762e+01 1.213144e+01 # HT + 3331 223 1 -2.2897 8.421867e+00 8.921465e+00 -1.032221e+01 # CAT + 3332 223 2 -2.3557 7.686991e+00 1.009309e+01 -1.010481e+01 # CAO + 3333 223 3 -2.3537 8.246241e+00 1.133813e+01 -1.041641e+01 # CAM + 3334 223 4 -2.3627 9.540366e+00 1.141156e+01 -1.094542e+01 # CAP + 3335 223 3 -2.3537 1.027524e+01 1.023994e+01 -1.116282e+01 # CAM + 3336 223 2 -2.3557 9.715992e+00 8.994892e+00 -1.085122e+01 # CAO + 3337 223 5 -2.4057 7.818677e+00 7.578593e+00 -9.986123e+00 # CTT + 3338 223 6 0.1480 6.688666e+00 1.003644e+01 -9.696717e+00 # HAT + 3339 223 6 0.1480 7.679337e+00 1.224195e+01 -1.024870e+01 # HAT + 3340 223 6 0.1480 9.971787e+00 1.237203e+01 -1.118580e+01 # HAT + 3341 223 6 0.1480 1.127357e+01 1.029658e+01 -1.157091e+01 # HAT + 3342 223 6 0.1480 1.028290e+01 8.091071e+00 -1.101893e+01 # HAT + 3343 223 7 0.0920 6.736356e+00 7.625495e+00 -1.010647e+01 # HT + 3344 223 7 0.0920 8.225468e+00 6.819516e+00 -1.065427e+01 # HT + 3345 223 7 0.0920 8.058171e+00 7.320030e+00 -8.954674e+00 # HT + 3346 224 1 -2.2897 2.974821e+00 -5.402190e+00 1.377239e+01 # CAT + 3347 224 2 -2.3557 3.168572e+00 -6.686142e+00 1.324901e+01 # CAO + 3348 224 3 -2.3537 4.120605e+00 -6.896176e+00 1.224426e+01 # CAM + 3349 224 4 -2.3627 4.878885e+00 -5.822260e+00 1.176289e+01 # CAP + 3350 224 3 -2.3537 4.685134e+00 -4.538309e+00 1.228627e+01 # CAM + 3351 224 2 -2.3557 3.733102e+00 -4.328274e+00 1.329102e+01 # CAO + 3352 224 5 -2.4057 1.947986e+00 -5.175653e+00 1.485608e+01 # CTT + 3353 224 6 0.1480 2.583613e+00 -7.514592e+00 1.362035e+01 # HAT + 3354 224 6 0.1480 4.270070e+00 -7.886653e+00 1.184051e+01 # HAT + 3355 224 6 0.1480 5.613310e+00 -5.984287e+00 1.098780e+01 # HAT + 3356 224 6 0.1480 5.270094e+00 -3.709858e+00 1.191493e+01 # HAT + 3357 224 6 0.1480 3.583637e+00 -3.337797e+00 1.369477e+01 # HAT + 3358 224 7 0.0920 1.850579e+00 -6.078192e+00 1.545944e+01 # HT + 3359 224 7 0.0920 2.264894e+00 -4.347721e+00 1.549027e+01 # HT + 3360 224 7 0.0920 9.862080e-01 -4.937287e+00 1.440192e+01 # HT + 3361 225 1 -2.2897 1.995570e+00 1.229734e+01 3.214788e+00 # CAT + 3362 225 2 -2.3557 2.071363e+00 1.274202e+01 4.540122e+00 # CAO + 3363 225 3 -2.3537 9.263350e-01 1.322939e+01 5.181515e+00 # CAM + 3364 225 4 -2.3627 -2.944860e-01 1.327207e+01 4.497575e+00 # CAP + 3365 225 3 -2.3537 -3.702790e-01 1.282738e+01 3.172241e+00 # CAM + 3366 225 2 -2.3557 7.747480e-01 1.234002e+01 2.530847e+00 # CAO + 3367 225 5 -2.4057 3.230563e+00 1.177168e+01 2.522999e+00 # CTT + 3368 225 6 0.1480 3.013138e+00 1.270909e+01 5.067733e+00 # HAT + 3369 225 6 0.1480 9.848040e-01 1.357243e+01 6.203916e+00 # HAT + 3370 225 6 0.1480 -1.177793e+00 1.364804e+01 4.992364e+00 # HAT + 3371 225 6 0.1480 -1.312055e+00 1.286031e+01 2.644629e+00 # HAT + 3372 225 6 0.1480 7.162790e-01 1.199698e+01 1.508446e+00 # HAT + 3373 225 7 0.0920 3.894778e+00 1.131852e+01 3.258911e+00 # HT + 3374 225 7 0.0920 2.943175e+00 1.102348e+01 1.784276e+00 # HT + 3375 225 7 0.0920 3.746490e+00 1.259304e+01 2.025730e+00 # HT + 3376 226 1 -2.2897 -1.378433e+01 -3.335146e+00 1.409496e+01 # CAT + 3377 226 2 -2.3557 -1.469299e+01 -2.486551e+00 1.345135e+01 # CAO + 3378 226 3 -2.3537 -1.422495e+01 -1.437313e+00 1.265132e+01 # CAM + 3379 226 4 -2.3627 -1.284826e+01 -1.236671e+00 1.249490e+01 # CAP + 3380 226 3 -2.3537 -1.193961e+01 -2.085266e+00 1.313851e+01 # CAM + 3381 226 2 -2.3557 -1.240764e+01 -3.134503e+00 1.393854e+01 # CAO + 3382 226 5 -2.4057 -1.428914e+01 -4.466824e+00 1.495784e+01 # CTT + 3383 226 6 0.1480 -1.575500e+01 -2.641332e+00 1.357202e+01 # HAT + 3384 226 6 0.1480 -1.492591e+01 -7.826820e-01 1.215483e+01 # HAT + 3385 226 6 0.1480 -1.248721e+01 -4.272580e-01 1.187774e+01 # HAT + 3386 226 6 0.1480 -1.087759e+01 -1.930484e+00 1.301784e+01 # HAT + 3387 226 6 0.1480 -1.170668e+01 -3.789134e+00 1.443503e+01 # HAT + 3388 226 7 0.0920 -1.525049e+01 -4.812932e+00 1.457822e+01 # HT + 3389 226 7 0.0920 -1.357324e+01 -5.288474e+00 1.493578e+01 # HT + 3390 226 7 0.0920 -1.440859e+01 -4.117133e+00 1.598329e+01 # HT + 3391 227 1 -2.2897 -1.042660e+01 -8.285627e+00 -8.428330e+00 # CAT + 3392 227 2 -2.3557 -1.118645e+01 -7.162339e+00 -8.080692e+00 # CAO + 3393 227 3 -2.3537 -1.255114e+01 -7.299878e+00 -7.800111e+00 # CAM + 3394 227 4 -2.3627 -1.315597e+01 -8.560703e+00 -7.867169e+00 # CAP + 3395 227 3 -2.3537 -1.239612e+01 -9.683991e+00 -8.214808e+00 # CAM + 3396 227 2 -2.3557 -1.103143e+01 -9.546453e+00 -8.495388e+00 # CAO + 3397 227 5 -2.4057 -8.954695e+00 -8.137282e+00 -8.730957e+00 # CTT + 3398 227 6 0.1480 -1.071987e+01 -6.189702e+00 -8.028961e+00 # HAT + 3399 227 6 0.1480 -1.313730e+01 -6.433342e+00 -7.531933e+00 # HAT + 3400 227 6 0.1480 -1.420872e+01 -8.666804e+00 -7.650721e+00 # HAT + 3401 227 6 0.1480 -1.286270e+01 -1.065663e+01 -8.266538e+00 # HAT + 3402 227 6 0.1480 -1.044526e+01 -1.041299e+01 -8.763567e+00 # HAT + 3403 227 7 0.0920 -8.547047e+00 -7.305730e+00 -8.156112e+00 # HT + 3404 227 7 0.0920 -8.433277e+00 -9.055463e+00 -8.460464e+00 # HT + 3405 227 7 0.0920 -8.819747e+00 -7.943417e+00 -9.795055e+00 # HT + 3406 228 1 -2.2897 -7.081981e+00 1.256677e+01 -1.438085e+01 # CAT + 3407 228 2 -2.3557 -6.252768e+00 1.238036e+01 -1.326835e+01 # CAO + 3408 228 3 -2.3537 -5.424952e+00 1.342089e+01 -1.283013e+01 # CAM + 3409 228 4 -2.3627 -5.426348e+00 1.464781e+01 -1.350441e+01 # CAP + 3410 228 3 -2.3537 -6.255561e+00 1.483421e+01 -1.461691e+01 # CAM + 3411 228 2 -2.3557 -7.083377e+00 1.379369e+01 -1.505513e+01 # CAO + 3412 228 5 -2.4057 -7.974840e+00 1.144449e+01 -1.485350e+01 # CTT + 3413 228 6 0.1480 -6.251691e+00 1.143388e+01 -1.274819e+01 # HAT + 3414 228 6 0.1480 -4.785274e+00 1.327709e+01 -1.197191e+01 # HAT + 3415 228 6 0.1480 -4.787747e+00 1.545050e+01 -1.316635e+01 # HAT + 3416 228 6 0.1480 -6.256638e+00 1.578070e+01 -1.513707e+01 # HAT + 3417 228 6 0.1480 -7.723055e+00 1.393749e+01 -1.591335e+01 # HAT + 3418 228 7 0.0920 -8.260263e+00 1.082419e+01 -1.400388e+01 # HT + 3419 228 7 0.0920 -8.869859e+00 1.186145e+01 -1.531522e+01 # HT + 3420 228 7 0.0920 -7.439828e+00 1.083656e+01 -1.558308e+01 # HT + 3421 229 1 -2.2897 -1.356107e+01 6.868361e+00 1.152945e+01 # CAT + 3422 229 2 -2.3557 -1.365399e+01 8.225274e+00 1.186134e+01 # CAO + 3423 229 3 -2.3537 -1.254314e+01 8.894617e+00 1.238858e+01 # CAM + 3424 229 4 -2.3627 -1.133935e+01 8.207047e+00 1.258392e+01 # CAP + 3425 229 3 -2.3537 -1.124643e+01 6.850135e+00 1.225203e+01 # CAM + 3426 229 2 -2.3557 -1.235728e+01 6.180792e+00 1.172479e+01 # CAO + 3427 229 5 -2.4057 -1.475920e+01 6.146427e+00 1.096078e+01 # CTT + 3428 229 6 0.1480 -1.458262e+01 8.755684e+00 1.171065e+01 # HAT + 3429 229 6 0.1480 -1.261482e+01 9.941378e+00 1.264461e+01 # HAT + 3430 229 6 0.1480 -1.048241e+01 8.723398e+00 1.299065e+01 # HAT + 3431 229 6 0.1480 -1.031780e+01 6.319724e+00 1.240272e+01 # HAT + 3432 229 6 0.1480 -1.228560e+01 5.134031e+00 1.146876e+01 # HAT + 3433 229 7 0.0920 -1.537445e+01 6.849122e+00 1.039883e+01 # HT + 3434 229 7 0.0920 -1.442278e+01 5.348649e+00 1.029861e+01 # HT + 3435 229 7 0.0920 -1.534649e+01 5.719639e+00 1.177383e+01 # HT + 3436 230 1 -2.2897 1.490995e+01 -1.148403e+01 1.279530e+01 # CAT + 3437 230 2 -2.3557 1.469701e+01 -1.238792e+01 1.174762e+01 # CAO + 3438 230 3 -2.3537 1.481987e+01 -1.196189e+01 1.041969e+01 # CAM + 3439 230 4 -2.3627 1.515567e+01 -1.063197e+01 1.013944e+01 # CAP + 3440 230 3 -2.3537 1.536861e+01 -9.728074e+00 1.118712e+01 # CAM + 3441 230 2 -2.3557 1.524575e+01 -1.015411e+01 1.251505e+01 # CAO + 3442 230 5 -2.4057 1.477744e+01 -1.194354e+01 1.422757e+01 # CTT + 3443 230 6 0.1480 1.443797e+01 -1.341386e+01 1.196382e+01 # HAT + 3444 230 6 0.1480 1.465560e+01 -1.265918e+01 9.611479e+00 # HAT + 3445 230 6 0.1480 1.525044e+01 -1.030331e+01 9.115035e+00 # HAT + 3446 230 6 0.1480 1.562766e+01 -8.702132e+00 1.097093e+01 # HAT + 3447 230 6 0.1480 1.541002e+01 -9.456818e+00 1.332326e+01 # HAT + 3448 230 7 0.0920 1.504252e+01 -1.299851e+01 1.429723e+01 # HT + 3449 230 7 0.0920 1.544525e+01 -1.135909e+01 1.486046e+01 # HT + 3450 230 7 0.0920 1.374876e+01 -1.180518e+01 1.456039e+01 # HT + 3451 231 1 -2.2897 -5.100543e+00 1.508962e+01 1.302112e+00 # CAT + 3452 231 2 -2.3557 -5.395204e+00 1.508844e+01 -6.652700e-02 # CAO + 3453 231 3 -2.3537 -6.725763e+00 1.515934e+01 -4.961650e-01 # CAM + 3454 231 4 -2.3627 -7.761659e+00 1.523141e+01 4.428360e-01 # CAP + 3455 231 3 -2.3537 -7.466998e+00 1.523259e+01 1.811475e+00 # CAM + 3456 231 2 -2.3557 -6.136440e+00 1.516170e+01 2.241113e+00 # CAO + 3457 231 5 -2.4057 -3.665441e+00 1.501316e+01 1.765508e+00 # CTT + 3458 231 6 0.1480 -4.596084e+00 1.503284e+01 -7.908990e-01 # HAT + 3459 231 6 0.1480 -6.953073e+00 1.515842e+01 -1.551973e+00 # HAT + 3460 231 6 0.1480 -8.788090e+00 1.528610e+01 1.114010e-01 # HAT + 3461 231 6 0.1480 -8.266119e+00 1.528819e+01 2.535847e+00 # HAT + 3462 231 6 0.1480 -5.909130e+00 1.516261e+01 3.296921e+00 # HAT + 3463 231 7 0.0920 -3.018117e+00 1.548070e+01 1.023565e+00 # HT + 3464 231 7 0.0920 -3.562120e+00 1.553447e+01 2.717174e+00 # HT + 3465 231 7 0.0920 -3.378678e+00 1.396905e+01 1.890764e+00 # HT + 3466 232 1 -2.2897 -1.397997e+01 -9.179766e+00 7.175708e+00 # CAT + 3467 232 2 -2.3557 -1.493768e+01 -8.161807e+00 7.094722e+00 # CAO + 3468 232 3 -2.3537 -1.519721e+01 -7.540934e+00 5.867057e+00 # CAM + 3469 232 4 -2.3627 -1.449903e+01 -7.938019e+00 4.720379e+00 # CAP + 3470 232 3 -2.3537 -1.354133e+01 -8.955977e+00 4.801364e+00 # CAM + 3471 232 2 -2.3557 -1.328180e+01 -9.576851e+00 6.029029e+00 # CAO + 3472 232 5 -2.4057 -1.370005e+01 -9.849422e+00 8.499832e+00 # CTT + 3473 232 6 0.1480 -1.547627e+01 -7.855484e+00 7.979303e+00 # HAT + 3474 232 6 0.1480 -1.593601e+01 -6.755652e+00 5.804582e+00 # HAT + 3475 232 6 0.1480 -1.469924e+01 -7.459060e+00 3.773322e+00 # HAT + 3476 232 6 0.1480 -1.300273e+01 -9.262300e+00 3.916783e+00 # HAT + 3477 232 6 0.1480 -1.254299e+01 -1.036213e+01 6.091503e+00 # HAT + 3478 232 7 0.0920 -1.460326e+01 -9.841012e+00 9.109950e+00 # HT + 3479 232 7 0.0920 -1.338798e+01 -1.087953e+01 8.327823e+00 # HT + 3480 232 7 0.0920 -1.290656e+01 -9.311802e+00 9.018905e+00 # HT + 3481 233 1 -2.2897 -5.932378e+00 8.303040e+00 -1.339464e+01 # CAT + 3482 233 2 -2.3557 -5.906568e+00 7.591306e+00 -1.459995e+01 # CAO + 3483 233 3 -2.3537 -7.103161e+00 7.294150e+00 -1.526317e+01 # CAM + 3484 233 4 -2.3627 -8.325563e+00 7.708728e+00 -1.472109e+01 # CAP + 3485 233 3 -2.3537 -8.351373e+00 8.420463e+00 -1.351578e+01 # CAM + 3486 233 2 -2.3557 -7.154781e+00 8.717618e+00 -1.285256e+01 # CAO + 3487 233 5 -2.4057 -4.641768e+00 8.623544e+00 -1.267931e+01 # CTT + 3488 233 6 0.1480 -4.963572e+00 7.271488e+00 -1.501813e+01 # HAT + 3489 233 6 0.1480 -7.083251e+00 6.745098e+00 -1.619298e+01 # HAT + 3490 233 6 0.1480 -9.248650e+00 7.479494e+00 -1.523272e+01 # HAT + 3491 233 6 0.1480 -9.294370e+00 8.740281e+00 -1.309760e+01 # HAT + 3492 233 6 0.1480 -7.174691e+00 9.266671e+00 -1.192275e+01 # HAT + 3493 233 7 0.0920 -3.838276e+00 8.729162e+00 -1.340824e+01 # HT + 3494 233 7 0.0920 -4.754356e+00 9.555778e+00 -1.212581e+01 # HT + 3495 233 7 0.0920 -4.399712e+00 7.817377e+00 -1.198677e+01 # HT + 3496 234 1 -2.2897 1.097005e+01 -1.777224e+00 3.712898e+00 # CAT + 3497 234 2 -2.3557 9.944070e+00 -8.259280e-01 3.761940e+00 # CAO + 3498 234 3 -2.3537 9.401032e+00 -3.202220e-01 2.574770e+00 # CAM + 3499 234 4 -2.3627 9.883973e+00 -7.658120e-01 1.338559e+00 # CAP + 3500 234 3 -2.3537 1.090995e+01 -1.717108e+00 1.289518e+00 # CAM + 3501 234 2 -2.3557 1.145299e+01 -2.222814e+00 2.476687e+00 # CAO + 3502 234 5 -2.4057 1.155575e+01 -2.322663e+00 4.993345e+00 # CTT + 3503 234 6 0.1480 9.571516e+00 -4.821860e-01 4.715588e+00 # HAT + 3504 234 6 0.1480 8.609564e+00 4.136350e-01 2.612602e+00 # HAT + 3505 234 6 0.1480 9.465058e+00 -3.756960e-01 4.227420e-01 # HAT + 3506 234 6 0.1480 1.128250e+01 -2.060850e+00 3.358680e-01 # HAT + 3507 234 6 0.1480 1.224446e+01 -2.956671e+00 2.438855e+00 # HAT + 3508 234 7 0.0920 1.079386e+01 -2.318200e+00 5.772832e+00 # HT + 3509 234 7 0.0920 1.190128e+01 -3.343394e+00 4.829568e+00 # HT + 3510 234 7 0.0920 1.239552e+01 -1.700684e+00 5.303246e+00 # HT + 3511 235 1 -2.2897 9.322411e+00 -4.181456e+00 2.478236e+00 # CAT + 3512 235 2 -2.3557 8.615316e+00 -3.413223e+00 3.410885e+00 # CAO + 3513 235 3 -2.3537 7.852389e+00 -2.320174e+00 2.982881e+00 # CAM + 3514 235 4 -2.3627 7.796558e+00 -1.995359e+00 1.622228e+00 # CAP + 3515 235 3 -2.3537 8.503653e+00 -2.763592e+00 6.895790e-01 # CAM + 3516 235 2 -2.3557 9.266579e+00 -3.856640e+00 1.117582e+00 # CAO + 3517 235 5 -2.4057 1.014528e+01 -5.360387e+00 2.939869e+00 # CTT + 3518 235 6 0.1480 8.658385e+00 -3.663795e+00 4.460532e+00 # HAT + 3519 235 6 0.1480 7.306916e+00 -1.727537e+00 3.702353e+00 # HAT + 3520 235 6 0.1480 7.208014e+00 -1.152149e+00 1.292053e+00 # HAT + 3521 235 6 0.1480 8.460583e+00 -2.513019e+00 -3.600690e-01 # HAT + 3522 235 6 0.1480 9.812052e+00 -4.449277e+00 3.981100e-01 # HAT + 3523 235 7 0.0920 9.696515e+00 -5.788701e+00 3.836115e+00 # HT + 3524 235 7 0.0920 1.017449e+01 -6.114131e+00 2.153029e+00 # HT + 3525 235 7 0.0920 1.115968e+01 -5.030556e+00 3.164168e+00 # HT + 3526 236 1 -2.2897 -8.226582e+00 -2.617350e+00 7.379013e+00 # CAT + 3527 236 2 -2.3557 -7.060570e+00 -3.392213e+00 7.377614e+00 # CAO + 3528 236 3 -2.3537 -5.806514e+00 -2.769847e+00 7.375148e+00 # CAM + 3529 236 4 -2.3627 -5.718472e+00 -1.372619e+00 7.374081e+00 # CAP + 3530 236 3 -2.3537 -6.884484e+00 -5.977560e-01 7.375479e+00 # CAM + 3531 236 2 -2.3557 -8.138539e+00 -1.220122e+00 7.377945e+00 # CAO + 3532 236 5 -2.4057 -9.579171e+00 -3.288616e+00 7.381673e+00 # CTT + 3533 236 6 0.1480 -7.128488e+00 -4.470075e+00 7.378438e+00 # HAT + 3534 236 6 0.1480 -4.907019e+00 -3.367599e+00 7.374069e+00 # HAT + 3535 236 6 0.1480 -4.751057e+00 -8.925080e-01 7.372178e+00 # HAT + 3536 236 6 0.1480 -6.816565e+00 4.801060e-01 7.374656e+00 # HAT + 3537 236 6 0.1480 -9.038035e+00 -6.223700e-01 7.379024e+00 # HAT + 3538 236 7 0.0920 -9.508680e+00 -4.247089e+00 7.895931e+00 # HT + 3539 236 7 0.0920 -1.029982e+01 -2.652961e+00 7.896174e+00 # HT + 3540 236 7 0.0920 -9.906774e+00 -3.451043e+00 6.354836e+00 # HT + 3541 237 1 -2.2897 1.484335e+01 1.399167e+01 4.958142e+00 # CAT + 3542 237 2 -2.3557 1.424780e+01 1.273303e+01 5.103596e+00 # CAO + 3543 237 3 -2.3537 1.398874e+01 1.222474e+01 6.382082e+00 # CAM + 3544 237 4 -2.3627 1.432524e+01 1.297508e+01 7.515113e+00 # CAP + 3545 237 3 -2.3537 1.492079e+01 1.423371e+01 7.369660e+00 # CAM + 3546 237 2 -2.3557 1.517984e+01 1.474201e+01 6.091175e+00 # CAO + 3547 237 5 -2.4057 1.512276e+01 1.453990e+01 3.579205e+00 # CTT + 3548 237 6 0.1480 1.398822e+01 1.215420e+01 4.229543e+00 # HAT + 3549 237 6 0.1480 1.352932e+01 1.125379e+01 6.494289e+00 # HAT + 3550 237 6 0.1480 1.412539e+01 1.258296e+01 8.501374e+00 # HAT + 3551 237 6 0.1480 1.518037e+01 1.481255e+01 8.243714e+00 # HAT + 3552 237 6 0.1480 1.563927e+01 1.571296e+01 5.978968e+00 # HAT + 3553 237 7 0.0920 1.438342e+01 1.415384e+01 2.877471e+00 # HT + 3554 237 7 0.0920 1.506746e+01 1.562825e+01 3.602269e+00 # HT + 3555 237 7 0.0920 1.611939e+01 1.423392e+01 3.261066e+00 # HT + 3556 238 1 -2.2897 2.315717e+00 -1.382941e+01 -1.346265e+01 # CAT + 3557 238 2 -2.3557 2.234335e+00 -1.251565e+01 -1.393951e+01 # CAO + 3558 238 3 -2.3537 1.246063e+00 -1.216801e+01 -1.486821e+01 # CAM + 3559 238 4 -2.3627 3.391750e-01 -1.313414e+01 -1.532003e+01 # CAP + 3560 238 3 -2.3537 4.205580e-01 -1.444791e+01 -1.484317e+01 # CAM + 3561 238 2 -2.3557 1.408828e+00 -1.479554e+01 -1.391448e+01 # CAO + 3562 238 5 -2.4057 3.381638e+00 -1.420436e+01 -1.246099e+01 # CTT + 3563 238 6 0.1480 2.933934e+00 -1.177035e+01 -1.359096e+01 # HAT + 3564 238 6 0.1480 1.183283e+00 -1.115454e+01 -1.523607e+01 # HAT + 3565 238 6 0.1480 -4.232060e-01 -1.286596e+01 -1.603645e+01 # HAT + 3566 238 6 0.1480 -2.790430e-01 -1.519321e+01 -1.519172e+01 # HAT + 3567 238 6 0.1480 1.471609e+00 -1.580902e+01 -1.354661e+01 # HAT + 3568 238 7 0.0920 3.622310e+00 -1.333833e+01 -1.184441e+01 # HT + 3569 238 7 0.0920 3.016459e+00 -1.501157e+01 -1.182604e+01 # HT + 3570 238 7 0.0920 4.276678e+00 -1.453423e+01 -1.298842e+01 # HT + 3571 239 1 -2.2897 -1.366387e+01 -1.239712e+01 -1.436625e+01 # CAT + 3572 239 2 -2.3557 -1.245976e+01 -1.278830e+01 -1.496381e+01 # CAO + 3573 239 3 -2.3537 -1.217969e+01 -1.414734e+01 -1.514979e+01 # CAM + 3574 239 4 -2.3627 -1.310373e+01 -1.511519e+01 -1.473821e+01 # CAP + 3575 239 3 -2.3537 -1.430785e+01 -1.472401e+01 -1.414064e+01 # CAM + 3576 239 2 -2.3557 -1.458792e+01 -1.336498e+01 -1.395466e+01 # CAO + 3577 239 5 -2.4057 -1.396595e+01 -1.093131e+01 -1.416565e+01 # CTT + 3578 239 6 0.1480 -1.174692e+01 -1.204168e+01 -1.528132e+01 # HAT + 3579 239 6 0.1480 -1.125080e+01 -1.444911e+01 -1.561077e+01 # HAT + 3580 239 6 0.1480 -1.288768e+01 -1.616359e+01 -1.488168e+01 # HAT + 3581 239 6 0.1480 -1.502068e+01 -1.547064e+01 -1.382314e+01 # HAT + 3582 239 6 0.1480 -1.551681e+01 -1.306321e+01 -1.349368e+01 # HAT + 3583 239 7 0.0920 -1.348156e+01 -1.034937e+01 -1.494976e+01 # HT + 3584 239 7 0.0920 -1.504345e+01 -1.077259e+01 -1.420913e+01 # HT + 3585 239 7 0.0920 -1.359118e+01 -1.061236e+01 -1.319307e+01 # HT + 3586 240 1 -2.2897 1.370349e+01 -1.311656e+01 -1.393122e+01 # CAT + 3587 240 2 -2.3557 1.237589e+01 -1.330863e+01 -1.433195e+01 # CAO + 3588 240 3 -2.3537 1.157489e+01 -1.424900e+01 -1.367308e+01 # CAM + 3589 240 4 -2.3627 1.210149e+01 -1.499730e+01 -1.261349e+01 # CAP + 3590 240 3 -2.3537 1.342909e+01 -1.480522e+01 -1.221275e+01 # CAM + 3591 240 2 -2.3557 1.423009e+01 -1.386485e+01 -1.287162e+01 # CAO + 3592 240 5 -2.4057 1.456743e+01 -1.210231e+01 -1.464185e+01 # CTT + 3593 240 6 0.1480 1.196965e+01 -1.273138e+01 -1.514936e+01 # HAT + 3594 240 6 0.1480 1.055074e+01 -1.439717e+01 -1.398222e+01 # HAT + 3595 240 6 0.1480 1.148357e+01 -1.572272e+01 -1.210522e+01 # HAT + 3596 240 6 0.1480 1.383532e+01 -1.538248e+01 -1.139535e+01 # HAT + 3597 240 6 0.1480 1.525424e+01 -1.371668e+01 -1.256249e+01 # HAT + 3598 240 7 0.0920 1.394283e+01 -1.129191e+01 -1.501768e+01 # HT + 3599 240 7 0.0920 1.530365e+01 -1.170013e+01 -1.394593e+01 # HT + 3600 240 7 0.0920 1.508031e+01 -1.258169e+01 -1.547566e+01 # HT + 3601 241 1 -2.2897 -6.252455e+00 -4.082195e+00 -1.249946e+00 # CAT + 3602 241 2 -2.3557 -6.258884e+00 -2.842686e+00 -1.900773e+00 # CAO + 3603 241 3 -2.3537 -6.622709e+00 -1.686267e+00 -1.200539e+00 # CAM + 3604 241 4 -2.3627 -6.980106e+00 -1.769357e+00 1.505200e-01 # CAP + 3605 241 3 -2.3537 -6.973678e+00 -3.008866e+00 8.013470e-01 # CAM + 3606 241 2 -2.3557 -6.609852e+00 -4.165285e+00 1.011150e-01 # CAO + 3607 241 5 -2.4057 -5.860043e+00 -5.329475e+00 -2.005197e+00 # CTT + 3608 241 6 0.1480 -5.983178e+00 -2.778588e+00 -2.943019e+00 # HAT + 3609 241 6 0.1480 -6.627669e+00 -7.300740e-01 -1.702606e+00 # HAT + 3610 241 6 0.1480 -7.260772e+00 -8.772620e-01 6.907000e-01 # HAT + 3611 241 6 0.1480 -7.249384e+00 -3.072964e+00 1.843594e+00 # HAT + 3612 241 6 0.1480 -6.604893e+00 -5.121478e+00 6.031820e-01 # HAT + 3613 241 7 0.0920 -5.146213e+00 -5.071654e+00 -2.787549e+00 # HT + 3614 241 7 0.0920 -5.403793e+00 -6.042328e+00 -1.318337e+00 # HT + 3615 241 7 0.0920 -6.746456e+00 -5.776078e+00 -2.455661e+00 # HT + 3616 242 1 -2.2897 -1.221430e+01 1.329763e+01 3.916373e+00 # CAT + 3617 242 2 -2.3557 -1.316864e+01 1.411929e+01 3.304715e+00 # CAO + 3618 242 3 -2.3537 -1.288521e+01 1.472593e+01 2.075220e+00 # CAM + 3619 242 4 -2.3627 -1.164745e+01 1.451092e+01 1.457384e+00 # CAP + 3620 242 3 -2.3537 -1.069312e+01 1.368926e+01 2.069043e+00 # CAM + 3621 242 2 -2.3557 -1.097654e+01 1.308262e+01 3.298536e+00 # CAO + 3622 242 5 -2.4057 -1.252000e+01 1.264333e+01 5.242470e+00 # CTT + 3623 242 6 0.1480 -1.412348e+01 1.428516e+01 3.781331e+00 # HAT + 3624 242 6 0.1480 -1.362141e+01 1.535978e+01 1.603369e+00 # HAT + 3625 242 6 0.1480 -1.142881e+01 1.497890e+01 5.089170e-01 # HAT + 3626 242 6 0.1480 -9.738276e+00 1.352339e+01 1.592426e+00 # HAT + 3627 242 6 0.1480 -1.024034e+01 1.244876e+01 3.770387e+00 # HAT + 3628 242 7 0.0920 -1.359151e+01 1.245848e+01 5.318568e+00 # HT + 3629 242 7 0.0920 -1.198270e+01 1.169765e+01 5.314034e+00 # HT + 3630 242 7 0.0920 -1.220675e+01 1.330086e+01 6.053417e+00 # HT + 3631 243 1 -2.2897 1.347380e+01 -1.506411e+01 7.994116e+00 # CAT + 3632 243 2 -2.3557 1.320620e+01 -1.509269e+01 9.368007e+00 # CAO + 3633 243 3 -2.3537 1.189122e+01 -1.525013e+01 9.821913e+00 # CAM + 3634 243 4 -2.3627 1.084383e+01 -1.537899e+01 8.901929e+00 # CAP + 3635 243 3 -2.3537 1.111142e+01 -1.535041e+01 7.528038e+00 # CAM + 3636 243 2 -2.3557 1.242641e+01 -1.519297e+01 7.074131e+00 # CAO + 3637 243 5 -2.4057 1.489210e+01 -1.489431e+01 7.504546e+00 # CTT + 3638 243 6 0.1480 1.401419e+01 -1.499329e+01 1.007771e+01 # HAT + 3639 243 6 0.1480 1.168479e+01 -1.527217e+01 1.088177e+01 # HAT + 3640 243 6 0.1480 9.829412e+00 -1.550044e+01 9.252085e+00 # HAT + 3641 243 6 0.1480 1.030344e+01 -1.544981e+01 6.818335e+00 # HAT + 3642 243 6 0.1480 1.263284e+01 -1.517093e+01 6.014273e+00 # HAT + 3643 243 7 0.0920 1.558155e+01 -1.532663e+01 8.229710e+00 # HT + 3644 243 7 0.0920 1.500924e+01 -1.540023e+01 6.546203e+00 # HT + 3645 243 7 0.0920 1.511078e+01 -1.383332e+01 7.383824e+00 # HT + 3646 244 1 -2.2897 -1.185795e+01 -8.305821e+00 -1.238018e+01 # CAT + 3647 244 2 -2.3557 -1.133203e+01 -9.079506e+00 -1.342173e+01 # CAO + 3648 244 3 -2.3537 -1.097981e+01 -8.474561e+00 -1.463416e+01 # CAM + 3649 244 4 -2.3627 -1.115353e+01 -7.095931e+00 -1.480504e+01 # CAP + 3650 244 3 -2.3537 -1.167946e+01 -6.322246e+00 -1.376350e+01 # CAM + 3651 244 2 -2.3557 -1.203167e+01 -6.927190e+00 -1.255107e+01 # CAO + 3652 244 5 -2.4057 -1.223784e+01 -8.958297e+00 -1.107249e+01 # CTT + 3653 244 6 0.1480 -1.119802e+01 -1.014302e+01 -1.328990e+01 # HAT + 3654 244 6 0.1480 -1.057410e+01 -9.071403e+00 -1.543763e+01 # HAT + 3655 244 6 0.1480 -1.088182e+01 -6.629259e+00 -1.574035e+01 # HAT + 3656 244 6 0.1480 -1.181346e+01 -5.258731e+00 -1.389533e+01 # HAT + 3657 244 6 0.1480 -1.243738e+01 -6.330348e+00 -1.174759e+01 # HAT + 3658 244 7 0.0920 -1.159803e+01 -9.823362e+00 -1.089811e+01 # HT + 3659 244 7 0.0920 -1.211151e+01 -8.243749e+00 -1.025912e+01 # HT + 3660 244 7 0.0920 -1.327859e+01 -9.279442e+00 -1.111493e+01 # HT + 3661 245 1 -2.2897 -3.917380e-01 9.824529e+00 1.492691e+01 # CAT + 3662 245 2 -2.3557 8.219070e-01 9.127241e+00 1.495613e+01 # CAO + 3663 245 3 -2.3537 8.247680e-01 7.731159e+00 1.506076e+01 # CAM + 3664 245 4 -2.3627 -3.860170e-01 7.032365e+00 1.513616e+01 # CAP + 3665 245 3 -2.3537 -1.599663e+00 7.729653e+00 1.510694e+01 # CAM + 3666 245 2 -2.3557 -1.602524e+00 9.125735e+00 1.500232e+01 # CAO + 3667 245 5 -2.4057 -3.948240e-01 1.133030e+01 1.481407e+01 # CTT + 3668 245 6 0.1480 1.755941e+00 9.666311e+00 1.489796e+01 # HAT + 3669 245 6 0.1480 1.761009e+00 7.193251e+00 1.508329e+01 # HAT + 3670 245 6 0.1480 -3.838110e-01 5.955387e+00 1.521687e+01 # HAT + 3671 245 6 0.1480 -2.533697e+00 7.190583e+00 1.516511e+01 # HAT + 3672 245 6 0.1480 -2.538764e+00 9.663643e+00 1.497978e+01 # HAT + 3673 245 7 0.0920 4.843610e-01 1.165528e+01 1.425772e+01 # HT + 3674 245 7 0.0920 -1.294962e+00 1.165418e+01 1.429162e+01 # HT + 3675 245 7 0.0920 -3.760990e-01 1.176995e+01 1.581130e+01 # HT + 3676 246 1 -2.2897 -7.702370e+00 -1.097468e+01 8.402998e+00 # CAT + 3677 246 2 -2.3557 -7.485572e+00 -9.724118e+00 8.993841e+00 # CAO + 3678 246 3 -2.3537 -6.180140e+00 -9.249831e+00 9.169624e+00 # CAM + 3679 246 4 -2.3627 -5.091507e+00 -1.002610e+01 8.754564e+00 # CAP + 3680 246 3 -2.3537 -5.308304e+00 -1.127667e+01 8.163721e+00 # CAM + 3681 246 2 -2.3557 -6.613736e+00 -1.175095e+01 7.987938e+00 # CAO + 3682 246 5 -2.4057 -9.110371e+00 -1.148623e+01 8.213404e+00 # CTT + 3683 246 6 0.1480 -8.325375e+00 -9.125278e+00 9.314030e+00 # HAT + 3684 246 6 0.1480 -6.012896e+00 -8.285112e+00 9.625416e+00 # HAT + 3685 246 6 0.1480 -4.084459e+00 -9.660226e+00 8.890168e+00 # HAT + 3686 246 6 0.1480 -4.468501e+00 -1.187551e+01 7.843532e+00 # HAT + 3687 246 6 0.1480 -6.780980e+00 -1.271567e+01 7.532146e+00 # HAT + 3688 246 7 0.0920 -9.787851e+00 -1.064382e+01 8.073862e+00 # HT + 3689 246 7 0.0920 -9.147999e+00 -1.213135e+01 7.335616e+00 # HT + 3690 246 7 0.0920 -9.413081e+00 -1.205331e+01 9.093678e+00 # HT + 3691 247 1 -2.2897 1.430444e+01 -8.346234e+00 -9.416239e+00 # CAT + 3692 247 2 -2.3557 1.515919e+01 -8.527741e+00 -1.051007e+01 # CAO + 3693 247 3 -2.3537 1.531795e+01 -9.800719e+00 -1.107071e+01 # CAM + 3694 247 4 -2.3627 1.462196e+01 -1.089219e+01 -1.053753e+01 # CAP + 3695 247 3 -2.3537 1.376721e+01 -1.071068e+01 -9.443702e+00 # CAM + 3696 247 2 -2.3557 1.360845e+01 -9.437706e+00 -8.883057e+00 # CAO + 3697 247 5 -2.4057 1.413321e+01 -6.973236e+00 -8.811544e+00 # CTT + 3698 247 6 0.1480 1.569610e+01 -7.685749e+00 -1.092138e+01 # HAT + 3699 247 6 0.1480 1.597733e+01 -9.940738e+00 -1.191452e+01 # HAT + 3700 247 6 0.1480 1.474443e+01 -1.187420e+01 -1.097003e+01 # HAT + 3701 247 6 0.1480 1.323030e+01 -1.155268e+01 -9.032390e+00 # HAT + 3702 247 6 0.1480 1.294907e+01 -9.297687e+00 -8.039247e+00 # HAT + 3703 247 7 0.0920 1.427038e+01 -6.216000e+00 -9.583476e+00 # HT + 3704 247 7 0.0920 1.313227e+01 -6.883835e+00 -8.389391e+00 # HT + 3705 247 7 0.0920 1.487322e+01 -6.827360e+00 -8.024642e+00 # HT + 3706 248 1 -2.2897 -8.220178e+00 -1.162064e+01 6.221310e-01 # CAT + 3707 248 2 -2.3557 -8.030915e+00 -1.029204e+01 2.233820e-01 # CAO + 3708 248 3 -2.3537 -9.131018e+00 -9.435211e+00 9.844500e-02 # CAM + 3709 248 4 -2.3627 -1.042038e+01 -9.906977e+00 3.722570e-01 # CAP + 3710 248 3 -2.3537 -1.060965e+01 -1.123558e+01 7.710060e-01 # CAM + 3711 248 2 -2.3557 -9.509544e+00 -1.209241e+01 8.959430e-01 # CAO + 3712 248 5 -2.4057 -7.033639e+00 -1.254480e+01 7.568850e-01 # CTT + 3713 248 6 0.1480 -7.036262e+00 -9.928111e+00 1.215500e-02 # HAT + 3714 248 6 0.1480 -8.985015e+00 -8.410290e+00 -2.091620e-01 # HAT + 3715 248 6 0.1480 -1.126903e+01 -9.245990e+00 2.758770e-01 # HAT + 3716 248 6 0.1480 -1.160430e+01 -1.159951e+01 9.822330e-01 # HAT + 3717 248 6 0.1480 -9.655547e+00 -1.311733e+01 1.203550e+00 # HAT + 3718 248 7 0.0920 -6.151968e+00 -1.196691e+01 1.034004e+00 # HT + 3719 248 7 0.0920 -7.237154e+00 -1.328822e+01 1.527606e+00 # HT + 3720 248 7 0.0920 -6.854068e+00 -1.304733e+01 -1.935440e-01 # HT + 3721 249 1 -2.2897 1.389114e+01 1.396626e+01 -6.825400e-01 # CAT + 3722 249 2 -2.3557 1.436134e+01 1.277267e+01 -1.219550e-01 # CAO + 3723 249 3 -2.3537 1.375983e+01 1.225670e+01 1.032151e+00 # CAM + 3724 249 4 -2.3627 1.268812e+01 1.293431e+01 1.625671e+00 # CAP + 3725 249 3 -2.3537 1.221791e+01 1.412790e+01 1.065086e+00 # CAM + 3726 249 2 -2.3557 1.281942e+01 1.464387e+01 -8.901900e-02 # CAO + 3727 249 5 -2.4057 1.453991e+01 1.452277e+01 -1.927324e+00 # CTT + 3728 249 6 0.1480 1.518809e+01 1.224994e+01 -5.798130e-01 # HAT + 3729 249 6 0.1480 1.412256e+01 1.133593e+01 1.464602e+00 # HAT + 3730 249 6 0.1480 1.222409e+01 1.253628e+01 2.515981e+00 # HAT + 3731 249 6 0.1480 1.139116e+01 1.465063e+01 1.522945e+00 # HAT + 3732 249 6 0.1480 1.245669e+01 1.556464e+01 -5.214700e-01 # HAT + 3733 249 7 0.0920 1.493267e+01 1.370392e+01 -2.530080e+00 # HT + 3734 249 7 0.0920 1.380104e+01 1.507722e+01 -2.505908e+00 # HT + 3735 249 7 0.0920 1.535499e+01 1.518947e+01 -1.645816e+00 # HT + 3736 250 1 -2.2897 3.313581e+00 2.809477e+00 9.547205e+00 # CAT + 3737 250 2 -2.3557 4.189188e+00 2.123048e+00 8.697424e+00 # CAO + 3738 250 3 -2.3537 3.904718e+00 8.069070e-01 8.314213e+00 # CAM + 3739 250 4 -2.3627 2.744643e+00 1.771950e-01 8.780783e+00 # CAP + 3740 250 3 -2.3537 1.869037e+00 8.636240e-01 9.630565e+00 # CAM + 3741 250 2 -2.3557 2.153506e+00 2.179764e+00 1.001378e+01 # CAO + 3742 250 5 -2.4057 3.620401e+00 4.229028e+00 9.960526e+00 # CTT + 3743 250 6 0.1480 5.084103e+00 2.608825e+00 8.337498e+00 # HAT + 3744 250 6 0.1480 4.580186e+00 2.773760e-01 7.658667e+00 # HAT + 3745 250 6 0.1480 2.525195e+00 -8.381140e-01 8.485163e+00 # HAT + 3746 250 6 0.1480 9.741210e-01 3.778460e-01 9.990491e+00 # HAT + 3747 250 6 0.1480 1.478038e+00 2.709295e+00 1.066932e+01 # HAT + 3748 250 7 0.0920 4.182449e+00 4.724991e+00 9.169182e+00 # HT + 3749 250 7 0.0920 2.688434e+00 4.766616e+00 1.013527e+01 # HT + 3750 250 7 0.0920 4.212116e+00 4.221644e+00 1.087590e+01 # HT + 3751 1 8 2.2087 -3.329314e+00 6.086895e+00 -1.817443e+00 # D_CAT + 3752 1 9 2.2087 -3.087415e+00 5.160210e+00 -8.585367e-01 # D_CAO + 3753 1 10 2.2087 -4.072381e+00 4.998559e+00 2.064781e-01 # D_CAM + 3754 1 11 2.2087 -5.249280e+00 5.797829e+00 2.482909e-01 # D_CAP + 3755 1 10 2.2087 -5.421837e+00 6.720691e+00 -8.750101e-01 # D_CAM + 3756 1 9 2.2087 -4.538920e+00 6.882146e+00 -1.773535e+00 # D_CAO + 3757 1 12 2.2087 -2.277606e+00 6.257040e+00 -2.864932e+00 # D_CTT + 3758 2 8 2.2087 1.322812e+01 1.241298e+01 -6.603711e+00 # D_CAT + 3759 2 9 2.2087 1.313373e+01 1.274060e+01 -7.954978e+00 # D_CAO + 3760 2 10 2.2087 1.379963e+01 1.385791e+01 -8.610221e+00 # D_CAM + 3761 2 11 2.2087 1.472355e+01 1.448518e+01 -7.920730e+00 # D_CAP + 3762 2 10 2.2087 1.487554e+01 1.419107e+01 -6.400353e+00 # D_CAM + 3763 2 9 2.2087 1.424193e+01 1.310975e+01 -5.821034e+00 # D_CAO + 3764 2 12 2.2087 1.249875e+01 1.127436e+01 -6.016541e+00 # D_CTT + 3765 3 8 2.2087 -1.407776e+01 5.635914e+00 -2.481503e+00 # D_CAT + 3766 3 9 2.2087 -1.290198e+01 5.523742e+00 -1.718566e+00 # D_CAO + 3767 3 10 2.2087 -1.182907e+01 4.792212e+00 -2.277732e+00 # D_CAM + 3768 3 11 2.2087 -1.181500e+01 4.256148e+00 -3.420121e+00 # D_CAP + 3769 3 10 2.2087 -1.304494e+01 4.317447e+00 -4.269418e+00 # D_CAM + 3770 3 9 2.2087 -1.405463e+01 5.060839e+00 -3.754308e+00 # D_CAO + 3771 3 12 2.2087 -1.522205e+01 6.305550e+00 -2.032621e+00 # D_CTT + 3772 4 8 2.2087 9.970172e+00 -8.525160e+00 1.792835e+00 # D_CAT + 3773 4 9 2.2087 1.107648e+01 -8.700368e+00 9.670904e-01 # D_CAO + 3774 4 10 2.2087 1.098953e+01 -8.255897e+00 -2.284576e-01 # D_CAM + 3775 4 11 2.2087 9.784861e+00 -7.747088e+00 -8.178659e-01 # D_CAP + 3776 4 10 2.2087 8.634254e+00 -7.528780e+00 6.403136e-02 # D_CAM + 3777 4 9 2.2087 8.793776e+00 -7.967022e+00 1.383598e+00 # D_CAO + 3778 4 12 2.2087 1.011309e+01 -9.126598e+00 3.242588e+00 # D_CTT + 3779 5 8 2.2087 9.686586e+00 7.638471e+00 -7.046248e+00 # D_CAT + 3780 5 9 2.2087 9.299167e+00 8.901819e+00 -7.512563e+00 # D_CAO + 3781 5 10 2.2087 1.020448e+01 9.727635e+00 -8.286029e+00 # D_CAM + 3782 5 11 2.2087 1.136474e+01 9.251284e+00 -8.644377e+00 # D_CAP + 3783 5 10 2.2087 1.189151e+01 7.933551e+00 -8.150735e+00 # D_CAM + 3784 5 9 2.2087 1.096207e+01 7.220483e+00 -7.463882e+00 # D_CAO + 3785 5 12 2.2087 8.772207e+00 6.704642e+00 -6.273534e+00 # D_CTT + 3786 6 8 2.2087 -1.344957e+01 1.300232e+01 1.443329e+01 # D_CAT + 3787 6 9 2.2087 -1.315612e+01 1.429953e+01 1.425383e+01 # D_CAO + 3788 6 10 2.2087 -1.170312e+01 1.450351e+01 1.440582e+01 # D_CAM + 3789 6 11 2.2087 -1.071107e+01 1.345053e+01 1.473724e+01 # D_CAP + 3790 6 10 2.2087 -1.121262e+01 1.217850e+01 1.491323e+01 # D_CAM + 3791 6 9 2.2087 -1.263754e+01 1.186785e+01 1.476254e+01 # D_CAO + 3792 6 12 2.2087 -1.504991e+01 1.271359e+01 1.420498e+01 # D_CTT + 3793 7 8 2.2087 4.632494e+00 6.135990e+00 -1.510157e+01 # D_CAT + 3794 7 9 2.2087 4.423601e+00 7.515225e+00 -1.518287e+01 # D_CAO + 3795 7 10 2.2087 5.768768e+00 8.160254e+00 -1.527092e+01 # D_CAM + 3796 7 11 2.2087 6.933323e+00 7.644562e+00 -1.537707e+01 # D_CAP + 3797 7 10 2.2087 6.935916e+00 6.142419e+00 -1.544592e+01 # D_CAM + 3798 7 9 2.2087 5.750367e+00 5.435948e+00 -1.516108e+01 # D_CAO + 3799 7 12 2.2087 3.201341e+00 5.358195e+00 -1.511734e+01 # D_CTT + 3800 8 8 2.2087 -5.396939e+00 5.169955e+00 9.753209e+00 # D_CAT + 3801 8 9 2.2087 -4.490737e+00 4.265882e+00 1.036846e+01 # D_CAO + 3802 8 10 2.2087 -4.010627e+00 3.165569e+00 9.811499e+00 # D_CAM + 3803 8 11 2.2087 -4.352936e+00 2.956829e+00 8.441598e+00 # D_CAP + 3804 8 10 2.2087 -5.096955e+00 3.852672e+00 7.755358e+00 # D_CAM + 3805 8 9 2.2087 -5.647242e+00 5.024977e+00 8.374482e+00 # D_CAO + 3806 8 12 2.2087 -5.963199e+00 6.379522e+00 1.047364e+01 # D_CTT + 3807 9 8 2.2087 -1.149758e+01 -2.609829e+00 -5.757920e+00 # D_CAT + 3808 9 9 2.2087 -1.081274e+01 -1.665897e+00 -6.378170e+00 # D_CAO + 3809 9 10 2.2087 -1.058277e+01 -1.568048e+00 -7.735608e+00 # D_CAM + 3810 9 11 2.2087 -1.108745e+01 -2.601705e+00 -8.563837e+00 # D_CAP + 3811 9 10 2.2087 -1.184405e+01 -3.682335e+00 -7.991666e+00 # D_CAM + 3812 9 9 2.2087 -1.202935e+01 -3.687370e+00 -6.602147e+00 # D_CAO + 3813 9 12 2.2087 -1.168711e+01 -2.709891e+00 -4.302766e+00 # D_CTT + 3814 10 8 2.2087 1.397195e+01 -2.144243e+00 -1.306513e+01 # D_CAT + 3815 10 9 2.2087 1.254422e+01 -2.238953e+00 -1.311268e+01 # D_CAO + 3816 10 10 2.2087 1.200970e+01 -2.859873e+00 -1.184402e+01 # D_CAM + 3817 10 11 2.2087 1.287799e+01 -3.093652e+00 -1.061102e+01 # D_CAP + 3818 10 10 2.2087 1.413792e+01 -2.832053e+00 -1.081221e+01 # D_CAM + 3819 10 9 2.2087 1.469464e+01 -2.354148e+00 -1.198235e+01 # D_CAO + 3820 10 12 2.2087 1.454519e+01 -1.682873e+00 -1.425736e+01 # D_CTT + 3821 11 8 2.2087 1.482771e+01 -2.640147e+00 -5.790800e+00 # D_CAT + 3822 11 9 2.2087 1.469697e+01 -3.767551e+00 -5.076856e+00 # D_CAO + 3823 11 10 2.2087 1.466405e+01 -3.952776e+00 -3.610885e+00 # D_CAM + 3824 11 11 2.2087 1.498368e+01 -2.662080e+00 -2.955574e+00 # D_CAP + 3825 11 10 2.2087 1.502262e+01 -1.549842e+00 -3.587786e+00 # D_CAM + 3826 11 9 2.2087 1.506954e+01 -1.626285e+00 -5.050410e+00 # D_CAO + 3827 11 12 2.2087 1.484506e+01 -2.621339e+00 -7.221130e+00 # D_CTT + 3828 12 8 2.2087 -1.416804e+01 1.023510e+01 -6.530284e+00 # D_CAT + 3829 12 9 2.2087 -1.308142e+01 1.041048e+01 -5.597256e+00 # D_CAO + 3830 12 10 2.2087 -1.270736e+01 9.209224e+00 -4.924414e+00 # D_CAM + 3831 12 11 2.2087 -1.344071e+01 8.092280e+00 -5.122256e+00 # D_CAP + 3832 12 10 2.2087 -1.449926e+01 7.994392e+00 -5.792398e+00 # D_CAM + 3833 12 9 2.2087 -1.487936e+01 9.140463e+00 -6.629189e+00 # D_CAO + 3834 12 12 2.2087 -1.465251e+01 1.146977e+01 -7.210696e+00 # D_CTT + 3835 13 8 2.2087 -4.353847e+00 -1.344179e+01 -9.446561e+00 # D_CAT + 3836 13 9 2.2087 -5.061837e+00 -1.340562e+01 -8.361602e+00 # D_CAO + 3837 13 10 2.2087 -4.691705e+00 -1.420649e+01 -7.286020e+00 # D_CAM + 3838 13 11 2.2087 -3.714316e+00 -1.525746e+01 -7.560393e+00 # D_CAP + 3839 13 10 2.2087 -2.948521e+00 -1.533441e+01 -8.930681e+00 # D_CAM + 3840 13 9 2.2087 -3.462606e+00 -1.438489e+01 -9.838695e+00 # D_CAO + 3841 13 12 2.2087 -4.795731e+00 -1.254940e+01 -1.076972e+01 # D_CTT + 3842 14 8 2.2087 1.712639e+00 3.354001e+00 -6.547773e-01 # D_CAT + 3843 14 9 2.2087 1.204501e+00 2.180435e+00 -9.891398e-01 # D_CAO + 3844 14 10 2.2087 3.984760e-01 2.057876e+00 -2.142020e+00 # D_CAM + 3845 14 11 2.2087 1.400871e-01 3.155898e+00 -3.040314e+00 # D_CAP + 3846 14 10 2.2087 8.328733e-01 4.394280e+00 -2.643816e+00 # D_CAM + 3847 14 9 2.2087 1.613202e+00 4.476577e+00 -1.410486e+00 # D_CAO + 3848 14 12 2.2087 2.704272e+00 3.394348e+00 5.152576e-01 # D_CTT + 3849 15 8 2.2087 -1.490490e+01 -1.352614e+01 -7.807407e+00 # D_CAT + 3850 15 9 2.2087 -1.494141e+01 -1.197445e+01 -7.847398e+00 # D_CAO + 3851 15 10 2.2087 -1.505065e+01 -1.148885e+01 -9.109559e+00 # D_CAM + 3852 15 11 2.2087 -1.527414e+01 -1.222033e+01 -1.027717e+01 # D_CAP + 3853 15 10 2.2087 -1.521243e+01 -1.353217e+01 -1.017631e+01 # D_CAM + 3854 15 9 2.2087 -1.511136e+01 -1.421799e+01 -8.976571e+00 # D_CAO + 3855 15 12 2.2087 -1.473106e+01 -1.410130e+01 -6.435040e+00 # D_CTT + 3856 16 8 2.2087 -1.406117e+00 -2.206943e+00 -8.284105e+00 # D_CAT + 3857 16 9 2.2087 2.795021e-02 -1.666046e+00 -7.780713e+00 # D_CAO + 3858 16 10 2.2087 5.638772e-01 -2.537619e+00 -7.071884e+00 # D_CAM + 3859 16 11 2.2087 1.840500e-01 -3.766138e+00 -6.590189e+00 # D_CAP + 3860 16 10 2.2087 -1.063184e+00 -4.134429e+00 -7.079552e+00 # D_CAM + 3861 16 9 2.2087 -1.852770e+00 -3.388297e+00 -7.874232e+00 # D_CAO + 3862 16 12 2.2087 -2.086479e+00 -1.201436e+00 -9.359008e+00 # D_CTT + 3863 17 8 2.2087 -7.596119e+00 -7.357616e+00 -1.204311e+01 # D_CAT + 3864 17 9 2.2087 -6.812401e+00 -8.236850e+00 -1.119983e+01 # D_CAO + 3865 17 10 2.2087 -5.666452e+00 -7.696888e+00 -1.058073e+01 # D_CAM + 3866 17 11 2.2087 -5.275716e+00 -6.318326e+00 -1.074651e+01 # D_CAP + 3867 17 10 2.2087 -6.184707e+00 -5.598500e+00 -1.151302e+01 # D_CAM + 3868 17 9 2.2087 -7.284283e+00 -6.081519e+00 -1.221559e+01 # D_CAO + 3869 17 12 2.2087 -8.793577e+00 -8.042171e+00 -1.264502e+01 # D_CTT + 3870 18 8 2.2087 7.914299e+00 1.306593e+01 1.391289e+00 # D_CAT + 3871 18 9 2.2087 6.846877e+00 1.371616e+01 7.875020e-01 # D_CAO + 3872 18 10 2.2087 7.025215e+00 1.458611e+01 -1.938352e-01 # D_CAM + 3873 18 11 2.2087 8.340221e+00 1.485532e+01 -6.716275e-01 # D_CAP + 3874 18 10 2.2087 9.414515e+00 1.396471e+01 -2.815037e-01 # D_CAM + 3875 18 9 2.2087 9.199992e+00 1.309151e+01 7.966763e-01 # D_CAO + 3876 18 12 2.2087 7.711798e+00 1.205645e+01 2.475081e+00 # D_CTT + 3877 19 8 2.2087 -2.224162e+00 -1.416613e+01 -5.403239e+00 # D_CAT + 3878 19 9 2.2087 -3.259900e+00 -1.334020e+01 -5.197820e+00 # D_CAO + 3879 19 10 2.2087 -3.560142e+00 -1.242016e+01 -6.255937e+00 # D_CAM + 3880 19 11 2.2087 -2.763779e+00 -1.243087e+01 -7.516367e+00 # D_CAP + 3881 19 10 2.2087 -1.712419e+00 -1.347441e+01 -7.658390e+00 # D_CAM + 3882 19 9 2.2087 -1.401747e+00 -1.427096e+01 -6.591665e+00 # D_CAO + 3883 19 12 2.2087 -1.914129e+00 -1.517362e+01 -4.297735e+00 # D_CTT + 3884 20 8 2.2087 -1.392645e+00 6.628639e+00 8.799848e+00 # D_CAT + 3885 20 9 2.2087 -7.581976e-01 7.727283e+00 9.412026e+00 # D_CAO + 3886 20 10 2.2087 4.845207e-01 8.268136e+00 8.847729e+00 # D_CAM + 3887 20 11 2.2087 9.550208e-01 7.641636e+00 7.649935e+00 # D_CAP + 3888 20 10 2.2087 2.152263e-01 6.610307e+00 6.967817e+00 # D_CAM + 3889 20 9 2.2087 -8.713691e-01 6.130449e+00 7.587380e+00 # D_CAO + 3890 20 12 2.2087 -2.547207e+00 6.125564e+00 9.404002e+00 # D_CTT + 3891 21 8 2.2087 -7.300927e-01 6.654331e+00 1.263912e+01 # D_CAT + 3892 21 9 2.2087 2.485285e-01 7.696447e+00 1.259069e+01 # D_CAO + 3893 21 10 2.2087 -3.704156e-01 9.018896e+00 1.254581e+01 # D_CAM + 3894 21 11 2.2087 -1.842213e+00 9.238401e+00 1.255720e+01 # D_CAP + 3895 21 10 2.2087 -2.545499e+00 8.194050e+00 1.253192e+01 # D_CAM + 3896 21 9 2.2087 -2.060363e+00 6.792603e+00 1.268907e+01 # D_CAO + 3897 21 12 2.2087 -1.699420e-01 5.251756e+00 1.258672e+01 # D_CTT + 3898 22 8 2.2087 3.138684e+00 -7.513693e+00 -5.132590e+00 # D_CAT + 3899 22 9 2.2087 4.151269e+00 -7.147622e+00 -3.990500e+00 # D_CAO + 3900 22 10 2.2087 5.190149e+00 -6.300613e+00 -4.231045e+00 # D_CAM + 3901 22 11 2.2087 5.634660e+00 -5.916221e+00 -5.495383e+00 # D_CAP + 3902 22 10 2.2087 4.744859e+00 -6.173777e+00 -6.470282e+00 # D_CAM + 3903 22 9 2.2087 3.594235e+00 -7.008447e+00 -6.372714e+00 # D_CAO + 3904 22 12 2.2087 1.998220e+00 -8.210180e+00 -4.832027e+00 # D_CTT + 3905 23 8 2.2087 -1.397243e+01 1.402895e+01 -1.491484e+01 # D_CAT + 3906 23 9 2.2087 -1.261631e+01 1.433888e+01 -1.480444e+01 # D_CAO + 3907 23 10 2.2087 -1.163971e+01 1.332093e+01 -1.509781e+01 # D_CAM + 3908 23 11 2.2087 -1.198273e+01 1.197334e+01 -1.520057e+01 # D_CAP + 3909 23 10 2.2087 -1.346908e+01 1.171051e+01 -1.529192e+01 # D_CAM + 3910 23 9 2.2087 -1.438758e+01 1.270265e+01 -1.512737e+01 # D_CAO + 3911 23 12 2.2087 -1.502173e+01 1.505845e+01 -1.476073e+01 # D_CTT + 3912 24 8 2.2087 7.140475e+00 4.023699e-01 1.115046e+01 # D_CAT + 3913 24 9 2.2087 6.631946e+00 -7.836594e-01 1.047824e+01 # D_CAO + 3914 24 10 2.2087 7.407350e+00 -2.004633e+00 1.074856e+01 # D_CAM + 3915 24 11 2.2087 8.506936e+00 -2.041887e+00 1.155136e+01 # D_CAP + 3916 24 10 2.2087 8.951648e+00 -9.199127e-01 1.231282e+01 # D_CAM + 3917 24 9 2.2087 8.139064e+00 2.972082e-01 1.211685e+01 # D_CAO + 3918 24 12 2.2087 6.286061e+00 1.557048e+00 1.110488e+01 # D_CTT + 3919 25 8 2.2087 1.412041e+01 9.294409e+00 -6.622812e-01 # D_CAT + 3920 25 9 2.2087 1.401797e+01 8.745620e+00 5.869598e-01 # D_CAO + 3921 25 10 2.2087 1.298458e+01 9.137310e+00 1.469582e+00 # D_CAM + 3922 25 11 2.2087 1.199681e+01 1.007322e+01 9.953772e-01 # D_CAP + 3923 25 10 2.2087 1.211885e+01 1.067573e+01 -1.190930e-01 # D_CAM + 3924 25 9 2.2087 1.312880e+01 1.030658e+01 -1.075266e+00 # D_CAO + 3925 25 12 2.2087 1.507937e+01 8.785768e+00 -1.712003e+00 # D_CTT + 3926 26 8 2.2087 3.914046e+00 5.989727e+00 1.416506e+01 # D_CAT + 3927 26 9 2.2087 3.714474e+00 6.523000e+00 1.297980e+01 # D_CAO + 3928 26 10 2.2087 4.237861e+00 7.751502e+00 1.257878e+01 # D_CAM + 3929 26 11 2.2087 4.953496e+00 8.405859e+00 1.353899e+01 # D_CAP + 3930 26 10 2.2087 5.335972e+00 7.925318e+00 1.472842e+01 # D_CAM + 3931 26 9 2.2087 4.832184e+00 6.543950e+00 1.509705e+01 # D_CAO + 3932 26 12 2.2087 3.451426e+00 4.565709e+00 1.460645e+01 # D_CTT + 3933 27 8 2.2087 -8.108392e+00 -6.858489e-01 1.040902e+01 # D_CAT + 3934 27 9 2.2087 -7.275470e+00 -1.707268e+00 9.986516e+00 # D_CAO + 3935 27 10 2.2087 -5.820996e+00 -1.343364e+00 9.984480e+00 # D_CAM + 3936 27 11 2.2087 -5.479493e+00 5.048258e-03 1.029766e+01 # D_CAP + 3937 27 10 2.2087 -6.316233e+00 8.646660e-01 1.051676e+01 # D_CAM + 3938 27 9 2.2087 -7.670784e+00 5.773283e-01 1.066572e+01 # D_CAO + 3939 27 12 2.2087 -9.575907e+00 -1.057572e+00 1.062943e+01 # D_CTT + 3940 28 8 2.2087 1.097864e+01 4.867187e-01 -1.449518e+00 # D_CAT + 3941 28 9 2.2087 1.164306e+01 5.277178e-01 -2.146860e-01 # D_CAO + 3942 28 10 2.2087 1.107612e+01 1.300662e+00 9.925538e-01 # D_CAM + 3943 28 11 2.2087 9.940368e+00 2.000563e+00 7.545035e-01 # D_CAP + 3944 28 10 2.2087 9.271184e+00 1.972248e+00 -2.513153e-01 # D_CAM + 3945 28 9 2.2087 9.701669e+00 1.232084e+00 -1.424748e+00 # D_CAO + 3946 28 12 2.2087 1.136257e+01 -3.087924e-01 -2.554386e+00 # D_CTT + 3947 29 8 2.2087 1.362327e+01 -6.767002e+00 -1.213367e+01 # D_CAT + 3948 29 9 2.2087 1.400574e+01 -7.974382e+00 -1.262400e+01 # D_CAO + 3949 29 10 2.2087 1.326440e+01 -9.078363e+00 -1.243071e+01 # D_CAM + 3950 29 11 2.2087 1.217075e+01 -8.993501e+00 -1.156006e+01 # D_CAP + 3951 29 10 2.2087 1.187836e+01 -7.853839e+00 -1.109340e+01 # D_CAM + 3952 29 9 2.2087 1.252734e+01 -6.751213e+00 -1.136878e+01 # D_CAO + 3953 29 12 2.2087 1.431080e+01 -5.508520e+00 -1.243821e+01 # D_CTT + 3954 30 8 2.2087 1.313155e+01 -4.483113e+00 7.425184e+00 # D_CAT + 3955 30 9 2.2087 1.437098e+01 -4.277872e+00 6.965204e+00 # D_CAO + 3956 30 10 2.2087 1.492786e+01 -2.951233e+00 6.928186e+00 # D_CAM + 3957 30 11 2.2087 1.413581e+01 -1.905789e+00 7.377141e+00 # D_CAP + 3958 30 10 2.2087 1.286445e+01 -2.076574e+00 7.849225e+00 # D_CAM + 3959 30 9 2.2087 1.223880e+01 -3.404439e+00 7.883327e+00 # D_CAO + 3960 30 12 2.2087 1.258570e+01 -5.949891e+00 7.520388e+00 # D_CTT + 3961 31 8 2.2087 -6.763260e+00 1.490104e+01 -8.930978e+00 # D_CAT + 3962 31 9 2.2087 -7.691097e+00 1.545497e+01 -7.952233e+00 # D_CAO + 3963 31 10 2.2087 -7.386625e+00 1.542626e+01 -6.663156e+00 # D_CAM + 3964 31 11 2.2087 -6.185357e+00 1.492466e+01 -6.212587e+00 # D_CAP + 3965 31 10 2.2087 -5.295225e+00 1.430478e+01 -7.103294e+00 # D_CAM + 3966 31 9 2.2087 -5.652903e+00 1.439886e+01 -8.551432e+00 # D_CAO + 3967 31 12 2.2087 -7.225251e+00 1.494613e+01 -1.038867e+01 # D_CTT + 3968 32 8 2.2087 1.413483e+01 1.461482e+01 1.349656e+01 # D_CAT + 3969 32 9 2.2087 1.299848e+01 1.518167e+01 1.312265e+01 # D_CAO + 3970 32 10 2.2087 1.269505e+01 1.525078e+01 1.170450e+01 # D_CAM + 3971 32 11 2.2087 1.345485e+01 1.453892e+01 1.081311e+01 # D_CAP + 3972 32 10 2.2087 1.463679e+01 1.389601e+01 1.117752e+01 # D_CAM + 3973 32 9 2.2087 1.495971e+01 1.385843e+01 1.255592e+01 # D_CAO + 3974 32 12 2.2087 1.444971e+01 1.447232e+01 1.502390e+01 # D_CTT + 3975 33 8 2.2087 3.257905e+00 1.410796e+01 -1.241784e+01 # D_CAT + 3976 33 9 2.2087 3.282710e+00 1.276632e+01 -1.288924e+01 # D_CAO + 3977 33 10 2.2087 4.597683e+00 1.219591e+01 -1.283029e+01 # D_CAM + 3978 33 11 2.2087 5.707946e+00 1.289737e+01 -1.244392e+01 # D_CAP + 3979 33 10 2.2087 5.672700e+00 1.422595e+01 -1.209604e+01 # D_CAM + 3980 33 9 2.2087 4.336249e+00 1.484531e+01 -1.193709e+01 # D_CAO + 3981 33 12 2.2087 1.841713e+00 1.471722e+01 -1.236134e+01 # D_CTT + 3982 34 8 2.2087 2.895731e+00 1.517540e+01 2.797601e+00 # D_CAT + 3983 34 9 2.2087 2.774246e+00 1.487018e+01 1.432516e+00 # D_CAO + 3984 34 10 2.2087 1.582890e+00 1.493593e+01 8.380619e-01 # D_CAM + 3985 34 11 2.2087 4.465572e-01 1.520689e+01 1.761536e+00 # D_CAP + 3986 34 10 2.2087 6.392990e-01 1.541346e+01 3.052290e+00 # D_CAM + 3987 34 9 2.2087 1.877532e+00 1.540637e+01 3.650900e+00 # D_CAO + 3988 34 12 2.2087 4.310812e+00 1.517897e+01 3.452001e+00 # D_CTT + 3989 35 8 2.2087 -8.193006e+00 -1.299632e+01 -3.690795e+00 # D_CAT + 3990 35 9 2.2087 -8.920377e+00 -1.353353e+01 -4.762121e+00 # D_CAO + 3991 35 10 2.2087 -8.346691e+00 -1.453504e+01 -5.502369e+00 # D_CAM + 3992 35 11 2.2087 -7.269628e+00 -1.498464e+01 -5.281821e+00 # D_CAP + 3993 35 10 2.2087 -6.471090e+00 -1.468749e+01 -4.086634e+00 # D_CAM + 3994 35 9 2.2087 -6.911003e+00 -1.363629e+01 -3.414816e+00 # D_CAO + 3995 35 12 2.2087 -8.662390e+00 -1.184004e+01 -3.005418e+00 # D_CTT + 3996 36 8 2.2087 9.715827e+00 1.393367e+01 1.150953e+01 # D_CAT + 3997 36 9 2.2087 1.050845e+01 1.383548e+01 1.261126e+01 # D_CAO + 3998 36 10 2.2087 1.000306e+01 1.427471e+01 1.395054e+01 # D_CAM + 3999 36 11 2.2087 8.833792e+00 1.509847e+01 1.398166e+01 # D_CAP + 4000 36 10 2.2087 8.021866e+00 1.509650e+01 1.281889e+01 # D_CAM + 4001 36 9 2.2087 8.466020e+00 1.474399e+01 1.153284e+01 # D_CAO + 4002 36 12 2.2087 1.026589e+01 1.347526e+01 1.018240e+01 # D_CTT + 4003 37 8 2.2087 6.512566e+00 -9.221900e+00 -1.004866e+01 # D_CAT + 4004 37 9 2.2087 6.612724e+00 -1.026330e+01 -1.105375e+01 # D_CAO + 4005 37 10 2.2087 5.362162e+00 -1.081711e+01 -1.157351e+01 # D_CAM + 4006 37 11 2.2087 4.109702e+00 -1.031448e+01 -1.099864e+01 # D_CAP + 4007 37 10 2.2087 4.235211e+00 -9.092030e+00 -1.013968e+01 # D_CAM + 4008 37 9 2.2087 5.323522e+00 -8.633224e+00 -9.577350e+00 # D_CAO + 4009 37 12 2.2087 7.845295e+00 -8.657429e+00 -9.438060e+00 # D_CTT + 4010 38 8 2.2087 -4.024556e+00 1.891793e+00 -7.052593e-01 # D_CAT + 4011 38 9 2.2087 -4.454284e+00 1.143909e+00 3.829799e-01 # D_CAO + 4012 38 10 2.2087 -5.764880e+00 1.517639e+00 1.081093e+00 # D_CAM + 4013 38 11 2.2087 -6.428682e+00 2.584553e+00 4.257834e-01 # D_CAP + 4014 38 10 2.2087 -6.017252e+00 3.362785e+00 -6.623003e-01 # D_CAM + 4015 38 9 2.2087 -4.705869e+00 2.905006e+00 -1.240565e+00 # D_CAO + 4016 38 12 2.2087 -2.612637e+00 1.452662e+00 -1.290183e+00 # D_CTT + 4017 39 8 2.2087 -1.264356e+01 -1.432473e+01 1.294680e+01 # D_CAT + 4018 39 9 2.2087 -1.203767e+01 -1.501777e+01 1.406192e+01 # D_CAO + 4019 39 10 2.2087 -1.073102e+01 -1.490794e+01 1.436553e+01 # D_CAM + 4020 39 11 2.2087 -9.809702e+00 -1.447903e+01 1.344013e+01 # D_CAP + 4021 39 10 2.2087 -1.031310e+01 -1.386770e+01 1.228688e+01 # D_CAM + 4022 39 9 2.2087 -1.157528e+01 -1.386297e+01 1.198953e+01 # D_CAO + 4023 39 12 2.2087 -1.403289e+01 -1.428131e+01 1.268062e+01 # D_CTT + 4024 40 8 2.2087 -1.296605e+01 -5.458697e+00 -2.325835e+00 # D_CAT + 4025 40 9 2.2087 -1.200990e+01 -6.034630e+00 -3.157061e+00 # D_CAO + 4026 40 10 2.2087 -1.237419e+01 -6.806931e+00 -4.186012e+00 # D_CAM + 4027 40 11 2.2087 -1.378334e+01 -7.349833e+00 -4.211211e+00 # D_CAP + 4028 40 10 2.2087 -1.466235e+01 -6.872226e+00 -3.323041e+00 # D_CAM + 4029 40 9 2.2087 -1.422780e+01 -5.959120e+00 -2.345862e+00 # D_CAO + 4030 40 12 2.2087 -1.247493e+01 -4.626167e+00 -1.193071e+00 # D_CTT + 4031 41 8 2.2087 -1.051542e+01 2.202094e+00 -1.511274e+01 # D_CAT + 4032 41 9 2.2087 -1.094006e+01 8.783632e-01 -1.540651e+01 # D_CAO + 4033 41 10 2.2087 -1.224650e+01 5.385258e-01 -1.552103e+01 # D_CAM + 4034 41 11 2.2087 -1.326485e+01 1.525628e+00 -1.541954e+01 # D_CAP + 4035 41 10 2.2087 -1.273166e+01 2.863547e+00 -1.498601e+01 # D_CAM + 4036 41 9 2.2087 -1.152454e+01 3.143355e+00 -1.501384e+01 # D_CAO + 4037 41 12 2.2087 -8.957149e+00 2.512670e+00 -1.482631e+01 # D_CTT + 4038 42 8 2.2087 -1.321977e+01 7.726722e+00 -1.054246e+01 # D_CAT + 4039 42 9 2.2087 -1.241902e+01 9.009227e+00 -1.057436e+01 # D_CAO + 4040 42 10 2.2087 -1.106343e+01 9.039334e+00 -1.063644e+01 # D_CAM + 4041 42 11 2.2087 -1.047329e+01 7.764233e+00 -1.067898e+01 # D_CAP + 4042 42 10 2.2087 -1.105075e+01 6.627951e+00 -1.061884e+01 # D_CAM + 4043 42 9 2.2087 -1.245655e+01 6.672384e+00 -1.040992e+01 # D_CAO + 4044 42 12 2.2087 -1.464132e+01 7.743636e+00 -1.026897e+01 # D_CTT + 4045 43 8 2.2087 1.482582e+00 -3.641450e+00 -9.388600e+00 # D_CAT + 4046 43 9 2.2087 1.411277e+00 -4.692682e+00 -8.510396e+00 # D_CAO + 4047 43 10 2.2087 3.074148e-01 -5.503779e+00 -8.421653e+00 # D_CAM + 4048 43 11 2.2087 -8.679170e-01 -5.319838e+00 -9.017768e+00 # D_CAP + 4049 43 10 2.2087 -8.748484e-01 -4.197584e+00 -1.004515e+01 # D_CAM + 4050 43 9 2.2087 2.235869e-01 -3.466703e+00 -1.020483e+01 # D_CAO + 4051 43 12 2.2087 2.631400e+00 -2.746479e+00 -9.558127e+00 # D_CTT + 4052 44 8 2.2087 1.211075e+01 1.337833e+01 -1.290665e+01 # D_CAT + 4053 44 9 2.2087 1.178695e+01 1.339261e+01 -1.427021e+01 # D_CAO + 4054 44 10 2.2087 1.207628e+01 1.226166e+01 -1.516798e+01 # D_CAM + 4055 44 11 2.2087 1.257305e+01 1.127811e+01 -1.467681e+01 # D_CAP + 4056 44 10 2.2087 1.286570e+01 1.106498e+01 -1.332828e+01 # D_CAM + 4057 44 9 2.2087 1.262352e+01 1.213738e+01 -1.249220e+01 # D_CAO + 4058 44 12 2.2087 1.178580e+01 1.449837e+01 -1.214793e+01 # D_CTT + 4059 45 8 2.2087 7.685737e+00 -2.647187e+00 -1.414545e+01 # D_CAT + 4060 45 9 2.2087 7.303470e+00 -1.458036e+00 -1.476426e+01 # D_CAO + 4061 45 10 2.2087 6.065444e+00 -7.519520e-01 -1.434040e+01 # D_CAM + 4062 45 11 2.2087 5.353739e+00 -1.494233e+00 -1.333628e+01 # D_CAP + 4063 45 10 2.2087 5.653660e+00 -2.543613e+00 -1.262640e+01 # D_CAM + 4064 45 9 2.2087 6.919407e+00 -3.120409e+00 -1.308647e+01 # D_CAO + 4065 45 12 2.2087 9.025069e+00 -3.363751e+00 -1.451814e+01 # D_CTT + 4066 46 8 2.2087 4.841749e+00 -1.497562e+01 7.594474e+00 # D_CAT + 4067 46 9 2.2087 4.744644e+00 -1.516699e+01 6.196497e+00 # D_CAO + 4068 46 10 2.2087 5.613352e+00 -1.496889e+01 5.343855e+00 # D_CAM + 4069 46 11 2.2087 6.969295e+00 -1.475852e+01 5.949128e+00 # D_CAP + 4070 46 10 2.2087 7.206613e+00 -1.475246e+01 7.290092e+00 # D_CAM + 4071 46 9 2.2087 6.066459e+00 -1.482818e+01 8.178054e+00 # D_CAO + 4072 46 12 2.2087 3.523744e+00 -1.506998e+01 8.547863e+00 # D_CTT + 4073 47 8 2.2087 9.867423e+00 -1.330008e+01 1.322084e+01 # D_CAT + 4074 47 9 2.2087 9.143296e+00 -1.339767e+01 1.207004e+01 # D_CAO + 4075 47 10 2.2087 7.886360e+00 -1.316475e+01 1.185735e+01 # D_CAM + 4076 47 11 2.2087 7.117800e+00 -1.257086e+01 1.305998e+01 # D_CAP + 4077 47 10 2.2087 7.629566e+00 -1.250861e+01 1.432402e+01 # D_CAM + 4078 47 9 2.2087 9.056763e+00 -1.286144e+01 1.445824e+01 # D_CAO + 4079 47 12 2.2087 1.117906e+01 -1.374910e+01 1.356533e+01 # D_CTT + 4080 48 8 2.2087 -5.640723e-01 1.109374e+01 -9.149181e+00 # D_CAT + 4081 48 9 2.2087 -9.529134e-02 1.177157e+01 -1.030982e+01 # D_CAO + 4082 48 10 2.2087 -5.461530e-01 1.141213e+01 -1.152976e+01 # D_CAM + 4083 48 11 2.2087 -1.531763e+00 1.041426e+01 -1.156095e+01 # D_CAP + 4084 48 10 2.2087 -1.995717e+00 9.771871e+00 -1.047163e+01 # D_CAM + 4085 48 9 2.2087 -1.624386e+00 1.003220e+01 -9.280718e+00 # D_CAO + 4086 48 12 2.2087 3.538578e-03 1.149298e+01 -7.729795e+00 # D_CTT + 4087 49 8 2.2087 1.030422e+01 -5.866718e-01 -8.050910e+00 # D_CAT + 4088 49 9 2.2087 1.160864e+01 -4.723875e-01 -7.983955e+00 # D_CAO + 4089 49 10 2.2087 1.231098e+01 2.906156e-01 -6.966073e+00 # D_CAM + 4090 49 11 2.2087 1.158354e+01 1.117311e+00 -6.044817e+00 # D_CAP + 4091 49 10 2.2087 1.014958e+01 9.957552e-01 -6.085477e+00 # D_CAM + 4092 49 9 2.2087 9.475071e+00 2.357483e-01 -6.996639e+00 # D_CAO + 4093 49 12 2.2087 9.688907e+00 -1.392958e+00 -9.039917e+00 # D_CTT + 4094 50 8 2.2087 1.052177e+01 1.503944e+01 6.059595e+00 # D_CAT + 4095 50 9 2.2087 1.046703e+01 1.511482e+01 4.719437e+00 # D_CAO + 4096 50 10 2.2087 9.255482e+00 1.514253e+01 3.999497e+00 # D_CAM + 4097 50 11 2.2087 8.056787e+00 1.508350e+01 4.673270e+00 # D_CAP + 4098 50 10 2.2087 8.016113e+00 1.498243e+01 6.016747e+00 # D_CAM + 4099 50 9 2.2087 9.313482e+00 1.491023e+01 6.795518e+00 # D_CAO + 4100 50 12 2.2087 1.186057e+01 1.503777e+01 6.752837e+00 # D_CTT + 4101 51 8 2.2087 1.200561e+01 -4.829299e+00 -3.835772e+00 # D_CAT + 4102 51 9 2.2087 1.185475e+01 -5.972166e+00 -4.386106e+00 # D_CAO + 4103 51 10 2.2087 1.172689e+01 -6.087496e+00 -5.798304e+00 # D_CAM + 4104 51 11 2.2087 1.176124e+01 -4.924053e+00 -6.578396e+00 # D_CAP + 4105 51 10 2.2087 1.199711e+01 -3.648871e+00 -5.929957e+00 # D_CAM + 4106 51 9 2.2087 1.203843e+01 -3.619668e+00 -4.619990e+00 # D_CAO + 4107 51 12 2.2087 1.200298e+01 -4.474129e+00 -2.331932e+00 # D_CTT + 4108 52 8 2.2087 1.545106e+00 -1.221028e+01 -6.056572e+00 # D_CAT + 4109 52 9 2.2087 2.673383e+00 -1.163858e+01 -6.567490e+00 # D_CAO + 4110 52 10 2.2087 2.518452e+00 -1.033306e+01 -7.231695e+00 # D_CAM + 4111 52 11 2.2087 1.292037e+00 -9.744589e+00 -7.431465e+00 # D_CAP + 4112 52 10 2.2087 2.260127e-01 -1.042179e+01 -6.916005e+00 # D_CAM + 4113 52 9 2.2087 2.277442e-01 -1.158808e+01 -6.267618e+00 # D_CAO + 4114 52 12 2.2087 1.699641e+00 -1.348994e+01 -5.317864e+00 # D_CTT + 4115 53 8 2.2087 1.359497e+01 4.573217e+00 -1.635206e+00 # D_CAT + 4116 53 9 2.2087 1.288107e+01 5.472652e+00 -9.459980e-01 # D_CAO + 4117 53 10 2.2087 1.138846e+01 5.273400e+00 -8.273051e-01 # D_CAM + 4118 53 11 2.2087 1.082464e+01 4.263786e+00 -1.499786e+00 # D_CAP + 4119 53 10 2.2087 1.155216e+01 3.351929e+00 -2.397926e+00 # D_CAM + 4120 53 9 2.2087 1.281365e+01 3.556916e+00 -2.473551e+00 # D_CAO + 4121 53 12 2.2087 1.505379e+01 4.729305e+00 -1.799803e+00 # D_CTT + 4122 54 8 2.2087 2.916639e+00 1.239329e+01 1.126229e+01 # D_CAT + 4123 54 9 2.2087 3.356122e+00 1.359375e+01 1.164097e+01 # D_CAO + 4124 54 10 2.2087 2.963292e+00 1.481807e+01 1.103854e+01 # D_CAM + 4125 54 11 2.2087 2.156685e+00 1.467701e+01 1.005131e+01 # D_CAP + 4126 54 10 2.2087 1.652048e+00 1.361165e+01 9.497487e+00 # D_CAM + 4127 54 9 2.2087 2.066797e+00 1.234738e+01 1.009694e+01 # D_CAO + 4128 54 12 2.2087 3.346564e+00 1.100932e+01 1.182263e+01 # D_CTT + 4129 55 8 2.2087 1.513979e+01 -9.063061e+00 -4.942327e+00 # D_CAT + 4130 55 9 2.2087 1.505734e+01 -9.799257e+00 -3.764475e+00 # D_CAO + 4131 55 10 2.2087 1.508302e+01 -1.122240e+01 -3.881155e+00 # D_CAM + 4132 55 11 2.2087 1.520298e+01 -1.186408e+01 -5.033518e+00 # D_CAP + 4133 55 10 2.2087 1.524621e+01 -1.109816e+01 -6.242296e+00 # D_CAM + 4134 55 9 2.2087 1.520103e+01 -9.599517e+00 -6.112546e+00 # D_CAO + 4135 55 12 2.2087 1.503123e+01 -7.544849e+00 -4.857456e+00 # D_CTT + 4136 56 8 2.2087 1.499517e+01 1.363924e+01 -1.352480e+01 # D_CAT + 4137 56 9 2.2087 1.515622e+01 1.359886e+01 -1.218138e+01 # D_CAO + 4138 56 10 2.2087 1.538189e+01 1.237050e+01 -1.155720e+01 # D_CAM + 4139 56 11 2.2087 1.545471e+01 1.120763e+01 -1.231398e+01 # D_CAP + 4140 56 10 2.2087 1.539242e+01 1.131628e+01 -1.365300e+01 # D_CAM + 4141 56 9 2.2087 1.514858e+01 1.252820e+01 -1.429586e+01 # D_CAO + 4142 56 12 2.2087 1.486333e+01 1.508369e+01 -1.422451e+01 # D_CTT + 4143 57 8 2.2087 3.095530e+00 -2.323200e+00 -1.450116e+01 # D_CAT + 4144 57 9 2.2087 2.692549e+00 -3.210509e+00 -1.353097e+01 # D_CAO + 4145 57 10 2.2087 3.691740e+00 -4.281720e+00 -1.314627e+01 # D_CAM + 4146 57 11 2.2087 4.782739e+00 -4.418171e+00 -1.393782e+01 # D_CAP + 4147 57 10 2.2087 5.046726e+00 -3.646709e+00 -1.493532e+01 # D_CAM + 4148 57 9 2.2087 4.201080e+00 -2.539677e+00 -1.521231e+01 # D_CAO + 4149 57 12 2.2087 2.112443e+00 -1.133260e+00 -1.487406e+01 # D_CTT + 4150 58 8 2.2087 -4.639971e+00 -7.178724e+00 2.216173e+00 # D_CAT + 4151 58 9 2.2087 -5.875378e+00 -7.229458e+00 1.708770e+00 # D_CAO + 4152 58 10 2.2087 -6.942194e+00 -6.646190e+00 2.553843e+00 # D_CAM + 4153 58 11 2.2087 -6.627438e+00 -5.986461e+00 3.790262e+00 # D_CAP + 4154 58 10 2.2087 -5.231281e+00 -5.978518e+00 4.266185e+00 # D_CAM + 4155 58 9 2.2087 -4.231166e+00 -6.635888e+00 3.446719e+00 # D_CAO + 4156 58 12 2.2087 -3.574344e+00 -7.815523e+00 1.365428e+00 # D_CTT + 4157 59 8 2.2087 -7.752356e+00 3.592356e+00 1.404240e+01 # D_CAT + 4158 59 9 2.2087 -7.280747e+00 3.549798e+00 1.279345e+01 # D_CAO + 4159 59 10 2.2087 -8.055365e+00 3.694285e+00 1.171225e+01 # D_CAM + 4160 59 11 2.2087 -9.524178e+00 3.827807e+00 1.192695e+01 # D_CAP + 4161 59 10 2.2087 -1.004740e+01 3.906284e+00 1.311091e+01 # D_CAM + 4162 59 9 2.2087 -9.218916e+00 3.729546e+00 1.427072e+01 # D_CAO + 4163 59 12 2.2087 -6.824142e+00 3.389148e+00 1.529356e+01 # D_CTT + 4164 60 8 2.2087 -2.944756e+00 7.565283e+00 -7.392861e+00 # D_CAT + 4165 60 9 2.2087 -2.427755e+00 8.256103e+00 -6.254896e+00 # D_CAO + 4166 60 10 2.2087 -2.764544e+00 9.611059e+00 -6.027954e+00 # D_CAM + 4167 60 11 2.2087 -3.720460e+00 1.008965e+01 -6.931026e+00 # D_CAP + 4168 60 10 2.2087 -4.340577e+00 9.364968e+00 -7.975100e+00 # D_CAM + 4169 60 9 2.2087 -3.904605e+00 8.097832e+00 -8.187831e+00 # D_CAO + 4170 60 12 2.2087 -2.629418e+00 6.063916e+00 -7.652432e+00 # D_CTT + 4171 61 8 2.2087 3.268727e+00 -4.549339e-01 4.667998e+00 # D_CAT + 4172 61 9 2.2087 2.047873e+00 -1.081419e+00 4.753169e+00 # D_CAO + 4173 61 10 2.2087 1.693994e+00 -2.003184e+00 5.669153e+00 # D_CAM + 4174 61 11 2.2087 2.795399e+00 -2.455367e+00 6.567591e+00 # D_CAP + 4175 61 10 2.2087 4.043216e+00 -1.790200e+00 6.429967e+00 # D_CAM + 4176 61 9 2.2087 4.325463e+00 -9.016252e-01 5.516722e+00 # D_CAO + 4177 61 12 2.2087 3.554483e+00 5.010759e-01 3.544953e+00 # D_CTT + 4178 62 8 2.2087 -1.407520e+01 6.919187e+00 1.492392e+01 # D_CAT + 4179 62 9 2.2087 -1.270012e+01 6.918501e+00 1.513551e+01 # D_CAO + 4180 62 10 2.2087 -1.201055e+01 5.782830e+00 1.531154e+01 # D_CAM + 4181 62 11 2.2087 -1.258698e+01 4.623553e+00 1.544320e+01 # D_CAP + 4182 62 10 2.2087 -1.402789e+01 4.481577e+00 1.531933e+01 # D_CAM + 4183 62 9 2.2087 -1.470644e+01 5.692272e+00 1.501052e+01 # D_CAO + 4184 62 12 2.2087 -1.481384e+01 8.232775e+00 1.467277e+01 # D_CTT + 4185 63 8 2.2087 4.466508e+00 1.372995e+01 -2.900754e+00 # D_CAT + 4186 63 9 2.2087 3.295198e+00 1.331756e+01 -2.145562e+00 # D_CAO + 4187 63 10 2.2087 3.552520e+00 1.256607e+01 -9.780755e-01 # D_CAM + 4188 63 11 2.2087 4.922594e+00 1.221742e+01 -6.730771e-01 # D_CAP + 4189 63 10 2.2087 5.971299e+00 1.264226e+01 -1.341831e+00 # D_CAM + 4190 63 9 2.2087 5.780435e+00 1.350403e+01 -2.487310e+00 # D_CAO + 4191 63 12 2.2087 4.230335e+00 1.459675e+01 -4.030969e+00 # D_CTT + 4192 64 8 2.2087 1.295819e+01 1.091325e+01 1.322700e+01 # D_CAT + 4193 64 9 2.2087 1.300992e+01 1.134084e+01 1.463152e+01 # D_CAO + 4194 64 10 2.2087 1.179180e+01 1.165056e+01 1.526987e+01 # D_CAM + 4195 64 11 2.2087 1.057102e+01 1.156940e+01 1.465369e+01 # D_CAP + 4196 64 10 2.2087 1.050198e+01 1.110182e+01 1.334804e+01 # D_CAM + 4197 64 9 2.2087 1.169891e+01 1.076608e+01 1.258354e+01 # D_CAO + 4198 64 12 2.2087 1.419440e+01 1.058607e+01 1.243683e+01 # D_CTT + 4199 65 8 2.2087 8.932841e+00 -5.269969e+00 -5.844738e+00 # D_CAT + 4200 65 9 2.2087 8.647694e+00 -5.726543e+00 -4.665927e+00 # D_CAO + 4201 65 10 2.2087 8.899285e+00 -4.800834e+00 -3.497462e+00 # D_CAM + 4202 65 11 2.2087 9.388375e+00 -3.530489e+00 -3.830826e+00 # D_CAP + 4203 65 10 2.2087 9.621448e+00 -3.009273e+00 -5.065725e+00 # D_CAM + 4204 65 9 2.2087 9.326578e+00 -3.848385e+00 -6.140427e+00 # D_CAO + 4205 65 12 2.2087 8.663478e+00 -6.172930e+00 -7.151427e+00 # D_CTT + 4206 66 8 2.2087 4.232110e+00 1.387587e+01 1.505535e+01 # D_CAT + 4207 66 9 2.2087 3.633782e+00 1.260249e+01 1.513122e+01 # D_CAO + 4208 66 10 2.2087 4.659679e+00 1.144520e+01 1.515944e+01 # D_CAM + 4209 66 11 2.2087 6.048098e+00 1.166352e+01 1.514231e+01 # D_CAP + 4210 66 10 2.2087 6.679406e+00 1.293199e+01 1.508589e+01 # D_CAM + 4211 66 9 2.2087 5.745163e+00 1.400436e+01 1.499702e+01 # D_CAO + 4212 66 12 2.2087 3.272467e+00 1.507011e+01 1.507186e+01 # D_CTT + 4213 67 8 2.2087 -7.524398e+00 1.363409e+01 6.251126e+00 # D_CAT + 4214 67 9 2.2087 -6.212593e+00 1.401576e+01 5.758874e+00 # D_CAO + 4215 67 10 2.2087 -5.542283e+00 1.314840e+01 4.963570e+00 # D_CAM + 4216 67 11 2.2087 -6.222991e+00 1.191188e+01 4.488661e+00 # D_CAP + 4217 67 10 2.2087 -7.426139e+00 1.162827e+01 4.987931e+00 # D_CAM + 4218 67 9 2.2087 -8.139256e+00 1.241451e+01 5.861542e+00 # D_CAO + 4219 67 12 2.2087 -8.335945e+00 1.466878e+01 7.147256e+00 # D_CTT + 4220 68 8 2.2087 1.110112e+01 1.106584e+01 5.914530e+00 # D_CAT + 4221 68 9 2.2087 1.160819e+01 9.874357e+00 5.215997e+00 # D_CAO + 4222 68 10 2.2087 1.215421e+01 8.797617e+00 6.095167e+00 # D_CAM + 4223 68 11 2.2087 1.216355e+01 8.883785e+00 7.456816e+00 # D_CAP + 4224 68 10 2.2087 1.170359e+01 1.000267e+01 8.058614e+00 # D_CAM + 4225 68 9 2.2087 1.125221e+01 1.110873e+01 7.259785e+00 # D_CAO + 4226 68 12 2.2087 1.061634e+01 1.204798e+01 4.977202e+00 # D_CTT + 4227 69 8 2.2087 -5.279401e+00 1.088162e+01 8.384940e-01 # D_CAT + 4228 69 9 2.2087 -5.569727e+00 9.487059e+00 7.838803e-01 # D_CAO + 4229 69 10 2.2087 -6.655430e+00 8.918571e+00 1.488320e+00 # D_CAM + 4230 69 11 2.2087 -7.548754e+00 9.794243e+00 2.085278e+00 # D_CAP + 4231 69 10 2.2087 -7.276531e+00 1.133751e+01 2.009862e+00 # D_CAM + 4232 69 9 2.2087 -6.157622e+00 1.169351e+01 1.375832e+00 # D_CAO + 4233 69 12 2.2087 -3.968394e+00 1.144014e+01 9.485929e-02 # D_CTT + 4234 70 8 2.2087 9.144387e+00 7.208364e+00 1.078652e+01 # D_CAT + 4235 70 9 2.2087 8.546864e+00 7.462639e+00 9.442095e+00 # D_CAO + 4236 70 10 2.2087 7.637504e+00 6.391140e+00 8.999356e+00 # D_CAM + 4237 70 11 2.2087 7.569138e+00 5.134948e+00 9.558846e+00 # D_CAP + 4238 70 10 2.2087 8.335571e+00 4.941288e+00 1.076527e+01 # D_CAM + 4239 70 9 2.2087 9.083868e+00 5.949560e+00 1.144435e+01 # D_CAO + 4240 70 12 2.2087 9.924636e+00 8.298557e+00 1.137499e+01 # D_CTT + 4241 71 8 2.2087 5.288352e-01 -5.325402e+00 1.148594e+00 # D_CAT + 4242 71 9 2.2087 5.913617e-01 -6.593487e+00 5.209645e-01 # D_CAO + 4243 71 10 2.2087 1.496968e+00 -6.606447e+00 -6.030160e-01 # D_CAM + 4244 71 11 2.2087 2.235865e+00 -5.522218e+00 -8.712054e-01 # D_CAP + 4245 71 10 2.2087 2.237566e+00 -4.256036e+00 -1.520478e-01 # D_CAM + 4246 71 9 2.2087 1.326551e+00 -4.277789e+00 9.663041e-01 # D_CAO + 4247 71 12 2.2087 -5.194847e-01 -5.215410e+00 2.437921e+00 # D_CTT + 4248 72 8 2.2087 -1.111411e+01 -6.148325e+00 8.895764e+00 # D_CAT + 4249 72 9 2.2087 -1.059710e+01 -6.049123e+00 1.030310e+01 # D_CAO + 4250 72 10 2.2087 -1.103748e+01 -4.926729e+00 1.099811e+01 # D_CAM + 4251 72 11 2.2087 -1.183746e+01 -3.968209e+00 1.031976e+01 # D_CAP + 4252 72 10 2.2087 -1.209344e+01 -4.008480e+00 8.920625e+00 # D_CAM + 4253 72 9 2.2087 -1.171555e+01 -5.141375e+00 8.210451e+00 # D_CAO + 4254 72 12 2.2087 -1.066374e+01 -7.508040e+00 8.123600e+00 # D_CTT + 4255 73 8 2.2087 -9.142060e+00 -1.170685e+01 4.549897e+00 # D_CAT + 4256 73 9 2.2087 -8.462162e+00 -1.066957e+01 5.402676e+00 # D_CAO + 4257 73 10 2.2087 -7.220938e+00 -1.063004e+01 5.755666e+00 # D_CAM + 4258 73 11 2.2087 -6.344189e+00 -1.171942e+01 5.201067e+00 # D_CAP + 4259 73 10 2.2087 -6.983648e+00 -1.265445e+01 4.435332e+00 # D_CAM + 4260 73 9 2.2087 -8.256619e+00 -1.279580e+01 4.168279e+00 # D_CAO + 4261 73 12 2.2087 -1.058148e+01 -1.142496e+01 4.232227e+00 # D_CTT + 4262 74 8 2.2087 1.155624e+01 -7.664834e+00 -1.489353e+01 # D_CAT + 4263 74 9 2.2087 1.106015e+01 -6.437895e+00 -1.476566e+01 # D_CAO + 4264 74 10 2.2087 1.187967e+01 -5.275675e+00 -1.511215e+01 # D_CAM + 4265 74 11 2.2087 1.319130e+01 -5.472504e+00 -1.544308e+01 # D_CAP + 4266 74 10 2.2087 1.371256e+01 -6.732815e+00 -1.542445e+01 # D_CAM + 4267 74 9 2.2087 1.298060e+01 -7.916311e+00 -1.509905e+01 # D_CAO + 4268 74 12 2.2087 1.060925e+01 -8.865645e+00 -1.456146e+01 # D_CTT + 4269 75 8 2.2087 5.102037e-01 1.622176e+00 -1.399195e+01 # D_CAT + 4270 75 9 2.2087 4.718595e-02 9.062198e-01 -1.278764e+01 # D_CAO + 4271 75 10 2.2087 9.196263e-01 5.409435e-01 -1.186968e+01 # D_CAM + 4272 75 11 2.2087 2.371749e+00 8.248263e-01 -1.216023e+01 # D_CAP + 4273 75 10 2.2087 2.681713e+00 1.318353e+00 -1.335211e+01 # D_CAM + 4274 75 9 2.2087 1.800593e+00 1.807389e+00 -1.432050e+01 # D_CAO + 4275 75 12 2.2087 -6.409934e-01 2.014255e+00 -1.513374e+01 # D_CTT + 4276 76 8 2.2087 -1.445437e+01 -4.590994e+00 9.289676e+00 # D_CAT + 4277 76 9 2.2087 -1.460584e+01 -4.576104e+00 7.867738e+00 # D_CAO + 4278 76 10 2.2087 -1.494067e+01 -3.533663e+00 7.227308e+00 # D_CAM + 4279 76 11 2.2087 -1.517422e+01 -2.306502e+00 7.826354e+00 # D_CAP + 4280 76 10 2.2087 -1.500039e+01 -2.308506e+00 9.350831e+00 # D_CAM + 4281 76 9 2.2087 -1.466855e+01 -3.437038e+00 1.000205e+01 # D_CAO + 4282 76 12 2.2087 -1.411675e+01 -5.855063e+00 1.016002e+01 # D_CTT + 4283 77 8 2.2087 -1.376594e+00 1.286809e+01 -1.506130e+01 # D_CAT + 4284 77 9 2.2087 -2.647178e+00 1.337669e+01 -1.510283e+01 # D_CAO + 4285 77 10 2.2087 -3.802761e+00 1.243402e+01 -1.520939e+01 # D_CAM + 4286 77 11 2.2087 -3.640967e+00 1.102651e+01 -1.514931e+01 # D_CAP + 4287 77 10 2.2087 -2.276753e+00 1.057528e+01 -1.509276e+01 # D_CAM + 4288 77 9 2.2087 -1.229914e+00 1.137149e+01 -1.507980e+01 # D_CAO + 4289 77 12 2.2087 -2.180869e-01 1.376070e+01 -1.505689e+01 # D_CTT + 4290 78 8 2.2087 -1.451447e+01 -1.143524e+01 -1.241044e+00 # D_CAT + 4291 78 9 2.2087 -1.509938e+01 -1.011439e+01 -1.656011e+00 # D_CAO + 4292 78 10 2.2087 -1.511363e+01 -9.148229e+00 -6.146988e-01 # D_CAM + 4293 78 11 2.2087 -1.469988e+01 -9.462885e+00 6.907064e-01 # D_CAP + 4294 78 10 2.2087 -1.408676e+01 -1.079498e+01 1.021652e+00 # D_CAM + 4295 78 9 2.2087 -1.409653e+01 -1.182335e+01 -4.255921e-02 # D_CAO + 4296 78 12 2.2087 -1.444872e+01 -1.248395e+01 -2.412518e+00 # D_CTT + 4297 79 8 2.2087 1.506266e-01 -1.129829e+01 1.270568e+01 # D_CAT + 4298 79 9 2.2087 -8.013469e-01 -1.182204e+01 1.191081e+01 # D_CAO + 4299 79 10 2.2087 -1.560879e+00 -1.096108e+01 1.099951e+01 # D_CAM + 4300 79 11 2.2087 -1.066507e+00 -9.627328e+00 1.096990e+01 # D_CAP + 4301 79 10 2.2087 -1.917936e-01 -9.164697e+00 1.175984e+01 # D_CAM + 4302 79 9 2.2087 4.583412e-01 -1.005184e+01 1.263831e+01 # D_CAO + 4303 79 12 2.2087 8.934034e-01 -1.225468e+01 1.372423e+01 # D_CTT + 4304 80 8 2.2087 -9.559274e+00 1.291032e+01 -8.739875e+00 # D_CAT + 4305 80 9 2.2087 -8.349778e+00 1.277718e+01 -8.122281e+00 # D_CAO + 4306 80 10 2.2087 -7.240120e+00 1.207677e+01 -8.637668e+00 # D_CAM + 4307 80 11 2.2087 -7.440329e+00 1.154283e+01 -9.971075e+00 # D_CAP + 4308 80 10 2.2087 -8.501653e+00 1.166495e+01 -1.067505e+01 # D_CAM + 4309 80 9 2.2087 -9.675474e+00 1.237032e+01 -1.004842e+01 # D_CAO + 4310 80 12 2.2087 -1.073612e+01 1.356498e+01 -8.121812e+00 # D_CTT + 4311 81 8 2.2087 -1.075893e+01 1.385169e+01 1.011522e+01 # D_CAT + 4312 81 9 2.2087 -1.013962e+01 1.296713e+01 1.114153e+01 # D_CAO + 4313 81 10 2.2087 -1.074237e+01 1.166439e+01 1.120746e+01 # D_CAM + 4314 81 11 2.2087 -1.172662e+01 1.132054e+01 1.017270e+01 # D_CAP + 4315 81 10 2.2087 -1.205078e+01 1.217558e+01 9.167670e+00 # D_CAM + 4316 81 9 2.2087 -1.156507e+01 1.345388e+01 9.186553e+00 # D_CAO + 4317 81 12 2.2087 -1.018432e+01 1.527120e+01 1.006299e+01 # D_CTT + 4318 82 8 2.2087 -9.946386e+00 -3.825859e+00 2.487489e-01 # D_CAT + 4319 82 9 2.2087 -1.047169e+01 -2.419262e+00 1.898465e-01 # D_CAO + 4320 82 10 2.2087 -1.046303e+01 -1.738574e+00 -8.243700e-01 # D_CAM + 4321 82 11 2.2087 -9.724921e+00 -2.090417e+00 -2.035189e+00 # D_CAP + 4322 82 10 2.2087 -8.918100e+00 -3.369140e+00 -1.956527e+00 # D_CAM + 4323 82 9 2.2087 -9.070489e+00 -4.186247e+00 -8.909172e-01 # D_CAO + 4324 82 12 2.2087 -1.012687e+01 -4.724811e+00 1.360842e+00 # D_CTT + 4325 83 8 2.2087 -1.096803e+01 -9.358837e+00 -3.982528e+00 # D_CAT + 4326 83 9 2.2087 -9.801605e+00 -8.666708e+00 -3.742843e+00 # D_CAO + 4327 83 10 2.2087 -9.754794e+00 -7.763632e+00 -2.639220e+00 # D_CAM + 4328 83 11 2.2087 -1.091224e+01 -7.668721e+00 -1.795919e+00 # D_CAP + 4329 83 10 2.2087 -1.198930e+01 -8.479043e+00 -2.044204e+00 # D_CAM + 4330 83 9 2.2087 -1.198028e+01 -9.272261e+00 -3.175978e+00 # D_CAO + 4331 83 12 2.2087 -1.078230e+01 -1.023164e+01 -5.274908e+00 # D_CTT + 4332 84 8 2.2087 -1.452766e+01 1.404750e+01 8.660443e+00 # D_CAT + 4333 84 9 2.2087 -1.508037e+01 1.265830e+01 8.484259e+00 # D_CAO + 4334 84 10 2.2087 -1.497955e+01 1.165839e+01 9.520709e+00 # D_CAM + 4335 84 11 2.2087 -1.447013e+01 1.198283e+01 1.074597e+01 # D_CAP + 4336 84 10 2.2087 -1.382461e+01 1.324630e+01 1.098076e+01 # D_CAM + 4337 84 9 2.2087 -1.398451e+01 1.417712e+01 9.901025e+00 # D_CAO + 4338 84 12 2.2087 -1.471298e+01 1.499484e+01 7.617356e+00 # D_CTT + 4339 85 8 2.2087 -4.324693e+00 -1.495346e+01 1.001930e+01 # D_CAT + 4340 85 9 2.2087 -4.976001e+00 -1.508962e+01 1.119694e+01 # D_CAO + 4341 85 10 2.2087 -6.480788e+00 -1.510184e+01 1.103849e+01 # D_CAM + 4342 85 11 2.2087 -7.069537e+00 -1.513534e+01 9.762031e+00 # D_CAP + 4343 85 10 2.2087 -6.332980e+00 -1.513148e+01 8.617031e+00 # D_CAM + 4344 85 9 2.2087 -4.980143e+00 -1.496533e+01 8.727339e+00 # D_CAO + 4345 85 12 2.2087 -2.737092e+00 -1.493520e+01 1.009574e+01 # D_CTT + 4346 86 8 2.2087 -7.720608e+00 8.215834e+00 1.384557e+01 # D_CAT + 4347 86 9 2.2087 -7.960323e+00 8.990969e+00 1.502719e+01 # D_CAO + 4348 86 10 2.2087 -8.137470e+00 1.024519e+01 1.495323e+01 # D_CAM + 4349 86 11 2.2087 -8.204574e+00 1.096194e+01 1.368213e+01 # D_CAP + 4350 86 10 2.2087 -8.075871e+00 1.023989e+01 1.263619e+01 # D_CAM + 4351 86 9 2.2087 -7.884071e+00 8.841839e+00 1.269004e+01 # D_CAO + 4352 86 12 2.2087 -7.509104e+00 6.732247e+00 1.395357e+01 # D_CTT + 4353 87 8 2.2087 -5.665335e+00 -1.459034e+00 -1.311373e+01 # D_CAT + 4354 87 9 2.2087 -4.514214e+00 -1.961608e+00 -1.232224e+01 # D_CAO + 4355 87 10 2.2087 -3.201673e+00 -1.512472e+00 -1.287599e+01 # D_CAM + 4356 87 11 2.2087 -3.072328e+00 -7.029978e-01 -1.399833e+01 # D_CAP + 4357 87 10 2.2087 -4.364208e+00 -2.735310e-01 -1.473620e+01 # D_CAM + 4358 87 9 2.2087 -5.645748e+00 -6.725096e-01 -1.426725e+01 # D_CAO + 4359 87 12 2.2087 -6.972179e+00 -1.891864e+00 -1.241040e+01 # D_CTT + 4360 88 8 2.2087 -1.742823e+00 -9.889126e+00 -1.436830e+01 # D_CAT + 4361 88 9 2.2087 -2.326604e+00 -1.127075e+01 -1.437567e+01 # D_CAO + 4362 88 10 2.2087 -1.727006e+00 -1.234595e+01 -1.397656e+01 # D_CAM + 4363 88 11 2.2087 -4.520616e-01 -1.229808e+01 -1.304817e+01 # D_CAP + 4364 88 10 2.2087 1.304583e-01 -1.106727e+01 -1.280472e+01 # D_CAM + 4365 88 9 2.2087 -6.174149e-01 -9.919161e+00 -1.342399e+01 # D_CAO + 4366 88 12 2.2087 -2.408511e+00 -8.850806e+00 -1.488601e+01 # D_CTT + 4367 89 8 2.2087 -1.213770e+01 -1.087996e+01 1.501959e+01 # D_CAT + 4368 89 9 2.2087 -1.177560e+01 -9.518570e+00 1.513343e+01 # D_CAO + 4369 89 10 2.2087 -1.274976e+01 -8.613998e+00 1.506005e+01 # D_CAM + 4370 89 11 2.2087 -1.415279e+01 -8.835180e+00 1.497389e+01 # D_CAP + 4371 89 10 2.2087 -1.446866e+01 -1.030328e+01 1.511991e+01 # D_CAM + 4372 89 9 2.2087 -1.347736e+01 -1.123813e+01 1.508116e+01 # D_CAO + 4373 89 12 2.2087 -1.111939e+01 -1.194312e+01 1.505397e+01 # D_CTT + 4374 90 8 2.2087 1.876593e+00 -7.281444e+00 -1.396436e+01 # D_CAT + 4375 90 9 2.2087 1.815492e+00 -6.875037e+00 -1.240796e+01 # D_CAO + 4376 90 10 2.2087 1.067377e+00 -5.888492e+00 -1.203806e+01 # D_CAM + 4377 90 11 2.2087 3.135120e-01 -5.117979e+00 -1.297065e+01 # D_CAP + 4378 90 10 2.2087 3.139255e-01 -5.418746e+00 -1.432915e+01 # D_CAM + 4379 90 9 2.2087 1.050526e+00 -6.525934e+00 -1.470457e+01 # D_CAO + 4380 90 12 2.2087 2.659240e+00 -8.463498e+00 -1.435888e+01 # D_CTT + 4381 91 8 2.2087 -5.671039e+00 1.124634e+01 -4.041408e+00 # D_CAT + 4382 91 9 2.2087 -5.015115e+00 9.991413e+00 -4.140459e+00 # D_CAO + 4383 91 10 2.2087 -5.325183e+00 9.138689e+00 -5.198136e+00 # D_CAM + 4384 91 11 2.2087 -6.354861e+00 9.389137e+00 -5.972210e+00 # D_CAP + 4385 91 10 2.2087 -7.053706e+00 1.055199e+01 -5.997833e+00 # D_CAM + 4386 91 9 2.2087 -6.725311e+00 1.154215e+01 -4.886000e+00 # D_CAO + 4387 91 12 2.2087 -5.289853e+00 1.223942e+01 -3.018622e+00 # D_CTT + 4388 92 8 2.2087 1.434156e+01 -1.519087e+01 -4.943129e+00 # D_CAT + 4389 92 9 2.2087 1.294968e+01 -1.518227e+01 -5.249149e+00 # D_CAO + 4390 92 10 2.2087 1.260384e+01 -1.506931e+01 -6.564804e+00 # D_CAM + 4391 92 11 2.2087 1.349549e+01 -1.514933e+01 -7.693584e+00 # D_CAP + 4392 92 10 2.2087 1.484056e+01 -1.508400e+01 -7.330506e+00 # D_CAM + 4393 92 9 2.2087 1.530728e+01 -1.527068e+01 -6.093679e+00 # D_CAO + 4394 92 12 2.2087 1.486798e+01 -1.528305e+01 -3.610711e+00 # D_CTT + 4395 93 8 2.2087 -1.234038e+01 -9.598420e+00 1.181049e+01 # D_CAT + 4396 93 9 2.2087 -1.345114e+01 -1.037693e+01 1.138697e+01 # D_CAO + 4397 93 10 2.2087 -1.477544e+01 -9.934430e+00 1.167220e+01 # D_CAM + 4398 93 11 2.2087 -1.488494e+01 -8.667650e+00 1.222440e+01 # D_CAP + 4399 93 10 2.2087 -1.383395e+01 -7.939890e+00 1.267957e+01 # D_CAM + 4400 93 9 2.2087 -1.253096e+01 -8.289048e+00 1.220134e+01 # D_CAO + 4401 93 12 2.2087 -1.106482e+01 -1.005946e+01 1.125308e+01 # D_CTT + 4402 94 8 2.2087 1.306728e+01 -1.381385e+01 2.949192e+00 # D_CAT + 4403 94 9 2.2087 1.209140e+01 -1.287335e+01 3.237587e+00 # D_CAO + 4404 94 10 2.2087 1.075854e+01 -1.319432e+01 2.850118e+00 # D_CAM + 4405 94 11 2.2087 1.057916e+01 -1.431306e+01 2.016343e+00 # D_CAP + 4406 94 10 2.2087 1.153768e+01 -1.526854e+01 1.697026e+00 # D_CAM + 4407 94 9 2.2087 1.288535e+01 -1.486545e+01 2.167619e+00 # D_CAO + 4408 94 12 2.2087 1.462922e+01 -1.350469e+01 3.470942e+00 # D_CTT + 4409 95 8 2.2087 6.143900e+00 -1.164755e+01 -1.508897e+01 # D_CAT + 4410 95 9 2.2087 7.415621e+00 -1.143542e+01 -1.510229e+01 # D_CAO + 4411 95 10 2.2087 8.338716e+00 -1.260378e+01 -1.517862e+01 # D_CAM + 4412 95 11 2.2087 7.698660e+00 -1.380530e+01 -1.509331e+01 # D_CAP + 4413 95 10 2.2087 6.319772e+00 -1.399237e+01 -1.509144e+01 # D_CAM + 4414 95 9 2.2087 5.637999e+00 -1.281561e+01 -1.508196e+01 # D_CAO + 4415 95 12 2.2087 5.229457e+00 -1.027779e+01 -1.509445e+01 # D_CTT + 4416 96 8 2.2087 7.975188e+00 -6.084054e+00 6.017217e+00 # D_CAT + 4417 96 9 2.2087 7.995353e+00 -4.793237e+00 6.840993e+00 # D_CAO + 4418 96 10 2.2087 7.229047e+00 -3.771458e+00 6.458249e+00 # D_CAM + 4419 96 11 2.2087 6.447554e+00 -3.872727e+00 5.383162e+00 # D_CAP + 4420 96 10 2.2087 6.264213e+00 -5.146865e+00 4.530466e+00 # D_CAM + 4421 96 9 2.2087 7.047955e+00 -6.158491e+00 5.016303e+00 # D_CAO + 4422 96 12 2.2087 8.900173e+00 -7.148359e+00 6.426046e+00 # D_CTT + 4423 97 8 2.2087 1.157373e+01 -1.138033e+01 -4.461851e+00 # D_CAT + 4424 97 9 2.2087 1.167655e+01 -1.190880e+01 -5.721868e+00 # D_CAO + 4425 97 10 2.2087 1.107480e+01 -1.090830e+01 -6.700941e+00 # D_CAM + 4426 97 11 2.2087 1.045716e+01 -9.855508e+00 -6.454235e+00 # D_CAP + 4427 97 10 2.2087 1.051673e+01 -9.325578e+00 -5.066737e+00 # D_CAM + 4428 97 9 2.2087 1.109400e+01 -1.021453e+01 -4.157224e+00 # D_CAO + 4429 97 12 2.2087 1.217016e+01 -1.230798e+01 -3.327524e+00 # D_CTT + 4430 98 8 2.2087 1.094061e+01 -1.041293e+01 7.869164e+00 # D_CAT + 4431 98 9 2.2087 9.687267e+00 -1.086261e+01 7.233555e+00 # D_CAO + 4432 98 10 2.2087 9.818990e+00 -1.192215e+01 6.286321e+00 # D_CAM + 4433 98 11 2.2087 1.081702e+01 -1.261232e+01 6.028335e+00 # D_CAP + 4434 98 10 2.2087 1.223012e+01 -1.211120e+01 6.695482e+00 # D_CAM + 4435 98 9 2.2087 1.217343e+01 -1.112364e+01 7.593275e+00 # D_CAO + 4436 98 12 2.2087 1.100254e+01 -9.203311e+00 8.781820e+00 # D_CTT + 4437 99 8 2.2087 5.933417e+00 -1.269599e+01 -5.676694e+00 # D_CAT + 4438 99 9 2.2087 6.080468e+00 -1.219749e+01 -6.775340e+00 # D_CAO + 4439 99 10 2.2087 5.871271e+00 -1.074224e+01 -6.979322e+00 # D_CAM + 4440 99 11 2.2087 5.472799e+00 -9.927811e+00 -5.719824e+00 # D_CAP + 4441 99 10 2.2087 5.177450e+00 -1.067467e+01 -4.537848e+00 # D_CAM + 4442 99 9 2.2087 5.459003e+00 -1.212796e+01 -4.442623e+00 # D_CAO + 4443 99 12 2.2087 6.136126e+00 -1.426327e+01 -5.491184e+00 # D_CTT + 4444 100 8 2.2087 6.381943e-01 7.345014e+00 2.909981e-01 # D_CAT + 4445 100 9 2.2087 -6.410937e-01 6.709273e+00 4.256883e-01 # D_CAO + 4446 100 10 2.2087 -6.657454e-01 5.578416e+00 1.450323e+00 # D_CAM + 4447 100 11 2.2087 3.787367e-01 5.312596e+00 2.283217e+00 # D_CAP + 4448 100 10 2.2087 1.465208e+00 6.029458e+00 2.002590e+00 # D_CAM + 4449 100 9 2.2087 1.690080e+00 7.164882e+00 1.131123e+00 # D_CAO + 4450 100 12 2.2087 6.601853e-01 8.381092e+00 -7.064650e-01 # D_CTT + 4451 101 8 2.2087 3.672908e+00 9.341090e+00 -1.049933e+01 # D_CAT + 4452 101 9 2.2087 3.072565e+00 9.082475e+00 -1.178760e+01 # D_CAO + 4453 101 10 2.2087 2.967267e+00 7.600860e+00 -1.217579e+01 # D_CAM + 4454 101 11 2.2087 3.674791e+00 6.691368e+00 -1.124409e+01 # D_CAP + 4455 101 10 2.2087 4.357989e+00 7.031806e+00 -1.019329e+01 # D_CAM + 4456 101 9 2.2087 4.407098e+00 8.332612e+00 -9.799597e+00 # D_CAO + 4457 101 12 2.2087 3.747937e+00 1.080992e+01 -1.001127e+01 # D_CTT + 4458 102 8 2.2087 5.793451e+00 1.804479e+00 -1.151277e+01 # D_CAT + 4459 102 9 2.2087 6.741218e+00 1.190382e+00 -1.216190e+01 # D_CAO + 4460 102 10 2.2087 7.168032e+00 -2.714107e-01 -1.194035e+01 # D_CAM + 4461 102 11 2.2087 6.602184e+00 -8.377656e-01 -1.070788e+01 # D_CAP + 4462 102 10 2.2087 5.626549e+00 -1.142412e-01 -9.938505e+00 # D_CAM + 4463 102 9 2.2087 5.230460e+00 1.111896e+00 -1.042719e+01 # D_CAO + 4464 102 12 2.2087 5.393244e+00 3.074686e+00 -1.190535e+01 # D_CTT + 4465 103 8 2.2087 1.444265e+01 -6.072795e+00 1.163696e+01 # D_CAT + 4466 103 9 2.2087 1.405105e+01 -7.141898e+00 1.252115e+01 # D_CAO + 4467 103 10 2.2087 1.447536e+01 -6.930945e+00 1.390439e+01 # D_CAM + 4468 103 11 2.2087 1.511890e+01 -5.710398e+00 1.437437e+01 # D_CAP + 4469 103 10 2.2087 1.537026e+01 -4.649941e+00 1.336543e+01 # D_CAM + 4470 103 9 2.2087 1.504352e+01 -4.969080e+00 1.205788e+01 # D_CAO + 4471 103 12 2.2087 1.409713e+01 -6.226805e+00 1.025537e+01 # D_CTT + 4472 104 8 2.2087 -2.473098e+00 1.409213e+01 1.410772e+01 # D_CAT + 4473 104 9 2.2087 -1.159888e+00 1.435044e+01 1.453998e+01 # D_CAO + 4474 104 10 2.2087 -9.405950e-02 1.400461e+01 1.350283e+01 # D_CAM + 4475 104 11 2.2087 -3.712319e-01 1.325430e+01 1.233983e+01 # D_CAP + 4476 104 10 2.2087 -1.704019e+00 1.283277e+01 1.209324e+01 # D_CAM + 4477 104 9 2.2087 -2.832230e+00 1.325048e+01 1.306035e+01 # D_CAO + 4478 104 12 2.2087 -3.546119e+00 1.445362e+01 1.524727e+01 # D_CTT + 4479 105 8 2.2087 -1.341667e+01 9.621813e-01 7.959273e+00 # D_CAT + 4480 105 9 2.2087 -1.274925e+01 -2.188973e-01 7.627819e+00 # D_CAO + 4481 105 10 2.2087 -1.328301e+01 -8.808230e-01 6.305245e+00 # D_CAM + 4482 105 11 2.2087 -1.423989e+01 -2.112845e-01 5.589500e+00 # D_CAP + 4483 105 10 2.2087 -1.479597e+01 1.156978e+00 6.088747e+00 # D_CAM + 4484 105 9 2.2087 -1.431277e+01 1.595188e+00 7.252252e+00 # D_CAO + 4485 105 12 2.2087 -1.287127e+01 1.597234e+00 9.273751e+00 # D_CTT + 4486 106 8 2.2087 -1.089910e+01 -1.505941e+01 -2.194359e+00 # D_CAT + 4487 106 9 2.2087 -9.549635e+00 -1.536556e+01 -2.212174e+00 # D_CAO + 4488 106 10 2.2087 -8.708293e+00 -1.538514e+01 -1.185993e+00 # D_CAM + 4489 106 11 2.2087 -9.328061e+00 -1.531380e+01 1.303998e-01 # D_CAP + 4490 106 10 2.2087 -1.080574e+01 -1.514078e+01 2.003949e-01 # D_CAM + 4491 106 9 2.2087 -1.150721e+01 -1.502524e+01 -9.341929e-01 # D_CAO + 4492 106 12 2.2087 -1.169292e+01 -1.499414e+01 -3.401149e+00 # D_CTT + 4493 107 8 2.2087 1.487248e+01 -8.633459e+00 3.789133e+00 # D_CAT + 4494 107 9 2.2087 1.447192e+01 -9.613452e+00 2.908679e+00 # D_CAO + 4495 107 10 2.2087 1.466720e+01 -9.357767e+00 1.509384e+00 # D_CAM + 4496 107 11 2.2087 1.513904e+01 -8.167698e+00 1.146399e+00 # D_CAP + 4497 107 10 2.2087 1.555008e+01 -7.124560e+00 2.149379e+00 # D_CAM + 4498 107 9 2.2087 1.525809e+01 -7.471081e+00 3.390970e+00 # D_CAO + 4499 107 12 2.2087 1.470026e+01 -8.950552e+00 5.295909e+00 # D_CTT + 4500 108 8 2.2087 7.108909e+00 -1.149067e+00 1.435667e+01 # D_CAT + 4501 108 9 2.2087 5.799517e+00 -8.222683e-01 1.374515e+01 # D_CAO + 4502 108 10 2.2087 5.427741e+00 4.807344e-01 1.380221e+01 # D_CAM + 4503 108 11 2.2087 6.146022e+00 1.441102e+00 1.441086e+01 # D_CAP + 4504 108 10 2.2087 7.403457e+00 1.153399e+00 1.498786e+01 # D_CAM + 4505 108 9 2.2087 7.751264e+00 -2.799801e-01 1.495968e+01 # D_CAO + 4506 108 12 2.2087 7.567885e+00 -2.591973e+00 1.422282e+01 # D_CTT + 4507 109 8 2.2087 -5.035773e+00 -8.676369e+00 -5.201293e+00 # D_CAT + 4508 109 9 2.2087 -5.436960e+00 -9.487131e+00 -6.127424e+00 # D_CAO + 4509 109 10 2.2087 -4.718719e+00 -9.633905e+00 -7.396903e+00 # D_CAM + 4510 109 11 2.2087 -3.589209e+00 -8.946432e+00 -7.562025e+00 # D_CAP + 4511 109 10 2.2087 -3.177317e+00 -8.004219e+00 -6.525846e+00 # D_CAM + 4512 109 9 2.2087 -3.924691e+00 -7.899596e+00 -5.295592e+00 # D_CAO + 4513 109 12 2.2087 -5.869374e+00 -8.593666e+00 -3.872276e+00 # D_CTT + 4514 110 8 2.2087 7.251410e-01 -1.310138e+01 9.947292e+00 # D_CAT + 4515 110 9 2.2087 -9.364451e-02 -1.245610e+01 9.135524e+00 # D_CAO + 4516 110 10 2.2087 1.515286e-01 -1.097863e+01 8.983142e+00 # D_CAM + 4517 110 11 2.2087 1.047190e+00 -1.034649e+01 9.756100e+00 # D_CAP + 4518 110 10 2.2087 1.931373e+00 -1.117169e+01 1.052269e+01 # D_CAM + 4519 110 9 2.2087 1.806766e+00 -1.253585e+01 1.073750e+01 # D_CAO + 4520 110 12 2.2087 6.099006e-01 -1.470011e+01 1.009658e+01 # D_CTT + 4521 111 8 2.2087 -1.284529e+01 -8.632408e-01 -9.126159e+00 # D_CAT + 4522 111 9 2.2087 -1.282976e+01 -3.940715e-01 -7.655599e+00 # D_CAO + 4523 111 10 2.2087 -1.343218e+01 -1.053449e+00 -6.593966e+00 # D_CAM + 4524 111 11 2.2087 -1.398299e+01 -2.273113e+00 -6.940106e+00 # D_CAP + 4525 111 10 2.2087 -1.414241e+01 -2.759316e+00 -8.129482e+00 # D_CAM + 4526 111 9 2.2087 -1.358409e+01 -2.104318e+00 -9.225051e+00 # D_CAO + 4527 111 12 2.2087 -1.226003e+01 -7.148180e-02 -1.015654e+01 # D_CTT + 4528 112 8 2.2087 3.671742e+00 -1.295690e+01 1.854950e+00 # D_CAT + 4529 112 9 2.2087 3.008889e+00 -1.261387e+01 5.883441e-01 # D_CAO + 4530 112 10 2.2087 3.873634e+00 -1.221880e+01 -5.303230e-01 # D_CAM + 4531 112 11 2.2087 5.204925e+00 -1.218862e+01 -3.170346e-01 # D_CAP + 4532 112 10 2.2087 5.857588e+00 -1.261322e+01 9.478072e-01 # D_CAM + 4533 112 9 2.2087 5.151723e+00 -1.277773e+01 2.010295e+00 # D_CAO + 4534 112 12 2.2087 2.849771e+00 -1.331113e+01 3.054461e+00 # D_CTT + 4535 113 8 2.2087 2.634569e+00 -3.758960e+00 1.057964e+01 # D_CAT + 4536 113 9 2.2087 3.405764e+00 -2.591148e+00 1.042444e+01 # D_CAO + 4537 113 10 2.2087 3.151387e+00 -1.463799e+00 1.121714e+01 # D_CAM + 4538 113 11 2.2087 2.163939e+00 -1.513094e+00 1.220202e+01 # D_CAP + 4539 113 10 2.2087 1.574405e+00 -2.695255e+00 1.250744e+01 # D_CAM + 4540 113 9 2.2087 1.797725e+00 -3.941384e+00 1.165873e+01 # D_CAO + 4541 113 12 2.2087 2.949546e+00 -4.936013e+00 9.828874e+00 # D_CTT + 4542 114 8 2.2087 1.486580e+01 7.762054e+00 -6.878052e+00 # D_CAT + 4543 114 9 2.2087 1.481462e+01 9.009460e+00 -7.537481e+00 # D_CAO + 4544 114 10 2.2087 1.497335e+01 9.119850e+00 -8.915794e+00 # D_CAM + 4545 114 11 2.2087 1.512341e+01 7.878461e+00 -9.636201e+00 # D_CAP + 4546 114 10 2.2087 1.509160e+01 6.733595e+00 -9.067900e+00 # D_CAM + 4547 114 9 2.2087 1.489641e+01 6.662272e+00 -7.665194e+00 # D_CAO + 4548 114 12 2.2087 1.472604e+01 7.596990e+00 -5.399200e+00 # D_CTT + 4549 115 8 2.2087 8.865594e+00 3.311298e-01 8.697532e+00 # D_CAT + 4550 115 9 2.2087 9.405823e+00 -8.725399e-01 8.920947e+00 # D_CAO + 4551 115 10 2.2087 1.042555e+01 -1.178576e+00 9.953076e+00 # D_CAM + 4552 115 11 2.2087 1.091833e+01 3.868139e-03 1.074107e+01 # D_CAP + 4553 115 10 2.2087 1.037595e+01 1.291714e+00 1.051774e+01 # D_CAM + 4554 115 9 2.2087 9.449439e+00 1.405843e+00 9.487594e+00 # D_CAO + 4555 115 12 2.2087 7.912800e+00 6.181091e-01 7.691531e+00 # D_CTT + 4556 116 8 2.2087 -8.718443e+00 2.606268e+00 4.510749e+00 # D_CAT + 4557 116 9 2.2087 -9.746131e+00 3.577796e+00 4.443714e+00 # D_CAO + 4558 116 10 2.2087 -1.114356e+01 3.159310e+00 4.657946e+00 # D_CAM + 4559 116 11 2.2087 -1.141046e+01 1.853080e+00 4.878253e+00 # D_CAP + 4560 116 10 2.2087 -1.042736e+01 9.423004e-01 4.840130e+00 # D_CAM + 4561 116 9 2.2087 -9.151802e+00 1.285890e+00 4.801135e+00 # D_CAO + 4562 116 12 2.2087 -7.390754e+00 3.090414e+00 4.382105e+00 # D_CTT + 4563 117 8 2.2087 9.849334e+00 7.534938e+00 3.796648e+00 # D_CAT + 4564 117 9 2.2087 1.036847e+01 6.402461e+00 4.476906e+00 # D_CAO + 4565 117 10 2.2087 1.056497e+01 6.424129e+00 5.805236e+00 # D_CAM + 4566 117 11 2.2087 1.000908e+01 7.433135e+00 6.573590e+00 # D_CAP + 4567 117 10 2.2087 9.587811e+00 8.629861e+00 5.980570e+00 # D_CAM + 4568 117 9 2.2087 9.352046e+00 8.615617e+00 4.552561e+00 # D_CAO + 4569 117 12 2.2087 9.688381e+00 7.506019e+00 2.313775e+00 # D_CTT + 4570 118 8 2.2087 -1.443102e+01 3.246090e+00 1.798281e+00 # D_CAT + 4571 118 9 2.2087 -1.530617e+01 4.451331e+00 1.431326e+00 # D_CAO + 4572 118 10 2.2087 -1.470637e+01 5.583102e+00 1.324702e+00 # D_CAM + 4573 118 11 2.2087 -1.328500e+01 5.786983e+00 1.675799e+00 # D_CAP + 4574 118 10 2.2087 -1.246017e+01 4.687568e+00 2.039976e+00 # D_CAM + 4575 118 9 2.2087 -1.309744e+01 3.366291e+00 2.179668e+00 # D_CAO + 4576 118 12 2.2087 -1.497653e+01 1.821311e+00 2.013648e+00 # D_CTT + 4577 119 8 2.2087 -1.110830e+01 -1.424299e+01 6.720171e+00 # D_CAT + 4578 119 9 2.2087 -1.190191e+01 -1.438868e+01 5.665004e+00 # D_CAO + 4579 119 10 2.2087 -1.144705e+01 -1.482113e+01 4.491411e+00 # D_CAM + 4580 119 11 2.2087 -1.021378e+01 -1.528059e+01 4.321840e+00 # D_CAP + 4581 119 10 2.2087 -9.203826e+00 -1.519740e+01 5.615545e+00 # D_CAM + 4582 119 9 2.2087 -9.891110e+00 -1.465405e+01 6.654881e+00 # D_CAO + 4583 119 12 2.2087 -1.169314e+01 -1.374293e+01 7.998694e+00 # D_CTT + 4584 120 8 2.2087 1.836862e+00 2.859113e+00 6.962165e+00 # D_CAT + 4585 120 9 2.2087 1.301733e+00 3.868785e+00 7.820886e+00 # D_CAO + 4586 120 10 2.2087 2.859575e-01 3.529678e+00 8.626364e+00 # D_CAM + 4587 120 11 2.2087 -3.210950e-01 2.304372e+00 8.553599e+00 # D_CAP + 4588 120 10 2.2087 2.196124e-01 1.352953e+00 7.785201e+00 # D_CAM + 4589 120 9 2.2087 1.398543e+00 1.562171e+00 7.111769e+00 # D_CAO + 4590 120 12 2.2087 3.150945e+00 3.133021e+00 6.117003e+00 # D_CTT + 4591 121 8 2.2087 -2.822830e+00 -5.138908e+00 -1.784139e+00 # D_CAT + 4592 121 9 2.2087 -2.750872e+00 -4.376967e+00 -2.918361e+00 # D_CAO + 4593 121 10 2.2087 -3.306669e+00 -3.026669e+00 -2.844646e+00 # D_CAM + 4594 121 11 2.2087 -3.679335e+00 -2.589766e+00 -1.562625e+00 # D_CAP + 4595 121 10 2.2087 -3.811829e+00 -3.393866e+00 -5.225712e-01 # D_CAM + 4596 121 9 2.2087 -3.185574e+00 -4.650055e+00 -5.507353e-01 # D_CAO + 4597 121 12 2.2087 -2.189086e+00 -6.615741e+00 -1.785780e+00 # D_CTT + 4598 122 8 2.2087 1.357191e+01 2.694519e+00 -7.918814e+00 # D_CAT + 4599 122 9 2.2087 1.276696e+01 3.401714e+00 -7.002048e+00 # D_CAO + 4600 122 10 2.2087 1.131267e+01 3.313587e+00 -7.054761e+00 # D_CAM + 4601 122 11 2.2087 1.074454e+01 2.520629e+00 -8.018733e+00 # D_CAP + 4602 122 10 2.2087 1.144463e+01 1.747826e+00 -8.846745e+00 # D_CAM + 4603 122 9 2.2087 1.289860e+01 1.945721e+00 -8.912330e+00 # D_CAO + 4604 122 12 2.2087 1.508227e+01 2.789343e+00 -7.804868e+00 # D_CTT + 4605 123 8 2.2087 3.784709e+00 7.804717e+00 -4.701779e+00 # D_CAT + 4606 123 9 2.2087 2.556760e+00 7.460919e+00 -4.041001e+00 # D_CAO + 4607 123 10 2.2087 1.441274e+00 7.747551e+00 -4.733772e+00 # D_CAM + 4608 123 11 2.2087 1.272299e+00 8.370205e+00 -6.021070e+00 # D_CAP + 4609 123 10 2.2087 2.685029e+00 8.772156e+00 -6.596105e+00 # D_CAM + 4610 123 9 2.2087 3.806196e+00 8.417628e+00 -5.819117e+00 # D_CAO + 4611 123 12 2.2087 5.123477e+00 7.555903e+00 -3.942407e+00 # D_CTT + 4612 124 8 2.2087 8.034861e+00 6.367825e+00 -1.306581e+01 # D_CAT + 4613 124 9 2.2087 6.705429e+00 6.687047e+00 -1.296611e+01 # D_CAO + 4614 124 10 2.2087 6.287629e+00 8.023259e+00 -1.302539e+01 # D_CAM + 4615 124 11 2.2087 7.330229e+00 9.076196e+00 -1.314635e+01 # D_CAP + 4616 124 10 2.2087 8.558697e+00 8.705747e+00 -1.322607e+01 # D_CAM + 4617 124 9 2.2087 9.031726e+00 7.272258e+00 -1.331223e+01 # D_CAO + 4618 124 12 2.2087 8.557703e+00 4.876338e+00 -1.301600e+01 # D_CTT + 4619 125 8 2.2087 -2.553250e+00 9.810311e+00 8.408797e+00 # D_CAT + 4620 125 9 2.2087 -1.446734e+00 1.055168e+01 8.346345e+00 # D_CAO + 4621 125 10 2.2087 -4.806220e-01 1.029770e+01 7.404267e+00 # D_CAM + 4622 125 11 2.2087 -6.267014e-01 9.267484e+00 6.519317e+00 # D_CAP + 4623 125 10 2.2087 -1.716988e+00 8.455129e+00 6.698565e+00 # D_CAM + 4624 125 9 2.2087 -2.659789e+00 8.784481e+00 7.554922e+00 # D_CAO + 4625 125 12 2.2087 -3.561254e+00 1.007752e+01 9.471640e+00 # D_CTT + 4626 126 8 2.2087 1.448194e+01 3.011002e+00 2.435980e+00 # D_CAT + 4627 126 9 2.2087 1.506976e+01 3.362920e+00 3.690291e+00 # D_CAO + 4628 126 10 2.2087 1.453057e+01 4.541851e+00 4.214367e+00 # D_CAM + 4629 126 11 2.2087 1.359575e+01 5.178292e+00 3.475571e+00 # D_CAP + 4630 126 10 2.2087 1.304736e+01 4.829296e+00 2.298273e+00 # D_CAM + 4631 126 9 2.2087 1.353868e+01 3.579671e+00 1.787813e+00 # D_CAO + 4632 126 12 2.2087 1.496008e+01 1.510294e+00 1.865008e+00 # D_CTT + 4633 127 8 2.2087 -1.379138e+01 1.518048e+01 -5.210721e+00 # D_CAT + 4634 127 9 2.2087 -1.237912e+01 1.516317e+01 -4.812548e+00 # D_CAO + 4635 127 10 2.2087 -1.219118e+01 1.533476e+01 -3.382872e+00 # D_CAM + 4636 127 11 2.2087 -1.315612e+01 1.526436e+01 -2.522905e+00 # D_CAP + 4637 127 10 2.2087 -1.462061e+01 1.518982e+01 -2.998294e+00 # D_CAM + 4638 127 9 2.2087 -1.481499e+01 1.514915e+01 -4.443755e+00 # D_CAO + 4639 127 12 2.2087 -1.397402e+01 1.503423e+01 -6.703498e+00 # D_CTT + 4640 128 8 2.2087 -1.455968e+00 8.317551e+00 3.000007e+00 # D_CAT + 4641 128 9 2.2087 -2.875650e+00 8.561072e+00 2.671967e+00 # D_CAO + 4642 128 10 2.2087 -3.742264e+00 7.419131e+00 2.928091e+00 # D_CAM + 4643 128 11 2.2087 -3.162533e+00 6.399130e+00 3.553111e+00 # D_CAP + 4644 128 10 2.2087 -1.876633e+00 6.186334e+00 3.916663e+00 # D_CAM + 4645 128 9 2.2087 -9.317842e-01 7.299213e+00 3.604420e+00 # D_CAO + 4646 128 12 2.2087 -4.400819e-01 9.511870e+00 2.612533e+00 # D_CTT + 4647 129 8 2.2087 -1.497037e+01 1.150441e+01 -1.432451e+00 # D_CAT + 4648 129 9 2.2087 -1.469110e+01 1.248073e+01 -5.265969e-01 # D_CAO + 4649 129 10 2.2087 -1.472596e+01 1.213352e+01 7.653421e-01 # D_CAM + 4650 129 11 2.2087 -1.490148e+01 1.075967e+01 1.217935e+00 # D_CAP + 4651 129 10 2.2087 -1.511193e+01 9.868109e+00 1.956675e-01 # D_CAM + 4652 129 9 2.2087 -1.524091e+01 1.019187e+01 -1.146381e+00 # D_CAO + 4653 129 12 2.2087 -1.500458e+01 1.192110e+01 -3.006679e+00 # D_CTT + 4654 130 8 2.2087 7.171473e+00 4.271122e+00 2.141556e+00 # D_CAT + 4655 130 9 2.2087 6.629622e+00 2.925431e+00 1.767249e+00 # D_CAO + 4656 130 10 2.2087 6.589474e+00 1.862534e+00 2.615437e+00 # D_CAM + 4657 130 11 2.2087 7.177376e+00 2.095505e+00 3.839733e+00 # D_CAP + 4658 130 10 2.2087 7.839187e+00 3.242488e+00 4.235856e+00 # D_CAM + 4659 130 9 2.2087 7.803092e+00 4.339374e+00 3.343562e+00 # D_CAO + 4660 130 12 2.2087 6.984709e+00 5.379554e+00 1.074829e+00 # D_CTT + 4661 131 8 2.2087 -5.428095e+00 1.138428e+01 7.443760e+00 # D_CAT + 4662 131 9 2.2087 -4.114357e+00 1.182615e+01 7.234689e+00 # D_CAO + 4663 131 10 2.2087 -3.220348e+00 1.126506e+01 6.284220e+00 # D_CAM + 4664 131 11 2.2087 -3.647468e+00 1.005340e+01 5.575124e+00 # D_CAP + 4665 131 10 2.2087 -5.110131e+00 9.665495e+00 5.778208e+00 # D_CAM + 4666 131 9 2.2087 -5.760518e+00 1.029278e+01 6.634021e+00 # D_CAO + 4667 131 12 2.2087 -6.240340e+00 1.205525e+01 8.426049e+00 # D_CTT + 4668 132 8 2.2087 1.086827e+01 4.336904e+00 -1.083313e+01 # D_CAT + 4669 132 9 2.2087 9.925502e+00 4.896980e+00 -9.921344e+00 # D_CAO + 4670 132 10 2.2087 8.631730e+00 4.265699e+00 -9.573937e+00 # D_CAM + 4671 132 11 2.2087 8.366183e+00 3.017882e+00 -1.012984e+01 # D_CAP + 4672 132 10 2.2087 9.302790e+00 2.488057e+00 -1.099245e+01 # D_CAM + 4673 132 9 2.2087 1.060593e+01 3.100180e+00 -1.125968e+01 # D_CAO + 4674 132 12 2.2087 1.209106e+01 4.945755e+00 -1.113454e+01 # D_CTT + 4675 133 8 2.2087 -9.156310e+00 6.172088e+00 -5.680929e+00 # D_CAT + 4676 133 9 2.2087 -7.832508e+00 5.802417e+00 -5.937726e+00 # D_CAO + 4677 133 10 2.2087 -7.595435e+00 4.450191e+00 -6.234004e+00 # D_CAM + 4678 133 11 2.2087 -8.583600e+00 3.528941e+00 -6.359531e+00 # D_CAP + 4679 133 10 2.2087 -9.880497e+00 3.839619e+00 -6.190077e+00 # D_CAM + 4680 133 9 2.2087 -1.024929e+01 5.232399e+00 -5.816588e+00 # D_CAO + 4681 133 12 2.2087 -9.476120e+00 7.684231e+00 -5.350605e+00 # D_CTT + 4682 134 8 2.2087 5.612633e+00 -2.936998e+00 -5.642315e+00 # D_CAT + 4683 134 9 2.2087 4.364643e+00 -3.559364e+00 -5.342989e+00 # D_CAO + 4684 134 10 2.2087 4.041833e+00 -3.791120e+00 -4.001054e+00 # D_CAM + 4685 134 11 2.2087 4.915013e+00 -3.312394e+00 -3.049850e+00 # D_CAP + 4686 134 10 2.2087 6.018705e+00 -2.709127e+00 -3.340965e+00 # D_CAM + 4687 134 9 2.2087 6.494590e+00 -2.559288e+00 -4.634251e+00 # D_CAO + 4688 134 12 2.2087 6.043548e+00 -2.804933e+00 -7.086913e+00 # D_CTT + 4689 135 8 2.2087 -1.889148e-01 -1.106552e+01 -1.041076e-01 # D_CAT + 4690 135 9 2.2087 9.859514e-01 -1.044220e+01 -5.507760e-01 # D_CAO + 4691 135 10 2.2087 1.326152e+00 -1.050529e+01 -2.025760e+00 # D_CAM + 4692 135 11 2.2087 5.293989e-01 -1.116660e+01 -2.823239e+00 # D_CAP + 4693 135 10 2.2087 -5.815368e-01 -1.192983e+01 -2.300616e+00 # D_CAM + 4694 135 9 2.2087 -9.221111e-01 -1.178387e+01 -9.570643e-01 # D_CAO + 4695 135 12 2.2087 -5.789980e-01 -1.100686e+01 1.341122e+00 # D_CTT + 4696 136 8 2.2087 8.654949e+00 -1.176522e+01 -4.531542e+00 # D_CAT + 4697 136 9 2.2087 8.969215e+00 -1.315839e+01 -4.306893e+00 # D_CAO + 4698 136 10 2.2087 9.260683e+00 -1.389367e+01 -5.549506e+00 # D_CAM + 4699 136 11 2.2087 9.131610e+00 -1.334429e+01 -6.758498e+00 # D_CAP + 4700 136 10 2.2087 8.773473e+00 -1.199325e+01 -6.988073e+00 # D_CAM + 4701 136 9 2.2087 8.533939e+00 -1.121324e+01 -5.798416e+00 # D_CAO + 4702 136 12 2.2087 8.316890e+00 -1.091796e+01 -3.279662e+00 # D_CTT + 4703 137 8 2.2087 7.385244e+00 5.971645e+00 1.359537e+01 # D_CAT + 4704 137 9 2.2087 6.512020e+00 5.635375e+00 1.260056e+01 # D_CAO + 4705 137 10 2.2087 6.154560e+00 6.624071e+00 1.161554e+01 # D_CAM + 4706 137 11 2.2087 6.669702e+00 7.972656e+00 1.186061e+01 # D_CAP + 4707 137 10 2.2087 7.411141e+00 8.259551e+00 1.286232e+01 # D_CAM + 4708 137 9 2.2087 7.762719e+00 7.378174e+00 1.375836e+01 # D_CAO + 4709 137 12 2.2087 7.730624e+00 4.972233e+00 1.451658e+01 # D_CTT + 4710 138 8 2.2087 5.721255e+00 7.246903e+00 3.950953e+00 # D_CAT + 4711 138 9 2.2087 5.075680e+00 6.486992e+00 3.071307e+00 # D_CAO + 4712 138 10 2.2087 5.061697e+00 5.081331e+00 3.308521e+00 # D_CAM + 4713 138 11 2.2087 5.572752e+00 4.554949e+00 4.522364e+00 # D_CAP + 4714 138 10 2.2087 5.968248e+00 5.429989e+00 5.398674e+00 # D_CAM + 4715 138 9 2.2087 6.242966e+00 6.743642e+00 5.172693e+00 # D_CAO + 4716 138 12 2.2087 5.715984e+00 8.930643e+00 3.712932e+00 # D_CTT + 4717 139 8 2.2087 -1.371561e+01 5.509512e+00 -1.332063e+01 # D_CAT + 4718 139 9 2.2087 -1.435683e+01 6.437268e+00 -1.424217e+01 # D_CAO + 4719 139 10 2.2087 -1.349599e+01 7.482195e+00 -1.465129e+01 # D_CAM + 4720 139 11 2.2087 -1.223447e+01 7.497502e+00 -1.437586e+01 # D_CAP + 4721 139 10 2.2087 -1.162104e+01 6.400226e+00 -1.360298e+01 # D_CAM + 4722 139 9 2.2087 -1.239506e+01 5.535727e+00 -1.288838e+01 # D_CAO + 4723 139 12 2.2087 -1.453912e+01 4.257275e+00 -1.279708e+01 # D_CTT + 4724 140 8 2.2087 4.194727e+00 8.992209e+00 7.227950e+00 # D_CAT + 4725 140 9 2.2087 4.268555e+00 7.714506e+00 6.831995e+00 # D_CAO + 4726 140 10 2.2087 3.632661e+00 7.305916e+00 5.544211e+00 # D_CAM + 4727 140 11 2.2087 2.868572e+00 8.138759e+00 4.830676e+00 # D_CAP + 4728 140 10 2.2087 2.738969e+00 9.621199e+00 5.303315e+00 # D_CAM + 4729 140 9 2.2087 3.474988e+00 9.869055e+00 6.551961e+00 # D_CAO + 4730 140 12 2.2087 4.732570e+00 9.392983e+00 8.492130e+00 # D_CTT + 4731 141 8 2.2087 1.369572e+01 -2.571750e+00 1.371029e+01 # D_CAT + 4732 141 9 2.2087 1.285191e+01 -3.638892e+00 1.395313e+01 # D_CAO + 4733 141 10 2.2087 1.223637e+01 -4.314671e+00 1.294758e+01 # D_CAM + 4734 141 11 2.2087 1.228227e+01 -3.750611e+00 1.168597e+01 # D_CAP + 4735 141 10 2.2087 1.308212e+01 -2.814555e+00 1.132234e+01 # D_CAM + 4736 141 9 2.2087 1.376189e+01 -2.104520e+00 1.235128e+01 # D_CAO + 4737 141 12 2.2087 1.434959e+01 -1.804351e+00 1.486880e+01 # D_CTT + 4738 142 8 2.2087 -3.363836e+00 -1.018560e+01 -2.089283e+00 # D_CAT + 4739 142 9 2.2087 -2.421338e+00 -9.571767e+00 -1.491410e+00 # D_CAO + 4740 142 10 2.2087 -1.275222e+00 -9.307374e+00 -2.410341e+00 # D_CAM + 4741 142 11 2.2087 -1.339075e+00 -9.396933e+00 -3.836033e+00 # D_CAP + 4742 142 10 2.2087 -2.545986e+00 -9.965583e+00 -4.211266e+00 # D_CAM + 4743 142 9 2.2087 -3.512314e+00 -1.033206e+01 -3.385042e+00 # D_CAO + 4744 142 12 2.2087 -4.435800e+00 -1.072607e+01 -1.104453e+00 # D_CTT + 4745 143 8 2.2087 -3.321035e+00 -1.622296e+00 3.447961e+00 # D_CAT + 4746 143 9 2.2087 -3.722448e+00 -4.398940e-01 4.220161e+00 # D_CAO + 4747 143 10 2.2087 -5.001521e+00 -4.675789e-01 4.848072e+00 # D_CAM + 4748 143 11 2.2087 -5.783987e+00 -1.659714e+00 4.548500e+00 # D_CAP + 4749 143 10 2.2087 -5.259482e+00 -2.786312e+00 3.917709e+00 # D_CAM + 4750 143 9 2.2087 -3.994555e+00 -2.650205e+00 3.399896e+00 # D_CAO + 4751 143 12 2.2087 -1.841866e+00 -1.541415e+00 2.829371e+00 # D_CTT + 4752 144 8 2.2087 -1.324022e+01 1.572715e+00 1.347292e+01 # D_CAT + 4753 144 9 2.2087 -1.192911e+01 1.119183e+00 1.378540e+01 # D_CAO + 4754 144 10 2.2087 -1.173386e+01 2.239006e-02 1.468217e+01 # D_CAM + 4755 144 11 2.2087 -1.284196e+01 -7.324285e-01 1.519341e+01 # D_CAP + 4756 144 10 2.2087 -1.414386e+01 -3.180576e-01 1.480034e+01 # D_CAM + 4757 144 9 2.2087 -1.433206e+01 8.186312e-01 1.399386e+01 # D_CAO + 4758 144 12 2.2087 -1.342711e+01 2.671487e+00 1.246950e+01 # D_CTT + 4759 145 8 2.2087 2.703347e+00 -1.391397e+01 -9.278908e+00 # D_CAT + 4760 145 9 2.2087 1.661771e+00 -1.466395e+01 -9.904779e+00 # D_CAO + 4761 145 10 2.2087 4.518434e-01 -1.392720e+01 -1.028030e+01 # D_CAM + 4762 145 11 2.2087 4.236158e-01 -1.265597e+01 -1.026193e+01 # D_CAP + 4763 145 10 2.2087 1.520796e+00 -1.181526e+01 -9.739997e+00 # D_CAM + 4764 145 9 2.2087 2.646388e+00 -1.257184e+01 -9.303669e+00 # D_CAO + 4765 145 12 2.2087 3.902905e+00 -1.465900e+01 -8.795257e+00 # D_CTT + 4766 146 8 2.2087 -1.504927e+01 -1.357805e+01 4.159128e+00 # D_CAT + 4767 146 9 2.2087 -1.522255e+01 -1.476046e+01 4.834330e+00 # D_CAO + 4768 146 10 2.2087 -1.528004e+01 -1.463431e+01 6.334143e+00 # D_CAM + 4769 146 11 2.2087 -1.520550e+01 -1.332547e+01 6.859611e+00 # D_CAP + 4770 146 10 2.2087 -1.508844e+01 -1.228010e+01 6.156366e+00 # D_CAM + 4771 146 9 2.2087 -1.504173e+01 -1.235680e+01 4.785493e+00 # D_CAO + 4772 146 12 2.2087 -1.496733e+01 -1.380233e+01 2.591420e+00 # D_CTT + 4773 147 8 2.2087 -1.496737e+01 -6.999966e+00 -1.333202e+01 # D_CAT + 4774 147 9 2.2087 -1.516569e+01 -8.020965e+00 -1.236195e+01 # D_CAO + 4775 147 10 2.2087 -1.520651e+01 -7.485106e+00 -1.111991e+01 # D_CAM + 4776 147 11 2.2087 -1.510436e+01 -6.168422e+00 -1.076478e+01 # D_CAP + 4777 147 10 2.2087 -1.488138e+01 -5.184775e+00 -1.178358e+01 # D_CAM + 4778 147 9 2.2087 -1.483199e+01 -5.787912e+00 -1.315812e+01 # D_CAO + 4779 147 12 2.2087 -1.482861e+01 -7.654792e+00 -1.482715e+01 # D_CTT + 4780 148 8 2.2087 -9.021304e+00 -1.518024e+01 -1.204546e+01 # D_CAT + 4781 148 9 2.2087 -7.565744e+00 -1.525326e+01 -1.250883e+01 # D_CAO + 4782 148 10 2.2087 -6.636023e+00 -1.544117e+01 -1.156968e+01 # D_CAM + 4783 148 11 2.2087 -6.987522e+00 -1.525155e+01 -1.032190e+01 # D_CAP + 4784 148 10 2.2087 -8.202655e+00 -1.526632e+01 -9.642560e+00 # D_CAM + 4785 148 9 2.2087 -9.205860e+00 -1.520156e+01 -1.067017e+01 # D_CAO + 4786 148 12 2.2087 -1.014396e+01 -1.512585e+01 -1.292753e+01 # D_CTT + 4787 149 8 2.2087 -2.222605e+00 -8.285604e+00 1.501969e+01 # D_CAT + 4788 149 9 2.2087 -3.571672e+00 -8.227995e+00 1.519472e+01 # D_CAO + 4789 149 10 2.2087 -4.296137e+00 -9.275240e+00 1.549137e+01 # D_CAM + 4790 149 11 2.2087 -3.704961e+00 -1.043308e+01 1.568370e+01 # D_CAP + 4791 149 10 2.2087 -2.302808e+00 -1.068330e+01 1.551360e+01 # D_CAM + 4792 149 9 2.2087 -1.453008e+00 -9.589677e+00 1.520926e+01 # D_CAO + 4793 149 12 2.2087 -1.338699e+00 -7.072515e+00 1.460370e+01 # D_CTT + 4794 150 8 2.2087 6.072759e-01 6.500117e+00 -1.118416e+01 # D_CAT + 4795 150 9 2.2087 2.038819e-01 7.614361e+00 -1.181269e+01 # D_CAO + 4796 150 10 2.2087 6.905058e-02 7.585781e+00 -1.326382e+01 # D_CAM + 4797 150 11 2.2087 1.733491e-01 6.273861e+00 -1.396635e+01 # D_CAP + 4798 150 10 2.2087 5.227203e-01 5.245552e+00 -1.331028e+01 # D_CAM + 4799 150 9 2.2087 7.376204e-01 5.344259e+00 -1.189772e+01 # D_CAO + 4800 150 12 2.2087 8.316668e-01 6.586500e+00 -9.741476e+00 # D_CTT + 4801 151 8 2.2087 1.213041e+01 -1.371768e+01 -4.342325e-01 # D_CAT + 4802 151 9 2.2087 1.130124e+01 -1.276127e+01 2.090984e-01 # D_CAO + 4803 151 10 2.2087 9.953948e+00 -1.265192e+01 1.000161e-01 # D_CAM + 4804 151 11 2.2087 9.212364e+00 -1.367279e+01 -7.725929e-01 # D_CAP + 4805 151 10 2.2087 1.005237e+01 -1.474314e+01 -1.274471e+00 # D_CAM + 4806 151 9 2.2087 1.145829e+01 -1.473092e+01 -1.189037e+00 # D_CAO + 4807 151 12 2.2087 1.364338e+01 -1.380792e+01 -3.016293e-01 # D_CTT + 4808 152 8 2.2087 -1.493134e+01 2.350687e+00 -8.410044e+00 # D_CAT + 4809 152 9 2.2087 -1.502764e+01 1.912378e+00 -9.583418e+00 # D_CAO + 4810 152 10 2.2087 -1.543775e+01 5.204672e-01 -9.828409e+00 # D_CAM + 4811 152 11 2.2087 -1.575117e+01 -3.444544e-01 -8.856788e+00 # D_CAP + 4812 152 10 2.2087 -1.558087e+01 5.723269e-02 -7.493508e+00 # D_CAM + 4813 152 9 2.2087 -1.517372e+01 1.517475e+00 -7.312275e+00 # D_CAO + 4814 152 12 2.2087 -1.456069e+01 3.784761e+00 -7.946434e+00 # D_CTT + 4815 153 8 2.2087 -8.213280e+00 3.441670e+00 -1.037404e+01 # D_CAT + 4816 153 9 2.2087 -8.481553e+00 4.430270e+00 -1.135071e+01 # D_CAO + 4817 153 10 2.2087 -7.760581e+00 5.597062e+00 -1.156645e+01 # D_CAM + 4818 153 11 2.2087 -6.926992e+00 5.956457e+00 -1.054203e+01 # D_CAP + 4819 153 10 2.2087 -6.463489e+00 5.095240e+00 -9.549123e+00 # D_CAM + 4820 153 9 2.2087 -7.229454e+00 3.923358e+00 -9.473085e+00 # D_CAO + 4821 153 12 2.2087 -8.943864e+00 2.195904e+00 -1.024069e+01 # D_CTT + 4822 154 8 2.2087 7.123683e+00 1.349278e+01 -1.458591e+01 # D_CAT + 4823 154 9 2.2087 6.337207e+00 1.233185e+01 -1.514666e+01 # D_CAO + 4824 154 10 2.2087 5.010355e+00 1.237531e+01 -1.520648e+01 # D_CAM + 4825 154 11 2.2087 4.207983e+00 1.345999e+01 -1.502508e+01 # D_CAP + 4826 154 10 2.2087 4.926455e+00 1.463466e+01 -1.460691e+01 # D_CAM + 4827 154 9 2.2087 6.331297e+00 1.466468e+01 -1.449386e+01 # D_CAO + 4828 154 12 2.2087 8.479941e+00 1.352682e+01 -1.452523e+01 # D_CTT + 4829 155 8 2.2087 1.508053e+01 7.787609e+00 8.557595e+00 # D_CAT + 4830 155 9 2.2087 1.473659e+01 7.132229e+00 7.437068e+00 # D_CAO + 4831 155 10 2.2087 1.503479e+01 7.878948e+00 6.252998e+00 # D_CAM + 4832 155 11 2.2087 1.538902e+01 9.337577e+00 6.256254e+00 # D_CAP + 4833 155 10 2.2087 1.547174e+01 9.792036e+00 7.531514e+00 # D_CAM + 4834 155 9 2.2087 1.519744e+01 9.075427e+00 8.655538e+00 # D_CAO + 4835 155 12 2.2087 1.477858e+01 6.900852e+00 9.823802e+00 # D_CTT + 4836 156 8 2.2087 -6.134184e+00 -2.483156e+00 1.239881e+01 # D_CAT + 4837 156 9 2.2087 -5.185292e+00 -1.597198e+00 1.233920e+01 # D_CAO + 4838 156 10 2.2087 -5.497594e+00 -3.388445e-01 1.263835e+01 # D_CAM + 4839 156 11 2.2087 -6.709137e+00 5.843699e-02 1.291077e+01 # D_CAP + 4840 156 10 2.2087 -7.778060e+00 -8.217496e-01 1.295830e+01 # D_CAM + 4841 156 9 2.2087 -7.457710e+00 -2.186063e+00 1.275840e+01 # D_CAO + 4842 156 12 2.2087 -5.800118e+00 -3.963512e+00 1.196489e+01 # D_CTT + 4843 157 8 2.2087 5.378596e+00 -8.561556e+00 1.405251e+01 # D_CAT + 4844 157 9 2.2087 6.351586e+00 -8.826014e+00 1.314469e+01 # D_CAO + 4845 157 10 2.2087 7.031172e+00 -7.577710e+00 1.263045e+01 # D_CAM + 4846 157 11 2.2087 6.839833e+00 -6.426886e+00 1.329729e+01 # D_CAP + 4847 157 10 2.2087 5.722116e+00 -6.236888e+00 1.408348e+01 # D_CAM + 4848 157 9 2.2087 5.031408e+00 -7.275862e+00 1.466295e+01 # D_CAO + 4849 157 12 2.2087 4.460905e+00 -9.833457e+00 1.449649e+01 # D_CTT + 4850 158 8 2.2087 3.606648e-01 -7.703903e+00 4.514572e+00 # D_CAT + 4851 158 9 2.2087 1.534638e+00 -8.114707e+00 3.758106e+00 # D_CAO + 4852 158 10 2.2087 2.665635e+00 -7.254427e+00 3.858481e+00 # D_CAM + 4853 158 11 2.2087 2.535398e+00 -6.044669e+00 4.645069e+00 # D_CAP + 4854 158 10 2.2087 1.329927e+00 -5.794685e+00 5.280883e+00 # D_CAM + 4855 158 9 2.2087 2.658933e-01 -6.616744e+00 5.214928e+00 # D_CAO + 4856 158 12 2.2087 -7.896182e-01 -8.660406e+00 4.473658e+00 # D_CTT + 4857 159 8 2.2087 5.440039e+00 -9.955198e+00 2.216284e+00 # D_CAT + 4858 159 9 2.2087 4.490426e+00 -9.647355e+00 1.287211e+00 # D_CAO + 4859 159 10 2.2087 4.721170e+00 -9.396791e+00 -6.541913e-03 # D_CAM + 4860 159 11 2.2087 5.970631e+00 -9.512191e+00 -5.643630e-01 # D_CAP + 4861 159 10 2.2087 6.991936e+00 -9.768617e+00 2.895580e-01 # D_CAM + 4862 159 9 2.2087 6.884370e+00 -1.010736e+01 1.599087e+00 # D_CAO + 4863 159 12 2.2087 5.272588e+00 -1.024891e+01 3.662587e+00 # D_CTT + 4864 160 8 2.2087 5.140297e+00 1.636306e+00 -3.334067e+00 # D_CAT + 4865 160 9 2.2087 5.588409e+00 7.141085e-01 -4.295291e+00 # D_CAO + 4866 160 10 2.2087 4.741481e+00 6.553518e-02 -5.147960e+00 # D_CAM + 4867 160 11 2.2087 3.417666e+00 2.578964e-01 -5.071891e+00 # D_CAP + 4868 160 10 2.2087 2.917388e+00 1.253964e+00 -4.030940e+00 # D_CAM + 4869 160 9 2.2087 3.839627e+00 1.887462e+00 -3.238213e+00 # D_CAO + 4870 160 12 2.2087 6.102528e+00 2.358029e+00 -2.430464e+00 # D_CTT + 4871 161 8 2.2087 -7.996734e+00 -5.395721e+00 -6.599812e+00 # D_CAT + 4872 161 9 2.2087 -6.638360e+00 -5.818659e+00 -6.745293e+00 # D_CAO + 4873 161 10 2.2087 -5.798677e+00 -5.322676e+00 -7.732208e+00 # D_CAM + 4874 161 11 2.2087 -6.285548e+00 -4.226070e+00 -8.590955e+00 # D_CAP + 4875 161 10 2.2087 -7.597800e+00 -3.826607e+00 -8.496679e+00 # D_CAM + 4876 161 9 2.2087 -8.494329e+00 -4.379178e+00 -7.451773e+00 # D_CAO + 4877 161 12 2.2087 -8.939590e+00 -5.879969e+00 -5.587001e+00 # D_CTT + 4878 162 8 2.2087 1.286124e+01 6.776356e+00 1.487284e+01 # D_CAT + 4879 162 9 2.2087 1.174668e+01 6.032882e+00 1.505862e+01 # D_CAO + 4880 162 10 2.2087 1.183379e+01 4.702452e+00 1.530563e+01 # D_CAM + 4881 162 11 2.2087 1.308897e+01 4.023701e+00 1.531327e+01 # D_CAP + 4882 162 10 2.2087 1.426964e+01 4.791724e+00 1.505003e+01 # D_CAM + 4883 162 9 2.2087 1.416601e+01 6.217460e+00 1.479548e+01 # D_CAO + 4884 162 12 2.2087 1.291239e+01 8.279371e+00 1.455105e+01 # D_CTT + 4885 163 8 2.2087 -3.411355e+00 3.741282e+00 -1.357222e+01 # D_CAT + 4886 163 9 2.2087 -3.091404e+00 2.784639e+00 -1.271426e+01 # D_CAO + 4887 163 10 2.2087 -2.242079e+00 2.929490e+00 -1.158016e+01 # D_CAM + 4888 163 11 2.2087 -1.898283e+00 4.334832e+00 -1.128255e+01 # D_CAP + 4889 163 10 2.2087 -2.181402e+00 5.291981e+00 -1.221358e+01 # D_CAM + 4890 163 9 2.2087 -2.893242e+00 5.084659e+00 -1.336444e+01 # D_CAO + 4891 163 12 2.2087 -4.210567e+00 3.452342e+00 -1.484618e+01 # D_CTT + 4892 164 8 2.2087 -5.035312e+00 -4.670592e+00 -1.495163e+01 # D_CAT + 4893 164 9 2.2087 -5.093352e+00 -5.972221e+00 -1.496692e+01 # D_CAO + 4894 164 10 2.2087 -6.230623e+00 -6.642169e+00 -1.509715e+01 # D_CAM + 4895 164 11 2.2087 -7.495905e+00 -6.050124e+00 -1.524887e+01 # D_CAP + 4896 164 10 2.2087 -7.424231e+00 -4.698072e+00 -1.528849e+01 # D_CAM + 4897 164 9 2.2087 -6.173408e+00 -3.885371e+00 -1.510832e+01 # D_CAO + 4898 164 12 2.2087 -3.690159e+00 -3.867116e+00 -1.495272e+01 # D_CTT + 4899 165 8 2.2087 7.928431e+00 -6.026317e+00 -1.127494e+01 # D_CAT + 4900 165 9 2.2087 8.023117e+00 -7.157499e+00 -1.221406e+01 # D_CAO + 4901 165 10 2.2087 6.938850e+00 -7.908868e+00 -1.250056e+01 # D_CAM + 4902 165 11 2.2087 5.696822e+00 -7.603930e+00 -1.193861e+01 # D_CAP + 4903 165 10 2.2087 5.641468e+00 -6.543328e+00 -1.105843e+01 # D_CAM + 4904 165 9 2.2087 6.808868e+00 -5.751809e+00 -1.073200e+01 # D_CAO + 4905 165 12 2.2087 9.201102e+00 -5.392932e+00 -1.090714e+01 # D_CTT + 4906 166 8 2.2087 -1.114996e+00 2.295505e+00 3.041495e+00 # D_CAT + 4907 166 9 2.2087 -3.868378e-01 2.543933e+00 4.211368e+00 # D_CAO + 4908 166 10 2.2087 -9.804320e-01 2.968733e+00 5.296169e+00 # D_CAM + 4909 166 11 2.2087 -2.403248e+00 3.117083e+00 5.234245e+00 # D_CAP + 4910 166 10 2.2087 -3.202075e+00 2.898520e+00 4.159848e+00 # D_CAM + 4911 166 9 2.2087 -2.574144e+00 2.455109e+00 3.106613e+00 # D_CAO + 4912 166 12 2.2087 -3.681401e-01 1.784648e+00 1.854775e+00 # D_CTT + 4913 167 8 2.2087 1.997344e+00 1.353612e+01 -6.287792e+00 # D_CAT + 4914 167 9 2.2087 2.349180e+00 1.226658e+01 -6.116280e+00 # D_CAO + 4915 167 10 2.2087 1.932492e+00 1.153521e+01 -4.928316e+00 # D_CAM + 4916 167 11 2.2087 1.034438e+00 1.221013e+01 -4.076505e+00 # D_CAP + 4917 167 10 2.2087 6.928399e-01 1.352898e+01 -4.253006e+00 # D_CAM + 4918 167 9 2.2087 1.179643e+00 1.423105e+01 -5.327872e+00 # D_CAO + 4919 167 12 2.2087 2.477620e+00 1.434724e+01 -7.627236e+00 # D_CTT + 4920 168 8 2.2087 1.089315e+01 -1.097069e+01 1.123189e+01 # D_CAT + 4921 168 9 2.2087 1.122714e+01 -1.175513e+01 1.011258e+01 # D_CAO + 4922 168 10 2.2087 1.029397e+01 -1.221713e+01 9.323609e+00 # D_CAM + 4923 168 11 2.2087 8.953186e+00 -1.186764e+01 9.472119e+00 # D_CAP + 4924 168 10 2.2087 8.610253e+00 -1.101256e+01 1.040082e+01 # D_CAM + 4925 168 9 2.2087 9.497585e+00 -1.048812e+01 1.126452e+01 # D_CAO + 4926 168 12 2.2087 1.179579e+01 -1.035437e+01 1.217585e+01 # D_CTT + 4927 169 8 2.2087 -1.352684e+01 -9.757845e-01 -1.360672e+01 # D_CAT + 4928 169 9 2.2087 -1.250238e+01 -2.007368e+00 -1.366467e+01 # D_CAO + 4929 169 10 2.2087 -1.116725e+01 -1.537801e+00 -1.344272e+01 # D_CAM + 4930 169 11 2.2087 -1.094209e+01 -2.381634e-01 -1.299874e+01 # D_CAP + 4931 169 10 2.2087 -1.192567e+01 7.089428e-01 -1.301998e+01 # D_CAM + 4932 169 9 2.2087 -1.329160e+01 3.253776e-01 -1.316658e+01 # D_CAO + 4933 169 12 2.2087 -1.490371e+01 -1.423292e+00 -1.379673e+01 # D_CTT + 4934 170 8 2.2087 -9.799923e+00 8.638287e+00 8.043335e+00 # D_CAT + 4935 170 9 2.2087 -8.928379e+00 7.559274e+00 7.601199e+00 # D_CAO + 4936 170 10 2.2087 -9.443613e+00 6.616910e+00 6.768715e+00 # D_CAM + 4937 170 11 2.2087 -1.086120e+01 6.804263e+00 6.312501e+00 # D_CAP + 4938 170 10 2.2087 -1.162278e+01 7.835876e+00 6.602268e+00 # D_CAM + 4939 170 9 2.2087 -1.114072e+01 8.681975e+00 7.588585e+00 # D_CAO + 4940 170 12 2.2087 -9.200513e+00 9.681459e+00 9.024358e+00 # D_CTT + 4941 171 8 2.2087 -1.352098e+01 1.339217e+01 -1.171732e+01 # D_CAT + 4942 171 9 2.2087 -1.227444e+01 1.337890e+01 -1.210939e+01 # D_CAO + 4943 171 10 2.2087 -1.188394e+01 1.214341e+01 -1.267079e+01 # D_CAM + 4944 171 11 2.2087 -1.263662e+01 1.100709e+01 -1.294021e+01 # D_CAP + 4945 171 10 2.2087 -1.404952e+01 1.116788e+01 -1.233228e+01 # D_CAM + 4946 171 9 2.2087 -1.448274e+01 1.234191e+01 -1.187198e+01 # D_CAO + 4947 171 12 2.2087 -1.398443e+01 1.466141e+01 -1.102521e+01 # D_CTT + 4948 172 8 2.2087 1.390300e+01 2.419041e+00 1.303893e+01 # D_CAT + 4949 172 9 2.2087 1.290786e+01 1.497837e+00 1.327276e+01 # D_CAO + 4950 172 10 2.2087 1.147372e+01 1.905994e+00 1.328727e+01 # D_CAM + 4951 172 11 2.2087 1.119294e+01 3.248077e+00 1.316594e+01 # D_CAP + 4952 172 10 2.2087 1.217323e+01 4.176044e+00 1.295304e+01 # D_CAM + 4953 172 9 2.2087 1.361419e+01 3.815867e+00 1.285007e+01 # D_CAO + 4954 172 12 2.2087 1.532500e+01 2.045398e+00 1.285087e+01 # D_CTT + 4955 173 8 2.2087 -1.480826e+01 -2.142068e+00 -9.128959e-02 # D_CAT + 4956 173 9 2.2087 -1.401191e+01 -1.197311e+00 -6.003291e-01 # D_CAO + 4957 173 10 2.2087 -1.393310e+01 -1.092782e+00 -1.963201e+00 # D_CAM + 4958 173 11 2.2087 -1.457247e+01 -1.801947e+00 -2.856087e+00 # D_CAP + 4959 173 10 2.2087 -1.546250e+01 -2.820811e+00 -2.286883e+00 # D_CAM + 4960 173 9 2.2087 -1.560755e+01 -2.999829e+00 -9.141909e-01 # D_CAO + 4961 173 12 2.2087 -1.494680e+01 -2.324336e+00 1.509212e+00 # D_CTT + 4962 174 8 2.2087 1.152282e+01 6.362345e-01 -1.373087e+01 # D_CAT + 4963 174 9 2.2087 1.180813e+01 -1.893961e-02 -1.252368e+01 # D_CAO + 4964 174 10 2.2087 1.302034e+01 -1.015604e-01 -1.205971e+01 # D_CAM + 4965 174 11 2.2087 1.406782e+01 4.804797e-01 -1.251589e+01 # D_CAP + 4966 174 10 2.2087 1.402753e+01 1.254105e+00 -1.376903e+01 # D_CAM + 4967 174 9 2.2087 1.264013e+01 1.201055e+00 -1.446933e+01 # D_CAO + 4968 174 12 2.2087 1.032980e+01 7.645049e-01 -1.451265e+01 # D_CTT + 4969 175 8 2.2087 5.819424e+00 9.470978e+00 -1.186051e+00 # D_CAT + 4970 175 9 2.2087 6.746115e+00 1.008808e+01 -2.225032e+00 # D_CAO + 4971 175 10 2.2087 6.193551e+00 1.074316e+01 -3.184562e+00 # D_CAM + 4972 175 11 2.2087 4.685787e+00 1.101775e+01 -3.325005e+00 # D_CAP + 4973 175 10 2.2087 3.836764e+00 1.036841e+01 -2.281011e+00 # D_CAM + 4974 175 9 2.2087 4.432358e+00 9.683018e+00 -1.215345e+00 # D_CAO + 4975 175 12 2.2087 6.417094e+00 8.670421e+00 -1.140113e-01 # D_CTT + 4976 176 8 2.2087 -2.127140e+00 -1.489083e+01 7.691860e-01 # D_CAT + 4977 176 9 2.2087 -2.744374e+00 -1.470208e+01 -4.881356e-01 # D_CAO + 4978 176 10 2.2087 -4.136591e+00 -1.490088e+01 -5.668708e-01 # D_CAM + 4979 176 11 2.2087 -4.881166e+00 -1.508358e+01 7.475321e-01 # D_CAP + 4980 176 10 2.2087 -4.203039e+00 -1.525793e+01 1.816662e+00 # D_CAM + 4981 176 9 2.2087 -2.912903e+00 -1.505577e+01 1.862658e+00 # D_CAO + 4982 176 12 2.2087 -5.537716e-01 -1.469346e+01 8.297477e-01 # D_CTT + 4983 177 8 2.2087 9.522675e+00 -8.519474e+00 1.497916e+01 # D_CAT + 4984 177 9 2.2087 8.487886e+00 -7.609568e+00 1.511921e+01 # D_CAO + 4985 177 10 2.2087 8.807611e+00 -6.191709e+00 1.518217e+01 # D_CAM + 4986 177 11 2.2087 1.017990e+01 -5.795369e+00 1.527528e+01 # D_CAP + 4987 177 10 2.2087 1.099862e+01 -6.792430e+00 1.516298e+01 # D_CAM + 4988 177 9 2.2087 1.072637e+01 -8.048480e+00 1.502299e+01 # D_CAO + 4989 177 12 2.2087 9.076662e+00 -9.969849e+00 1.489080e+01 # D_CTT + 4990 178 8 2.2087 1.363384e+01 5.969737e+00 -1.392514e+01 # D_CAT + 4991 178 9 2.2087 1.292104e+01 4.828930e+00 -1.416111e+01 # D_CAO + 4992 178 10 2.2087 1.172813e+01 4.768940e+00 -1.489235e+01 # D_CAM + 4993 178 11 2.2087 1.131005e+01 6.007143e+00 -1.531867e+01 # D_CAP + 4994 178 10 2.2087 1.200538e+01 7.210135e+00 -1.494818e+01 # D_CAM + 4995 178 9 2.2087 1.319205e+01 7.124856e+00 -1.439982e+01 # D_CAO + 4996 178 12 2.2087 1.498921e+01 5.872400e+00 -1.306958e+01 # D_CTT + 4997 179 8 2.2087 7.402685e-01 8.852965e-01 1.431072e+01 # D_CAT + 4998 179 9 2.2087 7.124110e-02 -2.938742e-01 1.432914e+01 # D_CAO + 4999 179 10 2.2087 -1.083331e+00 -5.925564e-01 1.354343e+01 # D_CAM + 5000 179 11 2.2087 -1.480078e+00 3.828577e-01 1.261164e+01 # D_CAP + 5001 179 10 2.2087 -8.287880e-01 1.398452e+00 1.243828e+01 # D_CAM + 5002 179 9 2.2087 3.180128e-01 1.744030e+00 1.325919e+01 # D_CAO + 5003 179 12 2.2087 1.951111e+00 1.213260e+00 1.513250e+01 # D_CTT + 5004 180 8 2.2087 8.196443e+00 1.387062e+01 -8.392889e+00 # D_CAT + 5005 180 9 2.2087 9.095203e+00 1.311892e+01 -7.664546e+00 # D_CAO + 5006 180 10 2.2087 8.517922e+00 1.208173e+01 -6.885901e+00 # D_CAM + 5007 180 11 2.2087 7.105807e+00 1.176294e+01 -6.969767e+00 # D_CAP + 5008 180 10 2.2087 6.278860e+00 1.254498e+01 -7.696203e+00 # D_CAM + 5009 180 9 2.2087 6.979786e+00 1.372430e+01 -8.321631e+00 # D_CAO + 5010 180 12 2.2087 8.895880e+00 1.504143e+01 -9.148417e+00 # D_CTT + 5011 181 8 2.2087 1.445286e+01 -3.917295e+00 1.759850e+00 # D_CAT + 5012 181 9 2.2087 1.426705e+01 -4.255718e+00 3.169497e+00 # D_CAO + 5013 181 10 2.2087 1.362624e+01 -5.364732e+00 3.504857e+00 # D_CAM + 5014 181 11 2.2087 1.313089e+01 -6.252013e+00 2.464944e+00 # D_CAP + 5015 181 10 2.2087 1.336773e+01 -6.047563e+00 1.152938e+00 # D_CAM + 5016 181 9 2.2087 1.396739e+01 -4.825921e+00 8.908308e-01 # D_CAO + 5017 181 12 2.2087 1.506542e+01 -2.582439e+00 1.468930e+00 # D_CTT + 5018 182 8 2.2087 -7.046122e+00 3.207124e+00 -3.521272e+00 # D_CAT + 5019 182 9 2.2087 -5.904329e+00 3.926931e+00 -4.009257e+00 # D_CAO + 5020 182 10 2.2087 -6.017001e+00 5.311439e+00 -3.936741e+00 # D_CAM + 5021 182 11 2.2087 -7.014611e+00 6.009020e+00 -3.410135e+00 # D_CAP + 5022 182 10 2.2087 -8.053239e+00 5.390503e+00 -2.934954e+00 # D_CAM + 5023 182 9 2.2087 -8.081432e+00 4.056011e+00 -2.876626e+00 # D_CAO + 5024 182 12 2.2087 -7.166350e+00 1.895370e+00 -3.582863e+00 # D_CTT + 5025 183 8 2.2087 2.440719e+00 4.748142e+00 -7.667312e+00 # D_CAT + 5026 183 9 2.2087 1.245887e+00 4.716693e+00 -7.041846e+00 # D_CAO + 5027 183 10 2.2087 2.295521e-01 3.779792e+00 -7.571827e+00 # D_CAM + 5028 183 11 2.2087 6.474756e-01 3.039301e+00 -8.689751e+00 # D_CAP + 5029 183 10 2.2087 1.904421e+00 3.039213e+00 -9.370754e+00 # D_CAM + 5030 183 9 2.2087 2.843739e+00 3.917110e+00 -8.708605e+00 # D_CAO + 5031 183 12 2.2087 3.486905e+00 5.657529e+00 -7.108026e+00 # D_CTT + 5032 184 8 2.2087 2.537033e+00 -1.170510e+00 -1.387949e+00 # D_CAT + 5033 184 9 2.2087 2.420846e+00 -1.567504e+00 -2.803670e+00 # D_CAO + 5034 184 10 2.2087 1.275558e+00 -2.213308e+00 -3.115615e+00 # D_CAM + 5035 184 11 2.2087 1.926330e-01 -2.484907e+00 -2.337626e+00 # D_CAP + 5036 184 10 2.2087 2.680559e-01 -2.035516e+00 -9.941431e-01 # D_CAM + 5037 184 9 2.2087 1.327772e+00 -1.446609e+00 -5.061011e-01 # D_CAO + 5038 184 12 2.2087 3.727250e+00 -5.783135e-01 -9.014823e-01 # D_CTT + 5039 185 8 2.2087 6.514965e+00 1.237163e+01 7.995847e+00 # D_CAT + 5040 185 9 2.2087 6.412359e+00 1.290826e+01 9.276649e+00 # D_CAO + 5041 185 10 2.2087 5.496685e+00 1.396550e+01 9.438658e+00 # D_CAM + 5042 185 11 2.2087 4.707801e+00 1.446483e+01 8.473863e+00 # D_CAP + 5043 185 10 2.2087 4.914599e+00 1.398759e+01 7.211331e+00 # D_CAM + 5044 185 9 2.2087 5.677846e+00 1.293266e+01 7.035302e+00 # D_CAO + 5045 185 12 2.2087 7.430531e+00 1.118967e+01 7.655727e+00 # D_CTT + 5046 186 8 2.2087 -6.517506e+00 -1.312456e+00 -6.580994e+00 # D_CAT + 5047 186 9 2.2087 -7.248856e+00 -2.366037e+00 -5.901053e+00 # D_CAO + 5048 186 10 2.2087 -6.534076e+00 -3.290339e+00 -5.279422e+00 # D_CAM + 5049 186 11 2.2087 -5.102593e+00 -3.329806e+00 -5.359540e+00 # D_CAP + 5050 186 10 2.2087 -4.428605e+00 -2.242459e+00 -6.137188e+00 # D_CAM + 5051 186 9 2.2087 -5.181097e+00 -1.280090e+00 -6.703261e+00 # D_CAO + 5052 186 12 2.2087 -7.260049e+00 -1.021443e-01 -7.238598e+00 # D_CTT + 5053 187 8 2.2087 6.128445e+00 -8.350218e+00 7.468111e+00 # D_CAT + 5054 187 9 2.2087 6.938922e+00 -8.066703e+00 8.480235e+00 # D_CAO + 5055 187 10 2.2087 7.172411e+00 -6.644603e+00 8.872978e+00 # D_CAM + 5056 187 11 2.2087 6.311525e+00 -5.797181e+00 8.292255e+00 # D_CAP + 5057 187 10 2.2087 5.392479e+00 -6.084241e+00 7.233840e+00 # D_CAM + 5058 187 9 2.2087 5.291011e+00 -7.405356e+00 6.786170e+00 # D_CAO + 5059 187 12 2.2087 5.962585e+00 -9.869233e+00 6.907585e+00 # D_CTT + 5060 188 8 2.2087 -1.745492e+00 -8.337513e+00 -1.104063e+01 # D_CAT + 5061 188 9 2.2087 -2.059872e+00 -7.037204e+00 -1.159299e+01 # D_CAO + 5062 188 10 2.2087 -3.181093e+00 -6.927610e+00 -1.227613e+01 # D_CAM + 5063 188 11 2.2087 -4.094157e+00 -7.891403e+00 -1.235261e+01 # D_CAP + 5064 188 10 2.2087 -3.821174e+00 -9.177115e+00 -1.185656e+01 # D_CAM + 5065 188 9 2.2087 -2.719589e+00 -9.360977e+00 -1.115680e+01 # D_CAO + 5066 188 12 2.2087 -4.361604e-01 -8.613190e+00 -1.032175e+01 # D_CTT + 5067 189 8 2.2087 -6.452528e+00 -8.962086e+00 4.123737e+00 # D_CAT + 5068 189 9 2.2087 -7.282536e+00 -8.128554e+00 4.759200e+00 # D_CAO + 5069 189 10 2.2087 -6.883820e+00 -7.469575e+00 5.992643e+00 # D_CAM + 5070 189 11 2.2087 -5.606914e+00 -7.611843e+00 6.506143e+00 # D_CAP + 5071 189 10 2.2087 -4.714928e+00 -8.496557e+00 5.891949e+00 # D_CAM + 5072 189 9 2.2087 -5.001764e+00 -9.208931e+00 4.613802e+00 # D_CAO + 5073 189 12 2.2087 -6.709871e+00 -9.657044e+00 2.814856e+00 # D_CTT + 5074 190 8 2.2087 -1.586930e+00 1.309097e+01 -1.917128e+00 # D_CAT + 5075 190 9 2.2087 -1.710762e+00 1.441134e+01 -1.794676e+00 # D_CAO + 5076 190 10 2.2087 -2.305719e+00 1.503215e+01 -2.966438e+00 # D_CAM + 5077 190 11 2.2087 -2.693181e+00 1.439135e+01 -4.114244e+00 # D_CAP + 5078 190 10 2.2087 -2.480874e+00 1.304078e+01 -4.243762e+00 # D_CAM + 5079 190 9 2.2087 -1.934551e+00 1.237949e+01 -3.118308e+00 # D_CAO + 5080 190 12 2.2087 -8.806605e-01 1.232820e+01 -7.655503e-01 # D_CTT + 5081 191 8 2.2087 5.451942e+00 2.935446e+00 -6.201477e+00 # D_CAT + 5082 191 9 2.2087 4.972133e+00 2.046981e+00 -7.032979e+00 # D_CAO + 5083 191 10 2.2087 3.583812e+00 1.681412e+00 -7.114178e+00 # D_CAM + 5084 191 11 2.2087 2.628521e+00 2.404596e+00 -6.260667e+00 # D_CAP + 5085 191 10 2.2087 3.188699e+00 3.392791e+00 -5.360635e+00 # D_CAM + 5086 191 9 2.2087 4.412022e+00 3.663894e+00 -5.420657e+00 # D_CAO + 5087 191 12 2.2087 6.837810e+00 3.308378e+00 -6.051216e+00 # D_CTT + 5088 192 8 2.2087 -1.315745e+01 2.246582e+00 -2.004029e+00 # D_CAT + 5089 192 9 2.2087 -1.200440e+01 2.027574e+00 -1.391978e+00 # D_CAO + 5090 192 10 2.2087 -1.087349e+01 1.643974e+00 -2.000359e+00 # D_CAM + 5091 192 11 2.2087 -1.077887e+01 1.377092e+00 -3.331397e+00 # D_CAP + 5092 192 10 2.2087 -1.195313e+01 1.547420e+00 -4.098019e+00 # D_CAM + 5093 192 9 2.2087 -1.310831e+01 1.922441e+00 -3.436004e+00 # D_CAO + 5094 192 12 2.2087 -1.438098e+01 2.722105e+00 -1.508716e+00 # D_CTT + 5095 193 8 2.2087 5.530119e+00 -1.475577e+01 1.366330e+01 # D_CAT + 5096 193 9 2.2087 5.833136e+00 -1.508115e+01 1.243394e+01 # D_CAO + 5097 193 10 2.2087 7.260510e+00 -1.535330e+01 1.209677e+01 # D_CAM + 5098 193 11 2.2087 8.270923e+00 -1.550458e+01 1.314538e+01 # D_CAP + 5099 193 10 2.2087 7.790183e+00 -1.508545e+01 1.444079e+01 # D_CAM + 5100 193 9 2.2087 6.427155e+00 -1.479671e+01 1.467459e+01 # D_CAO + 5101 193 12 2.2087 4.054577e+00 -1.433469e+01 1.401976e+01 # D_CTT + 5102 194 8 2.2087 -2.882434e-01 -1.394194e+01 5.742251e+00 # D_CAT + 5103 194 9 2.2087 -1.367180e+00 -1.491666e+01 5.871566e+00 # D_CAO + 5104 194 10 2.2087 -2.704488e+00 -1.467009e+01 5.410766e+00 # D_CAM + 5105 194 11 2.2087 -2.865141e+00 -1.342495e+01 4.578327e+00 # D_CAP + 5106 194 10 2.2087 -1.829448e+00 -1.260736e+01 4.352107e+00 # D_CAM + 5107 194 9 2.2087 -5.877700e-01 -1.278436e+01 4.912384e+00 # D_CAO + 5108 194 12 2.2087 1.044313e+00 -1.411403e+01 6.265428e+00 # D_CTT + 5109 195 8 2.2087 -5.834993e+00 1.205316e+01 1.393917e+01 # D_CAT + 5110 195 9 2.2087 -6.137099e+00 1.227714e+01 1.255211e+01 # D_CAO + 5111 195 10 2.2087 -7.018568e+00 1.345972e+01 1.208102e+01 # D_CAM + 5112 195 11 2.2087 -7.442121e+00 1.425878e+01 1.300381e+01 # D_CAP + 5113 195 10 2.2087 -7.046789e+00 1.405610e+01 1.439629e+01 # D_CAM + 5114 195 9 2.2087 -6.415796e+00 1.301008e+01 1.491892e+01 # D_CAO + 5115 195 12 2.2087 -5.049651e+00 1.085327e+01 1.442427e+01 # D_CTT + 5116 196 8 2.2087 -1.236801e+01 -6.192703e+00 3.376971e+00 # D_CAT + 5117 196 9 2.2087 -1.333696e+01 -5.331512e+00 3.992632e+00 # D_CAO + 5118 196 10 2.2087 -1.451004e+01 -4.905462e+00 3.443156e+00 # D_CAM + 5119 196 11 2.2087 -1.470896e+01 -5.512915e+00 1.945900e+00 # D_CAP + 5120 196 10 2.2087 -1.371562e+01 -6.361472e+00 1.377343e+00 # D_CAM + 5121 196 9 2.2087 -1.256882e+01 -6.615949e+00 2.057280e+00 # D_CAO + 5122 196 12 2.2087 -1.103085e+01 -6.488621e+00 4.102409e+00 # D_CTT + 5123 197 8 2.2087 -5.475116e+00 -2.660563e+00 1.501876e+01 # D_CAT + 5124 197 9 2.2087 -5.935779e+00 -3.928300e+00 1.489811e+01 # D_CAO + 5125 197 10 2.2087 -7.269508e+00 -4.277011e+00 1.508282e+01 # D_CAM + 5126 197 11 2.2087 -8.203342e+00 -3.365804e+00 1.544422e+01 # D_CAP + 5127 197 10 2.2087 -7.773326e+00 -2.114906e+00 1.551140e+01 # D_CAM + 5128 197 9 2.2087 -6.528003e+00 -1.724494e+00 1.526974e+01 # D_CAO + 5129 197 12 2.2087 -3.994731e+00 -2.297640e+00 1.490242e+01 # D_CTT + 5130 198 8 2.2087 -1.095271e+01 -1.284187e+01 -9.503226e+00 # D_CAT + 5131 198 9 2.2087 -1.039664e+01 -1.224525e+01 -1.059207e+01 # D_CAO + 5132 198 10 2.2087 -9.080143e+00 -1.156707e+01 -1.050793e+01 # D_CAM + 5133 198 11 2.2087 -8.298530e+00 -1.163867e+01 -9.325474e+00 # D_CAP + 5134 198 10 2.2087 -8.867466e+00 -1.221215e+01 -8.220907e+00 # D_CAM + 5135 198 9 2.2087 -1.006417e+01 -1.289417e+01 -8.283466e+00 # D_CAO + 5136 198 12 2.2087 -1.219295e+01 -1.361777e+01 -9.657863e+00 # D_CTT + 5137 199 8 2.2087 -3.576123e+00 -1.399315e+01 1.437085e+01 # D_CAT + 5138 199 9 2.2087 -3.901670e+00 -1.271812e+01 1.391841e+01 # D_CAO + 5139 199 10 2.2087 -5.128437e+00 -1.223483e+01 1.402601e+01 # D_CAM + 5140 199 11 2.2087 -6.293568e+00 -1.294262e+01 1.456170e+01 # D_CAP + 5141 199 10 2.2087 -6.008713e+00 -1.428945e+01 1.496952e+01 # D_CAM + 5142 199 9 2.2087 -4.704623e+00 -1.482564e+01 1.490511e+01 # D_CAO + 5143 199 12 2.2087 -2.197763e+00 -1.455807e+01 1.434766e+01 # D_CTT + 5144 200 8 2.2087 -1.069876e+01 8.496844e+00 -8.106302e+00 # D_CAT + 5145 200 9 2.2087 -9.547154e+00 7.700483e+00 -8.247118e+00 # D_CAO + 5146 200 10 2.2087 -9.718843e+00 6.173271e+00 -8.215270e+00 # D_CAM + 5147 200 11 2.2087 -1.093969e+01 5.728584e+00 -8.283211e+00 # D_CAP + 5148 200 10 2.2087 -1.211165e+01 6.681119e+00 -8.032282e+00 # D_CAM + 5149 200 9 2.2087 -1.191492e+01 8.096476e+00 -7.883060e+00 # D_CAO + 5150 200 12 2.2087 -1.039412e+01 9.993940e+00 -7.994277e+00 # D_CTT + 5151 201 8 2.2087 -3.414657e+00 -4.879001e+00 8.744365e+00 # D_CAT + 5152 201 9 2.2087 -3.133876e+00 -4.952980e+00 7.377624e+00 # D_CAO + 5153 201 10 2.2087 -2.664580e+00 -3.937851e+00 6.685560e+00 # D_CAM + 5154 201 11 2.2087 -2.332499e+00 -2.771546e+00 7.259311e+00 # D_CAP + 5155 201 10 2.2087 -2.623807e+00 -2.606722e+00 8.613270e+00 # D_CAM + 5156 201 9 2.2087 -3.120214e+00 -3.721988e+00 9.398450e+00 # D_CAO + 5157 201 12 2.2087 -3.959005e+00 -5.991362e+00 9.571216e+00 # D_CTT + 5158 202 8 2.2087 -6.128916e+00 -1.332880e+01 -1.465913e+01 # D_CAT + 5159 202 9 2.2087 -5.997103e+00 -1.206499e+01 -1.393804e+01 # D_CAO + 5160 202 10 2.2087 -6.976400e+00 -1.116057e+01 -1.380695e+01 # D_CAM + 5161 202 11 2.2087 -8.275158e+00 -1.135962e+01 -1.446857e+01 # D_CAP + 5162 202 10 2.2087 -8.463277e+00 -1.248368e+01 -1.507083e+01 # D_CAM + 5163 202 9 2.2087 -7.396916e+00 -1.341987e+01 -1.529783e+01 # D_CAO + 5164 202 12 2.2087 -5.037151e+00 -1.416887e+01 -1.489727e+01 # D_CTT + 5165 203 8 2.2087 1.026349e+01 1.301502e+01 -3.935477e+00 # D_CAT + 5166 203 9 2.2087 9.302671e+00 1.351654e+01 -4.779548e+00 # D_CAO + 5167 203 10 2.2087 9.578772e+00 1.470528e+01 -5.505602e+00 # D_CAM + 5168 203 11 2.2087 1.096945e+01 1.512024e+01 -5.606295e+00 # D_CAP + 5169 203 10 2.2087 1.189177e+01 1.465107e+01 -4.847683e+00 # D_CAM + 5170 203 9 2.2087 1.168743e+01 1.358898e+01 -3.986619e+00 # D_CAO + 5171 203 12 2.2087 1.004840e+01 1.185838e+01 -2.956787e+00 # D_CTT + 5172 204 8 2.2087 -2.840046e+00 1.365746e+00 -6.288457e+00 # D_CAT + 5173 204 9 2.2087 -1.418710e+00 9.636235e-01 -6.183781e+00 # D_CAO + 5174 204 10 2.2087 -1.043187e+00 2.317258e-01 -5.119346e+00 # D_CAM + 5175 204 11 2.2087 -1.947501e+00 -2.195448e-01 -4.131729e+00 # D_CAP + 5176 204 10 2.2087 -3.255299e+00 2.226499e-01 -4.280145e+00 # D_CAM + 5177 204 9 2.2087 -3.641445e+00 1.050490e+00 -5.420919e+00 # D_CAO + 5178 204 12 2.2087 -3.119568e+00 2.044958e+00 -7.605760e+00 # D_CTT + 5179 205 8 2.2087 4.567087e+00 -3.975868e+00 1.306613e+00 # D_CAT + 5180 205 9 2.2087 3.871108e+00 -5.186247e+00 1.545228e+00 # D_CAO + 5181 205 10 2.2087 4.081734e+00 -6.335621e+00 6.324288e-01 # D_CAM + 5182 205 11 2.2087 5.130751e+00 -6.288414e+00 -2.108224e-01 # D_CAP + 5183 205 10 2.2087 5.859849e+00 -5.068775e+00 -4.632814e-01 # D_CAM + 5184 205 9 2.2087 5.540939e+00 -3.939781e+00 2.403541e-01 # D_CAO + 5185 205 12 2.2087 4.312398e+00 -2.800369e+00 2.169418e+00 # D_CTT + 5186 206 8 2.2087 1.257151e+01 2.250428e+00 4.908538e+00 # D_CAT + 5187 206 9 2.2087 1.308892e+01 9.183055e-01 4.630790e+00 # D_CAO + 5188 206 10 2.2087 1.426158e+01 5.206094e-01 5.107722e+00 # D_CAM + 5189 206 11 2.2087 1.497464e+01 1.378515e+00 5.933574e+00 # D_CAP + 5190 206 10 2.2087 1.440452e+01 2.609921e+00 6.343682e+00 # D_CAM + 5191 206 9 2.2087 1.326561e+01 3.135413e+00 5.826088e+00 # D_CAO + 5192 206 12 2.2087 1.132202e+01 2.786577e+00 4.320477e+00 # D_CTT + 5193 207 8 2.2087 -1.495714e+01 8.199622e+00 5.581046e+00 # D_CAT + 5194 207 9 2.2087 -1.497687e+01 7.392049e+00 4.558567e+00 # D_CAO + 5195 207 10 2.2087 -1.526161e+01 6.087625e+00 4.677346e+00 # D_CAM + 5196 207 11 2.2087 -1.529542e+01 5.400208e+00 5.912303e+00 # D_CAP + 5197 207 10 2.2087 -1.529657e+01 6.212494e+00 7.028975e+00 # D_CAM + 5198 207 9 2.2087 -1.512452e+01 7.632025e+00 7.023790e+00 # D_CAO + 5199 207 12 2.2087 -1.492185e+01 9.708371e+00 5.542612e+00 # D_CTT + 5200 208 8 2.2087 -9.919846e+00 -3.125811e-01 2.702706e+00 # D_CAT + 5201 208 9 2.2087 -1.122303e+01 -5.310207e-01 2.796735e+00 # D_CAO + 5202 208 10 2.2087 -1.182760e+01 -1.708331e+00 3.374108e+00 # D_CAM + 5203 208 11 2.2087 -1.078031e+01 -2.708770e+00 3.858811e+00 # D_CAP + 5204 208 10 2.2087 -9.508231e+00 -2.468396e+00 3.773156e+00 # D_CAM + 5205 208 9 2.2087 -9.033315e+00 -1.253788e+00 3.116796e+00 # D_CAO + 5206 208 12 2.2087 -9.387649e+00 9.064304e-01 1.991669e+00 # D_CTT + 5207 209 8 2.2087 -1.124352e+01 1.089299e+01 -8.172915e-01 # D_CAT + 5208 209 9 2.2087 -1.015310e+01 1.033451e+01 -1.215464e-02 # D_CAO + 5209 209 10 2.2087 -9.859668e+00 9.061163e+00 -3.146641e-02 # D_CAM + 5210 209 11 2.2087 -1.069653e+01 8.081819e+00 -9.047921e-01 # D_CAP + 5211 209 10 2.2087 -1.175355e+01 8.491612e+00 -1.666377e+00 # D_CAM + 5212 209 9 2.2087 -1.201752e+01 9.961981e+00 -1.501276e+00 # D_CAO + 5213 209 12 2.2087 -1.167519e+01 1.224006e+01 -7.422783e-01 # D_CTT + 5214 210 8 2.2087 1.307954e+01 2.815830e+00 9.027374e+00 # D_CAT + 5215 210 9 2.2087 1.256276e+01 1.965080e+00 8.050828e+00 # D_CAO + 5216 210 10 2.2087 1.132067e+01 2.238410e+00 7.473962e+00 # D_CAM + 5217 210 11 2.2087 1.059603e+01 3.379730e+00 7.759429e+00 # D_CAP + 5218 210 10 2.2087 1.115510e+01 4.258132e+00 8.738042e+00 # D_CAM + 5219 210 9 2.2087 1.236617e+01 3.812286e+00 9.262046e+00 # D_CAO + 5220 210 12 2.2087 1.432965e+01 2.439967e+00 9.799774e+00 # D_CTT + 5221 211 8 2.2087 9.297480e+00 6.260534e+00 -2.823892e+00 # D_CAT + 5222 211 9 2.2087 9.811027e+00 7.265789e+00 -2.050628e+00 # D_CAO + 5223 211 10 2.2087 1.126039e+01 7.453826e+00 -2.068328e+00 # D_CAM + 5224 211 11 2.2087 1.201924e+01 6.736512e+00 -2.911863e+00 # D_CAP + 5225 211 10 2.2087 1.150017e+01 5.646330e+00 -3.645549e+00 # D_CAM + 5226 211 9 2.2087 1.009974e+01 5.383378e+00 -3.599973e+00 # D_CAO + 5227 211 12 2.2087 7.652016e+00 5.995202e+00 -2.876003e+00 # D_CTT + 5228 212 8 2.2087 -4.592666e-01 -5.126569e+00 9.516307e+00 # D_CAT + 5229 212 9 2.2087 -1.164333e-01 -3.914190e+00 8.922211e+00 # D_CAO + 5230 212 10 2.2087 -2.282380e-01 -2.703304e+00 9.648920e+00 # D_CAM + 5231 212 11 2.2087 -6.363607e-01 -2.607177e+00 1.092126e+01 # D_CAP + 5232 212 10 2.2087 -1.061727e+00 -3.858843e+00 1.155370e+01 # D_CAM + 5233 212 9 2.2087 -9.502310e-01 -5.087264e+00 1.079204e+01 # D_CAO + 5234 212 12 2.2087 -3.407913e-01 -6.404280e+00 8.701641e+00 # D_CTT + 5235 213 8 2.2087 2.770868e+00 -9.709522e+00 7.510981e+00 # D_CAT + 5236 213 9 2.2087 3.232222e+00 -1.091981e+01 8.139588e+00 # D_CAO + 5237 213 10 2.2087 4.207194e+00 -1.081030e+01 9.042355e+00 # D_CAM + 5238 213 11 2.2087 4.554828e+00 -9.509841e+00 9.582851e+00 # D_CAP + 5239 213 10 2.2087 4.164756e+00 -8.380975e+00 9.011099e+00 # D_CAM + 5240 213 9 2.2087 3.040029e+00 -8.457990e+00 8.060281e+00 # D_CAO + 5241 213 12 2.2087 1.724110e+00 -9.824680e+00 6.499143e+00 # D_CTT + 5242 214 8 2.2087 3.075174e+00 -1.498106e+01 -1.377136e+00 # D_CAT + 5243 214 9 2.2087 4.342972e+00 -1.496622e+01 -2.047471e+00 # D_CAO + 5244 214 10 2.2087 5.668960e+00 -1.506626e+01 -1.447765e+00 # D_CAM + 5245 214 11 2.2087 5.600778e+00 -1.505714e+01 -4.626528e-02 # D_CAP + 5246 214 10 2.2087 4.457131e+00 -1.520633e+01 7.371639e-01 # D_CAM + 5247 214 9 2.2087 3.184006e+00 -1.497610e+01 5.976478e-02 # D_CAO + 5248 214 12 2.2087 1.808205e+00 -1.482694e+01 -2.095210e+00 # D_CTT + 5249 215 8 2.2087 8.293835e+00 -1.396326e+01 -1.118146e+01 # D_CAT + 5250 215 9 2.2087 9.077650e+00 -1.311373e+01 -1.193935e+01 # D_CAO + 5251 215 10 2.2087 1.044988e+01 -1.295071e+01 -1.158637e+01 # D_CAM + 5252 215 11 2.2087 1.097678e+01 -1.375011e+01 -1.057656e+01 # D_CAP + 5253 215 10 2.2087 1.023927e+01 -1.472651e+01 -9.980641e+00 # D_CAM + 5254 215 9 2.2087 8.942936e+00 -1.486015e+01 -1.019530e+01 # D_CAO + 5255 215 12 2.2087 6.794007e+00 -1.416165e+01 -1.147805e+01 # D_CTT + 5256 216 8 2.2087 -1.034642e+01 8.103303e+00 3.442426e+00 # D_CAT + 5257 216 9 2.2087 -9.516858e+00 8.354000e+00 4.590770e+00 # D_CAO + 5258 216 10 2.2087 -8.316659e+00 7.714512e+00 4.708522e+00 # D_CAM + 5259 216 11 2.2087 -7.938255e+00 6.801716e+00 3.690102e+00 # D_CAP + 5260 216 10 2.2087 -8.700975e+00 6.576191e+00 2.564723e+00 # D_CAM + 5261 216 9 2.2087 -9.933021e+00 7.278027e+00 2.566319e+00 # D_CAO + 5262 216 12 2.2087 -1.161287e+01 8.826287e+00 3.351198e+00 # D_CTT + 5263 217 8 2.2087 -1.000682e+01 4.160452e+00 8.205291e+00 # D_CAT + 5264 217 9 2.2087 -1.129504e+01 3.791297e+00 7.601569e+00 # D_CAO + 5265 217 10 2.2087 -1.238055e+01 4.817779e+00 7.816578e+00 # D_CAM + 5266 217 11 2.2087 -1.223423e+01 5.956179e+00 8.608032e+00 # D_CAP + 5267 217 10 2.2087 -1.085006e+01 6.247771e+00 9.269306e+00 # D_CAM + 5268 217 9 2.2087 -9.871040e+00 5.403354e+00 8.998835e+00 # D_CAO + 5269 217 12 2.2087 -8.910084e+00 3.204930e+00 7.949938e+00 # D_CTT + 5270 218 8 2.2087 -1.854840e+00 1.427367e+01 -8.983130e+00 # D_CAT + 5271 218 9 2.2087 -2.569236e+00 1.306781e+01 -9.144750e+00 # D_CAO + 5272 218 10 2.2087 -2.720291e+00 1.263917e+01 -1.047058e+01 # D_CAM + 5273 218 11 2.2087 -2.291659e+00 1.331529e+01 -1.157061e+01 # D_CAP + 5274 218 10 2.2087 -1.491432e+00 1.454373e+01 -1.131995e+01 # D_CAM + 5275 218 9 2.2087 -1.225512e+00 1.517699e+01 -1.007718e+01 # D_CAO + 5276 218 12 2.2087 -1.621750e+00 1.471507e+01 -7.403435e+00 # D_CTT + 5277 219 8 2.2087 -5.272813e+00 2.432609e+00 -1.118582e+01 # D_CAT + 5278 219 9 2.2087 -6.109795e+00 2.526224e+00 -1.239352e+01 # D_CAO + 5279 219 10 2.2087 -6.235446e+00 3.781293e+00 -1.291095e+01 # D_CAM + 5280 219 11 2.2087 -5.657623e+00 4.902596e+00 -1.225560e+01 # D_CAP + 5281 219 10 2.2087 -4.785703e+00 4.775213e+00 -1.126911e+01 # D_CAM + 5282 219 9 2.2087 -4.732719e+00 3.451016e+00 -1.068578e+01 # D_CAO + 5283 219 12 2.2087 -5.050653e+00 1.030869e+00 -1.055835e+01 # D_CTT + 5284 220 8 2.2087 -2.334504e+00 1.503204e+01 8.926139e+00 # D_CAT + 5285 220 9 2.2087 -3.732782e+00 1.502347e+01 8.956799e+00 # D_CAO + 5286 220 10 2.2087 -4.367687e+00 1.515854e+01 1.014777e+01 # D_CAM + 5287 220 11 2.2087 -3.688670e+00 1.538357e+01 1.135796e+01 # D_CAP + 5288 220 10 2.2087 -2.276962e+00 1.526109e+01 1.139102e+01 # D_CAM + 5289 220 9 2.2087 -1.624563e+00 1.522291e+01 1.016419e+01 # D_CAO + 5290 220 12 2.2087 -1.624241e+00 1.490952e+01 7.578159e+00 # D_CTT + 5291 221 8 2.2087 -9.357711e+00 1.205043e+01 -3.287511e+00 # D_CAT + 5292 221 9 2.2087 -8.781205e+00 1.281711e+01 -2.280320e+00 # D_CAO + 5293 221 10 2.2087 -8.120687e+00 1.212690e+01 -1.230345e+00 # D_CAM + 5294 221 11 2.2087 -7.892108e+00 1.076476e+01 -1.311680e+00 # D_CAP + 5295 221 10 2.2087 -8.367627e+00 1.010880e+01 -2.467131e+00 # D_CAM + 5296 221 9 2.2087 -9.059939e+00 1.066981e+01 -3.377894e+00 # D_CAO + 5297 221 12 2.2087 -1.005950e+01 1.284263e+01 -4.464017e+00 # D_CTT + 5298 222 8 2.2087 -6.549389e+00 -9.882588e+00 1.173783e+01 # D_CAT + 5299 222 9 2.2087 -7.314556e+00 -8.921057e+00 1.233786e+01 # D_CAO + 5300 222 10 2.2087 -6.675831e+00 -7.711675e+00 1.272864e+01 # D_CAM + 5301 222 11 2.2087 -5.308327e+00 -7.546752e+00 1.253247e+01 # D_CAP + 5302 222 10 2.2087 -4.571626e+00 -8.645219e+00 1.201476e+01 # D_CAM + 5303 222 9 2.2087 -5.148680e+00 -9.786149e+00 1.157653e+01 # D_CAO + 5304 222 12 2.2087 -7.082962e+00 -1.125281e+01 1.131193e+01 # D_CTT + 5305 223 8 2.2087 8.407541e+00 8.914565e+00 -1.033921e+01 # D_CAT + 5306 223 9 2.2087 7.699471e+00 1.000688e+01 -1.010580e+01 # D_CAO + 5307 223 10 2.2087 8.264619e+00 1.135780e+01 -1.047029e+01 # D_CAM + 5308 223 11 2.2087 9.519311e+00 1.139252e+01 -1.097242e+01 # D_CAP + 5309 223 10 2.2087 1.021440e+01 1.018562e+01 -1.116237e+01 # D_CAM + 5310 223 9 2.2087 9.735266e+00 9.002292e+00 -1.089479e+01 # D_CAO + 5311 223 12 2.2087 7.837926e+00 7.568653e+00 -1.001090e+01 # D_CTT + 5312 224 8 2.2087 2.928557e+00 -5.427658e+00 1.380824e+01 # D_CAT + 5313 224 9 2.2087 3.159373e+00 -6.692299e+00 1.319895e+01 # D_CAO + 5314 224 10 2.2087 4.260126e+00 -7.009423e+00 1.214286e+01 # D_CAM + 5315 224 11 2.2087 4.852643e+00 -5.812289e+00 1.185157e+01 # D_CAP + 5316 224 10 2.2087 4.710823e+00 -4.523268e+00 1.233226e+01 # D_CAM + 5317 224 9 2.2087 3.737856e+00 -4.426029e+00 1.330376e+01 # D_CAO + 5318 224 12 2.2087 1.958851e+00 -5.067170e+00 1.482003e+01 # D_CTT + 5319 225 8 2.2087 2.058439e+00 1.222933e+01 3.291427e+00 # D_CAT + 5320 225 9 2.2087 2.077993e+00 1.278387e+01 4.575313e+00 # D_CAO + 5321 225 10 2.2087 9.602254e-01 1.323426e+01 5.148716e+00 # D_CAM + 5322 225 11 2.2087 -3.024706e-01 1.323380e+01 4.491940e+00 # D_CAP + 5323 225 10 2.2087 -4.507221e-01 1.283600e+01 3.221105e+00 # D_CAM + 5324 225 9 2.2087 8.348434e-01 1.240571e+01 2.538471e+00 # D_CAO + 5325 225 12 2.2087 3.222855e+00 1.175891e+01 2.542617e+00 # D_CTT + 5326 226 8 2.2087 -1.374847e+01 -3.318239e+00 1.402769e+01 # D_CAT + 5327 226 9 2.2087 -1.462408e+01 -2.462677e+00 1.350088e+01 # D_CAO + 5328 226 10 2.2087 -1.422236e+01 -1.450363e+00 1.274820e+01 # D_CAM + 5329 226 11 2.2087 -1.290175e+01 -1.321078e+00 1.259469e+01 # D_CAP + 5330 226 10 2.2087 -1.192759e+01 -2.106684e+00 1.310926e+01 # D_CAM + 5331 226 9 2.2087 -1.250794e+01 -3.041139e+00 1.397382e+01 # D_CAO + 5332 226 12 2.2087 -1.426364e+01 -4.425590e+00 1.491211e+01 # D_CTT + 5333 227 8 2.2087 -1.040368e+01 -8.231341e+00 -8.538576e+00 # D_CAT + 5334 227 9 2.2087 -1.115665e+01 -7.124985e+00 -8.075618e+00 # D_CAO + 5335 227 10 2.2087 -1.259541e+01 -7.308156e+00 -7.823020e+00 # D_CAM + 5336 227 11 2.2087 -1.313782e+01 -8.587308e+00 -7.828948e+00 # D_CAP + 5337 227 10 2.2087 -1.242203e+01 -9.709983e+00 -8.156381e+00 # D_CAM + 5338 227 9 2.2087 -1.103947e+01 -9.519872e+00 -8.560259e+00 # D_CAO + 5339 227 12 2.2087 -8.878651e+00 -8.209891e+00 -8.726110e+00 # D_CTT + 5340 228 8 2.2087 -7.093208e+00 1.252862e+01 -1.439457e+01 # D_CAT + 5341 228 9 2.2087 -6.191012e+00 1.246731e+01 -1.328018e+01 # D_CAO + 5342 228 10 2.2087 -5.442825e+00 1.332699e+01 -1.274437e+01 # D_CAM + 5343 228 11 2.2087 -5.479652e+00 1.460231e+01 -1.349917e+01 # D_CAP + 5344 228 10 2.2087 -6.218858e+00 1.491038e+01 -1.450818e+01 # D_CAM + 5345 228 9 2.2087 -7.045685e+00 1.376969e+01 -1.508797e+01 # D_CAO + 5346 228 12 2.2087 -7.983765e+00 1.148472e+01 -1.480576e+01 # D_CTT + 5347 229 8 2.2087 -1.353022e+01 6.773639e+00 1.150114e+01 # D_CAT + 5348 229 9 2.2087 -1.358116e+01 8.198620e+00 1.185732e+01 # D_CAO + 5349 229 10 2.2087 -1.240680e+01 8.890920e+00 1.245975e+01 # D_CAM + 5350 229 11 2.2087 -1.124742e+01 8.244956e+00 1.256218e+01 # D_CAP + 5351 229 10 2.2087 -1.136043e+01 6.807188e+00 1.228419e+01 # D_CAM + 5352 229 9 2.2087 -1.232769e+01 6.239406e+00 1.166950e+01 # D_CAO + 5353 229 12 2.2087 -1.474923e+01 6.043922e+00 1.091664e+01 # D_CTT + 5354 230 8 2.2087 1.493642e+01 -1.159314e+01 1.283614e+01 # D_CAT + 5355 230 9 2.2087 1.478854e+01 -1.245973e+01 1.173468e+01 # D_CAO + 5356 230 10 2.2087 1.490579e+01 -1.193686e+01 1.043956e+01 # D_CAM + 5357 230 11 2.2087 1.516104e+01 -1.070056e+01 1.013260e+01 # D_CAP + 5358 230 10 2.2087 1.543294e+01 -9.723725e+00 1.122320e+01 # D_CAM + 5359 230 9 2.2087 1.522766e+01 -1.019768e+01 1.249349e+01 # D_CAO + 5360 230 12 2.2087 1.472479e+01 -1.201165e+01 1.422658e+01 # D_CTT + 5361 231 8 2.2087 -5.111982e+00 1.504261e+01 1.336915e+00 # D_CAT + 5362 231 9 2.2087 -5.441783e+00 1.510972e+01 -4.160801e-02 # D_CAO + 5363 231 10 2.2087 -6.642465e+00 1.517644e+01 -4.566855e-01 # D_CAM + 5364 231 11 2.2087 -7.757924e+00 1.516105e+01 4.856221e-01 # D_CAP + 5365 231 10 2.2087 -7.383029e+00 1.522638e+01 1.916164e+00 # D_CAM + 5366 231 9 2.2087 -6.090247e+00 1.526175e+01 2.232054e+00 # D_CAO + 5367 231 12 2.2087 -3.709675e+00 1.501596e+01 1.729196e+00 # D_CTT + 5368 232 8 2.2087 -1.397005e+01 -9.191848e+00 7.183934e+00 # D_CAT + 5369 232 9 2.2087 -1.494218e+01 -8.210520e+00 7.068252e+00 # D_CAO + 5370 232 10 2.2087 -1.513375e+01 -7.544109e+00 5.800016e+00 # D_CAM + 5371 232 11 2.2087 -1.459987e+01 -7.954140e+00 4.734319e+00 # D_CAP + 5372 232 10 2.2087 -1.360034e+01 -9.045343e+00 4.829405e+00 # D_CAM + 5373 232 9 2.2087 -1.312209e+01 -9.533251e+00 5.979198e+00 # D_CAO + 5374 232 12 2.2087 -1.370593e+01 -9.855364e+00 8.436243e+00 # D_CTT + 5375 233 8 2.2087 -6.002585e+00 8.295902e+00 -1.335513e+01 # D_CAT + 5376 233 9 2.2087 -5.893924e+00 7.557141e+00 -1.457448e+01 # D_CAO + 5377 233 10 2.2087 -7.077098e+00 7.245016e+00 -1.532406e+01 # D_CAM + 5378 233 11 2.2087 -8.293304e+00 7.765539e+00 -1.470082e+01 # D_CAP + 5379 233 10 2.2087 -8.292411e+00 8.493813e+00 -1.359220e+01 # D_CAM + 5380 233 9 2.2087 -7.130850e+00 8.783416e+00 -1.279588e+01 # D_CAO + 5381 233 12 2.2087 -4.570407e+00 8.594165e+00 -1.264522e+01 # D_CTT + 5382 234 8 2.2087 1.100886e+01 -1.807133e+00 3.722432e+00 # D_CAT + 5383 234 9 2.2087 9.877484e+00 -8.683700e-01 3.778318e+00 # D_CAO + 5384 234 10 2.2087 9.453603e+00 -3.202617e-01 2.651475e+00 # D_CAM + 5385 234 11 2.2087 9.958439e+00 -8.149535e-01 1.333490e+00 # D_CAP + 5386 234 10 2.2087 1.088478e+01 -1.675945e+00 1.325426e+00 # D_CAM + 5387 234 9 2.2087 1.141330e+01 -2.176610e+00 2.410654e+00 # D_CAO + 5388 234 12 2.2087 1.161465e+01 -2.444622e+00 4.984389e+00 # D_CTT + 5389 235 8 2.2087 9.287015e+00 -4.147660e+00 2.490864e+00 # D_CAT + 5390 235 9 2.2087 8.505739e+00 -3.480493e+00 3.381528e+00 # D_CAO + 5391 235 10 2.2087 7.911578e+00 -2.238611e+00 3.016981e+00 # D_CAM + 5392 235 11 2.2087 7.867705e+00 -2.033014e+00 1.643058e+00 # D_CAP + 5393 235 10 2.2087 8.510002e+00 -2.817582e+00 6.720594e-01 # D_CAM + 5394 235 9 2.2087 9.248737e+00 -3.833836e+00 1.142352e+00 # D_CAO + 5395 235 12 2.2087 1.011786e+01 -5.386981e+00 2.844838e+00 # D_CTT + 5396 236 8 2.2087 -8.201316e+00 -2.622521e+00 7.377563e+00 # D_CAT + 5397 236 9 2.2087 -7.033280e+00 -3.416982e+00 7.329422e+00 # D_CAO + 5398 236 10 2.2087 -5.836616e+00 -2.787030e+00 7.386030e+00 # D_CAM + 5399 236 11 2.2087 -5.748764e+00 -1.394657e+00 7.307601e+00 # D_CAP + 5400 236 10 2.2087 -6.904863e+00 -6.851089e-01 7.342441e+00 # D_CAM + 5401 236 9 2.2087 -8.111541e+00 -1.211552e+00 7.370135e+00 # D_CAO + 5402 236 12 2.2087 -9.590399e+00 -3.243602e+00 7.322751e+00 # D_CTT + 5403 237 8 2.2087 1.486546e+01 1.395585e+01 4.972054e+00 # D_CAT + 5404 237 9 2.2087 1.424020e+01 1.270587e+01 5.119212e+00 # D_CAO + 5405 237 10 2.2087 1.395643e+01 1.216409e+01 6.357931e+00 # D_CAM + 5406 237 11 2.2087 1.426250e+01 1.298234e+01 7.484718e+00 # D_CAP + 5407 237 10 2.2087 1.485759e+01 1.425193e+01 7.389751e+00 # D_CAM + 5408 237 9 2.2087 1.517062e+01 1.472740e+01 6.136840e+00 # D_CAO + 5409 237 12 2.2087 1.510920e+01 1.455280e+01 3.522455e+00 # D_CTT + 5410 238 8 2.2087 2.343596e+00 -1.383656e+01 -1.343674e+01 # D_CAT + 5411 238 9 2.2087 2.220679e+00 -1.255330e+01 -1.399961e+01 # D_CAO + 5412 238 10 2.2087 1.235748e+00 -1.219098e+01 -1.493307e+01 # D_CAM + 5413 238 11 2.2087 4.017199e-01 -1.308286e+01 -1.542176e+01 # D_CAP + 5414 238 10 2.2087 3.136090e-01 -1.452389e+01 -1.483534e+01 # D_CAM + 5415 238 9 2.2087 1.542813e+00 -1.485463e+01 -1.393034e+01 # D_CAO + 5416 238 12 2.2087 3.448284e+00 -1.422913e+01 -1.240519e+01 # D_CTT + 5417 239 8 2.2087 -1.361716e+01 -1.239858e+01 -1.432214e+01 # D_CAT + 5418 239 9 2.2087 -1.241296e+01 -1.285845e+01 -1.497254e+01 # D_CAO + 5419 239 10 2.2087 -1.221114e+01 -1.414586e+01 -1.521048e+01 # D_CAM + 5420 239 11 2.2087 -1.315355e+01 -1.511240e+01 -1.473857e+01 # D_CAP + 5421 239 10 2.2087 -1.423857e+01 -1.471349e+01 -1.406903e+01 # D_CAM + 5422 239 9 2.2087 -1.452240e+01 -1.330808e+01 -1.413140e+01 # D_CAO + 5423 239 12 2.2087 -1.400460e+01 -1.090814e+01 -1.423181e+01 # D_CTT + 5424 240 8 2.2087 1.367709e+01 -1.308313e+01 -1.392884e+01 # D_CAT + 5425 240 9 2.2087 1.235844e+01 -1.322201e+01 -1.435306e+01 # D_CAO + 5426 240 10 2.2087 1.163045e+01 -1.425149e+01 -1.366813e+01 # D_CAM + 5427 240 11 2.2087 1.208356e+01 -1.503933e+01 -1.262457e+01 # D_CAP + 5428 240 10 2.2087 1.336080e+01 -1.477466e+01 -1.220710e+01 # D_CAM + 5429 240 9 2.2087 1.420808e+01 -1.382513e+01 -1.292373e+01 # D_CAO + 5430 240 12 2.2087 1.446904e+01 -1.208123e+01 -1.471073e+01 # D_CTT + 5431 241 8 2.2087 -6.322220e+00 -4.074047e+00 -1.201631e+00 # D_CAT + 5432 241 9 2.2087 -6.297812e+00 -2.887296e+00 -1.825460e+00 # D_CAO + 5433 241 10 2.2087 -6.693334e+00 -1.643870e+00 -1.179046e+00 # D_CAM + 5434 241 11 2.2087 -7.016393e+00 -1.776177e+00 1.075219e-01 # D_CAP + 5435 241 10 2.2087 -7.006984e+00 -3.016505e+00 7.660013e-01 # D_CAM + 5436 241 9 2.2087 -6.692231e+00 -4.129667e+00 7.089882e-02 # D_CAO + 5437 241 12 2.2087 -5.820213e+00 -5.337173e+00 -1.864558e+00 # D_CTT + 5438 242 8 2.2087 -1.218640e+01 1.323032e+01 3.847765e+00 # D_CAT + 5439 242 9 2.2087 -1.321345e+01 1.409786e+01 3.222086e+00 # D_CAO + 5440 242 10 2.2087 -1.294151e+01 1.472669e+01 1.997067e+00 # D_CAM + 5441 242 11 2.2087 -1.165245e+01 1.452257e+01 1.407140e+00 # D_CAP + 5442 242 10 2.2087 -1.066292e+01 1.369351e+01 2.123710e+00 # D_CAM + 5443 242 9 2.2087 -1.094331e+01 1.307198e+01 3.290660e+00 # D_CAO + 5444 242 12 2.2087 -1.249691e+01 1.266221e+01 5.157830e+00 # D_CTT + 5445 243 8 2.2087 1.352012e+01 -1.509216e+01 8.050818e+00 # D_CAT + 5446 243 9 2.2087 1.321516e+01 -1.512517e+01 9.367996e+00 # D_CAO + 5447 243 10 2.2087 1.196324e+01 -1.528761e+01 9.736434e+00 # D_CAM + 5448 243 11 2.2087 1.083104e+01 -1.531602e+01 8.981337e+00 # D_CAP + 5449 243 10 2.2087 1.116306e+01 -1.545642e+01 7.516182e+00 # D_CAM + 5450 243 9 2.2087 1.240250e+01 -1.520180e+01 7.019384e+00 # D_CAO + 5451 243 12 2.2087 1.487835e+01 -1.495351e+01 7.620551e+00 # D_CTT + 5452 244 8 2.2087 -1.185496e+01 -8.331697e+00 -1.244216e+01 # D_CAT + 5453 244 9 2.2087 -1.128413e+01 -9.050332e+00 -1.336363e+01 # D_CAO + 5454 244 10 2.2087 -1.096248e+01 -8.497985e+00 -1.467055e+01 # D_CAM + 5455 244 11 2.2087 -1.119175e+01 -7.116185e+00 -1.477078e+01 # D_CAP + 5456 244 10 2.2087 -1.170704e+01 -6.308033e+00 -1.372585e+01 # D_CAM + 5457 244 9 2.2087 -1.205437e+01 -6.878266e+00 -1.253006e+01 # D_CAO + 5458 244 12 2.2087 -1.221868e+01 -8.959594e+00 -1.106382e+01 # D_CTT + 5459 245 8 2.2087 -4.347585e-01 9.782605e+00 1.493943e+01 # D_CAT + 5460 245 9 2.2087 8.666260e-01 9.115717e+00 1.498124e+01 # D_CAO + 5461 245 10 2.2087 8.132240e-01 7.692018e+00 1.506138e+01 # D_CAM + 5462 245 11 2.2087 -3.668037e-01 6.997927e+00 1.510646e+01 # D_CAP + 5463 245 10 2.2087 -1.624421e+00 7.738805e+00 1.503319e+01 # D_CAM + 5464 245 9 2.2087 -1.588808e+00 9.138814e+00 1.501259e+01 # D_CAO + 5465 245 12 2.2087 -4.229331e-01 1.134430e+01 1.475890e+01 # D_CTT + 5466 246 8 2.2087 -7.740431e+00 -1.093473e+01 8.336567e+00 # D_CAT + 5467 246 9 2.2087 -7.517798e+00 -9.753006e+00 9.026321e+00 # D_CAO + 5468 246 10 2.2087 -6.252145e+00 -9.279280e+00 9.115355e+00 # D_CAM + 5469 246 11 2.2087 -5.008702e+00 -1.003992e+01 8.728596e+00 # D_CAP + 5470 246 10 2.2087 -5.302619e+00 -1.123347e+01 8.060073e+00 # D_CAM + 5471 246 9 2.2087 -6.667782e+00 -1.174004e+01 7.956447e+00 # D_CAO + 5472 246 12 2.2087 -9.182492e+00 -1.152168e+01 8.221235e+00 # D_CTT + 5473 247 8 2.2087 1.432073e+01 -8.248230e+00 -9.498198e+00 # D_CAT + 5474 247 9 2.2087 1.508514e+01 -8.588131e+00 -1.046142e+01 # D_CAO + 5475 247 10 2.2087 1.527315e+01 -9.876663e+00 -1.103009e+01 # D_CAM + 5476 247 11 2.2087 1.458495e+01 -1.083642e+01 -1.052680e+01 # D_CAP + 5477 247 10 2.2087 1.373412e+01 -1.066599e+01 -9.402908e+00 # D_CAM + 5478 247 9 2.2087 1.368355e+01 -9.458387e+00 -8.898983e+00 # D_CAO + 5479 247 12 2.2087 1.420682e+01 -6.917659e+00 -8.798686e+00 # D_CTT + 5480 248 8 2.2087 -8.262679e+00 -1.167301e+01 5.505797e-01 # D_CAT + 5481 248 9 2.2087 -8.080453e+00 -1.030238e+01 1.637916e-01 # D_CAO + 5482 248 10 2.2087 -9.094984e+00 -9.564139e+00 5.838292e-02 # D_CAM + 5483 248 11 2.2087 -1.045439e+01 -9.876541e+00 3.983904e-01 # D_CAP + 5484 248 10 2.2087 -1.067118e+01 -1.122414e+01 7.187855e-01 # D_CAM + 5485 248 9 2.2087 -9.494972e+00 -1.215340e+01 9.023470e-01 # D_CAO + 5486 248 12 2.2087 -6.960211e+00 -1.244279e+01 8.112205e-01 # D_CTT + 5487 249 8 2.2087 1.383956e+01 1.394031e+01 -7.292000e-01 # D_CAT + 5488 249 9 2.2087 1.433083e+01 1.268528e+01 -1.534721e-01 # D_CAO + 5489 249 10 2.2087 1.381572e+01 1.236841e+01 1.053885e+00 # D_CAM + 5490 249 11 2.2087 1.269828e+01 1.296796e+01 1.546643e+00 # D_CAP + 5491 249 10 2.2087 1.217562e+01 1.416816e+01 1.053433e+00 # D_CAM + 5492 249 9 2.2087 1.280102e+01 1.468658e+01 -1.843564e-01 # D_CAO + 5493 249 12 2.2087 1.459827e+01 1.448216e+01 -1.899157e+00 # D_CTT + 5494 250 8 2.2087 3.313614e+00 2.845900e+00 9.596822e+00 # D_CAT + 5495 250 9 2.2087 4.138591e+00 2.164915e+00 8.722747e+00 # D_CAO + 5496 250 10 2.2087 3.975990e+00 7.805009e-01 8.373591e+00 # D_CAM + 5497 250 11 2.2087 2.781076e+00 1.550901e-01 8.830840e+00 # D_CAP + 5498 250 10 2.2087 1.850421e+00 9.092838e-01 9.625547e+00 # D_CAM + 5499 250 9 2.2087 2.158912e+00 2.183161e+00 1.006448e+01 # D_CAO + 5500 250 12 2.2087 3.616065e+00 4.258063e+00 9.990509e+00 # D_CTT + +Bonds + + 1 1 1 2 # CAT-CAO + 2 2 1 7 # CAT-CTT + 3 1 1 6 # CAT-CAO + 4 3 2 3 # CAO-CAM + 5 4 2 8 # CAO-HAT + 6 5 3 4 # CAM-CAP + 7 6 3 9 # CAM-HAT + 8 5 4 5 # CAP-CAM + 9 7 4 10 # CAP-HAT + 10 3 5 6 # CAM-CAO + 11 6 5 11 # CAM-HAT + 12 4 6 12 # CAO-HAT + 13 8 7 13 # CTT-HT + 14 8 7 14 # CTT-HT + 15 8 7 15 # CTT-HT + 16 1 16 17 # CAT-CAO + 17 2 16 22 # CAT-CTT + 18 1 16 21 # CAT-CAO + 19 3 17 18 # CAO-CAM + 20 4 17 23 # CAO-HAT + 21 5 18 19 # CAM-CAP + 22 6 18 24 # CAM-HAT + 23 5 19 20 # CAP-CAM + 24 7 19 25 # CAP-HAT + 25 3 20 21 # CAM-CAO + 26 6 20 26 # CAM-HAT + 27 4 21 27 # CAO-HAT + 28 8 22 28 # CTT-HT + 29 8 22 29 # CTT-HT + 30 8 22 30 # CTT-HT + 31 1 31 32 # CAT-CAO + 32 2 31 37 # CAT-CTT + 33 1 31 36 # CAT-CAO + 34 3 32 33 # CAO-CAM + 35 4 32 38 # CAO-HAT + 36 5 33 34 # CAM-CAP + 37 6 33 39 # CAM-HAT + 38 5 34 35 # CAP-CAM + 39 7 34 40 # CAP-HAT + 40 3 35 36 # CAM-CAO + 41 6 35 41 # CAM-HAT + 42 4 36 42 # CAO-HAT + 43 8 37 43 # CTT-HT + 44 8 37 44 # CTT-HT + 45 8 37 45 # CTT-HT + 46 1 46 47 # CAT-CAO + 47 2 46 52 # CAT-CTT + 48 1 46 51 # CAT-CAO + 49 3 47 48 # CAO-CAM + 50 4 47 53 # CAO-HAT + 51 5 48 49 # CAM-CAP + 52 6 48 54 # CAM-HAT + 53 5 49 50 # CAP-CAM + 54 7 49 55 # CAP-HAT + 55 3 50 51 # CAM-CAO + 56 6 50 56 # CAM-HAT + 57 4 51 57 # CAO-HAT + 58 8 52 58 # CTT-HT + 59 8 52 59 # CTT-HT + 60 8 52 60 # CTT-HT + 61 1 61 62 # CAT-CAO + 62 2 61 67 # CAT-CTT + 63 1 61 66 # CAT-CAO + 64 3 62 63 # CAO-CAM + 65 4 62 68 # CAO-HAT + 66 5 63 64 # CAM-CAP + 67 6 63 69 # CAM-HAT + 68 5 64 65 # CAP-CAM + 69 7 64 70 # CAP-HAT + 70 3 65 66 # CAM-CAO + 71 6 65 71 # CAM-HAT + 72 4 66 72 # CAO-HAT + 73 8 67 73 # CTT-HT + 74 8 67 74 # CTT-HT + 75 8 67 75 # CTT-HT + 76 1 76 77 # CAT-CAO + 77 2 76 82 # CAT-CTT + 78 1 76 81 # CAT-CAO + 79 3 77 78 # CAO-CAM + 80 4 77 83 # CAO-HAT + 81 5 78 79 # CAM-CAP + 82 6 78 84 # CAM-HAT + 83 5 79 80 # CAP-CAM + 84 7 79 85 # CAP-HAT + 85 3 80 81 # CAM-CAO + 86 6 80 86 # CAM-HAT + 87 4 81 87 # CAO-HAT + 88 8 82 88 # CTT-HT + 89 8 82 89 # CTT-HT + 90 8 82 90 # CTT-HT + 91 1 91 92 # CAT-CAO + 92 2 91 97 # CAT-CTT + 93 1 91 96 # CAT-CAO + 94 3 92 93 # CAO-CAM + 95 4 92 98 # CAO-HAT + 96 5 93 94 # CAM-CAP + 97 6 93 99 # CAM-HAT + 98 5 94 95 # CAP-CAM + 99 7 94 100 # CAP-HAT + 100 3 95 96 # CAM-CAO + 101 6 95 101 # CAM-HAT + 102 4 96 102 # CAO-HAT + 103 8 97 103 # CTT-HT + 104 8 97 104 # CTT-HT + 105 8 97 105 # CTT-HT + 106 1 106 107 # CAT-CAO + 107 2 106 112 # CAT-CTT + 108 1 106 111 # CAT-CAO + 109 3 107 108 # CAO-CAM + 110 4 107 113 # CAO-HAT + 111 5 108 109 # CAM-CAP + 112 6 108 114 # CAM-HAT + 113 5 109 110 # CAP-CAM + 114 7 109 115 # CAP-HAT + 115 3 110 111 # CAM-CAO + 116 6 110 116 # CAM-HAT + 117 4 111 117 # CAO-HAT + 118 8 112 118 # CTT-HT + 119 8 112 119 # CTT-HT + 120 8 112 120 # CTT-HT + 121 1 121 122 # CAT-CAO + 122 2 121 127 # CAT-CTT + 123 1 121 126 # CAT-CAO + 124 3 122 123 # CAO-CAM + 125 4 122 128 # CAO-HAT + 126 5 123 124 # CAM-CAP + 127 6 123 129 # CAM-HAT + 128 5 124 125 # CAP-CAM + 129 7 124 130 # CAP-HAT + 130 3 125 126 # CAM-CAO + 131 6 125 131 # CAM-HAT + 132 4 126 132 # CAO-HAT + 133 8 127 133 # CTT-HT + 134 8 127 134 # CTT-HT + 135 8 127 135 # CTT-HT + 136 1 136 137 # CAT-CAO + 137 2 136 142 # CAT-CTT + 138 1 136 141 # CAT-CAO + 139 3 137 138 # CAO-CAM + 140 4 137 143 # CAO-HAT + 141 5 138 139 # CAM-CAP + 142 6 138 144 # CAM-HAT + 143 5 139 140 # CAP-CAM + 144 7 139 145 # CAP-HAT + 145 3 140 141 # CAM-CAO + 146 6 140 146 # CAM-HAT + 147 4 141 147 # CAO-HAT + 148 8 142 148 # CTT-HT + 149 8 142 149 # CTT-HT + 150 8 142 150 # CTT-HT + 151 1 151 152 # CAT-CAO + 152 2 151 157 # CAT-CTT + 153 1 151 156 # CAT-CAO + 154 3 152 153 # CAO-CAM + 155 4 152 158 # CAO-HAT + 156 5 153 154 # CAM-CAP + 157 6 153 159 # CAM-HAT + 158 5 154 155 # CAP-CAM + 159 7 154 160 # CAP-HAT + 160 3 155 156 # CAM-CAO + 161 6 155 161 # CAM-HAT + 162 4 156 162 # CAO-HAT + 163 8 157 163 # CTT-HT + 164 8 157 164 # CTT-HT + 165 8 157 165 # CTT-HT + 166 1 166 167 # CAT-CAO + 167 2 166 172 # CAT-CTT + 168 1 166 171 # CAT-CAO + 169 3 167 168 # CAO-CAM + 170 4 167 173 # CAO-HAT + 171 5 168 169 # CAM-CAP + 172 6 168 174 # CAM-HAT + 173 5 169 170 # CAP-CAM + 174 7 169 175 # CAP-HAT + 175 3 170 171 # CAM-CAO + 176 6 170 176 # CAM-HAT + 177 4 171 177 # CAO-HAT + 178 8 172 178 # CTT-HT + 179 8 172 179 # CTT-HT + 180 8 172 180 # CTT-HT + 181 1 181 182 # CAT-CAO + 182 2 181 187 # CAT-CTT + 183 1 181 186 # CAT-CAO + 184 3 182 183 # CAO-CAM + 185 4 182 188 # CAO-HAT + 186 5 183 184 # CAM-CAP + 187 6 183 189 # CAM-HAT + 188 5 184 185 # CAP-CAM + 189 7 184 190 # CAP-HAT + 190 3 185 186 # CAM-CAO + 191 6 185 191 # CAM-HAT + 192 4 186 192 # CAO-HAT + 193 8 187 193 # CTT-HT + 194 8 187 194 # CTT-HT + 195 8 187 195 # CTT-HT + 196 1 196 197 # CAT-CAO + 197 2 196 202 # CAT-CTT + 198 1 196 201 # CAT-CAO + 199 3 197 198 # CAO-CAM + 200 4 197 203 # CAO-HAT + 201 5 198 199 # CAM-CAP + 202 6 198 204 # CAM-HAT + 203 5 199 200 # CAP-CAM + 204 7 199 205 # CAP-HAT + 205 3 200 201 # CAM-CAO + 206 6 200 206 # CAM-HAT + 207 4 201 207 # CAO-HAT + 208 8 202 208 # CTT-HT + 209 8 202 209 # CTT-HT + 210 8 202 210 # CTT-HT + 211 1 211 212 # CAT-CAO + 212 2 211 217 # CAT-CTT + 213 1 211 216 # CAT-CAO + 214 3 212 213 # CAO-CAM + 215 4 212 218 # CAO-HAT + 216 5 213 214 # CAM-CAP + 217 6 213 219 # CAM-HAT + 218 5 214 215 # CAP-CAM + 219 7 214 220 # CAP-HAT + 220 3 215 216 # CAM-CAO + 221 6 215 221 # CAM-HAT + 222 4 216 222 # CAO-HAT + 223 8 217 223 # CTT-HT + 224 8 217 224 # CTT-HT + 225 8 217 225 # CTT-HT + 226 1 226 227 # CAT-CAO + 227 2 226 232 # CAT-CTT + 228 1 226 231 # CAT-CAO + 229 3 227 228 # CAO-CAM + 230 4 227 233 # CAO-HAT + 231 5 228 229 # CAM-CAP + 232 6 228 234 # CAM-HAT + 233 5 229 230 # CAP-CAM + 234 7 229 235 # CAP-HAT + 235 3 230 231 # CAM-CAO + 236 6 230 236 # CAM-HAT + 237 4 231 237 # CAO-HAT + 238 8 232 238 # CTT-HT + 239 8 232 239 # CTT-HT + 240 8 232 240 # CTT-HT + 241 1 241 242 # CAT-CAO + 242 2 241 247 # CAT-CTT + 243 1 241 246 # CAT-CAO + 244 3 242 243 # CAO-CAM + 245 4 242 248 # CAO-HAT + 246 5 243 244 # CAM-CAP + 247 6 243 249 # CAM-HAT + 248 5 244 245 # CAP-CAM + 249 7 244 250 # CAP-HAT + 250 3 245 246 # CAM-CAO + 251 6 245 251 # CAM-HAT + 252 4 246 252 # CAO-HAT + 253 8 247 253 # CTT-HT + 254 8 247 254 # CTT-HT + 255 8 247 255 # CTT-HT + 256 1 256 257 # CAT-CAO + 257 2 256 262 # CAT-CTT + 258 1 256 261 # CAT-CAO + 259 3 257 258 # CAO-CAM + 260 4 257 263 # CAO-HAT + 261 5 258 259 # CAM-CAP + 262 6 258 264 # CAM-HAT + 263 5 259 260 # CAP-CAM + 264 7 259 265 # CAP-HAT + 265 3 260 261 # CAM-CAO + 266 6 260 266 # CAM-HAT + 267 4 261 267 # CAO-HAT + 268 8 262 268 # CTT-HT + 269 8 262 269 # CTT-HT + 270 8 262 270 # CTT-HT + 271 1 271 272 # CAT-CAO + 272 2 271 277 # CAT-CTT + 273 1 271 276 # CAT-CAO + 274 3 272 273 # CAO-CAM + 275 4 272 278 # CAO-HAT + 276 5 273 274 # CAM-CAP + 277 6 273 279 # CAM-HAT + 278 5 274 275 # CAP-CAM + 279 7 274 280 # CAP-HAT + 280 3 275 276 # CAM-CAO + 281 6 275 281 # CAM-HAT + 282 4 276 282 # CAO-HAT + 283 8 277 283 # CTT-HT + 284 8 277 284 # CTT-HT + 285 8 277 285 # CTT-HT + 286 1 286 287 # CAT-CAO + 287 2 286 292 # CAT-CTT + 288 1 286 291 # CAT-CAO + 289 3 287 288 # CAO-CAM + 290 4 287 293 # CAO-HAT + 291 5 288 289 # CAM-CAP + 292 6 288 294 # CAM-HAT + 293 5 289 290 # CAP-CAM + 294 7 289 295 # CAP-HAT + 295 3 290 291 # CAM-CAO + 296 6 290 296 # CAM-HAT + 297 4 291 297 # CAO-HAT + 298 8 292 298 # CTT-HT + 299 8 292 299 # CTT-HT + 300 8 292 300 # CTT-HT + 301 1 301 302 # CAT-CAO + 302 2 301 307 # CAT-CTT + 303 1 301 306 # CAT-CAO + 304 3 302 303 # CAO-CAM + 305 4 302 308 # CAO-HAT + 306 5 303 304 # CAM-CAP + 307 6 303 309 # CAM-HAT + 308 5 304 305 # CAP-CAM + 309 7 304 310 # CAP-HAT + 310 3 305 306 # CAM-CAO + 311 6 305 311 # CAM-HAT + 312 4 306 312 # CAO-HAT + 313 8 307 313 # CTT-HT + 314 8 307 314 # CTT-HT + 315 8 307 315 # CTT-HT + 316 1 316 317 # CAT-CAO + 317 2 316 322 # CAT-CTT + 318 1 316 321 # CAT-CAO + 319 3 317 318 # CAO-CAM + 320 4 317 323 # CAO-HAT + 321 5 318 319 # CAM-CAP + 322 6 318 324 # CAM-HAT + 323 5 319 320 # CAP-CAM + 324 7 319 325 # CAP-HAT + 325 3 320 321 # CAM-CAO + 326 6 320 326 # CAM-HAT + 327 4 321 327 # CAO-HAT + 328 8 322 328 # CTT-HT + 329 8 322 329 # CTT-HT + 330 8 322 330 # CTT-HT + 331 1 331 332 # CAT-CAO + 332 2 331 337 # CAT-CTT + 333 1 331 336 # CAT-CAO + 334 3 332 333 # CAO-CAM + 335 4 332 338 # CAO-HAT + 336 5 333 334 # CAM-CAP + 337 6 333 339 # CAM-HAT + 338 5 334 335 # CAP-CAM + 339 7 334 340 # CAP-HAT + 340 3 335 336 # CAM-CAO + 341 6 335 341 # CAM-HAT + 342 4 336 342 # CAO-HAT + 343 8 337 343 # CTT-HT + 344 8 337 344 # CTT-HT + 345 8 337 345 # CTT-HT + 346 1 346 347 # CAT-CAO + 347 2 346 352 # CAT-CTT + 348 1 346 351 # CAT-CAO + 349 3 347 348 # CAO-CAM + 350 4 347 353 # CAO-HAT + 351 5 348 349 # CAM-CAP + 352 6 348 354 # CAM-HAT + 353 5 349 350 # CAP-CAM + 354 7 349 355 # CAP-HAT + 355 3 350 351 # CAM-CAO + 356 6 350 356 # CAM-HAT + 357 4 351 357 # CAO-HAT + 358 8 352 358 # CTT-HT + 359 8 352 359 # CTT-HT + 360 8 352 360 # CTT-HT + 361 1 361 362 # CAT-CAO + 362 2 361 367 # CAT-CTT + 363 1 361 366 # CAT-CAO + 364 3 362 363 # CAO-CAM + 365 4 362 368 # CAO-HAT + 366 5 363 364 # CAM-CAP + 367 6 363 369 # CAM-HAT + 368 5 364 365 # CAP-CAM + 369 7 364 370 # CAP-HAT + 370 3 365 366 # CAM-CAO + 371 6 365 371 # CAM-HAT + 372 4 366 372 # CAO-HAT + 373 8 367 373 # CTT-HT + 374 8 367 374 # CTT-HT + 375 8 367 375 # CTT-HT + 376 1 376 377 # CAT-CAO + 377 2 376 382 # CAT-CTT + 378 1 376 381 # CAT-CAO + 379 3 377 378 # CAO-CAM + 380 4 377 383 # CAO-HAT + 381 5 378 379 # CAM-CAP + 382 6 378 384 # CAM-HAT + 383 5 379 380 # CAP-CAM + 384 7 379 385 # CAP-HAT + 385 3 380 381 # CAM-CAO + 386 6 380 386 # CAM-HAT + 387 4 381 387 # CAO-HAT + 388 8 382 388 # CTT-HT + 389 8 382 389 # CTT-HT + 390 8 382 390 # CTT-HT + 391 1 391 392 # CAT-CAO + 392 2 391 397 # CAT-CTT + 393 1 391 396 # CAT-CAO + 394 3 392 393 # CAO-CAM + 395 4 392 398 # CAO-HAT + 396 5 393 394 # CAM-CAP + 397 6 393 399 # CAM-HAT + 398 5 394 395 # CAP-CAM + 399 7 394 400 # CAP-HAT + 400 3 395 396 # CAM-CAO + 401 6 395 401 # CAM-HAT + 402 4 396 402 # CAO-HAT + 403 8 397 403 # CTT-HT + 404 8 397 404 # CTT-HT + 405 8 397 405 # CTT-HT + 406 1 406 407 # CAT-CAO + 407 2 406 412 # CAT-CTT + 408 1 406 411 # CAT-CAO + 409 3 407 408 # CAO-CAM + 410 4 407 413 # CAO-HAT + 411 5 408 409 # CAM-CAP + 412 6 408 414 # CAM-HAT + 413 5 409 410 # CAP-CAM + 414 7 409 415 # CAP-HAT + 415 3 410 411 # CAM-CAO + 416 6 410 416 # CAM-HAT + 417 4 411 417 # CAO-HAT + 418 8 412 418 # CTT-HT + 419 8 412 419 # CTT-HT + 420 8 412 420 # CTT-HT + 421 1 421 422 # CAT-CAO + 422 2 421 427 # CAT-CTT + 423 1 421 426 # CAT-CAO + 424 3 422 423 # CAO-CAM + 425 4 422 428 # CAO-HAT + 426 5 423 424 # CAM-CAP + 427 6 423 429 # CAM-HAT + 428 5 424 425 # CAP-CAM + 429 7 424 430 # CAP-HAT + 430 3 425 426 # CAM-CAO + 431 6 425 431 # CAM-HAT + 432 4 426 432 # CAO-HAT + 433 8 427 433 # CTT-HT + 434 8 427 434 # CTT-HT + 435 8 427 435 # CTT-HT + 436 1 436 437 # CAT-CAO + 437 2 436 442 # CAT-CTT + 438 1 436 441 # CAT-CAO + 439 3 437 438 # CAO-CAM + 440 4 437 443 # CAO-HAT + 441 5 438 439 # CAM-CAP + 442 6 438 444 # CAM-HAT + 443 5 439 440 # CAP-CAM + 444 7 439 445 # CAP-HAT + 445 3 440 441 # CAM-CAO + 446 6 440 446 # CAM-HAT + 447 4 441 447 # CAO-HAT + 448 8 442 448 # CTT-HT + 449 8 442 449 # CTT-HT + 450 8 442 450 # CTT-HT + 451 1 451 452 # CAT-CAO + 452 2 451 457 # CAT-CTT + 453 1 451 456 # CAT-CAO + 454 3 452 453 # CAO-CAM + 455 4 452 458 # CAO-HAT + 456 5 453 454 # CAM-CAP + 457 6 453 459 # CAM-HAT + 458 5 454 455 # CAP-CAM + 459 7 454 460 # CAP-HAT + 460 3 455 456 # CAM-CAO + 461 6 455 461 # CAM-HAT + 462 4 456 462 # CAO-HAT + 463 8 457 463 # CTT-HT + 464 8 457 464 # CTT-HT + 465 8 457 465 # CTT-HT + 466 1 466 467 # CAT-CAO + 467 2 466 472 # CAT-CTT + 468 1 466 471 # CAT-CAO + 469 3 467 468 # CAO-CAM + 470 4 467 473 # CAO-HAT + 471 5 468 469 # CAM-CAP + 472 6 468 474 # CAM-HAT + 473 5 469 470 # CAP-CAM + 474 7 469 475 # CAP-HAT + 475 3 470 471 # CAM-CAO + 476 6 470 476 # CAM-HAT + 477 4 471 477 # CAO-HAT + 478 8 472 478 # CTT-HT + 479 8 472 479 # CTT-HT + 480 8 472 480 # CTT-HT + 481 1 481 482 # CAT-CAO + 482 2 481 487 # CAT-CTT + 483 1 481 486 # CAT-CAO + 484 3 482 483 # CAO-CAM + 485 4 482 488 # CAO-HAT + 486 5 483 484 # CAM-CAP + 487 6 483 489 # CAM-HAT + 488 5 484 485 # CAP-CAM + 489 7 484 490 # CAP-HAT + 490 3 485 486 # CAM-CAO + 491 6 485 491 # CAM-HAT + 492 4 486 492 # CAO-HAT + 493 8 487 493 # CTT-HT + 494 8 487 494 # CTT-HT + 495 8 487 495 # CTT-HT + 496 1 496 497 # CAT-CAO + 497 2 496 502 # CAT-CTT + 498 1 496 501 # CAT-CAO + 499 3 497 498 # CAO-CAM + 500 4 497 503 # CAO-HAT + 501 5 498 499 # CAM-CAP + 502 6 498 504 # CAM-HAT + 503 5 499 500 # CAP-CAM + 504 7 499 505 # CAP-HAT + 505 3 500 501 # CAM-CAO + 506 6 500 506 # CAM-HAT + 507 4 501 507 # CAO-HAT + 508 8 502 508 # CTT-HT + 509 8 502 509 # CTT-HT + 510 8 502 510 # CTT-HT + 511 1 511 512 # CAT-CAO + 512 2 511 517 # CAT-CTT + 513 1 511 516 # CAT-CAO + 514 3 512 513 # CAO-CAM + 515 4 512 518 # CAO-HAT + 516 5 513 514 # CAM-CAP + 517 6 513 519 # CAM-HAT + 518 5 514 515 # CAP-CAM + 519 7 514 520 # CAP-HAT + 520 3 515 516 # CAM-CAO + 521 6 515 521 # CAM-HAT + 522 4 516 522 # CAO-HAT + 523 8 517 523 # CTT-HT + 524 8 517 524 # CTT-HT + 525 8 517 525 # CTT-HT + 526 1 526 527 # CAT-CAO + 527 2 526 532 # CAT-CTT + 528 1 526 531 # CAT-CAO + 529 3 527 528 # CAO-CAM + 530 4 527 533 # CAO-HAT + 531 5 528 529 # CAM-CAP + 532 6 528 534 # CAM-HAT + 533 5 529 530 # CAP-CAM + 534 7 529 535 # CAP-HAT + 535 3 530 531 # CAM-CAO + 536 6 530 536 # CAM-HAT + 537 4 531 537 # CAO-HAT + 538 8 532 538 # CTT-HT + 539 8 532 539 # CTT-HT + 540 8 532 540 # CTT-HT + 541 1 541 542 # CAT-CAO + 542 2 541 547 # CAT-CTT + 543 1 541 546 # CAT-CAO + 544 3 542 543 # CAO-CAM + 545 4 542 548 # CAO-HAT + 546 5 543 544 # CAM-CAP + 547 6 543 549 # CAM-HAT + 548 5 544 545 # CAP-CAM + 549 7 544 550 # CAP-HAT + 550 3 545 546 # CAM-CAO + 551 6 545 551 # CAM-HAT + 552 4 546 552 # CAO-HAT + 553 8 547 553 # CTT-HT + 554 8 547 554 # CTT-HT + 555 8 547 555 # CTT-HT + 556 1 556 557 # CAT-CAO + 557 2 556 562 # CAT-CTT + 558 1 556 561 # CAT-CAO + 559 3 557 558 # CAO-CAM + 560 4 557 563 # CAO-HAT + 561 5 558 559 # CAM-CAP + 562 6 558 564 # CAM-HAT + 563 5 559 560 # CAP-CAM + 564 7 559 565 # CAP-HAT + 565 3 560 561 # CAM-CAO + 566 6 560 566 # CAM-HAT + 567 4 561 567 # CAO-HAT + 568 8 562 568 # CTT-HT + 569 8 562 569 # CTT-HT + 570 8 562 570 # CTT-HT + 571 1 571 572 # CAT-CAO + 572 2 571 577 # CAT-CTT + 573 1 571 576 # CAT-CAO + 574 3 572 573 # CAO-CAM + 575 4 572 578 # CAO-HAT + 576 5 573 574 # CAM-CAP + 577 6 573 579 # CAM-HAT + 578 5 574 575 # CAP-CAM + 579 7 574 580 # CAP-HAT + 580 3 575 576 # CAM-CAO + 581 6 575 581 # CAM-HAT + 582 4 576 582 # CAO-HAT + 583 8 577 583 # CTT-HT + 584 8 577 584 # CTT-HT + 585 8 577 585 # CTT-HT + 586 1 586 587 # CAT-CAO + 587 2 586 592 # CAT-CTT + 588 1 586 591 # CAT-CAO + 589 3 587 588 # CAO-CAM + 590 4 587 593 # CAO-HAT + 591 5 588 589 # CAM-CAP + 592 6 588 594 # CAM-HAT + 593 5 589 590 # CAP-CAM + 594 7 589 595 # CAP-HAT + 595 3 590 591 # CAM-CAO + 596 6 590 596 # CAM-HAT + 597 4 591 597 # CAO-HAT + 598 8 592 598 # CTT-HT + 599 8 592 599 # CTT-HT + 600 8 592 600 # CTT-HT + 601 1 601 602 # CAT-CAO + 602 2 601 607 # CAT-CTT + 603 1 601 606 # CAT-CAO + 604 3 602 603 # CAO-CAM + 605 4 602 608 # CAO-HAT + 606 5 603 604 # CAM-CAP + 607 6 603 609 # CAM-HAT + 608 5 604 605 # CAP-CAM + 609 7 604 610 # CAP-HAT + 610 3 605 606 # CAM-CAO + 611 6 605 611 # CAM-HAT + 612 4 606 612 # CAO-HAT + 613 8 607 613 # CTT-HT + 614 8 607 614 # CTT-HT + 615 8 607 615 # CTT-HT + 616 1 616 617 # CAT-CAO + 617 2 616 622 # CAT-CTT + 618 1 616 621 # CAT-CAO + 619 3 617 618 # CAO-CAM + 620 4 617 623 # CAO-HAT + 621 5 618 619 # CAM-CAP + 622 6 618 624 # CAM-HAT + 623 5 619 620 # CAP-CAM + 624 7 619 625 # CAP-HAT + 625 3 620 621 # CAM-CAO + 626 6 620 626 # CAM-HAT + 627 4 621 627 # CAO-HAT + 628 8 622 628 # CTT-HT + 629 8 622 629 # CTT-HT + 630 8 622 630 # CTT-HT + 631 1 631 632 # CAT-CAO + 632 2 631 637 # CAT-CTT + 633 1 631 636 # CAT-CAO + 634 3 632 633 # CAO-CAM + 635 4 632 638 # CAO-HAT + 636 5 633 634 # CAM-CAP + 637 6 633 639 # CAM-HAT + 638 5 634 635 # CAP-CAM + 639 7 634 640 # CAP-HAT + 640 3 635 636 # CAM-CAO + 641 6 635 641 # CAM-HAT + 642 4 636 642 # CAO-HAT + 643 8 637 643 # CTT-HT + 644 8 637 644 # CTT-HT + 645 8 637 645 # CTT-HT + 646 1 646 647 # CAT-CAO + 647 2 646 652 # CAT-CTT + 648 1 646 651 # CAT-CAO + 649 3 647 648 # CAO-CAM + 650 4 647 653 # CAO-HAT + 651 5 648 649 # CAM-CAP + 652 6 648 654 # CAM-HAT + 653 5 649 650 # CAP-CAM + 654 7 649 655 # CAP-HAT + 655 3 650 651 # CAM-CAO + 656 6 650 656 # CAM-HAT + 657 4 651 657 # CAO-HAT + 658 8 652 658 # CTT-HT + 659 8 652 659 # CTT-HT + 660 8 652 660 # CTT-HT + 661 1 661 662 # CAT-CAO + 662 2 661 667 # CAT-CTT + 663 1 661 666 # CAT-CAO + 664 3 662 663 # CAO-CAM + 665 4 662 668 # CAO-HAT + 666 5 663 664 # CAM-CAP + 667 6 663 669 # CAM-HAT + 668 5 664 665 # CAP-CAM + 669 7 664 670 # CAP-HAT + 670 3 665 666 # CAM-CAO + 671 6 665 671 # CAM-HAT + 672 4 666 672 # CAO-HAT + 673 8 667 673 # CTT-HT + 674 8 667 674 # CTT-HT + 675 8 667 675 # CTT-HT + 676 1 676 677 # CAT-CAO + 677 2 676 682 # CAT-CTT + 678 1 676 681 # CAT-CAO + 679 3 677 678 # CAO-CAM + 680 4 677 683 # CAO-HAT + 681 5 678 679 # CAM-CAP + 682 6 678 684 # CAM-HAT + 683 5 679 680 # CAP-CAM + 684 7 679 685 # CAP-HAT + 685 3 680 681 # CAM-CAO + 686 6 680 686 # CAM-HAT + 687 4 681 687 # CAO-HAT + 688 8 682 688 # CTT-HT + 689 8 682 689 # CTT-HT + 690 8 682 690 # CTT-HT + 691 1 691 692 # CAT-CAO + 692 2 691 697 # CAT-CTT + 693 1 691 696 # CAT-CAO + 694 3 692 693 # CAO-CAM + 695 4 692 698 # CAO-HAT + 696 5 693 694 # CAM-CAP + 697 6 693 699 # CAM-HAT + 698 5 694 695 # CAP-CAM + 699 7 694 700 # CAP-HAT + 700 3 695 696 # CAM-CAO + 701 6 695 701 # CAM-HAT + 702 4 696 702 # CAO-HAT + 703 8 697 703 # CTT-HT + 704 8 697 704 # CTT-HT + 705 8 697 705 # CTT-HT + 706 1 706 707 # CAT-CAO + 707 2 706 712 # CAT-CTT + 708 1 706 711 # CAT-CAO + 709 3 707 708 # CAO-CAM + 710 4 707 713 # CAO-HAT + 711 5 708 709 # CAM-CAP + 712 6 708 714 # CAM-HAT + 713 5 709 710 # CAP-CAM + 714 7 709 715 # CAP-HAT + 715 3 710 711 # CAM-CAO + 716 6 710 716 # CAM-HAT + 717 4 711 717 # CAO-HAT + 718 8 712 718 # CTT-HT + 719 8 712 719 # CTT-HT + 720 8 712 720 # CTT-HT + 721 1 721 722 # CAT-CAO + 722 2 721 727 # CAT-CTT + 723 1 721 726 # CAT-CAO + 724 3 722 723 # CAO-CAM + 725 4 722 728 # CAO-HAT + 726 5 723 724 # CAM-CAP + 727 6 723 729 # CAM-HAT + 728 5 724 725 # CAP-CAM + 729 7 724 730 # CAP-HAT + 730 3 725 726 # CAM-CAO + 731 6 725 731 # CAM-HAT + 732 4 726 732 # CAO-HAT + 733 8 727 733 # CTT-HT + 734 8 727 734 # CTT-HT + 735 8 727 735 # CTT-HT + 736 1 736 737 # CAT-CAO + 737 2 736 742 # CAT-CTT + 738 1 736 741 # CAT-CAO + 739 3 737 738 # CAO-CAM + 740 4 737 743 # CAO-HAT + 741 5 738 739 # CAM-CAP + 742 6 738 744 # CAM-HAT + 743 5 739 740 # CAP-CAM + 744 7 739 745 # CAP-HAT + 745 3 740 741 # CAM-CAO + 746 6 740 746 # CAM-HAT + 747 4 741 747 # CAO-HAT + 748 8 742 748 # CTT-HT + 749 8 742 749 # CTT-HT + 750 8 742 750 # CTT-HT + 751 1 751 752 # CAT-CAO + 752 2 751 757 # CAT-CTT + 753 1 751 756 # CAT-CAO + 754 3 752 753 # CAO-CAM + 755 4 752 758 # CAO-HAT + 756 5 753 754 # CAM-CAP + 757 6 753 759 # CAM-HAT + 758 5 754 755 # CAP-CAM + 759 7 754 760 # CAP-HAT + 760 3 755 756 # CAM-CAO + 761 6 755 761 # CAM-HAT + 762 4 756 762 # CAO-HAT + 763 8 757 763 # CTT-HT + 764 8 757 764 # CTT-HT + 765 8 757 765 # CTT-HT + 766 1 766 767 # CAT-CAO + 767 2 766 772 # CAT-CTT + 768 1 766 771 # CAT-CAO + 769 3 767 768 # CAO-CAM + 770 4 767 773 # CAO-HAT + 771 5 768 769 # CAM-CAP + 772 6 768 774 # CAM-HAT + 773 5 769 770 # CAP-CAM + 774 7 769 775 # CAP-HAT + 775 3 770 771 # CAM-CAO + 776 6 770 776 # CAM-HAT + 777 4 771 777 # CAO-HAT + 778 8 772 778 # CTT-HT + 779 8 772 779 # CTT-HT + 780 8 772 780 # CTT-HT + 781 1 781 782 # CAT-CAO + 782 2 781 787 # CAT-CTT + 783 1 781 786 # CAT-CAO + 784 3 782 783 # CAO-CAM + 785 4 782 788 # CAO-HAT + 786 5 783 784 # CAM-CAP + 787 6 783 789 # CAM-HAT + 788 5 784 785 # CAP-CAM + 789 7 784 790 # CAP-HAT + 790 3 785 786 # CAM-CAO + 791 6 785 791 # CAM-HAT + 792 4 786 792 # CAO-HAT + 793 8 787 793 # CTT-HT + 794 8 787 794 # CTT-HT + 795 8 787 795 # CTT-HT + 796 1 796 797 # CAT-CAO + 797 2 796 802 # CAT-CTT + 798 1 796 801 # CAT-CAO + 799 3 797 798 # CAO-CAM + 800 4 797 803 # CAO-HAT + 801 5 798 799 # CAM-CAP + 802 6 798 804 # CAM-HAT + 803 5 799 800 # CAP-CAM + 804 7 799 805 # CAP-HAT + 805 3 800 801 # CAM-CAO + 806 6 800 806 # CAM-HAT + 807 4 801 807 # CAO-HAT + 808 8 802 808 # CTT-HT + 809 8 802 809 # CTT-HT + 810 8 802 810 # CTT-HT + 811 1 811 812 # CAT-CAO + 812 2 811 817 # CAT-CTT + 813 1 811 816 # CAT-CAO + 814 3 812 813 # CAO-CAM + 815 4 812 818 # CAO-HAT + 816 5 813 814 # CAM-CAP + 817 6 813 819 # CAM-HAT + 818 5 814 815 # CAP-CAM + 819 7 814 820 # CAP-HAT + 820 3 815 816 # CAM-CAO + 821 6 815 821 # CAM-HAT + 822 4 816 822 # CAO-HAT + 823 8 817 823 # CTT-HT + 824 8 817 824 # CTT-HT + 825 8 817 825 # CTT-HT + 826 1 826 827 # CAT-CAO + 827 2 826 832 # CAT-CTT + 828 1 826 831 # CAT-CAO + 829 3 827 828 # CAO-CAM + 830 4 827 833 # CAO-HAT + 831 5 828 829 # CAM-CAP + 832 6 828 834 # CAM-HAT + 833 5 829 830 # CAP-CAM + 834 7 829 835 # CAP-HAT + 835 3 830 831 # CAM-CAO + 836 6 830 836 # CAM-HAT + 837 4 831 837 # CAO-HAT + 838 8 832 838 # CTT-HT + 839 8 832 839 # CTT-HT + 840 8 832 840 # CTT-HT + 841 1 841 842 # CAT-CAO + 842 2 841 847 # CAT-CTT + 843 1 841 846 # CAT-CAO + 844 3 842 843 # CAO-CAM + 845 4 842 848 # CAO-HAT + 846 5 843 844 # CAM-CAP + 847 6 843 849 # CAM-HAT + 848 5 844 845 # CAP-CAM + 849 7 844 850 # CAP-HAT + 850 3 845 846 # CAM-CAO + 851 6 845 851 # CAM-HAT + 852 4 846 852 # CAO-HAT + 853 8 847 853 # CTT-HT + 854 8 847 854 # CTT-HT + 855 8 847 855 # CTT-HT + 856 1 856 857 # CAT-CAO + 857 2 856 862 # CAT-CTT + 858 1 856 861 # CAT-CAO + 859 3 857 858 # CAO-CAM + 860 4 857 863 # CAO-HAT + 861 5 858 859 # CAM-CAP + 862 6 858 864 # CAM-HAT + 863 5 859 860 # CAP-CAM + 864 7 859 865 # CAP-HAT + 865 3 860 861 # CAM-CAO + 866 6 860 866 # CAM-HAT + 867 4 861 867 # CAO-HAT + 868 8 862 868 # CTT-HT + 869 8 862 869 # CTT-HT + 870 8 862 870 # CTT-HT + 871 1 871 872 # CAT-CAO + 872 2 871 877 # CAT-CTT + 873 1 871 876 # CAT-CAO + 874 3 872 873 # CAO-CAM + 875 4 872 878 # CAO-HAT + 876 5 873 874 # CAM-CAP + 877 6 873 879 # CAM-HAT + 878 5 874 875 # CAP-CAM + 879 7 874 880 # CAP-HAT + 880 3 875 876 # CAM-CAO + 881 6 875 881 # CAM-HAT + 882 4 876 882 # CAO-HAT + 883 8 877 883 # CTT-HT + 884 8 877 884 # CTT-HT + 885 8 877 885 # CTT-HT + 886 1 886 887 # CAT-CAO + 887 2 886 892 # CAT-CTT + 888 1 886 891 # CAT-CAO + 889 3 887 888 # CAO-CAM + 890 4 887 893 # CAO-HAT + 891 5 888 889 # CAM-CAP + 892 6 888 894 # CAM-HAT + 893 5 889 890 # CAP-CAM + 894 7 889 895 # CAP-HAT + 895 3 890 891 # CAM-CAO + 896 6 890 896 # CAM-HAT + 897 4 891 897 # CAO-HAT + 898 8 892 898 # CTT-HT + 899 8 892 899 # CTT-HT + 900 8 892 900 # CTT-HT + 901 1 901 902 # CAT-CAO + 902 2 901 907 # CAT-CTT + 903 1 901 906 # CAT-CAO + 904 3 902 903 # CAO-CAM + 905 4 902 908 # CAO-HAT + 906 5 903 904 # CAM-CAP + 907 6 903 909 # CAM-HAT + 908 5 904 905 # CAP-CAM + 909 7 904 910 # CAP-HAT + 910 3 905 906 # CAM-CAO + 911 6 905 911 # CAM-HAT + 912 4 906 912 # CAO-HAT + 913 8 907 913 # CTT-HT + 914 8 907 914 # CTT-HT + 915 8 907 915 # CTT-HT + 916 1 916 917 # CAT-CAO + 917 2 916 922 # CAT-CTT + 918 1 916 921 # CAT-CAO + 919 3 917 918 # CAO-CAM + 920 4 917 923 # CAO-HAT + 921 5 918 919 # CAM-CAP + 922 6 918 924 # CAM-HAT + 923 5 919 920 # CAP-CAM + 924 7 919 925 # CAP-HAT + 925 3 920 921 # CAM-CAO + 926 6 920 926 # CAM-HAT + 927 4 921 927 # CAO-HAT + 928 8 922 928 # CTT-HT + 929 8 922 929 # CTT-HT + 930 8 922 930 # CTT-HT + 931 1 931 932 # CAT-CAO + 932 2 931 937 # CAT-CTT + 933 1 931 936 # CAT-CAO + 934 3 932 933 # CAO-CAM + 935 4 932 938 # CAO-HAT + 936 5 933 934 # CAM-CAP + 937 6 933 939 # CAM-HAT + 938 5 934 935 # CAP-CAM + 939 7 934 940 # CAP-HAT + 940 3 935 936 # CAM-CAO + 941 6 935 941 # CAM-HAT + 942 4 936 942 # CAO-HAT + 943 8 937 943 # CTT-HT + 944 8 937 944 # CTT-HT + 945 8 937 945 # CTT-HT + 946 1 946 947 # CAT-CAO + 947 2 946 952 # CAT-CTT + 948 1 946 951 # CAT-CAO + 949 3 947 948 # CAO-CAM + 950 4 947 953 # CAO-HAT + 951 5 948 949 # CAM-CAP + 952 6 948 954 # CAM-HAT + 953 5 949 950 # CAP-CAM + 954 7 949 955 # CAP-HAT + 955 3 950 951 # CAM-CAO + 956 6 950 956 # CAM-HAT + 957 4 951 957 # CAO-HAT + 958 8 952 958 # CTT-HT + 959 8 952 959 # CTT-HT + 960 8 952 960 # CTT-HT + 961 1 961 962 # CAT-CAO + 962 2 961 967 # CAT-CTT + 963 1 961 966 # CAT-CAO + 964 3 962 963 # CAO-CAM + 965 4 962 968 # CAO-HAT + 966 5 963 964 # CAM-CAP + 967 6 963 969 # CAM-HAT + 968 5 964 965 # CAP-CAM + 969 7 964 970 # CAP-HAT + 970 3 965 966 # CAM-CAO + 971 6 965 971 # CAM-HAT + 972 4 966 972 # CAO-HAT + 973 8 967 973 # CTT-HT + 974 8 967 974 # CTT-HT + 975 8 967 975 # CTT-HT + 976 1 976 977 # CAT-CAO + 977 2 976 982 # CAT-CTT + 978 1 976 981 # CAT-CAO + 979 3 977 978 # CAO-CAM + 980 4 977 983 # CAO-HAT + 981 5 978 979 # CAM-CAP + 982 6 978 984 # CAM-HAT + 983 5 979 980 # CAP-CAM + 984 7 979 985 # CAP-HAT + 985 3 980 981 # CAM-CAO + 986 6 980 986 # CAM-HAT + 987 4 981 987 # CAO-HAT + 988 8 982 988 # CTT-HT + 989 8 982 989 # CTT-HT + 990 8 982 990 # CTT-HT + 991 1 991 992 # CAT-CAO + 992 2 991 997 # CAT-CTT + 993 1 991 996 # CAT-CAO + 994 3 992 993 # CAO-CAM + 995 4 992 998 # CAO-HAT + 996 5 993 994 # CAM-CAP + 997 6 993 999 # CAM-HAT + 998 5 994 995 # CAP-CAM + 999 7 994 1000 # CAP-HAT + 1000 3 995 996 # CAM-CAO + 1001 6 995 1001 # CAM-HAT + 1002 4 996 1002 # CAO-HAT + 1003 8 997 1003 # CTT-HT + 1004 8 997 1004 # CTT-HT + 1005 8 997 1005 # CTT-HT + 1006 1 1006 1007 # CAT-CAO + 1007 2 1006 1012 # CAT-CTT + 1008 1 1006 1011 # CAT-CAO + 1009 3 1007 1008 # CAO-CAM + 1010 4 1007 1013 # CAO-HAT + 1011 5 1008 1009 # CAM-CAP + 1012 6 1008 1014 # CAM-HAT + 1013 5 1009 1010 # CAP-CAM + 1014 7 1009 1015 # CAP-HAT + 1015 3 1010 1011 # CAM-CAO + 1016 6 1010 1016 # CAM-HAT + 1017 4 1011 1017 # CAO-HAT + 1018 8 1012 1018 # CTT-HT + 1019 8 1012 1019 # CTT-HT + 1020 8 1012 1020 # CTT-HT + 1021 1 1021 1022 # CAT-CAO + 1022 2 1021 1027 # CAT-CTT + 1023 1 1021 1026 # CAT-CAO + 1024 3 1022 1023 # CAO-CAM + 1025 4 1022 1028 # CAO-HAT + 1026 5 1023 1024 # CAM-CAP + 1027 6 1023 1029 # CAM-HAT + 1028 5 1024 1025 # CAP-CAM + 1029 7 1024 1030 # CAP-HAT + 1030 3 1025 1026 # CAM-CAO + 1031 6 1025 1031 # CAM-HAT + 1032 4 1026 1032 # CAO-HAT + 1033 8 1027 1033 # CTT-HT + 1034 8 1027 1034 # CTT-HT + 1035 8 1027 1035 # CTT-HT + 1036 1 1036 1037 # CAT-CAO + 1037 2 1036 1042 # CAT-CTT + 1038 1 1036 1041 # CAT-CAO + 1039 3 1037 1038 # CAO-CAM + 1040 4 1037 1043 # CAO-HAT + 1041 5 1038 1039 # CAM-CAP + 1042 6 1038 1044 # CAM-HAT + 1043 5 1039 1040 # CAP-CAM + 1044 7 1039 1045 # CAP-HAT + 1045 3 1040 1041 # CAM-CAO + 1046 6 1040 1046 # CAM-HAT + 1047 4 1041 1047 # CAO-HAT + 1048 8 1042 1048 # CTT-HT + 1049 8 1042 1049 # CTT-HT + 1050 8 1042 1050 # CTT-HT + 1051 1 1051 1052 # CAT-CAO + 1052 2 1051 1057 # CAT-CTT + 1053 1 1051 1056 # CAT-CAO + 1054 3 1052 1053 # CAO-CAM + 1055 4 1052 1058 # CAO-HAT + 1056 5 1053 1054 # CAM-CAP + 1057 6 1053 1059 # CAM-HAT + 1058 5 1054 1055 # CAP-CAM + 1059 7 1054 1060 # CAP-HAT + 1060 3 1055 1056 # CAM-CAO + 1061 6 1055 1061 # CAM-HAT + 1062 4 1056 1062 # CAO-HAT + 1063 8 1057 1063 # CTT-HT + 1064 8 1057 1064 # CTT-HT + 1065 8 1057 1065 # CTT-HT + 1066 1 1066 1067 # CAT-CAO + 1067 2 1066 1072 # CAT-CTT + 1068 1 1066 1071 # CAT-CAO + 1069 3 1067 1068 # CAO-CAM + 1070 4 1067 1073 # CAO-HAT + 1071 5 1068 1069 # CAM-CAP + 1072 6 1068 1074 # CAM-HAT + 1073 5 1069 1070 # CAP-CAM + 1074 7 1069 1075 # CAP-HAT + 1075 3 1070 1071 # CAM-CAO + 1076 6 1070 1076 # CAM-HAT + 1077 4 1071 1077 # CAO-HAT + 1078 8 1072 1078 # CTT-HT + 1079 8 1072 1079 # CTT-HT + 1080 8 1072 1080 # CTT-HT + 1081 1 1081 1082 # CAT-CAO + 1082 2 1081 1087 # CAT-CTT + 1083 1 1081 1086 # CAT-CAO + 1084 3 1082 1083 # CAO-CAM + 1085 4 1082 1088 # CAO-HAT + 1086 5 1083 1084 # CAM-CAP + 1087 6 1083 1089 # CAM-HAT + 1088 5 1084 1085 # CAP-CAM + 1089 7 1084 1090 # CAP-HAT + 1090 3 1085 1086 # CAM-CAO + 1091 6 1085 1091 # CAM-HAT + 1092 4 1086 1092 # CAO-HAT + 1093 8 1087 1093 # CTT-HT + 1094 8 1087 1094 # CTT-HT + 1095 8 1087 1095 # CTT-HT + 1096 1 1096 1097 # CAT-CAO + 1097 2 1096 1102 # CAT-CTT + 1098 1 1096 1101 # CAT-CAO + 1099 3 1097 1098 # CAO-CAM + 1100 4 1097 1103 # CAO-HAT + 1101 5 1098 1099 # CAM-CAP + 1102 6 1098 1104 # CAM-HAT + 1103 5 1099 1100 # CAP-CAM + 1104 7 1099 1105 # CAP-HAT + 1105 3 1100 1101 # CAM-CAO + 1106 6 1100 1106 # CAM-HAT + 1107 4 1101 1107 # CAO-HAT + 1108 8 1102 1108 # CTT-HT + 1109 8 1102 1109 # CTT-HT + 1110 8 1102 1110 # CTT-HT + 1111 1 1111 1112 # CAT-CAO + 1112 2 1111 1117 # CAT-CTT + 1113 1 1111 1116 # CAT-CAO + 1114 3 1112 1113 # CAO-CAM + 1115 4 1112 1118 # CAO-HAT + 1116 5 1113 1114 # CAM-CAP + 1117 6 1113 1119 # CAM-HAT + 1118 5 1114 1115 # CAP-CAM + 1119 7 1114 1120 # CAP-HAT + 1120 3 1115 1116 # CAM-CAO + 1121 6 1115 1121 # CAM-HAT + 1122 4 1116 1122 # CAO-HAT + 1123 8 1117 1123 # CTT-HT + 1124 8 1117 1124 # CTT-HT + 1125 8 1117 1125 # CTT-HT + 1126 1 1126 1127 # CAT-CAO + 1127 2 1126 1132 # CAT-CTT + 1128 1 1126 1131 # CAT-CAO + 1129 3 1127 1128 # CAO-CAM + 1130 4 1127 1133 # CAO-HAT + 1131 5 1128 1129 # CAM-CAP + 1132 6 1128 1134 # CAM-HAT + 1133 5 1129 1130 # CAP-CAM + 1134 7 1129 1135 # CAP-HAT + 1135 3 1130 1131 # CAM-CAO + 1136 6 1130 1136 # CAM-HAT + 1137 4 1131 1137 # CAO-HAT + 1138 8 1132 1138 # CTT-HT + 1139 8 1132 1139 # CTT-HT + 1140 8 1132 1140 # CTT-HT + 1141 1 1141 1142 # CAT-CAO + 1142 2 1141 1147 # CAT-CTT + 1143 1 1141 1146 # CAT-CAO + 1144 3 1142 1143 # CAO-CAM + 1145 4 1142 1148 # CAO-HAT + 1146 5 1143 1144 # CAM-CAP + 1147 6 1143 1149 # CAM-HAT + 1148 5 1144 1145 # CAP-CAM + 1149 7 1144 1150 # CAP-HAT + 1150 3 1145 1146 # CAM-CAO + 1151 6 1145 1151 # CAM-HAT + 1152 4 1146 1152 # CAO-HAT + 1153 8 1147 1153 # CTT-HT + 1154 8 1147 1154 # CTT-HT + 1155 8 1147 1155 # CTT-HT + 1156 1 1156 1157 # CAT-CAO + 1157 2 1156 1162 # CAT-CTT + 1158 1 1156 1161 # CAT-CAO + 1159 3 1157 1158 # CAO-CAM + 1160 4 1157 1163 # CAO-HAT + 1161 5 1158 1159 # CAM-CAP + 1162 6 1158 1164 # CAM-HAT + 1163 5 1159 1160 # CAP-CAM + 1164 7 1159 1165 # CAP-HAT + 1165 3 1160 1161 # CAM-CAO + 1166 6 1160 1166 # CAM-HAT + 1167 4 1161 1167 # CAO-HAT + 1168 8 1162 1168 # CTT-HT + 1169 8 1162 1169 # CTT-HT + 1170 8 1162 1170 # CTT-HT + 1171 1 1171 1172 # CAT-CAO + 1172 2 1171 1177 # CAT-CTT + 1173 1 1171 1176 # CAT-CAO + 1174 3 1172 1173 # CAO-CAM + 1175 4 1172 1178 # CAO-HAT + 1176 5 1173 1174 # CAM-CAP + 1177 6 1173 1179 # CAM-HAT + 1178 5 1174 1175 # CAP-CAM + 1179 7 1174 1180 # CAP-HAT + 1180 3 1175 1176 # CAM-CAO + 1181 6 1175 1181 # CAM-HAT + 1182 4 1176 1182 # CAO-HAT + 1183 8 1177 1183 # CTT-HT + 1184 8 1177 1184 # CTT-HT + 1185 8 1177 1185 # CTT-HT + 1186 1 1186 1187 # CAT-CAO + 1187 2 1186 1192 # CAT-CTT + 1188 1 1186 1191 # CAT-CAO + 1189 3 1187 1188 # CAO-CAM + 1190 4 1187 1193 # CAO-HAT + 1191 5 1188 1189 # CAM-CAP + 1192 6 1188 1194 # CAM-HAT + 1193 5 1189 1190 # CAP-CAM + 1194 7 1189 1195 # CAP-HAT + 1195 3 1190 1191 # CAM-CAO + 1196 6 1190 1196 # CAM-HAT + 1197 4 1191 1197 # CAO-HAT + 1198 8 1192 1198 # CTT-HT + 1199 8 1192 1199 # CTT-HT + 1200 8 1192 1200 # CTT-HT + 1201 1 1201 1202 # CAT-CAO + 1202 2 1201 1207 # CAT-CTT + 1203 1 1201 1206 # CAT-CAO + 1204 3 1202 1203 # CAO-CAM + 1205 4 1202 1208 # CAO-HAT + 1206 5 1203 1204 # CAM-CAP + 1207 6 1203 1209 # CAM-HAT + 1208 5 1204 1205 # CAP-CAM + 1209 7 1204 1210 # CAP-HAT + 1210 3 1205 1206 # CAM-CAO + 1211 6 1205 1211 # CAM-HAT + 1212 4 1206 1212 # CAO-HAT + 1213 8 1207 1213 # CTT-HT + 1214 8 1207 1214 # CTT-HT + 1215 8 1207 1215 # CTT-HT + 1216 1 1216 1217 # CAT-CAO + 1217 2 1216 1222 # CAT-CTT + 1218 1 1216 1221 # CAT-CAO + 1219 3 1217 1218 # CAO-CAM + 1220 4 1217 1223 # CAO-HAT + 1221 5 1218 1219 # CAM-CAP + 1222 6 1218 1224 # CAM-HAT + 1223 5 1219 1220 # CAP-CAM + 1224 7 1219 1225 # CAP-HAT + 1225 3 1220 1221 # CAM-CAO + 1226 6 1220 1226 # CAM-HAT + 1227 4 1221 1227 # CAO-HAT + 1228 8 1222 1228 # CTT-HT + 1229 8 1222 1229 # CTT-HT + 1230 8 1222 1230 # CTT-HT + 1231 1 1231 1232 # CAT-CAO + 1232 2 1231 1237 # CAT-CTT + 1233 1 1231 1236 # CAT-CAO + 1234 3 1232 1233 # CAO-CAM + 1235 4 1232 1238 # CAO-HAT + 1236 5 1233 1234 # CAM-CAP + 1237 6 1233 1239 # CAM-HAT + 1238 5 1234 1235 # CAP-CAM + 1239 7 1234 1240 # CAP-HAT + 1240 3 1235 1236 # CAM-CAO + 1241 6 1235 1241 # CAM-HAT + 1242 4 1236 1242 # CAO-HAT + 1243 8 1237 1243 # CTT-HT + 1244 8 1237 1244 # CTT-HT + 1245 8 1237 1245 # CTT-HT + 1246 1 1246 1247 # CAT-CAO + 1247 2 1246 1252 # CAT-CTT + 1248 1 1246 1251 # CAT-CAO + 1249 3 1247 1248 # CAO-CAM + 1250 4 1247 1253 # CAO-HAT + 1251 5 1248 1249 # CAM-CAP + 1252 6 1248 1254 # CAM-HAT + 1253 5 1249 1250 # CAP-CAM + 1254 7 1249 1255 # CAP-HAT + 1255 3 1250 1251 # CAM-CAO + 1256 6 1250 1256 # CAM-HAT + 1257 4 1251 1257 # CAO-HAT + 1258 8 1252 1258 # CTT-HT + 1259 8 1252 1259 # CTT-HT + 1260 8 1252 1260 # CTT-HT + 1261 1 1261 1262 # CAT-CAO + 1262 2 1261 1267 # CAT-CTT + 1263 1 1261 1266 # CAT-CAO + 1264 3 1262 1263 # CAO-CAM + 1265 4 1262 1268 # CAO-HAT + 1266 5 1263 1264 # CAM-CAP + 1267 6 1263 1269 # CAM-HAT + 1268 5 1264 1265 # CAP-CAM + 1269 7 1264 1270 # CAP-HAT + 1270 3 1265 1266 # CAM-CAO + 1271 6 1265 1271 # CAM-HAT + 1272 4 1266 1272 # CAO-HAT + 1273 8 1267 1273 # CTT-HT + 1274 8 1267 1274 # CTT-HT + 1275 8 1267 1275 # CTT-HT + 1276 1 1276 1277 # CAT-CAO + 1277 2 1276 1282 # CAT-CTT + 1278 1 1276 1281 # CAT-CAO + 1279 3 1277 1278 # CAO-CAM + 1280 4 1277 1283 # CAO-HAT + 1281 5 1278 1279 # CAM-CAP + 1282 6 1278 1284 # CAM-HAT + 1283 5 1279 1280 # CAP-CAM + 1284 7 1279 1285 # CAP-HAT + 1285 3 1280 1281 # CAM-CAO + 1286 6 1280 1286 # CAM-HAT + 1287 4 1281 1287 # CAO-HAT + 1288 8 1282 1288 # CTT-HT + 1289 8 1282 1289 # CTT-HT + 1290 8 1282 1290 # CTT-HT + 1291 1 1291 1292 # CAT-CAO + 1292 2 1291 1297 # CAT-CTT + 1293 1 1291 1296 # CAT-CAO + 1294 3 1292 1293 # CAO-CAM + 1295 4 1292 1298 # CAO-HAT + 1296 5 1293 1294 # CAM-CAP + 1297 6 1293 1299 # CAM-HAT + 1298 5 1294 1295 # CAP-CAM + 1299 7 1294 1300 # CAP-HAT + 1300 3 1295 1296 # CAM-CAO + 1301 6 1295 1301 # CAM-HAT + 1302 4 1296 1302 # CAO-HAT + 1303 8 1297 1303 # CTT-HT + 1304 8 1297 1304 # CTT-HT + 1305 8 1297 1305 # CTT-HT + 1306 1 1306 1307 # CAT-CAO + 1307 2 1306 1312 # CAT-CTT + 1308 1 1306 1311 # CAT-CAO + 1309 3 1307 1308 # CAO-CAM + 1310 4 1307 1313 # CAO-HAT + 1311 5 1308 1309 # CAM-CAP + 1312 6 1308 1314 # CAM-HAT + 1313 5 1309 1310 # CAP-CAM + 1314 7 1309 1315 # CAP-HAT + 1315 3 1310 1311 # CAM-CAO + 1316 6 1310 1316 # CAM-HAT + 1317 4 1311 1317 # CAO-HAT + 1318 8 1312 1318 # CTT-HT + 1319 8 1312 1319 # CTT-HT + 1320 8 1312 1320 # CTT-HT + 1321 1 1321 1322 # CAT-CAO + 1322 2 1321 1327 # CAT-CTT + 1323 1 1321 1326 # CAT-CAO + 1324 3 1322 1323 # CAO-CAM + 1325 4 1322 1328 # CAO-HAT + 1326 5 1323 1324 # CAM-CAP + 1327 6 1323 1329 # CAM-HAT + 1328 5 1324 1325 # CAP-CAM + 1329 7 1324 1330 # CAP-HAT + 1330 3 1325 1326 # CAM-CAO + 1331 6 1325 1331 # CAM-HAT + 1332 4 1326 1332 # CAO-HAT + 1333 8 1327 1333 # CTT-HT + 1334 8 1327 1334 # CTT-HT + 1335 8 1327 1335 # CTT-HT + 1336 1 1336 1337 # CAT-CAO + 1337 2 1336 1342 # CAT-CTT + 1338 1 1336 1341 # CAT-CAO + 1339 3 1337 1338 # CAO-CAM + 1340 4 1337 1343 # CAO-HAT + 1341 5 1338 1339 # CAM-CAP + 1342 6 1338 1344 # CAM-HAT + 1343 5 1339 1340 # CAP-CAM + 1344 7 1339 1345 # CAP-HAT + 1345 3 1340 1341 # CAM-CAO + 1346 6 1340 1346 # CAM-HAT + 1347 4 1341 1347 # CAO-HAT + 1348 8 1342 1348 # CTT-HT + 1349 8 1342 1349 # CTT-HT + 1350 8 1342 1350 # CTT-HT + 1351 1 1351 1352 # CAT-CAO + 1352 2 1351 1357 # CAT-CTT + 1353 1 1351 1356 # CAT-CAO + 1354 3 1352 1353 # CAO-CAM + 1355 4 1352 1358 # CAO-HAT + 1356 5 1353 1354 # CAM-CAP + 1357 6 1353 1359 # CAM-HAT + 1358 5 1354 1355 # CAP-CAM + 1359 7 1354 1360 # CAP-HAT + 1360 3 1355 1356 # CAM-CAO + 1361 6 1355 1361 # CAM-HAT + 1362 4 1356 1362 # CAO-HAT + 1363 8 1357 1363 # CTT-HT + 1364 8 1357 1364 # CTT-HT + 1365 8 1357 1365 # CTT-HT + 1366 1 1366 1367 # CAT-CAO + 1367 2 1366 1372 # CAT-CTT + 1368 1 1366 1371 # CAT-CAO + 1369 3 1367 1368 # CAO-CAM + 1370 4 1367 1373 # CAO-HAT + 1371 5 1368 1369 # CAM-CAP + 1372 6 1368 1374 # CAM-HAT + 1373 5 1369 1370 # CAP-CAM + 1374 7 1369 1375 # CAP-HAT + 1375 3 1370 1371 # CAM-CAO + 1376 6 1370 1376 # CAM-HAT + 1377 4 1371 1377 # CAO-HAT + 1378 8 1372 1378 # CTT-HT + 1379 8 1372 1379 # CTT-HT + 1380 8 1372 1380 # CTT-HT + 1381 1 1381 1382 # CAT-CAO + 1382 2 1381 1387 # CAT-CTT + 1383 1 1381 1386 # CAT-CAO + 1384 3 1382 1383 # CAO-CAM + 1385 4 1382 1388 # CAO-HAT + 1386 5 1383 1384 # CAM-CAP + 1387 6 1383 1389 # CAM-HAT + 1388 5 1384 1385 # CAP-CAM + 1389 7 1384 1390 # CAP-HAT + 1390 3 1385 1386 # CAM-CAO + 1391 6 1385 1391 # CAM-HAT + 1392 4 1386 1392 # CAO-HAT + 1393 8 1387 1393 # CTT-HT + 1394 8 1387 1394 # CTT-HT + 1395 8 1387 1395 # CTT-HT + 1396 1 1396 1397 # CAT-CAO + 1397 2 1396 1402 # CAT-CTT + 1398 1 1396 1401 # CAT-CAO + 1399 3 1397 1398 # CAO-CAM + 1400 4 1397 1403 # CAO-HAT + 1401 5 1398 1399 # CAM-CAP + 1402 6 1398 1404 # CAM-HAT + 1403 5 1399 1400 # CAP-CAM + 1404 7 1399 1405 # CAP-HAT + 1405 3 1400 1401 # CAM-CAO + 1406 6 1400 1406 # CAM-HAT + 1407 4 1401 1407 # CAO-HAT + 1408 8 1402 1408 # CTT-HT + 1409 8 1402 1409 # CTT-HT + 1410 8 1402 1410 # CTT-HT + 1411 1 1411 1412 # CAT-CAO + 1412 2 1411 1417 # CAT-CTT + 1413 1 1411 1416 # CAT-CAO + 1414 3 1412 1413 # CAO-CAM + 1415 4 1412 1418 # CAO-HAT + 1416 5 1413 1414 # CAM-CAP + 1417 6 1413 1419 # CAM-HAT + 1418 5 1414 1415 # CAP-CAM + 1419 7 1414 1420 # CAP-HAT + 1420 3 1415 1416 # CAM-CAO + 1421 6 1415 1421 # CAM-HAT + 1422 4 1416 1422 # CAO-HAT + 1423 8 1417 1423 # CTT-HT + 1424 8 1417 1424 # CTT-HT + 1425 8 1417 1425 # CTT-HT + 1426 1 1426 1427 # CAT-CAO + 1427 2 1426 1432 # CAT-CTT + 1428 1 1426 1431 # CAT-CAO + 1429 3 1427 1428 # CAO-CAM + 1430 4 1427 1433 # CAO-HAT + 1431 5 1428 1429 # CAM-CAP + 1432 6 1428 1434 # CAM-HAT + 1433 5 1429 1430 # CAP-CAM + 1434 7 1429 1435 # CAP-HAT + 1435 3 1430 1431 # CAM-CAO + 1436 6 1430 1436 # CAM-HAT + 1437 4 1431 1437 # CAO-HAT + 1438 8 1432 1438 # CTT-HT + 1439 8 1432 1439 # CTT-HT + 1440 8 1432 1440 # CTT-HT + 1441 1 1441 1442 # CAT-CAO + 1442 2 1441 1447 # CAT-CTT + 1443 1 1441 1446 # CAT-CAO + 1444 3 1442 1443 # CAO-CAM + 1445 4 1442 1448 # CAO-HAT + 1446 5 1443 1444 # CAM-CAP + 1447 6 1443 1449 # CAM-HAT + 1448 5 1444 1445 # CAP-CAM + 1449 7 1444 1450 # CAP-HAT + 1450 3 1445 1446 # CAM-CAO + 1451 6 1445 1451 # CAM-HAT + 1452 4 1446 1452 # CAO-HAT + 1453 8 1447 1453 # CTT-HT + 1454 8 1447 1454 # CTT-HT + 1455 8 1447 1455 # CTT-HT + 1456 1 1456 1457 # CAT-CAO + 1457 2 1456 1462 # CAT-CTT + 1458 1 1456 1461 # CAT-CAO + 1459 3 1457 1458 # CAO-CAM + 1460 4 1457 1463 # CAO-HAT + 1461 5 1458 1459 # CAM-CAP + 1462 6 1458 1464 # CAM-HAT + 1463 5 1459 1460 # CAP-CAM + 1464 7 1459 1465 # CAP-HAT + 1465 3 1460 1461 # CAM-CAO + 1466 6 1460 1466 # CAM-HAT + 1467 4 1461 1467 # CAO-HAT + 1468 8 1462 1468 # CTT-HT + 1469 8 1462 1469 # CTT-HT + 1470 8 1462 1470 # CTT-HT + 1471 1 1471 1472 # CAT-CAO + 1472 2 1471 1477 # CAT-CTT + 1473 1 1471 1476 # CAT-CAO + 1474 3 1472 1473 # CAO-CAM + 1475 4 1472 1478 # CAO-HAT + 1476 5 1473 1474 # CAM-CAP + 1477 6 1473 1479 # CAM-HAT + 1478 5 1474 1475 # CAP-CAM + 1479 7 1474 1480 # CAP-HAT + 1480 3 1475 1476 # CAM-CAO + 1481 6 1475 1481 # CAM-HAT + 1482 4 1476 1482 # CAO-HAT + 1483 8 1477 1483 # CTT-HT + 1484 8 1477 1484 # CTT-HT + 1485 8 1477 1485 # CTT-HT + 1486 1 1486 1487 # CAT-CAO + 1487 2 1486 1492 # CAT-CTT + 1488 1 1486 1491 # CAT-CAO + 1489 3 1487 1488 # CAO-CAM + 1490 4 1487 1493 # CAO-HAT + 1491 5 1488 1489 # CAM-CAP + 1492 6 1488 1494 # CAM-HAT + 1493 5 1489 1490 # CAP-CAM + 1494 7 1489 1495 # CAP-HAT + 1495 3 1490 1491 # CAM-CAO + 1496 6 1490 1496 # CAM-HAT + 1497 4 1491 1497 # CAO-HAT + 1498 8 1492 1498 # CTT-HT + 1499 8 1492 1499 # CTT-HT + 1500 8 1492 1500 # CTT-HT + 1501 1 1501 1502 # CAT-CAO + 1502 2 1501 1507 # CAT-CTT + 1503 1 1501 1506 # CAT-CAO + 1504 3 1502 1503 # CAO-CAM + 1505 4 1502 1508 # CAO-HAT + 1506 5 1503 1504 # CAM-CAP + 1507 6 1503 1509 # CAM-HAT + 1508 5 1504 1505 # CAP-CAM + 1509 7 1504 1510 # CAP-HAT + 1510 3 1505 1506 # CAM-CAO + 1511 6 1505 1511 # CAM-HAT + 1512 4 1506 1512 # CAO-HAT + 1513 8 1507 1513 # CTT-HT + 1514 8 1507 1514 # CTT-HT + 1515 8 1507 1515 # CTT-HT + 1516 1 1516 1517 # CAT-CAO + 1517 2 1516 1522 # CAT-CTT + 1518 1 1516 1521 # CAT-CAO + 1519 3 1517 1518 # CAO-CAM + 1520 4 1517 1523 # CAO-HAT + 1521 5 1518 1519 # CAM-CAP + 1522 6 1518 1524 # CAM-HAT + 1523 5 1519 1520 # CAP-CAM + 1524 7 1519 1525 # CAP-HAT + 1525 3 1520 1521 # CAM-CAO + 1526 6 1520 1526 # CAM-HAT + 1527 4 1521 1527 # CAO-HAT + 1528 8 1522 1528 # CTT-HT + 1529 8 1522 1529 # CTT-HT + 1530 8 1522 1530 # CTT-HT + 1531 1 1531 1532 # CAT-CAO + 1532 2 1531 1537 # CAT-CTT + 1533 1 1531 1536 # CAT-CAO + 1534 3 1532 1533 # CAO-CAM + 1535 4 1532 1538 # CAO-HAT + 1536 5 1533 1534 # CAM-CAP + 1537 6 1533 1539 # CAM-HAT + 1538 5 1534 1535 # CAP-CAM + 1539 7 1534 1540 # CAP-HAT + 1540 3 1535 1536 # CAM-CAO + 1541 6 1535 1541 # CAM-HAT + 1542 4 1536 1542 # CAO-HAT + 1543 8 1537 1543 # CTT-HT + 1544 8 1537 1544 # CTT-HT + 1545 8 1537 1545 # CTT-HT + 1546 1 1546 1547 # CAT-CAO + 1547 2 1546 1552 # CAT-CTT + 1548 1 1546 1551 # CAT-CAO + 1549 3 1547 1548 # CAO-CAM + 1550 4 1547 1553 # CAO-HAT + 1551 5 1548 1549 # CAM-CAP + 1552 6 1548 1554 # CAM-HAT + 1553 5 1549 1550 # CAP-CAM + 1554 7 1549 1555 # CAP-HAT + 1555 3 1550 1551 # CAM-CAO + 1556 6 1550 1556 # CAM-HAT + 1557 4 1551 1557 # CAO-HAT + 1558 8 1552 1558 # CTT-HT + 1559 8 1552 1559 # CTT-HT + 1560 8 1552 1560 # CTT-HT + 1561 1 1561 1562 # CAT-CAO + 1562 2 1561 1567 # CAT-CTT + 1563 1 1561 1566 # CAT-CAO + 1564 3 1562 1563 # CAO-CAM + 1565 4 1562 1568 # CAO-HAT + 1566 5 1563 1564 # CAM-CAP + 1567 6 1563 1569 # CAM-HAT + 1568 5 1564 1565 # CAP-CAM + 1569 7 1564 1570 # CAP-HAT + 1570 3 1565 1566 # CAM-CAO + 1571 6 1565 1571 # CAM-HAT + 1572 4 1566 1572 # CAO-HAT + 1573 8 1567 1573 # CTT-HT + 1574 8 1567 1574 # CTT-HT + 1575 8 1567 1575 # CTT-HT + 1576 1 1576 1577 # CAT-CAO + 1577 2 1576 1582 # CAT-CTT + 1578 1 1576 1581 # CAT-CAO + 1579 3 1577 1578 # CAO-CAM + 1580 4 1577 1583 # CAO-HAT + 1581 5 1578 1579 # CAM-CAP + 1582 6 1578 1584 # CAM-HAT + 1583 5 1579 1580 # CAP-CAM + 1584 7 1579 1585 # CAP-HAT + 1585 3 1580 1581 # CAM-CAO + 1586 6 1580 1586 # CAM-HAT + 1587 4 1581 1587 # CAO-HAT + 1588 8 1582 1588 # CTT-HT + 1589 8 1582 1589 # CTT-HT + 1590 8 1582 1590 # CTT-HT + 1591 1 1591 1592 # CAT-CAO + 1592 2 1591 1597 # CAT-CTT + 1593 1 1591 1596 # CAT-CAO + 1594 3 1592 1593 # CAO-CAM + 1595 4 1592 1598 # CAO-HAT + 1596 5 1593 1594 # CAM-CAP + 1597 6 1593 1599 # CAM-HAT + 1598 5 1594 1595 # CAP-CAM + 1599 7 1594 1600 # CAP-HAT + 1600 3 1595 1596 # CAM-CAO + 1601 6 1595 1601 # CAM-HAT + 1602 4 1596 1602 # CAO-HAT + 1603 8 1597 1603 # CTT-HT + 1604 8 1597 1604 # CTT-HT + 1605 8 1597 1605 # CTT-HT + 1606 1 1606 1607 # CAT-CAO + 1607 2 1606 1612 # CAT-CTT + 1608 1 1606 1611 # CAT-CAO + 1609 3 1607 1608 # CAO-CAM + 1610 4 1607 1613 # CAO-HAT + 1611 5 1608 1609 # CAM-CAP + 1612 6 1608 1614 # CAM-HAT + 1613 5 1609 1610 # CAP-CAM + 1614 7 1609 1615 # CAP-HAT + 1615 3 1610 1611 # CAM-CAO + 1616 6 1610 1616 # CAM-HAT + 1617 4 1611 1617 # CAO-HAT + 1618 8 1612 1618 # CTT-HT + 1619 8 1612 1619 # CTT-HT + 1620 8 1612 1620 # CTT-HT + 1621 1 1621 1622 # CAT-CAO + 1622 2 1621 1627 # CAT-CTT + 1623 1 1621 1626 # CAT-CAO + 1624 3 1622 1623 # CAO-CAM + 1625 4 1622 1628 # CAO-HAT + 1626 5 1623 1624 # CAM-CAP + 1627 6 1623 1629 # CAM-HAT + 1628 5 1624 1625 # CAP-CAM + 1629 7 1624 1630 # CAP-HAT + 1630 3 1625 1626 # CAM-CAO + 1631 6 1625 1631 # CAM-HAT + 1632 4 1626 1632 # CAO-HAT + 1633 8 1627 1633 # CTT-HT + 1634 8 1627 1634 # CTT-HT + 1635 8 1627 1635 # CTT-HT + 1636 1 1636 1637 # CAT-CAO + 1637 2 1636 1642 # CAT-CTT + 1638 1 1636 1641 # CAT-CAO + 1639 3 1637 1638 # CAO-CAM + 1640 4 1637 1643 # CAO-HAT + 1641 5 1638 1639 # CAM-CAP + 1642 6 1638 1644 # CAM-HAT + 1643 5 1639 1640 # CAP-CAM + 1644 7 1639 1645 # CAP-HAT + 1645 3 1640 1641 # CAM-CAO + 1646 6 1640 1646 # CAM-HAT + 1647 4 1641 1647 # CAO-HAT + 1648 8 1642 1648 # CTT-HT + 1649 8 1642 1649 # CTT-HT + 1650 8 1642 1650 # CTT-HT + 1651 1 1651 1652 # CAT-CAO + 1652 2 1651 1657 # CAT-CTT + 1653 1 1651 1656 # CAT-CAO + 1654 3 1652 1653 # CAO-CAM + 1655 4 1652 1658 # CAO-HAT + 1656 5 1653 1654 # CAM-CAP + 1657 6 1653 1659 # CAM-HAT + 1658 5 1654 1655 # CAP-CAM + 1659 7 1654 1660 # CAP-HAT + 1660 3 1655 1656 # CAM-CAO + 1661 6 1655 1661 # CAM-HAT + 1662 4 1656 1662 # CAO-HAT + 1663 8 1657 1663 # CTT-HT + 1664 8 1657 1664 # CTT-HT + 1665 8 1657 1665 # CTT-HT + 1666 1 1666 1667 # CAT-CAO + 1667 2 1666 1672 # CAT-CTT + 1668 1 1666 1671 # CAT-CAO + 1669 3 1667 1668 # CAO-CAM + 1670 4 1667 1673 # CAO-HAT + 1671 5 1668 1669 # CAM-CAP + 1672 6 1668 1674 # CAM-HAT + 1673 5 1669 1670 # CAP-CAM + 1674 7 1669 1675 # CAP-HAT + 1675 3 1670 1671 # CAM-CAO + 1676 6 1670 1676 # CAM-HAT + 1677 4 1671 1677 # CAO-HAT + 1678 8 1672 1678 # CTT-HT + 1679 8 1672 1679 # CTT-HT + 1680 8 1672 1680 # CTT-HT + 1681 1 1681 1682 # CAT-CAO + 1682 2 1681 1687 # CAT-CTT + 1683 1 1681 1686 # CAT-CAO + 1684 3 1682 1683 # CAO-CAM + 1685 4 1682 1688 # CAO-HAT + 1686 5 1683 1684 # CAM-CAP + 1687 6 1683 1689 # CAM-HAT + 1688 5 1684 1685 # CAP-CAM + 1689 7 1684 1690 # CAP-HAT + 1690 3 1685 1686 # CAM-CAO + 1691 6 1685 1691 # CAM-HAT + 1692 4 1686 1692 # CAO-HAT + 1693 8 1687 1693 # CTT-HT + 1694 8 1687 1694 # CTT-HT + 1695 8 1687 1695 # CTT-HT + 1696 1 1696 1697 # CAT-CAO + 1697 2 1696 1702 # CAT-CTT + 1698 1 1696 1701 # CAT-CAO + 1699 3 1697 1698 # CAO-CAM + 1700 4 1697 1703 # CAO-HAT + 1701 5 1698 1699 # CAM-CAP + 1702 6 1698 1704 # CAM-HAT + 1703 5 1699 1700 # CAP-CAM + 1704 7 1699 1705 # CAP-HAT + 1705 3 1700 1701 # CAM-CAO + 1706 6 1700 1706 # CAM-HAT + 1707 4 1701 1707 # CAO-HAT + 1708 8 1702 1708 # CTT-HT + 1709 8 1702 1709 # CTT-HT + 1710 8 1702 1710 # CTT-HT + 1711 1 1711 1712 # CAT-CAO + 1712 2 1711 1717 # CAT-CTT + 1713 1 1711 1716 # CAT-CAO + 1714 3 1712 1713 # CAO-CAM + 1715 4 1712 1718 # CAO-HAT + 1716 5 1713 1714 # CAM-CAP + 1717 6 1713 1719 # CAM-HAT + 1718 5 1714 1715 # CAP-CAM + 1719 7 1714 1720 # CAP-HAT + 1720 3 1715 1716 # CAM-CAO + 1721 6 1715 1721 # CAM-HAT + 1722 4 1716 1722 # CAO-HAT + 1723 8 1717 1723 # CTT-HT + 1724 8 1717 1724 # CTT-HT + 1725 8 1717 1725 # CTT-HT + 1726 1 1726 1727 # CAT-CAO + 1727 2 1726 1732 # CAT-CTT + 1728 1 1726 1731 # CAT-CAO + 1729 3 1727 1728 # CAO-CAM + 1730 4 1727 1733 # CAO-HAT + 1731 5 1728 1729 # CAM-CAP + 1732 6 1728 1734 # CAM-HAT + 1733 5 1729 1730 # CAP-CAM + 1734 7 1729 1735 # CAP-HAT + 1735 3 1730 1731 # CAM-CAO + 1736 6 1730 1736 # CAM-HAT + 1737 4 1731 1737 # CAO-HAT + 1738 8 1732 1738 # CTT-HT + 1739 8 1732 1739 # CTT-HT + 1740 8 1732 1740 # CTT-HT + 1741 1 1741 1742 # CAT-CAO + 1742 2 1741 1747 # CAT-CTT + 1743 1 1741 1746 # CAT-CAO + 1744 3 1742 1743 # CAO-CAM + 1745 4 1742 1748 # CAO-HAT + 1746 5 1743 1744 # CAM-CAP + 1747 6 1743 1749 # CAM-HAT + 1748 5 1744 1745 # CAP-CAM + 1749 7 1744 1750 # CAP-HAT + 1750 3 1745 1746 # CAM-CAO + 1751 6 1745 1751 # CAM-HAT + 1752 4 1746 1752 # CAO-HAT + 1753 8 1747 1753 # CTT-HT + 1754 8 1747 1754 # CTT-HT + 1755 8 1747 1755 # CTT-HT + 1756 1 1756 1757 # CAT-CAO + 1757 2 1756 1762 # CAT-CTT + 1758 1 1756 1761 # CAT-CAO + 1759 3 1757 1758 # CAO-CAM + 1760 4 1757 1763 # CAO-HAT + 1761 5 1758 1759 # CAM-CAP + 1762 6 1758 1764 # CAM-HAT + 1763 5 1759 1760 # CAP-CAM + 1764 7 1759 1765 # CAP-HAT + 1765 3 1760 1761 # CAM-CAO + 1766 6 1760 1766 # CAM-HAT + 1767 4 1761 1767 # CAO-HAT + 1768 8 1762 1768 # CTT-HT + 1769 8 1762 1769 # CTT-HT + 1770 8 1762 1770 # CTT-HT + 1771 1 1771 1772 # CAT-CAO + 1772 2 1771 1777 # CAT-CTT + 1773 1 1771 1776 # CAT-CAO + 1774 3 1772 1773 # CAO-CAM + 1775 4 1772 1778 # CAO-HAT + 1776 5 1773 1774 # CAM-CAP + 1777 6 1773 1779 # CAM-HAT + 1778 5 1774 1775 # CAP-CAM + 1779 7 1774 1780 # CAP-HAT + 1780 3 1775 1776 # CAM-CAO + 1781 6 1775 1781 # CAM-HAT + 1782 4 1776 1782 # CAO-HAT + 1783 8 1777 1783 # CTT-HT + 1784 8 1777 1784 # CTT-HT + 1785 8 1777 1785 # CTT-HT + 1786 1 1786 1787 # CAT-CAO + 1787 2 1786 1792 # CAT-CTT + 1788 1 1786 1791 # CAT-CAO + 1789 3 1787 1788 # CAO-CAM + 1790 4 1787 1793 # CAO-HAT + 1791 5 1788 1789 # CAM-CAP + 1792 6 1788 1794 # CAM-HAT + 1793 5 1789 1790 # CAP-CAM + 1794 7 1789 1795 # CAP-HAT + 1795 3 1790 1791 # CAM-CAO + 1796 6 1790 1796 # CAM-HAT + 1797 4 1791 1797 # CAO-HAT + 1798 8 1792 1798 # CTT-HT + 1799 8 1792 1799 # CTT-HT + 1800 8 1792 1800 # CTT-HT + 1801 1 1801 1802 # CAT-CAO + 1802 2 1801 1807 # CAT-CTT + 1803 1 1801 1806 # CAT-CAO + 1804 3 1802 1803 # CAO-CAM + 1805 4 1802 1808 # CAO-HAT + 1806 5 1803 1804 # CAM-CAP + 1807 6 1803 1809 # CAM-HAT + 1808 5 1804 1805 # CAP-CAM + 1809 7 1804 1810 # CAP-HAT + 1810 3 1805 1806 # CAM-CAO + 1811 6 1805 1811 # CAM-HAT + 1812 4 1806 1812 # CAO-HAT + 1813 8 1807 1813 # CTT-HT + 1814 8 1807 1814 # CTT-HT + 1815 8 1807 1815 # CTT-HT + 1816 1 1816 1817 # CAT-CAO + 1817 2 1816 1822 # CAT-CTT + 1818 1 1816 1821 # CAT-CAO + 1819 3 1817 1818 # CAO-CAM + 1820 4 1817 1823 # CAO-HAT + 1821 5 1818 1819 # CAM-CAP + 1822 6 1818 1824 # CAM-HAT + 1823 5 1819 1820 # CAP-CAM + 1824 7 1819 1825 # CAP-HAT + 1825 3 1820 1821 # CAM-CAO + 1826 6 1820 1826 # CAM-HAT + 1827 4 1821 1827 # CAO-HAT + 1828 8 1822 1828 # CTT-HT + 1829 8 1822 1829 # CTT-HT + 1830 8 1822 1830 # CTT-HT + 1831 1 1831 1832 # CAT-CAO + 1832 2 1831 1837 # CAT-CTT + 1833 1 1831 1836 # CAT-CAO + 1834 3 1832 1833 # CAO-CAM + 1835 4 1832 1838 # CAO-HAT + 1836 5 1833 1834 # CAM-CAP + 1837 6 1833 1839 # CAM-HAT + 1838 5 1834 1835 # CAP-CAM + 1839 7 1834 1840 # CAP-HAT + 1840 3 1835 1836 # CAM-CAO + 1841 6 1835 1841 # CAM-HAT + 1842 4 1836 1842 # CAO-HAT + 1843 8 1837 1843 # CTT-HT + 1844 8 1837 1844 # CTT-HT + 1845 8 1837 1845 # CTT-HT + 1846 1 1846 1847 # CAT-CAO + 1847 2 1846 1852 # CAT-CTT + 1848 1 1846 1851 # CAT-CAO + 1849 3 1847 1848 # CAO-CAM + 1850 4 1847 1853 # CAO-HAT + 1851 5 1848 1849 # CAM-CAP + 1852 6 1848 1854 # CAM-HAT + 1853 5 1849 1850 # CAP-CAM + 1854 7 1849 1855 # CAP-HAT + 1855 3 1850 1851 # CAM-CAO + 1856 6 1850 1856 # CAM-HAT + 1857 4 1851 1857 # CAO-HAT + 1858 8 1852 1858 # CTT-HT + 1859 8 1852 1859 # CTT-HT + 1860 8 1852 1860 # CTT-HT + 1861 1 1861 1862 # CAT-CAO + 1862 2 1861 1867 # CAT-CTT + 1863 1 1861 1866 # CAT-CAO + 1864 3 1862 1863 # CAO-CAM + 1865 4 1862 1868 # CAO-HAT + 1866 5 1863 1864 # CAM-CAP + 1867 6 1863 1869 # CAM-HAT + 1868 5 1864 1865 # CAP-CAM + 1869 7 1864 1870 # CAP-HAT + 1870 3 1865 1866 # CAM-CAO + 1871 6 1865 1871 # CAM-HAT + 1872 4 1866 1872 # CAO-HAT + 1873 8 1867 1873 # CTT-HT + 1874 8 1867 1874 # CTT-HT + 1875 8 1867 1875 # CTT-HT + 1876 1 1876 1877 # CAT-CAO + 1877 2 1876 1882 # CAT-CTT + 1878 1 1876 1881 # CAT-CAO + 1879 3 1877 1878 # CAO-CAM + 1880 4 1877 1883 # CAO-HAT + 1881 5 1878 1879 # CAM-CAP + 1882 6 1878 1884 # CAM-HAT + 1883 5 1879 1880 # CAP-CAM + 1884 7 1879 1885 # CAP-HAT + 1885 3 1880 1881 # CAM-CAO + 1886 6 1880 1886 # CAM-HAT + 1887 4 1881 1887 # CAO-HAT + 1888 8 1882 1888 # CTT-HT + 1889 8 1882 1889 # CTT-HT + 1890 8 1882 1890 # CTT-HT + 1891 1 1891 1892 # CAT-CAO + 1892 2 1891 1897 # CAT-CTT + 1893 1 1891 1896 # CAT-CAO + 1894 3 1892 1893 # CAO-CAM + 1895 4 1892 1898 # CAO-HAT + 1896 5 1893 1894 # CAM-CAP + 1897 6 1893 1899 # CAM-HAT + 1898 5 1894 1895 # CAP-CAM + 1899 7 1894 1900 # CAP-HAT + 1900 3 1895 1896 # CAM-CAO + 1901 6 1895 1901 # CAM-HAT + 1902 4 1896 1902 # CAO-HAT + 1903 8 1897 1903 # CTT-HT + 1904 8 1897 1904 # CTT-HT + 1905 8 1897 1905 # CTT-HT + 1906 1 1906 1907 # CAT-CAO + 1907 2 1906 1912 # CAT-CTT + 1908 1 1906 1911 # CAT-CAO + 1909 3 1907 1908 # CAO-CAM + 1910 4 1907 1913 # CAO-HAT + 1911 5 1908 1909 # CAM-CAP + 1912 6 1908 1914 # CAM-HAT + 1913 5 1909 1910 # CAP-CAM + 1914 7 1909 1915 # CAP-HAT + 1915 3 1910 1911 # CAM-CAO + 1916 6 1910 1916 # CAM-HAT + 1917 4 1911 1917 # CAO-HAT + 1918 8 1912 1918 # CTT-HT + 1919 8 1912 1919 # CTT-HT + 1920 8 1912 1920 # CTT-HT + 1921 1 1921 1922 # CAT-CAO + 1922 2 1921 1927 # CAT-CTT + 1923 1 1921 1926 # CAT-CAO + 1924 3 1922 1923 # CAO-CAM + 1925 4 1922 1928 # CAO-HAT + 1926 5 1923 1924 # CAM-CAP + 1927 6 1923 1929 # CAM-HAT + 1928 5 1924 1925 # CAP-CAM + 1929 7 1924 1930 # CAP-HAT + 1930 3 1925 1926 # CAM-CAO + 1931 6 1925 1931 # CAM-HAT + 1932 4 1926 1932 # CAO-HAT + 1933 8 1927 1933 # CTT-HT + 1934 8 1927 1934 # CTT-HT + 1935 8 1927 1935 # CTT-HT + 1936 1 1936 1937 # CAT-CAO + 1937 2 1936 1942 # CAT-CTT + 1938 1 1936 1941 # CAT-CAO + 1939 3 1937 1938 # CAO-CAM + 1940 4 1937 1943 # CAO-HAT + 1941 5 1938 1939 # CAM-CAP + 1942 6 1938 1944 # CAM-HAT + 1943 5 1939 1940 # CAP-CAM + 1944 7 1939 1945 # CAP-HAT + 1945 3 1940 1941 # CAM-CAO + 1946 6 1940 1946 # CAM-HAT + 1947 4 1941 1947 # CAO-HAT + 1948 8 1942 1948 # CTT-HT + 1949 8 1942 1949 # CTT-HT + 1950 8 1942 1950 # CTT-HT + 1951 1 1951 1952 # CAT-CAO + 1952 2 1951 1957 # CAT-CTT + 1953 1 1951 1956 # CAT-CAO + 1954 3 1952 1953 # CAO-CAM + 1955 4 1952 1958 # CAO-HAT + 1956 5 1953 1954 # CAM-CAP + 1957 6 1953 1959 # CAM-HAT + 1958 5 1954 1955 # CAP-CAM + 1959 7 1954 1960 # CAP-HAT + 1960 3 1955 1956 # CAM-CAO + 1961 6 1955 1961 # CAM-HAT + 1962 4 1956 1962 # CAO-HAT + 1963 8 1957 1963 # CTT-HT + 1964 8 1957 1964 # CTT-HT + 1965 8 1957 1965 # CTT-HT + 1966 1 1966 1967 # CAT-CAO + 1967 2 1966 1972 # CAT-CTT + 1968 1 1966 1971 # CAT-CAO + 1969 3 1967 1968 # CAO-CAM + 1970 4 1967 1973 # CAO-HAT + 1971 5 1968 1969 # CAM-CAP + 1972 6 1968 1974 # CAM-HAT + 1973 5 1969 1970 # CAP-CAM + 1974 7 1969 1975 # CAP-HAT + 1975 3 1970 1971 # CAM-CAO + 1976 6 1970 1976 # CAM-HAT + 1977 4 1971 1977 # CAO-HAT + 1978 8 1972 1978 # CTT-HT + 1979 8 1972 1979 # CTT-HT + 1980 8 1972 1980 # CTT-HT + 1981 1 1981 1982 # CAT-CAO + 1982 2 1981 1987 # CAT-CTT + 1983 1 1981 1986 # CAT-CAO + 1984 3 1982 1983 # CAO-CAM + 1985 4 1982 1988 # CAO-HAT + 1986 5 1983 1984 # CAM-CAP + 1987 6 1983 1989 # CAM-HAT + 1988 5 1984 1985 # CAP-CAM + 1989 7 1984 1990 # CAP-HAT + 1990 3 1985 1986 # CAM-CAO + 1991 6 1985 1991 # CAM-HAT + 1992 4 1986 1992 # CAO-HAT + 1993 8 1987 1993 # CTT-HT + 1994 8 1987 1994 # CTT-HT + 1995 8 1987 1995 # CTT-HT + 1996 1 1996 1997 # CAT-CAO + 1997 2 1996 2002 # CAT-CTT + 1998 1 1996 2001 # CAT-CAO + 1999 3 1997 1998 # CAO-CAM + 2000 4 1997 2003 # CAO-HAT + 2001 5 1998 1999 # CAM-CAP + 2002 6 1998 2004 # CAM-HAT + 2003 5 1999 2000 # CAP-CAM + 2004 7 1999 2005 # CAP-HAT + 2005 3 2000 2001 # CAM-CAO + 2006 6 2000 2006 # CAM-HAT + 2007 4 2001 2007 # CAO-HAT + 2008 8 2002 2008 # CTT-HT + 2009 8 2002 2009 # CTT-HT + 2010 8 2002 2010 # CTT-HT + 2011 1 2011 2012 # CAT-CAO + 2012 2 2011 2017 # CAT-CTT + 2013 1 2011 2016 # CAT-CAO + 2014 3 2012 2013 # CAO-CAM + 2015 4 2012 2018 # CAO-HAT + 2016 5 2013 2014 # CAM-CAP + 2017 6 2013 2019 # CAM-HAT + 2018 5 2014 2015 # CAP-CAM + 2019 7 2014 2020 # CAP-HAT + 2020 3 2015 2016 # CAM-CAO + 2021 6 2015 2021 # CAM-HAT + 2022 4 2016 2022 # CAO-HAT + 2023 8 2017 2023 # CTT-HT + 2024 8 2017 2024 # CTT-HT + 2025 8 2017 2025 # CTT-HT + 2026 1 2026 2027 # CAT-CAO + 2027 2 2026 2032 # CAT-CTT + 2028 1 2026 2031 # CAT-CAO + 2029 3 2027 2028 # CAO-CAM + 2030 4 2027 2033 # CAO-HAT + 2031 5 2028 2029 # CAM-CAP + 2032 6 2028 2034 # CAM-HAT + 2033 5 2029 2030 # CAP-CAM + 2034 7 2029 2035 # CAP-HAT + 2035 3 2030 2031 # CAM-CAO + 2036 6 2030 2036 # CAM-HAT + 2037 4 2031 2037 # CAO-HAT + 2038 8 2032 2038 # CTT-HT + 2039 8 2032 2039 # CTT-HT + 2040 8 2032 2040 # CTT-HT + 2041 1 2041 2042 # CAT-CAO + 2042 2 2041 2047 # CAT-CTT + 2043 1 2041 2046 # CAT-CAO + 2044 3 2042 2043 # CAO-CAM + 2045 4 2042 2048 # CAO-HAT + 2046 5 2043 2044 # CAM-CAP + 2047 6 2043 2049 # CAM-HAT + 2048 5 2044 2045 # CAP-CAM + 2049 7 2044 2050 # CAP-HAT + 2050 3 2045 2046 # CAM-CAO + 2051 6 2045 2051 # CAM-HAT + 2052 4 2046 2052 # CAO-HAT + 2053 8 2047 2053 # CTT-HT + 2054 8 2047 2054 # CTT-HT + 2055 8 2047 2055 # CTT-HT + 2056 1 2056 2057 # CAT-CAO + 2057 2 2056 2062 # CAT-CTT + 2058 1 2056 2061 # CAT-CAO + 2059 3 2057 2058 # CAO-CAM + 2060 4 2057 2063 # CAO-HAT + 2061 5 2058 2059 # CAM-CAP + 2062 6 2058 2064 # CAM-HAT + 2063 5 2059 2060 # CAP-CAM + 2064 7 2059 2065 # CAP-HAT + 2065 3 2060 2061 # CAM-CAO + 2066 6 2060 2066 # CAM-HAT + 2067 4 2061 2067 # CAO-HAT + 2068 8 2062 2068 # CTT-HT + 2069 8 2062 2069 # CTT-HT + 2070 8 2062 2070 # CTT-HT + 2071 1 2071 2072 # CAT-CAO + 2072 2 2071 2077 # CAT-CTT + 2073 1 2071 2076 # CAT-CAO + 2074 3 2072 2073 # CAO-CAM + 2075 4 2072 2078 # CAO-HAT + 2076 5 2073 2074 # CAM-CAP + 2077 6 2073 2079 # CAM-HAT + 2078 5 2074 2075 # CAP-CAM + 2079 7 2074 2080 # CAP-HAT + 2080 3 2075 2076 # CAM-CAO + 2081 6 2075 2081 # CAM-HAT + 2082 4 2076 2082 # CAO-HAT + 2083 8 2077 2083 # CTT-HT + 2084 8 2077 2084 # CTT-HT + 2085 8 2077 2085 # CTT-HT + 2086 1 2086 2087 # CAT-CAO + 2087 2 2086 2092 # CAT-CTT + 2088 1 2086 2091 # CAT-CAO + 2089 3 2087 2088 # CAO-CAM + 2090 4 2087 2093 # CAO-HAT + 2091 5 2088 2089 # CAM-CAP + 2092 6 2088 2094 # CAM-HAT + 2093 5 2089 2090 # CAP-CAM + 2094 7 2089 2095 # CAP-HAT + 2095 3 2090 2091 # CAM-CAO + 2096 6 2090 2096 # CAM-HAT + 2097 4 2091 2097 # CAO-HAT + 2098 8 2092 2098 # CTT-HT + 2099 8 2092 2099 # CTT-HT + 2100 8 2092 2100 # CTT-HT + 2101 1 2101 2102 # CAT-CAO + 2102 2 2101 2107 # CAT-CTT + 2103 1 2101 2106 # CAT-CAO + 2104 3 2102 2103 # CAO-CAM + 2105 4 2102 2108 # CAO-HAT + 2106 5 2103 2104 # CAM-CAP + 2107 6 2103 2109 # CAM-HAT + 2108 5 2104 2105 # CAP-CAM + 2109 7 2104 2110 # CAP-HAT + 2110 3 2105 2106 # CAM-CAO + 2111 6 2105 2111 # CAM-HAT + 2112 4 2106 2112 # CAO-HAT + 2113 8 2107 2113 # CTT-HT + 2114 8 2107 2114 # CTT-HT + 2115 8 2107 2115 # CTT-HT + 2116 1 2116 2117 # CAT-CAO + 2117 2 2116 2122 # CAT-CTT + 2118 1 2116 2121 # CAT-CAO + 2119 3 2117 2118 # CAO-CAM + 2120 4 2117 2123 # CAO-HAT + 2121 5 2118 2119 # CAM-CAP + 2122 6 2118 2124 # CAM-HAT + 2123 5 2119 2120 # CAP-CAM + 2124 7 2119 2125 # CAP-HAT + 2125 3 2120 2121 # CAM-CAO + 2126 6 2120 2126 # CAM-HAT + 2127 4 2121 2127 # CAO-HAT + 2128 8 2122 2128 # CTT-HT + 2129 8 2122 2129 # CTT-HT + 2130 8 2122 2130 # CTT-HT + 2131 1 2131 2132 # CAT-CAO + 2132 2 2131 2137 # CAT-CTT + 2133 1 2131 2136 # CAT-CAO + 2134 3 2132 2133 # CAO-CAM + 2135 4 2132 2138 # CAO-HAT + 2136 5 2133 2134 # CAM-CAP + 2137 6 2133 2139 # CAM-HAT + 2138 5 2134 2135 # CAP-CAM + 2139 7 2134 2140 # CAP-HAT + 2140 3 2135 2136 # CAM-CAO + 2141 6 2135 2141 # CAM-HAT + 2142 4 2136 2142 # CAO-HAT + 2143 8 2137 2143 # CTT-HT + 2144 8 2137 2144 # CTT-HT + 2145 8 2137 2145 # CTT-HT + 2146 1 2146 2147 # CAT-CAO + 2147 2 2146 2152 # CAT-CTT + 2148 1 2146 2151 # CAT-CAO + 2149 3 2147 2148 # CAO-CAM + 2150 4 2147 2153 # CAO-HAT + 2151 5 2148 2149 # CAM-CAP + 2152 6 2148 2154 # CAM-HAT + 2153 5 2149 2150 # CAP-CAM + 2154 7 2149 2155 # CAP-HAT + 2155 3 2150 2151 # CAM-CAO + 2156 6 2150 2156 # CAM-HAT + 2157 4 2151 2157 # CAO-HAT + 2158 8 2152 2158 # CTT-HT + 2159 8 2152 2159 # CTT-HT + 2160 8 2152 2160 # CTT-HT + 2161 1 2161 2162 # CAT-CAO + 2162 2 2161 2167 # CAT-CTT + 2163 1 2161 2166 # CAT-CAO + 2164 3 2162 2163 # CAO-CAM + 2165 4 2162 2168 # CAO-HAT + 2166 5 2163 2164 # CAM-CAP + 2167 6 2163 2169 # CAM-HAT + 2168 5 2164 2165 # CAP-CAM + 2169 7 2164 2170 # CAP-HAT + 2170 3 2165 2166 # CAM-CAO + 2171 6 2165 2171 # CAM-HAT + 2172 4 2166 2172 # CAO-HAT + 2173 8 2167 2173 # CTT-HT + 2174 8 2167 2174 # CTT-HT + 2175 8 2167 2175 # CTT-HT + 2176 1 2176 2177 # CAT-CAO + 2177 2 2176 2182 # CAT-CTT + 2178 1 2176 2181 # CAT-CAO + 2179 3 2177 2178 # CAO-CAM + 2180 4 2177 2183 # CAO-HAT + 2181 5 2178 2179 # CAM-CAP + 2182 6 2178 2184 # CAM-HAT + 2183 5 2179 2180 # CAP-CAM + 2184 7 2179 2185 # CAP-HAT + 2185 3 2180 2181 # CAM-CAO + 2186 6 2180 2186 # CAM-HAT + 2187 4 2181 2187 # CAO-HAT + 2188 8 2182 2188 # CTT-HT + 2189 8 2182 2189 # CTT-HT + 2190 8 2182 2190 # CTT-HT + 2191 1 2191 2192 # CAT-CAO + 2192 2 2191 2197 # CAT-CTT + 2193 1 2191 2196 # CAT-CAO + 2194 3 2192 2193 # CAO-CAM + 2195 4 2192 2198 # CAO-HAT + 2196 5 2193 2194 # CAM-CAP + 2197 6 2193 2199 # CAM-HAT + 2198 5 2194 2195 # CAP-CAM + 2199 7 2194 2200 # CAP-HAT + 2200 3 2195 2196 # CAM-CAO + 2201 6 2195 2201 # CAM-HAT + 2202 4 2196 2202 # CAO-HAT + 2203 8 2197 2203 # CTT-HT + 2204 8 2197 2204 # CTT-HT + 2205 8 2197 2205 # CTT-HT + 2206 1 2206 2207 # CAT-CAO + 2207 2 2206 2212 # CAT-CTT + 2208 1 2206 2211 # CAT-CAO + 2209 3 2207 2208 # CAO-CAM + 2210 4 2207 2213 # CAO-HAT + 2211 5 2208 2209 # CAM-CAP + 2212 6 2208 2214 # CAM-HAT + 2213 5 2209 2210 # CAP-CAM + 2214 7 2209 2215 # CAP-HAT + 2215 3 2210 2211 # CAM-CAO + 2216 6 2210 2216 # CAM-HAT + 2217 4 2211 2217 # CAO-HAT + 2218 8 2212 2218 # CTT-HT + 2219 8 2212 2219 # CTT-HT + 2220 8 2212 2220 # CTT-HT + 2221 1 2221 2222 # CAT-CAO + 2222 2 2221 2227 # CAT-CTT + 2223 1 2221 2226 # CAT-CAO + 2224 3 2222 2223 # CAO-CAM + 2225 4 2222 2228 # CAO-HAT + 2226 5 2223 2224 # CAM-CAP + 2227 6 2223 2229 # CAM-HAT + 2228 5 2224 2225 # CAP-CAM + 2229 7 2224 2230 # CAP-HAT + 2230 3 2225 2226 # CAM-CAO + 2231 6 2225 2231 # CAM-HAT + 2232 4 2226 2232 # CAO-HAT + 2233 8 2227 2233 # CTT-HT + 2234 8 2227 2234 # CTT-HT + 2235 8 2227 2235 # CTT-HT + 2236 1 2236 2237 # CAT-CAO + 2237 2 2236 2242 # CAT-CTT + 2238 1 2236 2241 # CAT-CAO + 2239 3 2237 2238 # CAO-CAM + 2240 4 2237 2243 # CAO-HAT + 2241 5 2238 2239 # CAM-CAP + 2242 6 2238 2244 # CAM-HAT + 2243 5 2239 2240 # CAP-CAM + 2244 7 2239 2245 # CAP-HAT + 2245 3 2240 2241 # CAM-CAO + 2246 6 2240 2246 # CAM-HAT + 2247 4 2241 2247 # CAO-HAT + 2248 8 2242 2248 # CTT-HT + 2249 8 2242 2249 # CTT-HT + 2250 8 2242 2250 # CTT-HT + 2251 1 2251 2252 # CAT-CAO + 2252 2 2251 2257 # CAT-CTT + 2253 1 2251 2256 # CAT-CAO + 2254 3 2252 2253 # CAO-CAM + 2255 4 2252 2258 # CAO-HAT + 2256 5 2253 2254 # CAM-CAP + 2257 6 2253 2259 # CAM-HAT + 2258 5 2254 2255 # CAP-CAM + 2259 7 2254 2260 # CAP-HAT + 2260 3 2255 2256 # CAM-CAO + 2261 6 2255 2261 # CAM-HAT + 2262 4 2256 2262 # CAO-HAT + 2263 8 2257 2263 # CTT-HT + 2264 8 2257 2264 # CTT-HT + 2265 8 2257 2265 # CTT-HT + 2266 1 2266 2267 # CAT-CAO + 2267 2 2266 2272 # CAT-CTT + 2268 1 2266 2271 # CAT-CAO + 2269 3 2267 2268 # CAO-CAM + 2270 4 2267 2273 # CAO-HAT + 2271 5 2268 2269 # CAM-CAP + 2272 6 2268 2274 # CAM-HAT + 2273 5 2269 2270 # CAP-CAM + 2274 7 2269 2275 # CAP-HAT + 2275 3 2270 2271 # CAM-CAO + 2276 6 2270 2276 # CAM-HAT + 2277 4 2271 2277 # CAO-HAT + 2278 8 2272 2278 # CTT-HT + 2279 8 2272 2279 # CTT-HT + 2280 8 2272 2280 # CTT-HT + 2281 1 2281 2282 # CAT-CAO + 2282 2 2281 2287 # CAT-CTT + 2283 1 2281 2286 # CAT-CAO + 2284 3 2282 2283 # CAO-CAM + 2285 4 2282 2288 # CAO-HAT + 2286 5 2283 2284 # CAM-CAP + 2287 6 2283 2289 # CAM-HAT + 2288 5 2284 2285 # CAP-CAM + 2289 7 2284 2290 # CAP-HAT + 2290 3 2285 2286 # CAM-CAO + 2291 6 2285 2291 # CAM-HAT + 2292 4 2286 2292 # CAO-HAT + 2293 8 2287 2293 # CTT-HT + 2294 8 2287 2294 # CTT-HT + 2295 8 2287 2295 # CTT-HT + 2296 1 2296 2297 # CAT-CAO + 2297 2 2296 2302 # CAT-CTT + 2298 1 2296 2301 # CAT-CAO + 2299 3 2297 2298 # CAO-CAM + 2300 4 2297 2303 # CAO-HAT + 2301 5 2298 2299 # CAM-CAP + 2302 6 2298 2304 # CAM-HAT + 2303 5 2299 2300 # CAP-CAM + 2304 7 2299 2305 # CAP-HAT + 2305 3 2300 2301 # CAM-CAO + 2306 6 2300 2306 # CAM-HAT + 2307 4 2301 2307 # CAO-HAT + 2308 8 2302 2308 # CTT-HT + 2309 8 2302 2309 # CTT-HT + 2310 8 2302 2310 # CTT-HT + 2311 1 2311 2312 # CAT-CAO + 2312 2 2311 2317 # CAT-CTT + 2313 1 2311 2316 # CAT-CAO + 2314 3 2312 2313 # CAO-CAM + 2315 4 2312 2318 # CAO-HAT + 2316 5 2313 2314 # CAM-CAP + 2317 6 2313 2319 # CAM-HAT + 2318 5 2314 2315 # CAP-CAM + 2319 7 2314 2320 # CAP-HAT + 2320 3 2315 2316 # CAM-CAO + 2321 6 2315 2321 # CAM-HAT + 2322 4 2316 2322 # CAO-HAT + 2323 8 2317 2323 # CTT-HT + 2324 8 2317 2324 # CTT-HT + 2325 8 2317 2325 # CTT-HT + 2326 1 2326 2327 # CAT-CAO + 2327 2 2326 2332 # CAT-CTT + 2328 1 2326 2331 # CAT-CAO + 2329 3 2327 2328 # CAO-CAM + 2330 4 2327 2333 # CAO-HAT + 2331 5 2328 2329 # CAM-CAP + 2332 6 2328 2334 # CAM-HAT + 2333 5 2329 2330 # CAP-CAM + 2334 7 2329 2335 # CAP-HAT + 2335 3 2330 2331 # CAM-CAO + 2336 6 2330 2336 # CAM-HAT + 2337 4 2331 2337 # CAO-HAT + 2338 8 2332 2338 # CTT-HT + 2339 8 2332 2339 # CTT-HT + 2340 8 2332 2340 # CTT-HT + 2341 1 2341 2342 # CAT-CAO + 2342 2 2341 2347 # CAT-CTT + 2343 1 2341 2346 # CAT-CAO + 2344 3 2342 2343 # CAO-CAM + 2345 4 2342 2348 # CAO-HAT + 2346 5 2343 2344 # CAM-CAP + 2347 6 2343 2349 # CAM-HAT + 2348 5 2344 2345 # CAP-CAM + 2349 7 2344 2350 # CAP-HAT + 2350 3 2345 2346 # CAM-CAO + 2351 6 2345 2351 # CAM-HAT + 2352 4 2346 2352 # CAO-HAT + 2353 8 2347 2353 # CTT-HT + 2354 8 2347 2354 # CTT-HT + 2355 8 2347 2355 # CTT-HT + 2356 1 2356 2357 # CAT-CAO + 2357 2 2356 2362 # CAT-CTT + 2358 1 2356 2361 # CAT-CAO + 2359 3 2357 2358 # CAO-CAM + 2360 4 2357 2363 # CAO-HAT + 2361 5 2358 2359 # CAM-CAP + 2362 6 2358 2364 # CAM-HAT + 2363 5 2359 2360 # CAP-CAM + 2364 7 2359 2365 # CAP-HAT + 2365 3 2360 2361 # CAM-CAO + 2366 6 2360 2366 # CAM-HAT + 2367 4 2361 2367 # CAO-HAT + 2368 8 2362 2368 # CTT-HT + 2369 8 2362 2369 # CTT-HT + 2370 8 2362 2370 # CTT-HT + 2371 1 2371 2372 # CAT-CAO + 2372 2 2371 2377 # CAT-CTT + 2373 1 2371 2376 # CAT-CAO + 2374 3 2372 2373 # CAO-CAM + 2375 4 2372 2378 # CAO-HAT + 2376 5 2373 2374 # CAM-CAP + 2377 6 2373 2379 # CAM-HAT + 2378 5 2374 2375 # CAP-CAM + 2379 7 2374 2380 # CAP-HAT + 2380 3 2375 2376 # CAM-CAO + 2381 6 2375 2381 # CAM-HAT + 2382 4 2376 2382 # CAO-HAT + 2383 8 2377 2383 # CTT-HT + 2384 8 2377 2384 # CTT-HT + 2385 8 2377 2385 # CTT-HT + 2386 1 2386 2387 # CAT-CAO + 2387 2 2386 2392 # CAT-CTT + 2388 1 2386 2391 # CAT-CAO + 2389 3 2387 2388 # CAO-CAM + 2390 4 2387 2393 # CAO-HAT + 2391 5 2388 2389 # CAM-CAP + 2392 6 2388 2394 # CAM-HAT + 2393 5 2389 2390 # CAP-CAM + 2394 7 2389 2395 # CAP-HAT + 2395 3 2390 2391 # CAM-CAO + 2396 6 2390 2396 # CAM-HAT + 2397 4 2391 2397 # CAO-HAT + 2398 8 2392 2398 # CTT-HT + 2399 8 2392 2399 # CTT-HT + 2400 8 2392 2400 # CTT-HT + 2401 1 2401 2402 # CAT-CAO + 2402 2 2401 2407 # CAT-CTT + 2403 1 2401 2406 # CAT-CAO + 2404 3 2402 2403 # CAO-CAM + 2405 4 2402 2408 # CAO-HAT + 2406 5 2403 2404 # CAM-CAP + 2407 6 2403 2409 # CAM-HAT + 2408 5 2404 2405 # CAP-CAM + 2409 7 2404 2410 # CAP-HAT + 2410 3 2405 2406 # CAM-CAO + 2411 6 2405 2411 # CAM-HAT + 2412 4 2406 2412 # CAO-HAT + 2413 8 2407 2413 # CTT-HT + 2414 8 2407 2414 # CTT-HT + 2415 8 2407 2415 # CTT-HT + 2416 1 2416 2417 # CAT-CAO + 2417 2 2416 2422 # CAT-CTT + 2418 1 2416 2421 # CAT-CAO + 2419 3 2417 2418 # CAO-CAM + 2420 4 2417 2423 # CAO-HAT + 2421 5 2418 2419 # CAM-CAP + 2422 6 2418 2424 # CAM-HAT + 2423 5 2419 2420 # CAP-CAM + 2424 7 2419 2425 # CAP-HAT + 2425 3 2420 2421 # CAM-CAO + 2426 6 2420 2426 # CAM-HAT + 2427 4 2421 2427 # CAO-HAT + 2428 8 2422 2428 # CTT-HT + 2429 8 2422 2429 # CTT-HT + 2430 8 2422 2430 # CTT-HT + 2431 1 2431 2432 # CAT-CAO + 2432 2 2431 2437 # CAT-CTT + 2433 1 2431 2436 # CAT-CAO + 2434 3 2432 2433 # CAO-CAM + 2435 4 2432 2438 # CAO-HAT + 2436 5 2433 2434 # CAM-CAP + 2437 6 2433 2439 # CAM-HAT + 2438 5 2434 2435 # CAP-CAM + 2439 7 2434 2440 # CAP-HAT + 2440 3 2435 2436 # CAM-CAO + 2441 6 2435 2441 # CAM-HAT + 2442 4 2436 2442 # CAO-HAT + 2443 8 2437 2443 # CTT-HT + 2444 8 2437 2444 # CTT-HT + 2445 8 2437 2445 # CTT-HT + 2446 1 2446 2447 # CAT-CAO + 2447 2 2446 2452 # CAT-CTT + 2448 1 2446 2451 # CAT-CAO + 2449 3 2447 2448 # CAO-CAM + 2450 4 2447 2453 # CAO-HAT + 2451 5 2448 2449 # CAM-CAP + 2452 6 2448 2454 # CAM-HAT + 2453 5 2449 2450 # CAP-CAM + 2454 7 2449 2455 # CAP-HAT + 2455 3 2450 2451 # CAM-CAO + 2456 6 2450 2456 # CAM-HAT + 2457 4 2451 2457 # CAO-HAT + 2458 8 2452 2458 # CTT-HT + 2459 8 2452 2459 # CTT-HT + 2460 8 2452 2460 # CTT-HT + 2461 1 2461 2462 # CAT-CAO + 2462 2 2461 2467 # CAT-CTT + 2463 1 2461 2466 # CAT-CAO + 2464 3 2462 2463 # CAO-CAM + 2465 4 2462 2468 # CAO-HAT + 2466 5 2463 2464 # CAM-CAP + 2467 6 2463 2469 # CAM-HAT + 2468 5 2464 2465 # CAP-CAM + 2469 7 2464 2470 # CAP-HAT + 2470 3 2465 2466 # CAM-CAO + 2471 6 2465 2471 # CAM-HAT + 2472 4 2466 2472 # CAO-HAT + 2473 8 2467 2473 # CTT-HT + 2474 8 2467 2474 # CTT-HT + 2475 8 2467 2475 # CTT-HT + 2476 1 2476 2477 # CAT-CAO + 2477 2 2476 2482 # CAT-CTT + 2478 1 2476 2481 # CAT-CAO + 2479 3 2477 2478 # CAO-CAM + 2480 4 2477 2483 # CAO-HAT + 2481 5 2478 2479 # CAM-CAP + 2482 6 2478 2484 # CAM-HAT + 2483 5 2479 2480 # CAP-CAM + 2484 7 2479 2485 # CAP-HAT + 2485 3 2480 2481 # CAM-CAO + 2486 6 2480 2486 # CAM-HAT + 2487 4 2481 2487 # CAO-HAT + 2488 8 2482 2488 # CTT-HT + 2489 8 2482 2489 # CTT-HT + 2490 8 2482 2490 # CTT-HT + 2491 1 2491 2492 # CAT-CAO + 2492 2 2491 2497 # CAT-CTT + 2493 1 2491 2496 # CAT-CAO + 2494 3 2492 2493 # CAO-CAM + 2495 4 2492 2498 # CAO-HAT + 2496 5 2493 2494 # CAM-CAP + 2497 6 2493 2499 # CAM-HAT + 2498 5 2494 2495 # CAP-CAM + 2499 7 2494 2500 # CAP-HAT + 2500 3 2495 2496 # CAM-CAO + 2501 6 2495 2501 # CAM-HAT + 2502 4 2496 2502 # CAO-HAT + 2503 8 2497 2503 # CTT-HT + 2504 8 2497 2504 # CTT-HT + 2505 8 2497 2505 # CTT-HT + 2506 1 2506 2507 # CAT-CAO + 2507 2 2506 2512 # CAT-CTT + 2508 1 2506 2511 # CAT-CAO + 2509 3 2507 2508 # CAO-CAM + 2510 4 2507 2513 # CAO-HAT + 2511 5 2508 2509 # CAM-CAP + 2512 6 2508 2514 # CAM-HAT + 2513 5 2509 2510 # CAP-CAM + 2514 7 2509 2515 # CAP-HAT + 2515 3 2510 2511 # CAM-CAO + 2516 6 2510 2516 # CAM-HAT + 2517 4 2511 2517 # CAO-HAT + 2518 8 2512 2518 # CTT-HT + 2519 8 2512 2519 # CTT-HT + 2520 8 2512 2520 # CTT-HT + 2521 1 2521 2522 # CAT-CAO + 2522 2 2521 2527 # CAT-CTT + 2523 1 2521 2526 # CAT-CAO + 2524 3 2522 2523 # CAO-CAM + 2525 4 2522 2528 # CAO-HAT + 2526 5 2523 2524 # CAM-CAP + 2527 6 2523 2529 # CAM-HAT + 2528 5 2524 2525 # CAP-CAM + 2529 7 2524 2530 # CAP-HAT + 2530 3 2525 2526 # CAM-CAO + 2531 6 2525 2531 # CAM-HAT + 2532 4 2526 2532 # CAO-HAT + 2533 8 2527 2533 # CTT-HT + 2534 8 2527 2534 # CTT-HT + 2535 8 2527 2535 # CTT-HT + 2536 1 2536 2537 # CAT-CAO + 2537 2 2536 2542 # CAT-CTT + 2538 1 2536 2541 # CAT-CAO + 2539 3 2537 2538 # CAO-CAM + 2540 4 2537 2543 # CAO-HAT + 2541 5 2538 2539 # CAM-CAP + 2542 6 2538 2544 # CAM-HAT + 2543 5 2539 2540 # CAP-CAM + 2544 7 2539 2545 # CAP-HAT + 2545 3 2540 2541 # CAM-CAO + 2546 6 2540 2546 # CAM-HAT + 2547 4 2541 2547 # CAO-HAT + 2548 8 2542 2548 # CTT-HT + 2549 8 2542 2549 # CTT-HT + 2550 8 2542 2550 # CTT-HT + 2551 1 2551 2552 # CAT-CAO + 2552 2 2551 2557 # CAT-CTT + 2553 1 2551 2556 # CAT-CAO + 2554 3 2552 2553 # CAO-CAM + 2555 4 2552 2558 # CAO-HAT + 2556 5 2553 2554 # CAM-CAP + 2557 6 2553 2559 # CAM-HAT + 2558 5 2554 2555 # CAP-CAM + 2559 7 2554 2560 # CAP-HAT + 2560 3 2555 2556 # CAM-CAO + 2561 6 2555 2561 # CAM-HAT + 2562 4 2556 2562 # CAO-HAT + 2563 8 2557 2563 # CTT-HT + 2564 8 2557 2564 # CTT-HT + 2565 8 2557 2565 # CTT-HT + 2566 1 2566 2567 # CAT-CAO + 2567 2 2566 2572 # CAT-CTT + 2568 1 2566 2571 # CAT-CAO + 2569 3 2567 2568 # CAO-CAM + 2570 4 2567 2573 # CAO-HAT + 2571 5 2568 2569 # CAM-CAP + 2572 6 2568 2574 # CAM-HAT + 2573 5 2569 2570 # CAP-CAM + 2574 7 2569 2575 # CAP-HAT + 2575 3 2570 2571 # CAM-CAO + 2576 6 2570 2576 # CAM-HAT + 2577 4 2571 2577 # CAO-HAT + 2578 8 2572 2578 # CTT-HT + 2579 8 2572 2579 # CTT-HT + 2580 8 2572 2580 # CTT-HT + 2581 1 2581 2582 # CAT-CAO + 2582 2 2581 2587 # CAT-CTT + 2583 1 2581 2586 # CAT-CAO + 2584 3 2582 2583 # CAO-CAM + 2585 4 2582 2588 # CAO-HAT + 2586 5 2583 2584 # CAM-CAP + 2587 6 2583 2589 # CAM-HAT + 2588 5 2584 2585 # CAP-CAM + 2589 7 2584 2590 # CAP-HAT + 2590 3 2585 2586 # CAM-CAO + 2591 6 2585 2591 # CAM-HAT + 2592 4 2586 2592 # CAO-HAT + 2593 8 2587 2593 # CTT-HT + 2594 8 2587 2594 # CTT-HT + 2595 8 2587 2595 # CTT-HT + 2596 1 2596 2597 # CAT-CAO + 2597 2 2596 2602 # CAT-CTT + 2598 1 2596 2601 # CAT-CAO + 2599 3 2597 2598 # CAO-CAM + 2600 4 2597 2603 # CAO-HAT + 2601 5 2598 2599 # CAM-CAP + 2602 6 2598 2604 # CAM-HAT + 2603 5 2599 2600 # CAP-CAM + 2604 7 2599 2605 # CAP-HAT + 2605 3 2600 2601 # CAM-CAO + 2606 6 2600 2606 # CAM-HAT + 2607 4 2601 2607 # CAO-HAT + 2608 8 2602 2608 # CTT-HT + 2609 8 2602 2609 # CTT-HT + 2610 8 2602 2610 # CTT-HT + 2611 1 2611 2612 # CAT-CAO + 2612 2 2611 2617 # CAT-CTT + 2613 1 2611 2616 # CAT-CAO + 2614 3 2612 2613 # CAO-CAM + 2615 4 2612 2618 # CAO-HAT + 2616 5 2613 2614 # CAM-CAP + 2617 6 2613 2619 # CAM-HAT + 2618 5 2614 2615 # CAP-CAM + 2619 7 2614 2620 # CAP-HAT + 2620 3 2615 2616 # CAM-CAO + 2621 6 2615 2621 # CAM-HAT + 2622 4 2616 2622 # CAO-HAT + 2623 8 2617 2623 # CTT-HT + 2624 8 2617 2624 # CTT-HT + 2625 8 2617 2625 # CTT-HT + 2626 1 2626 2627 # CAT-CAO + 2627 2 2626 2632 # CAT-CTT + 2628 1 2626 2631 # CAT-CAO + 2629 3 2627 2628 # CAO-CAM + 2630 4 2627 2633 # CAO-HAT + 2631 5 2628 2629 # CAM-CAP + 2632 6 2628 2634 # CAM-HAT + 2633 5 2629 2630 # CAP-CAM + 2634 7 2629 2635 # CAP-HAT + 2635 3 2630 2631 # CAM-CAO + 2636 6 2630 2636 # CAM-HAT + 2637 4 2631 2637 # CAO-HAT + 2638 8 2632 2638 # CTT-HT + 2639 8 2632 2639 # CTT-HT + 2640 8 2632 2640 # CTT-HT + 2641 1 2641 2642 # CAT-CAO + 2642 2 2641 2647 # CAT-CTT + 2643 1 2641 2646 # CAT-CAO + 2644 3 2642 2643 # CAO-CAM + 2645 4 2642 2648 # CAO-HAT + 2646 5 2643 2644 # CAM-CAP + 2647 6 2643 2649 # CAM-HAT + 2648 5 2644 2645 # CAP-CAM + 2649 7 2644 2650 # CAP-HAT + 2650 3 2645 2646 # CAM-CAO + 2651 6 2645 2651 # CAM-HAT + 2652 4 2646 2652 # CAO-HAT + 2653 8 2647 2653 # CTT-HT + 2654 8 2647 2654 # CTT-HT + 2655 8 2647 2655 # CTT-HT + 2656 1 2656 2657 # CAT-CAO + 2657 2 2656 2662 # CAT-CTT + 2658 1 2656 2661 # CAT-CAO + 2659 3 2657 2658 # CAO-CAM + 2660 4 2657 2663 # CAO-HAT + 2661 5 2658 2659 # CAM-CAP + 2662 6 2658 2664 # CAM-HAT + 2663 5 2659 2660 # CAP-CAM + 2664 7 2659 2665 # CAP-HAT + 2665 3 2660 2661 # CAM-CAO + 2666 6 2660 2666 # CAM-HAT + 2667 4 2661 2667 # CAO-HAT + 2668 8 2662 2668 # CTT-HT + 2669 8 2662 2669 # CTT-HT + 2670 8 2662 2670 # CTT-HT + 2671 1 2671 2672 # CAT-CAO + 2672 2 2671 2677 # CAT-CTT + 2673 1 2671 2676 # CAT-CAO + 2674 3 2672 2673 # CAO-CAM + 2675 4 2672 2678 # CAO-HAT + 2676 5 2673 2674 # CAM-CAP + 2677 6 2673 2679 # CAM-HAT + 2678 5 2674 2675 # CAP-CAM + 2679 7 2674 2680 # CAP-HAT + 2680 3 2675 2676 # CAM-CAO + 2681 6 2675 2681 # CAM-HAT + 2682 4 2676 2682 # CAO-HAT + 2683 8 2677 2683 # CTT-HT + 2684 8 2677 2684 # CTT-HT + 2685 8 2677 2685 # CTT-HT + 2686 1 2686 2687 # CAT-CAO + 2687 2 2686 2692 # CAT-CTT + 2688 1 2686 2691 # CAT-CAO + 2689 3 2687 2688 # CAO-CAM + 2690 4 2687 2693 # CAO-HAT + 2691 5 2688 2689 # CAM-CAP + 2692 6 2688 2694 # CAM-HAT + 2693 5 2689 2690 # CAP-CAM + 2694 7 2689 2695 # CAP-HAT + 2695 3 2690 2691 # CAM-CAO + 2696 6 2690 2696 # CAM-HAT + 2697 4 2691 2697 # CAO-HAT + 2698 8 2692 2698 # CTT-HT + 2699 8 2692 2699 # CTT-HT + 2700 8 2692 2700 # CTT-HT + 2701 1 2701 2702 # CAT-CAO + 2702 2 2701 2707 # CAT-CTT + 2703 1 2701 2706 # CAT-CAO + 2704 3 2702 2703 # CAO-CAM + 2705 4 2702 2708 # CAO-HAT + 2706 5 2703 2704 # CAM-CAP + 2707 6 2703 2709 # CAM-HAT + 2708 5 2704 2705 # CAP-CAM + 2709 7 2704 2710 # CAP-HAT + 2710 3 2705 2706 # CAM-CAO + 2711 6 2705 2711 # CAM-HAT + 2712 4 2706 2712 # CAO-HAT + 2713 8 2707 2713 # CTT-HT + 2714 8 2707 2714 # CTT-HT + 2715 8 2707 2715 # CTT-HT + 2716 1 2716 2717 # CAT-CAO + 2717 2 2716 2722 # CAT-CTT + 2718 1 2716 2721 # CAT-CAO + 2719 3 2717 2718 # CAO-CAM + 2720 4 2717 2723 # CAO-HAT + 2721 5 2718 2719 # CAM-CAP + 2722 6 2718 2724 # CAM-HAT + 2723 5 2719 2720 # CAP-CAM + 2724 7 2719 2725 # CAP-HAT + 2725 3 2720 2721 # CAM-CAO + 2726 6 2720 2726 # CAM-HAT + 2727 4 2721 2727 # CAO-HAT + 2728 8 2722 2728 # CTT-HT + 2729 8 2722 2729 # CTT-HT + 2730 8 2722 2730 # CTT-HT + 2731 1 2731 2732 # CAT-CAO + 2732 2 2731 2737 # CAT-CTT + 2733 1 2731 2736 # CAT-CAO + 2734 3 2732 2733 # CAO-CAM + 2735 4 2732 2738 # CAO-HAT + 2736 5 2733 2734 # CAM-CAP + 2737 6 2733 2739 # CAM-HAT + 2738 5 2734 2735 # CAP-CAM + 2739 7 2734 2740 # CAP-HAT + 2740 3 2735 2736 # CAM-CAO + 2741 6 2735 2741 # CAM-HAT + 2742 4 2736 2742 # CAO-HAT + 2743 8 2737 2743 # CTT-HT + 2744 8 2737 2744 # CTT-HT + 2745 8 2737 2745 # CTT-HT + 2746 1 2746 2747 # CAT-CAO + 2747 2 2746 2752 # CAT-CTT + 2748 1 2746 2751 # CAT-CAO + 2749 3 2747 2748 # CAO-CAM + 2750 4 2747 2753 # CAO-HAT + 2751 5 2748 2749 # CAM-CAP + 2752 6 2748 2754 # CAM-HAT + 2753 5 2749 2750 # CAP-CAM + 2754 7 2749 2755 # CAP-HAT + 2755 3 2750 2751 # CAM-CAO + 2756 6 2750 2756 # CAM-HAT + 2757 4 2751 2757 # CAO-HAT + 2758 8 2752 2758 # CTT-HT + 2759 8 2752 2759 # CTT-HT + 2760 8 2752 2760 # CTT-HT + 2761 1 2761 2762 # CAT-CAO + 2762 2 2761 2767 # CAT-CTT + 2763 1 2761 2766 # CAT-CAO + 2764 3 2762 2763 # CAO-CAM + 2765 4 2762 2768 # CAO-HAT + 2766 5 2763 2764 # CAM-CAP + 2767 6 2763 2769 # CAM-HAT + 2768 5 2764 2765 # CAP-CAM + 2769 7 2764 2770 # CAP-HAT + 2770 3 2765 2766 # CAM-CAO + 2771 6 2765 2771 # CAM-HAT + 2772 4 2766 2772 # CAO-HAT + 2773 8 2767 2773 # CTT-HT + 2774 8 2767 2774 # CTT-HT + 2775 8 2767 2775 # CTT-HT + 2776 1 2776 2777 # CAT-CAO + 2777 2 2776 2782 # CAT-CTT + 2778 1 2776 2781 # CAT-CAO + 2779 3 2777 2778 # CAO-CAM + 2780 4 2777 2783 # CAO-HAT + 2781 5 2778 2779 # CAM-CAP + 2782 6 2778 2784 # CAM-HAT + 2783 5 2779 2780 # CAP-CAM + 2784 7 2779 2785 # CAP-HAT + 2785 3 2780 2781 # CAM-CAO + 2786 6 2780 2786 # CAM-HAT + 2787 4 2781 2787 # CAO-HAT + 2788 8 2782 2788 # CTT-HT + 2789 8 2782 2789 # CTT-HT + 2790 8 2782 2790 # CTT-HT + 2791 1 2791 2792 # CAT-CAO + 2792 2 2791 2797 # CAT-CTT + 2793 1 2791 2796 # CAT-CAO + 2794 3 2792 2793 # CAO-CAM + 2795 4 2792 2798 # CAO-HAT + 2796 5 2793 2794 # CAM-CAP + 2797 6 2793 2799 # CAM-HAT + 2798 5 2794 2795 # CAP-CAM + 2799 7 2794 2800 # CAP-HAT + 2800 3 2795 2796 # CAM-CAO + 2801 6 2795 2801 # CAM-HAT + 2802 4 2796 2802 # CAO-HAT + 2803 8 2797 2803 # CTT-HT + 2804 8 2797 2804 # CTT-HT + 2805 8 2797 2805 # CTT-HT + 2806 1 2806 2807 # CAT-CAO + 2807 2 2806 2812 # CAT-CTT + 2808 1 2806 2811 # CAT-CAO + 2809 3 2807 2808 # CAO-CAM + 2810 4 2807 2813 # CAO-HAT + 2811 5 2808 2809 # CAM-CAP + 2812 6 2808 2814 # CAM-HAT + 2813 5 2809 2810 # CAP-CAM + 2814 7 2809 2815 # CAP-HAT + 2815 3 2810 2811 # CAM-CAO + 2816 6 2810 2816 # CAM-HAT + 2817 4 2811 2817 # CAO-HAT + 2818 8 2812 2818 # CTT-HT + 2819 8 2812 2819 # CTT-HT + 2820 8 2812 2820 # CTT-HT + 2821 1 2821 2822 # CAT-CAO + 2822 2 2821 2827 # CAT-CTT + 2823 1 2821 2826 # CAT-CAO + 2824 3 2822 2823 # CAO-CAM + 2825 4 2822 2828 # CAO-HAT + 2826 5 2823 2824 # CAM-CAP + 2827 6 2823 2829 # CAM-HAT + 2828 5 2824 2825 # CAP-CAM + 2829 7 2824 2830 # CAP-HAT + 2830 3 2825 2826 # CAM-CAO + 2831 6 2825 2831 # CAM-HAT + 2832 4 2826 2832 # CAO-HAT + 2833 8 2827 2833 # CTT-HT + 2834 8 2827 2834 # CTT-HT + 2835 8 2827 2835 # CTT-HT + 2836 1 2836 2837 # CAT-CAO + 2837 2 2836 2842 # CAT-CTT + 2838 1 2836 2841 # CAT-CAO + 2839 3 2837 2838 # CAO-CAM + 2840 4 2837 2843 # CAO-HAT + 2841 5 2838 2839 # CAM-CAP + 2842 6 2838 2844 # CAM-HAT + 2843 5 2839 2840 # CAP-CAM + 2844 7 2839 2845 # CAP-HAT + 2845 3 2840 2841 # CAM-CAO + 2846 6 2840 2846 # CAM-HAT + 2847 4 2841 2847 # CAO-HAT + 2848 8 2842 2848 # CTT-HT + 2849 8 2842 2849 # CTT-HT + 2850 8 2842 2850 # CTT-HT + 2851 1 2851 2852 # CAT-CAO + 2852 2 2851 2857 # CAT-CTT + 2853 1 2851 2856 # CAT-CAO + 2854 3 2852 2853 # CAO-CAM + 2855 4 2852 2858 # CAO-HAT + 2856 5 2853 2854 # CAM-CAP + 2857 6 2853 2859 # CAM-HAT + 2858 5 2854 2855 # CAP-CAM + 2859 7 2854 2860 # CAP-HAT + 2860 3 2855 2856 # CAM-CAO + 2861 6 2855 2861 # CAM-HAT + 2862 4 2856 2862 # CAO-HAT + 2863 8 2857 2863 # CTT-HT + 2864 8 2857 2864 # CTT-HT + 2865 8 2857 2865 # CTT-HT + 2866 1 2866 2867 # CAT-CAO + 2867 2 2866 2872 # CAT-CTT + 2868 1 2866 2871 # CAT-CAO + 2869 3 2867 2868 # CAO-CAM + 2870 4 2867 2873 # CAO-HAT + 2871 5 2868 2869 # CAM-CAP + 2872 6 2868 2874 # CAM-HAT + 2873 5 2869 2870 # CAP-CAM + 2874 7 2869 2875 # CAP-HAT + 2875 3 2870 2871 # CAM-CAO + 2876 6 2870 2876 # CAM-HAT + 2877 4 2871 2877 # CAO-HAT + 2878 8 2872 2878 # CTT-HT + 2879 8 2872 2879 # CTT-HT + 2880 8 2872 2880 # CTT-HT + 2881 1 2881 2882 # CAT-CAO + 2882 2 2881 2887 # CAT-CTT + 2883 1 2881 2886 # CAT-CAO + 2884 3 2882 2883 # CAO-CAM + 2885 4 2882 2888 # CAO-HAT + 2886 5 2883 2884 # CAM-CAP + 2887 6 2883 2889 # CAM-HAT + 2888 5 2884 2885 # CAP-CAM + 2889 7 2884 2890 # CAP-HAT + 2890 3 2885 2886 # CAM-CAO + 2891 6 2885 2891 # CAM-HAT + 2892 4 2886 2892 # CAO-HAT + 2893 8 2887 2893 # CTT-HT + 2894 8 2887 2894 # CTT-HT + 2895 8 2887 2895 # CTT-HT + 2896 1 2896 2897 # CAT-CAO + 2897 2 2896 2902 # CAT-CTT + 2898 1 2896 2901 # CAT-CAO + 2899 3 2897 2898 # CAO-CAM + 2900 4 2897 2903 # CAO-HAT + 2901 5 2898 2899 # CAM-CAP + 2902 6 2898 2904 # CAM-HAT + 2903 5 2899 2900 # CAP-CAM + 2904 7 2899 2905 # CAP-HAT + 2905 3 2900 2901 # CAM-CAO + 2906 6 2900 2906 # CAM-HAT + 2907 4 2901 2907 # CAO-HAT + 2908 8 2902 2908 # CTT-HT + 2909 8 2902 2909 # CTT-HT + 2910 8 2902 2910 # CTT-HT + 2911 1 2911 2912 # CAT-CAO + 2912 2 2911 2917 # CAT-CTT + 2913 1 2911 2916 # CAT-CAO + 2914 3 2912 2913 # CAO-CAM + 2915 4 2912 2918 # CAO-HAT + 2916 5 2913 2914 # CAM-CAP + 2917 6 2913 2919 # CAM-HAT + 2918 5 2914 2915 # CAP-CAM + 2919 7 2914 2920 # CAP-HAT + 2920 3 2915 2916 # CAM-CAO + 2921 6 2915 2921 # CAM-HAT + 2922 4 2916 2922 # CAO-HAT + 2923 8 2917 2923 # CTT-HT + 2924 8 2917 2924 # CTT-HT + 2925 8 2917 2925 # CTT-HT + 2926 1 2926 2927 # CAT-CAO + 2927 2 2926 2932 # CAT-CTT + 2928 1 2926 2931 # CAT-CAO + 2929 3 2927 2928 # CAO-CAM + 2930 4 2927 2933 # CAO-HAT + 2931 5 2928 2929 # CAM-CAP + 2932 6 2928 2934 # CAM-HAT + 2933 5 2929 2930 # CAP-CAM + 2934 7 2929 2935 # CAP-HAT + 2935 3 2930 2931 # CAM-CAO + 2936 6 2930 2936 # CAM-HAT + 2937 4 2931 2937 # CAO-HAT + 2938 8 2932 2938 # CTT-HT + 2939 8 2932 2939 # CTT-HT + 2940 8 2932 2940 # CTT-HT + 2941 1 2941 2942 # CAT-CAO + 2942 2 2941 2947 # CAT-CTT + 2943 1 2941 2946 # CAT-CAO + 2944 3 2942 2943 # CAO-CAM + 2945 4 2942 2948 # CAO-HAT + 2946 5 2943 2944 # CAM-CAP + 2947 6 2943 2949 # CAM-HAT + 2948 5 2944 2945 # CAP-CAM + 2949 7 2944 2950 # CAP-HAT + 2950 3 2945 2946 # CAM-CAO + 2951 6 2945 2951 # CAM-HAT + 2952 4 2946 2952 # CAO-HAT + 2953 8 2947 2953 # CTT-HT + 2954 8 2947 2954 # CTT-HT + 2955 8 2947 2955 # CTT-HT + 2956 1 2956 2957 # CAT-CAO + 2957 2 2956 2962 # CAT-CTT + 2958 1 2956 2961 # CAT-CAO + 2959 3 2957 2958 # CAO-CAM + 2960 4 2957 2963 # CAO-HAT + 2961 5 2958 2959 # CAM-CAP + 2962 6 2958 2964 # CAM-HAT + 2963 5 2959 2960 # CAP-CAM + 2964 7 2959 2965 # CAP-HAT + 2965 3 2960 2961 # CAM-CAO + 2966 6 2960 2966 # CAM-HAT + 2967 4 2961 2967 # CAO-HAT + 2968 8 2962 2968 # CTT-HT + 2969 8 2962 2969 # CTT-HT + 2970 8 2962 2970 # CTT-HT + 2971 1 2971 2972 # CAT-CAO + 2972 2 2971 2977 # CAT-CTT + 2973 1 2971 2976 # CAT-CAO + 2974 3 2972 2973 # CAO-CAM + 2975 4 2972 2978 # CAO-HAT + 2976 5 2973 2974 # CAM-CAP + 2977 6 2973 2979 # CAM-HAT + 2978 5 2974 2975 # CAP-CAM + 2979 7 2974 2980 # CAP-HAT + 2980 3 2975 2976 # CAM-CAO + 2981 6 2975 2981 # CAM-HAT + 2982 4 2976 2982 # CAO-HAT + 2983 8 2977 2983 # CTT-HT + 2984 8 2977 2984 # CTT-HT + 2985 8 2977 2985 # CTT-HT + 2986 1 2986 2987 # CAT-CAO + 2987 2 2986 2992 # CAT-CTT + 2988 1 2986 2991 # CAT-CAO + 2989 3 2987 2988 # CAO-CAM + 2990 4 2987 2993 # CAO-HAT + 2991 5 2988 2989 # CAM-CAP + 2992 6 2988 2994 # CAM-HAT + 2993 5 2989 2990 # CAP-CAM + 2994 7 2989 2995 # CAP-HAT + 2995 3 2990 2991 # CAM-CAO + 2996 6 2990 2996 # CAM-HAT + 2997 4 2991 2997 # CAO-HAT + 2998 8 2992 2998 # CTT-HT + 2999 8 2992 2999 # CTT-HT + 3000 8 2992 3000 # CTT-HT + 3001 1 3001 3002 # CAT-CAO + 3002 2 3001 3007 # CAT-CTT + 3003 1 3001 3006 # CAT-CAO + 3004 3 3002 3003 # CAO-CAM + 3005 4 3002 3008 # CAO-HAT + 3006 5 3003 3004 # CAM-CAP + 3007 6 3003 3009 # CAM-HAT + 3008 5 3004 3005 # CAP-CAM + 3009 7 3004 3010 # CAP-HAT + 3010 3 3005 3006 # CAM-CAO + 3011 6 3005 3011 # CAM-HAT + 3012 4 3006 3012 # CAO-HAT + 3013 8 3007 3013 # CTT-HT + 3014 8 3007 3014 # CTT-HT + 3015 8 3007 3015 # CTT-HT + 3016 1 3016 3017 # CAT-CAO + 3017 2 3016 3022 # CAT-CTT + 3018 1 3016 3021 # CAT-CAO + 3019 3 3017 3018 # CAO-CAM + 3020 4 3017 3023 # CAO-HAT + 3021 5 3018 3019 # CAM-CAP + 3022 6 3018 3024 # CAM-HAT + 3023 5 3019 3020 # CAP-CAM + 3024 7 3019 3025 # CAP-HAT + 3025 3 3020 3021 # CAM-CAO + 3026 6 3020 3026 # CAM-HAT + 3027 4 3021 3027 # CAO-HAT + 3028 8 3022 3028 # CTT-HT + 3029 8 3022 3029 # CTT-HT + 3030 8 3022 3030 # CTT-HT + 3031 1 3031 3032 # CAT-CAO + 3032 2 3031 3037 # CAT-CTT + 3033 1 3031 3036 # CAT-CAO + 3034 3 3032 3033 # CAO-CAM + 3035 4 3032 3038 # CAO-HAT + 3036 5 3033 3034 # CAM-CAP + 3037 6 3033 3039 # CAM-HAT + 3038 5 3034 3035 # CAP-CAM + 3039 7 3034 3040 # CAP-HAT + 3040 3 3035 3036 # CAM-CAO + 3041 6 3035 3041 # CAM-HAT + 3042 4 3036 3042 # CAO-HAT + 3043 8 3037 3043 # CTT-HT + 3044 8 3037 3044 # CTT-HT + 3045 8 3037 3045 # CTT-HT + 3046 1 3046 3047 # CAT-CAO + 3047 2 3046 3052 # CAT-CTT + 3048 1 3046 3051 # CAT-CAO + 3049 3 3047 3048 # CAO-CAM + 3050 4 3047 3053 # CAO-HAT + 3051 5 3048 3049 # CAM-CAP + 3052 6 3048 3054 # CAM-HAT + 3053 5 3049 3050 # CAP-CAM + 3054 7 3049 3055 # CAP-HAT + 3055 3 3050 3051 # CAM-CAO + 3056 6 3050 3056 # CAM-HAT + 3057 4 3051 3057 # CAO-HAT + 3058 8 3052 3058 # CTT-HT + 3059 8 3052 3059 # CTT-HT + 3060 8 3052 3060 # CTT-HT + 3061 1 3061 3062 # CAT-CAO + 3062 2 3061 3067 # CAT-CTT + 3063 1 3061 3066 # CAT-CAO + 3064 3 3062 3063 # CAO-CAM + 3065 4 3062 3068 # CAO-HAT + 3066 5 3063 3064 # CAM-CAP + 3067 6 3063 3069 # CAM-HAT + 3068 5 3064 3065 # CAP-CAM + 3069 7 3064 3070 # CAP-HAT + 3070 3 3065 3066 # CAM-CAO + 3071 6 3065 3071 # CAM-HAT + 3072 4 3066 3072 # CAO-HAT + 3073 8 3067 3073 # CTT-HT + 3074 8 3067 3074 # CTT-HT + 3075 8 3067 3075 # CTT-HT + 3076 1 3076 3077 # CAT-CAO + 3077 2 3076 3082 # CAT-CTT + 3078 1 3076 3081 # CAT-CAO + 3079 3 3077 3078 # CAO-CAM + 3080 4 3077 3083 # CAO-HAT + 3081 5 3078 3079 # CAM-CAP + 3082 6 3078 3084 # CAM-HAT + 3083 5 3079 3080 # CAP-CAM + 3084 7 3079 3085 # CAP-HAT + 3085 3 3080 3081 # CAM-CAO + 3086 6 3080 3086 # CAM-HAT + 3087 4 3081 3087 # CAO-HAT + 3088 8 3082 3088 # CTT-HT + 3089 8 3082 3089 # CTT-HT + 3090 8 3082 3090 # CTT-HT + 3091 1 3091 3092 # CAT-CAO + 3092 2 3091 3097 # CAT-CTT + 3093 1 3091 3096 # CAT-CAO + 3094 3 3092 3093 # CAO-CAM + 3095 4 3092 3098 # CAO-HAT + 3096 5 3093 3094 # CAM-CAP + 3097 6 3093 3099 # CAM-HAT + 3098 5 3094 3095 # CAP-CAM + 3099 7 3094 3100 # CAP-HAT + 3100 3 3095 3096 # CAM-CAO + 3101 6 3095 3101 # CAM-HAT + 3102 4 3096 3102 # CAO-HAT + 3103 8 3097 3103 # CTT-HT + 3104 8 3097 3104 # CTT-HT + 3105 8 3097 3105 # CTT-HT + 3106 1 3106 3107 # CAT-CAO + 3107 2 3106 3112 # CAT-CTT + 3108 1 3106 3111 # CAT-CAO + 3109 3 3107 3108 # CAO-CAM + 3110 4 3107 3113 # CAO-HAT + 3111 5 3108 3109 # CAM-CAP + 3112 6 3108 3114 # CAM-HAT + 3113 5 3109 3110 # CAP-CAM + 3114 7 3109 3115 # CAP-HAT + 3115 3 3110 3111 # CAM-CAO + 3116 6 3110 3116 # CAM-HAT + 3117 4 3111 3117 # CAO-HAT + 3118 8 3112 3118 # CTT-HT + 3119 8 3112 3119 # CTT-HT + 3120 8 3112 3120 # CTT-HT + 3121 1 3121 3122 # CAT-CAO + 3122 2 3121 3127 # CAT-CTT + 3123 1 3121 3126 # CAT-CAO + 3124 3 3122 3123 # CAO-CAM + 3125 4 3122 3128 # CAO-HAT + 3126 5 3123 3124 # CAM-CAP + 3127 6 3123 3129 # CAM-HAT + 3128 5 3124 3125 # CAP-CAM + 3129 7 3124 3130 # CAP-HAT + 3130 3 3125 3126 # CAM-CAO + 3131 6 3125 3131 # CAM-HAT + 3132 4 3126 3132 # CAO-HAT + 3133 8 3127 3133 # CTT-HT + 3134 8 3127 3134 # CTT-HT + 3135 8 3127 3135 # CTT-HT + 3136 1 3136 3137 # CAT-CAO + 3137 2 3136 3142 # CAT-CTT + 3138 1 3136 3141 # CAT-CAO + 3139 3 3137 3138 # CAO-CAM + 3140 4 3137 3143 # CAO-HAT + 3141 5 3138 3139 # CAM-CAP + 3142 6 3138 3144 # CAM-HAT + 3143 5 3139 3140 # CAP-CAM + 3144 7 3139 3145 # CAP-HAT + 3145 3 3140 3141 # CAM-CAO + 3146 6 3140 3146 # CAM-HAT + 3147 4 3141 3147 # CAO-HAT + 3148 8 3142 3148 # CTT-HT + 3149 8 3142 3149 # CTT-HT + 3150 8 3142 3150 # CTT-HT + 3151 1 3151 3152 # CAT-CAO + 3152 2 3151 3157 # CAT-CTT + 3153 1 3151 3156 # CAT-CAO + 3154 3 3152 3153 # CAO-CAM + 3155 4 3152 3158 # CAO-HAT + 3156 5 3153 3154 # CAM-CAP + 3157 6 3153 3159 # CAM-HAT + 3158 5 3154 3155 # CAP-CAM + 3159 7 3154 3160 # CAP-HAT + 3160 3 3155 3156 # CAM-CAO + 3161 6 3155 3161 # CAM-HAT + 3162 4 3156 3162 # CAO-HAT + 3163 8 3157 3163 # CTT-HT + 3164 8 3157 3164 # CTT-HT + 3165 8 3157 3165 # CTT-HT + 3166 1 3166 3167 # CAT-CAO + 3167 2 3166 3172 # CAT-CTT + 3168 1 3166 3171 # CAT-CAO + 3169 3 3167 3168 # CAO-CAM + 3170 4 3167 3173 # CAO-HAT + 3171 5 3168 3169 # CAM-CAP + 3172 6 3168 3174 # CAM-HAT + 3173 5 3169 3170 # CAP-CAM + 3174 7 3169 3175 # CAP-HAT + 3175 3 3170 3171 # CAM-CAO + 3176 6 3170 3176 # CAM-HAT + 3177 4 3171 3177 # CAO-HAT + 3178 8 3172 3178 # CTT-HT + 3179 8 3172 3179 # CTT-HT + 3180 8 3172 3180 # CTT-HT + 3181 1 3181 3182 # CAT-CAO + 3182 2 3181 3187 # CAT-CTT + 3183 1 3181 3186 # CAT-CAO + 3184 3 3182 3183 # CAO-CAM + 3185 4 3182 3188 # CAO-HAT + 3186 5 3183 3184 # CAM-CAP + 3187 6 3183 3189 # CAM-HAT + 3188 5 3184 3185 # CAP-CAM + 3189 7 3184 3190 # CAP-HAT + 3190 3 3185 3186 # CAM-CAO + 3191 6 3185 3191 # CAM-HAT + 3192 4 3186 3192 # CAO-HAT + 3193 8 3187 3193 # CTT-HT + 3194 8 3187 3194 # CTT-HT + 3195 8 3187 3195 # CTT-HT + 3196 1 3196 3197 # CAT-CAO + 3197 2 3196 3202 # CAT-CTT + 3198 1 3196 3201 # CAT-CAO + 3199 3 3197 3198 # CAO-CAM + 3200 4 3197 3203 # CAO-HAT + 3201 5 3198 3199 # CAM-CAP + 3202 6 3198 3204 # CAM-HAT + 3203 5 3199 3200 # CAP-CAM + 3204 7 3199 3205 # CAP-HAT + 3205 3 3200 3201 # CAM-CAO + 3206 6 3200 3206 # CAM-HAT + 3207 4 3201 3207 # CAO-HAT + 3208 8 3202 3208 # CTT-HT + 3209 8 3202 3209 # CTT-HT + 3210 8 3202 3210 # CTT-HT + 3211 1 3211 3212 # CAT-CAO + 3212 2 3211 3217 # CAT-CTT + 3213 1 3211 3216 # CAT-CAO + 3214 3 3212 3213 # CAO-CAM + 3215 4 3212 3218 # CAO-HAT + 3216 5 3213 3214 # CAM-CAP + 3217 6 3213 3219 # CAM-HAT + 3218 5 3214 3215 # CAP-CAM + 3219 7 3214 3220 # CAP-HAT + 3220 3 3215 3216 # CAM-CAO + 3221 6 3215 3221 # CAM-HAT + 3222 4 3216 3222 # CAO-HAT + 3223 8 3217 3223 # CTT-HT + 3224 8 3217 3224 # CTT-HT + 3225 8 3217 3225 # CTT-HT + 3226 1 3226 3227 # CAT-CAO + 3227 2 3226 3232 # CAT-CTT + 3228 1 3226 3231 # CAT-CAO + 3229 3 3227 3228 # CAO-CAM + 3230 4 3227 3233 # CAO-HAT + 3231 5 3228 3229 # CAM-CAP + 3232 6 3228 3234 # CAM-HAT + 3233 5 3229 3230 # CAP-CAM + 3234 7 3229 3235 # CAP-HAT + 3235 3 3230 3231 # CAM-CAO + 3236 6 3230 3236 # CAM-HAT + 3237 4 3231 3237 # CAO-HAT + 3238 8 3232 3238 # CTT-HT + 3239 8 3232 3239 # CTT-HT + 3240 8 3232 3240 # CTT-HT + 3241 1 3241 3242 # CAT-CAO + 3242 2 3241 3247 # CAT-CTT + 3243 1 3241 3246 # CAT-CAO + 3244 3 3242 3243 # CAO-CAM + 3245 4 3242 3248 # CAO-HAT + 3246 5 3243 3244 # CAM-CAP + 3247 6 3243 3249 # CAM-HAT + 3248 5 3244 3245 # CAP-CAM + 3249 7 3244 3250 # CAP-HAT + 3250 3 3245 3246 # CAM-CAO + 3251 6 3245 3251 # CAM-HAT + 3252 4 3246 3252 # CAO-HAT + 3253 8 3247 3253 # CTT-HT + 3254 8 3247 3254 # CTT-HT + 3255 8 3247 3255 # CTT-HT + 3256 1 3256 3257 # CAT-CAO + 3257 2 3256 3262 # CAT-CTT + 3258 1 3256 3261 # CAT-CAO + 3259 3 3257 3258 # CAO-CAM + 3260 4 3257 3263 # CAO-HAT + 3261 5 3258 3259 # CAM-CAP + 3262 6 3258 3264 # CAM-HAT + 3263 5 3259 3260 # CAP-CAM + 3264 7 3259 3265 # CAP-HAT + 3265 3 3260 3261 # CAM-CAO + 3266 6 3260 3266 # CAM-HAT + 3267 4 3261 3267 # CAO-HAT + 3268 8 3262 3268 # CTT-HT + 3269 8 3262 3269 # CTT-HT + 3270 8 3262 3270 # CTT-HT + 3271 1 3271 3272 # CAT-CAO + 3272 2 3271 3277 # CAT-CTT + 3273 1 3271 3276 # CAT-CAO + 3274 3 3272 3273 # CAO-CAM + 3275 4 3272 3278 # CAO-HAT + 3276 5 3273 3274 # CAM-CAP + 3277 6 3273 3279 # CAM-HAT + 3278 5 3274 3275 # CAP-CAM + 3279 7 3274 3280 # CAP-HAT + 3280 3 3275 3276 # CAM-CAO + 3281 6 3275 3281 # CAM-HAT + 3282 4 3276 3282 # CAO-HAT + 3283 8 3277 3283 # CTT-HT + 3284 8 3277 3284 # CTT-HT + 3285 8 3277 3285 # CTT-HT + 3286 1 3286 3287 # CAT-CAO + 3287 2 3286 3292 # CAT-CTT + 3288 1 3286 3291 # CAT-CAO + 3289 3 3287 3288 # CAO-CAM + 3290 4 3287 3293 # CAO-HAT + 3291 5 3288 3289 # CAM-CAP + 3292 6 3288 3294 # CAM-HAT + 3293 5 3289 3290 # CAP-CAM + 3294 7 3289 3295 # CAP-HAT + 3295 3 3290 3291 # CAM-CAO + 3296 6 3290 3296 # CAM-HAT + 3297 4 3291 3297 # CAO-HAT + 3298 8 3292 3298 # CTT-HT + 3299 8 3292 3299 # CTT-HT + 3300 8 3292 3300 # CTT-HT + 3301 1 3301 3302 # CAT-CAO + 3302 2 3301 3307 # CAT-CTT + 3303 1 3301 3306 # CAT-CAO + 3304 3 3302 3303 # CAO-CAM + 3305 4 3302 3308 # CAO-HAT + 3306 5 3303 3304 # CAM-CAP + 3307 6 3303 3309 # CAM-HAT + 3308 5 3304 3305 # CAP-CAM + 3309 7 3304 3310 # CAP-HAT + 3310 3 3305 3306 # CAM-CAO + 3311 6 3305 3311 # CAM-HAT + 3312 4 3306 3312 # CAO-HAT + 3313 8 3307 3313 # CTT-HT + 3314 8 3307 3314 # CTT-HT + 3315 8 3307 3315 # CTT-HT + 3316 1 3316 3317 # CAT-CAO + 3317 2 3316 3322 # CAT-CTT + 3318 1 3316 3321 # CAT-CAO + 3319 3 3317 3318 # CAO-CAM + 3320 4 3317 3323 # CAO-HAT + 3321 5 3318 3319 # CAM-CAP + 3322 6 3318 3324 # CAM-HAT + 3323 5 3319 3320 # CAP-CAM + 3324 7 3319 3325 # CAP-HAT + 3325 3 3320 3321 # CAM-CAO + 3326 6 3320 3326 # CAM-HAT + 3327 4 3321 3327 # CAO-HAT + 3328 8 3322 3328 # CTT-HT + 3329 8 3322 3329 # CTT-HT + 3330 8 3322 3330 # CTT-HT + 3331 1 3331 3332 # CAT-CAO + 3332 2 3331 3337 # CAT-CTT + 3333 1 3331 3336 # CAT-CAO + 3334 3 3332 3333 # CAO-CAM + 3335 4 3332 3338 # CAO-HAT + 3336 5 3333 3334 # CAM-CAP + 3337 6 3333 3339 # CAM-HAT + 3338 5 3334 3335 # CAP-CAM + 3339 7 3334 3340 # CAP-HAT + 3340 3 3335 3336 # CAM-CAO + 3341 6 3335 3341 # CAM-HAT + 3342 4 3336 3342 # CAO-HAT + 3343 8 3337 3343 # CTT-HT + 3344 8 3337 3344 # CTT-HT + 3345 8 3337 3345 # CTT-HT + 3346 1 3346 3347 # CAT-CAO + 3347 2 3346 3352 # CAT-CTT + 3348 1 3346 3351 # CAT-CAO + 3349 3 3347 3348 # CAO-CAM + 3350 4 3347 3353 # CAO-HAT + 3351 5 3348 3349 # CAM-CAP + 3352 6 3348 3354 # CAM-HAT + 3353 5 3349 3350 # CAP-CAM + 3354 7 3349 3355 # CAP-HAT + 3355 3 3350 3351 # CAM-CAO + 3356 6 3350 3356 # CAM-HAT + 3357 4 3351 3357 # CAO-HAT + 3358 8 3352 3358 # CTT-HT + 3359 8 3352 3359 # CTT-HT + 3360 8 3352 3360 # CTT-HT + 3361 1 3361 3362 # CAT-CAO + 3362 2 3361 3367 # CAT-CTT + 3363 1 3361 3366 # CAT-CAO + 3364 3 3362 3363 # CAO-CAM + 3365 4 3362 3368 # CAO-HAT + 3366 5 3363 3364 # CAM-CAP + 3367 6 3363 3369 # CAM-HAT + 3368 5 3364 3365 # CAP-CAM + 3369 7 3364 3370 # CAP-HAT + 3370 3 3365 3366 # CAM-CAO + 3371 6 3365 3371 # CAM-HAT + 3372 4 3366 3372 # CAO-HAT + 3373 8 3367 3373 # CTT-HT + 3374 8 3367 3374 # CTT-HT + 3375 8 3367 3375 # CTT-HT + 3376 1 3376 3377 # CAT-CAO + 3377 2 3376 3382 # CAT-CTT + 3378 1 3376 3381 # CAT-CAO + 3379 3 3377 3378 # CAO-CAM + 3380 4 3377 3383 # CAO-HAT + 3381 5 3378 3379 # CAM-CAP + 3382 6 3378 3384 # CAM-HAT + 3383 5 3379 3380 # CAP-CAM + 3384 7 3379 3385 # CAP-HAT + 3385 3 3380 3381 # CAM-CAO + 3386 6 3380 3386 # CAM-HAT + 3387 4 3381 3387 # CAO-HAT + 3388 8 3382 3388 # CTT-HT + 3389 8 3382 3389 # CTT-HT + 3390 8 3382 3390 # CTT-HT + 3391 1 3391 3392 # CAT-CAO + 3392 2 3391 3397 # CAT-CTT + 3393 1 3391 3396 # CAT-CAO + 3394 3 3392 3393 # CAO-CAM + 3395 4 3392 3398 # CAO-HAT + 3396 5 3393 3394 # CAM-CAP + 3397 6 3393 3399 # CAM-HAT + 3398 5 3394 3395 # CAP-CAM + 3399 7 3394 3400 # CAP-HAT + 3400 3 3395 3396 # CAM-CAO + 3401 6 3395 3401 # CAM-HAT + 3402 4 3396 3402 # CAO-HAT + 3403 8 3397 3403 # CTT-HT + 3404 8 3397 3404 # CTT-HT + 3405 8 3397 3405 # CTT-HT + 3406 1 3406 3407 # CAT-CAO + 3407 2 3406 3412 # CAT-CTT + 3408 1 3406 3411 # CAT-CAO + 3409 3 3407 3408 # CAO-CAM + 3410 4 3407 3413 # CAO-HAT + 3411 5 3408 3409 # CAM-CAP + 3412 6 3408 3414 # CAM-HAT + 3413 5 3409 3410 # CAP-CAM + 3414 7 3409 3415 # CAP-HAT + 3415 3 3410 3411 # CAM-CAO + 3416 6 3410 3416 # CAM-HAT + 3417 4 3411 3417 # CAO-HAT + 3418 8 3412 3418 # CTT-HT + 3419 8 3412 3419 # CTT-HT + 3420 8 3412 3420 # CTT-HT + 3421 1 3421 3422 # CAT-CAO + 3422 2 3421 3427 # CAT-CTT + 3423 1 3421 3426 # CAT-CAO + 3424 3 3422 3423 # CAO-CAM + 3425 4 3422 3428 # CAO-HAT + 3426 5 3423 3424 # CAM-CAP + 3427 6 3423 3429 # CAM-HAT + 3428 5 3424 3425 # CAP-CAM + 3429 7 3424 3430 # CAP-HAT + 3430 3 3425 3426 # CAM-CAO + 3431 6 3425 3431 # CAM-HAT + 3432 4 3426 3432 # CAO-HAT + 3433 8 3427 3433 # CTT-HT + 3434 8 3427 3434 # CTT-HT + 3435 8 3427 3435 # CTT-HT + 3436 1 3436 3437 # CAT-CAO + 3437 2 3436 3442 # CAT-CTT + 3438 1 3436 3441 # CAT-CAO + 3439 3 3437 3438 # CAO-CAM + 3440 4 3437 3443 # CAO-HAT + 3441 5 3438 3439 # CAM-CAP + 3442 6 3438 3444 # CAM-HAT + 3443 5 3439 3440 # CAP-CAM + 3444 7 3439 3445 # CAP-HAT + 3445 3 3440 3441 # CAM-CAO + 3446 6 3440 3446 # CAM-HAT + 3447 4 3441 3447 # CAO-HAT + 3448 8 3442 3448 # CTT-HT + 3449 8 3442 3449 # CTT-HT + 3450 8 3442 3450 # CTT-HT + 3451 1 3451 3452 # CAT-CAO + 3452 2 3451 3457 # CAT-CTT + 3453 1 3451 3456 # CAT-CAO + 3454 3 3452 3453 # CAO-CAM + 3455 4 3452 3458 # CAO-HAT + 3456 5 3453 3454 # CAM-CAP + 3457 6 3453 3459 # CAM-HAT + 3458 5 3454 3455 # CAP-CAM + 3459 7 3454 3460 # CAP-HAT + 3460 3 3455 3456 # CAM-CAO + 3461 6 3455 3461 # CAM-HAT + 3462 4 3456 3462 # CAO-HAT + 3463 8 3457 3463 # CTT-HT + 3464 8 3457 3464 # CTT-HT + 3465 8 3457 3465 # CTT-HT + 3466 1 3466 3467 # CAT-CAO + 3467 2 3466 3472 # CAT-CTT + 3468 1 3466 3471 # CAT-CAO + 3469 3 3467 3468 # CAO-CAM + 3470 4 3467 3473 # CAO-HAT + 3471 5 3468 3469 # CAM-CAP + 3472 6 3468 3474 # CAM-HAT + 3473 5 3469 3470 # CAP-CAM + 3474 7 3469 3475 # CAP-HAT + 3475 3 3470 3471 # CAM-CAO + 3476 6 3470 3476 # CAM-HAT + 3477 4 3471 3477 # CAO-HAT + 3478 8 3472 3478 # CTT-HT + 3479 8 3472 3479 # CTT-HT + 3480 8 3472 3480 # CTT-HT + 3481 1 3481 3482 # CAT-CAO + 3482 2 3481 3487 # CAT-CTT + 3483 1 3481 3486 # CAT-CAO + 3484 3 3482 3483 # CAO-CAM + 3485 4 3482 3488 # CAO-HAT + 3486 5 3483 3484 # CAM-CAP + 3487 6 3483 3489 # CAM-HAT + 3488 5 3484 3485 # CAP-CAM + 3489 7 3484 3490 # CAP-HAT + 3490 3 3485 3486 # CAM-CAO + 3491 6 3485 3491 # CAM-HAT + 3492 4 3486 3492 # CAO-HAT + 3493 8 3487 3493 # CTT-HT + 3494 8 3487 3494 # CTT-HT + 3495 8 3487 3495 # CTT-HT + 3496 1 3496 3497 # CAT-CAO + 3497 2 3496 3502 # CAT-CTT + 3498 1 3496 3501 # CAT-CAO + 3499 3 3497 3498 # CAO-CAM + 3500 4 3497 3503 # CAO-HAT + 3501 5 3498 3499 # CAM-CAP + 3502 6 3498 3504 # CAM-HAT + 3503 5 3499 3500 # CAP-CAM + 3504 7 3499 3505 # CAP-HAT + 3505 3 3500 3501 # CAM-CAO + 3506 6 3500 3506 # CAM-HAT + 3507 4 3501 3507 # CAO-HAT + 3508 8 3502 3508 # CTT-HT + 3509 8 3502 3509 # CTT-HT + 3510 8 3502 3510 # CTT-HT + 3511 1 3511 3512 # CAT-CAO + 3512 2 3511 3517 # CAT-CTT + 3513 1 3511 3516 # CAT-CAO + 3514 3 3512 3513 # CAO-CAM + 3515 4 3512 3518 # CAO-HAT + 3516 5 3513 3514 # CAM-CAP + 3517 6 3513 3519 # CAM-HAT + 3518 5 3514 3515 # CAP-CAM + 3519 7 3514 3520 # CAP-HAT + 3520 3 3515 3516 # CAM-CAO + 3521 6 3515 3521 # CAM-HAT + 3522 4 3516 3522 # CAO-HAT + 3523 8 3517 3523 # CTT-HT + 3524 8 3517 3524 # CTT-HT + 3525 8 3517 3525 # CTT-HT + 3526 1 3526 3527 # CAT-CAO + 3527 2 3526 3532 # CAT-CTT + 3528 1 3526 3531 # CAT-CAO + 3529 3 3527 3528 # CAO-CAM + 3530 4 3527 3533 # CAO-HAT + 3531 5 3528 3529 # CAM-CAP + 3532 6 3528 3534 # CAM-HAT + 3533 5 3529 3530 # CAP-CAM + 3534 7 3529 3535 # CAP-HAT + 3535 3 3530 3531 # CAM-CAO + 3536 6 3530 3536 # CAM-HAT + 3537 4 3531 3537 # CAO-HAT + 3538 8 3532 3538 # CTT-HT + 3539 8 3532 3539 # CTT-HT + 3540 8 3532 3540 # CTT-HT + 3541 1 3541 3542 # CAT-CAO + 3542 2 3541 3547 # CAT-CTT + 3543 1 3541 3546 # CAT-CAO + 3544 3 3542 3543 # CAO-CAM + 3545 4 3542 3548 # CAO-HAT + 3546 5 3543 3544 # CAM-CAP + 3547 6 3543 3549 # CAM-HAT + 3548 5 3544 3545 # CAP-CAM + 3549 7 3544 3550 # CAP-HAT + 3550 3 3545 3546 # CAM-CAO + 3551 6 3545 3551 # CAM-HAT + 3552 4 3546 3552 # CAO-HAT + 3553 8 3547 3553 # CTT-HT + 3554 8 3547 3554 # CTT-HT + 3555 8 3547 3555 # CTT-HT + 3556 1 3556 3557 # CAT-CAO + 3557 2 3556 3562 # CAT-CTT + 3558 1 3556 3561 # CAT-CAO + 3559 3 3557 3558 # CAO-CAM + 3560 4 3557 3563 # CAO-HAT + 3561 5 3558 3559 # CAM-CAP + 3562 6 3558 3564 # CAM-HAT + 3563 5 3559 3560 # CAP-CAM + 3564 7 3559 3565 # CAP-HAT + 3565 3 3560 3561 # CAM-CAO + 3566 6 3560 3566 # CAM-HAT + 3567 4 3561 3567 # CAO-HAT + 3568 8 3562 3568 # CTT-HT + 3569 8 3562 3569 # CTT-HT + 3570 8 3562 3570 # CTT-HT + 3571 1 3571 3572 # CAT-CAO + 3572 2 3571 3577 # CAT-CTT + 3573 1 3571 3576 # CAT-CAO + 3574 3 3572 3573 # CAO-CAM + 3575 4 3572 3578 # CAO-HAT + 3576 5 3573 3574 # CAM-CAP + 3577 6 3573 3579 # CAM-HAT + 3578 5 3574 3575 # CAP-CAM + 3579 7 3574 3580 # CAP-HAT + 3580 3 3575 3576 # CAM-CAO + 3581 6 3575 3581 # CAM-HAT + 3582 4 3576 3582 # CAO-HAT + 3583 8 3577 3583 # CTT-HT + 3584 8 3577 3584 # CTT-HT + 3585 8 3577 3585 # CTT-HT + 3586 1 3586 3587 # CAT-CAO + 3587 2 3586 3592 # CAT-CTT + 3588 1 3586 3591 # CAT-CAO + 3589 3 3587 3588 # CAO-CAM + 3590 4 3587 3593 # CAO-HAT + 3591 5 3588 3589 # CAM-CAP + 3592 6 3588 3594 # CAM-HAT + 3593 5 3589 3590 # CAP-CAM + 3594 7 3589 3595 # CAP-HAT + 3595 3 3590 3591 # CAM-CAO + 3596 6 3590 3596 # CAM-HAT + 3597 4 3591 3597 # CAO-HAT + 3598 8 3592 3598 # CTT-HT + 3599 8 3592 3599 # CTT-HT + 3600 8 3592 3600 # CTT-HT + 3601 1 3601 3602 # CAT-CAO + 3602 2 3601 3607 # CAT-CTT + 3603 1 3601 3606 # CAT-CAO + 3604 3 3602 3603 # CAO-CAM + 3605 4 3602 3608 # CAO-HAT + 3606 5 3603 3604 # CAM-CAP + 3607 6 3603 3609 # CAM-HAT + 3608 5 3604 3605 # CAP-CAM + 3609 7 3604 3610 # CAP-HAT + 3610 3 3605 3606 # CAM-CAO + 3611 6 3605 3611 # CAM-HAT + 3612 4 3606 3612 # CAO-HAT + 3613 8 3607 3613 # CTT-HT + 3614 8 3607 3614 # CTT-HT + 3615 8 3607 3615 # CTT-HT + 3616 1 3616 3617 # CAT-CAO + 3617 2 3616 3622 # CAT-CTT + 3618 1 3616 3621 # CAT-CAO + 3619 3 3617 3618 # CAO-CAM + 3620 4 3617 3623 # CAO-HAT + 3621 5 3618 3619 # CAM-CAP + 3622 6 3618 3624 # CAM-HAT + 3623 5 3619 3620 # CAP-CAM + 3624 7 3619 3625 # CAP-HAT + 3625 3 3620 3621 # CAM-CAO + 3626 6 3620 3626 # CAM-HAT + 3627 4 3621 3627 # CAO-HAT + 3628 8 3622 3628 # CTT-HT + 3629 8 3622 3629 # CTT-HT + 3630 8 3622 3630 # CTT-HT + 3631 1 3631 3632 # CAT-CAO + 3632 2 3631 3637 # CAT-CTT + 3633 1 3631 3636 # CAT-CAO + 3634 3 3632 3633 # CAO-CAM + 3635 4 3632 3638 # CAO-HAT + 3636 5 3633 3634 # CAM-CAP + 3637 6 3633 3639 # CAM-HAT + 3638 5 3634 3635 # CAP-CAM + 3639 7 3634 3640 # CAP-HAT + 3640 3 3635 3636 # CAM-CAO + 3641 6 3635 3641 # CAM-HAT + 3642 4 3636 3642 # CAO-HAT + 3643 8 3637 3643 # CTT-HT + 3644 8 3637 3644 # CTT-HT + 3645 8 3637 3645 # CTT-HT + 3646 1 3646 3647 # CAT-CAO + 3647 2 3646 3652 # CAT-CTT + 3648 1 3646 3651 # CAT-CAO + 3649 3 3647 3648 # CAO-CAM + 3650 4 3647 3653 # CAO-HAT + 3651 5 3648 3649 # CAM-CAP + 3652 6 3648 3654 # CAM-HAT + 3653 5 3649 3650 # CAP-CAM + 3654 7 3649 3655 # CAP-HAT + 3655 3 3650 3651 # CAM-CAO + 3656 6 3650 3656 # CAM-HAT + 3657 4 3651 3657 # CAO-HAT + 3658 8 3652 3658 # CTT-HT + 3659 8 3652 3659 # CTT-HT + 3660 8 3652 3660 # CTT-HT + 3661 1 3661 3662 # CAT-CAO + 3662 2 3661 3667 # CAT-CTT + 3663 1 3661 3666 # CAT-CAO + 3664 3 3662 3663 # CAO-CAM + 3665 4 3662 3668 # CAO-HAT + 3666 5 3663 3664 # CAM-CAP + 3667 6 3663 3669 # CAM-HAT + 3668 5 3664 3665 # CAP-CAM + 3669 7 3664 3670 # CAP-HAT + 3670 3 3665 3666 # CAM-CAO + 3671 6 3665 3671 # CAM-HAT + 3672 4 3666 3672 # CAO-HAT + 3673 8 3667 3673 # CTT-HT + 3674 8 3667 3674 # CTT-HT + 3675 8 3667 3675 # CTT-HT + 3676 1 3676 3677 # CAT-CAO + 3677 2 3676 3682 # CAT-CTT + 3678 1 3676 3681 # CAT-CAO + 3679 3 3677 3678 # CAO-CAM + 3680 4 3677 3683 # CAO-HAT + 3681 5 3678 3679 # CAM-CAP + 3682 6 3678 3684 # CAM-HAT + 3683 5 3679 3680 # CAP-CAM + 3684 7 3679 3685 # CAP-HAT + 3685 3 3680 3681 # CAM-CAO + 3686 6 3680 3686 # CAM-HAT + 3687 4 3681 3687 # CAO-HAT + 3688 8 3682 3688 # CTT-HT + 3689 8 3682 3689 # CTT-HT + 3690 8 3682 3690 # CTT-HT + 3691 1 3691 3692 # CAT-CAO + 3692 2 3691 3697 # CAT-CTT + 3693 1 3691 3696 # CAT-CAO + 3694 3 3692 3693 # CAO-CAM + 3695 4 3692 3698 # CAO-HAT + 3696 5 3693 3694 # CAM-CAP + 3697 6 3693 3699 # CAM-HAT + 3698 5 3694 3695 # CAP-CAM + 3699 7 3694 3700 # CAP-HAT + 3700 3 3695 3696 # CAM-CAO + 3701 6 3695 3701 # CAM-HAT + 3702 4 3696 3702 # CAO-HAT + 3703 8 3697 3703 # CTT-HT + 3704 8 3697 3704 # CTT-HT + 3705 8 3697 3705 # CTT-HT + 3706 1 3706 3707 # CAT-CAO + 3707 2 3706 3712 # CAT-CTT + 3708 1 3706 3711 # CAT-CAO + 3709 3 3707 3708 # CAO-CAM + 3710 4 3707 3713 # CAO-HAT + 3711 5 3708 3709 # CAM-CAP + 3712 6 3708 3714 # CAM-HAT + 3713 5 3709 3710 # CAP-CAM + 3714 7 3709 3715 # CAP-HAT + 3715 3 3710 3711 # CAM-CAO + 3716 6 3710 3716 # CAM-HAT + 3717 4 3711 3717 # CAO-HAT + 3718 8 3712 3718 # CTT-HT + 3719 8 3712 3719 # CTT-HT + 3720 8 3712 3720 # CTT-HT + 3721 1 3721 3722 # CAT-CAO + 3722 2 3721 3727 # CAT-CTT + 3723 1 3721 3726 # CAT-CAO + 3724 3 3722 3723 # CAO-CAM + 3725 4 3722 3728 # CAO-HAT + 3726 5 3723 3724 # CAM-CAP + 3727 6 3723 3729 # CAM-HAT + 3728 5 3724 3725 # CAP-CAM + 3729 7 3724 3730 # CAP-HAT + 3730 3 3725 3726 # CAM-CAO + 3731 6 3725 3731 # CAM-HAT + 3732 4 3726 3732 # CAO-HAT + 3733 8 3727 3733 # CTT-HT + 3734 8 3727 3734 # CTT-HT + 3735 8 3727 3735 # CTT-HT + 3736 1 3736 3737 # CAT-CAO + 3737 2 3736 3742 # CAT-CTT + 3738 1 3736 3741 # CAT-CAO + 3739 3 3737 3738 # CAO-CAM + 3740 4 3737 3743 # CAO-HAT + 3741 5 3738 3739 # CAM-CAP + 3742 6 3738 3744 # CAM-HAT + 3743 5 3739 3740 # CAP-CAM + 3744 7 3739 3745 # CAP-HAT + 3745 3 3740 3741 # CAM-CAO + 3746 6 3740 3746 # CAM-HAT + 3747 4 3741 3747 # CAO-HAT + 3748 8 3742 3748 # CTT-HT + 3749 8 3742 3749 # CTT-HT + 3750 8 3742 3750 # CTT-HT + 3751 9 1 3751 # CAT-D_CAT + 3752 10 2 3752 # CAO-D_CAO + 3753 11 3 3753 # CAM-D_CAM + 3754 12 4 3754 # CAP-D_CAP + 3755 11 5 3755 # CAM-D_CAM + 3756 10 6 3756 # CAO-D_CAO + 3757 13 7 3757 # CTT-D_CTT + 3758 9 16 3758 # CAT-D_CAT + 3759 10 17 3759 # CAO-D_CAO + 3760 11 18 3760 # CAM-D_CAM + 3761 12 19 3761 # CAP-D_CAP + 3762 11 20 3762 # CAM-D_CAM + 3763 10 21 3763 # CAO-D_CAO + 3764 13 22 3764 # CTT-D_CTT + 3765 9 31 3765 # CAT-D_CAT + 3766 10 32 3766 # CAO-D_CAO + 3767 11 33 3767 # CAM-D_CAM + 3768 12 34 3768 # CAP-D_CAP + 3769 11 35 3769 # CAM-D_CAM + 3770 10 36 3770 # CAO-D_CAO + 3771 13 37 3771 # CTT-D_CTT + 3772 9 46 3772 # CAT-D_CAT + 3773 10 47 3773 # CAO-D_CAO + 3774 11 48 3774 # CAM-D_CAM + 3775 12 49 3775 # CAP-D_CAP + 3776 11 50 3776 # CAM-D_CAM + 3777 10 51 3777 # CAO-D_CAO + 3778 13 52 3778 # CTT-D_CTT + 3779 9 61 3779 # CAT-D_CAT + 3780 10 62 3780 # CAO-D_CAO + 3781 11 63 3781 # CAM-D_CAM + 3782 12 64 3782 # CAP-D_CAP + 3783 11 65 3783 # CAM-D_CAM + 3784 10 66 3784 # CAO-D_CAO + 3785 13 67 3785 # CTT-D_CTT + 3786 9 76 3786 # CAT-D_CAT + 3787 10 77 3787 # CAO-D_CAO + 3788 11 78 3788 # CAM-D_CAM + 3789 12 79 3789 # CAP-D_CAP + 3790 11 80 3790 # CAM-D_CAM + 3791 10 81 3791 # CAO-D_CAO + 3792 13 82 3792 # CTT-D_CTT + 3793 9 91 3793 # CAT-D_CAT + 3794 10 92 3794 # CAO-D_CAO + 3795 11 93 3795 # CAM-D_CAM + 3796 12 94 3796 # CAP-D_CAP + 3797 11 95 3797 # CAM-D_CAM + 3798 10 96 3798 # CAO-D_CAO + 3799 13 97 3799 # CTT-D_CTT + 3800 9 106 3800 # CAT-D_CAT + 3801 10 107 3801 # CAO-D_CAO + 3802 11 108 3802 # CAM-D_CAM + 3803 12 109 3803 # CAP-D_CAP + 3804 11 110 3804 # CAM-D_CAM + 3805 10 111 3805 # CAO-D_CAO + 3806 13 112 3806 # CTT-D_CTT + 3807 9 121 3807 # CAT-D_CAT + 3808 10 122 3808 # CAO-D_CAO + 3809 11 123 3809 # CAM-D_CAM + 3810 12 124 3810 # CAP-D_CAP + 3811 11 125 3811 # CAM-D_CAM + 3812 10 126 3812 # CAO-D_CAO + 3813 13 127 3813 # CTT-D_CTT + 3814 9 136 3814 # CAT-D_CAT + 3815 10 137 3815 # CAO-D_CAO + 3816 11 138 3816 # CAM-D_CAM + 3817 12 139 3817 # CAP-D_CAP + 3818 11 140 3818 # CAM-D_CAM + 3819 10 141 3819 # CAO-D_CAO + 3820 13 142 3820 # CTT-D_CTT + 3821 9 151 3821 # CAT-D_CAT + 3822 10 152 3822 # CAO-D_CAO + 3823 11 153 3823 # CAM-D_CAM + 3824 12 154 3824 # CAP-D_CAP + 3825 11 155 3825 # CAM-D_CAM + 3826 10 156 3826 # CAO-D_CAO + 3827 13 157 3827 # CTT-D_CTT + 3828 9 166 3828 # CAT-D_CAT + 3829 10 167 3829 # CAO-D_CAO + 3830 11 168 3830 # CAM-D_CAM + 3831 12 169 3831 # CAP-D_CAP + 3832 11 170 3832 # CAM-D_CAM + 3833 10 171 3833 # CAO-D_CAO + 3834 13 172 3834 # CTT-D_CTT + 3835 9 181 3835 # CAT-D_CAT + 3836 10 182 3836 # CAO-D_CAO + 3837 11 183 3837 # CAM-D_CAM + 3838 12 184 3838 # CAP-D_CAP + 3839 11 185 3839 # CAM-D_CAM + 3840 10 186 3840 # CAO-D_CAO + 3841 13 187 3841 # CTT-D_CTT + 3842 9 196 3842 # CAT-D_CAT + 3843 10 197 3843 # CAO-D_CAO + 3844 11 198 3844 # CAM-D_CAM + 3845 12 199 3845 # CAP-D_CAP + 3846 11 200 3846 # CAM-D_CAM + 3847 10 201 3847 # CAO-D_CAO + 3848 13 202 3848 # CTT-D_CTT + 3849 9 211 3849 # CAT-D_CAT + 3850 10 212 3850 # CAO-D_CAO + 3851 11 213 3851 # CAM-D_CAM + 3852 12 214 3852 # CAP-D_CAP + 3853 11 215 3853 # CAM-D_CAM + 3854 10 216 3854 # CAO-D_CAO + 3855 13 217 3855 # CTT-D_CTT + 3856 9 226 3856 # CAT-D_CAT + 3857 10 227 3857 # CAO-D_CAO + 3858 11 228 3858 # CAM-D_CAM + 3859 12 229 3859 # CAP-D_CAP + 3860 11 230 3860 # CAM-D_CAM + 3861 10 231 3861 # CAO-D_CAO + 3862 13 232 3862 # CTT-D_CTT + 3863 9 241 3863 # CAT-D_CAT + 3864 10 242 3864 # CAO-D_CAO + 3865 11 243 3865 # CAM-D_CAM + 3866 12 244 3866 # CAP-D_CAP + 3867 11 245 3867 # CAM-D_CAM + 3868 10 246 3868 # CAO-D_CAO + 3869 13 247 3869 # CTT-D_CTT + 3870 9 256 3870 # CAT-D_CAT + 3871 10 257 3871 # CAO-D_CAO + 3872 11 258 3872 # CAM-D_CAM + 3873 12 259 3873 # CAP-D_CAP + 3874 11 260 3874 # CAM-D_CAM + 3875 10 261 3875 # CAO-D_CAO + 3876 13 262 3876 # CTT-D_CTT + 3877 9 271 3877 # CAT-D_CAT + 3878 10 272 3878 # CAO-D_CAO + 3879 11 273 3879 # CAM-D_CAM + 3880 12 274 3880 # CAP-D_CAP + 3881 11 275 3881 # CAM-D_CAM + 3882 10 276 3882 # CAO-D_CAO + 3883 13 277 3883 # CTT-D_CTT + 3884 9 286 3884 # CAT-D_CAT + 3885 10 287 3885 # CAO-D_CAO + 3886 11 288 3886 # CAM-D_CAM + 3887 12 289 3887 # CAP-D_CAP + 3888 11 290 3888 # CAM-D_CAM + 3889 10 291 3889 # CAO-D_CAO + 3890 13 292 3890 # CTT-D_CTT + 3891 9 301 3891 # CAT-D_CAT + 3892 10 302 3892 # CAO-D_CAO + 3893 11 303 3893 # CAM-D_CAM + 3894 12 304 3894 # CAP-D_CAP + 3895 11 305 3895 # CAM-D_CAM + 3896 10 306 3896 # CAO-D_CAO + 3897 13 307 3897 # CTT-D_CTT + 3898 9 316 3898 # CAT-D_CAT + 3899 10 317 3899 # CAO-D_CAO + 3900 11 318 3900 # CAM-D_CAM + 3901 12 319 3901 # CAP-D_CAP + 3902 11 320 3902 # CAM-D_CAM + 3903 10 321 3903 # CAO-D_CAO + 3904 13 322 3904 # CTT-D_CTT + 3905 9 331 3905 # CAT-D_CAT + 3906 10 332 3906 # CAO-D_CAO + 3907 11 333 3907 # CAM-D_CAM + 3908 12 334 3908 # CAP-D_CAP + 3909 11 335 3909 # CAM-D_CAM + 3910 10 336 3910 # CAO-D_CAO + 3911 13 337 3911 # CTT-D_CTT + 3912 9 346 3912 # CAT-D_CAT + 3913 10 347 3913 # CAO-D_CAO + 3914 11 348 3914 # CAM-D_CAM + 3915 12 349 3915 # CAP-D_CAP + 3916 11 350 3916 # CAM-D_CAM + 3917 10 351 3917 # CAO-D_CAO + 3918 13 352 3918 # CTT-D_CTT + 3919 9 361 3919 # CAT-D_CAT + 3920 10 362 3920 # CAO-D_CAO + 3921 11 363 3921 # CAM-D_CAM + 3922 12 364 3922 # CAP-D_CAP + 3923 11 365 3923 # CAM-D_CAM + 3924 10 366 3924 # CAO-D_CAO + 3925 13 367 3925 # CTT-D_CTT + 3926 9 376 3926 # CAT-D_CAT + 3927 10 377 3927 # CAO-D_CAO + 3928 11 378 3928 # CAM-D_CAM + 3929 12 379 3929 # CAP-D_CAP + 3930 11 380 3930 # CAM-D_CAM + 3931 10 381 3931 # CAO-D_CAO + 3932 13 382 3932 # CTT-D_CTT + 3933 9 391 3933 # CAT-D_CAT + 3934 10 392 3934 # CAO-D_CAO + 3935 11 393 3935 # CAM-D_CAM + 3936 12 394 3936 # CAP-D_CAP + 3937 11 395 3937 # CAM-D_CAM + 3938 10 396 3938 # CAO-D_CAO + 3939 13 397 3939 # CTT-D_CTT + 3940 9 406 3940 # CAT-D_CAT + 3941 10 407 3941 # CAO-D_CAO + 3942 11 408 3942 # CAM-D_CAM + 3943 12 409 3943 # CAP-D_CAP + 3944 11 410 3944 # CAM-D_CAM + 3945 10 411 3945 # CAO-D_CAO + 3946 13 412 3946 # CTT-D_CTT + 3947 9 421 3947 # CAT-D_CAT + 3948 10 422 3948 # CAO-D_CAO + 3949 11 423 3949 # CAM-D_CAM + 3950 12 424 3950 # CAP-D_CAP + 3951 11 425 3951 # CAM-D_CAM + 3952 10 426 3952 # CAO-D_CAO + 3953 13 427 3953 # CTT-D_CTT + 3954 9 436 3954 # CAT-D_CAT + 3955 10 437 3955 # CAO-D_CAO + 3956 11 438 3956 # CAM-D_CAM + 3957 12 439 3957 # CAP-D_CAP + 3958 11 440 3958 # CAM-D_CAM + 3959 10 441 3959 # CAO-D_CAO + 3960 13 442 3960 # CTT-D_CTT + 3961 9 451 3961 # CAT-D_CAT + 3962 10 452 3962 # CAO-D_CAO + 3963 11 453 3963 # CAM-D_CAM + 3964 12 454 3964 # CAP-D_CAP + 3965 11 455 3965 # CAM-D_CAM + 3966 10 456 3966 # CAO-D_CAO + 3967 13 457 3967 # CTT-D_CTT + 3968 9 466 3968 # CAT-D_CAT + 3969 10 467 3969 # CAO-D_CAO + 3970 11 468 3970 # CAM-D_CAM + 3971 12 469 3971 # CAP-D_CAP + 3972 11 470 3972 # CAM-D_CAM + 3973 10 471 3973 # CAO-D_CAO + 3974 13 472 3974 # CTT-D_CTT + 3975 9 481 3975 # CAT-D_CAT + 3976 10 482 3976 # CAO-D_CAO + 3977 11 483 3977 # CAM-D_CAM + 3978 12 484 3978 # CAP-D_CAP + 3979 11 485 3979 # CAM-D_CAM + 3980 10 486 3980 # CAO-D_CAO + 3981 13 487 3981 # CTT-D_CTT + 3982 9 496 3982 # CAT-D_CAT + 3983 10 497 3983 # CAO-D_CAO + 3984 11 498 3984 # CAM-D_CAM + 3985 12 499 3985 # CAP-D_CAP + 3986 11 500 3986 # CAM-D_CAM + 3987 10 501 3987 # CAO-D_CAO + 3988 13 502 3988 # CTT-D_CTT + 3989 9 511 3989 # CAT-D_CAT + 3990 10 512 3990 # CAO-D_CAO + 3991 11 513 3991 # CAM-D_CAM + 3992 12 514 3992 # CAP-D_CAP + 3993 11 515 3993 # CAM-D_CAM + 3994 10 516 3994 # CAO-D_CAO + 3995 13 517 3995 # CTT-D_CTT + 3996 9 526 3996 # CAT-D_CAT + 3997 10 527 3997 # CAO-D_CAO + 3998 11 528 3998 # CAM-D_CAM + 3999 12 529 3999 # CAP-D_CAP + 4000 11 530 4000 # CAM-D_CAM + 4001 10 531 4001 # CAO-D_CAO + 4002 13 532 4002 # CTT-D_CTT + 4003 9 541 4003 # CAT-D_CAT + 4004 10 542 4004 # CAO-D_CAO + 4005 11 543 4005 # CAM-D_CAM + 4006 12 544 4006 # CAP-D_CAP + 4007 11 545 4007 # CAM-D_CAM + 4008 10 546 4008 # CAO-D_CAO + 4009 13 547 4009 # CTT-D_CTT + 4010 9 556 4010 # CAT-D_CAT + 4011 10 557 4011 # CAO-D_CAO + 4012 11 558 4012 # CAM-D_CAM + 4013 12 559 4013 # CAP-D_CAP + 4014 11 560 4014 # CAM-D_CAM + 4015 10 561 4015 # CAO-D_CAO + 4016 13 562 4016 # CTT-D_CTT + 4017 9 571 4017 # CAT-D_CAT + 4018 10 572 4018 # CAO-D_CAO + 4019 11 573 4019 # CAM-D_CAM + 4020 12 574 4020 # CAP-D_CAP + 4021 11 575 4021 # CAM-D_CAM + 4022 10 576 4022 # CAO-D_CAO + 4023 13 577 4023 # CTT-D_CTT + 4024 9 586 4024 # CAT-D_CAT + 4025 10 587 4025 # CAO-D_CAO + 4026 11 588 4026 # CAM-D_CAM + 4027 12 589 4027 # CAP-D_CAP + 4028 11 590 4028 # CAM-D_CAM + 4029 10 591 4029 # CAO-D_CAO + 4030 13 592 4030 # CTT-D_CTT + 4031 9 601 4031 # CAT-D_CAT + 4032 10 602 4032 # CAO-D_CAO + 4033 11 603 4033 # CAM-D_CAM + 4034 12 604 4034 # CAP-D_CAP + 4035 11 605 4035 # CAM-D_CAM + 4036 10 606 4036 # CAO-D_CAO + 4037 13 607 4037 # CTT-D_CTT + 4038 9 616 4038 # CAT-D_CAT + 4039 10 617 4039 # CAO-D_CAO + 4040 11 618 4040 # CAM-D_CAM + 4041 12 619 4041 # CAP-D_CAP + 4042 11 620 4042 # CAM-D_CAM + 4043 10 621 4043 # CAO-D_CAO + 4044 13 622 4044 # CTT-D_CTT + 4045 9 631 4045 # CAT-D_CAT + 4046 10 632 4046 # CAO-D_CAO + 4047 11 633 4047 # CAM-D_CAM + 4048 12 634 4048 # CAP-D_CAP + 4049 11 635 4049 # CAM-D_CAM + 4050 10 636 4050 # CAO-D_CAO + 4051 13 637 4051 # CTT-D_CTT + 4052 9 646 4052 # CAT-D_CAT + 4053 10 647 4053 # CAO-D_CAO + 4054 11 648 4054 # CAM-D_CAM + 4055 12 649 4055 # CAP-D_CAP + 4056 11 650 4056 # CAM-D_CAM + 4057 10 651 4057 # CAO-D_CAO + 4058 13 652 4058 # CTT-D_CTT + 4059 9 661 4059 # CAT-D_CAT + 4060 10 662 4060 # CAO-D_CAO + 4061 11 663 4061 # CAM-D_CAM + 4062 12 664 4062 # CAP-D_CAP + 4063 11 665 4063 # CAM-D_CAM + 4064 10 666 4064 # CAO-D_CAO + 4065 13 667 4065 # CTT-D_CTT + 4066 9 676 4066 # CAT-D_CAT + 4067 10 677 4067 # CAO-D_CAO + 4068 11 678 4068 # CAM-D_CAM + 4069 12 679 4069 # CAP-D_CAP + 4070 11 680 4070 # CAM-D_CAM + 4071 10 681 4071 # CAO-D_CAO + 4072 13 682 4072 # CTT-D_CTT + 4073 9 691 4073 # CAT-D_CAT + 4074 10 692 4074 # CAO-D_CAO + 4075 11 693 4075 # CAM-D_CAM + 4076 12 694 4076 # CAP-D_CAP + 4077 11 695 4077 # CAM-D_CAM + 4078 10 696 4078 # CAO-D_CAO + 4079 13 697 4079 # CTT-D_CTT + 4080 9 706 4080 # CAT-D_CAT + 4081 10 707 4081 # CAO-D_CAO + 4082 11 708 4082 # CAM-D_CAM + 4083 12 709 4083 # CAP-D_CAP + 4084 11 710 4084 # CAM-D_CAM + 4085 10 711 4085 # CAO-D_CAO + 4086 13 712 4086 # CTT-D_CTT + 4087 9 721 4087 # CAT-D_CAT + 4088 10 722 4088 # CAO-D_CAO + 4089 11 723 4089 # CAM-D_CAM + 4090 12 724 4090 # CAP-D_CAP + 4091 11 725 4091 # CAM-D_CAM + 4092 10 726 4092 # CAO-D_CAO + 4093 13 727 4093 # CTT-D_CTT + 4094 9 736 4094 # CAT-D_CAT + 4095 10 737 4095 # CAO-D_CAO + 4096 11 738 4096 # CAM-D_CAM + 4097 12 739 4097 # CAP-D_CAP + 4098 11 740 4098 # CAM-D_CAM + 4099 10 741 4099 # CAO-D_CAO + 4100 13 742 4100 # CTT-D_CTT + 4101 9 751 4101 # CAT-D_CAT + 4102 10 752 4102 # CAO-D_CAO + 4103 11 753 4103 # CAM-D_CAM + 4104 12 754 4104 # CAP-D_CAP + 4105 11 755 4105 # CAM-D_CAM + 4106 10 756 4106 # CAO-D_CAO + 4107 13 757 4107 # CTT-D_CTT + 4108 9 766 4108 # CAT-D_CAT + 4109 10 767 4109 # CAO-D_CAO + 4110 11 768 4110 # CAM-D_CAM + 4111 12 769 4111 # CAP-D_CAP + 4112 11 770 4112 # CAM-D_CAM + 4113 10 771 4113 # CAO-D_CAO + 4114 13 772 4114 # CTT-D_CTT + 4115 9 781 4115 # CAT-D_CAT + 4116 10 782 4116 # CAO-D_CAO + 4117 11 783 4117 # CAM-D_CAM + 4118 12 784 4118 # CAP-D_CAP + 4119 11 785 4119 # CAM-D_CAM + 4120 10 786 4120 # CAO-D_CAO + 4121 13 787 4121 # CTT-D_CTT + 4122 9 796 4122 # CAT-D_CAT + 4123 10 797 4123 # CAO-D_CAO + 4124 11 798 4124 # CAM-D_CAM + 4125 12 799 4125 # CAP-D_CAP + 4126 11 800 4126 # CAM-D_CAM + 4127 10 801 4127 # CAO-D_CAO + 4128 13 802 4128 # CTT-D_CTT + 4129 9 811 4129 # CAT-D_CAT + 4130 10 812 4130 # CAO-D_CAO + 4131 11 813 4131 # CAM-D_CAM + 4132 12 814 4132 # CAP-D_CAP + 4133 11 815 4133 # CAM-D_CAM + 4134 10 816 4134 # CAO-D_CAO + 4135 13 817 4135 # CTT-D_CTT + 4136 9 826 4136 # CAT-D_CAT + 4137 10 827 4137 # CAO-D_CAO + 4138 11 828 4138 # CAM-D_CAM + 4139 12 829 4139 # CAP-D_CAP + 4140 11 830 4140 # CAM-D_CAM + 4141 10 831 4141 # CAO-D_CAO + 4142 13 832 4142 # CTT-D_CTT + 4143 9 841 4143 # CAT-D_CAT + 4144 10 842 4144 # CAO-D_CAO + 4145 11 843 4145 # CAM-D_CAM + 4146 12 844 4146 # CAP-D_CAP + 4147 11 845 4147 # CAM-D_CAM + 4148 10 846 4148 # CAO-D_CAO + 4149 13 847 4149 # CTT-D_CTT + 4150 9 856 4150 # CAT-D_CAT + 4151 10 857 4151 # CAO-D_CAO + 4152 11 858 4152 # CAM-D_CAM + 4153 12 859 4153 # CAP-D_CAP + 4154 11 860 4154 # CAM-D_CAM + 4155 10 861 4155 # CAO-D_CAO + 4156 13 862 4156 # CTT-D_CTT + 4157 9 871 4157 # CAT-D_CAT + 4158 10 872 4158 # CAO-D_CAO + 4159 11 873 4159 # CAM-D_CAM + 4160 12 874 4160 # CAP-D_CAP + 4161 11 875 4161 # CAM-D_CAM + 4162 10 876 4162 # CAO-D_CAO + 4163 13 877 4163 # CTT-D_CTT + 4164 9 886 4164 # CAT-D_CAT + 4165 10 887 4165 # CAO-D_CAO + 4166 11 888 4166 # CAM-D_CAM + 4167 12 889 4167 # CAP-D_CAP + 4168 11 890 4168 # CAM-D_CAM + 4169 10 891 4169 # CAO-D_CAO + 4170 13 892 4170 # CTT-D_CTT + 4171 9 901 4171 # CAT-D_CAT + 4172 10 902 4172 # CAO-D_CAO + 4173 11 903 4173 # CAM-D_CAM + 4174 12 904 4174 # CAP-D_CAP + 4175 11 905 4175 # CAM-D_CAM + 4176 10 906 4176 # CAO-D_CAO + 4177 13 907 4177 # CTT-D_CTT + 4178 9 916 4178 # CAT-D_CAT + 4179 10 917 4179 # CAO-D_CAO + 4180 11 918 4180 # CAM-D_CAM + 4181 12 919 4181 # CAP-D_CAP + 4182 11 920 4182 # CAM-D_CAM + 4183 10 921 4183 # CAO-D_CAO + 4184 13 922 4184 # CTT-D_CTT + 4185 9 931 4185 # CAT-D_CAT + 4186 10 932 4186 # CAO-D_CAO + 4187 11 933 4187 # CAM-D_CAM + 4188 12 934 4188 # CAP-D_CAP + 4189 11 935 4189 # CAM-D_CAM + 4190 10 936 4190 # CAO-D_CAO + 4191 13 937 4191 # CTT-D_CTT + 4192 9 946 4192 # CAT-D_CAT + 4193 10 947 4193 # CAO-D_CAO + 4194 11 948 4194 # CAM-D_CAM + 4195 12 949 4195 # CAP-D_CAP + 4196 11 950 4196 # CAM-D_CAM + 4197 10 951 4197 # CAO-D_CAO + 4198 13 952 4198 # CTT-D_CTT + 4199 9 961 4199 # CAT-D_CAT + 4200 10 962 4200 # CAO-D_CAO + 4201 11 963 4201 # CAM-D_CAM + 4202 12 964 4202 # CAP-D_CAP + 4203 11 965 4203 # CAM-D_CAM + 4204 10 966 4204 # CAO-D_CAO + 4205 13 967 4205 # CTT-D_CTT + 4206 9 976 4206 # CAT-D_CAT + 4207 10 977 4207 # CAO-D_CAO + 4208 11 978 4208 # CAM-D_CAM + 4209 12 979 4209 # CAP-D_CAP + 4210 11 980 4210 # CAM-D_CAM + 4211 10 981 4211 # CAO-D_CAO + 4212 13 982 4212 # CTT-D_CTT + 4213 9 991 4213 # CAT-D_CAT + 4214 10 992 4214 # CAO-D_CAO + 4215 11 993 4215 # CAM-D_CAM + 4216 12 994 4216 # CAP-D_CAP + 4217 11 995 4217 # CAM-D_CAM + 4218 10 996 4218 # CAO-D_CAO + 4219 13 997 4219 # CTT-D_CTT + 4220 9 1006 4220 # CAT-D_CAT + 4221 10 1007 4221 # CAO-D_CAO + 4222 11 1008 4222 # CAM-D_CAM + 4223 12 1009 4223 # CAP-D_CAP + 4224 11 1010 4224 # CAM-D_CAM + 4225 10 1011 4225 # CAO-D_CAO + 4226 13 1012 4226 # CTT-D_CTT + 4227 9 1021 4227 # CAT-D_CAT + 4228 10 1022 4228 # CAO-D_CAO + 4229 11 1023 4229 # CAM-D_CAM + 4230 12 1024 4230 # CAP-D_CAP + 4231 11 1025 4231 # CAM-D_CAM + 4232 10 1026 4232 # CAO-D_CAO + 4233 13 1027 4233 # CTT-D_CTT + 4234 9 1036 4234 # CAT-D_CAT + 4235 10 1037 4235 # CAO-D_CAO + 4236 11 1038 4236 # CAM-D_CAM + 4237 12 1039 4237 # CAP-D_CAP + 4238 11 1040 4238 # CAM-D_CAM + 4239 10 1041 4239 # CAO-D_CAO + 4240 13 1042 4240 # CTT-D_CTT + 4241 9 1051 4241 # CAT-D_CAT + 4242 10 1052 4242 # CAO-D_CAO + 4243 11 1053 4243 # CAM-D_CAM + 4244 12 1054 4244 # CAP-D_CAP + 4245 11 1055 4245 # CAM-D_CAM + 4246 10 1056 4246 # CAO-D_CAO + 4247 13 1057 4247 # CTT-D_CTT + 4248 9 1066 4248 # CAT-D_CAT + 4249 10 1067 4249 # CAO-D_CAO + 4250 11 1068 4250 # CAM-D_CAM + 4251 12 1069 4251 # CAP-D_CAP + 4252 11 1070 4252 # CAM-D_CAM + 4253 10 1071 4253 # CAO-D_CAO + 4254 13 1072 4254 # CTT-D_CTT + 4255 9 1081 4255 # CAT-D_CAT + 4256 10 1082 4256 # CAO-D_CAO + 4257 11 1083 4257 # CAM-D_CAM + 4258 12 1084 4258 # CAP-D_CAP + 4259 11 1085 4259 # CAM-D_CAM + 4260 10 1086 4260 # CAO-D_CAO + 4261 13 1087 4261 # CTT-D_CTT + 4262 9 1096 4262 # CAT-D_CAT + 4263 10 1097 4263 # CAO-D_CAO + 4264 11 1098 4264 # CAM-D_CAM + 4265 12 1099 4265 # CAP-D_CAP + 4266 11 1100 4266 # CAM-D_CAM + 4267 10 1101 4267 # CAO-D_CAO + 4268 13 1102 4268 # CTT-D_CTT + 4269 9 1111 4269 # CAT-D_CAT + 4270 10 1112 4270 # CAO-D_CAO + 4271 11 1113 4271 # CAM-D_CAM + 4272 12 1114 4272 # CAP-D_CAP + 4273 11 1115 4273 # CAM-D_CAM + 4274 10 1116 4274 # CAO-D_CAO + 4275 13 1117 4275 # CTT-D_CTT + 4276 9 1126 4276 # CAT-D_CAT + 4277 10 1127 4277 # CAO-D_CAO + 4278 11 1128 4278 # CAM-D_CAM + 4279 12 1129 4279 # CAP-D_CAP + 4280 11 1130 4280 # CAM-D_CAM + 4281 10 1131 4281 # CAO-D_CAO + 4282 13 1132 4282 # CTT-D_CTT + 4283 9 1141 4283 # CAT-D_CAT + 4284 10 1142 4284 # CAO-D_CAO + 4285 11 1143 4285 # CAM-D_CAM + 4286 12 1144 4286 # CAP-D_CAP + 4287 11 1145 4287 # CAM-D_CAM + 4288 10 1146 4288 # CAO-D_CAO + 4289 13 1147 4289 # CTT-D_CTT + 4290 9 1156 4290 # CAT-D_CAT + 4291 10 1157 4291 # CAO-D_CAO + 4292 11 1158 4292 # CAM-D_CAM + 4293 12 1159 4293 # CAP-D_CAP + 4294 11 1160 4294 # CAM-D_CAM + 4295 10 1161 4295 # CAO-D_CAO + 4296 13 1162 4296 # CTT-D_CTT + 4297 9 1171 4297 # CAT-D_CAT + 4298 10 1172 4298 # CAO-D_CAO + 4299 11 1173 4299 # CAM-D_CAM + 4300 12 1174 4300 # CAP-D_CAP + 4301 11 1175 4301 # CAM-D_CAM + 4302 10 1176 4302 # CAO-D_CAO + 4303 13 1177 4303 # CTT-D_CTT + 4304 9 1186 4304 # CAT-D_CAT + 4305 10 1187 4305 # CAO-D_CAO + 4306 11 1188 4306 # CAM-D_CAM + 4307 12 1189 4307 # CAP-D_CAP + 4308 11 1190 4308 # CAM-D_CAM + 4309 10 1191 4309 # CAO-D_CAO + 4310 13 1192 4310 # CTT-D_CTT + 4311 9 1201 4311 # CAT-D_CAT + 4312 10 1202 4312 # CAO-D_CAO + 4313 11 1203 4313 # CAM-D_CAM + 4314 12 1204 4314 # CAP-D_CAP + 4315 11 1205 4315 # CAM-D_CAM + 4316 10 1206 4316 # CAO-D_CAO + 4317 13 1207 4317 # CTT-D_CTT + 4318 9 1216 4318 # CAT-D_CAT + 4319 10 1217 4319 # CAO-D_CAO + 4320 11 1218 4320 # CAM-D_CAM + 4321 12 1219 4321 # CAP-D_CAP + 4322 11 1220 4322 # CAM-D_CAM + 4323 10 1221 4323 # CAO-D_CAO + 4324 13 1222 4324 # CTT-D_CTT + 4325 9 1231 4325 # CAT-D_CAT + 4326 10 1232 4326 # CAO-D_CAO + 4327 11 1233 4327 # CAM-D_CAM + 4328 12 1234 4328 # CAP-D_CAP + 4329 11 1235 4329 # CAM-D_CAM + 4330 10 1236 4330 # CAO-D_CAO + 4331 13 1237 4331 # CTT-D_CTT + 4332 9 1246 4332 # CAT-D_CAT + 4333 10 1247 4333 # CAO-D_CAO + 4334 11 1248 4334 # CAM-D_CAM + 4335 12 1249 4335 # CAP-D_CAP + 4336 11 1250 4336 # CAM-D_CAM + 4337 10 1251 4337 # CAO-D_CAO + 4338 13 1252 4338 # CTT-D_CTT + 4339 9 1261 4339 # CAT-D_CAT + 4340 10 1262 4340 # CAO-D_CAO + 4341 11 1263 4341 # CAM-D_CAM + 4342 12 1264 4342 # CAP-D_CAP + 4343 11 1265 4343 # CAM-D_CAM + 4344 10 1266 4344 # CAO-D_CAO + 4345 13 1267 4345 # CTT-D_CTT + 4346 9 1276 4346 # CAT-D_CAT + 4347 10 1277 4347 # CAO-D_CAO + 4348 11 1278 4348 # CAM-D_CAM + 4349 12 1279 4349 # CAP-D_CAP + 4350 11 1280 4350 # CAM-D_CAM + 4351 10 1281 4351 # CAO-D_CAO + 4352 13 1282 4352 # CTT-D_CTT + 4353 9 1291 4353 # CAT-D_CAT + 4354 10 1292 4354 # CAO-D_CAO + 4355 11 1293 4355 # CAM-D_CAM + 4356 12 1294 4356 # CAP-D_CAP + 4357 11 1295 4357 # CAM-D_CAM + 4358 10 1296 4358 # CAO-D_CAO + 4359 13 1297 4359 # CTT-D_CTT + 4360 9 1306 4360 # CAT-D_CAT + 4361 10 1307 4361 # CAO-D_CAO + 4362 11 1308 4362 # CAM-D_CAM + 4363 12 1309 4363 # CAP-D_CAP + 4364 11 1310 4364 # CAM-D_CAM + 4365 10 1311 4365 # CAO-D_CAO + 4366 13 1312 4366 # CTT-D_CTT + 4367 9 1321 4367 # CAT-D_CAT + 4368 10 1322 4368 # CAO-D_CAO + 4369 11 1323 4369 # CAM-D_CAM + 4370 12 1324 4370 # CAP-D_CAP + 4371 11 1325 4371 # CAM-D_CAM + 4372 10 1326 4372 # CAO-D_CAO + 4373 13 1327 4373 # CTT-D_CTT + 4374 9 1336 4374 # CAT-D_CAT + 4375 10 1337 4375 # CAO-D_CAO + 4376 11 1338 4376 # CAM-D_CAM + 4377 12 1339 4377 # CAP-D_CAP + 4378 11 1340 4378 # CAM-D_CAM + 4379 10 1341 4379 # CAO-D_CAO + 4380 13 1342 4380 # CTT-D_CTT + 4381 9 1351 4381 # CAT-D_CAT + 4382 10 1352 4382 # CAO-D_CAO + 4383 11 1353 4383 # CAM-D_CAM + 4384 12 1354 4384 # CAP-D_CAP + 4385 11 1355 4385 # CAM-D_CAM + 4386 10 1356 4386 # CAO-D_CAO + 4387 13 1357 4387 # CTT-D_CTT + 4388 9 1366 4388 # CAT-D_CAT + 4389 10 1367 4389 # CAO-D_CAO + 4390 11 1368 4390 # CAM-D_CAM + 4391 12 1369 4391 # CAP-D_CAP + 4392 11 1370 4392 # CAM-D_CAM + 4393 10 1371 4393 # CAO-D_CAO + 4394 13 1372 4394 # CTT-D_CTT + 4395 9 1381 4395 # CAT-D_CAT + 4396 10 1382 4396 # CAO-D_CAO + 4397 11 1383 4397 # CAM-D_CAM + 4398 12 1384 4398 # CAP-D_CAP + 4399 11 1385 4399 # CAM-D_CAM + 4400 10 1386 4400 # CAO-D_CAO + 4401 13 1387 4401 # CTT-D_CTT + 4402 9 1396 4402 # CAT-D_CAT + 4403 10 1397 4403 # CAO-D_CAO + 4404 11 1398 4404 # CAM-D_CAM + 4405 12 1399 4405 # CAP-D_CAP + 4406 11 1400 4406 # CAM-D_CAM + 4407 10 1401 4407 # CAO-D_CAO + 4408 13 1402 4408 # CTT-D_CTT + 4409 9 1411 4409 # CAT-D_CAT + 4410 10 1412 4410 # CAO-D_CAO + 4411 11 1413 4411 # CAM-D_CAM + 4412 12 1414 4412 # CAP-D_CAP + 4413 11 1415 4413 # CAM-D_CAM + 4414 10 1416 4414 # CAO-D_CAO + 4415 13 1417 4415 # CTT-D_CTT + 4416 9 1426 4416 # CAT-D_CAT + 4417 10 1427 4417 # CAO-D_CAO + 4418 11 1428 4418 # CAM-D_CAM + 4419 12 1429 4419 # CAP-D_CAP + 4420 11 1430 4420 # CAM-D_CAM + 4421 10 1431 4421 # CAO-D_CAO + 4422 13 1432 4422 # CTT-D_CTT + 4423 9 1441 4423 # CAT-D_CAT + 4424 10 1442 4424 # CAO-D_CAO + 4425 11 1443 4425 # CAM-D_CAM + 4426 12 1444 4426 # CAP-D_CAP + 4427 11 1445 4427 # CAM-D_CAM + 4428 10 1446 4428 # CAO-D_CAO + 4429 13 1447 4429 # CTT-D_CTT + 4430 9 1456 4430 # CAT-D_CAT + 4431 10 1457 4431 # CAO-D_CAO + 4432 11 1458 4432 # CAM-D_CAM + 4433 12 1459 4433 # CAP-D_CAP + 4434 11 1460 4434 # CAM-D_CAM + 4435 10 1461 4435 # CAO-D_CAO + 4436 13 1462 4436 # CTT-D_CTT + 4437 9 1471 4437 # CAT-D_CAT + 4438 10 1472 4438 # CAO-D_CAO + 4439 11 1473 4439 # CAM-D_CAM + 4440 12 1474 4440 # CAP-D_CAP + 4441 11 1475 4441 # CAM-D_CAM + 4442 10 1476 4442 # CAO-D_CAO + 4443 13 1477 4443 # CTT-D_CTT + 4444 9 1486 4444 # CAT-D_CAT + 4445 10 1487 4445 # CAO-D_CAO + 4446 11 1488 4446 # CAM-D_CAM + 4447 12 1489 4447 # CAP-D_CAP + 4448 11 1490 4448 # CAM-D_CAM + 4449 10 1491 4449 # CAO-D_CAO + 4450 13 1492 4450 # CTT-D_CTT + 4451 9 1501 4451 # CAT-D_CAT + 4452 10 1502 4452 # CAO-D_CAO + 4453 11 1503 4453 # CAM-D_CAM + 4454 12 1504 4454 # CAP-D_CAP + 4455 11 1505 4455 # CAM-D_CAM + 4456 10 1506 4456 # CAO-D_CAO + 4457 13 1507 4457 # CTT-D_CTT + 4458 9 1516 4458 # CAT-D_CAT + 4459 10 1517 4459 # CAO-D_CAO + 4460 11 1518 4460 # CAM-D_CAM + 4461 12 1519 4461 # CAP-D_CAP + 4462 11 1520 4462 # CAM-D_CAM + 4463 10 1521 4463 # CAO-D_CAO + 4464 13 1522 4464 # CTT-D_CTT + 4465 9 1531 4465 # CAT-D_CAT + 4466 10 1532 4466 # CAO-D_CAO + 4467 11 1533 4467 # CAM-D_CAM + 4468 12 1534 4468 # CAP-D_CAP + 4469 11 1535 4469 # CAM-D_CAM + 4470 10 1536 4470 # CAO-D_CAO + 4471 13 1537 4471 # CTT-D_CTT + 4472 9 1546 4472 # CAT-D_CAT + 4473 10 1547 4473 # CAO-D_CAO + 4474 11 1548 4474 # CAM-D_CAM + 4475 12 1549 4475 # CAP-D_CAP + 4476 11 1550 4476 # CAM-D_CAM + 4477 10 1551 4477 # CAO-D_CAO + 4478 13 1552 4478 # CTT-D_CTT + 4479 9 1561 4479 # CAT-D_CAT + 4480 10 1562 4480 # CAO-D_CAO + 4481 11 1563 4481 # CAM-D_CAM + 4482 12 1564 4482 # CAP-D_CAP + 4483 11 1565 4483 # CAM-D_CAM + 4484 10 1566 4484 # CAO-D_CAO + 4485 13 1567 4485 # CTT-D_CTT + 4486 9 1576 4486 # CAT-D_CAT + 4487 10 1577 4487 # CAO-D_CAO + 4488 11 1578 4488 # CAM-D_CAM + 4489 12 1579 4489 # CAP-D_CAP + 4490 11 1580 4490 # CAM-D_CAM + 4491 10 1581 4491 # CAO-D_CAO + 4492 13 1582 4492 # CTT-D_CTT + 4493 9 1591 4493 # CAT-D_CAT + 4494 10 1592 4494 # CAO-D_CAO + 4495 11 1593 4495 # CAM-D_CAM + 4496 12 1594 4496 # CAP-D_CAP + 4497 11 1595 4497 # CAM-D_CAM + 4498 10 1596 4498 # CAO-D_CAO + 4499 13 1597 4499 # CTT-D_CTT + 4500 9 1606 4500 # CAT-D_CAT + 4501 10 1607 4501 # CAO-D_CAO + 4502 11 1608 4502 # CAM-D_CAM + 4503 12 1609 4503 # CAP-D_CAP + 4504 11 1610 4504 # CAM-D_CAM + 4505 10 1611 4505 # CAO-D_CAO + 4506 13 1612 4506 # CTT-D_CTT + 4507 9 1621 4507 # CAT-D_CAT + 4508 10 1622 4508 # CAO-D_CAO + 4509 11 1623 4509 # CAM-D_CAM + 4510 12 1624 4510 # CAP-D_CAP + 4511 11 1625 4511 # CAM-D_CAM + 4512 10 1626 4512 # CAO-D_CAO + 4513 13 1627 4513 # CTT-D_CTT + 4514 9 1636 4514 # CAT-D_CAT + 4515 10 1637 4515 # CAO-D_CAO + 4516 11 1638 4516 # CAM-D_CAM + 4517 12 1639 4517 # CAP-D_CAP + 4518 11 1640 4518 # CAM-D_CAM + 4519 10 1641 4519 # CAO-D_CAO + 4520 13 1642 4520 # CTT-D_CTT + 4521 9 1651 4521 # CAT-D_CAT + 4522 10 1652 4522 # CAO-D_CAO + 4523 11 1653 4523 # CAM-D_CAM + 4524 12 1654 4524 # CAP-D_CAP + 4525 11 1655 4525 # CAM-D_CAM + 4526 10 1656 4526 # CAO-D_CAO + 4527 13 1657 4527 # CTT-D_CTT + 4528 9 1666 4528 # CAT-D_CAT + 4529 10 1667 4529 # CAO-D_CAO + 4530 11 1668 4530 # CAM-D_CAM + 4531 12 1669 4531 # CAP-D_CAP + 4532 11 1670 4532 # CAM-D_CAM + 4533 10 1671 4533 # CAO-D_CAO + 4534 13 1672 4534 # CTT-D_CTT + 4535 9 1681 4535 # CAT-D_CAT + 4536 10 1682 4536 # CAO-D_CAO + 4537 11 1683 4537 # CAM-D_CAM + 4538 12 1684 4538 # CAP-D_CAP + 4539 11 1685 4539 # CAM-D_CAM + 4540 10 1686 4540 # CAO-D_CAO + 4541 13 1687 4541 # CTT-D_CTT + 4542 9 1696 4542 # CAT-D_CAT + 4543 10 1697 4543 # CAO-D_CAO + 4544 11 1698 4544 # CAM-D_CAM + 4545 12 1699 4545 # CAP-D_CAP + 4546 11 1700 4546 # CAM-D_CAM + 4547 10 1701 4547 # CAO-D_CAO + 4548 13 1702 4548 # CTT-D_CTT + 4549 9 1711 4549 # CAT-D_CAT + 4550 10 1712 4550 # CAO-D_CAO + 4551 11 1713 4551 # CAM-D_CAM + 4552 12 1714 4552 # CAP-D_CAP + 4553 11 1715 4553 # CAM-D_CAM + 4554 10 1716 4554 # CAO-D_CAO + 4555 13 1717 4555 # CTT-D_CTT + 4556 9 1726 4556 # CAT-D_CAT + 4557 10 1727 4557 # CAO-D_CAO + 4558 11 1728 4558 # CAM-D_CAM + 4559 12 1729 4559 # CAP-D_CAP + 4560 11 1730 4560 # CAM-D_CAM + 4561 10 1731 4561 # CAO-D_CAO + 4562 13 1732 4562 # CTT-D_CTT + 4563 9 1741 4563 # CAT-D_CAT + 4564 10 1742 4564 # CAO-D_CAO + 4565 11 1743 4565 # CAM-D_CAM + 4566 12 1744 4566 # CAP-D_CAP + 4567 11 1745 4567 # CAM-D_CAM + 4568 10 1746 4568 # CAO-D_CAO + 4569 13 1747 4569 # CTT-D_CTT + 4570 9 1756 4570 # CAT-D_CAT + 4571 10 1757 4571 # CAO-D_CAO + 4572 11 1758 4572 # CAM-D_CAM + 4573 12 1759 4573 # CAP-D_CAP + 4574 11 1760 4574 # CAM-D_CAM + 4575 10 1761 4575 # CAO-D_CAO + 4576 13 1762 4576 # CTT-D_CTT + 4577 9 1771 4577 # CAT-D_CAT + 4578 10 1772 4578 # CAO-D_CAO + 4579 11 1773 4579 # CAM-D_CAM + 4580 12 1774 4580 # CAP-D_CAP + 4581 11 1775 4581 # CAM-D_CAM + 4582 10 1776 4582 # CAO-D_CAO + 4583 13 1777 4583 # CTT-D_CTT + 4584 9 1786 4584 # CAT-D_CAT + 4585 10 1787 4585 # CAO-D_CAO + 4586 11 1788 4586 # CAM-D_CAM + 4587 12 1789 4587 # CAP-D_CAP + 4588 11 1790 4588 # CAM-D_CAM + 4589 10 1791 4589 # CAO-D_CAO + 4590 13 1792 4590 # CTT-D_CTT + 4591 9 1801 4591 # CAT-D_CAT + 4592 10 1802 4592 # CAO-D_CAO + 4593 11 1803 4593 # CAM-D_CAM + 4594 12 1804 4594 # CAP-D_CAP + 4595 11 1805 4595 # CAM-D_CAM + 4596 10 1806 4596 # CAO-D_CAO + 4597 13 1807 4597 # CTT-D_CTT + 4598 9 1816 4598 # CAT-D_CAT + 4599 10 1817 4599 # CAO-D_CAO + 4600 11 1818 4600 # CAM-D_CAM + 4601 12 1819 4601 # CAP-D_CAP + 4602 11 1820 4602 # CAM-D_CAM + 4603 10 1821 4603 # CAO-D_CAO + 4604 13 1822 4604 # CTT-D_CTT + 4605 9 1831 4605 # CAT-D_CAT + 4606 10 1832 4606 # CAO-D_CAO + 4607 11 1833 4607 # CAM-D_CAM + 4608 12 1834 4608 # CAP-D_CAP + 4609 11 1835 4609 # CAM-D_CAM + 4610 10 1836 4610 # CAO-D_CAO + 4611 13 1837 4611 # CTT-D_CTT + 4612 9 1846 4612 # CAT-D_CAT + 4613 10 1847 4613 # CAO-D_CAO + 4614 11 1848 4614 # CAM-D_CAM + 4615 12 1849 4615 # CAP-D_CAP + 4616 11 1850 4616 # CAM-D_CAM + 4617 10 1851 4617 # CAO-D_CAO + 4618 13 1852 4618 # CTT-D_CTT + 4619 9 1861 4619 # CAT-D_CAT + 4620 10 1862 4620 # CAO-D_CAO + 4621 11 1863 4621 # CAM-D_CAM + 4622 12 1864 4622 # CAP-D_CAP + 4623 11 1865 4623 # CAM-D_CAM + 4624 10 1866 4624 # CAO-D_CAO + 4625 13 1867 4625 # CTT-D_CTT + 4626 9 1876 4626 # CAT-D_CAT + 4627 10 1877 4627 # CAO-D_CAO + 4628 11 1878 4628 # CAM-D_CAM + 4629 12 1879 4629 # CAP-D_CAP + 4630 11 1880 4630 # CAM-D_CAM + 4631 10 1881 4631 # CAO-D_CAO + 4632 13 1882 4632 # CTT-D_CTT + 4633 9 1891 4633 # CAT-D_CAT + 4634 10 1892 4634 # CAO-D_CAO + 4635 11 1893 4635 # CAM-D_CAM + 4636 12 1894 4636 # CAP-D_CAP + 4637 11 1895 4637 # CAM-D_CAM + 4638 10 1896 4638 # CAO-D_CAO + 4639 13 1897 4639 # CTT-D_CTT + 4640 9 1906 4640 # CAT-D_CAT + 4641 10 1907 4641 # CAO-D_CAO + 4642 11 1908 4642 # CAM-D_CAM + 4643 12 1909 4643 # CAP-D_CAP + 4644 11 1910 4644 # CAM-D_CAM + 4645 10 1911 4645 # CAO-D_CAO + 4646 13 1912 4646 # CTT-D_CTT + 4647 9 1921 4647 # CAT-D_CAT + 4648 10 1922 4648 # CAO-D_CAO + 4649 11 1923 4649 # CAM-D_CAM + 4650 12 1924 4650 # CAP-D_CAP + 4651 11 1925 4651 # CAM-D_CAM + 4652 10 1926 4652 # CAO-D_CAO + 4653 13 1927 4653 # CTT-D_CTT + 4654 9 1936 4654 # CAT-D_CAT + 4655 10 1937 4655 # CAO-D_CAO + 4656 11 1938 4656 # CAM-D_CAM + 4657 12 1939 4657 # CAP-D_CAP + 4658 11 1940 4658 # CAM-D_CAM + 4659 10 1941 4659 # CAO-D_CAO + 4660 13 1942 4660 # CTT-D_CTT + 4661 9 1951 4661 # CAT-D_CAT + 4662 10 1952 4662 # CAO-D_CAO + 4663 11 1953 4663 # CAM-D_CAM + 4664 12 1954 4664 # CAP-D_CAP + 4665 11 1955 4665 # CAM-D_CAM + 4666 10 1956 4666 # CAO-D_CAO + 4667 13 1957 4667 # CTT-D_CTT + 4668 9 1966 4668 # CAT-D_CAT + 4669 10 1967 4669 # CAO-D_CAO + 4670 11 1968 4670 # CAM-D_CAM + 4671 12 1969 4671 # CAP-D_CAP + 4672 11 1970 4672 # CAM-D_CAM + 4673 10 1971 4673 # CAO-D_CAO + 4674 13 1972 4674 # CTT-D_CTT + 4675 9 1981 4675 # CAT-D_CAT + 4676 10 1982 4676 # CAO-D_CAO + 4677 11 1983 4677 # CAM-D_CAM + 4678 12 1984 4678 # CAP-D_CAP + 4679 11 1985 4679 # CAM-D_CAM + 4680 10 1986 4680 # CAO-D_CAO + 4681 13 1987 4681 # CTT-D_CTT + 4682 9 1996 4682 # CAT-D_CAT + 4683 10 1997 4683 # CAO-D_CAO + 4684 11 1998 4684 # CAM-D_CAM + 4685 12 1999 4685 # CAP-D_CAP + 4686 11 2000 4686 # CAM-D_CAM + 4687 10 2001 4687 # CAO-D_CAO + 4688 13 2002 4688 # CTT-D_CTT + 4689 9 2011 4689 # CAT-D_CAT + 4690 10 2012 4690 # CAO-D_CAO + 4691 11 2013 4691 # CAM-D_CAM + 4692 12 2014 4692 # CAP-D_CAP + 4693 11 2015 4693 # CAM-D_CAM + 4694 10 2016 4694 # CAO-D_CAO + 4695 13 2017 4695 # CTT-D_CTT + 4696 9 2026 4696 # CAT-D_CAT + 4697 10 2027 4697 # CAO-D_CAO + 4698 11 2028 4698 # CAM-D_CAM + 4699 12 2029 4699 # CAP-D_CAP + 4700 11 2030 4700 # CAM-D_CAM + 4701 10 2031 4701 # CAO-D_CAO + 4702 13 2032 4702 # CTT-D_CTT + 4703 9 2041 4703 # CAT-D_CAT + 4704 10 2042 4704 # CAO-D_CAO + 4705 11 2043 4705 # CAM-D_CAM + 4706 12 2044 4706 # CAP-D_CAP + 4707 11 2045 4707 # CAM-D_CAM + 4708 10 2046 4708 # CAO-D_CAO + 4709 13 2047 4709 # CTT-D_CTT + 4710 9 2056 4710 # CAT-D_CAT + 4711 10 2057 4711 # CAO-D_CAO + 4712 11 2058 4712 # CAM-D_CAM + 4713 12 2059 4713 # CAP-D_CAP + 4714 11 2060 4714 # CAM-D_CAM + 4715 10 2061 4715 # CAO-D_CAO + 4716 13 2062 4716 # CTT-D_CTT + 4717 9 2071 4717 # CAT-D_CAT + 4718 10 2072 4718 # CAO-D_CAO + 4719 11 2073 4719 # CAM-D_CAM + 4720 12 2074 4720 # CAP-D_CAP + 4721 11 2075 4721 # CAM-D_CAM + 4722 10 2076 4722 # CAO-D_CAO + 4723 13 2077 4723 # CTT-D_CTT + 4724 9 2086 4724 # CAT-D_CAT + 4725 10 2087 4725 # CAO-D_CAO + 4726 11 2088 4726 # CAM-D_CAM + 4727 12 2089 4727 # CAP-D_CAP + 4728 11 2090 4728 # CAM-D_CAM + 4729 10 2091 4729 # CAO-D_CAO + 4730 13 2092 4730 # CTT-D_CTT + 4731 9 2101 4731 # CAT-D_CAT + 4732 10 2102 4732 # CAO-D_CAO + 4733 11 2103 4733 # CAM-D_CAM + 4734 12 2104 4734 # CAP-D_CAP + 4735 11 2105 4735 # CAM-D_CAM + 4736 10 2106 4736 # CAO-D_CAO + 4737 13 2107 4737 # CTT-D_CTT + 4738 9 2116 4738 # CAT-D_CAT + 4739 10 2117 4739 # CAO-D_CAO + 4740 11 2118 4740 # CAM-D_CAM + 4741 12 2119 4741 # CAP-D_CAP + 4742 11 2120 4742 # CAM-D_CAM + 4743 10 2121 4743 # CAO-D_CAO + 4744 13 2122 4744 # CTT-D_CTT + 4745 9 2131 4745 # CAT-D_CAT + 4746 10 2132 4746 # CAO-D_CAO + 4747 11 2133 4747 # CAM-D_CAM + 4748 12 2134 4748 # CAP-D_CAP + 4749 11 2135 4749 # CAM-D_CAM + 4750 10 2136 4750 # CAO-D_CAO + 4751 13 2137 4751 # CTT-D_CTT + 4752 9 2146 4752 # CAT-D_CAT + 4753 10 2147 4753 # CAO-D_CAO + 4754 11 2148 4754 # CAM-D_CAM + 4755 12 2149 4755 # CAP-D_CAP + 4756 11 2150 4756 # CAM-D_CAM + 4757 10 2151 4757 # CAO-D_CAO + 4758 13 2152 4758 # CTT-D_CTT + 4759 9 2161 4759 # CAT-D_CAT + 4760 10 2162 4760 # CAO-D_CAO + 4761 11 2163 4761 # CAM-D_CAM + 4762 12 2164 4762 # CAP-D_CAP + 4763 11 2165 4763 # CAM-D_CAM + 4764 10 2166 4764 # CAO-D_CAO + 4765 13 2167 4765 # CTT-D_CTT + 4766 9 2176 4766 # CAT-D_CAT + 4767 10 2177 4767 # CAO-D_CAO + 4768 11 2178 4768 # CAM-D_CAM + 4769 12 2179 4769 # CAP-D_CAP + 4770 11 2180 4770 # CAM-D_CAM + 4771 10 2181 4771 # CAO-D_CAO + 4772 13 2182 4772 # CTT-D_CTT + 4773 9 2191 4773 # CAT-D_CAT + 4774 10 2192 4774 # CAO-D_CAO + 4775 11 2193 4775 # CAM-D_CAM + 4776 12 2194 4776 # CAP-D_CAP + 4777 11 2195 4777 # CAM-D_CAM + 4778 10 2196 4778 # CAO-D_CAO + 4779 13 2197 4779 # CTT-D_CTT + 4780 9 2206 4780 # CAT-D_CAT + 4781 10 2207 4781 # CAO-D_CAO + 4782 11 2208 4782 # CAM-D_CAM + 4783 12 2209 4783 # CAP-D_CAP + 4784 11 2210 4784 # CAM-D_CAM + 4785 10 2211 4785 # CAO-D_CAO + 4786 13 2212 4786 # CTT-D_CTT + 4787 9 2221 4787 # CAT-D_CAT + 4788 10 2222 4788 # CAO-D_CAO + 4789 11 2223 4789 # CAM-D_CAM + 4790 12 2224 4790 # CAP-D_CAP + 4791 11 2225 4791 # CAM-D_CAM + 4792 10 2226 4792 # CAO-D_CAO + 4793 13 2227 4793 # CTT-D_CTT + 4794 9 2236 4794 # CAT-D_CAT + 4795 10 2237 4795 # CAO-D_CAO + 4796 11 2238 4796 # CAM-D_CAM + 4797 12 2239 4797 # CAP-D_CAP + 4798 11 2240 4798 # CAM-D_CAM + 4799 10 2241 4799 # CAO-D_CAO + 4800 13 2242 4800 # CTT-D_CTT + 4801 9 2251 4801 # CAT-D_CAT + 4802 10 2252 4802 # CAO-D_CAO + 4803 11 2253 4803 # CAM-D_CAM + 4804 12 2254 4804 # CAP-D_CAP + 4805 11 2255 4805 # CAM-D_CAM + 4806 10 2256 4806 # CAO-D_CAO + 4807 13 2257 4807 # CTT-D_CTT + 4808 9 2266 4808 # CAT-D_CAT + 4809 10 2267 4809 # CAO-D_CAO + 4810 11 2268 4810 # CAM-D_CAM + 4811 12 2269 4811 # CAP-D_CAP + 4812 11 2270 4812 # CAM-D_CAM + 4813 10 2271 4813 # CAO-D_CAO + 4814 13 2272 4814 # CTT-D_CTT + 4815 9 2281 4815 # CAT-D_CAT + 4816 10 2282 4816 # CAO-D_CAO + 4817 11 2283 4817 # CAM-D_CAM + 4818 12 2284 4818 # CAP-D_CAP + 4819 11 2285 4819 # CAM-D_CAM + 4820 10 2286 4820 # CAO-D_CAO + 4821 13 2287 4821 # CTT-D_CTT + 4822 9 2296 4822 # CAT-D_CAT + 4823 10 2297 4823 # CAO-D_CAO + 4824 11 2298 4824 # CAM-D_CAM + 4825 12 2299 4825 # CAP-D_CAP + 4826 11 2300 4826 # CAM-D_CAM + 4827 10 2301 4827 # CAO-D_CAO + 4828 13 2302 4828 # CTT-D_CTT + 4829 9 2311 4829 # CAT-D_CAT + 4830 10 2312 4830 # CAO-D_CAO + 4831 11 2313 4831 # CAM-D_CAM + 4832 12 2314 4832 # CAP-D_CAP + 4833 11 2315 4833 # CAM-D_CAM + 4834 10 2316 4834 # CAO-D_CAO + 4835 13 2317 4835 # CTT-D_CTT + 4836 9 2326 4836 # CAT-D_CAT + 4837 10 2327 4837 # CAO-D_CAO + 4838 11 2328 4838 # CAM-D_CAM + 4839 12 2329 4839 # CAP-D_CAP + 4840 11 2330 4840 # CAM-D_CAM + 4841 10 2331 4841 # CAO-D_CAO + 4842 13 2332 4842 # CTT-D_CTT + 4843 9 2341 4843 # CAT-D_CAT + 4844 10 2342 4844 # CAO-D_CAO + 4845 11 2343 4845 # CAM-D_CAM + 4846 12 2344 4846 # CAP-D_CAP + 4847 11 2345 4847 # CAM-D_CAM + 4848 10 2346 4848 # CAO-D_CAO + 4849 13 2347 4849 # CTT-D_CTT + 4850 9 2356 4850 # CAT-D_CAT + 4851 10 2357 4851 # CAO-D_CAO + 4852 11 2358 4852 # CAM-D_CAM + 4853 12 2359 4853 # CAP-D_CAP + 4854 11 2360 4854 # CAM-D_CAM + 4855 10 2361 4855 # CAO-D_CAO + 4856 13 2362 4856 # CTT-D_CTT + 4857 9 2371 4857 # CAT-D_CAT + 4858 10 2372 4858 # CAO-D_CAO + 4859 11 2373 4859 # CAM-D_CAM + 4860 12 2374 4860 # CAP-D_CAP + 4861 11 2375 4861 # CAM-D_CAM + 4862 10 2376 4862 # CAO-D_CAO + 4863 13 2377 4863 # CTT-D_CTT + 4864 9 2386 4864 # CAT-D_CAT + 4865 10 2387 4865 # CAO-D_CAO + 4866 11 2388 4866 # CAM-D_CAM + 4867 12 2389 4867 # CAP-D_CAP + 4868 11 2390 4868 # CAM-D_CAM + 4869 10 2391 4869 # CAO-D_CAO + 4870 13 2392 4870 # CTT-D_CTT + 4871 9 2401 4871 # CAT-D_CAT + 4872 10 2402 4872 # CAO-D_CAO + 4873 11 2403 4873 # CAM-D_CAM + 4874 12 2404 4874 # CAP-D_CAP + 4875 11 2405 4875 # CAM-D_CAM + 4876 10 2406 4876 # CAO-D_CAO + 4877 13 2407 4877 # CTT-D_CTT + 4878 9 2416 4878 # CAT-D_CAT + 4879 10 2417 4879 # CAO-D_CAO + 4880 11 2418 4880 # CAM-D_CAM + 4881 12 2419 4881 # CAP-D_CAP + 4882 11 2420 4882 # CAM-D_CAM + 4883 10 2421 4883 # CAO-D_CAO + 4884 13 2422 4884 # CTT-D_CTT + 4885 9 2431 4885 # CAT-D_CAT + 4886 10 2432 4886 # CAO-D_CAO + 4887 11 2433 4887 # CAM-D_CAM + 4888 12 2434 4888 # CAP-D_CAP + 4889 11 2435 4889 # CAM-D_CAM + 4890 10 2436 4890 # CAO-D_CAO + 4891 13 2437 4891 # CTT-D_CTT + 4892 9 2446 4892 # CAT-D_CAT + 4893 10 2447 4893 # CAO-D_CAO + 4894 11 2448 4894 # CAM-D_CAM + 4895 12 2449 4895 # CAP-D_CAP + 4896 11 2450 4896 # CAM-D_CAM + 4897 10 2451 4897 # CAO-D_CAO + 4898 13 2452 4898 # CTT-D_CTT + 4899 9 2461 4899 # CAT-D_CAT + 4900 10 2462 4900 # CAO-D_CAO + 4901 11 2463 4901 # CAM-D_CAM + 4902 12 2464 4902 # CAP-D_CAP + 4903 11 2465 4903 # CAM-D_CAM + 4904 10 2466 4904 # CAO-D_CAO + 4905 13 2467 4905 # CTT-D_CTT + 4906 9 2476 4906 # CAT-D_CAT + 4907 10 2477 4907 # CAO-D_CAO + 4908 11 2478 4908 # CAM-D_CAM + 4909 12 2479 4909 # CAP-D_CAP + 4910 11 2480 4910 # CAM-D_CAM + 4911 10 2481 4911 # CAO-D_CAO + 4912 13 2482 4912 # CTT-D_CTT + 4913 9 2491 4913 # CAT-D_CAT + 4914 10 2492 4914 # CAO-D_CAO + 4915 11 2493 4915 # CAM-D_CAM + 4916 12 2494 4916 # CAP-D_CAP + 4917 11 2495 4917 # CAM-D_CAM + 4918 10 2496 4918 # CAO-D_CAO + 4919 13 2497 4919 # CTT-D_CTT + 4920 9 2506 4920 # CAT-D_CAT + 4921 10 2507 4921 # CAO-D_CAO + 4922 11 2508 4922 # CAM-D_CAM + 4923 12 2509 4923 # CAP-D_CAP + 4924 11 2510 4924 # CAM-D_CAM + 4925 10 2511 4925 # CAO-D_CAO + 4926 13 2512 4926 # CTT-D_CTT + 4927 9 2521 4927 # CAT-D_CAT + 4928 10 2522 4928 # CAO-D_CAO + 4929 11 2523 4929 # CAM-D_CAM + 4930 12 2524 4930 # CAP-D_CAP + 4931 11 2525 4931 # CAM-D_CAM + 4932 10 2526 4932 # CAO-D_CAO + 4933 13 2527 4933 # CTT-D_CTT + 4934 9 2536 4934 # CAT-D_CAT + 4935 10 2537 4935 # CAO-D_CAO + 4936 11 2538 4936 # CAM-D_CAM + 4937 12 2539 4937 # CAP-D_CAP + 4938 11 2540 4938 # CAM-D_CAM + 4939 10 2541 4939 # CAO-D_CAO + 4940 13 2542 4940 # CTT-D_CTT + 4941 9 2551 4941 # CAT-D_CAT + 4942 10 2552 4942 # CAO-D_CAO + 4943 11 2553 4943 # CAM-D_CAM + 4944 12 2554 4944 # CAP-D_CAP + 4945 11 2555 4945 # CAM-D_CAM + 4946 10 2556 4946 # CAO-D_CAO + 4947 13 2557 4947 # CTT-D_CTT + 4948 9 2566 4948 # CAT-D_CAT + 4949 10 2567 4949 # CAO-D_CAO + 4950 11 2568 4950 # CAM-D_CAM + 4951 12 2569 4951 # CAP-D_CAP + 4952 11 2570 4952 # CAM-D_CAM + 4953 10 2571 4953 # CAO-D_CAO + 4954 13 2572 4954 # CTT-D_CTT + 4955 9 2581 4955 # CAT-D_CAT + 4956 10 2582 4956 # CAO-D_CAO + 4957 11 2583 4957 # CAM-D_CAM + 4958 12 2584 4958 # CAP-D_CAP + 4959 11 2585 4959 # CAM-D_CAM + 4960 10 2586 4960 # CAO-D_CAO + 4961 13 2587 4961 # CTT-D_CTT + 4962 9 2596 4962 # CAT-D_CAT + 4963 10 2597 4963 # CAO-D_CAO + 4964 11 2598 4964 # CAM-D_CAM + 4965 12 2599 4965 # CAP-D_CAP + 4966 11 2600 4966 # CAM-D_CAM + 4967 10 2601 4967 # CAO-D_CAO + 4968 13 2602 4968 # CTT-D_CTT + 4969 9 2611 4969 # CAT-D_CAT + 4970 10 2612 4970 # CAO-D_CAO + 4971 11 2613 4971 # CAM-D_CAM + 4972 12 2614 4972 # CAP-D_CAP + 4973 11 2615 4973 # CAM-D_CAM + 4974 10 2616 4974 # CAO-D_CAO + 4975 13 2617 4975 # CTT-D_CTT + 4976 9 2626 4976 # CAT-D_CAT + 4977 10 2627 4977 # CAO-D_CAO + 4978 11 2628 4978 # CAM-D_CAM + 4979 12 2629 4979 # CAP-D_CAP + 4980 11 2630 4980 # CAM-D_CAM + 4981 10 2631 4981 # CAO-D_CAO + 4982 13 2632 4982 # CTT-D_CTT + 4983 9 2641 4983 # CAT-D_CAT + 4984 10 2642 4984 # CAO-D_CAO + 4985 11 2643 4985 # CAM-D_CAM + 4986 12 2644 4986 # CAP-D_CAP + 4987 11 2645 4987 # CAM-D_CAM + 4988 10 2646 4988 # CAO-D_CAO + 4989 13 2647 4989 # CTT-D_CTT + 4990 9 2656 4990 # CAT-D_CAT + 4991 10 2657 4991 # CAO-D_CAO + 4992 11 2658 4992 # CAM-D_CAM + 4993 12 2659 4993 # CAP-D_CAP + 4994 11 2660 4994 # CAM-D_CAM + 4995 10 2661 4995 # CAO-D_CAO + 4996 13 2662 4996 # CTT-D_CTT + 4997 9 2671 4997 # CAT-D_CAT + 4998 10 2672 4998 # CAO-D_CAO + 4999 11 2673 4999 # CAM-D_CAM + 5000 12 2674 5000 # CAP-D_CAP + 5001 11 2675 5001 # CAM-D_CAM + 5002 10 2676 5002 # CAO-D_CAO + 5003 13 2677 5003 # CTT-D_CTT + 5004 9 2686 5004 # CAT-D_CAT + 5005 10 2687 5005 # CAO-D_CAO + 5006 11 2688 5006 # CAM-D_CAM + 5007 12 2689 5007 # CAP-D_CAP + 5008 11 2690 5008 # CAM-D_CAM + 5009 10 2691 5009 # CAO-D_CAO + 5010 13 2692 5010 # CTT-D_CTT + 5011 9 2701 5011 # CAT-D_CAT + 5012 10 2702 5012 # CAO-D_CAO + 5013 11 2703 5013 # CAM-D_CAM + 5014 12 2704 5014 # CAP-D_CAP + 5015 11 2705 5015 # CAM-D_CAM + 5016 10 2706 5016 # CAO-D_CAO + 5017 13 2707 5017 # CTT-D_CTT + 5018 9 2716 5018 # CAT-D_CAT + 5019 10 2717 5019 # CAO-D_CAO + 5020 11 2718 5020 # CAM-D_CAM + 5021 12 2719 5021 # CAP-D_CAP + 5022 11 2720 5022 # CAM-D_CAM + 5023 10 2721 5023 # CAO-D_CAO + 5024 13 2722 5024 # CTT-D_CTT + 5025 9 2731 5025 # CAT-D_CAT + 5026 10 2732 5026 # CAO-D_CAO + 5027 11 2733 5027 # CAM-D_CAM + 5028 12 2734 5028 # CAP-D_CAP + 5029 11 2735 5029 # CAM-D_CAM + 5030 10 2736 5030 # CAO-D_CAO + 5031 13 2737 5031 # CTT-D_CTT + 5032 9 2746 5032 # CAT-D_CAT + 5033 10 2747 5033 # CAO-D_CAO + 5034 11 2748 5034 # CAM-D_CAM + 5035 12 2749 5035 # CAP-D_CAP + 5036 11 2750 5036 # CAM-D_CAM + 5037 10 2751 5037 # CAO-D_CAO + 5038 13 2752 5038 # CTT-D_CTT + 5039 9 2761 5039 # CAT-D_CAT + 5040 10 2762 5040 # CAO-D_CAO + 5041 11 2763 5041 # CAM-D_CAM + 5042 12 2764 5042 # CAP-D_CAP + 5043 11 2765 5043 # CAM-D_CAM + 5044 10 2766 5044 # CAO-D_CAO + 5045 13 2767 5045 # CTT-D_CTT + 5046 9 2776 5046 # CAT-D_CAT + 5047 10 2777 5047 # CAO-D_CAO + 5048 11 2778 5048 # CAM-D_CAM + 5049 12 2779 5049 # CAP-D_CAP + 5050 11 2780 5050 # CAM-D_CAM + 5051 10 2781 5051 # CAO-D_CAO + 5052 13 2782 5052 # CTT-D_CTT + 5053 9 2791 5053 # CAT-D_CAT + 5054 10 2792 5054 # CAO-D_CAO + 5055 11 2793 5055 # CAM-D_CAM + 5056 12 2794 5056 # CAP-D_CAP + 5057 11 2795 5057 # CAM-D_CAM + 5058 10 2796 5058 # CAO-D_CAO + 5059 13 2797 5059 # CTT-D_CTT + 5060 9 2806 5060 # CAT-D_CAT + 5061 10 2807 5061 # CAO-D_CAO + 5062 11 2808 5062 # CAM-D_CAM + 5063 12 2809 5063 # CAP-D_CAP + 5064 11 2810 5064 # CAM-D_CAM + 5065 10 2811 5065 # CAO-D_CAO + 5066 13 2812 5066 # CTT-D_CTT + 5067 9 2821 5067 # CAT-D_CAT + 5068 10 2822 5068 # CAO-D_CAO + 5069 11 2823 5069 # CAM-D_CAM + 5070 12 2824 5070 # CAP-D_CAP + 5071 11 2825 5071 # CAM-D_CAM + 5072 10 2826 5072 # CAO-D_CAO + 5073 13 2827 5073 # CTT-D_CTT + 5074 9 2836 5074 # CAT-D_CAT + 5075 10 2837 5075 # CAO-D_CAO + 5076 11 2838 5076 # CAM-D_CAM + 5077 12 2839 5077 # CAP-D_CAP + 5078 11 2840 5078 # CAM-D_CAM + 5079 10 2841 5079 # CAO-D_CAO + 5080 13 2842 5080 # CTT-D_CTT + 5081 9 2851 5081 # CAT-D_CAT + 5082 10 2852 5082 # CAO-D_CAO + 5083 11 2853 5083 # CAM-D_CAM + 5084 12 2854 5084 # CAP-D_CAP + 5085 11 2855 5085 # CAM-D_CAM + 5086 10 2856 5086 # CAO-D_CAO + 5087 13 2857 5087 # CTT-D_CTT + 5088 9 2866 5088 # CAT-D_CAT + 5089 10 2867 5089 # CAO-D_CAO + 5090 11 2868 5090 # CAM-D_CAM + 5091 12 2869 5091 # CAP-D_CAP + 5092 11 2870 5092 # CAM-D_CAM + 5093 10 2871 5093 # CAO-D_CAO + 5094 13 2872 5094 # CTT-D_CTT + 5095 9 2881 5095 # CAT-D_CAT + 5096 10 2882 5096 # CAO-D_CAO + 5097 11 2883 5097 # CAM-D_CAM + 5098 12 2884 5098 # CAP-D_CAP + 5099 11 2885 5099 # CAM-D_CAM + 5100 10 2886 5100 # CAO-D_CAO + 5101 13 2887 5101 # CTT-D_CTT + 5102 9 2896 5102 # CAT-D_CAT + 5103 10 2897 5103 # CAO-D_CAO + 5104 11 2898 5104 # CAM-D_CAM + 5105 12 2899 5105 # CAP-D_CAP + 5106 11 2900 5106 # CAM-D_CAM + 5107 10 2901 5107 # CAO-D_CAO + 5108 13 2902 5108 # CTT-D_CTT + 5109 9 2911 5109 # CAT-D_CAT + 5110 10 2912 5110 # CAO-D_CAO + 5111 11 2913 5111 # CAM-D_CAM + 5112 12 2914 5112 # CAP-D_CAP + 5113 11 2915 5113 # CAM-D_CAM + 5114 10 2916 5114 # CAO-D_CAO + 5115 13 2917 5115 # CTT-D_CTT + 5116 9 2926 5116 # CAT-D_CAT + 5117 10 2927 5117 # CAO-D_CAO + 5118 11 2928 5118 # CAM-D_CAM + 5119 12 2929 5119 # CAP-D_CAP + 5120 11 2930 5120 # CAM-D_CAM + 5121 10 2931 5121 # CAO-D_CAO + 5122 13 2932 5122 # CTT-D_CTT + 5123 9 2941 5123 # CAT-D_CAT + 5124 10 2942 5124 # CAO-D_CAO + 5125 11 2943 5125 # CAM-D_CAM + 5126 12 2944 5126 # CAP-D_CAP + 5127 11 2945 5127 # CAM-D_CAM + 5128 10 2946 5128 # CAO-D_CAO + 5129 13 2947 5129 # CTT-D_CTT + 5130 9 2956 5130 # CAT-D_CAT + 5131 10 2957 5131 # CAO-D_CAO + 5132 11 2958 5132 # CAM-D_CAM + 5133 12 2959 5133 # CAP-D_CAP + 5134 11 2960 5134 # CAM-D_CAM + 5135 10 2961 5135 # CAO-D_CAO + 5136 13 2962 5136 # CTT-D_CTT + 5137 9 2971 5137 # CAT-D_CAT + 5138 10 2972 5138 # CAO-D_CAO + 5139 11 2973 5139 # CAM-D_CAM + 5140 12 2974 5140 # CAP-D_CAP + 5141 11 2975 5141 # CAM-D_CAM + 5142 10 2976 5142 # CAO-D_CAO + 5143 13 2977 5143 # CTT-D_CTT + 5144 9 2986 5144 # CAT-D_CAT + 5145 10 2987 5145 # CAO-D_CAO + 5146 11 2988 5146 # CAM-D_CAM + 5147 12 2989 5147 # CAP-D_CAP + 5148 11 2990 5148 # CAM-D_CAM + 5149 10 2991 5149 # CAO-D_CAO + 5150 13 2992 5150 # CTT-D_CTT + 5151 9 3001 5151 # CAT-D_CAT + 5152 10 3002 5152 # CAO-D_CAO + 5153 11 3003 5153 # CAM-D_CAM + 5154 12 3004 5154 # CAP-D_CAP + 5155 11 3005 5155 # CAM-D_CAM + 5156 10 3006 5156 # CAO-D_CAO + 5157 13 3007 5157 # CTT-D_CTT + 5158 9 3016 5158 # CAT-D_CAT + 5159 10 3017 5159 # CAO-D_CAO + 5160 11 3018 5160 # CAM-D_CAM + 5161 12 3019 5161 # CAP-D_CAP + 5162 11 3020 5162 # CAM-D_CAM + 5163 10 3021 5163 # CAO-D_CAO + 5164 13 3022 5164 # CTT-D_CTT + 5165 9 3031 5165 # CAT-D_CAT + 5166 10 3032 5166 # CAO-D_CAO + 5167 11 3033 5167 # CAM-D_CAM + 5168 12 3034 5168 # CAP-D_CAP + 5169 11 3035 5169 # CAM-D_CAM + 5170 10 3036 5170 # CAO-D_CAO + 5171 13 3037 5171 # CTT-D_CTT + 5172 9 3046 5172 # CAT-D_CAT + 5173 10 3047 5173 # CAO-D_CAO + 5174 11 3048 5174 # CAM-D_CAM + 5175 12 3049 5175 # CAP-D_CAP + 5176 11 3050 5176 # CAM-D_CAM + 5177 10 3051 5177 # CAO-D_CAO + 5178 13 3052 5178 # CTT-D_CTT + 5179 9 3061 5179 # CAT-D_CAT + 5180 10 3062 5180 # CAO-D_CAO + 5181 11 3063 5181 # CAM-D_CAM + 5182 12 3064 5182 # CAP-D_CAP + 5183 11 3065 5183 # CAM-D_CAM + 5184 10 3066 5184 # CAO-D_CAO + 5185 13 3067 5185 # CTT-D_CTT + 5186 9 3076 5186 # CAT-D_CAT + 5187 10 3077 5187 # CAO-D_CAO + 5188 11 3078 5188 # CAM-D_CAM + 5189 12 3079 5189 # CAP-D_CAP + 5190 11 3080 5190 # CAM-D_CAM + 5191 10 3081 5191 # CAO-D_CAO + 5192 13 3082 5192 # CTT-D_CTT + 5193 9 3091 5193 # CAT-D_CAT + 5194 10 3092 5194 # CAO-D_CAO + 5195 11 3093 5195 # CAM-D_CAM + 5196 12 3094 5196 # CAP-D_CAP + 5197 11 3095 5197 # CAM-D_CAM + 5198 10 3096 5198 # CAO-D_CAO + 5199 13 3097 5199 # CTT-D_CTT + 5200 9 3106 5200 # CAT-D_CAT + 5201 10 3107 5201 # CAO-D_CAO + 5202 11 3108 5202 # CAM-D_CAM + 5203 12 3109 5203 # CAP-D_CAP + 5204 11 3110 5204 # CAM-D_CAM + 5205 10 3111 5205 # CAO-D_CAO + 5206 13 3112 5206 # CTT-D_CTT + 5207 9 3121 5207 # CAT-D_CAT + 5208 10 3122 5208 # CAO-D_CAO + 5209 11 3123 5209 # CAM-D_CAM + 5210 12 3124 5210 # CAP-D_CAP + 5211 11 3125 5211 # CAM-D_CAM + 5212 10 3126 5212 # CAO-D_CAO + 5213 13 3127 5213 # CTT-D_CTT + 5214 9 3136 5214 # CAT-D_CAT + 5215 10 3137 5215 # CAO-D_CAO + 5216 11 3138 5216 # CAM-D_CAM + 5217 12 3139 5217 # CAP-D_CAP + 5218 11 3140 5218 # CAM-D_CAM + 5219 10 3141 5219 # CAO-D_CAO + 5220 13 3142 5220 # CTT-D_CTT + 5221 9 3151 5221 # CAT-D_CAT + 5222 10 3152 5222 # CAO-D_CAO + 5223 11 3153 5223 # CAM-D_CAM + 5224 12 3154 5224 # CAP-D_CAP + 5225 11 3155 5225 # CAM-D_CAM + 5226 10 3156 5226 # CAO-D_CAO + 5227 13 3157 5227 # CTT-D_CTT + 5228 9 3166 5228 # CAT-D_CAT + 5229 10 3167 5229 # CAO-D_CAO + 5230 11 3168 5230 # CAM-D_CAM + 5231 12 3169 5231 # CAP-D_CAP + 5232 11 3170 5232 # CAM-D_CAM + 5233 10 3171 5233 # CAO-D_CAO + 5234 13 3172 5234 # CTT-D_CTT + 5235 9 3181 5235 # CAT-D_CAT + 5236 10 3182 5236 # CAO-D_CAO + 5237 11 3183 5237 # CAM-D_CAM + 5238 12 3184 5238 # CAP-D_CAP + 5239 11 3185 5239 # CAM-D_CAM + 5240 10 3186 5240 # CAO-D_CAO + 5241 13 3187 5241 # CTT-D_CTT + 5242 9 3196 5242 # CAT-D_CAT + 5243 10 3197 5243 # CAO-D_CAO + 5244 11 3198 5244 # CAM-D_CAM + 5245 12 3199 5245 # CAP-D_CAP + 5246 11 3200 5246 # CAM-D_CAM + 5247 10 3201 5247 # CAO-D_CAO + 5248 13 3202 5248 # CTT-D_CTT + 5249 9 3211 5249 # CAT-D_CAT + 5250 10 3212 5250 # CAO-D_CAO + 5251 11 3213 5251 # CAM-D_CAM + 5252 12 3214 5252 # CAP-D_CAP + 5253 11 3215 5253 # CAM-D_CAM + 5254 10 3216 5254 # CAO-D_CAO + 5255 13 3217 5255 # CTT-D_CTT + 5256 9 3226 5256 # CAT-D_CAT + 5257 10 3227 5257 # CAO-D_CAO + 5258 11 3228 5258 # CAM-D_CAM + 5259 12 3229 5259 # CAP-D_CAP + 5260 11 3230 5260 # CAM-D_CAM + 5261 10 3231 5261 # CAO-D_CAO + 5262 13 3232 5262 # CTT-D_CTT + 5263 9 3241 5263 # CAT-D_CAT + 5264 10 3242 5264 # CAO-D_CAO + 5265 11 3243 5265 # CAM-D_CAM + 5266 12 3244 5266 # CAP-D_CAP + 5267 11 3245 5267 # CAM-D_CAM + 5268 10 3246 5268 # CAO-D_CAO + 5269 13 3247 5269 # CTT-D_CTT + 5270 9 3256 5270 # CAT-D_CAT + 5271 10 3257 5271 # CAO-D_CAO + 5272 11 3258 5272 # CAM-D_CAM + 5273 12 3259 5273 # CAP-D_CAP + 5274 11 3260 5274 # CAM-D_CAM + 5275 10 3261 5275 # CAO-D_CAO + 5276 13 3262 5276 # CTT-D_CTT + 5277 9 3271 5277 # CAT-D_CAT + 5278 10 3272 5278 # CAO-D_CAO + 5279 11 3273 5279 # CAM-D_CAM + 5280 12 3274 5280 # CAP-D_CAP + 5281 11 3275 5281 # CAM-D_CAM + 5282 10 3276 5282 # CAO-D_CAO + 5283 13 3277 5283 # CTT-D_CTT + 5284 9 3286 5284 # CAT-D_CAT + 5285 10 3287 5285 # CAO-D_CAO + 5286 11 3288 5286 # CAM-D_CAM + 5287 12 3289 5287 # CAP-D_CAP + 5288 11 3290 5288 # CAM-D_CAM + 5289 10 3291 5289 # CAO-D_CAO + 5290 13 3292 5290 # CTT-D_CTT + 5291 9 3301 5291 # CAT-D_CAT + 5292 10 3302 5292 # CAO-D_CAO + 5293 11 3303 5293 # CAM-D_CAM + 5294 12 3304 5294 # CAP-D_CAP + 5295 11 3305 5295 # CAM-D_CAM + 5296 10 3306 5296 # CAO-D_CAO + 5297 13 3307 5297 # CTT-D_CTT + 5298 9 3316 5298 # CAT-D_CAT + 5299 10 3317 5299 # CAO-D_CAO + 5300 11 3318 5300 # CAM-D_CAM + 5301 12 3319 5301 # CAP-D_CAP + 5302 11 3320 5302 # CAM-D_CAM + 5303 10 3321 5303 # CAO-D_CAO + 5304 13 3322 5304 # CTT-D_CTT + 5305 9 3331 5305 # CAT-D_CAT + 5306 10 3332 5306 # CAO-D_CAO + 5307 11 3333 5307 # CAM-D_CAM + 5308 12 3334 5308 # CAP-D_CAP + 5309 11 3335 5309 # CAM-D_CAM + 5310 10 3336 5310 # CAO-D_CAO + 5311 13 3337 5311 # CTT-D_CTT + 5312 9 3346 5312 # CAT-D_CAT + 5313 10 3347 5313 # CAO-D_CAO + 5314 11 3348 5314 # CAM-D_CAM + 5315 12 3349 5315 # CAP-D_CAP + 5316 11 3350 5316 # CAM-D_CAM + 5317 10 3351 5317 # CAO-D_CAO + 5318 13 3352 5318 # CTT-D_CTT + 5319 9 3361 5319 # CAT-D_CAT + 5320 10 3362 5320 # CAO-D_CAO + 5321 11 3363 5321 # CAM-D_CAM + 5322 12 3364 5322 # CAP-D_CAP + 5323 11 3365 5323 # CAM-D_CAM + 5324 10 3366 5324 # CAO-D_CAO + 5325 13 3367 5325 # CTT-D_CTT + 5326 9 3376 5326 # CAT-D_CAT + 5327 10 3377 5327 # CAO-D_CAO + 5328 11 3378 5328 # CAM-D_CAM + 5329 12 3379 5329 # CAP-D_CAP + 5330 11 3380 5330 # CAM-D_CAM + 5331 10 3381 5331 # CAO-D_CAO + 5332 13 3382 5332 # CTT-D_CTT + 5333 9 3391 5333 # CAT-D_CAT + 5334 10 3392 5334 # CAO-D_CAO + 5335 11 3393 5335 # CAM-D_CAM + 5336 12 3394 5336 # CAP-D_CAP + 5337 11 3395 5337 # CAM-D_CAM + 5338 10 3396 5338 # CAO-D_CAO + 5339 13 3397 5339 # CTT-D_CTT + 5340 9 3406 5340 # CAT-D_CAT + 5341 10 3407 5341 # CAO-D_CAO + 5342 11 3408 5342 # CAM-D_CAM + 5343 12 3409 5343 # CAP-D_CAP + 5344 11 3410 5344 # CAM-D_CAM + 5345 10 3411 5345 # CAO-D_CAO + 5346 13 3412 5346 # CTT-D_CTT + 5347 9 3421 5347 # CAT-D_CAT + 5348 10 3422 5348 # CAO-D_CAO + 5349 11 3423 5349 # CAM-D_CAM + 5350 12 3424 5350 # CAP-D_CAP + 5351 11 3425 5351 # CAM-D_CAM + 5352 10 3426 5352 # CAO-D_CAO + 5353 13 3427 5353 # CTT-D_CTT + 5354 9 3436 5354 # CAT-D_CAT + 5355 10 3437 5355 # CAO-D_CAO + 5356 11 3438 5356 # CAM-D_CAM + 5357 12 3439 5357 # CAP-D_CAP + 5358 11 3440 5358 # CAM-D_CAM + 5359 10 3441 5359 # CAO-D_CAO + 5360 13 3442 5360 # CTT-D_CTT + 5361 9 3451 5361 # CAT-D_CAT + 5362 10 3452 5362 # CAO-D_CAO + 5363 11 3453 5363 # CAM-D_CAM + 5364 12 3454 5364 # CAP-D_CAP + 5365 11 3455 5365 # CAM-D_CAM + 5366 10 3456 5366 # CAO-D_CAO + 5367 13 3457 5367 # CTT-D_CTT + 5368 9 3466 5368 # CAT-D_CAT + 5369 10 3467 5369 # CAO-D_CAO + 5370 11 3468 5370 # CAM-D_CAM + 5371 12 3469 5371 # CAP-D_CAP + 5372 11 3470 5372 # CAM-D_CAM + 5373 10 3471 5373 # CAO-D_CAO + 5374 13 3472 5374 # CTT-D_CTT + 5375 9 3481 5375 # CAT-D_CAT + 5376 10 3482 5376 # CAO-D_CAO + 5377 11 3483 5377 # CAM-D_CAM + 5378 12 3484 5378 # CAP-D_CAP + 5379 11 3485 5379 # CAM-D_CAM + 5380 10 3486 5380 # CAO-D_CAO + 5381 13 3487 5381 # CTT-D_CTT + 5382 9 3496 5382 # CAT-D_CAT + 5383 10 3497 5383 # CAO-D_CAO + 5384 11 3498 5384 # CAM-D_CAM + 5385 12 3499 5385 # CAP-D_CAP + 5386 11 3500 5386 # CAM-D_CAM + 5387 10 3501 5387 # CAO-D_CAO + 5388 13 3502 5388 # CTT-D_CTT + 5389 9 3511 5389 # CAT-D_CAT + 5390 10 3512 5390 # CAO-D_CAO + 5391 11 3513 5391 # CAM-D_CAM + 5392 12 3514 5392 # CAP-D_CAP + 5393 11 3515 5393 # CAM-D_CAM + 5394 10 3516 5394 # CAO-D_CAO + 5395 13 3517 5395 # CTT-D_CTT + 5396 9 3526 5396 # CAT-D_CAT + 5397 10 3527 5397 # CAO-D_CAO + 5398 11 3528 5398 # CAM-D_CAM + 5399 12 3529 5399 # CAP-D_CAP + 5400 11 3530 5400 # CAM-D_CAM + 5401 10 3531 5401 # CAO-D_CAO + 5402 13 3532 5402 # CTT-D_CTT + 5403 9 3541 5403 # CAT-D_CAT + 5404 10 3542 5404 # CAO-D_CAO + 5405 11 3543 5405 # CAM-D_CAM + 5406 12 3544 5406 # CAP-D_CAP + 5407 11 3545 5407 # CAM-D_CAM + 5408 10 3546 5408 # CAO-D_CAO + 5409 13 3547 5409 # CTT-D_CTT + 5410 9 3556 5410 # CAT-D_CAT + 5411 10 3557 5411 # CAO-D_CAO + 5412 11 3558 5412 # CAM-D_CAM + 5413 12 3559 5413 # CAP-D_CAP + 5414 11 3560 5414 # CAM-D_CAM + 5415 10 3561 5415 # CAO-D_CAO + 5416 13 3562 5416 # CTT-D_CTT + 5417 9 3571 5417 # CAT-D_CAT + 5418 10 3572 5418 # CAO-D_CAO + 5419 11 3573 5419 # CAM-D_CAM + 5420 12 3574 5420 # CAP-D_CAP + 5421 11 3575 5421 # CAM-D_CAM + 5422 10 3576 5422 # CAO-D_CAO + 5423 13 3577 5423 # CTT-D_CTT + 5424 9 3586 5424 # CAT-D_CAT + 5425 10 3587 5425 # CAO-D_CAO + 5426 11 3588 5426 # CAM-D_CAM + 5427 12 3589 5427 # CAP-D_CAP + 5428 11 3590 5428 # CAM-D_CAM + 5429 10 3591 5429 # CAO-D_CAO + 5430 13 3592 5430 # CTT-D_CTT + 5431 9 3601 5431 # CAT-D_CAT + 5432 10 3602 5432 # CAO-D_CAO + 5433 11 3603 5433 # CAM-D_CAM + 5434 12 3604 5434 # CAP-D_CAP + 5435 11 3605 5435 # CAM-D_CAM + 5436 10 3606 5436 # CAO-D_CAO + 5437 13 3607 5437 # CTT-D_CTT + 5438 9 3616 5438 # CAT-D_CAT + 5439 10 3617 5439 # CAO-D_CAO + 5440 11 3618 5440 # CAM-D_CAM + 5441 12 3619 5441 # CAP-D_CAP + 5442 11 3620 5442 # CAM-D_CAM + 5443 10 3621 5443 # CAO-D_CAO + 5444 13 3622 5444 # CTT-D_CTT + 5445 9 3631 5445 # CAT-D_CAT + 5446 10 3632 5446 # CAO-D_CAO + 5447 11 3633 5447 # CAM-D_CAM + 5448 12 3634 5448 # CAP-D_CAP + 5449 11 3635 5449 # CAM-D_CAM + 5450 10 3636 5450 # CAO-D_CAO + 5451 13 3637 5451 # CTT-D_CTT + 5452 9 3646 5452 # CAT-D_CAT + 5453 10 3647 5453 # CAO-D_CAO + 5454 11 3648 5454 # CAM-D_CAM + 5455 12 3649 5455 # CAP-D_CAP + 5456 11 3650 5456 # CAM-D_CAM + 5457 10 3651 5457 # CAO-D_CAO + 5458 13 3652 5458 # CTT-D_CTT + 5459 9 3661 5459 # CAT-D_CAT + 5460 10 3662 5460 # CAO-D_CAO + 5461 11 3663 5461 # CAM-D_CAM + 5462 12 3664 5462 # CAP-D_CAP + 5463 11 3665 5463 # CAM-D_CAM + 5464 10 3666 5464 # CAO-D_CAO + 5465 13 3667 5465 # CTT-D_CTT + 5466 9 3676 5466 # CAT-D_CAT + 5467 10 3677 5467 # CAO-D_CAO + 5468 11 3678 5468 # CAM-D_CAM + 5469 12 3679 5469 # CAP-D_CAP + 5470 11 3680 5470 # CAM-D_CAM + 5471 10 3681 5471 # CAO-D_CAO + 5472 13 3682 5472 # CTT-D_CTT + 5473 9 3691 5473 # CAT-D_CAT + 5474 10 3692 5474 # CAO-D_CAO + 5475 11 3693 5475 # CAM-D_CAM + 5476 12 3694 5476 # CAP-D_CAP + 5477 11 3695 5477 # CAM-D_CAM + 5478 10 3696 5478 # CAO-D_CAO + 5479 13 3697 5479 # CTT-D_CTT + 5480 9 3706 5480 # CAT-D_CAT + 5481 10 3707 5481 # CAO-D_CAO + 5482 11 3708 5482 # CAM-D_CAM + 5483 12 3709 5483 # CAP-D_CAP + 5484 11 3710 5484 # CAM-D_CAM + 5485 10 3711 5485 # CAO-D_CAO + 5486 13 3712 5486 # CTT-D_CTT + 5487 9 3721 5487 # CAT-D_CAT + 5488 10 3722 5488 # CAO-D_CAO + 5489 11 3723 5489 # CAM-D_CAM + 5490 12 3724 5490 # CAP-D_CAP + 5491 11 3725 5491 # CAM-D_CAM + 5492 10 3726 5492 # CAO-D_CAO + 5493 13 3727 5493 # CTT-D_CTT + 5494 9 3736 5494 # CAT-D_CAT + 5495 10 3737 5495 # CAO-D_CAO + 5496 11 3738 5496 # CAM-D_CAM + 5497 12 3739 5497 # CAP-D_CAP + 5498 11 3740 5498 # CAM-D_CAM + 5499 10 3741 5499 # CAO-D_CAO + 5500 13 3742 5500 # CTT-D_CTT + +Angles + + 1 1 1 2 3 # CAT-CAO-CAM + 2 2 1 2 8 # CAT-CAO-HAT + 3 3 1 7 13 # CAT-CTT-HT + 4 3 1 7 14 # CAT-CTT-HT + 5 3 1 7 15 # CAT-CTT-HT + 6 1 1 6 5 # CAT-CAO-CAM + 7 2 1 6 12 # CAT-CAO-HAT + 8 4 2 1 7 # CAO-CAT-CTT + 9 5 2 1 6 # CAO-CAT-CAO + 10 6 2 3 4 # CAO-CAM-CAP + 11 7 2 3 9 # CAO-CAM-HAT + 12 8 3 2 8 # CAM-CAO-HAT + 13 9 3 4 5 # CAM-CAP-CAM + 14 10 3 4 10 # CAM-CAP-HAT + 15 11 4 3 9 # CAP-CAM-HAT + 16 6 6 5 4 # CAO-CAM-CAP + 17 11 4 5 11 # CAP-CAM-HAT + 18 10 5 4 10 # CAM-CAP-HAT + 19 8 5 6 12 # CAM-CAO-HAT + 20 7 6 5 11 # CAO-CAM-HAT + 21 4 6 1 7 # CAO-CAT-CTT + 22 12 13 7 14 # HT-CTT-HT + 23 12 13 7 15 # HT-CTT-HT + 24 12 14 7 15 # HT-CTT-HT + 25 1 16 17 18 # CAT-CAO-CAM + 26 2 16 17 23 # CAT-CAO-HAT + 27 3 16 22 28 # CAT-CTT-HT + 28 3 16 22 29 # CAT-CTT-HT + 29 3 16 22 30 # CAT-CTT-HT + 30 1 16 21 20 # CAT-CAO-CAM + 31 2 16 21 27 # CAT-CAO-HAT + 32 4 17 16 22 # CAO-CAT-CTT + 33 5 17 16 21 # CAO-CAT-CAO + 34 6 17 18 19 # CAO-CAM-CAP + 35 7 17 18 24 # CAO-CAM-HAT + 36 8 18 17 23 # CAM-CAO-HAT + 37 9 18 19 20 # CAM-CAP-CAM + 38 10 18 19 25 # CAM-CAP-HAT + 39 11 19 18 24 # CAP-CAM-HAT + 40 6 21 20 19 # CAO-CAM-CAP + 41 11 19 20 26 # CAP-CAM-HAT + 42 10 20 19 25 # CAM-CAP-HAT + 43 8 20 21 27 # CAM-CAO-HAT + 44 7 21 20 26 # CAO-CAM-HAT + 45 4 21 16 22 # CAO-CAT-CTT + 46 12 28 22 29 # HT-CTT-HT + 47 12 28 22 30 # HT-CTT-HT + 48 12 29 22 30 # HT-CTT-HT + 49 1 31 32 33 # CAT-CAO-CAM + 50 2 31 32 38 # CAT-CAO-HAT + 51 3 31 37 43 # CAT-CTT-HT + 52 3 31 37 44 # CAT-CTT-HT + 53 3 31 37 45 # CAT-CTT-HT + 54 1 31 36 35 # CAT-CAO-CAM + 55 2 31 36 42 # CAT-CAO-HAT + 56 4 32 31 37 # CAO-CAT-CTT + 57 5 32 31 36 # CAO-CAT-CAO + 58 6 32 33 34 # CAO-CAM-CAP + 59 7 32 33 39 # CAO-CAM-HAT + 60 8 33 32 38 # CAM-CAO-HAT + 61 9 33 34 35 # CAM-CAP-CAM + 62 10 33 34 40 # CAM-CAP-HAT + 63 11 34 33 39 # CAP-CAM-HAT + 64 6 36 35 34 # CAO-CAM-CAP + 65 11 34 35 41 # CAP-CAM-HAT + 66 10 35 34 40 # CAM-CAP-HAT + 67 8 35 36 42 # CAM-CAO-HAT + 68 7 36 35 41 # CAO-CAM-HAT + 69 4 36 31 37 # CAO-CAT-CTT + 70 12 43 37 44 # HT-CTT-HT + 71 12 43 37 45 # HT-CTT-HT + 72 12 44 37 45 # HT-CTT-HT + 73 1 46 47 48 # CAT-CAO-CAM + 74 2 46 47 53 # CAT-CAO-HAT + 75 3 46 52 58 # CAT-CTT-HT + 76 3 46 52 59 # CAT-CTT-HT + 77 3 46 52 60 # CAT-CTT-HT + 78 1 46 51 50 # CAT-CAO-CAM + 79 2 46 51 57 # CAT-CAO-HAT + 80 4 47 46 52 # CAO-CAT-CTT + 81 5 47 46 51 # CAO-CAT-CAO + 82 6 47 48 49 # CAO-CAM-CAP + 83 7 47 48 54 # CAO-CAM-HAT + 84 8 48 47 53 # CAM-CAO-HAT + 85 9 48 49 50 # CAM-CAP-CAM + 86 10 48 49 55 # CAM-CAP-HAT + 87 11 49 48 54 # CAP-CAM-HAT + 88 6 51 50 49 # CAO-CAM-CAP + 89 11 49 50 56 # CAP-CAM-HAT + 90 10 50 49 55 # CAM-CAP-HAT + 91 8 50 51 57 # CAM-CAO-HAT + 92 7 51 50 56 # CAO-CAM-HAT + 93 4 51 46 52 # CAO-CAT-CTT + 94 12 58 52 59 # HT-CTT-HT + 95 12 58 52 60 # HT-CTT-HT + 96 12 59 52 60 # HT-CTT-HT + 97 1 61 62 63 # CAT-CAO-CAM + 98 2 61 62 68 # CAT-CAO-HAT + 99 3 61 67 73 # CAT-CTT-HT + 100 3 61 67 74 # CAT-CTT-HT + 101 3 61 67 75 # CAT-CTT-HT + 102 1 61 66 65 # CAT-CAO-CAM + 103 2 61 66 72 # CAT-CAO-HAT + 104 4 62 61 67 # CAO-CAT-CTT + 105 5 62 61 66 # CAO-CAT-CAO + 106 6 62 63 64 # CAO-CAM-CAP + 107 7 62 63 69 # CAO-CAM-HAT + 108 8 63 62 68 # CAM-CAO-HAT + 109 9 63 64 65 # CAM-CAP-CAM + 110 10 63 64 70 # CAM-CAP-HAT + 111 11 64 63 69 # CAP-CAM-HAT + 112 6 66 65 64 # CAO-CAM-CAP + 113 11 64 65 71 # CAP-CAM-HAT + 114 10 65 64 70 # CAM-CAP-HAT + 115 8 65 66 72 # CAM-CAO-HAT + 116 7 66 65 71 # CAO-CAM-HAT + 117 4 66 61 67 # CAO-CAT-CTT + 118 12 73 67 74 # HT-CTT-HT + 119 12 73 67 75 # HT-CTT-HT + 120 12 74 67 75 # HT-CTT-HT + 121 1 76 77 78 # CAT-CAO-CAM + 122 2 76 77 83 # CAT-CAO-HAT + 123 3 76 82 88 # CAT-CTT-HT + 124 3 76 82 89 # CAT-CTT-HT + 125 3 76 82 90 # CAT-CTT-HT + 126 1 76 81 80 # CAT-CAO-CAM + 127 2 76 81 87 # CAT-CAO-HAT + 128 4 77 76 82 # CAO-CAT-CTT + 129 5 77 76 81 # CAO-CAT-CAO + 130 6 77 78 79 # CAO-CAM-CAP + 131 7 77 78 84 # CAO-CAM-HAT + 132 8 78 77 83 # CAM-CAO-HAT + 133 9 78 79 80 # CAM-CAP-CAM + 134 10 78 79 85 # CAM-CAP-HAT + 135 11 79 78 84 # CAP-CAM-HAT + 136 6 81 80 79 # CAO-CAM-CAP + 137 11 79 80 86 # CAP-CAM-HAT + 138 10 80 79 85 # CAM-CAP-HAT + 139 8 80 81 87 # CAM-CAO-HAT + 140 7 81 80 86 # CAO-CAM-HAT + 141 4 81 76 82 # CAO-CAT-CTT + 142 12 88 82 89 # HT-CTT-HT + 143 12 88 82 90 # HT-CTT-HT + 144 12 89 82 90 # HT-CTT-HT + 145 1 91 92 93 # CAT-CAO-CAM + 146 2 91 92 98 # CAT-CAO-HAT + 147 3 91 97 103 # CAT-CTT-HT + 148 3 91 97 104 # CAT-CTT-HT + 149 3 91 97 105 # CAT-CTT-HT + 150 1 91 96 95 # CAT-CAO-CAM + 151 2 91 96 102 # CAT-CAO-HAT + 152 4 92 91 97 # CAO-CAT-CTT + 153 5 92 91 96 # CAO-CAT-CAO + 154 6 92 93 94 # CAO-CAM-CAP + 155 7 92 93 99 # CAO-CAM-HAT + 156 8 93 92 98 # CAM-CAO-HAT + 157 9 93 94 95 # CAM-CAP-CAM + 158 10 93 94 100 # CAM-CAP-HAT + 159 11 94 93 99 # CAP-CAM-HAT + 160 6 96 95 94 # CAO-CAM-CAP + 161 11 94 95 101 # CAP-CAM-HAT + 162 10 95 94 100 # CAM-CAP-HAT + 163 8 95 96 102 # CAM-CAO-HAT + 164 7 96 95 101 # CAO-CAM-HAT + 165 4 96 91 97 # CAO-CAT-CTT + 166 12 103 97 104 # HT-CTT-HT + 167 12 103 97 105 # HT-CTT-HT + 168 12 104 97 105 # HT-CTT-HT + 169 1 106 107 108 # CAT-CAO-CAM + 170 2 106 107 113 # CAT-CAO-HAT + 171 3 106 112 118 # CAT-CTT-HT + 172 3 106 112 119 # CAT-CTT-HT + 173 3 106 112 120 # CAT-CTT-HT + 174 1 106 111 110 # CAT-CAO-CAM + 175 2 106 111 117 # CAT-CAO-HAT + 176 4 107 106 112 # CAO-CAT-CTT + 177 5 107 106 111 # CAO-CAT-CAO + 178 6 107 108 109 # CAO-CAM-CAP + 179 7 107 108 114 # CAO-CAM-HAT + 180 8 108 107 113 # CAM-CAO-HAT + 181 9 108 109 110 # CAM-CAP-CAM + 182 10 108 109 115 # CAM-CAP-HAT + 183 11 109 108 114 # CAP-CAM-HAT + 184 6 111 110 109 # CAO-CAM-CAP + 185 11 109 110 116 # CAP-CAM-HAT + 186 10 110 109 115 # CAM-CAP-HAT + 187 8 110 111 117 # CAM-CAO-HAT + 188 7 111 110 116 # CAO-CAM-HAT + 189 4 111 106 112 # CAO-CAT-CTT + 190 12 118 112 119 # HT-CTT-HT + 191 12 118 112 120 # HT-CTT-HT + 192 12 119 112 120 # HT-CTT-HT + 193 1 121 122 123 # CAT-CAO-CAM + 194 2 121 122 128 # CAT-CAO-HAT + 195 3 121 127 133 # CAT-CTT-HT + 196 3 121 127 134 # CAT-CTT-HT + 197 3 121 127 135 # CAT-CTT-HT + 198 1 121 126 125 # CAT-CAO-CAM + 199 2 121 126 132 # CAT-CAO-HAT + 200 4 122 121 127 # CAO-CAT-CTT + 201 5 122 121 126 # CAO-CAT-CAO + 202 6 122 123 124 # CAO-CAM-CAP + 203 7 122 123 129 # CAO-CAM-HAT + 204 8 123 122 128 # CAM-CAO-HAT + 205 9 123 124 125 # CAM-CAP-CAM + 206 10 123 124 130 # CAM-CAP-HAT + 207 11 124 123 129 # CAP-CAM-HAT + 208 6 126 125 124 # CAO-CAM-CAP + 209 11 124 125 131 # CAP-CAM-HAT + 210 10 125 124 130 # CAM-CAP-HAT + 211 8 125 126 132 # CAM-CAO-HAT + 212 7 126 125 131 # CAO-CAM-HAT + 213 4 126 121 127 # CAO-CAT-CTT + 214 12 133 127 134 # HT-CTT-HT + 215 12 133 127 135 # HT-CTT-HT + 216 12 134 127 135 # HT-CTT-HT + 217 1 136 137 138 # CAT-CAO-CAM + 218 2 136 137 143 # CAT-CAO-HAT + 219 3 136 142 148 # CAT-CTT-HT + 220 3 136 142 149 # CAT-CTT-HT + 221 3 136 142 150 # CAT-CTT-HT + 222 1 136 141 140 # CAT-CAO-CAM + 223 2 136 141 147 # CAT-CAO-HAT + 224 4 137 136 142 # CAO-CAT-CTT + 225 5 137 136 141 # CAO-CAT-CAO + 226 6 137 138 139 # CAO-CAM-CAP + 227 7 137 138 144 # CAO-CAM-HAT + 228 8 138 137 143 # CAM-CAO-HAT + 229 9 138 139 140 # CAM-CAP-CAM + 230 10 138 139 145 # CAM-CAP-HAT + 231 11 139 138 144 # CAP-CAM-HAT + 232 6 141 140 139 # CAO-CAM-CAP + 233 11 139 140 146 # CAP-CAM-HAT + 234 10 140 139 145 # CAM-CAP-HAT + 235 8 140 141 147 # CAM-CAO-HAT + 236 7 141 140 146 # CAO-CAM-HAT + 237 4 141 136 142 # CAO-CAT-CTT + 238 12 148 142 149 # HT-CTT-HT + 239 12 148 142 150 # HT-CTT-HT + 240 12 149 142 150 # HT-CTT-HT + 241 1 151 152 153 # CAT-CAO-CAM + 242 2 151 152 158 # CAT-CAO-HAT + 243 3 151 157 163 # CAT-CTT-HT + 244 3 151 157 164 # CAT-CTT-HT + 245 3 151 157 165 # CAT-CTT-HT + 246 1 151 156 155 # CAT-CAO-CAM + 247 2 151 156 162 # CAT-CAO-HAT + 248 4 152 151 157 # CAO-CAT-CTT + 249 5 152 151 156 # CAO-CAT-CAO + 250 6 152 153 154 # CAO-CAM-CAP + 251 7 152 153 159 # CAO-CAM-HAT + 252 8 153 152 158 # CAM-CAO-HAT + 253 9 153 154 155 # CAM-CAP-CAM + 254 10 153 154 160 # CAM-CAP-HAT + 255 11 154 153 159 # CAP-CAM-HAT + 256 6 156 155 154 # CAO-CAM-CAP + 257 11 154 155 161 # CAP-CAM-HAT + 258 10 155 154 160 # CAM-CAP-HAT + 259 8 155 156 162 # CAM-CAO-HAT + 260 7 156 155 161 # CAO-CAM-HAT + 261 4 156 151 157 # CAO-CAT-CTT + 262 12 163 157 164 # HT-CTT-HT + 263 12 163 157 165 # HT-CTT-HT + 264 12 164 157 165 # HT-CTT-HT + 265 1 166 167 168 # CAT-CAO-CAM + 266 2 166 167 173 # CAT-CAO-HAT + 267 3 166 172 178 # CAT-CTT-HT + 268 3 166 172 179 # CAT-CTT-HT + 269 3 166 172 180 # CAT-CTT-HT + 270 1 166 171 170 # CAT-CAO-CAM + 271 2 166 171 177 # CAT-CAO-HAT + 272 4 167 166 172 # CAO-CAT-CTT + 273 5 167 166 171 # CAO-CAT-CAO + 274 6 167 168 169 # CAO-CAM-CAP + 275 7 167 168 174 # CAO-CAM-HAT + 276 8 168 167 173 # CAM-CAO-HAT + 277 9 168 169 170 # CAM-CAP-CAM + 278 10 168 169 175 # CAM-CAP-HAT + 279 11 169 168 174 # CAP-CAM-HAT + 280 6 171 170 169 # CAO-CAM-CAP + 281 11 169 170 176 # CAP-CAM-HAT + 282 10 170 169 175 # CAM-CAP-HAT + 283 8 170 171 177 # CAM-CAO-HAT + 284 7 171 170 176 # CAO-CAM-HAT + 285 4 171 166 172 # CAO-CAT-CTT + 286 12 178 172 179 # HT-CTT-HT + 287 12 178 172 180 # HT-CTT-HT + 288 12 179 172 180 # HT-CTT-HT + 289 1 181 182 183 # CAT-CAO-CAM + 290 2 181 182 188 # CAT-CAO-HAT + 291 3 181 187 193 # CAT-CTT-HT + 292 3 181 187 194 # CAT-CTT-HT + 293 3 181 187 195 # CAT-CTT-HT + 294 1 181 186 185 # CAT-CAO-CAM + 295 2 181 186 192 # CAT-CAO-HAT + 296 4 182 181 187 # CAO-CAT-CTT + 297 5 182 181 186 # CAO-CAT-CAO + 298 6 182 183 184 # CAO-CAM-CAP + 299 7 182 183 189 # CAO-CAM-HAT + 300 8 183 182 188 # CAM-CAO-HAT + 301 9 183 184 185 # CAM-CAP-CAM + 302 10 183 184 190 # CAM-CAP-HAT + 303 11 184 183 189 # CAP-CAM-HAT + 304 6 186 185 184 # CAO-CAM-CAP + 305 11 184 185 191 # CAP-CAM-HAT + 306 10 185 184 190 # CAM-CAP-HAT + 307 8 185 186 192 # CAM-CAO-HAT + 308 7 186 185 191 # CAO-CAM-HAT + 309 4 186 181 187 # CAO-CAT-CTT + 310 12 193 187 194 # HT-CTT-HT + 311 12 193 187 195 # HT-CTT-HT + 312 12 194 187 195 # HT-CTT-HT + 313 1 196 197 198 # CAT-CAO-CAM + 314 2 196 197 203 # CAT-CAO-HAT + 315 3 196 202 208 # CAT-CTT-HT + 316 3 196 202 209 # CAT-CTT-HT + 317 3 196 202 210 # CAT-CTT-HT + 318 1 196 201 200 # CAT-CAO-CAM + 319 2 196 201 207 # CAT-CAO-HAT + 320 4 197 196 202 # CAO-CAT-CTT + 321 5 197 196 201 # CAO-CAT-CAO + 322 6 197 198 199 # CAO-CAM-CAP + 323 7 197 198 204 # CAO-CAM-HAT + 324 8 198 197 203 # CAM-CAO-HAT + 325 9 198 199 200 # CAM-CAP-CAM + 326 10 198 199 205 # CAM-CAP-HAT + 327 11 199 198 204 # CAP-CAM-HAT + 328 6 201 200 199 # CAO-CAM-CAP + 329 11 199 200 206 # CAP-CAM-HAT + 330 10 200 199 205 # CAM-CAP-HAT + 331 8 200 201 207 # CAM-CAO-HAT + 332 7 201 200 206 # CAO-CAM-HAT + 333 4 201 196 202 # CAO-CAT-CTT + 334 12 208 202 209 # HT-CTT-HT + 335 12 208 202 210 # HT-CTT-HT + 336 12 209 202 210 # HT-CTT-HT + 337 1 211 212 213 # CAT-CAO-CAM + 338 2 211 212 218 # CAT-CAO-HAT + 339 3 211 217 223 # CAT-CTT-HT + 340 3 211 217 224 # CAT-CTT-HT + 341 3 211 217 225 # CAT-CTT-HT + 342 1 211 216 215 # CAT-CAO-CAM + 343 2 211 216 222 # CAT-CAO-HAT + 344 4 212 211 217 # CAO-CAT-CTT + 345 5 212 211 216 # CAO-CAT-CAO + 346 6 212 213 214 # CAO-CAM-CAP + 347 7 212 213 219 # CAO-CAM-HAT + 348 8 213 212 218 # CAM-CAO-HAT + 349 9 213 214 215 # CAM-CAP-CAM + 350 10 213 214 220 # CAM-CAP-HAT + 351 11 214 213 219 # CAP-CAM-HAT + 352 6 216 215 214 # CAO-CAM-CAP + 353 11 214 215 221 # CAP-CAM-HAT + 354 10 215 214 220 # CAM-CAP-HAT + 355 8 215 216 222 # CAM-CAO-HAT + 356 7 216 215 221 # CAO-CAM-HAT + 357 4 216 211 217 # CAO-CAT-CTT + 358 12 223 217 224 # HT-CTT-HT + 359 12 223 217 225 # HT-CTT-HT + 360 12 224 217 225 # HT-CTT-HT + 361 1 226 227 228 # CAT-CAO-CAM + 362 2 226 227 233 # CAT-CAO-HAT + 363 3 226 232 238 # CAT-CTT-HT + 364 3 226 232 239 # CAT-CTT-HT + 365 3 226 232 240 # CAT-CTT-HT + 366 1 226 231 230 # CAT-CAO-CAM + 367 2 226 231 237 # CAT-CAO-HAT + 368 4 227 226 232 # CAO-CAT-CTT + 369 5 227 226 231 # CAO-CAT-CAO + 370 6 227 228 229 # CAO-CAM-CAP + 371 7 227 228 234 # CAO-CAM-HAT + 372 8 228 227 233 # CAM-CAO-HAT + 373 9 228 229 230 # CAM-CAP-CAM + 374 10 228 229 235 # CAM-CAP-HAT + 375 11 229 228 234 # CAP-CAM-HAT + 376 6 231 230 229 # CAO-CAM-CAP + 377 11 229 230 236 # CAP-CAM-HAT + 378 10 230 229 235 # CAM-CAP-HAT + 379 8 230 231 237 # CAM-CAO-HAT + 380 7 231 230 236 # CAO-CAM-HAT + 381 4 231 226 232 # CAO-CAT-CTT + 382 12 238 232 239 # HT-CTT-HT + 383 12 238 232 240 # HT-CTT-HT + 384 12 239 232 240 # HT-CTT-HT + 385 1 241 242 243 # CAT-CAO-CAM + 386 2 241 242 248 # CAT-CAO-HAT + 387 3 241 247 253 # CAT-CTT-HT + 388 3 241 247 254 # CAT-CTT-HT + 389 3 241 247 255 # CAT-CTT-HT + 390 1 241 246 245 # CAT-CAO-CAM + 391 2 241 246 252 # CAT-CAO-HAT + 392 4 242 241 247 # CAO-CAT-CTT + 393 5 242 241 246 # CAO-CAT-CAO + 394 6 242 243 244 # CAO-CAM-CAP + 395 7 242 243 249 # CAO-CAM-HAT + 396 8 243 242 248 # CAM-CAO-HAT + 397 9 243 244 245 # CAM-CAP-CAM + 398 10 243 244 250 # CAM-CAP-HAT + 399 11 244 243 249 # CAP-CAM-HAT + 400 6 246 245 244 # CAO-CAM-CAP + 401 11 244 245 251 # CAP-CAM-HAT + 402 10 245 244 250 # CAM-CAP-HAT + 403 8 245 246 252 # CAM-CAO-HAT + 404 7 246 245 251 # CAO-CAM-HAT + 405 4 246 241 247 # CAO-CAT-CTT + 406 12 253 247 254 # HT-CTT-HT + 407 12 253 247 255 # HT-CTT-HT + 408 12 254 247 255 # HT-CTT-HT + 409 1 256 257 258 # CAT-CAO-CAM + 410 2 256 257 263 # CAT-CAO-HAT + 411 3 256 262 268 # CAT-CTT-HT + 412 3 256 262 269 # CAT-CTT-HT + 413 3 256 262 270 # CAT-CTT-HT + 414 1 256 261 260 # CAT-CAO-CAM + 415 2 256 261 267 # CAT-CAO-HAT + 416 4 257 256 262 # CAO-CAT-CTT + 417 5 257 256 261 # CAO-CAT-CAO + 418 6 257 258 259 # CAO-CAM-CAP + 419 7 257 258 264 # CAO-CAM-HAT + 420 8 258 257 263 # CAM-CAO-HAT + 421 9 258 259 260 # CAM-CAP-CAM + 422 10 258 259 265 # CAM-CAP-HAT + 423 11 259 258 264 # CAP-CAM-HAT + 424 6 261 260 259 # CAO-CAM-CAP + 425 11 259 260 266 # CAP-CAM-HAT + 426 10 260 259 265 # CAM-CAP-HAT + 427 8 260 261 267 # CAM-CAO-HAT + 428 7 261 260 266 # CAO-CAM-HAT + 429 4 261 256 262 # CAO-CAT-CTT + 430 12 268 262 269 # HT-CTT-HT + 431 12 268 262 270 # HT-CTT-HT + 432 12 269 262 270 # HT-CTT-HT + 433 1 271 272 273 # CAT-CAO-CAM + 434 2 271 272 278 # CAT-CAO-HAT + 435 3 271 277 283 # CAT-CTT-HT + 436 3 271 277 284 # CAT-CTT-HT + 437 3 271 277 285 # CAT-CTT-HT + 438 1 271 276 275 # CAT-CAO-CAM + 439 2 271 276 282 # CAT-CAO-HAT + 440 4 272 271 277 # CAO-CAT-CTT + 441 5 272 271 276 # CAO-CAT-CAO + 442 6 272 273 274 # CAO-CAM-CAP + 443 7 272 273 279 # CAO-CAM-HAT + 444 8 273 272 278 # CAM-CAO-HAT + 445 9 273 274 275 # CAM-CAP-CAM + 446 10 273 274 280 # CAM-CAP-HAT + 447 11 274 273 279 # CAP-CAM-HAT + 448 6 276 275 274 # CAO-CAM-CAP + 449 11 274 275 281 # CAP-CAM-HAT + 450 10 275 274 280 # CAM-CAP-HAT + 451 8 275 276 282 # CAM-CAO-HAT + 452 7 276 275 281 # CAO-CAM-HAT + 453 4 276 271 277 # CAO-CAT-CTT + 454 12 283 277 284 # HT-CTT-HT + 455 12 283 277 285 # HT-CTT-HT + 456 12 284 277 285 # HT-CTT-HT + 457 1 286 287 288 # CAT-CAO-CAM + 458 2 286 287 293 # CAT-CAO-HAT + 459 3 286 292 298 # CAT-CTT-HT + 460 3 286 292 299 # CAT-CTT-HT + 461 3 286 292 300 # CAT-CTT-HT + 462 1 286 291 290 # CAT-CAO-CAM + 463 2 286 291 297 # CAT-CAO-HAT + 464 4 287 286 292 # CAO-CAT-CTT + 465 5 287 286 291 # CAO-CAT-CAO + 466 6 287 288 289 # CAO-CAM-CAP + 467 7 287 288 294 # CAO-CAM-HAT + 468 8 288 287 293 # CAM-CAO-HAT + 469 9 288 289 290 # CAM-CAP-CAM + 470 10 288 289 295 # CAM-CAP-HAT + 471 11 289 288 294 # CAP-CAM-HAT + 472 6 291 290 289 # CAO-CAM-CAP + 473 11 289 290 296 # CAP-CAM-HAT + 474 10 290 289 295 # CAM-CAP-HAT + 475 8 290 291 297 # CAM-CAO-HAT + 476 7 291 290 296 # CAO-CAM-HAT + 477 4 291 286 292 # CAO-CAT-CTT + 478 12 298 292 299 # HT-CTT-HT + 479 12 298 292 300 # HT-CTT-HT + 480 12 299 292 300 # HT-CTT-HT + 481 1 301 302 303 # CAT-CAO-CAM + 482 2 301 302 308 # CAT-CAO-HAT + 483 3 301 307 313 # CAT-CTT-HT + 484 3 301 307 314 # CAT-CTT-HT + 485 3 301 307 315 # CAT-CTT-HT + 486 1 301 306 305 # CAT-CAO-CAM + 487 2 301 306 312 # CAT-CAO-HAT + 488 4 302 301 307 # CAO-CAT-CTT + 489 5 302 301 306 # CAO-CAT-CAO + 490 6 302 303 304 # CAO-CAM-CAP + 491 7 302 303 309 # CAO-CAM-HAT + 492 8 303 302 308 # CAM-CAO-HAT + 493 9 303 304 305 # CAM-CAP-CAM + 494 10 303 304 310 # CAM-CAP-HAT + 495 11 304 303 309 # CAP-CAM-HAT + 496 6 306 305 304 # CAO-CAM-CAP + 497 11 304 305 311 # CAP-CAM-HAT + 498 10 305 304 310 # CAM-CAP-HAT + 499 8 305 306 312 # CAM-CAO-HAT + 500 7 306 305 311 # CAO-CAM-HAT + 501 4 306 301 307 # CAO-CAT-CTT + 502 12 313 307 314 # HT-CTT-HT + 503 12 313 307 315 # HT-CTT-HT + 504 12 314 307 315 # HT-CTT-HT + 505 1 316 317 318 # CAT-CAO-CAM + 506 2 316 317 323 # CAT-CAO-HAT + 507 3 316 322 328 # CAT-CTT-HT + 508 3 316 322 329 # CAT-CTT-HT + 509 3 316 322 330 # CAT-CTT-HT + 510 1 316 321 320 # CAT-CAO-CAM + 511 2 316 321 327 # CAT-CAO-HAT + 512 4 317 316 322 # CAO-CAT-CTT + 513 5 317 316 321 # CAO-CAT-CAO + 514 6 317 318 319 # CAO-CAM-CAP + 515 7 317 318 324 # CAO-CAM-HAT + 516 8 318 317 323 # CAM-CAO-HAT + 517 9 318 319 320 # CAM-CAP-CAM + 518 10 318 319 325 # CAM-CAP-HAT + 519 11 319 318 324 # CAP-CAM-HAT + 520 6 321 320 319 # CAO-CAM-CAP + 521 11 319 320 326 # CAP-CAM-HAT + 522 10 320 319 325 # CAM-CAP-HAT + 523 8 320 321 327 # CAM-CAO-HAT + 524 7 321 320 326 # CAO-CAM-HAT + 525 4 321 316 322 # CAO-CAT-CTT + 526 12 328 322 329 # HT-CTT-HT + 527 12 328 322 330 # HT-CTT-HT + 528 12 329 322 330 # HT-CTT-HT + 529 1 331 332 333 # CAT-CAO-CAM + 530 2 331 332 338 # CAT-CAO-HAT + 531 3 331 337 343 # CAT-CTT-HT + 532 3 331 337 344 # CAT-CTT-HT + 533 3 331 337 345 # CAT-CTT-HT + 534 1 331 336 335 # CAT-CAO-CAM + 535 2 331 336 342 # CAT-CAO-HAT + 536 4 332 331 337 # CAO-CAT-CTT + 537 5 332 331 336 # CAO-CAT-CAO + 538 6 332 333 334 # CAO-CAM-CAP + 539 7 332 333 339 # CAO-CAM-HAT + 540 8 333 332 338 # CAM-CAO-HAT + 541 9 333 334 335 # CAM-CAP-CAM + 542 10 333 334 340 # CAM-CAP-HAT + 543 11 334 333 339 # CAP-CAM-HAT + 544 6 336 335 334 # CAO-CAM-CAP + 545 11 334 335 341 # CAP-CAM-HAT + 546 10 335 334 340 # CAM-CAP-HAT + 547 8 335 336 342 # CAM-CAO-HAT + 548 7 336 335 341 # CAO-CAM-HAT + 549 4 336 331 337 # CAO-CAT-CTT + 550 12 343 337 344 # HT-CTT-HT + 551 12 343 337 345 # HT-CTT-HT + 552 12 344 337 345 # HT-CTT-HT + 553 1 346 347 348 # CAT-CAO-CAM + 554 2 346 347 353 # CAT-CAO-HAT + 555 3 346 352 358 # CAT-CTT-HT + 556 3 346 352 359 # CAT-CTT-HT + 557 3 346 352 360 # CAT-CTT-HT + 558 1 346 351 350 # CAT-CAO-CAM + 559 2 346 351 357 # CAT-CAO-HAT + 560 4 347 346 352 # CAO-CAT-CTT + 561 5 347 346 351 # CAO-CAT-CAO + 562 6 347 348 349 # CAO-CAM-CAP + 563 7 347 348 354 # CAO-CAM-HAT + 564 8 348 347 353 # CAM-CAO-HAT + 565 9 348 349 350 # CAM-CAP-CAM + 566 10 348 349 355 # CAM-CAP-HAT + 567 11 349 348 354 # CAP-CAM-HAT + 568 6 351 350 349 # CAO-CAM-CAP + 569 11 349 350 356 # CAP-CAM-HAT + 570 10 350 349 355 # CAM-CAP-HAT + 571 8 350 351 357 # CAM-CAO-HAT + 572 7 351 350 356 # CAO-CAM-HAT + 573 4 351 346 352 # CAO-CAT-CTT + 574 12 358 352 359 # HT-CTT-HT + 575 12 358 352 360 # HT-CTT-HT + 576 12 359 352 360 # HT-CTT-HT + 577 1 361 362 363 # CAT-CAO-CAM + 578 2 361 362 368 # CAT-CAO-HAT + 579 3 361 367 373 # CAT-CTT-HT + 580 3 361 367 374 # CAT-CTT-HT + 581 3 361 367 375 # CAT-CTT-HT + 582 1 361 366 365 # CAT-CAO-CAM + 583 2 361 366 372 # CAT-CAO-HAT + 584 4 362 361 367 # CAO-CAT-CTT + 585 5 362 361 366 # CAO-CAT-CAO + 586 6 362 363 364 # CAO-CAM-CAP + 587 7 362 363 369 # CAO-CAM-HAT + 588 8 363 362 368 # CAM-CAO-HAT + 589 9 363 364 365 # CAM-CAP-CAM + 590 10 363 364 370 # CAM-CAP-HAT + 591 11 364 363 369 # CAP-CAM-HAT + 592 6 366 365 364 # CAO-CAM-CAP + 593 11 364 365 371 # CAP-CAM-HAT + 594 10 365 364 370 # CAM-CAP-HAT + 595 8 365 366 372 # CAM-CAO-HAT + 596 7 366 365 371 # CAO-CAM-HAT + 597 4 366 361 367 # CAO-CAT-CTT + 598 12 373 367 374 # HT-CTT-HT + 599 12 373 367 375 # HT-CTT-HT + 600 12 374 367 375 # HT-CTT-HT + 601 1 376 377 378 # CAT-CAO-CAM + 602 2 376 377 383 # CAT-CAO-HAT + 603 3 376 382 388 # CAT-CTT-HT + 604 3 376 382 389 # CAT-CTT-HT + 605 3 376 382 390 # CAT-CTT-HT + 606 1 376 381 380 # CAT-CAO-CAM + 607 2 376 381 387 # CAT-CAO-HAT + 608 4 377 376 382 # CAO-CAT-CTT + 609 5 377 376 381 # CAO-CAT-CAO + 610 6 377 378 379 # CAO-CAM-CAP + 611 7 377 378 384 # CAO-CAM-HAT + 612 8 378 377 383 # CAM-CAO-HAT + 613 9 378 379 380 # CAM-CAP-CAM + 614 10 378 379 385 # CAM-CAP-HAT + 615 11 379 378 384 # CAP-CAM-HAT + 616 6 381 380 379 # CAO-CAM-CAP + 617 11 379 380 386 # CAP-CAM-HAT + 618 10 380 379 385 # CAM-CAP-HAT + 619 8 380 381 387 # CAM-CAO-HAT + 620 7 381 380 386 # CAO-CAM-HAT + 621 4 381 376 382 # CAO-CAT-CTT + 622 12 388 382 389 # HT-CTT-HT + 623 12 388 382 390 # HT-CTT-HT + 624 12 389 382 390 # HT-CTT-HT + 625 1 391 392 393 # CAT-CAO-CAM + 626 2 391 392 398 # CAT-CAO-HAT + 627 3 391 397 403 # CAT-CTT-HT + 628 3 391 397 404 # CAT-CTT-HT + 629 3 391 397 405 # CAT-CTT-HT + 630 1 391 396 395 # CAT-CAO-CAM + 631 2 391 396 402 # CAT-CAO-HAT + 632 4 392 391 397 # CAO-CAT-CTT + 633 5 392 391 396 # CAO-CAT-CAO + 634 6 392 393 394 # CAO-CAM-CAP + 635 7 392 393 399 # CAO-CAM-HAT + 636 8 393 392 398 # CAM-CAO-HAT + 637 9 393 394 395 # CAM-CAP-CAM + 638 10 393 394 400 # CAM-CAP-HAT + 639 11 394 393 399 # CAP-CAM-HAT + 640 6 396 395 394 # CAO-CAM-CAP + 641 11 394 395 401 # CAP-CAM-HAT + 642 10 395 394 400 # CAM-CAP-HAT + 643 8 395 396 402 # CAM-CAO-HAT + 644 7 396 395 401 # CAO-CAM-HAT + 645 4 396 391 397 # CAO-CAT-CTT + 646 12 403 397 404 # HT-CTT-HT + 647 12 403 397 405 # HT-CTT-HT + 648 12 404 397 405 # HT-CTT-HT + 649 1 406 407 408 # CAT-CAO-CAM + 650 2 406 407 413 # CAT-CAO-HAT + 651 3 406 412 418 # CAT-CTT-HT + 652 3 406 412 419 # CAT-CTT-HT + 653 3 406 412 420 # CAT-CTT-HT + 654 1 406 411 410 # CAT-CAO-CAM + 655 2 406 411 417 # CAT-CAO-HAT + 656 4 407 406 412 # CAO-CAT-CTT + 657 5 407 406 411 # CAO-CAT-CAO + 658 6 407 408 409 # CAO-CAM-CAP + 659 7 407 408 414 # CAO-CAM-HAT + 660 8 408 407 413 # CAM-CAO-HAT + 661 9 408 409 410 # CAM-CAP-CAM + 662 10 408 409 415 # CAM-CAP-HAT + 663 11 409 408 414 # CAP-CAM-HAT + 664 6 411 410 409 # CAO-CAM-CAP + 665 11 409 410 416 # CAP-CAM-HAT + 666 10 410 409 415 # CAM-CAP-HAT + 667 8 410 411 417 # CAM-CAO-HAT + 668 7 411 410 416 # CAO-CAM-HAT + 669 4 411 406 412 # CAO-CAT-CTT + 670 12 418 412 419 # HT-CTT-HT + 671 12 418 412 420 # HT-CTT-HT + 672 12 419 412 420 # HT-CTT-HT + 673 1 421 422 423 # CAT-CAO-CAM + 674 2 421 422 428 # CAT-CAO-HAT + 675 3 421 427 433 # CAT-CTT-HT + 676 3 421 427 434 # CAT-CTT-HT + 677 3 421 427 435 # CAT-CTT-HT + 678 1 421 426 425 # CAT-CAO-CAM + 679 2 421 426 432 # CAT-CAO-HAT + 680 4 422 421 427 # CAO-CAT-CTT + 681 5 422 421 426 # CAO-CAT-CAO + 682 6 422 423 424 # CAO-CAM-CAP + 683 7 422 423 429 # CAO-CAM-HAT + 684 8 423 422 428 # CAM-CAO-HAT + 685 9 423 424 425 # CAM-CAP-CAM + 686 10 423 424 430 # CAM-CAP-HAT + 687 11 424 423 429 # CAP-CAM-HAT + 688 6 426 425 424 # CAO-CAM-CAP + 689 11 424 425 431 # CAP-CAM-HAT + 690 10 425 424 430 # CAM-CAP-HAT + 691 8 425 426 432 # CAM-CAO-HAT + 692 7 426 425 431 # CAO-CAM-HAT + 693 4 426 421 427 # CAO-CAT-CTT + 694 12 433 427 434 # HT-CTT-HT + 695 12 433 427 435 # HT-CTT-HT + 696 12 434 427 435 # HT-CTT-HT + 697 1 436 437 438 # CAT-CAO-CAM + 698 2 436 437 443 # CAT-CAO-HAT + 699 3 436 442 448 # CAT-CTT-HT + 700 3 436 442 449 # CAT-CTT-HT + 701 3 436 442 450 # CAT-CTT-HT + 702 1 436 441 440 # CAT-CAO-CAM + 703 2 436 441 447 # CAT-CAO-HAT + 704 4 437 436 442 # CAO-CAT-CTT + 705 5 437 436 441 # CAO-CAT-CAO + 706 6 437 438 439 # CAO-CAM-CAP + 707 7 437 438 444 # CAO-CAM-HAT + 708 8 438 437 443 # CAM-CAO-HAT + 709 9 438 439 440 # CAM-CAP-CAM + 710 10 438 439 445 # CAM-CAP-HAT + 711 11 439 438 444 # CAP-CAM-HAT + 712 6 441 440 439 # CAO-CAM-CAP + 713 11 439 440 446 # CAP-CAM-HAT + 714 10 440 439 445 # CAM-CAP-HAT + 715 8 440 441 447 # CAM-CAO-HAT + 716 7 441 440 446 # CAO-CAM-HAT + 717 4 441 436 442 # CAO-CAT-CTT + 718 12 448 442 449 # HT-CTT-HT + 719 12 448 442 450 # HT-CTT-HT + 720 12 449 442 450 # HT-CTT-HT + 721 1 451 452 453 # CAT-CAO-CAM + 722 2 451 452 458 # CAT-CAO-HAT + 723 3 451 457 463 # CAT-CTT-HT + 724 3 451 457 464 # CAT-CTT-HT + 725 3 451 457 465 # CAT-CTT-HT + 726 1 451 456 455 # CAT-CAO-CAM + 727 2 451 456 462 # CAT-CAO-HAT + 728 4 452 451 457 # CAO-CAT-CTT + 729 5 452 451 456 # CAO-CAT-CAO + 730 6 452 453 454 # CAO-CAM-CAP + 731 7 452 453 459 # CAO-CAM-HAT + 732 8 453 452 458 # CAM-CAO-HAT + 733 9 453 454 455 # CAM-CAP-CAM + 734 10 453 454 460 # CAM-CAP-HAT + 735 11 454 453 459 # CAP-CAM-HAT + 736 6 456 455 454 # CAO-CAM-CAP + 737 11 454 455 461 # CAP-CAM-HAT + 738 10 455 454 460 # CAM-CAP-HAT + 739 8 455 456 462 # CAM-CAO-HAT + 740 7 456 455 461 # CAO-CAM-HAT + 741 4 456 451 457 # CAO-CAT-CTT + 742 12 463 457 464 # HT-CTT-HT + 743 12 463 457 465 # HT-CTT-HT + 744 12 464 457 465 # HT-CTT-HT + 745 1 466 467 468 # CAT-CAO-CAM + 746 2 466 467 473 # CAT-CAO-HAT + 747 3 466 472 478 # CAT-CTT-HT + 748 3 466 472 479 # CAT-CTT-HT + 749 3 466 472 480 # CAT-CTT-HT + 750 1 466 471 470 # CAT-CAO-CAM + 751 2 466 471 477 # CAT-CAO-HAT + 752 4 467 466 472 # CAO-CAT-CTT + 753 5 467 466 471 # CAO-CAT-CAO + 754 6 467 468 469 # CAO-CAM-CAP + 755 7 467 468 474 # CAO-CAM-HAT + 756 8 468 467 473 # CAM-CAO-HAT + 757 9 468 469 470 # CAM-CAP-CAM + 758 10 468 469 475 # CAM-CAP-HAT + 759 11 469 468 474 # CAP-CAM-HAT + 760 6 471 470 469 # CAO-CAM-CAP + 761 11 469 470 476 # CAP-CAM-HAT + 762 10 470 469 475 # CAM-CAP-HAT + 763 8 470 471 477 # CAM-CAO-HAT + 764 7 471 470 476 # CAO-CAM-HAT + 765 4 471 466 472 # CAO-CAT-CTT + 766 12 478 472 479 # HT-CTT-HT + 767 12 478 472 480 # HT-CTT-HT + 768 12 479 472 480 # HT-CTT-HT + 769 1 481 482 483 # CAT-CAO-CAM + 770 2 481 482 488 # CAT-CAO-HAT + 771 3 481 487 493 # CAT-CTT-HT + 772 3 481 487 494 # CAT-CTT-HT + 773 3 481 487 495 # CAT-CTT-HT + 774 1 481 486 485 # CAT-CAO-CAM + 775 2 481 486 492 # CAT-CAO-HAT + 776 4 482 481 487 # CAO-CAT-CTT + 777 5 482 481 486 # CAO-CAT-CAO + 778 6 482 483 484 # CAO-CAM-CAP + 779 7 482 483 489 # CAO-CAM-HAT + 780 8 483 482 488 # CAM-CAO-HAT + 781 9 483 484 485 # CAM-CAP-CAM + 782 10 483 484 490 # CAM-CAP-HAT + 783 11 484 483 489 # CAP-CAM-HAT + 784 6 486 485 484 # CAO-CAM-CAP + 785 11 484 485 491 # CAP-CAM-HAT + 786 10 485 484 490 # CAM-CAP-HAT + 787 8 485 486 492 # CAM-CAO-HAT + 788 7 486 485 491 # CAO-CAM-HAT + 789 4 486 481 487 # CAO-CAT-CTT + 790 12 493 487 494 # HT-CTT-HT + 791 12 493 487 495 # HT-CTT-HT + 792 12 494 487 495 # HT-CTT-HT + 793 1 496 497 498 # CAT-CAO-CAM + 794 2 496 497 503 # CAT-CAO-HAT + 795 3 496 502 508 # CAT-CTT-HT + 796 3 496 502 509 # CAT-CTT-HT + 797 3 496 502 510 # CAT-CTT-HT + 798 1 496 501 500 # CAT-CAO-CAM + 799 2 496 501 507 # CAT-CAO-HAT + 800 4 497 496 502 # CAO-CAT-CTT + 801 5 497 496 501 # CAO-CAT-CAO + 802 6 497 498 499 # CAO-CAM-CAP + 803 7 497 498 504 # CAO-CAM-HAT + 804 8 498 497 503 # CAM-CAO-HAT + 805 9 498 499 500 # CAM-CAP-CAM + 806 10 498 499 505 # CAM-CAP-HAT + 807 11 499 498 504 # CAP-CAM-HAT + 808 6 501 500 499 # CAO-CAM-CAP + 809 11 499 500 506 # CAP-CAM-HAT + 810 10 500 499 505 # CAM-CAP-HAT + 811 8 500 501 507 # CAM-CAO-HAT + 812 7 501 500 506 # CAO-CAM-HAT + 813 4 501 496 502 # CAO-CAT-CTT + 814 12 508 502 509 # HT-CTT-HT + 815 12 508 502 510 # HT-CTT-HT + 816 12 509 502 510 # HT-CTT-HT + 817 1 511 512 513 # CAT-CAO-CAM + 818 2 511 512 518 # CAT-CAO-HAT + 819 3 511 517 523 # CAT-CTT-HT + 820 3 511 517 524 # CAT-CTT-HT + 821 3 511 517 525 # CAT-CTT-HT + 822 1 511 516 515 # CAT-CAO-CAM + 823 2 511 516 522 # CAT-CAO-HAT + 824 4 512 511 517 # CAO-CAT-CTT + 825 5 512 511 516 # CAO-CAT-CAO + 826 6 512 513 514 # CAO-CAM-CAP + 827 7 512 513 519 # CAO-CAM-HAT + 828 8 513 512 518 # CAM-CAO-HAT + 829 9 513 514 515 # CAM-CAP-CAM + 830 10 513 514 520 # CAM-CAP-HAT + 831 11 514 513 519 # CAP-CAM-HAT + 832 6 516 515 514 # CAO-CAM-CAP + 833 11 514 515 521 # CAP-CAM-HAT + 834 10 515 514 520 # CAM-CAP-HAT + 835 8 515 516 522 # CAM-CAO-HAT + 836 7 516 515 521 # CAO-CAM-HAT + 837 4 516 511 517 # CAO-CAT-CTT + 838 12 523 517 524 # HT-CTT-HT + 839 12 523 517 525 # HT-CTT-HT + 840 12 524 517 525 # HT-CTT-HT + 841 1 526 527 528 # CAT-CAO-CAM + 842 2 526 527 533 # CAT-CAO-HAT + 843 3 526 532 538 # CAT-CTT-HT + 844 3 526 532 539 # CAT-CTT-HT + 845 3 526 532 540 # CAT-CTT-HT + 846 1 526 531 530 # CAT-CAO-CAM + 847 2 526 531 537 # CAT-CAO-HAT + 848 4 527 526 532 # CAO-CAT-CTT + 849 5 527 526 531 # CAO-CAT-CAO + 850 6 527 528 529 # CAO-CAM-CAP + 851 7 527 528 534 # CAO-CAM-HAT + 852 8 528 527 533 # CAM-CAO-HAT + 853 9 528 529 530 # CAM-CAP-CAM + 854 10 528 529 535 # CAM-CAP-HAT + 855 11 529 528 534 # CAP-CAM-HAT + 856 6 531 530 529 # CAO-CAM-CAP + 857 11 529 530 536 # CAP-CAM-HAT + 858 10 530 529 535 # CAM-CAP-HAT + 859 8 530 531 537 # CAM-CAO-HAT + 860 7 531 530 536 # CAO-CAM-HAT + 861 4 531 526 532 # CAO-CAT-CTT + 862 12 538 532 539 # HT-CTT-HT + 863 12 538 532 540 # HT-CTT-HT + 864 12 539 532 540 # HT-CTT-HT + 865 1 541 542 543 # CAT-CAO-CAM + 866 2 541 542 548 # CAT-CAO-HAT + 867 3 541 547 553 # CAT-CTT-HT + 868 3 541 547 554 # CAT-CTT-HT + 869 3 541 547 555 # CAT-CTT-HT + 870 1 541 546 545 # CAT-CAO-CAM + 871 2 541 546 552 # CAT-CAO-HAT + 872 4 542 541 547 # CAO-CAT-CTT + 873 5 542 541 546 # CAO-CAT-CAO + 874 6 542 543 544 # CAO-CAM-CAP + 875 7 542 543 549 # CAO-CAM-HAT + 876 8 543 542 548 # CAM-CAO-HAT + 877 9 543 544 545 # CAM-CAP-CAM + 878 10 543 544 550 # CAM-CAP-HAT + 879 11 544 543 549 # CAP-CAM-HAT + 880 6 546 545 544 # CAO-CAM-CAP + 881 11 544 545 551 # CAP-CAM-HAT + 882 10 545 544 550 # CAM-CAP-HAT + 883 8 545 546 552 # CAM-CAO-HAT + 884 7 546 545 551 # CAO-CAM-HAT + 885 4 546 541 547 # CAO-CAT-CTT + 886 12 553 547 554 # HT-CTT-HT + 887 12 553 547 555 # HT-CTT-HT + 888 12 554 547 555 # HT-CTT-HT + 889 1 556 557 558 # CAT-CAO-CAM + 890 2 556 557 563 # CAT-CAO-HAT + 891 3 556 562 568 # CAT-CTT-HT + 892 3 556 562 569 # CAT-CTT-HT + 893 3 556 562 570 # CAT-CTT-HT + 894 1 556 561 560 # CAT-CAO-CAM + 895 2 556 561 567 # CAT-CAO-HAT + 896 4 557 556 562 # CAO-CAT-CTT + 897 5 557 556 561 # CAO-CAT-CAO + 898 6 557 558 559 # CAO-CAM-CAP + 899 7 557 558 564 # CAO-CAM-HAT + 900 8 558 557 563 # CAM-CAO-HAT + 901 9 558 559 560 # CAM-CAP-CAM + 902 10 558 559 565 # CAM-CAP-HAT + 903 11 559 558 564 # CAP-CAM-HAT + 904 6 561 560 559 # CAO-CAM-CAP + 905 11 559 560 566 # CAP-CAM-HAT + 906 10 560 559 565 # CAM-CAP-HAT + 907 8 560 561 567 # CAM-CAO-HAT + 908 7 561 560 566 # CAO-CAM-HAT + 909 4 561 556 562 # CAO-CAT-CTT + 910 12 568 562 569 # HT-CTT-HT + 911 12 568 562 570 # HT-CTT-HT + 912 12 569 562 570 # HT-CTT-HT + 913 1 571 572 573 # CAT-CAO-CAM + 914 2 571 572 578 # CAT-CAO-HAT + 915 3 571 577 583 # CAT-CTT-HT + 916 3 571 577 584 # CAT-CTT-HT + 917 3 571 577 585 # CAT-CTT-HT + 918 1 571 576 575 # CAT-CAO-CAM + 919 2 571 576 582 # CAT-CAO-HAT + 920 4 572 571 577 # CAO-CAT-CTT + 921 5 572 571 576 # CAO-CAT-CAO + 922 6 572 573 574 # CAO-CAM-CAP + 923 7 572 573 579 # CAO-CAM-HAT + 924 8 573 572 578 # CAM-CAO-HAT + 925 9 573 574 575 # CAM-CAP-CAM + 926 10 573 574 580 # CAM-CAP-HAT + 927 11 574 573 579 # CAP-CAM-HAT + 928 6 576 575 574 # CAO-CAM-CAP + 929 11 574 575 581 # CAP-CAM-HAT + 930 10 575 574 580 # CAM-CAP-HAT + 931 8 575 576 582 # CAM-CAO-HAT + 932 7 576 575 581 # CAO-CAM-HAT + 933 4 576 571 577 # CAO-CAT-CTT + 934 12 583 577 584 # HT-CTT-HT + 935 12 583 577 585 # HT-CTT-HT + 936 12 584 577 585 # HT-CTT-HT + 937 1 586 587 588 # CAT-CAO-CAM + 938 2 586 587 593 # CAT-CAO-HAT + 939 3 586 592 598 # CAT-CTT-HT + 940 3 586 592 599 # CAT-CTT-HT + 941 3 586 592 600 # CAT-CTT-HT + 942 1 586 591 590 # CAT-CAO-CAM + 943 2 586 591 597 # CAT-CAO-HAT + 944 4 587 586 592 # CAO-CAT-CTT + 945 5 587 586 591 # CAO-CAT-CAO + 946 6 587 588 589 # CAO-CAM-CAP + 947 7 587 588 594 # CAO-CAM-HAT + 948 8 588 587 593 # CAM-CAO-HAT + 949 9 588 589 590 # CAM-CAP-CAM + 950 10 588 589 595 # CAM-CAP-HAT + 951 11 589 588 594 # CAP-CAM-HAT + 952 6 591 590 589 # CAO-CAM-CAP + 953 11 589 590 596 # CAP-CAM-HAT + 954 10 590 589 595 # CAM-CAP-HAT + 955 8 590 591 597 # CAM-CAO-HAT + 956 7 591 590 596 # CAO-CAM-HAT + 957 4 591 586 592 # CAO-CAT-CTT + 958 12 598 592 599 # HT-CTT-HT + 959 12 598 592 600 # HT-CTT-HT + 960 12 599 592 600 # HT-CTT-HT + 961 1 601 602 603 # CAT-CAO-CAM + 962 2 601 602 608 # CAT-CAO-HAT + 963 3 601 607 613 # CAT-CTT-HT + 964 3 601 607 614 # CAT-CTT-HT + 965 3 601 607 615 # CAT-CTT-HT + 966 1 601 606 605 # CAT-CAO-CAM + 967 2 601 606 612 # CAT-CAO-HAT + 968 4 602 601 607 # CAO-CAT-CTT + 969 5 602 601 606 # CAO-CAT-CAO + 970 6 602 603 604 # CAO-CAM-CAP + 971 7 602 603 609 # CAO-CAM-HAT + 972 8 603 602 608 # CAM-CAO-HAT + 973 9 603 604 605 # CAM-CAP-CAM + 974 10 603 604 610 # CAM-CAP-HAT + 975 11 604 603 609 # CAP-CAM-HAT + 976 6 606 605 604 # CAO-CAM-CAP + 977 11 604 605 611 # CAP-CAM-HAT + 978 10 605 604 610 # CAM-CAP-HAT + 979 8 605 606 612 # CAM-CAO-HAT + 980 7 606 605 611 # CAO-CAM-HAT + 981 4 606 601 607 # CAO-CAT-CTT + 982 12 613 607 614 # HT-CTT-HT + 983 12 613 607 615 # HT-CTT-HT + 984 12 614 607 615 # HT-CTT-HT + 985 1 616 617 618 # CAT-CAO-CAM + 986 2 616 617 623 # CAT-CAO-HAT + 987 3 616 622 628 # CAT-CTT-HT + 988 3 616 622 629 # CAT-CTT-HT + 989 3 616 622 630 # CAT-CTT-HT + 990 1 616 621 620 # CAT-CAO-CAM + 991 2 616 621 627 # CAT-CAO-HAT + 992 4 617 616 622 # CAO-CAT-CTT + 993 5 617 616 621 # CAO-CAT-CAO + 994 6 617 618 619 # CAO-CAM-CAP + 995 7 617 618 624 # CAO-CAM-HAT + 996 8 618 617 623 # CAM-CAO-HAT + 997 9 618 619 620 # CAM-CAP-CAM + 998 10 618 619 625 # CAM-CAP-HAT + 999 11 619 618 624 # CAP-CAM-HAT + 1000 6 621 620 619 # CAO-CAM-CAP + 1001 11 619 620 626 # CAP-CAM-HAT + 1002 10 620 619 625 # CAM-CAP-HAT + 1003 8 620 621 627 # CAM-CAO-HAT + 1004 7 621 620 626 # CAO-CAM-HAT + 1005 4 621 616 622 # CAO-CAT-CTT + 1006 12 628 622 629 # HT-CTT-HT + 1007 12 628 622 630 # HT-CTT-HT + 1008 12 629 622 630 # HT-CTT-HT + 1009 1 631 632 633 # CAT-CAO-CAM + 1010 2 631 632 638 # CAT-CAO-HAT + 1011 3 631 637 643 # CAT-CTT-HT + 1012 3 631 637 644 # CAT-CTT-HT + 1013 3 631 637 645 # CAT-CTT-HT + 1014 1 631 636 635 # CAT-CAO-CAM + 1015 2 631 636 642 # CAT-CAO-HAT + 1016 4 632 631 637 # CAO-CAT-CTT + 1017 5 632 631 636 # CAO-CAT-CAO + 1018 6 632 633 634 # CAO-CAM-CAP + 1019 7 632 633 639 # CAO-CAM-HAT + 1020 8 633 632 638 # CAM-CAO-HAT + 1021 9 633 634 635 # CAM-CAP-CAM + 1022 10 633 634 640 # CAM-CAP-HAT + 1023 11 634 633 639 # CAP-CAM-HAT + 1024 6 636 635 634 # CAO-CAM-CAP + 1025 11 634 635 641 # CAP-CAM-HAT + 1026 10 635 634 640 # CAM-CAP-HAT + 1027 8 635 636 642 # CAM-CAO-HAT + 1028 7 636 635 641 # CAO-CAM-HAT + 1029 4 636 631 637 # CAO-CAT-CTT + 1030 12 643 637 644 # HT-CTT-HT + 1031 12 643 637 645 # HT-CTT-HT + 1032 12 644 637 645 # HT-CTT-HT + 1033 1 646 647 648 # CAT-CAO-CAM + 1034 2 646 647 653 # CAT-CAO-HAT + 1035 3 646 652 658 # CAT-CTT-HT + 1036 3 646 652 659 # CAT-CTT-HT + 1037 3 646 652 660 # CAT-CTT-HT + 1038 1 646 651 650 # CAT-CAO-CAM + 1039 2 646 651 657 # CAT-CAO-HAT + 1040 4 647 646 652 # CAO-CAT-CTT + 1041 5 647 646 651 # CAO-CAT-CAO + 1042 6 647 648 649 # CAO-CAM-CAP + 1043 7 647 648 654 # CAO-CAM-HAT + 1044 8 648 647 653 # CAM-CAO-HAT + 1045 9 648 649 650 # CAM-CAP-CAM + 1046 10 648 649 655 # CAM-CAP-HAT + 1047 11 649 648 654 # CAP-CAM-HAT + 1048 6 651 650 649 # CAO-CAM-CAP + 1049 11 649 650 656 # CAP-CAM-HAT + 1050 10 650 649 655 # CAM-CAP-HAT + 1051 8 650 651 657 # CAM-CAO-HAT + 1052 7 651 650 656 # CAO-CAM-HAT + 1053 4 651 646 652 # CAO-CAT-CTT + 1054 12 658 652 659 # HT-CTT-HT + 1055 12 658 652 660 # HT-CTT-HT + 1056 12 659 652 660 # HT-CTT-HT + 1057 1 661 662 663 # CAT-CAO-CAM + 1058 2 661 662 668 # CAT-CAO-HAT + 1059 3 661 667 673 # CAT-CTT-HT + 1060 3 661 667 674 # CAT-CTT-HT + 1061 3 661 667 675 # CAT-CTT-HT + 1062 1 661 666 665 # CAT-CAO-CAM + 1063 2 661 666 672 # CAT-CAO-HAT + 1064 4 662 661 667 # CAO-CAT-CTT + 1065 5 662 661 666 # CAO-CAT-CAO + 1066 6 662 663 664 # CAO-CAM-CAP + 1067 7 662 663 669 # CAO-CAM-HAT + 1068 8 663 662 668 # CAM-CAO-HAT + 1069 9 663 664 665 # CAM-CAP-CAM + 1070 10 663 664 670 # CAM-CAP-HAT + 1071 11 664 663 669 # CAP-CAM-HAT + 1072 6 666 665 664 # CAO-CAM-CAP + 1073 11 664 665 671 # CAP-CAM-HAT + 1074 10 665 664 670 # CAM-CAP-HAT + 1075 8 665 666 672 # CAM-CAO-HAT + 1076 7 666 665 671 # CAO-CAM-HAT + 1077 4 666 661 667 # CAO-CAT-CTT + 1078 12 673 667 674 # HT-CTT-HT + 1079 12 673 667 675 # HT-CTT-HT + 1080 12 674 667 675 # HT-CTT-HT + 1081 1 676 677 678 # CAT-CAO-CAM + 1082 2 676 677 683 # CAT-CAO-HAT + 1083 3 676 682 688 # CAT-CTT-HT + 1084 3 676 682 689 # CAT-CTT-HT + 1085 3 676 682 690 # CAT-CTT-HT + 1086 1 676 681 680 # CAT-CAO-CAM + 1087 2 676 681 687 # CAT-CAO-HAT + 1088 4 677 676 682 # CAO-CAT-CTT + 1089 5 677 676 681 # CAO-CAT-CAO + 1090 6 677 678 679 # CAO-CAM-CAP + 1091 7 677 678 684 # CAO-CAM-HAT + 1092 8 678 677 683 # CAM-CAO-HAT + 1093 9 678 679 680 # CAM-CAP-CAM + 1094 10 678 679 685 # CAM-CAP-HAT + 1095 11 679 678 684 # CAP-CAM-HAT + 1096 6 681 680 679 # CAO-CAM-CAP + 1097 11 679 680 686 # CAP-CAM-HAT + 1098 10 680 679 685 # CAM-CAP-HAT + 1099 8 680 681 687 # CAM-CAO-HAT + 1100 7 681 680 686 # CAO-CAM-HAT + 1101 4 681 676 682 # CAO-CAT-CTT + 1102 12 688 682 689 # HT-CTT-HT + 1103 12 688 682 690 # HT-CTT-HT + 1104 12 689 682 690 # HT-CTT-HT + 1105 1 691 692 693 # CAT-CAO-CAM + 1106 2 691 692 698 # CAT-CAO-HAT + 1107 3 691 697 703 # CAT-CTT-HT + 1108 3 691 697 704 # CAT-CTT-HT + 1109 3 691 697 705 # CAT-CTT-HT + 1110 1 691 696 695 # CAT-CAO-CAM + 1111 2 691 696 702 # CAT-CAO-HAT + 1112 4 692 691 697 # CAO-CAT-CTT + 1113 5 692 691 696 # CAO-CAT-CAO + 1114 6 692 693 694 # CAO-CAM-CAP + 1115 7 692 693 699 # CAO-CAM-HAT + 1116 8 693 692 698 # CAM-CAO-HAT + 1117 9 693 694 695 # CAM-CAP-CAM + 1118 10 693 694 700 # CAM-CAP-HAT + 1119 11 694 693 699 # CAP-CAM-HAT + 1120 6 696 695 694 # CAO-CAM-CAP + 1121 11 694 695 701 # CAP-CAM-HAT + 1122 10 695 694 700 # CAM-CAP-HAT + 1123 8 695 696 702 # CAM-CAO-HAT + 1124 7 696 695 701 # CAO-CAM-HAT + 1125 4 696 691 697 # CAO-CAT-CTT + 1126 12 703 697 704 # HT-CTT-HT + 1127 12 703 697 705 # HT-CTT-HT + 1128 12 704 697 705 # HT-CTT-HT + 1129 1 706 707 708 # CAT-CAO-CAM + 1130 2 706 707 713 # CAT-CAO-HAT + 1131 3 706 712 718 # CAT-CTT-HT + 1132 3 706 712 719 # CAT-CTT-HT + 1133 3 706 712 720 # CAT-CTT-HT + 1134 1 706 711 710 # CAT-CAO-CAM + 1135 2 706 711 717 # CAT-CAO-HAT + 1136 4 707 706 712 # CAO-CAT-CTT + 1137 5 707 706 711 # CAO-CAT-CAO + 1138 6 707 708 709 # CAO-CAM-CAP + 1139 7 707 708 714 # CAO-CAM-HAT + 1140 8 708 707 713 # CAM-CAO-HAT + 1141 9 708 709 710 # CAM-CAP-CAM + 1142 10 708 709 715 # CAM-CAP-HAT + 1143 11 709 708 714 # CAP-CAM-HAT + 1144 6 711 710 709 # CAO-CAM-CAP + 1145 11 709 710 716 # CAP-CAM-HAT + 1146 10 710 709 715 # CAM-CAP-HAT + 1147 8 710 711 717 # CAM-CAO-HAT + 1148 7 711 710 716 # CAO-CAM-HAT + 1149 4 711 706 712 # CAO-CAT-CTT + 1150 12 718 712 719 # HT-CTT-HT + 1151 12 718 712 720 # HT-CTT-HT + 1152 12 719 712 720 # HT-CTT-HT + 1153 1 721 722 723 # CAT-CAO-CAM + 1154 2 721 722 728 # CAT-CAO-HAT + 1155 3 721 727 733 # CAT-CTT-HT + 1156 3 721 727 734 # CAT-CTT-HT + 1157 3 721 727 735 # CAT-CTT-HT + 1158 1 721 726 725 # CAT-CAO-CAM + 1159 2 721 726 732 # CAT-CAO-HAT + 1160 4 722 721 727 # CAO-CAT-CTT + 1161 5 722 721 726 # CAO-CAT-CAO + 1162 6 722 723 724 # CAO-CAM-CAP + 1163 7 722 723 729 # CAO-CAM-HAT + 1164 8 723 722 728 # CAM-CAO-HAT + 1165 9 723 724 725 # CAM-CAP-CAM + 1166 10 723 724 730 # CAM-CAP-HAT + 1167 11 724 723 729 # CAP-CAM-HAT + 1168 6 726 725 724 # CAO-CAM-CAP + 1169 11 724 725 731 # CAP-CAM-HAT + 1170 10 725 724 730 # CAM-CAP-HAT + 1171 8 725 726 732 # CAM-CAO-HAT + 1172 7 726 725 731 # CAO-CAM-HAT + 1173 4 726 721 727 # CAO-CAT-CTT + 1174 12 733 727 734 # HT-CTT-HT + 1175 12 733 727 735 # HT-CTT-HT + 1176 12 734 727 735 # HT-CTT-HT + 1177 1 736 737 738 # CAT-CAO-CAM + 1178 2 736 737 743 # CAT-CAO-HAT + 1179 3 736 742 748 # CAT-CTT-HT + 1180 3 736 742 749 # CAT-CTT-HT + 1181 3 736 742 750 # CAT-CTT-HT + 1182 1 736 741 740 # CAT-CAO-CAM + 1183 2 736 741 747 # CAT-CAO-HAT + 1184 4 737 736 742 # CAO-CAT-CTT + 1185 5 737 736 741 # CAO-CAT-CAO + 1186 6 737 738 739 # CAO-CAM-CAP + 1187 7 737 738 744 # CAO-CAM-HAT + 1188 8 738 737 743 # CAM-CAO-HAT + 1189 9 738 739 740 # CAM-CAP-CAM + 1190 10 738 739 745 # CAM-CAP-HAT + 1191 11 739 738 744 # CAP-CAM-HAT + 1192 6 741 740 739 # CAO-CAM-CAP + 1193 11 739 740 746 # CAP-CAM-HAT + 1194 10 740 739 745 # CAM-CAP-HAT + 1195 8 740 741 747 # CAM-CAO-HAT + 1196 7 741 740 746 # CAO-CAM-HAT + 1197 4 741 736 742 # CAO-CAT-CTT + 1198 12 748 742 749 # HT-CTT-HT + 1199 12 748 742 750 # HT-CTT-HT + 1200 12 749 742 750 # HT-CTT-HT + 1201 1 751 752 753 # CAT-CAO-CAM + 1202 2 751 752 758 # CAT-CAO-HAT + 1203 3 751 757 763 # CAT-CTT-HT + 1204 3 751 757 764 # CAT-CTT-HT + 1205 3 751 757 765 # CAT-CTT-HT + 1206 1 751 756 755 # CAT-CAO-CAM + 1207 2 751 756 762 # CAT-CAO-HAT + 1208 4 752 751 757 # CAO-CAT-CTT + 1209 5 752 751 756 # CAO-CAT-CAO + 1210 6 752 753 754 # CAO-CAM-CAP + 1211 7 752 753 759 # CAO-CAM-HAT + 1212 8 753 752 758 # CAM-CAO-HAT + 1213 9 753 754 755 # CAM-CAP-CAM + 1214 10 753 754 760 # CAM-CAP-HAT + 1215 11 754 753 759 # CAP-CAM-HAT + 1216 6 756 755 754 # CAO-CAM-CAP + 1217 11 754 755 761 # CAP-CAM-HAT + 1218 10 755 754 760 # CAM-CAP-HAT + 1219 8 755 756 762 # CAM-CAO-HAT + 1220 7 756 755 761 # CAO-CAM-HAT + 1221 4 756 751 757 # CAO-CAT-CTT + 1222 12 763 757 764 # HT-CTT-HT + 1223 12 763 757 765 # HT-CTT-HT + 1224 12 764 757 765 # HT-CTT-HT + 1225 1 766 767 768 # CAT-CAO-CAM + 1226 2 766 767 773 # CAT-CAO-HAT + 1227 3 766 772 778 # CAT-CTT-HT + 1228 3 766 772 779 # CAT-CTT-HT + 1229 3 766 772 780 # CAT-CTT-HT + 1230 1 766 771 770 # CAT-CAO-CAM + 1231 2 766 771 777 # CAT-CAO-HAT + 1232 4 767 766 772 # CAO-CAT-CTT + 1233 5 767 766 771 # CAO-CAT-CAO + 1234 6 767 768 769 # CAO-CAM-CAP + 1235 7 767 768 774 # CAO-CAM-HAT + 1236 8 768 767 773 # CAM-CAO-HAT + 1237 9 768 769 770 # CAM-CAP-CAM + 1238 10 768 769 775 # CAM-CAP-HAT + 1239 11 769 768 774 # CAP-CAM-HAT + 1240 6 771 770 769 # CAO-CAM-CAP + 1241 11 769 770 776 # CAP-CAM-HAT + 1242 10 770 769 775 # CAM-CAP-HAT + 1243 8 770 771 777 # CAM-CAO-HAT + 1244 7 771 770 776 # CAO-CAM-HAT + 1245 4 771 766 772 # CAO-CAT-CTT + 1246 12 778 772 779 # HT-CTT-HT + 1247 12 778 772 780 # HT-CTT-HT + 1248 12 779 772 780 # HT-CTT-HT + 1249 1 781 782 783 # CAT-CAO-CAM + 1250 2 781 782 788 # CAT-CAO-HAT + 1251 3 781 787 793 # CAT-CTT-HT + 1252 3 781 787 794 # CAT-CTT-HT + 1253 3 781 787 795 # CAT-CTT-HT + 1254 1 781 786 785 # CAT-CAO-CAM + 1255 2 781 786 792 # CAT-CAO-HAT + 1256 4 782 781 787 # CAO-CAT-CTT + 1257 5 782 781 786 # CAO-CAT-CAO + 1258 6 782 783 784 # CAO-CAM-CAP + 1259 7 782 783 789 # CAO-CAM-HAT + 1260 8 783 782 788 # CAM-CAO-HAT + 1261 9 783 784 785 # CAM-CAP-CAM + 1262 10 783 784 790 # CAM-CAP-HAT + 1263 11 784 783 789 # CAP-CAM-HAT + 1264 6 786 785 784 # CAO-CAM-CAP + 1265 11 784 785 791 # CAP-CAM-HAT + 1266 10 785 784 790 # CAM-CAP-HAT + 1267 8 785 786 792 # CAM-CAO-HAT + 1268 7 786 785 791 # CAO-CAM-HAT + 1269 4 786 781 787 # CAO-CAT-CTT + 1270 12 793 787 794 # HT-CTT-HT + 1271 12 793 787 795 # HT-CTT-HT + 1272 12 794 787 795 # HT-CTT-HT + 1273 1 796 797 798 # CAT-CAO-CAM + 1274 2 796 797 803 # CAT-CAO-HAT + 1275 3 796 802 808 # CAT-CTT-HT + 1276 3 796 802 809 # CAT-CTT-HT + 1277 3 796 802 810 # CAT-CTT-HT + 1278 1 796 801 800 # CAT-CAO-CAM + 1279 2 796 801 807 # CAT-CAO-HAT + 1280 4 797 796 802 # CAO-CAT-CTT + 1281 5 797 796 801 # CAO-CAT-CAO + 1282 6 797 798 799 # CAO-CAM-CAP + 1283 7 797 798 804 # CAO-CAM-HAT + 1284 8 798 797 803 # CAM-CAO-HAT + 1285 9 798 799 800 # CAM-CAP-CAM + 1286 10 798 799 805 # CAM-CAP-HAT + 1287 11 799 798 804 # CAP-CAM-HAT + 1288 6 801 800 799 # CAO-CAM-CAP + 1289 11 799 800 806 # CAP-CAM-HAT + 1290 10 800 799 805 # CAM-CAP-HAT + 1291 8 800 801 807 # CAM-CAO-HAT + 1292 7 801 800 806 # CAO-CAM-HAT + 1293 4 801 796 802 # CAO-CAT-CTT + 1294 12 808 802 809 # HT-CTT-HT + 1295 12 808 802 810 # HT-CTT-HT + 1296 12 809 802 810 # HT-CTT-HT + 1297 1 811 812 813 # CAT-CAO-CAM + 1298 2 811 812 818 # CAT-CAO-HAT + 1299 3 811 817 823 # CAT-CTT-HT + 1300 3 811 817 824 # CAT-CTT-HT + 1301 3 811 817 825 # CAT-CTT-HT + 1302 1 811 816 815 # CAT-CAO-CAM + 1303 2 811 816 822 # CAT-CAO-HAT + 1304 4 812 811 817 # CAO-CAT-CTT + 1305 5 812 811 816 # CAO-CAT-CAO + 1306 6 812 813 814 # CAO-CAM-CAP + 1307 7 812 813 819 # CAO-CAM-HAT + 1308 8 813 812 818 # CAM-CAO-HAT + 1309 9 813 814 815 # CAM-CAP-CAM + 1310 10 813 814 820 # CAM-CAP-HAT + 1311 11 814 813 819 # CAP-CAM-HAT + 1312 6 816 815 814 # CAO-CAM-CAP + 1313 11 814 815 821 # CAP-CAM-HAT + 1314 10 815 814 820 # CAM-CAP-HAT + 1315 8 815 816 822 # CAM-CAO-HAT + 1316 7 816 815 821 # CAO-CAM-HAT + 1317 4 816 811 817 # CAO-CAT-CTT + 1318 12 823 817 824 # HT-CTT-HT + 1319 12 823 817 825 # HT-CTT-HT + 1320 12 824 817 825 # HT-CTT-HT + 1321 1 826 827 828 # CAT-CAO-CAM + 1322 2 826 827 833 # CAT-CAO-HAT + 1323 3 826 832 838 # CAT-CTT-HT + 1324 3 826 832 839 # CAT-CTT-HT + 1325 3 826 832 840 # CAT-CTT-HT + 1326 1 826 831 830 # CAT-CAO-CAM + 1327 2 826 831 837 # CAT-CAO-HAT + 1328 4 827 826 832 # CAO-CAT-CTT + 1329 5 827 826 831 # CAO-CAT-CAO + 1330 6 827 828 829 # CAO-CAM-CAP + 1331 7 827 828 834 # CAO-CAM-HAT + 1332 8 828 827 833 # CAM-CAO-HAT + 1333 9 828 829 830 # CAM-CAP-CAM + 1334 10 828 829 835 # CAM-CAP-HAT + 1335 11 829 828 834 # CAP-CAM-HAT + 1336 6 831 830 829 # CAO-CAM-CAP + 1337 11 829 830 836 # CAP-CAM-HAT + 1338 10 830 829 835 # CAM-CAP-HAT + 1339 8 830 831 837 # CAM-CAO-HAT + 1340 7 831 830 836 # CAO-CAM-HAT + 1341 4 831 826 832 # CAO-CAT-CTT + 1342 12 838 832 839 # HT-CTT-HT + 1343 12 838 832 840 # HT-CTT-HT + 1344 12 839 832 840 # HT-CTT-HT + 1345 1 841 842 843 # CAT-CAO-CAM + 1346 2 841 842 848 # CAT-CAO-HAT + 1347 3 841 847 853 # CAT-CTT-HT + 1348 3 841 847 854 # CAT-CTT-HT + 1349 3 841 847 855 # CAT-CTT-HT + 1350 1 841 846 845 # CAT-CAO-CAM + 1351 2 841 846 852 # CAT-CAO-HAT + 1352 4 842 841 847 # CAO-CAT-CTT + 1353 5 842 841 846 # CAO-CAT-CAO + 1354 6 842 843 844 # CAO-CAM-CAP + 1355 7 842 843 849 # CAO-CAM-HAT + 1356 8 843 842 848 # CAM-CAO-HAT + 1357 9 843 844 845 # CAM-CAP-CAM + 1358 10 843 844 850 # CAM-CAP-HAT + 1359 11 844 843 849 # CAP-CAM-HAT + 1360 6 846 845 844 # CAO-CAM-CAP + 1361 11 844 845 851 # CAP-CAM-HAT + 1362 10 845 844 850 # CAM-CAP-HAT + 1363 8 845 846 852 # CAM-CAO-HAT + 1364 7 846 845 851 # CAO-CAM-HAT + 1365 4 846 841 847 # CAO-CAT-CTT + 1366 12 853 847 854 # HT-CTT-HT + 1367 12 853 847 855 # HT-CTT-HT + 1368 12 854 847 855 # HT-CTT-HT + 1369 1 856 857 858 # CAT-CAO-CAM + 1370 2 856 857 863 # CAT-CAO-HAT + 1371 3 856 862 868 # CAT-CTT-HT + 1372 3 856 862 869 # CAT-CTT-HT + 1373 3 856 862 870 # CAT-CTT-HT + 1374 1 856 861 860 # CAT-CAO-CAM + 1375 2 856 861 867 # CAT-CAO-HAT + 1376 4 857 856 862 # CAO-CAT-CTT + 1377 5 857 856 861 # CAO-CAT-CAO + 1378 6 857 858 859 # CAO-CAM-CAP + 1379 7 857 858 864 # CAO-CAM-HAT + 1380 8 858 857 863 # CAM-CAO-HAT + 1381 9 858 859 860 # CAM-CAP-CAM + 1382 10 858 859 865 # CAM-CAP-HAT + 1383 11 859 858 864 # CAP-CAM-HAT + 1384 6 861 860 859 # CAO-CAM-CAP + 1385 11 859 860 866 # CAP-CAM-HAT + 1386 10 860 859 865 # CAM-CAP-HAT + 1387 8 860 861 867 # CAM-CAO-HAT + 1388 7 861 860 866 # CAO-CAM-HAT + 1389 4 861 856 862 # CAO-CAT-CTT + 1390 12 868 862 869 # HT-CTT-HT + 1391 12 868 862 870 # HT-CTT-HT + 1392 12 869 862 870 # HT-CTT-HT + 1393 1 871 872 873 # CAT-CAO-CAM + 1394 2 871 872 878 # CAT-CAO-HAT + 1395 3 871 877 883 # CAT-CTT-HT + 1396 3 871 877 884 # CAT-CTT-HT + 1397 3 871 877 885 # CAT-CTT-HT + 1398 1 871 876 875 # CAT-CAO-CAM + 1399 2 871 876 882 # CAT-CAO-HAT + 1400 4 872 871 877 # CAO-CAT-CTT + 1401 5 872 871 876 # CAO-CAT-CAO + 1402 6 872 873 874 # CAO-CAM-CAP + 1403 7 872 873 879 # CAO-CAM-HAT + 1404 8 873 872 878 # CAM-CAO-HAT + 1405 9 873 874 875 # CAM-CAP-CAM + 1406 10 873 874 880 # CAM-CAP-HAT + 1407 11 874 873 879 # CAP-CAM-HAT + 1408 6 876 875 874 # CAO-CAM-CAP + 1409 11 874 875 881 # CAP-CAM-HAT + 1410 10 875 874 880 # CAM-CAP-HAT + 1411 8 875 876 882 # CAM-CAO-HAT + 1412 7 876 875 881 # CAO-CAM-HAT + 1413 4 876 871 877 # CAO-CAT-CTT + 1414 12 883 877 884 # HT-CTT-HT + 1415 12 883 877 885 # HT-CTT-HT + 1416 12 884 877 885 # HT-CTT-HT + 1417 1 886 887 888 # CAT-CAO-CAM + 1418 2 886 887 893 # CAT-CAO-HAT + 1419 3 886 892 898 # CAT-CTT-HT + 1420 3 886 892 899 # CAT-CTT-HT + 1421 3 886 892 900 # CAT-CTT-HT + 1422 1 886 891 890 # CAT-CAO-CAM + 1423 2 886 891 897 # CAT-CAO-HAT + 1424 4 887 886 892 # CAO-CAT-CTT + 1425 5 887 886 891 # CAO-CAT-CAO + 1426 6 887 888 889 # CAO-CAM-CAP + 1427 7 887 888 894 # CAO-CAM-HAT + 1428 8 888 887 893 # CAM-CAO-HAT + 1429 9 888 889 890 # CAM-CAP-CAM + 1430 10 888 889 895 # CAM-CAP-HAT + 1431 11 889 888 894 # CAP-CAM-HAT + 1432 6 891 890 889 # CAO-CAM-CAP + 1433 11 889 890 896 # CAP-CAM-HAT + 1434 10 890 889 895 # CAM-CAP-HAT + 1435 8 890 891 897 # CAM-CAO-HAT + 1436 7 891 890 896 # CAO-CAM-HAT + 1437 4 891 886 892 # CAO-CAT-CTT + 1438 12 898 892 899 # HT-CTT-HT + 1439 12 898 892 900 # HT-CTT-HT + 1440 12 899 892 900 # HT-CTT-HT + 1441 1 901 902 903 # CAT-CAO-CAM + 1442 2 901 902 908 # CAT-CAO-HAT + 1443 3 901 907 913 # CAT-CTT-HT + 1444 3 901 907 914 # CAT-CTT-HT + 1445 3 901 907 915 # CAT-CTT-HT + 1446 1 901 906 905 # CAT-CAO-CAM + 1447 2 901 906 912 # CAT-CAO-HAT + 1448 4 902 901 907 # CAO-CAT-CTT + 1449 5 902 901 906 # CAO-CAT-CAO + 1450 6 902 903 904 # CAO-CAM-CAP + 1451 7 902 903 909 # CAO-CAM-HAT + 1452 8 903 902 908 # CAM-CAO-HAT + 1453 9 903 904 905 # CAM-CAP-CAM + 1454 10 903 904 910 # CAM-CAP-HAT + 1455 11 904 903 909 # CAP-CAM-HAT + 1456 6 906 905 904 # CAO-CAM-CAP + 1457 11 904 905 911 # CAP-CAM-HAT + 1458 10 905 904 910 # CAM-CAP-HAT + 1459 8 905 906 912 # CAM-CAO-HAT + 1460 7 906 905 911 # CAO-CAM-HAT + 1461 4 906 901 907 # CAO-CAT-CTT + 1462 12 913 907 914 # HT-CTT-HT + 1463 12 913 907 915 # HT-CTT-HT + 1464 12 914 907 915 # HT-CTT-HT + 1465 1 916 917 918 # CAT-CAO-CAM + 1466 2 916 917 923 # CAT-CAO-HAT + 1467 3 916 922 928 # CAT-CTT-HT + 1468 3 916 922 929 # CAT-CTT-HT + 1469 3 916 922 930 # CAT-CTT-HT + 1470 1 916 921 920 # CAT-CAO-CAM + 1471 2 916 921 927 # CAT-CAO-HAT + 1472 4 917 916 922 # CAO-CAT-CTT + 1473 5 917 916 921 # CAO-CAT-CAO + 1474 6 917 918 919 # CAO-CAM-CAP + 1475 7 917 918 924 # CAO-CAM-HAT + 1476 8 918 917 923 # CAM-CAO-HAT + 1477 9 918 919 920 # CAM-CAP-CAM + 1478 10 918 919 925 # CAM-CAP-HAT + 1479 11 919 918 924 # CAP-CAM-HAT + 1480 6 921 920 919 # CAO-CAM-CAP + 1481 11 919 920 926 # CAP-CAM-HAT + 1482 10 920 919 925 # CAM-CAP-HAT + 1483 8 920 921 927 # CAM-CAO-HAT + 1484 7 921 920 926 # CAO-CAM-HAT + 1485 4 921 916 922 # CAO-CAT-CTT + 1486 12 928 922 929 # HT-CTT-HT + 1487 12 928 922 930 # HT-CTT-HT + 1488 12 929 922 930 # HT-CTT-HT + 1489 1 931 932 933 # CAT-CAO-CAM + 1490 2 931 932 938 # CAT-CAO-HAT + 1491 3 931 937 943 # CAT-CTT-HT + 1492 3 931 937 944 # CAT-CTT-HT + 1493 3 931 937 945 # CAT-CTT-HT + 1494 1 931 936 935 # CAT-CAO-CAM + 1495 2 931 936 942 # CAT-CAO-HAT + 1496 4 932 931 937 # CAO-CAT-CTT + 1497 5 932 931 936 # CAO-CAT-CAO + 1498 6 932 933 934 # CAO-CAM-CAP + 1499 7 932 933 939 # CAO-CAM-HAT + 1500 8 933 932 938 # CAM-CAO-HAT + 1501 9 933 934 935 # CAM-CAP-CAM + 1502 10 933 934 940 # CAM-CAP-HAT + 1503 11 934 933 939 # CAP-CAM-HAT + 1504 6 936 935 934 # CAO-CAM-CAP + 1505 11 934 935 941 # CAP-CAM-HAT + 1506 10 935 934 940 # CAM-CAP-HAT + 1507 8 935 936 942 # CAM-CAO-HAT + 1508 7 936 935 941 # CAO-CAM-HAT + 1509 4 936 931 937 # CAO-CAT-CTT + 1510 12 943 937 944 # HT-CTT-HT + 1511 12 943 937 945 # HT-CTT-HT + 1512 12 944 937 945 # HT-CTT-HT + 1513 1 946 947 948 # CAT-CAO-CAM + 1514 2 946 947 953 # CAT-CAO-HAT + 1515 3 946 952 958 # CAT-CTT-HT + 1516 3 946 952 959 # CAT-CTT-HT + 1517 3 946 952 960 # CAT-CTT-HT + 1518 1 946 951 950 # CAT-CAO-CAM + 1519 2 946 951 957 # CAT-CAO-HAT + 1520 4 947 946 952 # CAO-CAT-CTT + 1521 5 947 946 951 # CAO-CAT-CAO + 1522 6 947 948 949 # CAO-CAM-CAP + 1523 7 947 948 954 # CAO-CAM-HAT + 1524 8 948 947 953 # CAM-CAO-HAT + 1525 9 948 949 950 # CAM-CAP-CAM + 1526 10 948 949 955 # CAM-CAP-HAT + 1527 11 949 948 954 # CAP-CAM-HAT + 1528 6 951 950 949 # CAO-CAM-CAP + 1529 11 949 950 956 # CAP-CAM-HAT + 1530 10 950 949 955 # CAM-CAP-HAT + 1531 8 950 951 957 # CAM-CAO-HAT + 1532 7 951 950 956 # CAO-CAM-HAT + 1533 4 951 946 952 # CAO-CAT-CTT + 1534 12 958 952 959 # HT-CTT-HT + 1535 12 958 952 960 # HT-CTT-HT + 1536 12 959 952 960 # HT-CTT-HT + 1537 1 961 962 963 # CAT-CAO-CAM + 1538 2 961 962 968 # CAT-CAO-HAT + 1539 3 961 967 973 # CAT-CTT-HT + 1540 3 961 967 974 # CAT-CTT-HT + 1541 3 961 967 975 # CAT-CTT-HT + 1542 1 961 966 965 # CAT-CAO-CAM + 1543 2 961 966 972 # CAT-CAO-HAT + 1544 4 962 961 967 # CAO-CAT-CTT + 1545 5 962 961 966 # CAO-CAT-CAO + 1546 6 962 963 964 # CAO-CAM-CAP + 1547 7 962 963 969 # CAO-CAM-HAT + 1548 8 963 962 968 # CAM-CAO-HAT + 1549 9 963 964 965 # CAM-CAP-CAM + 1550 10 963 964 970 # CAM-CAP-HAT + 1551 11 964 963 969 # CAP-CAM-HAT + 1552 6 966 965 964 # CAO-CAM-CAP + 1553 11 964 965 971 # CAP-CAM-HAT + 1554 10 965 964 970 # CAM-CAP-HAT + 1555 8 965 966 972 # CAM-CAO-HAT + 1556 7 966 965 971 # CAO-CAM-HAT + 1557 4 966 961 967 # CAO-CAT-CTT + 1558 12 973 967 974 # HT-CTT-HT + 1559 12 973 967 975 # HT-CTT-HT + 1560 12 974 967 975 # HT-CTT-HT + 1561 1 976 977 978 # CAT-CAO-CAM + 1562 2 976 977 983 # CAT-CAO-HAT + 1563 3 976 982 988 # CAT-CTT-HT + 1564 3 976 982 989 # CAT-CTT-HT + 1565 3 976 982 990 # CAT-CTT-HT + 1566 1 976 981 980 # CAT-CAO-CAM + 1567 2 976 981 987 # CAT-CAO-HAT + 1568 4 977 976 982 # CAO-CAT-CTT + 1569 5 977 976 981 # CAO-CAT-CAO + 1570 6 977 978 979 # CAO-CAM-CAP + 1571 7 977 978 984 # CAO-CAM-HAT + 1572 8 978 977 983 # CAM-CAO-HAT + 1573 9 978 979 980 # CAM-CAP-CAM + 1574 10 978 979 985 # CAM-CAP-HAT + 1575 11 979 978 984 # CAP-CAM-HAT + 1576 6 981 980 979 # CAO-CAM-CAP + 1577 11 979 980 986 # CAP-CAM-HAT + 1578 10 980 979 985 # CAM-CAP-HAT + 1579 8 980 981 987 # CAM-CAO-HAT + 1580 7 981 980 986 # CAO-CAM-HAT + 1581 4 981 976 982 # CAO-CAT-CTT + 1582 12 988 982 989 # HT-CTT-HT + 1583 12 988 982 990 # HT-CTT-HT + 1584 12 989 982 990 # HT-CTT-HT + 1585 1 991 992 993 # CAT-CAO-CAM + 1586 2 991 992 998 # CAT-CAO-HAT + 1587 3 991 997 1003 # CAT-CTT-HT + 1588 3 991 997 1004 # CAT-CTT-HT + 1589 3 991 997 1005 # CAT-CTT-HT + 1590 1 991 996 995 # CAT-CAO-CAM + 1591 2 991 996 1002 # CAT-CAO-HAT + 1592 4 992 991 997 # CAO-CAT-CTT + 1593 5 992 991 996 # CAO-CAT-CAO + 1594 6 992 993 994 # CAO-CAM-CAP + 1595 7 992 993 999 # CAO-CAM-HAT + 1596 8 993 992 998 # CAM-CAO-HAT + 1597 9 993 994 995 # CAM-CAP-CAM + 1598 10 993 994 1000 # CAM-CAP-HAT + 1599 11 994 993 999 # CAP-CAM-HAT + 1600 6 996 995 994 # CAO-CAM-CAP + 1601 11 994 995 1001 # CAP-CAM-HAT + 1602 10 995 994 1000 # CAM-CAP-HAT + 1603 8 995 996 1002 # CAM-CAO-HAT + 1604 7 996 995 1001 # CAO-CAM-HAT + 1605 4 996 991 997 # CAO-CAT-CTT + 1606 12 1003 997 1004 # HT-CTT-HT + 1607 12 1003 997 1005 # HT-CTT-HT + 1608 12 1004 997 1005 # HT-CTT-HT + 1609 1 1006 1007 1008 # CAT-CAO-CAM + 1610 2 1006 1007 1013 # CAT-CAO-HAT + 1611 3 1006 1012 1018 # CAT-CTT-HT + 1612 3 1006 1012 1019 # CAT-CTT-HT + 1613 3 1006 1012 1020 # CAT-CTT-HT + 1614 1 1006 1011 1010 # CAT-CAO-CAM + 1615 2 1006 1011 1017 # CAT-CAO-HAT + 1616 4 1007 1006 1012 # CAO-CAT-CTT + 1617 5 1007 1006 1011 # CAO-CAT-CAO + 1618 6 1007 1008 1009 # CAO-CAM-CAP + 1619 7 1007 1008 1014 # CAO-CAM-HAT + 1620 8 1008 1007 1013 # CAM-CAO-HAT + 1621 9 1008 1009 1010 # CAM-CAP-CAM + 1622 10 1008 1009 1015 # CAM-CAP-HAT + 1623 11 1009 1008 1014 # CAP-CAM-HAT + 1624 6 1011 1010 1009 # CAO-CAM-CAP + 1625 11 1009 1010 1016 # CAP-CAM-HAT + 1626 10 1010 1009 1015 # CAM-CAP-HAT + 1627 8 1010 1011 1017 # CAM-CAO-HAT + 1628 7 1011 1010 1016 # CAO-CAM-HAT + 1629 4 1011 1006 1012 # CAO-CAT-CTT + 1630 12 1018 1012 1019 # HT-CTT-HT + 1631 12 1018 1012 1020 # HT-CTT-HT + 1632 12 1019 1012 1020 # HT-CTT-HT + 1633 1 1021 1022 1023 # CAT-CAO-CAM + 1634 2 1021 1022 1028 # CAT-CAO-HAT + 1635 3 1021 1027 1033 # CAT-CTT-HT + 1636 3 1021 1027 1034 # CAT-CTT-HT + 1637 3 1021 1027 1035 # CAT-CTT-HT + 1638 1 1021 1026 1025 # CAT-CAO-CAM + 1639 2 1021 1026 1032 # CAT-CAO-HAT + 1640 4 1022 1021 1027 # CAO-CAT-CTT + 1641 5 1022 1021 1026 # CAO-CAT-CAO + 1642 6 1022 1023 1024 # CAO-CAM-CAP + 1643 7 1022 1023 1029 # CAO-CAM-HAT + 1644 8 1023 1022 1028 # CAM-CAO-HAT + 1645 9 1023 1024 1025 # CAM-CAP-CAM + 1646 10 1023 1024 1030 # CAM-CAP-HAT + 1647 11 1024 1023 1029 # CAP-CAM-HAT + 1648 6 1026 1025 1024 # CAO-CAM-CAP + 1649 11 1024 1025 1031 # CAP-CAM-HAT + 1650 10 1025 1024 1030 # CAM-CAP-HAT + 1651 8 1025 1026 1032 # CAM-CAO-HAT + 1652 7 1026 1025 1031 # CAO-CAM-HAT + 1653 4 1026 1021 1027 # CAO-CAT-CTT + 1654 12 1033 1027 1034 # HT-CTT-HT + 1655 12 1033 1027 1035 # HT-CTT-HT + 1656 12 1034 1027 1035 # HT-CTT-HT + 1657 1 1036 1037 1038 # CAT-CAO-CAM + 1658 2 1036 1037 1043 # CAT-CAO-HAT + 1659 3 1036 1042 1048 # CAT-CTT-HT + 1660 3 1036 1042 1049 # CAT-CTT-HT + 1661 3 1036 1042 1050 # CAT-CTT-HT + 1662 1 1036 1041 1040 # CAT-CAO-CAM + 1663 2 1036 1041 1047 # CAT-CAO-HAT + 1664 4 1037 1036 1042 # CAO-CAT-CTT + 1665 5 1037 1036 1041 # CAO-CAT-CAO + 1666 6 1037 1038 1039 # CAO-CAM-CAP + 1667 7 1037 1038 1044 # CAO-CAM-HAT + 1668 8 1038 1037 1043 # CAM-CAO-HAT + 1669 9 1038 1039 1040 # CAM-CAP-CAM + 1670 10 1038 1039 1045 # CAM-CAP-HAT + 1671 11 1039 1038 1044 # CAP-CAM-HAT + 1672 6 1041 1040 1039 # CAO-CAM-CAP + 1673 11 1039 1040 1046 # CAP-CAM-HAT + 1674 10 1040 1039 1045 # CAM-CAP-HAT + 1675 8 1040 1041 1047 # CAM-CAO-HAT + 1676 7 1041 1040 1046 # CAO-CAM-HAT + 1677 4 1041 1036 1042 # CAO-CAT-CTT + 1678 12 1048 1042 1049 # HT-CTT-HT + 1679 12 1048 1042 1050 # HT-CTT-HT + 1680 12 1049 1042 1050 # HT-CTT-HT + 1681 1 1051 1052 1053 # CAT-CAO-CAM + 1682 2 1051 1052 1058 # CAT-CAO-HAT + 1683 3 1051 1057 1063 # CAT-CTT-HT + 1684 3 1051 1057 1064 # CAT-CTT-HT + 1685 3 1051 1057 1065 # CAT-CTT-HT + 1686 1 1051 1056 1055 # CAT-CAO-CAM + 1687 2 1051 1056 1062 # CAT-CAO-HAT + 1688 4 1052 1051 1057 # CAO-CAT-CTT + 1689 5 1052 1051 1056 # CAO-CAT-CAO + 1690 6 1052 1053 1054 # CAO-CAM-CAP + 1691 7 1052 1053 1059 # CAO-CAM-HAT + 1692 8 1053 1052 1058 # CAM-CAO-HAT + 1693 9 1053 1054 1055 # CAM-CAP-CAM + 1694 10 1053 1054 1060 # CAM-CAP-HAT + 1695 11 1054 1053 1059 # CAP-CAM-HAT + 1696 6 1056 1055 1054 # CAO-CAM-CAP + 1697 11 1054 1055 1061 # CAP-CAM-HAT + 1698 10 1055 1054 1060 # CAM-CAP-HAT + 1699 8 1055 1056 1062 # CAM-CAO-HAT + 1700 7 1056 1055 1061 # CAO-CAM-HAT + 1701 4 1056 1051 1057 # CAO-CAT-CTT + 1702 12 1063 1057 1064 # HT-CTT-HT + 1703 12 1063 1057 1065 # HT-CTT-HT + 1704 12 1064 1057 1065 # HT-CTT-HT + 1705 1 1066 1067 1068 # CAT-CAO-CAM + 1706 2 1066 1067 1073 # CAT-CAO-HAT + 1707 3 1066 1072 1078 # CAT-CTT-HT + 1708 3 1066 1072 1079 # CAT-CTT-HT + 1709 3 1066 1072 1080 # CAT-CTT-HT + 1710 1 1066 1071 1070 # CAT-CAO-CAM + 1711 2 1066 1071 1077 # CAT-CAO-HAT + 1712 4 1067 1066 1072 # CAO-CAT-CTT + 1713 5 1067 1066 1071 # CAO-CAT-CAO + 1714 6 1067 1068 1069 # CAO-CAM-CAP + 1715 7 1067 1068 1074 # CAO-CAM-HAT + 1716 8 1068 1067 1073 # CAM-CAO-HAT + 1717 9 1068 1069 1070 # CAM-CAP-CAM + 1718 10 1068 1069 1075 # CAM-CAP-HAT + 1719 11 1069 1068 1074 # CAP-CAM-HAT + 1720 6 1071 1070 1069 # CAO-CAM-CAP + 1721 11 1069 1070 1076 # CAP-CAM-HAT + 1722 10 1070 1069 1075 # CAM-CAP-HAT + 1723 8 1070 1071 1077 # CAM-CAO-HAT + 1724 7 1071 1070 1076 # CAO-CAM-HAT + 1725 4 1071 1066 1072 # CAO-CAT-CTT + 1726 12 1078 1072 1079 # HT-CTT-HT + 1727 12 1078 1072 1080 # HT-CTT-HT + 1728 12 1079 1072 1080 # HT-CTT-HT + 1729 1 1081 1082 1083 # CAT-CAO-CAM + 1730 2 1081 1082 1088 # CAT-CAO-HAT + 1731 3 1081 1087 1093 # CAT-CTT-HT + 1732 3 1081 1087 1094 # CAT-CTT-HT + 1733 3 1081 1087 1095 # CAT-CTT-HT + 1734 1 1081 1086 1085 # CAT-CAO-CAM + 1735 2 1081 1086 1092 # CAT-CAO-HAT + 1736 4 1082 1081 1087 # CAO-CAT-CTT + 1737 5 1082 1081 1086 # CAO-CAT-CAO + 1738 6 1082 1083 1084 # CAO-CAM-CAP + 1739 7 1082 1083 1089 # CAO-CAM-HAT + 1740 8 1083 1082 1088 # CAM-CAO-HAT + 1741 9 1083 1084 1085 # CAM-CAP-CAM + 1742 10 1083 1084 1090 # CAM-CAP-HAT + 1743 11 1084 1083 1089 # CAP-CAM-HAT + 1744 6 1086 1085 1084 # CAO-CAM-CAP + 1745 11 1084 1085 1091 # CAP-CAM-HAT + 1746 10 1085 1084 1090 # CAM-CAP-HAT + 1747 8 1085 1086 1092 # CAM-CAO-HAT + 1748 7 1086 1085 1091 # CAO-CAM-HAT + 1749 4 1086 1081 1087 # CAO-CAT-CTT + 1750 12 1093 1087 1094 # HT-CTT-HT + 1751 12 1093 1087 1095 # HT-CTT-HT + 1752 12 1094 1087 1095 # HT-CTT-HT + 1753 1 1096 1097 1098 # CAT-CAO-CAM + 1754 2 1096 1097 1103 # CAT-CAO-HAT + 1755 3 1096 1102 1108 # CAT-CTT-HT + 1756 3 1096 1102 1109 # CAT-CTT-HT + 1757 3 1096 1102 1110 # CAT-CTT-HT + 1758 1 1096 1101 1100 # CAT-CAO-CAM + 1759 2 1096 1101 1107 # CAT-CAO-HAT + 1760 4 1097 1096 1102 # CAO-CAT-CTT + 1761 5 1097 1096 1101 # CAO-CAT-CAO + 1762 6 1097 1098 1099 # CAO-CAM-CAP + 1763 7 1097 1098 1104 # CAO-CAM-HAT + 1764 8 1098 1097 1103 # CAM-CAO-HAT + 1765 9 1098 1099 1100 # CAM-CAP-CAM + 1766 10 1098 1099 1105 # CAM-CAP-HAT + 1767 11 1099 1098 1104 # CAP-CAM-HAT + 1768 6 1101 1100 1099 # CAO-CAM-CAP + 1769 11 1099 1100 1106 # CAP-CAM-HAT + 1770 10 1100 1099 1105 # CAM-CAP-HAT + 1771 8 1100 1101 1107 # CAM-CAO-HAT + 1772 7 1101 1100 1106 # CAO-CAM-HAT + 1773 4 1101 1096 1102 # CAO-CAT-CTT + 1774 12 1108 1102 1109 # HT-CTT-HT + 1775 12 1108 1102 1110 # HT-CTT-HT + 1776 12 1109 1102 1110 # HT-CTT-HT + 1777 1 1111 1112 1113 # CAT-CAO-CAM + 1778 2 1111 1112 1118 # CAT-CAO-HAT + 1779 3 1111 1117 1123 # CAT-CTT-HT + 1780 3 1111 1117 1124 # CAT-CTT-HT + 1781 3 1111 1117 1125 # CAT-CTT-HT + 1782 1 1111 1116 1115 # CAT-CAO-CAM + 1783 2 1111 1116 1122 # CAT-CAO-HAT + 1784 4 1112 1111 1117 # CAO-CAT-CTT + 1785 5 1112 1111 1116 # CAO-CAT-CAO + 1786 6 1112 1113 1114 # CAO-CAM-CAP + 1787 7 1112 1113 1119 # CAO-CAM-HAT + 1788 8 1113 1112 1118 # CAM-CAO-HAT + 1789 9 1113 1114 1115 # CAM-CAP-CAM + 1790 10 1113 1114 1120 # CAM-CAP-HAT + 1791 11 1114 1113 1119 # CAP-CAM-HAT + 1792 6 1116 1115 1114 # CAO-CAM-CAP + 1793 11 1114 1115 1121 # CAP-CAM-HAT + 1794 10 1115 1114 1120 # CAM-CAP-HAT + 1795 8 1115 1116 1122 # CAM-CAO-HAT + 1796 7 1116 1115 1121 # CAO-CAM-HAT + 1797 4 1116 1111 1117 # CAO-CAT-CTT + 1798 12 1123 1117 1124 # HT-CTT-HT + 1799 12 1123 1117 1125 # HT-CTT-HT + 1800 12 1124 1117 1125 # HT-CTT-HT + 1801 1 1126 1127 1128 # CAT-CAO-CAM + 1802 2 1126 1127 1133 # CAT-CAO-HAT + 1803 3 1126 1132 1138 # CAT-CTT-HT + 1804 3 1126 1132 1139 # CAT-CTT-HT + 1805 3 1126 1132 1140 # CAT-CTT-HT + 1806 1 1126 1131 1130 # CAT-CAO-CAM + 1807 2 1126 1131 1137 # CAT-CAO-HAT + 1808 4 1127 1126 1132 # CAO-CAT-CTT + 1809 5 1127 1126 1131 # CAO-CAT-CAO + 1810 6 1127 1128 1129 # CAO-CAM-CAP + 1811 7 1127 1128 1134 # CAO-CAM-HAT + 1812 8 1128 1127 1133 # CAM-CAO-HAT + 1813 9 1128 1129 1130 # CAM-CAP-CAM + 1814 10 1128 1129 1135 # CAM-CAP-HAT + 1815 11 1129 1128 1134 # CAP-CAM-HAT + 1816 6 1131 1130 1129 # CAO-CAM-CAP + 1817 11 1129 1130 1136 # CAP-CAM-HAT + 1818 10 1130 1129 1135 # CAM-CAP-HAT + 1819 8 1130 1131 1137 # CAM-CAO-HAT + 1820 7 1131 1130 1136 # CAO-CAM-HAT + 1821 4 1131 1126 1132 # CAO-CAT-CTT + 1822 12 1138 1132 1139 # HT-CTT-HT + 1823 12 1138 1132 1140 # HT-CTT-HT + 1824 12 1139 1132 1140 # HT-CTT-HT + 1825 1 1141 1142 1143 # CAT-CAO-CAM + 1826 2 1141 1142 1148 # CAT-CAO-HAT + 1827 3 1141 1147 1153 # CAT-CTT-HT + 1828 3 1141 1147 1154 # CAT-CTT-HT + 1829 3 1141 1147 1155 # CAT-CTT-HT + 1830 1 1141 1146 1145 # CAT-CAO-CAM + 1831 2 1141 1146 1152 # CAT-CAO-HAT + 1832 4 1142 1141 1147 # CAO-CAT-CTT + 1833 5 1142 1141 1146 # CAO-CAT-CAO + 1834 6 1142 1143 1144 # CAO-CAM-CAP + 1835 7 1142 1143 1149 # CAO-CAM-HAT + 1836 8 1143 1142 1148 # CAM-CAO-HAT + 1837 9 1143 1144 1145 # CAM-CAP-CAM + 1838 10 1143 1144 1150 # CAM-CAP-HAT + 1839 11 1144 1143 1149 # CAP-CAM-HAT + 1840 6 1146 1145 1144 # CAO-CAM-CAP + 1841 11 1144 1145 1151 # CAP-CAM-HAT + 1842 10 1145 1144 1150 # CAM-CAP-HAT + 1843 8 1145 1146 1152 # CAM-CAO-HAT + 1844 7 1146 1145 1151 # CAO-CAM-HAT + 1845 4 1146 1141 1147 # CAO-CAT-CTT + 1846 12 1153 1147 1154 # HT-CTT-HT + 1847 12 1153 1147 1155 # HT-CTT-HT + 1848 12 1154 1147 1155 # HT-CTT-HT + 1849 1 1156 1157 1158 # CAT-CAO-CAM + 1850 2 1156 1157 1163 # CAT-CAO-HAT + 1851 3 1156 1162 1168 # CAT-CTT-HT + 1852 3 1156 1162 1169 # CAT-CTT-HT + 1853 3 1156 1162 1170 # CAT-CTT-HT + 1854 1 1156 1161 1160 # CAT-CAO-CAM + 1855 2 1156 1161 1167 # CAT-CAO-HAT + 1856 4 1157 1156 1162 # CAO-CAT-CTT + 1857 5 1157 1156 1161 # CAO-CAT-CAO + 1858 6 1157 1158 1159 # CAO-CAM-CAP + 1859 7 1157 1158 1164 # CAO-CAM-HAT + 1860 8 1158 1157 1163 # CAM-CAO-HAT + 1861 9 1158 1159 1160 # CAM-CAP-CAM + 1862 10 1158 1159 1165 # CAM-CAP-HAT + 1863 11 1159 1158 1164 # CAP-CAM-HAT + 1864 6 1161 1160 1159 # CAO-CAM-CAP + 1865 11 1159 1160 1166 # CAP-CAM-HAT + 1866 10 1160 1159 1165 # CAM-CAP-HAT + 1867 8 1160 1161 1167 # CAM-CAO-HAT + 1868 7 1161 1160 1166 # CAO-CAM-HAT + 1869 4 1161 1156 1162 # CAO-CAT-CTT + 1870 12 1168 1162 1169 # HT-CTT-HT + 1871 12 1168 1162 1170 # HT-CTT-HT + 1872 12 1169 1162 1170 # HT-CTT-HT + 1873 1 1171 1172 1173 # CAT-CAO-CAM + 1874 2 1171 1172 1178 # CAT-CAO-HAT + 1875 3 1171 1177 1183 # CAT-CTT-HT + 1876 3 1171 1177 1184 # CAT-CTT-HT + 1877 3 1171 1177 1185 # CAT-CTT-HT + 1878 1 1171 1176 1175 # CAT-CAO-CAM + 1879 2 1171 1176 1182 # CAT-CAO-HAT + 1880 4 1172 1171 1177 # CAO-CAT-CTT + 1881 5 1172 1171 1176 # CAO-CAT-CAO + 1882 6 1172 1173 1174 # CAO-CAM-CAP + 1883 7 1172 1173 1179 # CAO-CAM-HAT + 1884 8 1173 1172 1178 # CAM-CAO-HAT + 1885 9 1173 1174 1175 # CAM-CAP-CAM + 1886 10 1173 1174 1180 # CAM-CAP-HAT + 1887 11 1174 1173 1179 # CAP-CAM-HAT + 1888 6 1176 1175 1174 # CAO-CAM-CAP + 1889 11 1174 1175 1181 # CAP-CAM-HAT + 1890 10 1175 1174 1180 # CAM-CAP-HAT + 1891 8 1175 1176 1182 # CAM-CAO-HAT + 1892 7 1176 1175 1181 # CAO-CAM-HAT + 1893 4 1176 1171 1177 # CAO-CAT-CTT + 1894 12 1183 1177 1184 # HT-CTT-HT + 1895 12 1183 1177 1185 # HT-CTT-HT + 1896 12 1184 1177 1185 # HT-CTT-HT + 1897 1 1186 1187 1188 # CAT-CAO-CAM + 1898 2 1186 1187 1193 # CAT-CAO-HAT + 1899 3 1186 1192 1198 # CAT-CTT-HT + 1900 3 1186 1192 1199 # CAT-CTT-HT + 1901 3 1186 1192 1200 # CAT-CTT-HT + 1902 1 1186 1191 1190 # CAT-CAO-CAM + 1903 2 1186 1191 1197 # CAT-CAO-HAT + 1904 4 1187 1186 1192 # CAO-CAT-CTT + 1905 5 1187 1186 1191 # CAO-CAT-CAO + 1906 6 1187 1188 1189 # CAO-CAM-CAP + 1907 7 1187 1188 1194 # CAO-CAM-HAT + 1908 8 1188 1187 1193 # CAM-CAO-HAT + 1909 9 1188 1189 1190 # CAM-CAP-CAM + 1910 10 1188 1189 1195 # CAM-CAP-HAT + 1911 11 1189 1188 1194 # CAP-CAM-HAT + 1912 6 1191 1190 1189 # CAO-CAM-CAP + 1913 11 1189 1190 1196 # CAP-CAM-HAT + 1914 10 1190 1189 1195 # CAM-CAP-HAT + 1915 8 1190 1191 1197 # CAM-CAO-HAT + 1916 7 1191 1190 1196 # CAO-CAM-HAT + 1917 4 1191 1186 1192 # CAO-CAT-CTT + 1918 12 1198 1192 1199 # HT-CTT-HT + 1919 12 1198 1192 1200 # HT-CTT-HT + 1920 12 1199 1192 1200 # HT-CTT-HT + 1921 1 1201 1202 1203 # CAT-CAO-CAM + 1922 2 1201 1202 1208 # CAT-CAO-HAT + 1923 3 1201 1207 1213 # CAT-CTT-HT + 1924 3 1201 1207 1214 # CAT-CTT-HT + 1925 3 1201 1207 1215 # CAT-CTT-HT + 1926 1 1201 1206 1205 # CAT-CAO-CAM + 1927 2 1201 1206 1212 # CAT-CAO-HAT + 1928 4 1202 1201 1207 # CAO-CAT-CTT + 1929 5 1202 1201 1206 # CAO-CAT-CAO + 1930 6 1202 1203 1204 # CAO-CAM-CAP + 1931 7 1202 1203 1209 # CAO-CAM-HAT + 1932 8 1203 1202 1208 # CAM-CAO-HAT + 1933 9 1203 1204 1205 # CAM-CAP-CAM + 1934 10 1203 1204 1210 # CAM-CAP-HAT + 1935 11 1204 1203 1209 # CAP-CAM-HAT + 1936 6 1206 1205 1204 # CAO-CAM-CAP + 1937 11 1204 1205 1211 # CAP-CAM-HAT + 1938 10 1205 1204 1210 # CAM-CAP-HAT + 1939 8 1205 1206 1212 # CAM-CAO-HAT + 1940 7 1206 1205 1211 # CAO-CAM-HAT + 1941 4 1206 1201 1207 # CAO-CAT-CTT + 1942 12 1213 1207 1214 # HT-CTT-HT + 1943 12 1213 1207 1215 # HT-CTT-HT + 1944 12 1214 1207 1215 # HT-CTT-HT + 1945 1 1216 1217 1218 # CAT-CAO-CAM + 1946 2 1216 1217 1223 # CAT-CAO-HAT + 1947 3 1216 1222 1228 # CAT-CTT-HT + 1948 3 1216 1222 1229 # CAT-CTT-HT + 1949 3 1216 1222 1230 # CAT-CTT-HT + 1950 1 1216 1221 1220 # CAT-CAO-CAM + 1951 2 1216 1221 1227 # CAT-CAO-HAT + 1952 4 1217 1216 1222 # CAO-CAT-CTT + 1953 5 1217 1216 1221 # CAO-CAT-CAO + 1954 6 1217 1218 1219 # CAO-CAM-CAP + 1955 7 1217 1218 1224 # CAO-CAM-HAT + 1956 8 1218 1217 1223 # CAM-CAO-HAT + 1957 9 1218 1219 1220 # CAM-CAP-CAM + 1958 10 1218 1219 1225 # CAM-CAP-HAT + 1959 11 1219 1218 1224 # CAP-CAM-HAT + 1960 6 1221 1220 1219 # CAO-CAM-CAP + 1961 11 1219 1220 1226 # CAP-CAM-HAT + 1962 10 1220 1219 1225 # CAM-CAP-HAT + 1963 8 1220 1221 1227 # CAM-CAO-HAT + 1964 7 1221 1220 1226 # CAO-CAM-HAT + 1965 4 1221 1216 1222 # CAO-CAT-CTT + 1966 12 1228 1222 1229 # HT-CTT-HT + 1967 12 1228 1222 1230 # HT-CTT-HT + 1968 12 1229 1222 1230 # HT-CTT-HT + 1969 1 1231 1232 1233 # CAT-CAO-CAM + 1970 2 1231 1232 1238 # CAT-CAO-HAT + 1971 3 1231 1237 1243 # CAT-CTT-HT + 1972 3 1231 1237 1244 # CAT-CTT-HT + 1973 3 1231 1237 1245 # CAT-CTT-HT + 1974 1 1231 1236 1235 # CAT-CAO-CAM + 1975 2 1231 1236 1242 # CAT-CAO-HAT + 1976 4 1232 1231 1237 # CAO-CAT-CTT + 1977 5 1232 1231 1236 # CAO-CAT-CAO + 1978 6 1232 1233 1234 # CAO-CAM-CAP + 1979 7 1232 1233 1239 # CAO-CAM-HAT + 1980 8 1233 1232 1238 # CAM-CAO-HAT + 1981 9 1233 1234 1235 # CAM-CAP-CAM + 1982 10 1233 1234 1240 # CAM-CAP-HAT + 1983 11 1234 1233 1239 # CAP-CAM-HAT + 1984 6 1236 1235 1234 # CAO-CAM-CAP + 1985 11 1234 1235 1241 # CAP-CAM-HAT + 1986 10 1235 1234 1240 # CAM-CAP-HAT + 1987 8 1235 1236 1242 # CAM-CAO-HAT + 1988 7 1236 1235 1241 # CAO-CAM-HAT + 1989 4 1236 1231 1237 # CAO-CAT-CTT + 1990 12 1243 1237 1244 # HT-CTT-HT + 1991 12 1243 1237 1245 # HT-CTT-HT + 1992 12 1244 1237 1245 # HT-CTT-HT + 1993 1 1246 1247 1248 # CAT-CAO-CAM + 1994 2 1246 1247 1253 # CAT-CAO-HAT + 1995 3 1246 1252 1258 # CAT-CTT-HT + 1996 3 1246 1252 1259 # CAT-CTT-HT + 1997 3 1246 1252 1260 # CAT-CTT-HT + 1998 1 1246 1251 1250 # CAT-CAO-CAM + 1999 2 1246 1251 1257 # CAT-CAO-HAT + 2000 4 1247 1246 1252 # CAO-CAT-CTT + 2001 5 1247 1246 1251 # CAO-CAT-CAO + 2002 6 1247 1248 1249 # CAO-CAM-CAP + 2003 7 1247 1248 1254 # CAO-CAM-HAT + 2004 8 1248 1247 1253 # CAM-CAO-HAT + 2005 9 1248 1249 1250 # CAM-CAP-CAM + 2006 10 1248 1249 1255 # CAM-CAP-HAT + 2007 11 1249 1248 1254 # CAP-CAM-HAT + 2008 6 1251 1250 1249 # CAO-CAM-CAP + 2009 11 1249 1250 1256 # CAP-CAM-HAT + 2010 10 1250 1249 1255 # CAM-CAP-HAT + 2011 8 1250 1251 1257 # CAM-CAO-HAT + 2012 7 1251 1250 1256 # CAO-CAM-HAT + 2013 4 1251 1246 1252 # CAO-CAT-CTT + 2014 12 1258 1252 1259 # HT-CTT-HT + 2015 12 1258 1252 1260 # HT-CTT-HT + 2016 12 1259 1252 1260 # HT-CTT-HT + 2017 1 1261 1262 1263 # CAT-CAO-CAM + 2018 2 1261 1262 1268 # CAT-CAO-HAT + 2019 3 1261 1267 1273 # CAT-CTT-HT + 2020 3 1261 1267 1274 # CAT-CTT-HT + 2021 3 1261 1267 1275 # CAT-CTT-HT + 2022 1 1261 1266 1265 # CAT-CAO-CAM + 2023 2 1261 1266 1272 # CAT-CAO-HAT + 2024 4 1262 1261 1267 # CAO-CAT-CTT + 2025 5 1262 1261 1266 # CAO-CAT-CAO + 2026 6 1262 1263 1264 # CAO-CAM-CAP + 2027 7 1262 1263 1269 # CAO-CAM-HAT + 2028 8 1263 1262 1268 # CAM-CAO-HAT + 2029 9 1263 1264 1265 # CAM-CAP-CAM + 2030 10 1263 1264 1270 # CAM-CAP-HAT + 2031 11 1264 1263 1269 # CAP-CAM-HAT + 2032 6 1266 1265 1264 # CAO-CAM-CAP + 2033 11 1264 1265 1271 # CAP-CAM-HAT + 2034 10 1265 1264 1270 # CAM-CAP-HAT + 2035 8 1265 1266 1272 # CAM-CAO-HAT + 2036 7 1266 1265 1271 # CAO-CAM-HAT + 2037 4 1266 1261 1267 # CAO-CAT-CTT + 2038 12 1273 1267 1274 # HT-CTT-HT + 2039 12 1273 1267 1275 # HT-CTT-HT + 2040 12 1274 1267 1275 # HT-CTT-HT + 2041 1 1276 1277 1278 # CAT-CAO-CAM + 2042 2 1276 1277 1283 # CAT-CAO-HAT + 2043 3 1276 1282 1288 # CAT-CTT-HT + 2044 3 1276 1282 1289 # CAT-CTT-HT + 2045 3 1276 1282 1290 # CAT-CTT-HT + 2046 1 1276 1281 1280 # CAT-CAO-CAM + 2047 2 1276 1281 1287 # CAT-CAO-HAT + 2048 4 1277 1276 1282 # CAO-CAT-CTT + 2049 5 1277 1276 1281 # CAO-CAT-CAO + 2050 6 1277 1278 1279 # CAO-CAM-CAP + 2051 7 1277 1278 1284 # CAO-CAM-HAT + 2052 8 1278 1277 1283 # CAM-CAO-HAT + 2053 9 1278 1279 1280 # CAM-CAP-CAM + 2054 10 1278 1279 1285 # CAM-CAP-HAT + 2055 11 1279 1278 1284 # CAP-CAM-HAT + 2056 6 1281 1280 1279 # CAO-CAM-CAP + 2057 11 1279 1280 1286 # CAP-CAM-HAT + 2058 10 1280 1279 1285 # CAM-CAP-HAT + 2059 8 1280 1281 1287 # CAM-CAO-HAT + 2060 7 1281 1280 1286 # CAO-CAM-HAT + 2061 4 1281 1276 1282 # CAO-CAT-CTT + 2062 12 1288 1282 1289 # HT-CTT-HT + 2063 12 1288 1282 1290 # HT-CTT-HT + 2064 12 1289 1282 1290 # HT-CTT-HT + 2065 1 1291 1292 1293 # CAT-CAO-CAM + 2066 2 1291 1292 1298 # CAT-CAO-HAT + 2067 3 1291 1297 1303 # CAT-CTT-HT + 2068 3 1291 1297 1304 # CAT-CTT-HT + 2069 3 1291 1297 1305 # CAT-CTT-HT + 2070 1 1291 1296 1295 # CAT-CAO-CAM + 2071 2 1291 1296 1302 # CAT-CAO-HAT + 2072 4 1292 1291 1297 # CAO-CAT-CTT + 2073 5 1292 1291 1296 # CAO-CAT-CAO + 2074 6 1292 1293 1294 # CAO-CAM-CAP + 2075 7 1292 1293 1299 # CAO-CAM-HAT + 2076 8 1293 1292 1298 # CAM-CAO-HAT + 2077 9 1293 1294 1295 # CAM-CAP-CAM + 2078 10 1293 1294 1300 # CAM-CAP-HAT + 2079 11 1294 1293 1299 # CAP-CAM-HAT + 2080 6 1296 1295 1294 # CAO-CAM-CAP + 2081 11 1294 1295 1301 # CAP-CAM-HAT + 2082 10 1295 1294 1300 # CAM-CAP-HAT + 2083 8 1295 1296 1302 # CAM-CAO-HAT + 2084 7 1296 1295 1301 # CAO-CAM-HAT + 2085 4 1296 1291 1297 # CAO-CAT-CTT + 2086 12 1303 1297 1304 # HT-CTT-HT + 2087 12 1303 1297 1305 # HT-CTT-HT + 2088 12 1304 1297 1305 # HT-CTT-HT + 2089 1 1306 1307 1308 # CAT-CAO-CAM + 2090 2 1306 1307 1313 # CAT-CAO-HAT + 2091 3 1306 1312 1318 # CAT-CTT-HT + 2092 3 1306 1312 1319 # CAT-CTT-HT + 2093 3 1306 1312 1320 # CAT-CTT-HT + 2094 1 1306 1311 1310 # CAT-CAO-CAM + 2095 2 1306 1311 1317 # CAT-CAO-HAT + 2096 4 1307 1306 1312 # CAO-CAT-CTT + 2097 5 1307 1306 1311 # CAO-CAT-CAO + 2098 6 1307 1308 1309 # CAO-CAM-CAP + 2099 7 1307 1308 1314 # CAO-CAM-HAT + 2100 8 1308 1307 1313 # CAM-CAO-HAT + 2101 9 1308 1309 1310 # CAM-CAP-CAM + 2102 10 1308 1309 1315 # CAM-CAP-HAT + 2103 11 1309 1308 1314 # CAP-CAM-HAT + 2104 6 1311 1310 1309 # CAO-CAM-CAP + 2105 11 1309 1310 1316 # CAP-CAM-HAT + 2106 10 1310 1309 1315 # CAM-CAP-HAT + 2107 8 1310 1311 1317 # CAM-CAO-HAT + 2108 7 1311 1310 1316 # CAO-CAM-HAT + 2109 4 1311 1306 1312 # CAO-CAT-CTT + 2110 12 1318 1312 1319 # HT-CTT-HT + 2111 12 1318 1312 1320 # HT-CTT-HT + 2112 12 1319 1312 1320 # HT-CTT-HT + 2113 1 1321 1322 1323 # CAT-CAO-CAM + 2114 2 1321 1322 1328 # CAT-CAO-HAT + 2115 3 1321 1327 1333 # CAT-CTT-HT + 2116 3 1321 1327 1334 # CAT-CTT-HT + 2117 3 1321 1327 1335 # CAT-CTT-HT + 2118 1 1321 1326 1325 # CAT-CAO-CAM + 2119 2 1321 1326 1332 # CAT-CAO-HAT + 2120 4 1322 1321 1327 # CAO-CAT-CTT + 2121 5 1322 1321 1326 # CAO-CAT-CAO + 2122 6 1322 1323 1324 # CAO-CAM-CAP + 2123 7 1322 1323 1329 # CAO-CAM-HAT + 2124 8 1323 1322 1328 # CAM-CAO-HAT + 2125 9 1323 1324 1325 # CAM-CAP-CAM + 2126 10 1323 1324 1330 # CAM-CAP-HAT + 2127 11 1324 1323 1329 # CAP-CAM-HAT + 2128 6 1326 1325 1324 # CAO-CAM-CAP + 2129 11 1324 1325 1331 # CAP-CAM-HAT + 2130 10 1325 1324 1330 # CAM-CAP-HAT + 2131 8 1325 1326 1332 # CAM-CAO-HAT + 2132 7 1326 1325 1331 # CAO-CAM-HAT + 2133 4 1326 1321 1327 # CAO-CAT-CTT + 2134 12 1333 1327 1334 # HT-CTT-HT + 2135 12 1333 1327 1335 # HT-CTT-HT + 2136 12 1334 1327 1335 # HT-CTT-HT + 2137 1 1336 1337 1338 # CAT-CAO-CAM + 2138 2 1336 1337 1343 # CAT-CAO-HAT + 2139 3 1336 1342 1348 # CAT-CTT-HT + 2140 3 1336 1342 1349 # CAT-CTT-HT + 2141 3 1336 1342 1350 # CAT-CTT-HT + 2142 1 1336 1341 1340 # CAT-CAO-CAM + 2143 2 1336 1341 1347 # CAT-CAO-HAT + 2144 4 1337 1336 1342 # CAO-CAT-CTT + 2145 5 1337 1336 1341 # CAO-CAT-CAO + 2146 6 1337 1338 1339 # CAO-CAM-CAP + 2147 7 1337 1338 1344 # CAO-CAM-HAT + 2148 8 1338 1337 1343 # CAM-CAO-HAT + 2149 9 1338 1339 1340 # CAM-CAP-CAM + 2150 10 1338 1339 1345 # CAM-CAP-HAT + 2151 11 1339 1338 1344 # CAP-CAM-HAT + 2152 6 1341 1340 1339 # CAO-CAM-CAP + 2153 11 1339 1340 1346 # CAP-CAM-HAT + 2154 10 1340 1339 1345 # CAM-CAP-HAT + 2155 8 1340 1341 1347 # CAM-CAO-HAT + 2156 7 1341 1340 1346 # CAO-CAM-HAT + 2157 4 1341 1336 1342 # CAO-CAT-CTT + 2158 12 1348 1342 1349 # HT-CTT-HT + 2159 12 1348 1342 1350 # HT-CTT-HT + 2160 12 1349 1342 1350 # HT-CTT-HT + 2161 1 1351 1352 1353 # CAT-CAO-CAM + 2162 2 1351 1352 1358 # CAT-CAO-HAT + 2163 3 1351 1357 1363 # CAT-CTT-HT + 2164 3 1351 1357 1364 # CAT-CTT-HT + 2165 3 1351 1357 1365 # CAT-CTT-HT + 2166 1 1351 1356 1355 # CAT-CAO-CAM + 2167 2 1351 1356 1362 # CAT-CAO-HAT + 2168 4 1352 1351 1357 # CAO-CAT-CTT + 2169 5 1352 1351 1356 # CAO-CAT-CAO + 2170 6 1352 1353 1354 # CAO-CAM-CAP + 2171 7 1352 1353 1359 # CAO-CAM-HAT + 2172 8 1353 1352 1358 # CAM-CAO-HAT + 2173 9 1353 1354 1355 # CAM-CAP-CAM + 2174 10 1353 1354 1360 # CAM-CAP-HAT + 2175 11 1354 1353 1359 # CAP-CAM-HAT + 2176 6 1356 1355 1354 # CAO-CAM-CAP + 2177 11 1354 1355 1361 # CAP-CAM-HAT + 2178 10 1355 1354 1360 # CAM-CAP-HAT + 2179 8 1355 1356 1362 # CAM-CAO-HAT + 2180 7 1356 1355 1361 # CAO-CAM-HAT + 2181 4 1356 1351 1357 # CAO-CAT-CTT + 2182 12 1363 1357 1364 # HT-CTT-HT + 2183 12 1363 1357 1365 # HT-CTT-HT + 2184 12 1364 1357 1365 # HT-CTT-HT + 2185 1 1366 1367 1368 # CAT-CAO-CAM + 2186 2 1366 1367 1373 # CAT-CAO-HAT + 2187 3 1366 1372 1378 # CAT-CTT-HT + 2188 3 1366 1372 1379 # CAT-CTT-HT + 2189 3 1366 1372 1380 # CAT-CTT-HT + 2190 1 1366 1371 1370 # CAT-CAO-CAM + 2191 2 1366 1371 1377 # CAT-CAO-HAT + 2192 4 1367 1366 1372 # CAO-CAT-CTT + 2193 5 1367 1366 1371 # CAO-CAT-CAO + 2194 6 1367 1368 1369 # CAO-CAM-CAP + 2195 7 1367 1368 1374 # CAO-CAM-HAT + 2196 8 1368 1367 1373 # CAM-CAO-HAT + 2197 9 1368 1369 1370 # CAM-CAP-CAM + 2198 10 1368 1369 1375 # CAM-CAP-HAT + 2199 11 1369 1368 1374 # CAP-CAM-HAT + 2200 6 1371 1370 1369 # CAO-CAM-CAP + 2201 11 1369 1370 1376 # CAP-CAM-HAT + 2202 10 1370 1369 1375 # CAM-CAP-HAT + 2203 8 1370 1371 1377 # CAM-CAO-HAT + 2204 7 1371 1370 1376 # CAO-CAM-HAT + 2205 4 1371 1366 1372 # CAO-CAT-CTT + 2206 12 1378 1372 1379 # HT-CTT-HT + 2207 12 1378 1372 1380 # HT-CTT-HT + 2208 12 1379 1372 1380 # HT-CTT-HT + 2209 1 1381 1382 1383 # CAT-CAO-CAM + 2210 2 1381 1382 1388 # CAT-CAO-HAT + 2211 3 1381 1387 1393 # CAT-CTT-HT + 2212 3 1381 1387 1394 # CAT-CTT-HT + 2213 3 1381 1387 1395 # CAT-CTT-HT + 2214 1 1381 1386 1385 # CAT-CAO-CAM + 2215 2 1381 1386 1392 # CAT-CAO-HAT + 2216 4 1382 1381 1387 # CAO-CAT-CTT + 2217 5 1382 1381 1386 # CAO-CAT-CAO + 2218 6 1382 1383 1384 # CAO-CAM-CAP + 2219 7 1382 1383 1389 # CAO-CAM-HAT + 2220 8 1383 1382 1388 # CAM-CAO-HAT + 2221 9 1383 1384 1385 # CAM-CAP-CAM + 2222 10 1383 1384 1390 # CAM-CAP-HAT + 2223 11 1384 1383 1389 # CAP-CAM-HAT + 2224 6 1386 1385 1384 # CAO-CAM-CAP + 2225 11 1384 1385 1391 # CAP-CAM-HAT + 2226 10 1385 1384 1390 # CAM-CAP-HAT + 2227 8 1385 1386 1392 # CAM-CAO-HAT + 2228 7 1386 1385 1391 # CAO-CAM-HAT + 2229 4 1386 1381 1387 # CAO-CAT-CTT + 2230 12 1393 1387 1394 # HT-CTT-HT + 2231 12 1393 1387 1395 # HT-CTT-HT + 2232 12 1394 1387 1395 # HT-CTT-HT + 2233 1 1396 1397 1398 # CAT-CAO-CAM + 2234 2 1396 1397 1403 # CAT-CAO-HAT + 2235 3 1396 1402 1408 # CAT-CTT-HT + 2236 3 1396 1402 1409 # CAT-CTT-HT + 2237 3 1396 1402 1410 # CAT-CTT-HT + 2238 1 1396 1401 1400 # CAT-CAO-CAM + 2239 2 1396 1401 1407 # CAT-CAO-HAT + 2240 4 1397 1396 1402 # CAO-CAT-CTT + 2241 5 1397 1396 1401 # CAO-CAT-CAO + 2242 6 1397 1398 1399 # CAO-CAM-CAP + 2243 7 1397 1398 1404 # CAO-CAM-HAT + 2244 8 1398 1397 1403 # CAM-CAO-HAT + 2245 9 1398 1399 1400 # CAM-CAP-CAM + 2246 10 1398 1399 1405 # CAM-CAP-HAT + 2247 11 1399 1398 1404 # CAP-CAM-HAT + 2248 6 1401 1400 1399 # CAO-CAM-CAP + 2249 11 1399 1400 1406 # CAP-CAM-HAT + 2250 10 1400 1399 1405 # CAM-CAP-HAT + 2251 8 1400 1401 1407 # CAM-CAO-HAT + 2252 7 1401 1400 1406 # CAO-CAM-HAT + 2253 4 1401 1396 1402 # CAO-CAT-CTT + 2254 12 1408 1402 1409 # HT-CTT-HT + 2255 12 1408 1402 1410 # HT-CTT-HT + 2256 12 1409 1402 1410 # HT-CTT-HT + 2257 1 1411 1412 1413 # CAT-CAO-CAM + 2258 2 1411 1412 1418 # CAT-CAO-HAT + 2259 3 1411 1417 1423 # CAT-CTT-HT + 2260 3 1411 1417 1424 # CAT-CTT-HT + 2261 3 1411 1417 1425 # CAT-CTT-HT + 2262 1 1411 1416 1415 # CAT-CAO-CAM + 2263 2 1411 1416 1422 # CAT-CAO-HAT + 2264 4 1412 1411 1417 # CAO-CAT-CTT + 2265 5 1412 1411 1416 # CAO-CAT-CAO + 2266 6 1412 1413 1414 # CAO-CAM-CAP + 2267 7 1412 1413 1419 # CAO-CAM-HAT + 2268 8 1413 1412 1418 # CAM-CAO-HAT + 2269 9 1413 1414 1415 # CAM-CAP-CAM + 2270 10 1413 1414 1420 # CAM-CAP-HAT + 2271 11 1414 1413 1419 # CAP-CAM-HAT + 2272 6 1416 1415 1414 # CAO-CAM-CAP + 2273 11 1414 1415 1421 # CAP-CAM-HAT + 2274 10 1415 1414 1420 # CAM-CAP-HAT + 2275 8 1415 1416 1422 # CAM-CAO-HAT + 2276 7 1416 1415 1421 # CAO-CAM-HAT + 2277 4 1416 1411 1417 # CAO-CAT-CTT + 2278 12 1423 1417 1424 # HT-CTT-HT + 2279 12 1423 1417 1425 # HT-CTT-HT + 2280 12 1424 1417 1425 # HT-CTT-HT + 2281 1 1426 1427 1428 # CAT-CAO-CAM + 2282 2 1426 1427 1433 # CAT-CAO-HAT + 2283 3 1426 1432 1438 # CAT-CTT-HT + 2284 3 1426 1432 1439 # CAT-CTT-HT + 2285 3 1426 1432 1440 # CAT-CTT-HT + 2286 1 1426 1431 1430 # CAT-CAO-CAM + 2287 2 1426 1431 1437 # CAT-CAO-HAT + 2288 4 1427 1426 1432 # CAO-CAT-CTT + 2289 5 1427 1426 1431 # CAO-CAT-CAO + 2290 6 1427 1428 1429 # CAO-CAM-CAP + 2291 7 1427 1428 1434 # CAO-CAM-HAT + 2292 8 1428 1427 1433 # CAM-CAO-HAT + 2293 9 1428 1429 1430 # CAM-CAP-CAM + 2294 10 1428 1429 1435 # CAM-CAP-HAT + 2295 11 1429 1428 1434 # CAP-CAM-HAT + 2296 6 1431 1430 1429 # CAO-CAM-CAP + 2297 11 1429 1430 1436 # CAP-CAM-HAT + 2298 10 1430 1429 1435 # CAM-CAP-HAT + 2299 8 1430 1431 1437 # CAM-CAO-HAT + 2300 7 1431 1430 1436 # CAO-CAM-HAT + 2301 4 1431 1426 1432 # CAO-CAT-CTT + 2302 12 1438 1432 1439 # HT-CTT-HT + 2303 12 1438 1432 1440 # HT-CTT-HT + 2304 12 1439 1432 1440 # HT-CTT-HT + 2305 1 1441 1442 1443 # CAT-CAO-CAM + 2306 2 1441 1442 1448 # CAT-CAO-HAT + 2307 3 1441 1447 1453 # CAT-CTT-HT + 2308 3 1441 1447 1454 # CAT-CTT-HT + 2309 3 1441 1447 1455 # CAT-CTT-HT + 2310 1 1441 1446 1445 # CAT-CAO-CAM + 2311 2 1441 1446 1452 # CAT-CAO-HAT + 2312 4 1442 1441 1447 # CAO-CAT-CTT + 2313 5 1442 1441 1446 # CAO-CAT-CAO + 2314 6 1442 1443 1444 # CAO-CAM-CAP + 2315 7 1442 1443 1449 # CAO-CAM-HAT + 2316 8 1443 1442 1448 # CAM-CAO-HAT + 2317 9 1443 1444 1445 # CAM-CAP-CAM + 2318 10 1443 1444 1450 # CAM-CAP-HAT + 2319 11 1444 1443 1449 # CAP-CAM-HAT + 2320 6 1446 1445 1444 # CAO-CAM-CAP + 2321 11 1444 1445 1451 # CAP-CAM-HAT + 2322 10 1445 1444 1450 # CAM-CAP-HAT + 2323 8 1445 1446 1452 # CAM-CAO-HAT + 2324 7 1446 1445 1451 # CAO-CAM-HAT + 2325 4 1446 1441 1447 # CAO-CAT-CTT + 2326 12 1453 1447 1454 # HT-CTT-HT + 2327 12 1453 1447 1455 # HT-CTT-HT + 2328 12 1454 1447 1455 # HT-CTT-HT + 2329 1 1456 1457 1458 # CAT-CAO-CAM + 2330 2 1456 1457 1463 # CAT-CAO-HAT + 2331 3 1456 1462 1468 # CAT-CTT-HT + 2332 3 1456 1462 1469 # CAT-CTT-HT + 2333 3 1456 1462 1470 # CAT-CTT-HT + 2334 1 1456 1461 1460 # CAT-CAO-CAM + 2335 2 1456 1461 1467 # CAT-CAO-HAT + 2336 4 1457 1456 1462 # CAO-CAT-CTT + 2337 5 1457 1456 1461 # CAO-CAT-CAO + 2338 6 1457 1458 1459 # CAO-CAM-CAP + 2339 7 1457 1458 1464 # CAO-CAM-HAT + 2340 8 1458 1457 1463 # CAM-CAO-HAT + 2341 9 1458 1459 1460 # CAM-CAP-CAM + 2342 10 1458 1459 1465 # CAM-CAP-HAT + 2343 11 1459 1458 1464 # CAP-CAM-HAT + 2344 6 1461 1460 1459 # CAO-CAM-CAP + 2345 11 1459 1460 1466 # CAP-CAM-HAT + 2346 10 1460 1459 1465 # CAM-CAP-HAT + 2347 8 1460 1461 1467 # CAM-CAO-HAT + 2348 7 1461 1460 1466 # CAO-CAM-HAT + 2349 4 1461 1456 1462 # CAO-CAT-CTT + 2350 12 1468 1462 1469 # HT-CTT-HT + 2351 12 1468 1462 1470 # HT-CTT-HT + 2352 12 1469 1462 1470 # HT-CTT-HT + 2353 1 1471 1472 1473 # CAT-CAO-CAM + 2354 2 1471 1472 1478 # CAT-CAO-HAT + 2355 3 1471 1477 1483 # CAT-CTT-HT + 2356 3 1471 1477 1484 # CAT-CTT-HT + 2357 3 1471 1477 1485 # CAT-CTT-HT + 2358 1 1471 1476 1475 # CAT-CAO-CAM + 2359 2 1471 1476 1482 # CAT-CAO-HAT + 2360 4 1472 1471 1477 # CAO-CAT-CTT + 2361 5 1472 1471 1476 # CAO-CAT-CAO + 2362 6 1472 1473 1474 # CAO-CAM-CAP + 2363 7 1472 1473 1479 # CAO-CAM-HAT + 2364 8 1473 1472 1478 # CAM-CAO-HAT + 2365 9 1473 1474 1475 # CAM-CAP-CAM + 2366 10 1473 1474 1480 # CAM-CAP-HAT + 2367 11 1474 1473 1479 # CAP-CAM-HAT + 2368 6 1476 1475 1474 # CAO-CAM-CAP + 2369 11 1474 1475 1481 # CAP-CAM-HAT + 2370 10 1475 1474 1480 # CAM-CAP-HAT + 2371 8 1475 1476 1482 # CAM-CAO-HAT + 2372 7 1476 1475 1481 # CAO-CAM-HAT + 2373 4 1476 1471 1477 # CAO-CAT-CTT + 2374 12 1483 1477 1484 # HT-CTT-HT + 2375 12 1483 1477 1485 # HT-CTT-HT + 2376 12 1484 1477 1485 # HT-CTT-HT + 2377 1 1486 1487 1488 # CAT-CAO-CAM + 2378 2 1486 1487 1493 # CAT-CAO-HAT + 2379 3 1486 1492 1498 # CAT-CTT-HT + 2380 3 1486 1492 1499 # CAT-CTT-HT + 2381 3 1486 1492 1500 # CAT-CTT-HT + 2382 1 1486 1491 1490 # CAT-CAO-CAM + 2383 2 1486 1491 1497 # CAT-CAO-HAT + 2384 4 1487 1486 1492 # CAO-CAT-CTT + 2385 5 1487 1486 1491 # CAO-CAT-CAO + 2386 6 1487 1488 1489 # CAO-CAM-CAP + 2387 7 1487 1488 1494 # CAO-CAM-HAT + 2388 8 1488 1487 1493 # CAM-CAO-HAT + 2389 9 1488 1489 1490 # CAM-CAP-CAM + 2390 10 1488 1489 1495 # CAM-CAP-HAT + 2391 11 1489 1488 1494 # CAP-CAM-HAT + 2392 6 1491 1490 1489 # CAO-CAM-CAP + 2393 11 1489 1490 1496 # CAP-CAM-HAT + 2394 10 1490 1489 1495 # CAM-CAP-HAT + 2395 8 1490 1491 1497 # CAM-CAO-HAT + 2396 7 1491 1490 1496 # CAO-CAM-HAT + 2397 4 1491 1486 1492 # CAO-CAT-CTT + 2398 12 1498 1492 1499 # HT-CTT-HT + 2399 12 1498 1492 1500 # HT-CTT-HT + 2400 12 1499 1492 1500 # HT-CTT-HT + 2401 1 1501 1502 1503 # CAT-CAO-CAM + 2402 2 1501 1502 1508 # CAT-CAO-HAT + 2403 3 1501 1507 1513 # CAT-CTT-HT + 2404 3 1501 1507 1514 # CAT-CTT-HT + 2405 3 1501 1507 1515 # CAT-CTT-HT + 2406 1 1501 1506 1505 # CAT-CAO-CAM + 2407 2 1501 1506 1512 # CAT-CAO-HAT + 2408 4 1502 1501 1507 # CAO-CAT-CTT + 2409 5 1502 1501 1506 # CAO-CAT-CAO + 2410 6 1502 1503 1504 # CAO-CAM-CAP + 2411 7 1502 1503 1509 # CAO-CAM-HAT + 2412 8 1503 1502 1508 # CAM-CAO-HAT + 2413 9 1503 1504 1505 # CAM-CAP-CAM + 2414 10 1503 1504 1510 # CAM-CAP-HAT + 2415 11 1504 1503 1509 # CAP-CAM-HAT + 2416 6 1506 1505 1504 # CAO-CAM-CAP + 2417 11 1504 1505 1511 # CAP-CAM-HAT + 2418 10 1505 1504 1510 # CAM-CAP-HAT + 2419 8 1505 1506 1512 # CAM-CAO-HAT + 2420 7 1506 1505 1511 # CAO-CAM-HAT + 2421 4 1506 1501 1507 # CAO-CAT-CTT + 2422 12 1513 1507 1514 # HT-CTT-HT + 2423 12 1513 1507 1515 # HT-CTT-HT + 2424 12 1514 1507 1515 # HT-CTT-HT + 2425 1 1516 1517 1518 # CAT-CAO-CAM + 2426 2 1516 1517 1523 # CAT-CAO-HAT + 2427 3 1516 1522 1528 # CAT-CTT-HT + 2428 3 1516 1522 1529 # CAT-CTT-HT + 2429 3 1516 1522 1530 # CAT-CTT-HT + 2430 1 1516 1521 1520 # CAT-CAO-CAM + 2431 2 1516 1521 1527 # CAT-CAO-HAT + 2432 4 1517 1516 1522 # CAO-CAT-CTT + 2433 5 1517 1516 1521 # CAO-CAT-CAO + 2434 6 1517 1518 1519 # CAO-CAM-CAP + 2435 7 1517 1518 1524 # CAO-CAM-HAT + 2436 8 1518 1517 1523 # CAM-CAO-HAT + 2437 9 1518 1519 1520 # CAM-CAP-CAM + 2438 10 1518 1519 1525 # CAM-CAP-HAT + 2439 11 1519 1518 1524 # CAP-CAM-HAT + 2440 6 1521 1520 1519 # CAO-CAM-CAP + 2441 11 1519 1520 1526 # CAP-CAM-HAT + 2442 10 1520 1519 1525 # CAM-CAP-HAT + 2443 8 1520 1521 1527 # CAM-CAO-HAT + 2444 7 1521 1520 1526 # CAO-CAM-HAT + 2445 4 1521 1516 1522 # CAO-CAT-CTT + 2446 12 1528 1522 1529 # HT-CTT-HT + 2447 12 1528 1522 1530 # HT-CTT-HT + 2448 12 1529 1522 1530 # HT-CTT-HT + 2449 1 1531 1532 1533 # CAT-CAO-CAM + 2450 2 1531 1532 1538 # CAT-CAO-HAT + 2451 3 1531 1537 1543 # CAT-CTT-HT + 2452 3 1531 1537 1544 # CAT-CTT-HT + 2453 3 1531 1537 1545 # CAT-CTT-HT + 2454 1 1531 1536 1535 # CAT-CAO-CAM + 2455 2 1531 1536 1542 # CAT-CAO-HAT + 2456 4 1532 1531 1537 # CAO-CAT-CTT + 2457 5 1532 1531 1536 # CAO-CAT-CAO + 2458 6 1532 1533 1534 # CAO-CAM-CAP + 2459 7 1532 1533 1539 # CAO-CAM-HAT + 2460 8 1533 1532 1538 # CAM-CAO-HAT + 2461 9 1533 1534 1535 # CAM-CAP-CAM + 2462 10 1533 1534 1540 # CAM-CAP-HAT + 2463 11 1534 1533 1539 # CAP-CAM-HAT + 2464 6 1536 1535 1534 # CAO-CAM-CAP + 2465 11 1534 1535 1541 # CAP-CAM-HAT + 2466 10 1535 1534 1540 # CAM-CAP-HAT + 2467 8 1535 1536 1542 # CAM-CAO-HAT + 2468 7 1536 1535 1541 # CAO-CAM-HAT + 2469 4 1536 1531 1537 # CAO-CAT-CTT + 2470 12 1543 1537 1544 # HT-CTT-HT + 2471 12 1543 1537 1545 # HT-CTT-HT + 2472 12 1544 1537 1545 # HT-CTT-HT + 2473 1 1546 1547 1548 # CAT-CAO-CAM + 2474 2 1546 1547 1553 # CAT-CAO-HAT + 2475 3 1546 1552 1558 # CAT-CTT-HT + 2476 3 1546 1552 1559 # CAT-CTT-HT + 2477 3 1546 1552 1560 # CAT-CTT-HT + 2478 1 1546 1551 1550 # CAT-CAO-CAM + 2479 2 1546 1551 1557 # CAT-CAO-HAT + 2480 4 1547 1546 1552 # CAO-CAT-CTT + 2481 5 1547 1546 1551 # CAO-CAT-CAO + 2482 6 1547 1548 1549 # CAO-CAM-CAP + 2483 7 1547 1548 1554 # CAO-CAM-HAT + 2484 8 1548 1547 1553 # CAM-CAO-HAT + 2485 9 1548 1549 1550 # CAM-CAP-CAM + 2486 10 1548 1549 1555 # CAM-CAP-HAT + 2487 11 1549 1548 1554 # CAP-CAM-HAT + 2488 6 1551 1550 1549 # CAO-CAM-CAP + 2489 11 1549 1550 1556 # CAP-CAM-HAT + 2490 10 1550 1549 1555 # CAM-CAP-HAT + 2491 8 1550 1551 1557 # CAM-CAO-HAT + 2492 7 1551 1550 1556 # CAO-CAM-HAT + 2493 4 1551 1546 1552 # CAO-CAT-CTT + 2494 12 1558 1552 1559 # HT-CTT-HT + 2495 12 1558 1552 1560 # HT-CTT-HT + 2496 12 1559 1552 1560 # HT-CTT-HT + 2497 1 1561 1562 1563 # CAT-CAO-CAM + 2498 2 1561 1562 1568 # CAT-CAO-HAT + 2499 3 1561 1567 1573 # CAT-CTT-HT + 2500 3 1561 1567 1574 # CAT-CTT-HT + 2501 3 1561 1567 1575 # CAT-CTT-HT + 2502 1 1561 1566 1565 # CAT-CAO-CAM + 2503 2 1561 1566 1572 # CAT-CAO-HAT + 2504 4 1562 1561 1567 # CAO-CAT-CTT + 2505 5 1562 1561 1566 # CAO-CAT-CAO + 2506 6 1562 1563 1564 # CAO-CAM-CAP + 2507 7 1562 1563 1569 # CAO-CAM-HAT + 2508 8 1563 1562 1568 # CAM-CAO-HAT + 2509 9 1563 1564 1565 # CAM-CAP-CAM + 2510 10 1563 1564 1570 # CAM-CAP-HAT + 2511 11 1564 1563 1569 # CAP-CAM-HAT + 2512 6 1566 1565 1564 # CAO-CAM-CAP + 2513 11 1564 1565 1571 # CAP-CAM-HAT + 2514 10 1565 1564 1570 # CAM-CAP-HAT + 2515 8 1565 1566 1572 # CAM-CAO-HAT + 2516 7 1566 1565 1571 # CAO-CAM-HAT + 2517 4 1566 1561 1567 # CAO-CAT-CTT + 2518 12 1573 1567 1574 # HT-CTT-HT + 2519 12 1573 1567 1575 # HT-CTT-HT + 2520 12 1574 1567 1575 # HT-CTT-HT + 2521 1 1576 1577 1578 # CAT-CAO-CAM + 2522 2 1576 1577 1583 # CAT-CAO-HAT + 2523 3 1576 1582 1588 # CAT-CTT-HT + 2524 3 1576 1582 1589 # CAT-CTT-HT + 2525 3 1576 1582 1590 # CAT-CTT-HT + 2526 1 1576 1581 1580 # CAT-CAO-CAM + 2527 2 1576 1581 1587 # CAT-CAO-HAT + 2528 4 1577 1576 1582 # CAO-CAT-CTT + 2529 5 1577 1576 1581 # CAO-CAT-CAO + 2530 6 1577 1578 1579 # CAO-CAM-CAP + 2531 7 1577 1578 1584 # CAO-CAM-HAT + 2532 8 1578 1577 1583 # CAM-CAO-HAT + 2533 9 1578 1579 1580 # CAM-CAP-CAM + 2534 10 1578 1579 1585 # CAM-CAP-HAT + 2535 11 1579 1578 1584 # CAP-CAM-HAT + 2536 6 1581 1580 1579 # CAO-CAM-CAP + 2537 11 1579 1580 1586 # CAP-CAM-HAT + 2538 10 1580 1579 1585 # CAM-CAP-HAT + 2539 8 1580 1581 1587 # CAM-CAO-HAT + 2540 7 1581 1580 1586 # CAO-CAM-HAT + 2541 4 1581 1576 1582 # CAO-CAT-CTT + 2542 12 1588 1582 1589 # HT-CTT-HT + 2543 12 1588 1582 1590 # HT-CTT-HT + 2544 12 1589 1582 1590 # HT-CTT-HT + 2545 1 1591 1592 1593 # CAT-CAO-CAM + 2546 2 1591 1592 1598 # CAT-CAO-HAT + 2547 3 1591 1597 1603 # CAT-CTT-HT + 2548 3 1591 1597 1604 # CAT-CTT-HT + 2549 3 1591 1597 1605 # CAT-CTT-HT + 2550 1 1591 1596 1595 # CAT-CAO-CAM + 2551 2 1591 1596 1602 # CAT-CAO-HAT + 2552 4 1592 1591 1597 # CAO-CAT-CTT + 2553 5 1592 1591 1596 # CAO-CAT-CAO + 2554 6 1592 1593 1594 # CAO-CAM-CAP + 2555 7 1592 1593 1599 # CAO-CAM-HAT + 2556 8 1593 1592 1598 # CAM-CAO-HAT + 2557 9 1593 1594 1595 # CAM-CAP-CAM + 2558 10 1593 1594 1600 # CAM-CAP-HAT + 2559 11 1594 1593 1599 # CAP-CAM-HAT + 2560 6 1596 1595 1594 # CAO-CAM-CAP + 2561 11 1594 1595 1601 # CAP-CAM-HAT + 2562 10 1595 1594 1600 # CAM-CAP-HAT + 2563 8 1595 1596 1602 # CAM-CAO-HAT + 2564 7 1596 1595 1601 # CAO-CAM-HAT + 2565 4 1596 1591 1597 # CAO-CAT-CTT + 2566 12 1603 1597 1604 # HT-CTT-HT + 2567 12 1603 1597 1605 # HT-CTT-HT + 2568 12 1604 1597 1605 # HT-CTT-HT + 2569 1 1606 1607 1608 # CAT-CAO-CAM + 2570 2 1606 1607 1613 # CAT-CAO-HAT + 2571 3 1606 1612 1618 # CAT-CTT-HT + 2572 3 1606 1612 1619 # CAT-CTT-HT + 2573 3 1606 1612 1620 # CAT-CTT-HT + 2574 1 1606 1611 1610 # CAT-CAO-CAM + 2575 2 1606 1611 1617 # CAT-CAO-HAT + 2576 4 1607 1606 1612 # CAO-CAT-CTT + 2577 5 1607 1606 1611 # CAO-CAT-CAO + 2578 6 1607 1608 1609 # CAO-CAM-CAP + 2579 7 1607 1608 1614 # CAO-CAM-HAT + 2580 8 1608 1607 1613 # CAM-CAO-HAT + 2581 9 1608 1609 1610 # CAM-CAP-CAM + 2582 10 1608 1609 1615 # CAM-CAP-HAT + 2583 11 1609 1608 1614 # CAP-CAM-HAT + 2584 6 1611 1610 1609 # CAO-CAM-CAP + 2585 11 1609 1610 1616 # CAP-CAM-HAT + 2586 10 1610 1609 1615 # CAM-CAP-HAT + 2587 8 1610 1611 1617 # CAM-CAO-HAT + 2588 7 1611 1610 1616 # CAO-CAM-HAT + 2589 4 1611 1606 1612 # CAO-CAT-CTT + 2590 12 1618 1612 1619 # HT-CTT-HT + 2591 12 1618 1612 1620 # HT-CTT-HT + 2592 12 1619 1612 1620 # HT-CTT-HT + 2593 1 1621 1622 1623 # CAT-CAO-CAM + 2594 2 1621 1622 1628 # CAT-CAO-HAT + 2595 3 1621 1627 1633 # CAT-CTT-HT + 2596 3 1621 1627 1634 # CAT-CTT-HT + 2597 3 1621 1627 1635 # CAT-CTT-HT + 2598 1 1621 1626 1625 # CAT-CAO-CAM + 2599 2 1621 1626 1632 # CAT-CAO-HAT + 2600 4 1622 1621 1627 # CAO-CAT-CTT + 2601 5 1622 1621 1626 # CAO-CAT-CAO + 2602 6 1622 1623 1624 # CAO-CAM-CAP + 2603 7 1622 1623 1629 # CAO-CAM-HAT + 2604 8 1623 1622 1628 # CAM-CAO-HAT + 2605 9 1623 1624 1625 # CAM-CAP-CAM + 2606 10 1623 1624 1630 # CAM-CAP-HAT + 2607 11 1624 1623 1629 # CAP-CAM-HAT + 2608 6 1626 1625 1624 # CAO-CAM-CAP + 2609 11 1624 1625 1631 # CAP-CAM-HAT + 2610 10 1625 1624 1630 # CAM-CAP-HAT + 2611 8 1625 1626 1632 # CAM-CAO-HAT + 2612 7 1626 1625 1631 # CAO-CAM-HAT + 2613 4 1626 1621 1627 # CAO-CAT-CTT + 2614 12 1633 1627 1634 # HT-CTT-HT + 2615 12 1633 1627 1635 # HT-CTT-HT + 2616 12 1634 1627 1635 # HT-CTT-HT + 2617 1 1636 1637 1638 # CAT-CAO-CAM + 2618 2 1636 1637 1643 # CAT-CAO-HAT + 2619 3 1636 1642 1648 # CAT-CTT-HT + 2620 3 1636 1642 1649 # CAT-CTT-HT + 2621 3 1636 1642 1650 # CAT-CTT-HT + 2622 1 1636 1641 1640 # CAT-CAO-CAM + 2623 2 1636 1641 1647 # CAT-CAO-HAT + 2624 4 1637 1636 1642 # CAO-CAT-CTT + 2625 5 1637 1636 1641 # CAO-CAT-CAO + 2626 6 1637 1638 1639 # CAO-CAM-CAP + 2627 7 1637 1638 1644 # CAO-CAM-HAT + 2628 8 1638 1637 1643 # CAM-CAO-HAT + 2629 9 1638 1639 1640 # CAM-CAP-CAM + 2630 10 1638 1639 1645 # CAM-CAP-HAT + 2631 11 1639 1638 1644 # CAP-CAM-HAT + 2632 6 1641 1640 1639 # CAO-CAM-CAP + 2633 11 1639 1640 1646 # CAP-CAM-HAT + 2634 10 1640 1639 1645 # CAM-CAP-HAT + 2635 8 1640 1641 1647 # CAM-CAO-HAT + 2636 7 1641 1640 1646 # CAO-CAM-HAT + 2637 4 1641 1636 1642 # CAO-CAT-CTT + 2638 12 1648 1642 1649 # HT-CTT-HT + 2639 12 1648 1642 1650 # HT-CTT-HT + 2640 12 1649 1642 1650 # HT-CTT-HT + 2641 1 1651 1652 1653 # CAT-CAO-CAM + 2642 2 1651 1652 1658 # CAT-CAO-HAT + 2643 3 1651 1657 1663 # CAT-CTT-HT + 2644 3 1651 1657 1664 # CAT-CTT-HT + 2645 3 1651 1657 1665 # CAT-CTT-HT + 2646 1 1651 1656 1655 # CAT-CAO-CAM + 2647 2 1651 1656 1662 # CAT-CAO-HAT + 2648 4 1652 1651 1657 # CAO-CAT-CTT + 2649 5 1652 1651 1656 # CAO-CAT-CAO + 2650 6 1652 1653 1654 # CAO-CAM-CAP + 2651 7 1652 1653 1659 # CAO-CAM-HAT + 2652 8 1653 1652 1658 # CAM-CAO-HAT + 2653 9 1653 1654 1655 # CAM-CAP-CAM + 2654 10 1653 1654 1660 # CAM-CAP-HAT + 2655 11 1654 1653 1659 # CAP-CAM-HAT + 2656 6 1656 1655 1654 # CAO-CAM-CAP + 2657 11 1654 1655 1661 # CAP-CAM-HAT + 2658 10 1655 1654 1660 # CAM-CAP-HAT + 2659 8 1655 1656 1662 # CAM-CAO-HAT + 2660 7 1656 1655 1661 # CAO-CAM-HAT + 2661 4 1656 1651 1657 # CAO-CAT-CTT + 2662 12 1663 1657 1664 # HT-CTT-HT + 2663 12 1663 1657 1665 # HT-CTT-HT + 2664 12 1664 1657 1665 # HT-CTT-HT + 2665 1 1666 1667 1668 # CAT-CAO-CAM + 2666 2 1666 1667 1673 # CAT-CAO-HAT + 2667 3 1666 1672 1678 # CAT-CTT-HT + 2668 3 1666 1672 1679 # CAT-CTT-HT + 2669 3 1666 1672 1680 # CAT-CTT-HT + 2670 1 1666 1671 1670 # CAT-CAO-CAM + 2671 2 1666 1671 1677 # CAT-CAO-HAT + 2672 4 1667 1666 1672 # CAO-CAT-CTT + 2673 5 1667 1666 1671 # CAO-CAT-CAO + 2674 6 1667 1668 1669 # CAO-CAM-CAP + 2675 7 1667 1668 1674 # CAO-CAM-HAT + 2676 8 1668 1667 1673 # CAM-CAO-HAT + 2677 9 1668 1669 1670 # CAM-CAP-CAM + 2678 10 1668 1669 1675 # CAM-CAP-HAT + 2679 11 1669 1668 1674 # CAP-CAM-HAT + 2680 6 1671 1670 1669 # CAO-CAM-CAP + 2681 11 1669 1670 1676 # CAP-CAM-HAT + 2682 10 1670 1669 1675 # CAM-CAP-HAT + 2683 8 1670 1671 1677 # CAM-CAO-HAT + 2684 7 1671 1670 1676 # CAO-CAM-HAT + 2685 4 1671 1666 1672 # CAO-CAT-CTT + 2686 12 1678 1672 1679 # HT-CTT-HT + 2687 12 1678 1672 1680 # HT-CTT-HT + 2688 12 1679 1672 1680 # HT-CTT-HT + 2689 1 1681 1682 1683 # CAT-CAO-CAM + 2690 2 1681 1682 1688 # CAT-CAO-HAT + 2691 3 1681 1687 1693 # CAT-CTT-HT + 2692 3 1681 1687 1694 # CAT-CTT-HT + 2693 3 1681 1687 1695 # CAT-CTT-HT + 2694 1 1681 1686 1685 # CAT-CAO-CAM + 2695 2 1681 1686 1692 # CAT-CAO-HAT + 2696 4 1682 1681 1687 # CAO-CAT-CTT + 2697 5 1682 1681 1686 # CAO-CAT-CAO + 2698 6 1682 1683 1684 # CAO-CAM-CAP + 2699 7 1682 1683 1689 # CAO-CAM-HAT + 2700 8 1683 1682 1688 # CAM-CAO-HAT + 2701 9 1683 1684 1685 # CAM-CAP-CAM + 2702 10 1683 1684 1690 # CAM-CAP-HAT + 2703 11 1684 1683 1689 # CAP-CAM-HAT + 2704 6 1686 1685 1684 # CAO-CAM-CAP + 2705 11 1684 1685 1691 # CAP-CAM-HAT + 2706 10 1685 1684 1690 # CAM-CAP-HAT + 2707 8 1685 1686 1692 # CAM-CAO-HAT + 2708 7 1686 1685 1691 # CAO-CAM-HAT + 2709 4 1686 1681 1687 # CAO-CAT-CTT + 2710 12 1693 1687 1694 # HT-CTT-HT + 2711 12 1693 1687 1695 # HT-CTT-HT + 2712 12 1694 1687 1695 # HT-CTT-HT + 2713 1 1696 1697 1698 # CAT-CAO-CAM + 2714 2 1696 1697 1703 # CAT-CAO-HAT + 2715 3 1696 1702 1708 # CAT-CTT-HT + 2716 3 1696 1702 1709 # CAT-CTT-HT + 2717 3 1696 1702 1710 # CAT-CTT-HT + 2718 1 1696 1701 1700 # CAT-CAO-CAM + 2719 2 1696 1701 1707 # CAT-CAO-HAT + 2720 4 1697 1696 1702 # CAO-CAT-CTT + 2721 5 1697 1696 1701 # CAO-CAT-CAO + 2722 6 1697 1698 1699 # CAO-CAM-CAP + 2723 7 1697 1698 1704 # CAO-CAM-HAT + 2724 8 1698 1697 1703 # CAM-CAO-HAT + 2725 9 1698 1699 1700 # CAM-CAP-CAM + 2726 10 1698 1699 1705 # CAM-CAP-HAT + 2727 11 1699 1698 1704 # CAP-CAM-HAT + 2728 6 1701 1700 1699 # CAO-CAM-CAP + 2729 11 1699 1700 1706 # CAP-CAM-HAT + 2730 10 1700 1699 1705 # CAM-CAP-HAT + 2731 8 1700 1701 1707 # CAM-CAO-HAT + 2732 7 1701 1700 1706 # CAO-CAM-HAT + 2733 4 1701 1696 1702 # CAO-CAT-CTT + 2734 12 1708 1702 1709 # HT-CTT-HT + 2735 12 1708 1702 1710 # HT-CTT-HT + 2736 12 1709 1702 1710 # HT-CTT-HT + 2737 1 1711 1712 1713 # CAT-CAO-CAM + 2738 2 1711 1712 1718 # CAT-CAO-HAT + 2739 3 1711 1717 1723 # CAT-CTT-HT + 2740 3 1711 1717 1724 # CAT-CTT-HT + 2741 3 1711 1717 1725 # CAT-CTT-HT + 2742 1 1711 1716 1715 # CAT-CAO-CAM + 2743 2 1711 1716 1722 # CAT-CAO-HAT + 2744 4 1712 1711 1717 # CAO-CAT-CTT + 2745 5 1712 1711 1716 # CAO-CAT-CAO + 2746 6 1712 1713 1714 # CAO-CAM-CAP + 2747 7 1712 1713 1719 # CAO-CAM-HAT + 2748 8 1713 1712 1718 # CAM-CAO-HAT + 2749 9 1713 1714 1715 # CAM-CAP-CAM + 2750 10 1713 1714 1720 # CAM-CAP-HAT + 2751 11 1714 1713 1719 # CAP-CAM-HAT + 2752 6 1716 1715 1714 # CAO-CAM-CAP + 2753 11 1714 1715 1721 # CAP-CAM-HAT + 2754 10 1715 1714 1720 # CAM-CAP-HAT + 2755 8 1715 1716 1722 # CAM-CAO-HAT + 2756 7 1716 1715 1721 # CAO-CAM-HAT + 2757 4 1716 1711 1717 # CAO-CAT-CTT + 2758 12 1723 1717 1724 # HT-CTT-HT + 2759 12 1723 1717 1725 # HT-CTT-HT + 2760 12 1724 1717 1725 # HT-CTT-HT + 2761 1 1726 1727 1728 # CAT-CAO-CAM + 2762 2 1726 1727 1733 # CAT-CAO-HAT + 2763 3 1726 1732 1738 # CAT-CTT-HT + 2764 3 1726 1732 1739 # CAT-CTT-HT + 2765 3 1726 1732 1740 # CAT-CTT-HT + 2766 1 1726 1731 1730 # CAT-CAO-CAM + 2767 2 1726 1731 1737 # CAT-CAO-HAT + 2768 4 1727 1726 1732 # CAO-CAT-CTT + 2769 5 1727 1726 1731 # CAO-CAT-CAO + 2770 6 1727 1728 1729 # CAO-CAM-CAP + 2771 7 1727 1728 1734 # CAO-CAM-HAT + 2772 8 1728 1727 1733 # CAM-CAO-HAT + 2773 9 1728 1729 1730 # CAM-CAP-CAM + 2774 10 1728 1729 1735 # CAM-CAP-HAT + 2775 11 1729 1728 1734 # CAP-CAM-HAT + 2776 6 1731 1730 1729 # CAO-CAM-CAP + 2777 11 1729 1730 1736 # CAP-CAM-HAT + 2778 10 1730 1729 1735 # CAM-CAP-HAT + 2779 8 1730 1731 1737 # CAM-CAO-HAT + 2780 7 1731 1730 1736 # CAO-CAM-HAT + 2781 4 1731 1726 1732 # CAO-CAT-CTT + 2782 12 1738 1732 1739 # HT-CTT-HT + 2783 12 1738 1732 1740 # HT-CTT-HT + 2784 12 1739 1732 1740 # HT-CTT-HT + 2785 1 1741 1742 1743 # CAT-CAO-CAM + 2786 2 1741 1742 1748 # CAT-CAO-HAT + 2787 3 1741 1747 1753 # CAT-CTT-HT + 2788 3 1741 1747 1754 # CAT-CTT-HT + 2789 3 1741 1747 1755 # CAT-CTT-HT + 2790 1 1741 1746 1745 # CAT-CAO-CAM + 2791 2 1741 1746 1752 # CAT-CAO-HAT + 2792 4 1742 1741 1747 # CAO-CAT-CTT + 2793 5 1742 1741 1746 # CAO-CAT-CAO + 2794 6 1742 1743 1744 # CAO-CAM-CAP + 2795 7 1742 1743 1749 # CAO-CAM-HAT + 2796 8 1743 1742 1748 # CAM-CAO-HAT + 2797 9 1743 1744 1745 # CAM-CAP-CAM + 2798 10 1743 1744 1750 # CAM-CAP-HAT + 2799 11 1744 1743 1749 # CAP-CAM-HAT + 2800 6 1746 1745 1744 # CAO-CAM-CAP + 2801 11 1744 1745 1751 # CAP-CAM-HAT + 2802 10 1745 1744 1750 # CAM-CAP-HAT + 2803 8 1745 1746 1752 # CAM-CAO-HAT + 2804 7 1746 1745 1751 # CAO-CAM-HAT + 2805 4 1746 1741 1747 # CAO-CAT-CTT + 2806 12 1753 1747 1754 # HT-CTT-HT + 2807 12 1753 1747 1755 # HT-CTT-HT + 2808 12 1754 1747 1755 # HT-CTT-HT + 2809 1 1756 1757 1758 # CAT-CAO-CAM + 2810 2 1756 1757 1763 # CAT-CAO-HAT + 2811 3 1756 1762 1768 # CAT-CTT-HT + 2812 3 1756 1762 1769 # CAT-CTT-HT + 2813 3 1756 1762 1770 # CAT-CTT-HT + 2814 1 1756 1761 1760 # CAT-CAO-CAM + 2815 2 1756 1761 1767 # CAT-CAO-HAT + 2816 4 1757 1756 1762 # CAO-CAT-CTT + 2817 5 1757 1756 1761 # CAO-CAT-CAO + 2818 6 1757 1758 1759 # CAO-CAM-CAP + 2819 7 1757 1758 1764 # CAO-CAM-HAT + 2820 8 1758 1757 1763 # CAM-CAO-HAT + 2821 9 1758 1759 1760 # CAM-CAP-CAM + 2822 10 1758 1759 1765 # CAM-CAP-HAT + 2823 11 1759 1758 1764 # CAP-CAM-HAT + 2824 6 1761 1760 1759 # CAO-CAM-CAP + 2825 11 1759 1760 1766 # CAP-CAM-HAT + 2826 10 1760 1759 1765 # CAM-CAP-HAT + 2827 8 1760 1761 1767 # CAM-CAO-HAT + 2828 7 1761 1760 1766 # CAO-CAM-HAT + 2829 4 1761 1756 1762 # CAO-CAT-CTT + 2830 12 1768 1762 1769 # HT-CTT-HT + 2831 12 1768 1762 1770 # HT-CTT-HT + 2832 12 1769 1762 1770 # HT-CTT-HT + 2833 1 1771 1772 1773 # CAT-CAO-CAM + 2834 2 1771 1772 1778 # CAT-CAO-HAT + 2835 3 1771 1777 1783 # CAT-CTT-HT + 2836 3 1771 1777 1784 # CAT-CTT-HT + 2837 3 1771 1777 1785 # CAT-CTT-HT + 2838 1 1771 1776 1775 # CAT-CAO-CAM + 2839 2 1771 1776 1782 # CAT-CAO-HAT + 2840 4 1772 1771 1777 # CAO-CAT-CTT + 2841 5 1772 1771 1776 # CAO-CAT-CAO + 2842 6 1772 1773 1774 # CAO-CAM-CAP + 2843 7 1772 1773 1779 # CAO-CAM-HAT + 2844 8 1773 1772 1778 # CAM-CAO-HAT + 2845 9 1773 1774 1775 # CAM-CAP-CAM + 2846 10 1773 1774 1780 # CAM-CAP-HAT + 2847 11 1774 1773 1779 # CAP-CAM-HAT + 2848 6 1776 1775 1774 # CAO-CAM-CAP + 2849 11 1774 1775 1781 # CAP-CAM-HAT + 2850 10 1775 1774 1780 # CAM-CAP-HAT + 2851 8 1775 1776 1782 # CAM-CAO-HAT + 2852 7 1776 1775 1781 # CAO-CAM-HAT + 2853 4 1776 1771 1777 # CAO-CAT-CTT + 2854 12 1783 1777 1784 # HT-CTT-HT + 2855 12 1783 1777 1785 # HT-CTT-HT + 2856 12 1784 1777 1785 # HT-CTT-HT + 2857 1 1786 1787 1788 # CAT-CAO-CAM + 2858 2 1786 1787 1793 # CAT-CAO-HAT + 2859 3 1786 1792 1798 # CAT-CTT-HT + 2860 3 1786 1792 1799 # CAT-CTT-HT + 2861 3 1786 1792 1800 # CAT-CTT-HT + 2862 1 1786 1791 1790 # CAT-CAO-CAM + 2863 2 1786 1791 1797 # CAT-CAO-HAT + 2864 4 1787 1786 1792 # CAO-CAT-CTT + 2865 5 1787 1786 1791 # CAO-CAT-CAO + 2866 6 1787 1788 1789 # CAO-CAM-CAP + 2867 7 1787 1788 1794 # CAO-CAM-HAT + 2868 8 1788 1787 1793 # CAM-CAO-HAT + 2869 9 1788 1789 1790 # CAM-CAP-CAM + 2870 10 1788 1789 1795 # CAM-CAP-HAT + 2871 11 1789 1788 1794 # CAP-CAM-HAT + 2872 6 1791 1790 1789 # CAO-CAM-CAP + 2873 11 1789 1790 1796 # CAP-CAM-HAT + 2874 10 1790 1789 1795 # CAM-CAP-HAT + 2875 8 1790 1791 1797 # CAM-CAO-HAT + 2876 7 1791 1790 1796 # CAO-CAM-HAT + 2877 4 1791 1786 1792 # CAO-CAT-CTT + 2878 12 1798 1792 1799 # HT-CTT-HT + 2879 12 1798 1792 1800 # HT-CTT-HT + 2880 12 1799 1792 1800 # HT-CTT-HT + 2881 1 1801 1802 1803 # CAT-CAO-CAM + 2882 2 1801 1802 1808 # CAT-CAO-HAT + 2883 3 1801 1807 1813 # CAT-CTT-HT + 2884 3 1801 1807 1814 # CAT-CTT-HT + 2885 3 1801 1807 1815 # CAT-CTT-HT + 2886 1 1801 1806 1805 # CAT-CAO-CAM + 2887 2 1801 1806 1812 # CAT-CAO-HAT + 2888 4 1802 1801 1807 # CAO-CAT-CTT + 2889 5 1802 1801 1806 # CAO-CAT-CAO + 2890 6 1802 1803 1804 # CAO-CAM-CAP + 2891 7 1802 1803 1809 # CAO-CAM-HAT + 2892 8 1803 1802 1808 # CAM-CAO-HAT + 2893 9 1803 1804 1805 # CAM-CAP-CAM + 2894 10 1803 1804 1810 # CAM-CAP-HAT + 2895 11 1804 1803 1809 # CAP-CAM-HAT + 2896 6 1806 1805 1804 # CAO-CAM-CAP + 2897 11 1804 1805 1811 # CAP-CAM-HAT + 2898 10 1805 1804 1810 # CAM-CAP-HAT + 2899 8 1805 1806 1812 # CAM-CAO-HAT + 2900 7 1806 1805 1811 # CAO-CAM-HAT + 2901 4 1806 1801 1807 # CAO-CAT-CTT + 2902 12 1813 1807 1814 # HT-CTT-HT + 2903 12 1813 1807 1815 # HT-CTT-HT + 2904 12 1814 1807 1815 # HT-CTT-HT + 2905 1 1816 1817 1818 # CAT-CAO-CAM + 2906 2 1816 1817 1823 # CAT-CAO-HAT + 2907 3 1816 1822 1828 # CAT-CTT-HT + 2908 3 1816 1822 1829 # CAT-CTT-HT + 2909 3 1816 1822 1830 # CAT-CTT-HT + 2910 1 1816 1821 1820 # CAT-CAO-CAM + 2911 2 1816 1821 1827 # CAT-CAO-HAT + 2912 4 1817 1816 1822 # CAO-CAT-CTT + 2913 5 1817 1816 1821 # CAO-CAT-CAO + 2914 6 1817 1818 1819 # CAO-CAM-CAP + 2915 7 1817 1818 1824 # CAO-CAM-HAT + 2916 8 1818 1817 1823 # CAM-CAO-HAT + 2917 9 1818 1819 1820 # CAM-CAP-CAM + 2918 10 1818 1819 1825 # CAM-CAP-HAT + 2919 11 1819 1818 1824 # CAP-CAM-HAT + 2920 6 1821 1820 1819 # CAO-CAM-CAP + 2921 11 1819 1820 1826 # CAP-CAM-HAT + 2922 10 1820 1819 1825 # CAM-CAP-HAT + 2923 8 1820 1821 1827 # CAM-CAO-HAT + 2924 7 1821 1820 1826 # CAO-CAM-HAT + 2925 4 1821 1816 1822 # CAO-CAT-CTT + 2926 12 1828 1822 1829 # HT-CTT-HT + 2927 12 1828 1822 1830 # HT-CTT-HT + 2928 12 1829 1822 1830 # HT-CTT-HT + 2929 1 1831 1832 1833 # CAT-CAO-CAM + 2930 2 1831 1832 1838 # CAT-CAO-HAT + 2931 3 1831 1837 1843 # CAT-CTT-HT + 2932 3 1831 1837 1844 # CAT-CTT-HT + 2933 3 1831 1837 1845 # CAT-CTT-HT + 2934 1 1831 1836 1835 # CAT-CAO-CAM + 2935 2 1831 1836 1842 # CAT-CAO-HAT + 2936 4 1832 1831 1837 # CAO-CAT-CTT + 2937 5 1832 1831 1836 # CAO-CAT-CAO + 2938 6 1832 1833 1834 # CAO-CAM-CAP + 2939 7 1832 1833 1839 # CAO-CAM-HAT + 2940 8 1833 1832 1838 # CAM-CAO-HAT + 2941 9 1833 1834 1835 # CAM-CAP-CAM + 2942 10 1833 1834 1840 # CAM-CAP-HAT + 2943 11 1834 1833 1839 # CAP-CAM-HAT + 2944 6 1836 1835 1834 # CAO-CAM-CAP + 2945 11 1834 1835 1841 # CAP-CAM-HAT + 2946 10 1835 1834 1840 # CAM-CAP-HAT + 2947 8 1835 1836 1842 # CAM-CAO-HAT + 2948 7 1836 1835 1841 # CAO-CAM-HAT + 2949 4 1836 1831 1837 # CAO-CAT-CTT + 2950 12 1843 1837 1844 # HT-CTT-HT + 2951 12 1843 1837 1845 # HT-CTT-HT + 2952 12 1844 1837 1845 # HT-CTT-HT + 2953 1 1846 1847 1848 # CAT-CAO-CAM + 2954 2 1846 1847 1853 # CAT-CAO-HAT + 2955 3 1846 1852 1858 # CAT-CTT-HT + 2956 3 1846 1852 1859 # CAT-CTT-HT + 2957 3 1846 1852 1860 # CAT-CTT-HT + 2958 1 1846 1851 1850 # CAT-CAO-CAM + 2959 2 1846 1851 1857 # CAT-CAO-HAT + 2960 4 1847 1846 1852 # CAO-CAT-CTT + 2961 5 1847 1846 1851 # CAO-CAT-CAO + 2962 6 1847 1848 1849 # CAO-CAM-CAP + 2963 7 1847 1848 1854 # CAO-CAM-HAT + 2964 8 1848 1847 1853 # CAM-CAO-HAT + 2965 9 1848 1849 1850 # CAM-CAP-CAM + 2966 10 1848 1849 1855 # CAM-CAP-HAT + 2967 11 1849 1848 1854 # CAP-CAM-HAT + 2968 6 1851 1850 1849 # CAO-CAM-CAP + 2969 11 1849 1850 1856 # CAP-CAM-HAT + 2970 10 1850 1849 1855 # CAM-CAP-HAT + 2971 8 1850 1851 1857 # CAM-CAO-HAT + 2972 7 1851 1850 1856 # CAO-CAM-HAT + 2973 4 1851 1846 1852 # CAO-CAT-CTT + 2974 12 1858 1852 1859 # HT-CTT-HT + 2975 12 1858 1852 1860 # HT-CTT-HT + 2976 12 1859 1852 1860 # HT-CTT-HT + 2977 1 1861 1862 1863 # CAT-CAO-CAM + 2978 2 1861 1862 1868 # CAT-CAO-HAT + 2979 3 1861 1867 1873 # CAT-CTT-HT + 2980 3 1861 1867 1874 # CAT-CTT-HT + 2981 3 1861 1867 1875 # CAT-CTT-HT + 2982 1 1861 1866 1865 # CAT-CAO-CAM + 2983 2 1861 1866 1872 # CAT-CAO-HAT + 2984 4 1862 1861 1867 # CAO-CAT-CTT + 2985 5 1862 1861 1866 # CAO-CAT-CAO + 2986 6 1862 1863 1864 # CAO-CAM-CAP + 2987 7 1862 1863 1869 # CAO-CAM-HAT + 2988 8 1863 1862 1868 # CAM-CAO-HAT + 2989 9 1863 1864 1865 # CAM-CAP-CAM + 2990 10 1863 1864 1870 # CAM-CAP-HAT + 2991 11 1864 1863 1869 # CAP-CAM-HAT + 2992 6 1866 1865 1864 # CAO-CAM-CAP + 2993 11 1864 1865 1871 # CAP-CAM-HAT + 2994 10 1865 1864 1870 # CAM-CAP-HAT + 2995 8 1865 1866 1872 # CAM-CAO-HAT + 2996 7 1866 1865 1871 # CAO-CAM-HAT + 2997 4 1866 1861 1867 # CAO-CAT-CTT + 2998 12 1873 1867 1874 # HT-CTT-HT + 2999 12 1873 1867 1875 # HT-CTT-HT + 3000 12 1874 1867 1875 # HT-CTT-HT + 3001 1 1876 1877 1878 # CAT-CAO-CAM + 3002 2 1876 1877 1883 # CAT-CAO-HAT + 3003 3 1876 1882 1888 # CAT-CTT-HT + 3004 3 1876 1882 1889 # CAT-CTT-HT + 3005 3 1876 1882 1890 # CAT-CTT-HT + 3006 1 1876 1881 1880 # CAT-CAO-CAM + 3007 2 1876 1881 1887 # CAT-CAO-HAT + 3008 4 1877 1876 1882 # CAO-CAT-CTT + 3009 5 1877 1876 1881 # CAO-CAT-CAO + 3010 6 1877 1878 1879 # CAO-CAM-CAP + 3011 7 1877 1878 1884 # CAO-CAM-HAT + 3012 8 1878 1877 1883 # CAM-CAO-HAT + 3013 9 1878 1879 1880 # CAM-CAP-CAM + 3014 10 1878 1879 1885 # CAM-CAP-HAT + 3015 11 1879 1878 1884 # CAP-CAM-HAT + 3016 6 1881 1880 1879 # CAO-CAM-CAP + 3017 11 1879 1880 1886 # CAP-CAM-HAT + 3018 10 1880 1879 1885 # CAM-CAP-HAT + 3019 8 1880 1881 1887 # CAM-CAO-HAT + 3020 7 1881 1880 1886 # CAO-CAM-HAT + 3021 4 1881 1876 1882 # CAO-CAT-CTT + 3022 12 1888 1882 1889 # HT-CTT-HT + 3023 12 1888 1882 1890 # HT-CTT-HT + 3024 12 1889 1882 1890 # HT-CTT-HT + 3025 1 1891 1892 1893 # CAT-CAO-CAM + 3026 2 1891 1892 1898 # CAT-CAO-HAT + 3027 3 1891 1897 1903 # CAT-CTT-HT + 3028 3 1891 1897 1904 # CAT-CTT-HT + 3029 3 1891 1897 1905 # CAT-CTT-HT + 3030 1 1891 1896 1895 # CAT-CAO-CAM + 3031 2 1891 1896 1902 # CAT-CAO-HAT + 3032 4 1892 1891 1897 # CAO-CAT-CTT + 3033 5 1892 1891 1896 # CAO-CAT-CAO + 3034 6 1892 1893 1894 # CAO-CAM-CAP + 3035 7 1892 1893 1899 # CAO-CAM-HAT + 3036 8 1893 1892 1898 # CAM-CAO-HAT + 3037 9 1893 1894 1895 # CAM-CAP-CAM + 3038 10 1893 1894 1900 # CAM-CAP-HAT + 3039 11 1894 1893 1899 # CAP-CAM-HAT + 3040 6 1896 1895 1894 # CAO-CAM-CAP + 3041 11 1894 1895 1901 # CAP-CAM-HAT + 3042 10 1895 1894 1900 # CAM-CAP-HAT + 3043 8 1895 1896 1902 # CAM-CAO-HAT + 3044 7 1896 1895 1901 # CAO-CAM-HAT + 3045 4 1896 1891 1897 # CAO-CAT-CTT + 3046 12 1903 1897 1904 # HT-CTT-HT + 3047 12 1903 1897 1905 # HT-CTT-HT + 3048 12 1904 1897 1905 # HT-CTT-HT + 3049 1 1906 1907 1908 # CAT-CAO-CAM + 3050 2 1906 1907 1913 # CAT-CAO-HAT + 3051 3 1906 1912 1918 # CAT-CTT-HT + 3052 3 1906 1912 1919 # CAT-CTT-HT + 3053 3 1906 1912 1920 # CAT-CTT-HT + 3054 1 1906 1911 1910 # CAT-CAO-CAM + 3055 2 1906 1911 1917 # CAT-CAO-HAT + 3056 4 1907 1906 1912 # CAO-CAT-CTT + 3057 5 1907 1906 1911 # CAO-CAT-CAO + 3058 6 1907 1908 1909 # CAO-CAM-CAP + 3059 7 1907 1908 1914 # CAO-CAM-HAT + 3060 8 1908 1907 1913 # CAM-CAO-HAT + 3061 9 1908 1909 1910 # CAM-CAP-CAM + 3062 10 1908 1909 1915 # CAM-CAP-HAT + 3063 11 1909 1908 1914 # CAP-CAM-HAT + 3064 6 1911 1910 1909 # CAO-CAM-CAP + 3065 11 1909 1910 1916 # CAP-CAM-HAT + 3066 10 1910 1909 1915 # CAM-CAP-HAT + 3067 8 1910 1911 1917 # CAM-CAO-HAT + 3068 7 1911 1910 1916 # CAO-CAM-HAT + 3069 4 1911 1906 1912 # CAO-CAT-CTT + 3070 12 1918 1912 1919 # HT-CTT-HT + 3071 12 1918 1912 1920 # HT-CTT-HT + 3072 12 1919 1912 1920 # HT-CTT-HT + 3073 1 1921 1922 1923 # CAT-CAO-CAM + 3074 2 1921 1922 1928 # CAT-CAO-HAT + 3075 3 1921 1927 1933 # CAT-CTT-HT + 3076 3 1921 1927 1934 # CAT-CTT-HT + 3077 3 1921 1927 1935 # CAT-CTT-HT + 3078 1 1921 1926 1925 # CAT-CAO-CAM + 3079 2 1921 1926 1932 # CAT-CAO-HAT + 3080 4 1922 1921 1927 # CAO-CAT-CTT + 3081 5 1922 1921 1926 # CAO-CAT-CAO + 3082 6 1922 1923 1924 # CAO-CAM-CAP + 3083 7 1922 1923 1929 # CAO-CAM-HAT + 3084 8 1923 1922 1928 # CAM-CAO-HAT + 3085 9 1923 1924 1925 # CAM-CAP-CAM + 3086 10 1923 1924 1930 # CAM-CAP-HAT + 3087 11 1924 1923 1929 # CAP-CAM-HAT + 3088 6 1926 1925 1924 # CAO-CAM-CAP + 3089 11 1924 1925 1931 # CAP-CAM-HAT + 3090 10 1925 1924 1930 # CAM-CAP-HAT + 3091 8 1925 1926 1932 # CAM-CAO-HAT + 3092 7 1926 1925 1931 # CAO-CAM-HAT + 3093 4 1926 1921 1927 # CAO-CAT-CTT + 3094 12 1933 1927 1934 # HT-CTT-HT + 3095 12 1933 1927 1935 # HT-CTT-HT + 3096 12 1934 1927 1935 # HT-CTT-HT + 3097 1 1936 1937 1938 # CAT-CAO-CAM + 3098 2 1936 1937 1943 # CAT-CAO-HAT + 3099 3 1936 1942 1948 # CAT-CTT-HT + 3100 3 1936 1942 1949 # CAT-CTT-HT + 3101 3 1936 1942 1950 # CAT-CTT-HT + 3102 1 1936 1941 1940 # CAT-CAO-CAM + 3103 2 1936 1941 1947 # CAT-CAO-HAT + 3104 4 1937 1936 1942 # CAO-CAT-CTT + 3105 5 1937 1936 1941 # CAO-CAT-CAO + 3106 6 1937 1938 1939 # CAO-CAM-CAP + 3107 7 1937 1938 1944 # CAO-CAM-HAT + 3108 8 1938 1937 1943 # CAM-CAO-HAT + 3109 9 1938 1939 1940 # CAM-CAP-CAM + 3110 10 1938 1939 1945 # CAM-CAP-HAT + 3111 11 1939 1938 1944 # CAP-CAM-HAT + 3112 6 1941 1940 1939 # CAO-CAM-CAP + 3113 11 1939 1940 1946 # CAP-CAM-HAT + 3114 10 1940 1939 1945 # CAM-CAP-HAT + 3115 8 1940 1941 1947 # CAM-CAO-HAT + 3116 7 1941 1940 1946 # CAO-CAM-HAT + 3117 4 1941 1936 1942 # CAO-CAT-CTT + 3118 12 1948 1942 1949 # HT-CTT-HT + 3119 12 1948 1942 1950 # HT-CTT-HT + 3120 12 1949 1942 1950 # HT-CTT-HT + 3121 1 1951 1952 1953 # CAT-CAO-CAM + 3122 2 1951 1952 1958 # CAT-CAO-HAT + 3123 3 1951 1957 1963 # CAT-CTT-HT + 3124 3 1951 1957 1964 # CAT-CTT-HT + 3125 3 1951 1957 1965 # CAT-CTT-HT + 3126 1 1951 1956 1955 # CAT-CAO-CAM + 3127 2 1951 1956 1962 # CAT-CAO-HAT + 3128 4 1952 1951 1957 # CAO-CAT-CTT + 3129 5 1952 1951 1956 # CAO-CAT-CAO + 3130 6 1952 1953 1954 # CAO-CAM-CAP + 3131 7 1952 1953 1959 # CAO-CAM-HAT + 3132 8 1953 1952 1958 # CAM-CAO-HAT + 3133 9 1953 1954 1955 # CAM-CAP-CAM + 3134 10 1953 1954 1960 # CAM-CAP-HAT + 3135 11 1954 1953 1959 # CAP-CAM-HAT + 3136 6 1956 1955 1954 # CAO-CAM-CAP + 3137 11 1954 1955 1961 # CAP-CAM-HAT + 3138 10 1955 1954 1960 # CAM-CAP-HAT + 3139 8 1955 1956 1962 # CAM-CAO-HAT + 3140 7 1956 1955 1961 # CAO-CAM-HAT + 3141 4 1956 1951 1957 # CAO-CAT-CTT + 3142 12 1963 1957 1964 # HT-CTT-HT + 3143 12 1963 1957 1965 # HT-CTT-HT + 3144 12 1964 1957 1965 # HT-CTT-HT + 3145 1 1966 1967 1968 # CAT-CAO-CAM + 3146 2 1966 1967 1973 # CAT-CAO-HAT + 3147 3 1966 1972 1978 # CAT-CTT-HT + 3148 3 1966 1972 1979 # CAT-CTT-HT + 3149 3 1966 1972 1980 # CAT-CTT-HT + 3150 1 1966 1971 1970 # CAT-CAO-CAM + 3151 2 1966 1971 1977 # CAT-CAO-HAT + 3152 4 1967 1966 1972 # CAO-CAT-CTT + 3153 5 1967 1966 1971 # CAO-CAT-CAO + 3154 6 1967 1968 1969 # CAO-CAM-CAP + 3155 7 1967 1968 1974 # CAO-CAM-HAT + 3156 8 1968 1967 1973 # CAM-CAO-HAT + 3157 9 1968 1969 1970 # CAM-CAP-CAM + 3158 10 1968 1969 1975 # CAM-CAP-HAT + 3159 11 1969 1968 1974 # CAP-CAM-HAT + 3160 6 1971 1970 1969 # CAO-CAM-CAP + 3161 11 1969 1970 1976 # CAP-CAM-HAT + 3162 10 1970 1969 1975 # CAM-CAP-HAT + 3163 8 1970 1971 1977 # CAM-CAO-HAT + 3164 7 1971 1970 1976 # CAO-CAM-HAT + 3165 4 1971 1966 1972 # CAO-CAT-CTT + 3166 12 1978 1972 1979 # HT-CTT-HT + 3167 12 1978 1972 1980 # HT-CTT-HT + 3168 12 1979 1972 1980 # HT-CTT-HT + 3169 1 1981 1982 1983 # CAT-CAO-CAM + 3170 2 1981 1982 1988 # CAT-CAO-HAT + 3171 3 1981 1987 1993 # CAT-CTT-HT + 3172 3 1981 1987 1994 # CAT-CTT-HT + 3173 3 1981 1987 1995 # CAT-CTT-HT + 3174 1 1981 1986 1985 # CAT-CAO-CAM + 3175 2 1981 1986 1992 # CAT-CAO-HAT + 3176 4 1982 1981 1987 # CAO-CAT-CTT + 3177 5 1982 1981 1986 # CAO-CAT-CAO + 3178 6 1982 1983 1984 # CAO-CAM-CAP + 3179 7 1982 1983 1989 # CAO-CAM-HAT + 3180 8 1983 1982 1988 # CAM-CAO-HAT + 3181 9 1983 1984 1985 # CAM-CAP-CAM + 3182 10 1983 1984 1990 # CAM-CAP-HAT + 3183 11 1984 1983 1989 # CAP-CAM-HAT + 3184 6 1986 1985 1984 # CAO-CAM-CAP + 3185 11 1984 1985 1991 # CAP-CAM-HAT + 3186 10 1985 1984 1990 # CAM-CAP-HAT + 3187 8 1985 1986 1992 # CAM-CAO-HAT + 3188 7 1986 1985 1991 # CAO-CAM-HAT + 3189 4 1986 1981 1987 # CAO-CAT-CTT + 3190 12 1993 1987 1994 # HT-CTT-HT + 3191 12 1993 1987 1995 # HT-CTT-HT + 3192 12 1994 1987 1995 # HT-CTT-HT + 3193 1 1996 1997 1998 # CAT-CAO-CAM + 3194 2 1996 1997 2003 # CAT-CAO-HAT + 3195 3 1996 2002 2008 # CAT-CTT-HT + 3196 3 1996 2002 2009 # CAT-CTT-HT + 3197 3 1996 2002 2010 # CAT-CTT-HT + 3198 1 1996 2001 2000 # CAT-CAO-CAM + 3199 2 1996 2001 2007 # CAT-CAO-HAT + 3200 4 1997 1996 2002 # CAO-CAT-CTT + 3201 5 1997 1996 2001 # CAO-CAT-CAO + 3202 6 1997 1998 1999 # CAO-CAM-CAP + 3203 7 1997 1998 2004 # CAO-CAM-HAT + 3204 8 1998 1997 2003 # CAM-CAO-HAT + 3205 9 1998 1999 2000 # CAM-CAP-CAM + 3206 10 1998 1999 2005 # CAM-CAP-HAT + 3207 11 1999 1998 2004 # CAP-CAM-HAT + 3208 6 2001 2000 1999 # CAO-CAM-CAP + 3209 11 1999 2000 2006 # CAP-CAM-HAT + 3210 10 2000 1999 2005 # CAM-CAP-HAT + 3211 8 2000 2001 2007 # CAM-CAO-HAT + 3212 7 2001 2000 2006 # CAO-CAM-HAT + 3213 4 2001 1996 2002 # CAO-CAT-CTT + 3214 12 2008 2002 2009 # HT-CTT-HT + 3215 12 2008 2002 2010 # HT-CTT-HT + 3216 12 2009 2002 2010 # HT-CTT-HT + 3217 1 2011 2012 2013 # CAT-CAO-CAM + 3218 2 2011 2012 2018 # CAT-CAO-HAT + 3219 3 2011 2017 2023 # CAT-CTT-HT + 3220 3 2011 2017 2024 # CAT-CTT-HT + 3221 3 2011 2017 2025 # CAT-CTT-HT + 3222 1 2011 2016 2015 # CAT-CAO-CAM + 3223 2 2011 2016 2022 # CAT-CAO-HAT + 3224 4 2012 2011 2017 # CAO-CAT-CTT + 3225 5 2012 2011 2016 # CAO-CAT-CAO + 3226 6 2012 2013 2014 # CAO-CAM-CAP + 3227 7 2012 2013 2019 # CAO-CAM-HAT + 3228 8 2013 2012 2018 # CAM-CAO-HAT + 3229 9 2013 2014 2015 # CAM-CAP-CAM + 3230 10 2013 2014 2020 # CAM-CAP-HAT + 3231 11 2014 2013 2019 # CAP-CAM-HAT + 3232 6 2016 2015 2014 # CAO-CAM-CAP + 3233 11 2014 2015 2021 # CAP-CAM-HAT + 3234 10 2015 2014 2020 # CAM-CAP-HAT + 3235 8 2015 2016 2022 # CAM-CAO-HAT + 3236 7 2016 2015 2021 # CAO-CAM-HAT + 3237 4 2016 2011 2017 # CAO-CAT-CTT + 3238 12 2023 2017 2024 # HT-CTT-HT + 3239 12 2023 2017 2025 # HT-CTT-HT + 3240 12 2024 2017 2025 # HT-CTT-HT + 3241 1 2026 2027 2028 # CAT-CAO-CAM + 3242 2 2026 2027 2033 # CAT-CAO-HAT + 3243 3 2026 2032 2038 # CAT-CTT-HT + 3244 3 2026 2032 2039 # CAT-CTT-HT + 3245 3 2026 2032 2040 # CAT-CTT-HT + 3246 1 2026 2031 2030 # CAT-CAO-CAM + 3247 2 2026 2031 2037 # CAT-CAO-HAT + 3248 4 2027 2026 2032 # CAO-CAT-CTT + 3249 5 2027 2026 2031 # CAO-CAT-CAO + 3250 6 2027 2028 2029 # CAO-CAM-CAP + 3251 7 2027 2028 2034 # CAO-CAM-HAT + 3252 8 2028 2027 2033 # CAM-CAO-HAT + 3253 9 2028 2029 2030 # CAM-CAP-CAM + 3254 10 2028 2029 2035 # CAM-CAP-HAT + 3255 11 2029 2028 2034 # CAP-CAM-HAT + 3256 6 2031 2030 2029 # CAO-CAM-CAP + 3257 11 2029 2030 2036 # CAP-CAM-HAT + 3258 10 2030 2029 2035 # CAM-CAP-HAT + 3259 8 2030 2031 2037 # CAM-CAO-HAT + 3260 7 2031 2030 2036 # CAO-CAM-HAT + 3261 4 2031 2026 2032 # CAO-CAT-CTT + 3262 12 2038 2032 2039 # HT-CTT-HT + 3263 12 2038 2032 2040 # HT-CTT-HT + 3264 12 2039 2032 2040 # HT-CTT-HT + 3265 1 2041 2042 2043 # CAT-CAO-CAM + 3266 2 2041 2042 2048 # CAT-CAO-HAT + 3267 3 2041 2047 2053 # CAT-CTT-HT + 3268 3 2041 2047 2054 # CAT-CTT-HT + 3269 3 2041 2047 2055 # CAT-CTT-HT + 3270 1 2041 2046 2045 # CAT-CAO-CAM + 3271 2 2041 2046 2052 # CAT-CAO-HAT + 3272 4 2042 2041 2047 # CAO-CAT-CTT + 3273 5 2042 2041 2046 # CAO-CAT-CAO + 3274 6 2042 2043 2044 # CAO-CAM-CAP + 3275 7 2042 2043 2049 # CAO-CAM-HAT + 3276 8 2043 2042 2048 # CAM-CAO-HAT + 3277 9 2043 2044 2045 # CAM-CAP-CAM + 3278 10 2043 2044 2050 # CAM-CAP-HAT + 3279 11 2044 2043 2049 # CAP-CAM-HAT + 3280 6 2046 2045 2044 # CAO-CAM-CAP + 3281 11 2044 2045 2051 # CAP-CAM-HAT + 3282 10 2045 2044 2050 # CAM-CAP-HAT + 3283 8 2045 2046 2052 # CAM-CAO-HAT + 3284 7 2046 2045 2051 # CAO-CAM-HAT + 3285 4 2046 2041 2047 # CAO-CAT-CTT + 3286 12 2053 2047 2054 # HT-CTT-HT + 3287 12 2053 2047 2055 # HT-CTT-HT + 3288 12 2054 2047 2055 # HT-CTT-HT + 3289 1 2056 2057 2058 # CAT-CAO-CAM + 3290 2 2056 2057 2063 # CAT-CAO-HAT + 3291 3 2056 2062 2068 # CAT-CTT-HT + 3292 3 2056 2062 2069 # CAT-CTT-HT + 3293 3 2056 2062 2070 # CAT-CTT-HT + 3294 1 2056 2061 2060 # CAT-CAO-CAM + 3295 2 2056 2061 2067 # CAT-CAO-HAT + 3296 4 2057 2056 2062 # CAO-CAT-CTT + 3297 5 2057 2056 2061 # CAO-CAT-CAO + 3298 6 2057 2058 2059 # CAO-CAM-CAP + 3299 7 2057 2058 2064 # CAO-CAM-HAT + 3300 8 2058 2057 2063 # CAM-CAO-HAT + 3301 9 2058 2059 2060 # CAM-CAP-CAM + 3302 10 2058 2059 2065 # CAM-CAP-HAT + 3303 11 2059 2058 2064 # CAP-CAM-HAT + 3304 6 2061 2060 2059 # CAO-CAM-CAP + 3305 11 2059 2060 2066 # CAP-CAM-HAT + 3306 10 2060 2059 2065 # CAM-CAP-HAT + 3307 8 2060 2061 2067 # CAM-CAO-HAT + 3308 7 2061 2060 2066 # CAO-CAM-HAT + 3309 4 2061 2056 2062 # CAO-CAT-CTT + 3310 12 2068 2062 2069 # HT-CTT-HT + 3311 12 2068 2062 2070 # HT-CTT-HT + 3312 12 2069 2062 2070 # HT-CTT-HT + 3313 1 2071 2072 2073 # CAT-CAO-CAM + 3314 2 2071 2072 2078 # CAT-CAO-HAT + 3315 3 2071 2077 2083 # CAT-CTT-HT + 3316 3 2071 2077 2084 # CAT-CTT-HT + 3317 3 2071 2077 2085 # CAT-CTT-HT + 3318 1 2071 2076 2075 # CAT-CAO-CAM + 3319 2 2071 2076 2082 # CAT-CAO-HAT + 3320 4 2072 2071 2077 # CAO-CAT-CTT + 3321 5 2072 2071 2076 # CAO-CAT-CAO + 3322 6 2072 2073 2074 # CAO-CAM-CAP + 3323 7 2072 2073 2079 # CAO-CAM-HAT + 3324 8 2073 2072 2078 # CAM-CAO-HAT + 3325 9 2073 2074 2075 # CAM-CAP-CAM + 3326 10 2073 2074 2080 # CAM-CAP-HAT + 3327 11 2074 2073 2079 # CAP-CAM-HAT + 3328 6 2076 2075 2074 # CAO-CAM-CAP + 3329 11 2074 2075 2081 # CAP-CAM-HAT + 3330 10 2075 2074 2080 # CAM-CAP-HAT + 3331 8 2075 2076 2082 # CAM-CAO-HAT + 3332 7 2076 2075 2081 # CAO-CAM-HAT + 3333 4 2076 2071 2077 # CAO-CAT-CTT + 3334 12 2083 2077 2084 # HT-CTT-HT + 3335 12 2083 2077 2085 # HT-CTT-HT + 3336 12 2084 2077 2085 # HT-CTT-HT + 3337 1 2086 2087 2088 # CAT-CAO-CAM + 3338 2 2086 2087 2093 # CAT-CAO-HAT + 3339 3 2086 2092 2098 # CAT-CTT-HT + 3340 3 2086 2092 2099 # CAT-CTT-HT + 3341 3 2086 2092 2100 # CAT-CTT-HT + 3342 1 2086 2091 2090 # CAT-CAO-CAM + 3343 2 2086 2091 2097 # CAT-CAO-HAT + 3344 4 2087 2086 2092 # CAO-CAT-CTT + 3345 5 2087 2086 2091 # CAO-CAT-CAO + 3346 6 2087 2088 2089 # CAO-CAM-CAP + 3347 7 2087 2088 2094 # CAO-CAM-HAT + 3348 8 2088 2087 2093 # CAM-CAO-HAT + 3349 9 2088 2089 2090 # CAM-CAP-CAM + 3350 10 2088 2089 2095 # CAM-CAP-HAT + 3351 11 2089 2088 2094 # CAP-CAM-HAT + 3352 6 2091 2090 2089 # CAO-CAM-CAP + 3353 11 2089 2090 2096 # CAP-CAM-HAT + 3354 10 2090 2089 2095 # CAM-CAP-HAT + 3355 8 2090 2091 2097 # CAM-CAO-HAT + 3356 7 2091 2090 2096 # CAO-CAM-HAT + 3357 4 2091 2086 2092 # CAO-CAT-CTT + 3358 12 2098 2092 2099 # HT-CTT-HT + 3359 12 2098 2092 2100 # HT-CTT-HT + 3360 12 2099 2092 2100 # HT-CTT-HT + 3361 1 2101 2102 2103 # CAT-CAO-CAM + 3362 2 2101 2102 2108 # CAT-CAO-HAT + 3363 3 2101 2107 2113 # CAT-CTT-HT + 3364 3 2101 2107 2114 # CAT-CTT-HT + 3365 3 2101 2107 2115 # CAT-CTT-HT + 3366 1 2101 2106 2105 # CAT-CAO-CAM + 3367 2 2101 2106 2112 # CAT-CAO-HAT + 3368 4 2102 2101 2107 # CAO-CAT-CTT + 3369 5 2102 2101 2106 # CAO-CAT-CAO + 3370 6 2102 2103 2104 # CAO-CAM-CAP + 3371 7 2102 2103 2109 # CAO-CAM-HAT + 3372 8 2103 2102 2108 # CAM-CAO-HAT + 3373 9 2103 2104 2105 # CAM-CAP-CAM + 3374 10 2103 2104 2110 # CAM-CAP-HAT + 3375 11 2104 2103 2109 # CAP-CAM-HAT + 3376 6 2106 2105 2104 # CAO-CAM-CAP + 3377 11 2104 2105 2111 # CAP-CAM-HAT + 3378 10 2105 2104 2110 # CAM-CAP-HAT + 3379 8 2105 2106 2112 # CAM-CAO-HAT + 3380 7 2106 2105 2111 # CAO-CAM-HAT + 3381 4 2106 2101 2107 # CAO-CAT-CTT + 3382 12 2113 2107 2114 # HT-CTT-HT + 3383 12 2113 2107 2115 # HT-CTT-HT + 3384 12 2114 2107 2115 # HT-CTT-HT + 3385 1 2116 2117 2118 # CAT-CAO-CAM + 3386 2 2116 2117 2123 # CAT-CAO-HAT + 3387 3 2116 2122 2128 # CAT-CTT-HT + 3388 3 2116 2122 2129 # CAT-CTT-HT + 3389 3 2116 2122 2130 # CAT-CTT-HT + 3390 1 2116 2121 2120 # CAT-CAO-CAM + 3391 2 2116 2121 2127 # CAT-CAO-HAT + 3392 4 2117 2116 2122 # CAO-CAT-CTT + 3393 5 2117 2116 2121 # CAO-CAT-CAO + 3394 6 2117 2118 2119 # CAO-CAM-CAP + 3395 7 2117 2118 2124 # CAO-CAM-HAT + 3396 8 2118 2117 2123 # CAM-CAO-HAT + 3397 9 2118 2119 2120 # CAM-CAP-CAM + 3398 10 2118 2119 2125 # CAM-CAP-HAT + 3399 11 2119 2118 2124 # CAP-CAM-HAT + 3400 6 2121 2120 2119 # CAO-CAM-CAP + 3401 11 2119 2120 2126 # CAP-CAM-HAT + 3402 10 2120 2119 2125 # CAM-CAP-HAT + 3403 8 2120 2121 2127 # CAM-CAO-HAT + 3404 7 2121 2120 2126 # CAO-CAM-HAT + 3405 4 2121 2116 2122 # CAO-CAT-CTT + 3406 12 2128 2122 2129 # HT-CTT-HT + 3407 12 2128 2122 2130 # HT-CTT-HT + 3408 12 2129 2122 2130 # HT-CTT-HT + 3409 1 2131 2132 2133 # CAT-CAO-CAM + 3410 2 2131 2132 2138 # CAT-CAO-HAT + 3411 3 2131 2137 2143 # CAT-CTT-HT + 3412 3 2131 2137 2144 # CAT-CTT-HT + 3413 3 2131 2137 2145 # CAT-CTT-HT + 3414 1 2131 2136 2135 # CAT-CAO-CAM + 3415 2 2131 2136 2142 # CAT-CAO-HAT + 3416 4 2132 2131 2137 # CAO-CAT-CTT + 3417 5 2132 2131 2136 # CAO-CAT-CAO + 3418 6 2132 2133 2134 # CAO-CAM-CAP + 3419 7 2132 2133 2139 # CAO-CAM-HAT + 3420 8 2133 2132 2138 # CAM-CAO-HAT + 3421 9 2133 2134 2135 # CAM-CAP-CAM + 3422 10 2133 2134 2140 # CAM-CAP-HAT + 3423 11 2134 2133 2139 # CAP-CAM-HAT + 3424 6 2136 2135 2134 # CAO-CAM-CAP + 3425 11 2134 2135 2141 # CAP-CAM-HAT + 3426 10 2135 2134 2140 # CAM-CAP-HAT + 3427 8 2135 2136 2142 # CAM-CAO-HAT + 3428 7 2136 2135 2141 # CAO-CAM-HAT + 3429 4 2136 2131 2137 # CAO-CAT-CTT + 3430 12 2143 2137 2144 # HT-CTT-HT + 3431 12 2143 2137 2145 # HT-CTT-HT + 3432 12 2144 2137 2145 # HT-CTT-HT + 3433 1 2146 2147 2148 # CAT-CAO-CAM + 3434 2 2146 2147 2153 # CAT-CAO-HAT + 3435 3 2146 2152 2158 # CAT-CTT-HT + 3436 3 2146 2152 2159 # CAT-CTT-HT + 3437 3 2146 2152 2160 # CAT-CTT-HT + 3438 1 2146 2151 2150 # CAT-CAO-CAM + 3439 2 2146 2151 2157 # CAT-CAO-HAT + 3440 4 2147 2146 2152 # CAO-CAT-CTT + 3441 5 2147 2146 2151 # CAO-CAT-CAO + 3442 6 2147 2148 2149 # CAO-CAM-CAP + 3443 7 2147 2148 2154 # CAO-CAM-HAT + 3444 8 2148 2147 2153 # CAM-CAO-HAT + 3445 9 2148 2149 2150 # CAM-CAP-CAM + 3446 10 2148 2149 2155 # CAM-CAP-HAT + 3447 11 2149 2148 2154 # CAP-CAM-HAT + 3448 6 2151 2150 2149 # CAO-CAM-CAP + 3449 11 2149 2150 2156 # CAP-CAM-HAT + 3450 10 2150 2149 2155 # CAM-CAP-HAT + 3451 8 2150 2151 2157 # CAM-CAO-HAT + 3452 7 2151 2150 2156 # CAO-CAM-HAT + 3453 4 2151 2146 2152 # CAO-CAT-CTT + 3454 12 2158 2152 2159 # HT-CTT-HT + 3455 12 2158 2152 2160 # HT-CTT-HT + 3456 12 2159 2152 2160 # HT-CTT-HT + 3457 1 2161 2162 2163 # CAT-CAO-CAM + 3458 2 2161 2162 2168 # CAT-CAO-HAT + 3459 3 2161 2167 2173 # CAT-CTT-HT + 3460 3 2161 2167 2174 # CAT-CTT-HT + 3461 3 2161 2167 2175 # CAT-CTT-HT + 3462 1 2161 2166 2165 # CAT-CAO-CAM + 3463 2 2161 2166 2172 # CAT-CAO-HAT + 3464 4 2162 2161 2167 # CAO-CAT-CTT + 3465 5 2162 2161 2166 # CAO-CAT-CAO + 3466 6 2162 2163 2164 # CAO-CAM-CAP + 3467 7 2162 2163 2169 # CAO-CAM-HAT + 3468 8 2163 2162 2168 # CAM-CAO-HAT + 3469 9 2163 2164 2165 # CAM-CAP-CAM + 3470 10 2163 2164 2170 # CAM-CAP-HAT + 3471 11 2164 2163 2169 # CAP-CAM-HAT + 3472 6 2166 2165 2164 # CAO-CAM-CAP + 3473 11 2164 2165 2171 # CAP-CAM-HAT + 3474 10 2165 2164 2170 # CAM-CAP-HAT + 3475 8 2165 2166 2172 # CAM-CAO-HAT + 3476 7 2166 2165 2171 # CAO-CAM-HAT + 3477 4 2166 2161 2167 # CAO-CAT-CTT + 3478 12 2173 2167 2174 # HT-CTT-HT + 3479 12 2173 2167 2175 # HT-CTT-HT + 3480 12 2174 2167 2175 # HT-CTT-HT + 3481 1 2176 2177 2178 # CAT-CAO-CAM + 3482 2 2176 2177 2183 # CAT-CAO-HAT + 3483 3 2176 2182 2188 # CAT-CTT-HT + 3484 3 2176 2182 2189 # CAT-CTT-HT + 3485 3 2176 2182 2190 # CAT-CTT-HT + 3486 1 2176 2181 2180 # CAT-CAO-CAM + 3487 2 2176 2181 2187 # CAT-CAO-HAT + 3488 4 2177 2176 2182 # CAO-CAT-CTT + 3489 5 2177 2176 2181 # CAO-CAT-CAO + 3490 6 2177 2178 2179 # CAO-CAM-CAP + 3491 7 2177 2178 2184 # CAO-CAM-HAT + 3492 8 2178 2177 2183 # CAM-CAO-HAT + 3493 9 2178 2179 2180 # CAM-CAP-CAM + 3494 10 2178 2179 2185 # CAM-CAP-HAT + 3495 11 2179 2178 2184 # CAP-CAM-HAT + 3496 6 2181 2180 2179 # CAO-CAM-CAP + 3497 11 2179 2180 2186 # CAP-CAM-HAT + 3498 10 2180 2179 2185 # CAM-CAP-HAT + 3499 8 2180 2181 2187 # CAM-CAO-HAT + 3500 7 2181 2180 2186 # CAO-CAM-HAT + 3501 4 2181 2176 2182 # CAO-CAT-CTT + 3502 12 2188 2182 2189 # HT-CTT-HT + 3503 12 2188 2182 2190 # HT-CTT-HT + 3504 12 2189 2182 2190 # HT-CTT-HT + 3505 1 2191 2192 2193 # CAT-CAO-CAM + 3506 2 2191 2192 2198 # CAT-CAO-HAT + 3507 3 2191 2197 2203 # CAT-CTT-HT + 3508 3 2191 2197 2204 # CAT-CTT-HT + 3509 3 2191 2197 2205 # CAT-CTT-HT + 3510 1 2191 2196 2195 # CAT-CAO-CAM + 3511 2 2191 2196 2202 # CAT-CAO-HAT + 3512 4 2192 2191 2197 # CAO-CAT-CTT + 3513 5 2192 2191 2196 # CAO-CAT-CAO + 3514 6 2192 2193 2194 # CAO-CAM-CAP + 3515 7 2192 2193 2199 # CAO-CAM-HAT + 3516 8 2193 2192 2198 # CAM-CAO-HAT + 3517 9 2193 2194 2195 # CAM-CAP-CAM + 3518 10 2193 2194 2200 # CAM-CAP-HAT + 3519 11 2194 2193 2199 # CAP-CAM-HAT + 3520 6 2196 2195 2194 # CAO-CAM-CAP + 3521 11 2194 2195 2201 # CAP-CAM-HAT + 3522 10 2195 2194 2200 # CAM-CAP-HAT + 3523 8 2195 2196 2202 # CAM-CAO-HAT + 3524 7 2196 2195 2201 # CAO-CAM-HAT + 3525 4 2196 2191 2197 # CAO-CAT-CTT + 3526 12 2203 2197 2204 # HT-CTT-HT + 3527 12 2203 2197 2205 # HT-CTT-HT + 3528 12 2204 2197 2205 # HT-CTT-HT + 3529 1 2206 2207 2208 # CAT-CAO-CAM + 3530 2 2206 2207 2213 # CAT-CAO-HAT + 3531 3 2206 2212 2218 # CAT-CTT-HT + 3532 3 2206 2212 2219 # CAT-CTT-HT + 3533 3 2206 2212 2220 # CAT-CTT-HT + 3534 1 2206 2211 2210 # CAT-CAO-CAM + 3535 2 2206 2211 2217 # CAT-CAO-HAT + 3536 4 2207 2206 2212 # CAO-CAT-CTT + 3537 5 2207 2206 2211 # CAO-CAT-CAO + 3538 6 2207 2208 2209 # CAO-CAM-CAP + 3539 7 2207 2208 2214 # CAO-CAM-HAT + 3540 8 2208 2207 2213 # CAM-CAO-HAT + 3541 9 2208 2209 2210 # CAM-CAP-CAM + 3542 10 2208 2209 2215 # CAM-CAP-HAT + 3543 11 2209 2208 2214 # CAP-CAM-HAT + 3544 6 2211 2210 2209 # CAO-CAM-CAP + 3545 11 2209 2210 2216 # CAP-CAM-HAT + 3546 10 2210 2209 2215 # CAM-CAP-HAT + 3547 8 2210 2211 2217 # CAM-CAO-HAT + 3548 7 2211 2210 2216 # CAO-CAM-HAT + 3549 4 2211 2206 2212 # CAO-CAT-CTT + 3550 12 2218 2212 2219 # HT-CTT-HT + 3551 12 2218 2212 2220 # HT-CTT-HT + 3552 12 2219 2212 2220 # HT-CTT-HT + 3553 1 2221 2222 2223 # CAT-CAO-CAM + 3554 2 2221 2222 2228 # CAT-CAO-HAT + 3555 3 2221 2227 2233 # CAT-CTT-HT + 3556 3 2221 2227 2234 # CAT-CTT-HT + 3557 3 2221 2227 2235 # CAT-CTT-HT + 3558 1 2221 2226 2225 # CAT-CAO-CAM + 3559 2 2221 2226 2232 # CAT-CAO-HAT + 3560 4 2222 2221 2227 # CAO-CAT-CTT + 3561 5 2222 2221 2226 # CAO-CAT-CAO + 3562 6 2222 2223 2224 # CAO-CAM-CAP + 3563 7 2222 2223 2229 # CAO-CAM-HAT + 3564 8 2223 2222 2228 # CAM-CAO-HAT + 3565 9 2223 2224 2225 # CAM-CAP-CAM + 3566 10 2223 2224 2230 # CAM-CAP-HAT + 3567 11 2224 2223 2229 # CAP-CAM-HAT + 3568 6 2226 2225 2224 # CAO-CAM-CAP + 3569 11 2224 2225 2231 # CAP-CAM-HAT + 3570 10 2225 2224 2230 # CAM-CAP-HAT + 3571 8 2225 2226 2232 # CAM-CAO-HAT + 3572 7 2226 2225 2231 # CAO-CAM-HAT + 3573 4 2226 2221 2227 # CAO-CAT-CTT + 3574 12 2233 2227 2234 # HT-CTT-HT + 3575 12 2233 2227 2235 # HT-CTT-HT + 3576 12 2234 2227 2235 # HT-CTT-HT + 3577 1 2236 2237 2238 # CAT-CAO-CAM + 3578 2 2236 2237 2243 # CAT-CAO-HAT + 3579 3 2236 2242 2248 # CAT-CTT-HT + 3580 3 2236 2242 2249 # CAT-CTT-HT + 3581 3 2236 2242 2250 # CAT-CTT-HT + 3582 1 2236 2241 2240 # CAT-CAO-CAM + 3583 2 2236 2241 2247 # CAT-CAO-HAT + 3584 4 2237 2236 2242 # CAO-CAT-CTT + 3585 5 2237 2236 2241 # CAO-CAT-CAO + 3586 6 2237 2238 2239 # CAO-CAM-CAP + 3587 7 2237 2238 2244 # CAO-CAM-HAT + 3588 8 2238 2237 2243 # CAM-CAO-HAT + 3589 9 2238 2239 2240 # CAM-CAP-CAM + 3590 10 2238 2239 2245 # CAM-CAP-HAT + 3591 11 2239 2238 2244 # CAP-CAM-HAT + 3592 6 2241 2240 2239 # CAO-CAM-CAP + 3593 11 2239 2240 2246 # CAP-CAM-HAT + 3594 10 2240 2239 2245 # CAM-CAP-HAT + 3595 8 2240 2241 2247 # CAM-CAO-HAT + 3596 7 2241 2240 2246 # CAO-CAM-HAT + 3597 4 2241 2236 2242 # CAO-CAT-CTT + 3598 12 2248 2242 2249 # HT-CTT-HT + 3599 12 2248 2242 2250 # HT-CTT-HT + 3600 12 2249 2242 2250 # HT-CTT-HT + 3601 1 2251 2252 2253 # CAT-CAO-CAM + 3602 2 2251 2252 2258 # CAT-CAO-HAT + 3603 3 2251 2257 2263 # CAT-CTT-HT + 3604 3 2251 2257 2264 # CAT-CTT-HT + 3605 3 2251 2257 2265 # CAT-CTT-HT + 3606 1 2251 2256 2255 # CAT-CAO-CAM + 3607 2 2251 2256 2262 # CAT-CAO-HAT + 3608 4 2252 2251 2257 # CAO-CAT-CTT + 3609 5 2252 2251 2256 # CAO-CAT-CAO + 3610 6 2252 2253 2254 # CAO-CAM-CAP + 3611 7 2252 2253 2259 # CAO-CAM-HAT + 3612 8 2253 2252 2258 # CAM-CAO-HAT + 3613 9 2253 2254 2255 # CAM-CAP-CAM + 3614 10 2253 2254 2260 # CAM-CAP-HAT + 3615 11 2254 2253 2259 # CAP-CAM-HAT + 3616 6 2256 2255 2254 # CAO-CAM-CAP + 3617 11 2254 2255 2261 # CAP-CAM-HAT + 3618 10 2255 2254 2260 # CAM-CAP-HAT + 3619 8 2255 2256 2262 # CAM-CAO-HAT + 3620 7 2256 2255 2261 # CAO-CAM-HAT + 3621 4 2256 2251 2257 # CAO-CAT-CTT + 3622 12 2263 2257 2264 # HT-CTT-HT + 3623 12 2263 2257 2265 # HT-CTT-HT + 3624 12 2264 2257 2265 # HT-CTT-HT + 3625 1 2266 2267 2268 # CAT-CAO-CAM + 3626 2 2266 2267 2273 # CAT-CAO-HAT + 3627 3 2266 2272 2278 # CAT-CTT-HT + 3628 3 2266 2272 2279 # CAT-CTT-HT + 3629 3 2266 2272 2280 # CAT-CTT-HT + 3630 1 2266 2271 2270 # CAT-CAO-CAM + 3631 2 2266 2271 2277 # CAT-CAO-HAT + 3632 4 2267 2266 2272 # CAO-CAT-CTT + 3633 5 2267 2266 2271 # CAO-CAT-CAO + 3634 6 2267 2268 2269 # CAO-CAM-CAP + 3635 7 2267 2268 2274 # CAO-CAM-HAT + 3636 8 2268 2267 2273 # CAM-CAO-HAT + 3637 9 2268 2269 2270 # CAM-CAP-CAM + 3638 10 2268 2269 2275 # CAM-CAP-HAT + 3639 11 2269 2268 2274 # CAP-CAM-HAT + 3640 6 2271 2270 2269 # CAO-CAM-CAP + 3641 11 2269 2270 2276 # CAP-CAM-HAT + 3642 10 2270 2269 2275 # CAM-CAP-HAT + 3643 8 2270 2271 2277 # CAM-CAO-HAT + 3644 7 2271 2270 2276 # CAO-CAM-HAT + 3645 4 2271 2266 2272 # CAO-CAT-CTT + 3646 12 2278 2272 2279 # HT-CTT-HT + 3647 12 2278 2272 2280 # HT-CTT-HT + 3648 12 2279 2272 2280 # HT-CTT-HT + 3649 1 2281 2282 2283 # CAT-CAO-CAM + 3650 2 2281 2282 2288 # CAT-CAO-HAT + 3651 3 2281 2287 2293 # CAT-CTT-HT + 3652 3 2281 2287 2294 # CAT-CTT-HT + 3653 3 2281 2287 2295 # CAT-CTT-HT + 3654 1 2281 2286 2285 # CAT-CAO-CAM + 3655 2 2281 2286 2292 # CAT-CAO-HAT + 3656 4 2282 2281 2287 # CAO-CAT-CTT + 3657 5 2282 2281 2286 # CAO-CAT-CAO + 3658 6 2282 2283 2284 # CAO-CAM-CAP + 3659 7 2282 2283 2289 # CAO-CAM-HAT + 3660 8 2283 2282 2288 # CAM-CAO-HAT + 3661 9 2283 2284 2285 # CAM-CAP-CAM + 3662 10 2283 2284 2290 # CAM-CAP-HAT + 3663 11 2284 2283 2289 # CAP-CAM-HAT + 3664 6 2286 2285 2284 # CAO-CAM-CAP + 3665 11 2284 2285 2291 # CAP-CAM-HAT + 3666 10 2285 2284 2290 # CAM-CAP-HAT + 3667 8 2285 2286 2292 # CAM-CAO-HAT + 3668 7 2286 2285 2291 # CAO-CAM-HAT + 3669 4 2286 2281 2287 # CAO-CAT-CTT + 3670 12 2293 2287 2294 # HT-CTT-HT + 3671 12 2293 2287 2295 # HT-CTT-HT + 3672 12 2294 2287 2295 # HT-CTT-HT + 3673 1 2296 2297 2298 # CAT-CAO-CAM + 3674 2 2296 2297 2303 # CAT-CAO-HAT + 3675 3 2296 2302 2308 # CAT-CTT-HT + 3676 3 2296 2302 2309 # CAT-CTT-HT + 3677 3 2296 2302 2310 # CAT-CTT-HT + 3678 1 2296 2301 2300 # CAT-CAO-CAM + 3679 2 2296 2301 2307 # CAT-CAO-HAT + 3680 4 2297 2296 2302 # CAO-CAT-CTT + 3681 5 2297 2296 2301 # CAO-CAT-CAO + 3682 6 2297 2298 2299 # CAO-CAM-CAP + 3683 7 2297 2298 2304 # CAO-CAM-HAT + 3684 8 2298 2297 2303 # CAM-CAO-HAT + 3685 9 2298 2299 2300 # CAM-CAP-CAM + 3686 10 2298 2299 2305 # CAM-CAP-HAT + 3687 11 2299 2298 2304 # CAP-CAM-HAT + 3688 6 2301 2300 2299 # CAO-CAM-CAP + 3689 11 2299 2300 2306 # CAP-CAM-HAT + 3690 10 2300 2299 2305 # CAM-CAP-HAT + 3691 8 2300 2301 2307 # CAM-CAO-HAT + 3692 7 2301 2300 2306 # CAO-CAM-HAT + 3693 4 2301 2296 2302 # CAO-CAT-CTT + 3694 12 2308 2302 2309 # HT-CTT-HT + 3695 12 2308 2302 2310 # HT-CTT-HT + 3696 12 2309 2302 2310 # HT-CTT-HT + 3697 1 2311 2312 2313 # CAT-CAO-CAM + 3698 2 2311 2312 2318 # CAT-CAO-HAT + 3699 3 2311 2317 2323 # CAT-CTT-HT + 3700 3 2311 2317 2324 # CAT-CTT-HT + 3701 3 2311 2317 2325 # CAT-CTT-HT + 3702 1 2311 2316 2315 # CAT-CAO-CAM + 3703 2 2311 2316 2322 # CAT-CAO-HAT + 3704 4 2312 2311 2317 # CAO-CAT-CTT + 3705 5 2312 2311 2316 # CAO-CAT-CAO + 3706 6 2312 2313 2314 # CAO-CAM-CAP + 3707 7 2312 2313 2319 # CAO-CAM-HAT + 3708 8 2313 2312 2318 # CAM-CAO-HAT + 3709 9 2313 2314 2315 # CAM-CAP-CAM + 3710 10 2313 2314 2320 # CAM-CAP-HAT + 3711 11 2314 2313 2319 # CAP-CAM-HAT + 3712 6 2316 2315 2314 # CAO-CAM-CAP + 3713 11 2314 2315 2321 # CAP-CAM-HAT + 3714 10 2315 2314 2320 # CAM-CAP-HAT + 3715 8 2315 2316 2322 # CAM-CAO-HAT + 3716 7 2316 2315 2321 # CAO-CAM-HAT + 3717 4 2316 2311 2317 # CAO-CAT-CTT + 3718 12 2323 2317 2324 # HT-CTT-HT + 3719 12 2323 2317 2325 # HT-CTT-HT + 3720 12 2324 2317 2325 # HT-CTT-HT + 3721 1 2326 2327 2328 # CAT-CAO-CAM + 3722 2 2326 2327 2333 # CAT-CAO-HAT + 3723 3 2326 2332 2338 # CAT-CTT-HT + 3724 3 2326 2332 2339 # CAT-CTT-HT + 3725 3 2326 2332 2340 # CAT-CTT-HT + 3726 1 2326 2331 2330 # CAT-CAO-CAM + 3727 2 2326 2331 2337 # CAT-CAO-HAT + 3728 4 2327 2326 2332 # CAO-CAT-CTT + 3729 5 2327 2326 2331 # CAO-CAT-CAO + 3730 6 2327 2328 2329 # CAO-CAM-CAP + 3731 7 2327 2328 2334 # CAO-CAM-HAT + 3732 8 2328 2327 2333 # CAM-CAO-HAT + 3733 9 2328 2329 2330 # CAM-CAP-CAM + 3734 10 2328 2329 2335 # CAM-CAP-HAT + 3735 11 2329 2328 2334 # CAP-CAM-HAT + 3736 6 2331 2330 2329 # CAO-CAM-CAP + 3737 11 2329 2330 2336 # CAP-CAM-HAT + 3738 10 2330 2329 2335 # CAM-CAP-HAT + 3739 8 2330 2331 2337 # CAM-CAO-HAT + 3740 7 2331 2330 2336 # CAO-CAM-HAT + 3741 4 2331 2326 2332 # CAO-CAT-CTT + 3742 12 2338 2332 2339 # HT-CTT-HT + 3743 12 2338 2332 2340 # HT-CTT-HT + 3744 12 2339 2332 2340 # HT-CTT-HT + 3745 1 2341 2342 2343 # CAT-CAO-CAM + 3746 2 2341 2342 2348 # CAT-CAO-HAT + 3747 3 2341 2347 2353 # CAT-CTT-HT + 3748 3 2341 2347 2354 # CAT-CTT-HT + 3749 3 2341 2347 2355 # CAT-CTT-HT + 3750 1 2341 2346 2345 # CAT-CAO-CAM + 3751 2 2341 2346 2352 # CAT-CAO-HAT + 3752 4 2342 2341 2347 # CAO-CAT-CTT + 3753 5 2342 2341 2346 # CAO-CAT-CAO + 3754 6 2342 2343 2344 # CAO-CAM-CAP + 3755 7 2342 2343 2349 # CAO-CAM-HAT + 3756 8 2343 2342 2348 # CAM-CAO-HAT + 3757 9 2343 2344 2345 # CAM-CAP-CAM + 3758 10 2343 2344 2350 # CAM-CAP-HAT + 3759 11 2344 2343 2349 # CAP-CAM-HAT + 3760 6 2346 2345 2344 # CAO-CAM-CAP + 3761 11 2344 2345 2351 # CAP-CAM-HAT + 3762 10 2345 2344 2350 # CAM-CAP-HAT + 3763 8 2345 2346 2352 # CAM-CAO-HAT + 3764 7 2346 2345 2351 # CAO-CAM-HAT + 3765 4 2346 2341 2347 # CAO-CAT-CTT + 3766 12 2353 2347 2354 # HT-CTT-HT + 3767 12 2353 2347 2355 # HT-CTT-HT + 3768 12 2354 2347 2355 # HT-CTT-HT + 3769 1 2356 2357 2358 # CAT-CAO-CAM + 3770 2 2356 2357 2363 # CAT-CAO-HAT + 3771 3 2356 2362 2368 # CAT-CTT-HT + 3772 3 2356 2362 2369 # CAT-CTT-HT + 3773 3 2356 2362 2370 # CAT-CTT-HT + 3774 1 2356 2361 2360 # CAT-CAO-CAM + 3775 2 2356 2361 2367 # CAT-CAO-HAT + 3776 4 2357 2356 2362 # CAO-CAT-CTT + 3777 5 2357 2356 2361 # CAO-CAT-CAO + 3778 6 2357 2358 2359 # CAO-CAM-CAP + 3779 7 2357 2358 2364 # CAO-CAM-HAT + 3780 8 2358 2357 2363 # CAM-CAO-HAT + 3781 9 2358 2359 2360 # CAM-CAP-CAM + 3782 10 2358 2359 2365 # CAM-CAP-HAT + 3783 11 2359 2358 2364 # CAP-CAM-HAT + 3784 6 2361 2360 2359 # CAO-CAM-CAP + 3785 11 2359 2360 2366 # CAP-CAM-HAT + 3786 10 2360 2359 2365 # CAM-CAP-HAT + 3787 8 2360 2361 2367 # CAM-CAO-HAT + 3788 7 2361 2360 2366 # CAO-CAM-HAT + 3789 4 2361 2356 2362 # CAO-CAT-CTT + 3790 12 2368 2362 2369 # HT-CTT-HT + 3791 12 2368 2362 2370 # HT-CTT-HT + 3792 12 2369 2362 2370 # HT-CTT-HT + 3793 1 2371 2372 2373 # CAT-CAO-CAM + 3794 2 2371 2372 2378 # CAT-CAO-HAT + 3795 3 2371 2377 2383 # CAT-CTT-HT + 3796 3 2371 2377 2384 # CAT-CTT-HT + 3797 3 2371 2377 2385 # CAT-CTT-HT + 3798 1 2371 2376 2375 # CAT-CAO-CAM + 3799 2 2371 2376 2382 # CAT-CAO-HAT + 3800 4 2372 2371 2377 # CAO-CAT-CTT + 3801 5 2372 2371 2376 # CAO-CAT-CAO + 3802 6 2372 2373 2374 # CAO-CAM-CAP + 3803 7 2372 2373 2379 # CAO-CAM-HAT + 3804 8 2373 2372 2378 # CAM-CAO-HAT + 3805 9 2373 2374 2375 # CAM-CAP-CAM + 3806 10 2373 2374 2380 # CAM-CAP-HAT + 3807 11 2374 2373 2379 # CAP-CAM-HAT + 3808 6 2376 2375 2374 # CAO-CAM-CAP + 3809 11 2374 2375 2381 # CAP-CAM-HAT + 3810 10 2375 2374 2380 # CAM-CAP-HAT + 3811 8 2375 2376 2382 # CAM-CAO-HAT + 3812 7 2376 2375 2381 # CAO-CAM-HAT + 3813 4 2376 2371 2377 # CAO-CAT-CTT + 3814 12 2383 2377 2384 # HT-CTT-HT + 3815 12 2383 2377 2385 # HT-CTT-HT + 3816 12 2384 2377 2385 # HT-CTT-HT + 3817 1 2386 2387 2388 # CAT-CAO-CAM + 3818 2 2386 2387 2393 # CAT-CAO-HAT + 3819 3 2386 2392 2398 # CAT-CTT-HT + 3820 3 2386 2392 2399 # CAT-CTT-HT + 3821 3 2386 2392 2400 # CAT-CTT-HT + 3822 1 2386 2391 2390 # CAT-CAO-CAM + 3823 2 2386 2391 2397 # CAT-CAO-HAT + 3824 4 2387 2386 2392 # CAO-CAT-CTT + 3825 5 2387 2386 2391 # CAO-CAT-CAO + 3826 6 2387 2388 2389 # CAO-CAM-CAP + 3827 7 2387 2388 2394 # CAO-CAM-HAT + 3828 8 2388 2387 2393 # CAM-CAO-HAT + 3829 9 2388 2389 2390 # CAM-CAP-CAM + 3830 10 2388 2389 2395 # CAM-CAP-HAT + 3831 11 2389 2388 2394 # CAP-CAM-HAT + 3832 6 2391 2390 2389 # CAO-CAM-CAP + 3833 11 2389 2390 2396 # CAP-CAM-HAT + 3834 10 2390 2389 2395 # CAM-CAP-HAT + 3835 8 2390 2391 2397 # CAM-CAO-HAT + 3836 7 2391 2390 2396 # CAO-CAM-HAT + 3837 4 2391 2386 2392 # CAO-CAT-CTT + 3838 12 2398 2392 2399 # HT-CTT-HT + 3839 12 2398 2392 2400 # HT-CTT-HT + 3840 12 2399 2392 2400 # HT-CTT-HT + 3841 1 2401 2402 2403 # CAT-CAO-CAM + 3842 2 2401 2402 2408 # CAT-CAO-HAT + 3843 3 2401 2407 2413 # CAT-CTT-HT + 3844 3 2401 2407 2414 # CAT-CTT-HT + 3845 3 2401 2407 2415 # CAT-CTT-HT + 3846 1 2401 2406 2405 # CAT-CAO-CAM + 3847 2 2401 2406 2412 # CAT-CAO-HAT + 3848 4 2402 2401 2407 # CAO-CAT-CTT + 3849 5 2402 2401 2406 # CAO-CAT-CAO + 3850 6 2402 2403 2404 # CAO-CAM-CAP + 3851 7 2402 2403 2409 # CAO-CAM-HAT + 3852 8 2403 2402 2408 # CAM-CAO-HAT + 3853 9 2403 2404 2405 # CAM-CAP-CAM + 3854 10 2403 2404 2410 # CAM-CAP-HAT + 3855 11 2404 2403 2409 # CAP-CAM-HAT + 3856 6 2406 2405 2404 # CAO-CAM-CAP + 3857 11 2404 2405 2411 # CAP-CAM-HAT + 3858 10 2405 2404 2410 # CAM-CAP-HAT + 3859 8 2405 2406 2412 # CAM-CAO-HAT + 3860 7 2406 2405 2411 # CAO-CAM-HAT + 3861 4 2406 2401 2407 # CAO-CAT-CTT + 3862 12 2413 2407 2414 # HT-CTT-HT + 3863 12 2413 2407 2415 # HT-CTT-HT + 3864 12 2414 2407 2415 # HT-CTT-HT + 3865 1 2416 2417 2418 # CAT-CAO-CAM + 3866 2 2416 2417 2423 # CAT-CAO-HAT + 3867 3 2416 2422 2428 # CAT-CTT-HT + 3868 3 2416 2422 2429 # CAT-CTT-HT + 3869 3 2416 2422 2430 # CAT-CTT-HT + 3870 1 2416 2421 2420 # CAT-CAO-CAM + 3871 2 2416 2421 2427 # CAT-CAO-HAT + 3872 4 2417 2416 2422 # CAO-CAT-CTT + 3873 5 2417 2416 2421 # CAO-CAT-CAO + 3874 6 2417 2418 2419 # CAO-CAM-CAP + 3875 7 2417 2418 2424 # CAO-CAM-HAT + 3876 8 2418 2417 2423 # CAM-CAO-HAT + 3877 9 2418 2419 2420 # CAM-CAP-CAM + 3878 10 2418 2419 2425 # CAM-CAP-HAT + 3879 11 2419 2418 2424 # CAP-CAM-HAT + 3880 6 2421 2420 2419 # CAO-CAM-CAP + 3881 11 2419 2420 2426 # CAP-CAM-HAT + 3882 10 2420 2419 2425 # CAM-CAP-HAT + 3883 8 2420 2421 2427 # CAM-CAO-HAT + 3884 7 2421 2420 2426 # CAO-CAM-HAT + 3885 4 2421 2416 2422 # CAO-CAT-CTT + 3886 12 2428 2422 2429 # HT-CTT-HT + 3887 12 2428 2422 2430 # HT-CTT-HT + 3888 12 2429 2422 2430 # HT-CTT-HT + 3889 1 2431 2432 2433 # CAT-CAO-CAM + 3890 2 2431 2432 2438 # CAT-CAO-HAT + 3891 3 2431 2437 2443 # CAT-CTT-HT + 3892 3 2431 2437 2444 # CAT-CTT-HT + 3893 3 2431 2437 2445 # CAT-CTT-HT + 3894 1 2431 2436 2435 # CAT-CAO-CAM + 3895 2 2431 2436 2442 # CAT-CAO-HAT + 3896 4 2432 2431 2437 # CAO-CAT-CTT + 3897 5 2432 2431 2436 # CAO-CAT-CAO + 3898 6 2432 2433 2434 # CAO-CAM-CAP + 3899 7 2432 2433 2439 # CAO-CAM-HAT + 3900 8 2433 2432 2438 # CAM-CAO-HAT + 3901 9 2433 2434 2435 # CAM-CAP-CAM + 3902 10 2433 2434 2440 # CAM-CAP-HAT + 3903 11 2434 2433 2439 # CAP-CAM-HAT + 3904 6 2436 2435 2434 # CAO-CAM-CAP + 3905 11 2434 2435 2441 # CAP-CAM-HAT + 3906 10 2435 2434 2440 # CAM-CAP-HAT + 3907 8 2435 2436 2442 # CAM-CAO-HAT + 3908 7 2436 2435 2441 # CAO-CAM-HAT + 3909 4 2436 2431 2437 # CAO-CAT-CTT + 3910 12 2443 2437 2444 # HT-CTT-HT + 3911 12 2443 2437 2445 # HT-CTT-HT + 3912 12 2444 2437 2445 # HT-CTT-HT + 3913 1 2446 2447 2448 # CAT-CAO-CAM + 3914 2 2446 2447 2453 # CAT-CAO-HAT + 3915 3 2446 2452 2458 # CAT-CTT-HT + 3916 3 2446 2452 2459 # CAT-CTT-HT + 3917 3 2446 2452 2460 # CAT-CTT-HT + 3918 1 2446 2451 2450 # CAT-CAO-CAM + 3919 2 2446 2451 2457 # CAT-CAO-HAT + 3920 4 2447 2446 2452 # CAO-CAT-CTT + 3921 5 2447 2446 2451 # CAO-CAT-CAO + 3922 6 2447 2448 2449 # CAO-CAM-CAP + 3923 7 2447 2448 2454 # CAO-CAM-HAT + 3924 8 2448 2447 2453 # CAM-CAO-HAT + 3925 9 2448 2449 2450 # CAM-CAP-CAM + 3926 10 2448 2449 2455 # CAM-CAP-HAT + 3927 11 2449 2448 2454 # CAP-CAM-HAT + 3928 6 2451 2450 2449 # CAO-CAM-CAP + 3929 11 2449 2450 2456 # CAP-CAM-HAT + 3930 10 2450 2449 2455 # CAM-CAP-HAT + 3931 8 2450 2451 2457 # CAM-CAO-HAT + 3932 7 2451 2450 2456 # CAO-CAM-HAT + 3933 4 2451 2446 2452 # CAO-CAT-CTT + 3934 12 2458 2452 2459 # HT-CTT-HT + 3935 12 2458 2452 2460 # HT-CTT-HT + 3936 12 2459 2452 2460 # HT-CTT-HT + 3937 1 2461 2462 2463 # CAT-CAO-CAM + 3938 2 2461 2462 2468 # CAT-CAO-HAT + 3939 3 2461 2467 2473 # CAT-CTT-HT + 3940 3 2461 2467 2474 # CAT-CTT-HT + 3941 3 2461 2467 2475 # CAT-CTT-HT + 3942 1 2461 2466 2465 # CAT-CAO-CAM + 3943 2 2461 2466 2472 # CAT-CAO-HAT + 3944 4 2462 2461 2467 # CAO-CAT-CTT + 3945 5 2462 2461 2466 # CAO-CAT-CAO + 3946 6 2462 2463 2464 # CAO-CAM-CAP + 3947 7 2462 2463 2469 # CAO-CAM-HAT + 3948 8 2463 2462 2468 # CAM-CAO-HAT + 3949 9 2463 2464 2465 # CAM-CAP-CAM + 3950 10 2463 2464 2470 # CAM-CAP-HAT + 3951 11 2464 2463 2469 # CAP-CAM-HAT + 3952 6 2466 2465 2464 # CAO-CAM-CAP + 3953 11 2464 2465 2471 # CAP-CAM-HAT + 3954 10 2465 2464 2470 # CAM-CAP-HAT + 3955 8 2465 2466 2472 # CAM-CAO-HAT + 3956 7 2466 2465 2471 # CAO-CAM-HAT + 3957 4 2466 2461 2467 # CAO-CAT-CTT + 3958 12 2473 2467 2474 # HT-CTT-HT + 3959 12 2473 2467 2475 # HT-CTT-HT + 3960 12 2474 2467 2475 # HT-CTT-HT + 3961 1 2476 2477 2478 # CAT-CAO-CAM + 3962 2 2476 2477 2483 # CAT-CAO-HAT + 3963 3 2476 2482 2488 # CAT-CTT-HT + 3964 3 2476 2482 2489 # CAT-CTT-HT + 3965 3 2476 2482 2490 # CAT-CTT-HT + 3966 1 2476 2481 2480 # CAT-CAO-CAM + 3967 2 2476 2481 2487 # CAT-CAO-HAT + 3968 4 2477 2476 2482 # CAO-CAT-CTT + 3969 5 2477 2476 2481 # CAO-CAT-CAO + 3970 6 2477 2478 2479 # CAO-CAM-CAP + 3971 7 2477 2478 2484 # CAO-CAM-HAT + 3972 8 2478 2477 2483 # CAM-CAO-HAT + 3973 9 2478 2479 2480 # CAM-CAP-CAM + 3974 10 2478 2479 2485 # CAM-CAP-HAT + 3975 11 2479 2478 2484 # CAP-CAM-HAT + 3976 6 2481 2480 2479 # CAO-CAM-CAP + 3977 11 2479 2480 2486 # CAP-CAM-HAT + 3978 10 2480 2479 2485 # CAM-CAP-HAT + 3979 8 2480 2481 2487 # CAM-CAO-HAT + 3980 7 2481 2480 2486 # CAO-CAM-HAT + 3981 4 2481 2476 2482 # CAO-CAT-CTT + 3982 12 2488 2482 2489 # HT-CTT-HT + 3983 12 2488 2482 2490 # HT-CTT-HT + 3984 12 2489 2482 2490 # HT-CTT-HT + 3985 1 2491 2492 2493 # CAT-CAO-CAM + 3986 2 2491 2492 2498 # CAT-CAO-HAT + 3987 3 2491 2497 2503 # CAT-CTT-HT + 3988 3 2491 2497 2504 # CAT-CTT-HT + 3989 3 2491 2497 2505 # CAT-CTT-HT + 3990 1 2491 2496 2495 # CAT-CAO-CAM + 3991 2 2491 2496 2502 # CAT-CAO-HAT + 3992 4 2492 2491 2497 # CAO-CAT-CTT + 3993 5 2492 2491 2496 # CAO-CAT-CAO + 3994 6 2492 2493 2494 # CAO-CAM-CAP + 3995 7 2492 2493 2499 # CAO-CAM-HAT + 3996 8 2493 2492 2498 # CAM-CAO-HAT + 3997 9 2493 2494 2495 # CAM-CAP-CAM + 3998 10 2493 2494 2500 # CAM-CAP-HAT + 3999 11 2494 2493 2499 # CAP-CAM-HAT + 4000 6 2496 2495 2494 # CAO-CAM-CAP + 4001 11 2494 2495 2501 # CAP-CAM-HAT + 4002 10 2495 2494 2500 # CAM-CAP-HAT + 4003 8 2495 2496 2502 # CAM-CAO-HAT + 4004 7 2496 2495 2501 # CAO-CAM-HAT + 4005 4 2496 2491 2497 # CAO-CAT-CTT + 4006 12 2503 2497 2504 # HT-CTT-HT + 4007 12 2503 2497 2505 # HT-CTT-HT + 4008 12 2504 2497 2505 # HT-CTT-HT + 4009 1 2506 2507 2508 # CAT-CAO-CAM + 4010 2 2506 2507 2513 # CAT-CAO-HAT + 4011 3 2506 2512 2518 # CAT-CTT-HT + 4012 3 2506 2512 2519 # CAT-CTT-HT + 4013 3 2506 2512 2520 # CAT-CTT-HT + 4014 1 2506 2511 2510 # CAT-CAO-CAM + 4015 2 2506 2511 2517 # CAT-CAO-HAT + 4016 4 2507 2506 2512 # CAO-CAT-CTT + 4017 5 2507 2506 2511 # CAO-CAT-CAO + 4018 6 2507 2508 2509 # CAO-CAM-CAP + 4019 7 2507 2508 2514 # CAO-CAM-HAT + 4020 8 2508 2507 2513 # CAM-CAO-HAT + 4021 9 2508 2509 2510 # CAM-CAP-CAM + 4022 10 2508 2509 2515 # CAM-CAP-HAT + 4023 11 2509 2508 2514 # CAP-CAM-HAT + 4024 6 2511 2510 2509 # CAO-CAM-CAP + 4025 11 2509 2510 2516 # CAP-CAM-HAT + 4026 10 2510 2509 2515 # CAM-CAP-HAT + 4027 8 2510 2511 2517 # CAM-CAO-HAT + 4028 7 2511 2510 2516 # CAO-CAM-HAT + 4029 4 2511 2506 2512 # CAO-CAT-CTT + 4030 12 2518 2512 2519 # HT-CTT-HT + 4031 12 2518 2512 2520 # HT-CTT-HT + 4032 12 2519 2512 2520 # HT-CTT-HT + 4033 1 2521 2522 2523 # CAT-CAO-CAM + 4034 2 2521 2522 2528 # CAT-CAO-HAT + 4035 3 2521 2527 2533 # CAT-CTT-HT + 4036 3 2521 2527 2534 # CAT-CTT-HT + 4037 3 2521 2527 2535 # CAT-CTT-HT + 4038 1 2521 2526 2525 # CAT-CAO-CAM + 4039 2 2521 2526 2532 # CAT-CAO-HAT + 4040 4 2522 2521 2527 # CAO-CAT-CTT + 4041 5 2522 2521 2526 # CAO-CAT-CAO + 4042 6 2522 2523 2524 # CAO-CAM-CAP + 4043 7 2522 2523 2529 # CAO-CAM-HAT + 4044 8 2523 2522 2528 # CAM-CAO-HAT + 4045 9 2523 2524 2525 # CAM-CAP-CAM + 4046 10 2523 2524 2530 # CAM-CAP-HAT + 4047 11 2524 2523 2529 # CAP-CAM-HAT + 4048 6 2526 2525 2524 # CAO-CAM-CAP + 4049 11 2524 2525 2531 # CAP-CAM-HAT + 4050 10 2525 2524 2530 # CAM-CAP-HAT + 4051 8 2525 2526 2532 # CAM-CAO-HAT + 4052 7 2526 2525 2531 # CAO-CAM-HAT + 4053 4 2526 2521 2527 # CAO-CAT-CTT + 4054 12 2533 2527 2534 # HT-CTT-HT + 4055 12 2533 2527 2535 # HT-CTT-HT + 4056 12 2534 2527 2535 # HT-CTT-HT + 4057 1 2536 2537 2538 # CAT-CAO-CAM + 4058 2 2536 2537 2543 # CAT-CAO-HAT + 4059 3 2536 2542 2548 # CAT-CTT-HT + 4060 3 2536 2542 2549 # CAT-CTT-HT + 4061 3 2536 2542 2550 # CAT-CTT-HT + 4062 1 2536 2541 2540 # CAT-CAO-CAM + 4063 2 2536 2541 2547 # CAT-CAO-HAT + 4064 4 2537 2536 2542 # CAO-CAT-CTT + 4065 5 2537 2536 2541 # CAO-CAT-CAO + 4066 6 2537 2538 2539 # CAO-CAM-CAP + 4067 7 2537 2538 2544 # CAO-CAM-HAT + 4068 8 2538 2537 2543 # CAM-CAO-HAT + 4069 9 2538 2539 2540 # CAM-CAP-CAM + 4070 10 2538 2539 2545 # CAM-CAP-HAT + 4071 11 2539 2538 2544 # CAP-CAM-HAT + 4072 6 2541 2540 2539 # CAO-CAM-CAP + 4073 11 2539 2540 2546 # CAP-CAM-HAT + 4074 10 2540 2539 2545 # CAM-CAP-HAT + 4075 8 2540 2541 2547 # CAM-CAO-HAT + 4076 7 2541 2540 2546 # CAO-CAM-HAT + 4077 4 2541 2536 2542 # CAO-CAT-CTT + 4078 12 2548 2542 2549 # HT-CTT-HT + 4079 12 2548 2542 2550 # HT-CTT-HT + 4080 12 2549 2542 2550 # HT-CTT-HT + 4081 1 2551 2552 2553 # CAT-CAO-CAM + 4082 2 2551 2552 2558 # CAT-CAO-HAT + 4083 3 2551 2557 2563 # CAT-CTT-HT + 4084 3 2551 2557 2564 # CAT-CTT-HT + 4085 3 2551 2557 2565 # CAT-CTT-HT + 4086 1 2551 2556 2555 # CAT-CAO-CAM + 4087 2 2551 2556 2562 # CAT-CAO-HAT + 4088 4 2552 2551 2557 # CAO-CAT-CTT + 4089 5 2552 2551 2556 # CAO-CAT-CAO + 4090 6 2552 2553 2554 # CAO-CAM-CAP + 4091 7 2552 2553 2559 # CAO-CAM-HAT + 4092 8 2553 2552 2558 # CAM-CAO-HAT + 4093 9 2553 2554 2555 # CAM-CAP-CAM + 4094 10 2553 2554 2560 # CAM-CAP-HAT + 4095 11 2554 2553 2559 # CAP-CAM-HAT + 4096 6 2556 2555 2554 # CAO-CAM-CAP + 4097 11 2554 2555 2561 # CAP-CAM-HAT + 4098 10 2555 2554 2560 # CAM-CAP-HAT + 4099 8 2555 2556 2562 # CAM-CAO-HAT + 4100 7 2556 2555 2561 # CAO-CAM-HAT + 4101 4 2556 2551 2557 # CAO-CAT-CTT + 4102 12 2563 2557 2564 # HT-CTT-HT + 4103 12 2563 2557 2565 # HT-CTT-HT + 4104 12 2564 2557 2565 # HT-CTT-HT + 4105 1 2566 2567 2568 # CAT-CAO-CAM + 4106 2 2566 2567 2573 # CAT-CAO-HAT + 4107 3 2566 2572 2578 # CAT-CTT-HT + 4108 3 2566 2572 2579 # CAT-CTT-HT + 4109 3 2566 2572 2580 # CAT-CTT-HT + 4110 1 2566 2571 2570 # CAT-CAO-CAM + 4111 2 2566 2571 2577 # CAT-CAO-HAT + 4112 4 2567 2566 2572 # CAO-CAT-CTT + 4113 5 2567 2566 2571 # CAO-CAT-CAO + 4114 6 2567 2568 2569 # CAO-CAM-CAP + 4115 7 2567 2568 2574 # CAO-CAM-HAT + 4116 8 2568 2567 2573 # CAM-CAO-HAT + 4117 9 2568 2569 2570 # CAM-CAP-CAM + 4118 10 2568 2569 2575 # CAM-CAP-HAT + 4119 11 2569 2568 2574 # CAP-CAM-HAT + 4120 6 2571 2570 2569 # CAO-CAM-CAP + 4121 11 2569 2570 2576 # CAP-CAM-HAT + 4122 10 2570 2569 2575 # CAM-CAP-HAT + 4123 8 2570 2571 2577 # CAM-CAO-HAT + 4124 7 2571 2570 2576 # CAO-CAM-HAT + 4125 4 2571 2566 2572 # CAO-CAT-CTT + 4126 12 2578 2572 2579 # HT-CTT-HT + 4127 12 2578 2572 2580 # HT-CTT-HT + 4128 12 2579 2572 2580 # HT-CTT-HT + 4129 1 2581 2582 2583 # CAT-CAO-CAM + 4130 2 2581 2582 2588 # CAT-CAO-HAT + 4131 3 2581 2587 2593 # CAT-CTT-HT + 4132 3 2581 2587 2594 # CAT-CTT-HT + 4133 3 2581 2587 2595 # CAT-CTT-HT + 4134 1 2581 2586 2585 # CAT-CAO-CAM + 4135 2 2581 2586 2592 # CAT-CAO-HAT + 4136 4 2582 2581 2587 # CAO-CAT-CTT + 4137 5 2582 2581 2586 # CAO-CAT-CAO + 4138 6 2582 2583 2584 # CAO-CAM-CAP + 4139 7 2582 2583 2589 # CAO-CAM-HAT + 4140 8 2583 2582 2588 # CAM-CAO-HAT + 4141 9 2583 2584 2585 # CAM-CAP-CAM + 4142 10 2583 2584 2590 # CAM-CAP-HAT + 4143 11 2584 2583 2589 # CAP-CAM-HAT + 4144 6 2586 2585 2584 # CAO-CAM-CAP + 4145 11 2584 2585 2591 # CAP-CAM-HAT + 4146 10 2585 2584 2590 # CAM-CAP-HAT + 4147 8 2585 2586 2592 # CAM-CAO-HAT + 4148 7 2586 2585 2591 # CAO-CAM-HAT + 4149 4 2586 2581 2587 # CAO-CAT-CTT + 4150 12 2593 2587 2594 # HT-CTT-HT + 4151 12 2593 2587 2595 # HT-CTT-HT + 4152 12 2594 2587 2595 # HT-CTT-HT + 4153 1 2596 2597 2598 # CAT-CAO-CAM + 4154 2 2596 2597 2603 # CAT-CAO-HAT + 4155 3 2596 2602 2608 # CAT-CTT-HT + 4156 3 2596 2602 2609 # CAT-CTT-HT + 4157 3 2596 2602 2610 # CAT-CTT-HT + 4158 1 2596 2601 2600 # CAT-CAO-CAM + 4159 2 2596 2601 2607 # CAT-CAO-HAT + 4160 4 2597 2596 2602 # CAO-CAT-CTT + 4161 5 2597 2596 2601 # CAO-CAT-CAO + 4162 6 2597 2598 2599 # CAO-CAM-CAP + 4163 7 2597 2598 2604 # CAO-CAM-HAT + 4164 8 2598 2597 2603 # CAM-CAO-HAT + 4165 9 2598 2599 2600 # CAM-CAP-CAM + 4166 10 2598 2599 2605 # CAM-CAP-HAT + 4167 11 2599 2598 2604 # CAP-CAM-HAT + 4168 6 2601 2600 2599 # CAO-CAM-CAP + 4169 11 2599 2600 2606 # CAP-CAM-HAT + 4170 10 2600 2599 2605 # CAM-CAP-HAT + 4171 8 2600 2601 2607 # CAM-CAO-HAT + 4172 7 2601 2600 2606 # CAO-CAM-HAT + 4173 4 2601 2596 2602 # CAO-CAT-CTT + 4174 12 2608 2602 2609 # HT-CTT-HT + 4175 12 2608 2602 2610 # HT-CTT-HT + 4176 12 2609 2602 2610 # HT-CTT-HT + 4177 1 2611 2612 2613 # CAT-CAO-CAM + 4178 2 2611 2612 2618 # CAT-CAO-HAT + 4179 3 2611 2617 2623 # CAT-CTT-HT + 4180 3 2611 2617 2624 # CAT-CTT-HT + 4181 3 2611 2617 2625 # CAT-CTT-HT + 4182 1 2611 2616 2615 # CAT-CAO-CAM + 4183 2 2611 2616 2622 # CAT-CAO-HAT + 4184 4 2612 2611 2617 # CAO-CAT-CTT + 4185 5 2612 2611 2616 # CAO-CAT-CAO + 4186 6 2612 2613 2614 # CAO-CAM-CAP + 4187 7 2612 2613 2619 # CAO-CAM-HAT + 4188 8 2613 2612 2618 # CAM-CAO-HAT + 4189 9 2613 2614 2615 # CAM-CAP-CAM + 4190 10 2613 2614 2620 # CAM-CAP-HAT + 4191 11 2614 2613 2619 # CAP-CAM-HAT + 4192 6 2616 2615 2614 # CAO-CAM-CAP + 4193 11 2614 2615 2621 # CAP-CAM-HAT + 4194 10 2615 2614 2620 # CAM-CAP-HAT + 4195 8 2615 2616 2622 # CAM-CAO-HAT + 4196 7 2616 2615 2621 # CAO-CAM-HAT + 4197 4 2616 2611 2617 # CAO-CAT-CTT + 4198 12 2623 2617 2624 # HT-CTT-HT + 4199 12 2623 2617 2625 # HT-CTT-HT + 4200 12 2624 2617 2625 # HT-CTT-HT + 4201 1 2626 2627 2628 # CAT-CAO-CAM + 4202 2 2626 2627 2633 # CAT-CAO-HAT + 4203 3 2626 2632 2638 # CAT-CTT-HT + 4204 3 2626 2632 2639 # CAT-CTT-HT + 4205 3 2626 2632 2640 # CAT-CTT-HT + 4206 1 2626 2631 2630 # CAT-CAO-CAM + 4207 2 2626 2631 2637 # CAT-CAO-HAT + 4208 4 2627 2626 2632 # CAO-CAT-CTT + 4209 5 2627 2626 2631 # CAO-CAT-CAO + 4210 6 2627 2628 2629 # CAO-CAM-CAP + 4211 7 2627 2628 2634 # CAO-CAM-HAT + 4212 8 2628 2627 2633 # CAM-CAO-HAT + 4213 9 2628 2629 2630 # CAM-CAP-CAM + 4214 10 2628 2629 2635 # CAM-CAP-HAT + 4215 11 2629 2628 2634 # CAP-CAM-HAT + 4216 6 2631 2630 2629 # CAO-CAM-CAP + 4217 11 2629 2630 2636 # CAP-CAM-HAT + 4218 10 2630 2629 2635 # CAM-CAP-HAT + 4219 8 2630 2631 2637 # CAM-CAO-HAT + 4220 7 2631 2630 2636 # CAO-CAM-HAT + 4221 4 2631 2626 2632 # CAO-CAT-CTT + 4222 12 2638 2632 2639 # HT-CTT-HT + 4223 12 2638 2632 2640 # HT-CTT-HT + 4224 12 2639 2632 2640 # HT-CTT-HT + 4225 1 2641 2642 2643 # CAT-CAO-CAM + 4226 2 2641 2642 2648 # CAT-CAO-HAT + 4227 3 2641 2647 2653 # CAT-CTT-HT + 4228 3 2641 2647 2654 # CAT-CTT-HT + 4229 3 2641 2647 2655 # CAT-CTT-HT + 4230 1 2641 2646 2645 # CAT-CAO-CAM + 4231 2 2641 2646 2652 # CAT-CAO-HAT + 4232 4 2642 2641 2647 # CAO-CAT-CTT + 4233 5 2642 2641 2646 # CAO-CAT-CAO + 4234 6 2642 2643 2644 # CAO-CAM-CAP + 4235 7 2642 2643 2649 # CAO-CAM-HAT + 4236 8 2643 2642 2648 # CAM-CAO-HAT + 4237 9 2643 2644 2645 # CAM-CAP-CAM + 4238 10 2643 2644 2650 # CAM-CAP-HAT + 4239 11 2644 2643 2649 # CAP-CAM-HAT + 4240 6 2646 2645 2644 # CAO-CAM-CAP + 4241 11 2644 2645 2651 # CAP-CAM-HAT + 4242 10 2645 2644 2650 # CAM-CAP-HAT + 4243 8 2645 2646 2652 # CAM-CAO-HAT + 4244 7 2646 2645 2651 # CAO-CAM-HAT + 4245 4 2646 2641 2647 # CAO-CAT-CTT + 4246 12 2653 2647 2654 # HT-CTT-HT + 4247 12 2653 2647 2655 # HT-CTT-HT + 4248 12 2654 2647 2655 # HT-CTT-HT + 4249 1 2656 2657 2658 # CAT-CAO-CAM + 4250 2 2656 2657 2663 # CAT-CAO-HAT + 4251 3 2656 2662 2668 # CAT-CTT-HT + 4252 3 2656 2662 2669 # CAT-CTT-HT + 4253 3 2656 2662 2670 # CAT-CTT-HT + 4254 1 2656 2661 2660 # CAT-CAO-CAM + 4255 2 2656 2661 2667 # CAT-CAO-HAT + 4256 4 2657 2656 2662 # CAO-CAT-CTT + 4257 5 2657 2656 2661 # CAO-CAT-CAO + 4258 6 2657 2658 2659 # CAO-CAM-CAP + 4259 7 2657 2658 2664 # CAO-CAM-HAT + 4260 8 2658 2657 2663 # CAM-CAO-HAT + 4261 9 2658 2659 2660 # CAM-CAP-CAM + 4262 10 2658 2659 2665 # CAM-CAP-HAT + 4263 11 2659 2658 2664 # CAP-CAM-HAT + 4264 6 2661 2660 2659 # CAO-CAM-CAP + 4265 11 2659 2660 2666 # CAP-CAM-HAT + 4266 10 2660 2659 2665 # CAM-CAP-HAT + 4267 8 2660 2661 2667 # CAM-CAO-HAT + 4268 7 2661 2660 2666 # CAO-CAM-HAT + 4269 4 2661 2656 2662 # CAO-CAT-CTT + 4270 12 2668 2662 2669 # HT-CTT-HT + 4271 12 2668 2662 2670 # HT-CTT-HT + 4272 12 2669 2662 2670 # HT-CTT-HT + 4273 1 2671 2672 2673 # CAT-CAO-CAM + 4274 2 2671 2672 2678 # CAT-CAO-HAT + 4275 3 2671 2677 2683 # CAT-CTT-HT + 4276 3 2671 2677 2684 # CAT-CTT-HT + 4277 3 2671 2677 2685 # CAT-CTT-HT + 4278 1 2671 2676 2675 # CAT-CAO-CAM + 4279 2 2671 2676 2682 # CAT-CAO-HAT + 4280 4 2672 2671 2677 # CAO-CAT-CTT + 4281 5 2672 2671 2676 # CAO-CAT-CAO + 4282 6 2672 2673 2674 # CAO-CAM-CAP + 4283 7 2672 2673 2679 # CAO-CAM-HAT + 4284 8 2673 2672 2678 # CAM-CAO-HAT + 4285 9 2673 2674 2675 # CAM-CAP-CAM + 4286 10 2673 2674 2680 # CAM-CAP-HAT + 4287 11 2674 2673 2679 # CAP-CAM-HAT + 4288 6 2676 2675 2674 # CAO-CAM-CAP + 4289 11 2674 2675 2681 # CAP-CAM-HAT + 4290 10 2675 2674 2680 # CAM-CAP-HAT + 4291 8 2675 2676 2682 # CAM-CAO-HAT + 4292 7 2676 2675 2681 # CAO-CAM-HAT + 4293 4 2676 2671 2677 # CAO-CAT-CTT + 4294 12 2683 2677 2684 # HT-CTT-HT + 4295 12 2683 2677 2685 # HT-CTT-HT + 4296 12 2684 2677 2685 # HT-CTT-HT + 4297 1 2686 2687 2688 # CAT-CAO-CAM + 4298 2 2686 2687 2693 # CAT-CAO-HAT + 4299 3 2686 2692 2698 # CAT-CTT-HT + 4300 3 2686 2692 2699 # CAT-CTT-HT + 4301 3 2686 2692 2700 # CAT-CTT-HT + 4302 1 2686 2691 2690 # CAT-CAO-CAM + 4303 2 2686 2691 2697 # CAT-CAO-HAT + 4304 4 2687 2686 2692 # CAO-CAT-CTT + 4305 5 2687 2686 2691 # CAO-CAT-CAO + 4306 6 2687 2688 2689 # CAO-CAM-CAP + 4307 7 2687 2688 2694 # CAO-CAM-HAT + 4308 8 2688 2687 2693 # CAM-CAO-HAT + 4309 9 2688 2689 2690 # CAM-CAP-CAM + 4310 10 2688 2689 2695 # CAM-CAP-HAT + 4311 11 2689 2688 2694 # CAP-CAM-HAT + 4312 6 2691 2690 2689 # CAO-CAM-CAP + 4313 11 2689 2690 2696 # CAP-CAM-HAT + 4314 10 2690 2689 2695 # CAM-CAP-HAT + 4315 8 2690 2691 2697 # CAM-CAO-HAT + 4316 7 2691 2690 2696 # CAO-CAM-HAT + 4317 4 2691 2686 2692 # CAO-CAT-CTT + 4318 12 2698 2692 2699 # HT-CTT-HT + 4319 12 2698 2692 2700 # HT-CTT-HT + 4320 12 2699 2692 2700 # HT-CTT-HT + 4321 1 2701 2702 2703 # CAT-CAO-CAM + 4322 2 2701 2702 2708 # CAT-CAO-HAT + 4323 3 2701 2707 2713 # CAT-CTT-HT + 4324 3 2701 2707 2714 # CAT-CTT-HT + 4325 3 2701 2707 2715 # CAT-CTT-HT + 4326 1 2701 2706 2705 # CAT-CAO-CAM + 4327 2 2701 2706 2712 # CAT-CAO-HAT + 4328 4 2702 2701 2707 # CAO-CAT-CTT + 4329 5 2702 2701 2706 # CAO-CAT-CAO + 4330 6 2702 2703 2704 # CAO-CAM-CAP + 4331 7 2702 2703 2709 # CAO-CAM-HAT + 4332 8 2703 2702 2708 # CAM-CAO-HAT + 4333 9 2703 2704 2705 # CAM-CAP-CAM + 4334 10 2703 2704 2710 # CAM-CAP-HAT + 4335 11 2704 2703 2709 # CAP-CAM-HAT + 4336 6 2706 2705 2704 # CAO-CAM-CAP + 4337 11 2704 2705 2711 # CAP-CAM-HAT + 4338 10 2705 2704 2710 # CAM-CAP-HAT + 4339 8 2705 2706 2712 # CAM-CAO-HAT + 4340 7 2706 2705 2711 # CAO-CAM-HAT + 4341 4 2706 2701 2707 # CAO-CAT-CTT + 4342 12 2713 2707 2714 # HT-CTT-HT + 4343 12 2713 2707 2715 # HT-CTT-HT + 4344 12 2714 2707 2715 # HT-CTT-HT + 4345 1 2716 2717 2718 # CAT-CAO-CAM + 4346 2 2716 2717 2723 # CAT-CAO-HAT + 4347 3 2716 2722 2728 # CAT-CTT-HT + 4348 3 2716 2722 2729 # CAT-CTT-HT + 4349 3 2716 2722 2730 # CAT-CTT-HT + 4350 1 2716 2721 2720 # CAT-CAO-CAM + 4351 2 2716 2721 2727 # CAT-CAO-HAT + 4352 4 2717 2716 2722 # CAO-CAT-CTT + 4353 5 2717 2716 2721 # CAO-CAT-CAO + 4354 6 2717 2718 2719 # CAO-CAM-CAP + 4355 7 2717 2718 2724 # CAO-CAM-HAT + 4356 8 2718 2717 2723 # CAM-CAO-HAT + 4357 9 2718 2719 2720 # CAM-CAP-CAM + 4358 10 2718 2719 2725 # CAM-CAP-HAT + 4359 11 2719 2718 2724 # CAP-CAM-HAT + 4360 6 2721 2720 2719 # CAO-CAM-CAP + 4361 11 2719 2720 2726 # CAP-CAM-HAT + 4362 10 2720 2719 2725 # CAM-CAP-HAT + 4363 8 2720 2721 2727 # CAM-CAO-HAT + 4364 7 2721 2720 2726 # CAO-CAM-HAT + 4365 4 2721 2716 2722 # CAO-CAT-CTT + 4366 12 2728 2722 2729 # HT-CTT-HT + 4367 12 2728 2722 2730 # HT-CTT-HT + 4368 12 2729 2722 2730 # HT-CTT-HT + 4369 1 2731 2732 2733 # CAT-CAO-CAM + 4370 2 2731 2732 2738 # CAT-CAO-HAT + 4371 3 2731 2737 2743 # CAT-CTT-HT + 4372 3 2731 2737 2744 # CAT-CTT-HT + 4373 3 2731 2737 2745 # CAT-CTT-HT + 4374 1 2731 2736 2735 # CAT-CAO-CAM + 4375 2 2731 2736 2742 # CAT-CAO-HAT + 4376 4 2732 2731 2737 # CAO-CAT-CTT + 4377 5 2732 2731 2736 # CAO-CAT-CAO + 4378 6 2732 2733 2734 # CAO-CAM-CAP + 4379 7 2732 2733 2739 # CAO-CAM-HAT + 4380 8 2733 2732 2738 # CAM-CAO-HAT + 4381 9 2733 2734 2735 # CAM-CAP-CAM + 4382 10 2733 2734 2740 # CAM-CAP-HAT + 4383 11 2734 2733 2739 # CAP-CAM-HAT + 4384 6 2736 2735 2734 # CAO-CAM-CAP + 4385 11 2734 2735 2741 # CAP-CAM-HAT + 4386 10 2735 2734 2740 # CAM-CAP-HAT + 4387 8 2735 2736 2742 # CAM-CAO-HAT + 4388 7 2736 2735 2741 # CAO-CAM-HAT + 4389 4 2736 2731 2737 # CAO-CAT-CTT + 4390 12 2743 2737 2744 # HT-CTT-HT + 4391 12 2743 2737 2745 # HT-CTT-HT + 4392 12 2744 2737 2745 # HT-CTT-HT + 4393 1 2746 2747 2748 # CAT-CAO-CAM + 4394 2 2746 2747 2753 # CAT-CAO-HAT + 4395 3 2746 2752 2758 # CAT-CTT-HT + 4396 3 2746 2752 2759 # CAT-CTT-HT + 4397 3 2746 2752 2760 # CAT-CTT-HT + 4398 1 2746 2751 2750 # CAT-CAO-CAM + 4399 2 2746 2751 2757 # CAT-CAO-HAT + 4400 4 2747 2746 2752 # CAO-CAT-CTT + 4401 5 2747 2746 2751 # CAO-CAT-CAO + 4402 6 2747 2748 2749 # CAO-CAM-CAP + 4403 7 2747 2748 2754 # CAO-CAM-HAT + 4404 8 2748 2747 2753 # CAM-CAO-HAT + 4405 9 2748 2749 2750 # CAM-CAP-CAM + 4406 10 2748 2749 2755 # CAM-CAP-HAT + 4407 11 2749 2748 2754 # CAP-CAM-HAT + 4408 6 2751 2750 2749 # CAO-CAM-CAP + 4409 11 2749 2750 2756 # CAP-CAM-HAT + 4410 10 2750 2749 2755 # CAM-CAP-HAT + 4411 8 2750 2751 2757 # CAM-CAO-HAT + 4412 7 2751 2750 2756 # CAO-CAM-HAT + 4413 4 2751 2746 2752 # CAO-CAT-CTT + 4414 12 2758 2752 2759 # HT-CTT-HT + 4415 12 2758 2752 2760 # HT-CTT-HT + 4416 12 2759 2752 2760 # HT-CTT-HT + 4417 1 2761 2762 2763 # CAT-CAO-CAM + 4418 2 2761 2762 2768 # CAT-CAO-HAT + 4419 3 2761 2767 2773 # CAT-CTT-HT + 4420 3 2761 2767 2774 # CAT-CTT-HT + 4421 3 2761 2767 2775 # CAT-CTT-HT + 4422 1 2761 2766 2765 # CAT-CAO-CAM + 4423 2 2761 2766 2772 # CAT-CAO-HAT + 4424 4 2762 2761 2767 # CAO-CAT-CTT + 4425 5 2762 2761 2766 # CAO-CAT-CAO + 4426 6 2762 2763 2764 # CAO-CAM-CAP + 4427 7 2762 2763 2769 # CAO-CAM-HAT + 4428 8 2763 2762 2768 # CAM-CAO-HAT + 4429 9 2763 2764 2765 # CAM-CAP-CAM + 4430 10 2763 2764 2770 # CAM-CAP-HAT + 4431 11 2764 2763 2769 # CAP-CAM-HAT + 4432 6 2766 2765 2764 # CAO-CAM-CAP + 4433 11 2764 2765 2771 # CAP-CAM-HAT + 4434 10 2765 2764 2770 # CAM-CAP-HAT + 4435 8 2765 2766 2772 # CAM-CAO-HAT + 4436 7 2766 2765 2771 # CAO-CAM-HAT + 4437 4 2766 2761 2767 # CAO-CAT-CTT + 4438 12 2773 2767 2774 # HT-CTT-HT + 4439 12 2773 2767 2775 # HT-CTT-HT + 4440 12 2774 2767 2775 # HT-CTT-HT + 4441 1 2776 2777 2778 # CAT-CAO-CAM + 4442 2 2776 2777 2783 # CAT-CAO-HAT + 4443 3 2776 2782 2788 # CAT-CTT-HT + 4444 3 2776 2782 2789 # CAT-CTT-HT + 4445 3 2776 2782 2790 # CAT-CTT-HT + 4446 1 2776 2781 2780 # CAT-CAO-CAM + 4447 2 2776 2781 2787 # CAT-CAO-HAT + 4448 4 2777 2776 2782 # CAO-CAT-CTT + 4449 5 2777 2776 2781 # CAO-CAT-CAO + 4450 6 2777 2778 2779 # CAO-CAM-CAP + 4451 7 2777 2778 2784 # CAO-CAM-HAT + 4452 8 2778 2777 2783 # CAM-CAO-HAT + 4453 9 2778 2779 2780 # CAM-CAP-CAM + 4454 10 2778 2779 2785 # CAM-CAP-HAT + 4455 11 2779 2778 2784 # CAP-CAM-HAT + 4456 6 2781 2780 2779 # CAO-CAM-CAP + 4457 11 2779 2780 2786 # CAP-CAM-HAT + 4458 10 2780 2779 2785 # CAM-CAP-HAT + 4459 8 2780 2781 2787 # CAM-CAO-HAT + 4460 7 2781 2780 2786 # CAO-CAM-HAT + 4461 4 2781 2776 2782 # CAO-CAT-CTT + 4462 12 2788 2782 2789 # HT-CTT-HT + 4463 12 2788 2782 2790 # HT-CTT-HT + 4464 12 2789 2782 2790 # HT-CTT-HT + 4465 1 2791 2792 2793 # CAT-CAO-CAM + 4466 2 2791 2792 2798 # CAT-CAO-HAT + 4467 3 2791 2797 2803 # CAT-CTT-HT + 4468 3 2791 2797 2804 # CAT-CTT-HT + 4469 3 2791 2797 2805 # CAT-CTT-HT + 4470 1 2791 2796 2795 # CAT-CAO-CAM + 4471 2 2791 2796 2802 # CAT-CAO-HAT + 4472 4 2792 2791 2797 # CAO-CAT-CTT + 4473 5 2792 2791 2796 # CAO-CAT-CAO + 4474 6 2792 2793 2794 # CAO-CAM-CAP + 4475 7 2792 2793 2799 # CAO-CAM-HAT + 4476 8 2793 2792 2798 # CAM-CAO-HAT + 4477 9 2793 2794 2795 # CAM-CAP-CAM + 4478 10 2793 2794 2800 # CAM-CAP-HAT + 4479 11 2794 2793 2799 # CAP-CAM-HAT + 4480 6 2796 2795 2794 # CAO-CAM-CAP + 4481 11 2794 2795 2801 # CAP-CAM-HAT + 4482 10 2795 2794 2800 # CAM-CAP-HAT + 4483 8 2795 2796 2802 # CAM-CAO-HAT + 4484 7 2796 2795 2801 # CAO-CAM-HAT + 4485 4 2796 2791 2797 # CAO-CAT-CTT + 4486 12 2803 2797 2804 # HT-CTT-HT + 4487 12 2803 2797 2805 # HT-CTT-HT + 4488 12 2804 2797 2805 # HT-CTT-HT + 4489 1 2806 2807 2808 # CAT-CAO-CAM + 4490 2 2806 2807 2813 # CAT-CAO-HAT + 4491 3 2806 2812 2818 # CAT-CTT-HT + 4492 3 2806 2812 2819 # CAT-CTT-HT + 4493 3 2806 2812 2820 # CAT-CTT-HT + 4494 1 2806 2811 2810 # CAT-CAO-CAM + 4495 2 2806 2811 2817 # CAT-CAO-HAT + 4496 4 2807 2806 2812 # CAO-CAT-CTT + 4497 5 2807 2806 2811 # CAO-CAT-CAO + 4498 6 2807 2808 2809 # CAO-CAM-CAP + 4499 7 2807 2808 2814 # CAO-CAM-HAT + 4500 8 2808 2807 2813 # CAM-CAO-HAT + 4501 9 2808 2809 2810 # CAM-CAP-CAM + 4502 10 2808 2809 2815 # CAM-CAP-HAT + 4503 11 2809 2808 2814 # CAP-CAM-HAT + 4504 6 2811 2810 2809 # CAO-CAM-CAP + 4505 11 2809 2810 2816 # CAP-CAM-HAT + 4506 10 2810 2809 2815 # CAM-CAP-HAT + 4507 8 2810 2811 2817 # CAM-CAO-HAT + 4508 7 2811 2810 2816 # CAO-CAM-HAT + 4509 4 2811 2806 2812 # CAO-CAT-CTT + 4510 12 2818 2812 2819 # HT-CTT-HT + 4511 12 2818 2812 2820 # HT-CTT-HT + 4512 12 2819 2812 2820 # HT-CTT-HT + 4513 1 2821 2822 2823 # CAT-CAO-CAM + 4514 2 2821 2822 2828 # CAT-CAO-HAT + 4515 3 2821 2827 2833 # CAT-CTT-HT + 4516 3 2821 2827 2834 # CAT-CTT-HT + 4517 3 2821 2827 2835 # CAT-CTT-HT + 4518 1 2821 2826 2825 # CAT-CAO-CAM + 4519 2 2821 2826 2832 # CAT-CAO-HAT + 4520 4 2822 2821 2827 # CAO-CAT-CTT + 4521 5 2822 2821 2826 # CAO-CAT-CAO + 4522 6 2822 2823 2824 # CAO-CAM-CAP + 4523 7 2822 2823 2829 # CAO-CAM-HAT + 4524 8 2823 2822 2828 # CAM-CAO-HAT + 4525 9 2823 2824 2825 # CAM-CAP-CAM + 4526 10 2823 2824 2830 # CAM-CAP-HAT + 4527 11 2824 2823 2829 # CAP-CAM-HAT + 4528 6 2826 2825 2824 # CAO-CAM-CAP + 4529 11 2824 2825 2831 # CAP-CAM-HAT + 4530 10 2825 2824 2830 # CAM-CAP-HAT + 4531 8 2825 2826 2832 # CAM-CAO-HAT + 4532 7 2826 2825 2831 # CAO-CAM-HAT + 4533 4 2826 2821 2827 # CAO-CAT-CTT + 4534 12 2833 2827 2834 # HT-CTT-HT + 4535 12 2833 2827 2835 # HT-CTT-HT + 4536 12 2834 2827 2835 # HT-CTT-HT + 4537 1 2836 2837 2838 # CAT-CAO-CAM + 4538 2 2836 2837 2843 # CAT-CAO-HAT + 4539 3 2836 2842 2848 # CAT-CTT-HT + 4540 3 2836 2842 2849 # CAT-CTT-HT + 4541 3 2836 2842 2850 # CAT-CTT-HT + 4542 1 2836 2841 2840 # CAT-CAO-CAM + 4543 2 2836 2841 2847 # CAT-CAO-HAT + 4544 4 2837 2836 2842 # CAO-CAT-CTT + 4545 5 2837 2836 2841 # CAO-CAT-CAO + 4546 6 2837 2838 2839 # CAO-CAM-CAP + 4547 7 2837 2838 2844 # CAO-CAM-HAT + 4548 8 2838 2837 2843 # CAM-CAO-HAT + 4549 9 2838 2839 2840 # CAM-CAP-CAM + 4550 10 2838 2839 2845 # CAM-CAP-HAT + 4551 11 2839 2838 2844 # CAP-CAM-HAT + 4552 6 2841 2840 2839 # CAO-CAM-CAP + 4553 11 2839 2840 2846 # CAP-CAM-HAT + 4554 10 2840 2839 2845 # CAM-CAP-HAT + 4555 8 2840 2841 2847 # CAM-CAO-HAT + 4556 7 2841 2840 2846 # CAO-CAM-HAT + 4557 4 2841 2836 2842 # CAO-CAT-CTT + 4558 12 2848 2842 2849 # HT-CTT-HT + 4559 12 2848 2842 2850 # HT-CTT-HT + 4560 12 2849 2842 2850 # HT-CTT-HT + 4561 1 2851 2852 2853 # CAT-CAO-CAM + 4562 2 2851 2852 2858 # CAT-CAO-HAT + 4563 3 2851 2857 2863 # CAT-CTT-HT + 4564 3 2851 2857 2864 # CAT-CTT-HT + 4565 3 2851 2857 2865 # CAT-CTT-HT + 4566 1 2851 2856 2855 # CAT-CAO-CAM + 4567 2 2851 2856 2862 # CAT-CAO-HAT + 4568 4 2852 2851 2857 # CAO-CAT-CTT + 4569 5 2852 2851 2856 # CAO-CAT-CAO + 4570 6 2852 2853 2854 # CAO-CAM-CAP + 4571 7 2852 2853 2859 # CAO-CAM-HAT + 4572 8 2853 2852 2858 # CAM-CAO-HAT + 4573 9 2853 2854 2855 # CAM-CAP-CAM + 4574 10 2853 2854 2860 # CAM-CAP-HAT + 4575 11 2854 2853 2859 # CAP-CAM-HAT + 4576 6 2856 2855 2854 # CAO-CAM-CAP + 4577 11 2854 2855 2861 # CAP-CAM-HAT + 4578 10 2855 2854 2860 # CAM-CAP-HAT + 4579 8 2855 2856 2862 # CAM-CAO-HAT + 4580 7 2856 2855 2861 # CAO-CAM-HAT + 4581 4 2856 2851 2857 # CAO-CAT-CTT + 4582 12 2863 2857 2864 # HT-CTT-HT + 4583 12 2863 2857 2865 # HT-CTT-HT + 4584 12 2864 2857 2865 # HT-CTT-HT + 4585 1 2866 2867 2868 # CAT-CAO-CAM + 4586 2 2866 2867 2873 # CAT-CAO-HAT + 4587 3 2866 2872 2878 # CAT-CTT-HT + 4588 3 2866 2872 2879 # CAT-CTT-HT + 4589 3 2866 2872 2880 # CAT-CTT-HT + 4590 1 2866 2871 2870 # CAT-CAO-CAM + 4591 2 2866 2871 2877 # CAT-CAO-HAT + 4592 4 2867 2866 2872 # CAO-CAT-CTT + 4593 5 2867 2866 2871 # CAO-CAT-CAO + 4594 6 2867 2868 2869 # CAO-CAM-CAP + 4595 7 2867 2868 2874 # CAO-CAM-HAT + 4596 8 2868 2867 2873 # CAM-CAO-HAT + 4597 9 2868 2869 2870 # CAM-CAP-CAM + 4598 10 2868 2869 2875 # CAM-CAP-HAT + 4599 11 2869 2868 2874 # CAP-CAM-HAT + 4600 6 2871 2870 2869 # CAO-CAM-CAP + 4601 11 2869 2870 2876 # CAP-CAM-HAT + 4602 10 2870 2869 2875 # CAM-CAP-HAT + 4603 8 2870 2871 2877 # CAM-CAO-HAT + 4604 7 2871 2870 2876 # CAO-CAM-HAT + 4605 4 2871 2866 2872 # CAO-CAT-CTT + 4606 12 2878 2872 2879 # HT-CTT-HT + 4607 12 2878 2872 2880 # HT-CTT-HT + 4608 12 2879 2872 2880 # HT-CTT-HT + 4609 1 2881 2882 2883 # CAT-CAO-CAM + 4610 2 2881 2882 2888 # CAT-CAO-HAT + 4611 3 2881 2887 2893 # CAT-CTT-HT + 4612 3 2881 2887 2894 # CAT-CTT-HT + 4613 3 2881 2887 2895 # CAT-CTT-HT + 4614 1 2881 2886 2885 # CAT-CAO-CAM + 4615 2 2881 2886 2892 # CAT-CAO-HAT + 4616 4 2882 2881 2887 # CAO-CAT-CTT + 4617 5 2882 2881 2886 # CAO-CAT-CAO + 4618 6 2882 2883 2884 # CAO-CAM-CAP + 4619 7 2882 2883 2889 # CAO-CAM-HAT + 4620 8 2883 2882 2888 # CAM-CAO-HAT + 4621 9 2883 2884 2885 # CAM-CAP-CAM + 4622 10 2883 2884 2890 # CAM-CAP-HAT + 4623 11 2884 2883 2889 # CAP-CAM-HAT + 4624 6 2886 2885 2884 # CAO-CAM-CAP + 4625 11 2884 2885 2891 # CAP-CAM-HAT + 4626 10 2885 2884 2890 # CAM-CAP-HAT + 4627 8 2885 2886 2892 # CAM-CAO-HAT + 4628 7 2886 2885 2891 # CAO-CAM-HAT + 4629 4 2886 2881 2887 # CAO-CAT-CTT + 4630 12 2893 2887 2894 # HT-CTT-HT + 4631 12 2893 2887 2895 # HT-CTT-HT + 4632 12 2894 2887 2895 # HT-CTT-HT + 4633 1 2896 2897 2898 # CAT-CAO-CAM + 4634 2 2896 2897 2903 # CAT-CAO-HAT + 4635 3 2896 2902 2908 # CAT-CTT-HT + 4636 3 2896 2902 2909 # CAT-CTT-HT + 4637 3 2896 2902 2910 # CAT-CTT-HT + 4638 1 2896 2901 2900 # CAT-CAO-CAM + 4639 2 2896 2901 2907 # CAT-CAO-HAT + 4640 4 2897 2896 2902 # CAO-CAT-CTT + 4641 5 2897 2896 2901 # CAO-CAT-CAO + 4642 6 2897 2898 2899 # CAO-CAM-CAP + 4643 7 2897 2898 2904 # CAO-CAM-HAT + 4644 8 2898 2897 2903 # CAM-CAO-HAT + 4645 9 2898 2899 2900 # CAM-CAP-CAM + 4646 10 2898 2899 2905 # CAM-CAP-HAT + 4647 11 2899 2898 2904 # CAP-CAM-HAT + 4648 6 2901 2900 2899 # CAO-CAM-CAP + 4649 11 2899 2900 2906 # CAP-CAM-HAT + 4650 10 2900 2899 2905 # CAM-CAP-HAT + 4651 8 2900 2901 2907 # CAM-CAO-HAT + 4652 7 2901 2900 2906 # CAO-CAM-HAT + 4653 4 2901 2896 2902 # CAO-CAT-CTT + 4654 12 2908 2902 2909 # HT-CTT-HT + 4655 12 2908 2902 2910 # HT-CTT-HT + 4656 12 2909 2902 2910 # HT-CTT-HT + 4657 1 2911 2912 2913 # CAT-CAO-CAM + 4658 2 2911 2912 2918 # CAT-CAO-HAT + 4659 3 2911 2917 2923 # CAT-CTT-HT + 4660 3 2911 2917 2924 # CAT-CTT-HT + 4661 3 2911 2917 2925 # CAT-CTT-HT + 4662 1 2911 2916 2915 # CAT-CAO-CAM + 4663 2 2911 2916 2922 # CAT-CAO-HAT + 4664 4 2912 2911 2917 # CAO-CAT-CTT + 4665 5 2912 2911 2916 # CAO-CAT-CAO + 4666 6 2912 2913 2914 # CAO-CAM-CAP + 4667 7 2912 2913 2919 # CAO-CAM-HAT + 4668 8 2913 2912 2918 # CAM-CAO-HAT + 4669 9 2913 2914 2915 # CAM-CAP-CAM + 4670 10 2913 2914 2920 # CAM-CAP-HAT + 4671 11 2914 2913 2919 # CAP-CAM-HAT + 4672 6 2916 2915 2914 # CAO-CAM-CAP + 4673 11 2914 2915 2921 # CAP-CAM-HAT + 4674 10 2915 2914 2920 # CAM-CAP-HAT + 4675 8 2915 2916 2922 # CAM-CAO-HAT + 4676 7 2916 2915 2921 # CAO-CAM-HAT + 4677 4 2916 2911 2917 # CAO-CAT-CTT + 4678 12 2923 2917 2924 # HT-CTT-HT + 4679 12 2923 2917 2925 # HT-CTT-HT + 4680 12 2924 2917 2925 # HT-CTT-HT + 4681 1 2926 2927 2928 # CAT-CAO-CAM + 4682 2 2926 2927 2933 # CAT-CAO-HAT + 4683 3 2926 2932 2938 # CAT-CTT-HT + 4684 3 2926 2932 2939 # CAT-CTT-HT + 4685 3 2926 2932 2940 # CAT-CTT-HT + 4686 1 2926 2931 2930 # CAT-CAO-CAM + 4687 2 2926 2931 2937 # CAT-CAO-HAT + 4688 4 2927 2926 2932 # CAO-CAT-CTT + 4689 5 2927 2926 2931 # CAO-CAT-CAO + 4690 6 2927 2928 2929 # CAO-CAM-CAP + 4691 7 2927 2928 2934 # CAO-CAM-HAT + 4692 8 2928 2927 2933 # CAM-CAO-HAT + 4693 9 2928 2929 2930 # CAM-CAP-CAM + 4694 10 2928 2929 2935 # CAM-CAP-HAT + 4695 11 2929 2928 2934 # CAP-CAM-HAT + 4696 6 2931 2930 2929 # CAO-CAM-CAP + 4697 11 2929 2930 2936 # CAP-CAM-HAT + 4698 10 2930 2929 2935 # CAM-CAP-HAT + 4699 8 2930 2931 2937 # CAM-CAO-HAT + 4700 7 2931 2930 2936 # CAO-CAM-HAT + 4701 4 2931 2926 2932 # CAO-CAT-CTT + 4702 12 2938 2932 2939 # HT-CTT-HT + 4703 12 2938 2932 2940 # HT-CTT-HT + 4704 12 2939 2932 2940 # HT-CTT-HT + 4705 1 2941 2942 2943 # CAT-CAO-CAM + 4706 2 2941 2942 2948 # CAT-CAO-HAT + 4707 3 2941 2947 2953 # CAT-CTT-HT + 4708 3 2941 2947 2954 # CAT-CTT-HT + 4709 3 2941 2947 2955 # CAT-CTT-HT + 4710 1 2941 2946 2945 # CAT-CAO-CAM + 4711 2 2941 2946 2952 # CAT-CAO-HAT + 4712 4 2942 2941 2947 # CAO-CAT-CTT + 4713 5 2942 2941 2946 # CAO-CAT-CAO + 4714 6 2942 2943 2944 # CAO-CAM-CAP + 4715 7 2942 2943 2949 # CAO-CAM-HAT + 4716 8 2943 2942 2948 # CAM-CAO-HAT + 4717 9 2943 2944 2945 # CAM-CAP-CAM + 4718 10 2943 2944 2950 # CAM-CAP-HAT + 4719 11 2944 2943 2949 # CAP-CAM-HAT + 4720 6 2946 2945 2944 # CAO-CAM-CAP + 4721 11 2944 2945 2951 # CAP-CAM-HAT + 4722 10 2945 2944 2950 # CAM-CAP-HAT + 4723 8 2945 2946 2952 # CAM-CAO-HAT + 4724 7 2946 2945 2951 # CAO-CAM-HAT + 4725 4 2946 2941 2947 # CAO-CAT-CTT + 4726 12 2953 2947 2954 # HT-CTT-HT + 4727 12 2953 2947 2955 # HT-CTT-HT + 4728 12 2954 2947 2955 # HT-CTT-HT + 4729 1 2956 2957 2958 # CAT-CAO-CAM + 4730 2 2956 2957 2963 # CAT-CAO-HAT + 4731 3 2956 2962 2968 # CAT-CTT-HT + 4732 3 2956 2962 2969 # CAT-CTT-HT + 4733 3 2956 2962 2970 # CAT-CTT-HT + 4734 1 2956 2961 2960 # CAT-CAO-CAM + 4735 2 2956 2961 2967 # CAT-CAO-HAT + 4736 4 2957 2956 2962 # CAO-CAT-CTT + 4737 5 2957 2956 2961 # CAO-CAT-CAO + 4738 6 2957 2958 2959 # CAO-CAM-CAP + 4739 7 2957 2958 2964 # CAO-CAM-HAT + 4740 8 2958 2957 2963 # CAM-CAO-HAT + 4741 9 2958 2959 2960 # CAM-CAP-CAM + 4742 10 2958 2959 2965 # CAM-CAP-HAT + 4743 11 2959 2958 2964 # CAP-CAM-HAT + 4744 6 2961 2960 2959 # CAO-CAM-CAP + 4745 11 2959 2960 2966 # CAP-CAM-HAT + 4746 10 2960 2959 2965 # CAM-CAP-HAT + 4747 8 2960 2961 2967 # CAM-CAO-HAT + 4748 7 2961 2960 2966 # CAO-CAM-HAT + 4749 4 2961 2956 2962 # CAO-CAT-CTT + 4750 12 2968 2962 2969 # HT-CTT-HT + 4751 12 2968 2962 2970 # HT-CTT-HT + 4752 12 2969 2962 2970 # HT-CTT-HT + 4753 1 2971 2972 2973 # CAT-CAO-CAM + 4754 2 2971 2972 2978 # CAT-CAO-HAT + 4755 3 2971 2977 2983 # CAT-CTT-HT + 4756 3 2971 2977 2984 # CAT-CTT-HT + 4757 3 2971 2977 2985 # CAT-CTT-HT + 4758 1 2971 2976 2975 # CAT-CAO-CAM + 4759 2 2971 2976 2982 # CAT-CAO-HAT + 4760 4 2972 2971 2977 # CAO-CAT-CTT + 4761 5 2972 2971 2976 # CAO-CAT-CAO + 4762 6 2972 2973 2974 # CAO-CAM-CAP + 4763 7 2972 2973 2979 # CAO-CAM-HAT + 4764 8 2973 2972 2978 # CAM-CAO-HAT + 4765 9 2973 2974 2975 # CAM-CAP-CAM + 4766 10 2973 2974 2980 # CAM-CAP-HAT + 4767 11 2974 2973 2979 # CAP-CAM-HAT + 4768 6 2976 2975 2974 # CAO-CAM-CAP + 4769 11 2974 2975 2981 # CAP-CAM-HAT + 4770 10 2975 2974 2980 # CAM-CAP-HAT + 4771 8 2975 2976 2982 # CAM-CAO-HAT + 4772 7 2976 2975 2981 # CAO-CAM-HAT + 4773 4 2976 2971 2977 # CAO-CAT-CTT + 4774 12 2983 2977 2984 # HT-CTT-HT + 4775 12 2983 2977 2985 # HT-CTT-HT + 4776 12 2984 2977 2985 # HT-CTT-HT + 4777 1 2986 2987 2988 # CAT-CAO-CAM + 4778 2 2986 2987 2993 # CAT-CAO-HAT + 4779 3 2986 2992 2998 # CAT-CTT-HT + 4780 3 2986 2992 2999 # CAT-CTT-HT + 4781 3 2986 2992 3000 # CAT-CTT-HT + 4782 1 2986 2991 2990 # CAT-CAO-CAM + 4783 2 2986 2991 2997 # CAT-CAO-HAT + 4784 4 2987 2986 2992 # CAO-CAT-CTT + 4785 5 2987 2986 2991 # CAO-CAT-CAO + 4786 6 2987 2988 2989 # CAO-CAM-CAP + 4787 7 2987 2988 2994 # CAO-CAM-HAT + 4788 8 2988 2987 2993 # CAM-CAO-HAT + 4789 9 2988 2989 2990 # CAM-CAP-CAM + 4790 10 2988 2989 2995 # CAM-CAP-HAT + 4791 11 2989 2988 2994 # CAP-CAM-HAT + 4792 6 2991 2990 2989 # CAO-CAM-CAP + 4793 11 2989 2990 2996 # CAP-CAM-HAT + 4794 10 2990 2989 2995 # CAM-CAP-HAT + 4795 8 2990 2991 2997 # CAM-CAO-HAT + 4796 7 2991 2990 2996 # CAO-CAM-HAT + 4797 4 2991 2986 2992 # CAO-CAT-CTT + 4798 12 2998 2992 2999 # HT-CTT-HT + 4799 12 2998 2992 3000 # HT-CTT-HT + 4800 12 2999 2992 3000 # HT-CTT-HT + 4801 1 3001 3002 3003 # CAT-CAO-CAM + 4802 2 3001 3002 3008 # CAT-CAO-HAT + 4803 3 3001 3007 3013 # CAT-CTT-HT + 4804 3 3001 3007 3014 # CAT-CTT-HT + 4805 3 3001 3007 3015 # CAT-CTT-HT + 4806 1 3001 3006 3005 # CAT-CAO-CAM + 4807 2 3001 3006 3012 # CAT-CAO-HAT + 4808 4 3002 3001 3007 # CAO-CAT-CTT + 4809 5 3002 3001 3006 # CAO-CAT-CAO + 4810 6 3002 3003 3004 # CAO-CAM-CAP + 4811 7 3002 3003 3009 # CAO-CAM-HAT + 4812 8 3003 3002 3008 # CAM-CAO-HAT + 4813 9 3003 3004 3005 # CAM-CAP-CAM + 4814 10 3003 3004 3010 # CAM-CAP-HAT + 4815 11 3004 3003 3009 # CAP-CAM-HAT + 4816 6 3006 3005 3004 # CAO-CAM-CAP + 4817 11 3004 3005 3011 # CAP-CAM-HAT + 4818 10 3005 3004 3010 # CAM-CAP-HAT + 4819 8 3005 3006 3012 # CAM-CAO-HAT + 4820 7 3006 3005 3011 # CAO-CAM-HAT + 4821 4 3006 3001 3007 # CAO-CAT-CTT + 4822 12 3013 3007 3014 # HT-CTT-HT + 4823 12 3013 3007 3015 # HT-CTT-HT + 4824 12 3014 3007 3015 # HT-CTT-HT + 4825 1 3016 3017 3018 # CAT-CAO-CAM + 4826 2 3016 3017 3023 # CAT-CAO-HAT + 4827 3 3016 3022 3028 # CAT-CTT-HT + 4828 3 3016 3022 3029 # CAT-CTT-HT + 4829 3 3016 3022 3030 # CAT-CTT-HT + 4830 1 3016 3021 3020 # CAT-CAO-CAM + 4831 2 3016 3021 3027 # CAT-CAO-HAT + 4832 4 3017 3016 3022 # CAO-CAT-CTT + 4833 5 3017 3016 3021 # CAO-CAT-CAO + 4834 6 3017 3018 3019 # CAO-CAM-CAP + 4835 7 3017 3018 3024 # CAO-CAM-HAT + 4836 8 3018 3017 3023 # CAM-CAO-HAT + 4837 9 3018 3019 3020 # CAM-CAP-CAM + 4838 10 3018 3019 3025 # CAM-CAP-HAT + 4839 11 3019 3018 3024 # CAP-CAM-HAT + 4840 6 3021 3020 3019 # CAO-CAM-CAP + 4841 11 3019 3020 3026 # CAP-CAM-HAT + 4842 10 3020 3019 3025 # CAM-CAP-HAT + 4843 8 3020 3021 3027 # CAM-CAO-HAT + 4844 7 3021 3020 3026 # CAO-CAM-HAT + 4845 4 3021 3016 3022 # CAO-CAT-CTT + 4846 12 3028 3022 3029 # HT-CTT-HT + 4847 12 3028 3022 3030 # HT-CTT-HT + 4848 12 3029 3022 3030 # HT-CTT-HT + 4849 1 3031 3032 3033 # CAT-CAO-CAM + 4850 2 3031 3032 3038 # CAT-CAO-HAT + 4851 3 3031 3037 3043 # CAT-CTT-HT + 4852 3 3031 3037 3044 # CAT-CTT-HT + 4853 3 3031 3037 3045 # CAT-CTT-HT + 4854 1 3031 3036 3035 # CAT-CAO-CAM + 4855 2 3031 3036 3042 # CAT-CAO-HAT + 4856 4 3032 3031 3037 # CAO-CAT-CTT + 4857 5 3032 3031 3036 # CAO-CAT-CAO + 4858 6 3032 3033 3034 # CAO-CAM-CAP + 4859 7 3032 3033 3039 # CAO-CAM-HAT + 4860 8 3033 3032 3038 # CAM-CAO-HAT + 4861 9 3033 3034 3035 # CAM-CAP-CAM + 4862 10 3033 3034 3040 # CAM-CAP-HAT + 4863 11 3034 3033 3039 # CAP-CAM-HAT + 4864 6 3036 3035 3034 # CAO-CAM-CAP + 4865 11 3034 3035 3041 # CAP-CAM-HAT + 4866 10 3035 3034 3040 # CAM-CAP-HAT + 4867 8 3035 3036 3042 # CAM-CAO-HAT + 4868 7 3036 3035 3041 # CAO-CAM-HAT + 4869 4 3036 3031 3037 # CAO-CAT-CTT + 4870 12 3043 3037 3044 # HT-CTT-HT + 4871 12 3043 3037 3045 # HT-CTT-HT + 4872 12 3044 3037 3045 # HT-CTT-HT + 4873 1 3046 3047 3048 # CAT-CAO-CAM + 4874 2 3046 3047 3053 # CAT-CAO-HAT + 4875 3 3046 3052 3058 # CAT-CTT-HT + 4876 3 3046 3052 3059 # CAT-CTT-HT + 4877 3 3046 3052 3060 # CAT-CTT-HT + 4878 1 3046 3051 3050 # CAT-CAO-CAM + 4879 2 3046 3051 3057 # CAT-CAO-HAT + 4880 4 3047 3046 3052 # CAO-CAT-CTT + 4881 5 3047 3046 3051 # CAO-CAT-CAO + 4882 6 3047 3048 3049 # CAO-CAM-CAP + 4883 7 3047 3048 3054 # CAO-CAM-HAT + 4884 8 3048 3047 3053 # CAM-CAO-HAT + 4885 9 3048 3049 3050 # CAM-CAP-CAM + 4886 10 3048 3049 3055 # CAM-CAP-HAT + 4887 11 3049 3048 3054 # CAP-CAM-HAT + 4888 6 3051 3050 3049 # CAO-CAM-CAP + 4889 11 3049 3050 3056 # CAP-CAM-HAT + 4890 10 3050 3049 3055 # CAM-CAP-HAT + 4891 8 3050 3051 3057 # CAM-CAO-HAT + 4892 7 3051 3050 3056 # CAO-CAM-HAT + 4893 4 3051 3046 3052 # CAO-CAT-CTT + 4894 12 3058 3052 3059 # HT-CTT-HT + 4895 12 3058 3052 3060 # HT-CTT-HT + 4896 12 3059 3052 3060 # HT-CTT-HT + 4897 1 3061 3062 3063 # CAT-CAO-CAM + 4898 2 3061 3062 3068 # CAT-CAO-HAT + 4899 3 3061 3067 3073 # CAT-CTT-HT + 4900 3 3061 3067 3074 # CAT-CTT-HT + 4901 3 3061 3067 3075 # CAT-CTT-HT + 4902 1 3061 3066 3065 # CAT-CAO-CAM + 4903 2 3061 3066 3072 # CAT-CAO-HAT + 4904 4 3062 3061 3067 # CAO-CAT-CTT + 4905 5 3062 3061 3066 # CAO-CAT-CAO + 4906 6 3062 3063 3064 # CAO-CAM-CAP + 4907 7 3062 3063 3069 # CAO-CAM-HAT + 4908 8 3063 3062 3068 # CAM-CAO-HAT + 4909 9 3063 3064 3065 # CAM-CAP-CAM + 4910 10 3063 3064 3070 # CAM-CAP-HAT + 4911 11 3064 3063 3069 # CAP-CAM-HAT + 4912 6 3066 3065 3064 # CAO-CAM-CAP + 4913 11 3064 3065 3071 # CAP-CAM-HAT + 4914 10 3065 3064 3070 # CAM-CAP-HAT + 4915 8 3065 3066 3072 # CAM-CAO-HAT + 4916 7 3066 3065 3071 # CAO-CAM-HAT + 4917 4 3066 3061 3067 # CAO-CAT-CTT + 4918 12 3073 3067 3074 # HT-CTT-HT + 4919 12 3073 3067 3075 # HT-CTT-HT + 4920 12 3074 3067 3075 # HT-CTT-HT + 4921 1 3076 3077 3078 # CAT-CAO-CAM + 4922 2 3076 3077 3083 # CAT-CAO-HAT + 4923 3 3076 3082 3088 # CAT-CTT-HT + 4924 3 3076 3082 3089 # CAT-CTT-HT + 4925 3 3076 3082 3090 # CAT-CTT-HT + 4926 1 3076 3081 3080 # CAT-CAO-CAM + 4927 2 3076 3081 3087 # CAT-CAO-HAT + 4928 4 3077 3076 3082 # CAO-CAT-CTT + 4929 5 3077 3076 3081 # CAO-CAT-CAO + 4930 6 3077 3078 3079 # CAO-CAM-CAP + 4931 7 3077 3078 3084 # CAO-CAM-HAT + 4932 8 3078 3077 3083 # CAM-CAO-HAT + 4933 9 3078 3079 3080 # CAM-CAP-CAM + 4934 10 3078 3079 3085 # CAM-CAP-HAT + 4935 11 3079 3078 3084 # CAP-CAM-HAT + 4936 6 3081 3080 3079 # CAO-CAM-CAP + 4937 11 3079 3080 3086 # CAP-CAM-HAT + 4938 10 3080 3079 3085 # CAM-CAP-HAT + 4939 8 3080 3081 3087 # CAM-CAO-HAT + 4940 7 3081 3080 3086 # CAO-CAM-HAT + 4941 4 3081 3076 3082 # CAO-CAT-CTT + 4942 12 3088 3082 3089 # HT-CTT-HT + 4943 12 3088 3082 3090 # HT-CTT-HT + 4944 12 3089 3082 3090 # HT-CTT-HT + 4945 1 3091 3092 3093 # CAT-CAO-CAM + 4946 2 3091 3092 3098 # CAT-CAO-HAT + 4947 3 3091 3097 3103 # CAT-CTT-HT + 4948 3 3091 3097 3104 # CAT-CTT-HT + 4949 3 3091 3097 3105 # CAT-CTT-HT + 4950 1 3091 3096 3095 # CAT-CAO-CAM + 4951 2 3091 3096 3102 # CAT-CAO-HAT + 4952 4 3092 3091 3097 # CAO-CAT-CTT + 4953 5 3092 3091 3096 # CAO-CAT-CAO + 4954 6 3092 3093 3094 # CAO-CAM-CAP + 4955 7 3092 3093 3099 # CAO-CAM-HAT + 4956 8 3093 3092 3098 # CAM-CAO-HAT + 4957 9 3093 3094 3095 # CAM-CAP-CAM + 4958 10 3093 3094 3100 # CAM-CAP-HAT + 4959 11 3094 3093 3099 # CAP-CAM-HAT + 4960 6 3096 3095 3094 # CAO-CAM-CAP + 4961 11 3094 3095 3101 # CAP-CAM-HAT + 4962 10 3095 3094 3100 # CAM-CAP-HAT + 4963 8 3095 3096 3102 # CAM-CAO-HAT + 4964 7 3096 3095 3101 # CAO-CAM-HAT + 4965 4 3096 3091 3097 # CAO-CAT-CTT + 4966 12 3103 3097 3104 # HT-CTT-HT + 4967 12 3103 3097 3105 # HT-CTT-HT + 4968 12 3104 3097 3105 # HT-CTT-HT + 4969 1 3106 3107 3108 # CAT-CAO-CAM + 4970 2 3106 3107 3113 # CAT-CAO-HAT + 4971 3 3106 3112 3118 # CAT-CTT-HT + 4972 3 3106 3112 3119 # CAT-CTT-HT + 4973 3 3106 3112 3120 # CAT-CTT-HT + 4974 1 3106 3111 3110 # CAT-CAO-CAM + 4975 2 3106 3111 3117 # CAT-CAO-HAT + 4976 4 3107 3106 3112 # CAO-CAT-CTT + 4977 5 3107 3106 3111 # CAO-CAT-CAO + 4978 6 3107 3108 3109 # CAO-CAM-CAP + 4979 7 3107 3108 3114 # CAO-CAM-HAT + 4980 8 3108 3107 3113 # CAM-CAO-HAT + 4981 9 3108 3109 3110 # CAM-CAP-CAM + 4982 10 3108 3109 3115 # CAM-CAP-HAT + 4983 11 3109 3108 3114 # CAP-CAM-HAT + 4984 6 3111 3110 3109 # CAO-CAM-CAP + 4985 11 3109 3110 3116 # CAP-CAM-HAT + 4986 10 3110 3109 3115 # CAM-CAP-HAT + 4987 8 3110 3111 3117 # CAM-CAO-HAT + 4988 7 3111 3110 3116 # CAO-CAM-HAT + 4989 4 3111 3106 3112 # CAO-CAT-CTT + 4990 12 3118 3112 3119 # HT-CTT-HT + 4991 12 3118 3112 3120 # HT-CTT-HT + 4992 12 3119 3112 3120 # HT-CTT-HT + 4993 1 3121 3122 3123 # CAT-CAO-CAM + 4994 2 3121 3122 3128 # CAT-CAO-HAT + 4995 3 3121 3127 3133 # CAT-CTT-HT + 4996 3 3121 3127 3134 # CAT-CTT-HT + 4997 3 3121 3127 3135 # CAT-CTT-HT + 4998 1 3121 3126 3125 # CAT-CAO-CAM + 4999 2 3121 3126 3132 # CAT-CAO-HAT + 5000 4 3122 3121 3127 # CAO-CAT-CTT + 5001 5 3122 3121 3126 # CAO-CAT-CAO + 5002 6 3122 3123 3124 # CAO-CAM-CAP + 5003 7 3122 3123 3129 # CAO-CAM-HAT + 5004 8 3123 3122 3128 # CAM-CAO-HAT + 5005 9 3123 3124 3125 # CAM-CAP-CAM + 5006 10 3123 3124 3130 # CAM-CAP-HAT + 5007 11 3124 3123 3129 # CAP-CAM-HAT + 5008 6 3126 3125 3124 # CAO-CAM-CAP + 5009 11 3124 3125 3131 # CAP-CAM-HAT + 5010 10 3125 3124 3130 # CAM-CAP-HAT + 5011 8 3125 3126 3132 # CAM-CAO-HAT + 5012 7 3126 3125 3131 # CAO-CAM-HAT + 5013 4 3126 3121 3127 # CAO-CAT-CTT + 5014 12 3133 3127 3134 # HT-CTT-HT + 5015 12 3133 3127 3135 # HT-CTT-HT + 5016 12 3134 3127 3135 # HT-CTT-HT + 5017 1 3136 3137 3138 # CAT-CAO-CAM + 5018 2 3136 3137 3143 # CAT-CAO-HAT + 5019 3 3136 3142 3148 # CAT-CTT-HT + 5020 3 3136 3142 3149 # CAT-CTT-HT + 5021 3 3136 3142 3150 # CAT-CTT-HT + 5022 1 3136 3141 3140 # CAT-CAO-CAM + 5023 2 3136 3141 3147 # CAT-CAO-HAT + 5024 4 3137 3136 3142 # CAO-CAT-CTT + 5025 5 3137 3136 3141 # CAO-CAT-CAO + 5026 6 3137 3138 3139 # CAO-CAM-CAP + 5027 7 3137 3138 3144 # CAO-CAM-HAT + 5028 8 3138 3137 3143 # CAM-CAO-HAT + 5029 9 3138 3139 3140 # CAM-CAP-CAM + 5030 10 3138 3139 3145 # CAM-CAP-HAT + 5031 11 3139 3138 3144 # CAP-CAM-HAT + 5032 6 3141 3140 3139 # CAO-CAM-CAP + 5033 11 3139 3140 3146 # CAP-CAM-HAT + 5034 10 3140 3139 3145 # CAM-CAP-HAT + 5035 8 3140 3141 3147 # CAM-CAO-HAT + 5036 7 3141 3140 3146 # CAO-CAM-HAT + 5037 4 3141 3136 3142 # CAO-CAT-CTT + 5038 12 3148 3142 3149 # HT-CTT-HT + 5039 12 3148 3142 3150 # HT-CTT-HT + 5040 12 3149 3142 3150 # HT-CTT-HT + 5041 1 3151 3152 3153 # CAT-CAO-CAM + 5042 2 3151 3152 3158 # CAT-CAO-HAT + 5043 3 3151 3157 3163 # CAT-CTT-HT + 5044 3 3151 3157 3164 # CAT-CTT-HT + 5045 3 3151 3157 3165 # CAT-CTT-HT + 5046 1 3151 3156 3155 # CAT-CAO-CAM + 5047 2 3151 3156 3162 # CAT-CAO-HAT + 5048 4 3152 3151 3157 # CAO-CAT-CTT + 5049 5 3152 3151 3156 # CAO-CAT-CAO + 5050 6 3152 3153 3154 # CAO-CAM-CAP + 5051 7 3152 3153 3159 # CAO-CAM-HAT + 5052 8 3153 3152 3158 # CAM-CAO-HAT + 5053 9 3153 3154 3155 # CAM-CAP-CAM + 5054 10 3153 3154 3160 # CAM-CAP-HAT + 5055 11 3154 3153 3159 # CAP-CAM-HAT + 5056 6 3156 3155 3154 # CAO-CAM-CAP + 5057 11 3154 3155 3161 # CAP-CAM-HAT + 5058 10 3155 3154 3160 # CAM-CAP-HAT + 5059 8 3155 3156 3162 # CAM-CAO-HAT + 5060 7 3156 3155 3161 # CAO-CAM-HAT + 5061 4 3156 3151 3157 # CAO-CAT-CTT + 5062 12 3163 3157 3164 # HT-CTT-HT + 5063 12 3163 3157 3165 # HT-CTT-HT + 5064 12 3164 3157 3165 # HT-CTT-HT + 5065 1 3166 3167 3168 # CAT-CAO-CAM + 5066 2 3166 3167 3173 # CAT-CAO-HAT + 5067 3 3166 3172 3178 # CAT-CTT-HT + 5068 3 3166 3172 3179 # CAT-CTT-HT + 5069 3 3166 3172 3180 # CAT-CTT-HT + 5070 1 3166 3171 3170 # CAT-CAO-CAM + 5071 2 3166 3171 3177 # CAT-CAO-HAT + 5072 4 3167 3166 3172 # CAO-CAT-CTT + 5073 5 3167 3166 3171 # CAO-CAT-CAO + 5074 6 3167 3168 3169 # CAO-CAM-CAP + 5075 7 3167 3168 3174 # CAO-CAM-HAT + 5076 8 3168 3167 3173 # CAM-CAO-HAT + 5077 9 3168 3169 3170 # CAM-CAP-CAM + 5078 10 3168 3169 3175 # CAM-CAP-HAT + 5079 11 3169 3168 3174 # CAP-CAM-HAT + 5080 6 3171 3170 3169 # CAO-CAM-CAP + 5081 11 3169 3170 3176 # CAP-CAM-HAT + 5082 10 3170 3169 3175 # CAM-CAP-HAT + 5083 8 3170 3171 3177 # CAM-CAO-HAT + 5084 7 3171 3170 3176 # CAO-CAM-HAT + 5085 4 3171 3166 3172 # CAO-CAT-CTT + 5086 12 3178 3172 3179 # HT-CTT-HT + 5087 12 3178 3172 3180 # HT-CTT-HT + 5088 12 3179 3172 3180 # HT-CTT-HT + 5089 1 3181 3182 3183 # CAT-CAO-CAM + 5090 2 3181 3182 3188 # CAT-CAO-HAT + 5091 3 3181 3187 3193 # CAT-CTT-HT + 5092 3 3181 3187 3194 # CAT-CTT-HT + 5093 3 3181 3187 3195 # CAT-CTT-HT + 5094 1 3181 3186 3185 # CAT-CAO-CAM + 5095 2 3181 3186 3192 # CAT-CAO-HAT + 5096 4 3182 3181 3187 # CAO-CAT-CTT + 5097 5 3182 3181 3186 # CAO-CAT-CAO + 5098 6 3182 3183 3184 # CAO-CAM-CAP + 5099 7 3182 3183 3189 # CAO-CAM-HAT + 5100 8 3183 3182 3188 # CAM-CAO-HAT + 5101 9 3183 3184 3185 # CAM-CAP-CAM + 5102 10 3183 3184 3190 # CAM-CAP-HAT + 5103 11 3184 3183 3189 # CAP-CAM-HAT + 5104 6 3186 3185 3184 # CAO-CAM-CAP + 5105 11 3184 3185 3191 # CAP-CAM-HAT + 5106 10 3185 3184 3190 # CAM-CAP-HAT + 5107 8 3185 3186 3192 # CAM-CAO-HAT + 5108 7 3186 3185 3191 # CAO-CAM-HAT + 5109 4 3186 3181 3187 # CAO-CAT-CTT + 5110 12 3193 3187 3194 # HT-CTT-HT + 5111 12 3193 3187 3195 # HT-CTT-HT + 5112 12 3194 3187 3195 # HT-CTT-HT + 5113 1 3196 3197 3198 # CAT-CAO-CAM + 5114 2 3196 3197 3203 # CAT-CAO-HAT + 5115 3 3196 3202 3208 # CAT-CTT-HT + 5116 3 3196 3202 3209 # CAT-CTT-HT + 5117 3 3196 3202 3210 # CAT-CTT-HT + 5118 1 3196 3201 3200 # CAT-CAO-CAM + 5119 2 3196 3201 3207 # CAT-CAO-HAT + 5120 4 3197 3196 3202 # CAO-CAT-CTT + 5121 5 3197 3196 3201 # CAO-CAT-CAO + 5122 6 3197 3198 3199 # CAO-CAM-CAP + 5123 7 3197 3198 3204 # CAO-CAM-HAT + 5124 8 3198 3197 3203 # CAM-CAO-HAT + 5125 9 3198 3199 3200 # CAM-CAP-CAM + 5126 10 3198 3199 3205 # CAM-CAP-HAT + 5127 11 3199 3198 3204 # CAP-CAM-HAT + 5128 6 3201 3200 3199 # CAO-CAM-CAP + 5129 11 3199 3200 3206 # CAP-CAM-HAT + 5130 10 3200 3199 3205 # CAM-CAP-HAT + 5131 8 3200 3201 3207 # CAM-CAO-HAT + 5132 7 3201 3200 3206 # CAO-CAM-HAT + 5133 4 3201 3196 3202 # CAO-CAT-CTT + 5134 12 3208 3202 3209 # HT-CTT-HT + 5135 12 3208 3202 3210 # HT-CTT-HT + 5136 12 3209 3202 3210 # HT-CTT-HT + 5137 1 3211 3212 3213 # CAT-CAO-CAM + 5138 2 3211 3212 3218 # CAT-CAO-HAT + 5139 3 3211 3217 3223 # CAT-CTT-HT + 5140 3 3211 3217 3224 # CAT-CTT-HT + 5141 3 3211 3217 3225 # CAT-CTT-HT + 5142 1 3211 3216 3215 # CAT-CAO-CAM + 5143 2 3211 3216 3222 # CAT-CAO-HAT + 5144 4 3212 3211 3217 # CAO-CAT-CTT + 5145 5 3212 3211 3216 # CAO-CAT-CAO + 5146 6 3212 3213 3214 # CAO-CAM-CAP + 5147 7 3212 3213 3219 # CAO-CAM-HAT + 5148 8 3213 3212 3218 # CAM-CAO-HAT + 5149 9 3213 3214 3215 # CAM-CAP-CAM + 5150 10 3213 3214 3220 # CAM-CAP-HAT + 5151 11 3214 3213 3219 # CAP-CAM-HAT + 5152 6 3216 3215 3214 # CAO-CAM-CAP + 5153 11 3214 3215 3221 # CAP-CAM-HAT + 5154 10 3215 3214 3220 # CAM-CAP-HAT + 5155 8 3215 3216 3222 # CAM-CAO-HAT + 5156 7 3216 3215 3221 # CAO-CAM-HAT + 5157 4 3216 3211 3217 # CAO-CAT-CTT + 5158 12 3223 3217 3224 # HT-CTT-HT + 5159 12 3223 3217 3225 # HT-CTT-HT + 5160 12 3224 3217 3225 # HT-CTT-HT + 5161 1 3226 3227 3228 # CAT-CAO-CAM + 5162 2 3226 3227 3233 # CAT-CAO-HAT + 5163 3 3226 3232 3238 # CAT-CTT-HT + 5164 3 3226 3232 3239 # CAT-CTT-HT + 5165 3 3226 3232 3240 # CAT-CTT-HT + 5166 1 3226 3231 3230 # CAT-CAO-CAM + 5167 2 3226 3231 3237 # CAT-CAO-HAT + 5168 4 3227 3226 3232 # CAO-CAT-CTT + 5169 5 3227 3226 3231 # CAO-CAT-CAO + 5170 6 3227 3228 3229 # CAO-CAM-CAP + 5171 7 3227 3228 3234 # CAO-CAM-HAT + 5172 8 3228 3227 3233 # CAM-CAO-HAT + 5173 9 3228 3229 3230 # CAM-CAP-CAM + 5174 10 3228 3229 3235 # CAM-CAP-HAT + 5175 11 3229 3228 3234 # CAP-CAM-HAT + 5176 6 3231 3230 3229 # CAO-CAM-CAP + 5177 11 3229 3230 3236 # CAP-CAM-HAT + 5178 10 3230 3229 3235 # CAM-CAP-HAT + 5179 8 3230 3231 3237 # CAM-CAO-HAT + 5180 7 3231 3230 3236 # CAO-CAM-HAT + 5181 4 3231 3226 3232 # CAO-CAT-CTT + 5182 12 3238 3232 3239 # HT-CTT-HT + 5183 12 3238 3232 3240 # HT-CTT-HT + 5184 12 3239 3232 3240 # HT-CTT-HT + 5185 1 3241 3242 3243 # CAT-CAO-CAM + 5186 2 3241 3242 3248 # CAT-CAO-HAT + 5187 3 3241 3247 3253 # CAT-CTT-HT + 5188 3 3241 3247 3254 # CAT-CTT-HT + 5189 3 3241 3247 3255 # CAT-CTT-HT + 5190 1 3241 3246 3245 # CAT-CAO-CAM + 5191 2 3241 3246 3252 # CAT-CAO-HAT + 5192 4 3242 3241 3247 # CAO-CAT-CTT + 5193 5 3242 3241 3246 # CAO-CAT-CAO + 5194 6 3242 3243 3244 # CAO-CAM-CAP + 5195 7 3242 3243 3249 # CAO-CAM-HAT + 5196 8 3243 3242 3248 # CAM-CAO-HAT + 5197 9 3243 3244 3245 # CAM-CAP-CAM + 5198 10 3243 3244 3250 # CAM-CAP-HAT + 5199 11 3244 3243 3249 # CAP-CAM-HAT + 5200 6 3246 3245 3244 # CAO-CAM-CAP + 5201 11 3244 3245 3251 # CAP-CAM-HAT + 5202 10 3245 3244 3250 # CAM-CAP-HAT + 5203 8 3245 3246 3252 # CAM-CAO-HAT + 5204 7 3246 3245 3251 # CAO-CAM-HAT + 5205 4 3246 3241 3247 # CAO-CAT-CTT + 5206 12 3253 3247 3254 # HT-CTT-HT + 5207 12 3253 3247 3255 # HT-CTT-HT + 5208 12 3254 3247 3255 # HT-CTT-HT + 5209 1 3256 3257 3258 # CAT-CAO-CAM + 5210 2 3256 3257 3263 # CAT-CAO-HAT + 5211 3 3256 3262 3268 # CAT-CTT-HT + 5212 3 3256 3262 3269 # CAT-CTT-HT + 5213 3 3256 3262 3270 # CAT-CTT-HT + 5214 1 3256 3261 3260 # CAT-CAO-CAM + 5215 2 3256 3261 3267 # CAT-CAO-HAT + 5216 4 3257 3256 3262 # CAO-CAT-CTT + 5217 5 3257 3256 3261 # CAO-CAT-CAO + 5218 6 3257 3258 3259 # CAO-CAM-CAP + 5219 7 3257 3258 3264 # CAO-CAM-HAT + 5220 8 3258 3257 3263 # CAM-CAO-HAT + 5221 9 3258 3259 3260 # CAM-CAP-CAM + 5222 10 3258 3259 3265 # CAM-CAP-HAT + 5223 11 3259 3258 3264 # CAP-CAM-HAT + 5224 6 3261 3260 3259 # CAO-CAM-CAP + 5225 11 3259 3260 3266 # CAP-CAM-HAT + 5226 10 3260 3259 3265 # CAM-CAP-HAT + 5227 8 3260 3261 3267 # CAM-CAO-HAT + 5228 7 3261 3260 3266 # CAO-CAM-HAT + 5229 4 3261 3256 3262 # CAO-CAT-CTT + 5230 12 3268 3262 3269 # HT-CTT-HT + 5231 12 3268 3262 3270 # HT-CTT-HT + 5232 12 3269 3262 3270 # HT-CTT-HT + 5233 1 3271 3272 3273 # CAT-CAO-CAM + 5234 2 3271 3272 3278 # CAT-CAO-HAT + 5235 3 3271 3277 3283 # CAT-CTT-HT + 5236 3 3271 3277 3284 # CAT-CTT-HT + 5237 3 3271 3277 3285 # CAT-CTT-HT + 5238 1 3271 3276 3275 # CAT-CAO-CAM + 5239 2 3271 3276 3282 # CAT-CAO-HAT + 5240 4 3272 3271 3277 # CAO-CAT-CTT + 5241 5 3272 3271 3276 # CAO-CAT-CAO + 5242 6 3272 3273 3274 # CAO-CAM-CAP + 5243 7 3272 3273 3279 # CAO-CAM-HAT + 5244 8 3273 3272 3278 # CAM-CAO-HAT + 5245 9 3273 3274 3275 # CAM-CAP-CAM + 5246 10 3273 3274 3280 # CAM-CAP-HAT + 5247 11 3274 3273 3279 # CAP-CAM-HAT + 5248 6 3276 3275 3274 # CAO-CAM-CAP + 5249 11 3274 3275 3281 # CAP-CAM-HAT + 5250 10 3275 3274 3280 # CAM-CAP-HAT + 5251 8 3275 3276 3282 # CAM-CAO-HAT + 5252 7 3276 3275 3281 # CAO-CAM-HAT + 5253 4 3276 3271 3277 # CAO-CAT-CTT + 5254 12 3283 3277 3284 # HT-CTT-HT + 5255 12 3283 3277 3285 # HT-CTT-HT + 5256 12 3284 3277 3285 # HT-CTT-HT + 5257 1 3286 3287 3288 # CAT-CAO-CAM + 5258 2 3286 3287 3293 # CAT-CAO-HAT + 5259 3 3286 3292 3298 # CAT-CTT-HT + 5260 3 3286 3292 3299 # CAT-CTT-HT + 5261 3 3286 3292 3300 # CAT-CTT-HT + 5262 1 3286 3291 3290 # CAT-CAO-CAM + 5263 2 3286 3291 3297 # CAT-CAO-HAT + 5264 4 3287 3286 3292 # CAO-CAT-CTT + 5265 5 3287 3286 3291 # CAO-CAT-CAO + 5266 6 3287 3288 3289 # CAO-CAM-CAP + 5267 7 3287 3288 3294 # CAO-CAM-HAT + 5268 8 3288 3287 3293 # CAM-CAO-HAT + 5269 9 3288 3289 3290 # CAM-CAP-CAM + 5270 10 3288 3289 3295 # CAM-CAP-HAT + 5271 11 3289 3288 3294 # CAP-CAM-HAT + 5272 6 3291 3290 3289 # CAO-CAM-CAP + 5273 11 3289 3290 3296 # CAP-CAM-HAT + 5274 10 3290 3289 3295 # CAM-CAP-HAT + 5275 8 3290 3291 3297 # CAM-CAO-HAT + 5276 7 3291 3290 3296 # CAO-CAM-HAT + 5277 4 3291 3286 3292 # CAO-CAT-CTT + 5278 12 3298 3292 3299 # HT-CTT-HT + 5279 12 3298 3292 3300 # HT-CTT-HT + 5280 12 3299 3292 3300 # HT-CTT-HT + 5281 1 3301 3302 3303 # CAT-CAO-CAM + 5282 2 3301 3302 3308 # CAT-CAO-HAT + 5283 3 3301 3307 3313 # CAT-CTT-HT + 5284 3 3301 3307 3314 # CAT-CTT-HT + 5285 3 3301 3307 3315 # CAT-CTT-HT + 5286 1 3301 3306 3305 # CAT-CAO-CAM + 5287 2 3301 3306 3312 # CAT-CAO-HAT + 5288 4 3302 3301 3307 # CAO-CAT-CTT + 5289 5 3302 3301 3306 # CAO-CAT-CAO + 5290 6 3302 3303 3304 # CAO-CAM-CAP + 5291 7 3302 3303 3309 # CAO-CAM-HAT + 5292 8 3303 3302 3308 # CAM-CAO-HAT + 5293 9 3303 3304 3305 # CAM-CAP-CAM + 5294 10 3303 3304 3310 # CAM-CAP-HAT + 5295 11 3304 3303 3309 # CAP-CAM-HAT + 5296 6 3306 3305 3304 # CAO-CAM-CAP + 5297 11 3304 3305 3311 # CAP-CAM-HAT + 5298 10 3305 3304 3310 # CAM-CAP-HAT + 5299 8 3305 3306 3312 # CAM-CAO-HAT + 5300 7 3306 3305 3311 # CAO-CAM-HAT + 5301 4 3306 3301 3307 # CAO-CAT-CTT + 5302 12 3313 3307 3314 # HT-CTT-HT + 5303 12 3313 3307 3315 # HT-CTT-HT + 5304 12 3314 3307 3315 # HT-CTT-HT + 5305 1 3316 3317 3318 # CAT-CAO-CAM + 5306 2 3316 3317 3323 # CAT-CAO-HAT + 5307 3 3316 3322 3328 # CAT-CTT-HT + 5308 3 3316 3322 3329 # CAT-CTT-HT + 5309 3 3316 3322 3330 # CAT-CTT-HT + 5310 1 3316 3321 3320 # CAT-CAO-CAM + 5311 2 3316 3321 3327 # CAT-CAO-HAT + 5312 4 3317 3316 3322 # CAO-CAT-CTT + 5313 5 3317 3316 3321 # CAO-CAT-CAO + 5314 6 3317 3318 3319 # CAO-CAM-CAP + 5315 7 3317 3318 3324 # CAO-CAM-HAT + 5316 8 3318 3317 3323 # CAM-CAO-HAT + 5317 9 3318 3319 3320 # CAM-CAP-CAM + 5318 10 3318 3319 3325 # CAM-CAP-HAT + 5319 11 3319 3318 3324 # CAP-CAM-HAT + 5320 6 3321 3320 3319 # CAO-CAM-CAP + 5321 11 3319 3320 3326 # CAP-CAM-HAT + 5322 10 3320 3319 3325 # CAM-CAP-HAT + 5323 8 3320 3321 3327 # CAM-CAO-HAT + 5324 7 3321 3320 3326 # CAO-CAM-HAT + 5325 4 3321 3316 3322 # CAO-CAT-CTT + 5326 12 3328 3322 3329 # HT-CTT-HT + 5327 12 3328 3322 3330 # HT-CTT-HT + 5328 12 3329 3322 3330 # HT-CTT-HT + 5329 1 3331 3332 3333 # CAT-CAO-CAM + 5330 2 3331 3332 3338 # CAT-CAO-HAT + 5331 3 3331 3337 3343 # CAT-CTT-HT + 5332 3 3331 3337 3344 # CAT-CTT-HT + 5333 3 3331 3337 3345 # CAT-CTT-HT + 5334 1 3331 3336 3335 # CAT-CAO-CAM + 5335 2 3331 3336 3342 # CAT-CAO-HAT + 5336 4 3332 3331 3337 # CAO-CAT-CTT + 5337 5 3332 3331 3336 # CAO-CAT-CAO + 5338 6 3332 3333 3334 # CAO-CAM-CAP + 5339 7 3332 3333 3339 # CAO-CAM-HAT + 5340 8 3333 3332 3338 # CAM-CAO-HAT + 5341 9 3333 3334 3335 # CAM-CAP-CAM + 5342 10 3333 3334 3340 # CAM-CAP-HAT + 5343 11 3334 3333 3339 # CAP-CAM-HAT + 5344 6 3336 3335 3334 # CAO-CAM-CAP + 5345 11 3334 3335 3341 # CAP-CAM-HAT + 5346 10 3335 3334 3340 # CAM-CAP-HAT + 5347 8 3335 3336 3342 # CAM-CAO-HAT + 5348 7 3336 3335 3341 # CAO-CAM-HAT + 5349 4 3336 3331 3337 # CAO-CAT-CTT + 5350 12 3343 3337 3344 # HT-CTT-HT + 5351 12 3343 3337 3345 # HT-CTT-HT + 5352 12 3344 3337 3345 # HT-CTT-HT + 5353 1 3346 3347 3348 # CAT-CAO-CAM + 5354 2 3346 3347 3353 # CAT-CAO-HAT + 5355 3 3346 3352 3358 # CAT-CTT-HT + 5356 3 3346 3352 3359 # CAT-CTT-HT + 5357 3 3346 3352 3360 # CAT-CTT-HT + 5358 1 3346 3351 3350 # CAT-CAO-CAM + 5359 2 3346 3351 3357 # CAT-CAO-HAT + 5360 4 3347 3346 3352 # CAO-CAT-CTT + 5361 5 3347 3346 3351 # CAO-CAT-CAO + 5362 6 3347 3348 3349 # CAO-CAM-CAP + 5363 7 3347 3348 3354 # CAO-CAM-HAT + 5364 8 3348 3347 3353 # CAM-CAO-HAT + 5365 9 3348 3349 3350 # CAM-CAP-CAM + 5366 10 3348 3349 3355 # CAM-CAP-HAT + 5367 11 3349 3348 3354 # CAP-CAM-HAT + 5368 6 3351 3350 3349 # CAO-CAM-CAP + 5369 11 3349 3350 3356 # CAP-CAM-HAT + 5370 10 3350 3349 3355 # CAM-CAP-HAT + 5371 8 3350 3351 3357 # CAM-CAO-HAT + 5372 7 3351 3350 3356 # CAO-CAM-HAT + 5373 4 3351 3346 3352 # CAO-CAT-CTT + 5374 12 3358 3352 3359 # HT-CTT-HT + 5375 12 3358 3352 3360 # HT-CTT-HT + 5376 12 3359 3352 3360 # HT-CTT-HT + 5377 1 3361 3362 3363 # CAT-CAO-CAM + 5378 2 3361 3362 3368 # CAT-CAO-HAT + 5379 3 3361 3367 3373 # CAT-CTT-HT + 5380 3 3361 3367 3374 # CAT-CTT-HT + 5381 3 3361 3367 3375 # CAT-CTT-HT + 5382 1 3361 3366 3365 # CAT-CAO-CAM + 5383 2 3361 3366 3372 # CAT-CAO-HAT + 5384 4 3362 3361 3367 # CAO-CAT-CTT + 5385 5 3362 3361 3366 # CAO-CAT-CAO + 5386 6 3362 3363 3364 # CAO-CAM-CAP + 5387 7 3362 3363 3369 # CAO-CAM-HAT + 5388 8 3363 3362 3368 # CAM-CAO-HAT + 5389 9 3363 3364 3365 # CAM-CAP-CAM + 5390 10 3363 3364 3370 # CAM-CAP-HAT + 5391 11 3364 3363 3369 # CAP-CAM-HAT + 5392 6 3366 3365 3364 # CAO-CAM-CAP + 5393 11 3364 3365 3371 # CAP-CAM-HAT + 5394 10 3365 3364 3370 # CAM-CAP-HAT + 5395 8 3365 3366 3372 # CAM-CAO-HAT + 5396 7 3366 3365 3371 # CAO-CAM-HAT + 5397 4 3366 3361 3367 # CAO-CAT-CTT + 5398 12 3373 3367 3374 # HT-CTT-HT + 5399 12 3373 3367 3375 # HT-CTT-HT + 5400 12 3374 3367 3375 # HT-CTT-HT + 5401 1 3376 3377 3378 # CAT-CAO-CAM + 5402 2 3376 3377 3383 # CAT-CAO-HAT + 5403 3 3376 3382 3388 # CAT-CTT-HT + 5404 3 3376 3382 3389 # CAT-CTT-HT + 5405 3 3376 3382 3390 # CAT-CTT-HT + 5406 1 3376 3381 3380 # CAT-CAO-CAM + 5407 2 3376 3381 3387 # CAT-CAO-HAT + 5408 4 3377 3376 3382 # CAO-CAT-CTT + 5409 5 3377 3376 3381 # CAO-CAT-CAO + 5410 6 3377 3378 3379 # CAO-CAM-CAP + 5411 7 3377 3378 3384 # CAO-CAM-HAT + 5412 8 3378 3377 3383 # CAM-CAO-HAT + 5413 9 3378 3379 3380 # CAM-CAP-CAM + 5414 10 3378 3379 3385 # CAM-CAP-HAT + 5415 11 3379 3378 3384 # CAP-CAM-HAT + 5416 6 3381 3380 3379 # CAO-CAM-CAP + 5417 11 3379 3380 3386 # CAP-CAM-HAT + 5418 10 3380 3379 3385 # CAM-CAP-HAT + 5419 8 3380 3381 3387 # CAM-CAO-HAT + 5420 7 3381 3380 3386 # CAO-CAM-HAT + 5421 4 3381 3376 3382 # CAO-CAT-CTT + 5422 12 3388 3382 3389 # HT-CTT-HT + 5423 12 3388 3382 3390 # HT-CTT-HT + 5424 12 3389 3382 3390 # HT-CTT-HT + 5425 1 3391 3392 3393 # CAT-CAO-CAM + 5426 2 3391 3392 3398 # CAT-CAO-HAT + 5427 3 3391 3397 3403 # CAT-CTT-HT + 5428 3 3391 3397 3404 # CAT-CTT-HT + 5429 3 3391 3397 3405 # CAT-CTT-HT + 5430 1 3391 3396 3395 # CAT-CAO-CAM + 5431 2 3391 3396 3402 # CAT-CAO-HAT + 5432 4 3392 3391 3397 # CAO-CAT-CTT + 5433 5 3392 3391 3396 # CAO-CAT-CAO + 5434 6 3392 3393 3394 # CAO-CAM-CAP + 5435 7 3392 3393 3399 # CAO-CAM-HAT + 5436 8 3393 3392 3398 # CAM-CAO-HAT + 5437 9 3393 3394 3395 # CAM-CAP-CAM + 5438 10 3393 3394 3400 # CAM-CAP-HAT + 5439 11 3394 3393 3399 # CAP-CAM-HAT + 5440 6 3396 3395 3394 # CAO-CAM-CAP + 5441 11 3394 3395 3401 # CAP-CAM-HAT + 5442 10 3395 3394 3400 # CAM-CAP-HAT + 5443 8 3395 3396 3402 # CAM-CAO-HAT + 5444 7 3396 3395 3401 # CAO-CAM-HAT + 5445 4 3396 3391 3397 # CAO-CAT-CTT + 5446 12 3403 3397 3404 # HT-CTT-HT + 5447 12 3403 3397 3405 # HT-CTT-HT + 5448 12 3404 3397 3405 # HT-CTT-HT + 5449 1 3406 3407 3408 # CAT-CAO-CAM + 5450 2 3406 3407 3413 # CAT-CAO-HAT + 5451 3 3406 3412 3418 # CAT-CTT-HT + 5452 3 3406 3412 3419 # CAT-CTT-HT + 5453 3 3406 3412 3420 # CAT-CTT-HT + 5454 1 3406 3411 3410 # CAT-CAO-CAM + 5455 2 3406 3411 3417 # CAT-CAO-HAT + 5456 4 3407 3406 3412 # CAO-CAT-CTT + 5457 5 3407 3406 3411 # CAO-CAT-CAO + 5458 6 3407 3408 3409 # CAO-CAM-CAP + 5459 7 3407 3408 3414 # CAO-CAM-HAT + 5460 8 3408 3407 3413 # CAM-CAO-HAT + 5461 9 3408 3409 3410 # CAM-CAP-CAM + 5462 10 3408 3409 3415 # CAM-CAP-HAT + 5463 11 3409 3408 3414 # CAP-CAM-HAT + 5464 6 3411 3410 3409 # CAO-CAM-CAP + 5465 11 3409 3410 3416 # CAP-CAM-HAT + 5466 10 3410 3409 3415 # CAM-CAP-HAT + 5467 8 3410 3411 3417 # CAM-CAO-HAT + 5468 7 3411 3410 3416 # CAO-CAM-HAT + 5469 4 3411 3406 3412 # CAO-CAT-CTT + 5470 12 3418 3412 3419 # HT-CTT-HT + 5471 12 3418 3412 3420 # HT-CTT-HT + 5472 12 3419 3412 3420 # HT-CTT-HT + 5473 1 3421 3422 3423 # CAT-CAO-CAM + 5474 2 3421 3422 3428 # CAT-CAO-HAT + 5475 3 3421 3427 3433 # CAT-CTT-HT + 5476 3 3421 3427 3434 # CAT-CTT-HT + 5477 3 3421 3427 3435 # CAT-CTT-HT + 5478 1 3421 3426 3425 # CAT-CAO-CAM + 5479 2 3421 3426 3432 # CAT-CAO-HAT + 5480 4 3422 3421 3427 # CAO-CAT-CTT + 5481 5 3422 3421 3426 # CAO-CAT-CAO + 5482 6 3422 3423 3424 # CAO-CAM-CAP + 5483 7 3422 3423 3429 # CAO-CAM-HAT + 5484 8 3423 3422 3428 # CAM-CAO-HAT + 5485 9 3423 3424 3425 # CAM-CAP-CAM + 5486 10 3423 3424 3430 # CAM-CAP-HAT + 5487 11 3424 3423 3429 # CAP-CAM-HAT + 5488 6 3426 3425 3424 # CAO-CAM-CAP + 5489 11 3424 3425 3431 # CAP-CAM-HAT + 5490 10 3425 3424 3430 # CAM-CAP-HAT + 5491 8 3425 3426 3432 # CAM-CAO-HAT + 5492 7 3426 3425 3431 # CAO-CAM-HAT + 5493 4 3426 3421 3427 # CAO-CAT-CTT + 5494 12 3433 3427 3434 # HT-CTT-HT + 5495 12 3433 3427 3435 # HT-CTT-HT + 5496 12 3434 3427 3435 # HT-CTT-HT + 5497 1 3436 3437 3438 # CAT-CAO-CAM + 5498 2 3436 3437 3443 # CAT-CAO-HAT + 5499 3 3436 3442 3448 # CAT-CTT-HT + 5500 3 3436 3442 3449 # CAT-CTT-HT + 5501 3 3436 3442 3450 # CAT-CTT-HT + 5502 1 3436 3441 3440 # CAT-CAO-CAM + 5503 2 3436 3441 3447 # CAT-CAO-HAT + 5504 4 3437 3436 3442 # CAO-CAT-CTT + 5505 5 3437 3436 3441 # CAO-CAT-CAO + 5506 6 3437 3438 3439 # CAO-CAM-CAP + 5507 7 3437 3438 3444 # CAO-CAM-HAT + 5508 8 3438 3437 3443 # CAM-CAO-HAT + 5509 9 3438 3439 3440 # CAM-CAP-CAM + 5510 10 3438 3439 3445 # CAM-CAP-HAT + 5511 11 3439 3438 3444 # CAP-CAM-HAT + 5512 6 3441 3440 3439 # CAO-CAM-CAP + 5513 11 3439 3440 3446 # CAP-CAM-HAT + 5514 10 3440 3439 3445 # CAM-CAP-HAT + 5515 8 3440 3441 3447 # CAM-CAO-HAT + 5516 7 3441 3440 3446 # CAO-CAM-HAT + 5517 4 3441 3436 3442 # CAO-CAT-CTT + 5518 12 3448 3442 3449 # HT-CTT-HT + 5519 12 3448 3442 3450 # HT-CTT-HT + 5520 12 3449 3442 3450 # HT-CTT-HT + 5521 1 3451 3452 3453 # CAT-CAO-CAM + 5522 2 3451 3452 3458 # CAT-CAO-HAT + 5523 3 3451 3457 3463 # CAT-CTT-HT + 5524 3 3451 3457 3464 # CAT-CTT-HT + 5525 3 3451 3457 3465 # CAT-CTT-HT + 5526 1 3451 3456 3455 # CAT-CAO-CAM + 5527 2 3451 3456 3462 # CAT-CAO-HAT + 5528 4 3452 3451 3457 # CAO-CAT-CTT + 5529 5 3452 3451 3456 # CAO-CAT-CAO + 5530 6 3452 3453 3454 # CAO-CAM-CAP + 5531 7 3452 3453 3459 # CAO-CAM-HAT + 5532 8 3453 3452 3458 # CAM-CAO-HAT + 5533 9 3453 3454 3455 # CAM-CAP-CAM + 5534 10 3453 3454 3460 # CAM-CAP-HAT + 5535 11 3454 3453 3459 # CAP-CAM-HAT + 5536 6 3456 3455 3454 # CAO-CAM-CAP + 5537 11 3454 3455 3461 # CAP-CAM-HAT + 5538 10 3455 3454 3460 # CAM-CAP-HAT + 5539 8 3455 3456 3462 # CAM-CAO-HAT + 5540 7 3456 3455 3461 # CAO-CAM-HAT + 5541 4 3456 3451 3457 # CAO-CAT-CTT + 5542 12 3463 3457 3464 # HT-CTT-HT + 5543 12 3463 3457 3465 # HT-CTT-HT + 5544 12 3464 3457 3465 # HT-CTT-HT + 5545 1 3466 3467 3468 # CAT-CAO-CAM + 5546 2 3466 3467 3473 # CAT-CAO-HAT + 5547 3 3466 3472 3478 # CAT-CTT-HT + 5548 3 3466 3472 3479 # CAT-CTT-HT + 5549 3 3466 3472 3480 # CAT-CTT-HT + 5550 1 3466 3471 3470 # CAT-CAO-CAM + 5551 2 3466 3471 3477 # CAT-CAO-HAT + 5552 4 3467 3466 3472 # CAO-CAT-CTT + 5553 5 3467 3466 3471 # CAO-CAT-CAO + 5554 6 3467 3468 3469 # CAO-CAM-CAP + 5555 7 3467 3468 3474 # CAO-CAM-HAT + 5556 8 3468 3467 3473 # CAM-CAO-HAT + 5557 9 3468 3469 3470 # CAM-CAP-CAM + 5558 10 3468 3469 3475 # CAM-CAP-HAT + 5559 11 3469 3468 3474 # CAP-CAM-HAT + 5560 6 3471 3470 3469 # CAO-CAM-CAP + 5561 11 3469 3470 3476 # CAP-CAM-HAT + 5562 10 3470 3469 3475 # CAM-CAP-HAT + 5563 8 3470 3471 3477 # CAM-CAO-HAT + 5564 7 3471 3470 3476 # CAO-CAM-HAT + 5565 4 3471 3466 3472 # CAO-CAT-CTT + 5566 12 3478 3472 3479 # HT-CTT-HT + 5567 12 3478 3472 3480 # HT-CTT-HT + 5568 12 3479 3472 3480 # HT-CTT-HT + 5569 1 3481 3482 3483 # CAT-CAO-CAM + 5570 2 3481 3482 3488 # CAT-CAO-HAT + 5571 3 3481 3487 3493 # CAT-CTT-HT + 5572 3 3481 3487 3494 # CAT-CTT-HT + 5573 3 3481 3487 3495 # CAT-CTT-HT + 5574 1 3481 3486 3485 # CAT-CAO-CAM + 5575 2 3481 3486 3492 # CAT-CAO-HAT + 5576 4 3482 3481 3487 # CAO-CAT-CTT + 5577 5 3482 3481 3486 # CAO-CAT-CAO + 5578 6 3482 3483 3484 # CAO-CAM-CAP + 5579 7 3482 3483 3489 # CAO-CAM-HAT + 5580 8 3483 3482 3488 # CAM-CAO-HAT + 5581 9 3483 3484 3485 # CAM-CAP-CAM + 5582 10 3483 3484 3490 # CAM-CAP-HAT + 5583 11 3484 3483 3489 # CAP-CAM-HAT + 5584 6 3486 3485 3484 # CAO-CAM-CAP + 5585 11 3484 3485 3491 # CAP-CAM-HAT + 5586 10 3485 3484 3490 # CAM-CAP-HAT + 5587 8 3485 3486 3492 # CAM-CAO-HAT + 5588 7 3486 3485 3491 # CAO-CAM-HAT + 5589 4 3486 3481 3487 # CAO-CAT-CTT + 5590 12 3493 3487 3494 # HT-CTT-HT + 5591 12 3493 3487 3495 # HT-CTT-HT + 5592 12 3494 3487 3495 # HT-CTT-HT + 5593 1 3496 3497 3498 # CAT-CAO-CAM + 5594 2 3496 3497 3503 # CAT-CAO-HAT + 5595 3 3496 3502 3508 # CAT-CTT-HT + 5596 3 3496 3502 3509 # CAT-CTT-HT + 5597 3 3496 3502 3510 # CAT-CTT-HT + 5598 1 3496 3501 3500 # CAT-CAO-CAM + 5599 2 3496 3501 3507 # CAT-CAO-HAT + 5600 4 3497 3496 3502 # CAO-CAT-CTT + 5601 5 3497 3496 3501 # CAO-CAT-CAO + 5602 6 3497 3498 3499 # CAO-CAM-CAP + 5603 7 3497 3498 3504 # CAO-CAM-HAT + 5604 8 3498 3497 3503 # CAM-CAO-HAT + 5605 9 3498 3499 3500 # CAM-CAP-CAM + 5606 10 3498 3499 3505 # CAM-CAP-HAT + 5607 11 3499 3498 3504 # CAP-CAM-HAT + 5608 6 3501 3500 3499 # CAO-CAM-CAP + 5609 11 3499 3500 3506 # CAP-CAM-HAT + 5610 10 3500 3499 3505 # CAM-CAP-HAT + 5611 8 3500 3501 3507 # CAM-CAO-HAT + 5612 7 3501 3500 3506 # CAO-CAM-HAT + 5613 4 3501 3496 3502 # CAO-CAT-CTT + 5614 12 3508 3502 3509 # HT-CTT-HT + 5615 12 3508 3502 3510 # HT-CTT-HT + 5616 12 3509 3502 3510 # HT-CTT-HT + 5617 1 3511 3512 3513 # CAT-CAO-CAM + 5618 2 3511 3512 3518 # CAT-CAO-HAT + 5619 3 3511 3517 3523 # CAT-CTT-HT + 5620 3 3511 3517 3524 # CAT-CTT-HT + 5621 3 3511 3517 3525 # CAT-CTT-HT + 5622 1 3511 3516 3515 # CAT-CAO-CAM + 5623 2 3511 3516 3522 # CAT-CAO-HAT + 5624 4 3512 3511 3517 # CAO-CAT-CTT + 5625 5 3512 3511 3516 # CAO-CAT-CAO + 5626 6 3512 3513 3514 # CAO-CAM-CAP + 5627 7 3512 3513 3519 # CAO-CAM-HAT + 5628 8 3513 3512 3518 # CAM-CAO-HAT + 5629 9 3513 3514 3515 # CAM-CAP-CAM + 5630 10 3513 3514 3520 # CAM-CAP-HAT + 5631 11 3514 3513 3519 # CAP-CAM-HAT + 5632 6 3516 3515 3514 # CAO-CAM-CAP + 5633 11 3514 3515 3521 # CAP-CAM-HAT + 5634 10 3515 3514 3520 # CAM-CAP-HAT + 5635 8 3515 3516 3522 # CAM-CAO-HAT + 5636 7 3516 3515 3521 # CAO-CAM-HAT + 5637 4 3516 3511 3517 # CAO-CAT-CTT + 5638 12 3523 3517 3524 # HT-CTT-HT + 5639 12 3523 3517 3525 # HT-CTT-HT + 5640 12 3524 3517 3525 # HT-CTT-HT + 5641 1 3526 3527 3528 # CAT-CAO-CAM + 5642 2 3526 3527 3533 # CAT-CAO-HAT + 5643 3 3526 3532 3538 # CAT-CTT-HT + 5644 3 3526 3532 3539 # CAT-CTT-HT + 5645 3 3526 3532 3540 # CAT-CTT-HT + 5646 1 3526 3531 3530 # CAT-CAO-CAM + 5647 2 3526 3531 3537 # CAT-CAO-HAT + 5648 4 3527 3526 3532 # CAO-CAT-CTT + 5649 5 3527 3526 3531 # CAO-CAT-CAO + 5650 6 3527 3528 3529 # CAO-CAM-CAP + 5651 7 3527 3528 3534 # CAO-CAM-HAT + 5652 8 3528 3527 3533 # CAM-CAO-HAT + 5653 9 3528 3529 3530 # CAM-CAP-CAM + 5654 10 3528 3529 3535 # CAM-CAP-HAT + 5655 11 3529 3528 3534 # CAP-CAM-HAT + 5656 6 3531 3530 3529 # CAO-CAM-CAP + 5657 11 3529 3530 3536 # CAP-CAM-HAT + 5658 10 3530 3529 3535 # CAM-CAP-HAT + 5659 8 3530 3531 3537 # CAM-CAO-HAT + 5660 7 3531 3530 3536 # CAO-CAM-HAT + 5661 4 3531 3526 3532 # CAO-CAT-CTT + 5662 12 3538 3532 3539 # HT-CTT-HT + 5663 12 3538 3532 3540 # HT-CTT-HT + 5664 12 3539 3532 3540 # HT-CTT-HT + 5665 1 3541 3542 3543 # CAT-CAO-CAM + 5666 2 3541 3542 3548 # CAT-CAO-HAT + 5667 3 3541 3547 3553 # CAT-CTT-HT + 5668 3 3541 3547 3554 # CAT-CTT-HT + 5669 3 3541 3547 3555 # CAT-CTT-HT + 5670 1 3541 3546 3545 # CAT-CAO-CAM + 5671 2 3541 3546 3552 # CAT-CAO-HAT + 5672 4 3542 3541 3547 # CAO-CAT-CTT + 5673 5 3542 3541 3546 # CAO-CAT-CAO + 5674 6 3542 3543 3544 # CAO-CAM-CAP + 5675 7 3542 3543 3549 # CAO-CAM-HAT + 5676 8 3543 3542 3548 # CAM-CAO-HAT + 5677 9 3543 3544 3545 # CAM-CAP-CAM + 5678 10 3543 3544 3550 # CAM-CAP-HAT + 5679 11 3544 3543 3549 # CAP-CAM-HAT + 5680 6 3546 3545 3544 # CAO-CAM-CAP + 5681 11 3544 3545 3551 # CAP-CAM-HAT + 5682 10 3545 3544 3550 # CAM-CAP-HAT + 5683 8 3545 3546 3552 # CAM-CAO-HAT + 5684 7 3546 3545 3551 # CAO-CAM-HAT + 5685 4 3546 3541 3547 # CAO-CAT-CTT + 5686 12 3553 3547 3554 # HT-CTT-HT + 5687 12 3553 3547 3555 # HT-CTT-HT + 5688 12 3554 3547 3555 # HT-CTT-HT + 5689 1 3556 3557 3558 # CAT-CAO-CAM + 5690 2 3556 3557 3563 # CAT-CAO-HAT + 5691 3 3556 3562 3568 # CAT-CTT-HT + 5692 3 3556 3562 3569 # CAT-CTT-HT + 5693 3 3556 3562 3570 # CAT-CTT-HT + 5694 1 3556 3561 3560 # CAT-CAO-CAM + 5695 2 3556 3561 3567 # CAT-CAO-HAT + 5696 4 3557 3556 3562 # CAO-CAT-CTT + 5697 5 3557 3556 3561 # CAO-CAT-CAO + 5698 6 3557 3558 3559 # CAO-CAM-CAP + 5699 7 3557 3558 3564 # CAO-CAM-HAT + 5700 8 3558 3557 3563 # CAM-CAO-HAT + 5701 9 3558 3559 3560 # CAM-CAP-CAM + 5702 10 3558 3559 3565 # CAM-CAP-HAT + 5703 11 3559 3558 3564 # CAP-CAM-HAT + 5704 6 3561 3560 3559 # CAO-CAM-CAP + 5705 11 3559 3560 3566 # CAP-CAM-HAT + 5706 10 3560 3559 3565 # CAM-CAP-HAT + 5707 8 3560 3561 3567 # CAM-CAO-HAT + 5708 7 3561 3560 3566 # CAO-CAM-HAT + 5709 4 3561 3556 3562 # CAO-CAT-CTT + 5710 12 3568 3562 3569 # HT-CTT-HT + 5711 12 3568 3562 3570 # HT-CTT-HT + 5712 12 3569 3562 3570 # HT-CTT-HT + 5713 1 3571 3572 3573 # CAT-CAO-CAM + 5714 2 3571 3572 3578 # CAT-CAO-HAT + 5715 3 3571 3577 3583 # CAT-CTT-HT + 5716 3 3571 3577 3584 # CAT-CTT-HT + 5717 3 3571 3577 3585 # CAT-CTT-HT + 5718 1 3571 3576 3575 # CAT-CAO-CAM + 5719 2 3571 3576 3582 # CAT-CAO-HAT + 5720 4 3572 3571 3577 # CAO-CAT-CTT + 5721 5 3572 3571 3576 # CAO-CAT-CAO + 5722 6 3572 3573 3574 # CAO-CAM-CAP + 5723 7 3572 3573 3579 # CAO-CAM-HAT + 5724 8 3573 3572 3578 # CAM-CAO-HAT + 5725 9 3573 3574 3575 # CAM-CAP-CAM + 5726 10 3573 3574 3580 # CAM-CAP-HAT + 5727 11 3574 3573 3579 # CAP-CAM-HAT + 5728 6 3576 3575 3574 # CAO-CAM-CAP + 5729 11 3574 3575 3581 # CAP-CAM-HAT + 5730 10 3575 3574 3580 # CAM-CAP-HAT + 5731 8 3575 3576 3582 # CAM-CAO-HAT + 5732 7 3576 3575 3581 # CAO-CAM-HAT + 5733 4 3576 3571 3577 # CAO-CAT-CTT + 5734 12 3583 3577 3584 # HT-CTT-HT + 5735 12 3583 3577 3585 # HT-CTT-HT + 5736 12 3584 3577 3585 # HT-CTT-HT + 5737 1 3586 3587 3588 # CAT-CAO-CAM + 5738 2 3586 3587 3593 # CAT-CAO-HAT + 5739 3 3586 3592 3598 # CAT-CTT-HT + 5740 3 3586 3592 3599 # CAT-CTT-HT + 5741 3 3586 3592 3600 # CAT-CTT-HT + 5742 1 3586 3591 3590 # CAT-CAO-CAM + 5743 2 3586 3591 3597 # CAT-CAO-HAT + 5744 4 3587 3586 3592 # CAO-CAT-CTT + 5745 5 3587 3586 3591 # CAO-CAT-CAO + 5746 6 3587 3588 3589 # CAO-CAM-CAP + 5747 7 3587 3588 3594 # CAO-CAM-HAT + 5748 8 3588 3587 3593 # CAM-CAO-HAT + 5749 9 3588 3589 3590 # CAM-CAP-CAM + 5750 10 3588 3589 3595 # CAM-CAP-HAT + 5751 11 3589 3588 3594 # CAP-CAM-HAT + 5752 6 3591 3590 3589 # CAO-CAM-CAP + 5753 11 3589 3590 3596 # CAP-CAM-HAT + 5754 10 3590 3589 3595 # CAM-CAP-HAT + 5755 8 3590 3591 3597 # CAM-CAO-HAT + 5756 7 3591 3590 3596 # CAO-CAM-HAT + 5757 4 3591 3586 3592 # CAO-CAT-CTT + 5758 12 3598 3592 3599 # HT-CTT-HT + 5759 12 3598 3592 3600 # HT-CTT-HT + 5760 12 3599 3592 3600 # HT-CTT-HT + 5761 1 3601 3602 3603 # CAT-CAO-CAM + 5762 2 3601 3602 3608 # CAT-CAO-HAT + 5763 3 3601 3607 3613 # CAT-CTT-HT + 5764 3 3601 3607 3614 # CAT-CTT-HT + 5765 3 3601 3607 3615 # CAT-CTT-HT + 5766 1 3601 3606 3605 # CAT-CAO-CAM + 5767 2 3601 3606 3612 # CAT-CAO-HAT + 5768 4 3602 3601 3607 # CAO-CAT-CTT + 5769 5 3602 3601 3606 # CAO-CAT-CAO + 5770 6 3602 3603 3604 # CAO-CAM-CAP + 5771 7 3602 3603 3609 # CAO-CAM-HAT + 5772 8 3603 3602 3608 # CAM-CAO-HAT + 5773 9 3603 3604 3605 # CAM-CAP-CAM + 5774 10 3603 3604 3610 # CAM-CAP-HAT + 5775 11 3604 3603 3609 # CAP-CAM-HAT + 5776 6 3606 3605 3604 # CAO-CAM-CAP + 5777 11 3604 3605 3611 # CAP-CAM-HAT + 5778 10 3605 3604 3610 # CAM-CAP-HAT + 5779 8 3605 3606 3612 # CAM-CAO-HAT + 5780 7 3606 3605 3611 # CAO-CAM-HAT + 5781 4 3606 3601 3607 # CAO-CAT-CTT + 5782 12 3613 3607 3614 # HT-CTT-HT + 5783 12 3613 3607 3615 # HT-CTT-HT + 5784 12 3614 3607 3615 # HT-CTT-HT + 5785 1 3616 3617 3618 # CAT-CAO-CAM + 5786 2 3616 3617 3623 # CAT-CAO-HAT + 5787 3 3616 3622 3628 # CAT-CTT-HT + 5788 3 3616 3622 3629 # CAT-CTT-HT + 5789 3 3616 3622 3630 # CAT-CTT-HT + 5790 1 3616 3621 3620 # CAT-CAO-CAM + 5791 2 3616 3621 3627 # CAT-CAO-HAT + 5792 4 3617 3616 3622 # CAO-CAT-CTT + 5793 5 3617 3616 3621 # CAO-CAT-CAO + 5794 6 3617 3618 3619 # CAO-CAM-CAP + 5795 7 3617 3618 3624 # CAO-CAM-HAT + 5796 8 3618 3617 3623 # CAM-CAO-HAT + 5797 9 3618 3619 3620 # CAM-CAP-CAM + 5798 10 3618 3619 3625 # CAM-CAP-HAT + 5799 11 3619 3618 3624 # CAP-CAM-HAT + 5800 6 3621 3620 3619 # CAO-CAM-CAP + 5801 11 3619 3620 3626 # CAP-CAM-HAT + 5802 10 3620 3619 3625 # CAM-CAP-HAT + 5803 8 3620 3621 3627 # CAM-CAO-HAT + 5804 7 3621 3620 3626 # CAO-CAM-HAT + 5805 4 3621 3616 3622 # CAO-CAT-CTT + 5806 12 3628 3622 3629 # HT-CTT-HT + 5807 12 3628 3622 3630 # HT-CTT-HT + 5808 12 3629 3622 3630 # HT-CTT-HT + 5809 1 3631 3632 3633 # CAT-CAO-CAM + 5810 2 3631 3632 3638 # CAT-CAO-HAT + 5811 3 3631 3637 3643 # CAT-CTT-HT + 5812 3 3631 3637 3644 # CAT-CTT-HT + 5813 3 3631 3637 3645 # CAT-CTT-HT + 5814 1 3631 3636 3635 # CAT-CAO-CAM + 5815 2 3631 3636 3642 # CAT-CAO-HAT + 5816 4 3632 3631 3637 # CAO-CAT-CTT + 5817 5 3632 3631 3636 # CAO-CAT-CAO + 5818 6 3632 3633 3634 # CAO-CAM-CAP + 5819 7 3632 3633 3639 # CAO-CAM-HAT + 5820 8 3633 3632 3638 # CAM-CAO-HAT + 5821 9 3633 3634 3635 # CAM-CAP-CAM + 5822 10 3633 3634 3640 # CAM-CAP-HAT + 5823 11 3634 3633 3639 # CAP-CAM-HAT + 5824 6 3636 3635 3634 # CAO-CAM-CAP + 5825 11 3634 3635 3641 # CAP-CAM-HAT + 5826 10 3635 3634 3640 # CAM-CAP-HAT + 5827 8 3635 3636 3642 # CAM-CAO-HAT + 5828 7 3636 3635 3641 # CAO-CAM-HAT + 5829 4 3636 3631 3637 # CAO-CAT-CTT + 5830 12 3643 3637 3644 # HT-CTT-HT + 5831 12 3643 3637 3645 # HT-CTT-HT + 5832 12 3644 3637 3645 # HT-CTT-HT + 5833 1 3646 3647 3648 # CAT-CAO-CAM + 5834 2 3646 3647 3653 # CAT-CAO-HAT + 5835 3 3646 3652 3658 # CAT-CTT-HT + 5836 3 3646 3652 3659 # CAT-CTT-HT + 5837 3 3646 3652 3660 # CAT-CTT-HT + 5838 1 3646 3651 3650 # CAT-CAO-CAM + 5839 2 3646 3651 3657 # CAT-CAO-HAT + 5840 4 3647 3646 3652 # CAO-CAT-CTT + 5841 5 3647 3646 3651 # CAO-CAT-CAO + 5842 6 3647 3648 3649 # CAO-CAM-CAP + 5843 7 3647 3648 3654 # CAO-CAM-HAT + 5844 8 3648 3647 3653 # CAM-CAO-HAT + 5845 9 3648 3649 3650 # CAM-CAP-CAM + 5846 10 3648 3649 3655 # CAM-CAP-HAT + 5847 11 3649 3648 3654 # CAP-CAM-HAT + 5848 6 3651 3650 3649 # CAO-CAM-CAP + 5849 11 3649 3650 3656 # CAP-CAM-HAT + 5850 10 3650 3649 3655 # CAM-CAP-HAT + 5851 8 3650 3651 3657 # CAM-CAO-HAT + 5852 7 3651 3650 3656 # CAO-CAM-HAT + 5853 4 3651 3646 3652 # CAO-CAT-CTT + 5854 12 3658 3652 3659 # HT-CTT-HT + 5855 12 3658 3652 3660 # HT-CTT-HT + 5856 12 3659 3652 3660 # HT-CTT-HT + 5857 1 3661 3662 3663 # CAT-CAO-CAM + 5858 2 3661 3662 3668 # CAT-CAO-HAT + 5859 3 3661 3667 3673 # CAT-CTT-HT + 5860 3 3661 3667 3674 # CAT-CTT-HT + 5861 3 3661 3667 3675 # CAT-CTT-HT + 5862 1 3661 3666 3665 # CAT-CAO-CAM + 5863 2 3661 3666 3672 # CAT-CAO-HAT + 5864 4 3662 3661 3667 # CAO-CAT-CTT + 5865 5 3662 3661 3666 # CAO-CAT-CAO + 5866 6 3662 3663 3664 # CAO-CAM-CAP + 5867 7 3662 3663 3669 # CAO-CAM-HAT + 5868 8 3663 3662 3668 # CAM-CAO-HAT + 5869 9 3663 3664 3665 # CAM-CAP-CAM + 5870 10 3663 3664 3670 # CAM-CAP-HAT + 5871 11 3664 3663 3669 # CAP-CAM-HAT + 5872 6 3666 3665 3664 # CAO-CAM-CAP + 5873 11 3664 3665 3671 # CAP-CAM-HAT + 5874 10 3665 3664 3670 # CAM-CAP-HAT + 5875 8 3665 3666 3672 # CAM-CAO-HAT + 5876 7 3666 3665 3671 # CAO-CAM-HAT + 5877 4 3666 3661 3667 # CAO-CAT-CTT + 5878 12 3673 3667 3674 # HT-CTT-HT + 5879 12 3673 3667 3675 # HT-CTT-HT + 5880 12 3674 3667 3675 # HT-CTT-HT + 5881 1 3676 3677 3678 # CAT-CAO-CAM + 5882 2 3676 3677 3683 # CAT-CAO-HAT + 5883 3 3676 3682 3688 # CAT-CTT-HT + 5884 3 3676 3682 3689 # CAT-CTT-HT + 5885 3 3676 3682 3690 # CAT-CTT-HT + 5886 1 3676 3681 3680 # CAT-CAO-CAM + 5887 2 3676 3681 3687 # CAT-CAO-HAT + 5888 4 3677 3676 3682 # CAO-CAT-CTT + 5889 5 3677 3676 3681 # CAO-CAT-CAO + 5890 6 3677 3678 3679 # CAO-CAM-CAP + 5891 7 3677 3678 3684 # CAO-CAM-HAT + 5892 8 3678 3677 3683 # CAM-CAO-HAT + 5893 9 3678 3679 3680 # CAM-CAP-CAM + 5894 10 3678 3679 3685 # CAM-CAP-HAT + 5895 11 3679 3678 3684 # CAP-CAM-HAT + 5896 6 3681 3680 3679 # CAO-CAM-CAP + 5897 11 3679 3680 3686 # CAP-CAM-HAT + 5898 10 3680 3679 3685 # CAM-CAP-HAT + 5899 8 3680 3681 3687 # CAM-CAO-HAT + 5900 7 3681 3680 3686 # CAO-CAM-HAT + 5901 4 3681 3676 3682 # CAO-CAT-CTT + 5902 12 3688 3682 3689 # HT-CTT-HT + 5903 12 3688 3682 3690 # HT-CTT-HT + 5904 12 3689 3682 3690 # HT-CTT-HT + 5905 1 3691 3692 3693 # CAT-CAO-CAM + 5906 2 3691 3692 3698 # CAT-CAO-HAT + 5907 3 3691 3697 3703 # CAT-CTT-HT + 5908 3 3691 3697 3704 # CAT-CTT-HT + 5909 3 3691 3697 3705 # CAT-CTT-HT + 5910 1 3691 3696 3695 # CAT-CAO-CAM + 5911 2 3691 3696 3702 # CAT-CAO-HAT + 5912 4 3692 3691 3697 # CAO-CAT-CTT + 5913 5 3692 3691 3696 # CAO-CAT-CAO + 5914 6 3692 3693 3694 # CAO-CAM-CAP + 5915 7 3692 3693 3699 # CAO-CAM-HAT + 5916 8 3693 3692 3698 # CAM-CAO-HAT + 5917 9 3693 3694 3695 # CAM-CAP-CAM + 5918 10 3693 3694 3700 # CAM-CAP-HAT + 5919 11 3694 3693 3699 # CAP-CAM-HAT + 5920 6 3696 3695 3694 # CAO-CAM-CAP + 5921 11 3694 3695 3701 # CAP-CAM-HAT + 5922 10 3695 3694 3700 # CAM-CAP-HAT + 5923 8 3695 3696 3702 # CAM-CAO-HAT + 5924 7 3696 3695 3701 # CAO-CAM-HAT + 5925 4 3696 3691 3697 # CAO-CAT-CTT + 5926 12 3703 3697 3704 # HT-CTT-HT + 5927 12 3703 3697 3705 # HT-CTT-HT + 5928 12 3704 3697 3705 # HT-CTT-HT + 5929 1 3706 3707 3708 # CAT-CAO-CAM + 5930 2 3706 3707 3713 # CAT-CAO-HAT + 5931 3 3706 3712 3718 # CAT-CTT-HT + 5932 3 3706 3712 3719 # CAT-CTT-HT + 5933 3 3706 3712 3720 # CAT-CTT-HT + 5934 1 3706 3711 3710 # CAT-CAO-CAM + 5935 2 3706 3711 3717 # CAT-CAO-HAT + 5936 4 3707 3706 3712 # CAO-CAT-CTT + 5937 5 3707 3706 3711 # CAO-CAT-CAO + 5938 6 3707 3708 3709 # CAO-CAM-CAP + 5939 7 3707 3708 3714 # CAO-CAM-HAT + 5940 8 3708 3707 3713 # CAM-CAO-HAT + 5941 9 3708 3709 3710 # CAM-CAP-CAM + 5942 10 3708 3709 3715 # CAM-CAP-HAT + 5943 11 3709 3708 3714 # CAP-CAM-HAT + 5944 6 3711 3710 3709 # CAO-CAM-CAP + 5945 11 3709 3710 3716 # CAP-CAM-HAT + 5946 10 3710 3709 3715 # CAM-CAP-HAT + 5947 8 3710 3711 3717 # CAM-CAO-HAT + 5948 7 3711 3710 3716 # CAO-CAM-HAT + 5949 4 3711 3706 3712 # CAO-CAT-CTT + 5950 12 3718 3712 3719 # HT-CTT-HT + 5951 12 3718 3712 3720 # HT-CTT-HT + 5952 12 3719 3712 3720 # HT-CTT-HT + 5953 1 3721 3722 3723 # CAT-CAO-CAM + 5954 2 3721 3722 3728 # CAT-CAO-HAT + 5955 3 3721 3727 3733 # CAT-CTT-HT + 5956 3 3721 3727 3734 # CAT-CTT-HT + 5957 3 3721 3727 3735 # CAT-CTT-HT + 5958 1 3721 3726 3725 # CAT-CAO-CAM + 5959 2 3721 3726 3732 # CAT-CAO-HAT + 5960 4 3722 3721 3727 # CAO-CAT-CTT + 5961 5 3722 3721 3726 # CAO-CAT-CAO + 5962 6 3722 3723 3724 # CAO-CAM-CAP + 5963 7 3722 3723 3729 # CAO-CAM-HAT + 5964 8 3723 3722 3728 # CAM-CAO-HAT + 5965 9 3723 3724 3725 # CAM-CAP-CAM + 5966 10 3723 3724 3730 # CAM-CAP-HAT + 5967 11 3724 3723 3729 # CAP-CAM-HAT + 5968 6 3726 3725 3724 # CAO-CAM-CAP + 5969 11 3724 3725 3731 # CAP-CAM-HAT + 5970 10 3725 3724 3730 # CAM-CAP-HAT + 5971 8 3725 3726 3732 # CAM-CAO-HAT + 5972 7 3726 3725 3731 # CAO-CAM-HAT + 5973 4 3726 3721 3727 # CAO-CAT-CTT + 5974 12 3733 3727 3734 # HT-CTT-HT + 5975 12 3733 3727 3735 # HT-CTT-HT + 5976 12 3734 3727 3735 # HT-CTT-HT + 5977 1 3736 3737 3738 # CAT-CAO-CAM + 5978 2 3736 3737 3743 # CAT-CAO-HAT + 5979 3 3736 3742 3748 # CAT-CTT-HT + 5980 3 3736 3742 3749 # CAT-CTT-HT + 5981 3 3736 3742 3750 # CAT-CTT-HT + 5982 1 3736 3741 3740 # CAT-CAO-CAM + 5983 2 3736 3741 3747 # CAT-CAO-HAT + 5984 4 3737 3736 3742 # CAO-CAT-CTT + 5985 5 3737 3736 3741 # CAO-CAT-CAO + 5986 6 3737 3738 3739 # CAO-CAM-CAP + 5987 7 3737 3738 3744 # CAO-CAM-HAT + 5988 8 3738 3737 3743 # CAM-CAO-HAT + 5989 9 3738 3739 3740 # CAM-CAP-CAM + 5990 10 3738 3739 3745 # CAM-CAP-HAT + 5991 11 3739 3738 3744 # CAP-CAM-HAT + 5992 6 3741 3740 3739 # CAO-CAM-CAP + 5993 11 3739 3740 3746 # CAP-CAM-HAT + 5994 10 3740 3739 3745 # CAM-CAP-HAT + 5995 8 3740 3741 3747 # CAM-CAO-HAT + 5996 7 3741 3740 3746 # CAO-CAM-HAT + 5997 4 3741 3736 3742 # CAO-CAT-CTT + 5998 12 3748 3742 3749 # HT-CTT-HT + 5999 12 3748 3742 3750 # HT-CTT-HT + 6000 12 3749 3742 3750 # HT-CTT-HT + +Dihedrals + + 1 1 1 2 3 4 # CAT-CAO-CAM-CAP + 2 2 1 2 3 9 # CAT-CAO-CAM-HAT + 3 1 1 6 5 4 # CAT-CAO-CAM-CAP + 4 2 1 6 5 11 # CAT-CAO-CAM-HAT + 5 3 2 1 6 5 # CAO-CAT-CAO-CAM + 6 4 2 1 6 12 # CAO-CAT-CAO-HAT + 7 5 2 3 4 5 # CAO-CAM-CAP-CAM + 8 6 2 3 4 10 # CAO-CAM-CAP-HAT + 9 7 7 1 2 3 # CTT-CAT-CAO-CAM + 10 3 6 1 2 3 # CAO-CAT-CAO-CAM + 11 5 6 5 4 3 # CAO-CAM-CAP-CAM + 12 8 3 4 5 11 # CAM-CAP-CAM-HAT + 13 9 4 3 2 8 # CAP-CAM-CAO-HAT + 14 9 4 5 6 12 # CAP-CAM-CAO-HAT + 15 8 5 4 3 9 # CAM-CAP-CAM-HAT + 16 7 7 1 6 5 # CTT-CAT-CAO-CAM + 17 6 6 5 4 10 # CAO-CAM-CAP-HAT + 18 4 6 1 2 8 # CAO-CAT-CAO-HAT + 19 10 7 1 2 8 # CTT-CAT-CAO-HAT + 20 10 7 1 6 12 # CTT-CAT-CAO-HAT + 21 11 8 2 3 9 # HAT-CAO-CAM-HAT + 22 12 9 3 4 10 # HAT-CAM-CAP-HAT + 23 12 11 5 4 10 # HAT-CAM-CAP-HAT + 24 11 12 6 5 11 # HAT-CAO-CAM-HAT + 25 1 16 17 18 19 # CAT-CAO-CAM-CAP + 26 2 16 17 18 24 # CAT-CAO-CAM-HAT + 27 1 16 21 20 19 # CAT-CAO-CAM-CAP + 28 2 16 21 20 26 # CAT-CAO-CAM-HAT + 29 3 17 16 21 20 # CAO-CAT-CAO-CAM + 30 4 17 16 21 27 # CAO-CAT-CAO-HAT + 31 5 17 18 19 20 # CAO-CAM-CAP-CAM + 32 6 17 18 19 25 # CAO-CAM-CAP-HAT + 33 7 22 16 17 18 # CTT-CAT-CAO-CAM + 34 3 21 16 17 18 # CAO-CAT-CAO-CAM + 35 5 21 20 19 18 # CAO-CAM-CAP-CAM + 36 8 18 19 20 26 # CAM-CAP-CAM-HAT + 37 9 19 18 17 23 # CAP-CAM-CAO-HAT + 38 9 19 20 21 27 # CAP-CAM-CAO-HAT + 39 8 20 19 18 24 # CAM-CAP-CAM-HAT + 40 7 22 16 21 20 # CTT-CAT-CAO-CAM + 41 6 21 20 19 25 # CAO-CAM-CAP-HAT + 42 4 21 16 17 23 # CAO-CAT-CAO-HAT + 43 10 22 16 17 23 # CTT-CAT-CAO-HAT + 44 10 22 16 21 27 # CTT-CAT-CAO-HAT + 45 11 23 17 18 24 # HAT-CAO-CAM-HAT + 46 12 24 18 19 25 # HAT-CAM-CAP-HAT + 47 12 26 20 19 25 # HAT-CAM-CAP-HAT + 48 11 27 21 20 26 # HAT-CAO-CAM-HAT + 49 1 31 32 33 34 # CAT-CAO-CAM-CAP + 50 2 31 32 33 39 # CAT-CAO-CAM-HAT + 51 1 31 36 35 34 # CAT-CAO-CAM-CAP + 52 2 31 36 35 41 # CAT-CAO-CAM-HAT + 53 3 32 31 36 35 # CAO-CAT-CAO-CAM + 54 4 32 31 36 42 # CAO-CAT-CAO-HAT + 55 5 32 33 34 35 # CAO-CAM-CAP-CAM + 56 6 32 33 34 40 # CAO-CAM-CAP-HAT + 57 7 37 31 32 33 # CTT-CAT-CAO-CAM + 58 3 36 31 32 33 # CAO-CAT-CAO-CAM + 59 5 36 35 34 33 # CAO-CAM-CAP-CAM + 60 8 33 34 35 41 # CAM-CAP-CAM-HAT + 61 9 34 33 32 38 # CAP-CAM-CAO-HAT + 62 9 34 35 36 42 # CAP-CAM-CAO-HAT + 63 8 35 34 33 39 # CAM-CAP-CAM-HAT + 64 7 37 31 36 35 # CTT-CAT-CAO-CAM + 65 6 36 35 34 40 # CAO-CAM-CAP-HAT + 66 4 36 31 32 38 # CAO-CAT-CAO-HAT + 67 10 37 31 32 38 # CTT-CAT-CAO-HAT + 68 10 37 31 36 42 # CTT-CAT-CAO-HAT + 69 11 38 32 33 39 # HAT-CAO-CAM-HAT + 70 12 39 33 34 40 # HAT-CAM-CAP-HAT + 71 12 41 35 34 40 # HAT-CAM-CAP-HAT + 72 11 42 36 35 41 # HAT-CAO-CAM-HAT + 73 1 46 47 48 49 # CAT-CAO-CAM-CAP + 74 2 46 47 48 54 # CAT-CAO-CAM-HAT + 75 1 46 51 50 49 # CAT-CAO-CAM-CAP + 76 2 46 51 50 56 # CAT-CAO-CAM-HAT + 77 3 47 46 51 50 # CAO-CAT-CAO-CAM + 78 4 47 46 51 57 # CAO-CAT-CAO-HAT + 79 5 47 48 49 50 # CAO-CAM-CAP-CAM + 80 6 47 48 49 55 # CAO-CAM-CAP-HAT + 81 7 52 46 47 48 # CTT-CAT-CAO-CAM + 82 3 51 46 47 48 # CAO-CAT-CAO-CAM + 83 5 51 50 49 48 # CAO-CAM-CAP-CAM + 84 8 48 49 50 56 # CAM-CAP-CAM-HAT + 85 9 49 48 47 53 # CAP-CAM-CAO-HAT + 86 9 49 50 51 57 # CAP-CAM-CAO-HAT + 87 8 50 49 48 54 # CAM-CAP-CAM-HAT + 88 7 52 46 51 50 # CTT-CAT-CAO-CAM + 89 6 51 50 49 55 # CAO-CAM-CAP-HAT + 90 4 51 46 47 53 # CAO-CAT-CAO-HAT + 91 10 52 46 47 53 # CTT-CAT-CAO-HAT + 92 10 52 46 51 57 # CTT-CAT-CAO-HAT + 93 11 53 47 48 54 # HAT-CAO-CAM-HAT + 94 12 54 48 49 55 # HAT-CAM-CAP-HAT + 95 12 56 50 49 55 # HAT-CAM-CAP-HAT + 96 11 57 51 50 56 # HAT-CAO-CAM-HAT + 97 1 61 62 63 64 # CAT-CAO-CAM-CAP + 98 2 61 62 63 69 # CAT-CAO-CAM-HAT + 99 1 61 66 65 64 # CAT-CAO-CAM-CAP + 100 2 61 66 65 71 # CAT-CAO-CAM-HAT + 101 3 62 61 66 65 # CAO-CAT-CAO-CAM + 102 4 62 61 66 72 # CAO-CAT-CAO-HAT + 103 5 62 63 64 65 # CAO-CAM-CAP-CAM + 104 6 62 63 64 70 # CAO-CAM-CAP-HAT + 105 7 67 61 62 63 # CTT-CAT-CAO-CAM + 106 3 66 61 62 63 # CAO-CAT-CAO-CAM + 107 5 66 65 64 63 # CAO-CAM-CAP-CAM + 108 8 63 64 65 71 # CAM-CAP-CAM-HAT + 109 9 64 63 62 68 # CAP-CAM-CAO-HAT + 110 9 64 65 66 72 # CAP-CAM-CAO-HAT + 111 8 65 64 63 69 # CAM-CAP-CAM-HAT + 112 7 67 61 66 65 # CTT-CAT-CAO-CAM + 113 6 66 65 64 70 # CAO-CAM-CAP-HAT + 114 4 66 61 62 68 # CAO-CAT-CAO-HAT + 115 10 67 61 62 68 # CTT-CAT-CAO-HAT + 116 10 67 61 66 72 # CTT-CAT-CAO-HAT + 117 11 68 62 63 69 # HAT-CAO-CAM-HAT + 118 12 69 63 64 70 # HAT-CAM-CAP-HAT + 119 12 71 65 64 70 # HAT-CAM-CAP-HAT + 120 11 72 66 65 71 # HAT-CAO-CAM-HAT + 121 1 76 77 78 79 # CAT-CAO-CAM-CAP + 122 2 76 77 78 84 # CAT-CAO-CAM-HAT + 123 1 76 81 80 79 # CAT-CAO-CAM-CAP + 124 2 76 81 80 86 # CAT-CAO-CAM-HAT + 125 3 77 76 81 80 # CAO-CAT-CAO-CAM + 126 4 77 76 81 87 # CAO-CAT-CAO-HAT + 127 5 77 78 79 80 # CAO-CAM-CAP-CAM + 128 6 77 78 79 85 # CAO-CAM-CAP-HAT + 129 7 82 76 77 78 # CTT-CAT-CAO-CAM + 130 3 81 76 77 78 # CAO-CAT-CAO-CAM + 131 5 81 80 79 78 # CAO-CAM-CAP-CAM + 132 8 78 79 80 86 # CAM-CAP-CAM-HAT + 133 9 79 78 77 83 # CAP-CAM-CAO-HAT + 134 9 79 80 81 87 # CAP-CAM-CAO-HAT + 135 8 80 79 78 84 # CAM-CAP-CAM-HAT + 136 7 82 76 81 80 # CTT-CAT-CAO-CAM + 137 6 81 80 79 85 # CAO-CAM-CAP-HAT + 138 4 81 76 77 83 # CAO-CAT-CAO-HAT + 139 10 82 76 77 83 # CTT-CAT-CAO-HAT + 140 10 82 76 81 87 # CTT-CAT-CAO-HAT + 141 11 83 77 78 84 # HAT-CAO-CAM-HAT + 142 12 84 78 79 85 # HAT-CAM-CAP-HAT + 143 12 86 80 79 85 # HAT-CAM-CAP-HAT + 144 11 87 81 80 86 # HAT-CAO-CAM-HAT + 145 1 91 92 93 94 # CAT-CAO-CAM-CAP + 146 2 91 92 93 99 # CAT-CAO-CAM-HAT + 147 1 91 96 95 94 # CAT-CAO-CAM-CAP + 148 2 91 96 95 101 # CAT-CAO-CAM-HAT + 149 3 92 91 96 95 # CAO-CAT-CAO-CAM + 150 4 92 91 96 102 # CAO-CAT-CAO-HAT + 151 5 92 93 94 95 # CAO-CAM-CAP-CAM + 152 6 92 93 94 100 # CAO-CAM-CAP-HAT + 153 7 97 91 92 93 # CTT-CAT-CAO-CAM + 154 3 96 91 92 93 # CAO-CAT-CAO-CAM + 155 5 96 95 94 93 # CAO-CAM-CAP-CAM + 156 8 93 94 95 101 # CAM-CAP-CAM-HAT + 157 9 94 93 92 98 # CAP-CAM-CAO-HAT + 158 9 94 95 96 102 # CAP-CAM-CAO-HAT + 159 8 95 94 93 99 # CAM-CAP-CAM-HAT + 160 7 97 91 96 95 # CTT-CAT-CAO-CAM + 161 6 96 95 94 100 # CAO-CAM-CAP-HAT + 162 4 96 91 92 98 # CAO-CAT-CAO-HAT + 163 10 97 91 92 98 # CTT-CAT-CAO-HAT + 164 10 97 91 96 102 # CTT-CAT-CAO-HAT + 165 11 98 92 93 99 # HAT-CAO-CAM-HAT + 166 12 99 93 94 100 # HAT-CAM-CAP-HAT + 167 12 101 95 94 100 # HAT-CAM-CAP-HAT + 168 11 102 96 95 101 # HAT-CAO-CAM-HAT + 169 1 106 107 108 109 # CAT-CAO-CAM-CAP + 170 2 106 107 108 114 # CAT-CAO-CAM-HAT + 171 1 106 111 110 109 # CAT-CAO-CAM-CAP + 172 2 106 111 110 116 # CAT-CAO-CAM-HAT + 173 3 107 106 111 110 # CAO-CAT-CAO-CAM + 174 4 107 106 111 117 # CAO-CAT-CAO-HAT + 175 5 107 108 109 110 # CAO-CAM-CAP-CAM + 176 6 107 108 109 115 # CAO-CAM-CAP-HAT + 177 7 112 106 107 108 # CTT-CAT-CAO-CAM + 178 3 111 106 107 108 # CAO-CAT-CAO-CAM + 179 5 111 110 109 108 # CAO-CAM-CAP-CAM + 180 8 108 109 110 116 # CAM-CAP-CAM-HAT + 181 9 109 108 107 113 # CAP-CAM-CAO-HAT + 182 9 109 110 111 117 # CAP-CAM-CAO-HAT + 183 8 110 109 108 114 # CAM-CAP-CAM-HAT + 184 7 112 106 111 110 # CTT-CAT-CAO-CAM + 185 6 111 110 109 115 # CAO-CAM-CAP-HAT + 186 4 111 106 107 113 # CAO-CAT-CAO-HAT + 187 10 112 106 107 113 # CTT-CAT-CAO-HAT + 188 10 112 106 111 117 # CTT-CAT-CAO-HAT + 189 11 113 107 108 114 # HAT-CAO-CAM-HAT + 190 12 114 108 109 115 # HAT-CAM-CAP-HAT + 191 12 116 110 109 115 # HAT-CAM-CAP-HAT + 192 11 117 111 110 116 # HAT-CAO-CAM-HAT + 193 1 121 122 123 124 # CAT-CAO-CAM-CAP + 194 2 121 122 123 129 # CAT-CAO-CAM-HAT + 195 1 121 126 125 124 # CAT-CAO-CAM-CAP + 196 2 121 126 125 131 # CAT-CAO-CAM-HAT + 197 3 122 121 126 125 # CAO-CAT-CAO-CAM + 198 4 122 121 126 132 # CAO-CAT-CAO-HAT + 199 5 122 123 124 125 # CAO-CAM-CAP-CAM + 200 6 122 123 124 130 # CAO-CAM-CAP-HAT + 201 7 127 121 122 123 # CTT-CAT-CAO-CAM + 202 3 126 121 122 123 # CAO-CAT-CAO-CAM + 203 5 126 125 124 123 # CAO-CAM-CAP-CAM + 204 8 123 124 125 131 # CAM-CAP-CAM-HAT + 205 9 124 123 122 128 # CAP-CAM-CAO-HAT + 206 9 124 125 126 132 # CAP-CAM-CAO-HAT + 207 8 125 124 123 129 # CAM-CAP-CAM-HAT + 208 7 127 121 126 125 # CTT-CAT-CAO-CAM + 209 6 126 125 124 130 # CAO-CAM-CAP-HAT + 210 4 126 121 122 128 # CAO-CAT-CAO-HAT + 211 10 127 121 122 128 # CTT-CAT-CAO-HAT + 212 10 127 121 126 132 # CTT-CAT-CAO-HAT + 213 11 128 122 123 129 # HAT-CAO-CAM-HAT + 214 12 129 123 124 130 # HAT-CAM-CAP-HAT + 215 12 131 125 124 130 # HAT-CAM-CAP-HAT + 216 11 132 126 125 131 # HAT-CAO-CAM-HAT + 217 1 136 137 138 139 # CAT-CAO-CAM-CAP + 218 2 136 137 138 144 # CAT-CAO-CAM-HAT + 219 1 136 141 140 139 # CAT-CAO-CAM-CAP + 220 2 136 141 140 146 # CAT-CAO-CAM-HAT + 221 3 137 136 141 140 # CAO-CAT-CAO-CAM + 222 4 137 136 141 147 # CAO-CAT-CAO-HAT + 223 5 137 138 139 140 # CAO-CAM-CAP-CAM + 224 6 137 138 139 145 # CAO-CAM-CAP-HAT + 225 7 142 136 137 138 # CTT-CAT-CAO-CAM + 226 3 141 136 137 138 # CAO-CAT-CAO-CAM + 227 5 141 140 139 138 # CAO-CAM-CAP-CAM + 228 8 138 139 140 146 # CAM-CAP-CAM-HAT + 229 9 139 138 137 143 # CAP-CAM-CAO-HAT + 230 9 139 140 141 147 # CAP-CAM-CAO-HAT + 231 8 140 139 138 144 # CAM-CAP-CAM-HAT + 232 7 142 136 141 140 # CTT-CAT-CAO-CAM + 233 6 141 140 139 145 # CAO-CAM-CAP-HAT + 234 4 141 136 137 143 # CAO-CAT-CAO-HAT + 235 10 142 136 137 143 # CTT-CAT-CAO-HAT + 236 10 142 136 141 147 # CTT-CAT-CAO-HAT + 237 11 143 137 138 144 # HAT-CAO-CAM-HAT + 238 12 144 138 139 145 # HAT-CAM-CAP-HAT + 239 12 146 140 139 145 # HAT-CAM-CAP-HAT + 240 11 147 141 140 146 # HAT-CAO-CAM-HAT + 241 1 151 152 153 154 # CAT-CAO-CAM-CAP + 242 2 151 152 153 159 # CAT-CAO-CAM-HAT + 243 1 151 156 155 154 # CAT-CAO-CAM-CAP + 244 2 151 156 155 161 # CAT-CAO-CAM-HAT + 245 3 152 151 156 155 # CAO-CAT-CAO-CAM + 246 4 152 151 156 162 # CAO-CAT-CAO-HAT + 247 5 152 153 154 155 # CAO-CAM-CAP-CAM + 248 6 152 153 154 160 # CAO-CAM-CAP-HAT + 249 7 157 151 152 153 # CTT-CAT-CAO-CAM + 250 3 156 151 152 153 # CAO-CAT-CAO-CAM + 251 5 156 155 154 153 # CAO-CAM-CAP-CAM + 252 8 153 154 155 161 # CAM-CAP-CAM-HAT + 253 9 154 153 152 158 # CAP-CAM-CAO-HAT + 254 9 154 155 156 162 # CAP-CAM-CAO-HAT + 255 8 155 154 153 159 # CAM-CAP-CAM-HAT + 256 7 157 151 156 155 # CTT-CAT-CAO-CAM + 257 6 156 155 154 160 # CAO-CAM-CAP-HAT + 258 4 156 151 152 158 # CAO-CAT-CAO-HAT + 259 10 157 151 152 158 # CTT-CAT-CAO-HAT + 260 10 157 151 156 162 # CTT-CAT-CAO-HAT + 261 11 158 152 153 159 # HAT-CAO-CAM-HAT + 262 12 159 153 154 160 # HAT-CAM-CAP-HAT + 263 12 161 155 154 160 # HAT-CAM-CAP-HAT + 264 11 162 156 155 161 # HAT-CAO-CAM-HAT + 265 1 166 167 168 169 # CAT-CAO-CAM-CAP + 266 2 166 167 168 174 # CAT-CAO-CAM-HAT + 267 1 166 171 170 169 # CAT-CAO-CAM-CAP + 268 2 166 171 170 176 # CAT-CAO-CAM-HAT + 269 3 167 166 171 170 # CAO-CAT-CAO-CAM + 270 4 167 166 171 177 # CAO-CAT-CAO-HAT + 271 5 167 168 169 170 # CAO-CAM-CAP-CAM + 272 6 167 168 169 175 # CAO-CAM-CAP-HAT + 273 7 172 166 167 168 # CTT-CAT-CAO-CAM + 274 3 171 166 167 168 # CAO-CAT-CAO-CAM + 275 5 171 170 169 168 # CAO-CAM-CAP-CAM + 276 8 168 169 170 176 # CAM-CAP-CAM-HAT + 277 9 169 168 167 173 # CAP-CAM-CAO-HAT + 278 9 169 170 171 177 # CAP-CAM-CAO-HAT + 279 8 170 169 168 174 # CAM-CAP-CAM-HAT + 280 7 172 166 171 170 # CTT-CAT-CAO-CAM + 281 6 171 170 169 175 # CAO-CAM-CAP-HAT + 282 4 171 166 167 173 # CAO-CAT-CAO-HAT + 283 10 172 166 167 173 # CTT-CAT-CAO-HAT + 284 10 172 166 171 177 # CTT-CAT-CAO-HAT + 285 11 173 167 168 174 # HAT-CAO-CAM-HAT + 286 12 174 168 169 175 # HAT-CAM-CAP-HAT + 287 12 176 170 169 175 # HAT-CAM-CAP-HAT + 288 11 177 171 170 176 # HAT-CAO-CAM-HAT + 289 1 181 182 183 184 # CAT-CAO-CAM-CAP + 290 2 181 182 183 189 # CAT-CAO-CAM-HAT + 291 1 181 186 185 184 # CAT-CAO-CAM-CAP + 292 2 181 186 185 191 # CAT-CAO-CAM-HAT + 293 3 182 181 186 185 # CAO-CAT-CAO-CAM + 294 4 182 181 186 192 # CAO-CAT-CAO-HAT + 295 5 182 183 184 185 # CAO-CAM-CAP-CAM + 296 6 182 183 184 190 # CAO-CAM-CAP-HAT + 297 7 187 181 182 183 # CTT-CAT-CAO-CAM + 298 3 186 181 182 183 # CAO-CAT-CAO-CAM + 299 5 186 185 184 183 # CAO-CAM-CAP-CAM + 300 8 183 184 185 191 # CAM-CAP-CAM-HAT + 301 9 184 183 182 188 # CAP-CAM-CAO-HAT + 302 9 184 185 186 192 # CAP-CAM-CAO-HAT + 303 8 185 184 183 189 # CAM-CAP-CAM-HAT + 304 7 187 181 186 185 # CTT-CAT-CAO-CAM + 305 6 186 185 184 190 # CAO-CAM-CAP-HAT + 306 4 186 181 182 188 # CAO-CAT-CAO-HAT + 307 10 187 181 182 188 # CTT-CAT-CAO-HAT + 308 10 187 181 186 192 # CTT-CAT-CAO-HAT + 309 11 188 182 183 189 # HAT-CAO-CAM-HAT + 310 12 189 183 184 190 # HAT-CAM-CAP-HAT + 311 12 191 185 184 190 # HAT-CAM-CAP-HAT + 312 11 192 186 185 191 # HAT-CAO-CAM-HAT + 313 1 196 197 198 199 # CAT-CAO-CAM-CAP + 314 2 196 197 198 204 # CAT-CAO-CAM-HAT + 315 1 196 201 200 199 # CAT-CAO-CAM-CAP + 316 2 196 201 200 206 # CAT-CAO-CAM-HAT + 317 3 197 196 201 200 # CAO-CAT-CAO-CAM + 318 4 197 196 201 207 # CAO-CAT-CAO-HAT + 319 5 197 198 199 200 # CAO-CAM-CAP-CAM + 320 6 197 198 199 205 # CAO-CAM-CAP-HAT + 321 7 202 196 197 198 # CTT-CAT-CAO-CAM + 322 3 201 196 197 198 # CAO-CAT-CAO-CAM + 323 5 201 200 199 198 # CAO-CAM-CAP-CAM + 324 8 198 199 200 206 # CAM-CAP-CAM-HAT + 325 9 199 198 197 203 # CAP-CAM-CAO-HAT + 326 9 199 200 201 207 # CAP-CAM-CAO-HAT + 327 8 200 199 198 204 # CAM-CAP-CAM-HAT + 328 7 202 196 201 200 # CTT-CAT-CAO-CAM + 329 6 201 200 199 205 # CAO-CAM-CAP-HAT + 330 4 201 196 197 203 # CAO-CAT-CAO-HAT + 331 10 202 196 197 203 # CTT-CAT-CAO-HAT + 332 10 202 196 201 207 # CTT-CAT-CAO-HAT + 333 11 203 197 198 204 # HAT-CAO-CAM-HAT + 334 12 204 198 199 205 # HAT-CAM-CAP-HAT + 335 12 206 200 199 205 # HAT-CAM-CAP-HAT + 336 11 207 201 200 206 # HAT-CAO-CAM-HAT + 337 1 211 212 213 214 # CAT-CAO-CAM-CAP + 338 2 211 212 213 219 # CAT-CAO-CAM-HAT + 339 1 211 216 215 214 # CAT-CAO-CAM-CAP + 340 2 211 216 215 221 # CAT-CAO-CAM-HAT + 341 3 212 211 216 215 # CAO-CAT-CAO-CAM + 342 4 212 211 216 222 # CAO-CAT-CAO-HAT + 343 5 212 213 214 215 # CAO-CAM-CAP-CAM + 344 6 212 213 214 220 # CAO-CAM-CAP-HAT + 345 7 217 211 212 213 # CTT-CAT-CAO-CAM + 346 3 216 211 212 213 # CAO-CAT-CAO-CAM + 347 5 216 215 214 213 # CAO-CAM-CAP-CAM + 348 8 213 214 215 221 # CAM-CAP-CAM-HAT + 349 9 214 213 212 218 # CAP-CAM-CAO-HAT + 350 9 214 215 216 222 # CAP-CAM-CAO-HAT + 351 8 215 214 213 219 # CAM-CAP-CAM-HAT + 352 7 217 211 216 215 # CTT-CAT-CAO-CAM + 353 6 216 215 214 220 # CAO-CAM-CAP-HAT + 354 4 216 211 212 218 # CAO-CAT-CAO-HAT + 355 10 217 211 212 218 # CTT-CAT-CAO-HAT + 356 10 217 211 216 222 # CTT-CAT-CAO-HAT + 357 11 218 212 213 219 # HAT-CAO-CAM-HAT + 358 12 219 213 214 220 # HAT-CAM-CAP-HAT + 359 12 221 215 214 220 # HAT-CAM-CAP-HAT + 360 11 222 216 215 221 # HAT-CAO-CAM-HAT + 361 1 226 227 228 229 # CAT-CAO-CAM-CAP + 362 2 226 227 228 234 # CAT-CAO-CAM-HAT + 363 1 226 231 230 229 # CAT-CAO-CAM-CAP + 364 2 226 231 230 236 # CAT-CAO-CAM-HAT + 365 3 227 226 231 230 # CAO-CAT-CAO-CAM + 366 4 227 226 231 237 # CAO-CAT-CAO-HAT + 367 5 227 228 229 230 # CAO-CAM-CAP-CAM + 368 6 227 228 229 235 # CAO-CAM-CAP-HAT + 369 7 232 226 227 228 # CTT-CAT-CAO-CAM + 370 3 231 226 227 228 # CAO-CAT-CAO-CAM + 371 5 231 230 229 228 # CAO-CAM-CAP-CAM + 372 8 228 229 230 236 # CAM-CAP-CAM-HAT + 373 9 229 228 227 233 # CAP-CAM-CAO-HAT + 374 9 229 230 231 237 # CAP-CAM-CAO-HAT + 375 8 230 229 228 234 # CAM-CAP-CAM-HAT + 376 7 232 226 231 230 # CTT-CAT-CAO-CAM + 377 6 231 230 229 235 # CAO-CAM-CAP-HAT + 378 4 231 226 227 233 # CAO-CAT-CAO-HAT + 379 10 232 226 227 233 # CTT-CAT-CAO-HAT + 380 10 232 226 231 237 # CTT-CAT-CAO-HAT + 381 11 233 227 228 234 # HAT-CAO-CAM-HAT + 382 12 234 228 229 235 # HAT-CAM-CAP-HAT + 383 12 236 230 229 235 # HAT-CAM-CAP-HAT + 384 11 237 231 230 236 # HAT-CAO-CAM-HAT + 385 1 241 242 243 244 # CAT-CAO-CAM-CAP + 386 2 241 242 243 249 # CAT-CAO-CAM-HAT + 387 1 241 246 245 244 # CAT-CAO-CAM-CAP + 388 2 241 246 245 251 # CAT-CAO-CAM-HAT + 389 3 242 241 246 245 # CAO-CAT-CAO-CAM + 390 4 242 241 246 252 # CAO-CAT-CAO-HAT + 391 5 242 243 244 245 # CAO-CAM-CAP-CAM + 392 6 242 243 244 250 # CAO-CAM-CAP-HAT + 393 7 247 241 242 243 # CTT-CAT-CAO-CAM + 394 3 246 241 242 243 # CAO-CAT-CAO-CAM + 395 5 246 245 244 243 # CAO-CAM-CAP-CAM + 396 8 243 244 245 251 # CAM-CAP-CAM-HAT + 397 9 244 243 242 248 # CAP-CAM-CAO-HAT + 398 9 244 245 246 252 # CAP-CAM-CAO-HAT + 399 8 245 244 243 249 # CAM-CAP-CAM-HAT + 400 7 247 241 246 245 # CTT-CAT-CAO-CAM + 401 6 246 245 244 250 # CAO-CAM-CAP-HAT + 402 4 246 241 242 248 # CAO-CAT-CAO-HAT + 403 10 247 241 242 248 # CTT-CAT-CAO-HAT + 404 10 247 241 246 252 # CTT-CAT-CAO-HAT + 405 11 248 242 243 249 # HAT-CAO-CAM-HAT + 406 12 249 243 244 250 # HAT-CAM-CAP-HAT + 407 12 251 245 244 250 # HAT-CAM-CAP-HAT + 408 11 252 246 245 251 # HAT-CAO-CAM-HAT + 409 1 256 257 258 259 # CAT-CAO-CAM-CAP + 410 2 256 257 258 264 # CAT-CAO-CAM-HAT + 411 1 256 261 260 259 # CAT-CAO-CAM-CAP + 412 2 256 261 260 266 # CAT-CAO-CAM-HAT + 413 3 257 256 261 260 # CAO-CAT-CAO-CAM + 414 4 257 256 261 267 # CAO-CAT-CAO-HAT + 415 5 257 258 259 260 # CAO-CAM-CAP-CAM + 416 6 257 258 259 265 # CAO-CAM-CAP-HAT + 417 7 262 256 257 258 # CTT-CAT-CAO-CAM + 418 3 261 256 257 258 # CAO-CAT-CAO-CAM + 419 5 261 260 259 258 # CAO-CAM-CAP-CAM + 420 8 258 259 260 266 # CAM-CAP-CAM-HAT + 421 9 259 258 257 263 # CAP-CAM-CAO-HAT + 422 9 259 260 261 267 # CAP-CAM-CAO-HAT + 423 8 260 259 258 264 # CAM-CAP-CAM-HAT + 424 7 262 256 261 260 # CTT-CAT-CAO-CAM + 425 6 261 260 259 265 # CAO-CAM-CAP-HAT + 426 4 261 256 257 263 # CAO-CAT-CAO-HAT + 427 10 262 256 257 263 # CTT-CAT-CAO-HAT + 428 10 262 256 261 267 # CTT-CAT-CAO-HAT + 429 11 263 257 258 264 # HAT-CAO-CAM-HAT + 430 12 264 258 259 265 # HAT-CAM-CAP-HAT + 431 12 266 260 259 265 # HAT-CAM-CAP-HAT + 432 11 267 261 260 266 # HAT-CAO-CAM-HAT + 433 1 271 272 273 274 # CAT-CAO-CAM-CAP + 434 2 271 272 273 279 # CAT-CAO-CAM-HAT + 435 1 271 276 275 274 # CAT-CAO-CAM-CAP + 436 2 271 276 275 281 # CAT-CAO-CAM-HAT + 437 3 272 271 276 275 # CAO-CAT-CAO-CAM + 438 4 272 271 276 282 # CAO-CAT-CAO-HAT + 439 5 272 273 274 275 # CAO-CAM-CAP-CAM + 440 6 272 273 274 280 # CAO-CAM-CAP-HAT + 441 7 277 271 272 273 # CTT-CAT-CAO-CAM + 442 3 276 271 272 273 # CAO-CAT-CAO-CAM + 443 5 276 275 274 273 # CAO-CAM-CAP-CAM + 444 8 273 274 275 281 # CAM-CAP-CAM-HAT + 445 9 274 273 272 278 # CAP-CAM-CAO-HAT + 446 9 274 275 276 282 # CAP-CAM-CAO-HAT + 447 8 275 274 273 279 # CAM-CAP-CAM-HAT + 448 7 277 271 276 275 # CTT-CAT-CAO-CAM + 449 6 276 275 274 280 # CAO-CAM-CAP-HAT + 450 4 276 271 272 278 # CAO-CAT-CAO-HAT + 451 10 277 271 272 278 # CTT-CAT-CAO-HAT + 452 10 277 271 276 282 # CTT-CAT-CAO-HAT + 453 11 278 272 273 279 # HAT-CAO-CAM-HAT + 454 12 279 273 274 280 # HAT-CAM-CAP-HAT + 455 12 281 275 274 280 # HAT-CAM-CAP-HAT + 456 11 282 276 275 281 # HAT-CAO-CAM-HAT + 457 1 286 287 288 289 # CAT-CAO-CAM-CAP + 458 2 286 287 288 294 # CAT-CAO-CAM-HAT + 459 1 286 291 290 289 # CAT-CAO-CAM-CAP + 460 2 286 291 290 296 # CAT-CAO-CAM-HAT + 461 3 287 286 291 290 # CAO-CAT-CAO-CAM + 462 4 287 286 291 297 # CAO-CAT-CAO-HAT + 463 5 287 288 289 290 # CAO-CAM-CAP-CAM + 464 6 287 288 289 295 # CAO-CAM-CAP-HAT + 465 7 292 286 287 288 # CTT-CAT-CAO-CAM + 466 3 291 286 287 288 # CAO-CAT-CAO-CAM + 467 5 291 290 289 288 # CAO-CAM-CAP-CAM + 468 8 288 289 290 296 # CAM-CAP-CAM-HAT + 469 9 289 288 287 293 # CAP-CAM-CAO-HAT + 470 9 289 290 291 297 # CAP-CAM-CAO-HAT + 471 8 290 289 288 294 # CAM-CAP-CAM-HAT + 472 7 292 286 291 290 # CTT-CAT-CAO-CAM + 473 6 291 290 289 295 # CAO-CAM-CAP-HAT + 474 4 291 286 287 293 # CAO-CAT-CAO-HAT + 475 10 292 286 287 293 # CTT-CAT-CAO-HAT + 476 10 292 286 291 297 # CTT-CAT-CAO-HAT + 477 11 293 287 288 294 # HAT-CAO-CAM-HAT + 478 12 294 288 289 295 # HAT-CAM-CAP-HAT + 479 12 296 290 289 295 # HAT-CAM-CAP-HAT + 480 11 297 291 290 296 # HAT-CAO-CAM-HAT + 481 1 301 302 303 304 # CAT-CAO-CAM-CAP + 482 2 301 302 303 309 # CAT-CAO-CAM-HAT + 483 1 301 306 305 304 # CAT-CAO-CAM-CAP + 484 2 301 306 305 311 # CAT-CAO-CAM-HAT + 485 3 302 301 306 305 # CAO-CAT-CAO-CAM + 486 4 302 301 306 312 # CAO-CAT-CAO-HAT + 487 5 302 303 304 305 # CAO-CAM-CAP-CAM + 488 6 302 303 304 310 # CAO-CAM-CAP-HAT + 489 7 307 301 302 303 # CTT-CAT-CAO-CAM + 490 3 306 301 302 303 # CAO-CAT-CAO-CAM + 491 5 306 305 304 303 # CAO-CAM-CAP-CAM + 492 8 303 304 305 311 # CAM-CAP-CAM-HAT + 493 9 304 303 302 308 # CAP-CAM-CAO-HAT + 494 9 304 305 306 312 # CAP-CAM-CAO-HAT + 495 8 305 304 303 309 # CAM-CAP-CAM-HAT + 496 7 307 301 306 305 # CTT-CAT-CAO-CAM + 497 6 306 305 304 310 # CAO-CAM-CAP-HAT + 498 4 306 301 302 308 # CAO-CAT-CAO-HAT + 499 10 307 301 302 308 # CTT-CAT-CAO-HAT + 500 10 307 301 306 312 # CTT-CAT-CAO-HAT + 501 11 308 302 303 309 # HAT-CAO-CAM-HAT + 502 12 309 303 304 310 # HAT-CAM-CAP-HAT + 503 12 311 305 304 310 # HAT-CAM-CAP-HAT + 504 11 312 306 305 311 # HAT-CAO-CAM-HAT + 505 1 316 317 318 319 # CAT-CAO-CAM-CAP + 506 2 316 317 318 324 # CAT-CAO-CAM-HAT + 507 1 316 321 320 319 # CAT-CAO-CAM-CAP + 508 2 316 321 320 326 # CAT-CAO-CAM-HAT + 509 3 317 316 321 320 # CAO-CAT-CAO-CAM + 510 4 317 316 321 327 # CAO-CAT-CAO-HAT + 511 5 317 318 319 320 # CAO-CAM-CAP-CAM + 512 6 317 318 319 325 # CAO-CAM-CAP-HAT + 513 7 322 316 317 318 # CTT-CAT-CAO-CAM + 514 3 321 316 317 318 # CAO-CAT-CAO-CAM + 515 5 321 320 319 318 # CAO-CAM-CAP-CAM + 516 8 318 319 320 326 # CAM-CAP-CAM-HAT + 517 9 319 318 317 323 # CAP-CAM-CAO-HAT + 518 9 319 320 321 327 # CAP-CAM-CAO-HAT + 519 8 320 319 318 324 # CAM-CAP-CAM-HAT + 520 7 322 316 321 320 # CTT-CAT-CAO-CAM + 521 6 321 320 319 325 # CAO-CAM-CAP-HAT + 522 4 321 316 317 323 # CAO-CAT-CAO-HAT + 523 10 322 316 317 323 # CTT-CAT-CAO-HAT + 524 10 322 316 321 327 # CTT-CAT-CAO-HAT + 525 11 323 317 318 324 # HAT-CAO-CAM-HAT + 526 12 324 318 319 325 # HAT-CAM-CAP-HAT + 527 12 326 320 319 325 # HAT-CAM-CAP-HAT + 528 11 327 321 320 326 # HAT-CAO-CAM-HAT + 529 1 331 332 333 334 # CAT-CAO-CAM-CAP + 530 2 331 332 333 339 # CAT-CAO-CAM-HAT + 531 1 331 336 335 334 # CAT-CAO-CAM-CAP + 532 2 331 336 335 341 # CAT-CAO-CAM-HAT + 533 3 332 331 336 335 # CAO-CAT-CAO-CAM + 534 4 332 331 336 342 # CAO-CAT-CAO-HAT + 535 5 332 333 334 335 # CAO-CAM-CAP-CAM + 536 6 332 333 334 340 # CAO-CAM-CAP-HAT + 537 7 337 331 332 333 # CTT-CAT-CAO-CAM + 538 3 336 331 332 333 # CAO-CAT-CAO-CAM + 539 5 336 335 334 333 # CAO-CAM-CAP-CAM + 540 8 333 334 335 341 # CAM-CAP-CAM-HAT + 541 9 334 333 332 338 # CAP-CAM-CAO-HAT + 542 9 334 335 336 342 # CAP-CAM-CAO-HAT + 543 8 335 334 333 339 # CAM-CAP-CAM-HAT + 544 7 337 331 336 335 # CTT-CAT-CAO-CAM + 545 6 336 335 334 340 # CAO-CAM-CAP-HAT + 546 4 336 331 332 338 # CAO-CAT-CAO-HAT + 547 10 337 331 332 338 # CTT-CAT-CAO-HAT + 548 10 337 331 336 342 # CTT-CAT-CAO-HAT + 549 11 338 332 333 339 # HAT-CAO-CAM-HAT + 550 12 339 333 334 340 # HAT-CAM-CAP-HAT + 551 12 341 335 334 340 # HAT-CAM-CAP-HAT + 552 11 342 336 335 341 # HAT-CAO-CAM-HAT + 553 1 346 347 348 349 # CAT-CAO-CAM-CAP + 554 2 346 347 348 354 # CAT-CAO-CAM-HAT + 555 1 346 351 350 349 # CAT-CAO-CAM-CAP + 556 2 346 351 350 356 # CAT-CAO-CAM-HAT + 557 3 347 346 351 350 # CAO-CAT-CAO-CAM + 558 4 347 346 351 357 # CAO-CAT-CAO-HAT + 559 5 347 348 349 350 # CAO-CAM-CAP-CAM + 560 6 347 348 349 355 # CAO-CAM-CAP-HAT + 561 7 352 346 347 348 # CTT-CAT-CAO-CAM + 562 3 351 346 347 348 # CAO-CAT-CAO-CAM + 563 5 351 350 349 348 # CAO-CAM-CAP-CAM + 564 8 348 349 350 356 # CAM-CAP-CAM-HAT + 565 9 349 348 347 353 # CAP-CAM-CAO-HAT + 566 9 349 350 351 357 # CAP-CAM-CAO-HAT + 567 8 350 349 348 354 # CAM-CAP-CAM-HAT + 568 7 352 346 351 350 # CTT-CAT-CAO-CAM + 569 6 351 350 349 355 # CAO-CAM-CAP-HAT + 570 4 351 346 347 353 # CAO-CAT-CAO-HAT + 571 10 352 346 347 353 # CTT-CAT-CAO-HAT + 572 10 352 346 351 357 # CTT-CAT-CAO-HAT + 573 11 353 347 348 354 # HAT-CAO-CAM-HAT + 574 12 354 348 349 355 # HAT-CAM-CAP-HAT + 575 12 356 350 349 355 # HAT-CAM-CAP-HAT + 576 11 357 351 350 356 # HAT-CAO-CAM-HAT + 577 1 361 362 363 364 # CAT-CAO-CAM-CAP + 578 2 361 362 363 369 # CAT-CAO-CAM-HAT + 579 1 361 366 365 364 # CAT-CAO-CAM-CAP + 580 2 361 366 365 371 # CAT-CAO-CAM-HAT + 581 3 362 361 366 365 # CAO-CAT-CAO-CAM + 582 4 362 361 366 372 # CAO-CAT-CAO-HAT + 583 5 362 363 364 365 # CAO-CAM-CAP-CAM + 584 6 362 363 364 370 # CAO-CAM-CAP-HAT + 585 7 367 361 362 363 # CTT-CAT-CAO-CAM + 586 3 366 361 362 363 # CAO-CAT-CAO-CAM + 587 5 366 365 364 363 # CAO-CAM-CAP-CAM + 588 8 363 364 365 371 # CAM-CAP-CAM-HAT + 589 9 364 363 362 368 # CAP-CAM-CAO-HAT + 590 9 364 365 366 372 # CAP-CAM-CAO-HAT + 591 8 365 364 363 369 # CAM-CAP-CAM-HAT + 592 7 367 361 366 365 # CTT-CAT-CAO-CAM + 593 6 366 365 364 370 # CAO-CAM-CAP-HAT + 594 4 366 361 362 368 # CAO-CAT-CAO-HAT + 595 10 367 361 362 368 # CTT-CAT-CAO-HAT + 596 10 367 361 366 372 # CTT-CAT-CAO-HAT + 597 11 368 362 363 369 # HAT-CAO-CAM-HAT + 598 12 369 363 364 370 # HAT-CAM-CAP-HAT + 599 12 371 365 364 370 # HAT-CAM-CAP-HAT + 600 11 372 366 365 371 # HAT-CAO-CAM-HAT + 601 1 376 377 378 379 # CAT-CAO-CAM-CAP + 602 2 376 377 378 384 # CAT-CAO-CAM-HAT + 603 1 376 381 380 379 # CAT-CAO-CAM-CAP + 604 2 376 381 380 386 # CAT-CAO-CAM-HAT + 605 3 377 376 381 380 # CAO-CAT-CAO-CAM + 606 4 377 376 381 387 # CAO-CAT-CAO-HAT + 607 5 377 378 379 380 # CAO-CAM-CAP-CAM + 608 6 377 378 379 385 # CAO-CAM-CAP-HAT + 609 7 382 376 377 378 # CTT-CAT-CAO-CAM + 610 3 381 376 377 378 # CAO-CAT-CAO-CAM + 611 5 381 380 379 378 # CAO-CAM-CAP-CAM + 612 8 378 379 380 386 # CAM-CAP-CAM-HAT + 613 9 379 378 377 383 # CAP-CAM-CAO-HAT + 614 9 379 380 381 387 # CAP-CAM-CAO-HAT + 615 8 380 379 378 384 # CAM-CAP-CAM-HAT + 616 7 382 376 381 380 # CTT-CAT-CAO-CAM + 617 6 381 380 379 385 # CAO-CAM-CAP-HAT + 618 4 381 376 377 383 # CAO-CAT-CAO-HAT + 619 10 382 376 377 383 # CTT-CAT-CAO-HAT + 620 10 382 376 381 387 # CTT-CAT-CAO-HAT + 621 11 383 377 378 384 # HAT-CAO-CAM-HAT + 622 12 384 378 379 385 # HAT-CAM-CAP-HAT + 623 12 386 380 379 385 # HAT-CAM-CAP-HAT + 624 11 387 381 380 386 # HAT-CAO-CAM-HAT + 625 1 391 392 393 394 # CAT-CAO-CAM-CAP + 626 2 391 392 393 399 # CAT-CAO-CAM-HAT + 627 1 391 396 395 394 # CAT-CAO-CAM-CAP + 628 2 391 396 395 401 # CAT-CAO-CAM-HAT + 629 3 392 391 396 395 # CAO-CAT-CAO-CAM + 630 4 392 391 396 402 # CAO-CAT-CAO-HAT + 631 5 392 393 394 395 # CAO-CAM-CAP-CAM + 632 6 392 393 394 400 # CAO-CAM-CAP-HAT + 633 7 397 391 392 393 # CTT-CAT-CAO-CAM + 634 3 396 391 392 393 # CAO-CAT-CAO-CAM + 635 5 396 395 394 393 # CAO-CAM-CAP-CAM + 636 8 393 394 395 401 # CAM-CAP-CAM-HAT + 637 9 394 393 392 398 # CAP-CAM-CAO-HAT + 638 9 394 395 396 402 # CAP-CAM-CAO-HAT + 639 8 395 394 393 399 # CAM-CAP-CAM-HAT + 640 7 397 391 396 395 # CTT-CAT-CAO-CAM + 641 6 396 395 394 400 # CAO-CAM-CAP-HAT + 642 4 396 391 392 398 # CAO-CAT-CAO-HAT + 643 10 397 391 392 398 # CTT-CAT-CAO-HAT + 644 10 397 391 396 402 # CTT-CAT-CAO-HAT + 645 11 398 392 393 399 # HAT-CAO-CAM-HAT + 646 12 399 393 394 400 # HAT-CAM-CAP-HAT + 647 12 401 395 394 400 # HAT-CAM-CAP-HAT + 648 11 402 396 395 401 # HAT-CAO-CAM-HAT + 649 1 406 407 408 409 # CAT-CAO-CAM-CAP + 650 2 406 407 408 414 # CAT-CAO-CAM-HAT + 651 1 406 411 410 409 # CAT-CAO-CAM-CAP + 652 2 406 411 410 416 # CAT-CAO-CAM-HAT + 653 3 407 406 411 410 # CAO-CAT-CAO-CAM + 654 4 407 406 411 417 # CAO-CAT-CAO-HAT + 655 5 407 408 409 410 # CAO-CAM-CAP-CAM + 656 6 407 408 409 415 # CAO-CAM-CAP-HAT + 657 7 412 406 407 408 # CTT-CAT-CAO-CAM + 658 3 411 406 407 408 # CAO-CAT-CAO-CAM + 659 5 411 410 409 408 # CAO-CAM-CAP-CAM + 660 8 408 409 410 416 # CAM-CAP-CAM-HAT + 661 9 409 408 407 413 # CAP-CAM-CAO-HAT + 662 9 409 410 411 417 # CAP-CAM-CAO-HAT + 663 8 410 409 408 414 # CAM-CAP-CAM-HAT + 664 7 412 406 411 410 # CTT-CAT-CAO-CAM + 665 6 411 410 409 415 # CAO-CAM-CAP-HAT + 666 4 411 406 407 413 # CAO-CAT-CAO-HAT + 667 10 412 406 407 413 # CTT-CAT-CAO-HAT + 668 10 412 406 411 417 # CTT-CAT-CAO-HAT + 669 11 413 407 408 414 # HAT-CAO-CAM-HAT + 670 12 414 408 409 415 # HAT-CAM-CAP-HAT + 671 12 416 410 409 415 # HAT-CAM-CAP-HAT + 672 11 417 411 410 416 # HAT-CAO-CAM-HAT + 673 1 421 422 423 424 # CAT-CAO-CAM-CAP + 674 2 421 422 423 429 # CAT-CAO-CAM-HAT + 675 1 421 426 425 424 # CAT-CAO-CAM-CAP + 676 2 421 426 425 431 # CAT-CAO-CAM-HAT + 677 3 422 421 426 425 # CAO-CAT-CAO-CAM + 678 4 422 421 426 432 # CAO-CAT-CAO-HAT + 679 5 422 423 424 425 # CAO-CAM-CAP-CAM + 680 6 422 423 424 430 # CAO-CAM-CAP-HAT + 681 7 427 421 422 423 # CTT-CAT-CAO-CAM + 682 3 426 421 422 423 # CAO-CAT-CAO-CAM + 683 5 426 425 424 423 # CAO-CAM-CAP-CAM + 684 8 423 424 425 431 # CAM-CAP-CAM-HAT + 685 9 424 423 422 428 # CAP-CAM-CAO-HAT + 686 9 424 425 426 432 # CAP-CAM-CAO-HAT + 687 8 425 424 423 429 # CAM-CAP-CAM-HAT + 688 7 427 421 426 425 # CTT-CAT-CAO-CAM + 689 6 426 425 424 430 # CAO-CAM-CAP-HAT + 690 4 426 421 422 428 # CAO-CAT-CAO-HAT + 691 10 427 421 422 428 # CTT-CAT-CAO-HAT + 692 10 427 421 426 432 # CTT-CAT-CAO-HAT + 693 11 428 422 423 429 # HAT-CAO-CAM-HAT + 694 12 429 423 424 430 # HAT-CAM-CAP-HAT + 695 12 431 425 424 430 # HAT-CAM-CAP-HAT + 696 11 432 426 425 431 # HAT-CAO-CAM-HAT + 697 1 436 437 438 439 # CAT-CAO-CAM-CAP + 698 2 436 437 438 444 # CAT-CAO-CAM-HAT + 699 1 436 441 440 439 # CAT-CAO-CAM-CAP + 700 2 436 441 440 446 # CAT-CAO-CAM-HAT + 701 3 437 436 441 440 # CAO-CAT-CAO-CAM + 702 4 437 436 441 447 # CAO-CAT-CAO-HAT + 703 5 437 438 439 440 # CAO-CAM-CAP-CAM + 704 6 437 438 439 445 # CAO-CAM-CAP-HAT + 705 7 442 436 437 438 # CTT-CAT-CAO-CAM + 706 3 441 436 437 438 # CAO-CAT-CAO-CAM + 707 5 441 440 439 438 # CAO-CAM-CAP-CAM + 708 8 438 439 440 446 # CAM-CAP-CAM-HAT + 709 9 439 438 437 443 # CAP-CAM-CAO-HAT + 710 9 439 440 441 447 # CAP-CAM-CAO-HAT + 711 8 440 439 438 444 # CAM-CAP-CAM-HAT + 712 7 442 436 441 440 # CTT-CAT-CAO-CAM + 713 6 441 440 439 445 # CAO-CAM-CAP-HAT + 714 4 441 436 437 443 # CAO-CAT-CAO-HAT + 715 10 442 436 437 443 # CTT-CAT-CAO-HAT + 716 10 442 436 441 447 # CTT-CAT-CAO-HAT + 717 11 443 437 438 444 # HAT-CAO-CAM-HAT + 718 12 444 438 439 445 # HAT-CAM-CAP-HAT + 719 12 446 440 439 445 # HAT-CAM-CAP-HAT + 720 11 447 441 440 446 # HAT-CAO-CAM-HAT + 721 1 451 452 453 454 # CAT-CAO-CAM-CAP + 722 2 451 452 453 459 # CAT-CAO-CAM-HAT + 723 1 451 456 455 454 # CAT-CAO-CAM-CAP + 724 2 451 456 455 461 # CAT-CAO-CAM-HAT + 725 3 452 451 456 455 # CAO-CAT-CAO-CAM + 726 4 452 451 456 462 # CAO-CAT-CAO-HAT + 727 5 452 453 454 455 # CAO-CAM-CAP-CAM + 728 6 452 453 454 460 # CAO-CAM-CAP-HAT + 729 7 457 451 452 453 # CTT-CAT-CAO-CAM + 730 3 456 451 452 453 # CAO-CAT-CAO-CAM + 731 5 456 455 454 453 # CAO-CAM-CAP-CAM + 732 8 453 454 455 461 # CAM-CAP-CAM-HAT + 733 9 454 453 452 458 # CAP-CAM-CAO-HAT + 734 9 454 455 456 462 # CAP-CAM-CAO-HAT + 735 8 455 454 453 459 # CAM-CAP-CAM-HAT + 736 7 457 451 456 455 # CTT-CAT-CAO-CAM + 737 6 456 455 454 460 # CAO-CAM-CAP-HAT + 738 4 456 451 452 458 # CAO-CAT-CAO-HAT + 739 10 457 451 452 458 # CTT-CAT-CAO-HAT + 740 10 457 451 456 462 # CTT-CAT-CAO-HAT + 741 11 458 452 453 459 # HAT-CAO-CAM-HAT + 742 12 459 453 454 460 # HAT-CAM-CAP-HAT + 743 12 461 455 454 460 # HAT-CAM-CAP-HAT + 744 11 462 456 455 461 # HAT-CAO-CAM-HAT + 745 1 466 467 468 469 # CAT-CAO-CAM-CAP + 746 2 466 467 468 474 # CAT-CAO-CAM-HAT + 747 1 466 471 470 469 # CAT-CAO-CAM-CAP + 748 2 466 471 470 476 # CAT-CAO-CAM-HAT + 749 3 467 466 471 470 # CAO-CAT-CAO-CAM + 750 4 467 466 471 477 # CAO-CAT-CAO-HAT + 751 5 467 468 469 470 # CAO-CAM-CAP-CAM + 752 6 467 468 469 475 # CAO-CAM-CAP-HAT + 753 7 472 466 467 468 # CTT-CAT-CAO-CAM + 754 3 471 466 467 468 # CAO-CAT-CAO-CAM + 755 5 471 470 469 468 # CAO-CAM-CAP-CAM + 756 8 468 469 470 476 # CAM-CAP-CAM-HAT + 757 9 469 468 467 473 # CAP-CAM-CAO-HAT + 758 9 469 470 471 477 # CAP-CAM-CAO-HAT + 759 8 470 469 468 474 # CAM-CAP-CAM-HAT + 760 7 472 466 471 470 # CTT-CAT-CAO-CAM + 761 6 471 470 469 475 # CAO-CAM-CAP-HAT + 762 4 471 466 467 473 # CAO-CAT-CAO-HAT + 763 10 472 466 467 473 # CTT-CAT-CAO-HAT + 764 10 472 466 471 477 # CTT-CAT-CAO-HAT + 765 11 473 467 468 474 # HAT-CAO-CAM-HAT + 766 12 474 468 469 475 # HAT-CAM-CAP-HAT + 767 12 476 470 469 475 # HAT-CAM-CAP-HAT + 768 11 477 471 470 476 # HAT-CAO-CAM-HAT + 769 1 481 482 483 484 # CAT-CAO-CAM-CAP + 770 2 481 482 483 489 # CAT-CAO-CAM-HAT + 771 1 481 486 485 484 # CAT-CAO-CAM-CAP + 772 2 481 486 485 491 # CAT-CAO-CAM-HAT + 773 3 482 481 486 485 # CAO-CAT-CAO-CAM + 774 4 482 481 486 492 # CAO-CAT-CAO-HAT + 775 5 482 483 484 485 # CAO-CAM-CAP-CAM + 776 6 482 483 484 490 # CAO-CAM-CAP-HAT + 777 7 487 481 482 483 # CTT-CAT-CAO-CAM + 778 3 486 481 482 483 # CAO-CAT-CAO-CAM + 779 5 486 485 484 483 # CAO-CAM-CAP-CAM + 780 8 483 484 485 491 # CAM-CAP-CAM-HAT + 781 9 484 483 482 488 # CAP-CAM-CAO-HAT + 782 9 484 485 486 492 # CAP-CAM-CAO-HAT + 783 8 485 484 483 489 # CAM-CAP-CAM-HAT + 784 7 487 481 486 485 # CTT-CAT-CAO-CAM + 785 6 486 485 484 490 # CAO-CAM-CAP-HAT + 786 4 486 481 482 488 # CAO-CAT-CAO-HAT + 787 10 487 481 482 488 # CTT-CAT-CAO-HAT + 788 10 487 481 486 492 # CTT-CAT-CAO-HAT + 789 11 488 482 483 489 # HAT-CAO-CAM-HAT + 790 12 489 483 484 490 # HAT-CAM-CAP-HAT + 791 12 491 485 484 490 # HAT-CAM-CAP-HAT + 792 11 492 486 485 491 # HAT-CAO-CAM-HAT + 793 1 496 497 498 499 # CAT-CAO-CAM-CAP + 794 2 496 497 498 504 # CAT-CAO-CAM-HAT + 795 1 496 501 500 499 # CAT-CAO-CAM-CAP + 796 2 496 501 500 506 # CAT-CAO-CAM-HAT + 797 3 497 496 501 500 # CAO-CAT-CAO-CAM + 798 4 497 496 501 507 # CAO-CAT-CAO-HAT + 799 5 497 498 499 500 # CAO-CAM-CAP-CAM + 800 6 497 498 499 505 # CAO-CAM-CAP-HAT + 801 7 502 496 497 498 # CTT-CAT-CAO-CAM + 802 3 501 496 497 498 # CAO-CAT-CAO-CAM + 803 5 501 500 499 498 # CAO-CAM-CAP-CAM + 804 8 498 499 500 506 # CAM-CAP-CAM-HAT + 805 9 499 498 497 503 # CAP-CAM-CAO-HAT + 806 9 499 500 501 507 # CAP-CAM-CAO-HAT + 807 8 500 499 498 504 # CAM-CAP-CAM-HAT + 808 7 502 496 501 500 # CTT-CAT-CAO-CAM + 809 6 501 500 499 505 # CAO-CAM-CAP-HAT + 810 4 501 496 497 503 # CAO-CAT-CAO-HAT + 811 10 502 496 497 503 # CTT-CAT-CAO-HAT + 812 10 502 496 501 507 # CTT-CAT-CAO-HAT + 813 11 503 497 498 504 # HAT-CAO-CAM-HAT + 814 12 504 498 499 505 # HAT-CAM-CAP-HAT + 815 12 506 500 499 505 # HAT-CAM-CAP-HAT + 816 11 507 501 500 506 # HAT-CAO-CAM-HAT + 817 1 511 512 513 514 # CAT-CAO-CAM-CAP + 818 2 511 512 513 519 # CAT-CAO-CAM-HAT + 819 1 511 516 515 514 # CAT-CAO-CAM-CAP + 820 2 511 516 515 521 # CAT-CAO-CAM-HAT + 821 3 512 511 516 515 # CAO-CAT-CAO-CAM + 822 4 512 511 516 522 # CAO-CAT-CAO-HAT + 823 5 512 513 514 515 # CAO-CAM-CAP-CAM + 824 6 512 513 514 520 # CAO-CAM-CAP-HAT + 825 7 517 511 512 513 # CTT-CAT-CAO-CAM + 826 3 516 511 512 513 # CAO-CAT-CAO-CAM + 827 5 516 515 514 513 # CAO-CAM-CAP-CAM + 828 8 513 514 515 521 # CAM-CAP-CAM-HAT + 829 9 514 513 512 518 # CAP-CAM-CAO-HAT + 830 9 514 515 516 522 # CAP-CAM-CAO-HAT + 831 8 515 514 513 519 # CAM-CAP-CAM-HAT + 832 7 517 511 516 515 # CTT-CAT-CAO-CAM + 833 6 516 515 514 520 # CAO-CAM-CAP-HAT + 834 4 516 511 512 518 # CAO-CAT-CAO-HAT + 835 10 517 511 512 518 # CTT-CAT-CAO-HAT + 836 10 517 511 516 522 # CTT-CAT-CAO-HAT + 837 11 518 512 513 519 # HAT-CAO-CAM-HAT + 838 12 519 513 514 520 # HAT-CAM-CAP-HAT + 839 12 521 515 514 520 # HAT-CAM-CAP-HAT + 840 11 522 516 515 521 # HAT-CAO-CAM-HAT + 841 1 526 527 528 529 # CAT-CAO-CAM-CAP + 842 2 526 527 528 534 # CAT-CAO-CAM-HAT + 843 1 526 531 530 529 # CAT-CAO-CAM-CAP + 844 2 526 531 530 536 # CAT-CAO-CAM-HAT + 845 3 527 526 531 530 # CAO-CAT-CAO-CAM + 846 4 527 526 531 537 # CAO-CAT-CAO-HAT + 847 5 527 528 529 530 # CAO-CAM-CAP-CAM + 848 6 527 528 529 535 # CAO-CAM-CAP-HAT + 849 7 532 526 527 528 # CTT-CAT-CAO-CAM + 850 3 531 526 527 528 # CAO-CAT-CAO-CAM + 851 5 531 530 529 528 # CAO-CAM-CAP-CAM + 852 8 528 529 530 536 # CAM-CAP-CAM-HAT + 853 9 529 528 527 533 # CAP-CAM-CAO-HAT + 854 9 529 530 531 537 # CAP-CAM-CAO-HAT + 855 8 530 529 528 534 # CAM-CAP-CAM-HAT + 856 7 532 526 531 530 # CTT-CAT-CAO-CAM + 857 6 531 530 529 535 # CAO-CAM-CAP-HAT + 858 4 531 526 527 533 # CAO-CAT-CAO-HAT + 859 10 532 526 527 533 # CTT-CAT-CAO-HAT + 860 10 532 526 531 537 # CTT-CAT-CAO-HAT + 861 11 533 527 528 534 # HAT-CAO-CAM-HAT + 862 12 534 528 529 535 # HAT-CAM-CAP-HAT + 863 12 536 530 529 535 # HAT-CAM-CAP-HAT + 864 11 537 531 530 536 # HAT-CAO-CAM-HAT + 865 1 541 542 543 544 # CAT-CAO-CAM-CAP + 866 2 541 542 543 549 # CAT-CAO-CAM-HAT + 867 1 541 546 545 544 # CAT-CAO-CAM-CAP + 868 2 541 546 545 551 # CAT-CAO-CAM-HAT + 869 3 542 541 546 545 # CAO-CAT-CAO-CAM + 870 4 542 541 546 552 # CAO-CAT-CAO-HAT + 871 5 542 543 544 545 # CAO-CAM-CAP-CAM + 872 6 542 543 544 550 # CAO-CAM-CAP-HAT + 873 7 547 541 542 543 # CTT-CAT-CAO-CAM + 874 3 546 541 542 543 # CAO-CAT-CAO-CAM + 875 5 546 545 544 543 # CAO-CAM-CAP-CAM + 876 8 543 544 545 551 # CAM-CAP-CAM-HAT + 877 9 544 543 542 548 # CAP-CAM-CAO-HAT + 878 9 544 545 546 552 # CAP-CAM-CAO-HAT + 879 8 545 544 543 549 # CAM-CAP-CAM-HAT + 880 7 547 541 546 545 # CTT-CAT-CAO-CAM + 881 6 546 545 544 550 # CAO-CAM-CAP-HAT + 882 4 546 541 542 548 # CAO-CAT-CAO-HAT + 883 10 547 541 542 548 # CTT-CAT-CAO-HAT + 884 10 547 541 546 552 # CTT-CAT-CAO-HAT + 885 11 548 542 543 549 # HAT-CAO-CAM-HAT + 886 12 549 543 544 550 # HAT-CAM-CAP-HAT + 887 12 551 545 544 550 # HAT-CAM-CAP-HAT + 888 11 552 546 545 551 # HAT-CAO-CAM-HAT + 889 1 556 557 558 559 # CAT-CAO-CAM-CAP + 890 2 556 557 558 564 # CAT-CAO-CAM-HAT + 891 1 556 561 560 559 # CAT-CAO-CAM-CAP + 892 2 556 561 560 566 # CAT-CAO-CAM-HAT + 893 3 557 556 561 560 # CAO-CAT-CAO-CAM + 894 4 557 556 561 567 # CAO-CAT-CAO-HAT + 895 5 557 558 559 560 # CAO-CAM-CAP-CAM + 896 6 557 558 559 565 # CAO-CAM-CAP-HAT + 897 7 562 556 557 558 # CTT-CAT-CAO-CAM + 898 3 561 556 557 558 # CAO-CAT-CAO-CAM + 899 5 561 560 559 558 # CAO-CAM-CAP-CAM + 900 8 558 559 560 566 # CAM-CAP-CAM-HAT + 901 9 559 558 557 563 # CAP-CAM-CAO-HAT + 902 9 559 560 561 567 # CAP-CAM-CAO-HAT + 903 8 560 559 558 564 # CAM-CAP-CAM-HAT + 904 7 562 556 561 560 # CTT-CAT-CAO-CAM + 905 6 561 560 559 565 # CAO-CAM-CAP-HAT + 906 4 561 556 557 563 # CAO-CAT-CAO-HAT + 907 10 562 556 557 563 # CTT-CAT-CAO-HAT + 908 10 562 556 561 567 # CTT-CAT-CAO-HAT + 909 11 563 557 558 564 # HAT-CAO-CAM-HAT + 910 12 564 558 559 565 # HAT-CAM-CAP-HAT + 911 12 566 560 559 565 # HAT-CAM-CAP-HAT + 912 11 567 561 560 566 # HAT-CAO-CAM-HAT + 913 1 571 572 573 574 # CAT-CAO-CAM-CAP + 914 2 571 572 573 579 # CAT-CAO-CAM-HAT + 915 1 571 576 575 574 # CAT-CAO-CAM-CAP + 916 2 571 576 575 581 # CAT-CAO-CAM-HAT + 917 3 572 571 576 575 # CAO-CAT-CAO-CAM + 918 4 572 571 576 582 # CAO-CAT-CAO-HAT + 919 5 572 573 574 575 # CAO-CAM-CAP-CAM + 920 6 572 573 574 580 # CAO-CAM-CAP-HAT + 921 7 577 571 572 573 # CTT-CAT-CAO-CAM + 922 3 576 571 572 573 # CAO-CAT-CAO-CAM + 923 5 576 575 574 573 # CAO-CAM-CAP-CAM + 924 8 573 574 575 581 # CAM-CAP-CAM-HAT + 925 9 574 573 572 578 # CAP-CAM-CAO-HAT + 926 9 574 575 576 582 # CAP-CAM-CAO-HAT + 927 8 575 574 573 579 # CAM-CAP-CAM-HAT + 928 7 577 571 576 575 # CTT-CAT-CAO-CAM + 929 6 576 575 574 580 # CAO-CAM-CAP-HAT + 930 4 576 571 572 578 # CAO-CAT-CAO-HAT + 931 10 577 571 572 578 # CTT-CAT-CAO-HAT + 932 10 577 571 576 582 # CTT-CAT-CAO-HAT + 933 11 578 572 573 579 # HAT-CAO-CAM-HAT + 934 12 579 573 574 580 # HAT-CAM-CAP-HAT + 935 12 581 575 574 580 # HAT-CAM-CAP-HAT + 936 11 582 576 575 581 # HAT-CAO-CAM-HAT + 937 1 586 587 588 589 # CAT-CAO-CAM-CAP + 938 2 586 587 588 594 # CAT-CAO-CAM-HAT + 939 1 586 591 590 589 # CAT-CAO-CAM-CAP + 940 2 586 591 590 596 # CAT-CAO-CAM-HAT + 941 3 587 586 591 590 # CAO-CAT-CAO-CAM + 942 4 587 586 591 597 # CAO-CAT-CAO-HAT + 943 5 587 588 589 590 # CAO-CAM-CAP-CAM + 944 6 587 588 589 595 # CAO-CAM-CAP-HAT + 945 7 592 586 587 588 # CTT-CAT-CAO-CAM + 946 3 591 586 587 588 # CAO-CAT-CAO-CAM + 947 5 591 590 589 588 # CAO-CAM-CAP-CAM + 948 8 588 589 590 596 # CAM-CAP-CAM-HAT + 949 9 589 588 587 593 # CAP-CAM-CAO-HAT + 950 9 589 590 591 597 # CAP-CAM-CAO-HAT + 951 8 590 589 588 594 # CAM-CAP-CAM-HAT + 952 7 592 586 591 590 # CTT-CAT-CAO-CAM + 953 6 591 590 589 595 # CAO-CAM-CAP-HAT + 954 4 591 586 587 593 # CAO-CAT-CAO-HAT + 955 10 592 586 587 593 # CTT-CAT-CAO-HAT + 956 10 592 586 591 597 # CTT-CAT-CAO-HAT + 957 11 593 587 588 594 # HAT-CAO-CAM-HAT + 958 12 594 588 589 595 # HAT-CAM-CAP-HAT + 959 12 596 590 589 595 # HAT-CAM-CAP-HAT + 960 11 597 591 590 596 # HAT-CAO-CAM-HAT + 961 1 601 602 603 604 # CAT-CAO-CAM-CAP + 962 2 601 602 603 609 # CAT-CAO-CAM-HAT + 963 1 601 606 605 604 # CAT-CAO-CAM-CAP + 964 2 601 606 605 611 # CAT-CAO-CAM-HAT + 965 3 602 601 606 605 # CAO-CAT-CAO-CAM + 966 4 602 601 606 612 # CAO-CAT-CAO-HAT + 967 5 602 603 604 605 # CAO-CAM-CAP-CAM + 968 6 602 603 604 610 # CAO-CAM-CAP-HAT + 969 7 607 601 602 603 # CTT-CAT-CAO-CAM + 970 3 606 601 602 603 # CAO-CAT-CAO-CAM + 971 5 606 605 604 603 # CAO-CAM-CAP-CAM + 972 8 603 604 605 611 # CAM-CAP-CAM-HAT + 973 9 604 603 602 608 # CAP-CAM-CAO-HAT + 974 9 604 605 606 612 # CAP-CAM-CAO-HAT + 975 8 605 604 603 609 # CAM-CAP-CAM-HAT + 976 7 607 601 606 605 # CTT-CAT-CAO-CAM + 977 6 606 605 604 610 # CAO-CAM-CAP-HAT + 978 4 606 601 602 608 # CAO-CAT-CAO-HAT + 979 10 607 601 602 608 # CTT-CAT-CAO-HAT + 980 10 607 601 606 612 # CTT-CAT-CAO-HAT + 981 11 608 602 603 609 # HAT-CAO-CAM-HAT + 982 12 609 603 604 610 # HAT-CAM-CAP-HAT + 983 12 611 605 604 610 # HAT-CAM-CAP-HAT + 984 11 612 606 605 611 # HAT-CAO-CAM-HAT + 985 1 616 617 618 619 # CAT-CAO-CAM-CAP + 986 2 616 617 618 624 # CAT-CAO-CAM-HAT + 987 1 616 621 620 619 # CAT-CAO-CAM-CAP + 988 2 616 621 620 626 # CAT-CAO-CAM-HAT + 989 3 617 616 621 620 # CAO-CAT-CAO-CAM + 990 4 617 616 621 627 # CAO-CAT-CAO-HAT + 991 5 617 618 619 620 # CAO-CAM-CAP-CAM + 992 6 617 618 619 625 # CAO-CAM-CAP-HAT + 993 7 622 616 617 618 # CTT-CAT-CAO-CAM + 994 3 621 616 617 618 # CAO-CAT-CAO-CAM + 995 5 621 620 619 618 # CAO-CAM-CAP-CAM + 996 8 618 619 620 626 # CAM-CAP-CAM-HAT + 997 9 619 618 617 623 # CAP-CAM-CAO-HAT + 998 9 619 620 621 627 # CAP-CAM-CAO-HAT + 999 8 620 619 618 624 # CAM-CAP-CAM-HAT + 1000 7 622 616 621 620 # CTT-CAT-CAO-CAM + 1001 6 621 620 619 625 # CAO-CAM-CAP-HAT + 1002 4 621 616 617 623 # CAO-CAT-CAO-HAT + 1003 10 622 616 617 623 # CTT-CAT-CAO-HAT + 1004 10 622 616 621 627 # CTT-CAT-CAO-HAT + 1005 11 623 617 618 624 # HAT-CAO-CAM-HAT + 1006 12 624 618 619 625 # HAT-CAM-CAP-HAT + 1007 12 626 620 619 625 # HAT-CAM-CAP-HAT + 1008 11 627 621 620 626 # HAT-CAO-CAM-HAT + 1009 1 631 632 633 634 # CAT-CAO-CAM-CAP + 1010 2 631 632 633 639 # CAT-CAO-CAM-HAT + 1011 1 631 636 635 634 # CAT-CAO-CAM-CAP + 1012 2 631 636 635 641 # CAT-CAO-CAM-HAT + 1013 3 632 631 636 635 # CAO-CAT-CAO-CAM + 1014 4 632 631 636 642 # CAO-CAT-CAO-HAT + 1015 5 632 633 634 635 # CAO-CAM-CAP-CAM + 1016 6 632 633 634 640 # CAO-CAM-CAP-HAT + 1017 7 637 631 632 633 # CTT-CAT-CAO-CAM + 1018 3 636 631 632 633 # CAO-CAT-CAO-CAM + 1019 5 636 635 634 633 # CAO-CAM-CAP-CAM + 1020 8 633 634 635 641 # CAM-CAP-CAM-HAT + 1021 9 634 633 632 638 # CAP-CAM-CAO-HAT + 1022 9 634 635 636 642 # CAP-CAM-CAO-HAT + 1023 8 635 634 633 639 # CAM-CAP-CAM-HAT + 1024 7 637 631 636 635 # CTT-CAT-CAO-CAM + 1025 6 636 635 634 640 # CAO-CAM-CAP-HAT + 1026 4 636 631 632 638 # CAO-CAT-CAO-HAT + 1027 10 637 631 632 638 # CTT-CAT-CAO-HAT + 1028 10 637 631 636 642 # CTT-CAT-CAO-HAT + 1029 11 638 632 633 639 # HAT-CAO-CAM-HAT + 1030 12 639 633 634 640 # HAT-CAM-CAP-HAT + 1031 12 641 635 634 640 # HAT-CAM-CAP-HAT + 1032 11 642 636 635 641 # HAT-CAO-CAM-HAT + 1033 1 646 647 648 649 # CAT-CAO-CAM-CAP + 1034 2 646 647 648 654 # CAT-CAO-CAM-HAT + 1035 1 646 651 650 649 # CAT-CAO-CAM-CAP + 1036 2 646 651 650 656 # CAT-CAO-CAM-HAT + 1037 3 647 646 651 650 # CAO-CAT-CAO-CAM + 1038 4 647 646 651 657 # CAO-CAT-CAO-HAT + 1039 5 647 648 649 650 # CAO-CAM-CAP-CAM + 1040 6 647 648 649 655 # CAO-CAM-CAP-HAT + 1041 7 652 646 647 648 # CTT-CAT-CAO-CAM + 1042 3 651 646 647 648 # CAO-CAT-CAO-CAM + 1043 5 651 650 649 648 # CAO-CAM-CAP-CAM + 1044 8 648 649 650 656 # CAM-CAP-CAM-HAT + 1045 9 649 648 647 653 # CAP-CAM-CAO-HAT + 1046 9 649 650 651 657 # CAP-CAM-CAO-HAT + 1047 8 650 649 648 654 # CAM-CAP-CAM-HAT + 1048 7 652 646 651 650 # CTT-CAT-CAO-CAM + 1049 6 651 650 649 655 # CAO-CAM-CAP-HAT + 1050 4 651 646 647 653 # CAO-CAT-CAO-HAT + 1051 10 652 646 647 653 # CTT-CAT-CAO-HAT + 1052 10 652 646 651 657 # CTT-CAT-CAO-HAT + 1053 11 653 647 648 654 # HAT-CAO-CAM-HAT + 1054 12 654 648 649 655 # HAT-CAM-CAP-HAT + 1055 12 656 650 649 655 # HAT-CAM-CAP-HAT + 1056 11 657 651 650 656 # HAT-CAO-CAM-HAT + 1057 1 661 662 663 664 # CAT-CAO-CAM-CAP + 1058 2 661 662 663 669 # CAT-CAO-CAM-HAT + 1059 1 661 666 665 664 # CAT-CAO-CAM-CAP + 1060 2 661 666 665 671 # CAT-CAO-CAM-HAT + 1061 3 662 661 666 665 # CAO-CAT-CAO-CAM + 1062 4 662 661 666 672 # CAO-CAT-CAO-HAT + 1063 5 662 663 664 665 # CAO-CAM-CAP-CAM + 1064 6 662 663 664 670 # CAO-CAM-CAP-HAT + 1065 7 667 661 662 663 # CTT-CAT-CAO-CAM + 1066 3 666 661 662 663 # CAO-CAT-CAO-CAM + 1067 5 666 665 664 663 # CAO-CAM-CAP-CAM + 1068 8 663 664 665 671 # CAM-CAP-CAM-HAT + 1069 9 664 663 662 668 # CAP-CAM-CAO-HAT + 1070 9 664 665 666 672 # CAP-CAM-CAO-HAT + 1071 8 665 664 663 669 # CAM-CAP-CAM-HAT + 1072 7 667 661 666 665 # CTT-CAT-CAO-CAM + 1073 6 666 665 664 670 # CAO-CAM-CAP-HAT + 1074 4 666 661 662 668 # CAO-CAT-CAO-HAT + 1075 10 667 661 662 668 # CTT-CAT-CAO-HAT + 1076 10 667 661 666 672 # CTT-CAT-CAO-HAT + 1077 11 668 662 663 669 # HAT-CAO-CAM-HAT + 1078 12 669 663 664 670 # HAT-CAM-CAP-HAT + 1079 12 671 665 664 670 # HAT-CAM-CAP-HAT + 1080 11 672 666 665 671 # HAT-CAO-CAM-HAT + 1081 1 676 677 678 679 # CAT-CAO-CAM-CAP + 1082 2 676 677 678 684 # CAT-CAO-CAM-HAT + 1083 1 676 681 680 679 # CAT-CAO-CAM-CAP + 1084 2 676 681 680 686 # CAT-CAO-CAM-HAT + 1085 3 677 676 681 680 # CAO-CAT-CAO-CAM + 1086 4 677 676 681 687 # CAO-CAT-CAO-HAT + 1087 5 677 678 679 680 # CAO-CAM-CAP-CAM + 1088 6 677 678 679 685 # CAO-CAM-CAP-HAT + 1089 7 682 676 677 678 # CTT-CAT-CAO-CAM + 1090 3 681 676 677 678 # CAO-CAT-CAO-CAM + 1091 5 681 680 679 678 # CAO-CAM-CAP-CAM + 1092 8 678 679 680 686 # CAM-CAP-CAM-HAT + 1093 9 679 678 677 683 # CAP-CAM-CAO-HAT + 1094 9 679 680 681 687 # CAP-CAM-CAO-HAT + 1095 8 680 679 678 684 # CAM-CAP-CAM-HAT + 1096 7 682 676 681 680 # CTT-CAT-CAO-CAM + 1097 6 681 680 679 685 # CAO-CAM-CAP-HAT + 1098 4 681 676 677 683 # CAO-CAT-CAO-HAT + 1099 10 682 676 677 683 # CTT-CAT-CAO-HAT + 1100 10 682 676 681 687 # CTT-CAT-CAO-HAT + 1101 11 683 677 678 684 # HAT-CAO-CAM-HAT + 1102 12 684 678 679 685 # HAT-CAM-CAP-HAT + 1103 12 686 680 679 685 # HAT-CAM-CAP-HAT + 1104 11 687 681 680 686 # HAT-CAO-CAM-HAT + 1105 1 691 692 693 694 # CAT-CAO-CAM-CAP + 1106 2 691 692 693 699 # CAT-CAO-CAM-HAT + 1107 1 691 696 695 694 # CAT-CAO-CAM-CAP + 1108 2 691 696 695 701 # CAT-CAO-CAM-HAT + 1109 3 692 691 696 695 # CAO-CAT-CAO-CAM + 1110 4 692 691 696 702 # CAO-CAT-CAO-HAT + 1111 5 692 693 694 695 # CAO-CAM-CAP-CAM + 1112 6 692 693 694 700 # CAO-CAM-CAP-HAT + 1113 7 697 691 692 693 # CTT-CAT-CAO-CAM + 1114 3 696 691 692 693 # CAO-CAT-CAO-CAM + 1115 5 696 695 694 693 # CAO-CAM-CAP-CAM + 1116 8 693 694 695 701 # CAM-CAP-CAM-HAT + 1117 9 694 693 692 698 # CAP-CAM-CAO-HAT + 1118 9 694 695 696 702 # CAP-CAM-CAO-HAT + 1119 8 695 694 693 699 # CAM-CAP-CAM-HAT + 1120 7 697 691 696 695 # CTT-CAT-CAO-CAM + 1121 6 696 695 694 700 # CAO-CAM-CAP-HAT + 1122 4 696 691 692 698 # CAO-CAT-CAO-HAT + 1123 10 697 691 692 698 # CTT-CAT-CAO-HAT + 1124 10 697 691 696 702 # CTT-CAT-CAO-HAT + 1125 11 698 692 693 699 # HAT-CAO-CAM-HAT + 1126 12 699 693 694 700 # HAT-CAM-CAP-HAT + 1127 12 701 695 694 700 # HAT-CAM-CAP-HAT + 1128 11 702 696 695 701 # HAT-CAO-CAM-HAT + 1129 1 706 707 708 709 # CAT-CAO-CAM-CAP + 1130 2 706 707 708 714 # CAT-CAO-CAM-HAT + 1131 1 706 711 710 709 # CAT-CAO-CAM-CAP + 1132 2 706 711 710 716 # CAT-CAO-CAM-HAT + 1133 3 707 706 711 710 # CAO-CAT-CAO-CAM + 1134 4 707 706 711 717 # CAO-CAT-CAO-HAT + 1135 5 707 708 709 710 # CAO-CAM-CAP-CAM + 1136 6 707 708 709 715 # CAO-CAM-CAP-HAT + 1137 7 712 706 707 708 # CTT-CAT-CAO-CAM + 1138 3 711 706 707 708 # CAO-CAT-CAO-CAM + 1139 5 711 710 709 708 # CAO-CAM-CAP-CAM + 1140 8 708 709 710 716 # CAM-CAP-CAM-HAT + 1141 9 709 708 707 713 # CAP-CAM-CAO-HAT + 1142 9 709 710 711 717 # CAP-CAM-CAO-HAT + 1143 8 710 709 708 714 # CAM-CAP-CAM-HAT + 1144 7 712 706 711 710 # CTT-CAT-CAO-CAM + 1145 6 711 710 709 715 # CAO-CAM-CAP-HAT + 1146 4 711 706 707 713 # CAO-CAT-CAO-HAT + 1147 10 712 706 707 713 # CTT-CAT-CAO-HAT + 1148 10 712 706 711 717 # CTT-CAT-CAO-HAT + 1149 11 713 707 708 714 # HAT-CAO-CAM-HAT + 1150 12 714 708 709 715 # HAT-CAM-CAP-HAT + 1151 12 716 710 709 715 # HAT-CAM-CAP-HAT + 1152 11 717 711 710 716 # HAT-CAO-CAM-HAT + 1153 1 721 722 723 724 # CAT-CAO-CAM-CAP + 1154 2 721 722 723 729 # CAT-CAO-CAM-HAT + 1155 1 721 726 725 724 # CAT-CAO-CAM-CAP + 1156 2 721 726 725 731 # CAT-CAO-CAM-HAT + 1157 3 722 721 726 725 # CAO-CAT-CAO-CAM + 1158 4 722 721 726 732 # CAO-CAT-CAO-HAT + 1159 5 722 723 724 725 # CAO-CAM-CAP-CAM + 1160 6 722 723 724 730 # CAO-CAM-CAP-HAT + 1161 7 727 721 722 723 # CTT-CAT-CAO-CAM + 1162 3 726 721 722 723 # CAO-CAT-CAO-CAM + 1163 5 726 725 724 723 # CAO-CAM-CAP-CAM + 1164 8 723 724 725 731 # CAM-CAP-CAM-HAT + 1165 9 724 723 722 728 # CAP-CAM-CAO-HAT + 1166 9 724 725 726 732 # CAP-CAM-CAO-HAT + 1167 8 725 724 723 729 # CAM-CAP-CAM-HAT + 1168 7 727 721 726 725 # CTT-CAT-CAO-CAM + 1169 6 726 725 724 730 # CAO-CAM-CAP-HAT + 1170 4 726 721 722 728 # CAO-CAT-CAO-HAT + 1171 10 727 721 722 728 # CTT-CAT-CAO-HAT + 1172 10 727 721 726 732 # CTT-CAT-CAO-HAT + 1173 11 728 722 723 729 # HAT-CAO-CAM-HAT + 1174 12 729 723 724 730 # HAT-CAM-CAP-HAT + 1175 12 731 725 724 730 # HAT-CAM-CAP-HAT + 1176 11 732 726 725 731 # HAT-CAO-CAM-HAT + 1177 1 736 737 738 739 # CAT-CAO-CAM-CAP + 1178 2 736 737 738 744 # CAT-CAO-CAM-HAT + 1179 1 736 741 740 739 # CAT-CAO-CAM-CAP + 1180 2 736 741 740 746 # CAT-CAO-CAM-HAT + 1181 3 737 736 741 740 # CAO-CAT-CAO-CAM + 1182 4 737 736 741 747 # CAO-CAT-CAO-HAT + 1183 5 737 738 739 740 # CAO-CAM-CAP-CAM + 1184 6 737 738 739 745 # CAO-CAM-CAP-HAT + 1185 7 742 736 737 738 # CTT-CAT-CAO-CAM + 1186 3 741 736 737 738 # CAO-CAT-CAO-CAM + 1187 5 741 740 739 738 # CAO-CAM-CAP-CAM + 1188 8 738 739 740 746 # CAM-CAP-CAM-HAT + 1189 9 739 738 737 743 # CAP-CAM-CAO-HAT + 1190 9 739 740 741 747 # CAP-CAM-CAO-HAT + 1191 8 740 739 738 744 # CAM-CAP-CAM-HAT + 1192 7 742 736 741 740 # CTT-CAT-CAO-CAM + 1193 6 741 740 739 745 # CAO-CAM-CAP-HAT + 1194 4 741 736 737 743 # CAO-CAT-CAO-HAT + 1195 10 742 736 737 743 # CTT-CAT-CAO-HAT + 1196 10 742 736 741 747 # CTT-CAT-CAO-HAT + 1197 11 743 737 738 744 # HAT-CAO-CAM-HAT + 1198 12 744 738 739 745 # HAT-CAM-CAP-HAT + 1199 12 746 740 739 745 # HAT-CAM-CAP-HAT + 1200 11 747 741 740 746 # HAT-CAO-CAM-HAT + 1201 1 751 752 753 754 # CAT-CAO-CAM-CAP + 1202 2 751 752 753 759 # CAT-CAO-CAM-HAT + 1203 1 751 756 755 754 # CAT-CAO-CAM-CAP + 1204 2 751 756 755 761 # CAT-CAO-CAM-HAT + 1205 3 752 751 756 755 # CAO-CAT-CAO-CAM + 1206 4 752 751 756 762 # CAO-CAT-CAO-HAT + 1207 5 752 753 754 755 # CAO-CAM-CAP-CAM + 1208 6 752 753 754 760 # CAO-CAM-CAP-HAT + 1209 7 757 751 752 753 # CTT-CAT-CAO-CAM + 1210 3 756 751 752 753 # CAO-CAT-CAO-CAM + 1211 5 756 755 754 753 # CAO-CAM-CAP-CAM + 1212 8 753 754 755 761 # CAM-CAP-CAM-HAT + 1213 9 754 753 752 758 # CAP-CAM-CAO-HAT + 1214 9 754 755 756 762 # CAP-CAM-CAO-HAT + 1215 8 755 754 753 759 # CAM-CAP-CAM-HAT + 1216 7 757 751 756 755 # CTT-CAT-CAO-CAM + 1217 6 756 755 754 760 # CAO-CAM-CAP-HAT + 1218 4 756 751 752 758 # CAO-CAT-CAO-HAT + 1219 10 757 751 752 758 # CTT-CAT-CAO-HAT + 1220 10 757 751 756 762 # CTT-CAT-CAO-HAT + 1221 11 758 752 753 759 # HAT-CAO-CAM-HAT + 1222 12 759 753 754 760 # HAT-CAM-CAP-HAT + 1223 12 761 755 754 760 # HAT-CAM-CAP-HAT + 1224 11 762 756 755 761 # HAT-CAO-CAM-HAT + 1225 1 766 767 768 769 # CAT-CAO-CAM-CAP + 1226 2 766 767 768 774 # CAT-CAO-CAM-HAT + 1227 1 766 771 770 769 # CAT-CAO-CAM-CAP + 1228 2 766 771 770 776 # CAT-CAO-CAM-HAT + 1229 3 767 766 771 770 # CAO-CAT-CAO-CAM + 1230 4 767 766 771 777 # CAO-CAT-CAO-HAT + 1231 5 767 768 769 770 # CAO-CAM-CAP-CAM + 1232 6 767 768 769 775 # CAO-CAM-CAP-HAT + 1233 7 772 766 767 768 # CTT-CAT-CAO-CAM + 1234 3 771 766 767 768 # CAO-CAT-CAO-CAM + 1235 5 771 770 769 768 # CAO-CAM-CAP-CAM + 1236 8 768 769 770 776 # CAM-CAP-CAM-HAT + 1237 9 769 768 767 773 # CAP-CAM-CAO-HAT + 1238 9 769 770 771 777 # CAP-CAM-CAO-HAT + 1239 8 770 769 768 774 # CAM-CAP-CAM-HAT + 1240 7 772 766 771 770 # CTT-CAT-CAO-CAM + 1241 6 771 770 769 775 # CAO-CAM-CAP-HAT + 1242 4 771 766 767 773 # CAO-CAT-CAO-HAT + 1243 10 772 766 767 773 # CTT-CAT-CAO-HAT + 1244 10 772 766 771 777 # CTT-CAT-CAO-HAT + 1245 11 773 767 768 774 # HAT-CAO-CAM-HAT + 1246 12 774 768 769 775 # HAT-CAM-CAP-HAT + 1247 12 776 770 769 775 # HAT-CAM-CAP-HAT + 1248 11 777 771 770 776 # HAT-CAO-CAM-HAT + 1249 1 781 782 783 784 # CAT-CAO-CAM-CAP + 1250 2 781 782 783 789 # CAT-CAO-CAM-HAT + 1251 1 781 786 785 784 # CAT-CAO-CAM-CAP + 1252 2 781 786 785 791 # CAT-CAO-CAM-HAT + 1253 3 782 781 786 785 # CAO-CAT-CAO-CAM + 1254 4 782 781 786 792 # CAO-CAT-CAO-HAT + 1255 5 782 783 784 785 # CAO-CAM-CAP-CAM + 1256 6 782 783 784 790 # CAO-CAM-CAP-HAT + 1257 7 787 781 782 783 # CTT-CAT-CAO-CAM + 1258 3 786 781 782 783 # CAO-CAT-CAO-CAM + 1259 5 786 785 784 783 # CAO-CAM-CAP-CAM + 1260 8 783 784 785 791 # CAM-CAP-CAM-HAT + 1261 9 784 783 782 788 # CAP-CAM-CAO-HAT + 1262 9 784 785 786 792 # CAP-CAM-CAO-HAT + 1263 8 785 784 783 789 # CAM-CAP-CAM-HAT + 1264 7 787 781 786 785 # CTT-CAT-CAO-CAM + 1265 6 786 785 784 790 # CAO-CAM-CAP-HAT + 1266 4 786 781 782 788 # CAO-CAT-CAO-HAT + 1267 10 787 781 782 788 # CTT-CAT-CAO-HAT + 1268 10 787 781 786 792 # CTT-CAT-CAO-HAT + 1269 11 788 782 783 789 # HAT-CAO-CAM-HAT + 1270 12 789 783 784 790 # HAT-CAM-CAP-HAT + 1271 12 791 785 784 790 # HAT-CAM-CAP-HAT + 1272 11 792 786 785 791 # HAT-CAO-CAM-HAT + 1273 1 796 797 798 799 # CAT-CAO-CAM-CAP + 1274 2 796 797 798 804 # CAT-CAO-CAM-HAT + 1275 1 796 801 800 799 # CAT-CAO-CAM-CAP + 1276 2 796 801 800 806 # CAT-CAO-CAM-HAT + 1277 3 797 796 801 800 # CAO-CAT-CAO-CAM + 1278 4 797 796 801 807 # CAO-CAT-CAO-HAT + 1279 5 797 798 799 800 # CAO-CAM-CAP-CAM + 1280 6 797 798 799 805 # CAO-CAM-CAP-HAT + 1281 7 802 796 797 798 # CTT-CAT-CAO-CAM + 1282 3 801 796 797 798 # CAO-CAT-CAO-CAM + 1283 5 801 800 799 798 # CAO-CAM-CAP-CAM + 1284 8 798 799 800 806 # CAM-CAP-CAM-HAT + 1285 9 799 798 797 803 # CAP-CAM-CAO-HAT + 1286 9 799 800 801 807 # CAP-CAM-CAO-HAT + 1287 8 800 799 798 804 # CAM-CAP-CAM-HAT + 1288 7 802 796 801 800 # CTT-CAT-CAO-CAM + 1289 6 801 800 799 805 # CAO-CAM-CAP-HAT + 1290 4 801 796 797 803 # CAO-CAT-CAO-HAT + 1291 10 802 796 797 803 # CTT-CAT-CAO-HAT + 1292 10 802 796 801 807 # CTT-CAT-CAO-HAT + 1293 11 803 797 798 804 # HAT-CAO-CAM-HAT + 1294 12 804 798 799 805 # HAT-CAM-CAP-HAT + 1295 12 806 800 799 805 # HAT-CAM-CAP-HAT + 1296 11 807 801 800 806 # HAT-CAO-CAM-HAT + 1297 1 811 812 813 814 # CAT-CAO-CAM-CAP + 1298 2 811 812 813 819 # CAT-CAO-CAM-HAT + 1299 1 811 816 815 814 # CAT-CAO-CAM-CAP + 1300 2 811 816 815 821 # CAT-CAO-CAM-HAT + 1301 3 812 811 816 815 # CAO-CAT-CAO-CAM + 1302 4 812 811 816 822 # CAO-CAT-CAO-HAT + 1303 5 812 813 814 815 # CAO-CAM-CAP-CAM + 1304 6 812 813 814 820 # CAO-CAM-CAP-HAT + 1305 7 817 811 812 813 # CTT-CAT-CAO-CAM + 1306 3 816 811 812 813 # CAO-CAT-CAO-CAM + 1307 5 816 815 814 813 # CAO-CAM-CAP-CAM + 1308 8 813 814 815 821 # CAM-CAP-CAM-HAT + 1309 9 814 813 812 818 # CAP-CAM-CAO-HAT + 1310 9 814 815 816 822 # CAP-CAM-CAO-HAT + 1311 8 815 814 813 819 # CAM-CAP-CAM-HAT + 1312 7 817 811 816 815 # CTT-CAT-CAO-CAM + 1313 6 816 815 814 820 # CAO-CAM-CAP-HAT + 1314 4 816 811 812 818 # CAO-CAT-CAO-HAT + 1315 10 817 811 812 818 # CTT-CAT-CAO-HAT + 1316 10 817 811 816 822 # CTT-CAT-CAO-HAT + 1317 11 818 812 813 819 # HAT-CAO-CAM-HAT + 1318 12 819 813 814 820 # HAT-CAM-CAP-HAT + 1319 12 821 815 814 820 # HAT-CAM-CAP-HAT + 1320 11 822 816 815 821 # HAT-CAO-CAM-HAT + 1321 1 826 827 828 829 # CAT-CAO-CAM-CAP + 1322 2 826 827 828 834 # CAT-CAO-CAM-HAT + 1323 1 826 831 830 829 # CAT-CAO-CAM-CAP + 1324 2 826 831 830 836 # CAT-CAO-CAM-HAT + 1325 3 827 826 831 830 # CAO-CAT-CAO-CAM + 1326 4 827 826 831 837 # CAO-CAT-CAO-HAT + 1327 5 827 828 829 830 # CAO-CAM-CAP-CAM + 1328 6 827 828 829 835 # CAO-CAM-CAP-HAT + 1329 7 832 826 827 828 # CTT-CAT-CAO-CAM + 1330 3 831 826 827 828 # CAO-CAT-CAO-CAM + 1331 5 831 830 829 828 # CAO-CAM-CAP-CAM + 1332 8 828 829 830 836 # CAM-CAP-CAM-HAT + 1333 9 829 828 827 833 # CAP-CAM-CAO-HAT + 1334 9 829 830 831 837 # CAP-CAM-CAO-HAT + 1335 8 830 829 828 834 # CAM-CAP-CAM-HAT + 1336 7 832 826 831 830 # CTT-CAT-CAO-CAM + 1337 6 831 830 829 835 # CAO-CAM-CAP-HAT + 1338 4 831 826 827 833 # CAO-CAT-CAO-HAT + 1339 10 832 826 827 833 # CTT-CAT-CAO-HAT + 1340 10 832 826 831 837 # CTT-CAT-CAO-HAT + 1341 11 833 827 828 834 # HAT-CAO-CAM-HAT + 1342 12 834 828 829 835 # HAT-CAM-CAP-HAT + 1343 12 836 830 829 835 # HAT-CAM-CAP-HAT + 1344 11 837 831 830 836 # HAT-CAO-CAM-HAT + 1345 1 841 842 843 844 # CAT-CAO-CAM-CAP + 1346 2 841 842 843 849 # CAT-CAO-CAM-HAT + 1347 1 841 846 845 844 # CAT-CAO-CAM-CAP + 1348 2 841 846 845 851 # CAT-CAO-CAM-HAT + 1349 3 842 841 846 845 # CAO-CAT-CAO-CAM + 1350 4 842 841 846 852 # CAO-CAT-CAO-HAT + 1351 5 842 843 844 845 # CAO-CAM-CAP-CAM + 1352 6 842 843 844 850 # CAO-CAM-CAP-HAT + 1353 7 847 841 842 843 # CTT-CAT-CAO-CAM + 1354 3 846 841 842 843 # CAO-CAT-CAO-CAM + 1355 5 846 845 844 843 # CAO-CAM-CAP-CAM + 1356 8 843 844 845 851 # CAM-CAP-CAM-HAT + 1357 9 844 843 842 848 # CAP-CAM-CAO-HAT + 1358 9 844 845 846 852 # CAP-CAM-CAO-HAT + 1359 8 845 844 843 849 # CAM-CAP-CAM-HAT + 1360 7 847 841 846 845 # CTT-CAT-CAO-CAM + 1361 6 846 845 844 850 # CAO-CAM-CAP-HAT + 1362 4 846 841 842 848 # CAO-CAT-CAO-HAT + 1363 10 847 841 842 848 # CTT-CAT-CAO-HAT + 1364 10 847 841 846 852 # CTT-CAT-CAO-HAT + 1365 11 848 842 843 849 # HAT-CAO-CAM-HAT + 1366 12 849 843 844 850 # HAT-CAM-CAP-HAT + 1367 12 851 845 844 850 # HAT-CAM-CAP-HAT + 1368 11 852 846 845 851 # HAT-CAO-CAM-HAT + 1369 1 856 857 858 859 # CAT-CAO-CAM-CAP + 1370 2 856 857 858 864 # CAT-CAO-CAM-HAT + 1371 1 856 861 860 859 # CAT-CAO-CAM-CAP + 1372 2 856 861 860 866 # CAT-CAO-CAM-HAT + 1373 3 857 856 861 860 # CAO-CAT-CAO-CAM + 1374 4 857 856 861 867 # CAO-CAT-CAO-HAT + 1375 5 857 858 859 860 # CAO-CAM-CAP-CAM + 1376 6 857 858 859 865 # CAO-CAM-CAP-HAT + 1377 7 862 856 857 858 # CTT-CAT-CAO-CAM + 1378 3 861 856 857 858 # CAO-CAT-CAO-CAM + 1379 5 861 860 859 858 # CAO-CAM-CAP-CAM + 1380 8 858 859 860 866 # CAM-CAP-CAM-HAT + 1381 9 859 858 857 863 # CAP-CAM-CAO-HAT + 1382 9 859 860 861 867 # CAP-CAM-CAO-HAT + 1383 8 860 859 858 864 # CAM-CAP-CAM-HAT + 1384 7 862 856 861 860 # CTT-CAT-CAO-CAM + 1385 6 861 860 859 865 # CAO-CAM-CAP-HAT + 1386 4 861 856 857 863 # CAO-CAT-CAO-HAT + 1387 10 862 856 857 863 # CTT-CAT-CAO-HAT + 1388 10 862 856 861 867 # CTT-CAT-CAO-HAT + 1389 11 863 857 858 864 # HAT-CAO-CAM-HAT + 1390 12 864 858 859 865 # HAT-CAM-CAP-HAT + 1391 12 866 860 859 865 # HAT-CAM-CAP-HAT + 1392 11 867 861 860 866 # HAT-CAO-CAM-HAT + 1393 1 871 872 873 874 # CAT-CAO-CAM-CAP + 1394 2 871 872 873 879 # CAT-CAO-CAM-HAT + 1395 1 871 876 875 874 # CAT-CAO-CAM-CAP + 1396 2 871 876 875 881 # CAT-CAO-CAM-HAT + 1397 3 872 871 876 875 # CAO-CAT-CAO-CAM + 1398 4 872 871 876 882 # CAO-CAT-CAO-HAT + 1399 5 872 873 874 875 # CAO-CAM-CAP-CAM + 1400 6 872 873 874 880 # CAO-CAM-CAP-HAT + 1401 7 877 871 872 873 # CTT-CAT-CAO-CAM + 1402 3 876 871 872 873 # CAO-CAT-CAO-CAM + 1403 5 876 875 874 873 # CAO-CAM-CAP-CAM + 1404 8 873 874 875 881 # CAM-CAP-CAM-HAT + 1405 9 874 873 872 878 # CAP-CAM-CAO-HAT + 1406 9 874 875 876 882 # CAP-CAM-CAO-HAT + 1407 8 875 874 873 879 # CAM-CAP-CAM-HAT + 1408 7 877 871 876 875 # CTT-CAT-CAO-CAM + 1409 6 876 875 874 880 # CAO-CAM-CAP-HAT + 1410 4 876 871 872 878 # CAO-CAT-CAO-HAT + 1411 10 877 871 872 878 # CTT-CAT-CAO-HAT + 1412 10 877 871 876 882 # CTT-CAT-CAO-HAT + 1413 11 878 872 873 879 # HAT-CAO-CAM-HAT + 1414 12 879 873 874 880 # HAT-CAM-CAP-HAT + 1415 12 881 875 874 880 # HAT-CAM-CAP-HAT + 1416 11 882 876 875 881 # HAT-CAO-CAM-HAT + 1417 1 886 887 888 889 # CAT-CAO-CAM-CAP + 1418 2 886 887 888 894 # CAT-CAO-CAM-HAT + 1419 1 886 891 890 889 # CAT-CAO-CAM-CAP + 1420 2 886 891 890 896 # CAT-CAO-CAM-HAT + 1421 3 887 886 891 890 # CAO-CAT-CAO-CAM + 1422 4 887 886 891 897 # CAO-CAT-CAO-HAT + 1423 5 887 888 889 890 # CAO-CAM-CAP-CAM + 1424 6 887 888 889 895 # CAO-CAM-CAP-HAT + 1425 7 892 886 887 888 # CTT-CAT-CAO-CAM + 1426 3 891 886 887 888 # CAO-CAT-CAO-CAM + 1427 5 891 890 889 888 # CAO-CAM-CAP-CAM + 1428 8 888 889 890 896 # CAM-CAP-CAM-HAT + 1429 9 889 888 887 893 # CAP-CAM-CAO-HAT + 1430 9 889 890 891 897 # CAP-CAM-CAO-HAT + 1431 8 890 889 888 894 # CAM-CAP-CAM-HAT + 1432 7 892 886 891 890 # CTT-CAT-CAO-CAM + 1433 6 891 890 889 895 # CAO-CAM-CAP-HAT + 1434 4 891 886 887 893 # CAO-CAT-CAO-HAT + 1435 10 892 886 887 893 # CTT-CAT-CAO-HAT + 1436 10 892 886 891 897 # CTT-CAT-CAO-HAT + 1437 11 893 887 888 894 # HAT-CAO-CAM-HAT + 1438 12 894 888 889 895 # HAT-CAM-CAP-HAT + 1439 12 896 890 889 895 # HAT-CAM-CAP-HAT + 1440 11 897 891 890 896 # HAT-CAO-CAM-HAT + 1441 1 901 902 903 904 # CAT-CAO-CAM-CAP + 1442 2 901 902 903 909 # CAT-CAO-CAM-HAT + 1443 1 901 906 905 904 # CAT-CAO-CAM-CAP + 1444 2 901 906 905 911 # CAT-CAO-CAM-HAT + 1445 3 902 901 906 905 # CAO-CAT-CAO-CAM + 1446 4 902 901 906 912 # CAO-CAT-CAO-HAT + 1447 5 902 903 904 905 # CAO-CAM-CAP-CAM + 1448 6 902 903 904 910 # CAO-CAM-CAP-HAT + 1449 7 907 901 902 903 # CTT-CAT-CAO-CAM + 1450 3 906 901 902 903 # CAO-CAT-CAO-CAM + 1451 5 906 905 904 903 # CAO-CAM-CAP-CAM + 1452 8 903 904 905 911 # CAM-CAP-CAM-HAT + 1453 9 904 903 902 908 # CAP-CAM-CAO-HAT + 1454 9 904 905 906 912 # CAP-CAM-CAO-HAT + 1455 8 905 904 903 909 # CAM-CAP-CAM-HAT + 1456 7 907 901 906 905 # CTT-CAT-CAO-CAM + 1457 6 906 905 904 910 # CAO-CAM-CAP-HAT + 1458 4 906 901 902 908 # CAO-CAT-CAO-HAT + 1459 10 907 901 902 908 # CTT-CAT-CAO-HAT + 1460 10 907 901 906 912 # CTT-CAT-CAO-HAT + 1461 11 908 902 903 909 # HAT-CAO-CAM-HAT + 1462 12 909 903 904 910 # HAT-CAM-CAP-HAT + 1463 12 911 905 904 910 # HAT-CAM-CAP-HAT + 1464 11 912 906 905 911 # HAT-CAO-CAM-HAT + 1465 1 916 917 918 919 # CAT-CAO-CAM-CAP + 1466 2 916 917 918 924 # CAT-CAO-CAM-HAT + 1467 1 916 921 920 919 # CAT-CAO-CAM-CAP + 1468 2 916 921 920 926 # CAT-CAO-CAM-HAT + 1469 3 917 916 921 920 # CAO-CAT-CAO-CAM + 1470 4 917 916 921 927 # CAO-CAT-CAO-HAT + 1471 5 917 918 919 920 # CAO-CAM-CAP-CAM + 1472 6 917 918 919 925 # CAO-CAM-CAP-HAT + 1473 7 922 916 917 918 # CTT-CAT-CAO-CAM + 1474 3 921 916 917 918 # CAO-CAT-CAO-CAM + 1475 5 921 920 919 918 # CAO-CAM-CAP-CAM + 1476 8 918 919 920 926 # CAM-CAP-CAM-HAT + 1477 9 919 918 917 923 # CAP-CAM-CAO-HAT + 1478 9 919 920 921 927 # CAP-CAM-CAO-HAT + 1479 8 920 919 918 924 # CAM-CAP-CAM-HAT + 1480 7 922 916 921 920 # CTT-CAT-CAO-CAM + 1481 6 921 920 919 925 # CAO-CAM-CAP-HAT + 1482 4 921 916 917 923 # CAO-CAT-CAO-HAT + 1483 10 922 916 917 923 # CTT-CAT-CAO-HAT + 1484 10 922 916 921 927 # CTT-CAT-CAO-HAT + 1485 11 923 917 918 924 # HAT-CAO-CAM-HAT + 1486 12 924 918 919 925 # HAT-CAM-CAP-HAT + 1487 12 926 920 919 925 # HAT-CAM-CAP-HAT + 1488 11 927 921 920 926 # HAT-CAO-CAM-HAT + 1489 1 931 932 933 934 # CAT-CAO-CAM-CAP + 1490 2 931 932 933 939 # CAT-CAO-CAM-HAT + 1491 1 931 936 935 934 # CAT-CAO-CAM-CAP + 1492 2 931 936 935 941 # CAT-CAO-CAM-HAT + 1493 3 932 931 936 935 # CAO-CAT-CAO-CAM + 1494 4 932 931 936 942 # CAO-CAT-CAO-HAT + 1495 5 932 933 934 935 # CAO-CAM-CAP-CAM + 1496 6 932 933 934 940 # CAO-CAM-CAP-HAT + 1497 7 937 931 932 933 # CTT-CAT-CAO-CAM + 1498 3 936 931 932 933 # CAO-CAT-CAO-CAM + 1499 5 936 935 934 933 # CAO-CAM-CAP-CAM + 1500 8 933 934 935 941 # CAM-CAP-CAM-HAT + 1501 9 934 933 932 938 # CAP-CAM-CAO-HAT + 1502 9 934 935 936 942 # CAP-CAM-CAO-HAT + 1503 8 935 934 933 939 # CAM-CAP-CAM-HAT + 1504 7 937 931 936 935 # CTT-CAT-CAO-CAM + 1505 6 936 935 934 940 # CAO-CAM-CAP-HAT + 1506 4 936 931 932 938 # CAO-CAT-CAO-HAT + 1507 10 937 931 932 938 # CTT-CAT-CAO-HAT + 1508 10 937 931 936 942 # CTT-CAT-CAO-HAT + 1509 11 938 932 933 939 # HAT-CAO-CAM-HAT + 1510 12 939 933 934 940 # HAT-CAM-CAP-HAT + 1511 12 941 935 934 940 # HAT-CAM-CAP-HAT + 1512 11 942 936 935 941 # HAT-CAO-CAM-HAT + 1513 1 946 947 948 949 # CAT-CAO-CAM-CAP + 1514 2 946 947 948 954 # CAT-CAO-CAM-HAT + 1515 1 946 951 950 949 # CAT-CAO-CAM-CAP + 1516 2 946 951 950 956 # CAT-CAO-CAM-HAT + 1517 3 947 946 951 950 # CAO-CAT-CAO-CAM + 1518 4 947 946 951 957 # CAO-CAT-CAO-HAT + 1519 5 947 948 949 950 # CAO-CAM-CAP-CAM + 1520 6 947 948 949 955 # CAO-CAM-CAP-HAT + 1521 7 952 946 947 948 # CTT-CAT-CAO-CAM + 1522 3 951 946 947 948 # CAO-CAT-CAO-CAM + 1523 5 951 950 949 948 # CAO-CAM-CAP-CAM + 1524 8 948 949 950 956 # CAM-CAP-CAM-HAT + 1525 9 949 948 947 953 # CAP-CAM-CAO-HAT + 1526 9 949 950 951 957 # CAP-CAM-CAO-HAT + 1527 8 950 949 948 954 # CAM-CAP-CAM-HAT + 1528 7 952 946 951 950 # CTT-CAT-CAO-CAM + 1529 6 951 950 949 955 # CAO-CAM-CAP-HAT + 1530 4 951 946 947 953 # CAO-CAT-CAO-HAT + 1531 10 952 946 947 953 # CTT-CAT-CAO-HAT + 1532 10 952 946 951 957 # CTT-CAT-CAO-HAT + 1533 11 953 947 948 954 # HAT-CAO-CAM-HAT + 1534 12 954 948 949 955 # HAT-CAM-CAP-HAT + 1535 12 956 950 949 955 # HAT-CAM-CAP-HAT + 1536 11 957 951 950 956 # HAT-CAO-CAM-HAT + 1537 1 961 962 963 964 # CAT-CAO-CAM-CAP + 1538 2 961 962 963 969 # CAT-CAO-CAM-HAT + 1539 1 961 966 965 964 # CAT-CAO-CAM-CAP + 1540 2 961 966 965 971 # CAT-CAO-CAM-HAT + 1541 3 962 961 966 965 # CAO-CAT-CAO-CAM + 1542 4 962 961 966 972 # CAO-CAT-CAO-HAT + 1543 5 962 963 964 965 # CAO-CAM-CAP-CAM + 1544 6 962 963 964 970 # CAO-CAM-CAP-HAT + 1545 7 967 961 962 963 # CTT-CAT-CAO-CAM + 1546 3 966 961 962 963 # CAO-CAT-CAO-CAM + 1547 5 966 965 964 963 # CAO-CAM-CAP-CAM + 1548 8 963 964 965 971 # CAM-CAP-CAM-HAT + 1549 9 964 963 962 968 # CAP-CAM-CAO-HAT + 1550 9 964 965 966 972 # CAP-CAM-CAO-HAT + 1551 8 965 964 963 969 # CAM-CAP-CAM-HAT + 1552 7 967 961 966 965 # CTT-CAT-CAO-CAM + 1553 6 966 965 964 970 # CAO-CAM-CAP-HAT + 1554 4 966 961 962 968 # CAO-CAT-CAO-HAT + 1555 10 967 961 962 968 # CTT-CAT-CAO-HAT + 1556 10 967 961 966 972 # CTT-CAT-CAO-HAT + 1557 11 968 962 963 969 # HAT-CAO-CAM-HAT + 1558 12 969 963 964 970 # HAT-CAM-CAP-HAT + 1559 12 971 965 964 970 # HAT-CAM-CAP-HAT + 1560 11 972 966 965 971 # HAT-CAO-CAM-HAT + 1561 1 976 977 978 979 # CAT-CAO-CAM-CAP + 1562 2 976 977 978 984 # CAT-CAO-CAM-HAT + 1563 1 976 981 980 979 # CAT-CAO-CAM-CAP + 1564 2 976 981 980 986 # CAT-CAO-CAM-HAT + 1565 3 977 976 981 980 # CAO-CAT-CAO-CAM + 1566 4 977 976 981 987 # CAO-CAT-CAO-HAT + 1567 5 977 978 979 980 # CAO-CAM-CAP-CAM + 1568 6 977 978 979 985 # CAO-CAM-CAP-HAT + 1569 7 982 976 977 978 # CTT-CAT-CAO-CAM + 1570 3 981 976 977 978 # CAO-CAT-CAO-CAM + 1571 5 981 980 979 978 # CAO-CAM-CAP-CAM + 1572 8 978 979 980 986 # CAM-CAP-CAM-HAT + 1573 9 979 978 977 983 # CAP-CAM-CAO-HAT + 1574 9 979 980 981 987 # CAP-CAM-CAO-HAT + 1575 8 980 979 978 984 # CAM-CAP-CAM-HAT + 1576 7 982 976 981 980 # CTT-CAT-CAO-CAM + 1577 6 981 980 979 985 # CAO-CAM-CAP-HAT + 1578 4 981 976 977 983 # CAO-CAT-CAO-HAT + 1579 10 982 976 977 983 # CTT-CAT-CAO-HAT + 1580 10 982 976 981 987 # CTT-CAT-CAO-HAT + 1581 11 983 977 978 984 # HAT-CAO-CAM-HAT + 1582 12 984 978 979 985 # HAT-CAM-CAP-HAT + 1583 12 986 980 979 985 # HAT-CAM-CAP-HAT + 1584 11 987 981 980 986 # HAT-CAO-CAM-HAT + 1585 1 991 992 993 994 # CAT-CAO-CAM-CAP + 1586 2 991 992 993 999 # CAT-CAO-CAM-HAT + 1587 1 991 996 995 994 # CAT-CAO-CAM-CAP + 1588 2 991 996 995 1001 # CAT-CAO-CAM-HAT + 1589 3 992 991 996 995 # CAO-CAT-CAO-CAM + 1590 4 992 991 996 1002 # CAO-CAT-CAO-HAT + 1591 5 992 993 994 995 # CAO-CAM-CAP-CAM + 1592 6 992 993 994 1000 # CAO-CAM-CAP-HAT + 1593 7 997 991 992 993 # CTT-CAT-CAO-CAM + 1594 3 996 991 992 993 # CAO-CAT-CAO-CAM + 1595 5 996 995 994 993 # CAO-CAM-CAP-CAM + 1596 8 993 994 995 1001 # CAM-CAP-CAM-HAT + 1597 9 994 993 992 998 # CAP-CAM-CAO-HAT + 1598 9 994 995 996 1002 # CAP-CAM-CAO-HAT + 1599 8 995 994 993 999 # CAM-CAP-CAM-HAT + 1600 7 997 991 996 995 # CTT-CAT-CAO-CAM + 1601 6 996 995 994 1000 # CAO-CAM-CAP-HAT + 1602 4 996 991 992 998 # CAO-CAT-CAO-HAT + 1603 10 997 991 992 998 # CTT-CAT-CAO-HAT + 1604 10 997 991 996 1002 # CTT-CAT-CAO-HAT + 1605 11 998 992 993 999 # HAT-CAO-CAM-HAT + 1606 12 999 993 994 1000 # HAT-CAM-CAP-HAT + 1607 12 1001 995 994 1000 # HAT-CAM-CAP-HAT + 1608 11 1002 996 995 1001 # HAT-CAO-CAM-HAT + 1609 1 1006 1007 1008 1009 # CAT-CAO-CAM-CAP + 1610 2 1006 1007 1008 1014 # CAT-CAO-CAM-HAT + 1611 1 1006 1011 1010 1009 # CAT-CAO-CAM-CAP + 1612 2 1006 1011 1010 1016 # CAT-CAO-CAM-HAT + 1613 3 1007 1006 1011 1010 # CAO-CAT-CAO-CAM + 1614 4 1007 1006 1011 1017 # CAO-CAT-CAO-HAT + 1615 5 1007 1008 1009 1010 # CAO-CAM-CAP-CAM + 1616 6 1007 1008 1009 1015 # CAO-CAM-CAP-HAT + 1617 7 1012 1006 1007 1008 # CTT-CAT-CAO-CAM + 1618 3 1011 1006 1007 1008 # CAO-CAT-CAO-CAM + 1619 5 1011 1010 1009 1008 # CAO-CAM-CAP-CAM + 1620 8 1008 1009 1010 1016 # CAM-CAP-CAM-HAT + 1621 9 1009 1008 1007 1013 # CAP-CAM-CAO-HAT + 1622 9 1009 1010 1011 1017 # CAP-CAM-CAO-HAT + 1623 8 1010 1009 1008 1014 # CAM-CAP-CAM-HAT + 1624 7 1012 1006 1011 1010 # CTT-CAT-CAO-CAM + 1625 6 1011 1010 1009 1015 # CAO-CAM-CAP-HAT + 1626 4 1011 1006 1007 1013 # CAO-CAT-CAO-HAT + 1627 10 1012 1006 1007 1013 # CTT-CAT-CAO-HAT + 1628 10 1012 1006 1011 1017 # CTT-CAT-CAO-HAT + 1629 11 1013 1007 1008 1014 # HAT-CAO-CAM-HAT + 1630 12 1014 1008 1009 1015 # HAT-CAM-CAP-HAT + 1631 12 1016 1010 1009 1015 # HAT-CAM-CAP-HAT + 1632 11 1017 1011 1010 1016 # HAT-CAO-CAM-HAT + 1633 1 1021 1022 1023 1024 # CAT-CAO-CAM-CAP + 1634 2 1021 1022 1023 1029 # CAT-CAO-CAM-HAT + 1635 1 1021 1026 1025 1024 # CAT-CAO-CAM-CAP + 1636 2 1021 1026 1025 1031 # CAT-CAO-CAM-HAT + 1637 3 1022 1021 1026 1025 # CAO-CAT-CAO-CAM + 1638 4 1022 1021 1026 1032 # CAO-CAT-CAO-HAT + 1639 5 1022 1023 1024 1025 # CAO-CAM-CAP-CAM + 1640 6 1022 1023 1024 1030 # CAO-CAM-CAP-HAT + 1641 7 1027 1021 1022 1023 # CTT-CAT-CAO-CAM + 1642 3 1026 1021 1022 1023 # CAO-CAT-CAO-CAM + 1643 5 1026 1025 1024 1023 # CAO-CAM-CAP-CAM + 1644 8 1023 1024 1025 1031 # CAM-CAP-CAM-HAT + 1645 9 1024 1023 1022 1028 # CAP-CAM-CAO-HAT + 1646 9 1024 1025 1026 1032 # CAP-CAM-CAO-HAT + 1647 8 1025 1024 1023 1029 # CAM-CAP-CAM-HAT + 1648 7 1027 1021 1026 1025 # CTT-CAT-CAO-CAM + 1649 6 1026 1025 1024 1030 # CAO-CAM-CAP-HAT + 1650 4 1026 1021 1022 1028 # CAO-CAT-CAO-HAT + 1651 10 1027 1021 1022 1028 # CTT-CAT-CAO-HAT + 1652 10 1027 1021 1026 1032 # CTT-CAT-CAO-HAT + 1653 11 1028 1022 1023 1029 # HAT-CAO-CAM-HAT + 1654 12 1029 1023 1024 1030 # HAT-CAM-CAP-HAT + 1655 12 1031 1025 1024 1030 # HAT-CAM-CAP-HAT + 1656 11 1032 1026 1025 1031 # HAT-CAO-CAM-HAT + 1657 1 1036 1037 1038 1039 # CAT-CAO-CAM-CAP + 1658 2 1036 1037 1038 1044 # CAT-CAO-CAM-HAT + 1659 1 1036 1041 1040 1039 # CAT-CAO-CAM-CAP + 1660 2 1036 1041 1040 1046 # CAT-CAO-CAM-HAT + 1661 3 1037 1036 1041 1040 # CAO-CAT-CAO-CAM + 1662 4 1037 1036 1041 1047 # CAO-CAT-CAO-HAT + 1663 5 1037 1038 1039 1040 # CAO-CAM-CAP-CAM + 1664 6 1037 1038 1039 1045 # CAO-CAM-CAP-HAT + 1665 7 1042 1036 1037 1038 # CTT-CAT-CAO-CAM + 1666 3 1041 1036 1037 1038 # CAO-CAT-CAO-CAM + 1667 5 1041 1040 1039 1038 # CAO-CAM-CAP-CAM + 1668 8 1038 1039 1040 1046 # CAM-CAP-CAM-HAT + 1669 9 1039 1038 1037 1043 # CAP-CAM-CAO-HAT + 1670 9 1039 1040 1041 1047 # CAP-CAM-CAO-HAT + 1671 8 1040 1039 1038 1044 # CAM-CAP-CAM-HAT + 1672 7 1042 1036 1041 1040 # CTT-CAT-CAO-CAM + 1673 6 1041 1040 1039 1045 # CAO-CAM-CAP-HAT + 1674 4 1041 1036 1037 1043 # CAO-CAT-CAO-HAT + 1675 10 1042 1036 1037 1043 # CTT-CAT-CAO-HAT + 1676 10 1042 1036 1041 1047 # CTT-CAT-CAO-HAT + 1677 11 1043 1037 1038 1044 # HAT-CAO-CAM-HAT + 1678 12 1044 1038 1039 1045 # HAT-CAM-CAP-HAT + 1679 12 1046 1040 1039 1045 # HAT-CAM-CAP-HAT + 1680 11 1047 1041 1040 1046 # HAT-CAO-CAM-HAT + 1681 1 1051 1052 1053 1054 # CAT-CAO-CAM-CAP + 1682 2 1051 1052 1053 1059 # CAT-CAO-CAM-HAT + 1683 1 1051 1056 1055 1054 # CAT-CAO-CAM-CAP + 1684 2 1051 1056 1055 1061 # CAT-CAO-CAM-HAT + 1685 3 1052 1051 1056 1055 # CAO-CAT-CAO-CAM + 1686 4 1052 1051 1056 1062 # CAO-CAT-CAO-HAT + 1687 5 1052 1053 1054 1055 # CAO-CAM-CAP-CAM + 1688 6 1052 1053 1054 1060 # CAO-CAM-CAP-HAT + 1689 7 1057 1051 1052 1053 # CTT-CAT-CAO-CAM + 1690 3 1056 1051 1052 1053 # CAO-CAT-CAO-CAM + 1691 5 1056 1055 1054 1053 # CAO-CAM-CAP-CAM + 1692 8 1053 1054 1055 1061 # CAM-CAP-CAM-HAT + 1693 9 1054 1053 1052 1058 # CAP-CAM-CAO-HAT + 1694 9 1054 1055 1056 1062 # CAP-CAM-CAO-HAT + 1695 8 1055 1054 1053 1059 # CAM-CAP-CAM-HAT + 1696 7 1057 1051 1056 1055 # CTT-CAT-CAO-CAM + 1697 6 1056 1055 1054 1060 # CAO-CAM-CAP-HAT + 1698 4 1056 1051 1052 1058 # CAO-CAT-CAO-HAT + 1699 10 1057 1051 1052 1058 # CTT-CAT-CAO-HAT + 1700 10 1057 1051 1056 1062 # CTT-CAT-CAO-HAT + 1701 11 1058 1052 1053 1059 # HAT-CAO-CAM-HAT + 1702 12 1059 1053 1054 1060 # HAT-CAM-CAP-HAT + 1703 12 1061 1055 1054 1060 # HAT-CAM-CAP-HAT + 1704 11 1062 1056 1055 1061 # HAT-CAO-CAM-HAT + 1705 1 1066 1067 1068 1069 # CAT-CAO-CAM-CAP + 1706 2 1066 1067 1068 1074 # CAT-CAO-CAM-HAT + 1707 1 1066 1071 1070 1069 # CAT-CAO-CAM-CAP + 1708 2 1066 1071 1070 1076 # CAT-CAO-CAM-HAT + 1709 3 1067 1066 1071 1070 # CAO-CAT-CAO-CAM + 1710 4 1067 1066 1071 1077 # CAO-CAT-CAO-HAT + 1711 5 1067 1068 1069 1070 # CAO-CAM-CAP-CAM + 1712 6 1067 1068 1069 1075 # CAO-CAM-CAP-HAT + 1713 7 1072 1066 1067 1068 # CTT-CAT-CAO-CAM + 1714 3 1071 1066 1067 1068 # CAO-CAT-CAO-CAM + 1715 5 1071 1070 1069 1068 # CAO-CAM-CAP-CAM + 1716 8 1068 1069 1070 1076 # CAM-CAP-CAM-HAT + 1717 9 1069 1068 1067 1073 # CAP-CAM-CAO-HAT + 1718 9 1069 1070 1071 1077 # CAP-CAM-CAO-HAT + 1719 8 1070 1069 1068 1074 # CAM-CAP-CAM-HAT + 1720 7 1072 1066 1071 1070 # CTT-CAT-CAO-CAM + 1721 6 1071 1070 1069 1075 # CAO-CAM-CAP-HAT + 1722 4 1071 1066 1067 1073 # CAO-CAT-CAO-HAT + 1723 10 1072 1066 1067 1073 # CTT-CAT-CAO-HAT + 1724 10 1072 1066 1071 1077 # CTT-CAT-CAO-HAT + 1725 11 1073 1067 1068 1074 # HAT-CAO-CAM-HAT + 1726 12 1074 1068 1069 1075 # HAT-CAM-CAP-HAT + 1727 12 1076 1070 1069 1075 # HAT-CAM-CAP-HAT + 1728 11 1077 1071 1070 1076 # HAT-CAO-CAM-HAT + 1729 1 1081 1082 1083 1084 # CAT-CAO-CAM-CAP + 1730 2 1081 1082 1083 1089 # CAT-CAO-CAM-HAT + 1731 1 1081 1086 1085 1084 # CAT-CAO-CAM-CAP + 1732 2 1081 1086 1085 1091 # CAT-CAO-CAM-HAT + 1733 3 1082 1081 1086 1085 # CAO-CAT-CAO-CAM + 1734 4 1082 1081 1086 1092 # CAO-CAT-CAO-HAT + 1735 5 1082 1083 1084 1085 # CAO-CAM-CAP-CAM + 1736 6 1082 1083 1084 1090 # CAO-CAM-CAP-HAT + 1737 7 1087 1081 1082 1083 # CTT-CAT-CAO-CAM + 1738 3 1086 1081 1082 1083 # CAO-CAT-CAO-CAM + 1739 5 1086 1085 1084 1083 # CAO-CAM-CAP-CAM + 1740 8 1083 1084 1085 1091 # CAM-CAP-CAM-HAT + 1741 9 1084 1083 1082 1088 # CAP-CAM-CAO-HAT + 1742 9 1084 1085 1086 1092 # CAP-CAM-CAO-HAT + 1743 8 1085 1084 1083 1089 # CAM-CAP-CAM-HAT + 1744 7 1087 1081 1086 1085 # CTT-CAT-CAO-CAM + 1745 6 1086 1085 1084 1090 # CAO-CAM-CAP-HAT + 1746 4 1086 1081 1082 1088 # CAO-CAT-CAO-HAT + 1747 10 1087 1081 1082 1088 # CTT-CAT-CAO-HAT + 1748 10 1087 1081 1086 1092 # CTT-CAT-CAO-HAT + 1749 11 1088 1082 1083 1089 # HAT-CAO-CAM-HAT + 1750 12 1089 1083 1084 1090 # HAT-CAM-CAP-HAT + 1751 12 1091 1085 1084 1090 # HAT-CAM-CAP-HAT + 1752 11 1092 1086 1085 1091 # HAT-CAO-CAM-HAT + 1753 1 1096 1097 1098 1099 # CAT-CAO-CAM-CAP + 1754 2 1096 1097 1098 1104 # CAT-CAO-CAM-HAT + 1755 1 1096 1101 1100 1099 # CAT-CAO-CAM-CAP + 1756 2 1096 1101 1100 1106 # CAT-CAO-CAM-HAT + 1757 3 1097 1096 1101 1100 # CAO-CAT-CAO-CAM + 1758 4 1097 1096 1101 1107 # CAO-CAT-CAO-HAT + 1759 5 1097 1098 1099 1100 # CAO-CAM-CAP-CAM + 1760 6 1097 1098 1099 1105 # CAO-CAM-CAP-HAT + 1761 7 1102 1096 1097 1098 # CTT-CAT-CAO-CAM + 1762 3 1101 1096 1097 1098 # CAO-CAT-CAO-CAM + 1763 5 1101 1100 1099 1098 # CAO-CAM-CAP-CAM + 1764 8 1098 1099 1100 1106 # CAM-CAP-CAM-HAT + 1765 9 1099 1098 1097 1103 # CAP-CAM-CAO-HAT + 1766 9 1099 1100 1101 1107 # CAP-CAM-CAO-HAT + 1767 8 1100 1099 1098 1104 # CAM-CAP-CAM-HAT + 1768 7 1102 1096 1101 1100 # CTT-CAT-CAO-CAM + 1769 6 1101 1100 1099 1105 # CAO-CAM-CAP-HAT + 1770 4 1101 1096 1097 1103 # CAO-CAT-CAO-HAT + 1771 10 1102 1096 1097 1103 # CTT-CAT-CAO-HAT + 1772 10 1102 1096 1101 1107 # CTT-CAT-CAO-HAT + 1773 11 1103 1097 1098 1104 # HAT-CAO-CAM-HAT + 1774 12 1104 1098 1099 1105 # HAT-CAM-CAP-HAT + 1775 12 1106 1100 1099 1105 # HAT-CAM-CAP-HAT + 1776 11 1107 1101 1100 1106 # HAT-CAO-CAM-HAT + 1777 1 1111 1112 1113 1114 # CAT-CAO-CAM-CAP + 1778 2 1111 1112 1113 1119 # CAT-CAO-CAM-HAT + 1779 1 1111 1116 1115 1114 # CAT-CAO-CAM-CAP + 1780 2 1111 1116 1115 1121 # CAT-CAO-CAM-HAT + 1781 3 1112 1111 1116 1115 # CAO-CAT-CAO-CAM + 1782 4 1112 1111 1116 1122 # CAO-CAT-CAO-HAT + 1783 5 1112 1113 1114 1115 # CAO-CAM-CAP-CAM + 1784 6 1112 1113 1114 1120 # CAO-CAM-CAP-HAT + 1785 7 1117 1111 1112 1113 # CTT-CAT-CAO-CAM + 1786 3 1116 1111 1112 1113 # CAO-CAT-CAO-CAM + 1787 5 1116 1115 1114 1113 # CAO-CAM-CAP-CAM + 1788 8 1113 1114 1115 1121 # CAM-CAP-CAM-HAT + 1789 9 1114 1113 1112 1118 # CAP-CAM-CAO-HAT + 1790 9 1114 1115 1116 1122 # CAP-CAM-CAO-HAT + 1791 8 1115 1114 1113 1119 # CAM-CAP-CAM-HAT + 1792 7 1117 1111 1116 1115 # CTT-CAT-CAO-CAM + 1793 6 1116 1115 1114 1120 # CAO-CAM-CAP-HAT + 1794 4 1116 1111 1112 1118 # CAO-CAT-CAO-HAT + 1795 10 1117 1111 1112 1118 # CTT-CAT-CAO-HAT + 1796 10 1117 1111 1116 1122 # CTT-CAT-CAO-HAT + 1797 11 1118 1112 1113 1119 # HAT-CAO-CAM-HAT + 1798 12 1119 1113 1114 1120 # HAT-CAM-CAP-HAT + 1799 12 1121 1115 1114 1120 # HAT-CAM-CAP-HAT + 1800 11 1122 1116 1115 1121 # HAT-CAO-CAM-HAT + 1801 1 1126 1127 1128 1129 # CAT-CAO-CAM-CAP + 1802 2 1126 1127 1128 1134 # CAT-CAO-CAM-HAT + 1803 1 1126 1131 1130 1129 # CAT-CAO-CAM-CAP + 1804 2 1126 1131 1130 1136 # CAT-CAO-CAM-HAT + 1805 3 1127 1126 1131 1130 # CAO-CAT-CAO-CAM + 1806 4 1127 1126 1131 1137 # CAO-CAT-CAO-HAT + 1807 5 1127 1128 1129 1130 # CAO-CAM-CAP-CAM + 1808 6 1127 1128 1129 1135 # CAO-CAM-CAP-HAT + 1809 7 1132 1126 1127 1128 # CTT-CAT-CAO-CAM + 1810 3 1131 1126 1127 1128 # CAO-CAT-CAO-CAM + 1811 5 1131 1130 1129 1128 # CAO-CAM-CAP-CAM + 1812 8 1128 1129 1130 1136 # CAM-CAP-CAM-HAT + 1813 9 1129 1128 1127 1133 # CAP-CAM-CAO-HAT + 1814 9 1129 1130 1131 1137 # CAP-CAM-CAO-HAT + 1815 8 1130 1129 1128 1134 # CAM-CAP-CAM-HAT + 1816 7 1132 1126 1131 1130 # CTT-CAT-CAO-CAM + 1817 6 1131 1130 1129 1135 # CAO-CAM-CAP-HAT + 1818 4 1131 1126 1127 1133 # CAO-CAT-CAO-HAT + 1819 10 1132 1126 1127 1133 # CTT-CAT-CAO-HAT + 1820 10 1132 1126 1131 1137 # CTT-CAT-CAO-HAT + 1821 11 1133 1127 1128 1134 # HAT-CAO-CAM-HAT + 1822 12 1134 1128 1129 1135 # HAT-CAM-CAP-HAT + 1823 12 1136 1130 1129 1135 # HAT-CAM-CAP-HAT + 1824 11 1137 1131 1130 1136 # HAT-CAO-CAM-HAT + 1825 1 1141 1142 1143 1144 # CAT-CAO-CAM-CAP + 1826 2 1141 1142 1143 1149 # CAT-CAO-CAM-HAT + 1827 1 1141 1146 1145 1144 # CAT-CAO-CAM-CAP + 1828 2 1141 1146 1145 1151 # CAT-CAO-CAM-HAT + 1829 3 1142 1141 1146 1145 # CAO-CAT-CAO-CAM + 1830 4 1142 1141 1146 1152 # CAO-CAT-CAO-HAT + 1831 5 1142 1143 1144 1145 # CAO-CAM-CAP-CAM + 1832 6 1142 1143 1144 1150 # CAO-CAM-CAP-HAT + 1833 7 1147 1141 1142 1143 # CTT-CAT-CAO-CAM + 1834 3 1146 1141 1142 1143 # CAO-CAT-CAO-CAM + 1835 5 1146 1145 1144 1143 # CAO-CAM-CAP-CAM + 1836 8 1143 1144 1145 1151 # CAM-CAP-CAM-HAT + 1837 9 1144 1143 1142 1148 # CAP-CAM-CAO-HAT + 1838 9 1144 1145 1146 1152 # CAP-CAM-CAO-HAT + 1839 8 1145 1144 1143 1149 # CAM-CAP-CAM-HAT + 1840 7 1147 1141 1146 1145 # CTT-CAT-CAO-CAM + 1841 6 1146 1145 1144 1150 # CAO-CAM-CAP-HAT + 1842 4 1146 1141 1142 1148 # CAO-CAT-CAO-HAT + 1843 10 1147 1141 1142 1148 # CTT-CAT-CAO-HAT + 1844 10 1147 1141 1146 1152 # CTT-CAT-CAO-HAT + 1845 11 1148 1142 1143 1149 # HAT-CAO-CAM-HAT + 1846 12 1149 1143 1144 1150 # HAT-CAM-CAP-HAT + 1847 12 1151 1145 1144 1150 # HAT-CAM-CAP-HAT + 1848 11 1152 1146 1145 1151 # HAT-CAO-CAM-HAT + 1849 1 1156 1157 1158 1159 # CAT-CAO-CAM-CAP + 1850 2 1156 1157 1158 1164 # CAT-CAO-CAM-HAT + 1851 1 1156 1161 1160 1159 # CAT-CAO-CAM-CAP + 1852 2 1156 1161 1160 1166 # CAT-CAO-CAM-HAT + 1853 3 1157 1156 1161 1160 # CAO-CAT-CAO-CAM + 1854 4 1157 1156 1161 1167 # CAO-CAT-CAO-HAT + 1855 5 1157 1158 1159 1160 # CAO-CAM-CAP-CAM + 1856 6 1157 1158 1159 1165 # CAO-CAM-CAP-HAT + 1857 7 1162 1156 1157 1158 # CTT-CAT-CAO-CAM + 1858 3 1161 1156 1157 1158 # CAO-CAT-CAO-CAM + 1859 5 1161 1160 1159 1158 # CAO-CAM-CAP-CAM + 1860 8 1158 1159 1160 1166 # CAM-CAP-CAM-HAT + 1861 9 1159 1158 1157 1163 # CAP-CAM-CAO-HAT + 1862 9 1159 1160 1161 1167 # CAP-CAM-CAO-HAT + 1863 8 1160 1159 1158 1164 # CAM-CAP-CAM-HAT + 1864 7 1162 1156 1161 1160 # CTT-CAT-CAO-CAM + 1865 6 1161 1160 1159 1165 # CAO-CAM-CAP-HAT + 1866 4 1161 1156 1157 1163 # CAO-CAT-CAO-HAT + 1867 10 1162 1156 1157 1163 # CTT-CAT-CAO-HAT + 1868 10 1162 1156 1161 1167 # CTT-CAT-CAO-HAT + 1869 11 1163 1157 1158 1164 # HAT-CAO-CAM-HAT + 1870 12 1164 1158 1159 1165 # HAT-CAM-CAP-HAT + 1871 12 1166 1160 1159 1165 # HAT-CAM-CAP-HAT + 1872 11 1167 1161 1160 1166 # HAT-CAO-CAM-HAT + 1873 1 1171 1172 1173 1174 # CAT-CAO-CAM-CAP + 1874 2 1171 1172 1173 1179 # CAT-CAO-CAM-HAT + 1875 1 1171 1176 1175 1174 # CAT-CAO-CAM-CAP + 1876 2 1171 1176 1175 1181 # CAT-CAO-CAM-HAT + 1877 3 1172 1171 1176 1175 # CAO-CAT-CAO-CAM + 1878 4 1172 1171 1176 1182 # CAO-CAT-CAO-HAT + 1879 5 1172 1173 1174 1175 # CAO-CAM-CAP-CAM + 1880 6 1172 1173 1174 1180 # CAO-CAM-CAP-HAT + 1881 7 1177 1171 1172 1173 # CTT-CAT-CAO-CAM + 1882 3 1176 1171 1172 1173 # CAO-CAT-CAO-CAM + 1883 5 1176 1175 1174 1173 # CAO-CAM-CAP-CAM + 1884 8 1173 1174 1175 1181 # CAM-CAP-CAM-HAT + 1885 9 1174 1173 1172 1178 # CAP-CAM-CAO-HAT + 1886 9 1174 1175 1176 1182 # CAP-CAM-CAO-HAT + 1887 8 1175 1174 1173 1179 # CAM-CAP-CAM-HAT + 1888 7 1177 1171 1176 1175 # CTT-CAT-CAO-CAM + 1889 6 1176 1175 1174 1180 # CAO-CAM-CAP-HAT + 1890 4 1176 1171 1172 1178 # CAO-CAT-CAO-HAT + 1891 10 1177 1171 1172 1178 # CTT-CAT-CAO-HAT + 1892 10 1177 1171 1176 1182 # CTT-CAT-CAO-HAT + 1893 11 1178 1172 1173 1179 # HAT-CAO-CAM-HAT + 1894 12 1179 1173 1174 1180 # HAT-CAM-CAP-HAT + 1895 12 1181 1175 1174 1180 # HAT-CAM-CAP-HAT + 1896 11 1182 1176 1175 1181 # HAT-CAO-CAM-HAT + 1897 1 1186 1187 1188 1189 # CAT-CAO-CAM-CAP + 1898 2 1186 1187 1188 1194 # CAT-CAO-CAM-HAT + 1899 1 1186 1191 1190 1189 # CAT-CAO-CAM-CAP + 1900 2 1186 1191 1190 1196 # CAT-CAO-CAM-HAT + 1901 3 1187 1186 1191 1190 # CAO-CAT-CAO-CAM + 1902 4 1187 1186 1191 1197 # CAO-CAT-CAO-HAT + 1903 5 1187 1188 1189 1190 # CAO-CAM-CAP-CAM + 1904 6 1187 1188 1189 1195 # CAO-CAM-CAP-HAT + 1905 7 1192 1186 1187 1188 # CTT-CAT-CAO-CAM + 1906 3 1191 1186 1187 1188 # CAO-CAT-CAO-CAM + 1907 5 1191 1190 1189 1188 # CAO-CAM-CAP-CAM + 1908 8 1188 1189 1190 1196 # CAM-CAP-CAM-HAT + 1909 9 1189 1188 1187 1193 # CAP-CAM-CAO-HAT + 1910 9 1189 1190 1191 1197 # CAP-CAM-CAO-HAT + 1911 8 1190 1189 1188 1194 # CAM-CAP-CAM-HAT + 1912 7 1192 1186 1191 1190 # CTT-CAT-CAO-CAM + 1913 6 1191 1190 1189 1195 # CAO-CAM-CAP-HAT + 1914 4 1191 1186 1187 1193 # CAO-CAT-CAO-HAT + 1915 10 1192 1186 1187 1193 # CTT-CAT-CAO-HAT + 1916 10 1192 1186 1191 1197 # CTT-CAT-CAO-HAT + 1917 11 1193 1187 1188 1194 # HAT-CAO-CAM-HAT + 1918 12 1194 1188 1189 1195 # HAT-CAM-CAP-HAT + 1919 12 1196 1190 1189 1195 # HAT-CAM-CAP-HAT + 1920 11 1197 1191 1190 1196 # HAT-CAO-CAM-HAT + 1921 1 1201 1202 1203 1204 # CAT-CAO-CAM-CAP + 1922 2 1201 1202 1203 1209 # CAT-CAO-CAM-HAT + 1923 1 1201 1206 1205 1204 # CAT-CAO-CAM-CAP + 1924 2 1201 1206 1205 1211 # CAT-CAO-CAM-HAT + 1925 3 1202 1201 1206 1205 # CAO-CAT-CAO-CAM + 1926 4 1202 1201 1206 1212 # CAO-CAT-CAO-HAT + 1927 5 1202 1203 1204 1205 # CAO-CAM-CAP-CAM + 1928 6 1202 1203 1204 1210 # CAO-CAM-CAP-HAT + 1929 7 1207 1201 1202 1203 # CTT-CAT-CAO-CAM + 1930 3 1206 1201 1202 1203 # CAO-CAT-CAO-CAM + 1931 5 1206 1205 1204 1203 # CAO-CAM-CAP-CAM + 1932 8 1203 1204 1205 1211 # CAM-CAP-CAM-HAT + 1933 9 1204 1203 1202 1208 # CAP-CAM-CAO-HAT + 1934 9 1204 1205 1206 1212 # CAP-CAM-CAO-HAT + 1935 8 1205 1204 1203 1209 # CAM-CAP-CAM-HAT + 1936 7 1207 1201 1206 1205 # CTT-CAT-CAO-CAM + 1937 6 1206 1205 1204 1210 # CAO-CAM-CAP-HAT + 1938 4 1206 1201 1202 1208 # CAO-CAT-CAO-HAT + 1939 10 1207 1201 1202 1208 # CTT-CAT-CAO-HAT + 1940 10 1207 1201 1206 1212 # CTT-CAT-CAO-HAT + 1941 11 1208 1202 1203 1209 # HAT-CAO-CAM-HAT + 1942 12 1209 1203 1204 1210 # HAT-CAM-CAP-HAT + 1943 12 1211 1205 1204 1210 # HAT-CAM-CAP-HAT + 1944 11 1212 1206 1205 1211 # HAT-CAO-CAM-HAT + 1945 1 1216 1217 1218 1219 # CAT-CAO-CAM-CAP + 1946 2 1216 1217 1218 1224 # CAT-CAO-CAM-HAT + 1947 1 1216 1221 1220 1219 # CAT-CAO-CAM-CAP + 1948 2 1216 1221 1220 1226 # CAT-CAO-CAM-HAT + 1949 3 1217 1216 1221 1220 # CAO-CAT-CAO-CAM + 1950 4 1217 1216 1221 1227 # CAO-CAT-CAO-HAT + 1951 5 1217 1218 1219 1220 # CAO-CAM-CAP-CAM + 1952 6 1217 1218 1219 1225 # CAO-CAM-CAP-HAT + 1953 7 1222 1216 1217 1218 # CTT-CAT-CAO-CAM + 1954 3 1221 1216 1217 1218 # CAO-CAT-CAO-CAM + 1955 5 1221 1220 1219 1218 # CAO-CAM-CAP-CAM + 1956 8 1218 1219 1220 1226 # CAM-CAP-CAM-HAT + 1957 9 1219 1218 1217 1223 # CAP-CAM-CAO-HAT + 1958 9 1219 1220 1221 1227 # CAP-CAM-CAO-HAT + 1959 8 1220 1219 1218 1224 # CAM-CAP-CAM-HAT + 1960 7 1222 1216 1221 1220 # CTT-CAT-CAO-CAM + 1961 6 1221 1220 1219 1225 # CAO-CAM-CAP-HAT + 1962 4 1221 1216 1217 1223 # CAO-CAT-CAO-HAT + 1963 10 1222 1216 1217 1223 # CTT-CAT-CAO-HAT + 1964 10 1222 1216 1221 1227 # CTT-CAT-CAO-HAT + 1965 11 1223 1217 1218 1224 # HAT-CAO-CAM-HAT + 1966 12 1224 1218 1219 1225 # HAT-CAM-CAP-HAT + 1967 12 1226 1220 1219 1225 # HAT-CAM-CAP-HAT + 1968 11 1227 1221 1220 1226 # HAT-CAO-CAM-HAT + 1969 1 1231 1232 1233 1234 # CAT-CAO-CAM-CAP + 1970 2 1231 1232 1233 1239 # CAT-CAO-CAM-HAT + 1971 1 1231 1236 1235 1234 # CAT-CAO-CAM-CAP + 1972 2 1231 1236 1235 1241 # CAT-CAO-CAM-HAT + 1973 3 1232 1231 1236 1235 # CAO-CAT-CAO-CAM + 1974 4 1232 1231 1236 1242 # CAO-CAT-CAO-HAT + 1975 5 1232 1233 1234 1235 # CAO-CAM-CAP-CAM + 1976 6 1232 1233 1234 1240 # CAO-CAM-CAP-HAT + 1977 7 1237 1231 1232 1233 # CTT-CAT-CAO-CAM + 1978 3 1236 1231 1232 1233 # CAO-CAT-CAO-CAM + 1979 5 1236 1235 1234 1233 # CAO-CAM-CAP-CAM + 1980 8 1233 1234 1235 1241 # CAM-CAP-CAM-HAT + 1981 9 1234 1233 1232 1238 # CAP-CAM-CAO-HAT + 1982 9 1234 1235 1236 1242 # CAP-CAM-CAO-HAT + 1983 8 1235 1234 1233 1239 # CAM-CAP-CAM-HAT + 1984 7 1237 1231 1236 1235 # CTT-CAT-CAO-CAM + 1985 6 1236 1235 1234 1240 # CAO-CAM-CAP-HAT + 1986 4 1236 1231 1232 1238 # CAO-CAT-CAO-HAT + 1987 10 1237 1231 1232 1238 # CTT-CAT-CAO-HAT + 1988 10 1237 1231 1236 1242 # CTT-CAT-CAO-HAT + 1989 11 1238 1232 1233 1239 # HAT-CAO-CAM-HAT + 1990 12 1239 1233 1234 1240 # HAT-CAM-CAP-HAT + 1991 12 1241 1235 1234 1240 # HAT-CAM-CAP-HAT + 1992 11 1242 1236 1235 1241 # HAT-CAO-CAM-HAT + 1993 1 1246 1247 1248 1249 # CAT-CAO-CAM-CAP + 1994 2 1246 1247 1248 1254 # CAT-CAO-CAM-HAT + 1995 1 1246 1251 1250 1249 # CAT-CAO-CAM-CAP + 1996 2 1246 1251 1250 1256 # CAT-CAO-CAM-HAT + 1997 3 1247 1246 1251 1250 # CAO-CAT-CAO-CAM + 1998 4 1247 1246 1251 1257 # CAO-CAT-CAO-HAT + 1999 5 1247 1248 1249 1250 # CAO-CAM-CAP-CAM + 2000 6 1247 1248 1249 1255 # CAO-CAM-CAP-HAT + 2001 7 1252 1246 1247 1248 # CTT-CAT-CAO-CAM + 2002 3 1251 1246 1247 1248 # CAO-CAT-CAO-CAM + 2003 5 1251 1250 1249 1248 # CAO-CAM-CAP-CAM + 2004 8 1248 1249 1250 1256 # CAM-CAP-CAM-HAT + 2005 9 1249 1248 1247 1253 # CAP-CAM-CAO-HAT + 2006 9 1249 1250 1251 1257 # CAP-CAM-CAO-HAT + 2007 8 1250 1249 1248 1254 # CAM-CAP-CAM-HAT + 2008 7 1252 1246 1251 1250 # CTT-CAT-CAO-CAM + 2009 6 1251 1250 1249 1255 # CAO-CAM-CAP-HAT + 2010 4 1251 1246 1247 1253 # CAO-CAT-CAO-HAT + 2011 10 1252 1246 1247 1253 # CTT-CAT-CAO-HAT + 2012 10 1252 1246 1251 1257 # CTT-CAT-CAO-HAT + 2013 11 1253 1247 1248 1254 # HAT-CAO-CAM-HAT + 2014 12 1254 1248 1249 1255 # HAT-CAM-CAP-HAT + 2015 12 1256 1250 1249 1255 # HAT-CAM-CAP-HAT + 2016 11 1257 1251 1250 1256 # HAT-CAO-CAM-HAT + 2017 1 1261 1262 1263 1264 # CAT-CAO-CAM-CAP + 2018 2 1261 1262 1263 1269 # CAT-CAO-CAM-HAT + 2019 1 1261 1266 1265 1264 # CAT-CAO-CAM-CAP + 2020 2 1261 1266 1265 1271 # CAT-CAO-CAM-HAT + 2021 3 1262 1261 1266 1265 # CAO-CAT-CAO-CAM + 2022 4 1262 1261 1266 1272 # CAO-CAT-CAO-HAT + 2023 5 1262 1263 1264 1265 # CAO-CAM-CAP-CAM + 2024 6 1262 1263 1264 1270 # CAO-CAM-CAP-HAT + 2025 7 1267 1261 1262 1263 # CTT-CAT-CAO-CAM + 2026 3 1266 1261 1262 1263 # CAO-CAT-CAO-CAM + 2027 5 1266 1265 1264 1263 # CAO-CAM-CAP-CAM + 2028 8 1263 1264 1265 1271 # CAM-CAP-CAM-HAT + 2029 9 1264 1263 1262 1268 # CAP-CAM-CAO-HAT + 2030 9 1264 1265 1266 1272 # CAP-CAM-CAO-HAT + 2031 8 1265 1264 1263 1269 # CAM-CAP-CAM-HAT + 2032 7 1267 1261 1266 1265 # CTT-CAT-CAO-CAM + 2033 6 1266 1265 1264 1270 # CAO-CAM-CAP-HAT + 2034 4 1266 1261 1262 1268 # CAO-CAT-CAO-HAT + 2035 10 1267 1261 1262 1268 # CTT-CAT-CAO-HAT + 2036 10 1267 1261 1266 1272 # CTT-CAT-CAO-HAT + 2037 11 1268 1262 1263 1269 # HAT-CAO-CAM-HAT + 2038 12 1269 1263 1264 1270 # HAT-CAM-CAP-HAT + 2039 12 1271 1265 1264 1270 # HAT-CAM-CAP-HAT + 2040 11 1272 1266 1265 1271 # HAT-CAO-CAM-HAT + 2041 1 1276 1277 1278 1279 # CAT-CAO-CAM-CAP + 2042 2 1276 1277 1278 1284 # CAT-CAO-CAM-HAT + 2043 1 1276 1281 1280 1279 # CAT-CAO-CAM-CAP + 2044 2 1276 1281 1280 1286 # CAT-CAO-CAM-HAT + 2045 3 1277 1276 1281 1280 # CAO-CAT-CAO-CAM + 2046 4 1277 1276 1281 1287 # CAO-CAT-CAO-HAT + 2047 5 1277 1278 1279 1280 # CAO-CAM-CAP-CAM + 2048 6 1277 1278 1279 1285 # CAO-CAM-CAP-HAT + 2049 7 1282 1276 1277 1278 # CTT-CAT-CAO-CAM + 2050 3 1281 1276 1277 1278 # CAO-CAT-CAO-CAM + 2051 5 1281 1280 1279 1278 # CAO-CAM-CAP-CAM + 2052 8 1278 1279 1280 1286 # CAM-CAP-CAM-HAT + 2053 9 1279 1278 1277 1283 # CAP-CAM-CAO-HAT + 2054 9 1279 1280 1281 1287 # CAP-CAM-CAO-HAT + 2055 8 1280 1279 1278 1284 # CAM-CAP-CAM-HAT + 2056 7 1282 1276 1281 1280 # CTT-CAT-CAO-CAM + 2057 6 1281 1280 1279 1285 # CAO-CAM-CAP-HAT + 2058 4 1281 1276 1277 1283 # CAO-CAT-CAO-HAT + 2059 10 1282 1276 1277 1283 # CTT-CAT-CAO-HAT + 2060 10 1282 1276 1281 1287 # CTT-CAT-CAO-HAT + 2061 11 1283 1277 1278 1284 # HAT-CAO-CAM-HAT + 2062 12 1284 1278 1279 1285 # HAT-CAM-CAP-HAT + 2063 12 1286 1280 1279 1285 # HAT-CAM-CAP-HAT + 2064 11 1287 1281 1280 1286 # HAT-CAO-CAM-HAT + 2065 1 1291 1292 1293 1294 # CAT-CAO-CAM-CAP + 2066 2 1291 1292 1293 1299 # CAT-CAO-CAM-HAT + 2067 1 1291 1296 1295 1294 # CAT-CAO-CAM-CAP + 2068 2 1291 1296 1295 1301 # CAT-CAO-CAM-HAT + 2069 3 1292 1291 1296 1295 # CAO-CAT-CAO-CAM + 2070 4 1292 1291 1296 1302 # CAO-CAT-CAO-HAT + 2071 5 1292 1293 1294 1295 # CAO-CAM-CAP-CAM + 2072 6 1292 1293 1294 1300 # CAO-CAM-CAP-HAT + 2073 7 1297 1291 1292 1293 # CTT-CAT-CAO-CAM + 2074 3 1296 1291 1292 1293 # CAO-CAT-CAO-CAM + 2075 5 1296 1295 1294 1293 # CAO-CAM-CAP-CAM + 2076 8 1293 1294 1295 1301 # CAM-CAP-CAM-HAT + 2077 9 1294 1293 1292 1298 # CAP-CAM-CAO-HAT + 2078 9 1294 1295 1296 1302 # CAP-CAM-CAO-HAT + 2079 8 1295 1294 1293 1299 # CAM-CAP-CAM-HAT + 2080 7 1297 1291 1296 1295 # CTT-CAT-CAO-CAM + 2081 6 1296 1295 1294 1300 # CAO-CAM-CAP-HAT + 2082 4 1296 1291 1292 1298 # CAO-CAT-CAO-HAT + 2083 10 1297 1291 1292 1298 # CTT-CAT-CAO-HAT + 2084 10 1297 1291 1296 1302 # CTT-CAT-CAO-HAT + 2085 11 1298 1292 1293 1299 # HAT-CAO-CAM-HAT + 2086 12 1299 1293 1294 1300 # HAT-CAM-CAP-HAT + 2087 12 1301 1295 1294 1300 # HAT-CAM-CAP-HAT + 2088 11 1302 1296 1295 1301 # HAT-CAO-CAM-HAT + 2089 1 1306 1307 1308 1309 # CAT-CAO-CAM-CAP + 2090 2 1306 1307 1308 1314 # CAT-CAO-CAM-HAT + 2091 1 1306 1311 1310 1309 # CAT-CAO-CAM-CAP + 2092 2 1306 1311 1310 1316 # CAT-CAO-CAM-HAT + 2093 3 1307 1306 1311 1310 # CAO-CAT-CAO-CAM + 2094 4 1307 1306 1311 1317 # CAO-CAT-CAO-HAT + 2095 5 1307 1308 1309 1310 # CAO-CAM-CAP-CAM + 2096 6 1307 1308 1309 1315 # CAO-CAM-CAP-HAT + 2097 7 1312 1306 1307 1308 # CTT-CAT-CAO-CAM + 2098 3 1311 1306 1307 1308 # CAO-CAT-CAO-CAM + 2099 5 1311 1310 1309 1308 # CAO-CAM-CAP-CAM + 2100 8 1308 1309 1310 1316 # CAM-CAP-CAM-HAT + 2101 9 1309 1308 1307 1313 # CAP-CAM-CAO-HAT + 2102 9 1309 1310 1311 1317 # CAP-CAM-CAO-HAT + 2103 8 1310 1309 1308 1314 # CAM-CAP-CAM-HAT + 2104 7 1312 1306 1311 1310 # CTT-CAT-CAO-CAM + 2105 6 1311 1310 1309 1315 # CAO-CAM-CAP-HAT + 2106 4 1311 1306 1307 1313 # CAO-CAT-CAO-HAT + 2107 10 1312 1306 1307 1313 # CTT-CAT-CAO-HAT + 2108 10 1312 1306 1311 1317 # CTT-CAT-CAO-HAT + 2109 11 1313 1307 1308 1314 # HAT-CAO-CAM-HAT + 2110 12 1314 1308 1309 1315 # HAT-CAM-CAP-HAT + 2111 12 1316 1310 1309 1315 # HAT-CAM-CAP-HAT + 2112 11 1317 1311 1310 1316 # HAT-CAO-CAM-HAT + 2113 1 1321 1322 1323 1324 # CAT-CAO-CAM-CAP + 2114 2 1321 1322 1323 1329 # CAT-CAO-CAM-HAT + 2115 1 1321 1326 1325 1324 # CAT-CAO-CAM-CAP + 2116 2 1321 1326 1325 1331 # CAT-CAO-CAM-HAT + 2117 3 1322 1321 1326 1325 # CAO-CAT-CAO-CAM + 2118 4 1322 1321 1326 1332 # CAO-CAT-CAO-HAT + 2119 5 1322 1323 1324 1325 # CAO-CAM-CAP-CAM + 2120 6 1322 1323 1324 1330 # CAO-CAM-CAP-HAT + 2121 7 1327 1321 1322 1323 # CTT-CAT-CAO-CAM + 2122 3 1326 1321 1322 1323 # CAO-CAT-CAO-CAM + 2123 5 1326 1325 1324 1323 # CAO-CAM-CAP-CAM + 2124 8 1323 1324 1325 1331 # CAM-CAP-CAM-HAT + 2125 9 1324 1323 1322 1328 # CAP-CAM-CAO-HAT + 2126 9 1324 1325 1326 1332 # CAP-CAM-CAO-HAT + 2127 8 1325 1324 1323 1329 # CAM-CAP-CAM-HAT + 2128 7 1327 1321 1326 1325 # CTT-CAT-CAO-CAM + 2129 6 1326 1325 1324 1330 # CAO-CAM-CAP-HAT + 2130 4 1326 1321 1322 1328 # CAO-CAT-CAO-HAT + 2131 10 1327 1321 1322 1328 # CTT-CAT-CAO-HAT + 2132 10 1327 1321 1326 1332 # CTT-CAT-CAO-HAT + 2133 11 1328 1322 1323 1329 # HAT-CAO-CAM-HAT + 2134 12 1329 1323 1324 1330 # HAT-CAM-CAP-HAT + 2135 12 1331 1325 1324 1330 # HAT-CAM-CAP-HAT + 2136 11 1332 1326 1325 1331 # HAT-CAO-CAM-HAT + 2137 1 1336 1337 1338 1339 # CAT-CAO-CAM-CAP + 2138 2 1336 1337 1338 1344 # CAT-CAO-CAM-HAT + 2139 1 1336 1341 1340 1339 # CAT-CAO-CAM-CAP + 2140 2 1336 1341 1340 1346 # CAT-CAO-CAM-HAT + 2141 3 1337 1336 1341 1340 # CAO-CAT-CAO-CAM + 2142 4 1337 1336 1341 1347 # CAO-CAT-CAO-HAT + 2143 5 1337 1338 1339 1340 # CAO-CAM-CAP-CAM + 2144 6 1337 1338 1339 1345 # CAO-CAM-CAP-HAT + 2145 7 1342 1336 1337 1338 # CTT-CAT-CAO-CAM + 2146 3 1341 1336 1337 1338 # CAO-CAT-CAO-CAM + 2147 5 1341 1340 1339 1338 # CAO-CAM-CAP-CAM + 2148 8 1338 1339 1340 1346 # CAM-CAP-CAM-HAT + 2149 9 1339 1338 1337 1343 # CAP-CAM-CAO-HAT + 2150 9 1339 1340 1341 1347 # CAP-CAM-CAO-HAT + 2151 8 1340 1339 1338 1344 # CAM-CAP-CAM-HAT + 2152 7 1342 1336 1341 1340 # CTT-CAT-CAO-CAM + 2153 6 1341 1340 1339 1345 # CAO-CAM-CAP-HAT + 2154 4 1341 1336 1337 1343 # CAO-CAT-CAO-HAT + 2155 10 1342 1336 1337 1343 # CTT-CAT-CAO-HAT + 2156 10 1342 1336 1341 1347 # CTT-CAT-CAO-HAT + 2157 11 1343 1337 1338 1344 # HAT-CAO-CAM-HAT + 2158 12 1344 1338 1339 1345 # HAT-CAM-CAP-HAT + 2159 12 1346 1340 1339 1345 # HAT-CAM-CAP-HAT + 2160 11 1347 1341 1340 1346 # HAT-CAO-CAM-HAT + 2161 1 1351 1352 1353 1354 # CAT-CAO-CAM-CAP + 2162 2 1351 1352 1353 1359 # CAT-CAO-CAM-HAT + 2163 1 1351 1356 1355 1354 # CAT-CAO-CAM-CAP + 2164 2 1351 1356 1355 1361 # CAT-CAO-CAM-HAT + 2165 3 1352 1351 1356 1355 # CAO-CAT-CAO-CAM + 2166 4 1352 1351 1356 1362 # CAO-CAT-CAO-HAT + 2167 5 1352 1353 1354 1355 # CAO-CAM-CAP-CAM + 2168 6 1352 1353 1354 1360 # CAO-CAM-CAP-HAT + 2169 7 1357 1351 1352 1353 # CTT-CAT-CAO-CAM + 2170 3 1356 1351 1352 1353 # CAO-CAT-CAO-CAM + 2171 5 1356 1355 1354 1353 # CAO-CAM-CAP-CAM + 2172 8 1353 1354 1355 1361 # CAM-CAP-CAM-HAT + 2173 9 1354 1353 1352 1358 # CAP-CAM-CAO-HAT + 2174 9 1354 1355 1356 1362 # CAP-CAM-CAO-HAT + 2175 8 1355 1354 1353 1359 # CAM-CAP-CAM-HAT + 2176 7 1357 1351 1356 1355 # CTT-CAT-CAO-CAM + 2177 6 1356 1355 1354 1360 # CAO-CAM-CAP-HAT + 2178 4 1356 1351 1352 1358 # CAO-CAT-CAO-HAT + 2179 10 1357 1351 1352 1358 # CTT-CAT-CAO-HAT + 2180 10 1357 1351 1356 1362 # CTT-CAT-CAO-HAT + 2181 11 1358 1352 1353 1359 # HAT-CAO-CAM-HAT + 2182 12 1359 1353 1354 1360 # HAT-CAM-CAP-HAT + 2183 12 1361 1355 1354 1360 # HAT-CAM-CAP-HAT + 2184 11 1362 1356 1355 1361 # HAT-CAO-CAM-HAT + 2185 1 1366 1367 1368 1369 # CAT-CAO-CAM-CAP + 2186 2 1366 1367 1368 1374 # CAT-CAO-CAM-HAT + 2187 1 1366 1371 1370 1369 # CAT-CAO-CAM-CAP + 2188 2 1366 1371 1370 1376 # CAT-CAO-CAM-HAT + 2189 3 1367 1366 1371 1370 # CAO-CAT-CAO-CAM + 2190 4 1367 1366 1371 1377 # CAO-CAT-CAO-HAT + 2191 5 1367 1368 1369 1370 # CAO-CAM-CAP-CAM + 2192 6 1367 1368 1369 1375 # CAO-CAM-CAP-HAT + 2193 7 1372 1366 1367 1368 # CTT-CAT-CAO-CAM + 2194 3 1371 1366 1367 1368 # CAO-CAT-CAO-CAM + 2195 5 1371 1370 1369 1368 # CAO-CAM-CAP-CAM + 2196 8 1368 1369 1370 1376 # CAM-CAP-CAM-HAT + 2197 9 1369 1368 1367 1373 # CAP-CAM-CAO-HAT + 2198 9 1369 1370 1371 1377 # CAP-CAM-CAO-HAT + 2199 8 1370 1369 1368 1374 # CAM-CAP-CAM-HAT + 2200 7 1372 1366 1371 1370 # CTT-CAT-CAO-CAM + 2201 6 1371 1370 1369 1375 # CAO-CAM-CAP-HAT + 2202 4 1371 1366 1367 1373 # CAO-CAT-CAO-HAT + 2203 10 1372 1366 1367 1373 # CTT-CAT-CAO-HAT + 2204 10 1372 1366 1371 1377 # CTT-CAT-CAO-HAT + 2205 11 1373 1367 1368 1374 # HAT-CAO-CAM-HAT + 2206 12 1374 1368 1369 1375 # HAT-CAM-CAP-HAT + 2207 12 1376 1370 1369 1375 # HAT-CAM-CAP-HAT + 2208 11 1377 1371 1370 1376 # HAT-CAO-CAM-HAT + 2209 1 1381 1382 1383 1384 # CAT-CAO-CAM-CAP + 2210 2 1381 1382 1383 1389 # CAT-CAO-CAM-HAT + 2211 1 1381 1386 1385 1384 # CAT-CAO-CAM-CAP + 2212 2 1381 1386 1385 1391 # CAT-CAO-CAM-HAT + 2213 3 1382 1381 1386 1385 # CAO-CAT-CAO-CAM + 2214 4 1382 1381 1386 1392 # CAO-CAT-CAO-HAT + 2215 5 1382 1383 1384 1385 # CAO-CAM-CAP-CAM + 2216 6 1382 1383 1384 1390 # CAO-CAM-CAP-HAT + 2217 7 1387 1381 1382 1383 # CTT-CAT-CAO-CAM + 2218 3 1386 1381 1382 1383 # CAO-CAT-CAO-CAM + 2219 5 1386 1385 1384 1383 # CAO-CAM-CAP-CAM + 2220 8 1383 1384 1385 1391 # CAM-CAP-CAM-HAT + 2221 9 1384 1383 1382 1388 # CAP-CAM-CAO-HAT + 2222 9 1384 1385 1386 1392 # CAP-CAM-CAO-HAT + 2223 8 1385 1384 1383 1389 # CAM-CAP-CAM-HAT + 2224 7 1387 1381 1386 1385 # CTT-CAT-CAO-CAM + 2225 6 1386 1385 1384 1390 # CAO-CAM-CAP-HAT + 2226 4 1386 1381 1382 1388 # CAO-CAT-CAO-HAT + 2227 10 1387 1381 1382 1388 # CTT-CAT-CAO-HAT + 2228 10 1387 1381 1386 1392 # CTT-CAT-CAO-HAT + 2229 11 1388 1382 1383 1389 # HAT-CAO-CAM-HAT + 2230 12 1389 1383 1384 1390 # HAT-CAM-CAP-HAT + 2231 12 1391 1385 1384 1390 # HAT-CAM-CAP-HAT + 2232 11 1392 1386 1385 1391 # HAT-CAO-CAM-HAT + 2233 1 1396 1397 1398 1399 # CAT-CAO-CAM-CAP + 2234 2 1396 1397 1398 1404 # CAT-CAO-CAM-HAT + 2235 1 1396 1401 1400 1399 # CAT-CAO-CAM-CAP + 2236 2 1396 1401 1400 1406 # CAT-CAO-CAM-HAT + 2237 3 1397 1396 1401 1400 # CAO-CAT-CAO-CAM + 2238 4 1397 1396 1401 1407 # CAO-CAT-CAO-HAT + 2239 5 1397 1398 1399 1400 # CAO-CAM-CAP-CAM + 2240 6 1397 1398 1399 1405 # CAO-CAM-CAP-HAT + 2241 7 1402 1396 1397 1398 # CTT-CAT-CAO-CAM + 2242 3 1401 1396 1397 1398 # CAO-CAT-CAO-CAM + 2243 5 1401 1400 1399 1398 # CAO-CAM-CAP-CAM + 2244 8 1398 1399 1400 1406 # CAM-CAP-CAM-HAT + 2245 9 1399 1398 1397 1403 # CAP-CAM-CAO-HAT + 2246 9 1399 1400 1401 1407 # CAP-CAM-CAO-HAT + 2247 8 1400 1399 1398 1404 # CAM-CAP-CAM-HAT + 2248 7 1402 1396 1401 1400 # CTT-CAT-CAO-CAM + 2249 6 1401 1400 1399 1405 # CAO-CAM-CAP-HAT + 2250 4 1401 1396 1397 1403 # CAO-CAT-CAO-HAT + 2251 10 1402 1396 1397 1403 # CTT-CAT-CAO-HAT + 2252 10 1402 1396 1401 1407 # CTT-CAT-CAO-HAT + 2253 11 1403 1397 1398 1404 # HAT-CAO-CAM-HAT + 2254 12 1404 1398 1399 1405 # HAT-CAM-CAP-HAT + 2255 12 1406 1400 1399 1405 # HAT-CAM-CAP-HAT + 2256 11 1407 1401 1400 1406 # HAT-CAO-CAM-HAT + 2257 1 1411 1412 1413 1414 # CAT-CAO-CAM-CAP + 2258 2 1411 1412 1413 1419 # CAT-CAO-CAM-HAT + 2259 1 1411 1416 1415 1414 # CAT-CAO-CAM-CAP + 2260 2 1411 1416 1415 1421 # CAT-CAO-CAM-HAT + 2261 3 1412 1411 1416 1415 # CAO-CAT-CAO-CAM + 2262 4 1412 1411 1416 1422 # CAO-CAT-CAO-HAT + 2263 5 1412 1413 1414 1415 # CAO-CAM-CAP-CAM + 2264 6 1412 1413 1414 1420 # CAO-CAM-CAP-HAT + 2265 7 1417 1411 1412 1413 # CTT-CAT-CAO-CAM + 2266 3 1416 1411 1412 1413 # CAO-CAT-CAO-CAM + 2267 5 1416 1415 1414 1413 # CAO-CAM-CAP-CAM + 2268 8 1413 1414 1415 1421 # CAM-CAP-CAM-HAT + 2269 9 1414 1413 1412 1418 # CAP-CAM-CAO-HAT + 2270 9 1414 1415 1416 1422 # CAP-CAM-CAO-HAT + 2271 8 1415 1414 1413 1419 # CAM-CAP-CAM-HAT + 2272 7 1417 1411 1416 1415 # CTT-CAT-CAO-CAM + 2273 6 1416 1415 1414 1420 # CAO-CAM-CAP-HAT + 2274 4 1416 1411 1412 1418 # CAO-CAT-CAO-HAT + 2275 10 1417 1411 1412 1418 # CTT-CAT-CAO-HAT + 2276 10 1417 1411 1416 1422 # CTT-CAT-CAO-HAT + 2277 11 1418 1412 1413 1419 # HAT-CAO-CAM-HAT + 2278 12 1419 1413 1414 1420 # HAT-CAM-CAP-HAT + 2279 12 1421 1415 1414 1420 # HAT-CAM-CAP-HAT + 2280 11 1422 1416 1415 1421 # HAT-CAO-CAM-HAT + 2281 1 1426 1427 1428 1429 # CAT-CAO-CAM-CAP + 2282 2 1426 1427 1428 1434 # CAT-CAO-CAM-HAT + 2283 1 1426 1431 1430 1429 # CAT-CAO-CAM-CAP + 2284 2 1426 1431 1430 1436 # CAT-CAO-CAM-HAT + 2285 3 1427 1426 1431 1430 # CAO-CAT-CAO-CAM + 2286 4 1427 1426 1431 1437 # CAO-CAT-CAO-HAT + 2287 5 1427 1428 1429 1430 # CAO-CAM-CAP-CAM + 2288 6 1427 1428 1429 1435 # CAO-CAM-CAP-HAT + 2289 7 1432 1426 1427 1428 # CTT-CAT-CAO-CAM + 2290 3 1431 1426 1427 1428 # CAO-CAT-CAO-CAM + 2291 5 1431 1430 1429 1428 # CAO-CAM-CAP-CAM + 2292 8 1428 1429 1430 1436 # CAM-CAP-CAM-HAT + 2293 9 1429 1428 1427 1433 # CAP-CAM-CAO-HAT + 2294 9 1429 1430 1431 1437 # CAP-CAM-CAO-HAT + 2295 8 1430 1429 1428 1434 # CAM-CAP-CAM-HAT + 2296 7 1432 1426 1431 1430 # CTT-CAT-CAO-CAM + 2297 6 1431 1430 1429 1435 # CAO-CAM-CAP-HAT + 2298 4 1431 1426 1427 1433 # CAO-CAT-CAO-HAT + 2299 10 1432 1426 1427 1433 # CTT-CAT-CAO-HAT + 2300 10 1432 1426 1431 1437 # CTT-CAT-CAO-HAT + 2301 11 1433 1427 1428 1434 # HAT-CAO-CAM-HAT + 2302 12 1434 1428 1429 1435 # HAT-CAM-CAP-HAT + 2303 12 1436 1430 1429 1435 # HAT-CAM-CAP-HAT + 2304 11 1437 1431 1430 1436 # HAT-CAO-CAM-HAT + 2305 1 1441 1442 1443 1444 # CAT-CAO-CAM-CAP + 2306 2 1441 1442 1443 1449 # CAT-CAO-CAM-HAT + 2307 1 1441 1446 1445 1444 # CAT-CAO-CAM-CAP + 2308 2 1441 1446 1445 1451 # CAT-CAO-CAM-HAT + 2309 3 1442 1441 1446 1445 # CAO-CAT-CAO-CAM + 2310 4 1442 1441 1446 1452 # CAO-CAT-CAO-HAT + 2311 5 1442 1443 1444 1445 # CAO-CAM-CAP-CAM + 2312 6 1442 1443 1444 1450 # CAO-CAM-CAP-HAT + 2313 7 1447 1441 1442 1443 # CTT-CAT-CAO-CAM + 2314 3 1446 1441 1442 1443 # CAO-CAT-CAO-CAM + 2315 5 1446 1445 1444 1443 # CAO-CAM-CAP-CAM + 2316 8 1443 1444 1445 1451 # CAM-CAP-CAM-HAT + 2317 9 1444 1443 1442 1448 # CAP-CAM-CAO-HAT + 2318 9 1444 1445 1446 1452 # CAP-CAM-CAO-HAT + 2319 8 1445 1444 1443 1449 # CAM-CAP-CAM-HAT + 2320 7 1447 1441 1446 1445 # CTT-CAT-CAO-CAM + 2321 6 1446 1445 1444 1450 # CAO-CAM-CAP-HAT + 2322 4 1446 1441 1442 1448 # CAO-CAT-CAO-HAT + 2323 10 1447 1441 1442 1448 # CTT-CAT-CAO-HAT + 2324 10 1447 1441 1446 1452 # CTT-CAT-CAO-HAT + 2325 11 1448 1442 1443 1449 # HAT-CAO-CAM-HAT + 2326 12 1449 1443 1444 1450 # HAT-CAM-CAP-HAT + 2327 12 1451 1445 1444 1450 # HAT-CAM-CAP-HAT + 2328 11 1452 1446 1445 1451 # HAT-CAO-CAM-HAT + 2329 1 1456 1457 1458 1459 # CAT-CAO-CAM-CAP + 2330 2 1456 1457 1458 1464 # CAT-CAO-CAM-HAT + 2331 1 1456 1461 1460 1459 # CAT-CAO-CAM-CAP + 2332 2 1456 1461 1460 1466 # CAT-CAO-CAM-HAT + 2333 3 1457 1456 1461 1460 # CAO-CAT-CAO-CAM + 2334 4 1457 1456 1461 1467 # CAO-CAT-CAO-HAT + 2335 5 1457 1458 1459 1460 # CAO-CAM-CAP-CAM + 2336 6 1457 1458 1459 1465 # CAO-CAM-CAP-HAT + 2337 7 1462 1456 1457 1458 # CTT-CAT-CAO-CAM + 2338 3 1461 1456 1457 1458 # CAO-CAT-CAO-CAM + 2339 5 1461 1460 1459 1458 # CAO-CAM-CAP-CAM + 2340 8 1458 1459 1460 1466 # CAM-CAP-CAM-HAT + 2341 9 1459 1458 1457 1463 # CAP-CAM-CAO-HAT + 2342 9 1459 1460 1461 1467 # CAP-CAM-CAO-HAT + 2343 8 1460 1459 1458 1464 # CAM-CAP-CAM-HAT + 2344 7 1462 1456 1461 1460 # CTT-CAT-CAO-CAM + 2345 6 1461 1460 1459 1465 # CAO-CAM-CAP-HAT + 2346 4 1461 1456 1457 1463 # CAO-CAT-CAO-HAT + 2347 10 1462 1456 1457 1463 # CTT-CAT-CAO-HAT + 2348 10 1462 1456 1461 1467 # CTT-CAT-CAO-HAT + 2349 11 1463 1457 1458 1464 # HAT-CAO-CAM-HAT + 2350 12 1464 1458 1459 1465 # HAT-CAM-CAP-HAT + 2351 12 1466 1460 1459 1465 # HAT-CAM-CAP-HAT + 2352 11 1467 1461 1460 1466 # HAT-CAO-CAM-HAT + 2353 1 1471 1472 1473 1474 # CAT-CAO-CAM-CAP + 2354 2 1471 1472 1473 1479 # CAT-CAO-CAM-HAT + 2355 1 1471 1476 1475 1474 # CAT-CAO-CAM-CAP + 2356 2 1471 1476 1475 1481 # CAT-CAO-CAM-HAT + 2357 3 1472 1471 1476 1475 # CAO-CAT-CAO-CAM + 2358 4 1472 1471 1476 1482 # CAO-CAT-CAO-HAT + 2359 5 1472 1473 1474 1475 # CAO-CAM-CAP-CAM + 2360 6 1472 1473 1474 1480 # CAO-CAM-CAP-HAT + 2361 7 1477 1471 1472 1473 # CTT-CAT-CAO-CAM + 2362 3 1476 1471 1472 1473 # CAO-CAT-CAO-CAM + 2363 5 1476 1475 1474 1473 # CAO-CAM-CAP-CAM + 2364 8 1473 1474 1475 1481 # CAM-CAP-CAM-HAT + 2365 9 1474 1473 1472 1478 # CAP-CAM-CAO-HAT + 2366 9 1474 1475 1476 1482 # CAP-CAM-CAO-HAT + 2367 8 1475 1474 1473 1479 # CAM-CAP-CAM-HAT + 2368 7 1477 1471 1476 1475 # CTT-CAT-CAO-CAM + 2369 6 1476 1475 1474 1480 # CAO-CAM-CAP-HAT + 2370 4 1476 1471 1472 1478 # CAO-CAT-CAO-HAT + 2371 10 1477 1471 1472 1478 # CTT-CAT-CAO-HAT + 2372 10 1477 1471 1476 1482 # CTT-CAT-CAO-HAT + 2373 11 1478 1472 1473 1479 # HAT-CAO-CAM-HAT + 2374 12 1479 1473 1474 1480 # HAT-CAM-CAP-HAT + 2375 12 1481 1475 1474 1480 # HAT-CAM-CAP-HAT + 2376 11 1482 1476 1475 1481 # HAT-CAO-CAM-HAT + 2377 1 1486 1487 1488 1489 # CAT-CAO-CAM-CAP + 2378 2 1486 1487 1488 1494 # CAT-CAO-CAM-HAT + 2379 1 1486 1491 1490 1489 # CAT-CAO-CAM-CAP + 2380 2 1486 1491 1490 1496 # CAT-CAO-CAM-HAT + 2381 3 1487 1486 1491 1490 # CAO-CAT-CAO-CAM + 2382 4 1487 1486 1491 1497 # CAO-CAT-CAO-HAT + 2383 5 1487 1488 1489 1490 # CAO-CAM-CAP-CAM + 2384 6 1487 1488 1489 1495 # CAO-CAM-CAP-HAT + 2385 7 1492 1486 1487 1488 # CTT-CAT-CAO-CAM + 2386 3 1491 1486 1487 1488 # CAO-CAT-CAO-CAM + 2387 5 1491 1490 1489 1488 # CAO-CAM-CAP-CAM + 2388 8 1488 1489 1490 1496 # CAM-CAP-CAM-HAT + 2389 9 1489 1488 1487 1493 # CAP-CAM-CAO-HAT + 2390 9 1489 1490 1491 1497 # CAP-CAM-CAO-HAT + 2391 8 1490 1489 1488 1494 # CAM-CAP-CAM-HAT + 2392 7 1492 1486 1491 1490 # CTT-CAT-CAO-CAM + 2393 6 1491 1490 1489 1495 # CAO-CAM-CAP-HAT + 2394 4 1491 1486 1487 1493 # CAO-CAT-CAO-HAT + 2395 10 1492 1486 1487 1493 # CTT-CAT-CAO-HAT + 2396 10 1492 1486 1491 1497 # CTT-CAT-CAO-HAT + 2397 11 1493 1487 1488 1494 # HAT-CAO-CAM-HAT + 2398 12 1494 1488 1489 1495 # HAT-CAM-CAP-HAT + 2399 12 1496 1490 1489 1495 # HAT-CAM-CAP-HAT + 2400 11 1497 1491 1490 1496 # HAT-CAO-CAM-HAT + 2401 1 1501 1502 1503 1504 # CAT-CAO-CAM-CAP + 2402 2 1501 1502 1503 1509 # CAT-CAO-CAM-HAT + 2403 1 1501 1506 1505 1504 # CAT-CAO-CAM-CAP + 2404 2 1501 1506 1505 1511 # CAT-CAO-CAM-HAT + 2405 3 1502 1501 1506 1505 # CAO-CAT-CAO-CAM + 2406 4 1502 1501 1506 1512 # CAO-CAT-CAO-HAT + 2407 5 1502 1503 1504 1505 # CAO-CAM-CAP-CAM + 2408 6 1502 1503 1504 1510 # CAO-CAM-CAP-HAT + 2409 7 1507 1501 1502 1503 # CTT-CAT-CAO-CAM + 2410 3 1506 1501 1502 1503 # CAO-CAT-CAO-CAM + 2411 5 1506 1505 1504 1503 # CAO-CAM-CAP-CAM + 2412 8 1503 1504 1505 1511 # CAM-CAP-CAM-HAT + 2413 9 1504 1503 1502 1508 # CAP-CAM-CAO-HAT + 2414 9 1504 1505 1506 1512 # CAP-CAM-CAO-HAT + 2415 8 1505 1504 1503 1509 # CAM-CAP-CAM-HAT + 2416 7 1507 1501 1506 1505 # CTT-CAT-CAO-CAM + 2417 6 1506 1505 1504 1510 # CAO-CAM-CAP-HAT + 2418 4 1506 1501 1502 1508 # CAO-CAT-CAO-HAT + 2419 10 1507 1501 1502 1508 # CTT-CAT-CAO-HAT + 2420 10 1507 1501 1506 1512 # CTT-CAT-CAO-HAT + 2421 11 1508 1502 1503 1509 # HAT-CAO-CAM-HAT + 2422 12 1509 1503 1504 1510 # HAT-CAM-CAP-HAT + 2423 12 1511 1505 1504 1510 # HAT-CAM-CAP-HAT + 2424 11 1512 1506 1505 1511 # HAT-CAO-CAM-HAT + 2425 1 1516 1517 1518 1519 # CAT-CAO-CAM-CAP + 2426 2 1516 1517 1518 1524 # CAT-CAO-CAM-HAT + 2427 1 1516 1521 1520 1519 # CAT-CAO-CAM-CAP + 2428 2 1516 1521 1520 1526 # CAT-CAO-CAM-HAT + 2429 3 1517 1516 1521 1520 # CAO-CAT-CAO-CAM + 2430 4 1517 1516 1521 1527 # CAO-CAT-CAO-HAT + 2431 5 1517 1518 1519 1520 # CAO-CAM-CAP-CAM + 2432 6 1517 1518 1519 1525 # CAO-CAM-CAP-HAT + 2433 7 1522 1516 1517 1518 # CTT-CAT-CAO-CAM + 2434 3 1521 1516 1517 1518 # CAO-CAT-CAO-CAM + 2435 5 1521 1520 1519 1518 # CAO-CAM-CAP-CAM + 2436 8 1518 1519 1520 1526 # CAM-CAP-CAM-HAT + 2437 9 1519 1518 1517 1523 # CAP-CAM-CAO-HAT + 2438 9 1519 1520 1521 1527 # CAP-CAM-CAO-HAT + 2439 8 1520 1519 1518 1524 # CAM-CAP-CAM-HAT + 2440 7 1522 1516 1521 1520 # CTT-CAT-CAO-CAM + 2441 6 1521 1520 1519 1525 # CAO-CAM-CAP-HAT + 2442 4 1521 1516 1517 1523 # CAO-CAT-CAO-HAT + 2443 10 1522 1516 1517 1523 # CTT-CAT-CAO-HAT + 2444 10 1522 1516 1521 1527 # CTT-CAT-CAO-HAT + 2445 11 1523 1517 1518 1524 # HAT-CAO-CAM-HAT + 2446 12 1524 1518 1519 1525 # HAT-CAM-CAP-HAT + 2447 12 1526 1520 1519 1525 # HAT-CAM-CAP-HAT + 2448 11 1527 1521 1520 1526 # HAT-CAO-CAM-HAT + 2449 1 1531 1532 1533 1534 # CAT-CAO-CAM-CAP + 2450 2 1531 1532 1533 1539 # CAT-CAO-CAM-HAT + 2451 1 1531 1536 1535 1534 # CAT-CAO-CAM-CAP + 2452 2 1531 1536 1535 1541 # CAT-CAO-CAM-HAT + 2453 3 1532 1531 1536 1535 # CAO-CAT-CAO-CAM + 2454 4 1532 1531 1536 1542 # CAO-CAT-CAO-HAT + 2455 5 1532 1533 1534 1535 # CAO-CAM-CAP-CAM + 2456 6 1532 1533 1534 1540 # CAO-CAM-CAP-HAT + 2457 7 1537 1531 1532 1533 # CTT-CAT-CAO-CAM + 2458 3 1536 1531 1532 1533 # CAO-CAT-CAO-CAM + 2459 5 1536 1535 1534 1533 # CAO-CAM-CAP-CAM + 2460 8 1533 1534 1535 1541 # CAM-CAP-CAM-HAT + 2461 9 1534 1533 1532 1538 # CAP-CAM-CAO-HAT + 2462 9 1534 1535 1536 1542 # CAP-CAM-CAO-HAT + 2463 8 1535 1534 1533 1539 # CAM-CAP-CAM-HAT + 2464 7 1537 1531 1536 1535 # CTT-CAT-CAO-CAM + 2465 6 1536 1535 1534 1540 # CAO-CAM-CAP-HAT + 2466 4 1536 1531 1532 1538 # CAO-CAT-CAO-HAT + 2467 10 1537 1531 1532 1538 # CTT-CAT-CAO-HAT + 2468 10 1537 1531 1536 1542 # CTT-CAT-CAO-HAT + 2469 11 1538 1532 1533 1539 # HAT-CAO-CAM-HAT + 2470 12 1539 1533 1534 1540 # HAT-CAM-CAP-HAT + 2471 12 1541 1535 1534 1540 # HAT-CAM-CAP-HAT + 2472 11 1542 1536 1535 1541 # HAT-CAO-CAM-HAT + 2473 1 1546 1547 1548 1549 # CAT-CAO-CAM-CAP + 2474 2 1546 1547 1548 1554 # CAT-CAO-CAM-HAT + 2475 1 1546 1551 1550 1549 # CAT-CAO-CAM-CAP + 2476 2 1546 1551 1550 1556 # CAT-CAO-CAM-HAT + 2477 3 1547 1546 1551 1550 # CAO-CAT-CAO-CAM + 2478 4 1547 1546 1551 1557 # CAO-CAT-CAO-HAT + 2479 5 1547 1548 1549 1550 # CAO-CAM-CAP-CAM + 2480 6 1547 1548 1549 1555 # CAO-CAM-CAP-HAT + 2481 7 1552 1546 1547 1548 # CTT-CAT-CAO-CAM + 2482 3 1551 1546 1547 1548 # CAO-CAT-CAO-CAM + 2483 5 1551 1550 1549 1548 # CAO-CAM-CAP-CAM + 2484 8 1548 1549 1550 1556 # CAM-CAP-CAM-HAT + 2485 9 1549 1548 1547 1553 # CAP-CAM-CAO-HAT + 2486 9 1549 1550 1551 1557 # CAP-CAM-CAO-HAT + 2487 8 1550 1549 1548 1554 # CAM-CAP-CAM-HAT + 2488 7 1552 1546 1551 1550 # CTT-CAT-CAO-CAM + 2489 6 1551 1550 1549 1555 # CAO-CAM-CAP-HAT + 2490 4 1551 1546 1547 1553 # CAO-CAT-CAO-HAT + 2491 10 1552 1546 1547 1553 # CTT-CAT-CAO-HAT + 2492 10 1552 1546 1551 1557 # CTT-CAT-CAO-HAT + 2493 11 1553 1547 1548 1554 # HAT-CAO-CAM-HAT + 2494 12 1554 1548 1549 1555 # HAT-CAM-CAP-HAT + 2495 12 1556 1550 1549 1555 # HAT-CAM-CAP-HAT + 2496 11 1557 1551 1550 1556 # HAT-CAO-CAM-HAT + 2497 1 1561 1562 1563 1564 # CAT-CAO-CAM-CAP + 2498 2 1561 1562 1563 1569 # CAT-CAO-CAM-HAT + 2499 1 1561 1566 1565 1564 # CAT-CAO-CAM-CAP + 2500 2 1561 1566 1565 1571 # CAT-CAO-CAM-HAT + 2501 3 1562 1561 1566 1565 # CAO-CAT-CAO-CAM + 2502 4 1562 1561 1566 1572 # CAO-CAT-CAO-HAT + 2503 5 1562 1563 1564 1565 # CAO-CAM-CAP-CAM + 2504 6 1562 1563 1564 1570 # CAO-CAM-CAP-HAT + 2505 7 1567 1561 1562 1563 # CTT-CAT-CAO-CAM + 2506 3 1566 1561 1562 1563 # CAO-CAT-CAO-CAM + 2507 5 1566 1565 1564 1563 # CAO-CAM-CAP-CAM + 2508 8 1563 1564 1565 1571 # CAM-CAP-CAM-HAT + 2509 9 1564 1563 1562 1568 # CAP-CAM-CAO-HAT + 2510 9 1564 1565 1566 1572 # CAP-CAM-CAO-HAT + 2511 8 1565 1564 1563 1569 # CAM-CAP-CAM-HAT + 2512 7 1567 1561 1566 1565 # CTT-CAT-CAO-CAM + 2513 6 1566 1565 1564 1570 # CAO-CAM-CAP-HAT + 2514 4 1566 1561 1562 1568 # CAO-CAT-CAO-HAT + 2515 10 1567 1561 1562 1568 # CTT-CAT-CAO-HAT + 2516 10 1567 1561 1566 1572 # CTT-CAT-CAO-HAT + 2517 11 1568 1562 1563 1569 # HAT-CAO-CAM-HAT + 2518 12 1569 1563 1564 1570 # HAT-CAM-CAP-HAT + 2519 12 1571 1565 1564 1570 # HAT-CAM-CAP-HAT + 2520 11 1572 1566 1565 1571 # HAT-CAO-CAM-HAT + 2521 1 1576 1577 1578 1579 # CAT-CAO-CAM-CAP + 2522 2 1576 1577 1578 1584 # CAT-CAO-CAM-HAT + 2523 1 1576 1581 1580 1579 # CAT-CAO-CAM-CAP + 2524 2 1576 1581 1580 1586 # CAT-CAO-CAM-HAT + 2525 3 1577 1576 1581 1580 # CAO-CAT-CAO-CAM + 2526 4 1577 1576 1581 1587 # CAO-CAT-CAO-HAT + 2527 5 1577 1578 1579 1580 # CAO-CAM-CAP-CAM + 2528 6 1577 1578 1579 1585 # CAO-CAM-CAP-HAT + 2529 7 1582 1576 1577 1578 # CTT-CAT-CAO-CAM + 2530 3 1581 1576 1577 1578 # CAO-CAT-CAO-CAM + 2531 5 1581 1580 1579 1578 # CAO-CAM-CAP-CAM + 2532 8 1578 1579 1580 1586 # CAM-CAP-CAM-HAT + 2533 9 1579 1578 1577 1583 # CAP-CAM-CAO-HAT + 2534 9 1579 1580 1581 1587 # CAP-CAM-CAO-HAT + 2535 8 1580 1579 1578 1584 # CAM-CAP-CAM-HAT + 2536 7 1582 1576 1581 1580 # CTT-CAT-CAO-CAM + 2537 6 1581 1580 1579 1585 # CAO-CAM-CAP-HAT + 2538 4 1581 1576 1577 1583 # CAO-CAT-CAO-HAT + 2539 10 1582 1576 1577 1583 # CTT-CAT-CAO-HAT + 2540 10 1582 1576 1581 1587 # CTT-CAT-CAO-HAT + 2541 11 1583 1577 1578 1584 # HAT-CAO-CAM-HAT + 2542 12 1584 1578 1579 1585 # HAT-CAM-CAP-HAT + 2543 12 1586 1580 1579 1585 # HAT-CAM-CAP-HAT + 2544 11 1587 1581 1580 1586 # HAT-CAO-CAM-HAT + 2545 1 1591 1592 1593 1594 # CAT-CAO-CAM-CAP + 2546 2 1591 1592 1593 1599 # CAT-CAO-CAM-HAT + 2547 1 1591 1596 1595 1594 # CAT-CAO-CAM-CAP + 2548 2 1591 1596 1595 1601 # CAT-CAO-CAM-HAT + 2549 3 1592 1591 1596 1595 # CAO-CAT-CAO-CAM + 2550 4 1592 1591 1596 1602 # CAO-CAT-CAO-HAT + 2551 5 1592 1593 1594 1595 # CAO-CAM-CAP-CAM + 2552 6 1592 1593 1594 1600 # CAO-CAM-CAP-HAT + 2553 7 1597 1591 1592 1593 # CTT-CAT-CAO-CAM + 2554 3 1596 1591 1592 1593 # CAO-CAT-CAO-CAM + 2555 5 1596 1595 1594 1593 # CAO-CAM-CAP-CAM + 2556 8 1593 1594 1595 1601 # CAM-CAP-CAM-HAT + 2557 9 1594 1593 1592 1598 # CAP-CAM-CAO-HAT + 2558 9 1594 1595 1596 1602 # CAP-CAM-CAO-HAT + 2559 8 1595 1594 1593 1599 # CAM-CAP-CAM-HAT + 2560 7 1597 1591 1596 1595 # CTT-CAT-CAO-CAM + 2561 6 1596 1595 1594 1600 # CAO-CAM-CAP-HAT + 2562 4 1596 1591 1592 1598 # CAO-CAT-CAO-HAT + 2563 10 1597 1591 1592 1598 # CTT-CAT-CAO-HAT + 2564 10 1597 1591 1596 1602 # CTT-CAT-CAO-HAT + 2565 11 1598 1592 1593 1599 # HAT-CAO-CAM-HAT + 2566 12 1599 1593 1594 1600 # HAT-CAM-CAP-HAT + 2567 12 1601 1595 1594 1600 # HAT-CAM-CAP-HAT + 2568 11 1602 1596 1595 1601 # HAT-CAO-CAM-HAT + 2569 1 1606 1607 1608 1609 # CAT-CAO-CAM-CAP + 2570 2 1606 1607 1608 1614 # CAT-CAO-CAM-HAT + 2571 1 1606 1611 1610 1609 # CAT-CAO-CAM-CAP + 2572 2 1606 1611 1610 1616 # CAT-CAO-CAM-HAT + 2573 3 1607 1606 1611 1610 # CAO-CAT-CAO-CAM + 2574 4 1607 1606 1611 1617 # CAO-CAT-CAO-HAT + 2575 5 1607 1608 1609 1610 # CAO-CAM-CAP-CAM + 2576 6 1607 1608 1609 1615 # CAO-CAM-CAP-HAT + 2577 7 1612 1606 1607 1608 # CTT-CAT-CAO-CAM + 2578 3 1611 1606 1607 1608 # CAO-CAT-CAO-CAM + 2579 5 1611 1610 1609 1608 # CAO-CAM-CAP-CAM + 2580 8 1608 1609 1610 1616 # CAM-CAP-CAM-HAT + 2581 9 1609 1608 1607 1613 # CAP-CAM-CAO-HAT + 2582 9 1609 1610 1611 1617 # CAP-CAM-CAO-HAT + 2583 8 1610 1609 1608 1614 # CAM-CAP-CAM-HAT + 2584 7 1612 1606 1611 1610 # CTT-CAT-CAO-CAM + 2585 6 1611 1610 1609 1615 # CAO-CAM-CAP-HAT + 2586 4 1611 1606 1607 1613 # CAO-CAT-CAO-HAT + 2587 10 1612 1606 1607 1613 # CTT-CAT-CAO-HAT + 2588 10 1612 1606 1611 1617 # CTT-CAT-CAO-HAT + 2589 11 1613 1607 1608 1614 # HAT-CAO-CAM-HAT + 2590 12 1614 1608 1609 1615 # HAT-CAM-CAP-HAT + 2591 12 1616 1610 1609 1615 # HAT-CAM-CAP-HAT + 2592 11 1617 1611 1610 1616 # HAT-CAO-CAM-HAT + 2593 1 1621 1622 1623 1624 # CAT-CAO-CAM-CAP + 2594 2 1621 1622 1623 1629 # CAT-CAO-CAM-HAT + 2595 1 1621 1626 1625 1624 # CAT-CAO-CAM-CAP + 2596 2 1621 1626 1625 1631 # CAT-CAO-CAM-HAT + 2597 3 1622 1621 1626 1625 # CAO-CAT-CAO-CAM + 2598 4 1622 1621 1626 1632 # CAO-CAT-CAO-HAT + 2599 5 1622 1623 1624 1625 # CAO-CAM-CAP-CAM + 2600 6 1622 1623 1624 1630 # CAO-CAM-CAP-HAT + 2601 7 1627 1621 1622 1623 # CTT-CAT-CAO-CAM + 2602 3 1626 1621 1622 1623 # CAO-CAT-CAO-CAM + 2603 5 1626 1625 1624 1623 # CAO-CAM-CAP-CAM + 2604 8 1623 1624 1625 1631 # CAM-CAP-CAM-HAT + 2605 9 1624 1623 1622 1628 # CAP-CAM-CAO-HAT + 2606 9 1624 1625 1626 1632 # CAP-CAM-CAO-HAT + 2607 8 1625 1624 1623 1629 # CAM-CAP-CAM-HAT + 2608 7 1627 1621 1626 1625 # CTT-CAT-CAO-CAM + 2609 6 1626 1625 1624 1630 # CAO-CAM-CAP-HAT + 2610 4 1626 1621 1622 1628 # CAO-CAT-CAO-HAT + 2611 10 1627 1621 1622 1628 # CTT-CAT-CAO-HAT + 2612 10 1627 1621 1626 1632 # CTT-CAT-CAO-HAT + 2613 11 1628 1622 1623 1629 # HAT-CAO-CAM-HAT + 2614 12 1629 1623 1624 1630 # HAT-CAM-CAP-HAT + 2615 12 1631 1625 1624 1630 # HAT-CAM-CAP-HAT + 2616 11 1632 1626 1625 1631 # HAT-CAO-CAM-HAT + 2617 1 1636 1637 1638 1639 # CAT-CAO-CAM-CAP + 2618 2 1636 1637 1638 1644 # CAT-CAO-CAM-HAT + 2619 1 1636 1641 1640 1639 # CAT-CAO-CAM-CAP + 2620 2 1636 1641 1640 1646 # CAT-CAO-CAM-HAT + 2621 3 1637 1636 1641 1640 # CAO-CAT-CAO-CAM + 2622 4 1637 1636 1641 1647 # CAO-CAT-CAO-HAT + 2623 5 1637 1638 1639 1640 # CAO-CAM-CAP-CAM + 2624 6 1637 1638 1639 1645 # CAO-CAM-CAP-HAT + 2625 7 1642 1636 1637 1638 # CTT-CAT-CAO-CAM + 2626 3 1641 1636 1637 1638 # CAO-CAT-CAO-CAM + 2627 5 1641 1640 1639 1638 # CAO-CAM-CAP-CAM + 2628 8 1638 1639 1640 1646 # CAM-CAP-CAM-HAT + 2629 9 1639 1638 1637 1643 # CAP-CAM-CAO-HAT + 2630 9 1639 1640 1641 1647 # CAP-CAM-CAO-HAT + 2631 8 1640 1639 1638 1644 # CAM-CAP-CAM-HAT + 2632 7 1642 1636 1641 1640 # CTT-CAT-CAO-CAM + 2633 6 1641 1640 1639 1645 # CAO-CAM-CAP-HAT + 2634 4 1641 1636 1637 1643 # CAO-CAT-CAO-HAT + 2635 10 1642 1636 1637 1643 # CTT-CAT-CAO-HAT + 2636 10 1642 1636 1641 1647 # CTT-CAT-CAO-HAT + 2637 11 1643 1637 1638 1644 # HAT-CAO-CAM-HAT + 2638 12 1644 1638 1639 1645 # HAT-CAM-CAP-HAT + 2639 12 1646 1640 1639 1645 # HAT-CAM-CAP-HAT + 2640 11 1647 1641 1640 1646 # HAT-CAO-CAM-HAT + 2641 1 1651 1652 1653 1654 # CAT-CAO-CAM-CAP + 2642 2 1651 1652 1653 1659 # CAT-CAO-CAM-HAT + 2643 1 1651 1656 1655 1654 # CAT-CAO-CAM-CAP + 2644 2 1651 1656 1655 1661 # CAT-CAO-CAM-HAT + 2645 3 1652 1651 1656 1655 # CAO-CAT-CAO-CAM + 2646 4 1652 1651 1656 1662 # CAO-CAT-CAO-HAT + 2647 5 1652 1653 1654 1655 # CAO-CAM-CAP-CAM + 2648 6 1652 1653 1654 1660 # CAO-CAM-CAP-HAT + 2649 7 1657 1651 1652 1653 # CTT-CAT-CAO-CAM + 2650 3 1656 1651 1652 1653 # CAO-CAT-CAO-CAM + 2651 5 1656 1655 1654 1653 # CAO-CAM-CAP-CAM + 2652 8 1653 1654 1655 1661 # CAM-CAP-CAM-HAT + 2653 9 1654 1653 1652 1658 # CAP-CAM-CAO-HAT + 2654 9 1654 1655 1656 1662 # CAP-CAM-CAO-HAT + 2655 8 1655 1654 1653 1659 # CAM-CAP-CAM-HAT + 2656 7 1657 1651 1656 1655 # CTT-CAT-CAO-CAM + 2657 6 1656 1655 1654 1660 # CAO-CAM-CAP-HAT + 2658 4 1656 1651 1652 1658 # CAO-CAT-CAO-HAT + 2659 10 1657 1651 1652 1658 # CTT-CAT-CAO-HAT + 2660 10 1657 1651 1656 1662 # CTT-CAT-CAO-HAT + 2661 11 1658 1652 1653 1659 # HAT-CAO-CAM-HAT + 2662 12 1659 1653 1654 1660 # HAT-CAM-CAP-HAT + 2663 12 1661 1655 1654 1660 # HAT-CAM-CAP-HAT + 2664 11 1662 1656 1655 1661 # HAT-CAO-CAM-HAT + 2665 1 1666 1667 1668 1669 # CAT-CAO-CAM-CAP + 2666 2 1666 1667 1668 1674 # CAT-CAO-CAM-HAT + 2667 1 1666 1671 1670 1669 # CAT-CAO-CAM-CAP + 2668 2 1666 1671 1670 1676 # CAT-CAO-CAM-HAT + 2669 3 1667 1666 1671 1670 # CAO-CAT-CAO-CAM + 2670 4 1667 1666 1671 1677 # CAO-CAT-CAO-HAT + 2671 5 1667 1668 1669 1670 # CAO-CAM-CAP-CAM + 2672 6 1667 1668 1669 1675 # CAO-CAM-CAP-HAT + 2673 7 1672 1666 1667 1668 # CTT-CAT-CAO-CAM + 2674 3 1671 1666 1667 1668 # CAO-CAT-CAO-CAM + 2675 5 1671 1670 1669 1668 # CAO-CAM-CAP-CAM + 2676 8 1668 1669 1670 1676 # CAM-CAP-CAM-HAT + 2677 9 1669 1668 1667 1673 # CAP-CAM-CAO-HAT + 2678 9 1669 1670 1671 1677 # CAP-CAM-CAO-HAT + 2679 8 1670 1669 1668 1674 # CAM-CAP-CAM-HAT + 2680 7 1672 1666 1671 1670 # CTT-CAT-CAO-CAM + 2681 6 1671 1670 1669 1675 # CAO-CAM-CAP-HAT + 2682 4 1671 1666 1667 1673 # CAO-CAT-CAO-HAT + 2683 10 1672 1666 1667 1673 # CTT-CAT-CAO-HAT + 2684 10 1672 1666 1671 1677 # CTT-CAT-CAO-HAT + 2685 11 1673 1667 1668 1674 # HAT-CAO-CAM-HAT + 2686 12 1674 1668 1669 1675 # HAT-CAM-CAP-HAT + 2687 12 1676 1670 1669 1675 # HAT-CAM-CAP-HAT + 2688 11 1677 1671 1670 1676 # HAT-CAO-CAM-HAT + 2689 1 1681 1682 1683 1684 # CAT-CAO-CAM-CAP + 2690 2 1681 1682 1683 1689 # CAT-CAO-CAM-HAT + 2691 1 1681 1686 1685 1684 # CAT-CAO-CAM-CAP + 2692 2 1681 1686 1685 1691 # CAT-CAO-CAM-HAT + 2693 3 1682 1681 1686 1685 # CAO-CAT-CAO-CAM + 2694 4 1682 1681 1686 1692 # CAO-CAT-CAO-HAT + 2695 5 1682 1683 1684 1685 # CAO-CAM-CAP-CAM + 2696 6 1682 1683 1684 1690 # CAO-CAM-CAP-HAT + 2697 7 1687 1681 1682 1683 # CTT-CAT-CAO-CAM + 2698 3 1686 1681 1682 1683 # CAO-CAT-CAO-CAM + 2699 5 1686 1685 1684 1683 # CAO-CAM-CAP-CAM + 2700 8 1683 1684 1685 1691 # CAM-CAP-CAM-HAT + 2701 9 1684 1683 1682 1688 # CAP-CAM-CAO-HAT + 2702 9 1684 1685 1686 1692 # CAP-CAM-CAO-HAT + 2703 8 1685 1684 1683 1689 # CAM-CAP-CAM-HAT + 2704 7 1687 1681 1686 1685 # CTT-CAT-CAO-CAM + 2705 6 1686 1685 1684 1690 # CAO-CAM-CAP-HAT + 2706 4 1686 1681 1682 1688 # CAO-CAT-CAO-HAT + 2707 10 1687 1681 1682 1688 # CTT-CAT-CAO-HAT + 2708 10 1687 1681 1686 1692 # CTT-CAT-CAO-HAT + 2709 11 1688 1682 1683 1689 # HAT-CAO-CAM-HAT + 2710 12 1689 1683 1684 1690 # HAT-CAM-CAP-HAT + 2711 12 1691 1685 1684 1690 # HAT-CAM-CAP-HAT + 2712 11 1692 1686 1685 1691 # HAT-CAO-CAM-HAT + 2713 1 1696 1697 1698 1699 # CAT-CAO-CAM-CAP + 2714 2 1696 1697 1698 1704 # CAT-CAO-CAM-HAT + 2715 1 1696 1701 1700 1699 # CAT-CAO-CAM-CAP + 2716 2 1696 1701 1700 1706 # CAT-CAO-CAM-HAT + 2717 3 1697 1696 1701 1700 # CAO-CAT-CAO-CAM + 2718 4 1697 1696 1701 1707 # CAO-CAT-CAO-HAT + 2719 5 1697 1698 1699 1700 # CAO-CAM-CAP-CAM + 2720 6 1697 1698 1699 1705 # CAO-CAM-CAP-HAT + 2721 7 1702 1696 1697 1698 # CTT-CAT-CAO-CAM + 2722 3 1701 1696 1697 1698 # CAO-CAT-CAO-CAM + 2723 5 1701 1700 1699 1698 # CAO-CAM-CAP-CAM + 2724 8 1698 1699 1700 1706 # CAM-CAP-CAM-HAT + 2725 9 1699 1698 1697 1703 # CAP-CAM-CAO-HAT + 2726 9 1699 1700 1701 1707 # CAP-CAM-CAO-HAT + 2727 8 1700 1699 1698 1704 # CAM-CAP-CAM-HAT + 2728 7 1702 1696 1701 1700 # CTT-CAT-CAO-CAM + 2729 6 1701 1700 1699 1705 # CAO-CAM-CAP-HAT + 2730 4 1701 1696 1697 1703 # CAO-CAT-CAO-HAT + 2731 10 1702 1696 1697 1703 # CTT-CAT-CAO-HAT + 2732 10 1702 1696 1701 1707 # CTT-CAT-CAO-HAT + 2733 11 1703 1697 1698 1704 # HAT-CAO-CAM-HAT + 2734 12 1704 1698 1699 1705 # HAT-CAM-CAP-HAT + 2735 12 1706 1700 1699 1705 # HAT-CAM-CAP-HAT + 2736 11 1707 1701 1700 1706 # HAT-CAO-CAM-HAT + 2737 1 1711 1712 1713 1714 # CAT-CAO-CAM-CAP + 2738 2 1711 1712 1713 1719 # CAT-CAO-CAM-HAT + 2739 1 1711 1716 1715 1714 # CAT-CAO-CAM-CAP + 2740 2 1711 1716 1715 1721 # CAT-CAO-CAM-HAT + 2741 3 1712 1711 1716 1715 # CAO-CAT-CAO-CAM + 2742 4 1712 1711 1716 1722 # CAO-CAT-CAO-HAT + 2743 5 1712 1713 1714 1715 # CAO-CAM-CAP-CAM + 2744 6 1712 1713 1714 1720 # CAO-CAM-CAP-HAT + 2745 7 1717 1711 1712 1713 # CTT-CAT-CAO-CAM + 2746 3 1716 1711 1712 1713 # CAO-CAT-CAO-CAM + 2747 5 1716 1715 1714 1713 # CAO-CAM-CAP-CAM + 2748 8 1713 1714 1715 1721 # CAM-CAP-CAM-HAT + 2749 9 1714 1713 1712 1718 # CAP-CAM-CAO-HAT + 2750 9 1714 1715 1716 1722 # CAP-CAM-CAO-HAT + 2751 8 1715 1714 1713 1719 # CAM-CAP-CAM-HAT + 2752 7 1717 1711 1716 1715 # CTT-CAT-CAO-CAM + 2753 6 1716 1715 1714 1720 # CAO-CAM-CAP-HAT + 2754 4 1716 1711 1712 1718 # CAO-CAT-CAO-HAT + 2755 10 1717 1711 1712 1718 # CTT-CAT-CAO-HAT + 2756 10 1717 1711 1716 1722 # CTT-CAT-CAO-HAT + 2757 11 1718 1712 1713 1719 # HAT-CAO-CAM-HAT + 2758 12 1719 1713 1714 1720 # HAT-CAM-CAP-HAT + 2759 12 1721 1715 1714 1720 # HAT-CAM-CAP-HAT + 2760 11 1722 1716 1715 1721 # HAT-CAO-CAM-HAT + 2761 1 1726 1727 1728 1729 # CAT-CAO-CAM-CAP + 2762 2 1726 1727 1728 1734 # CAT-CAO-CAM-HAT + 2763 1 1726 1731 1730 1729 # CAT-CAO-CAM-CAP + 2764 2 1726 1731 1730 1736 # CAT-CAO-CAM-HAT + 2765 3 1727 1726 1731 1730 # CAO-CAT-CAO-CAM + 2766 4 1727 1726 1731 1737 # CAO-CAT-CAO-HAT + 2767 5 1727 1728 1729 1730 # CAO-CAM-CAP-CAM + 2768 6 1727 1728 1729 1735 # CAO-CAM-CAP-HAT + 2769 7 1732 1726 1727 1728 # CTT-CAT-CAO-CAM + 2770 3 1731 1726 1727 1728 # CAO-CAT-CAO-CAM + 2771 5 1731 1730 1729 1728 # CAO-CAM-CAP-CAM + 2772 8 1728 1729 1730 1736 # CAM-CAP-CAM-HAT + 2773 9 1729 1728 1727 1733 # CAP-CAM-CAO-HAT + 2774 9 1729 1730 1731 1737 # CAP-CAM-CAO-HAT + 2775 8 1730 1729 1728 1734 # CAM-CAP-CAM-HAT + 2776 7 1732 1726 1731 1730 # CTT-CAT-CAO-CAM + 2777 6 1731 1730 1729 1735 # CAO-CAM-CAP-HAT + 2778 4 1731 1726 1727 1733 # CAO-CAT-CAO-HAT + 2779 10 1732 1726 1727 1733 # CTT-CAT-CAO-HAT + 2780 10 1732 1726 1731 1737 # CTT-CAT-CAO-HAT + 2781 11 1733 1727 1728 1734 # HAT-CAO-CAM-HAT + 2782 12 1734 1728 1729 1735 # HAT-CAM-CAP-HAT + 2783 12 1736 1730 1729 1735 # HAT-CAM-CAP-HAT + 2784 11 1737 1731 1730 1736 # HAT-CAO-CAM-HAT + 2785 1 1741 1742 1743 1744 # CAT-CAO-CAM-CAP + 2786 2 1741 1742 1743 1749 # CAT-CAO-CAM-HAT + 2787 1 1741 1746 1745 1744 # CAT-CAO-CAM-CAP + 2788 2 1741 1746 1745 1751 # CAT-CAO-CAM-HAT + 2789 3 1742 1741 1746 1745 # CAO-CAT-CAO-CAM + 2790 4 1742 1741 1746 1752 # CAO-CAT-CAO-HAT + 2791 5 1742 1743 1744 1745 # CAO-CAM-CAP-CAM + 2792 6 1742 1743 1744 1750 # CAO-CAM-CAP-HAT + 2793 7 1747 1741 1742 1743 # CTT-CAT-CAO-CAM + 2794 3 1746 1741 1742 1743 # CAO-CAT-CAO-CAM + 2795 5 1746 1745 1744 1743 # CAO-CAM-CAP-CAM + 2796 8 1743 1744 1745 1751 # CAM-CAP-CAM-HAT + 2797 9 1744 1743 1742 1748 # CAP-CAM-CAO-HAT + 2798 9 1744 1745 1746 1752 # CAP-CAM-CAO-HAT + 2799 8 1745 1744 1743 1749 # CAM-CAP-CAM-HAT + 2800 7 1747 1741 1746 1745 # CTT-CAT-CAO-CAM + 2801 6 1746 1745 1744 1750 # CAO-CAM-CAP-HAT + 2802 4 1746 1741 1742 1748 # CAO-CAT-CAO-HAT + 2803 10 1747 1741 1742 1748 # CTT-CAT-CAO-HAT + 2804 10 1747 1741 1746 1752 # CTT-CAT-CAO-HAT + 2805 11 1748 1742 1743 1749 # HAT-CAO-CAM-HAT + 2806 12 1749 1743 1744 1750 # HAT-CAM-CAP-HAT + 2807 12 1751 1745 1744 1750 # HAT-CAM-CAP-HAT + 2808 11 1752 1746 1745 1751 # HAT-CAO-CAM-HAT + 2809 1 1756 1757 1758 1759 # CAT-CAO-CAM-CAP + 2810 2 1756 1757 1758 1764 # CAT-CAO-CAM-HAT + 2811 1 1756 1761 1760 1759 # CAT-CAO-CAM-CAP + 2812 2 1756 1761 1760 1766 # CAT-CAO-CAM-HAT + 2813 3 1757 1756 1761 1760 # CAO-CAT-CAO-CAM + 2814 4 1757 1756 1761 1767 # CAO-CAT-CAO-HAT + 2815 5 1757 1758 1759 1760 # CAO-CAM-CAP-CAM + 2816 6 1757 1758 1759 1765 # CAO-CAM-CAP-HAT + 2817 7 1762 1756 1757 1758 # CTT-CAT-CAO-CAM + 2818 3 1761 1756 1757 1758 # CAO-CAT-CAO-CAM + 2819 5 1761 1760 1759 1758 # CAO-CAM-CAP-CAM + 2820 8 1758 1759 1760 1766 # CAM-CAP-CAM-HAT + 2821 9 1759 1758 1757 1763 # CAP-CAM-CAO-HAT + 2822 9 1759 1760 1761 1767 # CAP-CAM-CAO-HAT + 2823 8 1760 1759 1758 1764 # CAM-CAP-CAM-HAT + 2824 7 1762 1756 1761 1760 # CTT-CAT-CAO-CAM + 2825 6 1761 1760 1759 1765 # CAO-CAM-CAP-HAT + 2826 4 1761 1756 1757 1763 # CAO-CAT-CAO-HAT + 2827 10 1762 1756 1757 1763 # CTT-CAT-CAO-HAT + 2828 10 1762 1756 1761 1767 # CTT-CAT-CAO-HAT + 2829 11 1763 1757 1758 1764 # HAT-CAO-CAM-HAT + 2830 12 1764 1758 1759 1765 # HAT-CAM-CAP-HAT + 2831 12 1766 1760 1759 1765 # HAT-CAM-CAP-HAT + 2832 11 1767 1761 1760 1766 # HAT-CAO-CAM-HAT + 2833 1 1771 1772 1773 1774 # CAT-CAO-CAM-CAP + 2834 2 1771 1772 1773 1779 # CAT-CAO-CAM-HAT + 2835 1 1771 1776 1775 1774 # CAT-CAO-CAM-CAP + 2836 2 1771 1776 1775 1781 # CAT-CAO-CAM-HAT + 2837 3 1772 1771 1776 1775 # CAO-CAT-CAO-CAM + 2838 4 1772 1771 1776 1782 # CAO-CAT-CAO-HAT + 2839 5 1772 1773 1774 1775 # CAO-CAM-CAP-CAM + 2840 6 1772 1773 1774 1780 # CAO-CAM-CAP-HAT + 2841 7 1777 1771 1772 1773 # CTT-CAT-CAO-CAM + 2842 3 1776 1771 1772 1773 # CAO-CAT-CAO-CAM + 2843 5 1776 1775 1774 1773 # CAO-CAM-CAP-CAM + 2844 8 1773 1774 1775 1781 # CAM-CAP-CAM-HAT + 2845 9 1774 1773 1772 1778 # CAP-CAM-CAO-HAT + 2846 9 1774 1775 1776 1782 # CAP-CAM-CAO-HAT + 2847 8 1775 1774 1773 1779 # CAM-CAP-CAM-HAT + 2848 7 1777 1771 1776 1775 # CTT-CAT-CAO-CAM + 2849 6 1776 1775 1774 1780 # CAO-CAM-CAP-HAT + 2850 4 1776 1771 1772 1778 # CAO-CAT-CAO-HAT + 2851 10 1777 1771 1772 1778 # CTT-CAT-CAO-HAT + 2852 10 1777 1771 1776 1782 # CTT-CAT-CAO-HAT + 2853 11 1778 1772 1773 1779 # HAT-CAO-CAM-HAT + 2854 12 1779 1773 1774 1780 # HAT-CAM-CAP-HAT + 2855 12 1781 1775 1774 1780 # HAT-CAM-CAP-HAT + 2856 11 1782 1776 1775 1781 # HAT-CAO-CAM-HAT + 2857 1 1786 1787 1788 1789 # CAT-CAO-CAM-CAP + 2858 2 1786 1787 1788 1794 # CAT-CAO-CAM-HAT + 2859 1 1786 1791 1790 1789 # CAT-CAO-CAM-CAP + 2860 2 1786 1791 1790 1796 # CAT-CAO-CAM-HAT + 2861 3 1787 1786 1791 1790 # CAO-CAT-CAO-CAM + 2862 4 1787 1786 1791 1797 # CAO-CAT-CAO-HAT + 2863 5 1787 1788 1789 1790 # CAO-CAM-CAP-CAM + 2864 6 1787 1788 1789 1795 # CAO-CAM-CAP-HAT + 2865 7 1792 1786 1787 1788 # CTT-CAT-CAO-CAM + 2866 3 1791 1786 1787 1788 # CAO-CAT-CAO-CAM + 2867 5 1791 1790 1789 1788 # CAO-CAM-CAP-CAM + 2868 8 1788 1789 1790 1796 # CAM-CAP-CAM-HAT + 2869 9 1789 1788 1787 1793 # CAP-CAM-CAO-HAT + 2870 9 1789 1790 1791 1797 # CAP-CAM-CAO-HAT + 2871 8 1790 1789 1788 1794 # CAM-CAP-CAM-HAT + 2872 7 1792 1786 1791 1790 # CTT-CAT-CAO-CAM + 2873 6 1791 1790 1789 1795 # CAO-CAM-CAP-HAT + 2874 4 1791 1786 1787 1793 # CAO-CAT-CAO-HAT + 2875 10 1792 1786 1787 1793 # CTT-CAT-CAO-HAT + 2876 10 1792 1786 1791 1797 # CTT-CAT-CAO-HAT + 2877 11 1793 1787 1788 1794 # HAT-CAO-CAM-HAT + 2878 12 1794 1788 1789 1795 # HAT-CAM-CAP-HAT + 2879 12 1796 1790 1789 1795 # HAT-CAM-CAP-HAT + 2880 11 1797 1791 1790 1796 # HAT-CAO-CAM-HAT + 2881 1 1801 1802 1803 1804 # CAT-CAO-CAM-CAP + 2882 2 1801 1802 1803 1809 # CAT-CAO-CAM-HAT + 2883 1 1801 1806 1805 1804 # CAT-CAO-CAM-CAP + 2884 2 1801 1806 1805 1811 # CAT-CAO-CAM-HAT + 2885 3 1802 1801 1806 1805 # CAO-CAT-CAO-CAM + 2886 4 1802 1801 1806 1812 # CAO-CAT-CAO-HAT + 2887 5 1802 1803 1804 1805 # CAO-CAM-CAP-CAM + 2888 6 1802 1803 1804 1810 # CAO-CAM-CAP-HAT + 2889 7 1807 1801 1802 1803 # CTT-CAT-CAO-CAM + 2890 3 1806 1801 1802 1803 # CAO-CAT-CAO-CAM + 2891 5 1806 1805 1804 1803 # CAO-CAM-CAP-CAM + 2892 8 1803 1804 1805 1811 # CAM-CAP-CAM-HAT + 2893 9 1804 1803 1802 1808 # CAP-CAM-CAO-HAT + 2894 9 1804 1805 1806 1812 # CAP-CAM-CAO-HAT + 2895 8 1805 1804 1803 1809 # CAM-CAP-CAM-HAT + 2896 7 1807 1801 1806 1805 # CTT-CAT-CAO-CAM + 2897 6 1806 1805 1804 1810 # CAO-CAM-CAP-HAT + 2898 4 1806 1801 1802 1808 # CAO-CAT-CAO-HAT + 2899 10 1807 1801 1802 1808 # CTT-CAT-CAO-HAT + 2900 10 1807 1801 1806 1812 # CTT-CAT-CAO-HAT + 2901 11 1808 1802 1803 1809 # HAT-CAO-CAM-HAT + 2902 12 1809 1803 1804 1810 # HAT-CAM-CAP-HAT + 2903 12 1811 1805 1804 1810 # HAT-CAM-CAP-HAT + 2904 11 1812 1806 1805 1811 # HAT-CAO-CAM-HAT + 2905 1 1816 1817 1818 1819 # CAT-CAO-CAM-CAP + 2906 2 1816 1817 1818 1824 # CAT-CAO-CAM-HAT + 2907 1 1816 1821 1820 1819 # CAT-CAO-CAM-CAP + 2908 2 1816 1821 1820 1826 # CAT-CAO-CAM-HAT + 2909 3 1817 1816 1821 1820 # CAO-CAT-CAO-CAM + 2910 4 1817 1816 1821 1827 # CAO-CAT-CAO-HAT + 2911 5 1817 1818 1819 1820 # CAO-CAM-CAP-CAM + 2912 6 1817 1818 1819 1825 # CAO-CAM-CAP-HAT + 2913 7 1822 1816 1817 1818 # CTT-CAT-CAO-CAM + 2914 3 1821 1816 1817 1818 # CAO-CAT-CAO-CAM + 2915 5 1821 1820 1819 1818 # CAO-CAM-CAP-CAM + 2916 8 1818 1819 1820 1826 # CAM-CAP-CAM-HAT + 2917 9 1819 1818 1817 1823 # CAP-CAM-CAO-HAT + 2918 9 1819 1820 1821 1827 # CAP-CAM-CAO-HAT + 2919 8 1820 1819 1818 1824 # CAM-CAP-CAM-HAT + 2920 7 1822 1816 1821 1820 # CTT-CAT-CAO-CAM + 2921 6 1821 1820 1819 1825 # CAO-CAM-CAP-HAT + 2922 4 1821 1816 1817 1823 # CAO-CAT-CAO-HAT + 2923 10 1822 1816 1817 1823 # CTT-CAT-CAO-HAT + 2924 10 1822 1816 1821 1827 # CTT-CAT-CAO-HAT + 2925 11 1823 1817 1818 1824 # HAT-CAO-CAM-HAT + 2926 12 1824 1818 1819 1825 # HAT-CAM-CAP-HAT + 2927 12 1826 1820 1819 1825 # HAT-CAM-CAP-HAT + 2928 11 1827 1821 1820 1826 # HAT-CAO-CAM-HAT + 2929 1 1831 1832 1833 1834 # CAT-CAO-CAM-CAP + 2930 2 1831 1832 1833 1839 # CAT-CAO-CAM-HAT + 2931 1 1831 1836 1835 1834 # CAT-CAO-CAM-CAP + 2932 2 1831 1836 1835 1841 # CAT-CAO-CAM-HAT + 2933 3 1832 1831 1836 1835 # CAO-CAT-CAO-CAM + 2934 4 1832 1831 1836 1842 # CAO-CAT-CAO-HAT + 2935 5 1832 1833 1834 1835 # CAO-CAM-CAP-CAM + 2936 6 1832 1833 1834 1840 # CAO-CAM-CAP-HAT + 2937 7 1837 1831 1832 1833 # CTT-CAT-CAO-CAM + 2938 3 1836 1831 1832 1833 # CAO-CAT-CAO-CAM + 2939 5 1836 1835 1834 1833 # CAO-CAM-CAP-CAM + 2940 8 1833 1834 1835 1841 # CAM-CAP-CAM-HAT + 2941 9 1834 1833 1832 1838 # CAP-CAM-CAO-HAT + 2942 9 1834 1835 1836 1842 # CAP-CAM-CAO-HAT + 2943 8 1835 1834 1833 1839 # CAM-CAP-CAM-HAT + 2944 7 1837 1831 1836 1835 # CTT-CAT-CAO-CAM + 2945 6 1836 1835 1834 1840 # CAO-CAM-CAP-HAT + 2946 4 1836 1831 1832 1838 # CAO-CAT-CAO-HAT + 2947 10 1837 1831 1832 1838 # CTT-CAT-CAO-HAT + 2948 10 1837 1831 1836 1842 # CTT-CAT-CAO-HAT + 2949 11 1838 1832 1833 1839 # HAT-CAO-CAM-HAT + 2950 12 1839 1833 1834 1840 # HAT-CAM-CAP-HAT + 2951 12 1841 1835 1834 1840 # HAT-CAM-CAP-HAT + 2952 11 1842 1836 1835 1841 # HAT-CAO-CAM-HAT + 2953 1 1846 1847 1848 1849 # CAT-CAO-CAM-CAP + 2954 2 1846 1847 1848 1854 # CAT-CAO-CAM-HAT + 2955 1 1846 1851 1850 1849 # CAT-CAO-CAM-CAP + 2956 2 1846 1851 1850 1856 # CAT-CAO-CAM-HAT + 2957 3 1847 1846 1851 1850 # CAO-CAT-CAO-CAM + 2958 4 1847 1846 1851 1857 # CAO-CAT-CAO-HAT + 2959 5 1847 1848 1849 1850 # CAO-CAM-CAP-CAM + 2960 6 1847 1848 1849 1855 # CAO-CAM-CAP-HAT + 2961 7 1852 1846 1847 1848 # CTT-CAT-CAO-CAM + 2962 3 1851 1846 1847 1848 # CAO-CAT-CAO-CAM + 2963 5 1851 1850 1849 1848 # CAO-CAM-CAP-CAM + 2964 8 1848 1849 1850 1856 # CAM-CAP-CAM-HAT + 2965 9 1849 1848 1847 1853 # CAP-CAM-CAO-HAT + 2966 9 1849 1850 1851 1857 # CAP-CAM-CAO-HAT + 2967 8 1850 1849 1848 1854 # CAM-CAP-CAM-HAT + 2968 7 1852 1846 1851 1850 # CTT-CAT-CAO-CAM + 2969 6 1851 1850 1849 1855 # CAO-CAM-CAP-HAT + 2970 4 1851 1846 1847 1853 # CAO-CAT-CAO-HAT + 2971 10 1852 1846 1847 1853 # CTT-CAT-CAO-HAT + 2972 10 1852 1846 1851 1857 # CTT-CAT-CAO-HAT + 2973 11 1853 1847 1848 1854 # HAT-CAO-CAM-HAT + 2974 12 1854 1848 1849 1855 # HAT-CAM-CAP-HAT + 2975 12 1856 1850 1849 1855 # HAT-CAM-CAP-HAT + 2976 11 1857 1851 1850 1856 # HAT-CAO-CAM-HAT + 2977 1 1861 1862 1863 1864 # CAT-CAO-CAM-CAP + 2978 2 1861 1862 1863 1869 # CAT-CAO-CAM-HAT + 2979 1 1861 1866 1865 1864 # CAT-CAO-CAM-CAP + 2980 2 1861 1866 1865 1871 # CAT-CAO-CAM-HAT + 2981 3 1862 1861 1866 1865 # CAO-CAT-CAO-CAM + 2982 4 1862 1861 1866 1872 # CAO-CAT-CAO-HAT + 2983 5 1862 1863 1864 1865 # CAO-CAM-CAP-CAM + 2984 6 1862 1863 1864 1870 # CAO-CAM-CAP-HAT + 2985 7 1867 1861 1862 1863 # CTT-CAT-CAO-CAM + 2986 3 1866 1861 1862 1863 # CAO-CAT-CAO-CAM + 2987 5 1866 1865 1864 1863 # CAO-CAM-CAP-CAM + 2988 8 1863 1864 1865 1871 # CAM-CAP-CAM-HAT + 2989 9 1864 1863 1862 1868 # CAP-CAM-CAO-HAT + 2990 9 1864 1865 1866 1872 # CAP-CAM-CAO-HAT + 2991 8 1865 1864 1863 1869 # CAM-CAP-CAM-HAT + 2992 7 1867 1861 1866 1865 # CTT-CAT-CAO-CAM + 2993 6 1866 1865 1864 1870 # CAO-CAM-CAP-HAT + 2994 4 1866 1861 1862 1868 # CAO-CAT-CAO-HAT + 2995 10 1867 1861 1862 1868 # CTT-CAT-CAO-HAT + 2996 10 1867 1861 1866 1872 # CTT-CAT-CAO-HAT + 2997 11 1868 1862 1863 1869 # HAT-CAO-CAM-HAT + 2998 12 1869 1863 1864 1870 # HAT-CAM-CAP-HAT + 2999 12 1871 1865 1864 1870 # HAT-CAM-CAP-HAT + 3000 11 1872 1866 1865 1871 # HAT-CAO-CAM-HAT + 3001 1 1876 1877 1878 1879 # CAT-CAO-CAM-CAP + 3002 2 1876 1877 1878 1884 # CAT-CAO-CAM-HAT + 3003 1 1876 1881 1880 1879 # CAT-CAO-CAM-CAP + 3004 2 1876 1881 1880 1886 # CAT-CAO-CAM-HAT + 3005 3 1877 1876 1881 1880 # CAO-CAT-CAO-CAM + 3006 4 1877 1876 1881 1887 # CAO-CAT-CAO-HAT + 3007 5 1877 1878 1879 1880 # CAO-CAM-CAP-CAM + 3008 6 1877 1878 1879 1885 # CAO-CAM-CAP-HAT + 3009 7 1882 1876 1877 1878 # CTT-CAT-CAO-CAM + 3010 3 1881 1876 1877 1878 # CAO-CAT-CAO-CAM + 3011 5 1881 1880 1879 1878 # CAO-CAM-CAP-CAM + 3012 8 1878 1879 1880 1886 # CAM-CAP-CAM-HAT + 3013 9 1879 1878 1877 1883 # CAP-CAM-CAO-HAT + 3014 9 1879 1880 1881 1887 # CAP-CAM-CAO-HAT + 3015 8 1880 1879 1878 1884 # CAM-CAP-CAM-HAT + 3016 7 1882 1876 1881 1880 # CTT-CAT-CAO-CAM + 3017 6 1881 1880 1879 1885 # CAO-CAM-CAP-HAT + 3018 4 1881 1876 1877 1883 # CAO-CAT-CAO-HAT + 3019 10 1882 1876 1877 1883 # CTT-CAT-CAO-HAT + 3020 10 1882 1876 1881 1887 # CTT-CAT-CAO-HAT + 3021 11 1883 1877 1878 1884 # HAT-CAO-CAM-HAT + 3022 12 1884 1878 1879 1885 # HAT-CAM-CAP-HAT + 3023 12 1886 1880 1879 1885 # HAT-CAM-CAP-HAT + 3024 11 1887 1881 1880 1886 # HAT-CAO-CAM-HAT + 3025 1 1891 1892 1893 1894 # CAT-CAO-CAM-CAP + 3026 2 1891 1892 1893 1899 # CAT-CAO-CAM-HAT + 3027 1 1891 1896 1895 1894 # CAT-CAO-CAM-CAP + 3028 2 1891 1896 1895 1901 # CAT-CAO-CAM-HAT + 3029 3 1892 1891 1896 1895 # CAO-CAT-CAO-CAM + 3030 4 1892 1891 1896 1902 # CAO-CAT-CAO-HAT + 3031 5 1892 1893 1894 1895 # CAO-CAM-CAP-CAM + 3032 6 1892 1893 1894 1900 # CAO-CAM-CAP-HAT + 3033 7 1897 1891 1892 1893 # CTT-CAT-CAO-CAM + 3034 3 1896 1891 1892 1893 # CAO-CAT-CAO-CAM + 3035 5 1896 1895 1894 1893 # CAO-CAM-CAP-CAM + 3036 8 1893 1894 1895 1901 # CAM-CAP-CAM-HAT + 3037 9 1894 1893 1892 1898 # CAP-CAM-CAO-HAT + 3038 9 1894 1895 1896 1902 # CAP-CAM-CAO-HAT + 3039 8 1895 1894 1893 1899 # CAM-CAP-CAM-HAT + 3040 7 1897 1891 1896 1895 # CTT-CAT-CAO-CAM + 3041 6 1896 1895 1894 1900 # CAO-CAM-CAP-HAT + 3042 4 1896 1891 1892 1898 # CAO-CAT-CAO-HAT + 3043 10 1897 1891 1892 1898 # CTT-CAT-CAO-HAT + 3044 10 1897 1891 1896 1902 # CTT-CAT-CAO-HAT + 3045 11 1898 1892 1893 1899 # HAT-CAO-CAM-HAT + 3046 12 1899 1893 1894 1900 # HAT-CAM-CAP-HAT + 3047 12 1901 1895 1894 1900 # HAT-CAM-CAP-HAT + 3048 11 1902 1896 1895 1901 # HAT-CAO-CAM-HAT + 3049 1 1906 1907 1908 1909 # CAT-CAO-CAM-CAP + 3050 2 1906 1907 1908 1914 # CAT-CAO-CAM-HAT + 3051 1 1906 1911 1910 1909 # CAT-CAO-CAM-CAP + 3052 2 1906 1911 1910 1916 # CAT-CAO-CAM-HAT + 3053 3 1907 1906 1911 1910 # CAO-CAT-CAO-CAM + 3054 4 1907 1906 1911 1917 # CAO-CAT-CAO-HAT + 3055 5 1907 1908 1909 1910 # CAO-CAM-CAP-CAM + 3056 6 1907 1908 1909 1915 # CAO-CAM-CAP-HAT + 3057 7 1912 1906 1907 1908 # CTT-CAT-CAO-CAM + 3058 3 1911 1906 1907 1908 # CAO-CAT-CAO-CAM + 3059 5 1911 1910 1909 1908 # CAO-CAM-CAP-CAM + 3060 8 1908 1909 1910 1916 # CAM-CAP-CAM-HAT + 3061 9 1909 1908 1907 1913 # CAP-CAM-CAO-HAT + 3062 9 1909 1910 1911 1917 # CAP-CAM-CAO-HAT + 3063 8 1910 1909 1908 1914 # CAM-CAP-CAM-HAT + 3064 7 1912 1906 1911 1910 # CTT-CAT-CAO-CAM + 3065 6 1911 1910 1909 1915 # CAO-CAM-CAP-HAT + 3066 4 1911 1906 1907 1913 # CAO-CAT-CAO-HAT + 3067 10 1912 1906 1907 1913 # CTT-CAT-CAO-HAT + 3068 10 1912 1906 1911 1917 # CTT-CAT-CAO-HAT + 3069 11 1913 1907 1908 1914 # HAT-CAO-CAM-HAT + 3070 12 1914 1908 1909 1915 # HAT-CAM-CAP-HAT + 3071 12 1916 1910 1909 1915 # HAT-CAM-CAP-HAT + 3072 11 1917 1911 1910 1916 # HAT-CAO-CAM-HAT + 3073 1 1921 1922 1923 1924 # CAT-CAO-CAM-CAP + 3074 2 1921 1922 1923 1929 # CAT-CAO-CAM-HAT + 3075 1 1921 1926 1925 1924 # CAT-CAO-CAM-CAP + 3076 2 1921 1926 1925 1931 # CAT-CAO-CAM-HAT + 3077 3 1922 1921 1926 1925 # CAO-CAT-CAO-CAM + 3078 4 1922 1921 1926 1932 # CAO-CAT-CAO-HAT + 3079 5 1922 1923 1924 1925 # CAO-CAM-CAP-CAM + 3080 6 1922 1923 1924 1930 # CAO-CAM-CAP-HAT + 3081 7 1927 1921 1922 1923 # CTT-CAT-CAO-CAM + 3082 3 1926 1921 1922 1923 # CAO-CAT-CAO-CAM + 3083 5 1926 1925 1924 1923 # CAO-CAM-CAP-CAM + 3084 8 1923 1924 1925 1931 # CAM-CAP-CAM-HAT + 3085 9 1924 1923 1922 1928 # CAP-CAM-CAO-HAT + 3086 9 1924 1925 1926 1932 # CAP-CAM-CAO-HAT + 3087 8 1925 1924 1923 1929 # CAM-CAP-CAM-HAT + 3088 7 1927 1921 1926 1925 # CTT-CAT-CAO-CAM + 3089 6 1926 1925 1924 1930 # CAO-CAM-CAP-HAT + 3090 4 1926 1921 1922 1928 # CAO-CAT-CAO-HAT + 3091 10 1927 1921 1922 1928 # CTT-CAT-CAO-HAT + 3092 10 1927 1921 1926 1932 # CTT-CAT-CAO-HAT + 3093 11 1928 1922 1923 1929 # HAT-CAO-CAM-HAT + 3094 12 1929 1923 1924 1930 # HAT-CAM-CAP-HAT + 3095 12 1931 1925 1924 1930 # HAT-CAM-CAP-HAT + 3096 11 1932 1926 1925 1931 # HAT-CAO-CAM-HAT + 3097 1 1936 1937 1938 1939 # CAT-CAO-CAM-CAP + 3098 2 1936 1937 1938 1944 # CAT-CAO-CAM-HAT + 3099 1 1936 1941 1940 1939 # CAT-CAO-CAM-CAP + 3100 2 1936 1941 1940 1946 # CAT-CAO-CAM-HAT + 3101 3 1937 1936 1941 1940 # CAO-CAT-CAO-CAM + 3102 4 1937 1936 1941 1947 # CAO-CAT-CAO-HAT + 3103 5 1937 1938 1939 1940 # CAO-CAM-CAP-CAM + 3104 6 1937 1938 1939 1945 # CAO-CAM-CAP-HAT + 3105 7 1942 1936 1937 1938 # CTT-CAT-CAO-CAM + 3106 3 1941 1936 1937 1938 # CAO-CAT-CAO-CAM + 3107 5 1941 1940 1939 1938 # CAO-CAM-CAP-CAM + 3108 8 1938 1939 1940 1946 # CAM-CAP-CAM-HAT + 3109 9 1939 1938 1937 1943 # CAP-CAM-CAO-HAT + 3110 9 1939 1940 1941 1947 # CAP-CAM-CAO-HAT + 3111 8 1940 1939 1938 1944 # CAM-CAP-CAM-HAT + 3112 7 1942 1936 1941 1940 # CTT-CAT-CAO-CAM + 3113 6 1941 1940 1939 1945 # CAO-CAM-CAP-HAT + 3114 4 1941 1936 1937 1943 # CAO-CAT-CAO-HAT + 3115 10 1942 1936 1937 1943 # CTT-CAT-CAO-HAT + 3116 10 1942 1936 1941 1947 # CTT-CAT-CAO-HAT + 3117 11 1943 1937 1938 1944 # HAT-CAO-CAM-HAT + 3118 12 1944 1938 1939 1945 # HAT-CAM-CAP-HAT + 3119 12 1946 1940 1939 1945 # HAT-CAM-CAP-HAT + 3120 11 1947 1941 1940 1946 # HAT-CAO-CAM-HAT + 3121 1 1951 1952 1953 1954 # CAT-CAO-CAM-CAP + 3122 2 1951 1952 1953 1959 # CAT-CAO-CAM-HAT + 3123 1 1951 1956 1955 1954 # CAT-CAO-CAM-CAP + 3124 2 1951 1956 1955 1961 # CAT-CAO-CAM-HAT + 3125 3 1952 1951 1956 1955 # CAO-CAT-CAO-CAM + 3126 4 1952 1951 1956 1962 # CAO-CAT-CAO-HAT + 3127 5 1952 1953 1954 1955 # CAO-CAM-CAP-CAM + 3128 6 1952 1953 1954 1960 # CAO-CAM-CAP-HAT + 3129 7 1957 1951 1952 1953 # CTT-CAT-CAO-CAM + 3130 3 1956 1951 1952 1953 # CAO-CAT-CAO-CAM + 3131 5 1956 1955 1954 1953 # CAO-CAM-CAP-CAM + 3132 8 1953 1954 1955 1961 # CAM-CAP-CAM-HAT + 3133 9 1954 1953 1952 1958 # CAP-CAM-CAO-HAT + 3134 9 1954 1955 1956 1962 # CAP-CAM-CAO-HAT + 3135 8 1955 1954 1953 1959 # CAM-CAP-CAM-HAT + 3136 7 1957 1951 1956 1955 # CTT-CAT-CAO-CAM + 3137 6 1956 1955 1954 1960 # CAO-CAM-CAP-HAT + 3138 4 1956 1951 1952 1958 # CAO-CAT-CAO-HAT + 3139 10 1957 1951 1952 1958 # CTT-CAT-CAO-HAT + 3140 10 1957 1951 1956 1962 # CTT-CAT-CAO-HAT + 3141 11 1958 1952 1953 1959 # HAT-CAO-CAM-HAT + 3142 12 1959 1953 1954 1960 # HAT-CAM-CAP-HAT + 3143 12 1961 1955 1954 1960 # HAT-CAM-CAP-HAT + 3144 11 1962 1956 1955 1961 # HAT-CAO-CAM-HAT + 3145 1 1966 1967 1968 1969 # CAT-CAO-CAM-CAP + 3146 2 1966 1967 1968 1974 # CAT-CAO-CAM-HAT + 3147 1 1966 1971 1970 1969 # CAT-CAO-CAM-CAP + 3148 2 1966 1971 1970 1976 # CAT-CAO-CAM-HAT + 3149 3 1967 1966 1971 1970 # CAO-CAT-CAO-CAM + 3150 4 1967 1966 1971 1977 # CAO-CAT-CAO-HAT + 3151 5 1967 1968 1969 1970 # CAO-CAM-CAP-CAM + 3152 6 1967 1968 1969 1975 # CAO-CAM-CAP-HAT + 3153 7 1972 1966 1967 1968 # CTT-CAT-CAO-CAM + 3154 3 1971 1966 1967 1968 # CAO-CAT-CAO-CAM + 3155 5 1971 1970 1969 1968 # CAO-CAM-CAP-CAM + 3156 8 1968 1969 1970 1976 # CAM-CAP-CAM-HAT + 3157 9 1969 1968 1967 1973 # CAP-CAM-CAO-HAT + 3158 9 1969 1970 1971 1977 # CAP-CAM-CAO-HAT + 3159 8 1970 1969 1968 1974 # CAM-CAP-CAM-HAT + 3160 7 1972 1966 1971 1970 # CTT-CAT-CAO-CAM + 3161 6 1971 1970 1969 1975 # CAO-CAM-CAP-HAT + 3162 4 1971 1966 1967 1973 # CAO-CAT-CAO-HAT + 3163 10 1972 1966 1967 1973 # CTT-CAT-CAO-HAT + 3164 10 1972 1966 1971 1977 # CTT-CAT-CAO-HAT + 3165 11 1973 1967 1968 1974 # HAT-CAO-CAM-HAT + 3166 12 1974 1968 1969 1975 # HAT-CAM-CAP-HAT + 3167 12 1976 1970 1969 1975 # HAT-CAM-CAP-HAT + 3168 11 1977 1971 1970 1976 # HAT-CAO-CAM-HAT + 3169 1 1981 1982 1983 1984 # CAT-CAO-CAM-CAP + 3170 2 1981 1982 1983 1989 # CAT-CAO-CAM-HAT + 3171 1 1981 1986 1985 1984 # CAT-CAO-CAM-CAP + 3172 2 1981 1986 1985 1991 # CAT-CAO-CAM-HAT + 3173 3 1982 1981 1986 1985 # CAO-CAT-CAO-CAM + 3174 4 1982 1981 1986 1992 # CAO-CAT-CAO-HAT + 3175 5 1982 1983 1984 1985 # CAO-CAM-CAP-CAM + 3176 6 1982 1983 1984 1990 # CAO-CAM-CAP-HAT + 3177 7 1987 1981 1982 1983 # CTT-CAT-CAO-CAM + 3178 3 1986 1981 1982 1983 # CAO-CAT-CAO-CAM + 3179 5 1986 1985 1984 1983 # CAO-CAM-CAP-CAM + 3180 8 1983 1984 1985 1991 # CAM-CAP-CAM-HAT + 3181 9 1984 1983 1982 1988 # CAP-CAM-CAO-HAT + 3182 9 1984 1985 1986 1992 # CAP-CAM-CAO-HAT + 3183 8 1985 1984 1983 1989 # CAM-CAP-CAM-HAT + 3184 7 1987 1981 1986 1985 # CTT-CAT-CAO-CAM + 3185 6 1986 1985 1984 1990 # CAO-CAM-CAP-HAT + 3186 4 1986 1981 1982 1988 # CAO-CAT-CAO-HAT + 3187 10 1987 1981 1982 1988 # CTT-CAT-CAO-HAT + 3188 10 1987 1981 1986 1992 # CTT-CAT-CAO-HAT + 3189 11 1988 1982 1983 1989 # HAT-CAO-CAM-HAT + 3190 12 1989 1983 1984 1990 # HAT-CAM-CAP-HAT + 3191 12 1991 1985 1984 1990 # HAT-CAM-CAP-HAT + 3192 11 1992 1986 1985 1991 # HAT-CAO-CAM-HAT + 3193 1 1996 1997 1998 1999 # CAT-CAO-CAM-CAP + 3194 2 1996 1997 1998 2004 # CAT-CAO-CAM-HAT + 3195 1 1996 2001 2000 1999 # CAT-CAO-CAM-CAP + 3196 2 1996 2001 2000 2006 # CAT-CAO-CAM-HAT + 3197 3 1997 1996 2001 2000 # CAO-CAT-CAO-CAM + 3198 4 1997 1996 2001 2007 # CAO-CAT-CAO-HAT + 3199 5 1997 1998 1999 2000 # CAO-CAM-CAP-CAM + 3200 6 1997 1998 1999 2005 # CAO-CAM-CAP-HAT + 3201 7 2002 1996 1997 1998 # CTT-CAT-CAO-CAM + 3202 3 2001 1996 1997 1998 # CAO-CAT-CAO-CAM + 3203 5 2001 2000 1999 1998 # CAO-CAM-CAP-CAM + 3204 8 1998 1999 2000 2006 # CAM-CAP-CAM-HAT + 3205 9 1999 1998 1997 2003 # CAP-CAM-CAO-HAT + 3206 9 1999 2000 2001 2007 # CAP-CAM-CAO-HAT + 3207 8 2000 1999 1998 2004 # CAM-CAP-CAM-HAT + 3208 7 2002 1996 2001 2000 # CTT-CAT-CAO-CAM + 3209 6 2001 2000 1999 2005 # CAO-CAM-CAP-HAT + 3210 4 2001 1996 1997 2003 # CAO-CAT-CAO-HAT + 3211 10 2002 1996 1997 2003 # CTT-CAT-CAO-HAT + 3212 10 2002 1996 2001 2007 # CTT-CAT-CAO-HAT + 3213 11 2003 1997 1998 2004 # HAT-CAO-CAM-HAT + 3214 12 2004 1998 1999 2005 # HAT-CAM-CAP-HAT + 3215 12 2006 2000 1999 2005 # HAT-CAM-CAP-HAT + 3216 11 2007 2001 2000 2006 # HAT-CAO-CAM-HAT + 3217 1 2011 2012 2013 2014 # CAT-CAO-CAM-CAP + 3218 2 2011 2012 2013 2019 # CAT-CAO-CAM-HAT + 3219 1 2011 2016 2015 2014 # CAT-CAO-CAM-CAP + 3220 2 2011 2016 2015 2021 # CAT-CAO-CAM-HAT + 3221 3 2012 2011 2016 2015 # CAO-CAT-CAO-CAM + 3222 4 2012 2011 2016 2022 # CAO-CAT-CAO-HAT + 3223 5 2012 2013 2014 2015 # CAO-CAM-CAP-CAM + 3224 6 2012 2013 2014 2020 # CAO-CAM-CAP-HAT + 3225 7 2017 2011 2012 2013 # CTT-CAT-CAO-CAM + 3226 3 2016 2011 2012 2013 # CAO-CAT-CAO-CAM + 3227 5 2016 2015 2014 2013 # CAO-CAM-CAP-CAM + 3228 8 2013 2014 2015 2021 # CAM-CAP-CAM-HAT + 3229 9 2014 2013 2012 2018 # CAP-CAM-CAO-HAT + 3230 9 2014 2015 2016 2022 # CAP-CAM-CAO-HAT + 3231 8 2015 2014 2013 2019 # CAM-CAP-CAM-HAT + 3232 7 2017 2011 2016 2015 # CTT-CAT-CAO-CAM + 3233 6 2016 2015 2014 2020 # CAO-CAM-CAP-HAT + 3234 4 2016 2011 2012 2018 # CAO-CAT-CAO-HAT + 3235 10 2017 2011 2012 2018 # CTT-CAT-CAO-HAT + 3236 10 2017 2011 2016 2022 # CTT-CAT-CAO-HAT + 3237 11 2018 2012 2013 2019 # HAT-CAO-CAM-HAT + 3238 12 2019 2013 2014 2020 # HAT-CAM-CAP-HAT + 3239 12 2021 2015 2014 2020 # HAT-CAM-CAP-HAT + 3240 11 2022 2016 2015 2021 # HAT-CAO-CAM-HAT + 3241 1 2026 2027 2028 2029 # CAT-CAO-CAM-CAP + 3242 2 2026 2027 2028 2034 # CAT-CAO-CAM-HAT + 3243 1 2026 2031 2030 2029 # CAT-CAO-CAM-CAP + 3244 2 2026 2031 2030 2036 # CAT-CAO-CAM-HAT + 3245 3 2027 2026 2031 2030 # CAO-CAT-CAO-CAM + 3246 4 2027 2026 2031 2037 # CAO-CAT-CAO-HAT + 3247 5 2027 2028 2029 2030 # CAO-CAM-CAP-CAM + 3248 6 2027 2028 2029 2035 # CAO-CAM-CAP-HAT + 3249 7 2032 2026 2027 2028 # CTT-CAT-CAO-CAM + 3250 3 2031 2026 2027 2028 # CAO-CAT-CAO-CAM + 3251 5 2031 2030 2029 2028 # CAO-CAM-CAP-CAM + 3252 8 2028 2029 2030 2036 # CAM-CAP-CAM-HAT + 3253 9 2029 2028 2027 2033 # CAP-CAM-CAO-HAT + 3254 9 2029 2030 2031 2037 # CAP-CAM-CAO-HAT + 3255 8 2030 2029 2028 2034 # CAM-CAP-CAM-HAT + 3256 7 2032 2026 2031 2030 # CTT-CAT-CAO-CAM + 3257 6 2031 2030 2029 2035 # CAO-CAM-CAP-HAT + 3258 4 2031 2026 2027 2033 # CAO-CAT-CAO-HAT + 3259 10 2032 2026 2027 2033 # CTT-CAT-CAO-HAT + 3260 10 2032 2026 2031 2037 # CTT-CAT-CAO-HAT + 3261 11 2033 2027 2028 2034 # HAT-CAO-CAM-HAT + 3262 12 2034 2028 2029 2035 # HAT-CAM-CAP-HAT + 3263 12 2036 2030 2029 2035 # HAT-CAM-CAP-HAT + 3264 11 2037 2031 2030 2036 # HAT-CAO-CAM-HAT + 3265 1 2041 2042 2043 2044 # CAT-CAO-CAM-CAP + 3266 2 2041 2042 2043 2049 # CAT-CAO-CAM-HAT + 3267 1 2041 2046 2045 2044 # CAT-CAO-CAM-CAP + 3268 2 2041 2046 2045 2051 # CAT-CAO-CAM-HAT + 3269 3 2042 2041 2046 2045 # CAO-CAT-CAO-CAM + 3270 4 2042 2041 2046 2052 # CAO-CAT-CAO-HAT + 3271 5 2042 2043 2044 2045 # CAO-CAM-CAP-CAM + 3272 6 2042 2043 2044 2050 # CAO-CAM-CAP-HAT + 3273 7 2047 2041 2042 2043 # CTT-CAT-CAO-CAM + 3274 3 2046 2041 2042 2043 # CAO-CAT-CAO-CAM + 3275 5 2046 2045 2044 2043 # CAO-CAM-CAP-CAM + 3276 8 2043 2044 2045 2051 # CAM-CAP-CAM-HAT + 3277 9 2044 2043 2042 2048 # CAP-CAM-CAO-HAT + 3278 9 2044 2045 2046 2052 # CAP-CAM-CAO-HAT + 3279 8 2045 2044 2043 2049 # CAM-CAP-CAM-HAT + 3280 7 2047 2041 2046 2045 # CTT-CAT-CAO-CAM + 3281 6 2046 2045 2044 2050 # CAO-CAM-CAP-HAT + 3282 4 2046 2041 2042 2048 # CAO-CAT-CAO-HAT + 3283 10 2047 2041 2042 2048 # CTT-CAT-CAO-HAT + 3284 10 2047 2041 2046 2052 # CTT-CAT-CAO-HAT + 3285 11 2048 2042 2043 2049 # HAT-CAO-CAM-HAT + 3286 12 2049 2043 2044 2050 # HAT-CAM-CAP-HAT + 3287 12 2051 2045 2044 2050 # HAT-CAM-CAP-HAT + 3288 11 2052 2046 2045 2051 # HAT-CAO-CAM-HAT + 3289 1 2056 2057 2058 2059 # CAT-CAO-CAM-CAP + 3290 2 2056 2057 2058 2064 # CAT-CAO-CAM-HAT + 3291 1 2056 2061 2060 2059 # CAT-CAO-CAM-CAP + 3292 2 2056 2061 2060 2066 # CAT-CAO-CAM-HAT + 3293 3 2057 2056 2061 2060 # CAO-CAT-CAO-CAM + 3294 4 2057 2056 2061 2067 # CAO-CAT-CAO-HAT + 3295 5 2057 2058 2059 2060 # CAO-CAM-CAP-CAM + 3296 6 2057 2058 2059 2065 # CAO-CAM-CAP-HAT + 3297 7 2062 2056 2057 2058 # CTT-CAT-CAO-CAM + 3298 3 2061 2056 2057 2058 # CAO-CAT-CAO-CAM + 3299 5 2061 2060 2059 2058 # CAO-CAM-CAP-CAM + 3300 8 2058 2059 2060 2066 # CAM-CAP-CAM-HAT + 3301 9 2059 2058 2057 2063 # CAP-CAM-CAO-HAT + 3302 9 2059 2060 2061 2067 # CAP-CAM-CAO-HAT + 3303 8 2060 2059 2058 2064 # CAM-CAP-CAM-HAT + 3304 7 2062 2056 2061 2060 # CTT-CAT-CAO-CAM + 3305 6 2061 2060 2059 2065 # CAO-CAM-CAP-HAT + 3306 4 2061 2056 2057 2063 # CAO-CAT-CAO-HAT + 3307 10 2062 2056 2057 2063 # CTT-CAT-CAO-HAT + 3308 10 2062 2056 2061 2067 # CTT-CAT-CAO-HAT + 3309 11 2063 2057 2058 2064 # HAT-CAO-CAM-HAT + 3310 12 2064 2058 2059 2065 # HAT-CAM-CAP-HAT + 3311 12 2066 2060 2059 2065 # HAT-CAM-CAP-HAT + 3312 11 2067 2061 2060 2066 # HAT-CAO-CAM-HAT + 3313 1 2071 2072 2073 2074 # CAT-CAO-CAM-CAP + 3314 2 2071 2072 2073 2079 # CAT-CAO-CAM-HAT + 3315 1 2071 2076 2075 2074 # CAT-CAO-CAM-CAP + 3316 2 2071 2076 2075 2081 # CAT-CAO-CAM-HAT + 3317 3 2072 2071 2076 2075 # CAO-CAT-CAO-CAM + 3318 4 2072 2071 2076 2082 # CAO-CAT-CAO-HAT + 3319 5 2072 2073 2074 2075 # CAO-CAM-CAP-CAM + 3320 6 2072 2073 2074 2080 # CAO-CAM-CAP-HAT + 3321 7 2077 2071 2072 2073 # CTT-CAT-CAO-CAM + 3322 3 2076 2071 2072 2073 # CAO-CAT-CAO-CAM + 3323 5 2076 2075 2074 2073 # CAO-CAM-CAP-CAM + 3324 8 2073 2074 2075 2081 # CAM-CAP-CAM-HAT + 3325 9 2074 2073 2072 2078 # CAP-CAM-CAO-HAT + 3326 9 2074 2075 2076 2082 # CAP-CAM-CAO-HAT + 3327 8 2075 2074 2073 2079 # CAM-CAP-CAM-HAT + 3328 7 2077 2071 2076 2075 # CTT-CAT-CAO-CAM + 3329 6 2076 2075 2074 2080 # CAO-CAM-CAP-HAT + 3330 4 2076 2071 2072 2078 # CAO-CAT-CAO-HAT + 3331 10 2077 2071 2072 2078 # CTT-CAT-CAO-HAT + 3332 10 2077 2071 2076 2082 # CTT-CAT-CAO-HAT + 3333 11 2078 2072 2073 2079 # HAT-CAO-CAM-HAT + 3334 12 2079 2073 2074 2080 # HAT-CAM-CAP-HAT + 3335 12 2081 2075 2074 2080 # HAT-CAM-CAP-HAT + 3336 11 2082 2076 2075 2081 # HAT-CAO-CAM-HAT + 3337 1 2086 2087 2088 2089 # CAT-CAO-CAM-CAP + 3338 2 2086 2087 2088 2094 # CAT-CAO-CAM-HAT + 3339 1 2086 2091 2090 2089 # CAT-CAO-CAM-CAP + 3340 2 2086 2091 2090 2096 # CAT-CAO-CAM-HAT + 3341 3 2087 2086 2091 2090 # CAO-CAT-CAO-CAM + 3342 4 2087 2086 2091 2097 # CAO-CAT-CAO-HAT + 3343 5 2087 2088 2089 2090 # CAO-CAM-CAP-CAM + 3344 6 2087 2088 2089 2095 # CAO-CAM-CAP-HAT + 3345 7 2092 2086 2087 2088 # CTT-CAT-CAO-CAM + 3346 3 2091 2086 2087 2088 # CAO-CAT-CAO-CAM + 3347 5 2091 2090 2089 2088 # CAO-CAM-CAP-CAM + 3348 8 2088 2089 2090 2096 # CAM-CAP-CAM-HAT + 3349 9 2089 2088 2087 2093 # CAP-CAM-CAO-HAT + 3350 9 2089 2090 2091 2097 # CAP-CAM-CAO-HAT + 3351 8 2090 2089 2088 2094 # CAM-CAP-CAM-HAT + 3352 7 2092 2086 2091 2090 # CTT-CAT-CAO-CAM + 3353 6 2091 2090 2089 2095 # CAO-CAM-CAP-HAT + 3354 4 2091 2086 2087 2093 # CAO-CAT-CAO-HAT + 3355 10 2092 2086 2087 2093 # CTT-CAT-CAO-HAT + 3356 10 2092 2086 2091 2097 # CTT-CAT-CAO-HAT + 3357 11 2093 2087 2088 2094 # HAT-CAO-CAM-HAT + 3358 12 2094 2088 2089 2095 # HAT-CAM-CAP-HAT + 3359 12 2096 2090 2089 2095 # HAT-CAM-CAP-HAT + 3360 11 2097 2091 2090 2096 # HAT-CAO-CAM-HAT + 3361 1 2101 2102 2103 2104 # CAT-CAO-CAM-CAP + 3362 2 2101 2102 2103 2109 # CAT-CAO-CAM-HAT + 3363 1 2101 2106 2105 2104 # CAT-CAO-CAM-CAP + 3364 2 2101 2106 2105 2111 # CAT-CAO-CAM-HAT + 3365 3 2102 2101 2106 2105 # CAO-CAT-CAO-CAM + 3366 4 2102 2101 2106 2112 # CAO-CAT-CAO-HAT + 3367 5 2102 2103 2104 2105 # CAO-CAM-CAP-CAM + 3368 6 2102 2103 2104 2110 # CAO-CAM-CAP-HAT + 3369 7 2107 2101 2102 2103 # CTT-CAT-CAO-CAM + 3370 3 2106 2101 2102 2103 # CAO-CAT-CAO-CAM + 3371 5 2106 2105 2104 2103 # CAO-CAM-CAP-CAM + 3372 8 2103 2104 2105 2111 # CAM-CAP-CAM-HAT + 3373 9 2104 2103 2102 2108 # CAP-CAM-CAO-HAT + 3374 9 2104 2105 2106 2112 # CAP-CAM-CAO-HAT + 3375 8 2105 2104 2103 2109 # CAM-CAP-CAM-HAT + 3376 7 2107 2101 2106 2105 # CTT-CAT-CAO-CAM + 3377 6 2106 2105 2104 2110 # CAO-CAM-CAP-HAT + 3378 4 2106 2101 2102 2108 # CAO-CAT-CAO-HAT + 3379 10 2107 2101 2102 2108 # CTT-CAT-CAO-HAT + 3380 10 2107 2101 2106 2112 # CTT-CAT-CAO-HAT + 3381 11 2108 2102 2103 2109 # HAT-CAO-CAM-HAT + 3382 12 2109 2103 2104 2110 # HAT-CAM-CAP-HAT + 3383 12 2111 2105 2104 2110 # HAT-CAM-CAP-HAT + 3384 11 2112 2106 2105 2111 # HAT-CAO-CAM-HAT + 3385 1 2116 2117 2118 2119 # CAT-CAO-CAM-CAP + 3386 2 2116 2117 2118 2124 # CAT-CAO-CAM-HAT + 3387 1 2116 2121 2120 2119 # CAT-CAO-CAM-CAP + 3388 2 2116 2121 2120 2126 # CAT-CAO-CAM-HAT + 3389 3 2117 2116 2121 2120 # CAO-CAT-CAO-CAM + 3390 4 2117 2116 2121 2127 # CAO-CAT-CAO-HAT + 3391 5 2117 2118 2119 2120 # CAO-CAM-CAP-CAM + 3392 6 2117 2118 2119 2125 # CAO-CAM-CAP-HAT + 3393 7 2122 2116 2117 2118 # CTT-CAT-CAO-CAM + 3394 3 2121 2116 2117 2118 # CAO-CAT-CAO-CAM + 3395 5 2121 2120 2119 2118 # CAO-CAM-CAP-CAM + 3396 8 2118 2119 2120 2126 # CAM-CAP-CAM-HAT + 3397 9 2119 2118 2117 2123 # CAP-CAM-CAO-HAT + 3398 9 2119 2120 2121 2127 # CAP-CAM-CAO-HAT + 3399 8 2120 2119 2118 2124 # CAM-CAP-CAM-HAT + 3400 7 2122 2116 2121 2120 # CTT-CAT-CAO-CAM + 3401 6 2121 2120 2119 2125 # CAO-CAM-CAP-HAT + 3402 4 2121 2116 2117 2123 # CAO-CAT-CAO-HAT + 3403 10 2122 2116 2117 2123 # CTT-CAT-CAO-HAT + 3404 10 2122 2116 2121 2127 # CTT-CAT-CAO-HAT + 3405 11 2123 2117 2118 2124 # HAT-CAO-CAM-HAT + 3406 12 2124 2118 2119 2125 # HAT-CAM-CAP-HAT + 3407 12 2126 2120 2119 2125 # HAT-CAM-CAP-HAT + 3408 11 2127 2121 2120 2126 # HAT-CAO-CAM-HAT + 3409 1 2131 2132 2133 2134 # CAT-CAO-CAM-CAP + 3410 2 2131 2132 2133 2139 # CAT-CAO-CAM-HAT + 3411 1 2131 2136 2135 2134 # CAT-CAO-CAM-CAP + 3412 2 2131 2136 2135 2141 # CAT-CAO-CAM-HAT + 3413 3 2132 2131 2136 2135 # CAO-CAT-CAO-CAM + 3414 4 2132 2131 2136 2142 # CAO-CAT-CAO-HAT + 3415 5 2132 2133 2134 2135 # CAO-CAM-CAP-CAM + 3416 6 2132 2133 2134 2140 # CAO-CAM-CAP-HAT + 3417 7 2137 2131 2132 2133 # CTT-CAT-CAO-CAM + 3418 3 2136 2131 2132 2133 # CAO-CAT-CAO-CAM + 3419 5 2136 2135 2134 2133 # CAO-CAM-CAP-CAM + 3420 8 2133 2134 2135 2141 # CAM-CAP-CAM-HAT + 3421 9 2134 2133 2132 2138 # CAP-CAM-CAO-HAT + 3422 9 2134 2135 2136 2142 # CAP-CAM-CAO-HAT + 3423 8 2135 2134 2133 2139 # CAM-CAP-CAM-HAT + 3424 7 2137 2131 2136 2135 # CTT-CAT-CAO-CAM + 3425 6 2136 2135 2134 2140 # CAO-CAM-CAP-HAT + 3426 4 2136 2131 2132 2138 # CAO-CAT-CAO-HAT + 3427 10 2137 2131 2132 2138 # CTT-CAT-CAO-HAT + 3428 10 2137 2131 2136 2142 # CTT-CAT-CAO-HAT + 3429 11 2138 2132 2133 2139 # HAT-CAO-CAM-HAT + 3430 12 2139 2133 2134 2140 # HAT-CAM-CAP-HAT + 3431 12 2141 2135 2134 2140 # HAT-CAM-CAP-HAT + 3432 11 2142 2136 2135 2141 # HAT-CAO-CAM-HAT + 3433 1 2146 2147 2148 2149 # CAT-CAO-CAM-CAP + 3434 2 2146 2147 2148 2154 # CAT-CAO-CAM-HAT + 3435 1 2146 2151 2150 2149 # CAT-CAO-CAM-CAP + 3436 2 2146 2151 2150 2156 # CAT-CAO-CAM-HAT + 3437 3 2147 2146 2151 2150 # CAO-CAT-CAO-CAM + 3438 4 2147 2146 2151 2157 # CAO-CAT-CAO-HAT + 3439 5 2147 2148 2149 2150 # CAO-CAM-CAP-CAM + 3440 6 2147 2148 2149 2155 # CAO-CAM-CAP-HAT + 3441 7 2152 2146 2147 2148 # CTT-CAT-CAO-CAM + 3442 3 2151 2146 2147 2148 # CAO-CAT-CAO-CAM + 3443 5 2151 2150 2149 2148 # CAO-CAM-CAP-CAM + 3444 8 2148 2149 2150 2156 # CAM-CAP-CAM-HAT + 3445 9 2149 2148 2147 2153 # CAP-CAM-CAO-HAT + 3446 9 2149 2150 2151 2157 # CAP-CAM-CAO-HAT + 3447 8 2150 2149 2148 2154 # CAM-CAP-CAM-HAT + 3448 7 2152 2146 2151 2150 # CTT-CAT-CAO-CAM + 3449 6 2151 2150 2149 2155 # CAO-CAM-CAP-HAT + 3450 4 2151 2146 2147 2153 # CAO-CAT-CAO-HAT + 3451 10 2152 2146 2147 2153 # CTT-CAT-CAO-HAT + 3452 10 2152 2146 2151 2157 # CTT-CAT-CAO-HAT + 3453 11 2153 2147 2148 2154 # HAT-CAO-CAM-HAT + 3454 12 2154 2148 2149 2155 # HAT-CAM-CAP-HAT + 3455 12 2156 2150 2149 2155 # HAT-CAM-CAP-HAT + 3456 11 2157 2151 2150 2156 # HAT-CAO-CAM-HAT + 3457 1 2161 2162 2163 2164 # CAT-CAO-CAM-CAP + 3458 2 2161 2162 2163 2169 # CAT-CAO-CAM-HAT + 3459 1 2161 2166 2165 2164 # CAT-CAO-CAM-CAP + 3460 2 2161 2166 2165 2171 # CAT-CAO-CAM-HAT + 3461 3 2162 2161 2166 2165 # CAO-CAT-CAO-CAM + 3462 4 2162 2161 2166 2172 # CAO-CAT-CAO-HAT + 3463 5 2162 2163 2164 2165 # CAO-CAM-CAP-CAM + 3464 6 2162 2163 2164 2170 # CAO-CAM-CAP-HAT + 3465 7 2167 2161 2162 2163 # CTT-CAT-CAO-CAM + 3466 3 2166 2161 2162 2163 # CAO-CAT-CAO-CAM + 3467 5 2166 2165 2164 2163 # CAO-CAM-CAP-CAM + 3468 8 2163 2164 2165 2171 # CAM-CAP-CAM-HAT + 3469 9 2164 2163 2162 2168 # CAP-CAM-CAO-HAT + 3470 9 2164 2165 2166 2172 # CAP-CAM-CAO-HAT + 3471 8 2165 2164 2163 2169 # CAM-CAP-CAM-HAT + 3472 7 2167 2161 2166 2165 # CTT-CAT-CAO-CAM + 3473 6 2166 2165 2164 2170 # CAO-CAM-CAP-HAT + 3474 4 2166 2161 2162 2168 # CAO-CAT-CAO-HAT + 3475 10 2167 2161 2162 2168 # CTT-CAT-CAO-HAT + 3476 10 2167 2161 2166 2172 # CTT-CAT-CAO-HAT + 3477 11 2168 2162 2163 2169 # HAT-CAO-CAM-HAT + 3478 12 2169 2163 2164 2170 # HAT-CAM-CAP-HAT + 3479 12 2171 2165 2164 2170 # HAT-CAM-CAP-HAT + 3480 11 2172 2166 2165 2171 # HAT-CAO-CAM-HAT + 3481 1 2176 2177 2178 2179 # CAT-CAO-CAM-CAP + 3482 2 2176 2177 2178 2184 # CAT-CAO-CAM-HAT + 3483 1 2176 2181 2180 2179 # CAT-CAO-CAM-CAP + 3484 2 2176 2181 2180 2186 # CAT-CAO-CAM-HAT + 3485 3 2177 2176 2181 2180 # CAO-CAT-CAO-CAM + 3486 4 2177 2176 2181 2187 # CAO-CAT-CAO-HAT + 3487 5 2177 2178 2179 2180 # CAO-CAM-CAP-CAM + 3488 6 2177 2178 2179 2185 # CAO-CAM-CAP-HAT + 3489 7 2182 2176 2177 2178 # CTT-CAT-CAO-CAM + 3490 3 2181 2176 2177 2178 # CAO-CAT-CAO-CAM + 3491 5 2181 2180 2179 2178 # CAO-CAM-CAP-CAM + 3492 8 2178 2179 2180 2186 # CAM-CAP-CAM-HAT + 3493 9 2179 2178 2177 2183 # CAP-CAM-CAO-HAT + 3494 9 2179 2180 2181 2187 # CAP-CAM-CAO-HAT + 3495 8 2180 2179 2178 2184 # CAM-CAP-CAM-HAT + 3496 7 2182 2176 2181 2180 # CTT-CAT-CAO-CAM + 3497 6 2181 2180 2179 2185 # CAO-CAM-CAP-HAT + 3498 4 2181 2176 2177 2183 # CAO-CAT-CAO-HAT + 3499 10 2182 2176 2177 2183 # CTT-CAT-CAO-HAT + 3500 10 2182 2176 2181 2187 # CTT-CAT-CAO-HAT + 3501 11 2183 2177 2178 2184 # HAT-CAO-CAM-HAT + 3502 12 2184 2178 2179 2185 # HAT-CAM-CAP-HAT + 3503 12 2186 2180 2179 2185 # HAT-CAM-CAP-HAT + 3504 11 2187 2181 2180 2186 # HAT-CAO-CAM-HAT + 3505 1 2191 2192 2193 2194 # CAT-CAO-CAM-CAP + 3506 2 2191 2192 2193 2199 # CAT-CAO-CAM-HAT + 3507 1 2191 2196 2195 2194 # CAT-CAO-CAM-CAP + 3508 2 2191 2196 2195 2201 # CAT-CAO-CAM-HAT + 3509 3 2192 2191 2196 2195 # CAO-CAT-CAO-CAM + 3510 4 2192 2191 2196 2202 # CAO-CAT-CAO-HAT + 3511 5 2192 2193 2194 2195 # CAO-CAM-CAP-CAM + 3512 6 2192 2193 2194 2200 # CAO-CAM-CAP-HAT + 3513 7 2197 2191 2192 2193 # CTT-CAT-CAO-CAM + 3514 3 2196 2191 2192 2193 # CAO-CAT-CAO-CAM + 3515 5 2196 2195 2194 2193 # CAO-CAM-CAP-CAM + 3516 8 2193 2194 2195 2201 # CAM-CAP-CAM-HAT + 3517 9 2194 2193 2192 2198 # CAP-CAM-CAO-HAT + 3518 9 2194 2195 2196 2202 # CAP-CAM-CAO-HAT + 3519 8 2195 2194 2193 2199 # CAM-CAP-CAM-HAT + 3520 7 2197 2191 2196 2195 # CTT-CAT-CAO-CAM + 3521 6 2196 2195 2194 2200 # CAO-CAM-CAP-HAT + 3522 4 2196 2191 2192 2198 # CAO-CAT-CAO-HAT + 3523 10 2197 2191 2192 2198 # CTT-CAT-CAO-HAT + 3524 10 2197 2191 2196 2202 # CTT-CAT-CAO-HAT + 3525 11 2198 2192 2193 2199 # HAT-CAO-CAM-HAT + 3526 12 2199 2193 2194 2200 # HAT-CAM-CAP-HAT + 3527 12 2201 2195 2194 2200 # HAT-CAM-CAP-HAT + 3528 11 2202 2196 2195 2201 # HAT-CAO-CAM-HAT + 3529 1 2206 2207 2208 2209 # CAT-CAO-CAM-CAP + 3530 2 2206 2207 2208 2214 # CAT-CAO-CAM-HAT + 3531 1 2206 2211 2210 2209 # CAT-CAO-CAM-CAP + 3532 2 2206 2211 2210 2216 # CAT-CAO-CAM-HAT + 3533 3 2207 2206 2211 2210 # CAO-CAT-CAO-CAM + 3534 4 2207 2206 2211 2217 # CAO-CAT-CAO-HAT + 3535 5 2207 2208 2209 2210 # CAO-CAM-CAP-CAM + 3536 6 2207 2208 2209 2215 # CAO-CAM-CAP-HAT + 3537 7 2212 2206 2207 2208 # CTT-CAT-CAO-CAM + 3538 3 2211 2206 2207 2208 # CAO-CAT-CAO-CAM + 3539 5 2211 2210 2209 2208 # CAO-CAM-CAP-CAM + 3540 8 2208 2209 2210 2216 # CAM-CAP-CAM-HAT + 3541 9 2209 2208 2207 2213 # CAP-CAM-CAO-HAT + 3542 9 2209 2210 2211 2217 # CAP-CAM-CAO-HAT + 3543 8 2210 2209 2208 2214 # CAM-CAP-CAM-HAT + 3544 7 2212 2206 2211 2210 # CTT-CAT-CAO-CAM + 3545 6 2211 2210 2209 2215 # CAO-CAM-CAP-HAT + 3546 4 2211 2206 2207 2213 # CAO-CAT-CAO-HAT + 3547 10 2212 2206 2207 2213 # CTT-CAT-CAO-HAT + 3548 10 2212 2206 2211 2217 # CTT-CAT-CAO-HAT + 3549 11 2213 2207 2208 2214 # HAT-CAO-CAM-HAT + 3550 12 2214 2208 2209 2215 # HAT-CAM-CAP-HAT + 3551 12 2216 2210 2209 2215 # HAT-CAM-CAP-HAT + 3552 11 2217 2211 2210 2216 # HAT-CAO-CAM-HAT + 3553 1 2221 2222 2223 2224 # CAT-CAO-CAM-CAP + 3554 2 2221 2222 2223 2229 # CAT-CAO-CAM-HAT + 3555 1 2221 2226 2225 2224 # CAT-CAO-CAM-CAP + 3556 2 2221 2226 2225 2231 # CAT-CAO-CAM-HAT + 3557 3 2222 2221 2226 2225 # CAO-CAT-CAO-CAM + 3558 4 2222 2221 2226 2232 # CAO-CAT-CAO-HAT + 3559 5 2222 2223 2224 2225 # CAO-CAM-CAP-CAM + 3560 6 2222 2223 2224 2230 # CAO-CAM-CAP-HAT + 3561 7 2227 2221 2222 2223 # CTT-CAT-CAO-CAM + 3562 3 2226 2221 2222 2223 # CAO-CAT-CAO-CAM + 3563 5 2226 2225 2224 2223 # CAO-CAM-CAP-CAM + 3564 8 2223 2224 2225 2231 # CAM-CAP-CAM-HAT + 3565 9 2224 2223 2222 2228 # CAP-CAM-CAO-HAT + 3566 9 2224 2225 2226 2232 # CAP-CAM-CAO-HAT + 3567 8 2225 2224 2223 2229 # CAM-CAP-CAM-HAT + 3568 7 2227 2221 2226 2225 # CTT-CAT-CAO-CAM + 3569 6 2226 2225 2224 2230 # CAO-CAM-CAP-HAT + 3570 4 2226 2221 2222 2228 # CAO-CAT-CAO-HAT + 3571 10 2227 2221 2222 2228 # CTT-CAT-CAO-HAT + 3572 10 2227 2221 2226 2232 # CTT-CAT-CAO-HAT + 3573 11 2228 2222 2223 2229 # HAT-CAO-CAM-HAT + 3574 12 2229 2223 2224 2230 # HAT-CAM-CAP-HAT + 3575 12 2231 2225 2224 2230 # HAT-CAM-CAP-HAT + 3576 11 2232 2226 2225 2231 # HAT-CAO-CAM-HAT + 3577 1 2236 2237 2238 2239 # CAT-CAO-CAM-CAP + 3578 2 2236 2237 2238 2244 # CAT-CAO-CAM-HAT + 3579 1 2236 2241 2240 2239 # CAT-CAO-CAM-CAP + 3580 2 2236 2241 2240 2246 # CAT-CAO-CAM-HAT + 3581 3 2237 2236 2241 2240 # CAO-CAT-CAO-CAM + 3582 4 2237 2236 2241 2247 # CAO-CAT-CAO-HAT + 3583 5 2237 2238 2239 2240 # CAO-CAM-CAP-CAM + 3584 6 2237 2238 2239 2245 # CAO-CAM-CAP-HAT + 3585 7 2242 2236 2237 2238 # CTT-CAT-CAO-CAM + 3586 3 2241 2236 2237 2238 # CAO-CAT-CAO-CAM + 3587 5 2241 2240 2239 2238 # CAO-CAM-CAP-CAM + 3588 8 2238 2239 2240 2246 # CAM-CAP-CAM-HAT + 3589 9 2239 2238 2237 2243 # CAP-CAM-CAO-HAT + 3590 9 2239 2240 2241 2247 # CAP-CAM-CAO-HAT + 3591 8 2240 2239 2238 2244 # CAM-CAP-CAM-HAT + 3592 7 2242 2236 2241 2240 # CTT-CAT-CAO-CAM + 3593 6 2241 2240 2239 2245 # CAO-CAM-CAP-HAT + 3594 4 2241 2236 2237 2243 # CAO-CAT-CAO-HAT + 3595 10 2242 2236 2237 2243 # CTT-CAT-CAO-HAT + 3596 10 2242 2236 2241 2247 # CTT-CAT-CAO-HAT + 3597 11 2243 2237 2238 2244 # HAT-CAO-CAM-HAT + 3598 12 2244 2238 2239 2245 # HAT-CAM-CAP-HAT + 3599 12 2246 2240 2239 2245 # HAT-CAM-CAP-HAT + 3600 11 2247 2241 2240 2246 # HAT-CAO-CAM-HAT + 3601 1 2251 2252 2253 2254 # CAT-CAO-CAM-CAP + 3602 2 2251 2252 2253 2259 # CAT-CAO-CAM-HAT + 3603 1 2251 2256 2255 2254 # CAT-CAO-CAM-CAP + 3604 2 2251 2256 2255 2261 # CAT-CAO-CAM-HAT + 3605 3 2252 2251 2256 2255 # CAO-CAT-CAO-CAM + 3606 4 2252 2251 2256 2262 # CAO-CAT-CAO-HAT + 3607 5 2252 2253 2254 2255 # CAO-CAM-CAP-CAM + 3608 6 2252 2253 2254 2260 # CAO-CAM-CAP-HAT + 3609 7 2257 2251 2252 2253 # CTT-CAT-CAO-CAM + 3610 3 2256 2251 2252 2253 # CAO-CAT-CAO-CAM + 3611 5 2256 2255 2254 2253 # CAO-CAM-CAP-CAM + 3612 8 2253 2254 2255 2261 # CAM-CAP-CAM-HAT + 3613 9 2254 2253 2252 2258 # CAP-CAM-CAO-HAT + 3614 9 2254 2255 2256 2262 # CAP-CAM-CAO-HAT + 3615 8 2255 2254 2253 2259 # CAM-CAP-CAM-HAT + 3616 7 2257 2251 2256 2255 # CTT-CAT-CAO-CAM + 3617 6 2256 2255 2254 2260 # CAO-CAM-CAP-HAT + 3618 4 2256 2251 2252 2258 # CAO-CAT-CAO-HAT + 3619 10 2257 2251 2252 2258 # CTT-CAT-CAO-HAT + 3620 10 2257 2251 2256 2262 # CTT-CAT-CAO-HAT + 3621 11 2258 2252 2253 2259 # HAT-CAO-CAM-HAT + 3622 12 2259 2253 2254 2260 # HAT-CAM-CAP-HAT + 3623 12 2261 2255 2254 2260 # HAT-CAM-CAP-HAT + 3624 11 2262 2256 2255 2261 # HAT-CAO-CAM-HAT + 3625 1 2266 2267 2268 2269 # CAT-CAO-CAM-CAP + 3626 2 2266 2267 2268 2274 # CAT-CAO-CAM-HAT + 3627 1 2266 2271 2270 2269 # CAT-CAO-CAM-CAP + 3628 2 2266 2271 2270 2276 # CAT-CAO-CAM-HAT + 3629 3 2267 2266 2271 2270 # CAO-CAT-CAO-CAM + 3630 4 2267 2266 2271 2277 # CAO-CAT-CAO-HAT + 3631 5 2267 2268 2269 2270 # CAO-CAM-CAP-CAM + 3632 6 2267 2268 2269 2275 # CAO-CAM-CAP-HAT + 3633 7 2272 2266 2267 2268 # CTT-CAT-CAO-CAM + 3634 3 2271 2266 2267 2268 # CAO-CAT-CAO-CAM + 3635 5 2271 2270 2269 2268 # CAO-CAM-CAP-CAM + 3636 8 2268 2269 2270 2276 # CAM-CAP-CAM-HAT + 3637 9 2269 2268 2267 2273 # CAP-CAM-CAO-HAT + 3638 9 2269 2270 2271 2277 # CAP-CAM-CAO-HAT + 3639 8 2270 2269 2268 2274 # CAM-CAP-CAM-HAT + 3640 7 2272 2266 2271 2270 # CTT-CAT-CAO-CAM + 3641 6 2271 2270 2269 2275 # CAO-CAM-CAP-HAT + 3642 4 2271 2266 2267 2273 # CAO-CAT-CAO-HAT + 3643 10 2272 2266 2267 2273 # CTT-CAT-CAO-HAT + 3644 10 2272 2266 2271 2277 # CTT-CAT-CAO-HAT + 3645 11 2273 2267 2268 2274 # HAT-CAO-CAM-HAT + 3646 12 2274 2268 2269 2275 # HAT-CAM-CAP-HAT + 3647 12 2276 2270 2269 2275 # HAT-CAM-CAP-HAT + 3648 11 2277 2271 2270 2276 # HAT-CAO-CAM-HAT + 3649 1 2281 2282 2283 2284 # CAT-CAO-CAM-CAP + 3650 2 2281 2282 2283 2289 # CAT-CAO-CAM-HAT + 3651 1 2281 2286 2285 2284 # CAT-CAO-CAM-CAP + 3652 2 2281 2286 2285 2291 # CAT-CAO-CAM-HAT + 3653 3 2282 2281 2286 2285 # CAO-CAT-CAO-CAM + 3654 4 2282 2281 2286 2292 # CAO-CAT-CAO-HAT + 3655 5 2282 2283 2284 2285 # CAO-CAM-CAP-CAM + 3656 6 2282 2283 2284 2290 # CAO-CAM-CAP-HAT + 3657 7 2287 2281 2282 2283 # CTT-CAT-CAO-CAM + 3658 3 2286 2281 2282 2283 # CAO-CAT-CAO-CAM + 3659 5 2286 2285 2284 2283 # CAO-CAM-CAP-CAM + 3660 8 2283 2284 2285 2291 # CAM-CAP-CAM-HAT + 3661 9 2284 2283 2282 2288 # CAP-CAM-CAO-HAT + 3662 9 2284 2285 2286 2292 # CAP-CAM-CAO-HAT + 3663 8 2285 2284 2283 2289 # CAM-CAP-CAM-HAT + 3664 7 2287 2281 2286 2285 # CTT-CAT-CAO-CAM + 3665 6 2286 2285 2284 2290 # CAO-CAM-CAP-HAT + 3666 4 2286 2281 2282 2288 # CAO-CAT-CAO-HAT + 3667 10 2287 2281 2282 2288 # CTT-CAT-CAO-HAT + 3668 10 2287 2281 2286 2292 # CTT-CAT-CAO-HAT + 3669 11 2288 2282 2283 2289 # HAT-CAO-CAM-HAT + 3670 12 2289 2283 2284 2290 # HAT-CAM-CAP-HAT + 3671 12 2291 2285 2284 2290 # HAT-CAM-CAP-HAT + 3672 11 2292 2286 2285 2291 # HAT-CAO-CAM-HAT + 3673 1 2296 2297 2298 2299 # CAT-CAO-CAM-CAP + 3674 2 2296 2297 2298 2304 # CAT-CAO-CAM-HAT + 3675 1 2296 2301 2300 2299 # CAT-CAO-CAM-CAP + 3676 2 2296 2301 2300 2306 # CAT-CAO-CAM-HAT + 3677 3 2297 2296 2301 2300 # CAO-CAT-CAO-CAM + 3678 4 2297 2296 2301 2307 # CAO-CAT-CAO-HAT + 3679 5 2297 2298 2299 2300 # CAO-CAM-CAP-CAM + 3680 6 2297 2298 2299 2305 # CAO-CAM-CAP-HAT + 3681 7 2302 2296 2297 2298 # CTT-CAT-CAO-CAM + 3682 3 2301 2296 2297 2298 # CAO-CAT-CAO-CAM + 3683 5 2301 2300 2299 2298 # CAO-CAM-CAP-CAM + 3684 8 2298 2299 2300 2306 # CAM-CAP-CAM-HAT + 3685 9 2299 2298 2297 2303 # CAP-CAM-CAO-HAT + 3686 9 2299 2300 2301 2307 # CAP-CAM-CAO-HAT + 3687 8 2300 2299 2298 2304 # CAM-CAP-CAM-HAT + 3688 7 2302 2296 2301 2300 # CTT-CAT-CAO-CAM + 3689 6 2301 2300 2299 2305 # CAO-CAM-CAP-HAT + 3690 4 2301 2296 2297 2303 # CAO-CAT-CAO-HAT + 3691 10 2302 2296 2297 2303 # CTT-CAT-CAO-HAT + 3692 10 2302 2296 2301 2307 # CTT-CAT-CAO-HAT + 3693 11 2303 2297 2298 2304 # HAT-CAO-CAM-HAT + 3694 12 2304 2298 2299 2305 # HAT-CAM-CAP-HAT + 3695 12 2306 2300 2299 2305 # HAT-CAM-CAP-HAT + 3696 11 2307 2301 2300 2306 # HAT-CAO-CAM-HAT + 3697 1 2311 2312 2313 2314 # CAT-CAO-CAM-CAP + 3698 2 2311 2312 2313 2319 # CAT-CAO-CAM-HAT + 3699 1 2311 2316 2315 2314 # CAT-CAO-CAM-CAP + 3700 2 2311 2316 2315 2321 # CAT-CAO-CAM-HAT + 3701 3 2312 2311 2316 2315 # CAO-CAT-CAO-CAM + 3702 4 2312 2311 2316 2322 # CAO-CAT-CAO-HAT + 3703 5 2312 2313 2314 2315 # CAO-CAM-CAP-CAM + 3704 6 2312 2313 2314 2320 # CAO-CAM-CAP-HAT + 3705 7 2317 2311 2312 2313 # CTT-CAT-CAO-CAM + 3706 3 2316 2311 2312 2313 # CAO-CAT-CAO-CAM + 3707 5 2316 2315 2314 2313 # CAO-CAM-CAP-CAM + 3708 8 2313 2314 2315 2321 # CAM-CAP-CAM-HAT + 3709 9 2314 2313 2312 2318 # CAP-CAM-CAO-HAT + 3710 9 2314 2315 2316 2322 # CAP-CAM-CAO-HAT + 3711 8 2315 2314 2313 2319 # CAM-CAP-CAM-HAT + 3712 7 2317 2311 2316 2315 # CTT-CAT-CAO-CAM + 3713 6 2316 2315 2314 2320 # CAO-CAM-CAP-HAT + 3714 4 2316 2311 2312 2318 # CAO-CAT-CAO-HAT + 3715 10 2317 2311 2312 2318 # CTT-CAT-CAO-HAT + 3716 10 2317 2311 2316 2322 # CTT-CAT-CAO-HAT + 3717 11 2318 2312 2313 2319 # HAT-CAO-CAM-HAT + 3718 12 2319 2313 2314 2320 # HAT-CAM-CAP-HAT + 3719 12 2321 2315 2314 2320 # HAT-CAM-CAP-HAT + 3720 11 2322 2316 2315 2321 # HAT-CAO-CAM-HAT + 3721 1 2326 2327 2328 2329 # CAT-CAO-CAM-CAP + 3722 2 2326 2327 2328 2334 # CAT-CAO-CAM-HAT + 3723 1 2326 2331 2330 2329 # CAT-CAO-CAM-CAP + 3724 2 2326 2331 2330 2336 # CAT-CAO-CAM-HAT + 3725 3 2327 2326 2331 2330 # CAO-CAT-CAO-CAM + 3726 4 2327 2326 2331 2337 # CAO-CAT-CAO-HAT + 3727 5 2327 2328 2329 2330 # CAO-CAM-CAP-CAM + 3728 6 2327 2328 2329 2335 # CAO-CAM-CAP-HAT + 3729 7 2332 2326 2327 2328 # CTT-CAT-CAO-CAM + 3730 3 2331 2326 2327 2328 # CAO-CAT-CAO-CAM + 3731 5 2331 2330 2329 2328 # CAO-CAM-CAP-CAM + 3732 8 2328 2329 2330 2336 # CAM-CAP-CAM-HAT + 3733 9 2329 2328 2327 2333 # CAP-CAM-CAO-HAT + 3734 9 2329 2330 2331 2337 # CAP-CAM-CAO-HAT + 3735 8 2330 2329 2328 2334 # CAM-CAP-CAM-HAT + 3736 7 2332 2326 2331 2330 # CTT-CAT-CAO-CAM + 3737 6 2331 2330 2329 2335 # CAO-CAM-CAP-HAT + 3738 4 2331 2326 2327 2333 # CAO-CAT-CAO-HAT + 3739 10 2332 2326 2327 2333 # CTT-CAT-CAO-HAT + 3740 10 2332 2326 2331 2337 # CTT-CAT-CAO-HAT + 3741 11 2333 2327 2328 2334 # HAT-CAO-CAM-HAT + 3742 12 2334 2328 2329 2335 # HAT-CAM-CAP-HAT + 3743 12 2336 2330 2329 2335 # HAT-CAM-CAP-HAT + 3744 11 2337 2331 2330 2336 # HAT-CAO-CAM-HAT + 3745 1 2341 2342 2343 2344 # CAT-CAO-CAM-CAP + 3746 2 2341 2342 2343 2349 # CAT-CAO-CAM-HAT + 3747 1 2341 2346 2345 2344 # CAT-CAO-CAM-CAP + 3748 2 2341 2346 2345 2351 # CAT-CAO-CAM-HAT + 3749 3 2342 2341 2346 2345 # CAO-CAT-CAO-CAM + 3750 4 2342 2341 2346 2352 # CAO-CAT-CAO-HAT + 3751 5 2342 2343 2344 2345 # CAO-CAM-CAP-CAM + 3752 6 2342 2343 2344 2350 # CAO-CAM-CAP-HAT + 3753 7 2347 2341 2342 2343 # CTT-CAT-CAO-CAM + 3754 3 2346 2341 2342 2343 # CAO-CAT-CAO-CAM + 3755 5 2346 2345 2344 2343 # CAO-CAM-CAP-CAM + 3756 8 2343 2344 2345 2351 # CAM-CAP-CAM-HAT + 3757 9 2344 2343 2342 2348 # CAP-CAM-CAO-HAT + 3758 9 2344 2345 2346 2352 # CAP-CAM-CAO-HAT + 3759 8 2345 2344 2343 2349 # CAM-CAP-CAM-HAT + 3760 7 2347 2341 2346 2345 # CTT-CAT-CAO-CAM + 3761 6 2346 2345 2344 2350 # CAO-CAM-CAP-HAT + 3762 4 2346 2341 2342 2348 # CAO-CAT-CAO-HAT + 3763 10 2347 2341 2342 2348 # CTT-CAT-CAO-HAT + 3764 10 2347 2341 2346 2352 # CTT-CAT-CAO-HAT + 3765 11 2348 2342 2343 2349 # HAT-CAO-CAM-HAT + 3766 12 2349 2343 2344 2350 # HAT-CAM-CAP-HAT + 3767 12 2351 2345 2344 2350 # HAT-CAM-CAP-HAT + 3768 11 2352 2346 2345 2351 # HAT-CAO-CAM-HAT + 3769 1 2356 2357 2358 2359 # CAT-CAO-CAM-CAP + 3770 2 2356 2357 2358 2364 # CAT-CAO-CAM-HAT + 3771 1 2356 2361 2360 2359 # CAT-CAO-CAM-CAP + 3772 2 2356 2361 2360 2366 # CAT-CAO-CAM-HAT + 3773 3 2357 2356 2361 2360 # CAO-CAT-CAO-CAM + 3774 4 2357 2356 2361 2367 # CAO-CAT-CAO-HAT + 3775 5 2357 2358 2359 2360 # CAO-CAM-CAP-CAM + 3776 6 2357 2358 2359 2365 # CAO-CAM-CAP-HAT + 3777 7 2362 2356 2357 2358 # CTT-CAT-CAO-CAM + 3778 3 2361 2356 2357 2358 # CAO-CAT-CAO-CAM + 3779 5 2361 2360 2359 2358 # CAO-CAM-CAP-CAM + 3780 8 2358 2359 2360 2366 # CAM-CAP-CAM-HAT + 3781 9 2359 2358 2357 2363 # CAP-CAM-CAO-HAT + 3782 9 2359 2360 2361 2367 # CAP-CAM-CAO-HAT + 3783 8 2360 2359 2358 2364 # CAM-CAP-CAM-HAT + 3784 7 2362 2356 2361 2360 # CTT-CAT-CAO-CAM + 3785 6 2361 2360 2359 2365 # CAO-CAM-CAP-HAT + 3786 4 2361 2356 2357 2363 # CAO-CAT-CAO-HAT + 3787 10 2362 2356 2357 2363 # CTT-CAT-CAO-HAT + 3788 10 2362 2356 2361 2367 # CTT-CAT-CAO-HAT + 3789 11 2363 2357 2358 2364 # HAT-CAO-CAM-HAT + 3790 12 2364 2358 2359 2365 # HAT-CAM-CAP-HAT + 3791 12 2366 2360 2359 2365 # HAT-CAM-CAP-HAT + 3792 11 2367 2361 2360 2366 # HAT-CAO-CAM-HAT + 3793 1 2371 2372 2373 2374 # CAT-CAO-CAM-CAP + 3794 2 2371 2372 2373 2379 # CAT-CAO-CAM-HAT + 3795 1 2371 2376 2375 2374 # CAT-CAO-CAM-CAP + 3796 2 2371 2376 2375 2381 # CAT-CAO-CAM-HAT + 3797 3 2372 2371 2376 2375 # CAO-CAT-CAO-CAM + 3798 4 2372 2371 2376 2382 # CAO-CAT-CAO-HAT + 3799 5 2372 2373 2374 2375 # CAO-CAM-CAP-CAM + 3800 6 2372 2373 2374 2380 # CAO-CAM-CAP-HAT + 3801 7 2377 2371 2372 2373 # CTT-CAT-CAO-CAM + 3802 3 2376 2371 2372 2373 # CAO-CAT-CAO-CAM + 3803 5 2376 2375 2374 2373 # CAO-CAM-CAP-CAM + 3804 8 2373 2374 2375 2381 # CAM-CAP-CAM-HAT + 3805 9 2374 2373 2372 2378 # CAP-CAM-CAO-HAT + 3806 9 2374 2375 2376 2382 # CAP-CAM-CAO-HAT + 3807 8 2375 2374 2373 2379 # CAM-CAP-CAM-HAT + 3808 7 2377 2371 2376 2375 # CTT-CAT-CAO-CAM + 3809 6 2376 2375 2374 2380 # CAO-CAM-CAP-HAT + 3810 4 2376 2371 2372 2378 # CAO-CAT-CAO-HAT + 3811 10 2377 2371 2372 2378 # CTT-CAT-CAO-HAT + 3812 10 2377 2371 2376 2382 # CTT-CAT-CAO-HAT + 3813 11 2378 2372 2373 2379 # HAT-CAO-CAM-HAT + 3814 12 2379 2373 2374 2380 # HAT-CAM-CAP-HAT + 3815 12 2381 2375 2374 2380 # HAT-CAM-CAP-HAT + 3816 11 2382 2376 2375 2381 # HAT-CAO-CAM-HAT + 3817 1 2386 2387 2388 2389 # CAT-CAO-CAM-CAP + 3818 2 2386 2387 2388 2394 # CAT-CAO-CAM-HAT + 3819 1 2386 2391 2390 2389 # CAT-CAO-CAM-CAP + 3820 2 2386 2391 2390 2396 # CAT-CAO-CAM-HAT + 3821 3 2387 2386 2391 2390 # CAO-CAT-CAO-CAM + 3822 4 2387 2386 2391 2397 # CAO-CAT-CAO-HAT + 3823 5 2387 2388 2389 2390 # CAO-CAM-CAP-CAM + 3824 6 2387 2388 2389 2395 # CAO-CAM-CAP-HAT + 3825 7 2392 2386 2387 2388 # CTT-CAT-CAO-CAM + 3826 3 2391 2386 2387 2388 # CAO-CAT-CAO-CAM + 3827 5 2391 2390 2389 2388 # CAO-CAM-CAP-CAM + 3828 8 2388 2389 2390 2396 # CAM-CAP-CAM-HAT + 3829 9 2389 2388 2387 2393 # CAP-CAM-CAO-HAT + 3830 9 2389 2390 2391 2397 # CAP-CAM-CAO-HAT + 3831 8 2390 2389 2388 2394 # CAM-CAP-CAM-HAT + 3832 7 2392 2386 2391 2390 # CTT-CAT-CAO-CAM + 3833 6 2391 2390 2389 2395 # CAO-CAM-CAP-HAT + 3834 4 2391 2386 2387 2393 # CAO-CAT-CAO-HAT + 3835 10 2392 2386 2387 2393 # CTT-CAT-CAO-HAT + 3836 10 2392 2386 2391 2397 # CTT-CAT-CAO-HAT + 3837 11 2393 2387 2388 2394 # HAT-CAO-CAM-HAT + 3838 12 2394 2388 2389 2395 # HAT-CAM-CAP-HAT + 3839 12 2396 2390 2389 2395 # HAT-CAM-CAP-HAT + 3840 11 2397 2391 2390 2396 # HAT-CAO-CAM-HAT + 3841 1 2401 2402 2403 2404 # CAT-CAO-CAM-CAP + 3842 2 2401 2402 2403 2409 # CAT-CAO-CAM-HAT + 3843 1 2401 2406 2405 2404 # CAT-CAO-CAM-CAP + 3844 2 2401 2406 2405 2411 # CAT-CAO-CAM-HAT + 3845 3 2402 2401 2406 2405 # CAO-CAT-CAO-CAM + 3846 4 2402 2401 2406 2412 # CAO-CAT-CAO-HAT + 3847 5 2402 2403 2404 2405 # CAO-CAM-CAP-CAM + 3848 6 2402 2403 2404 2410 # CAO-CAM-CAP-HAT + 3849 7 2407 2401 2402 2403 # CTT-CAT-CAO-CAM + 3850 3 2406 2401 2402 2403 # CAO-CAT-CAO-CAM + 3851 5 2406 2405 2404 2403 # CAO-CAM-CAP-CAM + 3852 8 2403 2404 2405 2411 # CAM-CAP-CAM-HAT + 3853 9 2404 2403 2402 2408 # CAP-CAM-CAO-HAT + 3854 9 2404 2405 2406 2412 # CAP-CAM-CAO-HAT + 3855 8 2405 2404 2403 2409 # CAM-CAP-CAM-HAT + 3856 7 2407 2401 2406 2405 # CTT-CAT-CAO-CAM + 3857 6 2406 2405 2404 2410 # CAO-CAM-CAP-HAT + 3858 4 2406 2401 2402 2408 # CAO-CAT-CAO-HAT + 3859 10 2407 2401 2402 2408 # CTT-CAT-CAO-HAT + 3860 10 2407 2401 2406 2412 # CTT-CAT-CAO-HAT + 3861 11 2408 2402 2403 2409 # HAT-CAO-CAM-HAT + 3862 12 2409 2403 2404 2410 # HAT-CAM-CAP-HAT + 3863 12 2411 2405 2404 2410 # HAT-CAM-CAP-HAT + 3864 11 2412 2406 2405 2411 # HAT-CAO-CAM-HAT + 3865 1 2416 2417 2418 2419 # CAT-CAO-CAM-CAP + 3866 2 2416 2417 2418 2424 # CAT-CAO-CAM-HAT + 3867 1 2416 2421 2420 2419 # CAT-CAO-CAM-CAP + 3868 2 2416 2421 2420 2426 # CAT-CAO-CAM-HAT + 3869 3 2417 2416 2421 2420 # CAO-CAT-CAO-CAM + 3870 4 2417 2416 2421 2427 # CAO-CAT-CAO-HAT + 3871 5 2417 2418 2419 2420 # CAO-CAM-CAP-CAM + 3872 6 2417 2418 2419 2425 # CAO-CAM-CAP-HAT + 3873 7 2422 2416 2417 2418 # CTT-CAT-CAO-CAM + 3874 3 2421 2416 2417 2418 # CAO-CAT-CAO-CAM + 3875 5 2421 2420 2419 2418 # CAO-CAM-CAP-CAM + 3876 8 2418 2419 2420 2426 # CAM-CAP-CAM-HAT + 3877 9 2419 2418 2417 2423 # CAP-CAM-CAO-HAT + 3878 9 2419 2420 2421 2427 # CAP-CAM-CAO-HAT + 3879 8 2420 2419 2418 2424 # CAM-CAP-CAM-HAT + 3880 7 2422 2416 2421 2420 # CTT-CAT-CAO-CAM + 3881 6 2421 2420 2419 2425 # CAO-CAM-CAP-HAT + 3882 4 2421 2416 2417 2423 # CAO-CAT-CAO-HAT + 3883 10 2422 2416 2417 2423 # CTT-CAT-CAO-HAT + 3884 10 2422 2416 2421 2427 # CTT-CAT-CAO-HAT + 3885 11 2423 2417 2418 2424 # HAT-CAO-CAM-HAT + 3886 12 2424 2418 2419 2425 # HAT-CAM-CAP-HAT + 3887 12 2426 2420 2419 2425 # HAT-CAM-CAP-HAT + 3888 11 2427 2421 2420 2426 # HAT-CAO-CAM-HAT + 3889 1 2431 2432 2433 2434 # CAT-CAO-CAM-CAP + 3890 2 2431 2432 2433 2439 # CAT-CAO-CAM-HAT + 3891 1 2431 2436 2435 2434 # CAT-CAO-CAM-CAP + 3892 2 2431 2436 2435 2441 # CAT-CAO-CAM-HAT + 3893 3 2432 2431 2436 2435 # CAO-CAT-CAO-CAM + 3894 4 2432 2431 2436 2442 # CAO-CAT-CAO-HAT + 3895 5 2432 2433 2434 2435 # CAO-CAM-CAP-CAM + 3896 6 2432 2433 2434 2440 # CAO-CAM-CAP-HAT + 3897 7 2437 2431 2432 2433 # CTT-CAT-CAO-CAM + 3898 3 2436 2431 2432 2433 # CAO-CAT-CAO-CAM + 3899 5 2436 2435 2434 2433 # CAO-CAM-CAP-CAM + 3900 8 2433 2434 2435 2441 # CAM-CAP-CAM-HAT + 3901 9 2434 2433 2432 2438 # CAP-CAM-CAO-HAT + 3902 9 2434 2435 2436 2442 # CAP-CAM-CAO-HAT + 3903 8 2435 2434 2433 2439 # CAM-CAP-CAM-HAT + 3904 7 2437 2431 2436 2435 # CTT-CAT-CAO-CAM + 3905 6 2436 2435 2434 2440 # CAO-CAM-CAP-HAT + 3906 4 2436 2431 2432 2438 # CAO-CAT-CAO-HAT + 3907 10 2437 2431 2432 2438 # CTT-CAT-CAO-HAT + 3908 10 2437 2431 2436 2442 # CTT-CAT-CAO-HAT + 3909 11 2438 2432 2433 2439 # HAT-CAO-CAM-HAT + 3910 12 2439 2433 2434 2440 # HAT-CAM-CAP-HAT + 3911 12 2441 2435 2434 2440 # HAT-CAM-CAP-HAT + 3912 11 2442 2436 2435 2441 # HAT-CAO-CAM-HAT + 3913 1 2446 2447 2448 2449 # CAT-CAO-CAM-CAP + 3914 2 2446 2447 2448 2454 # CAT-CAO-CAM-HAT + 3915 1 2446 2451 2450 2449 # CAT-CAO-CAM-CAP + 3916 2 2446 2451 2450 2456 # CAT-CAO-CAM-HAT + 3917 3 2447 2446 2451 2450 # CAO-CAT-CAO-CAM + 3918 4 2447 2446 2451 2457 # CAO-CAT-CAO-HAT + 3919 5 2447 2448 2449 2450 # CAO-CAM-CAP-CAM + 3920 6 2447 2448 2449 2455 # CAO-CAM-CAP-HAT + 3921 7 2452 2446 2447 2448 # CTT-CAT-CAO-CAM + 3922 3 2451 2446 2447 2448 # CAO-CAT-CAO-CAM + 3923 5 2451 2450 2449 2448 # CAO-CAM-CAP-CAM + 3924 8 2448 2449 2450 2456 # CAM-CAP-CAM-HAT + 3925 9 2449 2448 2447 2453 # CAP-CAM-CAO-HAT + 3926 9 2449 2450 2451 2457 # CAP-CAM-CAO-HAT + 3927 8 2450 2449 2448 2454 # CAM-CAP-CAM-HAT + 3928 7 2452 2446 2451 2450 # CTT-CAT-CAO-CAM + 3929 6 2451 2450 2449 2455 # CAO-CAM-CAP-HAT + 3930 4 2451 2446 2447 2453 # CAO-CAT-CAO-HAT + 3931 10 2452 2446 2447 2453 # CTT-CAT-CAO-HAT + 3932 10 2452 2446 2451 2457 # CTT-CAT-CAO-HAT + 3933 11 2453 2447 2448 2454 # HAT-CAO-CAM-HAT + 3934 12 2454 2448 2449 2455 # HAT-CAM-CAP-HAT + 3935 12 2456 2450 2449 2455 # HAT-CAM-CAP-HAT + 3936 11 2457 2451 2450 2456 # HAT-CAO-CAM-HAT + 3937 1 2461 2462 2463 2464 # CAT-CAO-CAM-CAP + 3938 2 2461 2462 2463 2469 # CAT-CAO-CAM-HAT + 3939 1 2461 2466 2465 2464 # CAT-CAO-CAM-CAP + 3940 2 2461 2466 2465 2471 # CAT-CAO-CAM-HAT + 3941 3 2462 2461 2466 2465 # CAO-CAT-CAO-CAM + 3942 4 2462 2461 2466 2472 # CAO-CAT-CAO-HAT + 3943 5 2462 2463 2464 2465 # CAO-CAM-CAP-CAM + 3944 6 2462 2463 2464 2470 # CAO-CAM-CAP-HAT + 3945 7 2467 2461 2462 2463 # CTT-CAT-CAO-CAM + 3946 3 2466 2461 2462 2463 # CAO-CAT-CAO-CAM + 3947 5 2466 2465 2464 2463 # CAO-CAM-CAP-CAM + 3948 8 2463 2464 2465 2471 # CAM-CAP-CAM-HAT + 3949 9 2464 2463 2462 2468 # CAP-CAM-CAO-HAT + 3950 9 2464 2465 2466 2472 # CAP-CAM-CAO-HAT + 3951 8 2465 2464 2463 2469 # CAM-CAP-CAM-HAT + 3952 7 2467 2461 2466 2465 # CTT-CAT-CAO-CAM + 3953 6 2466 2465 2464 2470 # CAO-CAM-CAP-HAT + 3954 4 2466 2461 2462 2468 # CAO-CAT-CAO-HAT + 3955 10 2467 2461 2462 2468 # CTT-CAT-CAO-HAT + 3956 10 2467 2461 2466 2472 # CTT-CAT-CAO-HAT + 3957 11 2468 2462 2463 2469 # HAT-CAO-CAM-HAT + 3958 12 2469 2463 2464 2470 # HAT-CAM-CAP-HAT + 3959 12 2471 2465 2464 2470 # HAT-CAM-CAP-HAT + 3960 11 2472 2466 2465 2471 # HAT-CAO-CAM-HAT + 3961 1 2476 2477 2478 2479 # CAT-CAO-CAM-CAP + 3962 2 2476 2477 2478 2484 # CAT-CAO-CAM-HAT + 3963 1 2476 2481 2480 2479 # CAT-CAO-CAM-CAP + 3964 2 2476 2481 2480 2486 # CAT-CAO-CAM-HAT + 3965 3 2477 2476 2481 2480 # CAO-CAT-CAO-CAM + 3966 4 2477 2476 2481 2487 # CAO-CAT-CAO-HAT + 3967 5 2477 2478 2479 2480 # CAO-CAM-CAP-CAM + 3968 6 2477 2478 2479 2485 # CAO-CAM-CAP-HAT + 3969 7 2482 2476 2477 2478 # CTT-CAT-CAO-CAM + 3970 3 2481 2476 2477 2478 # CAO-CAT-CAO-CAM + 3971 5 2481 2480 2479 2478 # CAO-CAM-CAP-CAM + 3972 8 2478 2479 2480 2486 # CAM-CAP-CAM-HAT + 3973 9 2479 2478 2477 2483 # CAP-CAM-CAO-HAT + 3974 9 2479 2480 2481 2487 # CAP-CAM-CAO-HAT + 3975 8 2480 2479 2478 2484 # CAM-CAP-CAM-HAT + 3976 7 2482 2476 2481 2480 # CTT-CAT-CAO-CAM + 3977 6 2481 2480 2479 2485 # CAO-CAM-CAP-HAT + 3978 4 2481 2476 2477 2483 # CAO-CAT-CAO-HAT + 3979 10 2482 2476 2477 2483 # CTT-CAT-CAO-HAT + 3980 10 2482 2476 2481 2487 # CTT-CAT-CAO-HAT + 3981 11 2483 2477 2478 2484 # HAT-CAO-CAM-HAT + 3982 12 2484 2478 2479 2485 # HAT-CAM-CAP-HAT + 3983 12 2486 2480 2479 2485 # HAT-CAM-CAP-HAT + 3984 11 2487 2481 2480 2486 # HAT-CAO-CAM-HAT + 3985 1 2491 2492 2493 2494 # CAT-CAO-CAM-CAP + 3986 2 2491 2492 2493 2499 # CAT-CAO-CAM-HAT + 3987 1 2491 2496 2495 2494 # CAT-CAO-CAM-CAP + 3988 2 2491 2496 2495 2501 # CAT-CAO-CAM-HAT + 3989 3 2492 2491 2496 2495 # CAO-CAT-CAO-CAM + 3990 4 2492 2491 2496 2502 # CAO-CAT-CAO-HAT + 3991 5 2492 2493 2494 2495 # CAO-CAM-CAP-CAM + 3992 6 2492 2493 2494 2500 # CAO-CAM-CAP-HAT + 3993 7 2497 2491 2492 2493 # CTT-CAT-CAO-CAM + 3994 3 2496 2491 2492 2493 # CAO-CAT-CAO-CAM + 3995 5 2496 2495 2494 2493 # CAO-CAM-CAP-CAM + 3996 8 2493 2494 2495 2501 # CAM-CAP-CAM-HAT + 3997 9 2494 2493 2492 2498 # CAP-CAM-CAO-HAT + 3998 9 2494 2495 2496 2502 # CAP-CAM-CAO-HAT + 3999 8 2495 2494 2493 2499 # CAM-CAP-CAM-HAT + 4000 7 2497 2491 2496 2495 # CTT-CAT-CAO-CAM + 4001 6 2496 2495 2494 2500 # CAO-CAM-CAP-HAT + 4002 4 2496 2491 2492 2498 # CAO-CAT-CAO-HAT + 4003 10 2497 2491 2492 2498 # CTT-CAT-CAO-HAT + 4004 10 2497 2491 2496 2502 # CTT-CAT-CAO-HAT + 4005 11 2498 2492 2493 2499 # HAT-CAO-CAM-HAT + 4006 12 2499 2493 2494 2500 # HAT-CAM-CAP-HAT + 4007 12 2501 2495 2494 2500 # HAT-CAM-CAP-HAT + 4008 11 2502 2496 2495 2501 # HAT-CAO-CAM-HAT + 4009 1 2506 2507 2508 2509 # CAT-CAO-CAM-CAP + 4010 2 2506 2507 2508 2514 # CAT-CAO-CAM-HAT + 4011 1 2506 2511 2510 2509 # CAT-CAO-CAM-CAP + 4012 2 2506 2511 2510 2516 # CAT-CAO-CAM-HAT + 4013 3 2507 2506 2511 2510 # CAO-CAT-CAO-CAM + 4014 4 2507 2506 2511 2517 # CAO-CAT-CAO-HAT + 4015 5 2507 2508 2509 2510 # CAO-CAM-CAP-CAM + 4016 6 2507 2508 2509 2515 # CAO-CAM-CAP-HAT + 4017 7 2512 2506 2507 2508 # CTT-CAT-CAO-CAM + 4018 3 2511 2506 2507 2508 # CAO-CAT-CAO-CAM + 4019 5 2511 2510 2509 2508 # CAO-CAM-CAP-CAM + 4020 8 2508 2509 2510 2516 # CAM-CAP-CAM-HAT + 4021 9 2509 2508 2507 2513 # CAP-CAM-CAO-HAT + 4022 9 2509 2510 2511 2517 # CAP-CAM-CAO-HAT + 4023 8 2510 2509 2508 2514 # CAM-CAP-CAM-HAT + 4024 7 2512 2506 2511 2510 # CTT-CAT-CAO-CAM + 4025 6 2511 2510 2509 2515 # CAO-CAM-CAP-HAT + 4026 4 2511 2506 2507 2513 # CAO-CAT-CAO-HAT + 4027 10 2512 2506 2507 2513 # CTT-CAT-CAO-HAT + 4028 10 2512 2506 2511 2517 # CTT-CAT-CAO-HAT + 4029 11 2513 2507 2508 2514 # HAT-CAO-CAM-HAT + 4030 12 2514 2508 2509 2515 # HAT-CAM-CAP-HAT + 4031 12 2516 2510 2509 2515 # HAT-CAM-CAP-HAT + 4032 11 2517 2511 2510 2516 # HAT-CAO-CAM-HAT + 4033 1 2521 2522 2523 2524 # CAT-CAO-CAM-CAP + 4034 2 2521 2522 2523 2529 # CAT-CAO-CAM-HAT + 4035 1 2521 2526 2525 2524 # CAT-CAO-CAM-CAP + 4036 2 2521 2526 2525 2531 # CAT-CAO-CAM-HAT + 4037 3 2522 2521 2526 2525 # CAO-CAT-CAO-CAM + 4038 4 2522 2521 2526 2532 # CAO-CAT-CAO-HAT + 4039 5 2522 2523 2524 2525 # CAO-CAM-CAP-CAM + 4040 6 2522 2523 2524 2530 # CAO-CAM-CAP-HAT + 4041 7 2527 2521 2522 2523 # CTT-CAT-CAO-CAM + 4042 3 2526 2521 2522 2523 # CAO-CAT-CAO-CAM + 4043 5 2526 2525 2524 2523 # CAO-CAM-CAP-CAM + 4044 8 2523 2524 2525 2531 # CAM-CAP-CAM-HAT + 4045 9 2524 2523 2522 2528 # CAP-CAM-CAO-HAT + 4046 9 2524 2525 2526 2532 # CAP-CAM-CAO-HAT + 4047 8 2525 2524 2523 2529 # CAM-CAP-CAM-HAT + 4048 7 2527 2521 2526 2525 # CTT-CAT-CAO-CAM + 4049 6 2526 2525 2524 2530 # CAO-CAM-CAP-HAT + 4050 4 2526 2521 2522 2528 # CAO-CAT-CAO-HAT + 4051 10 2527 2521 2522 2528 # CTT-CAT-CAO-HAT + 4052 10 2527 2521 2526 2532 # CTT-CAT-CAO-HAT + 4053 11 2528 2522 2523 2529 # HAT-CAO-CAM-HAT + 4054 12 2529 2523 2524 2530 # HAT-CAM-CAP-HAT + 4055 12 2531 2525 2524 2530 # HAT-CAM-CAP-HAT + 4056 11 2532 2526 2525 2531 # HAT-CAO-CAM-HAT + 4057 1 2536 2537 2538 2539 # CAT-CAO-CAM-CAP + 4058 2 2536 2537 2538 2544 # CAT-CAO-CAM-HAT + 4059 1 2536 2541 2540 2539 # CAT-CAO-CAM-CAP + 4060 2 2536 2541 2540 2546 # CAT-CAO-CAM-HAT + 4061 3 2537 2536 2541 2540 # CAO-CAT-CAO-CAM + 4062 4 2537 2536 2541 2547 # CAO-CAT-CAO-HAT + 4063 5 2537 2538 2539 2540 # CAO-CAM-CAP-CAM + 4064 6 2537 2538 2539 2545 # CAO-CAM-CAP-HAT + 4065 7 2542 2536 2537 2538 # CTT-CAT-CAO-CAM + 4066 3 2541 2536 2537 2538 # CAO-CAT-CAO-CAM + 4067 5 2541 2540 2539 2538 # CAO-CAM-CAP-CAM + 4068 8 2538 2539 2540 2546 # CAM-CAP-CAM-HAT + 4069 9 2539 2538 2537 2543 # CAP-CAM-CAO-HAT + 4070 9 2539 2540 2541 2547 # CAP-CAM-CAO-HAT + 4071 8 2540 2539 2538 2544 # CAM-CAP-CAM-HAT + 4072 7 2542 2536 2541 2540 # CTT-CAT-CAO-CAM + 4073 6 2541 2540 2539 2545 # CAO-CAM-CAP-HAT + 4074 4 2541 2536 2537 2543 # CAO-CAT-CAO-HAT + 4075 10 2542 2536 2537 2543 # CTT-CAT-CAO-HAT + 4076 10 2542 2536 2541 2547 # CTT-CAT-CAO-HAT + 4077 11 2543 2537 2538 2544 # HAT-CAO-CAM-HAT + 4078 12 2544 2538 2539 2545 # HAT-CAM-CAP-HAT + 4079 12 2546 2540 2539 2545 # HAT-CAM-CAP-HAT + 4080 11 2547 2541 2540 2546 # HAT-CAO-CAM-HAT + 4081 1 2551 2552 2553 2554 # CAT-CAO-CAM-CAP + 4082 2 2551 2552 2553 2559 # CAT-CAO-CAM-HAT + 4083 1 2551 2556 2555 2554 # CAT-CAO-CAM-CAP + 4084 2 2551 2556 2555 2561 # CAT-CAO-CAM-HAT + 4085 3 2552 2551 2556 2555 # CAO-CAT-CAO-CAM + 4086 4 2552 2551 2556 2562 # CAO-CAT-CAO-HAT + 4087 5 2552 2553 2554 2555 # CAO-CAM-CAP-CAM + 4088 6 2552 2553 2554 2560 # CAO-CAM-CAP-HAT + 4089 7 2557 2551 2552 2553 # CTT-CAT-CAO-CAM + 4090 3 2556 2551 2552 2553 # CAO-CAT-CAO-CAM + 4091 5 2556 2555 2554 2553 # CAO-CAM-CAP-CAM + 4092 8 2553 2554 2555 2561 # CAM-CAP-CAM-HAT + 4093 9 2554 2553 2552 2558 # CAP-CAM-CAO-HAT + 4094 9 2554 2555 2556 2562 # CAP-CAM-CAO-HAT + 4095 8 2555 2554 2553 2559 # CAM-CAP-CAM-HAT + 4096 7 2557 2551 2556 2555 # CTT-CAT-CAO-CAM + 4097 6 2556 2555 2554 2560 # CAO-CAM-CAP-HAT + 4098 4 2556 2551 2552 2558 # CAO-CAT-CAO-HAT + 4099 10 2557 2551 2552 2558 # CTT-CAT-CAO-HAT + 4100 10 2557 2551 2556 2562 # CTT-CAT-CAO-HAT + 4101 11 2558 2552 2553 2559 # HAT-CAO-CAM-HAT + 4102 12 2559 2553 2554 2560 # HAT-CAM-CAP-HAT + 4103 12 2561 2555 2554 2560 # HAT-CAM-CAP-HAT + 4104 11 2562 2556 2555 2561 # HAT-CAO-CAM-HAT + 4105 1 2566 2567 2568 2569 # CAT-CAO-CAM-CAP + 4106 2 2566 2567 2568 2574 # CAT-CAO-CAM-HAT + 4107 1 2566 2571 2570 2569 # CAT-CAO-CAM-CAP + 4108 2 2566 2571 2570 2576 # CAT-CAO-CAM-HAT + 4109 3 2567 2566 2571 2570 # CAO-CAT-CAO-CAM + 4110 4 2567 2566 2571 2577 # CAO-CAT-CAO-HAT + 4111 5 2567 2568 2569 2570 # CAO-CAM-CAP-CAM + 4112 6 2567 2568 2569 2575 # CAO-CAM-CAP-HAT + 4113 7 2572 2566 2567 2568 # CTT-CAT-CAO-CAM + 4114 3 2571 2566 2567 2568 # CAO-CAT-CAO-CAM + 4115 5 2571 2570 2569 2568 # CAO-CAM-CAP-CAM + 4116 8 2568 2569 2570 2576 # CAM-CAP-CAM-HAT + 4117 9 2569 2568 2567 2573 # CAP-CAM-CAO-HAT + 4118 9 2569 2570 2571 2577 # CAP-CAM-CAO-HAT + 4119 8 2570 2569 2568 2574 # CAM-CAP-CAM-HAT + 4120 7 2572 2566 2571 2570 # CTT-CAT-CAO-CAM + 4121 6 2571 2570 2569 2575 # CAO-CAM-CAP-HAT + 4122 4 2571 2566 2567 2573 # CAO-CAT-CAO-HAT + 4123 10 2572 2566 2567 2573 # CTT-CAT-CAO-HAT + 4124 10 2572 2566 2571 2577 # CTT-CAT-CAO-HAT + 4125 11 2573 2567 2568 2574 # HAT-CAO-CAM-HAT + 4126 12 2574 2568 2569 2575 # HAT-CAM-CAP-HAT + 4127 12 2576 2570 2569 2575 # HAT-CAM-CAP-HAT + 4128 11 2577 2571 2570 2576 # HAT-CAO-CAM-HAT + 4129 1 2581 2582 2583 2584 # CAT-CAO-CAM-CAP + 4130 2 2581 2582 2583 2589 # CAT-CAO-CAM-HAT + 4131 1 2581 2586 2585 2584 # CAT-CAO-CAM-CAP + 4132 2 2581 2586 2585 2591 # CAT-CAO-CAM-HAT + 4133 3 2582 2581 2586 2585 # CAO-CAT-CAO-CAM + 4134 4 2582 2581 2586 2592 # CAO-CAT-CAO-HAT + 4135 5 2582 2583 2584 2585 # CAO-CAM-CAP-CAM + 4136 6 2582 2583 2584 2590 # CAO-CAM-CAP-HAT + 4137 7 2587 2581 2582 2583 # CTT-CAT-CAO-CAM + 4138 3 2586 2581 2582 2583 # CAO-CAT-CAO-CAM + 4139 5 2586 2585 2584 2583 # CAO-CAM-CAP-CAM + 4140 8 2583 2584 2585 2591 # CAM-CAP-CAM-HAT + 4141 9 2584 2583 2582 2588 # CAP-CAM-CAO-HAT + 4142 9 2584 2585 2586 2592 # CAP-CAM-CAO-HAT + 4143 8 2585 2584 2583 2589 # CAM-CAP-CAM-HAT + 4144 7 2587 2581 2586 2585 # CTT-CAT-CAO-CAM + 4145 6 2586 2585 2584 2590 # CAO-CAM-CAP-HAT + 4146 4 2586 2581 2582 2588 # CAO-CAT-CAO-HAT + 4147 10 2587 2581 2582 2588 # CTT-CAT-CAO-HAT + 4148 10 2587 2581 2586 2592 # CTT-CAT-CAO-HAT + 4149 11 2588 2582 2583 2589 # HAT-CAO-CAM-HAT + 4150 12 2589 2583 2584 2590 # HAT-CAM-CAP-HAT + 4151 12 2591 2585 2584 2590 # HAT-CAM-CAP-HAT + 4152 11 2592 2586 2585 2591 # HAT-CAO-CAM-HAT + 4153 1 2596 2597 2598 2599 # CAT-CAO-CAM-CAP + 4154 2 2596 2597 2598 2604 # CAT-CAO-CAM-HAT + 4155 1 2596 2601 2600 2599 # CAT-CAO-CAM-CAP + 4156 2 2596 2601 2600 2606 # CAT-CAO-CAM-HAT + 4157 3 2597 2596 2601 2600 # CAO-CAT-CAO-CAM + 4158 4 2597 2596 2601 2607 # CAO-CAT-CAO-HAT + 4159 5 2597 2598 2599 2600 # CAO-CAM-CAP-CAM + 4160 6 2597 2598 2599 2605 # CAO-CAM-CAP-HAT + 4161 7 2602 2596 2597 2598 # CTT-CAT-CAO-CAM + 4162 3 2601 2596 2597 2598 # CAO-CAT-CAO-CAM + 4163 5 2601 2600 2599 2598 # CAO-CAM-CAP-CAM + 4164 8 2598 2599 2600 2606 # CAM-CAP-CAM-HAT + 4165 9 2599 2598 2597 2603 # CAP-CAM-CAO-HAT + 4166 9 2599 2600 2601 2607 # CAP-CAM-CAO-HAT + 4167 8 2600 2599 2598 2604 # CAM-CAP-CAM-HAT + 4168 7 2602 2596 2601 2600 # CTT-CAT-CAO-CAM + 4169 6 2601 2600 2599 2605 # CAO-CAM-CAP-HAT + 4170 4 2601 2596 2597 2603 # CAO-CAT-CAO-HAT + 4171 10 2602 2596 2597 2603 # CTT-CAT-CAO-HAT + 4172 10 2602 2596 2601 2607 # CTT-CAT-CAO-HAT + 4173 11 2603 2597 2598 2604 # HAT-CAO-CAM-HAT + 4174 12 2604 2598 2599 2605 # HAT-CAM-CAP-HAT + 4175 12 2606 2600 2599 2605 # HAT-CAM-CAP-HAT + 4176 11 2607 2601 2600 2606 # HAT-CAO-CAM-HAT + 4177 1 2611 2612 2613 2614 # CAT-CAO-CAM-CAP + 4178 2 2611 2612 2613 2619 # CAT-CAO-CAM-HAT + 4179 1 2611 2616 2615 2614 # CAT-CAO-CAM-CAP + 4180 2 2611 2616 2615 2621 # CAT-CAO-CAM-HAT + 4181 3 2612 2611 2616 2615 # CAO-CAT-CAO-CAM + 4182 4 2612 2611 2616 2622 # CAO-CAT-CAO-HAT + 4183 5 2612 2613 2614 2615 # CAO-CAM-CAP-CAM + 4184 6 2612 2613 2614 2620 # CAO-CAM-CAP-HAT + 4185 7 2617 2611 2612 2613 # CTT-CAT-CAO-CAM + 4186 3 2616 2611 2612 2613 # CAO-CAT-CAO-CAM + 4187 5 2616 2615 2614 2613 # CAO-CAM-CAP-CAM + 4188 8 2613 2614 2615 2621 # CAM-CAP-CAM-HAT + 4189 9 2614 2613 2612 2618 # CAP-CAM-CAO-HAT + 4190 9 2614 2615 2616 2622 # CAP-CAM-CAO-HAT + 4191 8 2615 2614 2613 2619 # CAM-CAP-CAM-HAT + 4192 7 2617 2611 2616 2615 # CTT-CAT-CAO-CAM + 4193 6 2616 2615 2614 2620 # CAO-CAM-CAP-HAT + 4194 4 2616 2611 2612 2618 # CAO-CAT-CAO-HAT + 4195 10 2617 2611 2612 2618 # CTT-CAT-CAO-HAT + 4196 10 2617 2611 2616 2622 # CTT-CAT-CAO-HAT + 4197 11 2618 2612 2613 2619 # HAT-CAO-CAM-HAT + 4198 12 2619 2613 2614 2620 # HAT-CAM-CAP-HAT + 4199 12 2621 2615 2614 2620 # HAT-CAM-CAP-HAT + 4200 11 2622 2616 2615 2621 # HAT-CAO-CAM-HAT + 4201 1 2626 2627 2628 2629 # CAT-CAO-CAM-CAP + 4202 2 2626 2627 2628 2634 # CAT-CAO-CAM-HAT + 4203 1 2626 2631 2630 2629 # CAT-CAO-CAM-CAP + 4204 2 2626 2631 2630 2636 # CAT-CAO-CAM-HAT + 4205 3 2627 2626 2631 2630 # CAO-CAT-CAO-CAM + 4206 4 2627 2626 2631 2637 # CAO-CAT-CAO-HAT + 4207 5 2627 2628 2629 2630 # CAO-CAM-CAP-CAM + 4208 6 2627 2628 2629 2635 # CAO-CAM-CAP-HAT + 4209 7 2632 2626 2627 2628 # CTT-CAT-CAO-CAM + 4210 3 2631 2626 2627 2628 # CAO-CAT-CAO-CAM + 4211 5 2631 2630 2629 2628 # CAO-CAM-CAP-CAM + 4212 8 2628 2629 2630 2636 # CAM-CAP-CAM-HAT + 4213 9 2629 2628 2627 2633 # CAP-CAM-CAO-HAT + 4214 9 2629 2630 2631 2637 # CAP-CAM-CAO-HAT + 4215 8 2630 2629 2628 2634 # CAM-CAP-CAM-HAT + 4216 7 2632 2626 2631 2630 # CTT-CAT-CAO-CAM + 4217 6 2631 2630 2629 2635 # CAO-CAM-CAP-HAT + 4218 4 2631 2626 2627 2633 # CAO-CAT-CAO-HAT + 4219 10 2632 2626 2627 2633 # CTT-CAT-CAO-HAT + 4220 10 2632 2626 2631 2637 # CTT-CAT-CAO-HAT + 4221 11 2633 2627 2628 2634 # HAT-CAO-CAM-HAT + 4222 12 2634 2628 2629 2635 # HAT-CAM-CAP-HAT + 4223 12 2636 2630 2629 2635 # HAT-CAM-CAP-HAT + 4224 11 2637 2631 2630 2636 # HAT-CAO-CAM-HAT + 4225 1 2641 2642 2643 2644 # CAT-CAO-CAM-CAP + 4226 2 2641 2642 2643 2649 # CAT-CAO-CAM-HAT + 4227 1 2641 2646 2645 2644 # CAT-CAO-CAM-CAP + 4228 2 2641 2646 2645 2651 # CAT-CAO-CAM-HAT + 4229 3 2642 2641 2646 2645 # CAO-CAT-CAO-CAM + 4230 4 2642 2641 2646 2652 # CAO-CAT-CAO-HAT + 4231 5 2642 2643 2644 2645 # CAO-CAM-CAP-CAM + 4232 6 2642 2643 2644 2650 # CAO-CAM-CAP-HAT + 4233 7 2647 2641 2642 2643 # CTT-CAT-CAO-CAM + 4234 3 2646 2641 2642 2643 # CAO-CAT-CAO-CAM + 4235 5 2646 2645 2644 2643 # CAO-CAM-CAP-CAM + 4236 8 2643 2644 2645 2651 # CAM-CAP-CAM-HAT + 4237 9 2644 2643 2642 2648 # CAP-CAM-CAO-HAT + 4238 9 2644 2645 2646 2652 # CAP-CAM-CAO-HAT + 4239 8 2645 2644 2643 2649 # CAM-CAP-CAM-HAT + 4240 7 2647 2641 2646 2645 # CTT-CAT-CAO-CAM + 4241 6 2646 2645 2644 2650 # CAO-CAM-CAP-HAT + 4242 4 2646 2641 2642 2648 # CAO-CAT-CAO-HAT + 4243 10 2647 2641 2642 2648 # CTT-CAT-CAO-HAT + 4244 10 2647 2641 2646 2652 # CTT-CAT-CAO-HAT + 4245 11 2648 2642 2643 2649 # HAT-CAO-CAM-HAT + 4246 12 2649 2643 2644 2650 # HAT-CAM-CAP-HAT + 4247 12 2651 2645 2644 2650 # HAT-CAM-CAP-HAT + 4248 11 2652 2646 2645 2651 # HAT-CAO-CAM-HAT + 4249 1 2656 2657 2658 2659 # CAT-CAO-CAM-CAP + 4250 2 2656 2657 2658 2664 # CAT-CAO-CAM-HAT + 4251 1 2656 2661 2660 2659 # CAT-CAO-CAM-CAP + 4252 2 2656 2661 2660 2666 # CAT-CAO-CAM-HAT + 4253 3 2657 2656 2661 2660 # CAO-CAT-CAO-CAM + 4254 4 2657 2656 2661 2667 # CAO-CAT-CAO-HAT + 4255 5 2657 2658 2659 2660 # CAO-CAM-CAP-CAM + 4256 6 2657 2658 2659 2665 # CAO-CAM-CAP-HAT + 4257 7 2662 2656 2657 2658 # CTT-CAT-CAO-CAM + 4258 3 2661 2656 2657 2658 # CAO-CAT-CAO-CAM + 4259 5 2661 2660 2659 2658 # CAO-CAM-CAP-CAM + 4260 8 2658 2659 2660 2666 # CAM-CAP-CAM-HAT + 4261 9 2659 2658 2657 2663 # CAP-CAM-CAO-HAT + 4262 9 2659 2660 2661 2667 # CAP-CAM-CAO-HAT + 4263 8 2660 2659 2658 2664 # CAM-CAP-CAM-HAT + 4264 7 2662 2656 2661 2660 # CTT-CAT-CAO-CAM + 4265 6 2661 2660 2659 2665 # CAO-CAM-CAP-HAT + 4266 4 2661 2656 2657 2663 # CAO-CAT-CAO-HAT + 4267 10 2662 2656 2657 2663 # CTT-CAT-CAO-HAT + 4268 10 2662 2656 2661 2667 # CTT-CAT-CAO-HAT + 4269 11 2663 2657 2658 2664 # HAT-CAO-CAM-HAT + 4270 12 2664 2658 2659 2665 # HAT-CAM-CAP-HAT + 4271 12 2666 2660 2659 2665 # HAT-CAM-CAP-HAT + 4272 11 2667 2661 2660 2666 # HAT-CAO-CAM-HAT + 4273 1 2671 2672 2673 2674 # CAT-CAO-CAM-CAP + 4274 2 2671 2672 2673 2679 # CAT-CAO-CAM-HAT + 4275 1 2671 2676 2675 2674 # CAT-CAO-CAM-CAP + 4276 2 2671 2676 2675 2681 # CAT-CAO-CAM-HAT + 4277 3 2672 2671 2676 2675 # CAO-CAT-CAO-CAM + 4278 4 2672 2671 2676 2682 # CAO-CAT-CAO-HAT + 4279 5 2672 2673 2674 2675 # CAO-CAM-CAP-CAM + 4280 6 2672 2673 2674 2680 # CAO-CAM-CAP-HAT + 4281 7 2677 2671 2672 2673 # CTT-CAT-CAO-CAM + 4282 3 2676 2671 2672 2673 # CAO-CAT-CAO-CAM + 4283 5 2676 2675 2674 2673 # CAO-CAM-CAP-CAM + 4284 8 2673 2674 2675 2681 # CAM-CAP-CAM-HAT + 4285 9 2674 2673 2672 2678 # CAP-CAM-CAO-HAT + 4286 9 2674 2675 2676 2682 # CAP-CAM-CAO-HAT + 4287 8 2675 2674 2673 2679 # CAM-CAP-CAM-HAT + 4288 7 2677 2671 2676 2675 # CTT-CAT-CAO-CAM + 4289 6 2676 2675 2674 2680 # CAO-CAM-CAP-HAT + 4290 4 2676 2671 2672 2678 # CAO-CAT-CAO-HAT + 4291 10 2677 2671 2672 2678 # CTT-CAT-CAO-HAT + 4292 10 2677 2671 2676 2682 # CTT-CAT-CAO-HAT + 4293 11 2678 2672 2673 2679 # HAT-CAO-CAM-HAT + 4294 12 2679 2673 2674 2680 # HAT-CAM-CAP-HAT + 4295 12 2681 2675 2674 2680 # HAT-CAM-CAP-HAT + 4296 11 2682 2676 2675 2681 # HAT-CAO-CAM-HAT + 4297 1 2686 2687 2688 2689 # CAT-CAO-CAM-CAP + 4298 2 2686 2687 2688 2694 # CAT-CAO-CAM-HAT + 4299 1 2686 2691 2690 2689 # CAT-CAO-CAM-CAP + 4300 2 2686 2691 2690 2696 # CAT-CAO-CAM-HAT + 4301 3 2687 2686 2691 2690 # CAO-CAT-CAO-CAM + 4302 4 2687 2686 2691 2697 # CAO-CAT-CAO-HAT + 4303 5 2687 2688 2689 2690 # CAO-CAM-CAP-CAM + 4304 6 2687 2688 2689 2695 # CAO-CAM-CAP-HAT + 4305 7 2692 2686 2687 2688 # CTT-CAT-CAO-CAM + 4306 3 2691 2686 2687 2688 # CAO-CAT-CAO-CAM + 4307 5 2691 2690 2689 2688 # CAO-CAM-CAP-CAM + 4308 8 2688 2689 2690 2696 # CAM-CAP-CAM-HAT + 4309 9 2689 2688 2687 2693 # CAP-CAM-CAO-HAT + 4310 9 2689 2690 2691 2697 # CAP-CAM-CAO-HAT + 4311 8 2690 2689 2688 2694 # CAM-CAP-CAM-HAT + 4312 7 2692 2686 2691 2690 # CTT-CAT-CAO-CAM + 4313 6 2691 2690 2689 2695 # CAO-CAM-CAP-HAT + 4314 4 2691 2686 2687 2693 # CAO-CAT-CAO-HAT + 4315 10 2692 2686 2687 2693 # CTT-CAT-CAO-HAT + 4316 10 2692 2686 2691 2697 # CTT-CAT-CAO-HAT + 4317 11 2693 2687 2688 2694 # HAT-CAO-CAM-HAT + 4318 12 2694 2688 2689 2695 # HAT-CAM-CAP-HAT + 4319 12 2696 2690 2689 2695 # HAT-CAM-CAP-HAT + 4320 11 2697 2691 2690 2696 # HAT-CAO-CAM-HAT + 4321 1 2701 2702 2703 2704 # CAT-CAO-CAM-CAP + 4322 2 2701 2702 2703 2709 # CAT-CAO-CAM-HAT + 4323 1 2701 2706 2705 2704 # CAT-CAO-CAM-CAP + 4324 2 2701 2706 2705 2711 # CAT-CAO-CAM-HAT + 4325 3 2702 2701 2706 2705 # CAO-CAT-CAO-CAM + 4326 4 2702 2701 2706 2712 # CAO-CAT-CAO-HAT + 4327 5 2702 2703 2704 2705 # CAO-CAM-CAP-CAM + 4328 6 2702 2703 2704 2710 # CAO-CAM-CAP-HAT + 4329 7 2707 2701 2702 2703 # CTT-CAT-CAO-CAM + 4330 3 2706 2701 2702 2703 # CAO-CAT-CAO-CAM + 4331 5 2706 2705 2704 2703 # CAO-CAM-CAP-CAM + 4332 8 2703 2704 2705 2711 # CAM-CAP-CAM-HAT + 4333 9 2704 2703 2702 2708 # CAP-CAM-CAO-HAT + 4334 9 2704 2705 2706 2712 # CAP-CAM-CAO-HAT + 4335 8 2705 2704 2703 2709 # CAM-CAP-CAM-HAT + 4336 7 2707 2701 2706 2705 # CTT-CAT-CAO-CAM + 4337 6 2706 2705 2704 2710 # CAO-CAM-CAP-HAT + 4338 4 2706 2701 2702 2708 # CAO-CAT-CAO-HAT + 4339 10 2707 2701 2702 2708 # CTT-CAT-CAO-HAT + 4340 10 2707 2701 2706 2712 # CTT-CAT-CAO-HAT + 4341 11 2708 2702 2703 2709 # HAT-CAO-CAM-HAT + 4342 12 2709 2703 2704 2710 # HAT-CAM-CAP-HAT + 4343 12 2711 2705 2704 2710 # HAT-CAM-CAP-HAT + 4344 11 2712 2706 2705 2711 # HAT-CAO-CAM-HAT + 4345 1 2716 2717 2718 2719 # CAT-CAO-CAM-CAP + 4346 2 2716 2717 2718 2724 # CAT-CAO-CAM-HAT + 4347 1 2716 2721 2720 2719 # CAT-CAO-CAM-CAP + 4348 2 2716 2721 2720 2726 # CAT-CAO-CAM-HAT + 4349 3 2717 2716 2721 2720 # CAO-CAT-CAO-CAM + 4350 4 2717 2716 2721 2727 # CAO-CAT-CAO-HAT + 4351 5 2717 2718 2719 2720 # CAO-CAM-CAP-CAM + 4352 6 2717 2718 2719 2725 # CAO-CAM-CAP-HAT + 4353 7 2722 2716 2717 2718 # CTT-CAT-CAO-CAM + 4354 3 2721 2716 2717 2718 # CAO-CAT-CAO-CAM + 4355 5 2721 2720 2719 2718 # CAO-CAM-CAP-CAM + 4356 8 2718 2719 2720 2726 # CAM-CAP-CAM-HAT + 4357 9 2719 2718 2717 2723 # CAP-CAM-CAO-HAT + 4358 9 2719 2720 2721 2727 # CAP-CAM-CAO-HAT + 4359 8 2720 2719 2718 2724 # CAM-CAP-CAM-HAT + 4360 7 2722 2716 2721 2720 # CTT-CAT-CAO-CAM + 4361 6 2721 2720 2719 2725 # CAO-CAM-CAP-HAT + 4362 4 2721 2716 2717 2723 # CAO-CAT-CAO-HAT + 4363 10 2722 2716 2717 2723 # CTT-CAT-CAO-HAT + 4364 10 2722 2716 2721 2727 # CTT-CAT-CAO-HAT + 4365 11 2723 2717 2718 2724 # HAT-CAO-CAM-HAT + 4366 12 2724 2718 2719 2725 # HAT-CAM-CAP-HAT + 4367 12 2726 2720 2719 2725 # HAT-CAM-CAP-HAT + 4368 11 2727 2721 2720 2726 # HAT-CAO-CAM-HAT + 4369 1 2731 2732 2733 2734 # CAT-CAO-CAM-CAP + 4370 2 2731 2732 2733 2739 # CAT-CAO-CAM-HAT + 4371 1 2731 2736 2735 2734 # CAT-CAO-CAM-CAP + 4372 2 2731 2736 2735 2741 # CAT-CAO-CAM-HAT + 4373 3 2732 2731 2736 2735 # CAO-CAT-CAO-CAM + 4374 4 2732 2731 2736 2742 # CAO-CAT-CAO-HAT + 4375 5 2732 2733 2734 2735 # CAO-CAM-CAP-CAM + 4376 6 2732 2733 2734 2740 # CAO-CAM-CAP-HAT + 4377 7 2737 2731 2732 2733 # CTT-CAT-CAO-CAM + 4378 3 2736 2731 2732 2733 # CAO-CAT-CAO-CAM + 4379 5 2736 2735 2734 2733 # CAO-CAM-CAP-CAM + 4380 8 2733 2734 2735 2741 # CAM-CAP-CAM-HAT + 4381 9 2734 2733 2732 2738 # CAP-CAM-CAO-HAT + 4382 9 2734 2735 2736 2742 # CAP-CAM-CAO-HAT + 4383 8 2735 2734 2733 2739 # CAM-CAP-CAM-HAT + 4384 7 2737 2731 2736 2735 # CTT-CAT-CAO-CAM + 4385 6 2736 2735 2734 2740 # CAO-CAM-CAP-HAT + 4386 4 2736 2731 2732 2738 # CAO-CAT-CAO-HAT + 4387 10 2737 2731 2732 2738 # CTT-CAT-CAO-HAT + 4388 10 2737 2731 2736 2742 # CTT-CAT-CAO-HAT + 4389 11 2738 2732 2733 2739 # HAT-CAO-CAM-HAT + 4390 12 2739 2733 2734 2740 # HAT-CAM-CAP-HAT + 4391 12 2741 2735 2734 2740 # HAT-CAM-CAP-HAT + 4392 11 2742 2736 2735 2741 # HAT-CAO-CAM-HAT + 4393 1 2746 2747 2748 2749 # CAT-CAO-CAM-CAP + 4394 2 2746 2747 2748 2754 # CAT-CAO-CAM-HAT + 4395 1 2746 2751 2750 2749 # CAT-CAO-CAM-CAP + 4396 2 2746 2751 2750 2756 # CAT-CAO-CAM-HAT + 4397 3 2747 2746 2751 2750 # CAO-CAT-CAO-CAM + 4398 4 2747 2746 2751 2757 # CAO-CAT-CAO-HAT + 4399 5 2747 2748 2749 2750 # CAO-CAM-CAP-CAM + 4400 6 2747 2748 2749 2755 # CAO-CAM-CAP-HAT + 4401 7 2752 2746 2747 2748 # CTT-CAT-CAO-CAM + 4402 3 2751 2746 2747 2748 # CAO-CAT-CAO-CAM + 4403 5 2751 2750 2749 2748 # CAO-CAM-CAP-CAM + 4404 8 2748 2749 2750 2756 # CAM-CAP-CAM-HAT + 4405 9 2749 2748 2747 2753 # CAP-CAM-CAO-HAT + 4406 9 2749 2750 2751 2757 # CAP-CAM-CAO-HAT + 4407 8 2750 2749 2748 2754 # CAM-CAP-CAM-HAT + 4408 7 2752 2746 2751 2750 # CTT-CAT-CAO-CAM + 4409 6 2751 2750 2749 2755 # CAO-CAM-CAP-HAT + 4410 4 2751 2746 2747 2753 # CAO-CAT-CAO-HAT + 4411 10 2752 2746 2747 2753 # CTT-CAT-CAO-HAT + 4412 10 2752 2746 2751 2757 # CTT-CAT-CAO-HAT + 4413 11 2753 2747 2748 2754 # HAT-CAO-CAM-HAT + 4414 12 2754 2748 2749 2755 # HAT-CAM-CAP-HAT + 4415 12 2756 2750 2749 2755 # HAT-CAM-CAP-HAT + 4416 11 2757 2751 2750 2756 # HAT-CAO-CAM-HAT + 4417 1 2761 2762 2763 2764 # CAT-CAO-CAM-CAP + 4418 2 2761 2762 2763 2769 # CAT-CAO-CAM-HAT + 4419 1 2761 2766 2765 2764 # CAT-CAO-CAM-CAP + 4420 2 2761 2766 2765 2771 # CAT-CAO-CAM-HAT + 4421 3 2762 2761 2766 2765 # CAO-CAT-CAO-CAM + 4422 4 2762 2761 2766 2772 # CAO-CAT-CAO-HAT + 4423 5 2762 2763 2764 2765 # CAO-CAM-CAP-CAM + 4424 6 2762 2763 2764 2770 # CAO-CAM-CAP-HAT + 4425 7 2767 2761 2762 2763 # CTT-CAT-CAO-CAM + 4426 3 2766 2761 2762 2763 # CAO-CAT-CAO-CAM + 4427 5 2766 2765 2764 2763 # CAO-CAM-CAP-CAM + 4428 8 2763 2764 2765 2771 # CAM-CAP-CAM-HAT + 4429 9 2764 2763 2762 2768 # CAP-CAM-CAO-HAT + 4430 9 2764 2765 2766 2772 # CAP-CAM-CAO-HAT + 4431 8 2765 2764 2763 2769 # CAM-CAP-CAM-HAT + 4432 7 2767 2761 2766 2765 # CTT-CAT-CAO-CAM + 4433 6 2766 2765 2764 2770 # CAO-CAM-CAP-HAT + 4434 4 2766 2761 2762 2768 # CAO-CAT-CAO-HAT + 4435 10 2767 2761 2762 2768 # CTT-CAT-CAO-HAT + 4436 10 2767 2761 2766 2772 # CTT-CAT-CAO-HAT + 4437 11 2768 2762 2763 2769 # HAT-CAO-CAM-HAT + 4438 12 2769 2763 2764 2770 # HAT-CAM-CAP-HAT + 4439 12 2771 2765 2764 2770 # HAT-CAM-CAP-HAT + 4440 11 2772 2766 2765 2771 # HAT-CAO-CAM-HAT + 4441 1 2776 2777 2778 2779 # CAT-CAO-CAM-CAP + 4442 2 2776 2777 2778 2784 # CAT-CAO-CAM-HAT + 4443 1 2776 2781 2780 2779 # CAT-CAO-CAM-CAP + 4444 2 2776 2781 2780 2786 # CAT-CAO-CAM-HAT + 4445 3 2777 2776 2781 2780 # CAO-CAT-CAO-CAM + 4446 4 2777 2776 2781 2787 # CAO-CAT-CAO-HAT + 4447 5 2777 2778 2779 2780 # CAO-CAM-CAP-CAM + 4448 6 2777 2778 2779 2785 # CAO-CAM-CAP-HAT + 4449 7 2782 2776 2777 2778 # CTT-CAT-CAO-CAM + 4450 3 2781 2776 2777 2778 # CAO-CAT-CAO-CAM + 4451 5 2781 2780 2779 2778 # CAO-CAM-CAP-CAM + 4452 8 2778 2779 2780 2786 # CAM-CAP-CAM-HAT + 4453 9 2779 2778 2777 2783 # CAP-CAM-CAO-HAT + 4454 9 2779 2780 2781 2787 # CAP-CAM-CAO-HAT + 4455 8 2780 2779 2778 2784 # CAM-CAP-CAM-HAT + 4456 7 2782 2776 2781 2780 # CTT-CAT-CAO-CAM + 4457 6 2781 2780 2779 2785 # CAO-CAM-CAP-HAT + 4458 4 2781 2776 2777 2783 # CAO-CAT-CAO-HAT + 4459 10 2782 2776 2777 2783 # CTT-CAT-CAO-HAT + 4460 10 2782 2776 2781 2787 # CTT-CAT-CAO-HAT + 4461 11 2783 2777 2778 2784 # HAT-CAO-CAM-HAT + 4462 12 2784 2778 2779 2785 # HAT-CAM-CAP-HAT + 4463 12 2786 2780 2779 2785 # HAT-CAM-CAP-HAT + 4464 11 2787 2781 2780 2786 # HAT-CAO-CAM-HAT + 4465 1 2791 2792 2793 2794 # CAT-CAO-CAM-CAP + 4466 2 2791 2792 2793 2799 # CAT-CAO-CAM-HAT + 4467 1 2791 2796 2795 2794 # CAT-CAO-CAM-CAP + 4468 2 2791 2796 2795 2801 # CAT-CAO-CAM-HAT + 4469 3 2792 2791 2796 2795 # CAO-CAT-CAO-CAM + 4470 4 2792 2791 2796 2802 # CAO-CAT-CAO-HAT + 4471 5 2792 2793 2794 2795 # CAO-CAM-CAP-CAM + 4472 6 2792 2793 2794 2800 # CAO-CAM-CAP-HAT + 4473 7 2797 2791 2792 2793 # CTT-CAT-CAO-CAM + 4474 3 2796 2791 2792 2793 # CAO-CAT-CAO-CAM + 4475 5 2796 2795 2794 2793 # CAO-CAM-CAP-CAM + 4476 8 2793 2794 2795 2801 # CAM-CAP-CAM-HAT + 4477 9 2794 2793 2792 2798 # CAP-CAM-CAO-HAT + 4478 9 2794 2795 2796 2802 # CAP-CAM-CAO-HAT + 4479 8 2795 2794 2793 2799 # CAM-CAP-CAM-HAT + 4480 7 2797 2791 2796 2795 # CTT-CAT-CAO-CAM + 4481 6 2796 2795 2794 2800 # CAO-CAM-CAP-HAT + 4482 4 2796 2791 2792 2798 # CAO-CAT-CAO-HAT + 4483 10 2797 2791 2792 2798 # CTT-CAT-CAO-HAT + 4484 10 2797 2791 2796 2802 # CTT-CAT-CAO-HAT + 4485 11 2798 2792 2793 2799 # HAT-CAO-CAM-HAT + 4486 12 2799 2793 2794 2800 # HAT-CAM-CAP-HAT + 4487 12 2801 2795 2794 2800 # HAT-CAM-CAP-HAT + 4488 11 2802 2796 2795 2801 # HAT-CAO-CAM-HAT + 4489 1 2806 2807 2808 2809 # CAT-CAO-CAM-CAP + 4490 2 2806 2807 2808 2814 # CAT-CAO-CAM-HAT + 4491 1 2806 2811 2810 2809 # CAT-CAO-CAM-CAP + 4492 2 2806 2811 2810 2816 # CAT-CAO-CAM-HAT + 4493 3 2807 2806 2811 2810 # CAO-CAT-CAO-CAM + 4494 4 2807 2806 2811 2817 # CAO-CAT-CAO-HAT + 4495 5 2807 2808 2809 2810 # CAO-CAM-CAP-CAM + 4496 6 2807 2808 2809 2815 # CAO-CAM-CAP-HAT + 4497 7 2812 2806 2807 2808 # CTT-CAT-CAO-CAM + 4498 3 2811 2806 2807 2808 # CAO-CAT-CAO-CAM + 4499 5 2811 2810 2809 2808 # CAO-CAM-CAP-CAM + 4500 8 2808 2809 2810 2816 # CAM-CAP-CAM-HAT + 4501 9 2809 2808 2807 2813 # CAP-CAM-CAO-HAT + 4502 9 2809 2810 2811 2817 # CAP-CAM-CAO-HAT + 4503 8 2810 2809 2808 2814 # CAM-CAP-CAM-HAT + 4504 7 2812 2806 2811 2810 # CTT-CAT-CAO-CAM + 4505 6 2811 2810 2809 2815 # CAO-CAM-CAP-HAT + 4506 4 2811 2806 2807 2813 # CAO-CAT-CAO-HAT + 4507 10 2812 2806 2807 2813 # CTT-CAT-CAO-HAT + 4508 10 2812 2806 2811 2817 # CTT-CAT-CAO-HAT + 4509 11 2813 2807 2808 2814 # HAT-CAO-CAM-HAT + 4510 12 2814 2808 2809 2815 # HAT-CAM-CAP-HAT + 4511 12 2816 2810 2809 2815 # HAT-CAM-CAP-HAT + 4512 11 2817 2811 2810 2816 # HAT-CAO-CAM-HAT + 4513 1 2821 2822 2823 2824 # CAT-CAO-CAM-CAP + 4514 2 2821 2822 2823 2829 # CAT-CAO-CAM-HAT + 4515 1 2821 2826 2825 2824 # CAT-CAO-CAM-CAP + 4516 2 2821 2826 2825 2831 # CAT-CAO-CAM-HAT + 4517 3 2822 2821 2826 2825 # CAO-CAT-CAO-CAM + 4518 4 2822 2821 2826 2832 # CAO-CAT-CAO-HAT + 4519 5 2822 2823 2824 2825 # CAO-CAM-CAP-CAM + 4520 6 2822 2823 2824 2830 # CAO-CAM-CAP-HAT + 4521 7 2827 2821 2822 2823 # CTT-CAT-CAO-CAM + 4522 3 2826 2821 2822 2823 # CAO-CAT-CAO-CAM + 4523 5 2826 2825 2824 2823 # CAO-CAM-CAP-CAM + 4524 8 2823 2824 2825 2831 # CAM-CAP-CAM-HAT + 4525 9 2824 2823 2822 2828 # CAP-CAM-CAO-HAT + 4526 9 2824 2825 2826 2832 # CAP-CAM-CAO-HAT + 4527 8 2825 2824 2823 2829 # CAM-CAP-CAM-HAT + 4528 7 2827 2821 2826 2825 # CTT-CAT-CAO-CAM + 4529 6 2826 2825 2824 2830 # CAO-CAM-CAP-HAT + 4530 4 2826 2821 2822 2828 # CAO-CAT-CAO-HAT + 4531 10 2827 2821 2822 2828 # CTT-CAT-CAO-HAT + 4532 10 2827 2821 2826 2832 # CTT-CAT-CAO-HAT + 4533 11 2828 2822 2823 2829 # HAT-CAO-CAM-HAT + 4534 12 2829 2823 2824 2830 # HAT-CAM-CAP-HAT + 4535 12 2831 2825 2824 2830 # HAT-CAM-CAP-HAT + 4536 11 2832 2826 2825 2831 # HAT-CAO-CAM-HAT + 4537 1 2836 2837 2838 2839 # CAT-CAO-CAM-CAP + 4538 2 2836 2837 2838 2844 # CAT-CAO-CAM-HAT + 4539 1 2836 2841 2840 2839 # CAT-CAO-CAM-CAP + 4540 2 2836 2841 2840 2846 # CAT-CAO-CAM-HAT + 4541 3 2837 2836 2841 2840 # CAO-CAT-CAO-CAM + 4542 4 2837 2836 2841 2847 # CAO-CAT-CAO-HAT + 4543 5 2837 2838 2839 2840 # CAO-CAM-CAP-CAM + 4544 6 2837 2838 2839 2845 # CAO-CAM-CAP-HAT + 4545 7 2842 2836 2837 2838 # CTT-CAT-CAO-CAM + 4546 3 2841 2836 2837 2838 # CAO-CAT-CAO-CAM + 4547 5 2841 2840 2839 2838 # CAO-CAM-CAP-CAM + 4548 8 2838 2839 2840 2846 # CAM-CAP-CAM-HAT + 4549 9 2839 2838 2837 2843 # CAP-CAM-CAO-HAT + 4550 9 2839 2840 2841 2847 # CAP-CAM-CAO-HAT + 4551 8 2840 2839 2838 2844 # CAM-CAP-CAM-HAT + 4552 7 2842 2836 2841 2840 # CTT-CAT-CAO-CAM + 4553 6 2841 2840 2839 2845 # CAO-CAM-CAP-HAT + 4554 4 2841 2836 2837 2843 # CAO-CAT-CAO-HAT + 4555 10 2842 2836 2837 2843 # CTT-CAT-CAO-HAT + 4556 10 2842 2836 2841 2847 # CTT-CAT-CAO-HAT + 4557 11 2843 2837 2838 2844 # HAT-CAO-CAM-HAT + 4558 12 2844 2838 2839 2845 # HAT-CAM-CAP-HAT + 4559 12 2846 2840 2839 2845 # HAT-CAM-CAP-HAT + 4560 11 2847 2841 2840 2846 # HAT-CAO-CAM-HAT + 4561 1 2851 2852 2853 2854 # CAT-CAO-CAM-CAP + 4562 2 2851 2852 2853 2859 # CAT-CAO-CAM-HAT + 4563 1 2851 2856 2855 2854 # CAT-CAO-CAM-CAP + 4564 2 2851 2856 2855 2861 # CAT-CAO-CAM-HAT + 4565 3 2852 2851 2856 2855 # CAO-CAT-CAO-CAM + 4566 4 2852 2851 2856 2862 # CAO-CAT-CAO-HAT + 4567 5 2852 2853 2854 2855 # CAO-CAM-CAP-CAM + 4568 6 2852 2853 2854 2860 # CAO-CAM-CAP-HAT + 4569 7 2857 2851 2852 2853 # CTT-CAT-CAO-CAM + 4570 3 2856 2851 2852 2853 # CAO-CAT-CAO-CAM + 4571 5 2856 2855 2854 2853 # CAO-CAM-CAP-CAM + 4572 8 2853 2854 2855 2861 # CAM-CAP-CAM-HAT + 4573 9 2854 2853 2852 2858 # CAP-CAM-CAO-HAT + 4574 9 2854 2855 2856 2862 # CAP-CAM-CAO-HAT + 4575 8 2855 2854 2853 2859 # CAM-CAP-CAM-HAT + 4576 7 2857 2851 2856 2855 # CTT-CAT-CAO-CAM + 4577 6 2856 2855 2854 2860 # CAO-CAM-CAP-HAT + 4578 4 2856 2851 2852 2858 # CAO-CAT-CAO-HAT + 4579 10 2857 2851 2852 2858 # CTT-CAT-CAO-HAT + 4580 10 2857 2851 2856 2862 # CTT-CAT-CAO-HAT + 4581 11 2858 2852 2853 2859 # HAT-CAO-CAM-HAT + 4582 12 2859 2853 2854 2860 # HAT-CAM-CAP-HAT + 4583 12 2861 2855 2854 2860 # HAT-CAM-CAP-HAT + 4584 11 2862 2856 2855 2861 # HAT-CAO-CAM-HAT + 4585 1 2866 2867 2868 2869 # CAT-CAO-CAM-CAP + 4586 2 2866 2867 2868 2874 # CAT-CAO-CAM-HAT + 4587 1 2866 2871 2870 2869 # CAT-CAO-CAM-CAP + 4588 2 2866 2871 2870 2876 # CAT-CAO-CAM-HAT + 4589 3 2867 2866 2871 2870 # CAO-CAT-CAO-CAM + 4590 4 2867 2866 2871 2877 # CAO-CAT-CAO-HAT + 4591 5 2867 2868 2869 2870 # CAO-CAM-CAP-CAM + 4592 6 2867 2868 2869 2875 # CAO-CAM-CAP-HAT + 4593 7 2872 2866 2867 2868 # CTT-CAT-CAO-CAM + 4594 3 2871 2866 2867 2868 # CAO-CAT-CAO-CAM + 4595 5 2871 2870 2869 2868 # CAO-CAM-CAP-CAM + 4596 8 2868 2869 2870 2876 # CAM-CAP-CAM-HAT + 4597 9 2869 2868 2867 2873 # CAP-CAM-CAO-HAT + 4598 9 2869 2870 2871 2877 # CAP-CAM-CAO-HAT + 4599 8 2870 2869 2868 2874 # CAM-CAP-CAM-HAT + 4600 7 2872 2866 2871 2870 # CTT-CAT-CAO-CAM + 4601 6 2871 2870 2869 2875 # CAO-CAM-CAP-HAT + 4602 4 2871 2866 2867 2873 # CAO-CAT-CAO-HAT + 4603 10 2872 2866 2867 2873 # CTT-CAT-CAO-HAT + 4604 10 2872 2866 2871 2877 # CTT-CAT-CAO-HAT + 4605 11 2873 2867 2868 2874 # HAT-CAO-CAM-HAT + 4606 12 2874 2868 2869 2875 # HAT-CAM-CAP-HAT + 4607 12 2876 2870 2869 2875 # HAT-CAM-CAP-HAT + 4608 11 2877 2871 2870 2876 # HAT-CAO-CAM-HAT + 4609 1 2881 2882 2883 2884 # CAT-CAO-CAM-CAP + 4610 2 2881 2882 2883 2889 # CAT-CAO-CAM-HAT + 4611 1 2881 2886 2885 2884 # CAT-CAO-CAM-CAP + 4612 2 2881 2886 2885 2891 # CAT-CAO-CAM-HAT + 4613 3 2882 2881 2886 2885 # CAO-CAT-CAO-CAM + 4614 4 2882 2881 2886 2892 # CAO-CAT-CAO-HAT + 4615 5 2882 2883 2884 2885 # CAO-CAM-CAP-CAM + 4616 6 2882 2883 2884 2890 # CAO-CAM-CAP-HAT + 4617 7 2887 2881 2882 2883 # CTT-CAT-CAO-CAM + 4618 3 2886 2881 2882 2883 # CAO-CAT-CAO-CAM + 4619 5 2886 2885 2884 2883 # CAO-CAM-CAP-CAM + 4620 8 2883 2884 2885 2891 # CAM-CAP-CAM-HAT + 4621 9 2884 2883 2882 2888 # CAP-CAM-CAO-HAT + 4622 9 2884 2885 2886 2892 # CAP-CAM-CAO-HAT + 4623 8 2885 2884 2883 2889 # CAM-CAP-CAM-HAT + 4624 7 2887 2881 2886 2885 # CTT-CAT-CAO-CAM + 4625 6 2886 2885 2884 2890 # CAO-CAM-CAP-HAT + 4626 4 2886 2881 2882 2888 # CAO-CAT-CAO-HAT + 4627 10 2887 2881 2882 2888 # CTT-CAT-CAO-HAT + 4628 10 2887 2881 2886 2892 # CTT-CAT-CAO-HAT + 4629 11 2888 2882 2883 2889 # HAT-CAO-CAM-HAT + 4630 12 2889 2883 2884 2890 # HAT-CAM-CAP-HAT + 4631 12 2891 2885 2884 2890 # HAT-CAM-CAP-HAT + 4632 11 2892 2886 2885 2891 # HAT-CAO-CAM-HAT + 4633 1 2896 2897 2898 2899 # CAT-CAO-CAM-CAP + 4634 2 2896 2897 2898 2904 # CAT-CAO-CAM-HAT + 4635 1 2896 2901 2900 2899 # CAT-CAO-CAM-CAP + 4636 2 2896 2901 2900 2906 # CAT-CAO-CAM-HAT + 4637 3 2897 2896 2901 2900 # CAO-CAT-CAO-CAM + 4638 4 2897 2896 2901 2907 # CAO-CAT-CAO-HAT + 4639 5 2897 2898 2899 2900 # CAO-CAM-CAP-CAM + 4640 6 2897 2898 2899 2905 # CAO-CAM-CAP-HAT + 4641 7 2902 2896 2897 2898 # CTT-CAT-CAO-CAM + 4642 3 2901 2896 2897 2898 # CAO-CAT-CAO-CAM + 4643 5 2901 2900 2899 2898 # CAO-CAM-CAP-CAM + 4644 8 2898 2899 2900 2906 # CAM-CAP-CAM-HAT + 4645 9 2899 2898 2897 2903 # CAP-CAM-CAO-HAT + 4646 9 2899 2900 2901 2907 # CAP-CAM-CAO-HAT + 4647 8 2900 2899 2898 2904 # CAM-CAP-CAM-HAT + 4648 7 2902 2896 2901 2900 # CTT-CAT-CAO-CAM + 4649 6 2901 2900 2899 2905 # CAO-CAM-CAP-HAT + 4650 4 2901 2896 2897 2903 # CAO-CAT-CAO-HAT + 4651 10 2902 2896 2897 2903 # CTT-CAT-CAO-HAT + 4652 10 2902 2896 2901 2907 # CTT-CAT-CAO-HAT + 4653 11 2903 2897 2898 2904 # HAT-CAO-CAM-HAT + 4654 12 2904 2898 2899 2905 # HAT-CAM-CAP-HAT + 4655 12 2906 2900 2899 2905 # HAT-CAM-CAP-HAT + 4656 11 2907 2901 2900 2906 # HAT-CAO-CAM-HAT + 4657 1 2911 2912 2913 2914 # CAT-CAO-CAM-CAP + 4658 2 2911 2912 2913 2919 # CAT-CAO-CAM-HAT + 4659 1 2911 2916 2915 2914 # CAT-CAO-CAM-CAP + 4660 2 2911 2916 2915 2921 # CAT-CAO-CAM-HAT + 4661 3 2912 2911 2916 2915 # CAO-CAT-CAO-CAM + 4662 4 2912 2911 2916 2922 # CAO-CAT-CAO-HAT + 4663 5 2912 2913 2914 2915 # CAO-CAM-CAP-CAM + 4664 6 2912 2913 2914 2920 # CAO-CAM-CAP-HAT + 4665 7 2917 2911 2912 2913 # CTT-CAT-CAO-CAM + 4666 3 2916 2911 2912 2913 # CAO-CAT-CAO-CAM + 4667 5 2916 2915 2914 2913 # CAO-CAM-CAP-CAM + 4668 8 2913 2914 2915 2921 # CAM-CAP-CAM-HAT + 4669 9 2914 2913 2912 2918 # CAP-CAM-CAO-HAT + 4670 9 2914 2915 2916 2922 # CAP-CAM-CAO-HAT + 4671 8 2915 2914 2913 2919 # CAM-CAP-CAM-HAT + 4672 7 2917 2911 2916 2915 # CTT-CAT-CAO-CAM + 4673 6 2916 2915 2914 2920 # CAO-CAM-CAP-HAT + 4674 4 2916 2911 2912 2918 # CAO-CAT-CAO-HAT + 4675 10 2917 2911 2912 2918 # CTT-CAT-CAO-HAT + 4676 10 2917 2911 2916 2922 # CTT-CAT-CAO-HAT + 4677 11 2918 2912 2913 2919 # HAT-CAO-CAM-HAT + 4678 12 2919 2913 2914 2920 # HAT-CAM-CAP-HAT + 4679 12 2921 2915 2914 2920 # HAT-CAM-CAP-HAT + 4680 11 2922 2916 2915 2921 # HAT-CAO-CAM-HAT + 4681 1 2926 2927 2928 2929 # CAT-CAO-CAM-CAP + 4682 2 2926 2927 2928 2934 # CAT-CAO-CAM-HAT + 4683 1 2926 2931 2930 2929 # CAT-CAO-CAM-CAP + 4684 2 2926 2931 2930 2936 # CAT-CAO-CAM-HAT + 4685 3 2927 2926 2931 2930 # CAO-CAT-CAO-CAM + 4686 4 2927 2926 2931 2937 # CAO-CAT-CAO-HAT + 4687 5 2927 2928 2929 2930 # CAO-CAM-CAP-CAM + 4688 6 2927 2928 2929 2935 # CAO-CAM-CAP-HAT + 4689 7 2932 2926 2927 2928 # CTT-CAT-CAO-CAM + 4690 3 2931 2926 2927 2928 # CAO-CAT-CAO-CAM + 4691 5 2931 2930 2929 2928 # CAO-CAM-CAP-CAM + 4692 8 2928 2929 2930 2936 # CAM-CAP-CAM-HAT + 4693 9 2929 2928 2927 2933 # CAP-CAM-CAO-HAT + 4694 9 2929 2930 2931 2937 # CAP-CAM-CAO-HAT + 4695 8 2930 2929 2928 2934 # CAM-CAP-CAM-HAT + 4696 7 2932 2926 2931 2930 # CTT-CAT-CAO-CAM + 4697 6 2931 2930 2929 2935 # CAO-CAM-CAP-HAT + 4698 4 2931 2926 2927 2933 # CAO-CAT-CAO-HAT + 4699 10 2932 2926 2927 2933 # CTT-CAT-CAO-HAT + 4700 10 2932 2926 2931 2937 # CTT-CAT-CAO-HAT + 4701 11 2933 2927 2928 2934 # HAT-CAO-CAM-HAT + 4702 12 2934 2928 2929 2935 # HAT-CAM-CAP-HAT + 4703 12 2936 2930 2929 2935 # HAT-CAM-CAP-HAT + 4704 11 2937 2931 2930 2936 # HAT-CAO-CAM-HAT + 4705 1 2941 2942 2943 2944 # CAT-CAO-CAM-CAP + 4706 2 2941 2942 2943 2949 # CAT-CAO-CAM-HAT + 4707 1 2941 2946 2945 2944 # CAT-CAO-CAM-CAP + 4708 2 2941 2946 2945 2951 # CAT-CAO-CAM-HAT + 4709 3 2942 2941 2946 2945 # CAO-CAT-CAO-CAM + 4710 4 2942 2941 2946 2952 # CAO-CAT-CAO-HAT + 4711 5 2942 2943 2944 2945 # CAO-CAM-CAP-CAM + 4712 6 2942 2943 2944 2950 # CAO-CAM-CAP-HAT + 4713 7 2947 2941 2942 2943 # CTT-CAT-CAO-CAM + 4714 3 2946 2941 2942 2943 # CAO-CAT-CAO-CAM + 4715 5 2946 2945 2944 2943 # CAO-CAM-CAP-CAM + 4716 8 2943 2944 2945 2951 # CAM-CAP-CAM-HAT + 4717 9 2944 2943 2942 2948 # CAP-CAM-CAO-HAT + 4718 9 2944 2945 2946 2952 # CAP-CAM-CAO-HAT + 4719 8 2945 2944 2943 2949 # CAM-CAP-CAM-HAT + 4720 7 2947 2941 2946 2945 # CTT-CAT-CAO-CAM + 4721 6 2946 2945 2944 2950 # CAO-CAM-CAP-HAT + 4722 4 2946 2941 2942 2948 # CAO-CAT-CAO-HAT + 4723 10 2947 2941 2942 2948 # CTT-CAT-CAO-HAT + 4724 10 2947 2941 2946 2952 # CTT-CAT-CAO-HAT + 4725 11 2948 2942 2943 2949 # HAT-CAO-CAM-HAT + 4726 12 2949 2943 2944 2950 # HAT-CAM-CAP-HAT + 4727 12 2951 2945 2944 2950 # HAT-CAM-CAP-HAT + 4728 11 2952 2946 2945 2951 # HAT-CAO-CAM-HAT + 4729 1 2956 2957 2958 2959 # CAT-CAO-CAM-CAP + 4730 2 2956 2957 2958 2964 # CAT-CAO-CAM-HAT + 4731 1 2956 2961 2960 2959 # CAT-CAO-CAM-CAP + 4732 2 2956 2961 2960 2966 # CAT-CAO-CAM-HAT + 4733 3 2957 2956 2961 2960 # CAO-CAT-CAO-CAM + 4734 4 2957 2956 2961 2967 # CAO-CAT-CAO-HAT + 4735 5 2957 2958 2959 2960 # CAO-CAM-CAP-CAM + 4736 6 2957 2958 2959 2965 # CAO-CAM-CAP-HAT + 4737 7 2962 2956 2957 2958 # CTT-CAT-CAO-CAM + 4738 3 2961 2956 2957 2958 # CAO-CAT-CAO-CAM + 4739 5 2961 2960 2959 2958 # CAO-CAM-CAP-CAM + 4740 8 2958 2959 2960 2966 # CAM-CAP-CAM-HAT + 4741 9 2959 2958 2957 2963 # CAP-CAM-CAO-HAT + 4742 9 2959 2960 2961 2967 # CAP-CAM-CAO-HAT + 4743 8 2960 2959 2958 2964 # CAM-CAP-CAM-HAT + 4744 7 2962 2956 2961 2960 # CTT-CAT-CAO-CAM + 4745 6 2961 2960 2959 2965 # CAO-CAM-CAP-HAT + 4746 4 2961 2956 2957 2963 # CAO-CAT-CAO-HAT + 4747 10 2962 2956 2957 2963 # CTT-CAT-CAO-HAT + 4748 10 2962 2956 2961 2967 # CTT-CAT-CAO-HAT + 4749 11 2963 2957 2958 2964 # HAT-CAO-CAM-HAT + 4750 12 2964 2958 2959 2965 # HAT-CAM-CAP-HAT + 4751 12 2966 2960 2959 2965 # HAT-CAM-CAP-HAT + 4752 11 2967 2961 2960 2966 # HAT-CAO-CAM-HAT + 4753 1 2971 2972 2973 2974 # CAT-CAO-CAM-CAP + 4754 2 2971 2972 2973 2979 # CAT-CAO-CAM-HAT + 4755 1 2971 2976 2975 2974 # CAT-CAO-CAM-CAP + 4756 2 2971 2976 2975 2981 # CAT-CAO-CAM-HAT + 4757 3 2972 2971 2976 2975 # CAO-CAT-CAO-CAM + 4758 4 2972 2971 2976 2982 # CAO-CAT-CAO-HAT + 4759 5 2972 2973 2974 2975 # CAO-CAM-CAP-CAM + 4760 6 2972 2973 2974 2980 # CAO-CAM-CAP-HAT + 4761 7 2977 2971 2972 2973 # CTT-CAT-CAO-CAM + 4762 3 2976 2971 2972 2973 # CAO-CAT-CAO-CAM + 4763 5 2976 2975 2974 2973 # CAO-CAM-CAP-CAM + 4764 8 2973 2974 2975 2981 # CAM-CAP-CAM-HAT + 4765 9 2974 2973 2972 2978 # CAP-CAM-CAO-HAT + 4766 9 2974 2975 2976 2982 # CAP-CAM-CAO-HAT + 4767 8 2975 2974 2973 2979 # CAM-CAP-CAM-HAT + 4768 7 2977 2971 2976 2975 # CTT-CAT-CAO-CAM + 4769 6 2976 2975 2974 2980 # CAO-CAM-CAP-HAT + 4770 4 2976 2971 2972 2978 # CAO-CAT-CAO-HAT + 4771 10 2977 2971 2972 2978 # CTT-CAT-CAO-HAT + 4772 10 2977 2971 2976 2982 # CTT-CAT-CAO-HAT + 4773 11 2978 2972 2973 2979 # HAT-CAO-CAM-HAT + 4774 12 2979 2973 2974 2980 # HAT-CAM-CAP-HAT + 4775 12 2981 2975 2974 2980 # HAT-CAM-CAP-HAT + 4776 11 2982 2976 2975 2981 # HAT-CAO-CAM-HAT + 4777 1 2986 2987 2988 2989 # CAT-CAO-CAM-CAP + 4778 2 2986 2987 2988 2994 # CAT-CAO-CAM-HAT + 4779 1 2986 2991 2990 2989 # CAT-CAO-CAM-CAP + 4780 2 2986 2991 2990 2996 # CAT-CAO-CAM-HAT + 4781 3 2987 2986 2991 2990 # CAO-CAT-CAO-CAM + 4782 4 2987 2986 2991 2997 # CAO-CAT-CAO-HAT + 4783 5 2987 2988 2989 2990 # CAO-CAM-CAP-CAM + 4784 6 2987 2988 2989 2995 # CAO-CAM-CAP-HAT + 4785 7 2992 2986 2987 2988 # CTT-CAT-CAO-CAM + 4786 3 2991 2986 2987 2988 # CAO-CAT-CAO-CAM + 4787 5 2991 2990 2989 2988 # CAO-CAM-CAP-CAM + 4788 8 2988 2989 2990 2996 # CAM-CAP-CAM-HAT + 4789 9 2989 2988 2987 2993 # CAP-CAM-CAO-HAT + 4790 9 2989 2990 2991 2997 # CAP-CAM-CAO-HAT + 4791 8 2990 2989 2988 2994 # CAM-CAP-CAM-HAT + 4792 7 2992 2986 2991 2990 # CTT-CAT-CAO-CAM + 4793 6 2991 2990 2989 2995 # CAO-CAM-CAP-HAT + 4794 4 2991 2986 2987 2993 # CAO-CAT-CAO-HAT + 4795 10 2992 2986 2987 2993 # CTT-CAT-CAO-HAT + 4796 10 2992 2986 2991 2997 # CTT-CAT-CAO-HAT + 4797 11 2993 2987 2988 2994 # HAT-CAO-CAM-HAT + 4798 12 2994 2988 2989 2995 # HAT-CAM-CAP-HAT + 4799 12 2996 2990 2989 2995 # HAT-CAM-CAP-HAT + 4800 11 2997 2991 2990 2996 # HAT-CAO-CAM-HAT + 4801 1 3001 3002 3003 3004 # CAT-CAO-CAM-CAP + 4802 2 3001 3002 3003 3009 # CAT-CAO-CAM-HAT + 4803 1 3001 3006 3005 3004 # CAT-CAO-CAM-CAP + 4804 2 3001 3006 3005 3011 # CAT-CAO-CAM-HAT + 4805 3 3002 3001 3006 3005 # CAO-CAT-CAO-CAM + 4806 4 3002 3001 3006 3012 # CAO-CAT-CAO-HAT + 4807 5 3002 3003 3004 3005 # CAO-CAM-CAP-CAM + 4808 6 3002 3003 3004 3010 # CAO-CAM-CAP-HAT + 4809 7 3007 3001 3002 3003 # CTT-CAT-CAO-CAM + 4810 3 3006 3001 3002 3003 # CAO-CAT-CAO-CAM + 4811 5 3006 3005 3004 3003 # CAO-CAM-CAP-CAM + 4812 8 3003 3004 3005 3011 # CAM-CAP-CAM-HAT + 4813 9 3004 3003 3002 3008 # CAP-CAM-CAO-HAT + 4814 9 3004 3005 3006 3012 # CAP-CAM-CAO-HAT + 4815 8 3005 3004 3003 3009 # CAM-CAP-CAM-HAT + 4816 7 3007 3001 3006 3005 # CTT-CAT-CAO-CAM + 4817 6 3006 3005 3004 3010 # CAO-CAM-CAP-HAT + 4818 4 3006 3001 3002 3008 # CAO-CAT-CAO-HAT + 4819 10 3007 3001 3002 3008 # CTT-CAT-CAO-HAT + 4820 10 3007 3001 3006 3012 # CTT-CAT-CAO-HAT + 4821 11 3008 3002 3003 3009 # HAT-CAO-CAM-HAT + 4822 12 3009 3003 3004 3010 # HAT-CAM-CAP-HAT + 4823 12 3011 3005 3004 3010 # HAT-CAM-CAP-HAT + 4824 11 3012 3006 3005 3011 # HAT-CAO-CAM-HAT + 4825 1 3016 3017 3018 3019 # CAT-CAO-CAM-CAP + 4826 2 3016 3017 3018 3024 # CAT-CAO-CAM-HAT + 4827 1 3016 3021 3020 3019 # CAT-CAO-CAM-CAP + 4828 2 3016 3021 3020 3026 # CAT-CAO-CAM-HAT + 4829 3 3017 3016 3021 3020 # CAO-CAT-CAO-CAM + 4830 4 3017 3016 3021 3027 # CAO-CAT-CAO-HAT + 4831 5 3017 3018 3019 3020 # CAO-CAM-CAP-CAM + 4832 6 3017 3018 3019 3025 # CAO-CAM-CAP-HAT + 4833 7 3022 3016 3017 3018 # CTT-CAT-CAO-CAM + 4834 3 3021 3016 3017 3018 # CAO-CAT-CAO-CAM + 4835 5 3021 3020 3019 3018 # CAO-CAM-CAP-CAM + 4836 8 3018 3019 3020 3026 # CAM-CAP-CAM-HAT + 4837 9 3019 3018 3017 3023 # CAP-CAM-CAO-HAT + 4838 9 3019 3020 3021 3027 # CAP-CAM-CAO-HAT + 4839 8 3020 3019 3018 3024 # CAM-CAP-CAM-HAT + 4840 7 3022 3016 3021 3020 # CTT-CAT-CAO-CAM + 4841 6 3021 3020 3019 3025 # CAO-CAM-CAP-HAT + 4842 4 3021 3016 3017 3023 # CAO-CAT-CAO-HAT + 4843 10 3022 3016 3017 3023 # CTT-CAT-CAO-HAT + 4844 10 3022 3016 3021 3027 # CTT-CAT-CAO-HAT + 4845 11 3023 3017 3018 3024 # HAT-CAO-CAM-HAT + 4846 12 3024 3018 3019 3025 # HAT-CAM-CAP-HAT + 4847 12 3026 3020 3019 3025 # HAT-CAM-CAP-HAT + 4848 11 3027 3021 3020 3026 # HAT-CAO-CAM-HAT + 4849 1 3031 3032 3033 3034 # CAT-CAO-CAM-CAP + 4850 2 3031 3032 3033 3039 # CAT-CAO-CAM-HAT + 4851 1 3031 3036 3035 3034 # CAT-CAO-CAM-CAP + 4852 2 3031 3036 3035 3041 # CAT-CAO-CAM-HAT + 4853 3 3032 3031 3036 3035 # CAO-CAT-CAO-CAM + 4854 4 3032 3031 3036 3042 # CAO-CAT-CAO-HAT + 4855 5 3032 3033 3034 3035 # CAO-CAM-CAP-CAM + 4856 6 3032 3033 3034 3040 # CAO-CAM-CAP-HAT + 4857 7 3037 3031 3032 3033 # CTT-CAT-CAO-CAM + 4858 3 3036 3031 3032 3033 # CAO-CAT-CAO-CAM + 4859 5 3036 3035 3034 3033 # CAO-CAM-CAP-CAM + 4860 8 3033 3034 3035 3041 # CAM-CAP-CAM-HAT + 4861 9 3034 3033 3032 3038 # CAP-CAM-CAO-HAT + 4862 9 3034 3035 3036 3042 # CAP-CAM-CAO-HAT + 4863 8 3035 3034 3033 3039 # CAM-CAP-CAM-HAT + 4864 7 3037 3031 3036 3035 # CTT-CAT-CAO-CAM + 4865 6 3036 3035 3034 3040 # CAO-CAM-CAP-HAT + 4866 4 3036 3031 3032 3038 # CAO-CAT-CAO-HAT + 4867 10 3037 3031 3032 3038 # CTT-CAT-CAO-HAT + 4868 10 3037 3031 3036 3042 # CTT-CAT-CAO-HAT + 4869 11 3038 3032 3033 3039 # HAT-CAO-CAM-HAT + 4870 12 3039 3033 3034 3040 # HAT-CAM-CAP-HAT + 4871 12 3041 3035 3034 3040 # HAT-CAM-CAP-HAT + 4872 11 3042 3036 3035 3041 # HAT-CAO-CAM-HAT + 4873 1 3046 3047 3048 3049 # CAT-CAO-CAM-CAP + 4874 2 3046 3047 3048 3054 # CAT-CAO-CAM-HAT + 4875 1 3046 3051 3050 3049 # CAT-CAO-CAM-CAP + 4876 2 3046 3051 3050 3056 # CAT-CAO-CAM-HAT + 4877 3 3047 3046 3051 3050 # CAO-CAT-CAO-CAM + 4878 4 3047 3046 3051 3057 # CAO-CAT-CAO-HAT + 4879 5 3047 3048 3049 3050 # CAO-CAM-CAP-CAM + 4880 6 3047 3048 3049 3055 # CAO-CAM-CAP-HAT + 4881 7 3052 3046 3047 3048 # CTT-CAT-CAO-CAM + 4882 3 3051 3046 3047 3048 # CAO-CAT-CAO-CAM + 4883 5 3051 3050 3049 3048 # CAO-CAM-CAP-CAM + 4884 8 3048 3049 3050 3056 # CAM-CAP-CAM-HAT + 4885 9 3049 3048 3047 3053 # CAP-CAM-CAO-HAT + 4886 9 3049 3050 3051 3057 # CAP-CAM-CAO-HAT + 4887 8 3050 3049 3048 3054 # CAM-CAP-CAM-HAT + 4888 7 3052 3046 3051 3050 # CTT-CAT-CAO-CAM + 4889 6 3051 3050 3049 3055 # CAO-CAM-CAP-HAT + 4890 4 3051 3046 3047 3053 # CAO-CAT-CAO-HAT + 4891 10 3052 3046 3047 3053 # CTT-CAT-CAO-HAT + 4892 10 3052 3046 3051 3057 # CTT-CAT-CAO-HAT + 4893 11 3053 3047 3048 3054 # HAT-CAO-CAM-HAT + 4894 12 3054 3048 3049 3055 # HAT-CAM-CAP-HAT + 4895 12 3056 3050 3049 3055 # HAT-CAM-CAP-HAT + 4896 11 3057 3051 3050 3056 # HAT-CAO-CAM-HAT + 4897 1 3061 3062 3063 3064 # CAT-CAO-CAM-CAP + 4898 2 3061 3062 3063 3069 # CAT-CAO-CAM-HAT + 4899 1 3061 3066 3065 3064 # CAT-CAO-CAM-CAP + 4900 2 3061 3066 3065 3071 # CAT-CAO-CAM-HAT + 4901 3 3062 3061 3066 3065 # CAO-CAT-CAO-CAM + 4902 4 3062 3061 3066 3072 # CAO-CAT-CAO-HAT + 4903 5 3062 3063 3064 3065 # CAO-CAM-CAP-CAM + 4904 6 3062 3063 3064 3070 # CAO-CAM-CAP-HAT + 4905 7 3067 3061 3062 3063 # CTT-CAT-CAO-CAM + 4906 3 3066 3061 3062 3063 # CAO-CAT-CAO-CAM + 4907 5 3066 3065 3064 3063 # CAO-CAM-CAP-CAM + 4908 8 3063 3064 3065 3071 # CAM-CAP-CAM-HAT + 4909 9 3064 3063 3062 3068 # CAP-CAM-CAO-HAT + 4910 9 3064 3065 3066 3072 # CAP-CAM-CAO-HAT + 4911 8 3065 3064 3063 3069 # CAM-CAP-CAM-HAT + 4912 7 3067 3061 3066 3065 # CTT-CAT-CAO-CAM + 4913 6 3066 3065 3064 3070 # CAO-CAM-CAP-HAT + 4914 4 3066 3061 3062 3068 # CAO-CAT-CAO-HAT + 4915 10 3067 3061 3062 3068 # CTT-CAT-CAO-HAT + 4916 10 3067 3061 3066 3072 # CTT-CAT-CAO-HAT + 4917 11 3068 3062 3063 3069 # HAT-CAO-CAM-HAT + 4918 12 3069 3063 3064 3070 # HAT-CAM-CAP-HAT + 4919 12 3071 3065 3064 3070 # HAT-CAM-CAP-HAT + 4920 11 3072 3066 3065 3071 # HAT-CAO-CAM-HAT + 4921 1 3076 3077 3078 3079 # CAT-CAO-CAM-CAP + 4922 2 3076 3077 3078 3084 # CAT-CAO-CAM-HAT + 4923 1 3076 3081 3080 3079 # CAT-CAO-CAM-CAP + 4924 2 3076 3081 3080 3086 # CAT-CAO-CAM-HAT + 4925 3 3077 3076 3081 3080 # CAO-CAT-CAO-CAM + 4926 4 3077 3076 3081 3087 # CAO-CAT-CAO-HAT + 4927 5 3077 3078 3079 3080 # CAO-CAM-CAP-CAM + 4928 6 3077 3078 3079 3085 # CAO-CAM-CAP-HAT + 4929 7 3082 3076 3077 3078 # CTT-CAT-CAO-CAM + 4930 3 3081 3076 3077 3078 # CAO-CAT-CAO-CAM + 4931 5 3081 3080 3079 3078 # CAO-CAM-CAP-CAM + 4932 8 3078 3079 3080 3086 # CAM-CAP-CAM-HAT + 4933 9 3079 3078 3077 3083 # CAP-CAM-CAO-HAT + 4934 9 3079 3080 3081 3087 # CAP-CAM-CAO-HAT + 4935 8 3080 3079 3078 3084 # CAM-CAP-CAM-HAT + 4936 7 3082 3076 3081 3080 # CTT-CAT-CAO-CAM + 4937 6 3081 3080 3079 3085 # CAO-CAM-CAP-HAT + 4938 4 3081 3076 3077 3083 # CAO-CAT-CAO-HAT + 4939 10 3082 3076 3077 3083 # CTT-CAT-CAO-HAT + 4940 10 3082 3076 3081 3087 # CTT-CAT-CAO-HAT + 4941 11 3083 3077 3078 3084 # HAT-CAO-CAM-HAT + 4942 12 3084 3078 3079 3085 # HAT-CAM-CAP-HAT + 4943 12 3086 3080 3079 3085 # HAT-CAM-CAP-HAT + 4944 11 3087 3081 3080 3086 # HAT-CAO-CAM-HAT + 4945 1 3091 3092 3093 3094 # CAT-CAO-CAM-CAP + 4946 2 3091 3092 3093 3099 # CAT-CAO-CAM-HAT + 4947 1 3091 3096 3095 3094 # CAT-CAO-CAM-CAP + 4948 2 3091 3096 3095 3101 # CAT-CAO-CAM-HAT + 4949 3 3092 3091 3096 3095 # CAO-CAT-CAO-CAM + 4950 4 3092 3091 3096 3102 # CAO-CAT-CAO-HAT + 4951 5 3092 3093 3094 3095 # CAO-CAM-CAP-CAM + 4952 6 3092 3093 3094 3100 # CAO-CAM-CAP-HAT + 4953 7 3097 3091 3092 3093 # CTT-CAT-CAO-CAM + 4954 3 3096 3091 3092 3093 # CAO-CAT-CAO-CAM + 4955 5 3096 3095 3094 3093 # CAO-CAM-CAP-CAM + 4956 8 3093 3094 3095 3101 # CAM-CAP-CAM-HAT + 4957 9 3094 3093 3092 3098 # CAP-CAM-CAO-HAT + 4958 9 3094 3095 3096 3102 # CAP-CAM-CAO-HAT + 4959 8 3095 3094 3093 3099 # CAM-CAP-CAM-HAT + 4960 7 3097 3091 3096 3095 # CTT-CAT-CAO-CAM + 4961 6 3096 3095 3094 3100 # CAO-CAM-CAP-HAT + 4962 4 3096 3091 3092 3098 # CAO-CAT-CAO-HAT + 4963 10 3097 3091 3092 3098 # CTT-CAT-CAO-HAT + 4964 10 3097 3091 3096 3102 # CTT-CAT-CAO-HAT + 4965 11 3098 3092 3093 3099 # HAT-CAO-CAM-HAT + 4966 12 3099 3093 3094 3100 # HAT-CAM-CAP-HAT + 4967 12 3101 3095 3094 3100 # HAT-CAM-CAP-HAT + 4968 11 3102 3096 3095 3101 # HAT-CAO-CAM-HAT + 4969 1 3106 3107 3108 3109 # CAT-CAO-CAM-CAP + 4970 2 3106 3107 3108 3114 # CAT-CAO-CAM-HAT + 4971 1 3106 3111 3110 3109 # CAT-CAO-CAM-CAP + 4972 2 3106 3111 3110 3116 # CAT-CAO-CAM-HAT + 4973 3 3107 3106 3111 3110 # CAO-CAT-CAO-CAM + 4974 4 3107 3106 3111 3117 # CAO-CAT-CAO-HAT + 4975 5 3107 3108 3109 3110 # CAO-CAM-CAP-CAM + 4976 6 3107 3108 3109 3115 # CAO-CAM-CAP-HAT + 4977 7 3112 3106 3107 3108 # CTT-CAT-CAO-CAM + 4978 3 3111 3106 3107 3108 # CAO-CAT-CAO-CAM + 4979 5 3111 3110 3109 3108 # CAO-CAM-CAP-CAM + 4980 8 3108 3109 3110 3116 # CAM-CAP-CAM-HAT + 4981 9 3109 3108 3107 3113 # CAP-CAM-CAO-HAT + 4982 9 3109 3110 3111 3117 # CAP-CAM-CAO-HAT + 4983 8 3110 3109 3108 3114 # CAM-CAP-CAM-HAT + 4984 7 3112 3106 3111 3110 # CTT-CAT-CAO-CAM + 4985 6 3111 3110 3109 3115 # CAO-CAM-CAP-HAT + 4986 4 3111 3106 3107 3113 # CAO-CAT-CAO-HAT + 4987 10 3112 3106 3107 3113 # CTT-CAT-CAO-HAT + 4988 10 3112 3106 3111 3117 # CTT-CAT-CAO-HAT + 4989 11 3113 3107 3108 3114 # HAT-CAO-CAM-HAT + 4990 12 3114 3108 3109 3115 # HAT-CAM-CAP-HAT + 4991 12 3116 3110 3109 3115 # HAT-CAM-CAP-HAT + 4992 11 3117 3111 3110 3116 # HAT-CAO-CAM-HAT + 4993 1 3121 3122 3123 3124 # CAT-CAO-CAM-CAP + 4994 2 3121 3122 3123 3129 # CAT-CAO-CAM-HAT + 4995 1 3121 3126 3125 3124 # CAT-CAO-CAM-CAP + 4996 2 3121 3126 3125 3131 # CAT-CAO-CAM-HAT + 4997 3 3122 3121 3126 3125 # CAO-CAT-CAO-CAM + 4998 4 3122 3121 3126 3132 # CAO-CAT-CAO-HAT + 4999 5 3122 3123 3124 3125 # CAO-CAM-CAP-CAM + 5000 6 3122 3123 3124 3130 # CAO-CAM-CAP-HAT + 5001 7 3127 3121 3122 3123 # CTT-CAT-CAO-CAM + 5002 3 3126 3121 3122 3123 # CAO-CAT-CAO-CAM + 5003 5 3126 3125 3124 3123 # CAO-CAM-CAP-CAM + 5004 8 3123 3124 3125 3131 # CAM-CAP-CAM-HAT + 5005 9 3124 3123 3122 3128 # CAP-CAM-CAO-HAT + 5006 9 3124 3125 3126 3132 # CAP-CAM-CAO-HAT + 5007 8 3125 3124 3123 3129 # CAM-CAP-CAM-HAT + 5008 7 3127 3121 3126 3125 # CTT-CAT-CAO-CAM + 5009 6 3126 3125 3124 3130 # CAO-CAM-CAP-HAT + 5010 4 3126 3121 3122 3128 # CAO-CAT-CAO-HAT + 5011 10 3127 3121 3122 3128 # CTT-CAT-CAO-HAT + 5012 10 3127 3121 3126 3132 # CTT-CAT-CAO-HAT + 5013 11 3128 3122 3123 3129 # HAT-CAO-CAM-HAT + 5014 12 3129 3123 3124 3130 # HAT-CAM-CAP-HAT + 5015 12 3131 3125 3124 3130 # HAT-CAM-CAP-HAT + 5016 11 3132 3126 3125 3131 # HAT-CAO-CAM-HAT + 5017 1 3136 3137 3138 3139 # CAT-CAO-CAM-CAP + 5018 2 3136 3137 3138 3144 # CAT-CAO-CAM-HAT + 5019 1 3136 3141 3140 3139 # CAT-CAO-CAM-CAP + 5020 2 3136 3141 3140 3146 # CAT-CAO-CAM-HAT + 5021 3 3137 3136 3141 3140 # CAO-CAT-CAO-CAM + 5022 4 3137 3136 3141 3147 # CAO-CAT-CAO-HAT + 5023 5 3137 3138 3139 3140 # CAO-CAM-CAP-CAM + 5024 6 3137 3138 3139 3145 # CAO-CAM-CAP-HAT + 5025 7 3142 3136 3137 3138 # CTT-CAT-CAO-CAM + 5026 3 3141 3136 3137 3138 # CAO-CAT-CAO-CAM + 5027 5 3141 3140 3139 3138 # CAO-CAM-CAP-CAM + 5028 8 3138 3139 3140 3146 # CAM-CAP-CAM-HAT + 5029 9 3139 3138 3137 3143 # CAP-CAM-CAO-HAT + 5030 9 3139 3140 3141 3147 # CAP-CAM-CAO-HAT + 5031 8 3140 3139 3138 3144 # CAM-CAP-CAM-HAT + 5032 7 3142 3136 3141 3140 # CTT-CAT-CAO-CAM + 5033 6 3141 3140 3139 3145 # CAO-CAM-CAP-HAT + 5034 4 3141 3136 3137 3143 # CAO-CAT-CAO-HAT + 5035 10 3142 3136 3137 3143 # CTT-CAT-CAO-HAT + 5036 10 3142 3136 3141 3147 # CTT-CAT-CAO-HAT + 5037 11 3143 3137 3138 3144 # HAT-CAO-CAM-HAT + 5038 12 3144 3138 3139 3145 # HAT-CAM-CAP-HAT + 5039 12 3146 3140 3139 3145 # HAT-CAM-CAP-HAT + 5040 11 3147 3141 3140 3146 # HAT-CAO-CAM-HAT + 5041 1 3151 3152 3153 3154 # CAT-CAO-CAM-CAP + 5042 2 3151 3152 3153 3159 # CAT-CAO-CAM-HAT + 5043 1 3151 3156 3155 3154 # CAT-CAO-CAM-CAP + 5044 2 3151 3156 3155 3161 # CAT-CAO-CAM-HAT + 5045 3 3152 3151 3156 3155 # CAO-CAT-CAO-CAM + 5046 4 3152 3151 3156 3162 # CAO-CAT-CAO-HAT + 5047 5 3152 3153 3154 3155 # CAO-CAM-CAP-CAM + 5048 6 3152 3153 3154 3160 # CAO-CAM-CAP-HAT + 5049 7 3157 3151 3152 3153 # CTT-CAT-CAO-CAM + 5050 3 3156 3151 3152 3153 # CAO-CAT-CAO-CAM + 5051 5 3156 3155 3154 3153 # CAO-CAM-CAP-CAM + 5052 8 3153 3154 3155 3161 # CAM-CAP-CAM-HAT + 5053 9 3154 3153 3152 3158 # CAP-CAM-CAO-HAT + 5054 9 3154 3155 3156 3162 # CAP-CAM-CAO-HAT + 5055 8 3155 3154 3153 3159 # CAM-CAP-CAM-HAT + 5056 7 3157 3151 3156 3155 # CTT-CAT-CAO-CAM + 5057 6 3156 3155 3154 3160 # CAO-CAM-CAP-HAT + 5058 4 3156 3151 3152 3158 # CAO-CAT-CAO-HAT + 5059 10 3157 3151 3152 3158 # CTT-CAT-CAO-HAT + 5060 10 3157 3151 3156 3162 # CTT-CAT-CAO-HAT + 5061 11 3158 3152 3153 3159 # HAT-CAO-CAM-HAT + 5062 12 3159 3153 3154 3160 # HAT-CAM-CAP-HAT + 5063 12 3161 3155 3154 3160 # HAT-CAM-CAP-HAT + 5064 11 3162 3156 3155 3161 # HAT-CAO-CAM-HAT + 5065 1 3166 3167 3168 3169 # CAT-CAO-CAM-CAP + 5066 2 3166 3167 3168 3174 # CAT-CAO-CAM-HAT + 5067 1 3166 3171 3170 3169 # CAT-CAO-CAM-CAP + 5068 2 3166 3171 3170 3176 # CAT-CAO-CAM-HAT + 5069 3 3167 3166 3171 3170 # CAO-CAT-CAO-CAM + 5070 4 3167 3166 3171 3177 # CAO-CAT-CAO-HAT + 5071 5 3167 3168 3169 3170 # CAO-CAM-CAP-CAM + 5072 6 3167 3168 3169 3175 # CAO-CAM-CAP-HAT + 5073 7 3172 3166 3167 3168 # CTT-CAT-CAO-CAM + 5074 3 3171 3166 3167 3168 # CAO-CAT-CAO-CAM + 5075 5 3171 3170 3169 3168 # CAO-CAM-CAP-CAM + 5076 8 3168 3169 3170 3176 # CAM-CAP-CAM-HAT + 5077 9 3169 3168 3167 3173 # CAP-CAM-CAO-HAT + 5078 9 3169 3170 3171 3177 # CAP-CAM-CAO-HAT + 5079 8 3170 3169 3168 3174 # CAM-CAP-CAM-HAT + 5080 7 3172 3166 3171 3170 # CTT-CAT-CAO-CAM + 5081 6 3171 3170 3169 3175 # CAO-CAM-CAP-HAT + 5082 4 3171 3166 3167 3173 # CAO-CAT-CAO-HAT + 5083 10 3172 3166 3167 3173 # CTT-CAT-CAO-HAT + 5084 10 3172 3166 3171 3177 # CTT-CAT-CAO-HAT + 5085 11 3173 3167 3168 3174 # HAT-CAO-CAM-HAT + 5086 12 3174 3168 3169 3175 # HAT-CAM-CAP-HAT + 5087 12 3176 3170 3169 3175 # HAT-CAM-CAP-HAT + 5088 11 3177 3171 3170 3176 # HAT-CAO-CAM-HAT + 5089 1 3181 3182 3183 3184 # CAT-CAO-CAM-CAP + 5090 2 3181 3182 3183 3189 # CAT-CAO-CAM-HAT + 5091 1 3181 3186 3185 3184 # CAT-CAO-CAM-CAP + 5092 2 3181 3186 3185 3191 # CAT-CAO-CAM-HAT + 5093 3 3182 3181 3186 3185 # CAO-CAT-CAO-CAM + 5094 4 3182 3181 3186 3192 # CAO-CAT-CAO-HAT + 5095 5 3182 3183 3184 3185 # CAO-CAM-CAP-CAM + 5096 6 3182 3183 3184 3190 # CAO-CAM-CAP-HAT + 5097 7 3187 3181 3182 3183 # CTT-CAT-CAO-CAM + 5098 3 3186 3181 3182 3183 # CAO-CAT-CAO-CAM + 5099 5 3186 3185 3184 3183 # CAO-CAM-CAP-CAM + 5100 8 3183 3184 3185 3191 # CAM-CAP-CAM-HAT + 5101 9 3184 3183 3182 3188 # CAP-CAM-CAO-HAT + 5102 9 3184 3185 3186 3192 # CAP-CAM-CAO-HAT + 5103 8 3185 3184 3183 3189 # CAM-CAP-CAM-HAT + 5104 7 3187 3181 3186 3185 # CTT-CAT-CAO-CAM + 5105 6 3186 3185 3184 3190 # CAO-CAM-CAP-HAT + 5106 4 3186 3181 3182 3188 # CAO-CAT-CAO-HAT + 5107 10 3187 3181 3182 3188 # CTT-CAT-CAO-HAT + 5108 10 3187 3181 3186 3192 # CTT-CAT-CAO-HAT + 5109 11 3188 3182 3183 3189 # HAT-CAO-CAM-HAT + 5110 12 3189 3183 3184 3190 # HAT-CAM-CAP-HAT + 5111 12 3191 3185 3184 3190 # HAT-CAM-CAP-HAT + 5112 11 3192 3186 3185 3191 # HAT-CAO-CAM-HAT + 5113 1 3196 3197 3198 3199 # CAT-CAO-CAM-CAP + 5114 2 3196 3197 3198 3204 # CAT-CAO-CAM-HAT + 5115 1 3196 3201 3200 3199 # CAT-CAO-CAM-CAP + 5116 2 3196 3201 3200 3206 # CAT-CAO-CAM-HAT + 5117 3 3197 3196 3201 3200 # CAO-CAT-CAO-CAM + 5118 4 3197 3196 3201 3207 # CAO-CAT-CAO-HAT + 5119 5 3197 3198 3199 3200 # CAO-CAM-CAP-CAM + 5120 6 3197 3198 3199 3205 # CAO-CAM-CAP-HAT + 5121 7 3202 3196 3197 3198 # CTT-CAT-CAO-CAM + 5122 3 3201 3196 3197 3198 # CAO-CAT-CAO-CAM + 5123 5 3201 3200 3199 3198 # CAO-CAM-CAP-CAM + 5124 8 3198 3199 3200 3206 # CAM-CAP-CAM-HAT + 5125 9 3199 3198 3197 3203 # CAP-CAM-CAO-HAT + 5126 9 3199 3200 3201 3207 # CAP-CAM-CAO-HAT + 5127 8 3200 3199 3198 3204 # CAM-CAP-CAM-HAT + 5128 7 3202 3196 3201 3200 # CTT-CAT-CAO-CAM + 5129 6 3201 3200 3199 3205 # CAO-CAM-CAP-HAT + 5130 4 3201 3196 3197 3203 # CAO-CAT-CAO-HAT + 5131 10 3202 3196 3197 3203 # CTT-CAT-CAO-HAT + 5132 10 3202 3196 3201 3207 # CTT-CAT-CAO-HAT + 5133 11 3203 3197 3198 3204 # HAT-CAO-CAM-HAT + 5134 12 3204 3198 3199 3205 # HAT-CAM-CAP-HAT + 5135 12 3206 3200 3199 3205 # HAT-CAM-CAP-HAT + 5136 11 3207 3201 3200 3206 # HAT-CAO-CAM-HAT + 5137 1 3211 3212 3213 3214 # CAT-CAO-CAM-CAP + 5138 2 3211 3212 3213 3219 # CAT-CAO-CAM-HAT + 5139 1 3211 3216 3215 3214 # CAT-CAO-CAM-CAP + 5140 2 3211 3216 3215 3221 # CAT-CAO-CAM-HAT + 5141 3 3212 3211 3216 3215 # CAO-CAT-CAO-CAM + 5142 4 3212 3211 3216 3222 # CAO-CAT-CAO-HAT + 5143 5 3212 3213 3214 3215 # CAO-CAM-CAP-CAM + 5144 6 3212 3213 3214 3220 # CAO-CAM-CAP-HAT + 5145 7 3217 3211 3212 3213 # CTT-CAT-CAO-CAM + 5146 3 3216 3211 3212 3213 # CAO-CAT-CAO-CAM + 5147 5 3216 3215 3214 3213 # CAO-CAM-CAP-CAM + 5148 8 3213 3214 3215 3221 # CAM-CAP-CAM-HAT + 5149 9 3214 3213 3212 3218 # CAP-CAM-CAO-HAT + 5150 9 3214 3215 3216 3222 # CAP-CAM-CAO-HAT + 5151 8 3215 3214 3213 3219 # CAM-CAP-CAM-HAT + 5152 7 3217 3211 3216 3215 # CTT-CAT-CAO-CAM + 5153 6 3216 3215 3214 3220 # CAO-CAM-CAP-HAT + 5154 4 3216 3211 3212 3218 # CAO-CAT-CAO-HAT + 5155 10 3217 3211 3212 3218 # CTT-CAT-CAO-HAT + 5156 10 3217 3211 3216 3222 # CTT-CAT-CAO-HAT + 5157 11 3218 3212 3213 3219 # HAT-CAO-CAM-HAT + 5158 12 3219 3213 3214 3220 # HAT-CAM-CAP-HAT + 5159 12 3221 3215 3214 3220 # HAT-CAM-CAP-HAT + 5160 11 3222 3216 3215 3221 # HAT-CAO-CAM-HAT + 5161 1 3226 3227 3228 3229 # CAT-CAO-CAM-CAP + 5162 2 3226 3227 3228 3234 # CAT-CAO-CAM-HAT + 5163 1 3226 3231 3230 3229 # CAT-CAO-CAM-CAP + 5164 2 3226 3231 3230 3236 # CAT-CAO-CAM-HAT + 5165 3 3227 3226 3231 3230 # CAO-CAT-CAO-CAM + 5166 4 3227 3226 3231 3237 # CAO-CAT-CAO-HAT + 5167 5 3227 3228 3229 3230 # CAO-CAM-CAP-CAM + 5168 6 3227 3228 3229 3235 # CAO-CAM-CAP-HAT + 5169 7 3232 3226 3227 3228 # CTT-CAT-CAO-CAM + 5170 3 3231 3226 3227 3228 # CAO-CAT-CAO-CAM + 5171 5 3231 3230 3229 3228 # CAO-CAM-CAP-CAM + 5172 8 3228 3229 3230 3236 # CAM-CAP-CAM-HAT + 5173 9 3229 3228 3227 3233 # CAP-CAM-CAO-HAT + 5174 9 3229 3230 3231 3237 # CAP-CAM-CAO-HAT + 5175 8 3230 3229 3228 3234 # CAM-CAP-CAM-HAT + 5176 7 3232 3226 3231 3230 # CTT-CAT-CAO-CAM + 5177 6 3231 3230 3229 3235 # CAO-CAM-CAP-HAT + 5178 4 3231 3226 3227 3233 # CAO-CAT-CAO-HAT + 5179 10 3232 3226 3227 3233 # CTT-CAT-CAO-HAT + 5180 10 3232 3226 3231 3237 # CTT-CAT-CAO-HAT + 5181 11 3233 3227 3228 3234 # HAT-CAO-CAM-HAT + 5182 12 3234 3228 3229 3235 # HAT-CAM-CAP-HAT + 5183 12 3236 3230 3229 3235 # HAT-CAM-CAP-HAT + 5184 11 3237 3231 3230 3236 # HAT-CAO-CAM-HAT + 5185 1 3241 3242 3243 3244 # CAT-CAO-CAM-CAP + 5186 2 3241 3242 3243 3249 # CAT-CAO-CAM-HAT + 5187 1 3241 3246 3245 3244 # CAT-CAO-CAM-CAP + 5188 2 3241 3246 3245 3251 # CAT-CAO-CAM-HAT + 5189 3 3242 3241 3246 3245 # CAO-CAT-CAO-CAM + 5190 4 3242 3241 3246 3252 # CAO-CAT-CAO-HAT + 5191 5 3242 3243 3244 3245 # CAO-CAM-CAP-CAM + 5192 6 3242 3243 3244 3250 # CAO-CAM-CAP-HAT + 5193 7 3247 3241 3242 3243 # CTT-CAT-CAO-CAM + 5194 3 3246 3241 3242 3243 # CAO-CAT-CAO-CAM + 5195 5 3246 3245 3244 3243 # CAO-CAM-CAP-CAM + 5196 8 3243 3244 3245 3251 # CAM-CAP-CAM-HAT + 5197 9 3244 3243 3242 3248 # CAP-CAM-CAO-HAT + 5198 9 3244 3245 3246 3252 # CAP-CAM-CAO-HAT + 5199 8 3245 3244 3243 3249 # CAM-CAP-CAM-HAT + 5200 7 3247 3241 3246 3245 # CTT-CAT-CAO-CAM + 5201 6 3246 3245 3244 3250 # CAO-CAM-CAP-HAT + 5202 4 3246 3241 3242 3248 # CAO-CAT-CAO-HAT + 5203 10 3247 3241 3242 3248 # CTT-CAT-CAO-HAT + 5204 10 3247 3241 3246 3252 # CTT-CAT-CAO-HAT + 5205 11 3248 3242 3243 3249 # HAT-CAO-CAM-HAT + 5206 12 3249 3243 3244 3250 # HAT-CAM-CAP-HAT + 5207 12 3251 3245 3244 3250 # HAT-CAM-CAP-HAT + 5208 11 3252 3246 3245 3251 # HAT-CAO-CAM-HAT + 5209 1 3256 3257 3258 3259 # CAT-CAO-CAM-CAP + 5210 2 3256 3257 3258 3264 # CAT-CAO-CAM-HAT + 5211 1 3256 3261 3260 3259 # CAT-CAO-CAM-CAP + 5212 2 3256 3261 3260 3266 # CAT-CAO-CAM-HAT + 5213 3 3257 3256 3261 3260 # CAO-CAT-CAO-CAM + 5214 4 3257 3256 3261 3267 # CAO-CAT-CAO-HAT + 5215 5 3257 3258 3259 3260 # CAO-CAM-CAP-CAM + 5216 6 3257 3258 3259 3265 # CAO-CAM-CAP-HAT + 5217 7 3262 3256 3257 3258 # CTT-CAT-CAO-CAM + 5218 3 3261 3256 3257 3258 # CAO-CAT-CAO-CAM + 5219 5 3261 3260 3259 3258 # CAO-CAM-CAP-CAM + 5220 8 3258 3259 3260 3266 # CAM-CAP-CAM-HAT + 5221 9 3259 3258 3257 3263 # CAP-CAM-CAO-HAT + 5222 9 3259 3260 3261 3267 # CAP-CAM-CAO-HAT + 5223 8 3260 3259 3258 3264 # CAM-CAP-CAM-HAT + 5224 7 3262 3256 3261 3260 # CTT-CAT-CAO-CAM + 5225 6 3261 3260 3259 3265 # CAO-CAM-CAP-HAT + 5226 4 3261 3256 3257 3263 # CAO-CAT-CAO-HAT + 5227 10 3262 3256 3257 3263 # CTT-CAT-CAO-HAT + 5228 10 3262 3256 3261 3267 # CTT-CAT-CAO-HAT + 5229 11 3263 3257 3258 3264 # HAT-CAO-CAM-HAT + 5230 12 3264 3258 3259 3265 # HAT-CAM-CAP-HAT + 5231 12 3266 3260 3259 3265 # HAT-CAM-CAP-HAT + 5232 11 3267 3261 3260 3266 # HAT-CAO-CAM-HAT + 5233 1 3271 3272 3273 3274 # CAT-CAO-CAM-CAP + 5234 2 3271 3272 3273 3279 # CAT-CAO-CAM-HAT + 5235 1 3271 3276 3275 3274 # CAT-CAO-CAM-CAP + 5236 2 3271 3276 3275 3281 # CAT-CAO-CAM-HAT + 5237 3 3272 3271 3276 3275 # CAO-CAT-CAO-CAM + 5238 4 3272 3271 3276 3282 # CAO-CAT-CAO-HAT + 5239 5 3272 3273 3274 3275 # CAO-CAM-CAP-CAM + 5240 6 3272 3273 3274 3280 # CAO-CAM-CAP-HAT + 5241 7 3277 3271 3272 3273 # CTT-CAT-CAO-CAM + 5242 3 3276 3271 3272 3273 # CAO-CAT-CAO-CAM + 5243 5 3276 3275 3274 3273 # CAO-CAM-CAP-CAM + 5244 8 3273 3274 3275 3281 # CAM-CAP-CAM-HAT + 5245 9 3274 3273 3272 3278 # CAP-CAM-CAO-HAT + 5246 9 3274 3275 3276 3282 # CAP-CAM-CAO-HAT + 5247 8 3275 3274 3273 3279 # CAM-CAP-CAM-HAT + 5248 7 3277 3271 3276 3275 # CTT-CAT-CAO-CAM + 5249 6 3276 3275 3274 3280 # CAO-CAM-CAP-HAT + 5250 4 3276 3271 3272 3278 # CAO-CAT-CAO-HAT + 5251 10 3277 3271 3272 3278 # CTT-CAT-CAO-HAT + 5252 10 3277 3271 3276 3282 # CTT-CAT-CAO-HAT + 5253 11 3278 3272 3273 3279 # HAT-CAO-CAM-HAT + 5254 12 3279 3273 3274 3280 # HAT-CAM-CAP-HAT + 5255 12 3281 3275 3274 3280 # HAT-CAM-CAP-HAT + 5256 11 3282 3276 3275 3281 # HAT-CAO-CAM-HAT + 5257 1 3286 3287 3288 3289 # CAT-CAO-CAM-CAP + 5258 2 3286 3287 3288 3294 # CAT-CAO-CAM-HAT + 5259 1 3286 3291 3290 3289 # CAT-CAO-CAM-CAP + 5260 2 3286 3291 3290 3296 # CAT-CAO-CAM-HAT + 5261 3 3287 3286 3291 3290 # CAO-CAT-CAO-CAM + 5262 4 3287 3286 3291 3297 # CAO-CAT-CAO-HAT + 5263 5 3287 3288 3289 3290 # CAO-CAM-CAP-CAM + 5264 6 3287 3288 3289 3295 # CAO-CAM-CAP-HAT + 5265 7 3292 3286 3287 3288 # CTT-CAT-CAO-CAM + 5266 3 3291 3286 3287 3288 # CAO-CAT-CAO-CAM + 5267 5 3291 3290 3289 3288 # CAO-CAM-CAP-CAM + 5268 8 3288 3289 3290 3296 # CAM-CAP-CAM-HAT + 5269 9 3289 3288 3287 3293 # CAP-CAM-CAO-HAT + 5270 9 3289 3290 3291 3297 # CAP-CAM-CAO-HAT + 5271 8 3290 3289 3288 3294 # CAM-CAP-CAM-HAT + 5272 7 3292 3286 3291 3290 # CTT-CAT-CAO-CAM + 5273 6 3291 3290 3289 3295 # CAO-CAM-CAP-HAT + 5274 4 3291 3286 3287 3293 # CAO-CAT-CAO-HAT + 5275 10 3292 3286 3287 3293 # CTT-CAT-CAO-HAT + 5276 10 3292 3286 3291 3297 # CTT-CAT-CAO-HAT + 5277 11 3293 3287 3288 3294 # HAT-CAO-CAM-HAT + 5278 12 3294 3288 3289 3295 # HAT-CAM-CAP-HAT + 5279 12 3296 3290 3289 3295 # HAT-CAM-CAP-HAT + 5280 11 3297 3291 3290 3296 # HAT-CAO-CAM-HAT + 5281 1 3301 3302 3303 3304 # CAT-CAO-CAM-CAP + 5282 2 3301 3302 3303 3309 # CAT-CAO-CAM-HAT + 5283 1 3301 3306 3305 3304 # CAT-CAO-CAM-CAP + 5284 2 3301 3306 3305 3311 # CAT-CAO-CAM-HAT + 5285 3 3302 3301 3306 3305 # CAO-CAT-CAO-CAM + 5286 4 3302 3301 3306 3312 # CAO-CAT-CAO-HAT + 5287 5 3302 3303 3304 3305 # CAO-CAM-CAP-CAM + 5288 6 3302 3303 3304 3310 # CAO-CAM-CAP-HAT + 5289 7 3307 3301 3302 3303 # CTT-CAT-CAO-CAM + 5290 3 3306 3301 3302 3303 # CAO-CAT-CAO-CAM + 5291 5 3306 3305 3304 3303 # CAO-CAM-CAP-CAM + 5292 8 3303 3304 3305 3311 # CAM-CAP-CAM-HAT + 5293 9 3304 3303 3302 3308 # CAP-CAM-CAO-HAT + 5294 9 3304 3305 3306 3312 # CAP-CAM-CAO-HAT + 5295 8 3305 3304 3303 3309 # CAM-CAP-CAM-HAT + 5296 7 3307 3301 3306 3305 # CTT-CAT-CAO-CAM + 5297 6 3306 3305 3304 3310 # CAO-CAM-CAP-HAT + 5298 4 3306 3301 3302 3308 # CAO-CAT-CAO-HAT + 5299 10 3307 3301 3302 3308 # CTT-CAT-CAO-HAT + 5300 10 3307 3301 3306 3312 # CTT-CAT-CAO-HAT + 5301 11 3308 3302 3303 3309 # HAT-CAO-CAM-HAT + 5302 12 3309 3303 3304 3310 # HAT-CAM-CAP-HAT + 5303 12 3311 3305 3304 3310 # HAT-CAM-CAP-HAT + 5304 11 3312 3306 3305 3311 # HAT-CAO-CAM-HAT + 5305 1 3316 3317 3318 3319 # CAT-CAO-CAM-CAP + 5306 2 3316 3317 3318 3324 # CAT-CAO-CAM-HAT + 5307 1 3316 3321 3320 3319 # CAT-CAO-CAM-CAP + 5308 2 3316 3321 3320 3326 # CAT-CAO-CAM-HAT + 5309 3 3317 3316 3321 3320 # CAO-CAT-CAO-CAM + 5310 4 3317 3316 3321 3327 # CAO-CAT-CAO-HAT + 5311 5 3317 3318 3319 3320 # CAO-CAM-CAP-CAM + 5312 6 3317 3318 3319 3325 # CAO-CAM-CAP-HAT + 5313 7 3322 3316 3317 3318 # CTT-CAT-CAO-CAM + 5314 3 3321 3316 3317 3318 # CAO-CAT-CAO-CAM + 5315 5 3321 3320 3319 3318 # CAO-CAM-CAP-CAM + 5316 8 3318 3319 3320 3326 # CAM-CAP-CAM-HAT + 5317 9 3319 3318 3317 3323 # CAP-CAM-CAO-HAT + 5318 9 3319 3320 3321 3327 # CAP-CAM-CAO-HAT + 5319 8 3320 3319 3318 3324 # CAM-CAP-CAM-HAT + 5320 7 3322 3316 3321 3320 # CTT-CAT-CAO-CAM + 5321 6 3321 3320 3319 3325 # CAO-CAM-CAP-HAT + 5322 4 3321 3316 3317 3323 # CAO-CAT-CAO-HAT + 5323 10 3322 3316 3317 3323 # CTT-CAT-CAO-HAT + 5324 10 3322 3316 3321 3327 # CTT-CAT-CAO-HAT + 5325 11 3323 3317 3318 3324 # HAT-CAO-CAM-HAT + 5326 12 3324 3318 3319 3325 # HAT-CAM-CAP-HAT + 5327 12 3326 3320 3319 3325 # HAT-CAM-CAP-HAT + 5328 11 3327 3321 3320 3326 # HAT-CAO-CAM-HAT + 5329 1 3331 3332 3333 3334 # CAT-CAO-CAM-CAP + 5330 2 3331 3332 3333 3339 # CAT-CAO-CAM-HAT + 5331 1 3331 3336 3335 3334 # CAT-CAO-CAM-CAP + 5332 2 3331 3336 3335 3341 # CAT-CAO-CAM-HAT + 5333 3 3332 3331 3336 3335 # CAO-CAT-CAO-CAM + 5334 4 3332 3331 3336 3342 # CAO-CAT-CAO-HAT + 5335 5 3332 3333 3334 3335 # CAO-CAM-CAP-CAM + 5336 6 3332 3333 3334 3340 # CAO-CAM-CAP-HAT + 5337 7 3337 3331 3332 3333 # CTT-CAT-CAO-CAM + 5338 3 3336 3331 3332 3333 # CAO-CAT-CAO-CAM + 5339 5 3336 3335 3334 3333 # CAO-CAM-CAP-CAM + 5340 8 3333 3334 3335 3341 # CAM-CAP-CAM-HAT + 5341 9 3334 3333 3332 3338 # CAP-CAM-CAO-HAT + 5342 9 3334 3335 3336 3342 # CAP-CAM-CAO-HAT + 5343 8 3335 3334 3333 3339 # CAM-CAP-CAM-HAT + 5344 7 3337 3331 3336 3335 # CTT-CAT-CAO-CAM + 5345 6 3336 3335 3334 3340 # CAO-CAM-CAP-HAT + 5346 4 3336 3331 3332 3338 # CAO-CAT-CAO-HAT + 5347 10 3337 3331 3332 3338 # CTT-CAT-CAO-HAT + 5348 10 3337 3331 3336 3342 # CTT-CAT-CAO-HAT + 5349 11 3338 3332 3333 3339 # HAT-CAO-CAM-HAT + 5350 12 3339 3333 3334 3340 # HAT-CAM-CAP-HAT + 5351 12 3341 3335 3334 3340 # HAT-CAM-CAP-HAT + 5352 11 3342 3336 3335 3341 # HAT-CAO-CAM-HAT + 5353 1 3346 3347 3348 3349 # CAT-CAO-CAM-CAP + 5354 2 3346 3347 3348 3354 # CAT-CAO-CAM-HAT + 5355 1 3346 3351 3350 3349 # CAT-CAO-CAM-CAP + 5356 2 3346 3351 3350 3356 # CAT-CAO-CAM-HAT + 5357 3 3347 3346 3351 3350 # CAO-CAT-CAO-CAM + 5358 4 3347 3346 3351 3357 # CAO-CAT-CAO-HAT + 5359 5 3347 3348 3349 3350 # CAO-CAM-CAP-CAM + 5360 6 3347 3348 3349 3355 # CAO-CAM-CAP-HAT + 5361 7 3352 3346 3347 3348 # CTT-CAT-CAO-CAM + 5362 3 3351 3346 3347 3348 # CAO-CAT-CAO-CAM + 5363 5 3351 3350 3349 3348 # CAO-CAM-CAP-CAM + 5364 8 3348 3349 3350 3356 # CAM-CAP-CAM-HAT + 5365 9 3349 3348 3347 3353 # CAP-CAM-CAO-HAT + 5366 9 3349 3350 3351 3357 # CAP-CAM-CAO-HAT + 5367 8 3350 3349 3348 3354 # CAM-CAP-CAM-HAT + 5368 7 3352 3346 3351 3350 # CTT-CAT-CAO-CAM + 5369 6 3351 3350 3349 3355 # CAO-CAM-CAP-HAT + 5370 4 3351 3346 3347 3353 # CAO-CAT-CAO-HAT + 5371 10 3352 3346 3347 3353 # CTT-CAT-CAO-HAT + 5372 10 3352 3346 3351 3357 # CTT-CAT-CAO-HAT + 5373 11 3353 3347 3348 3354 # HAT-CAO-CAM-HAT + 5374 12 3354 3348 3349 3355 # HAT-CAM-CAP-HAT + 5375 12 3356 3350 3349 3355 # HAT-CAM-CAP-HAT + 5376 11 3357 3351 3350 3356 # HAT-CAO-CAM-HAT + 5377 1 3361 3362 3363 3364 # CAT-CAO-CAM-CAP + 5378 2 3361 3362 3363 3369 # CAT-CAO-CAM-HAT + 5379 1 3361 3366 3365 3364 # CAT-CAO-CAM-CAP + 5380 2 3361 3366 3365 3371 # CAT-CAO-CAM-HAT + 5381 3 3362 3361 3366 3365 # CAO-CAT-CAO-CAM + 5382 4 3362 3361 3366 3372 # CAO-CAT-CAO-HAT + 5383 5 3362 3363 3364 3365 # CAO-CAM-CAP-CAM + 5384 6 3362 3363 3364 3370 # CAO-CAM-CAP-HAT + 5385 7 3367 3361 3362 3363 # CTT-CAT-CAO-CAM + 5386 3 3366 3361 3362 3363 # CAO-CAT-CAO-CAM + 5387 5 3366 3365 3364 3363 # CAO-CAM-CAP-CAM + 5388 8 3363 3364 3365 3371 # CAM-CAP-CAM-HAT + 5389 9 3364 3363 3362 3368 # CAP-CAM-CAO-HAT + 5390 9 3364 3365 3366 3372 # CAP-CAM-CAO-HAT + 5391 8 3365 3364 3363 3369 # CAM-CAP-CAM-HAT + 5392 7 3367 3361 3366 3365 # CTT-CAT-CAO-CAM + 5393 6 3366 3365 3364 3370 # CAO-CAM-CAP-HAT + 5394 4 3366 3361 3362 3368 # CAO-CAT-CAO-HAT + 5395 10 3367 3361 3362 3368 # CTT-CAT-CAO-HAT + 5396 10 3367 3361 3366 3372 # CTT-CAT-CAO-HAT + 5397 11 3368 3362 3363 3369 # HAT-CAO-CAM-HAT + 5398 12 3369 3363 3364 3370 # HAT-CAM-CAP-HAT + 5399 12 3371 3365 3364 3370 # HAT-CAM-CAP-HAT + 5400 11 3372 3366 3365 3371 # HAT-CAO-CAM-HAT + 5401 1 3376 3377 3378 3379 # CAT-CAO-CAM-CAP + 5402 2 3376 3377 3378 3384 # CAT-CAO-CAM-HAT + 5403 1 3376 3381 3380 3379 # CAT-CAO-CAM-CAP + 5404 2 3376 3381 3380 3386 # CAT-CAO-CAM-HAT + 5405 3 3377 3376 3381 3380 # CAO-CAT-CAO-CAM + 5406 4 3377 3376 3381 3387 # CAO-CAT-CAO-HAT + 5407 5 3377 3378 3379 3380 # CAO-CAM-CAP-CAM + 5408 6 3377 3378 3379 3385 # CAO-CAM-CAP-HAT + 5409 7 3382 3376 3377 3378 # CTT-CAT-CAO-CAM + 5410 3 3381 3376 3377 3378 # CAO-CAT-CAO-CAM + 5411 5 3381 3380 3379 3378 # CAO-CAM-CAP-CAM + 5412 8 3378 3379 3380 3386 # CAM-CAP-CAM-HAT + 5413 9 3379 3378 3377 3383 # CAP-CAM-CAO-HAT + 5414 9 3379 3380 3381 3387 # CAP-CAM-CAO-HAT + 5415 8 3380 3379 3378 3384 # CAM-CAP-CAM-HAT + 5416 7 3382 3376 3381 3380 # CTT-CAT-CAO-CAM + 5417 6 3381 3380 3379 3385 # CAO-CAM-CAP-HAT + 5418 4 3381 3376 3377 3383 # CAO-CAT-CAO-HAT + 5419 10 3382 3376 3377 3383 # CTT-CAT-CAO-HAT + 5420 10 3382 3376 3381 3387 # CTT-CAT-CAO-HAT + 5421 11 3383 3377 3378 3384 # HAT-CAO-CAM-HAT + 5422 12 3384 3378 3379 3385 # HAT-CAM-CAP-HAT + 5423 12 3386 3380 3379 3385 # HAT-CAM-CAP-HAT + 5424 11 3387 3381 3380 3386 # HAT-CAO-CAM-HAT + 5425 1 3391 3392 3393 3394 # CAT-CAO-CAM-CAP + 5426 2 3391 3392 3393 3399 # CAT-CAO-CAM-HAT + 5427 1 3391 3396 3395 3394 # CAT-CAO-CAM-CAP + 5428 2 3391 3396 3395 3401 # CAT-CAO-CAM-HAT + 5429 3 3392 3391 3396 3395 # CAO-CAT-CAO-CAM + 5430 4 3392 3391 3396 3402 # CAO-CAT-CAO-HAT + 5431 5 3392 3393 3394 3395 # CAO-CAM-CAP-CAM + 5432 6 3392 3393 3394 3400 # CAO-CAM-CAP-HAT + 5433 7 3397 3391 3392 3393 # CTT-CAT-CAO-CAM + 5434 3 3396 3391 3392 3393 # CAO-CAT-CAO-CAM + 5435 5 3396 3395 3394 3393 # CAO-CAM-CAP-CAM + 5436 8 3393 3394 3395 3401 # CAM-CAP-CAM-HAT + 5437 9 3394 3393 3392 3398 # CAP-CAM-CAO-HAT + 5438 9 3394 3395 3396 3402 # CAP-CAM-CAO-HAT + 5439 8 3395 3394 3393 3399 # CAM-CAP-CAM-HAT + 5440 7 3397 3391 3396 3395 # CTT-CAT-CAO-CAM + 5441 6 3396 3395 3394 3400 # CAO-CAM-CAP-HAT + 5442 4 3396 3391 3392 3398 # CAO-CAT-CAO-HAT + 5443 10 3397 3391 3392 3398 # CTT-CAT-CAO-HAT + 5444 10 3397 3391 3396 3402 # CTT-CAT-CAO-HAT + 5445 11 3398 3392 3393 3399 # HAT-CAO-CAM-HAT + 5446 12 3399 3393 3394 3400 # HAT-CAM-CAP-HAT + 5447 12 3401 3395 3394 3400 # HAT-CAM-CAP-HAT + 5448 11 3402 3396 3395 3401 # HAT-CAO-CAM-HAT + 5449 1 3406 3407 3408 3409 # CAT-CAO-CAM-CAP + 5450 2 3406 3407 3408 3414 # CAT-CAO-CAM-HAT + 5451 1 3406 3411 3410 3409 # CAT-CAO-CAM-CAP + 5452 2 3406 3411 3410 3416 # CAT-CAO-CAM-HAT + 5453 3 3407 3406 3411 3410 # CAO-CAT-CAO-CAM + 5454 4 3407 3406 3411 3417 # CAO-CAT-CAO-HAT + 5455 5 3407 3408 3409 3410 # CAO-CAM-CAP-CAM + 5456 6 3407 3408 3409 3415 # CAO-CAM-CAP-HAT + 5457 7 3412 3406 3407 3408 # CTT-CAT-CAO-CAM + 5458 3 3411 3406 3407 3408 # CAO-CAT-CAO-CAM + 5459 5 3411 3410 3409 3408 # CAO-CAM-CAP-CAM + 5460 8 3408 3409 3410 3416 # CAM-CAP-CAM-HAT + 5461 9 3409 3408 3407 3413 # CAP-CAM-CAO-HAT + 5462 9 3409 3410 3411 3417 # CAP-CAM-CAO-HAT + 5463 8 3410 3409 3408 3414 # CAM-CAP-CAM-HAT + 5464 7 3412 3406 3411 3410 # CTT-CAT-CAO-CAM + 5465 6 3411 3410 3409 3415 # CAO-CAM-CAP-HAT + 5466 4 3411 3406 3407 3413 # CAO-CAT-CAO-HAT + 5467 10 3412 3406 3407 3413 # CTT-CAT-CAO-HAT + 5468 10 3412 3406 3411 3417 # CTT-CAT-CAO-HAT + 5469 11 3413 3407 3408 3414 # HAT-CAO-CAM-HAT + 5470 12 3414 3408 3409 3415 # HAT-CAM-CAP-HAT + 5471 12 3416 3410 3409 3415 # HAT-CAM-CAP-HAT + 5472 11 3417 3411 3410 3416 # HAT-CAO-CAM-HAT + 5473 1 3421 3422 3423 3424 # CAT-CAO-CAM-CAP + 5474 2 3421 3422 3423 3429 # CAT-CAO-CAM-HAT + 5475 1 3421 3426 3425 3424 # CAT-CAO-CAM-CAP + 5476 2 3421 3426 3425 3431 # CAT-CAO-CAM-HAT + 5477 3 3422 3421 3426 3425 # CAO-CAT-CAO-CAM + 5478 4 3422 3421 3426 3432 # CAO-CAT-CAO-HAT + 5479 5 3422 3423 3424 3425 # CAO-CAM-CAP-CAM + 5480 6 3422 3423 3424 3430 # CAO-CAM-CAP-HAT + 5481 7 3427 3421 3422 3423 # CTT-CAT-CAO-CAM + 5482 3 3426 3421 3422 3423 # CAO-CAT-CAO-CAM + 5483 5 3426 3425 3424 3423 # CAO-CAM-CAP-CAM + 5484 8 3423 3424 3425 3431 # CAM-CAP-CAM-HAT + 5485 9 3424 3423 3422 3428 # CAP-CAM-CAO-HAT + 5486 9 3424 3425 3426 3432 # CAP-CAM-CAO-HAT + 5487 8 3425 3424 3423 3429 # CAM-CAP-CAM-HAT + 5488 7 3427 3421 3426 3425 # CTT-CAT-CAO-CAM + 5489 6 3426 3425 3424 3430 # CAO-CAM-CAP-HAT + 5490 4 3426 3421 3422 3428 # CAO-CAT-CAO-HAT + 5491 10 3427 3421 3422 3428 # CTT-CAT-CAO-HAT + 5492 10 3427 3421 3426 3432 # CTT-CAT-CAO-HAT + 5493 11 3428 3422 3423 3429 # HAT-CAO-CAM-HAT + 5494 12 3429 3423 3424 3430 # HAT-CAM-CAP-HAT + 5495 12 3431 3425 3424 3430 # HAT-CAM-CAP-HAT + 5496 11 3432 3426 3425 3431 # HAT-CAO-CAM-HAT + 5497 1 3436 3437 3438 3439 # CAT-CAO-CAM-CAP + 5498 2 3436 3437 3438 3444 # CAT-CAO-CAM-HAT + 5499 1 3436 3441 3440 3439 # CAT-CAO-CAM-CAP + 5500 2 3436 3441 3440 3446 # CAT-CAO-CAM-HAT + 5501 3 3437 3436 3441 3440 # CAO-CAT-CAO-CAM + 5502 4 3437 3436 3441 3447 # CAO-CAT-CAO-HAT + 5503 5 3437 3438 3439 3440 # CAO-CAM-CAP-CAM + 5504 6 3437 3438 3439 3445 # CAO-CAM-CAP-HAT + 5505 7 3442 3436 3437 3438 # CTT-CAT-CAO-CAM + 5506 3 3441 3436 3437 3438 # CAO-CAT-CAO-CAM + 5507 5 3441 3440 3439 3438 # CAO-CAM-CAP-CAM + 5508 8 3438 3439 3440 3446 # CAM-CAP-CAM-HAT + 5509 9 3439 3438 3437 3443 # CAP-CAM-CAO-HAT + 5510 9 3439 3440 3441 3447 # CAP-CAM-CAO-HAT + 5511 8 3440 3439 3438 3444 # CAM-CAP-CAM-HAT + 5512 7 3442 3436 3441 3440 # CTT-CAT-CAO-CAM + 5513 6 3441 3440 3439 3445 # CAO-CAM-CAP-HAT + 5514 4 3441 3436 3437 3443 # CAO-CAT-CAO-HAT + 5515 10 3442 3436 3437 3443 # CTT-CAT-CAO-HAT + 5516 10 3442 3436 3441 3447 # CTT-CAT-CAO-HAT + 5517 11 3443 3437 3438 3444 # HAT-CAO-CAM-HAT + 5518 12 3444 3438 3439 3445 # HAT-CAM-CAP-HAT + 5519 12 3446 3440 3439 3445 # HAT-CAM-CAP-HAT + 5520 11 3447 3441 3440 3446 # HAT-CAO-CAM-HAT + 5521 1 3451 3452 3453 3454 # CAT-CAO-CAM-CAP + 5522 2 3451 3452 3453 3459 # CAT-CAO-CAM-HAT + 5523 1 3451 3456 3455 3454 # CAT-CAO-CAM-CAP + 5524 2 3451 3456 3455 3461 # CAT-CAO-CAM-HAT + 5525 3 3452 3451 3456 3455 # CAO-CAT-CAO-CAM + 5526 4 3452 3451 3456 3462 # CAO-CAT-CAO-HAT + 5527 5 3452 3453 3454 3455 # CAO-CAM-CAP-CAM + 5528 6 3452 3453 3454 3460 # CAO-CAM-CAP-HAT + 5529 7 3457 3451 3452 3453 # CTT-CAT-CAO-CAM + 5530 3 3456 3451 3452 3453 # CAO-CAT-CAO-CAM + 5531 5 3456 3455 3454 3453 # CAO-CAM-CAP-CAM + 5532 8 3453 3454 3455 3461 # CAM-CAP-CAM-HAT + 5533 9 3454 3453 3452 3458 # CAP-CAM-CAO-HAT + 5534 9 3454 3455 3456 3462 # CAP-CAM-CAO-HAT + 5535 8 3455 3454 3453 3459 # CAM-CAP-CAM-HAT + 5536 7 3457 3451 3456 3455 # CTT-CAT-CAO-CAM + 5537 6 3456 3455 3454 3460 # CAO-CAM-CAP-HAT + 5538 4 3456 3451 3452 3458 # CAO-CAT-CAO-HAT + 5539 10 3457 3451 3452 3458 # CTT-CAT-CAO-HAT + 5540 10 3457 3451 3456 3462 # CTT-CAT-CAO-HAT + 5541 11 3458 3452 3453 3459 # HAT-CAO-CAM-HAT + 5542 12 3459 3453 3454 3460 # HAT-CAM-CAP-HAT + 5543 12 3461 3455 3454 3460 # HAT-CAM-CAP-HAT + 5544 11 3462 3456 3455 3461 # HAT-CAO-CAM-HAT + 5545 1 3466 3467 3468 3469 # CAT-CAO-CAM-CAP + 5546 2 3466 3467 3468 3474 # CAT-CAO-CAM-HAT + 5547 1 3466 3471 3470 3469 # CAT-CAO-CAM-CAP + 5548 2 3466 3471 3470 3476 # CAT-CAO-CAM-HAT + 5549 3 3467 3466 3471 3470 # CAO-CAT-CAO-CAM + 5550 4 3467 3466 3471 3477 # CAO-CAT-CAO-HAT + 5551 5 3467 3468 3469 3470 # CAO-CAM-CAP-CAM + 5552 6 3467 3468 3469 3475 # CAO-CAM-CAP-HAT + 5553 7 3472 3466 3467 3468 # CTT-CAT-CAO-CAM + 5554 3 3471 3466 3467 3468 # CAO-CAT-CAO-CAM + 5555 5 3471 3470 3469 3468 # CAO-CAM-CAP-CAM + 5556 8 3468 3469 3470 3476 # CAM-CAP-CAM-HAT + 5557 9 3469 3468 3467 3473 # CAP-CAM-CAO-HAT + 5558 9 3469 3470 3471 3477 # CAP-CAM-CAO-HAT + 5559 8 3470 3469 3468 3474 # CAM-CAP-CAM-HAT + 5560 7 3472 3466 3471 3470 # CTT-CAT-CAO-CAM + 5561 6 3471 3470 3469 3475 # CAO-CAM-CAP-HAT + 5562 4 3471 3466 3467 3473 # CAO-CAT-CAO-HAT + 5563 10 3472 3466 3467 3473 # CTT-CAT-CAO-HAT + 5564 10 3472 3466 3471 3477 # CTT-CAT-CAO-HAT + 5565 11 3473 3467 3468 3474 # HAT-CAO-CAM-HAT + 5566 12 3474 3468 3469 3475 # HAT-CAM-CAP-HAT + 5567 12 3476 3470 3469 3475 # HAT-CAM-CAP-HAT + 5568 11 3477 3471 3470 3476 # HAT-CAO-CAM-HAT + 5569 1 3481 3482 3483 3484 # CAT-CAO-CAM-CAP + 5570 2 3481 3482 3483 3489 # CAT-CAO-CAM-HAT + 5571 1 3481 3486 3485 3484 # CAT-CAO-CAM-CAP + 5572 2 3481 3486 3485 3491 # CAT-CAO-CAM-HAT + 5573 3 3482 3481 3486 3485 # CAO-CAT-CAO-CAM + 5574 4 3482 3481 3486 3492 # CAO-CAT-CAO-HAT + 5575 5 3482 3483 3484 3485 # CAO-CAM-CAP-CAM + 5576 6 3482 3483 3484 3490 # CAO-CAM-CAP-HAT + 5577 7 3487 3481 3482 3483 # CTT-CAT-CAO-CAM + 5578 3 3486 3481 3482 3483 # CAO-CAT-CAO-CAM + 5579 5 3486 3485 3484 3483 # CAO-CAM-CAP-CAM + 5580 8 3483 3484 3485 3491 # CAM-CAP-CAM-HAT + 5581 9 3484 3483 3482 3488 # CAP-CAM-CAO-HAT + 5582 9 3484 3485 3486 3492 # CAP-CAM-CAO-HAT + 5583 8 3485 3484 3483 3489 # CAM-CAP-CAM-HAT + 5584 7 3487 3481 3486 3485 # CTT-CAT-CAO-CAM + 5585 6 3486 3485 3484 3490 # CAO-CAM-CAP-HAT + 5586 4 3486 3481 3482 3488 # CAO-CAT-CAO-HAT + 5587 10 3487 3481 3482 3488 # CTT-CAT-CAO-HAT + 5588 10 3487 3481 3486 3492 # CTT-CAT-CAO-HAT + 5589 11 3488 3482 3483 3489 # HAT-CAO-CAM-HAT + 5590 12 3489 3483 3484 3490 # HAT-CAM-CAP-HAT + 5591 12 3491 3485 3484 3490 # HAT-CAM-CAP-HAT + 5592 11 3492 3486 3485 3491 # HAT-CAO-CAM-HAT + 5593 1 3496 3497 3498 3499 # CAT-CAO-CAM-CAP + 5594 2 3496 3497 3498 3504 # CAT-CAO-CAM-HAT + 5595 1 3496 3501 3500 3499 # CAT-CAO-CAM-CAP + 5596 2 3496 3501 3500 3506 # CAT-CAO-CAM-HAT + 5597 3 3497 3496 3501 3500 # CAO-CAT-CAO-CAM + 5598 4 3497 3496 3501 3507 # CAO-CAT-CAO-HAT + 5599 5 3497 3498 3499 3500 # CAO-CAM-CAP-CAM + 5600 6 3497 3498 3499 3505 # CAO-CAM-CAP-HAT + 5601 7 3502 3496 3497 3498 # CTT-CAT-CAO-CAM + 5602 3 3501 3496 3497 3498 # CAO-CAT-CAO-CAM + 5603 5 3501 3500 3499 3498 # CAO-CAM-CAP-CAM + 5604 8 3498 3499 3500 3506 # CAM-CAP-CAM-HAT + 5605 9 3499 3498 3497 3503 # CAP-CAM-CAO-HAT + 5606 9 3499 3500 3501 3507 # CAP-CAM-CAO-HAT + 5607 8 3500 3499 3498 3504 # CAM-CAP-CAM-HAT + 5608 7 3502 3496 3501 3500 # CTT-CAT-CAO-CAM + 5609 6 3501 3500 3499 3505 # CAO-CAM-CAP-HAT + 5610 4 3501 3496 3497 3503 # CAO-CAT-CAO-HAT + 5611 10 3502 3496 3497 3503 # CTT-CAT-CAO-HAT + 5612 10 3502 3496 3501 3507 # CTT-CAT-CAO-HAT + 5613 11 3503 3497 3498 3504 # HAT-CAO-CAM-HAT + 5614 12 3504 3498 3499 3505 # HAT-CAM-CAP-HAT + 5615 12 3506 3500 3499 3505 # HAT-CAM-CAP-HAT + 5616 11 3507 3501 3500 3506 # HAT-CAO-CAM-HAT + 5617 1 3511 3512 3513 3514 # CAT-CAO-CAM-CAP + 5618 2 3511 3512 3513 3519 # CAT-CAO-CAM-HAT + 5619 1 3511 3516 3515 3514 # CAT-CAO-CAM-CAP + 5620 2 3511 3516 3515 3521 # CAT-CAO-CAM-HAT + 5621 3 3512 3511 3516 3515 # CAO-CAT-CAO-CAM + 5622 4 3512 3511 3516 3522 # CAO-CAT-CAO-HAT + 5623 5 3512 3513 3514 3515 # CAO-CAM-CAP-CAM + 5624 6 3512 3513 3514 3520 # CAO-CAM-CAP-HAT + 5625 7 3517 3511 3512 3513 # CTT-CAT-CAO-CAM + 5626 3 3516 3511 3512 3513 # CAO-CAT-CAO-CAM + 5627 5 3516 3515 3514 3513 # CAO-CAM-CAP-CAM + 5628 8 3513 3514 3515 3521 # CAM-CAP-CAM-HAT + 5629 9 3514 3513 3512 3518 # CAP-CAM-CAO-HAT + 5630 9 3514 3515 3516 3522 # CAP-CAM-CAO-HAT + 5631 8 3515 3514 3513 3519 # CAM-CAP-CAM-HAT + 5632 7 3517 3511 3516 3515 # CTT-CAT-CAO-CAM + 5633 6 3516 3515 3514 3520 # CAO-CAM-CAP-HAT + 5634 4 3516 3511 3512 3518 # CAO-CAT-CAO-HAT + 5635 10 3517 3511 3512 3518 # CTT-CAT-CAO-HAT + 5636 10 3517 3511 3516 3522 # CTT-CAT-CAO-HAT + 5637 11 3518 3512 3513 3519 # HAT-CAO-CAM-HAT + 5638 12 3519 3513 3514 3520 # HAT-CAM-CAP-HAT + 5639 12 3521 3515 3514 3520 # HAT-CAM-CAP-HAT + 5640 11 3522 3516 3515 3521 # HAT-CAO-CAM-HAT + 5641 1 3526 3527 3528 3529 # CAT-CAO-CAM-CAP + 5642 2 3526 3527 3528 3534 # CAT-CAO-CAM-HAT + 5643 1 3526 3531 3530 3529 # CAT-CAO-CAM-CAP + 5644 2 3526 3531 3530 3536 # CAT-CAO-CAM-HAT + 5645 3 3527 3526 3531 3530 # CAO-CAT-CAO-CAM + 5646 4 3527 3526 3531 3537 # CAO-CAT-CAO-HAT + 5647 5 3527 3528 3529 3530 # CAO-CAM-CAP-CAM + 5648 6 3527 3528 3529 3535 # CAO-CAM-CAP-HAT + 5649 7 3532 3526 3527 3528 # CTT-CAT-CAO-CAM + 5650 3 3531 3526 3527 3528 # CAO-CAT-CAO-CAM + 5651 5 3531 3530 3529 3528 # CAO-CAM-CAP-CAM + 5652 8 3528 3529 3530 3536 # CAM-CAP-CAM-HAT + 5653 9 3529 3528 3527 3533 # CAP-CAM-CAO-HAT + 5654 9 3529 3530 3531 3537 # CAP-CAM-CAO-HAT + 5655 8 3530 3529 3528 3534 # CAM-CAP-CAM-HAT + 5656 7 3532 3526 3531 3530 # CTT-CAT-CAO-CAM + 5657 6 3531 3530 3529 3535 # CAO-CAM-CAP-HAT + 5658 4 3531 3526 3527 3533 # CAO-CAT-CAO-HAT + 5659 10 3532 3526 3527 3533 # CTT-CAT-CAO-HAT + 5660 10 3532 3526 3531 3537 # CTT-CAT-CAO-HAT + 5661 11 3533 3527 3528 3534 # HAT-CAO-CAM-HAT + 5662 12 3534 3528 3529 3535 # HAT-CAM-CAP-HAT + 5663 12 3536 3530 3529 3535 # HAT-CAM-CAP-HAT + 5664 11 3537 3531 3530 3536 # HAT-CAO-CAM-HAT + 5665 1 3541 3542 3543 3544 # CAT-CAO-CAM-CAP + 5666 2 3541 3542 3543 3549 # CAT-CAO-CAM-HAT + 5667 1 3541 3546 3545 3544 # CAT-CAO-CAM-CAP + 5668 2 3541 3546 3545 3551 # CAT-CAO-CAM-HAT + 5669 3 3542 3541 3546 3545 # CAO-CAT-CAO-CAM + 5670 4 3542 3541 3546 3552 # CAO-CAT-CAO-HAT + 5671 5 3542 3543 3544 3545 # CAO-CAM-CAP-CAM + 5672 6 3542 3543 3544 3550 # CAO-CAM-CAP-HAT + 5673 7 3547 3541 3542 3543 # CTT-CAT-CAO-CAM + 5674 3 3546 3541 3542 3543 # CAO-CAT-CAO-CAM + 5675 5 3546 3545 3544 3543 # CAO-CAM-CAP-CAM + 5676 8 3543 3544 3545 3551 # CAM-CAP-CAM-HAT + 5677 9 3544 3543 3542 3548 # CAP-CAM-CAO-HAT + 5678 9 3544 3545 3546 3552 # CAP-CAM-CAO-HAT + 5679 8 3545 3544 3543 3549 # CAM-CAP-CAM-HAT + 5680 7 3547 3541 3546 3545 # CTT-CAT-CAO-CAM + 5681 6 3546 3545 3544 3550 # CAO-CAM-CAP-HAT + 5682 4 3546 3541 3542 3548 # CAO-CAT-CAO-HAT + 5683 10 3547 3541 3542 3548 # CTT-CAT-CAO-HAT + 5684 10 3547 3541 3546 3552 # CTT-CAT-CAO-HAT + 5685 11 3548 3542 3543 3549 # HAT-CAO-CAM-HAT + 5686 12 3549 3543 3544 3550 # HAT-CAM-CAP-HAT + 5687 12 3551 3545 3544 3550 # HAT-CAM-CAP-HAT + 5688 11 3552 3546 3545 3551 # HAT-CAO-CAM-HAT + 5689 1 3556 3557 3558 3559 # CAT-CAO-CAM-CAP + 5690 2 3556 3557 3558 3564 # CAT-CAO-CAM-HAT + 5691 1 3556 3561 3560 3559 # CAT-CAO-CAM-CAP + 5692 2 3556 3561 3560 3566 # CAT-CAO-CAM-HAT + 5693 3 3557 3556 3561 3560 # CAO-CAT-CAO-CAM + 5694 4 3557 3556 3561 3567 # CAO-CAT-CAO-HAT + 5695 5 3557 3558 3559 3560 # CAO-CAM-CAP-CAM + 5696 6 3557 3558 3559 3565 # CAO-CAM-CAP-HAT + 5697 7 3562 3556 3557 3558 # CTT-CAT-CAO-CAM + 5698 3 3561 3556 3557 3558 # CAO-CAT-CAO-CAM + 5699 5 3561 3560 3559 3558 # CAO-CAM-CAP-CAM + 5700 8 3558 3559 3560 3566 # CAM-CAP-CAM-HAT + 5701 9 3559 3558 3557 3563 # CAP-CAM-CAO-HAT + 5702 9 3559 3560 3561 3567 # CAP-CAM-CAO-HAT + 5703 8 3560 3559 3558 3564 # CAM-CAP-CAM-HAT + 5704 7 3562 3556 3561 3560 # CTT-CAT-CAO-CAM + 5705 6 3561 3560 3559 3565 # CAO-CAM-CAP-HAT + 5706 4 3561 3556 3557 3563 # CAO-CAT-CAO-HAT + 5707 10 3562 3556 3557 3563 # CTT-CAT-CAO-HAT + 5708 10 3562 3556 3561 3567 # CTT-CAT-CAO-HAT + 5709 11 3563 3557 3558 3564 # HAT-CAO-CAM-HAT + 5710 12 3564 3558 3559 3565 # HAT-CAM-CAP-HAT + 5711 12 3566 3560 3559 3565 # HAT-CAM-CAP-HAT + 5712 11 3567 3561 3560 3566 # HAT-CAO-CAM-HAT + 5713 1 3571 3572 3573 3574 # CAT-CAO-CAM-CAP + 5714 2 3571 3572 3573 3579 # CAT-CAO-CAM-HAT + 5715 1 3571 3576 3575 3574 # CAT-CAO-CAM-CAP + 5716 2 3571 3576 3575 3581 # CAT-CAO-CAM-HAT + 5717 3 3572 3571 3576 3575 # CAO-CAT-CAO-CAM + 5718 4 3572 3571 3576 3582 # CAO-CAT-CAO-HAT + 5719 5 3572 3573 3574 3575 # CAO-CAM-CAP-CAM + 5720 6 3572 3573 3574 3580 # CAO-CAM-CAP-HAT + 5721 7 3577 3571 3572 3573 # CTT-CAT-CAO-CAM + 5722 3 3576 3571 3572 3573 # CAO-CAT-CAO-CAM + 5723 5 3576 3575 3574 3573 # CAO-CAM-CAP-CAM + 5724 8 3573 3574 3575 3581 # CAM-CAP-CAM-HAT + 5725 9 3574 3573 3572 3578 # CAP-CAM-CAO-HAT + 5726 9 3574 3575 3576 3582 # CAP-CAM-CAO-HAT + 5727 8 3575 3574 3573 3579 # CAM-CAP-CAM-HAT + 5728 7 3577 3571 3576 3575 # CTT-CAT-CAO-CAM + 5729 6 3576 3575 3574 3580 # CAO-CAM-CAP-HAT + 5730 4 3576 3571 3572 3578 # CAO-CAT-CAO-HAT + 5731 10 3577 3571 3572 3578 # CTT-CAT-CAO-HAT + 5732 10 3577 3571 3576 3582 # CTT-CAT-CAO-HAT + 5733 11 3578 3572 3573 3579 # HAT-CAO-CAM-HAT + 5734 12 3579 3573 3574 3580 # HAT-CAM-CAP-HAT + 5735 12 3581 3575 3574 3580 # HAT-CAM-CAP-HAT + 5736 11 3582 3576 3575 3581 # HAT-CAO-CAM-HAT + 5737 1 3586 3587 3588 3589 # CAT-CAO-CAM-CAP + 5738 2 3586 3587 3588 3594 # CAT-CAO-CAM-HAT + 5739 1 3586 3591 3590 3589 # CAT-CAO-CAM-CAP + 5740 2 3586 3591 3590 3596 # CAT-CAO-CAM-HAT + 5741 3 3587 3586 3591 3590 # CAO-CAT-CAO-CAM + 5742 4 3587 3586 3591 3597 # CAO-CAT-CAO-HAT + 5743 5 3587 3588 3589 3590 # CAO-CAM-CAP-CAM + 5744 6 3587 3588 3589 3595 # CAO-CAM-CAP-HAT + 5745 7 3592 3586 3587 3588 # CTT-CAT-CAO-CAM + 5746 3 3591 3586 3587 3588 # CAO-CAT-CAO-CAM + 5747 5 3591 3590 3589 3588 # CAO-CAM-CAP-CAM + 5748 8 3588 3589 3590 3596 # CAM-CAP-CAM-HAT + 5749 9 3589 3588 3587 3593 # CAP-CAM-CAO-HAT + 5750 9 3589 3590 3591 3597 # CAP-CAM-CAO-HAT + 5751 8 3590 3589 3588 3594 # CAM-CAP-CAM-HAT + 5752 7 3592 3586 3591 3590 # CTT-CAT-CAO-CAM + 5753 6 3591 3590 3589 3595 # CAO-CAM-CAP-HAT + 5754 4 3591 3586 3587 3593 # CAO-CAT-CAO-HAT + 5755 10 3592 3586 3587 3593 # CTT-CAT-CAO-HAT + 5756 10 3592 3586 3591 3597 # CTT-CAT-CAO-HAT + 5757 11 3593 3587 3588 3594 # HAT-CAO-CAM-HAT + 5758 12 3594 3588 3589 3595 # HAT-CAM-CAP-HAT + 5759 12 3596 3590 3589 3595 # HAT-CAM-CAP-HAT + 5760 11 3597 3591 3590 3596 # HAT-CAO-CAM-HAT + 5761 1 3601 3602 3603 3604 # CAT-CAO-CAM-CAP + 5762 2 3601 3602 3603 3609 # CAT-CAO-CAM-HAT + 5763 1 3601 3606 3605 3604 # CAT-CAO-CAM-CAP + 5764 2 3601 3606 3605 3611 # CAT-CAO-CAM-HAT + 5765 3 3602 3601 3606 3605 # CAO-CAT-CAO-CAM + 5766 4 3602 3601 3606 3612 # CAO-CAT-CAO-HAT + 5767 5 3602 3603 3604 3605 # CAO-CAM-CAP-CAM + 5768 6 3602 3603 3604 3610 # CAO-CAM-CAP-HAT + 5769 7 3607 3601 3602 3603 # CTT-CAT-CAO-CAM + 5770 3 3606 3601 3602 3603 # CAO-CAT-CAO-CAM + 5771 5 3606 3605 3604 3603 # CAO-CAM-CAP-CAM + 5772 8 3603 3604 3605 3611 # CAM-CAP-CAM-HAT + 5773 9 3604 3603 3602 3608 # CAP-CAM-CAO-HAT + 5774 9 3604 3605 3606 3612 # CAP-CAM-CAO-HAT + 5775 8 3605 3604 3603 3609 # CAM-CAP-CAM-HAT + 5776 7 3607 3601 3606 3605 # CTT-CAT-CAO-CAM + 5777 6 3606 3605 3604 3610 # CAO-CAM-CAP-HAT + 5778 4 3606 3601 3602 3608 # CAO-CAT-CAO-HAT + 5779 10 3607 3601 3602 3608 # CTT-CAT-CAO-HAT + 5780 10 3607 3601 3606 3612 # CTT-CAT-CAO-HAT + 5781 11 3608 3602 3603 3609 # HAT-CAO-CAM-HAT + 5782 12 3609 3603 3604 3610 # HAT-CAM-CAP-HAT + 5783 12 3611 3605 3604 3610 # HAT-CAM-CAP-HAT + 5784 11 3612 3606 3605 3611 # HAT-CAO-CAM-HAT + 5785 1 3616 3617 3618 3619 # CAT-CAO-CAM-CAP + 5786 2 3616 3617 3618 3624 # CAT-CAO-CAM-HAT + 5787 1 3616 3621 3620 3619 # CAT-CAO-CAM-CAP + 5788 2 3616 3621 3620 3626 # CAT-CAO-CAM-HAT + 5789 3 3617 3616 3621 3620 # CAO-CAT-CAO-CAM + 5790 4 3617 3616 3621 3627 # CAO-CAT-CAO-HAT + 5791 5 3617 3618 3619 3620 # CAO-CAM-CAP-CAM + 5792 6 3617 3618 3619 3625 # CAO-CAM-CAP-HAT + 5793 7 3622 3616 3617 3618 # CTT-CAT-CAO-CAM + 5794 3 3621 3616 3617 3618 # CAO-CAT-CAO-CAM + 5795 5 3621 3620 3619 3618 # CAO-CAM-CAP-CAM + 5796 8 3618 3619 3620 3626 # CAM-CAP-CAM-HAT + 5797 9 3619 3618 3617 3623 # CAP-CAM-CAO-HAT + 5798 9 3619 3620 3621 3627 # CAP-CAM-CAO-HAT + 5799 8 3620 3619 3618 3624 # CAM-CAP-CAM-HAT + 5800 7 3622 3616 3621 3620 # CTT-CAT-CAO-CAM + 5801 6 3621 3620 3619 3625 # CAO-CAM-CAP-HAT + 5802 4 3621 3616 3617 3623 # CAO-CAT-CAO-HAT + 5803 10 3622 3616 3617 3623 # CTT-CAT-CAO-HAT + 5804 10 3622 3616 3621 3627 # CTT-CAT-CAO-HAT + 5805 11 3623 3617 3618 3624 # HAT-CAO-CAM-HAT + 5806 12 3624 3618 3619 3625 # HAT-CAM-CAP-HAT + 5807 12 3626 3620 3619 3625 # HAT-CAM-CAP-HAT + 5808 11 3627 3621 3620 3626 # HAT-CAO-CAM-HAT + 5809 1 3631 3632 3633 3634 # CAT-CAO-CAM-CAP + 5810 2 3631 3632 3633 3639 # CAT-CAO-CAM-HAT + 5811 1 3631 3636 3635 3634 # CAT-CAO-CAM-CAP + 5812 2 3631 3636 3635 3641 # CAT-CAO-CAM-HAT + 5813 3 3632 3631 3636 3635 # CAO-CAT-CAO-CAM + 5814 4 3632 3631 3636 3642 # CAO-CAT-CAO-HAT + 5815 5 3632 3633 3634 3635 # CAO-CAM-CAP-CAM + 5816 6 3632 3633 3634 3640 # CAO-CAM-CAP-HAT + 5817 7 3637 3631 3632 3633 # CTT-CAT-CAO-CAM + 5818 3 3636 3631 3632 3633 # CAO-CAT-CAO-CAM + 5819 5 3636 3635 3634 3633 # CAO-CAM-CAP-CAM + 5820 8 3633 3634 3635 3641 # CAM-CAP-CAM-HAT + 5821 9 3634 3633 3632 3638 # CAP-CAM-CAO-HAT + 5822 9 3634 3635 3636 3642 # CAP-CAM-CAO-HAT + 5823 8 3635 3634 3633 3639 # CAM-CAP-CAM-HAT + 5824 7 3637 3631 3636 3635 # CTT-CAT-CAO-CAM + 5825 6 3636 3635 3634 3640 # CAO-CAM-CAP-HAT + 5826 4 3636 3631 3632 3638 # CAO-CAT-CAO-HAT + 5827 10 3637 3631 3632 3638 # CTT-CAT-CAO-HAT + 5828 10 3637 3631 3636 3642 # CTT-CAT-CAO-HAT + 5829 11 3638 3632 3633 3639 # HAT-CAO-CAM-HAT + 5830 12 3639 3633 3634 3640 # HAT-CAM-CAP-HAT + 5831 12 3641 3635 3634 3640 # HAT-CAM-CAP-HAT + 5832 11 3642 3636 3635 3641 # HAT-CAO-CAM-HAT + 5833 1 3646 3647 3648 3649 # CAT-CAO-CAM-CAP + 5834 2 3646 3647 3648 3654 # CAT-CAO-CAM-HAT + 5835 1 3646 3651 3650 3649 # CAT-CAO-CAM-CAP + 5836 2 3646 3651 3650 3656 # CAT-CAO-CAM-HAT + 5837 3 3647 3646 3651 3650 # CAO-CAT-CAO-CAM + 5838 4 3647 3646 3651 3657 # CAO-CAT-CAO-HAT + 5839 5 3647 3648 3649 3650 # CAO-CAM-CAP-CAM + 5840 6 3647 3648 3649 3655 # CAO-CAM-CAP-HAT + 5841 7 3652 3646 3647 3648 # CTT-CAT-CAO-CAM + 5842 3 3651 3646 3647 3648 # CAO-CAT-CAO-CAM + 5843 5 3651 3650 3649 3648 # CAO-CAM-CAP-CAM + 5844 8 3648 3649 3650 3656 # CAM-CAP-CAM-HAT + 5845 9 3649 3648 3647 3653 # CAP-CAM-CAO-HAT + 5846 9 3649 3650 3651 3657 # CAP-CAM-CAO-HAT + 5847 8 3650 3649 3648 3654 # CAM-CAP-CAM-HAT + 5848 7 3652 3646 3651 3650 # CTT-CAT-CAO-CAM + 5849 6 3651 3650 3649 3655 # CAO-CAM-CAP-HAT + 5850 4 3651 3646 3647 3653 # CAO-CAT-CAO-HAT + 5851 10 3652 3646 3647 3653 # CTT-CAT-CAO-HAT + 5852 10 3652 3646 3651 3657 # CTT-CAT-CAO-HAT + 5853 11 3653 3647 3648 3654 # HAT-CAO-CAM-HAT + 5854 12 3654 3648 3649 3655 # HAT-CAM-CAP-HAT + 5855 12 3656 3650 3649 3655 # HAT-CAM-CAP-HAT + 5856 11 3657 3651 3650 3656 # HAT-CAO-CAM-HAT + 5857 1 3661 3662 3663 3664 # CAT-CAO-CAM-CAP + 5858 2 3661 3662 3663 3669 # CAT-CAO-CAM-HAT + 5859 1 3661 3666 3665 3664 # CAT-CAO-CAM-CAP + 5860 2 3661 3666 3665 3671 # CAT-CAO-CAM-HAT + 5861 3 3662 3661 3666 3665 # CAO-CAT-CAO-CAM + 5862 4 3662 3661 3666 3672 # CAO-CAT-CAO-HAT + 5863 5 3662 3663 3664 3665 # CAO-CAM-CAP-CAM + 5864 6 3662 3663 3664 3670 # CAO-CAM-CAP-HAT + 5865 7 3667 3661 3662 3663 # CTT-CAT-CAO-CAM + 5866 3 3666 3661 3662 3663 # CAO-CAT-CAO-CAM + 5867 5 3666 3665 3664 3663 # CAO-CAM-CAP-CAM + 5868 8 3663 3664 3665 3671 # CAM-CAP-CAM-HAT + 5869 9 3664 3663 3662 3668 # CAP-CAM-CAO-HAT + 5870 9 3664 3665 3666 3672 # CAP-CAM-CAO-HAT + 5871 8 3665 3664 3663 3669 # CAM-CAP-CAM-HAT + 5872 7 3667 3661 3666 3665 # CTT-CAT-CAO-CAM + 5873 6 3666 3665 3664 3670 # CAO-CAM-CAP-HAT + 5874 4 3666 3661 3662 3668 # CAO-CAT-CAO-HAT + 5875 10 3667 3661 3662 3668 # CTT-CAT-CAO-HAT + 5876 10 3667 3661 3666 3672 # CTT-CAT-CAO-HAT + 5877 11 3668 3662 3663 3669 # HAT-CAO-CAM-HAT + 5878 12 3669 3663 3664 3670 # HAT-CAM-CAP-HAT + 5879 12 3671 3665 3664 3670 # HAT-CAM-CAP-HAT + 5880 11 3672 3666 3665 3671 # HAT-CAO-CAM-HAT + 5881 1 3676 3677 3678 3679 # CAT-CAO-CAM-CAP + 5882 2 3676 3677 3678 3684 # CAT-CAO-CAM-HAT + 5883 1 3676 3681 3680 3679 # CAT-CAO-CAM-CAP + 5884 2 3676 3681 3680 3686 # CAT-CAO-CAM-HAT + 5885 3 3677 3676 3681 3680 # CAO-CAT-CAO-CAM + 5886 4 3677 3676 3681 3687 # CAO-CAT-CAO-HAT + 5887 5 3677 3678 3679 3680 # CAO-CAM-CAP-CAM + 5888 6 3677 3678 3679 3685 # CAO-CAM-CAP-HAT + 5889 7 3682 3676 3677 3678 # CTT-CAT-CAO-CAM + 5890 3 3681 3676 3677 3678 # CAO-CAT-CAO-CAM + 5891 5 3681 3680 3679 3678 # CAO-CAM-CAP-CAM + 5892 8 3678 3679 3680 3686 # CAM-CAP-CAM-HAT + 5893 9 3679 3678 3677 3683 # CAP-CAM-CAO-HAT + 5894 9 3679 3680 3681 3687 # CAP-CAM-CAO-HAT + 5895 8 3680 3679 3678 3684 # CAM-CAP-CAM-HAT + 5896 7 3682 3676 3681 3680 # CTT-CAT-CAO-CAM + 5897 6 3681 3680 3679 3685 # CAO-CAM-CAP-HAT + 5898 4 3681 3676 3677 3683 # CAO-CAT-CAO-HAT + 5899 10 3682 3676 3677 3683 # CTT-CAT-CAO-HAT + 5900 10 3682 3676 3681 3687 # CTT-CAT-CAO-HAT + 5901 11 3683 3677 3678 3684 # HAT-CAO-CAM-HAT + 5902 12 3684 3678 3679 3685 # HAT-CAM-CAP-HAT + 5903 12 3686 3680 3679 3685 # HAT-CAM-CAP-HAT + 5904 11 3687 3681 3680 3686 # HAT-CAO-CAM-HAT + 5905 1 3691 3692 3693 3694 # CAT-CAO-CAM-CAP + 5906 2 3691 3692 3693 3699 # CAT-CAO-CAM-HAT + 5907 1 3691 3696 3695 3694 # CAT-CAO-CAM-CAP + 5908 2 3691 3696 3695 3701 # CAT-CAO-CAM-HAT + 5909 3 3692 3691 3696 3695 # CAO-CAT-CAO-CAM + 5910 4 3692 3691 3696 3702 # CAO-CAT-CAO-HAT + 5911 5 3692 3693 3694 3695 # CAO-CAM-CAP-CAM + 5912 6 3692 3693 3694 3700 # CAO-CAM-CAP-HAT + 5913 7 3697 3691 3692 3693 # CTT-CAT-CAO-CAM + 5914 3 3696 3691 3692 3693 # CAO-CAT-CAO-CAM + 5915 5 3696 3695 3694 3693 # CAO-CAM-CAP-CAM + 5916 8 3693 3694 3695 3701 # CAM-CAP-CAM-HAT + 5917 9 3694 3693 3692 3698 # CAP-CAM-CAO-HAT + 5918 9 3694 3695 3696 3702 # CAP-CAM-CAO-HAT + 5919 8 3695 3694 3693 3699 # CAM-CAP-CAM-HAT + 5920 7 3697 3691 3696 3695 # CTT-CAT-CAO-CAM + 5921 6 3696 3695 3694 3700 # CAO-CAM-CAP-HAT + 5922 4 3696 3691 3692 3698 # CAO-CAT-CAO-HAT + 5923 10 3697 3691 3692 3698 # CTT-CAT-CAO-HAT + 5924 10 3697 3691 3696 3702 # CTT-CAT-CAO-HAT + 5925 11 3698 3692 3693 3699 # HAT-CAO-CAM-HAT + 5926 12 3699 3693 3694 3700 # HAT-CAM-CAP-HAT + 5927 12 3701 3695 3694 3700 # HAT-CAM-CAP-HAT + 5928 11 3702 3696 3695 3701 # HAT-CAO-CAM-HAT + 5929 1 3706 3707 3708 3709 # CAT-CAO-CAM-CAP + 5930 2 3706 3707 3708 3714 # CAT-CAO-CAM-HAT + 5931 1 3706 3711 3710 3709 # CAT-CAO-CAM-CAP + 5932 2 3706 3711 3710 3716 # CAT-CAO-CAM-HAT + 5933 3 3707 3706 3711 3710 # CAO-CAT-CAO-CAM + 5934 4 3707 3706 3711 3717 # CAO-CAT-CAO-HAT + 5935 5 3707 3708 3709 3710 # CAO-CAM-CAP-CAM + 5936 6 3707 3708 3709 3715 # CAO-CAM-CAP-HAT + 5937 7 3712 3706 3707 3708 # CTT-CAT-CAO-CAM + 5938 3 3711 3706 3707 3708 # CAO-CAT-CAO-CAM + 5939 5 3711 3710 3709 3708 # CAO-CAM-CAP-CAM + 5940 8 3708 3709 3710 3716 # CAM-CAP-CAM-HAT + 5941 9 3709 3708 3707 3713 # CAP-CAM-CAO-HAT + 5942 9 3709 3710 3711 3717 # CAP-CAM-CAO-HAT + 5943 8 3710 3709 3708 3714 # CAM-CAP-CAM-HAT + 5944 7 3712 3706 3711 3710 # CTT-CAT-CAO-CAM + 5945 6 3711 3710 3709 3715 # CAO-CAM-CAP-HAT + 5946 4 3711 3706 3707 3713 # CAO-CAT-CAO-HAT + 5947 10 3712 3706 3707 3713 # CTT-CAT-CAO-HAT + 5948 10 3712 3706 3711 3717 # CTT-CAT-CAO-HAT + 5949 11 3713 3707 3708 3714 # HAT-CAO-CAM-HAT + 5950 12 3714 3708 3709 3715 # HAT-CAM-CAP-HAT + 5951 12 3716 3710 3709 3715 # HAT-CAM-CAP-HAT + 5952 11 3717 3711 3710 3716 # HAT-CAO-CAM-HAT + 5953 1 3721 3722 3723 3724 # CAT-CAO-CAM-CAP + 5954 2 3721 3722 3723 3729 # CAT-CAO-CAM-HAT + 5955 1 3721 3726 3725 3724 # CAT-CAO-CAM-CAP + 5956 2 3721 3726 3725 3731 # CAT-CAO-CAM-HAT + 5957 3 3722 3721 3726 3725 # CAO-CAT-CAO-CAM + 5958 4 3722 3721 3726 3732 # CAO-CAT-CAO-HAT + 5959 5 3722 3723 3724 3725 # CAO-CAM-CAP-CAM + 5960 6 3722 3723 3724 3730 # CAO-CAM-CAP-HAT + 5961 7 3727 3721 3722 3723 # CTT-CAT-CAO-CAM + 5962 3 3726 3721 3722 3723 # CAO-CAT-CAO-CAM + 5963 5 3726 3725 3724 3723 # CAO-CAM-CAP-CAM + 5964 8 3723 3724 3725 3731 # CAM-CAP-CAM-HAT + 5965 9 3724 3723 3722 3728 # CAP-CAM-CAO-HAT + 5966 9 3724 3725 3726 3732 # CAP-CAM-CAO-HAT + 5967 8 3725 3724 3723 3729 # CAM-CAP-CAM-HAT + 5968 7 3727 3721 3726 3725 # CTT-CAT-CAO-CAM + 5969 6 3726 3725 3724 3730 # CAO-CAM-CAP-HAT + 5970 4 3726 3721 3722 3728 # CAO-CAT-CAO-HAT + 5971 10 3727 3721 3722 3728 # CTT-CAT-CAO-HAT + 5972 10 3727 3721 3726 3732 # CTT-CAT-CAO-HAT + 5973 11 3728 3722 3723 3729 # HAT-CAO-CAM-HAT + 5974 12 3729 3723 3724 3730 # HAT-CAM-CAP-HAT + 5975 12 3731 3725 3724 3730 # HAT-CAM-CAP-HAT + 5976 11 3732 3726 3725 3731 # HAT-CAO-CAM-HAT + 5977 1 3736 3737 3738 3739 # CAT-CAO-CAM-CAP + 5978 2 3736 3737 3738 3744 # CAT-CAO-CAM-HAT + 5979 1 3736 3741 3740 3739 # CAT-CAO-CAM-CAP + 5980 2 3736 3741 3740 3746 # CAT-CAO-CAM-HAT + 5981 3 3737 3736 3741 3740 # CAO-CAT-CAO-CAM + 5982 4 3737 3736 3741 3747 # CAO-CAT-CAO-HAT + 5983 5 3737 3738 3739 3740 # CAO-CAM-CAP-CAM + 5984 6 3737 3738 3739 3745 # CAO-CAM-CAP-HAT + 5985 7 3742 3736 3737 3738 # CTT-CAT-CAO-CAM + 5986 3 3741 3736 3737 3738 # CAO-CAT-CAO-CAM + 5987 5 3741 3740 3739 3738 # CAO-CAM-CAP-CAM + 5988 8 3738 3739 3740 3746 # CAM-CAP-CAM-HAT + 5989 9 3739 3738 3737 3743 # CAP-CAM-CAO-HAT + 5990 9 3739 3740 3741 3747 # CAP-CAM-CAO-HAT + 5991 8 3740 3739 3738 3744 # CAM-CAP-CAM-HAT + 5992 7 3742 3736 3741 3740 # CTT-CAT-CAO-CAM + 5993 6 3741 3740 3739 3745 # CAO-CAM-CAP-HAT + 5994 4 3741 3736 3737 3743 # CAO-CAT-CAO-HAT + 5995 10 3742 3736 3737 3743 # CTT-CAT-CAO-HAT + 5996 10 3742 3736 3741 3747 # CTT-CAT-CAO-HAT + 5997 11 3743 3737 3738 3744 # HAT-CAO-CAM-HAT + 5998 12 3744 3738 3739 3745 # HAT-CAM-CAP-HAT + 5999 12 3746 3740 3739 3745 # HAT-CAM-CAP-HAT + 6000 11 3747 3741 3740 3746 # HAT-CAO-CAM-HAT + +Impropers + + 1 1 2 6 1 7 # CAO-CAO-CAT-CTT + 2 2 1 3 2 8 # CAT-CAM-CAO-HAT + 3 3 2 4 3 9 # CAO-CAP-CAM-HAT + 4 4 3 5 4 10 # CAM-CAM-CAP-HAT + 5 3 6 4 5 11 # CAO-CAP-CAM-HAT + 6 2 1 5 6 12 # CAT-CAM-CAO-HAT + 7 1 17 21 16 22 # CAO-CAO-CAT-CTT + 8 2 16 18 17 23 # CAT-CAM-CAO-HAT + 9 3 17 19 18 24 # CAO-CAP-CAM-HAT + 10 4 18 20 19 25 # CAM-CAM-CAP-HAT + 11 3 21 19 20 26 # CAO-CAP-CAM-HAT + 12 2 16 20 21 27 # CAT-CAM-CAO-HAT + 13 1 32 36 31 37 # CAO-CAO-CAT-CTT + 14 2 31 33 32 38 # CAT-CAM-CAO-HAT + 15 3 32 34 33 39 # CAO-CAP-CAM-HAT + 16 4 33 35 34 40 # CAM-CAM-CAP-HAT + 17 3 36 34 35 41 # CAO-CAP-CAM-HAT + 18 2 31 35 36 42 # CAT-CAM-CAO-HAT + 19 1 47 51 46 52 # CAO-CAO-CAT-CTT + 20 2 46 48 47 53 # CAT-CAM-CAO-HAT + 21 3 47 49 48 54 # CAO-CAP-CAM-HAT + 22 4 48 50 49 55 # CAM-CAM-CAP-HAT + 23 3 51 49 50 56 # CAO-CAP-CAM-HAT + 24 2 46 50 51 57 # CAT-CAM-CAO-HAT + 25 1 62 66 61 67 # CAO-CAO-CAT-CTT + 26 2 61 63 62 68 # CAT-CAM-CAO-HAT + 27 3 62 64 63 69 # CAO-CAP-CAM-HAT + 28 4 63 65 64 70 # CAM-CAM-CAP-HAT + 29 3 66 64 65 71 # CAO-CAP-CAM-HAT + 30 2 61 65 66 72 # CAT-CAM-CAO-HAT + 31 1 77 81 76 82 # CAO-CAO-CAT-CTT + 32 2 76 78 77 83 # CAT-CAM-CAO-HAT + 33 3 77 79 78 84 # CAO-CAP-CAM-HAT + 34 4 78 80 79 85 # CAM-CAM-CAP-HAT + 35 3 81 79 80 86 # CAO-CAP-CAM-HAT + 36 2 76 80 81 87 # CAT-CAM-CAO-HAT + 37 1 92 96 91 97 # CAO-CAO-CAT-CTT + 38 2 91 93 92 98 # CAT-CAM-CAO-HAT + 39 3 92 94 93 99 # CAO-CAP-CAM-HAT + 40 4 93 95 94 100 # CAM-CAM-CAP-HAT + 41 3 96 94 95 101 # CAO-CAP-CAM-HAT + 42 2 91 95 96 102 # CAT-CAM-CAO-HAT + 43 1 107 111 106 112 # CAO-CAO-CAT-CTT + 44 2 106 108 107 113 # CAT-CAM-CAO-HAT + 45 3 107 109 108 114 # CAO-CAP-CAM-HAT + 46 4 108 110 109 115 # CAM-CAM-CAP-HAT + 47 3 111 109 110 116 # CAO-CAP-CAM-HAT + 48 2 106 110 111 117 # CAT-CAM-CAO-HAT + 49 1 122 126 121 127 # CAO-CAO-CAT-CTT + 50 2 121 123 122 128 # CAT-CAM-CAO-HAT + 51 3 122 124 123 129 # CAO-CAP-CAM-HAT + 52 4 123 125 124 130 # CAM-CAM-CAP-HAT + 53 3 126 124 125 131 # CAO-CAP-CAM-HAT + 54 2 121 125 126 132 # CAT-CAM-CAO-HAT + 55 1 137 141 136 142 # CAO-CAO-CAT-CTT + 56 2 136 138 137 143 # CAT-CAM-CAO-HAT + 57 3 137 139 138 144 # CAO-CAP-CAM-HAT + 58 4 138 140 139 145 # CAM-CAM-CAP-HAT + 59 3 141 139 140 146 # CAO-CAP-CAM-HAT + 60 2 136 140 141 147 # CAT-CAM-CAO-HAT + 61 1 152 156 151 157 # CAO-CAO-CAT-CTT + 62 2 151 153 152 158 # CAT-CAM-CAO-HAT + 63 3 152 154 153 159 # CAO-CAP-CAM-HAT + 64 4 153 155 154 160 # CAM-CAM-CAP-HAT + 65 3 156 154 155 161 # CAO-CAP-CAM-HAT + 66 2 151 155 156 162 # CAT-CAM-CAO-HAT + 67 1 167 171 166 172 # CAO-CAO-CAT-CTT + 68 2 166 168 167 173 # CAT-CAM-CAO-HAT + 69 3 167 169 168 174 # CAO-CAP-CAM-HAT + 70 4 168 170 169 175 # CAM-CAM-CAP-HAT + 71 3 171 169 170 176 # CAO-CAP-CAM-HAT + 72 2 166 170 171 177 # CAT-CAM-CAO-HAT + 73 1 182 186 181 187 # CAO-CAO-CAT-CTT + 74 2 181 183 182 188 # CAT-CAM-CAO-HAT + 75 3 182 184 183 189 # CAO-CAP-CAM-HAT + 76 4 183 185 184 190 # CAM-CAM-CAP-HAT + 77 3 186 184 185 191 # CAO-CAP-CAM-HAT + 78 2 181 185 186 192 # CAT-CAM-CAO-HAT + 79 1 197 201 196 202 # CAO-CAO-CAT-CTT + 80 2 196 198 197 203 # CAT-CAM-CAO-HAT + 81 3 197 199 198 204 # CAO-CAP-CAM-HAT + 82 4 198 200 199 205 # CAM-CAM-CAP-HAT + 83 3 201 199 200 206 # CAO-CAP-CAM-HAT + 84 2 196 200 201 207 # CAT-CAM-CAO-HAT + 85 1 212 216 211 217 # CAO-CAO-CAT-CTT + 86 2 211 213 212 218 # CAT-CAM-CAO-HAT + 87 3 212 214 213 219 # CAO-CAP-CAM-HAT + 88 4 213 215 214 220 # CAM-CAM-CAP-HAT + 89 3 216 214 215 221 # CAO-CAP-CAM-HAT + 90 2 211 215 216 222 # CAT-CAM-CAO-HAT + 91 1 227 231 226 232 # CAO-CAO-CAT-CTT + 92 2 226 228 227 233 # CAT-CAM-CAO-HAT + 93 3 227 229 228 234 # CAO-CAP-CAM-HAT + 94 4 228 230 229 235 # CAM-CAM-CAP-HAT + 95 3 231 229 230 236 # CAO-CAP-CAM-HAT + 96 2 226 230 231 237 # CAT-CAM-CAO-HAT + 97 1 242 246 241 247 # CAO-CAO-CAT-CTT + 98 2 241 243 242 248 # CAT-CAM-CAO-HAT + 99 3 242 244 243 249 # CAO-CAP-CAM-HAT + 100 4 243 245 244 250 # CAM-CAM-CAP-HAT + 101 3 246 244 245 251 # CAO-CAP-CAM-HAT + 102 2 241 245 246 252 # CAT-CAM-CAO-HAT + 103 1 257 261 256 262 # CAO-CAO-CAT-CTT + 104 2 256 258 257 263 # CAT-CAM-CAO-HAT + 105 3 257 259 258 264 # CAO-CAP-CAM-HAT + 106 4 258 260 259 265 # CAM-CAM-CAP-HAT + 107 3 261 259 260 266 # CAO-CAP-CAM-HAT + 108 2 256 260 261 267 # CAT-CAM-CAO-HAT + 109 1 272 276 271 277 # CAO-CAO-CAT-CTT + 110 2 271 273 272 278 # CAT-CAM-CAO-HAT + 111 3 272 274 273 279 # CAO-CAP-CAM-HAT + 112 4 273 275 274 280 # CAM-CAM-CAP-HAT + 113 3 276 274 275 281 # CAO-CAP-CAM-HAT + 114 2 271 275 276 282 # CAT-CAM-CAO-HAT + 115 1 287 291 286 292 # CAO-CAO-CAT-CTT + 116 2 286 288 287 293 # CAT-CAM-CAO-HAT + 117 3 287 289 288 294 # CAO-CAP-CAM-HAT + 118 4 288 290 289 295 # CAM-CAM-CAP-HAT + 119 3 291 289 290 296 # CAO-CAP-CAM-HAT + 120 2 286 290 291 297 # CAT-CAM-CAO-HAT + 121 1 302 306 301 307 # CAO-CAO-CAT-CTT + 122 2 301 303 302 308 # CAT-CAM-CAO-HAT + 123 3 302 304 303 309 # CAO-CAP-CAM-HAT + 124 4 303 305 304 310 # CAM-CAM-CAP-HAT + 125 3 306 304 305 311 # CAO-CAP-CAM-HAT + 126 2 301 305 306 312 # CAT-CAM-CAO-HAT + 127 1 317 321 316 322 # CAO-CAO-CAT-CTT + 128 2 316 318 317 323 # CAT-CAM-CAO-HAT + 129 3 317 319 318 324 # CAO-CAP-CAM-HAT + 130 4 318 320 319 325 # CAM-CAM-CAP-HAT + 131 3 321 319 320 326 # CAO-CAP-CAM-HAT + 132 2 316 320 321 327 # CAT-CAM-CAO-HAT + 133 1 332 336 331 337 # CAO-CAO-CAT-CTT + 134 2 331 333 332 338 # CAT-CAM-CAO-HAT + 135 3 332 334 333 339 # CAO-CAP-CAM-HAT + 136 4 333 335 334 340 # CAM-CAM-CAP-HAT + 137 3 336 334 335 341 # CAO-CAP-CAM-HAT + 138 2 331 335 336 342 # CAT-CAM-CAO-HAT + 139 1 347 351 346 352 # CAO-CAO-CAT-CTT + 140 2 346 348 347 353 # CAT-CAM-CAO-HAT + 141 3 347 349 348 354 # CAO-CAP-CAM-HAT + 142 4 348 350 349 355 # CAM-CAM-CAP-HAT + 143 3 351 349 350 356 # CAO-CAP-CAM-HAT + 144 2 346 350 351 357 # CAT-CAM-CAO-HAT + 145 1 362 366 361 367 # CAO-CAO-CAT-CTT + 146 2 361 363 362 368 # CAT-CAM-CAO-HAT + 147 3 362 364 363 369 # CAO-CAP-CAM-HAT + 148 4 363 365 364 370 # CAM-CAM-CAP-HAT + 149 3 366 364 365 371 # CAO-CAP-CAM-HAT + 150 2 361 365 366 372 # CAT-CAM-CAO-HAT + 151 1 377 381 376 382 # CAO-CAO-CAT-CTT + 152 2 376 378 377 383 # CAT-CAM-CAO-HAT + 153 3 377 379 378 384 # CAO-CAP-CAM-HAT + 154 4 378 380 379 385 # CAM-CAM-CAP-HAT + 155 3 381 379 380 386 # CAO-CAP-CAM-HAT + 156 2 376 380 381 387 # CAT-CAM-CAO-HAT + 157 1 392 396 391 397 # CAO-CAO-CAT-CTT + 158 2 391 393 392 398 # CAT-CAM-CAO-HAT + 159 3 392 394 393 399 # CAO-CAP-CAM-HAT + 160 4 393 395 394 400 # CAM-CAM-CAP-HAT + 161 3 396 394 395 401 # CAO-CAP-CAM-HAT + 162 2 391 395 396 402 # CAT-CAM-CAO-HAT + 163 1 407 411 406 412 # CAO-CAO-CAT-CTT + 164 2 406 408 407 413 # CAT-CAM-CAO-HAT + 165 3 407 409 408 414 # CAO-CAP-CAM-HAT + 166 4 408 410 409 415 # CAM-CAM-CAP-HAT + 167 3 411 409 410 416 # CAO-CAP-CAM-HAT + 168 2 406 410 411 417 # CAT-CAM-CAO-HAT + 169 1 422 426 421 427 # CAO-CAO-CAT-CTT + 170 2 421 423 422 428 # CAT-CAM-CAO-HAT + 171 3 422 424 423 429 # CAO-CAP-CAM-HAT + 172 4 423 425 424 430 # CAM-CAM-CAP-HAT + 173 3 426 424 425 431 # CAO-CAP-CAM-HAT + 174 2 421 425 426 432 # CAT-CAM-CAO-HAT + 175 1 437 441 436 442 # CAO-CAO-CAT-CTT + 176 2 436 438 437 443 # CAT-CAM-CAO-HAT + 177 3 437 439 438 444 # CAO-CAP-CAM-HAT + 178 4 438 440 439 445 # CAM-CAM-CAP-HAT + 179 3 441 439 440 446 # CAO-CAP-CAM-HAT + 180 2 436 440 441 447 # CAT-CAM-CAO-HAT + 181 1 452 456 451 457 # CAO-CAO-CAT-CTT + 182 2 451 453 452 458 # CAT-CAM-CAO-HAT + 183 3 452 454 453 459 # CAO-CAP-CAM-HAT + 184 4 453 455 454 460 # CAM-CAM-CAP-HAT + 185 3 456 454 455 461 # CAO-CAP-CAM-HAT + 186 2 451 455 456 462 # CAT-CAM-CAO-HAT + 187 1 467 471 466 472 # CAO-CAO-CAT-CTT + 188 2 466 468 467 473 # CAT-CAM-CAO-HAT + 189 3 467 469 468 474 # CAO-CAP-CAM-HAT + 190 4 468 470 469 475 # CAM-CAM-CAP-HAT + 191 3 471 469 470 476 # CAO-CAP-CAM-HAT + 192 2 466 470 471 477 # CAT-CAM-CAO-HAT + 193 1 482 486 481 487 # CAO-CAO-CAT-CTT + 194 2 481 483 482 488 # CAT-CAM-CAO-HAT + 195 3 482 484 483 489 # CAO-CAP-CAM-HAT + 196 4 483 485 484 490 # CAM-CAM-CAP-HAT + 197 3 486 484 485 491 # CAO-CAP-CAM-HAT + 198 2 481 485 486 492 # CAT-CAM-CAO-HAT + 199 1 497 501 496 502 # CAO-CAO-CAT-CTT + 200 2 496 498 497 503 # CAT-CAM-CAO-HAT + 201 3 497 499 498 504 # CAO-CAP-CAM-HAT + 202 4 498 500 499 505 # CAM-CAM-CAP-HAT + 203 3 501 499 500 506 # CAO-CAP-CAM-HAT + 204 2 496 500 501 507 # CAT-CAM-CAO-HAT + 205 1 512 516 511 517 # CAO-CAO-CAT-CTT + 206 2 511 513 512 518 # CAT-CAM-CAO-HAT + 207 3 512 514 513 519 # CAO-CAP-CAM-HAT + 208 4 513 515 514 520 # CAM-CAM-CAP-HAT + 209 3 516 514 515 521 # CAO-CAP-CAM-HAT + 210 2 511 515 516 522 # CAT-CAM-CAO-HAT + 211 1 527 531 526 532 # CAO-CAO-CAT-CTT + 212 2 526 528 527 533 # CAT-CAM-CAO-HAT + 213 3 527 529 528 534 # CAO-CAP-CAM-HAT + 214 4 528 530 529 535 # CAM-CAM-CAP-HAT + 215 3 531 529 530 536 # CAO-CAP-CAM-HAT + 216 2 526 530 531 537 # CAT-CAM-CAO-HAT + 217 1 542 546 541 547 # CAO-CAO-CAT-CTT + 218 2 541 543 542 548 # CAT-CAM-CAO-HAT + 219 3 542 544 543 549 # CAO-CAP-CAM-HAT + 220 4 543 545 544 550 # CAM-CAM-CAP-HAT + 221 3 546 544 545 551 # CAO-CAP-CAM-HAT + 222 2 541 545 546 552 # CAT-CAM-CAO-HAT + 223 1 557 561 556 562 # CAO-CAO-CAT-CTT + 224 2 556 558 557 563 # CAT-CAM-CAO-HAT + 225 3 557 559 558 564 # CAO-CAP-CAM-HAT + 226 4 558 560 559 565 # CAM-CAM-CAP-HAT + 227 3 561 559 560 566 # CAO-CAP-CAM-HAT + 228 2 556 560 561 567 # CAT-CAM-CAO-HAT + 229 1 572 576 571 577 # CAO-CAO-CAT-CTT + 230 2 571 573 572 578 # CAT-CAM-CAO-HAT + 231 3 572 574 573 579 # CAO-CAP-CAM-HAT + 232 4 573 575 574 580 # CAM-CAM-CAP-HAT + 233 3 576 574 575 581 # CAO-CAP-CAM-HAT + 234 2 571 575 576 582 # CAT-CAM-CAO-HAT + 235 1 587 591 586 592 # CAO-CAO-CAT-CTT + 236 2 586 588 587 593 # CAT-CAM-CAO-HAT + 237 3 587 589 588 594 # CAO-CAP-CAM-HAT + 238 4 588 590 589 595 # CAM-CAM-CAP-HAT + 239 3 591 589 590 596 # CAO-CAP-CAM-HAT + 240 2 586 590 591 597 # CAT-CAM-CAO-HAT + 241 1 602 606 601 607 # CAO-CAO-CAT-CTT + 242 2 601 603 602 608 # CAT-CAM-CAO-HAT + 243 3 602 604 603 609 # CAO-CAP-CAM-HAT + 244 4 603 605 604 610 # CAM-CAM-CAP-HAT + 245 3 606 604 605 611 # CAO-CAP-CAM-HAT + 246 2 601 605 606 612 # CAT-CAM-CAO-HAT + 247 1 617 621 616 622 # CAO-CAO-CAT-CTT + 248 2 616 618 617 623 # CAT-CAM-CAO-HAT + 249 3 617 619 618 624 # CAO-CAP-CAM-HAT + 250 4 618 620 619 625 # CAM-CAM-CAP-HAT + 251 3 621 619 620 626 # CAO-CAP-CAM-HAT + 252 2 616 620 621 627 # CAT-CAM-CAO-HAT + 253 1 632 636 631 637 # CAO-CAO-CAT-CTT + 254 2 631 633 632 638 # CAT-CAM-CAO-HAT + 255 3 632 634 633 639 # CAO-CAP-CAM-HAT + 256 4 633 635 634 640 # CAM-CAM-CAP-HAT + 257 3 636 634 635 641 # CAO-CAP-CAM-HAT + 258 2 631 635 636 642 # CAT-CAM-CAO-HAT + 259 1 647 651 646 652 # CAO-CAO-CAT-CTT + 260 2 646 648 647 653 # CAT-CAM-CAO-HAT + 261 3 647 649 648 654 # CAO-CAP-CAM-HAT + 262 4 648 650 649 655 # CAM-CAM-CAP-HAT + 263 3 651 649 650 656 # CAO-CAP-CAM-HAT + 264 2 646 650 651 657 # CAT-CAM-CAO-HAT + 265 1 662 666 661 667 # CAO-CAO-CAT-CTT + 266 2 661 663 662 668 # CAT-CAM-CAO-HAT + 267 3 662 664 663 669 # CAO-CAP-CAM-HAT + 268 4 663 665 664 670 # CAM-CAM-CAP-HAT + 269 3 666 664 665 671 # CAO-CAP-CAM-HAT + 270 2 661 665 666 672 # CAT-CAM-CAO-HAT + 271 1 677 681 676 682 # CAO-CAO-CAT-CTT + 272 2 676 678 677 683 # CAT-CAM-CAO-HAT + 273 3 677 679 678 684 # CAO-CAP-CAM-HAT + 274 4 678 680 679 685 # CAM-CAM-CAP-HAT + 275 3 681 679 680 686 # CAO-CAP-CAM-HAT + 276 2 676 680 681 687 # CAT-CAM-CAO-HAT + 277 1 692 696 691 697 # CAO-CAO-CAT-CTT + 278 2 691 693 692 698 # CAT-CAM-CAO-HAT + 279 3 692 694 693 699 # CAO-CAP-CAM-HAT + 280 4 693 695 694 700 # CAM-CAM-CAP-HAT + 281 3 696 694 695 701 # CAO-CAP-CAM-HAT + 282 2 691 695 696 702 # CAT-CAM-CAO-HAT + 283 1 707 711 706 712 # CAO-CAO-CAT-CTT + 284 2 706 708 707 713 # CAT-CAM-CAO-HAT + 285 3 707 709 708 714 # CAO-CAP-CAM-HAT + 286 4 708 710 709 715 # CAM-CAM-CAP-HAT + 287 3 711 709 710 716 # CAO-CAP-CAM-HAT + 288 2 706 710 711 717 # CAT-CAM-CAO-HAT + 289 1 722 726 721 727 # CAO-CAO-CAT-CTT + 290 2 721 723 722 728 # CAT-CAM-CAO-HAT + 291 3 722 724 723 729 # CAO-CAP-CAM-HAT + 292 4 723 725 724 730 # CAM-CAM-CAP-HAT + 293 3 726 724 725 731 # CAO-CAP-CAM-HAT + 294 2 721 725 726 732 # CAT-CAM-CAO-HAT + 295 1 737 741 736 742 # CAO-CAO-CAT-CTT + 296 2 736 738 737 743 # CAT-CAM-CAO-HAT + 297 3 737 739 738 744 # CAO-CAP-CAM-HAT + 298 4 738 740 739 745 # CAM-CAM-CAP-HAT + 299 3 741 739 740 746 # CAO-CAP-CAM-HAT + 300 2 736 740 741 747 # CAT-CAM-CAO-HAT + 301 1 752 756 751 757 # CAO-CAO-CAT-CTT + 302 2 751 753 752 758 # CAT-CAM-CAO-HAT + 303 3 752 754 753 759 # CAO-CAP-CAM-HAT + 304 4 753 755 754 760 # CAM-CAM-CAP-HAT + 305 3 756 754 755 761 # CAO-CAP-CAM-HAT + 306 2 751 755 756 762 # CAT-CAM-CAO-HAT + 307 1 767 771 766 772 # CAO-CAO-CAT-CTT + 308 2 766 768 767 773 # CAT-CAM-CAO-HAT + 309 3 767 769 768 774 # CAO-CAP-CAM-HAT + 310 4 768 770 769 775 # CAM-CAM-CAP-HAT + 311 3 771 769 770 776 # CAO-CAP-CAM-HAT + 312 2 766 770 771 777 # CAT-CAM-CAO-HAT + 313 1 782 786 781 787 # CAO-CAO-CAT-CTT + 314 2 781 783 782 788 # CAT-CAM-CAO-HAT + 315 3 782 784 783 789 # CAO-CAP-CAM-HAT + 316 4 783 785 784 790 # CAM-CAM-CAP-HAT + 317 3 786 784 785 791 # CAO-CAP-CAM-HAT + 318 2 781 785 786 792 # CAT-CAM-CAO-HAT + 319 1 797 801 796 802 # CAO-CAO-CAT-CTT + 320 2 796 798 797 803 # CAT-CAM-CAO-HAT + 321 3 797 799 798 804 # CAO-CAP-CAM-HAT + 322 4 798 800 799 805 # CAM-CAM-CAP-HAT + 323 3 801 799 800 806 # CAO-CAP-CAM-HAT + 324 2 796 800 801 807 # CAT-CAM-CAO-HAT + 325 1 812 816 811 817 # CAO-CAO-CAT-CTT + 326 2 811 813 812 818 # CAT-CAM-CAO-HAT + 327 3 812 814 813 819 # CAO-CAP-CAM-HAT + 328 4 813 815 814 820 # CAM-CAM-CAP-HAT + 329 3 816 814 815 821 # CAO-CAP-CAM-HAT + 330 2 811 815 816 822 # CAT-CAM-CAO-HAT + 331 1 827 831 826 832 # CAO-CAO-CAT-CTT + 332 2 826 828 827 833 # CAT-CAM-CAO-HAT + 333 3 827 829 828 834 # CAO-CAP-CAM-HAT + 334 4 828 830 829 835 # CAM-CAM-CAP-HAT + 335 3 831 829 830 836 # CAO-CAP-CAM-HAT + 336 2 826 830 831 837 # CAT-CAM-CAO-HAT + 337 1 842 846 841 847 # CAO-CAO-CAT-CTT + 338 2 841 843 842 848 # CAT-CAM-CAO-HAT + 339 3 842 844 843 849 # CAO-CAP-CAM-HAT + 340 4 843 845 844 850 # CAM-CAM-CAP-HAT + 341 3 846 844 845 851 # CAO-CAP-CAM-HAT + 342 2 841 845 846 852 # CAT-CAM-CAO-HAT + 343 1 857 861 856 862 # CAO-CAO-CAT-CTT + 344 2 856 858 857 863 # CAT-CAM-CAO-HAT + 345 3 857 859 858 864 # CAO-CAP-CAM-HAT + 346 4 858 860 859 865 # CAM-CAM-CAP-HAT + 347 3 861 859 860 866 # CAO-CAP-CAM-HAT + 348 2 856 860 861 867 # CAT-CAM-CAO-HAT + 349 1 872 876 871 877 # CAO-CAO-CAT-CTT + 350 2 871 873 872 878 # CAT-CAM-CAO-HAT + 351 3 872 874 873 879 # CAO-CAP-CAM-HAT + 352 4 873 875 874 880 # CAM-CAM-CAP-HAT + 353 3 876 874 875 881 # CAO-CAP-CAM-HAT + 354 2 871 875 876 882 # CAT-CAM-CAO-HAT + 355 1 887 891 886 892 # CAO-CAO-CAT-CTT + 356 2 886 888 887 893 # CAT-CAM-CAO-HAT + 357 3 887 889 888 894 # CAO-CAP-CAM-HAT + 358 4 888 890 889 895 # CAM-CAM-CAP-HAT + 359 3 891 889 890 896 # CAO-CAP-CAM-HAT + 360 2 886 890 891 897 # CAT-CAM-CAO-HAT + 361 1 902 906 901 907 # CAO-CAO-CAT-CTT + 362 2 901 903 902 908 # CAT-CAM-CAO-HAT + 363 3 902 904 903 909 # CAO-CAP-CAM-HAT + 364 4 903 905 904 910 # CAM-CAM-CAP-HAT + 365 3 906 904 905 911 # CAO-CAP-CAM-HAT + 366 2 901 905 906 912 # CAT-CAM-CAO-HAT + 367 1 917 921 916 922 # CAO-CAO-CAT-CTT + 368 2 916 918 917 923 # CAT-CAM-CAO-HAT + 369 3 917 919 918 924 # CAO-CAP-CAM-HAT + 370 4 918 920 919 925 # CAM-CAM-CAP-HAT + 371 3 921 919 920 926 # CAO-CAP-CAM-HAT + 372 2 916 920 921 927 # CAT-CAM-CAO-HAT + 373 1 932 936 931 937 # CAO-CAO-CAT-CTT + 374 2 931 933 932 938 # CAT-CAM-CAO-HAT + 375 3 932 934 933 939 # CAO-CAP-CAM-HAT + 376 4 933 935 934 940 # CAM-CAM-CAP-HAT + 377 3 936 934 935 941 # CAO-CAP-CAM-HAT + 378 2 931 935 936 942 # CAT-CAM-CAO-HAT + 379 1 947 951 946 952 # CAO-CAO-CAT-CTT + 380 2 946 948 947 953 # CAT-CAM-CAO-HAT + 381 3 947 949 948 954 # CAO-CAP-CAM-HAT + 382 4 948 950 949 955 # CAM-CAM-CAP-HAT + 383 3 951 949 950 956 # CAO-CAP-CAM-HAT + 384 2 946 950 951 957 # CAT-CAM-CAO-HAT + 385 1 962 966 961 967 # CAO-CAO-CAT-CTT + 386 2 961 963 962 968 # CAT-CAM-CAO-HAT + 387 3 962 964 963 969 # CAO-CAP-CAM-HAT + 388 4 963 965 964 970 # CAM-CAM-CAP-HAT + 389 3 966 964 965 971 # CAO-CAP-CAM-HAT + 390 2 961 965 966 972 # CAT-CAM-CAO-HAT + 391 1 977 981 976 982 # CAO-CAO-CAT-CTT + 392 2 976 978 977 983 # CAT-CAM-CAO-HAT + 393 3 977 979 978 984 # CAO-CAP-CAM-HAT + 394 4 978 980 979 985 # CAM-CAM-CAP-HAT + 395 3 981 979 980 986 # CAO-CAP-CAM-HAT + 396 2 976 980 981 987 # CAT-CAM-CAO-HAT + 397 1 992 996 991 997 # CAO-CAO-CAT-CTT + 398 2 991 993 992 998 # CAT-CAM-CAO-HAT + 399 3 992 994 993 999 # CAO-CAP-CAM-HAT + 400 4 993 995 994 1000 # CAM-CAM-CAP-HAT + 401 3 996 994 995 1001 # CAO-CAP-CAM-HAT + 402 2 991 995 996 1002 # CAT-CAM-CAO-HAT + 403 1 1007 1011 1006 1012 # CAO-CAO-CAT-CTT + 404 2 1006 1008 1007 1013 # CAT-CAM-CAO-HAT + 405 3 1007 1009 1008 1014 # CAO-CAP-CAM-HAT + 406 4 1008 1010 1009 1015 # CAM-CAM-CAP-HAT + 407 3 1011 1009 1010 1016 # CAO-CAP-CAM-HAT + 408 2 1006 1010 1011 1017 # CAT-CAM-CAO-HAT + 409 1 1022 1026 1021 1027 # CAO-CAO-CAT-CTT + 410 2 1021 1023 1022 1028 # CAT-CAM-CAO-HAT + 411 3 1022 1024 1023 1029 # CAO-CAP-CAM-HAT + 412 4 1023 1025 1024 1030 # CAM-CAM-CAP-HAT + 413 3 1026 1024 1025 1031 # CAO-CAP-CAM-HAT + 414 2 1021 1025 1026 1032 # CAT-CAM-CAO-HAT + 415 1 1037 1041 1036 1042 # CAO-CAO-CAT-CTT + 416 2 1036 1038 1037 1043 # CAT-CAM-CAO-HAT + 417 3 1037 1039 1038 1044 # CAO-CAP-CAM-HAT + 418 4 1038 1040 1039 1045 # CAM-CAM-CAP-HAT + 419 3 1041 1039 1040 1046 # CAO-CAP-CAM-HAT + 420 2 1036 1040 1041 1047 # CAT-CAM-CAO-HAT + 421 1 1052 1056 1051 1057 # CAO-CAO-CAT-CTT + 422 2 1051 1053 1052 1058 # CAT-CAM-CAO-HAT + 423 3 1052 1054 1053 1059 # CAO-CAP-CAM-HAT + 424 4 1053 1055 1054 1060 # CAM-CAM-CAP-HAT + 425 3 1056 1054 1055 1061 # CAO-CAP-CAM-HAT + 426 2 1051 1055 1056 1062 # CAT-CAM-CAO-HAT + 427 1 1067 1071 1066 1072 # CAO-CAO-CAT-CTT + 428 2 1066 1068 1067 1073 # CAT-CAM-CAO-HAT + 429 3 1067 1069 1068 1074 # CAO-CAP-CAM-HAT + 430 4 1068 1070 1069 1075 # CAM-CAM-CAP-HAT + 431 3 1071 1069 1070 1076 # CAO-CAP-CAM-HAT + 432 2 1066 1070 1071 1077 # CAT-CAM-CAO-HAT + 433 1 1082 1086 1081 1087 # CAO-CAO-CAT-CTT + 434 2 1081 1083 1082 1088 # CAT-CAM-CAO-HAT + 435 3 1082 1084 1083 1089 # CAO-CAP-CAM-HAT + 436 4 1083 1085 1084 1090 # CAM-CAM-CAP-HAT + 437 3 1086 1084 1085 1091 # CAO-CAP-CAM-HAT + 438 2 1081 1085 1086 1092 # CAT-CAM-CAO-HAT + 439 1 1097 1101 1096 1102 # CAO-CAO-CAT-CTT + 440 2 1096 1098 1097 1103 # CAT-CAM-CAO-HAT + 441 3 1097 1099 1098 1104 # CAO-CAP-CAM-HAT + 442 4 1098 1100 1099 1105 # CAM-CAM-CAP-HAT + 443 3 1101 1099 1100 1106 # CAO-CAP-CAM-HAT + 444 2 1096 1100 1101 1107 # CAT-CAM-CAO-HAT + 445 1 1112 1116 1111 1117 # CAO-CAO-CAT-CTT + 446 2 1111 1113 1112 1118 # CAT-CAM-CAO-HAT + 447 3 1112 1114 1113 1119 # CAO-CAP-CAM-HAT + 448 4 1113 1115 1114 1120 # CAM-CAM-CAP-HAT + 449 3 1116 1114 1115 1121 # CAO-CAP-CAM-HAT + 450 2 1111 1115 1116 1122 # CAT-CAM-CAO-HAT + 451 1 1127 1131 1126 1132 # CAO-CAO-CAT-CTT + 452 2 1126 1128 1127 1133 # CAT-CAM-CAO-HAT + 453 3 1127 1129 1128 1134 # CAO-CAP-CAM-HAT + 454 4 1128 1130 1129 1135 # CAM-CAM-CAP-HAT + 455 3 1131 1129 1130 1136 # CAO-CAP-CAM-HAT + 456 2 1126 1130 1131 1137 # CAT-CAM-CAO-HAT + 457 1 1142 1146 1141 1147 # CAO-CAO-CAT-CTT + 458 2 1141 1143 1142 1148 # CAT-CAM-CAO-HAT + 459 3 1142 1144 1143 1149 # CAO-CAP-CAM-HAT + 460 4 1143 1145 1144 1150 # CAM-CAM-CAP-HAT + 461 3 1146 1144 1145 1151 # CAO-CAP-CAM-HAT + 462 2 1141 1145 1146 1152 # CAT-CAM-CAO-HAT + 463 1 1157 1161 1156 1162 # CAO-CAO-CAT-CTT + 464 2 1156 1158 1157 1163 # CAT-CAM-CAO-HAT + 465 3 1157 1159 1158 1164 # CAO-CAP-CAM-HAT + 466 4 1158 1160 1159 1165 # CAM-CAM-CAP-HAT + 467 3 1161 1159 1160 1166 # CAO-CAP-CAM-HAT + 468 2 1156 1160 1161 1167 # CAT-CAM-CAO-HAT + 469 1 1172 1176 1171 1177 # CAO-CAO-CAT-CTT + 470 2 1171 1173 1172 1178 # CAT-CAM-CAO-HAT + 471 3 1172 1174 1173 1179 # CAO-CAP-CAM-HAT + 472 4 1173 1175 1174 1180 # CAM-CAM-CAP-HAT + 473 3 1176 1174 1175 1181 # CAO-CAP-CAM-HAT + 474 2 1171 1175 1176 1182 # CAT-CAM-CAO-HAT + 475 1 1187 1191 1186 1192 # CAO-CAO-CAT-CTT + 476 2 1186 1188 1187 1193 # CAT-CAM-CAO-HAT + 477 3 1187 1189 1188 1194 # CAO-CAP-CAM-HAT + 478 4 1188 1190 1189 1195 # CAM-CAM-CAP-HAT + 479 3 1191 1189 1190 1196 # CAO-CAP-CAM-HAT + 480 2 1186 1190 1191 1197 # CAT-CAM-CAO-HAT + 481 1 1202 1206 1201 1207 # CAO-CAO-CAT-CTT + 482 2 1201 1203 1202 1208 # CAT-CAM-CAO-HAT + 483 3 1202 1204 1203 1209 # CAO-CAP-CAM-HAT + 484 4 1203 1205 1204 1210 # CAM-CAM-CAP-HAT + 485 3 1206 1204 1205 1211 # CAO-CAP-CAM-HAT + 486 2 1201 1205 1206 1212 # CAT-CAM-CAO-HAT + 487 1 1217 1221 1216 1222 # CAO-CAO-CAT-CTT + 488 2 1216 1218 1217 1223 # CAT-CAM-CAO-HAT + 489 3 1217 1219 1218 1224 # CAO-CAP-CAM-HAT + 490 4 1218 1220 1219 1225 # CAM-CAM-CAP-HAT + 491 3 1221 1219 1220 1226 # CAO-CAP-CAM-HAT + 492 2 1216 1220 1221 1227 # CAT-CAM-CAO-HAT + 493 1 1232 1236 1231 1237 # CAO-CAO-CAT-CTT + 494 2 1231 1233 1232 1238 # CAT-CAM-CAO-HAT + 495 3 1232 1234 1233 1239 # CAO-CAP-CAM-HAT + 496 4 1233 1235 1234 1240 # CAM-CAM-CAP-HAT + 497 3 1236 1234 1235 1241 # CAO-CAP-CAM-HAT + 498 2 1231 1235 1236 1242 # CAT-CAM-CAO-HAT + 499 1 1247 1251 1246 1252 # CAO-CAO-CAT-CTT + 500 2 1246 1248 1247 1253 # CAT-CAM-CAO-HAT + 501 3 1247 1249 1248 1254 # CAO-CAP-CAM-HAT + 502 4 1248 1250 1249 1255 # CAM-CAM-CAP-HAT + 503 3 1251 1249 1250 1256 # CAO-CAP-CAM-HAT + 504 2 1246 1250 1251 1257 # CAT-CAM-CAO-HAT + 505 1 1262 1266 1261 1267 # CAO-CAO-CAT-CTT + 506 2 1261 1263 1262 1268 # CAT-CAM-CAO-HAT + 507 3 1262 1264 1263 1269 # CAO-CAP-CAM-HAT + 508 4 1263 1265 1264 1270 # CAM-CAM-CAP-HAT + 509 3 1266 1264 1265 1271 # CAO-CAP-CAM-HAT + 510 2 1261 1265 1266 1272 # CAT-CAM-CAO-HAT + 511 1 1277 1281 1276 1282 # CAO-CAO-CAT-CTT + 512 2 1276 1278 1277 1283 # CAT-CAM-CAO-HAT + 513 3 1277 1279 1278 1284 # CAO-CAP-CAM-HAT + 514 4 1278 1280 1279 1285 # CAM-CAM-CAP-HAT + 515 3 1281 1279 1280 1286 # CAO-CAP-CAM-HAT + 516 2 1276 1280 1281 1287 # CAT-CAM-CAO-HAT + 517 1 1292 1296 1291 1297 # CAO-CAO-CAT-CTT + 518 2 1291 1293 1292 1298 # CAT-CAM-CAO-HAT + 519 3 1292 1294 1293 1299 # CAO-CAP-CAM-HAT + 520 4 1293 1295 1294 1300 # CAM-CAM-CAP-HAT + 521 3 1296 1294 1295 1301 # CAO-CAP-CAM-HAT + 522 2 1291 1295 1296 1302 # CAT-CAM-CAO-HAT + 523 1 1307 1311 1306 1312 # CAO-CAO-CAT-CTT + 524 2 1306 1308 1307 1313 # CAT-CAM-CAO-HAT + 525 3 1307 1309 1308 1314 # CAO-CAP-CAM-HAT + 526 4 1308 1310 1309 1315 # CAM-CAM-CAP-HAT + 527 3 1311 1309 1310 1316 # CAO-CAP-CAM-HAT + 528 2 1306 1310 1311 1317 # CAT-CAM-CAO-HAT + 529 1 1322 1326 1321 1327 # CAO-CAO-CAT-CTT + 530 2 1321 1323 1322 1328 # CAT-CAM-CAO-HAT + 531 3 1322 1324 1323 1329 # CAO-CAP-CAM-HAT + 532 4 1323 1325 1324 1330 # CAM-CAM-CAP-HAT + 533 3 1326 1324 1325 1331 # CAO-CAP-CAM-HAT + 534 2 1321 1325 1326 1332 # CAT-CAM-CAO-HAT + 535 1 1337 1341 1336 1342 # CAO-CAO-CAT-CTT + 536 2 1336 1338 1337 1343 # CAT-CAM-CAO-HAT + 537 3 1337 1339 1338 1344 # CAO-CAP-CAM-HAT + 538 4 1338 1340 1339 1345 # CAM-CAM-CAP-HAT + 539 3 1341 1339 1340 1346 # CAO-CAP-CAM-HAT + 540 2 1336 1340 1341 1347 # CAT-CAM-CAO-HAT + 541 1 1352 1356 1351 1357 # CAO-CAO-CAT-CTT + 542 2 1351 1353 1352 1358 # CAT-CAM-CAO-HAT + 543 3 1352 1354 1353 1359 # CAO-CAP-CAM-HAT + 544 4 1353 1355 1354 1360 # CAM-CAM-CAP-HAT + 545 3 1356 1354 1355 1361 # CAO-CAP-CAM-HAT + 546 2 1351 1355 1356 1362 # CAT-CAM-CAO-HAT + 547 1 1367 1371 1366 1372 # CAO-CAO-CAT-CTT + 548 2 1366 1368 1367 1373 # CAT-CAM-CAO-HAT + 549 3 1367 1369 1368 1374 # CAO-CAP-CAM-HAT + 550 4 1368 1370 1369 1375 # CAM-CAM-CAP-HAT + 551 3 1371 1369 1370 1376 # CAO-CAP-CAM-HAT + 552 2 1366 1370 1371 1377 # CAT-CAM-CAO-HAT + 553 1 1382 1386 1381 1387 # CAO-CAO-CAT-CTT + 554 2 1381 1383 1382 1388 # CAT-CAM-CAO-HAT + 555 3 1382 1384 1383 1389 # CAO-CAP-CAM-HAT + 556 4 1383 1385 1384 1390 # CAM-CAM-CAP-HAT + 557 3 1386 1384 1385 1391 # CAO-CAP-CAM-HAT + 558 2 1381 1385 1386 1392 # CAT-CAM-CAO-HAT + 559 1 1397 1401 1396 1402 # CAO-CAO-CAT-CTT + 560 2 1396 1398 1397 1403 # CAT-CAM-CAO-HAT + 561 3 1397 1399 1398 1404 # CAO-CAP-CAM-HAT + 562 4 1398 1400 1399 1405 # CAM-CAM-CAP-HAT + 563 3 1401 1399 1400 1406 # CAO-CAP-CAM-HAT + 564 2 1396 1400 1401 1407 # CAT-CAM-CAO-HAT + 565 1 1412 1416 1411 1417 # CAO-CAO-CAT-CTT + 566 2 1411 1413 1412 1418 # CAT-CAM-CAO-HAT + 567 3 1412 1414 1413 1419 # CAO-CAP-CAM-HAT + 568 4 1413 1415 1414 1420 # CAM-CAM-CAP-HAT + 569 3 1416 1414 1415 1421 # CAO-CAP-CAM-HAT + 570 2 1411 1415 1416 1422 # CAT-CAM-CAO-HAT + 571 1 1427 1431 1426 1432 # CAO-CAO-CAT-CTT + 572 2 1426 1428 1427 1433 # CAT-CAM-CAO-HAT + 573 3 1427 1429 1428 1434 # CAO-CAP-CAM-HAT + 574 4 1428 1430 1429 1435 # CAM-CAM-CAP-HAT + 575 3 1431 1429 1430 1436 # CAO-CAP-CAM-HAT + 576 2 1426 1430 1431 1437 # CAT-CAM-CAO-HAT + 577 1 1442 1446 1441 1447 # CAO-CAO-CAT-CTT + 578 2 1441 1443 1442 1448 # CAT-CAM-CAO-HAT + 579 3 1442 1444 1443 1449 # CAO-CAP-CAM-HAT + 580 4 1443 1445 1444 1450 # CAM-CAM-CAP-HAT + 581 3 1446 1444 1445 1451 # CAO-CAP-CAM-HAT + 582 2 1441 1445 1446 1452 # CAT-CAM-CAO-HAT + 583 1 1457 1461 1456 1462 # CAO-CAO-CAT-CTT + 584 2 1456 1458 1457 1463 # CAT-CAM-CAO-HAT + 585 3 1457 1459 1458 1464 # CAO-CAP-CAM-HAT + 586 4 1458 1460 1459 1465 # CAM-CAM-CAP-HAT + 587 3 1461 1459 1460 1466 # CAO-CAP-CAM-HAT + 588 2 1456 1460 1461 1467 # CAT-CAM-CAO-HAT + 589 1 1472 1476 1471 1477 # CAO-CAO-CAT-CTT + 590 2 1471 1473 1472 1478 # CAT-CAM-CAO-HAT + 591 3 1472 1474 1473 1479 # CAO-CAP-CAM-HAT + 592 4 1473 1475 1474 1480 # CAM-CAM-CAP-HAT + 593 3 1476 1474 1475 1481 # CAO-CAP-CAM-HAT + 594 2 1471 1475 1476 1482 # CAT-CAM-CAO-HAT + 595 1 1487 1491 1486 1492 # CAO-CAO-CAT-CTT + 596 2 1486 1488 1487 1493 # CAT-CAM-CAO-HAT + 597 3 1487 1489 1488 1494 # CAO-CAP-CAM-HAT + 598 4 1488 1490 1489 1495 # CAM-CAM-CAP-HAT + 599 3 1491 1489 1490 1496 # CAO-CAP-CAM-HAT + 600 2 1486 1490 1491 1497 # CAT-CAM-CAO-HAT + 601 1 1502 1506 1501 1507 # CAO-CAO-CAT-CTT + 602 2 1501 1503 1502 1508 # CAT-CAM-CAO-HAT + 603 3 1502 1504 1503 1509 # CAO-CAP-CAM-HAT + 604 4 1503 1505 1504 1510 # CAM-CAM-CAP-HAT + 605 3 1506 1504 1505 1511 # CAO-CAP-CAM-HAT + 606 2 1501 1505 1506 1512 # CAT-CAM-CAO-HAT + 607 1 1517 1521 1516 1522 # CAO-CAO-CAT-CTT + 608 2 1516 1518 1517 1523 # CAT-CAM-CAO-HAT + 609 3 1517 1519 1518 1524 # CAO-CAP-CAM-HAT + 610 4 1518 1520 1519 1525 # CAM-CAM-CAP-HAT + 611 3 1521 1519 1520 1526 # CAO-CAP-CAM-HAT + 612 2 1516 1520 1521 1527 # CAT-CAM-CAO-HAT + 613 1 1532 1536 1531 1537 # CAO-CAO-CAT-CTT + 614 2 1531 1533 1532 1538 # CAT-CAM-CAO-HAT + 615 3 1532 1534 1533 1539 # CAO-CAP-CAM-HAT + 616 4 1533 1535 1534 1540 # CAM-CAM-CAP-HAT + 617 3 1536 1534 1535 1541 # CAO-CAP-CAM-HAT + 618 2 1531 1535 1536 1542 # CAT-CAM-CAO-HAT + 619 1 1547 1551 1546 1552 # CAO-CAO-CAT-CTT + 620 2 1546 1548 1547 1553 # CAT-CAM-CAO-HAT + 621 3 1547 1549 1548 1554 # CAO-CAP-CAM-HAT + 622 4 1548 1550 1549 1555 # CAM-CAM-CAP-HAT + 623 3 1551 1549 1550 1556 # CAO-CAP-CAM-HAT + 624 2 1546 1550 1551 1557 # CAT-CAM-CAO-HAT + 625 1 1562 1566 1561 1567 # CAO-CAO-CAT-CTT + 626 2 1561 1563 1562 1568 # CAT-CAM-CAO-HAT + 627 3 1562 1564 1563 1569 # CAO-CAP-CAM-HAT + 628 4 1563 1565 1564 1570 # CAM-CAM-CAP-HAT + 629 3 1566 1564 1565 1571 # CAO-CAP-CAM-HAT + 630 2 1561 1565 1566 1572 # CAT-CAM-CAO-HAT + 631 1 1577 1581 1576 1582 # CAO-CAO-CAT-CTT + 632 2 1576 1578 1577 1583 # CAT-CAM-CAO-HAT + 633 3 1577 1579 1578 1584 # CAO-CAP-CAM-HAT + 634 4 1578 1580 1579 1585 # CAM-CAM-CAP-HAT + 635 3 1581 1579 1580 1586 # CAO-CAP-CAM-HAT + 636 2 1576 1580 1581 1587 # CAT-CAM-CAO-HAT + 637 1 1592 1596 1591 1597 # CAO-CAO-CAT-CTT + 638 2 1591 1593 1592 1598 # CAT-CAM-CAO-HAT + 639 3 1592 1594 1593 1599 # CAO-CAP-CAM-HAT + 640 4 1593 1595 1594 1600 # CAM-CAM-CAP-HAT + 641 3 1596 1594 1595 1601 # CAO-CAP-CAM-HAT + 642 2 1591 1595 1596 1602 # CAT-CAM-CAO-HAT + 643 1 1607 1611 1606 1612 # CAO-CAO-CAT-CTT + 644 2 1606 1608 1607 1613 # CAT-CAM-CAO-HAT + 645 3 1607 1609 1608 1614 # CAO-CAP-CAM-HAT + 646 4 1608 1610 1609 1615 # CAM-CAM-CAP-HAT + 647 3 1611 1609 1610 1616 # CAO-CAP-CAM-HAT + 648 2 1606 1610 1611 1617 # CAT-CAM-CAO-HAT + 649 1 1622 1626 1621 1627 # CAO-CAO-CAT-CTT + 650 2 1621 1623 1622 1628 # CAT-CAM-CAO-HAT + 651 3 1622 1624 1623 1629 # CAO-CAP-CAM-HAT + 652 4 1623 1625 1624 1630 # CAM-CAM-CAP-HAT + 653 3 1626 1624 1625 1631 # CAO-CAP-CAM-HAT + 654 2 1621 1625 1626 1632 # CAT-CAM-CAO-HAT + 655 1 1637 1641 1636 1642 # CAO-CAO-CAT-CTT + 656 2 1636 1638 1637 1643 # CAT-CAM-CAO-HAT + 657 3 1637 1639 1638 1644 # CAO-CAP-CAM-HAT + 658 4 1638 1640 1639 1645 # CAM-CAM-CAP-HAT + 659 3 1641 1639 1640 1646 # CAO-CAP-CAM-HAT + 660 2 1636 1640 1641 1647 # CAT-CAM-CAO-HAT + 661 1 1652 1656 1651 1657 # CAO-CAO-CAT-CTT + 662 2 1651 1653 1652 1658 # CAT-CAM-CAO-HAT + 663 3 1652 1654 1653 1659 # CAO-CAP-CAM-HAT + 664 4 1653 1655 1654 1660 # CAM-CAM-CAP-HAT + 665 3 1656 1654 1655 1661 # CAO-CAP-CAM-HAT + 666 2 1651 1655 1656 1662 # CAT-CAM-CAO-HAT + 667 1 1667 1671 1666 1672 # CAO-CAO-CAT-CTT + 668 2 1666 1668 1667 1673 # CAT-CAM-CAO-HAT + 669 3 1667 1669 1668 1674 # CAO-CAP-CAM-HAT + 670 4 1668 1670 1669 1675 # CAM-CAM-CAP-HAT + 671 3 1671 1669 1670 1676 # CAO-CAP-CAM-HAT + 672 2 1666 1670 1671 1677 # CAT-CAM-CAO-HAT + 673 1 1682 1686 1681 1687 # CAO-CAO-CAT-CTT + 674 2 1681 1683 1682 1688 # CAT-CAM-CAO-HAT + 675 3 1682 1684 1683 1689 # CAO-CAP-CAM-HAT + 676 4 1683 1685 1684 1690 # CAM-CAM-CAP-HAT + 677 3 1686 1684 1685 1691 # CAO-CAP-CAM-HAT + 678 2 1681 1685 1686 1692 # CAT-CAM-CAO-HAT + 679 1 1697 1701 1696 1702 # CAO-CAO-CAT-CTT + 680 2 1696 1698 1697 1703 # CAT-CAM-CAO-HAT + 681 3 1697 1699 1698 1704 # CAO-CAP-CAM-HAT + 682 4 1698 1700 1699 1705 # CAM-CAM-CAP-HAT + 683 3 1701 1699 1700 1706 # CAO-CAP-CAM-HAT + 684 2 1696 1700 1701 1707 # CAT-CAM-CAO-HAT + 685 1 1712 1716 1711 1717 # CAO-CAO-CAT-CTT + 686 2 1711 1713 1712 1718 # CAT-CAM-CAO-HAT + 687 3 1712 1714 1713 1719 # CAO-CAP-CAM-HAT + 688 4 1713 1715 1714 1720 # CAM-CAM-CAP-HAT + 689 3 1716 1714 1715 1721 # CAO-CAP-CAM-HAT + 690 2 1711 1715 1716 1722 # CAT-CAM-CAO-HAT + 691 1 1727 1731 1726 1732 # CAO-CAO-CAT-CTT + 692 2 1726 1728 1727 1733 # CAT-CAM-CAO-HAT + 693 3 1727 1729 1728 1734 # CAO-CAP-CAM-HAT + 694 4 1728 1730 1729 1735 # CAM-CAM-CAP-HAT + 695 3 1731 1729 1730 1736 # CAO-CAP-CAM-HAT + 696 2 1726 1730 1731 1737 # CAT-CAM-CAO-HAT + 697 1 1742 1746 1741 1747 # CAO-CAO-CAT-CTT + 698 2 1741 1743 1742 1748 # CAT-CAM-CAO-HAT + 699 3 1742 1744 1743 1749 # CAO-CAP-CAM-HAT + 700 4 1743 1745 1744 1750 # CAM-CAM-CAP-HAT + 701 3 1746 1744 1745 1751 # CAO-CAP-CAM-HAT + 702 2 1741 1745 1746 1752 # CAT-CAM-CAO-HAT + 703 1 1757 1761 1756 1762 # CAO-CAO-CAT-CTT + 704 2 1756 1758 1757 1763 # CAT-CAM-CAO-HAT + 705 3 1757 1759 1758 1764 # CAO-CAP-CAM-HAT + 706 4 1758 1760 1759 1765 # CAM-CAM-CAP-HAT + 707 3 1761 1759 1760 1766 # CAO-CAP-CAM-HAT + 708 2 1756 1760 1761 1767 # CAT-CAM-CAO-HAT + 709 1 1772 1776 1771 1777 # CAO-CAO-CAT-CTT + 710 2 1771 1773 1772 1778 # CAT-CAM-CAO-HAT + 711 3 1772 1774 1773 1779 # CAO-CAP-CAM-HAT + 712 4 1773 1775 1774 1780 # CAM-CAM-CAP-HAT + 713 3 1776 1774 1775 1781 # CAO-CAP-CAM-HAT + 714 2 1771 1775 1776 1782 # CAT-CAM-CAO-HAT + 715 1 1787 1791 1786 1792 # CAO-CAO-CAT-CTT + 716 2 1786 1788 1787 1793 # CAT-CAM-CAO-HAT + 717 3 1787 1789 1788 1794 # CAO-CAP-CAM-HAT + 718 4 1788 1790 1789 1795 # CAM-CAM-CAP-HAT + 719 3 1791 1789 1790 1796 # CAO-CAP-CAM-HAT + 720 2 1786 1790 1791 1797 # CAT-CAM-CAO-HAT + 721 1 1802 1806 1801 1807 # CAO-CAO-CAT-CTT + 722 2 1801 1803 1802 1808 # CAT-CAM-CAO-HAT + 723 3 1802 1804 1803 1809 # CAO-CAP-CAM-HAT + 724 4 1803 1805 1804 1810 # CAM-CAM-CAP-HAT + 725 3 1806 1804 1805 1811 # CAO-CAP-CAM-HAT + 726 2 1801 1805 1806 1812 # CAT-CAM-CAO-HAT + 727 1 1817 1821 1816 1822 # CAO-CAO-CAT-CTT + 728 2 1816 1818 1817 1823 # CAT-CAM-CAO-HAT + 729 3 1817 1819 1818 1824 # CAO-CAP-CAM-HAT + 730 4 1818 1820 1819 1825 # CAM-CAM-CAP-HAT + 731 3 1821 1819 1820 1826 # CAO-CAP-CAM-HAT + 732 2 1816 1820 1821 1827 # CAT-CAM-CAO-HAT + 733 1 1832 1836 1831 1837 # CAO-CAO-CAT-CTT + 734 2 1831 1833 1832 1838 # CAT-CAM-CAO-HAT + 735 3 1832 1834 1833 1839 # CAO-CAP-CAM-HAT + 736 4 1833 1835 1834 1840 # CAM-CAM-CAP-HAT + 737 3 1836 1834 1835 1841 # CAO-CAP-CAM-HAT + 738 2 1831 1835 1836 1842 # CAT-CAM-CAO-HAT + 739 1 1847 1851 1846 1852 # CAO-CAO-CAT-CTT + 740 2 1846 1848 1847 1853 # CAT-CAM-CAO-HAT + 741 3 1847 1849 1848 1854 # CAO-CAP-CAM-HAT + 742 4 1848 1850 1849 1855 # CAM-CAM-CAP-HAT + 743 3 1851 1849 1850 1856 # CAO-CAP-CAM-HAT + 744 2 1846 1850 1851 1857 # CAT-CAM-CAO-HAT + 745 1 1862 1866 1861 1867 # CAO-CAO-CAT-CTT + 746 2 1861 1863 1862 1868 # CAT-CAM-CAO-HAT + 747 3 1862 1864 1863 1869 # CAO-CAP-CAM-HAT + 748 4 1863 1865 1864 1870 # CAM-CAM-CAP-HAT + 749 3 1866 1864 1865 1871 # CAO-CAP-CAM-HAT + 750 2 1861 1865 1866 1872 # CAT-CAM-CAO-HAT + 751 1 1877 1881 1876 1882 # CAO-CAO-CAT-CTT + 752 2 1876 1878 1877 1883 # CAT-CAM-CAO-HAT + 753 3 1877 1879 1878 1884 # CAO-CAP-CAM-HAT + 754 4 1878 1880 1879 1885 # CAM-CAM-CAP-HAT + 755 3 1881 1879 1880 1886 # CAO-CAP-CAM-HAT + 756 2 1876 1880 1881 1887 # CAT-CAM-CAO-HAT + 757 1 1892 1896 1891 1897 # CAO-CAO-CAT-CTT + 758 2 1891 1893 1892 1898 # CAT-CAM-CAO-HAT + 759 3 1892 1894 1893 1899 # CAO-CAP-CAM-HAT + 760 4 1893 1895 1894 1900 # CAM-CAM-CAP-HAT + 761 3 1896 1894 1895 1901 # CAO-CAP-CAM-HAT + 762 2 1891 1895 1896 1902 # CAT-CAM-CAO-HAT + 763 1 1907 1911 1906 1912 # CAO-CAO-CAT-CTT + 764 2 1906 1908 1907 1913 # CAT-CAM-CAO-HAT + 765 3 1907 1909 1908 1914 # CAO-CAP-CAM-HAT + 766 4 1908 1910 1909 1915 # CAM-CAM-CAP-HAT + 767 3 1911 1909 1910 1916 # CAO-CAP-CAM-HAT + 768 2 1906 1910 1911 1917 # CAT-CAM-CAO-HAT + 769 1 1922 1926 1921 1927 # CAO-CAO-CAT-CTT + 770 2 1921 1923 1922 1928 # CAT-CAM-CAO-HAT + 771 3 1922 1924 1923 1929 # CAO-CAP-CAM-HAT + 772 4 1923 1925 1924 1930 # CAM-CAM-CAP-HAT + 773 3 1926 1924 1925 1931 # CAO-CAP-CAM-HAT + 774 2 1921 1925 1926 1932 # CAT-CAM-CAO-HAT + 775 1 1937 1941 1936 1942 # CAO-CAO-CAT-CTT + 776 2 1936 1938 1937 1943 # CAT-CAM-CAO-HAT + 777 3 1937 1939 1938 1944 # CAO-CAP-CAM-HAT + 778 4 1938 1940 1939 1945 # CAM-CAM-CAP-HAT + 779 3 1941 1939 1940 1946 # CAO-CAP-CAM-HAT + 780 2 1936 1940 1941 1947 # CAT-CAM-CAO-HAT + 781 1 1952 1956 1951 1957 # CAO-CAO-CAT-CTT + 782 2 1951 1953 1952 1958 # CAT-CAM-CAO-HAT + 783 3 1952 1954 1953 1959 # CAO-CAP-CAM-HAT + 784 4 1953 1955 1954 1960 # CAM-CAM-CAP-HAT + 785 3 1956 1954 1955 1961 # CAO-CAP-CAM-HAT + 786 2 1951 1955 1956 1962 # CAT-CAM-CAO-HAT + 787 1 1967 1971 1966 1972 # CAO-CAO-CAT-CTT + 788 2 1966 1968 1967 1973 # CAT-CAM-CAO-HAT + 789 3 1967 1969 1968 1974 # CAO-CAP-CAM-HAT + 790 4 1968 1970 1969 1975 # CAM-CAM-CAP-HAT + 791 3 1971 1969 1970 1976 # CAO-CAP-CAM-HAT + 792 2 1966 1970 1971 1977 # CAT-CAM-CAO-HAT + 793 1 1982 1986 1981 1987 # CAO-CAO-CAT-CTT + 794 2 1981 1983 1982 1988 # CAT-CAM-CAO-HAT + 795 3 1982 1984 1983 1989 # CAO-CAP-CAM-HAT + 796 4 1983 1985 1984 1990 # CAM-CAM-CAP-HAT + 797 3 1986 1984 1985 1991 # CAO-CAP-CAM-HAT + 798 2 1981 1985 1986 1992 # CAT-CAM-CAO-HAT + 799 1 1997 2001 1996 2002 # CAO-CAO-CAT-CTT + 800 2 1996 1998 1997 2003 # CAT-CAM-CAO-HAT + 801 3 1997 1999 1998 2004 # CAO-CAP-CAM-HAT + 802 4 1998 2000 1999 2005 # CAM-CAM-CAP-HAT + 803 3 2001 1999 2000 2006 # CAO-CAP-CAM-HAT + 804 2 1996 2000 2001 2007 # CAT-CAM-CAO-HAT + 805 1 2012 2016 2011 2017 # CAO-CAO-CAT-CTT + 806 2 2011 2013 2012 2018 # CAT-CAM-CAO-HAT + 807 3 2012 2014 2013 2019 # CAO-CAP-CAM-HAT + 808 4 2013 2015 2014 2020 # CAM-CAM-CAP-HAT + 809 3 2016 2014 2015 2021 # CAO-CAP-CAM-HAT + 810 2 2011 2015 2016 2022 # CAT-CAM-CAO-HAT + 811 1 2027 2031 2026 2032 # CAO-CAO-CAT-CTT + 812 2 2026 2028 2027 2033 # CAT-CAM-CAO-HAT + 813 3 2027 2029 2028 2034 # CAO-CAP-CAM-HAT + 814 4 2028 2030 2029 2035 # CAM-CAM-CAP-HAT + 815 3 2031 2029 2030 2036 # CAO-CAP-CAM-HAT + 816 2 2026 2030 2031 2037 # CAT-CAM-CAO-HAT + 817 1 2042 2046 2041 2047 # CAO-CAO-CAT-CTT + 818 2 2041 2043 2042 2048 # CAT-CAM-CAO-HAT + 819 3 2042 2044 2043 2049 # CAO-CAP-CAM-HAT + 820 4 2043 2045 2044 2050 # CAM-CAM-CAP-HAT + 821 3 2046 2044 2045 2051 # CAO-CAP-CAM-HAT + 822 2 2041 2045 2046 2052 # CAT-CAM-CAO-HAT + 823 1 2057 2061 2056 2062 # CAO-CAO-CAT-CTT + 824 2 2056 2058 2057 2063 # CAT-CAM-CAO-HAT + 825 3 2057 2059 2058 2064 # CAO-CAP-CAM-HAT + 826 4 2058 2060 2059 2065 # CAM-CAM-CAP-HAT + 827 3 2061 2059 2060 2066 # CAO-CAP-CAM-HAT + 828 2 2056 2060 2061 2067 # CAT-CAM-CAO-HAT + 829 1 2072 2076 2071 2077 # CAO-CAO-CAT-CTT + 830 2 2071 2073 2072 2078 # CAT-CAM-CAO-HAT + 831 3 2072 2074 2073 2079 # CAO-CAP-CAM-HAT + 832 4 2073 2075 2074 2080 # CAM-CAM-CAP-HAT + 833 3 2076 2074 2075 2081 # CAO-CAP-CAM-HAT + 834 2 2071 2075 2076 2082 # CAT-CAM-CAO-HAT + 835 1 2087 2091 2086 2092 # CAO-CAO-CAT-CTT + 836 2 2086 2088 2087 2093 # CAT-CAM-CAO-HAT + 837 3 2087 2089 2088 2094 # CAO-CAP-CAM-HAT + 838 4 2088 2090 2089 2095 # CAM-CAM-CAP-HAT + 839 3 2091 2089 2090 2096 # CAO-CAP-CAM-HAT + 840 2 2086 2090 2091 2097 # CAT-CAM-CAO-HAT + 841 1 2102 2106 2101 2107 # CAO-CAO-CAT-CTT + 842 2 2101 2103 2102 2108 # CAT-CAM-CAO-HAT + 843 3 2102 2104 2103 2109 # CAO-CAP-CAM-HAT + 844 4 2103 2105 2104 2110 # CAM-CAM-CAP-HAT + 845 3 2106 2104 2105 2111 # CAO-CAP-CAM-HAT + 846 2 2101 2105 2106 2112 # CAT-CAM-CAO-HAT + 847 1 2117 2121 2116 2122 # CAO-CAO-CAT-CTT + 848 2 2116 2118 2117 2123 # CAT-CAM-CAO-HAT + 849 3 2117 2119 2118 2124 # CAO-CAP-CAM-HAT + 850 4 2118 2120 2119 2125 # CAM-CAM-CAP-HAT + 851 3 2121 2119 2120 2126 # CAO-CAP-CAM-HAT + 852 2 2116 2120 2121 2127 # CAT-CAM-CAO-HAT + 853 1 2132 2136 2131 2137 # CAO-CAO-CAT-CTT + 854 2 2131 2133 2132 2138 # CAT-CAM-CAO-HAT + 855 3 2132 2134 2133 2139 # CAO-CAP-CAM-HAT + 856 4 2133 2135 2134 2140 # CAM-CAM-CAP-HAT + 857 3 2136 2134 2135 2141 # CAO-CAP-CAM-HAT + 858 2 2131 2135 2136 2142 # CAT-CAM-CAO-HAT + 859 1 2147 2151 2146 2152 # CAO-CAO-CAT-CTT + 860 2 2146 2148 2147 2153 # CAT-CAM-CAO-HAT + 861 3 2147 2149 2148 2154 # CAO-CAP-CAM-HAT + 862 4 2148 2150 2149 2155 # CAM-CAM-CAP-HAT + 863 3 2151 2149 2150 2156 # CAO-CAP-CAM-HAT + 864 2 2146 2150 2151 2157 # CAT-CAM-CAO-HAT + 865 1 2162 2166 2161 2167 # CAO-CAO-CAT-CTT + 866 2 2161 2163 2162 2168 # CAT-CAM-CAO-HAT + 867 3 2162 2164 2163 2169 # CAO-CAP-CAM-HAT + 868 4 2163 2165 2164 2170 # CAM-CAM-CAP-HAT + 869 3 2166 2164 2165 2171 # CAO-CAP-CAM-HAT + 870 2 2161 2165 2166 2172 # CAT-CAM-CAO-HAT + 871 1 2177 2181 2176 2182 # CAO-CAO-CAT-CTT + 872 2 2176 2178 2177 2183 # CAT-CAM-CAO-HAT + 873 3 2177 2179 2178 2184 # CAO-CAP-CAM-HAT + 874 4 2178 2180 2179 2185 # CAM-CAM-CAP-HAT + 875 3 2181 2179 2180 2186 # CAO-CAP-CAM-HAT + 876 2 2176 2180 2181 2187 # CAT-CAM-CAO-HAT + 877 1 2192 2196 2191 2197 # CAO-CAO-CAT-CTT + 878 2 2191 2193 2192 2198 # CAT-CAM-CAO-HAT + 879 3 2192 2194 2193 2199 # CAO-CAP-CAM-HAT + 880 4 2193 2195 2194 2200 # CAM-CAM-CAP-HAT + 881 3 2196 2194 2195 2201 # CAO-CAP-CAM-HAT + 882 2 2191 2195 2196 2202 # CAT-CAM-CAO-HAT + 883 1 2207 2211 2206 2212 # CAO-CAO-CAT-CTT + 884 2 2206 2208 2207 2213 # CAT-CAM-CAO-HAT + 885 3 2207 2209 2208 2214 # CAO-CAP-CAM-HAT + 886 4 2208 2210 2209 2215 # CAM-CAM-CAP-HAT + 887 3 2211 2209 2210 2216 # CAO-CAP-CAM-HAT + 888 2 2206 2210 2211 2217 # CAT-CAM-CAO-HAT + 889 1 2222 2226 2221 2227 # CAO-CAO-CAT-CTT + 890 2 2221 2223 2222 2228 # CAT-CAM-CAO-HAT + 891 3 2222 2224 2223 2229 # CAO-CAP-CAM-HAT + 892 4 2223 2225 2224 2230 # CAM-CAM-CAP-HAT + 893 3 2226 2224 2225 2231 # CAO-CAP-CAM-HAT + 894 2 2221 2225 2226 2232 # CAT-CAM-CAO-HAT + 895 1 2237 2241 2236 2242 # CAO-CAO-CAT-CTT + 896 2 2236 2238 2237 2243 # CAT-CAM-CAO-HAT + 897 3 2237 2239 2238 2244 # CAO-CAP-CAM-HAT + 898 4 2238 2240 2239 2245 # CAM-CAM-CAP-HAT + 899 3 2241 2239 2240 2246 # CAO-CAP-CAM-HAT + 900 2 2236 2240 2241 2247 # CAT-CAM-CAO-HAT + 901 1 2252 2256 2251 2257 # CAO-CAO-CAT-CTT + 902 2 2251 2253 2252 2258 # CAT-CAM-CAO-HAT + 903 3 2252 2254 2253 2259 # CAO-CAP-CAM-HAT + 904 4 2253 2255 2254 2260 # CAM-CAM-CAP-HAT + 905 3 2256 2254 2255 2261 # CAO-CAP-CAM-HAT + 906 2 2251 2255 2256 2262 # CAT-CAM-CAO-HAT + 907 1 2267 2271 2266 2272 # CAO-CAO-CAT-CTT + 908 2 2266 2268 2267 2273 # CAT-CAM-CAO-HAT + 909 3 2267 2269 2268 2274 # CAO-CAP-CAM-HAT + 910 4 2268 2270 2269 2275 # CAM-CAM-CAP-HAT + 911 3 2271 2269 2270 2276 # CAO-CAP-CAM-HAT + 912 2 2266 2270 2271 2277 # CAT-CAM-CAO-HAT + 913 1 2282 2286 2281 2287 # CAO-CAO-CAT-CTT + 914 2 2281 2283 2282 2288 # CAT-CAM-CAO-HAT + 915 3 2282 2284 2283 2289 # CAO-CAP-CAM-HAT + 916 4 2283 2285 2284 2290 # CAM-CAM-CAP-HAT + 917 3 2286 2284 2285 2291 # CAO-CAP-CAM-HAT + 918 2 2281 2285 2286 2292 # CAT-CAM-CAO-HAT + 919 1 2297 2301 2296 2302 # CAO-CAO-CAT-CTT + 920 2 2296 2298 2297 2303 # CAT-CAM-CAO-HAT + 921 3 2297 2299 2298 2304 # CAO-CAP-CAM-HAT + 922 4 2298 2300 2299 2305 # CAM-CAM-CAP-HAT + 923 3 2301 2299 2300 2306 # CAO-CAP-CAM-HAT + 924 2 2296 2300 2301 2307 # CAT-CAM-CAO-HAT + 925 1 2312 2316 2311 2317 # CAO-CAO-CAT-CTT + 926 2 2311 2313 2312 2318 # CAT-CAM-CAO-HAT + 927 3 2312 2314 2313 2319 # CAO-CAP-CAM-HAT + 928 4 2313 2315 2314 2320 # CAM-CAM-CAP-HAT + 929 3 2316 2314 2315 2321 # CAO-CAP-CAM-HAT + 930 2 2311 2315 2316 2322 # CAT-CAM-CAO-HAT + 931 1 2327 2331 2326 2332 # CAO-CAO-CAT-CTT + 932 2 2326 2328 2327 2333 # CAT-CAM-CAO-HAT + 933 3 2327 2329 2328 2334 # CAO-CAP-CAM-HAT + 934 4 2328 2330 2329 2335 # CAM-CAM-CAP-HAT + 935 3 2331 2329 2330 2336 # CAO-CAP-CAM-HAT + 936 2 2326 2330 2331 2337 # CAT-CAM-CAO-HAT + 937 1 2342 2346 2341 2347 # CAO-CAO-CAT-CTT + 938 2 2341 2343 2342 2348 # CAT-CAM-CAO-HAT + 939 3 2342 2344 2343 2349 # CAO-CAP-CAM-HAT + 940 4 2343 2345 2344 2350 # CAM-CAM-CAP-HAT + 941 3 2346 2344 2345 2351 # CAO-CAP-CAM-HAT + 942 2 2341 2345 2346 2352 # CAT-CAM-CAO-HAT + 943 1 2357 2361 2356 2362 # CAO-CAO-CAT-CTT + 944 2 2356 2358 2357 2363 # CAT-CAM-CAO-HAT + 945 3 2357 2359 2358 2364 # CAO-CAP-CAM-HAT + 946 4 2358 2360 2359 2365 # CAM-CAM-CAP-HAT + 947 3 2361 2359 2360 2366 # CAO-CAP-CAM-HAT + 948 2 2356 2360 2361 2367 # CAT-CAM-CAO-HAT + 949 1 2372 2376 2371 2377 # CAO-CAO-CAT-CTT + 950 2 2371 2373 2372 2378 # CAT-CAM-CAO-HAT + 951 3 2372 2374 2373 2379 # CAO-CAP-CAM-HAT + 952 4 2373 2375 2374 2380 # CAM-CAM-CAP-HAT + 953 3 2376 2374 2375 2381 # CAO-CAP-CAM-HAT + 954 2 2371 2375 2376 2382 # CAT-CAM-CAO-HAT + 955 1 2387 2391 2386 2392 # CAO-CAO-CAT-CTT + 956 2 2386 2388 2387 2393 # CAT-CAM-CAO-HAT + 957 3 2387 2389 2388 2394 # CAO-CAP-CAM-HAT + 958 4 2388 2390 2389 2395 # CAM-CAM-CAP-HAT + 959 3 2391 2389 2390 2396 # CAO-CAP-CAM-HAT + 960 2 2386 2390 2391 2397 # CAT-CAM-CAO-HAT + 961 1 2402 2406 2401 2407 # CAO-CAO-CAT-CTT + 962 2 2401 2403 2402 2408 # CAT-CAM-CAO-HAT + 963 3 2402 2404 2403 2409 # CAO-CAP-CAM-HAT + 964 4 2403 2405 2404 2410 # CAM-CAM-CAP-HAT + 965 3 2406 2404 2405 2411 # CAO-CAP-CAM-HAT + 966 2 2401 2405 2406 2412 # CAT-CAM-CAO-HAT + 967 1 2417 2421 2416 2422 # CAO-CAO-CAT-CTT + 968 2 2416 2418 2417 2423 # CAT-CAM-CAO-HAT + 969 3 2417 2419 2418 2424 # CAO-CAP-CAM-HAT + 970 4 2418 2420 2419 2425 # CAM-CAM-CAP-HAT + 971 3 2421 2419 2420 2426 # CAO-CAP-CAM-HAT + 972 2 2416 2420 2421 2427 # CAT-CAM-CAO-HAT + 973 1 2432 2436 2431 2437 # CAO-CAO-CAT-CTT + 974 2 2431 2433 2432 2438 # CAT-CAM-CAO-HAT + 975 3 2432 2434 2433 2439 # CAO-CAP-CAM-HAT + 976 4 2433 2435 2434 2440 # CAM-CAM-CAP-HAT + 977 3 2436 2434 2435 2441 # CAO-CAP-CAM-HAT + 978 2 2431 2435 2436 2442 # CAT-CAM-CAO-HAT + 979 1 2447 2451 2446 2452 # CAO-CAO-CAT-CTT + 980 2 2446 2448 2447 2453 # CAT-CAM-CAO-HAT + 981 3 2447 2449 2448 2454 # CAO-CAP-CAM-HAT + 982 4 2448 2450 2449 2455 # CAM-CAM-CAP-HAT + 983 3 2451 2449 2450 2456 # CAO-CAP-CAM-HAT + 984 2 2446 2450 2451 2457 # CAT-CAM-CAO-HAT + 985 1 2462 2466 2461 2467 # CAO-CAO-CAT-CTT + 986 2 2461 2463 2462 2468 # CAT-CAM-CAO-HAT + 987 3 2462 2464 2463 2469 # CAO-CAP-CAM-HAT + 988 4 2463 2465 2464 2470 # CAM-CAM-CAP-HAT + 989 3 2466 2464 2465 2471 # CAO-CAP-CAM-HAT + 990 2 2461 2465 2466 2472 # CAT-CAM-CAO-HAT + 991 1 2477 2481 2476 2482 # CAO-CAO-CAT-CTT + 992 2 2476 2478 2477 2483 # CAT-CAM-CAO-HAT + 993 3 2477 2479 2478 2484 # CAO-CAP-CAM-HAT + 994 4 2478 2480 2479 2485 # CAM-CAM-CAP-HAT + 995 3 2481 2479 2480 2486 # CAO-CAP-CAM-HAT + 996 2 2476 2480 2481 2487 # CAT-CAM-CAO-HAT + 997 1 2492 2496 2491 2497 # CAO-CAO-CAT-CTT + 998 2 2491 2493 2492 2498 # CAT-CAM-CAO-HAT + 999 3 2492 2494 2493 2499 # CAO-CAP-CAM-HAT + 1000 4 2493 2495 2494 2500 # CAM-CAM-CAP-HAT + 1001 3 2496 2494 2495 2501 # CAO-CAP-CAM-HAT + 1002 2 2491 2495 2496 2502 # CAT-CAM-CAO-HAT + 1003 1 2507 2511 2506 2512 # CAO-CAO-CAT-CTT + 1004 2 2506 2508 2507 2513 # CAT-CAM-CAO-HAT + 1005 3 2507 2509 2508 2514 # CAO-CAP-CAM-HAT + 1006 4 2508 2510 2509 2515 # CAM-CAM-CAP-HAT + 1007 3 2511 2509 2510 2516 # CAO-CAP-CAM-HAT + 1008 2 2506 2510 2511 2517 # CAT-CAM-CAO-HAT + 1009 1 2522 2526 2521 2527 # CAO-CAO-CAT-CTT + 1010 2 2521 2523 2522 2528 # CAT-CAM-CAO-HAT + 1011 3 2522 2524 2523 2529 # CAO-CAP-CAM-HAT + 1012 4 2523 2525 2524 2530 # CAM-CAM-CAP-HAT + 1013 3 2526 2524 2525 2531 # CAO-CAP-CAM-HAT + 1014 2 2521 2525 2526 2532 # CAT-CAM-CAO-HAT + 1015 1 2537 2541 2536 2542 # CAO-CAO-CAT-CTT + 1016 2 2536 2538 2537 2543 # CAT-CAM-CAO-HAT + 1017 3 2537 2539 2538 2544 # CAO-CAP-CAM-HAT + 1018 4 2538 2540 2539 2545 # CAM-CAM-CAP-HAT + 1019 3 2541 2539 2540 2546 # CAO-CAP-CAM-HAT + 1020 2 2536 2540 2541 2547 # CAT-CAM-CAO-HAT + 1021 1 2552 2556 2551 2557 # CAO-CAO-CAT-CTT + 1022 2 2551 2553 2552 2558 # CAT-CAM-CAO-HAT + 1023 3 2552 2554 2553 2559 # CAO-CAP-CAM-HAT + 1024 4 2553 2555 2554 2560 # CAM-CAM-CAP-HAT + 1025 3 2556 2554 2555 2561 # CAO-CAP-CAM-HAT + 1026 2 2551 2555 2556 2562 # CAT-CAM-CAO-HAT + 1027 1 2567 2571 2566 2572 # CAO-CAO-CAT-CTT + 1028 2 2566 2568 2567 2573 # CAT-CAM-CAO-HAT + 1029 3 2567 2569 2568 2574 # CAO-CAP-CAM-HAT + 1030 4 2568 2570 2569 2575 # CAM-CAM-CAP-HAT + 1031 3 2571 2569 2570 2576 # CAO-CAP-CAM-HAT + 1032 2 2566 2570 2571 2577 # CAT-CAM-CAO-HAT + 1033 1 2582 2586 2581 2587 # CAO-CAO-CAT-CTT + 1034 2 2581 2583 2582 2588 # CAT-CAM-CAO-HAT + 1035 3 2582 2584 2583 2589 # CAO-CAP-CAM-HAT + 1036 4 2583 2585 2584 2590 # CAM-CAM-CAP-HAT + 1037 3 2586 2584 2585 2591 # CAO-CAP-CAM-HAT + 1038 2 2581 2585 2586 2592 # CAT-CAM-CAO-HAT + 1039 1 2597 2601 2596 2602 # CAO-CAO-CAT-CTT + 1040 2 2596 2598 2597 2603 # CAT-CAM-CAO-HAT + 1041 3 2597 2599 2598 2604 # CAO-CAP-CAM-HAT + 1042 4 2598 2600 2599 2605 # CAM-CAM-CAP-HAT + 1043 3 2601 2599 2600 2606 # CAO-CAP-CAM-HAT + 1044 2 2596 2600 2601 2607 # CAT-CAM-CAO-HAT + 1045 1 2612 2616 2611 2617 # CAO-CAO-CAT-CTT + 1046 2 2611 2613 2612 2618 # CAT-CAM-CAO-HAT + 1047 3 2612 2614 2613 2619 # CAO-CAP-CAM-HAT + 1048 4 2613 2615 2614 2620 # CAM-CAM-CAP-HAT + 1049 3 2616 2614 2615 2621 # CAO-CAP-CAM-HAT + 1050 2 2611 2615 2616 2622 # CAT-CAM-CAO-HAT + 1051 1 2627 2631 2626 2632 # CAO-CAO-CAT-CTT + 1052 2 2626 2628 2627 2633 # CAT-CAM-CAO-HAT + 1053 3 2627 2629 2628 2634 # CAO-CAP-CAM-HAT + 1054 4 2628 2630 2629 2635 # CAM-CAM-CAP-HAT + 1055 3 2631 2629 2630 2636 # CAO-CAP-CAM-HAT + 1056 2 2626 2630 2631 2637 # CAT-CAM-CAO-HAT + 1057 1 2642 2646 2641 2647 # CAO-CAO-CAT-CTT + 1058 2 2641 2643 2642 2648 # CAT-CAM-CAO-HAT + 1059 3 2642 2644 2643 2649 # CAO-CAP-CAM-HAT + 1060 4 2643 2645 2644 2650 # CAM-CAM-CAP-HAT + 1061 3 2646 2644 2645 2651 # CAO-CAP-CAM-HAT + 1062 2 2641 2645 2646 2652 # CAT-CAM-CAO-HAT + 1063 1 2657 2661 2656 2662 # CAO-CAO-CAT-CTT + 1064 2 2656 2658 2657 2663 # CAT-CAM-CAO-HAT + 1065 3 2657 2659 2658 2664 # CAO-CAP-CAM-HAT + 1066 4 2658 2660 2659 2665 # CAM-CAM-CAP-HAT + 1067 3 2661 2659 2660 2666 # CAO-CAP-CAM-HAT + 1068 2 2656 2660 2661 2667 # CAT-CAM-CAO-HAT + 1069 1 2672 2676 2671 2677 # CAO-CAO-CAT-CTT + 1070 2 2671 2673 2672 2678 # CAT-CAM-CAO-HAT + 1071 3 2672 2674 2673 2679 # CAO-CAP-CAM-HAT + 1072 4 2673 2675 2674 2680 # CAM-CAM-CAP-HAT + 1073 3 2676 2674 2675 2681 # CAO-CAP-CAM-HAT + 1074 2 2671 2675 2676 2682 # CAT-CAM-CAO-HAT + 1075 1 2687 2691 2686 2692 # CAO-CAO-CAT-CTT + 1076 2 2686 2688 2687 2693 # CAT-CAM-CAO-HAT + 1077 3 2687 2689 2688 2694 # CAO-CAP-CAM-HAT + 1078 4 2688 2690 2689 2695 # CAM-CAM-CAP-HAT + 1079 3 2691 2689 2690 2696 # CAO-CAP-CAM-HAT + 1080 2 2686 2690 2691 2697 # CAT-CAM-CAO-HAT + 1081 1 2702 2706 2701 2707 # CAO-CAO-CAT-CTT + 1082 2 2701 2703 2702 2708 # CAT-CAM-CAO-HAT + 1083 3 2702 2704 2703 2709 # CAO-CAP-CAM-HAT + 1084 4 2703 2705 2704 2710 # CAM-CAM-CAP-HAT + 1085 3 2706 2704 2705 2711 # CAO-CAP-CAM-HAT + 1086 2 2701 2705 2706 2712 # CAT-CAM-CAO-HAT + 1087 1 2717 2721 2716 2722 # CAO-CAO-CAT-CTT + 1088 2 2716 2718 2717 2723 # CAT-CAM-CAO-HAT + 1089 3 2717 2719 2718 2724 # CAO-CAP-CAM-HAT + 1090 4 2718 2720 2719 2725 # CAM-CAM-CAP-HAT + 1091 3 2721 2719 2720 2726 # CAO-CAP-CAM-HAT + 1092 2 2716 2720 2721 2727 # CAT-CAM-CAO-HAT + 1093 1 2732 2736 2731 2737 # CAO-CAO-CAT-CTT + 1094 2 2731 2733 2732 2738 # CAT-CAM-CAO-HAT + 1095 3 2732 2734 2733 2739 # CAO-CAP-CAM-HAT + 1096 4 2733 2735 2734 2740 # CAM-CAM-CAP-HAT + 1097 3 2736 2734 2735 2741 # CAO-CAP-CAM-HAT + 1098 2 2731 2735 2736 2742 # CAT-CAM-CAO-HAT + 1099 1 2747 2751 2746 2752 # CAO-CAO-CAT-CTT + 1100 2 2746 2748 2747 2753 # CAT-CAM-CAO-HAT + 1101 3 2747 2749 2748 2754 # CAO-CAP-CAM-HAT + 1102 4 2748 2750 2749 2755 # CAM-CAM-CAP-HAT + 1103 3 2751 2749 2750 2756 # CAO-CAP-CAM-HAT + 1104 2 2746 2750 2751 2757 # CAT-CAM-CAO-HAT + 1105 1 2762 2766 2761 2767 # CAO-CAO-CAT-CTT + 1106 2 2761 2763 2762 2768 # CAT-CAM-CAO-HAT + 1107 3 2762 2764 2763 2769 # CAO-CAP-CAM-HAT + 1108 4 2763 2765 2764 2770 # CAM-CAM-CAP-HAT + 1109 3 2766 2764 2765 2771 # CAO-CAP-CAM-HAT + 1110 2 2761 2765 2766 2772 # CAT-CAM-CAO-HAT + 1111 1 2777 2781 2776 2782 # CAO-CAO-CAT-CTT + 1112 2 2776 2778 2777 2783 # CAT-CAM-CAO-HAT + 1113 3 2777 2779 2778 2784 # CAO-CAP-CAM-HAT + 1114 4 2778 2780 2779 2785 # CAM-CAM-CAP-HAT + 1115 3 2781 2779 2780 2786 # CAO-CAP-CAM-HAT + 1116 2 2776 2780 2781 2787 # CAT-CAM-CAO-HAT + 1117 1 2792 2796 2791 2797 # CAO-CAO-CAT-CTT + 1118 2 2791 2793 2792 2798 # CAT-CAM-CAO-HAT + 1119 3 2792 2794 2793 2799 # CAO-CAP-CAM-HAT + 1120 4 2793 2795 2794 2800 # CAM-CAM-CAP-HAT + 1121 3 2796 2794 2795 2801 # CAO-CAP-CAM-HAT + 1122 2 2791 2795 2796 2802 # CAT-CAM-CAO-HAT + 1123 1 2807 2811 2806 2812 # CAO-CAO-CAT-CTT + 1124 2 2806 2808 2807 2813 # CAT-CAM-CAO-HAT + 1125 3 2807 2809 2808 2814 # CAO-CAP-CAM-HAT + 1126 4 2808 2810 2809 2815 # CAM-CAM-CAP-HAT + 1127 3 2811 2809 2810 2816 # CAO-CAP-CAM-HAT + 1128 2 2806 2810 2811 2817 # CAT-CAM-CAO-HAT + 1129 1 2822 2826 2821 2827 # CAO-CAO-CAT-CTT + 1130 2 2821 2823 2822 2828 # CAT-CAM-CAO-HAT + 1131 3 2822 2824 2823 2829 # CAO-CAP-CAM-HAT + 1132 4 2823 2825 2824 2830 # CAM-CAM-CAP-HAT + 1133 3 2826 2824 2825 2831 # CAO-CAP-CAM-HAT + 1134 2 2821 2825 2826 2832 # CAT-CAM-CAO-HAT + 1135 1 2837 2841 2836 2842 # CAO-CAO-CAT-CTT + 1136 2 2836 2838 2837 2843 # CAT-CAM-CAO-HAT + 1137 3 2837 2839 2838 2844 # CAO-CAP-CAM-HAT + 1138 4 2838 2840 2839 2845 # CAM-CAM-CAP-HAT + 1139 3 2841 2839 2840 2846 # CAO-CAP-CAM-HAT + 1140 2 2836 2840 2841 2847 # CAT-CAM-CAO-HAT + 1141 1 2852 2856 2851 2857 # CAO-CAO-CAT-CTT + 1142 2 2851 2853 2852 2858 # CAT-CAM-CAO-HAT + 1143 3 2852 2854 2853 2859 # CAO-CAP-CAM-HAT + 1144 4 2853 2855 2854 2860 # CAM-CAM-CAP-HAT + 1145 3 2856 2854 2855 2861 # CAO-CAP-CAM-HAT + 1146 2 2851 2855 2856 2862 # CAT-CAM-CAO-HAT + 1147 1 2867 2871 2866 2872 # CAO-CAO-CAT-CTT + 1148 2 2866 2868 2867 2873 # CAT-CAM-CAO-HAT + 1149 3 2867 2869 2868 2874 # CAO-CAP-CAM-HAT + 1150 4 2868 2870 2869 2875 # CAM-CAM-CAP-HAT + 1151 3 2871 2869 2870 2876 # CAO-CAP-CAM-HAT + 1152 2 2866 2870 2871 2877 # CAT-CAM-CAO-HAT + 1153 1 2882 2886 2881 2887 # CAO-CAO-CAT-CTT + 1154 2 2881 2883 2882 2888 # CAT-CAM-CAO-HAT + 1155 3 2882 2884 2883 2889 # CAO-CAP-CAM-HAT + 1156 4 2883 2885 2884 2890 # CAM-CAM-CAP-HAT + 1157 3 2886 2884 2885 2891 # CAO-CAP-CAM-HAT + 1158 2 2881 2885 2886 2892 # CAT-CAM-CAO-HAT + 1159 1 2897 2901 2896 2902 # CAO-CAO-CAT-CTT + 1160 2 2896 2898 2897 2903 # CAT-CAM-CAO-HAT + 1161 3 2897 2899 2898 2904 # CAO-CAP-CAM-HAT + 1162 4 2898 2900 2899 2905 # CAM-CAM-CAP-HAT + 1163 3 2901 2899 2900 2906 # CAO-CAP-CAM-HAT + 1164 2 2896 2900 2901 2907 # CAT-CAM-CAO-HAT + 1165 1 2912 2916 2911 2917 # CAO-CAO-CAT-CTT + 1166 2 2911 2913 2912 2918 # CAT-CAM-CAO-HAT + 1167 3 2912 2914 2913 2919 # CAO-CAP-CAM-HAT + 1168 4 2913 2915 2914 2920 # CAM-CAM-CAP-HAT + 1169 3 2916 2914 2915 2921 # CAO-CAP-CAM-HAT + 1170 2 2911 2915 2916 2922 # CAT-CAM-CAO-HAT + 1171 1 2927 2931 2926 2932 # CAO-CAO-CAT-CTT + 1172 2 2926 2928 2927 2933 # CAT-CAM-CAO-HAT + 1173 3 2927 2929 2928 2934 # CAO-CAP-CAM-HAT + 1174 4 2928 2930 2929 2935 # CAM-CAM-CAP-HAT + 1175 3 2931 2929 2930 2936 # CAO-CAP-CAM-HAT + 1176 2 2926 2930 2931 2937 # CAT-CAM-CAO-HAT + 1177 1 2942 2946 2941 2947 # CAO-CAO-CAT-CTT + 1178 2 2941 2943 2942 2948 # CAT-CAM-CAO-HAT + 1179 3 2942 2944 2943 2949 # CAO-CAP-CAM-HAT + 1180 4 2943 2945 2944 2950 # CAM-CAM-CAP-HAT + 1181 3 2946 2944 2945 2951 # CAO-CAP-CAM-HAT + 1182 2 2941 2945 2946 2952 # CAT-CAM-CAO-HAT + 1183 1 2957 2961 2956 2962 # CAO-CAO-CAT-CTT + 1184 2 2956 2958 2957 2963 # CAT-CAM-CAO-HAT + 1185 3 2957 2959 2958 2964 # CAO-CAP-CAM-HAT + 1186 4 2958 2960 2959 2965 # CAM-CAM-CAP-HAT + 1187 3 2961 2959 2960 2966 # CAO-CAP-CAM-HAT + 1188 2 2956 2960 2961 2967 # CAT-CAM-CAO-HAT + 1189 1 2972 2976 2971 2977 # CAO-CAO-CAT-CTT + 1190 2 2971 2973 2972 2978 # CAT-CAM-CAO-HAT + 1191 3 2972 2974 2973 2979 # CAO-CAP-CAM-HAT + 1192 4 2973 2975 2974 2980 # CAM-CAM-CAP-HAT + 1193 3 2976 2974 2975 2981 # CAO-CAP-CAM-HAT + 1194 2 2971 2975 2976 2982 # CAT-CAM-CAO-HAT + 1195 1 2987 2991 2986 2992 # CAO-CAO-CAT-CTT + 1196 2 2986 2988 2987 2993 # CAT-CAM-CAO-HAT + 1197 3 2987 2989 2988 2994 # CAO-CAP-CAM-HAT + 1198 4 2988 2990 2989 2995 # CAM-CAM-CAP-HAT + 1199 3 2991 2989 2990 2996 # CAO-CAP-CAM-HAT + 1200 2 2986 2990 2991 2997 # CAT-CAM-CAO-HAT + 1201 1 3002 3006 3001 3007 # CAO-CAO-CAT-CTT + 1202 2 3001 3003 3002 3008 # CAT-CAM-CAO-HAT + 1203 3 3002 3004 3003 3009 # CAO-CAP-CAM-HAT + 1204 4 3003 3005 3004 3010 # CAM-CAM-CAP-HAT + 1205 3 3006 3004 3005 3011 # CAO-CAP-CAM-HAT + 1206 2 3001 3005 3006 3012 # CAT-CAM-CAO-HAT + 1207 1 3017 3021 3016 3022 # CAO-CAO-CAT-CTT + 1208 2 3016 3018 3017 3023 # CAT-CAM-CAO-HAT + 1209 3 3017 3019 3018 3024 # CAO-CAP-CAM-HAT + 1210 4 3018 3020 3019 3025 # CAM-CAM-CAP-HAT + 1211 3 3021 3019 3020 3026 # CAO-CAP-CAM-HAT + 1212 2 3016 3020 3021 3027 # CAT-CAM-CAO-HAT + 1213 1 3032 3036 3031 3037 # CAO-CAO-CAT-CTT + 1214 2 3031 3033 3032 3038 # CAT-CAM-CAO-HAT + 1215 3 3032 3034 3033 3039 # CAO-CAP-CAM-HAT + 1216 4 3033 3035 3034 3040 # CAM-CAM-CAP-HAT + 1217 3 3036 3034 3035 3041 # CAO-CAP-CAM-HAT + 1218 2 3031 3035 3036 3042 # CAT-CAM-CAO-HAT + 1219 1 3047 3051 3046 3052 # CAO-CAO-CAT-CTT + 1220 2 3046 3048 3047 3053 # CAT-CAM-CAO-HAT + 1221 3 3047 3049 3048 3054 # CAO-CAP-CAM-HAT + 1222 4 3048 3050 3049 3055 # CAM-CAM-CAP-HAT + 1223 3 3051 3049 3050 3056 # CAO-CAP-CAM-HAT + 1224 2 3046 3050 3051 3057 # CAT-CAM-CAO-HAT + 1225 1 3062 3066 3061 3067 # CAO-CAO-CAT-CTT + 1226 2 3061 3063 3062 3068 # CAT-CAM-CAO-HAT + 1227 3 3062 3064 3063 3069 # CAO-CAP-CAM-HAT + 1228 4 3063 3065 3064 3070 # CAM-CAM-CAP-HAT + 1229 3 3066 3064 3065 3071 # CAO-CAP-CAM-HAT + 1230 2 3061 3065 3066 3072 # CAT-CAM-CAO-HAT + 1231 1 3077 3081 3076 3082 # CAO-CAO-CAT-CTT + 1232 2 3076 3078 3077 3083 # CAT-CAM-CAO-HAT + 1233 3 3077 3079 3078 3084 # CAO-CAP-CAM-HAT + 1234 4 3078 3080 3079 3085 # CAM-CAM-CAP-HAT + 1235 3 3081 3079 3080 3086 # CAO-CAP-CAM-HAT + 1236 2 3076 3080 3081 3087 # CAT-CAM-CAO-HAT + 1237 1 3092 3096 3091 3097 # CAO-CAO-CAT-CTT + 1238 2 3091 3093 3092 3098 # CAT-CAM-CAO-HAT + 1239 3 3092 3094 3093 3099 # CAO-CAP-CAM-HAT + 1240 4 3093 3095 3094 3100 # CAM-CAM-CAP-HAT + 1241 3 3096 3094 3095 3101 # CAO-CAP-CAM-HAT + 1242 2 3091 3095 3096 3102 # CAT-CAM-CAO-HAT + 1243 1 3107 3111 3106 3112 # CAO-CAO-CAT-CTT + 1244 2 3106 3108 3107 3113 # CAT-CAM-CAO-HAT + 1245 3 3107 3109 3108 3114 # CAO-CAP-CAM-HAT + 1246 4 3108 3110 3109 3115 # CAM-CAM-CAP-HAT + 1247 3 3111 3109 3110 3116 # CAO-CAP-CAM-HAT + 1248 2 3106 3110 3111 3117 # CAT-CAM-CAO-HAT + 1249 1 3122 3126 3121 3127 # CAO-CAO-CAT-CTT + 1250 2 3121 3123 3122 3128 # CAT-CAM-CAO-HAT + 1251 3 3122 3124 3123 3129 # CAO-CAP-CAM-HAT + 1252 4 3123 3125 3124 3130 # CAM-CAM-CAP-HAT + 1253 3 3126 3124 3125 3131 # CAO-CAP-CAM-HAT + 1254 2 3121 3125 3126 3132 # CAT-CAM-CAO-HAT + 1255 1 3137 3141 3136 3142 # CAO-CAO-CAT-CTT + 1256 2 3136 3138 3137 3143 # CAT-CAM-CAO-HAT + 1257 3 3137 3139 3138 3144 # CAO-CAP-CAM-HAT + 1258 4 3138 3140 3139 3145 # CAM-CAM-CAP-HAT + 1259 3 3141 3139 3140 3146 # CAO-CAP-CAM-HAT + 1260 2 3136 3140 3141 3147 # CAT-CAM-CAO-HAT + 1261 1 3152 3156 3151 3157 # CAO-CAO-CAT-CTT + 1262 2 3151 3153 3152 3158 # CAT-CAM-CAO-HAT + 1263 3 3152 3154 3153 3159 # CAO-CAP-CAM-HAT + 1264 4 3153 3155 3154 3160 # CAM-CAM-CAP-HAT + 1265 3 3156 3154 3155 3161 # CAO-CAP-CAM-HAT + 1266 2 3151 3155 3156 3162 # CAT-CAM-CAO-HAT + 1267 1 3167 3171 3166 3172 # CAO-CAO-CAT-CTT + 1268 2 3166 3168 3167 3173 # CAT-CAM-CAO-HAT + 1269 3 3167 3169 3168 3174 # CAO-CAP-CAM-HAT + 1270 4 3168 3170 3169 3175 # CAM-CAM-CAP-HAT + 1271 3 3171 3169 3170 3176 # CAO-CAP-CAM-HAT + 1272 2 3166 3170 3171 3177 # CAT-CAM-CAO-HAT + 1273 1 3182 3186 3181 3187 # CAO-CAO-CAT-CTT + 1274 2 3181 3183 3182 3188 # CAT-CAM-CAO-HAT + 1275 3 3182 3184 3183 3189 # CAO-CAP-CAM-HAT + 1276 4 3183 3185 3184 3190 # CAM-CAM-CAP-HAT + 1277 3 3186 3184 3185 3191 # CAO-CAP-CAM-HAT + 1278 2 3181 3185 3186 3192 # CAT-CAM-CAO-HAT + 1279 1 3197 3201 3196 3202 # CAO-CAO-CAT-CTT + 1280 2 3196 3198 3197 3203 # CAT-CAM-CAO-HAT + 1281 3 3197 3199 3198 3204 # CAO-CAP-CAM-HAT + 1282 4 3198 3200 3199 3205 # CAM-CAM-CAP-HAT + 1283 3 3201 3199 3200 3206 # CAO-CAP-CAM-HAT + 1284 2 3196 3200 3201 3207 # CAT-CAM-CAO-HAT + 1285 1 3212 3216 3211 3217 # CAO-CAO-CAT-CTT + 1286 2 3211 3213 3212 3218 # CAT-CAM-CAO-HAT + 1287 3 3212 3214 3213 3219 # CAO-CAP-CAM-HAT + 1288 4 3213 3215 3214 3220 # CAM-CAM-CAP-HAT + 1289 3 3216 3214 3215 3221 # CAO-CAP-CAM-HAT + 1290 2 3211 3215 3216 3222 # CAT-CAM-CAO-HAT + 1291 1 3227 3231 3226 3232 # CAO-CAO-CAT-CTT + 1292 2 3226 3228 3227 3233 # CAT-CAM-CAO-HAT + 1293 3 3227 3229 3228 3234 # CAO-CAP-CAM-HAT + 1294 4 3228 3230 3229 3235 # CAM-CAM-CAP-HAT + 1295 3 3231 3229 3230 3236 # CAO-CAP-CAM-HAT + 1296 2 3226 3230 3231 3237 # CAT-CAM-CAO-HAT + 1297 1 3242 3246 3241 3247 # CAO-CAO-CAT-CTT + 1298 2 3241 3243 3242 3248 # CAT-CAM-CAO-HAT + 1299 3 3242 3244 3243 3249 # CAO-CAP-CAM-HAT + 1300 4 3243 3245 3244 3250 # CAM-CAM-CAP-HAT + 1301 3 3246 3244 3245 3251 # CAO-CAP-CAM-HAT + 1302 2 3241 3245 3246 3252 # CAT-CAM-CAO-HAT + 1303 1 3257 3261 3256 3262 # CAO-CAO-CAT-CTT + 1304 2 3256 3258 3257 3263 # CAT-CAM-CAO-HAT + 1305 3 3257 3259 3258 3264 # CAO-CAP-CAM-HAT + 1306 4 3258 3260 3259 3265 # CAM-CAM-CAP-HAT + 1307 3 3261 3259 3260 3266 # CAO-CAP-CAM-HAT + 1308 2 3256 3260 3261 3267 # CAT-CAM-CAO-HAT + 1309 1 3272 3276 3271 3277 # CAO-CAO-CAT-CTT + 1310 2 3271 3273 3272 3278 # CAT-CAM-CAO-HAT + 1311 3 3272 3274 3273 3279 # CAO-CAP-CAM-HAT + 1312 4 3273 3275 3274 3280 # CAM-CAM-CAP-HAT + 1313 3 3276 3274 3275 3281 # CAO-CAP-CAM-HAT + 1314 2 3271 3275 3276 3282 # CAT-CAM-CAO-HAT + 1315 1 3287 3291 3286 3292 # CAO-CAO-CAT-CTT + 1316 2 3286 3288 3287 3293 # CAT-CAM-CAO-HAT + 1317 3 3287 3289 3288 3294 # CAO-CAP-CAM-HAT + 1318 4 3288 3290 3289 3295 # CAM-CAM-CAP-HAT + 1319 3 3291 3289 3290 3296 # CAO-CAP-CAM-HAT + 1320 2 3286 3290 3291 3297 # CAT-CAM-CAO-HAT + 1321 1 3302 3306 3301 3307 # CAO-CAO-CAT-CTT + 1322 2 3301 3303 3302 3308 # CAT-CAM-CAO-HAT + 1323 3 3302 3304 3303 3309 # CAO-CAP-CAM-HAT + 1324 4 3303 3305 3304 3310 # CAM-CAM-CAP-HAT + 1325 3 3306 3304 3305 3311 # CAO-CAP-CAM-HAT + 1326 2 3301 3305 3306 3312 # CAT-CAM-CAO-HAT + 1327 1 3317 3321 3316 3322 # CAO-CAO-CAT-CTT + 1328 2 3316 3318 3317 3323 # CAT-CAM-CAO-HAT + 1329 3 3317 3319 3318 3324 # CAO-CAP-CAM-HAT + 1330 4 3318 3320 3319 3325 # CAM-CAM-CAP-HAT + 1331 3 3321 3319 3320 3326 # CAO-CAP-CAM-HAT + 1332 2 3316 3320 3321 3327 # CAT-CAM-CAO-HAT + 1333 1 3332 3336 3331 3337 # CAO-CAO-CAT-CTT + 1334 2 3331 3333 3332 3338 # CAT-CAM-CAO-HAT + 1335 3 3332 3334 3333 3339 # CAO-CAP-CAM-HAT + 1336 4 3333 3335 3334 3340 # CAM-CAM-CAP-HAT + 1337 3 3336 3334 3335 3341 # CAO-CAP-CAM-HAT + 1338 2 3331 3335 3336 3342 # CAT-CAM-CAO-HAT + 1339 1 3347 3351 3346 3352 # CAO-CAO-CAT-CTT + 1340 2 3346 3348 3347 3353 # CAT-CAM-CAO-HAT + 1341 3 3347 3349 3348 3354 # CAO-CAP-CAM-HAT + 1342 4 3348 3350 3349 3355 # CAM-CAM-CAP-HAT + 1343 3 3351 3349 3350 3356 # CAO-CAP-CAM-HAT + 1344 2 3346 3350 3351 3357 # CAT-CAM-CAO-HAT + 1345 1 3362 3366 3361 3367 # CAO-CAO-CAT-CTT + 1346 2 3361 3363 3362 3368 # CAT-CAM-CAO-HAT + 1347 3 3362 3364 3363 3369 # CAO-CAP-CAM-HAT + 1348 4 3363 3365 3364 3370 # CAM-CAM-CAP-HAT + 1349 3 3366 3364 3365 3371 # CAO-CAP-CAM-HAT + 1350 2 3361 3365 3366 3372 # CAT-CAM-CAO-HAT + 1351 1 3377 3381 3376 3382 # CAO-CAO-CAT-CTT + 1352 2 3376 3378 3377 3383 # CAT-CAM-CAO-HAT + 1353 3 3377 3379 3378 3384 # CAO-CAP-CAM-HAT + 1354 4 3378 3380 3379 3385 # CAM-CAM-CAP-HAT + 1355 3 3381 3379 3380 3386 # CAO-CAP-CAM-HAT + 1356 2 3376 3380 3381 3387 # CAT-CAM-CAO-HAT + 1357 1 3392 3396 3391 3397 # CAO-CAO-CAT-CTT + 1358 2 3391 3393 3392 3398 # CAT-CAM-CAO-HAT + 1359 3 3392 3394 3393 3399 # CAO-CAP-CAM-HAT + 1360 4 3393 3395 3394 3400 # CAM-CAM-CAP-HAT + 1361 3 3396 3394 3395 3401 # CAO-CAP-CAM-HAT + 1362 2 3391 3395 3396 3402 # CAT-CAM-CAO-HAT + 1363 1 3407 3411 3406 3412 # CAO-CAO-CAT-CTT + 1364 2 3406 3408 3407 3413 # CAT-CAM-CAO-HAT + 1365 3 3407 3409 3408 3414 # CAO-CAP-CAM-HAT + 1366 4 3408 3410 3409 3415 # CAM-CAM-CAP-HAT + 1367 3 3411 3409 3410 3416 # CAO-CAP-CAM-HAT + 1368 2 3406 3410 3411 3417 # CAT-CAM-CAO-HAT + 1369 1 3422 3426 3421 3427 # CAO-CAO-CAT-CTT + 1370 2 3421 3423 3422 3428 # CAT-CAM-CAO-HAT + 1371 3 3422 3424 3423 3429 # CAO-CAP-CAM-HAT + 1372 4 3423 3425 3424 3430 # CAM-CAM-CAP-HAT + 1373 3 3426 3424 3425 3431 # CAO-CAP-CAM-HAT + 1374 2 3421 3425 3426 3432 # CAT-CAM-CAO-HAT + 1375 1 3437 3441 3436 3442 # CAO-CAO-CAT-CTT + 1376 2 3436 3438 3437 3443 # CAT-CAM-CAO-HAT + 1377 3 3437 3439 3438 3444 # CAO-CAP-CAM-HAT + 1378 4 3438 3440 3439 3445 # CAM-CAM-CAP-HAT + 1379 3 3441 3439 3440 3446 # CAO-CAP-CAM-HAT + 1380 2 3436 3440 3441 3447 # CAT-CAM-CAO-HAT + 1381 1 3452 3456 3451 3457 # CAO-CAO-CAT-CTT + 1382 2 3451 3453 3452 3458 # CAT-CAM-CAO-HAT + 1383 3 3452 3454 3453 3459 # CAO-CAP-CAM-HAT + 1384 4 3453 3455 3454 3460 # CAM-CAM-CAP-HAT + 1385 3 3456 3454 3455 3461 # CAO-CAP-CAM-HAT + 1386 2 3451 3455 3456 3462 # CAT-CAM-CAO-HAT + 1387 1 3467 3471 3466 3472 # CAO-CAO-CAT-CTT + 1388 2 3466 3468 3467 3473 # CAT-CAM-CAO-HAT + 1389 3 3467 3469 3468 3474 # CAO-CAP-CAM-HAT + 1390 4 3468 3470 3469 3475 # CAM-CAM-CAP-HAT + 1391 3 3471 3469 3470 3476 # CAO-CAP-CAM-HAT + 1392 2 3466 3470 3471 3477 # CAT-CAM-CAO-HAT + 1393 1 3482 3486 3481 3487 # CAO-CAO-CAT-CTT + 1394 2 3481 3483 3482 3488 # CAT-CAM-CAO-HAT + 1395 3 3482 3484 3483 3489 # CAO-CAP-CAM-HAT + 1396 4 3483 3485 3484 3490 # CAM-CAM-CAP-HAT + 1397 3 3486 3484 3485 3491 # CAO-CAP-CAM-HAT + 1398 2 3481 3485 3486 3492 # CAT-CAM-CAO-HAT + 1399 1 3497 3501 3496 3502 # CAO-CAO-CAT-CTT + 1400 2 3496 3498 3497 3503 # CAT-CAM-CAO-HAT + 1401 3 3497 3499 3498 3504 # CAO-CAP-CAM-HAT + 1402 4 3498 3500 3499 3505 # CAM-CAM-CAP-HAT + 1403 3 3501 3499 3500 3506 # CAO-CAP-CAM-HAT + 1404 2 3496 3500 3501 3507 # CAT-CAM-CAO-HAT + 1405 1 3512 3516 3511 3517 # CAO-CAO-CAT-CTT + 1406 2 3511 3513 3512 3518 # CAT-CAM-CAO-HAT + 1407 3 3512 3514 3513 3519 # CAO-CAP-CAM-HAT + 1408 4 3513 3515 3514 3520 # CAM-CAM-CAP-HAT + 1409 3 3516 3514 3515 3521 # CAO-CAP-CAM-HAT + 1410 2 3511 3515 3516 3522 # CAT-CAM-CAO-HAT + 1411 1 3527 3531 3526 3532 # CAO-CAO-CAT-CTT + 1412 2 3526 3528 3527 3533 # CAT-CAM-CAO-HAT + 1413 3 3527 3529 3528 3534 # CAO-CAP-CAM-HAT + 1414 4 3528 3530 3529 3535 # CAM-CAM-CAP-HAT + 1415 3 3531 3529 3530 3536 # CAO-CAP-CAM-HAT + 1416 2 3526 3530 3531 3537 # CAT-CAM-CAO-HAT + 1417 1 3542 3546 3541 3547 # CAO-CAO-CAT-CTT + 1418 2 3541 3543 3542 3548 # CAT-CAM-CAO-HAT + 1419 3 3542 3544 3543 3549 # CAO-CAP-CAM-HAT + 1420 4 3543 3545 3544 3550 # CAM-CAM-CAP-HAT + 1421 3 3546 3544 3545 3551 # CAO-CAP-CAM-HAT + 1422 2 3541 3545 3546 3552 # CAT-CAM-CAO-HAT + 1423 1 3557 3561 3556 3562 # CAO-CAO-CAT-CTT + 1424 2 3556 3558 3557 3563 # CAT-CAM-CAO-HAT + 1425 3 3557 3559 3558 3564 # CAO-CAP-CAM-HAT + 1426 4 3558 3560 3559 3565 # CAM-CAM-CAP-HAT + 1427 3 3561 3559 3560 3566 # CAO-CAP-CAM-HAT + 1428 2 3556 3560 3561 3567 # CAT-CAM-CAO-HAT + 1429 1 3572 3576 3571 3577 # CAO-CAO-CAT-CTT + 1430 2 3571 3573 3572 3578 # CAT-CAM-CAO-HAT + 1431 3 3572 3574 3573 3579 # CAO-CAP-CAM-HAT + 1432 4 3573 3575 3574 3580 # CAM-CAM-CAP-HAT + 1433 3 3576 3574 3575 3581 # CAO-CAP-CAM-HAT + 1434 2 3571 3575 3576 3582 # CAT-CAM-CAO-HAT + 1435 1 3587 3591 3586 3592 # CAO-CAO-CAT-CTT + 1436 2 3586 3588 3587 3593 # CAT-CAM-CAO-HAT + 1437 3 3587 3589 3588 3594 # CAO-CAP-CAM-HAT + 1438 4 3588 3590 3589 3595 # CAM-CAM-CAP-HAT + 1439 3 3591 3589 3590 3596 # CAO-CAP-CAM-HAT + 1440 2 3586 3590 3591 3597 # CAT-CAM-CAO-HAT + 1441 1 3602 3606 3601 3607 # CAO-CAO-CAT-CTT + 1442 2 3601 3603 3602 3608 # CAT-CAM-CAO-HAT + 1443 3 3602 3604 3603 3609 # CAO-CAP-CAM-HAT + 1444 4 3603 3605 3604 3610 # CAM-CAM-CAP-HAT + 1445 3 3606 3604 3605 3611 # CAO-CAP-CAM-HAT + 1446 2 3601 3605 3606 3612 # CAT-CAM-CAO-HAT + 1447 1 3617 3621 3616 3622 # CAO-CAO-CAT-CTT + 1448 2 3616 3618 3617 3623 # CAT-CAM-CAO-HAT + 1449 3 3617 3619 3618 3624 # CAO-CAP-CAM-HAT + 1450 4 3618 3620 3619 3625 # CAM-CAM-CAP-HAT + 1451 3 3621 3619 3620 3626 # CAO-CAP-CAM-HAT + 1452 2 3616 3620 3621 3627 # CAT-CAM-CAO-HAT + 1453 1 3632 3636 3631 3637 # CAO-CAO-CAT-CTT + 1454 2 3631 3633 3632 3638 # CAT-CAM-CAO-HAT + 1455 3 3632 3634 3633 3639 # CAO-CAP-CAM-HAT + 1456 4 3633 3635 3634 3640 # CAM-CAM-CAP-HAT + 1457 3 3636 3634 3635 3641 # CAO-CAP-CAM-HAT + 1458 2 3631 3635 3636 3642 # CAT-CAM-CAO-HAT + 1459 1 3647 3651 3646 3652 # CAO-CAO-CAT-CTT + 1460 2 3646 3648 3647 3653 # CAT-CAM-CAO-HAT + 1461 3 3647 3649 3648 3654 # CAO-CAP-CAM-HAT + 1462 4 3648 3650 3649 3655 # CAM-CAM-CAP-HAT + 1463 3 3651 3649 3650 3656 # CAO-CAP-CAM-HAT + 1464 2 3646 3650 3651 3657 # CAT-CAM-CAO-HAT + 1465 1 3662 3666 3661 3667 # CAO-CAO-CAT-CTT + 1466 2 3661 3663 3662 3668 # CAT-CAM-CAO-HAT + 1467 3 3662 3664 3663 3669 # CAO-CAP-CAM-HAT + 1468 4 3663 3665 3664 3670 # CAM-CAM-CAP-HAT + 1469 3 3666 3664 3665 3671 # CAO-CAP-CAM-HAT + 1470 2 3661 3665 3666 3672 # CAT-CAM-CAO-HAT + 1471 1 3677 3681 3676 3682 # CAO-CAO-CAT-CTT + 1472 2 3676 3678 3677 3683 # CAT-CAM-CAO-HAT + 1473 3 3677 3679 3678 3684 # CAO-CAP-CAM-HAT + 1474 4 3678 3680 3679 3685 # CAM-CAM-CAP-HAT + 1475 3 3681 3679 3680 3686 # CAO-CAP-CAM-HAT + 1476 2 3676 3680 3681 3687 # CAT-CAM-CAO-HAT + 1477 1 3692 3696 3691 3697 # CAO-CAO-CAT-CTT + 1478 2 3691 3693 3692 3698 # CAT-CAM-CAO-HAT + 1479 3 3692 3694 3693 3699 # CAO-CAP-CAM-HAT + 1480 4 3693 3695 3694 3700 # CAM-CAM-CAP-HAT + 1481 3 3696 3694 3695 3701 # CAO-CAP-CAM-HAT + 1482 2 3691 3695 3696 3702 # CAT-CAM-CAO-HAT + 1483 1 3707 3711 3706 3712 # CAO-CAO-CAT-CTT + 1484 2 3706 3708 3707 3713 # CAT-CAM-CAO-HAT + 1485 3 3707 3709 3708 3714 # CAO-CAP-CAM-HAT + 1486 4 3708 3710 3709 3715 # CAM-CAM-CAP-HAT + 1487 3 3711 3709 3710 3716 # CAO-CAP-CAM-HAT + 1488 2 3706 3710 3711 3717 # CAT-CAM-CAO-HAT + 1489 1 3722 3726 3721 3727 # CAO-CAO-CAT-CTT + 1490 2 3721 3723 3722 3728 # CAT-CAM-CAO-HAT + 1491 3 3722 3724 3723 3729 # CAO-CAP-CAM-HAT + 1492 4 3723 3725 3724 3730 # CAM-CAM-CAP-HAT + 1493 3 3726 3724 3725 3731 # CAO-CAP-CAM-HAT + 1494 2 3721 3725 3726 3732 # CAT-CAM-CAO-HAT + 1495 1 3737 3741 3736 3742 # CAO-CAO-CAT-CTT + 1496 2 3736 3738 3737 3743 # CAT-CAM-CAO-HAT + 1497 3 3737 3739 3738 3744 # CAO-CAP-CAM-HAT + 1498 4 3738 3740 3739 3745 # CAM-CAM-CAP-HAT + 1499 3 3741 3739 3740 3746 # CAO-CAP-CAM-HAT + 1500 2 3736 3740 3741 3747 # CAT-CAM-CAO-HAT + diff --git a/examples/USER/drude/toluene/in.toluene.lang b/examples/USER/drude/toluene/in.toluene.lang new file mode 100644 index 0000000000000000000000000000000000000000..8f00c24a4b2739f9418cefed4d438c005091f433 --- /dev/null +++ b/examples/USER/drude/toluene/in.toluene.lang @@ -0,0 +1,116 @@ +# 250 toluene system for drude polarizability example (Langevin) + +units real +boundary p p p + +atom_style full +bond_style harmonic +angle_style harmonic +dihedral_style opls +improper_style opls +special_bonds lj/coul 0.0 0.0 0.5 + +pair_style lj/cut/thole/long 2.600 8.0 8.0 +pair_modify mix geometric tail yes +kspace_style pppm 1.0e-4 + +read_data data.toluene extra/special/per/atom 1 + +comm_modify vel yes + +group gTOLUENE molecule 1:250 +group gCORES type 1 2 3 4 5 6 7 +group gDRUDES type 8 9 10 11 12 + +pair_coeff 1 1 0.069998 3.550000 1.620000 # CAT CAT +pair_coeff 1 2 0.069998 3.550000 1.620000 # CAT CAO +pair_coeff 1 3 0.069998 3.550000 1.620000 # CAT CAM +pair_coeff 1 4 0.069998 3.550000 1.620000 # CAT CAP +pair_coeff 1 5 0.067968 3.524911 1.620000 # CAT CTT +pair_coeff 1 6 0.045825 2.931041 0.000000 # CAT HAT +pair_coeff 1 7 0.045825 2.931041 0.000000 # CAT HT +pair_coeff 2 2 0.069998 3.550000 1.620000 # CAO CAO +pair_coeff 2 3 0.069998 3.550000 1.620000 # CAO CAM +pair_coeff 2 4 0.069998 3.550000 1.620000 # CAO CAP +pair_coeff 2 5 0.067968 3.524911 1.620000 # CAO CTT +pair_coeff 2 6 0.045825 2.931041 0.000000 # CAO HAT +pair_coeff 2 7 0.045825 2.931041 0.000000 # CAO HT +pair_coeff 3 3 0.069998 3.550000 1.620000 # CAM CAM +pair_coeff 3 4 0.069998 3.550000 1.620000 # CAM CAP +pair_coeff 3 5 0.067968 3.524911 1.620000 # CAM CTT +pair_coeff 3 6 0.045825 2.931041 0.000000 # CAM HAT +pair_coeff 3 7 0.045825 2.931041 0.000000 # CAM HT +pair_coeff 4 4 0.069998 3.550000 1.620000 # CAP CAP +pair_coeff 4 5 0.067968 3.524911 1.620000 # CAP CTT +pair_coeff 4 6 0.045825 2.931041 0.000000 # CAP HAT +pair_coeff 4 7 0.045825 2.931041 0.000000 # CAP HT +pair_coeff 5 5 0.065997 3.500000 1.620000 # CTT CTT +pair_coeff 5 6 0.044496 2.910326 0.000000 # CTT HAT +pair_coeff 5 7 0.044496 2.910326 0.000000 # CTT HT +pair_coeff 6 6 0.029999 2.420000 0.000000 # HAT HAT +pair_coeff 6 7 0.029999 2.420000 0.000000 # HAT HT +pair_coeff 7 7 0.029999 2.420000 0.000000 # HT HT +pair_coeff 1 8 0.000000 0.000000 1.620000 # CAT D_CAT +pair_coeff 1 9 0.000000 0.000000 1.620000 # CAT D_CAO +pair_coeff 1 10 0.000000 0.000000 1.620000 # CAT D_CAM +pair_coeff 1 11 0.000000 0.000000 1.620000 # CAT D_CAP +pair_coeff 1 12 0.000000 0.000000 1.620000 # CAT D_CTT +pair_coeff 2 8 0.000000 0.000000 1.620000 # CAO D_CAT +pair_coeff 2 9 0.000000 0.000000 1.620000 # CAO D_CAO +pair_coeff 2 10 0.000000 0.000000 1.620000 # CAO D_CAM +pair_coeff 2 11 0.000000 0.000000 1.620000 # CAO D_CAP +pair_coeff 2 12 0.000000 0.000000 1.620000 # CAO D_CTT +pair_coeff 3 8 0.000000 0.000000 1.620000 # CAM D_CAT +pair_coeff 3 9 0.000000 0.000000 1.620000 # CAM D_CAO +pair_coeff 3 10 0.000000 0.000000 1.620000 # CAM D_CAM +pair_coeff 3 11 0.000000 0.000000 1.620000 # CAM D_CAP +pair_coeff 3 12 0.000000 0.000000 1.620000 # CAM D_CTT +pair_coeff 4 8 0.000000 0.000000 1.620000 # CAP D_CAT +pair_coeff 4 9 0.000000 0.000000 1.620000 # CAP D_CAO +pair_coeff 4 10 0.000000 0.000000 1.620000 # CAP D_CAM +pair_coeff 4 11 0.000000 0.000000 1.620000 # CAP D_CAP +pair_coeff 4 12 0.000000 0.000000 1.620000 # CAP D_CTT +pair_coeff 5 8 0.000000 0.000000 1.620000 # CTT D_CAT +pair_coeff 5 9 0.000000 0.000000 1.620000 # CTT D_CAO +pair_coeff 5 10 0.000000 0.000000 1.620000 # CTT D_CAM +pair_coeff 5 11 0.000000 0.000000 1.620000 # CTT D_CAP +pair_coeff 5 12 0.000000 0.000000 1.620000 # CTT D_CTT +pair_coeff 8 8 0.000000 0.000000 1.620000 # D_CAT D_CAT +pair_coeff 8 9 0.000000 0.000000 1.620000 # D_CAT D_CAO +pair_coeff 8 10 0.000000 0.000000 1.620000 # D_CAT D_CAM +pair_coeff 8 11 0.000000 0.000000 1.620000 # D_CAT D_CAP +pair_coeff 8 12 0.000000 0.000000 1.620000 # D_CAT D_CTT +pair_coeff 9 9 0.000000 0.000000 1.620000 # D_CAO D_CAO +pair_coeff 9 10 0.000000 0.000000 1.620000 # D_CAO D_CAM +pair_coeff 9 11 0.000000 0.000000 1.620000 # D_CAO D_CAP +pair_coeff 9 12 0.000000 0.000000 1.620000 # D_CAO D_CTT +pair_coeff 10 10 0.000000 0.000000 1.620000 # D_CAM D_CAM +pair_coeff 10 11 0.000000 0.000000 1.620000 # D_CAM D_CAP +pair_coeff 10 12 0.000000 0.000000 1.620000 # D_CAM D_CTT +pair_coeff 11 11 0.000000 0.000000 1.620000 # D_CAP D_CAP +pair_coeff 11 12 0.000000 0.000000 1.620000 # D_CAP D_CTT +pair_coeff 12 12 0.000000 0.000000 1.620000 # D_CTT D_CTT + +neighbor 2.0 bin + +variable vTEMP equal 260.0 +variable vTEMP_D equal 1.0 +variable vPRESS equal 1.0 + +velocity gCORES create ${vTEMP} 12345 +velocity gDRUDES create ${vTEMP_D} 12345 + +fix fDRUDE all drude C C C C C N N D D D D D + +fix fSHAKE gCORES shake 0.0001 20 0 b 4 6 7 8 + +fix fLANG all langevin/drude ${vTEMP} 100.0 200611 ${vTEMP_D} 20.0 260514 zero yes +fix fNPH all nve + +compute cTEMP all temp/drude + +thermo_style custom step cpu etotal ke temp pe ebond eangle edihed eimp evdwl ecoul elong press vol c_cTEMP[1] c_cTEMP[2] +thermo 50 + +timestep 0.5 +run 2000 diff --git a/examples/USER/drude/toluene/in.toluene.nh b/examples/USER/drude/toluene/in.toluene.nh new file mode 100644 index 0000000000000000000000000000000000000000..05b35ca91936b4573d9fc8f49af13bce78e5f99c --- /dev/null +++ b/examples/USER/drude/toluene/in.toluene.nh @@ -0,0 +1,122 @@ +# 250 toluene system for drude polarizability example (Nose-Hoover) + +units real +boundary p p p + +atom_style full +bond_style harmonic +angle_style harmonic +dihedral_style opls +improper_style opls +special_bonds lj/coul 0.0 0.0 0.5 + +pair_style lj/cut/thole/long 2.600 8.0 8.0 +pair_modify mix geometric tail yes +kspace_style pppm 1.0e-4 + +read_data data.toluene extra/special/per/atom 1 + +comm_modify vel yes + +group gTOLUENE molecule 1:250 +group gCORES type 1 2 3 4 5 6 7 +group gDRUDES type 8 9 10 11 12 + +pair_coeff 1 1 0.069998 3.550000 1.620000 # CAT CAT +pair_coeff 1 2 0.069998 3.550000 1.620000 # CAT CAO +pair_coeff 1 3 0.069998 3.550000 1.620000 # CAT CAM +pair_coeff 1 4 0.069998 3.550000 1.620000 # CAT CAP +pair_coeff 1 5 0.067968 3.524911 1.620000 # CAT CTT +pair_coeff 1 6 0.045825 2.931041 0.000000 # CAT HAT +pair_coeff 1 7 0.045825 2.931041 0.000000 # CAT HT +pair_coeff 2 2 0.069998 3.550000 1.620000 # CAO CAO +pair_coeff 2 3 0.069998 3.550000 1.620000 # CAO CAM +pair_coeff 2 4 0.069998 3.550000 1.620000 # CAO CAP +pair_coeff 2 5 0.067968 3.524911 1.620000 # CAO CTT +pair_coeff 2 6 0.045825 2.931041 0.000000 # CAO HAT +pair_coeff 2 7 0.045825 2.931041 0.000000 # CAO HT +pair_coeff 3 3 0.069998 3.550000 1.620000 # CAM CAM +pair_coeff 3 4 0.069998 3.550000 1.620000 # CAM CAP +pair_coeff 3 5 0.067968 3.524911 1.620000 # CAM CTT +pair_coeff 3 6 0.045825 2.931041 0.000000 # CAM HAT +pair_coeff 3 7 0.045825 2.931041 0.000000 # CAM HT +pair_coeff 4 4 0.069998 3.550000 1.620000 # CAP CAP +pair_coeff 4 5 0.067968 3.524911 1.620000 # CAP CTT +pair_coeff 4 6 0.045825 2.931041 0.000000 # CAP HAT +pair_coeff 4 7 0.045825 2.931041 0.000000 # CAP HT +pair_coeff 5 5 0.065997 3.500000 1.620000 # CTT CTT +pair_coeff 5 6 0.044496 2.910326 0.000000 # CTT HAT +pair_coeff 5 7 0.044496 2.910326 0.000000 # CTT HT +pair_coeff 6 6 0.029999 2.420000 0.000000 # HAT HAT +pair_coeff 6 7 0.029999 2.420000 0.000000 # HAT HT +pair_coeff 7 7 0.029999 2.420000 0.000000 # HT HT +pair_coeff 1 8 0.000000 0.000000 1.620000 # CAT D_CAT +pair_coeff 1 9 0.000000 0.000000 1.620000 # CAT D_CAO +pair_coeff 1 10 0.000000 0.000000 1.620000 # CAT D_CAM +pair_coeff 1 11 0.000000 0.000000 1.620000 # CAT D_CAP +pair_coeff 1 12 0.000000 0.000000 1.620000 # CAT D_CTT +pair_coeff 2 8 0.000000 0.000000 1.620000 # CAO D_CAT +pair_coeff 2 9 0.000000 0.000000 1.620000 # CAO D_CAO +pair_coeff 2 10 0.000000 0.000000 1.620000 # CAO D_CAM +pair_coeff 2 11 0.000000 0.000000 1.620000 # CAO D_CAP +pair_coeff 2 12 0.000000 0.000000 1.620000 # CAO D_CTT +pair_coeff 3 8 0.000000 0.000000 1.620000 # CAM D_CAT +pair_coeff 3 9 0.000000 0.000000 1.620000 # CAM D_CAO +pair_coeff 3 10 0.000000 0.000000 1.620000 # CAM D_CAM +pair_coeff 3 11 0.000000 0.000000 1.620000 # CAM D_CAP +pair_coeff 3 12 0.000000 0.000000 1.620000 # CAM D_CTT +pair_coeff 4 8 0.000000 0.000000 1.620000 # CAP D_CAT +pair_coeff 4 9 0.000000 0.000000 1.620000 # CAP D_CAO +pair_coeff 4 10 0.000000 0.000000 1.620000 # CAP D_CAM +pair_coeff 4 11 0.000000 0.000000 1.620000 # CAP D_CAP +pair_coeff 4 12 0.000000 0.000000 1.620000 # CAP D_CTT +pair_coeff 5 8 0.000000 0.000000 1.620000 # CTT D_CAT +pair_coeff 5 9 0.000000 0.000000 1.620000 # CTT D_CAO +pair_coeff 5 10 0.000000 0.000000 1.620000 # CTT D_CAM +pair_coeff 5 11 0.000000 0.000000 1.620000 # CTT D_CAP +pair_coeff 5 12 0.000000 0.000000 1.620000 # CTT D_CTT +pair_coeff 8 8 0.000000 0.000000 1.620000 # D_CAT D_CAT +pair_coeff 8 9 0.000000 0.000000 1.620000 # D_CAT D_CAO +pair_coeff 8 10 0.000000 0.000000 1.620000 # D_CAT D_CAM +pair_coeff 8 11 0.000000 0.000000 1.620000 # D_CAT D_CAP +pair_coeff 8 12 0.000000 0.000000 1.620000 # D_CAT D_CTT +pair_coeff 9 9 0.000000 0.000000 1.620000 # D_CAO D_CAO +pair_coeff 9 10 0.000000 0.000000 1.620000 # D_CAO D_CAM +pair_coeff 9 11 0.000000 0.000000 1.620000 # D_CAO D_CAP +pair_coeff 9 12 0.000000 0.000000 1.620000 # D_CAO D_CTT +pair_coeff 10 10 0.000000 0.000000 1.620000 # D_CAM D_CAM +pair_coeff 10 11 0.000000 0.000000 1.620000 # D_CAM D_CAP +pair_coeff 10 12 0.000000 0.000000 1.620000 # D_CAM D_CTT +pair_coeff 11 11 0.000000 0.000000 1.620000 # D_CAP D_CAP +pair_coeff 11 12 0.000000 0.000000 1.620000 # D_CAP D_CTT +pair_coeff 12 12 0.000000 0.000000 1.620000 # D_CTT D_CTT + + +neighbor 2.0 bin + +variable vTEMP equal 260.0 +variable vTEMP_D equal 1.0 +variable vPRESS equal 1.0 + +velocity gCORES create ${vTEMP} 12345 +velocity gDRUDES create ${vTEMP_D} 12345 + +fix fDRUDE all drude C C C C C N N D D D D D + +fix fSHAKE gCORES shake 0.0001 20 0 b 4 6 7 8 + +compute cTEMP_CORE gCORES temp/com +compute cTEMP all temp/drude + +fix fDIRECT all drude/transform/direct +fix fNVT1 gCORES nvt temp ${vTEMP} ${vTEMP} 100.0 +fix fNVT2 gDRUDES nvt temp ${vTEMP_D} ${vTEMP_D} 20.0 +fix fINVERSE all drude/transform/inverse + +fix fMOMENTUM all momentum 100 linear 1 1 1 + +thermo_style custom step cpu etotal ke temp pe ebond eangle edihed eimp evdwl ecoul elong press vol c_cTEMP[1] c_cTEMP[2] +thermo 50 + +timestep 0.5 +run 2000 diff --git a/examples/USER/drude/toluene/log.toluene.lang.11Aug17.linux.1 b/examples/USER/drude/toluene/log.toluene.lang.11Aug17.linux.1 new file mode 100644 index 0000000000000000000000000000000000000000..bc51063341ac57ba9ebcdd7cab4a0170076922d7 --- /dev/null +++ b/examples/USER/drude/toluene/log.toluene.lang.11Aug17.linux.1 @@ -0,0 +1,251 @@ +LAMMPS (11 Aug 2017) +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (../comm.cpp:90) + using 1 OpenMP thread(s) per MPI task +# 250 toluene system for drude polarizability example (Langevin) + +units real +boundary p p p + +atom_style full +bond_style harmonic +angle_style harmonic +dihedral_style opls +improper_style opls +special_bonds lj/coul 0.0 0.0 0.5 + +pair_style lj/cut/thole/long 2.600 8.0 8.0 +pair_modify mix geometric tail yes +kspace_style pppm 1.0e-4 + +read_data data.toluene extra/special/per/atom 1 + orthogonal box = (-18.2908 -18.1636 -18.223) to (18.3357 18.1621 18.3287) + 1 by 1 by 1 MPI processor grid + reading atoms ... + 5500 atoms + scanning bonds ... + 4 = max bonds/atom + scanning angles ... + 6 = max angles/atom + scanning dihedrals ... + 8 = max dihedrals/atom + scanning impropers ... + 2 = max impropers/atom + reading bonds ... + 5500 bonds + reading angles ... + 6000 angles + reading dihedrals ... + 6000 dihedrals + reading impropers ... + 1500 impropers + 5 = max # of 1-2 neighbors + 10 = max # of 1-3 neighbors + 16 = max # of 1-4 neighbors + 20 = max # of special neighbors + +comm_modify vel yes + +group gTOLUENE molecule 1:250 +5500 atoms in group gTOLUENE +group gCORES type 1 2 3 4 5 6 7 +3750 atoms in group gCORES +group gDRUDES type 8 9 10 11 12 +1750 atoms in group gDRUDES + +pair_coeff 1 1 0.069998 3.550000 1.620000 # CAT CAT +pair_coeff 1 2 0.069998 3.550000 1.620000 # CAT CAO +pair_coeff 1 3 0.069998 3.550000 1.620000 # CAT CAM +pair_coeff 1 4 0.069998 3.550000 1.620000 # CAT CAP +pair_coeff 1 5 0.067968 3.524911 1.620000 # CAT CTT +pair_coeff 1 6 0.045825 2.931041 0.000000 # CAT HAT +pair_coeff 1 7 0.045825 2.931041 0.000000 # CAT HT +pair_coeff 2 2 0.069998 3.550000 1.620000 # CAO CAO +pair_coeff 2 3 0.069998 3.550000 1.620000 # CAO CAM +pair_coeff 2 4 0.069998 3.550000 1.620000 # CAO CAP +pair_coeff 2 5 0.067968 3.524911 1.620000 # CAO CTT +pair_coeff 2 6 0.045825 2.931041 0.000000 # CAO HAT +pair_coeff 2 7 0.045825 2.931041 0.000000 # CAO HT +pair_coeff 3 3 0.069998 3.550000 1.620000 # CAM CAM +pair_coeff 3 4 0.069998 3.550000 1.620000 # CAM CAP +pair_coeff 3 5 0.067968 3.524911 1.620000 # CAM CTT +pair_coeff 3 6 0.045825 2.931041 0.000000 # CAM HAT +pair_coeff 3 7 0.045825 2.931041 0.000000 # CAM HT +pair_coeff 4 4 0.069998 3.550000 1.620000 # CAP CAP +pair_coeff 4 5 0.067968 3.524911 1.620000 # CAP CTT +pair_coeff 4 6 0.045825 2.931041 0.000000 # CAP HAT +pair_coeff 4 7 0.045825 2.931041 0.000000 # CAP HT +pair_coeff 5 5 0.065997 3.500000 1.620000 # CTT CTT +pair_coeff 5 6 0.044496 2.910326 0.000000 # CTT HAT +pair_coeff 5 7 0.044496 2.910326 0.000000 # CTT HT +pair_coeff 6 6 0.029999 2.420000 0.000000 # HAT HAT +pair_coeff 6 7 0.029999 2.420000 0.000000 # HAT HT +pair_coeff 7 7 0.029999 2.420000 0.000000 # HT HT +pair_coeff 1 8 0.000000 0.000000 1.620000 # CAT D_CAT +pair_coeff 1 9 0.000000 0.000000 1.620000 # CAT D_CAO +pair_coeff 1 10 0.000000 0.000000 1.620000 # CAT D_CAM +pair_coeff 1 11 0.000000 0.000000 1.620000 # CAT D_CAP +pair_coeff 1 12 0.000000 0.000000 1.620000 # CAT D_CTT +pair_coeff 2 8 0.000000 0.000000 1.620000 # CAO D_CAT +pair_coeff 2 9 0.000000 0.000000 1.620000 # CAO D_CAO +pair_coeff 2 10 0.000000 0.000000 1.620000 # CAO D_CAM +pair_coeff 2 11 0.000000 0.000000 1.620000 # CAO D_CAP +pair_coeff 2 12 0.000000 0.000000 1.620000 # CAO D_CTT +pair_coeff 3 8 0.000000 0.000000 1.620000 # CAM D_CAT +pair_coeff 3 9 0.000000 0.000000 1.620000 # CAM D_CAO +pair_coeff 3 10 0.000000 0.000000 1.620000 # CAM D_CAM +pair_coeff 3 11 0.000000 0.000000 1.620000 # CAM D_CAP +pair_coeff 3 12 0.000000 0.000000 1.620000 # CAM D_CTT +pair_coeff 4 8 0.000000 0.000000 1.620000 # CAP D_CAT +pair_coeff 4 9 0.000000 0.000000 1.620000 # CAP D_CAO +pair_coeff 4 10 0.000000 0.000000 1.620000 # CAP D_CAM +pair_coeff 4 11 0.000000 0.000000 1.620000 # CAP D_CAP +pair_coeff 4 12 0.000000 0.000000 1.620000 # CAP D_CTT +pair_coeff 5 8 0.000000 0.000000 1.620000 # CTT D_CAT +pair_coeff 5 9 0.000000 0.000000 1.620000 # CTT D_CAO +pair_coeff 5 10 0.000000 0.000000 1.620000 # CTT D_CAM +pair_coeff 5 11 0.000000 0.000000 1.620000 # CTT D_CAP +pair_coeff 5 12 0.000000 0.000000 1.620000 # CTT D_CTT +pair_coeff 8 8 0.000000 0.000000 1.620000 # D_CAT D_CAT +pair_coeff 8 9 0.000000 0.000000 1.620000 # D_CAT D_CAO +pair_coeff 8 10 0.000000 0.000000 1.620000 # D_CAT D_CAM +pair_coeff 8 11 0.000000 0.000000 1.620000 # D_CAT D_CAP +pair_coeff 8 12 0.000000 0.000000 1.620000 # D_CAT D_CTT +pair_coeff 9 9 0.000000 0.000000 1.620000 # D_CAO D_CAO +pair_coeff 9 10 0.000000 0.000000 1.620000 # D_CAO D_CAM +pair_coeff 9 11 0.000000 0.000000 1.620000 # D_CAO D_CAP +pair_coeff 9 12 0.000000 0.000000 1.620000 # D_CAO D_CTT +pair_coeff 10 10 0.000000 0.000000 1.620000 # D_CAM D_CAM +pair_coeff 10 11 0.000000 0.000000 1.620000 # D_CAM D_CAP +pair_coeff 10 12 0.000000 0.000000 1.620000 # D_CAM D_CTT +pair_coeff 11 11 0.000000 0.000000 1.620000 # D_CAP D_CAP +pair_coeff 11 12 0.000000 0.000000 1.620000 # D_CAP D_CTT +pair_coeff 12 12 0.000000 0.000000 1.620000 # D_CTT D_CTT + +neighbor 2.0 bin + +variable vTEMP equal 260.0 +variable vTEMP_D equal 1.0 +variable vPRESS equal 1.0 + +velocity gCORES create ${vTEMP} 12345 +velocity gCORES create 260 12345 +velocity gDRUDES create ${vTEMP_D} 12345 +velocity gDRUDES create 1 12345 + +fix fDRUDE all drude C C C C C N N D D D D D + +fix fSHAKE gCORES shake 0.0001 20 0 b 4 6 7 8 + 1250 = # of size 2 clusters + 0 = # of size 3 clusters + 250 = # of size 4 clusters + 0 = # of frozen angles + +fix fLANG all langevin/drude ${vTEMP} 100.0 200611 ${vTEMP_D} 20.0 260514 zero yes +fix fLANG all langevin/drude 260 100.0 200611 ${vTEMP_D} 20.0 260514 zero yes +fix fLANG all langevin/drude 260 100.0 200611 1 20.0 260514 zero yes +fix fNPH all nve + +compute cTEMP all temp/drude + +thermo_style custom step cpu etotal ke temp pe ebond eangle edihed eimp evdwl ecoul elong press vol c_cTEMP[1] c_cTEMP[2] +thermo 50 + +timestep 0.5 +run 2000 +PPPM initialization ... +WARNING: Using 12-bit tables for long-range coulomb (../kspace.cpp:321) + G vector (1/distance) = 0.382011 + grid = 40 40 40 + stencil order = 5 + estimated absolute RMS force accuracy = 0.0325934 + estimated relative force accuracy = 9.8154e-05 + using double precision FFTs + 3d grid and FFT values/proc = 103823 64000 +Rebuild special list taking Drude particles into account +Old max number of 1-2 to 1-4 neighbors: 19 +New max number of 1-2 to 1-4 neighbors: 20 (+1) +Neighbor list info ... + update every 1 steps, delay 10 steps, check yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 10 + ghost atom cutoff = 10 + binsize = 5, bins = 8 8 8 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair lj/cut/thole/long, perpetual + attributes: half, newton on + pair build: half/bin/newton + stencil: half/bin/3d/newton + bin: standard +Per MPI rank memory allocation (min/avg/max) = 42.06 | 42.06 | 42.06 Mbytes +Step CPU TotEng KinEng Temp PotEng E_bond E_angle E_dihed E_impro E_vdwl E_coul E_long Press Volume c_cTEMP[1] c_cTEMP[2] + 0 0 14386.197 2910.7282 202.07402 11475.469 6565.4851 20.333365 1.0706727e-06 1.3894617e-07 4972.8631 1306116.6 -1306199.8 40273.68 48631.318 314.89553 3.1777821 + 50 4.311986 8083.3901 4729.9995 328.37487 3353.3906 1812.5186 685.40417 646.10358 50.083281 804.80656 1305984.8 -1306630.3 16960.287 48631.318 448.67988 116.22125 + 100 8.756623 6206.7865 3683.944 255.75365 2522.8425 977.52675 777.45439 838.58809 68.086914 471.97862 1306097.1 -1306707.9 15657.142 48631.318 380.53159 35.760643 + 150 13.134938 5386.0219 3582.482 248.70976 1803.5399 752.25928 803.04832 643.43249 49.76684 131.97853 1306139.2 -1306716.2 15140.102 48631.318 383.61303 10.880935 + 200 17.508189 4846.4097 3254.3932 225.93257 1592.0166 700.43329 812.26722 657.52279 51.044716 -64.045174 1306160.5 -1306725.7 13844.277 48631.318 351.90677 3.8489009 + 250 21.871676 4473.215 3091.5333 214.6262 1381.6817 688.24707 842.63267 590.45999 48.22798 -214.02425 1306156.6 -1306730.5 8808.7402 48631.318 335.32872 1.8372171 + 300 26.226064 4191.8834 2883.8468 200.2078 1308.0367 734.36657 856.15482 584.87904 47.590787 -343.44615 1306163.4 -1306734.9 3389.3777 48631.318 313.03581 1.3011826 + 350 30.568716 3972.0739 2756.8392 191.39044 1215.2347 664.4688 866.06348 580.13632 48.515297 -378.8729 1306173.3 -1306738.3 8458.1149 48631.318 299.31146 1.1345329 + 400 34.845648 3838.3528 2731.3975 189.62419 1106.9552 684.0318 870.67752 548.93014 44.038787 -460.1537 1306160.4 -1306741 6697.9188 48631.318 296.54405 1.1332149 + 450 39.17477 3731.18 2607.8585 181.04762 1123.3216 719.57572 894.99915 571.99504 47.625227 -537.60494 1306171.9 -1306745.2 2450.4224 48631.318 283.13713 1.0721818 + 500 43.497489 3607.0055 2565.9469 178.13796 1041.0586 717.36452 841.34375 551.39834 45.985413 -542.47313 1306170.9 -1306743.4 3077.1849 48631.318 278.59462 1.0410963 + 550 47.812038 3513.8132 2548.7259 176.94241 965.08736 673.81272 852.38161 522.99297 44.276434 -552.27379 1306171.2 -1306747.4 4659.7275 48631.318 276.70124 1.0757459 + 600 52.124423 3386.9627 2471.0692 171.55118 915.89348 689.99732 833.61298 517.49343 43.023588 -594.96363 1306170.6 -1306743.8 2159.7328 48631.318 268.27854 1.0287605 + 650 56.370068 3374.3191 2413.6719 167.56644 960.64717 703.32428 874.12028 535.41271 43.256032 -617.25815 1306168.6 -1306746.8 1262.4757 48631.318 261.99584 1.0950976 + 700 60.667476 3342.9467 2412.9563 167.51676 929.99042 683.70355 882.22521 527.03932 43.661355 -616.70117 1306161 -1306751 2950.9009 48631.318 261.92814 1.0771869 + 750 64.964696 3327.7938 2414.3547 167.61385 913.43902 695.12778 863.48248 542.99202 46.408369 -639.60076 1306160.7 -1306755.6 1583.0277 48631.318 262.09771 1.0464936 + 800 69.256916 3391.689 2452.2049 170.24155 939.48407 694.2176 892.61592 557.53726 45.495129 -654.56675 1306155.2 -1306751 1232.1671 48631.318 266.20601 1.0640309 + 850 73.527972 3386.8618 2486.6928 172.63584 900.16902 696.7684 880.27643 545.11446 46.474227 -665.90464 1306154.7 -1306757.3 1129.2062 48631.318 269.97945 1.027015 + 900 77.775993 3368.0724 2416.7145 167.77767 951.35789 718.66654 893.18396 537.79136 46.404626 -641.29596 1306152.9 -1306756.3 1673.0743 48631.318 262.34697 1.0597091 + 950 82.028341 3300.4793 2409.5613 167.28107 890.918 728.06888 890.51193 515.08456 44.36547 -671.13741 1306142.3 -1306758.2 1038.6579 48631.318 261.57036 1.0567234 + 1000 86.189789 3333.2955 2452.2486 170.24458 881.04692 699.8414 915.33862 506.83261 41.77374 -665.68264 1306141.6 -1306758.7 467.42142 48631.318 266.19104 1.0987814 + 1050 90.384168 3303.87 2376.9713 165.01854 926.89875 706.12941 930.65844 524.73304 42.644613 -657.19573 1306139.3 -1306759.4 1737.6624 48631.318 258.00246 1.0954432 + 1100 94.549452 3367.668 2454.9154 170.42973 912.75259 715.68494 935.8363 516.52205 43.261761 -671.86101 1306137.9 -1306764.6 961.79199 48631.318 266.492 1.0797548 + 1150 98.65493 3350.0898 2485.3993 172.54604 864.69051 699.23072 933.76405 510.60424 42.381362 -684.53513 1306127.1 -1306763.8 -272.48178 48631.318 269.82496 1.0512421 + 1200 102.82045 3309.6871 2398.9577 166.54492 910.72944 705.58979 934.53183 531.90967 45.872142 -664.58495 1306126.9 -1306769.5 627.31931 48631.318 260.41866 1.0531639 + 1250 106.9899 3304.504 2491.6998 172.98344 812.80426 710.83366 881.33764 494.90045 41.71618 -672.49264 1306123.8 -1306767.3 136.11723 48631.318 270.51026 1.0516137 + 1300 111.16224 3318.9543 2462.0621 170.92588 856.89219 709.17314 932.87209 503.80373 43.426006 -680.2474 1306121.2 -1306773.3 1276.2503 48631.318 267.28591 1.0510113 + 1350 115.27184 3314.8515 2434.8483 169.03659 880.00316 710.91641 922.28347 540.40795 44.753548 -686.09335 1306124.5 -1306776.7 -438.87694 48631.318 264.31236 1.0731666 + 1400 119.44228 3349.0785 2457.7697 170.62788 891.30875 711.28064 936.58607 516.63511 42.396287 -653.09763 1306113.8 -1306776.3 350.79618 48631.318 266.80555 1.0745043 + 1450 123.61267 3364.1486 2459.8741 170.77397 904.27455 696.57265 946.32098 538.55368 44.69075 -652.75091 1306111 -1306780.1 502.47466 48631.318 267.03201 1.0789056 + 1500 127.72962 3341.9369 2454.3302 170.3891 887.60672 726.46979 903.40815 557.73064 47.536125 -667.65025 1306100.7 -1306780.6 -248.0975 48631.318 266.44821 1.044725 + 1550 131.91041 3270.4282 2437.7916 169.24093 832.63655 691.49462 910.83807 523.17366 44.83093 -654.48655 1306100.5 -1306783.7 490.32965 48631.318 264.63652 1.0662604 + 1600 136.0834 3252.0725 2429.6805 168.67782 822.39196 689.68155 898.22828 535.31963 43.84399 -660.93277 1306100.1 -1306783.9 1729.5956 48631.318 263.74523 1.0817172 + 1650 140.26444 3239.748 2442.6258 169.57653 797.12222 671.1832 907.1659 507.03947 43.048028 -648.14001 1306103.3 -1306786.5 970.43988 48631.318 265.15987 1.0708872 + 1700 144.3855 3202.9157 2410.267 167.33006 792.64869 686.40974 882.40791 527.02899 43.819792 -656.82001 1306096 -1306786.2 -107.50166 48631.318 261.64368 1.062837 + 1750 148.56592 3214.6107 2366.3264 164.27953 848.28434 696.38228 915.58636 538.2236 47.852688 -652.7697 1306093.6 -1306790.6 -164.14366 48631.318 256.84519 1.0937744 + 1800 152.74611 3209.5771 2421.4089 168.10357 788.16819 683.61816 869.45802 532.77927 45.708374 -658.39221 1306103.1 -1306788.1 277.61781 48631.318 262.83282 1.1036154 + 1850 156.86567 3146.3973 2362.3333 164.00232 784.064 697.87032 875.8451 523.54452 43.851379 -665.83106 1306101.5 -1306792.7 497.88657 48631.318 256.42683 1.0654271 + 1900 161.0419 3141.5496 2367.1077 164.33378 774.44186 693.39945 878.97447 515.65653 44.619392 -668.11692 1306103.8 -1306793.9 -1427.3998 48631.318 256.94212 1.0727903 + 1950 165.22235 3134.6473 2295.577 159.36784 839.07025 699.62719 905.76937 519.32307 46.109334 -645.08933 1306104.9 -1306791.6 1744.2846 48631.318 249.19694 1.0064565 + 2000 169.4 3146.866 2361.3821 163.93628 785.48386 682.24124 889.6864 534.94877 46.855983 -678.1614 1306104 -1306794.1 699.8735 48631.318 256.32873 1.0559143 +Loop time of 169.4 on 1 procs for 2000 steps with 5500 atoms + +Performance: 0.510 ns/day, 47.056 hours/ns, 11.806 timesteps/s +99.9% CPU use with 1 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 107.93 | 107.93 | 107.93 | 0.0 | 63.71 +Bond | 19.76 | 19.76 | 19.76 | 0.0 | 11.66 +Kspace | 34.926 | 34.926 | 34.926 | 0.0 | 20.62 +Neigh | 1.9932 | 1.9932 | 1.9932 | 0.0 | 1.18 +Comm | 0.73555 | 0.73555 | 0.73555 | 0.0 | 0.43 +Output | 0.0065863 | 0.0065863 | 0.0065863 | 0.0 | 0.00 +Modify | 3.9135 | 3.9135 | 3.9135 | 0.0 | 2.31 +Other | | 0.133 | | | 0.08 + +Nlocal: 5500 ave 5500 max 5500 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 13219 ave 13219 max 13219 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 1.33739e+06 ave 1.33739e+06 max 1.33739e+06 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 1337388 +Ave neighs/atom = 243.161 +Ave special neighs/atom = 15.6364 +Neighbor list builds = 32 +Dangerous builds = 0 +Total wall time: 0:02:49 diff --git a/examples/USER/drude/toluene/log.toluene.lang.11Aug17.linux.4 b/examples/USER/drude/toluene/log.toluene.lang.11Aug17.linux.4 new file mode 100644 index 0000000000000000000000000000000000000000..cebe687c11e316102ff97c58b109abfd0044f06e --- /dev/null +++ b/examples/USER/drude/toluene/log.toluene.lang.11Aug17.linux.4 @@ -0,0 +1,251 @@ +LAMMPS (11 Aug 2017) +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (../comm.cpp:90) + using 1 OpenMP thread(s) per MPI task +# 250 toluene system for drude polarizability example (Langevin) + +units real +boundary p p p + +atom_style full +bond_style harmonic +angle_style harmonic +dihedral_style opls +improper_style opls +special_bonds lj/coul 0.0 0.0 0.5 + +pair_style lj/cut/thole/long 2.600 8.0 8.0 +pair_modify mix geometric tail yes +kspace_style pppm 1.0e-4 + +read_data data.toluene extra/special/per/atom 1 + orthogonal box = (-18.2908 -18.1636 -18.223) to (18.3357 18.1621 18.3287) + 2 by 1 by 2 MPI processor grid + reading atoms ... + 5500 atoms + scanning bonds ... + 4 = max bonds/atom + scanning angles ... + 6 = max angles/atom + scanning dihedrals ... + 8 = max dihedrals/atom + scanning impropers ... + 2 = max impropers/atom + reading bonds ... + 5500 bonds + reading angles ... + 6000 angles + reading dihedrals ... + 6000 dihedrals + reading impropers ... + 1500 impropers + 5 = max # of 1-2 neighbors + 10 = max # of 1-3 neighbors + 16 = max # of 1-4 neighbors + 20 = max # of special neighbors + +comm_modify vel yes + +group gTOLUENE molecule 1:250 +5500 atoms in group gTOLUENE +group gCORES type 1 2 3 4 5 6 7 +3750 atoms in group gCORES +group gDRUDES type 8 9 10 11 12 +1750 atoms in group gDRUDES + +pair_coeff 1 1 0.069998 3.550000 1.620000 # CAT CAT +pair_coeff 1 2 0.069998 3.550000 1.620000 # CAT CAO +pair_coeff 1 3 0.069998 3.550000 1.620000 # CAT CAM +pair_coeff 1 4 0.069998 3.550000 1.620000 # CAT CAP +pair_coeff 1 5 0.067968 3.524911 1.620000 # CAT CTT +pair_coeff 1 6 0.045825 2.931041 0.000000 # CAT HAT +pair_coeff 1 7 0.045825 2.931041 0.000000 # CAT HT +pair_coeff 2 2 0.069998 3.550000 1.620000 # CAO CAO +pair_coeff 2 3 0.069998 3.550000 1.620000 # CAO CAM +pair_coeff 2 4 0.069998 3.550000 1.620000 # CAO CAP +pair_coeff 2 5 0.067968 3.524911 1.620000 # CAO CTT +pair_coeff 2 6 0.045825 2.931041 0.000000 # CAO HAT +pair_coeff 2 7 0.045825 2.931041 0.000000 # CAO HT +pair_coeff 3 3 0.069998 3.550000 1.620000 # CAM CAM +pair_coeff 3 4 0.069998 3.550000 1.620000 # CAM CAP +pair_coeff 3 5 0.067968 3.524911 1.620000 # CAM CTT +pair_coeff 3 6 0.045825 2.931041 0.000000 # CAM HAT +pair_coeff 3 7 0.045825 2.931041 0.000000 # CAM HT +pair_coeff 4 4 0.069998 3.550000 1.620000 # CAP CAP +pair_coeff 4 5 0.067968 3.524911 1.620000 # CAP CTT +pair_coeff 4 6 0.045825 2.931041 0.000000 # CAP HAT +pair_coeff 4 7 0.045825 2.931041 0.000000 # CAP HT +pair_coeff 5 5 0.065997 3.500000 1.620000 # CTT CTT +pair_coeff 5 6 0.044496 2.910326 0.000000 # CTT HAT +pair_coeff 5 7 0.044496 2.910326 0.000000 # CTT HT +pair_coeff 6 6 0.029999 2.420000 0.000000 # HAT HAT +pair_coeff 6 7 0.029999 2.420000 0.000000 # HAT HT +pair_coeff 7 7 0.029999 2.420000 0.000000 # HT HT +pair_coeff 1 8 0.000000 0.000000 1.620000 # CAT D_CAT +pair_coeff 1 9 0.000000 0.000000 1.620000 # CAT D_CAO +pair_coeff 1 10 0.000000 0.000000 1.620000 # CAT D_CAM +pair_coeff 1 11 0.000000 0.000000 1.620000 # CAT D_CAP +pair_coeff 1 12 0.000000 0.000000 1.620000 # CAT D_CTT +pair_coeff 2 8 0.000000 0.000000 1.620000 # CAO D_CAT +pair_coeff 2 9 0.000000 0.000000 1.620000 # CAO D_CAO +pair_coeff 2 10 0.000000 0.000000 1.620000 # CAO D_CAM +pair_coeff 2 11 0.000000 0.000000 1.620000 # CAO D_CAP +pair_coeff 2 12 0.000000 0.000000 1.620000 # CAO D_CTT +pair_coeff 3 8 0.000000 0.000000 1.620000 # CAM D_CAT +pair_coeff 3 9 0.000000 0.000000 1.620000 # CAM D_CAO +pair_coeff 3 10 0.000000 0.000000 1.620000 # CAM D_CAM +pair_coeff 3 11 0.000000 0.000000 1.620000 # CAM D_CAP +pair_coeff 3 12 0.000000 0.000000 1.620000 # CAM D_CTT +pair_coeff 4 8 0.000000 0.000000 1.620000 # CAP D_CAT +pair_coeff 4 9 0.000000 0.000000 1.620000 # CAP D_CAO +pair_coeff 4 10 0.000000 0.000000 1.620000 # CAP D_CAM +pair_coeff 4 11 0.000000 0.000000 1.620000 # CAP D_CAP +pair_coeff 4 12 0.000000 0.000000 1.620000 # CAP D_CTT +pair_coeff 5 8 0.000000 0.000000 1.620000 # CTT D_CAT +pair_coeff 5 9 0.000000 0.000000 1.620000 # CTT D_CAO +pair_coeff 5 10 0.000000 0.000000 1.620000 # CTT D_CAM +pair_coeff 5 11 0.000000 0.000000 1.620000 # CTT D_CAP +pair_coeff 5 12 0.000000 0.000000 1.620000 # CTT D_CTT +pair_coeff 8 8 0.000000 0.000000 1.620000 # D_CAT D_CAT +pair_coeff 8 9 0.000000 0.000000 1.620000 # D_CAT D_CAO +pair_coeff 8 10 0.000000 0.000000 1.620000 # D_CAT D_CAM +pair_coeff 8 11 0.000000 0.000000 1.620000 # D_CAT D_CAP +pair_coeff 8 12 0.000000 0.000000 1.620000 # D_CAT D_CTT +pair_coeff 9 9 0.000000 0.000000 1.620000 # D_CAO D_CAO +pair_coeff 9 10 0.000000 0.000000 1.620000 # D_CAO D_CAM +pair_coeff 9 11 0.000000 0.000000 1.620000 # D_CAO D_CAP +pair_coeff 9 12 0.000000 0.000000 1.620000 # D_CAO D_CTT +pair_coeff 10 10 0.000000 0.000000 1.620000 # D_CAM D_CAM +pair_coeff 10 11 0.000000 0.000000 1.620000 # D_CAM D_CAP +pair_coeff 10 12 0.000000 0.000000 1.620000 # D_CAM D_CTT +pair_coeff 11 11 0.000000 0.000000 1.620000 # D_CAP D_CAP +pair_coeff 11 12 0.000000 0.000000 1.620000 # D_CAP D_CTT +pair_coeff 12 12 0.000000 0.000000 1.620000 # D_CTT D_CTT + +neighbor 2.0 bin + +variable vTEMP equal 260.0 +variable vTEMP_D equal 1.0 +variable vPRESS equal 1.0 + +velocity gCORES create ${vTEMP} 12345 +velocity gCORES create 260 12345 +velocity gDRUDES create ${vTEMP_D} 12345 +velocity gDRUDES create 1 12345 + +fix fDRUDE all drude C C C C C N N D D D D D + +fix fSHAKE gCORES shake 0.0001 20 0 b 4 6 7 8 + 1250 = # of size 2 clusters + 0 = # of size 3 clusters + 250 = # of size 4 clusters + 0 = # of frozen angles + +fix fLANG all langevin/drude ${vTEMP} 100.0 200611 ${vTEMP_D} 20.0 260514 zero yes +fix fLANG all langevin/drude 260 100.0 200611 ${vTEMP_D} 20.0 260514 zero yes +fix fLANG all langevin/drude 260 100.0 200611 1 20.0 260514 zero yes +fix fNPH all nve + +compute cTEMP all temp/drude + +thermo_style custom step cpu etotal ke temp pe ebond eangle edihed eimp evdwl ecoul elong press vol c_cTEMP[1] c_cTEMP[2] +thermo 50 + +timestep 0.5 +run 2000 +PPPM initialization ... +WARNING: Using 12-bit tables for long-range coulomb (../kspace.cpp:321) + G vector (1/distance) = 0.382011 + grid = 40 40 40 + stencil order = 5 + estimated absolute RMS force accuracy = 0.0325934 + estimated relative force accuracy = 9.8154e-05 + using double precision FFTs + 3d grid and FFT values/proc = 34263 16000 +Rebuild special list taking Drude particles into account +Old max number of 1-2 to 1-4 neighbors: 19 +New max number of 1-2 to 1-4 neighbors: 20 (+1) +Neighbor list info ... + update every 1 steps, delay 10 steps, check yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 10 + ghost atom cutoff = 10 + binsize = 5, bins = 8 8 8 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair lj/cut/thole/long, perpetual + attributes: half, newton on + pair build: half/bin/newton + stencil: half/bin/3d/newton + bin: standard +Per MPI rank memory allocation (min/avg/max) = 18 | 18 | 18 Mbytes +Step CPU TotEng KinEng Temp PotEng E_bond E_angle E_dihed E_impro E_vdwl E_coul E_long Press Volume c_cTEMP[1] c_cTEMP[2] + 0 0 14386.197 2910.7282 202.07402 11475.469 6565.4851 20.333365 1.0706727e-06 1.3894617e-07 4972.8631 1306116.6 -1306199.8 40273.68 48631.318 314.89553 3.1777821 + 50 1.0658228 8014.6879 4671.7498 324.33095 3342.9381 1798.7991 670.22837 651.99307 50.352024 819.34616 1305984.9 -1306632.7 17255.952 48631.318 442.52888 116.12397 + 100 2.136163 6185.5007 3697.0414 256.66292 2488.4593 974.42931 774.88353 840.46625 66.896007 427.27085 1306105.5 -1306701 15044.739 48631.318 381.93582 35.802658 + 150 3.202647 5418.0644 3628.2714 251.88864 1789.7929 764.02696 804.61034 641.14915 47.995428 108.05084 1306138.9 -1306714.9 15258.194 48631.318 388.65363 10.777816 + 200 4.2728949 4838.4235 3303.8964 229.36927 1534.5271 702.10438 772.85348 625.99718 52.299187 -63.792745 1306166.5 -1306721.4 13487.722 48631.318 357.35337 3.7423617 + 250 5.3275268 4461.2438 3084.8973 214.16551 1376.3465 693.85145 823.23815 599.85313 48.280277 -230.56822 1306167.8 -1306726.1 8779.0061 48631.318 334.59262 1.8620294 + 300 6.3794398 4179.6462 2885.0738 200.29299 1294.5724 739.337 868.84011 555.04912 44.838819 -354.73738 1306171.3 -1306730 4410.8735 48631.318 313.17473 1.2892347 + 350 7.427706 3934.3968 2756.2421 191.34899 1178.1546 666.16877 877.32996 548.99846 45.087026 -404.32209 1306179 -1306734.1 8477.8828 48631.318 299.22663 1.1698531 + 400 8.4820418 3800.4769 2674.8317 185.69716 1125.6452 693.29433 841.29833 579.61438 48.325361 -470.18802 1306170.5 -1306737.2 6265.7532 48631.318 290.39105 1.1303952 + 450 9.528651 3685.28 2616.9074 181.67583 1068.3726 702.68328 886.66644 555.74511 46.160811 -557.70651 1306176.6 -1306741.7 2701.7737 48631.318 284.11064 1.091646 + 500 10.579133 3582.6591 2517.6443 174.78461 1065.0148 701.82101 894.9429 554.06012 46.074357 -570.49878 1306181.8 -1306743.2 3643.7426 48631.318 273.31525 1.0831346 + 550 11.629649 3542.0402 2527.0386 175.4368 1015.0016 688.73877 916.2381 521.69932 44.014375 -580.05437 1306171 -1306746.6 2928.6632 48631.318 274.34257 1.0740018 + 600 12.684143 3507.0443 2519.9749 174.94641 987.06936 711.58734 894.63276 525.57884 42.944226 -603.24423 1306161.2 -1306745.7 2082.9907 48631.318 273.57124 1.0784841 + 650 13.737965 3416.2001 2445.9361 169.80635 970.26394 706.95207 891.76446 540.90369 45.970985 -626.32832 1306160.2 -1306749.2 1912.8783 48631.318 265.5023 1.1021764 + 700 14.777375 3419.7572 2446.117 169.81891 973.64019 664.17579 936.51992 551.67148 45.696531 -634.70926 1306159.6 -1306749.4 2215.7085 48631.318 265.53614 1.0774684 + 750 15.795347 3418.6537 2449.343 170.04287 969.31069 706.12432 899.61553 553.21874 45.793213 -642.75298 1306158.1 -1306750.8 1022.2516 48631.318 265.89304 1.0681488 + 800 16.835794 3385.2449 2465.4963 171.16429 919.74864 692.34918 888.91243 530.24204 45.132243 -638.54787 1306154.6 -1306753 1601.1391 48631.318 267.64361 1.0797553 + 850 17.87536 3397.1124 2426.3129 168.44403 970.79951 717.48898 878.71057 580.26487 46.675101 -646.96926 1306150.9 -1306756.3 1048.7905 48631.318 263.38063 1.0785255 + 900 18.899639 3324.2064 2447.5004 169.91495 876.70599 683.62339 881.77789 531.98758 43.646731 -648.59248 1306144.4 -1306760.2 2221.5859 48631.318 265.69596 1.0608373 + 950 19.938468 3316.6329 2398.6988 166.52695 917.93405 702.84237 885.96473 540.35376 45.671318 -638.80334 1306144.4 -1306762.5 1955.2237 48631.318 260.38167 1.0687233 + 1000 20.973543 3287.4205 2384.191 165.51976 903.22949 705.56988 889.96387 535.23674 44.902139 -661.28175 1306150.4 -1306761.6 90.200683 48631.318 258.81506 1.0477545 + 1050 21.990961 3297.7806 2392.0372 166.06448 905.74339 697.33157 889.75086 537.2395 46.319713 -636.03286 1306135.9 -1306764.8 1893.8234 48631.318 259.67633 1.0344207 + 1100 23.006456 3240.651 2370.2217 164.54996 870.42931 693.87289 897.0846 526.89184 43.778979 -657.83716 1306132.1 -1306765.5 799.62979 48631.318 257.28711 1.0618941 + 1150 24.014558 3232.457 2377.9797 165.08855 854.47728 692.51558 897.77048 520.3269 43.903959 -657.38369 1306126.9 -1306769.6 178.21408 48631.318 258.13876 1.0479172 + 1200 25.010178 3238.4266 2392.0623 166.06622 846.36427 695.98996 887.237 522.01974 42.355716 -660.92843 1306124.7 -1306765 1006.1877 48631.318 259.66037 1.0698925 + 1250 26.01949 3198.3364 2332.7551 161.94888 865.58134 690.81786 897.35028 524.47996 44.421121 -640.92419 1306116.3 -1306766.8 2073.9672 48631.318 253.227 1.0326937 + 1300 27.026911 3237.6809 2386.3739 165.67131 851.30706 672.11785 901.04813 530.2964 44.020263 -655.33033 1306125.7 -1306766.5 579.46013 48631.318 259.05838 1.0374113 + 1350 28.033721 3285.9536 2371.155 164.61476 914.79862 718.12968 928.41764 524.02349 43.89896 -657.10221 1306127.3 -1306769.9 518.88041 48631.318 257.36737 1.0993197 + 1400 29.026742 3272.2173 2391.4158 166.02134 880.80147 712.59883 896.13616 532.95785 45.989768 -658.37495 1306125.6 -1306774.1 961.2067 48631.318 259.5968 1.0557033 + 1450 30.032566 3244.2627 2356.0955 163.56926 888.16727 714.72692 901.18382 534.59787 45.517573 -655.58258 1306124.5 -1306776.8 596.10558 48631.318 255.75173 1.058657 + 1500 31.03878 3244.8598 2408.5382 167.21004 836.32161 695.63105 867.27743 527.37333 44.496971 -648.96393 1306125.2 -1306774.7 443.71088 48631.318 261.45495 1.0648973 + 1550 32.041435 3239.3658 2367.1336 164.33557 872.23223 704.16965 884.5938 544.41685 46.110791 -654.61963 1306124.1 -1306776.5 -446.5562 48631.318 256.96289 1.0409003 + 1600 33.058977 3221.4258 2334.2656 162.05375 887.1602 713.8296 885.80472 533.86753 45.413663 -633.58824 1306119.6 -1306777.8 1527.9489 48631.318 253.36367 1.0817678 + 1650 34.080875 3224.4472 2385.9055 165.63879 838.54168 681.01628 879.88017 536.75983 43.884394 -643.24788 1306114 -1306773.8 1314.2208 48631.318 258.97106 1.1033457 + 1700 35.095047 3178.6575 2352.4294 163.31475 826.2281 700.79494 854.06687 549.39826 46.155483 -662.57181 1306115.2 -1306776.9 -187.36898 48631.318 255.35015 1.0638209 + 1750 36.093828 3219.473 2371.9421 164.6694 847.53093 699.44953 891.26068 541.91687 45.714235 -679.13432 1306120.3 -1306771.9 -618.32924 48631.318 257.48034 1.0512601 + 1800 37.110101 3202.0094 2371.8909 164.66585 830.11842 698.44522 858.38216 550.82008 46.315893 -667.77838 1306119.2 -1306775.3 -9.4963278 48631.318 257.46873 1.0619052 + 1850 38.121337 3202.0111 2366.6984 164.30536 835.31277 714.69988 849.6778 553.24258 46.502994 -667.44162 1306114.9 -1306776.3 131.11108 48631.318 256.90165 1.0656162 + 1900 39.132607 3228.7805 2365.934 164.25229 862.84648 720.68418 890.65533 554.75943 45.736726 -685.52803 1306115.1 -1306778.5 -82.525994 48631.318 256.81451 1.0726218 + 1950 40.127507 3218.4068 2443.0023 169.60267 775.40452 673.40001 874.63022 529.69964 43.166847 -680.57322 1306115.4 -1306780.3 622.76654 48631.318 265.20173 1.0693092 + 2000 41.138176 3257.463 2375.6246 164.92505 881.83842 677.60747 933.47776 547.01076 46.507189 -665.56273 1306123.7 -1306780.9 1829.3477 48631.318 257.88171 1.0500311 +Loop time of 41.1383 on 4 procs for 2000 steps with 5500 atoms + +Performance: 2.100 ns/day, 11.427 hours/ns, 48.617 timesteps/s +99.8% CPU use with 4 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 21.082 | 22.483 | 24.145 | 26.6 | 54.65 +Bond | 4.9992 | 5.0781 | 5.1544 | 2.7 | 12.34 +Kspace | 9.1202 | 10.806 | 12.272 | 39.7 | 26.27 +Neigh | 0.45045 | 0.45076 | 0.45094 | 0.0 | 1.10 +Comm | 0.85982 | 0.87287 | 0.88725 | 1.2 | 2.12 +Output | 0.0036495 | 0.004005 | 0.0049655 | 0.9 | 0.01 +Modify | 1.4009 | 1.401 | 1.4013 | 0.0 | 3.41 +Other | | 0.04245 | | | 0.10 + +Nlocal: 1375 ave 1398 max 1361 min +Histogram: 1 0 2 0 0 0 0 0 0 1 +Nghost: 7745.75 ave 7788 max 7697 min +Histogram: 1 0 0 1 0 0 0 0 1 1 +Neighs: 334374 ave 348629 max 319495 min +Histogram: 2 0 0 0 0 0 0 0 0 2 + +Total # of neighbors = 1337494 +Ave neighs/atom = 243.181 +Ave special neighs/atom = 15.6364 +Neighbor list builds = 31 +Dangerous builds = 0 +Total wall time: 0:00:41 diff --git a/examples/USER/drude/toluene/log.toluene.nh.11Aug17.linux.1 b/examples/USER/drude/toluene/log.toluene.nh.11Aug17.linux.1 new file mode 100644 index 0000000000000000000000000000000000000000..6070b858befc4d39c2c4d6e2e91b1644d1afc9e9 --- /dev/null +++ b/examples/USER/drude/toluene/log.toluene.nh.11Aug17.linux.1 @@ -0,0 +1,259 @@ +LAMMPS (11 Aug 2017) +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (../comm.cpp:90) + using 1 OpenMP thread(s) per MPI task +# 250 toluene system for drude polarizability example (Nose-Hoover) + +units real +boundary p p p + +atom_style full +bond_style harmonic +angle_style harmonic +dihedral_style opls +improper_style opls +special_bonds lj/coul 0.0 0.0 0.5 + +pair_style lj/cut/thole/long 2.600 8.0 8.0 +pair_modify mix geometric tail yes +kspace_style pppm 1.0e-4 + +read_data data.toluene extra/special/per/atom 1 + orthogonal box = (-18.2908 -18.1636 -18.223) to (18.3357 18.1621 18.3287) + 1 by 1 by 1 MPI processor grid + reading atoms ... + 5500 atoms + scanning bonds ... + 4 = max bonds/atom + scanning angles ... + 6 = max angles/atom + scanning dihedrals ... + 8 = max dihedrals/atom + scanning impropers ... + 2 = max impropers/atom + reading bonds ... + 5500 bonds + reading angles ... + 6000 angles + reading dihedrals ... + 6000 dihedrals + reading impropers ... + 1500 impropers + 5 = max # of 1-2 neighbors + 10 = max # of 1-3 neighbors + 16 = max # of 1-4 neighbors + 20 = max # of special neighbors + +comm_modify vel yes + +group gTOLUENE molecule 1:250 +5500 atoms in group gTOLUENE +group gCORES type 1 2 3 4 5 6 7 +3750 atoms in group gCORES +group gDRUDES type 8 9 10 11 12 +1750 atoms in group gDRUDES + +pair_coeff 1 1 0.069998 3.550000 1.620000 # CAT CAT +pair_coeff 1 2 0.069998 3.550000 1.620000 # CAT CAO +pair_coeff 1 3 0.069998 3.550000 1.620000 # CAT CAM +pair_coeff 1 4 0.069998 3.550000 1.620000 # CAT CAP +pair_coeff 1 5 0.067968 3.524911 1.620000 # CAT CTT +pair_coeff 1 6 0.045825 2.931041 0.000000 # CAT HAT +pair_coeff 1 7 0.045825 2.931041 0.000000 # CAT HT +pair_coeff 2 2 0.069998 3.550000 1.620000 # CAO CAO +pair_coeff 2 3 0.069998 3.550000 1.620000 # CAO CAM +pair_coeff 2 4 0.069998 3.550000 1.620000 # CAO CAP +pair_coeff 2 5 0.067968 3.524911 1.620000 # CAO CTT +pair_coeff 2 6 0.045825 2.931041 0.000000 # CAO HAT +pair_coeff 2 7 0.045825 2.931041 0.000000 # CAO HT +pair_coeff 3 3 0.069998 3.550000 1.620000 # CAM CAM +pair_coeff 3 4 0.069998 3.550000 1.620000 # CAM CAP +pair_coeff 3 5 0.067968 3.524911 1.620000 # CAM CTT +pair_coeff 3 6 0.045825 2.931041 0.000000 # CAM HAT +pair_coeff 3 7 0.045825 2.931041 0.000000 # CAM HT +pair_coeff 4 4 0.069998 3.550000 1.620000 # CAP CAP +pair_coeff 4 5 0.067968 3.524911 1.620000 # CAP CTT +pair_coeff 4 6 0.045825 2.931041 0.000000 # CAP HAT +pair_coeff 4 7 0.045825 2.931041 0.000000 # CAP HT +pair_coeff 5 5 0.065997 3.500000 1.620000 # CTT CTT +pair_coeff 5 6 0.044496 2.910326 0.000000 # CTT HAT +pair_coeff 5 7 0.044496 2.910326 0.000000 # CTT HT +pair_coeff 6 6 0.029999 2.420000 0.000000 # HAT HAT +pair_coeff 6 7 0.029999 2.420000 0.000000 # HAT HT +pair_coeff 7 7 0.029999 2.420000 0.000000 # HT HT +pair_coeff 1 8 0.000000 0.000000 1.620000 # CAT D_CAT +pair_coeff 1 9 0.000000 0.000000 1.620000 # CAT D_CAO +pair_coeff 1 10 0.000000 0.000000 1.620000 # CAT D_CAM +pair_coeff 1 11 0.000000 0.000000 1.620000 # CAT D_CAP +pair_coeff 1 12 0.000000 0.000000 1.620000 # CAT D_CTT +pair_coeff 2 8 0.000000 0.000000 1.620000 # CAO D_CAT +pair_coeff 2 9 0.000000 0.000000 1.620000 # CAO D_CAO +pair_coeff 2 10 0.000000 0.000000 1.620000 # CAO D_CAM +pair_coeff 2 11 0.000000 0.000000 1.620000 # CAO D_CAP +pair_coeff 2 12 0.000000 0.000000 1.620000 # CAO D_CTT +pair_coeff 3 8 0.000000 0.000000 1.620000 # CAM D_CAT +pair_coeff 3 9 0.000000 0.000000 1.620000 # CAM D_CAO +pair_coeff 3 10 0.000000 0.000000 1.620000 # CAM D_CAM +pair_coeff 3 11 0.000000 0.000000 1.620000 # CAM D_CAP +pair_coeff 3 12 0.000000 0.000000 1.620000 # CAM D_CTT +pair_coeff 4 8 0.000000 0.000000 1.620000 # CAP D_CAT +pair_coeff 4 9 0.000000 0.000000 1.620000 # CAP D_CAO +pair_coeff 4 10 0.000000 0.000000 1.620000 # CAP D_CAM +pair_coeff 4 11 0.000000 0.000000 1.620000 # CAP D_CAP +pair_coeff 4 12 0.000000 0.000000 1.620000 # CAP D_CTT +pair_coeff 5 8 0.000000 0.000000 1.620000 # CTT D_CAT +pair_coeff 5 9 0.000000 0.000000 1.620000 # CTT D_CAO +pair_coeff 5 10 0.000000 0.000000 1.620000 # CTT D_CAM +pair_coeff 5 11 0.000000 0.000000 1.620000 # CTT D_CAP +pair_coeff 5 12 0.000000 0.000000 1.620000 # CTT D_CTT +pair_coeff 8 8 0.000000 0.000000 1.620000 # D_CAT D_CAT +pair_coeff 8 9 0.000000 0.000000 1.620000 # D_CAT D_CAO +pair_coeff 8 10 0.000000 0.000000 1.620000 # D_CAT D_CAM +pair_coeff 8 11 0.000000 0.000000 1.620000 # D_CAT D_CAP +pair_coeff 8 12 0.000000 0.000000 1.620000 # D_CAT D_CTT +pair_coeff 9 9 0.000000 0.000000 1.620000 # D_CAO D_CAO +pair_coeff 9 10 0.000000 0.000000 1.620000 # D_CAO D_CAM +pair_coeff 9 11 0.000000 0.000000 1.620000 # D_CAO D_CAP +pair_coeff 9 12 0.000000 0.000000 1.620000 # D_CAO D_CTT +pair_coeff 10 10 0.000000 0.000000 1.620000 # D_CAM D_CAM +pair_coeff 10 11 0.000000 0.000000 1.620000 # D_CAM D_CAP +pair_coeff 10 12 0.000000 0.000000 1.620000 # D_CAM D_CTT +pair_coeff 11 11 0.000000 0.000000 1.620000 # D_CAP D_CAP +pair_coeff 11 12 0.000000 0.000000 1.620000 # D_CAP D_CTT +pair_coeff 12 12 0.000000 0.000000 1.620000 # D_CTT D_CTT + + +neighbor 2.0 bin + +variable vTEMP equal 260.0 +variable vTEMP_D equal 1.0 +variable vPRESS equal 1.0 + +velocity gCORES create ${vTEMP} 12345 +velocity gCORES create 260 12345 +velocity gDRUDES create ${vTEMP_D} 12345 +velocity gDRUDES create 1 12345 + +fix fDRUDE all drude C C C C C N N D D D D D + +fix fSHAKE gCORES shake 0.0001 20 0 b 4 6 7 8 + 1250 = # of size 2 clusters + 0 = # of size 3 clusters + 250 = # of size 4 clusters + 0 = # of frozen angles + +compute cTEMP_CORE gCORES temp/com +compute cTEMP all temp/drude + +fix fDIRECT all drude/transform/direct +fix fNVT1 gCORES nvt temp ${vTEMP} ${vTEMP} 100.0 +fix fNVT1 gCORES nvt temp 260 ${vTEMP} 100.0 +fix fNVT1 gCORES nvt temp 260 260 100.0 +fix fNVT2 gDRUDES nvt temp ${vTEMP_D} ${vTEMP_D} 20.0 +fix fNVT2 gDRUDES nvt temp 1 ${vTEMP_D} 20.0 +fix fNVT2 gDRUDES nvt temp 1 1 20.0 +fix fINVERSE all drude/transform/inverse + +fix fMOMENTUM all momentum 100 linear 1 1 1 + +thermo_style custom step cpu etotal ke temp pe ebond eangle edihed eimp evdwl ecoul elong press vol c_cTEMP[1] c_cTEMP[2] +thermo 50 + +timestep 0.5 +run 2000 +PPPM initialization ... +WARNING: Using 12-bit tables for long-range coulomb (../kspace.cpp:321) + G vector (1/distance) = 0.382011 + grid = 40 40 40 + stencil order = 5 + estimated absolute RMS force accuracy = 0.0325934 + estimated relative force accuracy = 9.8154e-05 + using double precision FFTs + 3d grid and FFT values/proc = 103823 64000 +Rebuild special list taking Drude particles into account +Old max number of 1-2 to 1-4 neighbors: 19 +New max number of 1-2 to 1-4 neighbors: 20 (+1) +Neighbor list info ... + update every 1 steps, delay 10 steps, check yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 10 + ghost atom cutoff = 10 + binsize = 5, bins = 8 8 8 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair lj/cut/thole/long, perpetual + attributes: half, newton on + pair build: half/bin/newton + stencil: half/bin/3d/newton + bin: standard +Per MPI rank memory allocation (min/avg/max) = 42.06 | 42.06 | 42.06 Mbytes +Step CPU TotEng KinEng Temp PotEng E_bond E_angle E_dihed E_impro E_vdwl E_coul E_long Press Volume c_cTEMP[1] c_cTEMP[2] + 0 0 14386.197 2910.7282 202.07402 11475.469 6565.4851 20.333365 1.0706727e-06 1.3894617e-07 4972.8631 1306116.6 -1306199.8 40273.68 48631.318 314.89553 3.1777821 + 50 4.462481 6863.642 4633.9267 321.70512 2229.7153 735.2547 604.6946 648.35773 49.039129 824.06033 1306091.3 -1306722.9 17914.827 48631.318 504.18525 0.0086839843 + 100 8.8666639 6628.0722 4376.1868 303.81182 2251.8853 598.11249 651.43051 919.41359 74.216826 589.6504 1306135.1 -1306716 17450.721 48631.318 476.14276 0.0075129702 + 150 13.323556 6336.1884 4726.0692 328.10201 1610.1192 560.01225 621.30109 640.32475 45.531175 288.99128 1306173.9 -1306720 18303.624 48631.318 514.21215 0.0061921467 + 200 17.710109 5997.6194 4565.6288 316.96362 1431.9906 524.2765 591.79843 718.11015 56.374558 88.660843 1306183 -1306730.3 17986.182 48631.318 496.75522 0.00681205 + 250 22.154451 5648.1758 4433.1558 307.76682 1215.02 502.13687 578.85369 665.27326 49.096119 -19.019967 1306179.2 -1306740.5 11771.328 48631.318 482.34141 0.0071619539 + 300 26.524393 5317.8584 4075.2077 282.91669 1242.6506 602.55113 637.40817 647.27074 44.769726 -123.22347 1306183.3 -1306749.5 3571.1867 48631.318 443.3952 0.0071733829 + 350 30.881443 4996.709 3935.7988 273.23838 1060.9102 455.75196 634.36552 638.77826 45.831053 -157.6304 1306198.1 -1306754.3 13525.264 48631.318 428.22739 0.0063722044 + 400 35.218285 4695.9297 3742.6585 259.82983 953.27122 457.49584 620.73047 591.94411 42.495713 -183.91838 1306186.7 -1306762.2 10901.217 48631.318 407.21326 0.005787501 + 450 39.545502 4417.8027 3513.6374 243.9303 904.16528 519.61263 580.76003 624.06933 45.631271 -286.60025 1306184.3 -1306763.6 2956.9012 48631.318 382.29486 0.0057536613 + 500 43.868895 4165.0012 3333.7203 231.43976 831.28089 465.5234 579.36085 580.60005 42.34515 -254.82269 1306183.9 -1306765.6 5818.5565 48631.318 362.71904 0.0059224891 + 550 48.242395 3934.5209 3211.9362 222.98504 722.58462 431.14864 581.46511 517.2025 39.188196 -265.47041 1306182.7 -1306763.6 8537.9404 48631.318 349.46863 0.0055762504 + 600 52.542171 3714.8655 3121.0494 216.67532 593.81611 425.12998 539.89496 490.30508 34.564566 -305.82069 1306175.2 -1306765.5 7402.7677 48631.318 339.57967 0.0057486673 + 650 56.830079 3516.2452 2930.7498 203.46399 585.49537 511.91461 512.48859 521.40636 37.766801 -391.65392 1306163.5 -1306770 381.72879 48631.318 318.87447 0.0054629243 + 700 61.119511 3342.7694 2864.1576 198.8409 478.6118 451.54683 498.82407 489.17207 35.23127 -375.78886 1306153.8 -1306774.2 3691.2716 48631.318 311.62801 0.0071278731 + 750 65.401576 3181.7673 2786.7104 193.46422 395.05691 409.83192 508.19542 454.56182 32.890716 -379.80692 1306149 -1306779.6 7428.3698 48631.318 303.20195 0.006233194 + 800 69.680899 3032.4158 2699.8707 187.43547 332.54509 453.40673 486.16575 441.1235 32.847786 -437.39338 1306144.4 -1306788 1701.7652 48631.318 293.75377 0.0056528223 + 850 73.96463 2898.4928 2563.6959 177.98169 334.7969 463.66637 486.19929 453.38803 34.062233 -455.86062 1306144.2 -1306790.9 -285.03665 48631.318 278.9376 0.0052777781 + 900 78.229548 2780.3555 2528.3241 175.52604 252.03136 396.92692 451.76463 435.59744 33.035257 -413.46176 1306142.9 -1306794.7 3836.4341 48631.318 275.08801 0.0070306435 + 950 82.482848 2679.3417 2456.8817 170.56624 222.45998 385.66656 434.6516 418.37977 32.156722 -387.2201 1306136.9 -1306798.1 5510.2309 48631.318 267.31515 0.0064042654 + 1000 86.722726 2593.4365 2367.4477 164.35738 225.98882 427.8524 453.27435 415.48809 31.097577 -436.62051 1306131.8 -1306796.9 1166.3909 48631.318 257.58464 0.0059160543 + 1050 90.888482 2524.7788 2305.0253 160.02377 219.75349 432.90807 438.86657 412.79356 30.892593 -414.29436 1306119.4 -1306800.8 1698.2687 48631.318 250.79245 0.0065593259 + 1100 95.024656 2471.8176 2311.0953 160.44518 160.72227 378.43572 453.3435 392.48525 29.012472 -409.64374 1306119.6 -1306802.5 4190.91 48631.318 251.45323 0.0059713432 + 1150 99.165724 2433.9279 2279.0766 158.22231 154.8513 395.30434 436.87933 414.39389 31.118973 -428.90902 1306110.2 -1306804.2 3274.8924 48631.318 247.96893 0.0069039065 + 1200 103.31062 2411.3777 2238.4638 155.40282 172.91381 453.61551 460.27693 408.59237 31.237062 -482.78549 1306110.2 -1306808.2 -523.10179 48631.318 243.55012 0.0068754631 + 1250 107.40149 2402.1932 2286.0576 158.70696 116.13565 416.44979 462.75875 391.75373 29.446705 -477.67214 1306102.2 -1306808.8 484.04837 48631.318 248.72579 0.011679749 + 1300 111.55448 2406.5029 2261.2729 156.98631 145.23005 408.68043 437.74725 400.4567 30.448106 -418.44274 1306096.8 -1306810.5 4490.4165 48631.318 245.99228 0.076574936 + 1350 115.71244 2459.1398 2317.5855 160.89575 141.55434 651.84862 447.40877 400.66793 29.060967 -461.45124 1305884.3 -1306810.3 693.59782 48631.318 250.14098 3.5622064 + 1400 119.88515 2479.5991 2285.6701 158.68006 193.929 582.54021 457.54475 430.29254 30.183876 -449.49979 1305955.6 -1306812.8 930.31169 48631.318 247.21826 2.5935077 + 1450 124.05689 2498.3537 2286.4924 158.73715 211.86128 434.79588 477.9598 402.79356 31.070492 -406.60813 1306086.4 -1306814.5 2933.4418 48631.318 248.74646 0.058608522 + 1500 128.29115 2546.66 2423.6257 168.25747 123.03432 392.07474 456.01536 385.97457 29.255586 -417.92459 1306089.9 -1306812.3 3333.3497 48631.318 263.694 0.011243575 + 1550 132.46344 2596.5481 2325.2227 161.42596 271.32542 462.52464 469.53612 461.20308 34.616094 -423.51186 1306080.4 -1306813.4 2155.0566 48631.318 252.98739 0.011191115 + 1600 136.64497 2646.7844 2387.8797 165.77585 258.90469 424.6071 484.95314 449.56642 33.318144 -395.67454 1306077 -1306814.8 1291.5449 48631.318 259.80403 0.012426122 + 1650 140.83234 2700.2847 2387.3033 165.73584 312.98138 431.00741 496.39504 455.52303 32.724808 -357.63815 1306070.3 -1306815.3 5007.2365 48631.318 259.70198 0.081729799 + 1700 145.02103 2777.9556 2386.7756 165.6992 391.18003 636.61544 523.12627 482.84847 35.186128 -391.10505 1305919.7 -1306815.2 2192.7076 48631.318 258.14043 2.7318649 + 1750 149.22218 2829.5998 2559.2796 177.67509 270.32019 684.587 479.93609 446.30457 31.888933 -385.84966 1305832.5 -1306819.1 1683.1471 48631.318 276.95798 2.6465587 + 1800 153.41978 2835.768 2465.6959 171.17815 370.07208 470.05934 508.38934 479.71489 37.826868 -369.0767 1306062.8 -1306819.6 3023.0762 48631.318 268.22249 0.097440318 + 1850 157.62632 2857.7601 2504.3893 173.86439 353.37083 436.06841 516.10132 487.71301 36.514956 -385.43181 1306078.9 -1306816.5 2950.5189 48631.318 272.47825 0.016816883 + 1900 161.8372 2867.791 2528.8957 175.56572 338.89527 446.38065 509.27013 485.03036 37.283587 -402.68445 1306076.6 -1306812.9 3161.5045 48631.318 275.1476 0.011615474 + 1950 166.10858 2861.34 2513.9103 174.52538 347.4297 470.9855 536.84666 467.9604 36.049051 -430.05716 1306079.3 -1306813.6 738.77866 48631.318 273.51233 0.020075246 + 2000 170.32286 2838.0367 2530.4481 175.6735 307.58858 423.18694 516.91384 454.72628 35.048394 -387.67176 1306074.6 -1306809.3 4321.7103 48631.318 275.24492 0.13775419 +Loop time of 170.323 on 1 procs for 2000 steps with 5500 atoms + +Performance: 0.507 ns/day, 47.312 hours/ns, 11.742 timesteps/s +99.9% CPU use with 1 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 105.66 | 105.66 | 105.66 | 0.0 | 62.04 +Bond | 19.802 | 19.802 | 19.802 | 0.0 | 11.63 +Kspace | 35.029 | 35.029 | 35.029 | 0.0 | 20.57 +Neigh | 2.7502 | 2.7502 | 2.7502 | 0.0 | 1.61 +Comm | 0.62654 | 0.62654 | 0.62654 | 0.0 | 0.37 +Output | 0.006705 | 0.006705 | 0.006705 | 0.0 | 0.00 +Modify | 6.3072 | 6.3072 | 6.3072 | 0.0 | 3.70 +Other | | 0.1366 | | | 0.08 + +Nlocal: 5500 ave 5500 max 5500 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 15407 ave 15407 max 15407 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 1.30509e+06 ave 1.30509e+06 max 1.30509e+06 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 1305088 +Ave neighs/atom = 237.289 +Ave special neighs/atom = 15.6364 +Neighbor list builds = 44 +Dangerous builds = 0 +Total wall time: 0:02:50 diff --git a/examples/USER/drude/toluene/log.toluene.nh.11Aug17.linux.4 b/examples/USER/drude/toluene/log.toluene.nh.11Aug17.linux.4 new file mode 100644 index 0000000000000000000000000000000000000000..673f867ab47c5a4bb067dc930d3d2d3fa41d09a9 --- /dev/null +++ b/examples/USER/drude/toluene/log.toluene.nh.11Aug17.linux.4 @@ -0,0 +1,259 @@ +LAMMPS (11 Aug 2017) +OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (../comm.cpp:90) + using 1 OpenMP thread(s) per MPI task +# 250 toluene system for drude polarizability example (Nose-Hoover) + +units real +boundary p p p + +atom_style full +bond_style harmonic +angle_style harmonic +dihedral_style opls +improper_style opls +special_bonds lj/coul 0.0 0.0 0.5 + +pair_style lj/cut/thole/long 2.600 8.0 8.0 +pair_modify mix geometric tail yes +kspace_style pppm 1.0e-4 + +read_data data.toluene extra/special/per/atom 1 + orthogonal box = (-18.2908 -18.1636 -18.223) to (18.3357 18.1621 18.3287) + 2 by 1 by 2 MPI processor grid + reading atoms ... + 5500 atoms + scanning bonds ... + 4 = max bonds/atom + scanning angles ... + 6 = max angles/atom + scanning dihedrals ... + 8 = max dihedrals/atom + scanning impropers ... + 2 = max impropers/atom + reading bonds ... + 5500 bonds + reading angles ... + 6000 angles + reading dihedrals ... + 6000 dihedrals + reading impropers ... + 1500 impropers + 5 = max # of 1-2 neighbors + 10 = max # of 1-3 neighbors + 16 = max # of 1-4 neighbors + 20 = max # of special neighbors + +comm_modify vel yes + +group gTOLUENE molecule 1:250 +5500 atoms in group gTOLUENE +group gCORES type 1 2 3 4 5 6 7 +3750 atoms in group gCORES +group gDRUDES type 8 9 10 11 12 +1750 atoms in group gDRUDES + +pair_coeff 1 1 0.069998 3.550000 1.620000 # CAT CAT +pair_coeff 1 2 0.069998 3.550000 1.620000 # CAT CAO +pair_coeff 1 3 0.069998 3.550000 1.620000 # CAT CAM +pair_coeff 1 4 0.069998 3.550000 1.620000 # CAT CAP +pair_coeff 1 5 0.067968 3.524911 1.620000 # CAT CTT +pair_coeff 1 6 0.045825 2.931041 0.000000 # CAT HAT +pair_coeff 1 7 0.045825 2.931041 0.000000 # CAT HT +pair_coeff 2 2 0.069998 3.550000 1.620000 # CAO CAO +pair_coeff 2 3 0.069998 3.550000 1.620000 # CAO CAM +pair_coeff 2 4 0.069998 3.550000 1.620000 # CAO CAP +pair_coeff 2 5 0.067968 3.524911 1.620000 # CAO CTT +pair_coeff 2 6 0.045825 2.931041 0.000000 # CAO HAT +pair_coeff 2 7 0.045825 2.931041 0.000000 # CAO HT +pair_coeff 3 3 0.069998 3.550000 1.620000 # CAM CAM +pair_coeff 3 4 0.069998 3.550000 1.620000 # CAM CAP +pair_coeff 3 5 0.067968 3.524911 1.620000 # CAM CTT +pair_coeff 3 6 0.045825 2.931041 0.000000 # CAM HAT +pair_coeff 3 7 0.045825 2.931041 0.000000 # CAM HT +pair_coeff 4 4 0.069998 3.550000 1.620000 # CAP CAP +pair_coeff 4 5 0.067968 3.524911 1.620000 # CAP CTT +pair_coeff 4 6 0.045825 2.931041 0.000000 # CAP HAT +pair_coeff 4 7 0.045825 2.931041 0.000000 # CAP HT +pair_coeff 5 5 0.065997 3.500000 1.620000 # CTT CTT +pair_coeff 5 6 0.044496 2.910326 0.000000 # CTT HAT +pair_coeff 5 7 0.044496 2.910326 0.000000 # CTT HT +pair_coeff 6 6 0.029999 2.420000 0.000000 # HAT HAT +pair_coeff 6 7 0.029999 2.420000 0.000000 # HAT HT +pair_coeff 7 7 0.029999 2.420000 0.000000 # HT HT +pair_coeff 1 8 0.000000 0.000000 1.620000 # CAT D_CAT +pair_coeff 1 9 0.000000 0.000000 1.620000 # CAT D_CAO +pair_coeff 1 10 0.000000 0.000000 1.620000 # CAT D_CAM +pair_coeff 1 11 0.000000 0.000000 1.620000 # CAT D_CAP +pair_coeff 1 12 0.000000 0.000000 1.620000 # CAT D_CTT +pair_coeff 2 8 0.000000 0.000000 1.620000 # CAO D_CAT +pair_coeff 2 9 0.000000 0.000000 1.620000 # CAO D_CAO +pair_coeff 2 10 0.000000 0.000000 1.620000 # CAO D_CAM +pair_coeff 2 11 0.000000 0.000000 1.620000 # CAO D_CAP +pair_coeff 2 12 0.000000 0.000000 1.620000 # CAO D_CTT +pair_coeff 3 8 0.000000 0.000000 1.620000 # CAM D_CAT +pair_coeff 3 9 0.000000 0.000000 1.620000 # CAM D_CAO +pair_coeff 3 10 0.000000 0.000000 1.620000 # CAM D_CAM +pair_coeff 3 11 0.000000 0.000000 1.620000 # CAM D_CAP +pair_coeff 3 12 0.000000 0.000000 1.620000 # CAM D_CTT +pair_coeff 4 8 0.000000 0.000000 1.620000 # CAP D_CAT +pair_coeff 4 9 0.000000 0.000000 1.620000 # CAP D_CAO +pair_coeff 4 10 0.000000 0.000000 1.620000 # CAP D_CAM +pair_coeff 4 11 0.000000 0.000000 1.620000 # CAP D_CAP +pair_coeff 4 12 0.000000 0.000000 1.620000 # CAP D_CTT +pair_coeff 5 8 0.000000 0.000000 1.620000 # CTT D_CAT +pair_coeff 5 9 0.000000 0.000000 1.620000 # CTT D_CAO +pair_coeff 5 10 0.000000 0.000000 1.620000 # CTT D_CAM +pair_coeff 5 11 0.000000 0.000000 1.620000 # CTT D_CAP +pair_coeff 5 12 0.000000 0.000000 1.620000 # CTT D_CTT +pair_coeff 8 8 0.000000 0.000000 1.620000 # D_CAT D_CAT +pair_coeff 8 9 0.000000 0.000000 1.620000 # D_CAT D_CAO +pair_coeff 8 10 0.000000 0.000000 1.620000 # D_CAT D_CAM +pair_coeff 8 11 0.000000 0.000000 1.620000 # D_CAT D_CAP +pair_coeff 8 12 0.000000 0.000000 1.620000 # D_CAT D_CTT +pair_coeff 9 9 0.000000 0.000000 1.620000 # D_CAO D_CAO +pair_coeff 9 10 0.000000 0.000000 1.620000 # D_CAO D_CAM +pair_coeff 9 11 0.000000 0.000000 1.620000 # D_CAO D_CAP +pair_coeff 9 12 0.000000 0.000000 1.620000 # D_CAO D_CTT +pair_coeff 10 10 0.000000 0.000000 1.620000 # D_CAM D_CAM +pair_coeff 10 11 0.000000 0.000000 1.620000 # D_CAM D_CAP +pair_coeff 10 12 0.000000 0.000000 1.620000 # D_CAM D_CTT +pair_coeff 11 11 0.000000 0.000000 1.620000 # D_CAP D_CAP +pair_coeff 11 12 0.000000 0.000000 1.620000 # D_CAP D_CTT +pair_coeff 12 12 0.000000 0.000000 1.620000 # D_CTT D_CTT + + +neighbor 2.0 bin + +variable vTEMP equal 260.0 +variable vTEMP_D equal 1.0 +variable vPRESS equal 1.0 + +velocity gCORES create ${vTEMP} 12345 +velocity gCORES create 260 12345 +velocity gDRUDES create ${vTEMP_D} 12345 +velocity gDRUDES create 1 12345 + +fix fDRUDE all drude C C C C C N N D D D D D + +fix fSHAKE gCORES shake 0.0001 20 0 b 4 6 7 8 + 1250 = # of size 2 clusters + 0 = # of size 3 clusters + 250 = # of size 4 clusters + 0 = # of frozen angles + +compute cTEMP_CORE gCORES temp/com +compute cTEMP all temp/drude + +fix fDIRECT all drude/transform/direct +fix fNVT1 gCORES nvt temp ${vTEMP} ${vTEMP} 100.0 +fix fNVT1 gCORES nvt temp 260 ${vTEMP} 100.0 +fix fNVT1 gCORES nvt temp 260 260 100.0 +fix fNVT2 gDRUDES nvt temp ${vTEMP_D} ${vTEMP_D} 20.0 +fix fNVT2 gDRUDES nvt temp 1 ${vTEMP_D} 20.0 +fix fNVT2 gDRUDES nvt temp 1 1 20.0 +fix fINVERSE all drude/transform/inverse + +fix fMOMENTUM all momentum 100 linear 1 1 1 + +thermo_style custom step cpu etotal ke temp pe ebond eangle edihed eimp evdwl ecoul elong press vol c_cTEMP[1] c_cTEMP[2] +thermo 50 + +timestep 0.5 +run 2000 +PPPM initialization ... +WARNING: Using 12-bit tables for long-range coulomb (../kspace.cpp:321) + G vector (1/distance) = 0.382011 + grid = 40 40 40 + stencil order = 5 + estimated absolute RMS force accuracy = 0.0325934 + estimated relative force accuracy = 9.8154e-05 + using double precision FFTs + 3d grid and FFT values/proc = 34263 16000 +Rebuild special list taking Drude particles into account +Old max number of 1-2 to 1-4 neighbors: 19 +New max number of 1-2 to 1-4 neighbors: 20 (+1) +Neighbor list info ... + update every 1 steps, delay 10 steps, check yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 10 + ghost atom cutoff = 10 + binsize = 5, bins = 8 8 8 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair lj/cut/thole/long, perpetual + attributes: half, newton on + pair build: half/bin/newton + stencil: half/bin/3d/newton + bin: standard +Per MPI rank memory allocation (min/avg/max) = 18 | 18 | 18 Mbytes +Step CPU TotEng KinEng Temp PotEng E_bond E_angle E_dihed E_impro E_vdwl E_coul E_long Press Volume c_cTEMP[1] c_cTEMP[2] + 0 0 14386.197 2910.7282 202.07402 11475.469 6565.4851 20.333365 1.0706727e-06 1.3894617e-07 4972.8631 1306116.6 -1306199.8 40273.68 48631.318 314.89553 3.1777821 + 50 1.1419601 6863.6417 4633.9267 321.70512 2229.715 735.2547 604.69459 648.35773 49.039129 824.06033 1306091.3 -1306722.9 17914.827 48631.318 504.18525 0.0086839775 + 100 2.3001912 6628.0719 4376.1868 303.81182 2251.8851 598.11248 651.43051 919.41359 74.216825 589.6504 1306135.1 -1306716 17450.721 48631.318 476.14276 0.0075129701 + 150 3.473469 6336.1884 4726.0692 328.10201 1610.1192 560.01225 621.30109 640.32474 45.531174 288.99129 1306173.9 -1306720 18303.624 48631.318 514.21215 0.006192153 + 200 4.6296241 5997.6192 4565.6288 316.96362 1431.9903 524.27651 591.79844 718.11014 56.374557 88.66084 1306183 -1306730.3 17986.183 48631.318 496.75522 0.0068120542 + 250 5.7982912 5648.1756 4433.1557 307.76682 1215.0199 502.13686 578.8537 665.27326 49.096119 -19.019961 1306179.2 -1306740.5 11771.328 48631.318 482.34141 0.0071619522 + 300 6.9468622 5317.8583 4075.2077 282.91669 1242.6505 602.55113 637.40818 647.27073 44.769725 -123.22347 1306183.3 -1306749.5 3571.1872 48631.318 443.3952 0.0071733908 + 350 8.0925181 4996.7094 3935.7988 273.23838 1060.9106 455.75195 634.3655 638.77824 45.831051 -157.63039 1306198.1 -1306754.3 13525.265 48631.318 428.22739 0.0063722017 + 400 9.2309761 4695.9294 3742.6584 259.82983 953.27093 457.49585 620.73048 591.94413 42.495714 -183.91838 1306186.7 -1306762.2 10901.217 48631.318 407.21326 0.0057875 + 450 10.363872 4417.8018 3513.6374 243.9303 904.1644 519.61261 580.76003 624.06933 45.631272 -286.60025 1306184.3 -1306763.6 2956.9021 48631.318 382.29485 0.0057536673 + 500 11.493601 4165.0005 3333.7203 231.43976 831.28022 465.52341 579.36085 580.60004 42.345149 -254.82269 1306183.9 -1306765.6 5818.5549 48631.318 362.71904 0.0059224858 + 550 12.636785 3934.5207 3211.9362 222.98504 722.58446 431.14864 581.46511 517.20249 39.188194 -265.4704 1306182.7 -1306763.6 8537.9415 48631.318 349.46863 0.0055762027 + 600 13.759642 3714.8658 3121.0493 216.67532 593.81649 425.12998 539.89497 490.30506 34.564567 -305.82067 1306175.2 -1306765.5 7402.7688 48631.318 339.57967 0.005748668 + 650 14.880794 3516.2453 2930.7499 203.464 585.49542 511.91457 512.48857 521.40634 37.766798 -391.65394 1306163.5 -1306770 381.72898 48631.318 318.87448 0.0054629381 + 700 15.99791 3342.7693 2864.1576 198.8409 478.61174 451.54685 498.82406 489.17206 35.231269 -375.78888 1306153.8 -1306774.2 3691.2706 48631.318 311.62801 0.0071278792 + 750 17.111346 3181.7665 2786.7104 193.46422 395.05608 409.83191 508.19537 454.56183 32.890719 -379.80694 1306149 -1306779.6 7428.3698 48631.318 303.20196 0.0062331873 + 800 18.219225 3032.4162 2699.8707 187.43547 332.54543 453.40674 486.16573 441.12346 32.847783 -437.39291 1306144.4 -1306788 1701.7675 48631.318 293.75377 0.0056528077 + 850 19.320825 2898.4936 2563.6961 177.9817 334.79757 463.66634 486.19928 453.38802 34.062236 -455.86081 1306144.2 -1306790.9 -285.04073 48631.318 278.93762 0.0052778244 + 900 20.41979 2780.3551 2528.3241 175.52604 252.03099 396.92693 451.7645 435.59756 33.035261 -413.46181 1306142.9 -1306794.7 3836.4347 48631.318 275.08801 0.0070307677 + 950 21.517533 2679.3418 2456.8821 170.56626 222.45967 385.66649 434.6516 418.37957 32.156706 -387.22039 1306136.9 -1306798.1 5510.2277 48631.318 267.31518 0.0064041284 + 1000 22.614275 2593.435 2367.4471 164.35734 225.98798 427.85237 453.27432 415.48822 31.097611 -436.61808 1306131.8 -1306796.9 1166.3709 48631.318 257.58457 0.0059160188 + 1050 23.688642 2524.7784 2305.0257 160.0238 219.75264 432.90797 438.8666 412.79338 30.892595 -414.29467 1306119.4 -1306800.8 1698.2602 48631.318 250.7925 0.0065595368 + 1100 24.750163 2471.818 2311.095 160.44516 160.72297 378.43554 453.3434 392.485 29.012487 -409.64322 1306119.6 -1306802.5 4190.9174 48631.318 251.4532 0.0059713928 + 1150 25.813605 2433.9311 2279.0768 158.22233 154.85433 395.30409 436.87935 414.39367 31.118959 -428.90913 1306110.2 -1306804.2 3274.9237 48631.318 247.96895 0.0069037916 + 1200 26.876952 2411.3772 2238.4639 155.40283 172.91329 453.61525 460.27658 408.59192 31.237007 -482.78468 1306110.2 -1306808.2 -523.10237 48631.318 243.55013 0.0068752641 + 1250 27.929701 2402.1937 2286.0559 158.70685 116.13778 416.44884 462.75935 391.75448 29.446777 -477.6718 1306102.2 -1306808.8 484.0561 48631.318 248.72561 0.011679662 + 1300 29.000999 2406.5014 2261.274 156.98639 145.22737 408.678 437.74824 400.45662 30.448139 -418.44472 1306096.8 -1306810.5 4490.4105 48631.318 245.9924 0.076575975 + 1350 30.07322 2459.141 2317.5852 160.89573 141.55579 651.85736 447.40791 400.66662 29.060882 -461.45016 1305884.3 -1306810.3 693.5247 48631.318 250.14112 3.5619231 + 1400 31.14859 2479.6103 2285.6714 158.68015 193.93893 582.54135 457.54445 430.29301 30.184026 -449.49877 1305955.6 -1306812.8 930.44669 48631.318 247.21806 2.5941109 + 1450 32.226914 2498.357 2286.4857 158.73668 211.87137 434.79636 477.95951 402.79572 31.070593 -406.60139 1306086.4 -1306814.5 2933.5045 48631.318 248.74572 0.058613153 + 1500 33.410717 2546.6608 2423.6247 168.25741 123.03609 392.07322 456.01243 385.97344 29.255562 -417.91413 1306089.9 -1306812.3 3333.391 48631.318 263.6939 0.011242005 + 1550 34.466176 2596.5534 2325.2208 161.42583 271.33259 462.52172 469.54241 461.20405 34.616224 -423.51068 1306080.4 -1306813.4 2155.1194 48631.318 252.98718 0.011190963 + 1600 35.524206 2646.7837 2387.8846 165.77619 258.8991 424.60563 484.95051 449.57767 33.318683 -395.68293 1306077 -1306814.8 1291.42 48631.318 259.80456 0.01242131 + 1650 36.582854 2700.2921 2387.3119 165.73643 312.98026 431.01369 496.39909 455.52591 32.725057 -357.65832 1306070.3 -1306815.3 5006.9348 48631.318 259.70291 0.081728845 + 1700 37.641527 2777.9572 2386.7777 165.69934 391.1795 636.55763 523.11512 482.8483 35.185863 -391.0955 1305919.8 -1306815.2 2192.6733 48631.318 258.1403 2.7324891 + 1750 38.722299 2829.6167 2559.2488 177.67295 270.36793 684.60746 479.95058 446.29664 31.887359 -385.83616 1305832.5 -1306819 1683.6061 48631.318 276.955 2.6459088 + 1800 39.800548 2835.7772 2465.7031 171.17865 370.07414 470.05306 508.38361 479.70121 37.826988 -369.0694 1306062.8 -1306819.6 3022.9801 48631.318 268.22328 0.097437593 + 1850 40.878327 2857.76 2504.4099 173.86582 353.35016 436.05857 516.10495 487.70907 36.514477 -385.43957 1306078.9 -1306816.5 2950.6415 48631.318 272.48049 0.016822774 + 1900 41.9583 2867.7843 2528.8424 175.56202 338.94193 446.38058 509.30719 485.04661 37.284135 -402.67104 1306076.5 -1306812.9 3161.5835 48631.318 275.1418 0.011620333 + 1950 43.058281 2861.3388 2513.8846 174.5236 347.45414 470.99292 536.81741 467.97736 36.047648 -430.00695 1306079.3 -1306813.6 739.25154 48631.318 273.50953 0.020089235 + 2000 44.142059 2838.068 2530.3189 175.66453 307.74914 423.19157 516.85371 454.76945 35.048253 -387.49234 1306074.6 -1306809.3 4324.0966 48631.318 275.23081 0.13784772 +Loop time of 44.1421 on 4 procs for 2000 steps with 5500 atoms + +Performance: 1.957 ns/day, 12.262 hours/ns, 45.308 timesteps/s +99.7% CPU use with 4 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 21.008 | 22.592 | 23.892 | 21.7 | 51.18 +Bond | 4.8951 | 5.1338 | 5.2542 | 6.4 | 11.63 +Kspace | 9.1158 | 10.514 | 12.296 | 35.3 | 23.82 +Neigh | 0.63826 | 0.63849 | 0.63875 | 0.0 | 1.45 +Comm | 0.78008 | 0.80146 | 0.84186 | 2.7 | 1.82 +Output | 0.0036852 | 0.0040929 | 0.0052037 | 1.0 | 0.01 +Modify | 4.3966 | 4.4074 | 4.4147 | 0.3 | 9.98 +Other | | 0.05088 | | | 0.12 + +Nlocal: 1375 ave 1415 max 1340 min +Histogram: 2 0 0 0 0 0 0 0 1 1 +Nghost: 8101 ave 8147 max 8056 min +Histogram: 2 0 0 0 0 0 0 0 1 1 +Neighs: 326274 ave 342552 max 306832 min +Histogram: 1 0 0 0 1 0 1 0 0 1 + +Total # of neighbors = 1305095 +Ave neighs/atom = 237.29 +Ave special neighs/atom = 15.6364 +Neighbor list builds = 44 +Dangerous builds = 0 +Total wall time: 0:00:44 diff --git a/examples/USER/meso/README b/examples/USER/meso/README new file mode 100644 index 0000000000000000000000000000000000000000..4accc7ba01a0958aff12b6cfae0720229b1513f3 --- /dev/null +++ b/examples/USER/meso/README @@ -0,0 +1,40 @@ +This directory contains input scripts for performing +simulations with these models: + +eDPD - energy-conserving dissipative particle dynamics +mDPD - many-body dissipative particle dynamics +tDPD - transport dissipative particle dynamics + +1) eDPD: The input script in.mdpd is an example simulation of +measuring the thermal conductivity by heat conduction analog of +periodic Poiseuille flow. The initial eDPD system is randomly filled +by many eDPD particles, and a set command "edpd/temp" gives the +initial temperature and a set command "edpd/cv" gives the heat +capacity of eDPD particles. A non-contact heat source/sink term is +applied by a fix command "edpd/source". A compute command +"edpd/temp/atom" obtain the temperature on each eDPD particle. The +simulation will generate a file named "temp.profile" showing the +temperature profile. For details please see online LAMMPS +documentation and Fig.12 in the paper Z. Li, et al. J Comput Phys, +2014, 265: 113-127. DOI: 10.1016/j.jcp.2014.02.003 + +2) mDPD: The input script "in.mdpd" is an example simulation of +oscillations of a free liquid droplet. The initial configuration is a +liquid film whose particles are in a fcc lattice created by the +command "create atoms". Then the liquid film has a tendency to form a +spherical droplet under the effect of surface tension. For details +please see online LAMMPS documentation and the paper Z. Li, et +al. Phys Fluids, 2013, 25: 072103. DOI: 10.1063/1.4812366 + +3) tDPD: The input script in.tdpd is an example simulation of +computing the effective diffusion coefficient of a tDPD system using a +method analogous to the periodic Poiseuille flow. Command "atom_style +tdpd 2" specifies the tDPD system with two chemical species. The +initial tDPD system is randomly filled by many tDPD particles, and a +set "cc" command gives initial concentration for each chemical +species. Fix commands "tdpd/source" add source terms and compute +commands "tdpd/cc/atom" obtain the chemical concentration on each tDPD +particle. The simulation will generate a file named "cc.profile" +showing the concentration profiles of the two chemical species. For +details please see online LAMMPS documentation and Fig.1 in the paper +Z. Li, et al. J Chem Phys, 2015, 143: 014101. DOI: 10.1063/1.4923254 diff --git a/examples/USER/meso/edpd/in.edpd b/examples/USER/meso/edpd/in.edpd new file mode 100644 index 0000000000000000000000000000000000000000..316099bce35ceb0f7e7fd370cf0862fd8c433804 --- /dev/null +++ b/examples/USER/meso/edpd/in.edpd @@ -0,0 +1,54 @@ +######################################################################## +### Heat conduction analog of periodic Poiseuille flow problem ### +### using energy-conserving DPD (eDPD) simulation ### +### ### +### Created : Zhen Li (zhen_li@brown.edu) ### +### Division of Applied Mathematics, Brown University. ### +### ### +### mDPD system setup follows Fig.12 in the publication: ### +### Z. Li, Y.-H. Tang, H. Lei, B. Caswell and G.E. Karniadakis. ### +### "Energy-conserving dissipative particle dynamics with ### +### temperature-dependent properties". J. Comput. Phys., ### +### 2014, 265: 113-127. DOI: 10.1016/j.jcp.2014.02.003 ### +######################################################################## +units lj +dimension 3 +boundary p p p +neighbor 0.2 bin +neigh_modify every 1 delay 0 check yes + +atom_style edpd + +region edpd block -10 10 -10 10 -5 5 units box +create_box 1 edpd +create_atoms 1 random 16000 276438 NULL +mass 1 1.0 +set atom * edpd/temp 1.0 +set atom * edpd/cv 1.0E5 + +pair_style edpd 1.58 9872598 +#pair_coeff 1 1 18.75 4.5 0.41 1.58 1.45E-5 2.0 1.58 +pair_coeff 1 1 18.75 4.5 0.41 1.58 1.41E-5 2.0 1.58 & + power 10.54 -3.66 3.44 -4.10 & + kappa -0.44 -3.21 5.04 0.00 + +compute mythermo all temp +thermo 100 +thermo_modify temp mythermo +thermo_modify flush yes + +velocity all create 1.0 432982 loop local dist gaussian + +fix mvv all mvv/edpd 0.5 +fix upper all edpd/source cuboid 0.0 5.0 0.0 20.0 10.0 10.0 0.01 +fix lower all edpd/source cuboid 0.0 -5.0 0.0 20.0 10.0 10.0 -0.01 + +timestep 0.01 +run 500 +reset_timestep 0 + +compute temp all edpd/temp/atom +compute ccT all chunk/atom bin/1d y 0.0 1.0 +fix stat all ave/chunk 1 500 500 ccT c_temp density/number norm sample file temp.profile + +run 500 diff --git a/examples/USER/meso/edpd/log.16Aug17.edpd.g++.1 b/examples/USER/meso/edpd/log.16Aug17.edpd.g++.1 new file mode 100644 index 0000000000000000000000000000000000000000..af975f877cf819029bec4691911c5d5708c7f0ce --- /dev/null +++ b/examples/USER/meso/edpd/log.16Aug17.edpd.g++.1 @@ -0,0 +1,142 @@ +LAMMPS (11 Aug 2017) +######################################################################## +### Heat conduction analog of periodic Poiseuille flow problem ### +### using energy-conserving DPD (eDPD) simulation ### +### ### +### Created : Zhen Li (zhen_li@brown.edu) ### +### Division of Applied Mathematics, Brown University. ### +### ### +### mDPD system setup follows Fig.12 in the publication: ### +### Z. Li, Y.-H. Tang, H. Lei, B. Caswell and G.E. Karniadakis. ### +### "Energy-conserving dissipative particle dynamics with ### +### temperature-dependent properties". J. Comput. Phys., ### +### 2014, 265: 113-127. DOI: 10.1016/j.jcp.2014.02.003 ### +######################################################################## +units lj +dimension 3 +boundary p p p +neighbor 0.2 bin +neigh_modify every 1 delay 0 check yes + +atom_style edpd + +region edpd block -10 10 -10 10 -5 5 units box +create_box 1 edpd +Created orthogonal box = (-10 -10 -5) to (10 10 5) + 1 by 1 by 1 MPI processor grid +create_atoms 1 random 16000 276438 NULL +Created 16000 atoms +mass 1 1.0 +set atom * edpd/temp 1.0 + 16000 settings made for edpd/temp +set atom * edpd/cv 1.0E5 + 16000 settings made for edpd/cv + +pair_style edpd 1.58 9872598 +#pair_coeff 1 1 18.75 4.5 0.41 1.58 1.45E-5 2.0 1.58 +pair_coeff 1 1 18.75 4.5 0.41 1.58 1.41E-5 2.0 1.58 power 10.54 -3.66 3.44 -4.10 kappa -0.44 -3.21 5.04 0.00 + +compute mythermo all temp +thermo 100 +thermo_modify temp mythermo +thermo_modify flush yes + +velocity all create 1.0 432982 loop local dist gaussian + +fix mvv all mvv/edpd 0.5 +fix upper all edpd/source cuboid 0.0 5.0 0.0 20.0 10.0 10.0 0.01 +fix lower all edpd/source cuboid 0.0 -5.0 0.0 20.0 10.0 10.0 -0.01 + +timestep 0.01 +run 500 +Neighbor list info ... + update every 1 steps, delay 0 steps, check yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 1.78 + ghost atom cutoff = 1.78 + binsize = 0.89, bins = 23 23 12 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair edpd, perpetual + attributes: half, newton on + pair build: half/bin/atomonly/newton + stencil: half/bin/3d/newton + bin: standard +Per MPI rank memory allocation (min/avg/max) = 11.64 | 11.64 | 11.64 Mbytes +Step Temp E_pair E_mol TotEng Press + 0 1 48.948932 0 50.448838 201.73366 + 100 1.0069712 43.754293 0 45.264656 199.5369 + 200 0.98667561 43.716052 0 45.195973 196.72854 + 300 1.0036944 43.706299 0 45.211746 195.35714 + 400 1.0024228 43.697014 0 45.200554 197.0062 + 500 0.99968161 43.687445 0 45.186873 193.80596 +Loop time of 80.7995 on 1 procs for 500 steps with 16000 atoms + +Performance: 5346.567 tau/day, 6.188 timesteps/s +99.9% CPU use with 1 MPI tasks x no OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 75.106 | 75.106 | 75.106 | 0.0 | 92.95 +Neigh | 4.9836 | 4.9836 | 4.9836 | 0.0 | 6.17 +Comm | 0.31199 | 0.31199 | 0.31199 | 0.0 | 0.39 +Output | 0.00048232 | 0.00048232 | 0.00048232 | 0.0 | 0.00 +Modify | 0.29985 | 0.29985 | 0.29985 | 0.0 | 0.37 +Other | | 0.09751 | | | 0.12 + +Nlocal: 16000 ave 16000 max 16000 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 14091 ave 14091 max 14091 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 749111 ave 749111 max 749111 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 749111 +Ave neighs/atom = 46.8194 +Neighbor list builds = 181 +Dangerous builds = 0 +reset_timestep 0 + +compute temp all edpd/temp/atom +compute ccT all chunk/atom bin/1d y 0.0 1.0 +fix stat all ave/chunk 1 500 500 ccT c_temp density/number norm sample file temp.profile + +run 500 +Per MPI rank memory allocation (min/avg/max) = 12.14 | 12.14 | 12.14 Mbytes +Step Temp E_pair E_mol TotEng Press + 0 0.99968161 43.687397 0 45.186825 196.38426 + 100 1.0041443 43.668196 0 45.174318 195.38066 + 200 0.99628392 43.666173 0 45.160505 197.84675 + 300 1.0029116 43.66224 0 45.166513 199.67414 + 400 0.99922193 43.64406 0 45.142799 196.94404 + 500 0.99355431 43.623266 0 45.113505 195.94136 +Loop time of 80.7742 on 1 procs for 500 steps with 16000 atoms + +Performance: 5348.242 tau/day, 6.190 timesteps/s +99.9% CPU use with 1 MPI tasks x no OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 75.073 | 75.073 | 75.073 | 0.0 | 92.94 +Neigh | 4.8786 | 4.8786 | 4.8786 | 0.0 | 6.04 +Comm | 0.31086 | 0.31086 | 0.31086 | 0.0 | 0.38 +Output | 0.00045919 | 0.00045919 | 0.00045919 | 0.0 | 0.00 +Modify | 0.4139 | 0.4139 | 0.4139 | 0.0 | 0.51 +Other | | 0.09731 | | | 0.12 + +Nlocal: 16000 ave 16000 max 16000 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 14091 ave 14091 max 14091 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 749667 ave 749667 max 749667 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 749667 +Ave neighs/atom = 46.8542 +Neighbor list builds = 178 +Dangerous builds = 0 + +Please see the log.cite file for references relevant to this simulation + +Total wall time: 0:02:41 diff --git a/examples/USER/meso/edpd/log.16Aug17.edpd.g++.4 b/examples/USER/meso/edpd/log.16Aug17.edpd.g++.4 new file mode 100644 index 0000000000000000000000000000000000000000..21206d38c62b5c15c5e8d592230648bb95dc0f70 --- /dev/null +++ b/examples/USER/meso/edpd/log.16Aug17.edpd.g++.4 @@ -0,0 +1,142 @@ +LAMMPS (11 Aug 2017) +######################################################################## +### Heat conduction analog of periodic Poiseuille flow problem ### +### using energy-conserving DPD (eDPD) simulation ### +### ### +### Created : Zhen Li (zhen_li@brown.edu) ### +### Division of Applied Mathematics, Brown University. ### +### ### +### mDPD system setup follows Fig.12 in the publication: ### +### Z. Li, Y.-H. Tang, H. Lei, B. Caswell and G.E. Karniadakis. ### +### "Energy-conserving dissipative particle dynamics with ### +### temperature-dependent properties". J. Comput. Phys., ### +### 2014, 265: 113-127. DOI: 10.1016/j.jcp.2014.02.003 ### +######################################################################## +units lj +dimension 3 +boundary p p p +neighbor 0.2 bin +neigh_modify every 1 delay 0 check yes + +atom_style edpd + +region edpd block -10 10 -10 10 -5 5 units box +create_box 1 edpd +Created orthogonal box = (-10 -10 -5) to (10 10 5) + 2 by 2 by 1 MPI processor grid +create_atoms 1 random 16000 276438 NULL +Created 16000 atoms +mass 1 1.0 +set atom * edpd/temp 1.0 + 16000 settings made for edpd/temp +set atom * edpd/cv 1.0E5 + 16000 settings made for edpd/cv + +pair_style edpd 1.58 9872598 +#pair_coeff 1 1 18.75 4.5 0.41 1.58 1.45E-5 2.0 1.58 +pair_coeff 1 1 18.75 4.5 0.41 1.58 1.41E-5 2.0 1.58 power 10.54 -3.66 3.44 -4.10 kappa -0.44 -3.21 5.04 0.00 + +compute mythermo all temp +thermo 100 +thermo_modify temp mythermo +thermo_modify flush yes + +velocity all create 1.0 432982 loop local dist gaussian + +fix mvv all mvv/edpd 0.5 +fix upper all edpd/source cuboid 0.0 5.0 0.0 20.0 10.0 10.0 0.01 +fix lower all edpd/source cuboid 0.0 -5.0 0.0 20.0 10.0 10.0 -0.01 + +timestep 0.01 +run 500 +Neighbor list info ... + update every 1 steps, delay 0 steps, check yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 1.78 + ghost atom cutoff = 1.78 + binsize = 0.89, bins = 23 23 12 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair edpd, perpetual + attributes: half, newton on + pair build: half/bin/atomonly/newton + stencil: half/bin/3d/newton + bin: standard +Per MPI rank memory allocation (min/avg/max) = 4.969 | 4.979 | 4.985 Mbytes +Step Temp E_pair E_mol TotEng Press + 0 1 48.948932 0 50.448838 199.51547 + 100 1.0106415 43.744371 0 45.260239 196.39598 + 200 1.0053215 43.714413 0 45.222301 195.35298 + 300 0.99886399 43.713356 0 45.211559 196.74821 + 400 1.0035264 43.699086 0 45.204282 195.47446 + 500 1.0025285 43.698051 0 45.20175 197.27042 +Loop time of 21.165 on 4 procs for 500 steps with 16000 atoms + +Performance: 20411.046 tau/day, 23.624 timesteps/s +99.9% CPU use with 4 MPI tasks x no OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 18.713 | 19.101 | 19.41 | 6.0 | 90.25 +Neigh | 1.2687 | 1.2925 | 1.3177 | 1.5 | 6.11 +Comm | 0.33013 | 0.66337 | 1.0747 | 34.3 | 3.13 +Output | 0.00023484 | 0.00028092 | 0.00036526 | 0.0 | 0.00 +Modify | 0.073931 | 0.075277 | 0.076306 | 0.3 | 0.36 +Other | | 0.03227 | | | 0.15 + +Nlocal: 4000 ave 4067 max 3930 min +Histogram: 1 1 0 0 0 0 0 0 0 2 +Nghost: 5997.5 ave 6052 max 5943 min +Histogram: 1 0 1 0 0 0 0 1 0 1 +Neighs: 187388 ave 193157 max 181221 min +Histogram: 1 1 0 0 0 0 0 0 0 2 + +Total # of neighbors = 749552 +Ave neighs/atom = 46.847 +Neighbor list builds = 181 +Dangerous builds = 0 +reset_timestep 0 + +compute temp all edpd/temp/atom +compute ccT all chunk/atom bin/1d y 0.0 1.0 +fix stat all ave/chunk 1 500 500 ccT c_temp density/number norm sample file temp.profile + +run 500 +Per MPI rank memory allocation (min/avg/max) = 5.221 | 5.23 | 5.236 Mbytes +Step Temp E_pair E_mol TotEng Press + 0 1.0025285 43.69801 0 45.201708 194.00452 + 100 0.9885969 43.679927 0 45.16273 196.28442 + 200 1.0028463 43.663067 0 45.167242 198.25592 + 300 1.0027516 43.648817 0 45.152851 198.82226 + 400 0.99695312 43.641469 0 45.136805 197.97499 + 500 0.98202292 43.627163 0 45.100105 199.16319 +Loop time of 21.576 on 4 procs for 500 steps with 16000 atoms + +Performance: 20022.203 tau/day, 23.174 timesteps/s +99.8% CPU use with 4 MPI tasks x no OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 18.438 | 19.121 | 19.812 | 14.1 | 88.62 +Neigh | 1.2568 | 1.2885 | 1.325 | 2.5 | 5.97 +Comm | 0.29482 | 1.0219 | 1.7352 | 63.9 | 4.74 +Output | 0.00027728 | 0.00029719 | 0.0003531 | 0.0 | 0.00 +Modify | 0.11153 | 0.11265 | 0.1135 | 0.2 | 0.52 +Other | | 0.03194 | | | 0.15 + +Nlocal: 4000 ave 4092 max 3899 min +Histogram: 2 0 0 0 0 0 0 0 0 2 +Nghost: 5974 ave 6019 max 5915 min +Histogram: 1 0 0 1 0 0 0 0 0 2 +Neighs: 187414 ave 196149 max 178418 min +Histogram: 2 0 0 0 0 0 0 0 0 2 + +Total # of neighbors = 749658 +Ave neighs/atom = 46.8536 +Neighbor list builds = 181 +Dangerous builds = 0 + +Please see the log.cite file for references relevant to this simulation + +Total wall time: 0:00:42 diff --git a/examples/USER/meso/edpd/temp.profile.16Aug17.edpd.g++.1 b/examples/USER/meso/edpd/temp.profile.16Aug17.edpd.g++.1 new file mode 100644 index 0000000000000000000000000000000000000000..469b5502584a76444c7e3fe096109fc23d47188d --- /dev/null +++ b/examples/USER/meso/edpd/temp.profile.16Aug17.edpd.g++.1 @@ -0,0 +1,24 @@ +# Chunk-averaged data for fix stat and group density/number +# Timestep Number-of-chunks Total-count +# Chunk Coord1 Ncount c_temp density/number +500 20 16000 + 1 -9.5 801.636 0.986368 4.00818 + 2 -8.5 809.788 0.966281 4.04894 + 3 -7.5 819.754 0.952764 4.09877 + 4 -6.5 820.364 0.944592 4.10182 + 5 -5.5 826.146 0.940968 4.13073 + 6 -4.5 819.52 0.941415 4.0976 + 7 -3.5 815.182 0.945887 4.07591 + 8 -2.5 817.168 0.95487 4.08584 + 9 -1.5 817.282 0.969225 4.08641 + 10 -0.5 804.204 0.989552 4.02102 + 11 0.5 793.266 1.01015 3.96633 + 12 1.5 789.056 1.0308 3.94528 + 13 2.5 784.344 1.04568 3.92172 + 14 3.5 780.592 1.05508 3.90296 + 15 4.5 772.218 1.05968 3.86109 + 16 5.5 776.968 1.06003 3.88484 + 17 6.5 780.858 1.05612 3.90429 + 18 7.5 786.174 1.04752 3.93087 + 19 8.5 788.922 1.03347 3.94461 + 20 9.5 796.558 1.01278 3.98279 diff --git a/examples/USER/meso/edpd/temp.profile.16Aug17.edpd.g++.4 b/examples/USER/meso/edpd/temp.profile.16Aug17.edpd.g++.4 new file mode 100644 index 0000000000000000000000000000000000000000..1c50a9b6e5c671b735969db786befd0bb786c9bc --- /dev/null +++ b/examples/USER/meso/edpd/temp.profile.16Aug17.edpd.g++.4 @@ -0,0 +1,24 @@ +# Chunk-averaged data for fix stat and group density/number +# Timestep Number-of-chunks Total-count +# Chunk Coord1 Ncount c_temp density/number +500 20 16000 + 1 -9.5 801.642 0.986089 4.00821 + 2 -8.5 819.168 0.966072 4.09584 + 3 -7.5 817.382 0.952718 4.08691 + 4 -6.5 818 0.944633 4.09 + 5 -5.5 817.806 0.941105 4.08903 + 6 -4.5 826.11 0.941499 4.13055 + 7 -3.5 821.946 0.945922 4.10973 + 8 -2.5 816.202 0.954889 4.08101 + 9 -1.5 813.202 0.969281 4.06601 + 10 -0.5 798.904 0.989463 3.99452 + 11 0.5 798.056 1.01005 3.99028 + 12 1.5 793.114 1.03073 3.96557 + 13 2.5 782.812 1.04569 3.91406 + 14 3.5 775.69 1.05498 3.87845 + 15 4.5 778.094 1.05965 3.89047 + 16 5.5 778.856 1.06002 3.89428 + 17 6.5 780.51 1.05621 3.90255 + 18 7.5 780.518 1.04782 3.90259 + 19 8.5 789.698 1.03348 3.94849 + 20 9.5 792.29 1.01261 3.96145 diff --git a/examples/USER/meso/mdpd/in.mdpd b/examples/USER/meso/mdpd/in.mdpd new file mode 100644 index 0000000000000000000000000000000000000000..201b4a340eefd272a3e0e8515a9301b26c9cb769 --- /dev/null +++ b/examples/USER/meso/mdpd/in.mdpd @@ -0,0 +1,52 @@ +######################################################################## +#### 3D droplet oscilation using many-body DPD simulation ### +#### ### +#### Created : Zhen Li (zhen_li@brown.edu) ### +#### Division of Applied Mathematics, Brown University. ### +#### ### +#### mDPD parameters follow the choice of the publication: ### +#### Z. Li et al. "Three dimensional flow structures in a moving ### +#### droplet on substrate: a dissipative particle dynamics study" ### +#### Physics of Fluids, 2013, 25: 072103. DOI: 10.1063/1.4812366 ### +######################################################################## +units lj +dimension 3 +boundary p p p +neighbor 0.3 bin +neigh_modify every 1 delay 0 check yes + +atom_style mdpd + +region mdpd block -25 25 -10 10 -10 10 units box +create_box 1 mdpd + +lattice fcc 6 +region film block -20 20 -7.5 7.5 -2.0 2.0 units box +create_atoms 1 region film + +pair_style hybrid/overlay mdpd/rhosum mdpd 1.0 1.0 9872598 +pair_coeff 1 1 mdpd/rhosum 0.75 +pair_coeff 1 1 mdpd -40 25 18.0 1.0 0.75 +mass 1 1.0 + +compute mythermo all temp +thermo 100 +thermo_modify temp mythermo +thermo_modify flush yes + +velocity all create 1.0 38497 loop local dist gaussian + +fix mvv all mvv/dpd + +#dump mydump all atom 100 atom.lammpstrj + +#dump jpg all image 200 image.*.jpg type type zoom 5 adiam 0.5 & +# view 90 90 box no 0 size 600 200 +#dump_modify jpg pad 4 + +#dump avi all movie 200 movie.avi type type zoom 5 adiam 0.5 & +# view 90 90 box no 0 size 600 200 +#dump_modify avi pad 4 + +timestep 0.01 +run 4000 diff --git a/examples/USER/meso/mdpd/log.16Aug17.mdpd.g++.1 b/examples/USER/meso/mdpd/log.16Aug17.mdpd.g++.1 new file mode 100644 index 0000000000000000000000000000000000000000..c3c14da559784b73d65ab8e799816ae654ef25b0 --- /dev/null +++ b/examples/USER/meso/mdpd/log.16Aug17.mdpd.g++.1 @@ -0,0 +1,147 @@ +LAMMPS (11 Aug 2017) +######################################################################## +#### 3D droplet oscilation using many-body DPD simulation ### +#### ### +#### Created : Zhen Li (zhen_li@brown.edu) ### +#### Division of Applied Mathematics, Brown University. ### +#### ### +#### mDPD parameters follow the choice of the publication: ### +#### Z. Li et al. "Three dimensional flow structures in a moving ### +#### droplet on substrate: a dissipative particle dynamics study" ### +#### Physics of Fluids, 2013, 25: 072103. DOI: 10.1063/1.4812366 ### +######################################################################## +units lj +dimension 3 +boundary p p p +neighbor 0.3 bin +neigh_modify every 1 delay 0 check yes + +atom_style mdpd + +region mdpd block -25 25 -10 10 -10 10 units box +create_box 1 mdpd +Created orthogonal box = (-25 -10 -10) to (25 10 10) + 1 by 1 by 1 MPI processor grid + +lattice fcc 6 +Lattice spacing in x,y,z = 0.87358 0.87358 0.87358 +region film block -20 20 -7.5 7.5 -2.0 2.0 units box +create_atoms 1 region film +Created 14333 atoms + +pair_style hybrid/overlay mdpd/rhosum mdpd 1.0 1.0 9872598 +pair_coeff 1 1 mdpd/rhosum 0.75 +pair_coeff 1 1 mdpd -40 25 18.0 1.0 0.75 +mass 1 1.0 + +compute mythermo all temp +thermo 100 +thermo_modify temp mythermo +thermo_modify flush yes + +velocity all create 1.0 38497 loop local dist gaussian + +fix mvv all mvv/dpd + +dump mydump all atom 100 atom.lammpstrj + +#dump jpg all image 200 image.*.jpg type type zoom 5 adiam 0.5 # view 90 90 box no 0 size 600 200 +#dump_modify jpg pad 4 + +#dump avi all movie 200 movie.avi type type zoom 5 adiam 0.5 # view 90 90 box no 0 size 600 200 +#dump_modify avi pad 4 + +timestep 0.01 +run 4000 +Neighbor list info ... + update every 1 steps, delay 0 steps, check yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 1.3 + ghost atom cutoff = 1.3 + binsize = 0.65, bins = 77 31 31 + 2 neighbor lists, perpetual/occasional/extra = 2 0 0 + (1) pair mdpd/rhosum, perpetual + attributes: full, newton on + pair build: full/bin/atomonly + stencil: full/bin/3d + bin: standard + (2) pair mdpd, perpetual, half/full from (1) + attributes: half, newton on + pair build: halffull/newton + stencil: none + bin: none +Per MPI rank memory allocation (min/avg/max) = 9.931 | 9.931 | 9.931 Mbytes +Step Temp E_pair E_mol TotEng Press + 0 1 -13.346542 0 -11.846647 -6.8495478 + 100 1.0321029 -7.2846779 0 -5.7366316 -0.77640205 + 200 1.042287 -6.9534532 0 -5.3901317 -0.27750815 + 300 1.0583027 -6.8483105 0 -5.2609672 -0.30347708 + 400 1.0493719 -6.8648608 0 -5.2909127 -0.15312495 + 500 1.0723786 -6.8341085 0 -5.2256528 0.017227511 + 600 1.0545695 -6.8152957 0 -5.2335517 -0.024362439 + 700 1.0507193 -6.8076033 0 -5.2316344 -0.07101536 + 800 1.0531856 -6.9378568 0 -5.3581886 -0.053943939 + 900 1.0442995 -6.8501126 0 -5.2837726 -0.13347942 + 1000 1.0335049 -6.8883554 0 -5.3382062 -0.18420426 + 1100 1.0287276 -6.8298226 0 -5.2868389 -0.12081558 + 1200 1.0322527 -6.9462828 0 -5.3980117 -0.18047625 + 1300 1.0599443 -6.9449975 0 -5.355192 -0.011763589 + 1400 1.0560932 -6.845479 0 -5.2614498 0.032130055 + 1500 1.0432786 -6.9035877 0 -5.338779 -0.10268662 + 1600 1.064183 -6.9116836 0 -5.3155205 -0.060722129 + 1700 1.0586249 -6.8768278 0 -5.2890013 0.037005566 + 1800 1.0576064 -7.0060193 0 -5.4197204 -0.036211254 + 1900 1.0595141 -6.838741 0 -5.2495807 -0.12395681 + 2000 1.0650509 -6.897976 0 -5.3005111 0.003594807 + 2100 1.0768273 -6.8874245 0 -5.2722962 0.033283489 + 2200 1.0511606 -6.9823162 0 -5.4056854 0.015008427 + 2300 1.0461138 -6.8820601 0 -5.3129988 0.064646933 + 2400 1.0485369 -6.9437148 0 -5.3710191 -0.16534939 + 2500 1.0507221 -6.9394786 0 -5.3635054 -0.098289859 + 2600 1.0518352 -6.8947578 0 -5.3171152 -0.011666785 + 2700 1.0402369 -6.9273377 0 -5.3670913 0.035267073 + 2800 1.0426109 -6.912024 0 -5.3482168 0.049597305 + 2900 1.0358928 -6.9574778 0 -5.4037471 -0.063216561 + 3000 1.0351023 -6.9844192 0 -5.4318742 -0.10323465 + 3100 1.0255005 -6.9382486 0 -5.4001052 -0.073954735 + 3200 1.0150616 -6.9843183 0 -5.4618321 -0.095136405 + 3300 1.0118112 -6.9522082 0 -5.4345973 -0.12686179 + 3400 1.0071522 -6.970158 0 -5.4595351 -0.012487475 + 3500 1.0041758 -6.9773019 0 -5.4711433 -0.098027653 + 3600 1.0189298 -6.9393039 0 -5.4110158 0.061631719 + 3700 1.012442 -6.9341423 0 -5.4155852 0.10442772 + 3800 1.0021246 -6.9594374 0 -5.4563553 -0.081535223 + 3900 1.0165002 -6.9045321 0 -5.3798882 -0.0088283303 + 4000 1.0077099 -6.9145511 0 -5.4030918 0.048349691 +Loop time of 135.409 on 1 procs for 4000 steps with 14333 atoms + +Performance: 25522.736 tau/day, 29.540 timesteps/s +99.9% CPU use with 1 MPI tasks x no OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 93.074 | 93.074 | 93.074 | 0.0 | 68.74 +Neigh | 40.192 | 40.192 | 40.192 | 0.0 | 29.68 +Comm | 0.19625 | 0.19625 | 0.19625 | 0.0 | 0.14 +Output | 0.41756 | 0.41756 | 0.41756 | 0.0 | 0.31 +Modify | 1.0706 | 1.0706 | 1.0706 | 0.0 | 0.79 +Other | | 0.4581 | | | 0.34 + +Nlocal: 14333 ave 14333 max 14333 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 11 ave 11 max 11 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 401803 ave 401803 max 401803 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +FullNghs: 803606 ave 803606 max 803606 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 803606 +Ave neighs/atom = 56.0668 +Neighbor list builds = 1050 +Dangerous builds = 0 + +Please see the log.cite file for references relevant to this simulation + +Total wall time: 0:02:15 diff --git a/examples/USER/meso/mdpd/log.16Aug17.mdpd.g++.4 b/examples/USER/meso/mdpd/log.16Aug17.mdpd.g++.4 new file mode 100644 index 0000000000000000000000000000000000000000..ec3d8fbddc2891a945c1fc0661ecc45093e0b57f --- /dev/null +++ b/examples/USER/meso/mdpd/log.16Aug17.mdpd.g++.4 @@ -0,0 +1,147 @@ +LAMMPS (11 Aug 2017) +######################################################################## +#### 3D droplet oscilation using many-body DPD simulation ### +#### ### +#### Created : Zhen Li (zhen_li@brown.edu) ### +#### Division of Applied Mathematics, Brown University. ### +#### ### +#### mDPD parameters follow the choice of the publication: ### +#### Z. Li et al. "Three dimensional flow structures in a moving ### +#### droplet on substrate: a dissipative particle dynamics study" ### +#### Physics of Fluids, 2013, 25: 072103. DOI: 10.1063/1.4812366 ### +######################################################################## +units lj +dimension 3 +boundary p p p +neighbor 0.3 bin +neigh_modify every 1 delay 0 check yes + +atom_style mdpd + +region mdpd block -25 25 -10 10 -10 10 units box +create_box 1 mdpd +Created orthogonal box = (-25 -10 -10) to (25 10 10) + 4 by 1 by 1 MPI processor grid + +lattice fcc 6 +Lattice spacing in x,y,z = 0.87358 0.87358 0.87358 +region film block -20 20 -7.5 7.5 -2.0 2.0 units box +create_atoms 1 region film +Created 14333 atoms + +pair_style hybrid/overlay mdpd/rhosum mdpd 1.0 1.0 9872598 +pair_coeff 1 1 mdpd/rhosum 0.75 +pair_coeff 1 1 mdpd -40 25 18.0 1.0 0.75 +mass 1 1.0 + +compute mythermo all temp +thermo 100 +thermo_modify temp mythermo +thermo_modify flush yes + +velocity all create 1.0 38497 loop local dist gaussian + +fix mvv all mvv/dpd + +dump mydump all atom 100 atom.lammpstrj + +#dump jpg all image 200 image.*.jpg type type zoom 5 adiam 0.5 # view 90 90 box no 0 size 600 200 +#dump_modify jpg pad 4 + +#dump avi all movie 200 movie.avi type type zoom 5 adiam 0.5 # view 90 90 box no 0 size 600 200 +#dump_modify avi pad 4 + +timestep 0.01 +run 4000 +Neighbor list info ... + update every 1 steps, delay 0 steps, check yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 1.3 + ghost atom cutoff = 1.3 + binsize = 0.65, bins = 77 31 31 + 2 neighbor lists, perpetual/occasional/extra = 2 0 0 + (1) pair mdpd/rhosum, perpetual + attributes: full, newton on + pair build: full/bin/atomonly + stencil: full/bin/3d + bin: standard + (2) pair mdpd, perpetual, half/full from (1) + attributes: half, newton on + pair build: halffull/newton + stencil: none + bin: none +Per MPI rank memory allocation (min/avg/max) = 6.265 | 6.655 | 7.045 Mbytes +Step Temp E_pair E_mol TotEng Press + 0 1 -13.346542 0 -11.846647 -6.9757225 + 100 1.0406108 -7.2500697 0 -5.6892624 -0.80306477 + 200 1.0535506 -6.9452928 0 -5.3650772 -0.39911584 + 300 1.0644295 -6.8599907 0 -5.2634577 -0.2997968 + 400 1.0780123 -6.9471342 0 -5.3302286 -0.06274869 + 500 1.0672153 -6.8269984 0 -5.2262872 0.021251762 + 600 1.0634304 -6.8366569 0 -5.2416226 -0.021863333 + 700 1.0544807 -6.8272074 0 -5.2455967 -0.0064688066 + 800 1.0556172 -6.8859788 0 -5.3026634 0.023983333 + 900 1.0436201 -6.9246523 0 -5.3593313 -0.12409618 + 1000 1.0617016 -6.8632331 0 -5.2707919 -0.1145505 + 1100 1.0323831 -6.951554 0 -5.4030874 -0.030031884 + 1200 1.0407785 -6.931048 0 -5.3699892 -0.018362136 + 1300 1.0380953 -6.8785296 0 -5.3214953 -0.099308737 + 1400 1.0418898 -6.8998 0 -5.3370743 -0.14199421 + 1500 1.0487254 -6.9671212 0 -5.3941429 -0.12132644 + 1600 1.0561042 -6.8948881 0 -5.3108424 -0.09627292 + 1700 1.0524479 -6.9531441 0 -5.3745823 -0.11959782 + 1800 1.0541197 -6.9219819 0 -5.3409126 0.032964029 + 1900 1.0531221 -6.8805815 0 -5.3010085 0.030124685 + 2000 1.0531819 -6.8612868 0 -5.2816242 -0.076876781 + 2100 1.0757791 -6.919875 0 -5.3063189 -0.04060439 + 2200 1.069423 -6.9005754 0 -5.2965527 0.015347467 + 2300 1.0403109 -6.9015402 0 -5.3411827 0.0034687897 + 2400 1.0547448 -6.9325539 0 -5.3505471 -0.021202325 + 2500 1.0404195 -6.8494675 0 -5.2889472 0.086947847 + 2600 1.0499828 -6.9861392 0 -5.4112749 -0.018079308 + 2700 1.0294278 -6.8525151 0 -5.3084811 0.16911472 + 2800 1.0220652 -6.8993978 0 -5.366407 0.064820531 + 2900 1.0347904 -6.9322703 0 -5.3801929 -0.11384964 + 3000 1.0391372 -6.9519088 0 -5.3933117 0.003050577 + 3100 1.0335828 -7.0090074 0 -5.4587413 -0.17366664 + 3200 1.0211896 -6.9421289 0 -5.4104513 0.025299853 + 3300 1.0019232 -6.9426488 0 -5.4398688 -0.098334724 + 3400 1.0203541 -6.9310981 0 -5.4006737 -0.0015544982 + 3500 1.0076794 -6.9519932 0 -5.4405796 -0.056956902 + 3600 1.0086525 -6.9620979 0 -5.4492247 0.020014884 + 3700 1.0046112 -7.0011625 0 -5.4943508 -0.083936527 + 3800 1.0096867 -6.9470382 0 -5.4326138 -0.089521759 + 3900 1.0074482 -6.9959414 0 -5.4848745 -0.11873698 + 4000 1.01222 -6.9535694 0 -5.4353454 0.042191466 +Loop time of 63.0327 on 4 procs for 4000 steps with 14333 atoms + +Performance: 54828.695 tau/day, 63.459 timesteps/s +98.8% CPU use with 4 MPI tasks x no OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 16.591 | 29.795 | 42.814 | 236.6 | 47.27 +Neigh | 2.0347 | 10.239 | 18.555 | 255.6 | 16.24 +Comm | 0.70099 | 6.0601 | 11.386 | 207.4 | 9.61 +Output | 0.20713 | 0.40902 | 0.61087 | 31.5 | 0.65 +Modify | 0.058089 | 0.27033 | 0.4851 | 40.7 | 0.43 +Other | | 16.26 | | | 25.79 + +Nlocal: 3583.25 ave 7207 max 0 min +Histogram: 2 0 0 0 0 0 0 0 0 2 +Nghost: 1055.75 ave 2131 max 0 min +Histogram: 2 0 0 0 0 0 0 0 0 2 +Neighs: 100549 ave 202192 max 0 min +Histogram: 2 0 0 0 0 0 0 0 0 2 +FullNghs: 201098 ave 404372 max 0 min +Histogram: 2 0 0 0 0 0 0 0 0 2 + +Total # of neighbors = 804390 +Ave neighs/atom = 56.1215 +Neighbor list builds = 1049 +Dangerous builds = 0 + +Please see the log.cite file for references relevant to this simulation + +Total wall time: 0:01:03 diff --git a/examples/USER/meso/tdpd/cc.profile.16Aug17.tdpd.g++.1 b/examples/USER/meso/tdpd/cc.profile.16Aug17.tdpd.g++.1 new file mode 100644 index 0000000000000000000000000000000000000000..a872600504664753f86025cfa5a04d6252fb0e6e --- /dev/null +++ b/examples/USER/meso/tdpd/cc.profile.16Aug17.tdpd.g++.1 @@ -0,0 +1,24 @@ +# Chunk-averaged data for fix stat and group c_cc2 +# Timestep Number-of-chunks Total-count +# Chunk Coord1 Ncount c_cc1 c_cc2 +100 20 16000 + 1 -9.5 797.17 0.986661 1.0077 + 2 -8.5 802.61 0.967974 1.02003 + 3 -7.5 795.46 0.957045 1.02873 + 4 -6.5 806.46 0.951271 1.03428 + 5 -5.5 802.34 0.94898 1.03692 + 6 -4.5 799.84 0.949378 1.03673 + 7 -3.5 798.4 0.952505 1.03374 + 8 -2.5 800.36 0.959322 1.02778 + 9 -1.5 797.65 0.971516 1.01867 + 10 -0.5 808.88 0.990644 1.00626 + 11 0.5 786.29 1.00924 0.993828 + 12 1.5 807.16 1.02831 0.981436 + 13 2.5 797.54 1.04071 0.972184 + 14 3.5 799.67 1.04749 0.966258 + 15 4.5 799.61 1.05063 0.963256 + 16 5.5 806.11 1.05105 0.963052 + 17 6.5 803.67 1.04877 0.965688 + 18 7.5 797.39 1.04305 0.971187 + 19 8.5 801.85 1.03208 0.97993 + 20 9.5 791.54 1.01351 0.992209 diff --git a/examples/USER/meso/tdpd/cc.profile.16Aug17.tdpd.g++.4 b/examples/USER/meso/tdpd/cc.profile.16Aug17.tdpd.g++.4 new file mode 100644 index 0000000000000000000000000000000000000000..de34ef26c3eea6075dc023e16a1b604c57dfb661 --- /dev/null +++ b/examples/USER/meso/tdpd/cc.profile.16Aug17.tdpd.g++.4 @@ -0,0 +1,24 @@ +# Chunk-averaged data for fix stat and group c_cc2 +# Timestep Number-of-chunks Total-count +# Chunk Coord1 Ncount c_cc1 c_cc2 +100 20 16000 + 1 -9.5 806.92 0.986675 1.00766 + 2 -8.5 798.01 0.96792 1.02003 + 3 -7.5 805.43 0.956909 1.02883 + 4 -6.5 800.54 0.951207 1.03432 + 5 -5.5 794.14 0.948967 1.03691 + 6 -4.5 799.75 0.949379 1.03672 + 7 -3.5 799.65 0.952492 1.03374 + 8 -2.5 799.94 0.959331 1.02778 + 9 -1.5 800.96 0.971664 1.01861 + 10 -0.5 803.97 0.99074 1.00622 + 11 0.5 800.66 1.00949 0.993673 + 12 1.5 779.22 1.02824 0.981461 + 13 2.5 809.13 1.04056 0.972274 + 14 3.5 805.23 1.04747 0.966272 + 15 4.5 795.95 1.05061 0.96327 + 16 5.5 796.4 1.05105 0.963035 + 17 6.5 806.1 1.04883 0.965621 + 18 7.5 806.41 1.04305 0.971224 + 19 8.5 792.2 1.03211 0.979955 + 20 9.5 799.39 1.01362 0.992156 diff --git a/examples/USER/meso/tdpd/in.tdpd b/examples/USER/meso/tdpd/in.tdpd new file mode 100644 index 0000000000000000000000000000000000000000..748a4f50775795c51a26eead61adfaa3a6085477 --- /dev/null +++ b/examples/USER/meso/tdpd/in.tdpd @@ -0,0 +1,54 @@ +######################################################################## +### Pure diffusion with a reaction source term analog of a periodic ### +### Poiseuille flow problem using transport DPD (tDPD) simulation ### +### ### +### Created : Zhen Li (zhen_li@brown.edu) ### +### Division of Applied Mathematics, Brown University. ### +### ### +### tDPD system setup follows Fig.1 in the publication: ### +### Z. Li, A. Yazdani, A. Tartakovsky and G.E. Karniadakis. ### +### "Transport dissipative particle dynamics model for mesoscopic ### +### advection-diffusion-reaction problems. J. Chem. Phys., ### +### 2015, 143: 014101. DOI: 10.1063/1.4923254 ### +######################################################################## +units lj +dimension 3 +boundary p p p +neighbor 0.2 bin +neigh_modify every 1 delay 0 check yes + +atom_style tdpd 2 + +region tdpd block -10 10 -10 10 -5 5 units box +create_box 1 tdpd +create_atoms 1 random 16000 276438 NULL +mass 1 1.0 +set atom * cc 1 1.0 +set atom * cc 2 1.0 + +pair_style tdpd 1.0 1.58 9872598 +pair_coeff 1 1 18.75 4.5 0.41 1.58 1.58 1.0 1.0E-5 2.0 3.0 1.0E-5 2.0 + +compute mythermo all temp +thermo 50 +thermo_modify temp mythermo +thermo_modify flush yes + +velocity all create 1.0 432982 loop local dist gaussian + +fix mvv all mvv/tdpd 0.5 +fix upper1 all tdpd/source 1 cuboid 0.0 5.0 0.0 20.0 10.0 10.0 0.01 +fix lower1 all tdpd/source 1 cuboid 0.0 -5.0 0.0 20.0 10.0 10.0 -0.01 +fix upper2 all tdpd/source 2 cuboid 0.0 5.0 0.0 20.0 10.0 10.0 -0.01 +fix lower2 all tdpd/source 2 cuboid 0.0 -5.0 0.0 20.0 10.0 10.0 0.01 + +timestep 0.01 +run 500 +reset_timestep 0 + +compute cc1 all tdpd/cc/atom 1 +compute cc2 all tdpd/cc/atom 2 +compute bin all chunk/atom bin/1d y 0.0 1.0 +fix stat all ave/chunk 1 100 100 bin c_cc1 c_cc2 norm sample file cc.profile + +run 100 diff --git a/examples/USER/meso/tdpd/log.16Aug17.tdpd.g++.1 b/examples/USER/meso/tdpd/log.16Aug17.tdpd.g++.1 new file mode 100644 index 0000000000000000000000000000000000000000..21b618148c91830d3a18e37d11ffb0d3633b997c --- /dev/null +++ b/examples/USER/meso/tdpd/log.16Aug17.tdpd.g++.1 @@ -0,0 +1,146 @@ +LAMMPS (11 Aug 2017) +######################################################################## +### Pure diffusion with a reaction source term analog of a periodic ### +### Poiseuille flow problem using transport DPD (tDPD) simulation ### +### ### +### Created : Zhen Li (zhen_li@brown.edu) ### +### Division of Applied Mathematics, Brown University. ### +### ### +### tDPD system setup follows Fig.1 in the publication: ### +### Z. Li, A. Yazdani, A. Tartakovsky and G.E. Karniadakis. ### +### "Transport dissipative particle dynamics model for mesoscopic ### +### advection-diffusion-reaction problems. J. Chem. Phys., ### +### 2015, 143: 014101. DOI: 10.1063/1.4923254 ### +######################################################################## +units lj +dimension 3 +boundary p p p +neighbor 0.2 bin +neigh_modify every 1 delay 0 check yes + +atom_style tdpd 2 + +region tdpd block -10 10 -10 10 -5 5 units box +create_box 1 tdpd +Created orthogonal box = (-10 -10 -5) to (10 10 5) + 1 by 1 by 1 MPI processor grid +create_atoms 1 random 16000 276438 NULL +Created 16000 atoms +mass 1 1.0 +set atom * cc 1 1.0 + 16000 settings made for cc index 1 +set atom * cc 2 1.0 + 16000 settings made for cc index 2 + +pair_style tdpd 1.0 1.58 9872598 +pair_coeff 1 1 18.75 4.5 0.41 1.58 1.58 1.0 1.0E-5 2.0 3.0 1.0E-5 2.0 + +compute mythermo all temp +thermo 50 +thermo_modify temp mythermo +thermo_modify flush yes + +velocity all create 1.0 432982 loop local dist gaussian + +fix mvv all mvv/tdpd 0.5 +fix upper1 all tdpd/source 1 cuboid 0.0 5.0 0.0 20.0 10.0 10.0 0.01 +fix lower1 all tdpd/source 1 cuboid 0.0 -5.0 0.0 20.0 10.0 10.0 -0.01 +fix upper2 all tdpd/source 2 cuboid 0.0 5.0 0.0 20.0 10.0 10.0 -0.01 +fix lower2 all tdpd/source 2 cuboid 0.0 -5.0 0.0 20.0 10.0 10.0 0.01 + +timestep 0.01 +run 500 +Neighbor list info ... + update every 1 steps, delay 0 steps, check yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 1.78 + ghost atom cutoff = 1.78 + binsize = 0.89, bins = 23 23 12 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair tdpd, perpetual + attributes: half, newton on + pair build: half/bin/atomonly/newton + stencil: half/bin/3d/newton + bin: standard +Per MPI rank memory allocation (min/avg/max) = 11.3 | 11.3 | 11.3 Mbytes +Step Temp E_pair E_mol TotEng Press + 0 1 48.948932 0 50.448838 202.19166 + 50 0.99837766 43.949877 0 45.447349 195.80936 + 100 0.99846831 43.756995 0 45.254604 198.22348 + 150 1.0026903 43.72408 0 45.228021 196.61676 + 200 1.0063144 43.722388 0 45.231765 194.17954 + 250 1.0032304 43.721864 0 45.226615 197.85829 + 300 0.9932656 43.703526 0 45.193331 196.57406 + 350 1.0002916 43.720498 0 45.220841 193.55346 + 400 0.99475486 43.722965 0 45.215004 196.81546 + 450 1.0011803 43.712447 0 45.214124 200.46118 + 500 1.0009006 43.708984 0 45.210241 197.38953 +Loop time of 96.0326 on 1 procs for 500 steps with 16000 atoms + +Performance: 4498.474 tau/day, 5.207 timesteps/s +99.9% CPU use with 1 MPI tasks x no OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 90.083 | 90.083 | 90.083 | 0.0 | 93.80 +Neigh | 5.049 | 5.049 | 5.049 | 0.0 | 5.26 +Comm | 0.34141 | 0.34141 | 0.34141 | 0.0 | 0.36 +Output | 0.00092816 | 0.00092816 | 0.00092816 | 0.0 | 0.00 +Modify | 0.45991 | 0.45991 | 0.45991 | 0.0 | 0.48 +Other | | 0.09865 | | | 0.10 + +Nlocal: 16000 ave 16000 max 16000 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 14091 ave 14091 max 14091 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 749379 ave 749379 max 749379 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 749379 +Ave neighs/atom = 46.8362 +Neighbor list builds = 183 +Dangerous builds = 0 +reset_timestep 0 + +compute cc1 all tdpd/cc/atom 1 +compute cc2 all tdpd/cc/atom 2 +compute bin all chunk/atom bin/1d y 0.0 1.0 +fix stat all ave/chunk 1 100 100 bin c_cc1 c_cc2 norm sample file cc.profile + +run 100 +Per MPI rank memory allocation (min/avg/max) = 11.8 | 11.8 | 11.8 Mbytes +Step Temp E_pair E_mol TotEng Press + 0 1.0009006 43.708984 0 45.210241 199.3205 + 50 1.0007276 43.704844 0 45.205842 197.77053 + 100 1.0039032 43.714201 0 45.219961 197.31118 +Loop time of 19.0326 on 1 procs for 100 steps with 16000 atoms + +Performance: 4539.577 tau/day, 5.254 timesteps/s +99.9% CPU use with 1 MPI tasks x no OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 17.842 | 17.842 | 17.842 | 0.0 | 93.74 +Neigh | 0.98674 | 0.98674 | 0.98674 | 0.0 | 5.18 +Comm | 0.066013 | 0.066013 | 0.066013 | 0.0 | 0.35 +Output | 0.00016284 | 0.00016284 | 0.00016284 | 0.0 | 0.00 +Modify | 0.11795 | 0.11795 | 0.11795 | 0.0 | 0.62 +Other | | 0.02012 | | | 0.11 + +Nlocal: 16000 ave 16000 max 16000 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Nghost: 14126 ave 14126 max 14126 min +Histogram: 1 0 0 0 0 0 0 0 0 0 +Neighs: 748927 ave 748927 max 748927 min +Histogram: 1 0 0 0 0 0 0 0 0 0 + +Total # of neighbors = 748927 +Ave neighs/atom = 46.8079 +Neighbor list builds = 37 +Dangerous builds = 0 + +Please see the log.cite file for references relevant to this simulation + +Total wall time: 0:01:55 diff --git a/examples/USER/meso/tdpd/log.16Aug17.tdpd.g++.4 b/examples/USER/meso/tdpd/log.16Aug17.tdpd.g++.4 new file mode 100644 index 0000000000000000000000000000000000000000..6cd99168f458bde2d5ba85260b83918fdad0ff47 --- /dev/null +++ b/examples/USER/meso/tdpd/log.16Aug17.tdpd.g++.4 @@ -0,0 +1,146 @@ +LAMMPS (11 Aug 2017) +######################################################################## +### Pure diffusion with a reaction source term analog of a periodic ### +### Poiseuille flow problem using transport DPD (tDPD) simulation ### +### ### +### Created : Zhen Li (zhen_li@brown.edu) ### +### Division of Applied Mathematics, Brown University. ### +### ### +### tDPD system setup follows Fig.1 in the publication: ### +### Z. Li, A. Yazdani, A. Tartakovsky and G.E. Karniadakis. ### +### "Transport dissipative particle dynamics model for mesoscopic ### +### advection-diffusion-reaction problems. J. Chem. Phys., ### +### 2015, 143: 014101. DOI: 10.1063/1.4923254 ### +######################################################################## +units lj +dimension 3 +boundary p p p +neighbor 0.2 bin +neigh_modify every 1 delay 0 check yes + +atom_style tdpd 2 + +region tdpd block -10 10 -10 10 -5 5 units box +create_box 1 tdpd +Created orthogonal box = (-10 -10 -5) to (10 10 5) + 2 by 2 by 1 MPI processor grid +create_atoms 1 random 16000 276438 NULL +Created 16000 atoms +mass 1 1.0 +set atom * cc 1 1.0 + 16000 settings made for cc index 1 +set atom * cc 2 1.0 + 16000 settings made for cc index 2 + +pair_style tdpd 1.0 1.58 9872598 +pair_coeff 1 1 18.75 4.5 0.41 1.58 1.58 1.0 1.0E-5 2.0 3.0 1.0E-5 2.0 + +compute mythermo all temp +thermo 50 +thermo_modify temp mythermo +thermo_modify flush yes + +velocity all create 1.0 432982 loop local dist gaussian + +fix mvv all mvv/tdpd 0.5 +fix upper1 all tdpd/source 1 cuboid 0.0 5.0 0.0 20.0 10.0 10.0 0.01 +fix lower1 all tdpd/source 1 cuboid 0.0 -5.0 0.0 20.0 10.0 10.0 -0.01 +fix upper2 all tdpd/source 2 cuboid 0.0 5.0 0.0 20.0 10.0 10.0 -0.01 +fix lower2 all tdpd/source 2 cuboid 0.0 -5.0 0.0 20.0 10.0 10.0 0.01 + +timestep 0.01 +run 500 +Neighbor list info ... + update every 1 steps, delay 0 steps, check yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 1.78 + ghost atom cutoff = 1.78 + binsize = 0.89, bins = 23 23 12 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair tdpd, perpetual + attributes: half, newton on + pair build: half/bin/atomonly/newton + stencil: half/bin/3d/newton + bin: standard +Per MPI rank memory allocation (min/avg/max) = 4.814 | 4.823 | 4.829 Mbytes +Step Temp E_pair E_mol TotEng Press + 0 1 48.948932 0 50.448838 199.65978 + 50 1.0153476 43.948796 0 45.471722 198.3346 + 100 1.0064284 43.754875 0 45.264424 197.5308 + 150 0.99609985 43.726751 0 45.220807 197.50623 + 200 1.0016604 43.720283 0 45.22268 197.81129 + 250 1.0054979 43.718568 0 45.22672 195.79405 + 300 0.9997618 43.716617 0 45.216166 197.84788 + 350 0.99170101 43.72093 0 45.208389 196.07711 + 400 1.0043692 43.71648 0 45.22294 199.55247 + 450 1.0086263 43.709988 0 45.222833 198.20516 + 500 1.0029076 43.717879 0 45.222146 197.26281 +Loop time of 24.5533 on 4 procs for 500 steps with 16000 atoms + +Performance: 17594.412 tau/day, 20.364 timesteps/s +99.9% CPU use with 4 MPI tasks x no OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 22.236 | 22.418 | 22.736 | 4.0 | 91.30 +Neigh | 1.2759 | 1.2883 | 1.3077 | 1.1 | 5.25 +Comm | 0.35749 | 0.69526 | 0.88462 | 24.1 | 2.83 +Output | 0.00043321 | 0.00050318 | 0.00070691 | 0.0 | 0.00 +Modify | 0.11555 | 0.11648 | 0.11888 | 0.4 | 0.47 +Other | | 0.03473 | | | 0.14 + +Nlocal: 4000 ave 4012 max 3982 min +Histogram: 1 0 0 0 0 1 0 0 0 2 +Nghost: 5986.25 ave 6016 max 5956 min +Histogram: 1 0 0 0 1 0 1 0 0 1 +Neighs: 187309 ave 188264 max 186087 min +Histogram: 1 0 0 0 1 0 0 1 0 1 + +Total # of neighbors = 749235 +Ave neighs/atom = 46.8272 +Neighbor list builds = 180 +Dangerous builds = 0 +reset_timestep 0 + +compute cc1 all tdpd/cc/atom 1 +compute cc2 all tdpd/cc/atom 2 +compute bin all chunk/atom bin/1d y 0.0 1.0 +fix stat all ave/chunk 1 100 100 bin c_cc1 c_cc2 norm sample file cc.profile + +run 100 +Per MPI rank memory allocation (min/avg/max) = 5.065 | 5.074 | 5.082 Mbytes +Step Temp E_pair E_mol TotEng Press + 0 1.0029076 43.717879 0 45.222146 198.45789 + 50 1.0077982 43.713264 0 45.224867 196.56183 + 100 1.0036823 43.708022 0 45.213451 196.00815 +Loop time of 4.79577 on 4 procs for 100 steps with 16000 atoms + +Performance: 18015.870 tau/day, 20.852 timesteps/s +99.9% CPU use with 4 MPI tasks x no OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 4.3481 | 4.39 | 4.4398 | 1.7 | 91.54 +Neigh | 0.25477 | 0.25675 | 0.25963 | 0.4 | 5.35 +Comm | 0.059327 | 0.11194 | 0.15608 | 11.0 | 2.33 +Output | 0.00011206 | 0.00011748 | 0.00011992 | 0.0 | 0.00 +Modify | 0.030417 | 0.030622 | 0.030739 | 0.1 | 0.64 +Other | | 0.006301 | | | 0.13 + +Nlocal: 4000 ave 4010 max 3987 min +Histogram: 1 0 0 0 0 1 1 0 0 1 +Nghost: 5985.25 ave 6025 max 5959 min +Histogram: 2 0 0 0 0 1 0 0 0 1 +Neighs: 187304 ave 188092 max 186449 min +Histogram: 1 0 0 0 0 2 0 0 0 1 + +Total # of neighbors = 749216 +Ave neighs/atom = 46.826 +Neighbor list builds = 38 +Dangerous builds = 0 + +Please see the log.cite file for references relevant to this simulation + +Total wall time: 0:00:29 diff --git a/examples/USER/misc/temper_npt/data.peptide b/examples/USER/misc/temper_npt/data.peptide new file mode 100644 index 0000000000000000000000000000000000000000..f9dfb6e485302da2abd338eb1be299011f4aeba7 --- /dev/null +++ b/examples/USER/misc/temper_npt/data.peptide @@ -0,0 +1,6531 @@ +LAMMPS Description + + 2004 atoms + 1365 bonds + 786 angles + 207 dihedrals + 12 impropers + + 14 atom types + 18 bond types + 31 angle types + 21 dihedral types + 2 improper types + + 36.840194 64.211560 xlo xhi + 41.013691 68.385058 ylo yhi + 29.768095 57.139462 zlo zhi + +Masses + + 1 12.0110 + 2 12.0110 + 3 15.9990 + 4 1.0080 + 5 14.0070 + 6 12.0110 + 7 12.0110 + 8 12.0110 + 9 15.9990 + 10 1.0080 + 11 1.0080 + 12 32.0660 + 13 16.0000 + 14 1.0100 + +Pair Coeffs + + 1 0.110000 3.563595 0.110000 3.563595 + 2 0.080000 3.670503 0.010000 3.385415 + 3 0.120000 3.029056 0.120000 2.494516 + 4 0.022000 2.351973 0.022000 2.351973 + 5 0.200000 3.296325 0.200000 2.761786 + 6 0.020000 4.053589 0.010000 3.385415 + 7 0.055000 3.875410 0.010000 3.385415 + 8 0.070000 3.550053 0.070000 3.550053 + 9 0.152100 3.153782 0.152100 3.153782 + 10 0.046000 0.400014 0.046000 0.400014 + 11 0.030000 2.420037 0.030000 2.420037 + 12 0.450000 3.563595 0.450000 3.563595 + 13 0.152100 3.150570 0.152100 3.150570 + 14 0.046000 0.400014 0.046000 0.400014 + +Bond Coeffs + + 1 249.999999 1.490000 + 2 620.000001 1.230000 + 3 370.000000 1.345000 + 4 322.000001 1.111000 + 5 319.999999 1.430000 + 6 440.000000 0.997000 + 7 222.500001 1.538000 + 8 330.000001 1.080000 + 9 230.000000 1.490000 + 10 309.000001 1.111000 + 11 305.000000 1.375000 + 12 340.000001 1.080000 + 13 334.300000 1.411000 + 14 545.000001 0.960000 + 15 222.500001 1.530000 + 16 198.000000 1.818000 + 17 239.999999 1.816000 + 18 450.000000 0.957200 + +Angle Coeffs + + 1 33.000000 109.500000 30.000000 2.163000 + 2 50.000000 120.000000 0.000000 0.000000 + 3 34.000000 123.000000 0.000000 0.000000 + 4 80.000000 121.000000 0.000000 0.000000 + 5 80.000000 116.500000 0.000000 0.000000 + 6 80.000000 122.500000 0.000000 0.000000 + 7 35.500000 108.400000 5.400000 1.802000 + 8 50.000000 107.000000 0.000000 0.000000 + 9 70.000000 113.500000 0.000000 0.000000 + 10 48.000000 108.000000 0.000000 0.000000 + 11 35.000000 117.000000 0.000000 0.000000 + 12 51.800000 107.500000 0.000000 0.000000 + 13 33.430000 110.100000 22.530000 2.179000 + 14 52.000000 108.000000 0.000000 0.000000 + 15 50.000000 109.500000 0.000000 0.000000 + 16 35.000000 111.000000 0.000000 0.000000 + 17 45.800000 122.300000 0.000000 0.000000 + 18 49.300000 107.500000 0.000000 0.000000 + 19 40.000000 120.000000 35.000000 2.416200 + 20 30.000000 120.000000 22.000000 2.152500 + 21 45.200000 120.000000 0.000000 0.000000 + 22 65.000000 108.000000 0.000000 0.000000 + 23 35.500000 109.000000 5.400000 1.802000 + 24 36.000000 115.000000 0.000000 0.000000 + 25 58.350000 113.500000 11.160000 2.561000 + 26 58.000000 114.500000 0.000000 0.000000 + 27 26.500000 110.100000 22.530000 2.179000 + 28 34.000000 95.000000 0.000000 0.000000 + 29 46.100000 111.300000 0.000000 0.000000 + 30 51.500000 109.500000 0.000000 0.000000 + 31 55.000000 104.520000 0.000000 0.000000 + +Dihedral Coeffs + + 1 0.200000 1 180 1.000000 + 2 1.800000 1 0 1.000000 + 3 0.000000 1 0 1.000000 + 4 1.600000 1 0 0.500000 + 5 2.500000 2 180 0.500000 + 6 2.500000 2 180 1.000000 + 7 0.600000 1 0 1.000000 + 8 0.200000 3 0 1.000000 + 9 0.230000 2 180 1.000000 + 10 0.040000 3 0 1.000000 + 11 1.400000 1 0 1.000000 + 12 3.100000 2 180 1.000000 + 13 4.200000 2 180 1.000000 + 14 3.100000 2 180 0.500000 + 15 0.990000 2 180 1.000000 + 16 2.400000 2 180 1.000000 + 17 0.195000 3 0 1.000000 + 18 0.240000 1 180 0.500000 + 19 0.370000 3 0 0.500000 + 20 0.280000 3 0 1.000000 + 21 0.010000 3 0 1.000000 + +Improper Coeffs + + 1 120.000000 0.000000 + 2 20.000000 0.000000 + +Atoms + + 1 1 1 0.510 43.99993 58.52678 36.78550 0 0 0 + 2 1 2 -0.270 45.10395 58.23499 35.86693 0 0 0 + 3 1 3 -0.510 43.81519 59.54928 37.43995 0 0 0 + 4 1 4 0.090 45.71714 57.34797 36.13434 0 0 0 + 5 1 4 0.090 45.72261 59.13657 35.67007 0 0 0 + 6 1 4 0.090 44.66624 58.09539 34.85538 0 0 0 + 7 1 5 -0.470 43.28193 57.47427 36.91953 0 0 0 + 8 1 6 0.070 42.07157 57.45486 37.62418 0 0 0 + 9 1 1 0.510 42.19985 57.57789 39.12163 0 0 0 + 10 1 3 -0.510 41.88641 58.62251 39.70398 0 0 0 + 11 1 7 -0.180 41.25052 56.15304 37.41811 0 0 0 + 12 1 8 0.000 40.88511 55.94638 35.97460 0 0 0 + 13 1 8 -0.115 41.48305 54.96372 35.11223 0 0 0 + 14 1 8 -0.115 39.74003 56.60996 35.46443 0 0 0 + 15 1 8 -0.115 41.02111 54.75715 33.80764 0 0 0 + 16 1 8 -0.115 39.26180 56.39194 34.12024 0 0 0 + 17 1 8 0.110 39.92330 55.46092 33.27135 0 0 0 + 18 1 9 -0.540 39.48164 55.22919 31.91865 0 0 0 + 19 1 10 0.310 43.60633 56.61693 36.52744 0 0 0 + 20 1 4 0.090 41.49619 58.31145 37.30543 0 0 0 + 21 1 4 0.090 41.88498 55.29476 37.72657 0 0 0 + 22 1 4 0.090 40.30899 56.19690 38.00627 0 0 0 + 23 1 11 0.115 42.31528 54.36176 35.44606 0 0 0 + 24 1 11 0.115 39.26330 57.31216 36.13230 0 0 0 + 25 1 11 0.115 41.62695 54.10606 33.19490 0 0 0 + 26 1 11 0.115 38.42147 56.98236 33.78612 0 0 0 + 27 1 10 0.430 38.78233 55.86217 31.74004 0 0 0 + 28 1 5 -0.470 42.79933 56.56370 39.79000 0 0 0 + 29 1 7 -0.020 42.96709 56.75379 41.28116 0 0 0 + 30 1 1 0.510 43.83019 55.68988 41.92255 0 0 0 + 31 1 3 -0.510 44.98521 55.93104 42.21713 0 0 0 + 32 1 10 0.310 43.13466 55.75696 39.30966 0 0 0 + 33 1 4 0.090 42.04692 56.86721 41.83507 0 0 0 + 34 1 4 0.090 43.52938 57.66324 41.43329 0 0 0 + 35 1 5 -0.470 43.26792 54.43342 42.07043 0 0 0 + 36 1 7 -0.020 43.92411 53.28930 42.63327 0 0 0 + 37 1 1 0.510 43.51012 53.02289 44.10510 0 0 0 + 38 1 3 -0.510 42.35086 53.07863 44.50806 0 0 0 + 39 1 10 0.310 42.28859 54.34993 41.90323 0 0 0 + 40 1 4 0.090 44.98464 53.47473 42.54797 0 0 0 + 41 1 4 0.090 43.49715 52.54787 41.97419 0 0 0 + 42 1 5 -0.470 44.51925 52.64535 44.88133 0 0 0 + 43 1 6 0.070 44.47588 52.35054 46.24397 0 0 0 + 44 1 1 0.510 45.40218 53.34579 46.94730 0 0 0 + 45 1 3 -0.510 45.23520 54.55893 46.92038 0 0 0 + 46 1 7 -0.180 44.77960 50.82831 46.50232 0 0 0 + 47 1 8 0.000 43.72184 49.84551 45.98093 0 0 0 + 48 1 8 -0.115 44.14810 49.00477 44.97195 0 0 0 + 49 1 8 -0.115 42.43499 49.66652 46.53541 0 0 0 + 50 1 8 -0.115 43.26154 48.00434 44.46769 0 0 0 + 51 1 8 -0.115 41.54732 48.79670 45.95416 0 0 0 + 52 1 8 -0.115 41.98220 47.90746 44.95574 0 0 0 + 53 1 10 0.310 45.39510 52.50937 44.42482 0 0 0 + 54 1 4 0.090 43.51312 52.58974 46.67092 0 0 0 + 55 1 4 0.090 44.89709 50.54313 47.56965 0 0 0 + 56 1 4 0.090 45.72096 50.49337 46.01654 0 0 0 + 57 1 11 0.115 45.13573 49.07933 44.54134 0 0 0 + 58 1 11 0.115 42.07869 50.34816 47.29358 0 0 0 + 59 1 11 0.115 43.47793 47.29281 43.68456 0 0 0 + 60 1 11 0.115 40.52625 48.76134 46.30425 0 0 0 + 61 1 11 0.115 41.35446 47.13287 44.54059 0 0 0 + 62 1 5 -0.470 46.41448 52.86278 47.68291 0 0 0 + 63 1 6 0.070 47.25136 53.68184 48.51163 0 0 0 + 64 1 1 0.510 48.33905 54.40097 47.73886 0 0 0 + 65 1 3 -0.510 49.27132 53.85220 47.16549 0 0 0 + 66 1 7 -0.180 47.88329 52.75681 49.60227 0 0 0 + 67 1 7 -0.140 48.82515 53.51102 50.61578 0 0 0 + 68 1 12 -0.090 48.12492 55.00373 51.43039 0 0 0 + 69 1 2 -0.220 47.70783 54.12980 53.04072 0 0 0 + 70 1 10 0.310 46.67199 51.90088 47.73231 0 0 0 + 71 1 4 0.090 46.64593 54.43552 48.99310 0 0 0 + 72 1 4 0.090 48.41361 51.90817 49.11968 0 0 0 + 73 1 4 0.090 47.08748 52.35196 50.26341 0 0 0 + 74 1 4 0.090 49.16067 52.81305 51.41238 0 0 0 + 75 1 4 0.090 49.73705 53.67062 50.00155 0 0 0 + 76 1 4 0.090 47.18593 54.84215 53.71488 0 0 0 + 77 1 4 0.090 48.69939 53.91624 53.49408 0 0 0 + 78 1 4 0.090 47.19749 53.18294 52.76264 0 0 0 + 79 1 5 -0.470 48.34472 55.71775 47.80498 0 0 0 + 80 1 2 -0.110 49.37792 56.51754 47.29492 0 0 0 + 81 1 10 0.310 47.51777 56.11617 48.19410 0 0 0 + 82 1 4 0.090 50.41495 56.13038 47.38980 0 0 0 + 83 1 4 0.090 49.23515 57.51193 47.76940 0 0 0 + 84 1 4 0.090 49.28612 56.52094 46.18773 0 0 0 + 85 2 13 -0.834 52.28049 45.72878 41.48140 -1 0 1 + 86 2 14 0.417 51.97210 46.07066 40.64218 -1 0 1 + 87 2 14 0.417 52.43689 44.79855 41.31868 -1 0 1 + 88 3 13 -0.834 43.84472 45.66062 47.17660 -2 -1 -1 + 89 3 14 0.417 43.42120 44.88337 46.81226 -2 -1 -1 + 90 3 14 0.417 44.31099 46.04907 46.43636 -2 -1 -1 + 91 4 13 -0.834 51.27805 50.25403 54.67397 0 0 -1 + 92 4 14 0.417 50.81295 50.23728 53.83753 0 0 -1 + 93 4 14 0.417 52.00273 49.63953 54.55795 0 0 -1 + 94 5 13 -0.834 44.71976 53.72011 56.43834 -1 0 -1 + 95 5 14 0.417 44.56050 53.84218 55.50241 -1 0 -1 + 96 5 14 0.417 44.91937 52.78829 56.52828 -1 0 -1 + 97 6 13 -0.834 37.07074 62.07204 53.35752 -1 -1 -1 + 98 6 14 0.417 64.17057 61.77089 52.49043 -2 -1 -1 + 99 6 14 0.417 37.90147 62.52273 53.20573 -1 -1 -1 + 100 7 13 -0.834 38.31817 66.10834 49.17406 0 -1 0 + 101 7 14 0.417 37.39300 65.93985 48.99534 0 -1 0 + 102 7 14 0.417 38.36506 66.20528 50.12520 0 -1 0 + 103 8 13 -0.834 60.90915 45.97690 35.53863 -1 -1 1 + 104 8 14 0.417 61.19898 46.87819 35.39745 -1 -1 1 + 105 8 14 0.417 59.98680 45.97855 35.28269 -1 -1 1 + 106 9 13 -0.834 54.33913 64.47210 51.00391 -1 -2 0 + 107 9 14 0.417 54.43191 63.71377 50.42724 -1 -2 0 + 108 9 14 0.417 55.16289 64.94980 50.90662 -1 -2 0 + 109 10 13 -0.834 44.58017 54.03749 53.84708 1 0 -1 + 110 10 14 0.417 43.87040 54.43768 53.34476 1 0 -1 + 111 10 14 0.417 45.02999 53.47261 53.21873 1 0 -1 + 112 11 13 -0.834 45.48693 52.12363 34.38241 0 -1 1 + 113 11 14 0.417 45.46898 52.67450 33.59981 0 -1 1 + 114 11 14 0.417 44.61476 52.22113 34.76457 0 -1 1 + 115 12 13 -0.834 60.15770 61.68799 54.74753 1 0 -2 + 116 12 14 0.417 59.23977 61.46439 54.59378 1 0 -2 + 117 12 14 0.417 60.43785 61.08922 55.43980 1 0 -2 + 118 13 13 -0.834 60.74732 66.72156 42.80906 1 -2 0 + 119 13 14 0.417 60.34713 66.21969 42.09898 1 -2 0 + 120 13 14 0.417 60.92444 66.07344 43.49082 1 -2 0 + 121 14 13 -0.834 60.82245 64.17281 50.54212 0 0 0 + 122 14 14 0.417 61.43571 64.88448 50.35863 0 0 0 + 123 14 14 0.417 60.87804 64.04633 51.48930 0 0 0 + 124 15 13 -0.834 36.92704 63.01353 56.05215 0 -1 0 + 125 15 14 0.417 37.10744 62.17054 56.46815 0 -1 0 + 126 15 14 0.417 64.06237 62.79109 55.15157 -1 -1 0 + 127 16 13 -0.834 48.35559 58.70568 56.14001 1 0 0 + 128 16 14 0.417 48.11655 59.48087 55.63191 1 0 0 + 129 16 14 0.417 47.93212 58.83502 56.98865 1 0 0 + 130 17 13 -0.834 58.14651 57.18542 51.08241 0 -1 -1 + 131 17 14 0.417 57.88523 56.72609 51.88052 0 -1 -1 + 132 17 14 0.417 57.35121 57.63116 50.79076 0 -1 -1 + 133 18 13 -0.834 58.09837 59.68005 36.16995 -1 0 0 + 134 18 14 0.417 58.25901 58.76822 36.41283 -1 0 0 + 135 18 14 0.417 58.56239 60.19049 36.83355 -1 0 0 + 136 19 13 -0.834 52.29019 60.51169 50.55611 0 -2 1 + 137 19 14 0.417 52.61972 60.01708 51.30645 0 -2 1 + 138 19 14 0.417 52.55621 59.99722 49.79401 0 -2 1 + 139 20 13 -0.834 41.36642 50.33705 42.98530 0 -1 -1 + 140 20 14 0.417 41.27846 50.09969 43.90844 0 -1 -1 + 141 20 14 0.417 40.99321 51.21659 42.92708 0 -1 -1 + 142 21 13 -0.834 53.76920 67.02645 32.18667 -1 0 1 + 143 21 14 0.417 53.59447 67.18509 31.25901 -1 0 1 + 144 21 14 0.417 54.65308 67.36647 32.32596 -1 0 1 + 145 22 13 -0.834 57.83691 45.33663 46.94671 0 0 -2 + 146 22 14 0.417 57.36287 45.59552 46.15647 0 0 -2 + 147 22 14 0.417 58.62995 44.91017 46.62197 0 0 -2 + 148 23 13 -0.834 60.34518 45.83000 45.57964 -1 0 0 + 149 23 14 0.417 60.61871 44.93757 45.79176 -1 0 0 + 150 23 14 0.417 61.09971 46.21212 45.13141 -1 0 0 + 151 24 13 -0.834 55.97902 46.85046 56.80163 0 1 1 + 152 24 14 0.417 56.57528 46.69952 30.16370 0 1 2 + 153 24 14 0.417 55.81156 47.79276 56.81850 0 1 1 + 154 25 13 -0.834 57.54668 45.52135 31.46139 -1 0 1 + 155 25 14 0.417 58.36291 46.00311 31.32743 -1 0 1 + 156 25 14 0.417 57.54151 45.31312 32.39566 -1 0 1 + 157 26 13 -0.834 58.03029 52.86783 46.33564 -1 -1 0 + 158 26 14 0.417 58.13662 52.56730 47.23820 -1 -1 0 + 159 26 14 0.417 58.81317 52.55269 45.88396 -1 -1 0 + 160 27 13 -0.834 62.89253 60.86549 46.75131 -2 -1 0 + 161 27 14 0.417 63.83924 60.74010 46.81653 -2 -1 0 + 162 27 14 0.417 62.51896 60.12788 47.23361 -2 -1 0 + 163 28 13 -0.834 43.29171 48.58106 31.82206 -1 0 2 + 164 28 14 0.417 43.07532 49.46362 32.12290 -1 0 2 + 165 28 14 0.417 43.82286 48.21072 32.52701 -1 0 2 + 166 29 13 -0.834 64.19867 44.17673 45.81391 -1 1 -1 + 167 29 14 0.417 63.72986 44.44010 45.02202 -1 1 -1 + 168 29 14 0.417 37.02069 43.24876 45.68087 0 1 -1 + 169 30 13 -0.834 50.42749 42.01163 53.60484 0 2 0 + 170 30 14 0.417 51.03177 41.90084 52.87081 0 2 0 + 171 30 14 0.417 50.77279 42.76181 54.08882 0 2 0 + 172 31 13 -0.834 38.63739 61.71113 49.95150 1 0 0 + 173 31 14 0.417 38.55432 62.15607 49.10808 1 0 0 + 174 31 14 0.417 37.81718 61.22751 50.04950 1 0 0 + 175 32 13 -0.834 61.47262 53.02922 33.08309 -1 -1 0 + 176 32 14 0.417 61.21894 52.67931 33.93717 -1 -1 0 + 177 32 14 0.417 61.89351 53.86564 33.28182 -1 -1 0 + 178 33 13 -0.834 54.44545 60.06011 48.63522 -1 0 1 + 179 33 14 0.417 54.80032 60.94424 48.72810 -1 0 1 + 180 33 14 0.417 54.09041 60.03614 47.74662 -1 0 1 + 181 34 13 -0.834 56.34364 60.90201 52.60838 -1 -1 0 + 182 34 14 0.417 56.48857 60.19161 53.23333 -1 -1 0 + 183 34 14 0.417 56.17362 61.67024 53.15351 -1 -1 0 + 184 35 13 -0.834 56.05881 51.84328 55.76103 -1 0 0 + 185 35 14 0.417 55.59060 51.75146 54.93121 -1 0 0 + 186 35 14 0.417 55.46974 52.35732 56.31335 -1 0 0 + 187 36 13 -0.834 39.00621 42.74743 30.97845 0 0 1 + 188 36 14 0.417 39.67620 42.11390 30.72152 0 0 1 + 189 36 14 0.417 39.43456 43.29673 31.63499 0 0 1 + 190 37 13 -0.834 46.77585 55.39774 30.24026 0 1 0 + 191 37 14 0.417 46.10274 54.90237 29.77360 0 1 0 + 192 37 14 0.417 46.39626 56.26890 30.35527 0 1 0 + 193 38 13 -0.834 45.10722 57.60431 31.54688 -1 0 0 + 194 38 14 0.417 44.80783 58.50032 31.70105 -1 0 0 + 195 38 14 0.417 44.44237 57.22463 30.97238 -1 0 0 + 196 39 13 -0.834 43.94230 46.99244 34.45668 -2 1 1 + 197 39 14 0.417 44.62010 46.49140 34.00306 -2 1 1 + 198 39 14 0.417 44.38150 47.79794 34.72964 -2 1 1 + 199 40 13 -0.834 51.39443 50.96507 34.69072 -1 1 0 + 200 40 14 0.417 51.18729 50.42829 35.45570 -1 1 0 + 201 40 14 0.417 51.33198 51.86665 35.00616 -1 1 0 + 202 41 13 -0.834 58.96398 48.19727 42.98856 -2 1 0 + 203 41 14 0.417 58.42587 48.90112 42.62618 -2 1 0 + 204 41 14 0.417 58.82383 48.25054 43.93397 -2 1 0 + 205 42 13 -0.834 62.89335 41.94260 37.40820 0 0 0 + 206 42 14 0.417 62.48690 41.07818 37.46980 0 0 0 + 207 42 14 0.417 63.01802 42.08284 36.46957 0 0 0 + 208 43 13 -0.834 54.19388 47.88689 36.24110 -1 0 1 + 209 43 14 0.417 54.32054 48.63090 35.65235 -1 0 1 + 210 43 14 0.417 53.24370 47.78935 36.30358 -1 0 1 + 211 44 13 -0.834 39.19734 57.40342 41.28495 0 0 -2 + 212 44 14 0.417 39.05428 57.72940 40.39641 0 0 -2 + 213 44 14 0.417 39.30846 56.45861 41.17895 0 0 -2 + 214 45 13 -0.834 52.85483 61.73749 54.63897 0 0 0 + 215 45 14 0.417 53.34938 62.52765 54.42147 0 0 0 + 216 45 14 0.417 53.01046 61.14656 53.90221 0 0 0 + 217 46 13 -0.834 47.09467 62.01384 35.02302 1 0 1 + 218 46 14 0.417 47.54527 61.47644 35.67448 1 0 1 + 219 46 14 0.417 47.10116 62.89626 35.39385 1 0 1 + 220 47 13 -0.834 46.80497 49.60334 37.05700 0 0 1 + 221 47 14 0.417 46.70216 49.79770 36.12540 0 0 1 + 222 47 14 0.417 45.91311 49.45393 37.37084 0 0 1 + 223 48 13 -0.834 63.21969 59.12311 54.43455 -1 -1 -1 + 224 48 14 0.417 63.94585 59.72833 54.28405 -1 -1 -1 + 225 48 14 0.417 63.63016 58.34481 54.81141 -1 -1 -1 + 226 49 13 -0.834 59.88416 59.64215 44.04914 -2 1 0 + 227 49 14 0.417 59.74255 59.14412 44.85422 -2 1 0 + 228 49 14 0.417 59.02635 60.01323 43.84248 -2 1 0 + 229 50 13 -0.834 40.50825 42.85328 50.81112 -1 1 0 + 230 50 14 0.417 40.34650 43.39801 51.58141 -1 1 0 + 231 50 14 0.417 39.63964 42.69867 50.43985 -1 1 0 + 232 51 13 -0.834 63.77522 64.97067 44.83010 -2 0 0 + 233 51 14 0.417 37.00507 65.56132 45.28388 -1 0 0 + 234 51 14 0.417 64.14243 64.88383 43.95041 -2 0 0 + 235 52 13 -0.834 62.47161 67.86189 47.38235 -1 0 -1 + 236 52 14 0.417 61.58819 67.64608 47.08360 -1 0 -1 + 237 52 14 0.417 62.79136 67.05596 47.78790 -1 0 -1 + 238 53 13 -0.834 43.90800 54.16107 50.35199 0 0 0 + 239 53 14 0.417 43.96769 53.24711 50.07388 0 0 0 + 240 53 14 0.417 43.72593 54.64554 49.54677 0 0 0 + 241 54 13 -0.834 63.46829 44.63390 34.73615 -1 1 1 + 242 54 14 0.417 62.63731 45.04623 34.97217 -1 1 1 + 243 54 14 0.417 64.11050 45.03645 35.32075 -1 1 1 + 244 55 13 -0.834 37.30679 58.22047 51.04345 0 0 0 + 245 55 14 0.417 38.18596 58.37862 50.69950 0 0 0 + 246 55 14 0.417 36.85723 59.06017 50.94824 0 0 0 + 247 56 13 -0.834 58.72649 42.45768 31.23820 -1 1 -1 + 248 56 14 0.417 59.43634 42.77561 30.68028 -1 1 -1 + 249 56 14 0.417 58.76581 41.50474 31.15690 -1 1 -1 + 250 57 13 -0.834 52.47101 42.85691 41.60986 0 1 -1 + 251 57 14 0.417 51.62289 42.91562 41.16997 0 1 -1 + 252 57 14 0.417 52.53109 41.94497 41.89448 0 1 -1 + 253 58 13 -0.834 60.63476 59.78356 56.53663 -2 -1 -1 + 254 58 14 0.417 60.87428 58.86269 56.43247 -2 -1 -1 + 255 58 14 0.417 59.72615 59.76269 56.83705 -2 -1 -1 + 256 59 13 -0.834 52.78127 57.47386 30.66786 -1 -1 0 + 257 59 14 0.417 52.55495 58.26092 30.17228 -1 -1 0 + 258 59 14 0.417 53.05203 56.84104 30.00267 -1 -1 0 + 259 60 13 -0.834 46.04848 57.65321 54.89998 0 3 -1 + 260 60 14 0.417 46.96883 57.71336 55.15607 0 3 -1 + 261 60 14 0.417 46.02768 57.98076 54.00081 0 3 -1 + 262 61 13 -0.834 60.39356 51.43705 35.66109 -1 1 -1 + 263 61 14 0.417 60.57739 52.08235 36.34376 -1 1 -1 + 264 61 14 0.417 59.59475 50.99860 35.95414 -1 1 -1 + 265 62 13 -0.834 50.32338 62.46972 35.65752 -1 0 2 + 266 62 14 0.417 51.24156 62.23287 35.52678 -1 0 2 + 267 62 14 0.417 49.89601 61.64851 35.90085 -1 0 2 + 268 63 13 -0.834 38.23983 45.11908 50.02773 0 1 0 + 269 63 14 0.417 38.61336 45.27494 50.89515 0 1 0 + 270 63 14 0.417 38.91224 45.42406 49.41856 0 1 0 + 271 64 13 -0.834 58.93720 57.36605 46.08362 -3 0 0 + 272 64 14 0.417 58.65753 56.63297 46.63190 -3 0 0 + 273 64 14 0.417 58.29914 58.05674 46.26268 -3 0 0 + 274 65 13 -0.834 47.99806 43.44789 47.43046 -1 0 0 + 275 65 14 0.417 48.39580 43.78289 46.62684 -1 0 0 + 276 65 14 0.417 47.85848 44.22523 47.97128 -1 0 0 + 277 66 13 -0.834 51.26744 52.05593 47.09995 -1 0 0 + 278 66 14 0.417 51.36736 52.09873 46.14894 -1 0 0 + 279 66 14 0.417 50.33779 52.22629 47.25149 -1 0 0 + 280 67 13 -0.834 39.06132 52.11517 46.39010 0 0 -1 + 281 67 14 0.417 38.53402 51.36282 46.65876 0 0 -1 + 282 67 14 0.417 39.47133 52.42190 47.19884 0 0 -1 + 283 68 13 -0.834 60.17907 58.95174 50.22759 -1 1 0 + 284 68 14 0.417 60.34080 59.56538 50.94420 -1 1 0 + 285 68 14 0.417 59.41497 58.44908 50.50992 -1 1 0 + 286 69 13 -0.834 40.47698 59.65154 34.92537 0 -1 1 + 287 69 14 0.417 40.89044 60.49055 35.12877 0 -1 1 + 288 69 14 0.417 41.17964 59.12336 34.54648 0 -1 1 + 289 70 13 -0.834 60.12998 66.51474 47.03971 -1 0 -1 + 290 70 14 0.417 59.26620 66.39701 47.43506 -1 0 -1 + 291 70 14 0.417 60.21358 65.78625 46.42443 -1 0 -1 + 292 71 13 -0.834 49.25986 47.27506 43.03372 -1 0 1 + 293 71 14 0.417 49.11810 48.15331 42.68041 -1 0 1 + 294 71 14 0.417 49.86162 47.40550 43.76662 -1 0 1 + 295 72 13 -0.834 41.48105 63.65699 31.84433 0 0 1 + 296 72 14 0.417 41.11022 64.48589 32.14713 0 0 1 + 297 72 14 0.417 40.89461 63.37379 31.14281 0 0 1 + 298 73 13 -0.834 47.82875 47.97039 54.56720 0 2 0 + 299 73 14 0.417 46.99167 47.50633 54.55352 0 2 0 + 300 73 14 0.417 47.60488 48.87558 54.35102 0 2 0 + 301 74 13 -0.834 62.36735 58.64445 48.35778 -2 1 0 + 302 74 14 0.417 62.88767 57.90867 48.68045 -2 1 0 + 303 74 14 0.417 61.65918 58.73544 48.99531 -2 1 0 + 304 75 13 -0.834 52.09508 65.08907 32.87560 0 0 0 + 305 75 14 0.417 52.67402 65.75058 32.49683 0 0 0 + 306 75 14 0.417 52.41855 64.97003 33.76859 0 0 0 + 307 76 13 -0.834 39.06932 41.62988 40.69498 1 1 0 + 308 76 14 0.417 39.51114 41.04433 40.08003 1 1 0 + 309 76 14 0.417 38.93584 42.43936 40.20186 1 1 0 + 310 77 13 -0.834 37.68325 49.50718 46.00750 0 2 0 + 311 77 14 0.417 64.11601 49.67107 45.91568 -1 2 0 + 312 77 14 0.417 37.90845 48.96991 45.24796 0 2 0 + 313 78 13 -0.834 53.00757 59.49351 52.98404 -2 1 -1 + 314 78 14 0.417 52.16721 59.28329 53.39127 -2 1 -1 + 315 78 14 0.417 53.61000 58.83023 53.32076 -2 1 -1 + 316 79 13 -0.834 51.89369 64.75001 56.68467 1 0 0 + 317 79 14 0.417 51.88079 65.63682 56.32462 1 0 0 + 318 79 14 0.417 52.40589 64.82531 30.11841 1 0 1 + 319 80 13 -0.834 48.43261 63.10155 32.63566 0 0 1 + 320 80 14 0.417 47.68021 63.01753 32.04993 0 0 1 + 321 80 14 0.417 48.13916 62.71424 33.46035 0 0 1 + 322 81 13 -0.834 62.41171 68.18251 30.67168 0 -1 2 + 323 81 14 0.417 61.79235 41.16145 30.03143 0 0 2 + 324 81 14 0.417 63.18314 67.94790 30.15584 0 -1 2 + 325 82 13 -0.834 42.57575 41.32197 37.66791 0 0 1 + 326 82 14 0.417 42.98116 41.36016 36.80164 0 0 1 + 327 82 14 0.417 42.32522 42.22654 37.85569 0 0 1 + 328 83 13 -0.834 50.17315 67.44398 36.91606 0 -2 0 + 329 83 14 0.417 50.08765 67.03449 37.77701 0 -2 0 + 330 83 14 0.417 50.35347 66.71621 36.32101 0 -2 0 + 331 84 13 -0.834 39.70163 60.45247 40.03790 0 -2 -1 + 332 84 14 0.417 38.85282 60.01540 40.10676 0 -2 -1 + 333 84 14 0.417 40.20579 60.11563 40.77858 0 -2 -1 + 334 85 13 -0.834 51.74323 42.80814 51.33239 0 0 -1 + 335 85 14 0.417 52.44810 43.22892 51.82466 0 0 -1 + 336 85 14 0.417 51.80961 43.17998 50.45286 0 0 -1 + 337 86 13 -0.834 51.34695 47.68316 36.38089 0 0 1 + 338 86 14 0.417 50.77701 46.92707 36.52138 0 0 1 + 339 86 14 0.417 51.27109 47.87031 35.44523 0 0 1 + 340 87 13 -0.834 62.66950 50.66085 43.15883 -2 0 0 + 341 87 14 0.417 63.57796 50.36318 43.11051 -2 0 0 + 342 87 14 0.417 62.24654 50.26548 42.39659 -2 0 0 + 343 88 13 -0.834 46.37996 60.13914 31.06428 -2 -1 1 + 344 88 14 0.417 46.89125 59.89673 31.83632 -2 -1 1 + 345 88 14 0.417 45.51811 60.37092 31.41028 -2 -1 1 + 346 89 13 -0.834 50.23251 41.17559 46.18435 0 1 2 + 347 89 14 0.417 49.40509 68.16142 45.89628 0 0 2 + 348 89 14 0.417 50.55747 67.94506 46.85395 0 0 2 + 349 90 13 -0.834 56.10446 66.70018 42.60390 0 -2 1 + 350 90 14 0.417 56.27454 67.42915 42.00732 0 -2 1 + 351 90 14 0.417 56.27819 67.05729 43.47483 0 -2 1 + 352 91 13 -0.834 55.53824 48.43866 51.97225 -1 0 1 + 353 91 14 0.417 56.26440 48.96682 52.30388 -1 0 1 + 354 91 14 0.417 55.26306 48.88494 51.17140 -1 0 1 + 355 92 13 -0.834 37.88016 52.62502 33.55552 0 -1 0 + 356 92 14 0.417 37.58757 51.72397 33.41859 0 -1 0 + 357 92 14 0.417 38.51960 52.77804 32.85986 0 -1 0 + 358 93 13 -0.834 50.40592 66.14455 39.40035 -1 -2 -1 + 359 93 14 0.417 49.74974 66.37168 40.05920 -1 -2 -1 + 360 93 14 0.417 50.22642 65.22843 39.18876 -1 -2 -1 + 361 94 13 -0.834 59.56315 43.63477 50.02876 -1 0 0 + 362 94 14 0.417 60.08533 44.36640 50.35782 -1 0 0 + 363 94 14 0.417 60.10101 42.86112 50.19730 -1 0 0 + 364 95 13 -0.834 57.16125 61.75981 55.17964 0 0 -1 + 365 95 14 0.417 56.45534 61.68609 55.82189 0 0 -1 + 366 95 14 0.417 57.38335 62.69087 55.17297 0 0 -1 + 367 96 13 -0.834 54.81274 43.48714 43.13392 -1 2 1 + 368 96 14 0.417 53.88771 43.40698 42.90124 -1 2 1 + 369 96 14 0.417 54.97915 42.74512 43.71525 -1 2 1 + 370 97 13 -0.834 41.23040 49.49766 49.75568 0 -2 0 + 371 97 14 0.417 40.54278 49.43865 49.09241 0 -2 0 + 372 97 14 0.417 41.81904 48.76959 49.55653 0 -2 0 + 373 98 13 -0.834 54.20957 45.39084 54.97428 -1 0 0 + 374 98 14 0.417 54.66721 46.06623 55.47493 -1 0 0 + 375 98 14 0.417 53.74016 44.87996 55.63374 -1 0 0 + 376 99 13 -0.834 61.27515 64.38553 39.98716 -1 0 1 + 377 99 14 0.417 61.56153 64.23410 40.88787 -1 0 1 + 378 99 14 0.417 60.44736 63.91029 39.91542 -1 0 1 + 379 100 13 -0.834 55.67284 58.14856 42.21767 -1 1 2 + 380 100 14 0.417 55.46369 57.24253 42.44485 -1 1 2 + 381 100 14 0.417 56.62771 58.19397 42.26677 -1 1 2 + 382 101 13 -0.834 43.66528 51.07118 53.71174 0 0 0 + 383 101 14 0.417 42.87715 50.89079 53.19934 0 0 0 + 384 101 14 0.417 43.37793 51.68815 54.38481 0 0 0 + 385 102 13 -0.834 39.90899 44.53973 36.42818 0 2 0 + 386 102 14 0.417 39.84006 43.65427 36.07118 0 2 0 + 387 102 14 0.417 40.52179 44.98683 35.84438 0 2 0 + 388 103 13 -0.834 51.24695 66.96031 48.71611 -1 -1 1 + 389 103 14 0.417 50.88275 67.26607 49.54684 -1 -1 1 + 390 103 14 0.417 52.19366 66.95318 48.85726 -1 -1 1 + 391 104 13 -0.834 55.15911 56.17347 57.08906 -1 0 0 + 392 104 14 0.417 55.86241 55.65189 56.70232 -1 0 0 + 393 104 14 0.417 54.93977 55.71619 30.52949 -1 0 1 + 394 105 13 -0.834 37.33282 54.30424 56.96734 0 0 0 + 395 105 14 0.417 64.15558 54.97773 29.99806 -1 0 1 + 396 105 14 0.417 64.13467 53.88397 56.32293 -1 0 0 + 397 106 13 -0.834 53.07827 51.20543 32.31512 -1 0 1 + 398 106 14 0.417 52.39494 50.78813 31.79057 -1 0 1 + 399 106 14 0.417 52.65819 51.38698 33.15584 -1 0 1 + 400 107 13 -0.834 43.06086 51.65229 35.75926 1 1 1 + 401 107 14 0.417 42.70958 52.01746 36.57135 1 1 1 + 402 107 14 0.417 43.42908 50.80682 36.01586 1 1 1 + 403 108 13 -0.834 53.92253 56.24460 34.48089 0 0 1 + 404 108 14 0.417 53.22007 56.39276 35.11401 0 0 1 + 405 108 14 0.417 54.59075 55.76600 34.97147 0 0 1 + 406 109 13 -0.834 61.71524 66.84153 38.60005 -1 -1 0 + 407 109 14 0.417 61.25397 66.04877 38.87388 -1 -1 0 + 408 109 14 0.417 62.23260 67.09437 39.36467 -1 -1 0 + 409 110 13 -0.834 43.52824 62.78695 41.49939 0 -1 -1 + 410 110 14 0.417 43.61050 61.97218 41.00379 0 -1 -1 + 411 110 14 0.417 43.53140 63.47437 40.83330 0 -1 -1 + 412 111 13 -0.834 51.13822 55.54090 53.50461 0 1 -2 + 413 111 14 0.417 50.69587 56.38179 53.62064 0 1 -2 + 414 111 14 0.417 51.43262 55.54828 52.59383 0 1 -2 + 415 112 13 -0.834 46.94709 50.11761 31.92599 0 0 0 + 416 112 14 0.417 47.19652 51.02564 31.75423 0 0 0 + 417 112 14 0.417 46.57462 49.81059 31.09941 0 0 0 + 418 113 13 -0.834 47.96666 45.13049 44.46108 -1 2 -1 + 419 113 14 0.417 47.01871 45.24108 44.53489 -1 2 -1 + 420 113 14 0.417 48.26343 45.91034 43.99202 -1 2 -1 + 421 114 13 -0.834 44.43868 43.44849 32.90814 -1 -1 1 + 422 114 14 0.417 43.86055 43.24165 33.64245 -1 -1 1 + 423 114 14 0.417 45.31670 43.24154 33.22828 -1 -1 1 + 424 115 13 -0.834 61.07172 47.80130 53.14504 -1 1 -1 + 425 115 14 0.417 61.34864 48.71600 53.19864 -1 1 -1 + 426 115 14 0.417 60.72118 47.60538 54.01394 -1 1 -1 + 427 116 13 -0.834 51.38727 44.10864 54.92855 -1 0 -1 + 428 116 14 0.417 50.77962 44.80360 55.18160 -1 0 -1 + 429 116 14 0.417 52.05111 44.10744 55.61815 -1 0 -1 + 430 117 13 -0.834 41.05585 60.12319 49.44785 1 -1 0 + 431 117 14 0.417 41.72702 60.76812 49.67116 1 -1 0 + 432 117 14 0.417 40.24373 60.62784 49.40265 1 -1 0 + 433 118 13 -0.834 50.88548 68.33364 33.37284 -1 0 -1 + 434 118 14 0.417 50.48275 67.46671 33.32310 -1 0 -1 + 435 118 14 0.417 51.82702 68.16119 33.37343 -1 0 -1 + 436 119 13 -0.834 38.79644 59.29061 55.22446 1 1 -1 + 437 119 14 0.417 38.82887 59.83550 56.01077 1 1 -1 + 438 119 14 0.417 39.26097 59.79985 54.56028 1 1 -1 + 439 120 13 -0.834 56.31813 41.68729 51.11871 -2 0 -1 + 440 120 14 0.417 55.45155 41.35580 51.35412 -2 0 -1 + 441 120 14 0.417 56.14879 42.34135 50.44062 -2 0 -1 + 442 121 13 -0.834 45.53697 59.28154 47.22033 -1 0 -1 + 443 121 14 0.417 45.45062 59.55577 46.30733 -1 0 -1 + 444 121 14 0.417 46.00774 59.99977 47.64313 -1 0 -1 + 445 122 13 -0.834 60.47636 43.28130 46.20944 -1 0 -1 + 446 122 14 0.417 60.97762 42.59184 45.77396 -1 0 -1 + 447 122 14 0.417 59.72992 42.82584 46.59884 -1 0 -1 + 448 123 13 -0.834 58.49080 48.18289 45.77215 0 0 -1 + 449 123 14 0.417 58.74342 47.25991 45.74879 0 0 -1 + 450 123 14 0.417 58.17926 48.32386 46.66621 0 0 -1 + 451 124 13 -0.834 50.93473 56.12663 41.58575 -1 0 0 + 452 124 14 0.417 50.36171 56.05214 42.34885 -1 0 0 + 453 124 14 0.417 50.40135 56.57242 40.92771 -1 0 0 + 454 125 13 -0.834 60.55008 41.95542 56.22749 -1 0 -1 + 455 125 14 0.417 59.65163 41.78987 55.94175 -1 0 -1 + 456 125 14 0.417 61.09463 41.59967 55.52524 -1 0 -1 + 457 126 13 -0.834 58.58373 51.69338 48.78985 -1 1 0 + 458 126 14 0.417 58.38773 52.01803 49.66874 -1 1 0 + 459 126 14 0.417 58.66973 50.74614 48.89756 -1 1 0 + 460 127 13 -0.834 37.82769 45.69808 30.85100 0 1 3 + 461 127 14 0.417 38.37007 45.10637 31.37248 0 1 3 + 462 127 14 0.417 37.14646 45.99401 31.45481 0 1 3 + 463 128 13 -0.834 50.96455 60.06361 33.68049 0 0 0 + 464 128 14 0.417 51.72055 60.15430 34.26055 0 0 0 + 465 128 14 0.417 51.05673 60.77997 33.05234 0 0 0 + 466 129 13 -0.834 46.43413 68.11245 51.48833 -1 0 -1 + 467 129 14 0.417 46.82151 41.36005 50.86943 -1 1 -1 + 468 129 14 0.417 47.09847 67.43153 51.59433 -1 0 -1 + 469 130 13 -0.834 61.79997 47.41648 57.05141 -1 -1 0 + 470 130 14 0.417 62.68713 47.23872 56.73898 -1 -1 0 + 471 130 14 0.417 61.48917 46.57417 30.01195 -1 -1 1 + 472 131 13 -0.834 45.30689 46.58119 54.43763 0 1 -1 + 473 131 14 0.417 45.67282 45.73922 54.70859 0 1 -1 + 474 131 14 0.417 44.46622 46.35973 54.03705 0 1 -1 + 475 132 13 -0.834 62.60829 48.56385 49.02640 -1 1 0 + 476 132 14 0.417 62.44761 48.65968 48.08766 -1 1 0 + 477 132 14 0.417 62.98242 47.68753 49.11762 -1 1 0 + 478 133 13 -0.834 63.49107 56.77075 38.74961 -1 0 2 + 479 133 14 0.417 63.12281 56.39554 39.54952 -1 0 2 + 480 133 14 0.417 62.84612 57.42058 38.47033 -1 0 2 + 481 134 13 -0.834 50.74846 48.34849 33.46075 0 0 1 + 482 134 14 0.417 50.75342 49.30521 33.43086 0 0 1 + 483 134 14 0.417 50.91203 48.07929 32.55686 0 0 1 + 484 135 13 -0.834 44.40923 67.37148 56.42156 0 0 0 + 485 135 14 0.417 43.93400 67.78902 29.76856 0 0 1 + 486 135 14 0.417 44.94884 66.70468 56.84633 0 0 0 + 487 136 13 -0.834 44.25343 64.95349 43.22104 0 0 0 + 488 136 14 0.417 44.13229 64.08173 42.84472 0 0 0 + 489 136 14 0.417 44.01188 65.55470 42.51643 0 0 0 + 490 137 13 -0.834 46.68300 67.52863 32.69859 -1 -1 0 + 491 137 14 0.417 46.68369 68.22637 33.35389 -1 -1 0 + 492 137 14 0.417 47.60248 67.43099 32.45106 -1 -1 0 + 493 138 13 -0.834 57.25376 61.01737 33.86507 -2 1 1 + 494 138 14 0.417 57.40827 60.52366 34.67043 -2 1 1 + 495 138 14 0.417 57.35792 60.37307 33.16488 -2 1 1 + 496 139 13 -0.834 57.39946 54.16835 56.70699 0 -1 -1 + 497 139 14 0.417 57.31939 53.23092 56.53080 0 -1 -1 + 498 139 14 0.417 57.32300 54.24112 30.28699 0 -1 0 + 499 140 13 -0.834 52.36697 48.69246 41.49227 -1 1 0 + 500 140 14 0.417 51.78735 47.93629 41.40021 -1 1 0 + 501 140 14 0.417 53.21603 48.31702 41.72547 -1 1 0 + 502 141 13 -0.834 54.69200 49.57915 45.55048 0 0 -1 + 503 141 14 0.417 54.95958 48.66911 45.42211 0 0 -1 + 504 141 14 0.417 55.28513 50.08439 44.99446 0 0 -1 + 505 142 13 -0.834 37.26724 53.17896 42.50469 1 -1 -1 + 506 142 14 0.417 63.93194 53.34801 43.12782 0 -1 -1 + 507 142 14 0.417 36.94831 52.45044 41.97199 1 -1 -1 + 508 143 13 -0.834 42.56283 66.92379 33.49577 -1 0 1 + 509 143 14 0.417 41.71356 66.58931 33.20750 -1 0 1 + 510 143 14 0.417 43.03645 66.14842 33.79697 -1 0 1 + 511 144 13 -0.834 61.43331 45.62855 38.97695 0 1 1 + 512 144 14 0.417 61.20190 45.98514 39.83458 0 1 1 + 513 144 14 0.417 62.31351 45.96414 38.80708 0 1 1 + 514 145 13 -0.834 49.37935 56.26031 56.72879 1 1 0 + 515 145 14 0.417 49.03977 57.11146 56.45221 1 1 0 + 516 145 14 0.417 48.60052 55.75658 56.96530 1 1 0 + 517 146 13 -0.834 63.13959 56.23999 49.92079 -1 0 -1 + 518 146 14 0.417 63.72474 55.58123 50.29478 -1 0 -1 + 519 146 14 0.417 63.40966 57.06154 50.33112 -1 0 -1 + 520 147 13 -0.834 58.55937 66.56287 54.17345 -1 0 0 + 521 147 14 0.417 59.28260 66.81524 53.59945 -1 0 0 + 522 147 14 0.417 58.28559 67.38088 54.58834 -1 0 0 + 523 148 13 -0.834 55.49901 62.14366 46.01274 -1 0 -1 + 524 148 14 0.417 55.08057 61.57956 45.36238 -1 0 -1 + 525 148 14 0.417 55.53371 63.00495 45.59652 -1 0 -1 + 526 149 13 -0.834 48.09589 47.38106 38.97384 0 1 0 + 527 149 14 0.417 47.94178 48.02346 38.28116 0 1 0 + 528 149 14 0.417 47.26125 47.32494 39.43910 0 1 0 + 529 150 13 -0.834 40.27661 53.03711 48.83757 0 0 0 + 530 150 14 0.417 40.32476 53.91333 49.21992 0 0 0 + 531 150 14 0.417 41.18363 52.81848 48.62365 0 0 0 + 532 151 13 -0.834 36.85277 41.68065 44.81488 1 2 0 + 533 151 14 0.417 36.95709 68.34807 45.45504 1 1 0 + 534 151 14 0.417 37.14062 41.29651 43.98673 1 2 0 + 535 152 13 -0.834 37.74881 65.81650 33.58759 -1 0 1 + 536 152 14 0.417 37.69052 65.99217 34.52673 -1 0 1 + 537 152 14 0.417 37.02193 65.21970 33.40951 -1 0 1 + 538 153 13 -0.834 63.01838 46.13766 43.99274 -2 0 0 + 539 153 14 0.417 62.72780 46.33504 43.10232 -2 0 0 + 540 153 14 0.417 63.75125 46.73459 44.14387 -2 0 0 + 541 154 13 -0.834 43.83288 53.92104 38.64974 0 2 1 + 542 154 14 0.417 44.46072 53.30394 39.02556 0 2 1 + 543 154 14 0.417 44.17373 54.10726 37.77488 0 2 1 + 544 155 13 -0.834 54.48021 41.30441 45.39416 1 1 -2 + 545 155 14 0.417 54.42996 67.86451 44.88861 1 0 -2 + 546 155 14 0.417 54.84291 41.03852 46.23914 1 1 -2 + 547 156 13 -0.834 51.26407 63.10699 50.73012 0 0 -2 + 548 156 14 0.417 51.64016 62.23294 50.83411 0 0 -2 + 549 156 14 0.417 51.56733 63.39797 49.87011 0 0 -2 + 550 157 13 -0.834 54.61161 63.67709 53.56970 0 1 1 + 551 157 14 0.417 55.55339 63.81655 53.47054 0 1 1 + 552 157 14 0.417 54.24805 63.87070 52.70565 0 1 1 + 553 158 13 -0.834 46.57444 42.69363 30.13287 -1 0 1 + 554 158 14 0.417 45.93025 42.28051 30.70783 -1 0 1 + 555 158 14 0.417 47.27305 42.04459 30.04973 -1 0 1 + 556 159 13 -0.834 37.92811 50.36816 42.31352 1 1 0 + 557 159 14 0.417 38.62401 50.90050 42.69899 1 1 0 + 558 159 14 0.417 38.11553 50.37135 41.37484 1 1 0 + 559 160 13 -0.834 40.53318 48.69302 33.52502 -1 0 0 + 560 160 14 0.417 40.10720 48.55075 32.67972 -1 0 0 + 561 160 14 0.417 41.22323 49.33057 33.34173 -1 0 0 + 562 161 13 -0.834 58.20095 45.48345 42.83426 1 0 -1 + 563 161 14 0.417 58.76156 46.25356 42.92849 1 0 -1 + 564 161 14 0.417 58.80813 44.74348 42.83158 1 0 -1 + 565 162 13 -0.834 59.85909 67.06752 31.43173 -1 1 0 + 566 162 14 0.417 59.95062 66.12180 31.54782 -1 1 0 + 567 162 14 0.417 60.75672 67.38534 31.33437 -1 1 0 + 568 163 13 -0.834 48.48808 51.17807 55.92072 -2 0 0 + 569 163 14 0.417 49.24951 51.62602 55.55219 -2 0 0 + 570 163 14 0.417 48.81105 50.30745 56.15303 -2 0 0 + 571 164 13 -0.834 47.51169 45.69616 48.99410 0 0 -1 + 572 164 14 0.417 48.36822 46.03425 48.73281 0 0 -1 + 573 164 14 0.417 47.56201 45.62598 49.94740 0 0 -1 + 574 165 13 -0.834 51.10678 64.23082 47.99167 0 -2 -1 + 575 165 14 0.417 51.33188 65.16116 47.98611 0 -2 -1 + 576 165 14 0.417 50.15837 64.21415 48.12002 0 -2 -1 + 577 166 13 -0.834 42.97263 56.29674 30.18230 0 0 0 + 578 166 14 0.417 42.45756 55.50818 30.01170 0 0 0 + 579 166 14 0.417 42.79675 56.86516 56.80386 0 0 -1 + 580 167 13 -0.834 44.45917 53.64338 31.85015 -1 0 0 + 581 167 14 0.417 44.64093 54.17218 31.07325 -1 0 0 + 582 167 14 0.417 43.66299 53.15965 31.63030 -1 0 0 + 583 168 13 -0.834 52.20677 49.92062 48.65330 1 0 0 + 584 168 14 0.417 52.24176 50.63538 49.28902 1 0 0 + 585 168 14 0.417 52.01918 50.35058 47.81890 1 0 0 + 586 169 13 -0.834 45.94013 51.43638 56.49888 0 0 0 + 587 169 14 0.417 46.89200 51.34153 56.53372 0 0 0 + 588 169 14 0.417 45.60504 50.66051 56.94833 0 0 0 + 589 170 13 -0.834 45.61845 41.38709 48.05698 1 0 0 + 590 170 14 0.417 46.42604 41.83441 47.80406 1 0 0 + 591 170 14 0.417 45.31743 41.85685 48.83477 1 0 0 + 592 171 13 -0.834 47.68232 42.84819 52.92728 0 1 0 + 593 171 14 0.417 47.61830 42.41414 52.07654 0 1 0 + 594 171 14 0.417 48.39202 42.39011 53.37758 0 1 0 + 595 172 13 -0.834 37.01774 65.84057 36.39542 1 -1 0 + 596 172 14 0.417 36.84918 65.13561 37.02061 1 -1 0 + 597 172 14 0.417 63.52368 66.19949 36.19938 0 -1 0 + 598 173 13 -0.834 51.52891 58.65207 39.31760 -1 -3 -1 + 599 173 14 0.417 51.57384 59.35596 39.96472 -1 -3 -1 + 600 173 14 0.417 51.00435 59.01522 38.60403 -1 -3 -1 + 601 174 13 -0.834 49.06578 54.25781 44.33488 0 -1 -1 + 602 174 14 0.417 48.81980 55.18018 44.26437 0 -1 -1 + 603 174 14 0.417 49.41695 54.17018 45.22104 0 -1 -1 + 604 175 13 -0.834 47.03819 42.38557 34.31948 -1 -1 0 + 605 175 14 0.417 47.39035 41.82883 35.01393 -1 -1 0 + 606 175 14 0.417 47.47024 43.23019 34.44673 -1 -1 0 + 607 176 13 -0.834 41.64025 43.65472 38.33192 0 1 0 + 608 176 14 0.417 41.17224 44.02383 37.58295 0 1 0 + 609 176 14 0.417 41.46027 44.26142 39.05008 0 1 0 + 610 177 13 -0.834 61.41261 58.14241 37.49312 -2 0 0 + 611 177 14 0.417 61.24368 59.06676 37.67551 -2 0 0 + 612 177 14 0.417 60.57871 57.80631 37.16465 -2 0 0 + 613 178 13 -0.834 48.58355 55.60536 32.34542 0 -2 -2 + 614 178 14 0.417 48.05292 55.64371 31.54969 0 -2 -2 + 615 178 14 0.417 49.00004 56.46561 32.39784 0 -2 -2 + 616 179 13 -0.834 51.18618 52.33768 44.26866 0 -1 0 + 617 179 14 0.417 50.47419 52.97535 44.21659 0 -1 0 + 618 179 14 0.417 51.18053 51.90159 43.41657 0 -1 0 + 619 180 13 -0.834 63.77008 46.64985 53.45124 -2 0 -1 + 620 180 14 0.417 37.25943 46.94040 53.14955 -1 0 -1 + 621 180 14 0.417 63.15834 47.28506 53.07904 -2 0 -1 + 622 181 13 -0.834 37.28071 56.79400 31.30862 1 1 0 + 623 181 14 0.417 37.34297 57.68998 31.63963 1 1 0 + 624 181 14 0.417 36.99543 56.89301 30.40030 1 1 0 + 625 182 13 -0.834 38.98742 57.66608 44.07685 1 0 1 + 626 182 14 0.417 39.04152 57.61214 43.12270 1 0 1 + 627 182 14 0.417 39.46043 56.89430 44.38805 1 0 1 + 628 183 13 -0.834 64.13749 51.25767 48.28997 0 -1 0 + 629 183 14 0.417 64.05120 52.19840 48.13566 0 -1 0 + 630 183 14 0.417 63.26932 50.90255 48.09918 0 -1 0 + 631 184 13 -0.834 41.02949 42.14202 43.02064 0 0 -1 + 632 184 14 0.417 40.60130 42.82178 43.54104 0 0 -1 + 633 184 14 0.417 40.43829 41.99723 42.28189 0 0 -1 + 634 185 13 -0.834 49.87332 48.21836 52.83028 0 1 0 + 635 185 14 0.417 49.13733 48.15035 53.43849 0 1 0 + 636 185 14 0.417 50.32176 47.37567 52.90100 0 1 0 + 637 186 13 -0.834 56.06860 48.51217 38.12813 -1 1 0 + 638 186 14 0.417 56.55702 47.73454 38.39826 -1 1 0 + 639 186 14 0.417 55.52690 48.21357 37.39762 -1 1 0 + 640 187 13 -0.834 54.22718 59.47740 40.22374 -1 0 1 + 641 187 14 0.417 53.93839 59.03820 39.42377 -1 0 1 + 642 187 14 0.417 54.74005 58.81629 40.68868 -1 0 1 + 643 188 13 -0.834 60.09461 46.88146 32.04739 -1 0 -1 + 644 188 14 0.417 60.91535 46.43611 31.83683 -1 0 -1 + 645 188 14 0.417 60.13630 47.02716 32.99253 -1 0 -1 + 646 189 13 -0.834 45.18646 44.57845 41.54076 0 0 0 + 647 189 14 0.417 44.28239 44.89208 41.51774 0 0 0 + 648 189 14 0.417 45.34481 44.23786 40.66033 0 0 0 + 649 190 13 -0.834 42.47099 45.68692 31.56356 1 0 1 + 650 190 14 0.417 43.26152 45.18821 31.76995 1 0 1 + 651 190 14 0.417 42.78187 46.58070 31.41951 1 0 1 + 652 191 13 -0.834 41.23413 47.67043 41.85221 0 1 0 + 653 191 14 0.417 41.04508 48.58329 42.06946 0 1 0 + 654 191 14 0.417 40.84394 47.54379 40.98737 0 1 0 + 655 192 13 -0.834 48.84750 60.39708 36.57115 0 0 0 + 656 192 14 0.417 48.57626 59.48478 36.46920 0 0 0 + 657 192 14 0.417 48.59448 60.62409 37.46597 0 0 0 + 658 193 13 -0.834 56.78263 43.55464 49.12966 -1 0 -1 + 659 193 14 0.417 56.56851 44.25428 48.51250 -1 0 -1 + 660 193 14 0.417 57.66563 43.76469 49.43365 -1 0 -1 + 661 194 13 -0.834 59.52236 53.66894 43.24587 -1 2 0 + 662 194 14 0.417 59.44365 54.61174 43.10041 -1 2 0 + 663 194 14 0.417 59.73284 53.58637 44.17598 -1 2 0 + 664 195 13 -0.834 63.61393 61.54696 40.57053 -1 -1 1 + 665 195 14 0.417 36.90989 60.94398 40.24291 0 -1 1 + 666 195 14 0.417 63.74510 61.55794 41.51864 -1 -1 1 + 667 196 13 -0.834 54.91742 43.16160 33.69639 0 0 -1 + 668 196 14 0.417 55.84062 43.16106 33.94925 0 0 -1 + 669 196 14 0.417 54.73416 44.07060 33.45898 0 0 -1 + 670 197 13 -0.834 41.09699 64.92982 48.38401 0 -1 -1 + 671 197 14 0.417 40.19042 64.83711 48.67687 0 -1 -1 + 672 197 14 0.417 41.27055 64.13206 47.88433 0 -1 -1 + 673 198 13 -0.834 49.09688 60.43369 49.80048 0 0 -1 + 674 198 14 0.417 49.75346 61.03633 50.14971 0 0 -1 + 675 198 14 0.417 49.51718 59.57440 49.83534 0 0 -1 + 676 199 13 -0.834 45.06873 45.25146 44.50830 0 1 0 + 677 199 14 0.417 45.08807 45.11881 43.56053 0 1 0 + 678 199 14 0.417 44.41198 44.63084 44.82413 0 1 0 + 679 200 13 -0.834 37.63886 45.88962 36.45768 0 0 2 + 680 200 14 0.417 38.32892 45.23766 36.58017 0 0 2 + 681 200 14 0.417 37.24627 45.98938 37.32495 0 0 2 + 682 201 13 -0.834 45.25770 47.01692 51.04211 -1 0 -2 + 683 201 14 0.417 45.49830 47.82868 50.59555 -1 0 -2 + 684 201 14 0.417 46.08295 46.68269 51.39354 -1 0 -2 + 685 202 13 -0.834 63.44567 60.77839 50.98507 -2 0 0 + 686 202 14 0.417 62.95029 60.46072 51.74001 -2 0 0 + 687 202 14 0.417 62.77774 61.08133 50.36998 -2 0 0 + 688 203 13 -0.834 48.00038 59.99003 33.31045 0 1 1 + 689 203 14 0.417 48.92391 59.89924 33.54518 0 1 1 + 690 203 14 0.417 47.68314 60.70831 33.85788 0 1 1 + 691 204 13 -0.834 51.29617 53.45952 36.10138 -1 -1 1 + 692 204 14 0.417 50.79623 53.20605 36.87731 -1 -1 1 + 693 204 14 0.417 51.41983 54.40421 36.19363 -1 -1 1 + 694 205 13 -0.834 48.55343 45.13540 34.47517 0 0 0 + 695 205 14 0.417 48.10547 45.97105 34.34382 0 0 0 + 696 205 14 0.417 49.13373 45.28879 35.22081 0 0 0 + 697 206 13 -0.834 48.34844 61.02741 54.77908 1 -1 -1 + 698 206 14 0.417 47.77364 61.75290 55.02301 1 -1 -1 + 699 206 14 0.417 49.14675 61.17253 55.28690 1 -1 -1 + 700 207 13 -0.834 38.97661 48.73541 31.27301 2 -1 0 + 701 207 14 0.417 38.86774 47.99634 30.67453 2 -1 0 + 702 207 14 0.417 38.60214 49.48112 30.80404 2 -1 0 + 703 208 13 -0.834 56.37687 61.69299 40.12439 0 -1 -1 + 704 208 14 0.417 56.35009 61.71409 39.16778 0 -1 -1 + 705 208 14 0.417 55.62486 61.15580 40.37371 0 -1 -1 + 706 209 13 -0.834 47.86700 41.38854 36.76722 -1 0 0 + 707 209 14 0.417 48.79854 41.26117 36.94678 -1 0 0 + 708 209 14 0.417 47.57553 42.00602 37.43804 -1 0 0 + 709 210 13 -0.834 43.22089 60.92576 39.48904 -1 -1 0 + 710 210 14 0.417 42.70029 60.20976 39.85311 -1 -1 0 + 711 210 14 0.417 43.25319 60.74538 38.54954 -1 -1 0 + 712 211 13 -0.834 56.26248 49.03317 34.29585 -1 0 0 + 713 211 14 0.417 56.69244 49.86416 34.09381 -1 0 0 + 714 211 14 0.417 55.61194 48.92467 33.60212 -1 0 0 + 715 212 13 -0.834 47.52063 49.37901 51.21673 1 0 0 + 716 212 14 0.417 48.35964 48.95385 51.03909 1 0 0 + 717 212 14 0.417 47.47856 49.43746 52.17122 1 0 0 + 718 213 13 -0.834 62.35532 56.31018 41.33556 0 0 0 + 719 213 14 0.417 62.07506 57.22150 41.42032 0 0 0 + 720 213 14 0.417 62.92184 56.16192 42.09274 0 0 0 + 721 214 13 -0.834 61.09797 64.53756 45.11003 -1 0 1 + 722 214 14 0.417 61.11801 63.59600 44.93887 -1 0 1 + 723 214 14 0.417 61.95676 64.85132 44.82670 -1 0 1 + 724 215 13 -0.834 51.22661 62.08872 31.93454 0 0 0 + 725 215 14 0.417 51.98994 62.65586 32.04369 0 0 0 + 726 215 14 0.417 50.47877 62.65171 32.13456 0 0 0 + 727 216 13 -0.834 40.65443 48.64853 54.43476 0 0 -1 + 728 216 14 0.417 40.25608 47.97845 54.99023 0 0 -1 + 729 216 14 0.417 41.58025 48.64240 54.67776 0 0 -1 + 730 217 13 -0.834 39.34873 63.07587 52.07209 1 1 -1 + 731 217 14 0.417 39.17266 63.98076 51.81438 1 1 -1 + 732 217 14 0.417 39.29792 62.57948 51.25523 1 1 -1 + 733 218 13 -0.834 45.66307 65.90840 47.75613 -1 0 0 + 734 218 14 0.417 44.99427 65.52542 48.32381 -1 0 0 + 735 218 14 0.417 45.75913 66.80721 48.07102 -1 0 0 + 736 219 13 -0.834 45.83158 51.91442 38.93974 0 0 0 + 737 219 14 0.417 46.07939 51.87422 39.86344 0 0 0 + 738 219 14 0.417 45.49928 51.03877 38.74210 0 0 0 + 739 220 13 -0.834 58.03934 67.88594 44.36036 -1 1 -1 + 740 220 14 0.417 58.69084 68.22520 43.74661 -1 1 -1 + 741 220 14 0.417 58.24719 68.31309 45.19138 -1 1 -1 + 742 221 13 -0.834 57.23319 66.95459 30.42832 0 0 0 + 743 221 14 0.417 56.95316 66.93560 31.34345 0 0 0 + 744 221 14 0.417 58.18154 66.82998 30.46491 0 0 0 + 745 222 13 -0.834 60.87005 44.72970 53.74755 -1 0 -1 + 746 222 14 0.417 60.02694 44.42275 53.41412 -1 0 -1 + 747 222 14 0.417 61.31963 45.07903 52.97808 -1 0 -1 + 748 223 13 -0.834 50.61352 50.44308 31.66369 0 -1 0 + 749 223 14 0.417 50.38691 49.95555 30.87173 0 -1 0 + 750 223 14 0.417 50.16704 51.28387 31.56391 0 -1 0 + 751 224 13 -0.834 42.70363 42.07925 34.73823 0 1 0 + 752 224 14 0.417 42.74630 41.15512 34.49249 0 1 0 + 753 224 14 0.417 41.77538 42.23983 34.90796 0 1 0 + 754 225 13 -0.834 50.34157 43.80796 44.49841 -1 1 0 + 755 225 14 0.417 49.44649 44.14718 44.50119 -1 1 0 + 756 225 14 0.417 50.24323 42.86994 44.66171 -1 1 0 + 757 226 13 -0.834 62.39528 64.92163 33.72829 -3 -1 1 + 758 226 14 0.417 61.94679 64.42233 34.41078 -3 -1 1 + 759 226 14 0.417 61.94061 64.68505 32.91986 -3 -1 1 + 760 227 13 -0.834 46.62188 47.13429 41.79430 0 1 1 + 761 227 14 0.417 46.21721 46.28415 41.62178 0 1 1 + 762 227 14 0.417 47.40198 46.92861 42.30946 0 1 1 + 763 228 13 -0.834 41.35469 54.31275 56.45453 0 0 -1 + 764 228 14 0.417 41.79769 53.47653 56.31055 0 0 -1 + 765 228 14 0.417 40.57273 54.26794 55.90425 0 0 -1 + 766 229 13 -0.834 48.43878 42.20000 49.94999 0 0 0 + 767 229 14 0.417 49.34431 42.29756 50.24447 0 0 0 + 768 229 14 0.417 48.41583 42.63350 49.09688 0 0 0 + 769 230 13 -0.834 37.29829 50.04209 33.34795 0 1 0 + 770 230 14 0.417 36.96213 49.51969 34.07619 0 1 0 + 771 230 14 0.417 37.98470 49.49933 32.96002 0 1 0 + 772 231 13 -0.834 58.91995 56.17895 33.02333 -1 0 0 + 773 231 14 0.417 59.83980 56.43785 32.96791 -1 0 0 + 774 231 14 0.417 58.89269 55.54120 33.73661 -1 0 0 + 775 232 13 -0.834 39.86900 65.81481 43.81866 0 0 -1 + 776 232 14 0.417 40.31483 64.99515 43.60502 0 0 -1 + 777 232 14 0.417 40.41298 66.21397 44.49762 0 0 -1 + 778 233 13 -0.834 62.71324 65.93556 51.55400 -1 0 0 + 779 233 14 0.417 62.38032 66.39597 52.32436 -1 0 0 + 780 233 14 0.417 63.52336 65.52245 51.85285 -1 0 0 + 781 234 13 -0.834 59.23324 49.58642 31.35843 0 0 0 + 782 234 14 0.417 59.28102 48.68976 31.69001 0 0 0 + 783 234 14 0.417 59.95115 50.04304 31.79700 0 0 0 + 784 235 13 -0.834 41.02310 67.21389 51.60243 0 0 0 + 785 235 14 0.417 41.77450 67.79064 51.74021 0 0 0 + 786 235 14 0.417 40.36922 67.76899 51.17753 0 0 0 + 787 236 13 -0.834 41.38918 62.43794 34.42449 0 0 1 + 788 236 14 0.417 41.26665 63.14612 33.79227 0 0 1 + 789 236 14 0.417 42.30454 62.51275 34.69423 0 0 1 + 790 237 13 -0.834 52.28796 56.01034 50.59905 0 -1 -1 + 791 237 14 0.417 53.14113 56.07317 51.02851 0 -1 -1 + 792 237 14 0.417 52.14509 55.07070 50.48548 0 -1 -1 + 793 238 13 -0.834 53.25204 66.52198 39.76351 0 -1 0 + 794 238 14 0.417 52.30774 66.44732 39.62571 0 -1 0 + 795 238 14 0.417 53.47725 67.38617 39.41895 0 -1 0 + 796 239 13 -0.834 59.77604 60.82055 48.12264 -1 -1 -1 + 797 239 14 0.417 59.80699 60.05926 48.70205 -1 -1 -1 + 798 239 14 0.417 58.96049 60.71611 47.63253 -1 -1 -1 + 799 240 13 -0.834 48.99693 51.07559 36.89084 0 -1 1 + 800 240 14 0.417 48.22315 50.55308 37.10175 0 -1 1 + 801 240 14 0.417 48.88824 51.30348 35.96753 0 -1 1 + 802 241 13 -0.834 50.67863 62.63916 55.60559 1 0 -2 + 803 241 14 0.417 51.43406 62.16856 55.25331 1 0 -2 + 804 241 14 0.417 51.05760 63.36945 56.09477 1 0 -2 + 805 242 13 -0.834 41.05301 64.77947 55.72335 1 -1 -1 + 806 242 14 0.417 41.95836 64.58666 55.96711 1 -1 -1 + 807 242 14 0.417 41.07998 65.67647 55.39035 1 -1 -1 + 808 243 13 -0.834 59.16096 63.30207 34.55147 0 -1 2 + 809 243 14 0.417 58.62636 62.51316 34.64131 0 -1 2 + 810 243 14 0.417 59.80830 63.23451 35.25333 0 -1 2 + 811 244 13 -0.834 59.86542 53.52546 55.50419 0 -1 -1 + 812 244 14 0.417 60.26921 53.79963 56.32761 0 -1 -1 + 813 244 14 0.417 58.96256 53.83773 55.56399 0 -1 -1 + 814 245 13 -0.834 56.48528 44.99075 44.65443 1 0 0 + 815 245 14 0.417 55.84854 44.49932 44.13551 1 0 0 + 816 245 14 0.417 57.18258 45.20803 44.03571 1 0 0 + 817 246 13 -0.834 37.25407 54.85866 36.86076 0 -1 -1 + 818 246 14 0.417 37.37951 55.31820 36.03050 0 -1 -1 + 819 246 14 0.417 36.91899 55.52805 37.45731 0 -1 -1 + 820 247 13 -0.834 54.42875 47.21339 48.23883 -1 -1 -1 + 821 247 14 0.417 54.60966 48.13349 48.43097 -1 -1 -1 + 822 247 14 0.417 54.44092 47.16092 47.28312 -1 -1 -1 + 823 248 13 -0.834 42.61226 41.78391 40.84493 1 0 1 + 824 248 14 0.417 41.98531 41.90233 41.55849 1 0 1 + 825 248 14 0.417 42.35866 42.43623 40.19194 1 0 1 + 826 249 13 -0.834 37.83522 41.95649 50.31377 0 0 -2 + 827 249 14 0.417 37.42231 42.81133 50.19124 0 0 -2 + 828 249 14 0.417 37.46684 41.41031 49.61934 0 0 -2 + 829 250 13 -0.834 44.80898 44.15062 49.20688 0 -1 0 + 830 250 14 0.417 44.80289 44.55594 48.33975 0 -1 0 + 831 250 14 0.417 45.29722 44.76463 49.75537 0 -1 0 + 832 251 13 -0.834 37.44321 44.03405 38.75076 1 0 1 + 833 251 14 0.417 37.12277 44.06014 39.65235 1 0 1 + 834 251 14 0.417 64.13547 43.56266 38.26824 0 0 1 + 835 252 13 -0.834 38.82113 46.15070 46.12915 1 0 0 + 836 252 14 0.417 38.96657 46.44867 47.02709 1 0 0 + 837 252 14 0.417 38.09796 45.52731 46.19733 1 0 0 + 838 253 13 -0.834 43.08482 60.65520 45.34135 -1 0 1 + 839 253 14 0.417 42.82882 59.73347 45.30784 -1 0 1 + 840 253 14 0.417 44.00885 60.65685 45.09147 -1 0 1 + 841 254 13 -0.834 45.72190 46.51173 32.51384 1 0 0 + 842 254 14 0.417 46.00925 45.78294 31.96381 1 0 0 + 843 254 14 0.417 46.53186 46.95248 32.77064 1 0 0 + 844 255 13 -0.834 63.64359 44.33728 41.24417 -1 0 0 + 845 255 14 0.417 63.60411 43.61794 41.87443 -1 0 0 + 846 255 14 0.417 62.76926 44.36407 40.85550 -1 0 0 + 847 256 13 -0.834 48.53353 66.27879 51.60437 0 0 -1 + 848 256 14 0.417 49.21611 66.24938 50.93396 0 0 -1 + 849 256 14 0.417 48.67507 65.48862 52.12577 0 0 -1 + 850 257 13 -0.834 54.11962 54.32751 39.83526 -1 1 1 + 851 257 14 0.417 53.37975 54.47391 39.24585 -1 1 1 + 852 257 14 0.417 53.95747 53.46346 40.21391 -1 1 1 + 853 258 13 -0.834 53.72785 66.08707 44.78384 -1 -1 0 + 854 258 14 0.417 54.65423 65.85662 44.85413 -1 -1 0 + 855 258 14 0.417 53.26300 65.26936 44.96130 -1 -1 0 + 856 259 13 -0.834 39.06287 51.40870 53.96063 0 0 -1 + 857 259 14 0.417 39.12854 51.34243 53.00796 0 0 -1 + 858 259 14 0.417 38.38057 52.06341 54.10916 0 0 -1 + 859 260 13 -0.834 58.77064 49.77012 37.45292 0 0 0 + 860 260 14 0.417 59.49652 49.20688 37.72142 0 0 0 + 861 260 14 0.417 57.98575 49.25379 37.63621 0 0 0 + 862 261 13 -0.834 37.94204 48.36591 35.22049 -1 0 0 + 863 261 14 0.417 37.94000 47.48368 35.59187 -1 0 0 + 864 261 14 0.417 38.86901 48.59216 35.14453 -1 0 0 + 865 262 13 -0.834 47.05754 54.06564 40.63628 0 -2 1 + 866 262 14 0.417 47.01965 53.22193 41.08679 0 -2 1 + 867 262 14 0.417 46.68660 54.68838 41.26145 0 -2 1 + 868 263 13 -0.834 46.01283 65.88108 53.59469 0 0 0 + 869 263 14 0.417 45.30729 66.50296 53.77277 0 0 0 + 870 263 14 0.417 46.76378 66.42902 53.36650 0 0 0 + 871 264 13 -0.834 45.32546 67.91008 39.11365 -1 -1 0 + 872 264 14 0.417 44.38981 67.96233 38.91853 -1 -1 0 + 873 264 14 0.417 45.70517 67.47097 38.35257 -1 -1 0 + 874 265 13 -0.834 55.39761 51.53823 53.16553 -1 1 -1 + 875 265 14 0.417 54.64975 52.10179 53.36389 -1 1 -1 + 876 265 14 0.417 55.78119 51.91789 52.37499 -1 1 -1 + 877 266 13 -0.834 57.06415 51.22923 32.75117 -1 -1 0 + 878 266 14 0.417 56.79908 52.11139 32.49079 -1 -1 0 + 879 266 14 0.417 57.98399 51.16910 32.49322 -1 -1 0 + 880 267 13 -0.834 50.05222 47.30342 45.67457 0 0 -2 + 881 267 14 0.417 49.85957 46.82324 46.47990 0 0 -2 + 882 267 14 0.417 50.60617 46.70964 45.16781 0 0 -2 + 883 268 13 -0.834 50.46819 45.47822 52.51129 0 1 -1 + 884 268 14 0.417 50.78823 45.07196 53.31677 0 1 -1 + 885 268 14 0.417 51.03886 45.13243 51.82499 0 1 -1 + 886 269 13 -0.834 47.44130 61.30175 47.80124 0 0 0 + 887 269 14 0.417 48.02715 60.89314 48.43850 0 0 0 + 888 269 14 0.417 47.98636 61.43626 47.02595 0 0 0 + 889 270 13 -0.834 41.31630 52.47434 39.71677 1 0 0 + 890 270 14 0.417 41.07609 52.94514 40.51485 1 0 0 + 891 270 14 0.417 42.05418 52.96849 39.35955 1 0 0 + 892 271 13 -0.834 55.90762 58.63213 50.47814 0 1 0 + 893 271 14 0.417 55.80273 59.37784 51.06903 0 1 0 + 894 271 14 0.417 55.41449 58.87554 49.69468 0 1 0 + 895 272 13 -0.834 42.23424 55.62725 53.35280 0 1 -1 + 896 272 14 0.417 41.62946 55.10926 53.88399 0 1 -1 + 897 272 14 0.417 41.75761 56.43615 53.16647 0 1 -1 + 898 273 13 -0.834 62.31754 63.97065 42.48774 0 0 1 + 899 273 14 0.417 63.27023 64.05391 42.44669 0 0 1 + 900 273 14 0.417 62.16851 63.13573 42.93152 0 0 1 + 901 274 13 -0.834 60.93154 49.79182 56.13812 0 -1 0 + 902 274 14 0.417 61.38991 48.97402 56.33134 0 -1 0 + 903 274 14 0.417 60.29808 49.88575 56.84955 0 -1 0 + 904 275 13 -0.834 50.39572 45.11274 36.60756 0 1 -1 + 905 275 14 0.417 50.88541 44.33834 36.33051 0 1 -1 + 906 275 14 0.417 50.38352 45.05976 37.56322 0 1 -1 + 907 276 13 -0.834 46.57204 43.12189 39.29488 -1 2 -1 + 908 276 14 0.417 46.48449 42.17951 39.43813 -1 2 -1 + 909 276 14 0.417 47.49357 43.30747 39.47547 -1 2 -1 + 910 277 13 -0.834 54.39979 41.37518 38.62483 0 0 1 + 911 277 14 0.417 54.27469 42.27221 38.31511 0 0 1 + 912 277 14 0.417 54.57135 68.24024 37.83080 0 -1 1 + 913 278 13 -0.834 60.57638 52.40343 41.12327 -1 1 -1 + 914 278 14 0.417 60.40196 53.27982 40.78010 -1 1 -1 + 915 278 14 0.417 60.37657 52.46726 42.05721 -1 1 -1 + 916 279 13 -0.834 61.77806 59.06524 41.98029 0 0 0 + 917 279 14 0.417 62.58317 59.36537 42.40214 0 0 0 + 918 279 14 0.417 61.10430 59.16112 42.65342 0 0 0 + 919 280 13 -0.834 43.46789 48.64833 54.88223 0 1 -2 + 920 280 14 0.417 43.60676 49.48200 54.43286 0 1 -2 + 921 280 14 0.417 43.74339 47.98554 54.24895 0 1 -2 + 922 281 13 -0.834 51.98628 58.37454 48.60562 -1 0 0 + 923 281 14 0.417 51.81372 57.54909 49.05852 -1 0 0 + 924 281 14 0.417 52.67545 58.16319 47.97583 -1 0 0 + 925 282 13 -0.834 55.00551 65.64176 56.63926 0 -1 -1 + 926 282 14 0.417 55.59134 66.11131 29.86167 0 -1 0 + 927 282 14 0.417 54.80211 66.27584 55.95165 0 -1 -1 + 928 283 13 -0.834 55.02996 52.59142 50.59986 -1 1 0 + 929 283 14 0.417 54.13615 52.66743 50.26585 -1 1 0 + 930 283 14 0.417 55.48513 53.35419 50.24316 -1 1 0 + 931 284 13 -0.834 37.39245 67.88600 56.81733 0 -1 -1 + 932 284 14 0.417 38.13326 41.09044 56.62787 0 0 -1 + 933 284 14 0.417 37.74351 67.00148 56.71419 0 -1 -1 + 934 285 13 -0.834 42.83234 60.22766 53.36959 0 0 0 + 935 285 14 0.417 43.51497 59.86233 52.80672 0 0 0 + 936 285 14 0.417 43.27782 60.90528 53.87815 0 0 0 + 937 286 13 -0.834 59.24806 43.81265 38.44265 1 0 0 + 938 286 14 0.417 59.12140 43.55748 39.35647 1 0 0 + 939 286 14 0.417 60.07673 44.29174 38.43991 1 0 0 + 940 287 13 -0.834 61.29263 60.52642 52.74164 -1 1 -1 + 941 287 14 0.417 61.73918 60.02180 53.42149 -1 1 -1 + 942 287 14 0.417 60.93759 61.28711 53.20156 -1 1 -1 + 943 288 13 -0.834 63.43980 43.30119 30.90384 -1 1 0 + 944 288 14 0.417 63.34979 42.36405 30.73085 -1 1 0 + 945 288 14 0.417 64.20504 43.56693 30.39393 -1 1 0 + 946 289 13 -0.834 57.11924 59.06522 54.48909 -1 0 0 + 947 289 14 0.417 57.40605 59.83488 54.98062 -1 0 0 + 948 289 14 0.417 57.59698 58.33614 54.88463 -1 0 0 + 949 290 13 -0.834 51.89759 59.82680 44.82923 1 1 -1 + 950 290 14 0.417 51.33588 59.94068 44.06258 1 1 -1 + 951 290 14 0.417 51.32846 60.01914 45.57443 1 1 -1 + 952 291 13 -0.834 57.64696 65.49112 47.86068 -1 0 0 + 953 291 14 0.417 57.31105 65.98457 48.60895 -1 0 0 + 954 291 14 0.417 57.73765 64.59519 48.18521 -1 0 0 + 955 292 13 -0.834 50.35232 57.73892 32.55459 0 1 0 + 956 292 14 0.417 51.07441 57.69034 31.92813 0 1 0 + 957 292 14 0.417 50.48339 58.57180 33.00777 0 1 0 + 958 293 13 -0.834 46.20166 60.82812 38.38269 0 1 1 + 959 293 14 0.417 46.12191 61.76977 38.53504 0 1 1 + 960 293 14 0.417 45.30555 60.53505 38.21735 0 1 1 + 961 294 13 -0.834 41.42660 51.46433 55.94150 1 0 -1 + 962 294 14 0.417 40.58025 51.71240 55.56944 1 0 -1 + 963 294 14 0.417 41.63094 50.62307 55.53311 1 0 -1 + 964 295 13 -0.834 56.72642 53.95840 32.00323 0 -1 0 + 965 295 14 0.417 57.12177 54.49254 32.69216 0 -1 0 + 966 295 14 0.417 55.80349 54.21231 32.00259 0 -1 0 + 967 296 13 -0.834 43.25852 41.40642 31.27656 0 1 0 + 968 296 14 0.417 43.58058 42.21308 31.67880 0 1 0 + 969 296 14 0.417 43.16985 68.16459 32.00619 0 0 0 + 970 297 13 -0.834 54.50477 52.62435 30.30235 -2 1 0 + 971 297 14 0.417 54.04985 52.22243 31.04245 -2 1 0 + 972 297 14 0.417 54.36900 53.56465 30.41915 -2 1 0 + 973 298 13 -0.834 38.11258 59.33341 36.21749 1 0 0 + 974 298 14 0.417 38.95754 58.91929 36.04205 1 0 0 + 975 298 14 0.417 38.14750 60.16192 35.73940 1 0 0 + 976 299 13 -0.834 39.65020 64.70254 40.48616 -1 0 1 + 977 299 14 0.417 39.87581 65.58596 40.19474 -1 0 1 + 978 299 14 0.417 39.66086 64.17611 39.68676 -1 0 1 + 979 300 13 -0.834 63.26661 53.84973 48.10281 -1 1 1 + 980 300 14 0.417 63.38261 54.75210 48.40032 -1 1 1 + 981 300 14 0.417 62.32830 53.68505 48.19603 -1 1 1 + 982 301 13 -0.834 43.65966 61.04202 50.03088 0 0 0 + 983 301 14 0.417 44.11377 60.35973 50.52538 0 0 0 + 984 301 14 0.417 44.30508 61.74317 49.94108 0 0 0 + 985 302 13 -0.834 61.75204 50.20037 32.39414 0 0 0 + 986 302 14 0.417 62.04749 51.09027 32.58663 0 0 0 + 987 302 14 0.417 62.55370 49.67736 32.38826 0 0 0 + 988 303 13 -0.834 53.79071 58.98335 36.25336 -1 -2 -1 + 989 303 14 0.417 53.17711 58.26833 36.42220 -1 -2 -1 + 990 303 14 0.417 54.65389 58.60140 36.41235 -1 -2 -1 + 991 304 13 -0.834 50.47963 50.13918 42.58243 1 -1 -2 + 992 304 14 0.417 51.28111 49.63880 42.42915 1 -1 -2 + 993 304 14 0.417 50.33279 50.61369 41.76419 1 -1 -2 + 994 305 13 -0.834 50.28770 49.02182 56.79391 1 -1 -2 + 995 305 14 0.417 50.66164 48.14920 56.91622 1 -1 -2 + 996 305 14 0.417 50.60501 49.30063 55.93493 1 -1 -2 + 997 306 13 -0.834 41.36930 46.36343 34.87469 1 1 0 + 998 306 14 0.417 42.25704 46.59841 34.60463 1 1 0 + 999 306 14 0.417 40.85961 47.16333 34.74582 1 1 0 + 1000 307 13 -0.834 61.15349 47.47016 41.71779 0 1 0 + 1001 307 14 0.417 61.50139 48.29469 41.37818 0 1 0 + 1002 307 14 0.417 60.28203 47.69385 42.04454 0 1 0 + 1003 308 13 -0.834 58.35337 46.83622 34.81712 0 0 1 + 1004 308 14 0.417 57.63221 46.22391 34.67141 0 0 1 + 1005 308 14 0.417 57.97297 47.69883 34.65146 0 0 1 + 1006 309 13 -0.834 38.79812 57.92803 48.26323 1 -2 -1 + 1007 309 14 0.417 38.67444 56.98130 48.33141 1 -2 -1 + 1008 309 14 0.417 39.70990 58.06987 48.51776 1 -2 -1 + 1009 310 13 -0.834 42.15963 57.96891 45.03230 1 0 0 + 1010 310 14 0.417 42.11698 57.98663 45.98839 1 0 0 + 1011 310 14 0.417 41.83611 57.10021 44.79371 1 0 0 + 1012 311 13 -0.834 55.17551 54.72671 36.49400 0 -1 0 + 1013 311 14 0.417 55.26386 53.77738 36.57890 0 -1 0 + 1014 311 14 0.417 55.36463 55.06457 37.36939 0 -1 0 + 1015 312 13 -0.834 58.64573 63.28550 41.10609 -1 -2 -1 + 1016 312 14 0.417 58.98147 62.66636 41.75429 -1 -2 -1 + 1017 312 14 0.417 57.90273 62.83419 40.70545 -1 -2 -1 + 1018 313 13 -0.834 49.96498 59.98797 42.54359 0 -1 0 + 1019 313 14 0.417 50.57886 60.48612 42.00390 0 -1 0 + 1020 313 14 0.417 49.10600 60.17526 42.16501 0 -1 0 + 1021 314 13 -0.834 57.54750 44.35075 52.12722 -1 -1 -1 + 1022 314 14 0.417 57.86221 43.84739 51.37633 -1 -1 -1 + 1023 314 14 0.417 56.76423 44.79718 51.80558 -1 -1 -1 + 1024 315 13 -0.834 58.07892 59.46258 41.31930 1 -1 0 + 1025 315 14 0.417 58.27344 60.10968 41.99729 1 -1 0 + 1026 315 14 0.417 57.80524 59.98199 40.56328 1 -1 0 + 1027 316 13 -0.834 42.21869 44.49848 55.65511 2 1 0 + 1028 316 14 0.417 42.77458 44.78017 56.38166 2 1 0 + 1029 316 14 0.417 42.83052 44.15513 55.00395 2 1 0 + 1030 317 13 -0.834 56.38334 63.45614 43.52622 -1 -1 0 + 1031 317 14 0.417 55.66283 63.62998 42.92052 -1 -1 0 + 1032 317 14 0.417 56.48976 64.27319 44.01338 -1 -1 0 + 1033 318 13 -0.834 43.21354 46.04700 52.52965 1 1 0 + 1034 318 14 0.417 43.24360 45.09879 52.40226 1 1 0 + 1035 318 14 0.417 43.99839 46.37328 52.08943 1 1 0 + 1036 319 13 -0.834 55.96174 45.94863 35.39660 -1 0 1 + 1037 319 14 0.417 55.64687 46.44680 36.15088 -1 0 1 + 1038 319 14 0.417 55.28305 46.06527 34.73174 -1 0 1 + 1039 320 13 -0.834 47.36406 54.82690 34.84439 -1 -1 2 + 1040 320 14 0.417 47.90093 54.86776 34.05295 -1 -1 2 + 1041 320 14 0.417 47.23152 53.89118 34.99640 -1 -1 2 + 1042 321 13 -0.834 49.62685 50.00229 45.27362 1 0 -2 + 1043 321 14 0.417 49.70876 49.05477 45.38192 1 0 -2 + 1044 321 14 0.417 49.82566 50.15634 44.35005 1 0 -2 + 1045 322 13 -0.834 49.58249 46.02940 55.43310 -1 0 -2 + 1046 322 14 0.417 49.10378 46.80060 55.12924 -1 0 -2 + 1047 322 14 0.417 49.31802 45.92761 56.34739 -1 0 -2 + 1048 323 13 -0.834 51.72150 51.53491 51.55558 0 -1 -1 + 1049 323 14 0.417 51.50292 52.17946 50.88251 0 -1 -1 + 1050 323 14 0.417 52.14568 52.04382 52.24646 0 -1 -1 + 1051 324 13 -0.834 37.98107 56.66338 52.98024 0 1 0 + 1052 324 14 0.417 37.64467 57.53823 52.78607 0 1 0 + 1053 324 14 0.417 38.15999 56.27913 52.12200 0 1 0 + 1054 325 13 -0.834 59.20226 51.55233 53.16877 -1 1 0 + 1055 325 14 0.417 59.68851 51.88535 53.92302 -1 1 0 + 1056 325 14 0.417 58.63621 50.87031 53.53025 -1 1 0 + 1057 326 13 -0.834 45.75783 63.62117 39.24032 1 1 -1 + 1058 326 14 0.417 46.25179 64.38626 39.53508 1 1 -1 + 1059 326 14 0.417 44.85376 63.80686 39.49409 1 1 -1 + 1060 327 13 -0.834 58.00953 52.38584 37.67148 -1 1 1 + 1061 327 14 0.417 58.24242 51.47235 37.50553 -1 1 1 + 1062 327 14 0.417 57.26453 52.33853 38.27062 -1 1 1 + 1063 328 13 -0.834 50.62838 66.20855 42.36072 0 0 -1 + 1064 328 14 0.417 51.45434 66.68250 42.45770 0 0 -1 + 1065 328 14 0.417 49.99531 66.87945 42.10506 0 0 -1 + 1066 329 13 -0.834 53.69444 52.39171 45.41982 1 0 0 + 1067 329 14 0.417 53.84961 51.45739 45.55855 1 0 0 + 1068 329 14 0.417 52.75879 52.45359 45.22750 1 0 0 + 1069 330 13 -0.834 38.34038 60.92162 30.12773 2 0 0 + 1070 330 14 0.417 39.08908 61.47644 29.90887 2 0 0 + 1071 330 14 0.417 38.64185 60.39196 30.86585 2 0 0 + 1072 331 13 -0.834 48.03336 64.84935 43.13262 -1 0 -2 + 1073 331 14 0.417 48.90813 65.00919 43.48682 -1 0 -2 + 1074 331 14 0.417 47.46214 65.43367 43.63114 -1 0 -2 + 1075 332 13 -0.834 39.68760 66.88962 36.60665 2 0 0 + 1076 332 14 0.417 38.74743 66.72116 36.66944 2 0 0 + 1077 332 14 0.417 40.05009 66.08888 36.22764 2 0 0 + 1078 333 13 -0.834 51.94118 65.49897 51.83197 0 -1 -2 + 1079 333 14 0.417 52.71282 65.06165 51.47204 0 -1 -2 + 1080 333 14 0.417 51.22446 64.88225 51.68297 0 -1 -2 + 1081 334 13 -0.834 43.33066 57.53264 55.09930 -1 0 -2 + 1082 334 14 0.417 43.05496 56.76932 54.59178 -1 0 -2 + 1083 334 14 0.417 44.28179 57.55937 54.99503 -1 0 -2 + 1084 335 13 -0.834 47.70128 45.69178 52.17773 -1 3 -1 + 1085 335 14 0.417 47.54566 44.86273 52.63016 -1 3 -1 + 1086 335 14 0.417 48.58530 45.94693 52.44163 -1 3 -1 + 1087 336 13 -0.834 58.71603 41.81571 40.73899 -1 0 0 + 1088 336 14 0.417 57.77048 41.84330 40.88539 -1 0 0 + 1089 336 14 0.417 58.81275 41.43332 39.86682 -1 0 0 + 1090 337 13 -0.834 57.56034 60.98533 43.60766 0 -1 0 + 1091 337 14 0.417 56.67639 60.61816 43.59917 0 -1 0 + 1092 337 14 0.417 57.42830 61.92611 43.72486 0 -1 0 + 1093 338 13 -0.834 44.68088 65.08579 34.27880 -1 0 2 + 1094 338 14 0.417 45.54678 65.09564 34.68668 -1 0 2 + 1095 338 14 0.417 44.45037 64.15818 34.22739 -1 0 2 + 1096 339 13 -0.834 54.98236 48.04093 42.26075 0 0 0 + 1097 339 14 0.417 55.16505 47.86552 43.18384 0 0 0 + 1098 339 14 0.417 55.70493 48.59999 41.97513 0 0 0 + 1099 340 13 -0.834 60.57099 56.88773 56.53671 0 0 1 + 1100 340 14 0.417 60.67151 56.21616 29.83998 0 0 2 + 1101 340 14 0.417 61.34465 56.78824 55.98192 0 0 1 + 1102 341 13 -0.834 48.05045 49.69974 47.93542 -1 0 0 + 1103 341 14 0.417 48.70922 49.23613 48.45249 -1 0 0 + 1104 341 14 0.417 48.26410 49.48583 47.02721 -1 0 0 + 1105 342 13 -0.834 40.63207 55.77589 49.21695 1 0 -1 + 1106 342 14 0.417 40.84917 56.26844 50.00847 1 0 -1 + 1107 342 14 0.417 41.40772 55.85904 48.66226 1 0 -1 + 1108 343 13 -0.834 61.66015 42.71355 39.91223 0 0 0 + 1109 343 14 0.417 61.87748 41.86774 40.30419 0 0 0 + 1110 343 14 0.417 61.98864 42.65380 39.01514 0 0 0 + 1111 344 13 -0.834 38.52157 65.12766 57.04010 0 -1 -1 + 1112 344 14 0.417 38.04157 64.32142 56.85084 0 -1 -1 + 1113 344 14 0.417 39.36310 65.01535 56.59799 0 -1 -1 + 1114 345 13 -0.834 54.26556 44.72348 38.61852 -1 0 0 + 1115 345 14 0.417 54.65781 45.53245 38.94708 -1 0 0 + 1116 345 14 0.417 54.97105 44.29396 38.13473 -1 0 0 + 1117 346 13 -0.834 55.38993 55.61246 43.96322 -1 0 1 + 1118 346 14 0.417 54.74535 54.99107 43.62461 -1 0 1 + 1119 346 14 0.417 55.11835 55.77119 44.86726 -1 0 1 + 1120 347 13 -0.834 56.42023 55.00369 50.06211 -1 -1 0 + 1121 347 14 0.417 55.77599 55.59187 50.45611 -1 -1 0 + 1122 347 14 0.417 56.93756 54.68448 50.80151 -1 -1 0 + 1123 348 13 -0.834 45.79495 66.88952 36.56670 1 1 -1 + 1124 348 14 0.417 45.28578 66.71904 35.77429 1 1 -1 + 1125 348 14 0.417 46.57709 67.34552 36.25591 1 1 -1 + 1126 349 13 -0.834 62.75278 45.54084 32.23733 0 0 0 + 1127 349 14 0.417 62.61586 44.79986 31.64705 0 0 0 + 1128 349 14 0.417 62.96974 45.14017 33.07913 0 0 0 + 1129 350 13 -0.834 57.50625 65.62986 39.74454 0 0 0 + 1130 350 14 0.417 57.73342 64.85584 40.25983 0 0 0 + 1131 350 14 0.417 57.07082 66.21286 40.36642 0 0 0 + 1132 351 13 -0.834 55.96293 62.10636 50.17062 0 1 -1 + 1133 351 14 0.417 56.24333 61.70901 50.99507 0 1 -1 + 1134 351 14 0.417 56.67888 62.69531 49.93234 0 1 -1 + 1135 352 13 -0.834 37.45010 41.11856 53.00894 0 0 0 + 1136 352 14 0.417 37.99062 41.49514 53.70339 0 0 0 + 1137 352 14 0.417 37.83337 41.45341 52.19826 0 0 0 + 1138 353 13 -0.834 40.59344 47.85232 38.52244 1 0 1 + 1139 353 14 0.417 41.31256 47.71502 37.90580 1 0 1 + 1140 353 14 0.417 40.21612 48.69426 38.26747 1 0 1 + 1141 354 13 -0.834 60.77214 62.31711 30.33695 0 2 -1 + 1142 354 14 0.417 59.83662 62.43212 30.17023 0 2 -1 + 1143 354 14 0.417 60.97856 61.45964 29.96496 0 2 -1 + 1144 355 13 -0.834 47.83829 64.26042 48.43592 0 1 -1 + 1145 355 14 0.417 47.12209 64.85952 48.22523 0 1 -1 + 1146 355 14 0.417 47.44823 63.38856 48.37295 0 1 -1 + 1147 356 13 -0.834 38.69679 45.31108 42.13672 1 1 0 + 1148 356 14 0.417 39.20464 45.52138 41.35308 1 1 0 + 1149 356 14 0.417 37.90440 44.89009 41.80335 1 1 0 + 1150 357 13 -0.834 38.90832 47.67164 52.69089 0 1 0 + 1151 357 14 0.417 39.51269 48.14149 53.26554 0 1 0 + 1152 357 14 0.417 38.42834 48.36117 52.23218 0 1 0 + 1153 358 13 -0.834 45.13879 48.98199 29.96256 0 2 1 + 1154 358 14 0.417 44.63649 48.48457 30.60794 0 2 1 + 1155 358 14 0.417 44.70163 48.80464 56.50106 0 2 0 + 1156 359 13 -0.834 54.78460 57.58368 54.24956 1 1 -1 + 1157 359 14 0.417 54.71436 57.34891 55.17486 1 1 -1 + 1158 359 14 0.417 55.60599 58.07122 54.18735 1 1 -1 + 1159 360 13 -0.834 40.77006 67.09387 46.34204 0 0 1 + 1160 360 14 0.417 40.91087 66.51539 47.09156 0 0 1 + 1161 360 14 0.417 41.47386 67.73986 46.40192 0 0 1 + 1162 361 13 -0.834 53.75960 49.21723 54.03526 1 0 -1 + 1163 361 14 0.417 54.17778 50.07537 53.96484 1 0 -1 + 1164 361 14 0.417 54.18187 48.68822 53.35846 1 0 -1 + 1165 362 13 -0.834 46.41755 62.84035 30.52059 0 0 1 + 1166 362 14 0.417 46.37357 61.90548 30.72136 0 0 1 + 1167 362 14 0.417 46.76359 62.87829 57.00030 0 0 0 + 1168 363 13 -0.834 51.27491 42.28113 30.83818 0 -1 0 + 1169 363 14 0.417 51.18814 42.11416 31.77671 0 -1 0 + 1170 363 14 0.417 50.41560 42.60836 30.57220 0 -1 0 + 1171 364 13 -0.834 52.36258 42.54738 46.83477 0 -1 -1 + 1172 364 14 0.417 51.62853 42.02025 46.51928 0 -1 -1 + 1173 364 14 0.417 53.11771 42.22680 46.34158 0 -1 -1 + 1174 365 13 -0.834 40.11442 46.69570 48.71466 3 -2 1 + 1175 365 14 0.417 39.89820 47.61495 48.55824 3 -2 1 + 1176 365 14 0.417 40.87520 46.72352 49.29493 3 -2 1 + 1177 366 13 -0.834 56.56957 65.78976 45.32589 0 -2 -1 + 1178 366 14 0.417 56.86196 65.56407 46.20896 0 -2 -1 + 1179 366 14 0.417 57.34222 66.16870 44.90678 0 -2 -1 + 1180 367 13 -0.834 38.37373 47.63723 43.98242 2 0 0 + 1181 367 14 0.417 38.78516 47.21384 44.73589 2 0 0 + 1182 367 14 0.417 38.73588 47.18051 43.22315 2 0 0 + 1183 368 13 -0.834 45.69445 49.36872 40.50736 -1 0 -2 + 1184 368 14 0.417 44.73771 49.39892 40.51002 -1 0 -2 + 1185 368 14 0.417 45.90701 48.47357 40.77155 -1 0 -2 + 1186 369 13 -0.834 53.93830 54.76570 31.99728 0 -1 0 + 1187 369 14 0.417 53.94849 55.50033 32.61083 0 -1 0 + 1188 369 14 0.417 53.13070 54.29402 32.20107 0 -1 0 + 1189 370 13 -0.834 58.79125 64.07093 37.97498 -1 -1 -2 + 1190 370 14 0.417 58.48296 64.72380 38.60343 -1 -1 -2 + 1191 370 14 0.417 58.20942 64.16977 37.22136 -1 -1 -2 + 1192 371 13 -0.834 51.76123 61.42281 40.82794 0 -1 0 + 1193 371 14 0.417 52.69114 61.24136 40.69160 0 -1 0 + 1194 371 14 0.417 51.74755 62.21395 41.36660 0 -1 0 + 1195 372 13 -0.834 44.28377 63.70509 53.71234 -1 -2 -1 + 1196 372 14 0.417 44.98211 64.35001 53.59994 -1 -2 -1 + 1197 372 14 0.417 43.75271 63.78587 52.92008 -1 -2 -1 + 1198 373 13 -0.834 61.50835 48.76378 34.91047 0 0 -1 + 1199 373 14 0.417 61.23254 49.09753 34.05678 0 0 -1 + 1200 373 14 0.417 61.51672 49.53447 35.47812 0 0 -1 + 1201 374 13 -0.834 61.51337 41.63477 44.26291 -1 -1 0 + 1202 374 14 0.417 62.42662 41.58544 44.54543 -1 -1 0 + 1203 374 14 0.417 61.34749 68.16405 43.83907 -1 -2 0 + 1204 375 13 -0.834 57.73267 43.39213 33.64792 0 -1 0 + 1205 375 14 0.417 58.46456 43.28438 34.25535 0 -1 0 + 1206 375 14 0.417 58.09278 43.15396 32.79362 0 -1 0 + 1207 376 13 -0.834 63.51473 49.31549 51.59705 -1 1 -1 + 1208 376 14 0.417 63.13045 49.03534 50.76631 -1 1 -1 + 1209 376 14 0.417 62.84038 49.86142 52.00137 -1 1 -1 + 1210 377 13 -0.834 58.21462 44.79010 54.73553 -1 -1 -1 + 1211 377 14 0.417 58.08068 43.94884 55.17209 -1 -1 -1 + 1212 377 14 0.417 57.81645 44.67856 53.87224 -1 -1 -1 + 1213 378 13 -0.834 57.08090 55.14561 52.86183 0 -2 1 + 1214 378 14 0.417 57.05215 55.46811 53.76261 0 -2 1 + 1215 378 14 0.417 57.69965 54.41575 52.88786 0 -2 1 + 1216 379 13 -0.834 60.83502 54.45436 45.82182 1 0 -1 + 1217 379 14 0.417 61.05342 55.38616 45.83857 1 0 -1 + 1218 379 14 0.417 60.79443 54.20077 46.74392 1 0 -1 + 1219 380 13 -0.834 60.86442 48.23162 37.95658 0 0 2 + 1220 380 14 0.417 61.77710 48.43881 37.75572 0 0 2 + 1221 380 14 0.417 60.87611 47.30540 38.19788 0 0 2 + 1222 381 13 -0.834 43.21478 43.26953 44.97859 2 1 -1 + 1223 381 14 0.417 42.50778 42.78849 44.54850 2 1 -1 + 1224 381 14 0.417 43.42173 42.74895 45.75474 2 1 -1 + 1225 382 13 -0.834 39.01904 49.57571 48.28198 1 -1 -1 + 1226 382 14 0.417 38.68877 49.32064 47.42052 1 -1 -1 + 1227 382 14 0.417 38.42357 50.26661 48.57234 1 -1 -1 + 1228 383 13 -0.834 47.20253 45.34580 30.26781 0 0 1 + 1229 383 14 0.417 47.05738 44.40526 30.16508 0 0 1 + 1230 383 14 0.417 46.80592 45.73631 56.86044 0 0 0 + 1231 384 13 -0.834 44.57742 55.88746 33.53830 0 -1 0 + 1232 384 14 0.417 45.13093 56.49768 33.05096 0 -1 0 + 1233 384 14 0.417 44.41092 55.17196 32.92464 0 -1 0 + 1234 385 13 -0.834 42.17091 64.36626 51.74369 1 0 0 + 1235 385 14 0.417 41.78583 65.24128 51.69570 1 0 0 + 1236 385 14 0.417 41.41926 63.77568 51.79343 1 0 0 + 1237 386 13 -0.834 43.82615 43.47821 52.97551 0 0 0 + 1238 386 14 0.417 43.64099 42.56407 52.76025 0 0 0 + 1239 386 14 0.417 44.58924 43.43914 53.55207 0 0 0 + 1240 387 13 -0.834 63.58286 63.91035 38.47173 0 -1 -1 + 1241 387 14 0.417 64.14591 63.71296 39.22023 0 -1 -1 + 1242 387 14 0.417 62.70901 64.01191 38.84896 0 -1 -1 + 1243 388 13 -0.834 57.85225 42.19019 46.82252 1 1 -2 + 1244 388 14 0.417 57.61712 42.29475 47.74450 1 1 -2 + 1245 388 14 0.417 57.29406 42.81537 46.36013 1 1 -2 + 1246 389 13 -0.834 57.90802 64.30101 52.26362 1 0 1 + 1247 389 14 0.417 58.43907 64.81717 52.87010 1 0 1 + 1248 389 14 0.417 58.54387 63.78888 51.76396 1 0 1 + 1249 390 13 -0.834 53.18379 66.68791 54.05156 1 -2 0 + 1250 390 14 0.417 52.23394 66.79510 54.00115 1 -2 0 + 1251 390 14 0.417 53.33447 65.77140 53.82015 1 -2 0 + 1252 391 13 -0.834 56.95394 68.26036 36.42711 -1 1 1 + 1253 391 14 0.417 56.91362 41.83232 36.58445 -1 2 1 + 1254 391 14 0.417 57.79173 67.98998 36.80292 -1 1 1 + 1255 392 13 -0.834 64.19252 44.20158 54.88143 0 0 0 + 1256 392 14 0.417 64.09322 45.07899 54.51194 0 0 0 + 1257 392 14 0.417 63.39239 43.74201 54.62684 0 0 0 + 1258 393 13 -0.834 63.10536 65.42626 48.53464 0 0 0 + 1259 393 14 0.417 62.79665 64.63036 48.10166 0 0 0 + 1260 393 14 0.417 62.77768 65.35429 49.43112 0 0 0 + 1261 394 13 -0.834 49.28836 66.20367 32.27628 1 -1 0 + 1262 394 14 0.417 49.46858 65.88738 33.16155 1 -1 0 + 1263 394 14 0.417 49.29197 65.41476 31.73420 1 -1 0 + 1264 395 13 -0.834 46.11216 66.09570 44.77896 0 -1 0 + 1265 395 14 0.417 45.90309 66.07762 45.71287 0 -1 0 + 1266 395 14 0.417 45.36137 65.67813 44.35683 0 -1 0 + 1267 396 13 -0.834 41.43943 50.30026 52.32584 1 0 0 + 1268 396 14 0.417 41.39866 49.93140 51.44351 1 0 0 + 1269 396 14 0.417 40.92759 49.69528 52.86275 1 0 0 + 1270 397 13 -0.834 54.69177 57.80859 32.50623 0 -1 -1 + 1271 397 14 0.417 53.99890 57.66594 31.86139 0 -1 -1 + 1272 397 14 0.417 54.37599 57.37325 33.29806 0 -1 -1 + 1273 398 13 -0.834 43.56781 46.79065 37.17838 0 1 0 + 1274 398 14 0.417 43.18325 46.24795 36.49004 0 1 0 + 1275 398 14 0.417 44.03819 46.17194 37.73711 0 1 0 + 1276 399 13 -0.834 55.33436 45.90772 50.69068 -1 0 0 + 1277 399 14 0.417 55.55455 46.77982 51.01809 -1 0 0 + 1278 399 14 0.417 55.09425 46.04877 49.77488 -1 0 0 + 1279 400 13 -0.834 56.15383 51.87018 43.92178 -1 0 1 + 1280 400 14 0.417 55.25073 52.12373 44.11256 -1 0 1 + 1281 400 14 0.417 56.65027 52.68628 43.98319 -1 0 1 + 1282 401 13 -0.834 62.38946 50.01240 45.94802 0 1 -2 + 1283 401 14 0.417 62.43815 50.07607 44.99418 0 1 -2 + 1284 401 14 0.417 61.47369 50.19932 46.15457 0 1 -2 + 1285 402 13 -0.834 53.60920 58.35575 46.37412 0 0 1 + 1286 402 14 0.417 53.25556 59.03071 45.79481 0 0 1 + 1287 402 14 0.417 53.24753 57.53627 46.03666 0 0 1 + 1288 403 13 -0.834 43.13375 42.07203 50.04429 1 0 0 + 1289 403 14 0.417 43.76099 42.76922 49.85267 1 0 0 + 1290 403 14 0.417 42.35437 42.53016 50.35879 1 0 0 + 1291 404 13 -0.834 47.41498 59.41146 52.77687 -1 -1 0 + 1292 404 14 0.417 47.81303 59.83868 53.53534 -1 -1 0 + 1293 404 14 0.417 48.01011 59.60512 52.05261 -1 -1 0 + 1294 405 13 -0.834 63.75607 47.28104 38.80571 0 2 -1 + 1295 405 14 0.417 63.78573 48.20840 38.57042 0 2 -1 + 1296 405 14 0.417 37.08655 47.17376 39.44769 1 2 -1 + 1297 406 13 -0.834 46.67594 56.20863 44.42866 1 1 0 + 1298 406 14 0.417 45.82140 56.15280 44.00100 1 1 0 + 1299 406 14 0.417 46.48292 56.12468 45.36243 1 1 0 + 1300 407 13 -0.834 62.54251 68.21194 54.20445 0 -1 1 + 1301 407 14 0.417 63.31640 41.15490 53.73696 0 0 1 + 1302 407 14 0.417 62.78865 67.34176 54.51819 0 -1 1 + 1303 408 13 -0.834 60.27010 54.96049 39.87633 0 0 0 + 1304 408 14 0.417 59.62959 55.67175 39.88547 0 0 0 + 1305 408 14 0.417 61.04761 55.33233 40.29281 0 0 0 + 1306 409 13 -0.834 40.02595 44.30132 44.29580 0 -2 0 + 1307 409 14 0.417 39.70595 44.75009 45.07839 0 -2 0 + 1308 409 14 0.417 39.56836 44.72725 43.57092 0 -2 0 + 1309 410 13 -0.834 54.20011 41.08252 35.61017 0 1 0 + 1310 410 14 0.417 55.10396 68.23613 35.83794 0 0 0 + 1311 410 14 0.417 54.27044 41.57221 34.79072 0 1 0 + 1312 411 13 -0.834 60.64478 45.93023 50.84376 1 1 -1 + 1313 411 14 0.417 60.80088 46.54647 51.55941 1 1 -1 + 1314 411 14 0.417 61.20574 46.24077 50.13303 1 1 -1 + 1315 412 13 -0.834 44.55137 44.47403 38.16771 1 0 -1 + 1316 412 14 0.417 45.28189 43.86333 38.26597 1 0 -1 + 1317 412 14 0.417 43.77025 43.93754 38.30281 1 0 -1 + 1318 413 13 -0.834 58.08933 62.76987 30.45191 1 -1 0 + 1319 413 14 0.417 57.64138 63.31997 29.80927 1 -1 0 + 1320 413 14 0.417 57.43674 62.11708 30.70545 1 -1 0 + 1321 414 13 -0.834 55.65273 56.71117 38.74877 1 0 1 + 1322 414 14 0.417 56.53260 56.59636 39.10779 1 0 1 + 1323 414 14 0.417 55.14964 55.98047 39.10825 1 0 1 + 1324 415 13 -0.834 55.50009 51.16952 38.77962 0 0 0 + 1325 415 14 0.417 54.95350 51.23711 37.99672 0 0 0 + 1326 415 14 0.417 55.53220 50.23190 38.96963 0 0 0 + 1327 416 13 -0.834 47.64702 52.79911 31.71446 0 -1 0 + 1328 416 14 0.417 48.52504 53.09556 31.47481 0 -1 0 + 1329 416 14 0.417 47.06032 53.44853 31.32681 0 -1 0 + 1330 417 13 -0.834 49.26727 42.35880 39.18566 1 1 -2 + 1331 417 14 0.417 50.02784 42.93912 39.15429 1 1 -2 + 1332 417 14 0.417 49.46495 41.74196 39.89040 1 1 -2 + 1333 418 13 -0.834 47.22542 64.65021 35.82232 1 -1 0 + 1334 418 14 0.417 46.76114 65.20346 36.45050 1 -1 0 + 1335 418 14 0.417 47.98585 65.16966 35.56120 1 -1 0 + 1336 419 13 -0.834 58.53686 56.85468 40.78587 1 1 0 + 1337 419 14 0.417 58.45283 56.63469 41.71365 1 1 0 + 1338 419 14 0.417 58.36285 57.79507 40.74550 1 1 0 + 1339 420 13 -0.834 50.09436 46.17981 48.16619 -1 -1 -2 + 1340 420 14 0.417 50.67249 45.42897 48.30138 -1 -1 -2 + 1341 420 14 0.417 50.49629 46.88624 48.67183 -1 -1 -2 + 1342 421 13 -0.834 42.30297 57.95379 33.48633 0 -1 1 + 1343 421 14 0.417 41.56921 57.39445 33.23136 0 -1 1 + 1344 421 14 0.417 43.00718 57.34235 33.70193 0 -1 1 + 1345 422 13 -0.834 45.76518 43.79811 54.82490 0 -1 0 + 1346 422 14 0.417 46.45133 43.55343 54.20397 0 -1 0 + 1347 422 14 0.417 45.87205 43.18693 55.55379 0 -1 0 + 1348 423 13 -0.834 59.33326 61.34125 37.96927 -1 -1 1 + 1349 423 14 0.417 59.29007 62.29004 38.08827 -1 -1 1 + 1350 423 14 0.417 59.90006 61.03609 38.67769 -1 -1 1 + 1351 424 13 -0.834 40.95662 63.48104 42.72192 1 -1 0 + 1352 424 14 0.417 40.33618 63.69074 42.02383 1 -1 0 + 1353 424 14 0.417 41.73946 63.17568 42.26346 1 -1 0 + 1354 425 13 -0.834 38.13662 59.25720 46.08402 1 -1 -1 + 1355 425 14 0.417 38.31499 59.03616 46.99811 1 -1 -1 + 1356 425 14 0.417 38.55502 58.55783 45.58196 1 -1 -1 + 1357 426 13 -0.834 48.88681 66.85051 54.82298 1 -2 0 + 1358 426 14 0.417 49.16879 67.45078 54.13275 1 -2 0 + 1359 426 14 0.417 49.42353 66.06836 54.69484 1 -2 0 + 1360 427 13 -0.834 45.88049 57.05477 48.46508 0 0 -1 + 1361 427 14 0.417 45.73709 57.90911 48.05793 0 0 -1 + 1362 427 14 0.417 45.83791 57.22701 49.40569 0 0 -1 + 1363 428 13 -0.834 39.37333 50.31613 37.93447 0 1 0 + 1364 428 14 0.417 39.11456 50.97624 37.29140 0 1 0 + 1365 428 14 0.417 38.97424 50.60960 38.75352 0 1 0 + 1366 429 13 -0.834 37.89753 62.82745 47.39297 0 -1 0 + 1367 429 14 0.417 38.39122 62.78202 46.57414 0 -1 0 + 1368 429 14 0.417 37.01605 63.08963 47.12747 0 -1 0 + 1369 430 13 -0.834 43.16514 41.31420 47.01379 0 1 0 + 1370 430 14 0.417 42.71409 41.22965 47.85382 0 1 0 + 1371 430 14 0.417 44.05112 68.36565 47.18386 0 0 0 + 1372 431 13 -0.834 47.03179 42.44477 42.46475 1 0 0 + 1373 431 14 0.417 46.12350 42.65285 42.24573 1 0 0 + 1374 431 14 0.417 47.53228 43.19970 42.15516 1 0 0 + 1375 432 13 -0.834 55.35894 54.15040 46.85340 0 -1 0 + 1376 432 14 0.417 54.76544 53.43667 46.61975 0 -1 0 + 1377 432 14 0.417 56.17133 53.71318 47.10853 0 -1 0 + 1378 433 13 -0.834 47.00663 55.28313 38.22800 -1 -2 1 + 1379 433 14 0.417 46.53490 56.00706 38.63987 -1 -2 1 + 1380 433 14 0.417 47.07459 54.61953 38.91449 -1 -2 1 + 1381 434 13 -0.834 57.16336 58.62297 32.33349 -1 0 2 + 1382 434 14 0.417 57.63330 57.80350 32.48798 -1 0 2 + 1383 434 14 0.417 56.24209 58.36680 32.29014 -1 0 2 + 1384 435 13 -0.834 37.23245 47.62479 56.34765 0 1 -1 + 1385 435 14 0.417 37.24274 47.21497 55.48268 0 1 -1 + 1386 435 14 0.417 37.36000 46.89905 56.95860 0 1 -1 + 1387 436 13 -0.834 48.77030 41.06015 29.86683 2 1 0 + 1388 436 14 0.417 48.81141 67.97117 56.39997 2 0 -1 + 1389 436 14 0.417 49.05230 67.78232 30.51123 2 0 0 + 1390 437 13 -0.834 49.10149 56.15638 36.66346 0 0 1 + 1391 437 14 0.417 48.50786 55.61659 36.14146 0 0 1 + 1392 437 14 0.417 48.61812 56.33305 37.47053 0 0 1 + 1393 438 13 -0.834 58.15731 59.39698 29.96092 0 -1 1 + 1394 438 14 0.417 58.20240 59.10993 30.87296 0 -1 1 + 1395 438 14 0.417 57.30076 59.81721 29.88367 0 -1 1 + 1396 439 13 -0.834 59.37068 41.03089 37.87324 1 0 0 + 1397 439 14 0.417 59.56889 41.95335 37.71194 1 0 0 + 1398 439 14 0.417 60.22643 67.97433 37.90167 1 -1 0 + 1399 440 13 -0.834 38.32241 55.03397 50.58952 1 0 0 + 1400 440 14 0.417 38.22793 54.19584 50.13692 1 0 0 + 1401 440 14 0.417 39.21785 55.31153 50.39614 1 0 0 + 1402 441 13 -0.834 36.94673 59.01778 33.00159 1 -1 2 + 1403 441 14 0.417 36.95260 59.97305 32.94091 1 -1 2 + 1404 441 14 0.417 63.71798 58.82680 33.72245 0 -1 2 + 1405 442 13 -0.834 62.50746 54.84239 54.03343 0 -1 0 + 1406 442 14 0.417 61.69710 54.35984 54.19681 0 -1 0 + 1407 442 14 0.417 63.09119 54.20097 53.62833 0 -1 0 + 1408 443 13 -0.834 40.59690 62.80012 38.69405 1 -1 1 + 1409 443 14 0.417 41.53881 62.90970 38.82458 1 -1 1 + 1410 443 14 0.417 40.36980 62.03187 39.21794 1 -1 1 + 1411 444 13 -0.834 37.67477 67.71471 42.59127 0 -1 -1 + 1412 444 14 0.417 38.12213 68.13627 41.85751 0 -1 -1 + 1413 444 14 0.417 38.28279 67.03643 42.88534 0 -1 -1 + 1414 445 13 -0.834 42.73681 50.65782 33.30839 1 1 0 + 1415 445 14 0.417 42.84587 51.15085 34.12157 1 1 0 + 1416 445 14 0.417 42.32631 51.27747 32.70527 1 1 0 + 1417 446 13 -0.834 37.13349 57.05842 55.81927 0 0 0 + 1418 446 14 0.417 37.95375 57.53453 55.68979 0 0 0 + 1419 446 14 0.417 36.99014 56.59807 54.99236 0 0 0 + 1420 447 13 -0.834 61.08039 63.50929 36.52096 -1 0 0 + 1421 447 14 0.417 60.44389 63.87414 37.13579 -1 0 0 + 1422 447 14 0.417 61.70642 63.04107 37.07331 -1 0 0 + 1423 448 13 -0.834 57.12289 46.04019 38.75954 0 0 0 + 1424 448 14 0.417 56.81351 45.55997 39.52760 0 0 0 + 1425 448 14 0.417 57.99543 45.68504 38.58988 0 0 0 + 1426 449 13 -0.834 45.45003 49.45347 49.54397 0 0 -1 + 1427 449 14 0.417 45.96611 49.34591 48.74502 0 0 -1 + 1428 449 14 0.417 46.09930 49.60861 50.22999 0 0 -1 + 1429 450 13 -0.834 37.77009 64.51990 42.66941 1 0 0 + 1430 450 14 0.417 38.49339 64.80040 43.23011 1 0 0 + 1431 450 14 0.417 38.14071 64.50928 41.78694 1 0 0 + 1432 451 13 -0.834 45.78323 57.65378 39.37062 1 0 0 + 1433 451 14 0.417 46.03758 58.03295 40.21190 1 0 0 + 1434 451 14 0.417 44.96217 58.09258 39.14803 1 0 0 + 1435 452 13 -0.834 56.96672 60.41636 47.59314 0 -1 1 + 1436 452 14 0.417 56.18373 60.11455 48.05365 0 -1 1 + 1437 452 14 0.417 56.65889 61.13663 47.04297 0 -1 1 + 1438 453 13 -0.834 52.44356 65.82746 35.82081 -1 -1 0 + 1439 453 14 0.417 53.10567 65.14225 35.91211 -1 -1 0 + 1440 453 14 0.417 52.93741 66.64611 35.86748 -1 -1 0 + 1441 454 13 -0.834 50.70912 51.42252 40.30021 0 0 -1 + 1442 454 14 0.417 50.97387 50.70177 39.72866 0 0 -1 + 1443 454 14 0.417 50.17774 51.98938 39.74116 0 0 -1 + 1444 455 13 -0.834 39.22290 45.94023 39.69239 2 1 -1 + 1445 455 14 0.417 39.63836 46.66722 39.22859 2 1 -1 + 1446 455 14 0.417 38.97218 45.32685 39.00164 2 1 -1 + 1447 456 13 -0.834 43.73041 61.86387 55.46954 2 0 0 + 1448 456 14 0.417 43.61274 62.32163 56.30192 2 0 0 + 1449 456 14 0.417 43.90401 62.55964 54.83549 2 0 0 + 1450 457 13 -0.834 61.51877 56.42039 33.84869 0 0 1 + 1451 457 14 0.417 62.17805 55.74211 33.70200 0 0 1 + 1452 457 14 0.417 62.00943 57.15723 34.21276 0 0 1 + 1453 458 13 -0.834 51.72050 63.63199 42.34406 1 0 1 + 1454 458 14 0.417 51.24482 64.43296 42.56407 1 0 1 + 1455 458 14 0.417 52.62118 63.92057 42.19669 1 0 1 + 1456 459 13 -0.834 54.73666 56.51839 51.73687 0 0 -1 + 1457 459 14 0.417 54.77503 56.56844 52.69200 0 0 -1 + 1458 459 14 0.417 54.91702 57.41111 51.44234 0 0 -1 + 1459 460 13 -0.834 50.97984 54.35591 33.27919 0 1 0 + 1460 460 14 0.417 50.47200 55.12727 33.02747 0 1 0 + 1461 460 14 0.417 50.36917 53.82187 33.78725 0 1 0 + 1462 461 13 -0.834 44.82656 54.45280 36.09973 1 0 2 + 1463 461 14 0.417 45.75766 54.23599 36.14740 1 0 2 + 1464 461 14 0.417 44.76968 55.11700 35.41283 1 0 2 + 1465 462 13 -0.834 58.05791 56.64716 55.29041 1 1 0 + 1466 462 14 0.417 58.98499 56.81997 55.45441 1 1 0 + 1467 462 14 0.417 57.82639 55.96338 55.91897 1 1 0 + 1468 463 13 -0.834 55.95112 61.02029 30.79757 1 0 1 + 1469 463 14 0.417 55.28483 61.63344 30.48711 1 0 1 + 1470 463 14 0.417 55.45357 60.27206 31.12748 1 0 1 + 1471 464 13 -0.834 54.80996 46.88659 45.41700 -1 0 0 + 1472 464 14 0.417 55.42348 46.16300 45.28950 -1 0 0 + 1473 464 14 0.417 54.08129 46.68997 44.82826 -1 0 0 + 1474 465 13 -0.834 60.19361 64.43268 31.92053 0 -1 2 + 1475 465 14 0.417 60.05792 63.85315 32.67017 0 -1 2 + 1476 465 14 0.417 60.47170 63.84993 31.21392 0 -1 2 + 1477 466 13 -0.834 45.55496 65.56032 30.88251 0 -1 1 + 1478 466 14 0.417 45.97644 64.70102 30.89691 0 -1 1 + 1479 466 14 0.417 45.82502 65.97384 31.70248 0 -1 1 + 1480 467 13 -0.834 52.92714 44.06759 29.88429 0 1 0 + 1481 467 14 0.417 52.39641 43.38446 30.29405 0 1 0 + 1482 467 14 0.417 53.79372 43.96686 30.27818 0 1 0 + 1483 468 13 -0.834 40.71534 55.31247 44.93070 1 0 0 + 1484 468 14 0.417 39.81994 55.07165 45.16841 1 0 0 + 1485 468 14 0.417 41.16802 54.47609 44.82218 1 0 0 + 1486 469 13 -0.834 64.04777 59.80626 42.91634 0 -1 -1 + 1487 469 14 0.417 37.09051 60.51146 43.41377 1 -1 -1 + 1488 469 14 0.417 37.01609 59.00291 43.31068 1 -1 -1 + 1489 470 13 -0.834 57.05030 49.72625 41.88829 -1 1 1 + 1490 470 14 0.417 56.75150 50.53290 42.30818 -1 1 1 + 1491 470 14 0.417 57.52176 50.02159 41.10935 -1 1 1 + 1492 471 13 -0.834 62.59447 67.67898 41.14714 -2 -2 1 + 1493 471 14 0.417 63.45155 67.57764 41.56112 -2 -2 1 + 1494 471 14 0.417 61.96974 67.40478 41.81854 -2 -2 1 + 1495 472 13 -0.834 62.98029 58.34420 35.34278 0 0 1 + 1496 472 14 0.417 62.45371 58.26151 36.13783 0 0 1 + 1497 472 14 0.417 63.83636 58.64077 35.65169 0 0 1 + 1498 473 13 -0.834 63.44584 56.74146 44.14484 0 1 -2 + 1499 473 14 0.417 64.13590 56.53036 44.77371 0 1 -2 + 1500 473 14 0.417 62.70665 57.02149 44.68470 0 1 -2 + 1501 474 13 -0.834 44.05905 56.56929 51.60681 1 0 -1 + 1502 474 14 0.417 43.57850 56.15764 52.32504 1 0 -1 + 1503 474 14 0.417 43.90344 55.99747 50.85512 1 0 -1 + 1504 475 13 -0.834 37.49588 59.31379 39.05252 0 0 0 + 1505 475 14 0.417 37.07904 58.45297 39.09112 0 0 0 + 1506 475 14 0.417 37.58867 59.49374 38.11696 0 0 0 + 1507 476 13 -0.834 54.75747 41.52122 56.48609 -1 1 0 + 1508 476 14 0.417 54.79987 42.39714 56.86981 -1 1 0 + 1509 476 14 0.417 54.80582 41.67034 55.54179 -1 1 0 + 1510 477 13 -0.834 42.91665 58.39379 47.91495 1 0 0 + 1511 477 14 0.417 43.70923 58.91951 47.80683 1 0 0 + 1512 477 14 0.417 42.28811 58.98861 48.32409 1 0 0 + 1513 478 13 -0.834 60.63731 64.78822 56.03697 -2 1 -1 + 1514 478 14 0.417 60.86485 63.91302 56.35082 -2 1 -1 + 1515 478 14 0.417 60.50973 65.30321 56.83369 -2 1 -1 + 1516 479 13 -0.834 52.85180 54.69512 43.09842 0 0 1 + 1517 479 14 0.417 52.31485 55.13373 42.43846 0 0 1 + 1518 479 14 0.417 53.08000 53.85428 42.70200 0 0 1 + 1519 480 13 -0.834 51.49497 54.97356 38.95012 -2 1 -1 + 1520 480 14 0.417 50.77717 54.34090 38.97811 -2 1 -1 + 1521 480 14 0.417 51.51597 55.35169 39.82923 -2 1 -1 + 1522 481 13 -0.834 40.46924 62.02458 56.36341 1 0 -1 + 1523 481 14 0.417 40.45814 61.65439 55.48076 1 0 -1 + 1524 481 14 0.417 40.81799 62.90856 56.24853 1 0 -1 + 1525 482 13 -0.834 52.26692 56.29032 45.24820 0 2 1 + 1526 482 14 0.417 51.65227 56.79794 44.71834 0 2 1 + 1527 482 14 0.417 52.43092 55.49973 44.73408 0 2 1 + 1528 483 13 -0.834 53.46372 44.63556 52.39623 -1 1 1 + 1529 483 14 0.417 53.51664 45.03502 53.26448 -1 1 1 + 1530 483 14 0.417 54.08491 45.13343 51.86474 -1 1 1 + 1531 484 13 -0.834 42.90202 49.87822 40.32919 0 2 1 + 1532 484 14 0.417 42.40392 49.63281 41.10889 0 2 1 + 1533 484 14 0.417 42.31302 50.45172 39.83885 0 2 1 + 1534 485 13 -0.834 43.07357 64.57931 39.44006 2 1 1 + 1535 485 14 0.417 42.79300 64.80186 38.55237 2 1 1 + 1536 485 14 0.417 43.26869 65.42268 39.84860 2 1 1 + 1537 486 13 -0.834 38.86691 42.35197 55.12826 1 1 -1 + 1538 486 14 0.417 38.06621 42.87541 55.16185 1 1 -1 + 1539 486 14 0.417 39.52681 42.89488 55.55954 1 1 -1 + 1540 487 13 -0.834 59.15412 47.19863 55.46904 0 -1 0 + 1541 487 14 0.417 59.83963 46.99833 56.10636 0 -1 0 + 1542 487 14 0.417 58.74433 46.35364 55.28381 0 -1 0 + 1543 488 13 -0.834 52.12071 45.94110 44.23903 1 1 0 + 1544 488 14 0.417 51.89927 45.05144 44.51416 1 1 0 + 1545 488 14 0.417 52.26697 45.87115 43.29566 1 1 0 + 1546 489 13 -0.834 41.73140 52.23741 31.27732 0 0 1 + 1547 489 14 0.417 40.84403 52.55314 31.44796 0 0 1 + 1548 489 14 0.417 41.81503 52.26011 30.32405 0 0 1 + 1549 490 13 -0.834 38.46034 66.01701 52.27886 1 0 -1 + 1550 490 14 0.417 39.39276 66.02392 52.49517 1 0 -1 + 1551 490 14 0.417 38.11246 66.80769 52.69121 1 0 -1 + 1552 491 13 -0.834 42.13838 67.12262 54.88509 0 0 -3 + 1553 491 14 0.417 42.22460 67.38235 53.96784 0 0 -3 + 1554 491 14 0.417 42.96673 67.38388 55.28736 0 0 -3 + 1555 492 13 -0.834 37.89607 66.86351 46.16867 -1 -1 -1 + 1556 492 14 0.417 38.03129 66.98073 47.10899 -1 -1 -1 + 1557 492 14 0.417 38.75367 66.60168 45.83369 -1 -1 -1 + 1558 493 13 -0.834 40.37538 58.21424 30.88318 0 -1 0 + 1559 493 14 0.417 41.23010 58.63566 30.79307 0 -1 0 + 1560 493 14 0.417 40.45502 57.40101 30.38463 0 -1 0 + 1561 494 13 -0.834 54.56531 48.85249 32.17940 1 -2 2 + 1562 494 14 0.417 54.90082 48.98086 31.29216 1 -2 2 + 1563 494 14 0.417 54.03604 49.63141 32.35086 1 -2 2 + 1564 495 13 -0.834 63.56488 49.70113 37.88594 0 -1 1 + 1565 495 14 0.417 63.93261 49.40780 37.05228 0 -1 1 + 1566 495 14 0.417 63.98151 50.54765 38.04739 0 -1 1 + 1567 496 13 -0.834 39.26126 54.76920 54.71493 2 -1 2 + 1568 496 14 0.417 38.75402 55.21237 54.03483 2 -1 2 + 1569 496 14 0.417 38.67139 54.73109 55.46781 2 -1 2 + 1570 497 13 -0.834 42.78607 47.20625 49.30057 2 -1 0 + 1571 497 14 0.417 42.93670 46.34815 48.90404 2 -1 0 + 1572 497 14 0.417 43.53800 47.33917 49.87780 2 -1 0 + 1573 498 13 -0.834 59.99490 55.30114 50.55687 0 1 -1 + 1574 498 14 0.417 60.84158 55.66821 50.81111 0 1 -1 + 1575 498 14 0.417 59.38335 56.03363 50.63237 0 1 -1 + 1576 499 13 -0.834 57.95276 49.30660 54.37087 1 -1 -1 + 1577 499 14 0.417 57.34184 49.29544 55.10769 1 -1 -1 + 1578 499 14 0.417 58.55272 48.58151 54.54557 1 -1 -1 + 1579 500 13 -0.834 43.43041 64.04345 57.10111 1 -1 -1 + 1580 500 14 0.417 43.03742 64.07155 30.60210 1 -1 0 + 1581 500 14 0.417 44.26016 64.51104 29.82515 1 -1 0 + 1582 501 13 -0.834 40.71066 57.82778 50.85579 1 -1 -1 + 1583 501 14 0.417 41.04411 57.83612 51.75299 1 -1 -1 + 1584 501 14 0.417 40.96886 58.67633 50.49590 1 -1 -1 + 1585 502 13 -0.834 61.21331 60.53661 39.63578 1 -1 0 + 1586 502 14 0.417 61.87151 61.23113 39.61011 1 -1 0 + 1587 502 14 0.417 61.32085 60.13583 40.49837 1 -1 0 + 1588 503 13 -0.834 43.54081 65.33296 49.47114 1 -1 -1 + 1589 503 14 0.417 42.67637 65.41138 49.06762 1 -1 -1 + 1590 503 14 0.417 43.36562 64.99829 50.35065 1 -1 -1 + 1591 504 13 -0.834 50.27329 53.06087 30.87109 -1 0 1 + 1592 504 14 0.417 50.38769 53.42204 29.99204 -1 0 1 + 1593 504 14 0.417 50.86354 53.57620 31.42092 -1 0 1 + 1594 505 13 -0.834 40.29157 66.01889 32.67757 0 -1 0 + 1595 505 14 0.417 40.18198 66.27998 31.76320 0 -1 0 + 1596 505 14 0.417 39.39873 65.90460 33.00317 0 -1 0 + 1597 506 13 -0.834 48.15372 67.97019 44.25255 1 -1 1 + 1598 506 14 0.417 47.34263 67.52534 44.49854 1 -1 1 + 1599 506 14 0.417 47.87159 41.31478 43.68328 1 0 1 + 1600 507 13 -0.834 53.38019 63.98437 38.13827 0 0 -1 + 1601 507 14 0.417 54.19463 63.69976 37.72362 0 0 -1 + 1602 507 14 0.417 53.59582 64.82739 38.53711 0 0 -1 + 1603 508 13 -0.834 40.87597 58.12305 53.50808 0 0 0 + 1604 508 14 0.417 40.17916 58.26636 54.14852 0 0 0 + 1605 508 14 0.417 41.66044 58.48234 53.92256 0 0 0 + 1606 509 13 -0.834 38.19887 52.28056 36.30714 2 0 -1 + 1607 509 14 0.417 38.20463 53.19038 36.60452 2 0 -1 + 1608 509 14 0.417 38.09924 52.33929 35.35695 2 0 -1 + 1609 510 13 -0.834 49.63883 57.32410 43.72359 0 -1 0 + 1610 510 14 0.417 49.72446 58.17232 43.28833 0 -1 0 + 1611 510 14 0.417 48.76183 57.33851 44.10688 0 -1 0 + 1612 511 13 -0.834 42.58791 59.61362 29.86455 1 0 0 + 1613 511 14 0.417 43.07246 58.91969 56.78877 1 0 -1 + 1614 511 14 0.417 42.69535 60.38141 56.67447 1 0 -1 + 1615 512 13 -0.834 50.76111 60.95449 46.98165 -1 0 -1 + 1616 512 14 0.417 50.90477 61.15450 47.90663 -1 0 -1 + 1617 512 14 0.417 50.20825 61.66875 46.66473 -1 0 -1 + 1618 513 13 -0.834 43.18406 55.61939 48.08539 1 0 0 + 1619 513 14 0.417 43.11229 56.55752 47.90932 1 0 0 + 1620 513 14 0.417 44.01330 55.36231 47.68228 1 0 0 + 1621 514 13 -0.834 54.67377 64.76817 41.62522 1 0 1 + 1622 514 14 0.417 54.39407 65.19031 40.81294 1 0 1 + 1623 514 14 0.417 55.29742 65.38243 42.01250 1 0 1 + 1624 515 13 -0.834 53.87383 68.12810 51.72031 0 -1 0 + 1625 515 14 0.417 53.06918 41.24938 51.55887 0 0 0 + 1626 515 14 0.417 53.74278 67.72971 52.58074 0 -1 0 + 1627 516 13 -0.834 38.24785 41.26767 33.50598 2 0 0 + 1628 516 14 0.417 38.16490 67.75301 33.15337 2 -1 0 + 1629 516 14 0.417 37.95757 41.83753 32.79377 2 0 0 + 1630 517 13 -0.834 47.35008 61.96125 42.94580 2 -2 0 + 1631 517 14 0.417 47.46077 62.90828 43.03015 2 -2 0 + 1632 517 14 0.417 47.09087 61.83022 42.03373 2 -2 0 + 1633 518 13 -0.834 40.55210 54.00820 41.89137 1 -1 1 + 1634 518 14 0.417 39.80099 54.24986 41.34946 1 -1 1 + 1635 518 14 0.417 40.19429 53.40377 42.54166 1 -1 1 + 1636 519 13 -0.834 57.17705 64.40362 55.44286 1 -1 -1 + 1637 519 14 0.417 56.34510 64.78670 55.72097 1 -1 -1 + 1638 519 14 0.417 57.64987 65.12814 55.03330 1 -1 -1 + 1639 520 13 -0.834 41.86955 59.84132 42.65268 0 -1 1 + 1640 520 14 0.417 41.72011 59.11980 43.26367 0 -1 1 + 1641 520 14 0.417 42.24995 60.53605 43.19017 0 -1 1 + 1642 521 13 -0.834 61.62566 57.26645 46.18447 0 -1 -1 + 1643 521 14 0.417 60.68119 57.41642 46.22577 0 -1 -1 + 1644 521 14 0.417 61.98987 57.84356 46.85569 0 -1 -1 + 1645 522 13 -0.834 46.82701 65.68647 41.03579 0 0 0 + 1646 522 14 0.417 46.01385 65.85266 41.51264 0 0 0 + 1647 522 14 0.417 47.44009 65.38297 41.70531 0 0 0 + 1648 523 13 -0.834 54.12960 45.94549 32.81485 0 0 1 + 1649 523 14 0.417 53.25962 45.65636 32.53955 0 0 1 + 1650 523 14 0.417 54.18942 46.85072 32.50950 0 0 1 + 1651 524 13 -0.834 43.71268 59.97805 32.34985 1 1 0 + 1652 524 14 0.417 43.46300 59.27568 32.95033 1 1 0 + 1653 524 14 0.417 42.94131 60.10757 31.79808 1 1 0 + 1654 525 13 -0.834 50.10604 48.47250 49.62054 1 0 -2 + 1655 525 14 0.417 50.96037 48.77303 49.31064 1 0 -2 + 1656 525 14 0.417 50.19320 48.44287 50.57331 1 0 -2 + 1657 526 13 -0.834 54.68660 60.38920 43.62499 0 0 0 + 1658 526 14 0.417 54.62862 59.85089 42.83561 0 0 0 + 1659 526 14 0.417 53.78667 60.44045 43.94712 0 0 0 + 1660 527 13 -0.834 56.35115 44.75736 40.87552 0 -1 -1 + 1661 527 14 0.417 56.99705 44.99197 41.54186 0 -1 -1 + 1662 527 14 0.417 55.55387 44.56808 41.37024 0 -1 -1 + 1663 528 13 -0.834 48.77009 62.36934 40.44473 0 -1 0 + 1664 528 14 0.417 49.30266 62.60520 41.20432 0 -1 0 + 1665 528 14 0.417 49.04689 62.97756 39.75939 0 -1 0 + 1666 529 13 -0.834 45.88757 58.55209 41.94547 0 1 0 + 1667 529 14 0.417 46.76719 58.27665 42.20365 0 1 0 + 1668 529 14 0.417 45.35604 57.75963 42.02128 0 1 0 + 1669 530 13 -0.834 39.44116 52.22097 43.65725 1 0 2 + 1670 530 14 0.417 39.30570 52.06689 44.59221 1 0 2 + 1671 530 14 0.417 38.61744 52.60378 43.35530 1 0 2 + 1672 531 13 -0.834 43.95976 66.73852 41.23250 1 0 1 + 1673 531 14 0.417 44.64454 67.13772 40.69588 1 0 1 + 1674 531 14 0.417 43.40678 67.47232 41.50081 1 0 1 + 1675 532 13 -0.834 62.99634 65.50241 54.70446 0 -1 -1 + 1676 532 14 0.417 63.58398 64.98613 55.25617 0 -1 -1 + 1677 532 14 0.417 62.12519 65.14960 54.88585 0 -1 -1 + 1678 533 13 -0.834 62.92898 53.27582 44.77167 0 0 0 + 1679 533 14 0.417 62.08998 53.60880 45.09018 0 0 0 + 1680 533 14 0.417 62.85751 52.32504 44.85618 0 0 0 + 1681 534 13 -0.834 63.31201 43.08081 48.29805 -1 0 -1 + 1682 534 14 0.417 63.01276 42.23705 47.95930 -1 0 -1 + 1683 534 14 0.417 63.67142 43.53221 47.53431 -1 0 -1 + 1684 535 13 -0.834 47.11867 63.34781 55.06249 0 0 -1 + 1685 535 14 0.417 47.19267 64.30022 55.00160 0 0 -1 + 1686 535 14 0.417 46.22495 63.15783 54.77716 0 0 -1 + 1687 536 13 -0.834 60.37216 67.91341 52.27568 -1 0 0 + 1688 536 14 0.417 61.05051 68.14950 52.90839 -1 0 0 + 1689 536 14 0.417 60.81546 67.93922 51.42771 -1 0 0 + 1690 537 13 -0.834 60.04315 43.26291 35.25445 -1 1 1 + 1691 537 14 0.417 60.42501 44.05815 35.62593 -1 1 1 + 1692 537 14 0.417 60.79709 42.72574 35.01102 -1 1 1 + 1693 538 13 -0.834 53.03851 55.52589 47.75769 0 0 -1 + 1694 538 14 0.417 53.93635 55.46537 47.43136 0 0 -1 + 1695 538 14 0.417 52.51527 55.73342 46.98347 0 0 -1 + 1696 539 13 -0.834 37.91895 50.43697 56.37325 0 0 0 + 1697 539 14 0.417 37.51622 49.56884 56.35299 0 0 0 + 1698 539 14 0.417 38.37591 50.50915 55.53527 0 0 0 + 1699 540 13 -0.834 50.50006 63.56852 38.27177 1 1 0 + 1700 540 14 0.417 50.22462 63.18436 37.43944 1 1 0 + 1701 540 14 0.417 51.44083 63.71275 38.16986 1 1 0 + 1702 541 13 -0.834 49.44600 43.95446 42.01861 0 0 1 + 1703 541 14 0.417 49.59639 44.80378 41.60354 0 0 1 + 1704 541 14 0.417 49.73882 44.07372 42.92211 0 0 1 + 1705 542 13 -0.834 50.98365 47.23031 39.51901 1 0 1 + 1706 542 14 0.417 51.18743 48.09631 39.16579 1 0 1 + 1707 542 14 0.417 50.03928 47.13635 39.39410 1 0 1 + 1708 543 13 -0.834 45.54625 60.20130 44.30493 0 0 2 + 1709 543 14 0.417 46.27140 60.62480 43.84553 0 0 2 + 1710 543 14 0.417 45.09838 59.69256 43.62904 0 0 2 + 1711 544 13 -0.834 60.48207 53.69772 48.42686 0 0 1 + 1712 544 14 0.417 60.03677 54.31581 49.00644 0 0 1 + 1713 544 14 0.417 59.89364 52.94407 48.38216 0 0 1 + 1714 545 13 -0.834 63.04952 45.83903 48.97963 -1 1 1 + 1715 545 14 0.417 63.88202 45.63831 49.40729 -1 1 1 + 1716 545 14 0.417 62.76408 45.00498 48.60667 -1 1 1 + 1717 546 13 -0.834 40.62890 44.95273 52.60003 2 -1 -2 + 1718 546 14 0.417 41.29110 45.55853 52.26721 2 -1 -2 + 1719 546 14 0.417 40.33885 45.34348 53.42431 2 -1 -2 + 1720 547 13 -0.834 39.91743 46.12102 55.72693 -1 1 -1 + 1721 547 14 0.417 40.70381 45.68274 56.05216 -1 1 -1 + 1722 547 14 0.417 39.19323 45.65943 56.14967 -1 1 -1 + 1723 548 13 -0.834 42.06829 45.07566 41.79962 0 0 -1 + 1724 548 14 0.417 41.61985 45.91039 41.93531 0 0 -1 + 1725 548 14 0.417 41.86481 44.56390 42.58253 0 0 -1 + 1726 549 13 -0.834 44.17588 49.40877 37.86902 1 1 0 + 1727 549 14 0.417 43.85185 49.35470 38.76808 1 1 0 + 1728 549 14 0.417 43.95346 48.56183 37.48242 1 1 0 + 1729 550 13 -0.834 52.64793 63.92130 45.68237 0 1 0 + 1730 550 14 0.417 52.63502 62.96908 45.58561 0 1 0 + 1731 550 14 0.417 52.43571 64.07178 46.60356 0 1 0 + 1732 551 13 -0.834 51.57615 43.64864 38.83377 1 1 0 + 1733 551 14 0.417 51.74260 43.03820 38.11551 1 1 0 + 1734 551 14 0.417 52.20192 44.35945 38.69449 1 1 0 + 1735 552 13 -0.834 62.02099 63.12241 47.73587 0 1 0 + 1736 552 14 0.417 61.17806 62.75352 47.99973 0 1 0 + 1737 552 14 0.417 62.48263 62.39363 47.32116 0 1 0 + 1738 553 13 -0.834 38.41497 51.40373 50.93034 1 1 0 + 1739 553 14 0.417 37.60807 51.12879 50.49494 1 1 0 + 1740 553 14 0.417 38.99796 51.65996 50.21571 1 1 0 + 1741 554 13 -0.834 51.96339 44.25313 49.02477 0 0 0 + 1742 554 14 0.417 52.81680 44.60151 49.28274 0 0 0 + 1743 554 14 0.417 52.16570 43.57682 48.37831 0 0 0 + 1744 555 13 -0.834 43.58422 51.42052 49.88959 0 1 -1 + 1745 555 14 0.417 42.74054 51.00549 50.06897 0 1 -1 + 1746 555 14 0.417 44.20160 50.69175 49.82657 0 1 -1 + 1747 556 13 -0.834 52.39836 53.43568 49.29165 1 0 -1 + 1748 556 14 0.417 51.88756 52.90169 48.68323 1 0 -1 + 1749 556 14 0.417 52.64451 54.20889 48.78391 1 0 -1 + 1750 557 13 -0.834 57.76885 46.61656 49.32842 0 1 0 + 1751 557 14 0.417 57.83718 46.26991 48.43879 0 1 0 + 1752 557 14 0.417 58.65246 46.53329 49.68694 0 1 0 + 1753 558 13 -0.834 59.20868 56.75211 36.79427 0 1 -1 + 1754 558 14 0.417 59.74268 56.20033 36.22276 0 1 -1 + 1755 558 14 0.417 58.75094 56.13459 37.36470 0 1 -1 + 1756 559 13 -0.834 51.74055 42.45875 36.24184 0 1 1 + 1757 559 14 0.417 51.04879 41.79745 36.22260 0 1 1 + 1758 559 14 0.417 52.52794 41.99055 35.96429 0 1 1 + 1759 560 13 -0.834 56.37631 67.32150 33.05439 -1 0 1 + 1760 560 14 0.417 56.52797 66.39716 33.25152 -1 0 1 + 1761 560 14 0.417 56.88845 67.79399 33.71068 -1 0 1 + 1762 561 13 -0.834 54.61713 62.99597 56.69158 0 1 -1 + 1763 561 14 0.417 54.59393 63.94258 56.83172 0 1 -1 + 1764 561 14 0.417 54.12883 62.86158 55.87934 0 1 -1 + 1765 562 13 -0.834 59.12420 67.78462 34.49420 0 -1 1 + 1766 562 14 0.417 59.61921 67.94665 33.69111 0 -1 1 + 1767 562 14 0.417 59.22686 41.21594 35.00547 0 0 1 + 1768 563 13 -0.834 63.35827 53.14027 38.43168 -1 0 0 + 1769 563 14 0.417 62.48186 53.05933 38.05538 -1 0 0 + 1770 563 14 0.417 63.87715 53.55740 37.74392 -1 0 0 + 1771 564 13 -0.834 50.05518 64.80335 44.94078 1 0 -2 + 1772 564 14 0.417 50.16173 65.71408 44.66608 1 0 -2 + 1773 564 14 0.417 50.94818 64.48993 45.08424 1 0 -2 + 1774 565 13 -0.834 61.91076 61.67486 44.00650 0 -3 0 + 1775 565 14 0.417 61.40514 60.86646 44.09077 0 -3 0 + 1776 565 14 0.417 62.58390 61.60857 44.68380 0 -3 0 + 1777 566 13 -0.834 61.53884 41.33016 50.02212 -1 0 -1 + 1778 566 14 0.417 61.75835 68.35836 49.15591 -1 -1 -1 + 1779 566 14 0.417 62.19075 42.01255 50.18215 -1 0 -1 + 1780 567 13 -0.834 54.81641 49.94673 49.66324 0 -1 -1 + 1781 567 14 0.417 54.81533 50.72359 50.22249 0 -1 -1 + 1782 567 14 0.417 53.94410 49.93341 49.26932 0 -1 -1 + 1783 568 13 -0.834 60.68933 64.00249 53.56679 -1 -1 -1 + 1784 568 14 0.417 60.72666 63.10922 53.90872 -1 -1 -1 + 1785 568 14 0.417 60.37485 64.52808 54.30238 -1 -1 -1 + 1786 569 13 -0.834 55.51605 42.60469 53.96890 0 -1 0 + 1787 569 14 0.417 55.82084 42.66633 53.06360 0 -1 0 + 1788 569 14 0.417 54.99565 43.39708 54.10137 0 -1 0 + 1789 570 13 -0.834 43.79008 68.23755 52.31171 2 -1 1 + 1790 570 14 0.417 43.47705 41.06627 51.42954 2 0 1 + 1791 570 14 0.417 44.72624 68.07073 52.20206 2 -1 1 + 1792 571 13 -0.834 40.19615 44.94623 32.57234 0 0 1 + 1793 571 14 0.417 40.90940 45.49825 32.25173 0 0 1 + 1794 571 14 0.417 40.42796 44.75889 33.48196 0 0 1 + 1795 572 13 -0.834 51.93921 56.60019 36.60262 -1 0 1 + 1796 572 14 0.417 51.78399 56.35099 37.51368 -1 0 1 + 1797 572 14 0.417 51.06469 56.74242 36.24039 -1 0 1 + 1798 573 13 -0.834 61.66916 50.48338 53.29865 -1 0 -2 + 1799 573 14 0.417 61.63036 50.41309 54.25248 -1 0 -2 + 1800 573 14 0.417 60.77283 50.69388 53.03687 -1 0 -2 + 1801 574 13 -0.834 51.74160 54.87485 56.16871 0 -1 0 + 1802 574 14 0.417 50.91429 55.26706 56.44795 0 -1 0 + 1803 574 14 0.417 51.91124 55.25931 55.30869 0 -1 0 + 1804 575 13 -0.834 40.85698 68.18248 30.13155 1 -1 0 + 1805 575 14 0.417 41.30492 67.87357 56.71541 1 -1 -1 + 1806 575 14 0.417 41.55175 41.19073 30.66952 1 0 0 + 1807 576 13 -0.834 50.89809 58.89690 54.50288 -1 0 0 + 1808 576 14 0.417 50.06229 58.64352 54.89466 -1 0 0 + 1809 576 14 0.417 51.37024 59.33797 55.20914 -1 0 0 + 1810 577 13 -0.834 58.37524 67.95427 49.91095 0 1 0 + 1811 577 14 0.417 57.83519 41.29391 50.25604 0 2 0 + 1812 577 14 0.417 59.26942 68.19076 50.15744 0 1 0 + 1813 578 13 -0.834 51.40785 46.48357 30.68744 1 0 1 + 1814 578 14 0.417 52.21871 45.99275 30.55389 1 0 1 + 1815 578 14 0.417 50.76683 45.82189 30.94725 1 0 1 + 1816 579 13 -0.834 57.04032 43.52295 36.91237 0 0 0 + 1817 579 14 0.417 56.97310 44.35969 36.45239 0 0 0 + 1818 579 14 0.417 57.91622 43.53095 37.29833 0 0 0 + 1819 580 13 -0.834 48.05479 47.92450 33.11226 0 0 1 + 1820 580 14 0.417 47.68291 48.79527 32.97186 0 0 1 + 1821 580 14 0.417 48.92592 48.09081 33.47242 0 0 1 + 1822 581 13 -0.834 52.31083 59.89064 56.95945 1 -2 -1 + 1823 581 14 0.417 51.77727 60.32576 30.25310 1 -2 0 + 1824 581 14 0.417 52.84806 60.59010 56.58744 1 -2 -1 + 1825 582 13 -0.834 49.28190 53.14534 38.62511 0 0 1 + 1826 582 14 0.417 48.56647 53.70668 38.92395 0 0 1 + 1827 582 14 0.417 48.86634 52.52585 38.02526 0 0 1 + 1828 583 13 -0.834 48.15214 51.90611 34.43290 2 0 0 + 1829 583 14 0.417 48.57405 51.97443 33.57642 2 0 0 + 1830 583 14 0.417 47.22654 51.76503 34.23389 2 0 0 + 1831 584 13 -0.834 61.27546 54.09168 30.34511 0 1 1 + 1832 584 14 0.417 61.26898 53.84689 31.27046 0 1 1 + 1833 584 14 0.417 62.02427 53.62196 29.97785 0 1 1 + 1834 585 13 -0.834 47.15916 50.47662 53.78471 0 -1 0 + 1835 585 14 0.417 47.32648 50.93912 54.60588 0 -1 0 + 1836 585 14 0.417 46.29671 50.78520 53.50690 0 -1 0 + 1837 586 13 -0.834 58.58091 63.09753 49.23949 0 -1 1 + 1838 586 14 0.417 59.43607 63.50227 49.38484 0 -1 1 + 1839 586 14 0.417 58.76326 62.34843 48.67219 0 -1 1 + 1840 587 13 -0.834 55.82082 49.65937 30.11648 0 1 1 + 1841 587 14 0.417 56.52757 49.92139 30.70647 0 1 1 + 1842 587 14 0.417 55.68213 50.42183 56.92602 0 1 0 + 1843 588 13 -0.834 63.79581 52.53565 53.17702 0 -2 1 + 1844 588 14 0.417 36.89869 52.41207 52.35479 1 -2 1 + 1845 588 14 0.417 63.12882 51.84908 53.17487 0 -2 1 + 1846 589 13 -0.834 58.30874 56.36537 43.52715 0 0 3 + 1847 589 14 0.417 58.58025 56.80205 44.33452 0 0 3 + 1848 589 14 0.417 57.40732 56.09029 43.69457 0 0 3 + 1849 590 13 -0.834 38.42652 61.06904 33.48425 0 -2 -1 + 1850 590 14 0.417 39.08604 61.75763 33.56856 0 -2 -1 + 1851 590 14 0.417 38.90648 60.25628 33.64334 0 -2 -1 + 1852 591 13 -0.834 46.61439 51.58566 41.81121 1 -1 0 + 1853 591 14 0.417 46.97646 51.37067 42.67082 1 -1 0 + 1854 591 14 0.417 46.41089 50.73724 41.41750 1 -1 0 + 1855 592 13 -0.834 60.01555 43.31814 42.71405 1 0 1 + 1856 592 14 0.417 60.52150 42.79903 43.33920 1 0 1 + 1857 592 14 0.417 59.90024 42.74003 41.95989 1 0 1 + 1858 593 13 -0.834 44.88246 59.34852 51.75271 1 0 -1 + 1859 593 14 0.417 45.75263 59.37400 52.15069 1 0 -1 + 1860 593 14 0.417 44.67274 58.41644 51.69374 1 0 -1 + 1861 594 13 -0.834 58.22051 53.10280 51.15729 0 -1 0 + 1862 594 14 0.417 58.53381 52.60654 51.91346 0 -1 0 + 1863 594 14 0.417 58.92607 53.72100 50.96688 0 -1 0 + 1864 595 13 -0.834 52.85332 67.67658 42.66705 0 -1 0 + 1865 595 14 0.417 53.29462 67.40699 41.86157 0 -1 0 + 1866 595 14 0.417 53.28090 67.16860 43.35652 0 -1 0 + 1867 596 13 -0.834 60.42773 53.38162 37.56585 0 0 1 + 1868 596 14 0.417 60.55482 53.97513 38.30601 0 0 1 + 1869 596 14 0.417 59.53313 53.05721 37.66924 0 0 1 + 1870 597 13 -0.834 56.52028 65.87791 50.38146 0 0 1 + 1871 597 14 0.417 56.94337 66.73645 50.39389 0 0 1 + 1872 597 14 0.417 57.02985 65.35034 50.99649 0 0 1 + 1873 598 13 -0.834 54.80064 62.49993 33.68680 1 0 1 + 1874 598 14 0.417 55.58425 61.96146 33.79744 1 0 1 + 1875 598 14 0.417 55.10591 63.27334 33.21259 1 0 1 + 1876 599 13 -0.834 44.11783 61.90196 34.52932 1 1 -1 + 1877 599 14 0.417 44.98641 61.86349 34.92975 1 1 -1 + 1878 599 14 0.417 44.21923 61.44892 33.69223 1 1 -1 + 1879 600 13 -0.834 47.64060 51.80694 44.33090 -1 -1 0 + 1880 600 14 0.417 48.33775 51.24158 44.66345 -1 -1 0 + 1881 600 14 0.417 47.96940 52.69619 44.46262 -1 -1 0 + 1882 601 13 -0.834 56.93644 64.17109 32.73010 0 -2 0 + 1883 601 14 0.417 57.35484 63.79547 31.95543 0 -2 0 + 1884 601 14 0.417 57.46604 63.85913 33.46389 0 -2 0 + 1885 602 13 -0.834 40.19928 60.95715 53.68963 1 0 -1 + 1886 602 14 0.417 41.08822 60.76154 53.39341 1 0 -1 + 1887 602 14 0.417 39.80336 61.43545 52.96114 1 0 -1 + 1888 603 13 -0.834 56.02366 41.52320 41.07986 0 1 0 + 1889 603 14 0.417 55.42766 41.48842 40.33165 0 1 0 + 1890 603 14 0.417 55.93467 42.41489 41.41631 0 1 0 + 1891 604 13 -0.834 52.35261 67.43639 29.83633 -1 0 0 + 1892 604 14 0.417 53.08703 67.77971 56.69878 -1 0 -1 + 1893 604 14 0.417 51.97673 68.20568 30.26426 -1 0 0 + 1894 605 13 -0.834 51.14102 49.90060 37.90539 1 0 1 + 1895 605 14 0.417 51.41236 49.08269 37.48865 1 0 1 + 1896 605 14 0.417 50.32915 50.13989 37.45830 1 0 1 + 1897 606 13 -0.834 48.40753 57.18555 40.43062 0 0 0 + 1898 606 14 0.417 47.74030 57.19949 39.74445 0 0 0 + 1899 606 14 0.417 48.68357 58.09814 40.51553 0 0 0 + 1900 607 13 -0.834 38.43185 54.52830 40.23522 1 -2 1 + 1901 607 14 0.417 37.76601 54.24704 40.86274 1 -2 1 + 1902 607 14 0.417 37.95756 54.62565 39.40951 1 -2 1 + 1903 608 13 -0.834 52.97765 52.38562 41.57118 0 0 0 + 1904 608 14 0.417 52.16773 52.00413 41.23247 0 0 0 + 1905 608 14 0.417 53.62059 51.67937 41.50742 0 0 0 + 1906 609 13 -0.834 52.82978 61.35779 35.40768 0 1 -2 + 1907 609 14 0.417 53.63682 61.71145 35.03372 0 1 -2 + 1908 609 14 0.417 53.10766 60.57217 35.87865 0 1 -2 + 1909 610 13 -0.834 55.37636 43.79165 30.66790 0 0 0 + 1910 610 14 0.417 55.82860 43.25432 31.31827 0 0 0 + 1911 610 14 0.417 55.97415 44.52040 30.50110 0 0 0 + 1912 611 13 -0.834 37.90570 54.55715 45.50029 1 -2 -1 + 1913 611 14 0.417 37.12871 54.09851 45.18066 1 -2 -1 + 1914 611 14 0.417 38.24821 53.99402 46.19441 1 -2 -1 + 1915 612 13 -0.834 60.01324 50.96528 45.16358 1 1 0 + 1916 612 14 0.417 59.85669 51.13906 44.23539 1 1 0 + 1917 612 14 0.417 59.48415 50.19096 45.35532 1 1 0 + 1918 613 13 -0.834 38.84394 52.32942 30.93040 2 1 0 + 1919 613 14 0.417 38.51878 51.61086 30.38802 2 1 0 + 1920 613 14 0.417 38.41000 53.10831 30.58218 2 1 0 + 1921 614 13 -0.834 38.99542 61.66171 44.80992 1 0 2 + 1922 614 14 0.417 38.78488 60.74588 44.99207 1 0 2 + 1923 614 14 0.417 39.68427 61.62223 44.14648 1 0 2 + 1924 615 13 -0.834 57.70791 41.72720 55.47643 0 1 -2 + 1925 615 14 0.417 57.25844 41.36846 56.24163 0 1 -2 + 1926 615 14 0.417 57.00496 41.93588 54.86116 0 1 -2 + 1927 616 13 -0.834 58.08999 54.20225 35.53764 0 -1 0 + 1928 616 14 0.417 58.28608 53.46338 36.11372 0 -1 0 + 1929 616 14 0.417 57.15628 54.11553 35.34551 0 -1 0 + 1930 617 13 -0.834 53.05217 52.71850 54.07873 0 0 -1 + 1931 617 14 0.417 52.72353 53.45661 54.59199 0 0 -1 + 1932 617 14 0.417 52.69237 51.94509 54.51306 0 0 -1 + 1933 618 13 -0.834 49.92059 65.13477 35.13462 0 1 1 + 1934 618 14 0.417 50.86780 65.25694 35.19866 0 1 1 + 1935 618 14 0.417 49.79534 64.18846 35.20565 0 1 1 + 1936 619 13 -0.834 41.32410 62.50943 46.98364 1 -1 0 + 1937 619 14 0.417 40.63048 62.20572 46.39807 1 -1 0 + 1938 619 14 0.417 41.96090 61.79482 46.99226 1 -1 0 + 1939 620 13 -0.834 53.94559 67.39201 49.11860 0 0 0 + 1940 620 14 0.417 54.46912 66.60137 48.98810 0 0 0 + 1941 620 14 0.417 54.03461 67.58755 50.05138 0 0 0 + 1942 621 13 -0.834 62.73724 52.28919 56.37358 -2 0 0 + 1943 621 14 0.417 61.94239 51.76764 56.26203 -2 0 0 + 1944 621 14 0.417 63.44036 51.64333 56.44233 -2 0 0 + 1945 622 13 -0.834 40.38118 67.16060 39.18721 2 1 1 + 1946 622 14 0.417 41.33280 67.21360 39.09858 2 1 1 + 1947 622 14 0.417 40.05780 67.12713 38.28691 2 1 1 + 1948 623 13 -0.834 62.86517 42.00727 34.57539 -1 0 -1 + 1949 623 14 0.417 63.37239 42.81882 34.59420 -1 0 -1 + 1950 623 14 0.417 63.40838 41.39624 34.07760 -1 0 -1 + 1951 624 13 -0.834 45.52270 49.32960 34.34348 1 -1 1 + 1952 624 14 0.417 45.92383 49.19413 33.48500 1 -1 1 + 1953 624 14 0.417 45.24004 50.24407 34.33468 1 -1 1 + 1954 625 13 -0.834 61.03811 44.77668 56.49913 1 1 0 + 1955 625 14 0.417 60.72892 43.87199 56.45248 1 1 0 + 1956 625 14 0.417 60.93423 45.11202 55.60864 1 1 0 + 1957 626 13 -0.834 37.82896 51.65548 39.75440 0 1 1 + 1958 626 14 0.417 37.05574 52.05171 39.35268 0 1 1 + 1959 626 14 0.417 38.46628 52.36806 39.80236 0 1 1 + 1960 627 13 -0.834 57.87448 65.36125 35.56679 -1 -1 0 + 1961 627 14 0.417 58.45940 64.84211 35.01489 -1 -1 0 + 1962 627 14 0.417 58.01580 66.26448 35.28319 -1 -1 0 + 1963 628 13 -0.834 41.02352 64.37669 36.41484 0 0 1 + 1964 628 14 0.417 40.85775 63.95254 37.25679 0 0 1 + 1965 628 14 0.417 41.32667 63.66948 35.84545 0 0 1 + 1966 629 13 -0.834 48.62923 67.86173 41.06030 1 0 1 + 1967 629 14 0.417 48.15680 41.13844 41.58283 1 1 1 + 1968 629 14 0.417 47.94185 67.35115 40.63246 1 0 1 + 1969 630 13 -0.834 57.99331 55.69311 47.88478 1 2 0 + 1970 630 14 0.417 57.70999 55.65425 48.79826 1 2 0 + 1971 630 14 0.417 57.37284 55.13407 47.41709 1 2 0 + 1972 631 13 -0.834 48.67013 62.47689 45.75332 -1 -1 0 + 1973 631 14 0.417 49.00300 63.35392 45.56291 -1 -1 0 + 1974 631 14 0.417 48.17776 62.23177 44.96992 -1 -1 0 + 1975 632 13 -0.834 63.70160 54.96100 33.30497 -1 0 0 + 1976 632 14 0.417 64.21034 55.41699 32.63452 -1 0 0 + 1977 632 14 0.417 36.84822 54.18301 33.51151 0 0 0 + 1978 633 13 -0.834 61.71933 50.02843 40.52579 1 0 -1 + 1979 633 14 0.417 61.89605 49.89083 39.59516 1 0 -1 + 1980 633 14 0.417 61.20325 50.83404 40.55551 1 0 -1 + 1981 634 13 -0.834 49.51254 64.46386 53.41539 0 -1 -1 + 1982 634 14 0.417 48.93704 63.81647 53.00803 0 -1 -1 + 1983 634 14 0.417 49.96102 63.98252 54.11066 0 -1 -1 + 1984 635 13 -0.834 49.54405 44.64373 31.53722 1 2 1 + 1985 635 14 0.417 49.17415 44.45447 32.39954 1 2 1 + 1986 635 14 0.417 48.78808 44.87386 30.99705 1 2 1 + 1987 636 13 -0.834 55.54392 65.92737 37.61921 0 -1 -1 + 1988 636 14 0.417 56.11408 65.75233 38.36791 0 -1 -1 + 1989 636 14 0.417 56.12096 66.32174 36.96519 0 -1 -1 + 1990 637 13 -0.834 55.12269 51.83986 35.86341 1 0 1 + 1991 637 14 0.417 55.56426 51.26412 35.23910 1 0 1 + 1992 637 14 0.417 54.23658 51.93728 35.51477 1 0 1 + 1993 638 13 -0.834 55.63681 62.23759 37.50835 1 -1 0 + 1994 638 14 0.417 55.30920 61.35525 37.33403 1 -1 0 + 1995 638 14 0.417 56.23965 62.41667 36.78672 1 -1 0 + 1996 639 13 -0.834 39.91450 42.04260 35.59226 0 0 0 + 1997 639 14 0.417 39.72903 41.27571 36.13422 0 0 0 + 1998 639 14 0.417 39.23583 42.02933 34.91737 0 0 0 + 1999 640 13 -0.834 48.26433 59.84813 40.16126 0 1 0 + 2000 640 14 0.417 48.74870 60.67004 40.23938 0 1 0 + 2001 640 14 0.417 47.50743 60.06639 39.61748 0 1 0 + 2002 641 13 -0.834 57.35097 49.28414 48.37687 1 1 1 + 2003 641 14 0.417 57.35715 48.51028 48.94022 1 1 1 + 2004 641 14 0.417 56.55074 49.75049 48.61854 1 1 1 + +Velocities + + 1 -0.000671 -0.002823 0.003832 + 2 -0.001597 0.002405 -0.003777 + 3 0.005494 0.003807 -0.002300 + 4 -0.000077 0.004524 -0.000287 + 5 0.003116 -0.007135 -0.034325 + 6 -0.006676 0.004889 -0.001939 + 7 0.003499 -0.004774 0.000159 + 8 -0.003460 0.000694 0.000994 + 9 -0.000065 -0.001353 -0.002848 + 10 -0.001260 -0.002649 0.000699 + 11 -0.002820 -0.002457 -0.005671 + 12 0.005156 -0.005914 0.000984 + 13 -0.002342 -0.001592 0.004306 + 14 0.004397 -0.000231 0.003308 + 15 -0.003258 -0.000006 0.001838 + 16 -0.001637 -0.004429 0.003154 + 17 0.007073 -0.000472 -0.003331 + 18 -0.003380 -0.001390 0.005013 + 19 -0.011019 -0.005332 -0.010451 + 20 -0.005433 0.000844 0.004938 + 21 0.002988 0.000244 -0.009941 + 22 -0.003695 0.006546 -0.007678 + 23 0.009473 0.023276 0.019457 + 24 -0.010016 -0.024193 0.018017 + 25 0.004015 0.008726 -0.000397 + 26 -0.001741 -0.001861 0.007862 + 27 -0.009771 -0.011577 -0.005703 + 28 0.003573 0.006265 -0.005932 + 29 0.004789 0.001987 -0.004620 + 30 0.008858 -0.001064 -0.001455 + 31 -0.001403 0.000613 0.002330 + 32 -0.005808 -0.001620 0.000816 + 33 -0.004160 0.001188 -0.019638 + 34 -0.006899 0.006285 0.013256 + 35 0.000717 -0.000432 -0.006883 + 36 0.002110 0.002628 -0.004683 + 37 0.000765 -0.007298 0.000289 + 38 -0.000128 -0.002893 0.004065 + 39 -0.000411 -0.021741 0.010968 + 40 0.002858 0.000302 0.000042 + 41 0.014233 -0.004599 -0.004060 + 42 -0.001473 -0.003572 -0.006228 + 43 0.009129 -0.002755 0.001456 + 44 0.003931 0.000151 0.003472 + 45 0.001621 0.005391 -0.006087 + 46 -0.004269 -0.001973 0.002735 + 47 -0.006898 -0.001187 -0.003394 + 48 -0.008556 -0.000163 -0.001387 + 49 -0.000633 -0.001754 0.011460 + 50 0.004854 -0.002902 -0.005057 + 51 0.000678 0.003272 0.006218 + 52 0.006502 0.006365 -0.000215 + 53 0.005708 0.012368 0.002955 + 54 0.008627 -0.007839 0.003177 + 55 0.004394 0.000132 0.002346 + 56 -0.004641 0.009426 -0.005548 + 57 -0.004801 -0.024766 0.002851 + 58 -0.002703 0.001589 0.007521 + 59 0.023718 -0.006559 0.003743 + 60 -0.010013 -0.042894 -0.029745 + 61 0.016140 -0.000721 -0.001747 + 62 -0.004871 0.002439 0.001990 + 63 0.009632 0.007144 0.001203 + 64 -0.001150 0.001648 -0.003018 + 65 0.006658 -0.002268 0.006874 + 66 -0.002617 0.003321 0.002230 + 67 -0.000803 0.002802 0.003258 + 68 -0.000984 -0.001579 -0.001813 + 69 0.001316 0.000607 0.003431 + 70 -0.010901 0.000580 -0.004134 + 71 0.005370 -0.003909 0.013130 + 72 -0.012282 0.007114 -0.015100 + 73 0.004641 -0.007554 0.004302 + 74 0.017455 0.013344 0.004896 + 75 0.006200 0.026885 0.020665 + 76 -0.010372 0.000470 -0.005601 + 77 -0.003368 -0.004484 0.010962 + 78 0.012416 -0.004728 0.000719 + 79 -0.005789 0.005198 -0.007541 + 80 0.005480 -0.004049 0.003455 + 81 -0.004935 0.005839 -0.006405 + 82 0.001157 -0.011200 0.018491 + 83 -0.029013 -0.016935 0.021131 + 84 -0.020335 0.020972 0.006071 + 85 0.003304 0.007374 -0.005056 + 86 0.029227 0.010776 -0.013183 + 87 0.001651 0.006570 -0.002085 + 88 0.001533 -0.009172 0.007562 + 89 0.018153 -0.022223 0.015786 + 90 -0.010012 -0.004911 0.002561 + 91 0.000435 0.003941 -0.005468 + 92 0.003301 0.001183 -0.006999 + 93 0.006788 0.011331 -0.004427 + 94 0.001392 0.005663 -0.002907 + 95 -0.001849 -0.002229 -0.003422 + 96 -0.000820 0.005872 0.004561 + 97 -0.003264 0.002461 -0.009257 + 98 0.000160 0.016954 -0.015355 + 99 -0.006597 0.011858 0.000426 + 100 0.001816 -0.005854 -0.001317 + 101 -0.001936 -0.006103 0.018111 + 102 0.024621 -0.022735 -0.000704 + 103 -0.001102 0.008384 -0.003086 + 104 0.012559 0.004375 -0.000361 + 105 0.008377 0.014814 -0.037755 + 106 -0.002851 -0.000200 -0.000722 + 107 0.010701 0.006888 -0.007831 + 108 -0.008490 0.011514 0.009399 + 109 -0.001181 0.001853 0.002176 + 110 -0.018912 -0.023868 0.006706 + 111 -0.000415 -0.001525 0.005751 + 112 -0.001172 0.001329 -0.001270 + 113 -0.006700 -0.006243 -0.006459 + 114 0.000018 0.001429 0.001376 + 115 0.001269 0.002521 0.005249 + 116 -0.002179 0.015666 0.006861 + 117 -0.007158 0.000981 0.007353 + 118 0.001047 0.000840 -0.004404 + 119 0.000974 -0.012527 0.005053 + 120 0.026729 0.008884 -0.003350 + 121 0.001181 -0.004040 -0.002037 + 122 0.006556 -0.007438 0.002656 + 123 0.005056 -0.015002 -0.003727 + 124 -0.002704 -0.003683 -0.001021 + 125 0.025048 0.007258 0.008873 + 126 0.019645 -0.020824 -0.002539 + 127 0.000061 0.001072 0.002612 + 128 0.005132 0.013203 0.018763 + 129 0.033473 0.004804 0.018651 + 130 -0.003459 -0.000309 -0.001348 + 131 -0.008088 0.023660 0.011047 + 132 0.010962 0.031994 0.008711 + 133 0.000181 -0.002894 -0.001677 + 134 0.024049 -0.000711 -0.009405 + 135 0.018702 0.003422 -0.019522 + 136 -0.000836 -0.003270 -0.005700 + 137 0.012246 0.016524 0.001525 + 138 0.006270 -0.011288 0.002224 + 139 -0.005169 0.005097 -0.000688 + 140 -0.006982 0.003044 -0.001383 + 141 0.012227 0.012767 0.004047 + 142 -0.001169 0.006070 -0.007989 + 143 0.005451 0.002569 -0.009841 + 144 0.001825 -0.002822 -0.005341 + 145 0.000911 0.004242 -0.002026 + 146 0.012072 -0.001187 -0.010498 + 147 0.007366 0.005541 0.012099 + 148 0.009820 0.000588 0.001087 + 149 0.013758 0.005140 0.015262 + 150 0.015580 0.003311 0.013079 + 151 0.002031 0.000411 0.003403 + 152 -0.001996 0.003750 0.007387 + 153 0.000790 0.000281 -0.000919 + 154 -0.004168 0.001886 -0.004993 + 155 -0.011049 0.015294 0.001052 + 156 -0.012308 0.010348 -0.003128 + 157 -0.001609 -0.004040 -0.002294 + 158 -0.005715 -0.015529 -0.005700 + 159 0.014489 0.026653 0.004024 + 160 0.004070 0.000866 0.003373 + 161 0.004691 0.005062 0.002569 + 162 0.007082 -0.019961 -0.026174 + 163 0.005501 0.000902 -0.001325 + 164 0.007503 0.001448 -0.001472 + 165 0.013628 0.003649 -0.005952 + 166 -0.000639 0.003162 -0.007271 + 167 0.007342 -0.011001 -0.016849 + 168 -0.018400 -0.004772 0.020839 + 169 0.000214 -0.000386 0.002706 + 170 -0.005862 0.010449 -0.003793 + 171 -0.013612 0.011870 -0.006417 + 172 -0.005485 0.006465 0.005343 + 173 0.001788 0.008428 0.005641 + 174 -0.018354 0.029579 0.010717 + 175 0.002627 -0.000754 0.000071 + 176 -0.018080 0.018546 0.001794 + 177 0.006754 -0.000962 -0.007786 + 178 0.002343 0.002166 0.004945 + 179 -0.001724 0.003155 0.010761 + 180 0.010728 0.003441 0.001544 + 181 -0.000849 -0.002856 0.001461 + 182 0.009366 -0.003672 -0.001935 + 183 0.016615 -0.001746 0.005238 + 184 -0.002730 -0.000316 -0.004583 + 185 -0.014755 -0.011310 0.003338 + 186 0.005862 0.008235 -0.003200 + 187 -0.003189 -0.006285 0.009536 + 188 -0.005114 -0.007060 0.006450 + 189 -0.000516 -0.008757 0.009854 + 190 -0.000859 0.005266 0.001864 + 191 0.003108 -0.007021 0.009190 + 192 -0.015949 -0.002050 0.007021 + 193 -0.007008 0.002608 -0.004583 + 194 -0.020431 -0.004004 0.008047 + 195 -0.000364 0.001236 -0.011425 + 196 0.002420 0.006931 0.002031 + 197 0.007178 0.006129 0.009924 + 198 -0.005981 0.016623 -0.013067 + 199 0.003142 -0.001394 -0.001846 + 200 0.011374 -0.002895 -0.000674 + 201 0.032698 -0.002552 0.007288 + 202 -0.005709 0.000071 0.005037 + 203 -0.013193 -0.012592 -0.008102 + 204 -0.008194 0.014723 0.003840 + 205 -0.003270 -0.006146 0.004301 + 206 0.004399 -0.010132 -0.001197 + 207 -0.030308 0.012803 0.003540 + 208 0.002110 0.002374 0.006075 + 209 -0.000845 -0.004182 -0.002795 + 210 0.002582 -0.004671 0.002224 + 211 -0.003768 0.002130 0.001339 + 212 0.022509 0.017397 0.002782 + 213 0.020609 0.006682 -0.014082 + 214 0.003956 0.004282 -0.005023 + 215 0.007499 0.004128 0.002237 + 216 0.034882 -0.005096 0.008948 + 217 -0.002552 -0.000287 -0.001907 + 218 0.025445 0.005560 -0.016526 + 219 0.002741 0.000814 -0.004654 + 220 0.002162 -0.001203 0.000936 + 221 0.004071 0.004725 0.001938 + 222 0.002393 -0.013063 -0.003950 + 223 -0.001609 -0.003218 -0.004310 + 224 -0.012550 0.009033 -0.007868 + 225 0.014344 0.000886 -0.013005 + 226 0.005863 0.010335 -0.003424 + 227 0.011104 -0.005602 -0.012415 + 228 0.001222 0.002408 0.001546 + 229 -0.002038 0.001858 0.002991 + 230 -0.017517 -0.020932 0.016099 + 231 0.005257 0.011588 -0.018236 + 232 -0.002660 -0.006193 0.003186 + 233 -0.021995 0.012375 0.004372 + 234 -0.013906 0.028004 -0.004997 + 235 0.002339 -0.001255 -0.003548 + 236 0.001689 0.005243 -0.006337 + 237 0.000498 -0.007782 -0.015260 + 238 0.001142 0.002234 0.003408 + 239 0.007521 0.004622 -0.003272 + 240 -0.001154 0.006952 0.006739 + 241 -0.000938 -0.004609 0.002499 + 242 0.004903 0.001117 0.013021 + 243 0.008126 -0.013873 -0.001075 + 244 -0.004097 0.002491 -0.002459 + 245 0.002093 -0.002989 0.010881 + 246 0.008552 0.010436 0.008330 + 247 -0.000211 0.002295 0.001935 + 248 0.004346 0.003486 0.008405 + 249 -0.006182 0.002873 -0.007955 + 250 0.002466 0.001439 -0.002302 + 251 -0.003246 0.007233 0.009469 + 252 -0.002606 0.002646 0.002563 + 253 0.000833 -0.001794 -0.003483 + 254 -0.001066 -0.001277 -0.012569 + 255 -0.003354 -0.002604 -0.016130 + 256 0.007379 0.006324 -0.003535 + 257 0.025411 0.006788 -0.010928 + 258 0.011648 0.000201 0.004051 + 259 -0.000385 -0.000823 -0.000593 + 260 -0.001070 -0.019569 0.006235 + 261 0.011350 0.009136 0.002805 + 262 -0.001688 0.002178 0.004704 + 263 -0.011748 0.007674 0.002198 + 264 -0.005358 0.003728 -0.002879 + 265 -0.004209 0.000686 -0.004990 + 266 0.000586 0.011928 0.008080 + 267 0.004512 -0.002493 -0.000297 + 268 -0.000130 0.007801 -0.005732 + 269 -0.006259 -0.000991 -0.001515 + 270 0.015560 -0.011483 0.001826 + 271 -0.003544 0.003178 0.000326 + 272 0.006639 0.005731 0.008812 + 273 -0.009361 -0.001371 -0.002830 + 274 -0.000226 0.001739 0.001787 + 275 -0.001846 -0.005637 -0.002071 + 276 0.009461 0.005629 -0.001253 + 277 0.003294 -0.005377 -0.000680 + 278 0.027740 0.013288 0.002669 + 279 0.003403 0.012169 -0.019874 + 280 -0.001383 0.000386 -0.006636 + 281 -0.005910 0.003429 -0.006992 + 282 0.002649 -0.004178 -0.006969 + 283 0.004768 -0.001680 0.000104 + 284 -0.012916 0.017467 -0.012201 + 285 0.010278 -0.007970 0.003734 + 286 0.000005 0.000300 0.006224 + 287 0.003150 -0.001535 0.007443 + 288 -0.000547 -0.003737 0.010794 + 289 0.003054 0.005656 0.000426 + 290 0.006673 0.002252 0.007300 + 291 0.004185 0.001696 0.005292 + 292 -0.001277 -0.005156 -0.001765 + 293 0.005969 -0.004326 -0.002540 + 294 -0.026915 -0.005145 0.019233 + 295 -0.003352 -0.000356 -0.001610 + 296 -0.023375 -0.003718 -0.017075 + 297 0.006387 -0.025086 0.000315 + 298 -0.005064 0.001395 0.004436 + 299 -0.004111 0.000853 -0.032909 + 300 0.000933 0.005949 0.017391 + 301 0.000607 0.002490 -0.002786 + 302 0.002638 0.008857 0.008537 + 303 0.001294 0.011357 -0.003275 + 304 -0.001798 -0.003127 -0.000795 + 305 -0.003320 0.000996 0.004122 + 306 -0.008728 -0.000634 0.002033 + 307 -0.003535 -0.002662 -0.002777 + 308 -0.005954 -0.002781 -0.004403 + 309 -0.002147 -0.001477 -0.001223 + 310 -0.002595 -0.001397 0.002359 + 311 -0.003605 -0.000224 0.015269 + 312 -0.014002 -0.002828 0.000027 + 313 0.001583 -0.005357 0.002380 + 314 -0.002955 -0.014106 -0.011581 + 315 0.000151 -0.006411 0.002865 + 316 0.004278 -0.004088 0.000114 + 317 -0.019291 0.001584 0.015204 + 318 -0.013439 -0.000674 0.010987 + 319 0.000024 0.000995 0.005326 + 320 -0.009041 0.020464 0.014139 + 321 0.004208 -0.003482 0.004723 + 322 0.001489 -0.003292 0.000500 + 323 0.000364 0.006211 0.006844 + 324 0.007467 0.021162 -0.001636 + 325 0.009527 -0.000863 -0.005483 + 326 -0.009936 0.006496 -0.014136 + 327 -0.007595 -0.006469 -0.002090 + 328 -0.002856 -0.010388 -0.000678 + 329 -0.026693 -0.007624 -0.001572 + 330 0.029582 -0.010319 0.009090 + 331 -0.009062 0.000913 0.000368 + 332 -0.019327 0.020501 -0.000560 + 333 -0.018764 -0.008632 0.002570 + 334 0.004502 0.001200 -0.008087 + 335 0.008714 -0.005091 -0.008624 + 336 0.004610 0.003623 -0.007048 + 337 0.002461 -0.000759 0.003913 + 338 0.021591 -0.013925 0.009416 + 339 -0.017190 0.002325 0.006138 + 340 0.003361 0.004027 0.006986 + 341 0.006850 0.012752 0.018496 + 342 0.019589 0.009932 -0.004987 + 343 0.000463 0.005037 -0.000723 + 344 0.008333 0.006382 -0.005532 + 345 0.004288 0.006565 0.007800 + 346 -0.001505 -0.001295 0.001190 + 347 -0.015747 0.011253 0.025149 + 348 0.014871 -0.012646 -0.016815 + 349 -0.000186 0.002115 -0.002539 + 350 0.001936 0.000958 -0.003366 + 351 -0.014299 0.007078 -0.001653 + 352 -0.000876 -0.001637 -0.002032 + 353 -0.001168 0.005556 -0.012749 + 354 -0.003162 -0.016318 -0.009468 + 355 -0.000674 -0.001888 -0.003265 + 356 0.017652 -0.009515 0.007889 + 357 0.015313 -0.006079 0.010454 + 358 -0.000964 -0.004354 0.000067 + 359 0.004137 -0.002540 0.004500 + 360 -0.011376 -0.000921 -0.006123 + 361 0.002023 0.003210 -0.000511 + 362 0.012560 -0.011698 0.016109 + 363 -0.013295 -0.009379 -0.009014 + 364 0.003315 0.003249 0.007620 + 365 -0.010739 0.000915 -0.008118 + 366 -0.015293 0.007564 -0.004343 + 367 0.000192 0.002269 -0.000485 + 368 0.002520 -0.012494 -0.004632 + 369 0.010222 0.003093 -0.002247 + 370 0.003953 0.000628 0.004147 + 371 0.001165 -0.005271 0.007550 + 372 -0.013412 -0.019696 0.026961 + 373 0.001883 0.002252 -0.003560 + 374 0.005482 -0.004609 0.002380 + 375 -0.008048 0.004473 -0.008866 + 376 -0.002663 0.001073 0.001951 + 377 0.010178 0.018964 0.000820 + 378 0.007583 -0.018984 0.016464 + 379 0.001136 0.007646 0.002719 + 380 0.006251 0.008125 0.009187 + 381 0.001284 0.011634 -0.004097 + 382 -0.000767 0.000265 -0.000818 + 383 -0.000089 0.001579 -0.002300 + 384 -0.004565 -0.011251 0.008186 + 385 0.004778 -0.000871 0.002405 + 386 0.006618 -0.002801 0.006849 + 387 0.029884 -0.012377 0.019662 + 388 -0.002799 -0.005785 0.000693 + 389 -0.006988 0.014716 -0.008738 + 390 -0.003130 0.004832 0.002982 + 391 0.000036 -0.002467 0.000498 + 392 -0.001382 -0.006847 0.003863 + 393 -0.003623 0.001391 0.001664 + 394 0.004431 0.000182 0.002043 + 395 0.007177 -0.001675 0.008884 + 396 0.000324 0.003728 0.003379 + 397 0.004107 -0.000618 0.000098 + 398 0.019272 -0.008832 -0.013192 + 399 -0.025041 0.027976 -0.020594 + 400 0.002982 -0.002889 -0.005826 + 401 0.010564 -0.003899 -0.002078 + 402 0.005218 -0.003308 -0.010357 + 403 0.002304 -0.003833 -0.008812 + 404 -0.013421 -0.017603 -0.023172 + 405 -0.003134 -0.000582 0.001712 + 406 -0.003398 -0.002176 0.001635 + 407 -0.015813 0.008046 0.010515 + 408 0.003940 -0.004144 -0.002666 + 409 0.008428 -0.002203 -0.004077 + 410 -0.004859 0.004207 -0.016803 + 411 -0.022714 0.005614 0.004119 + 412 -0.000677 -0.000486 0.001019 + 413 0.004137 0.001524 0.004810 + 414 -0.011495 -0.003293 -0.002498 + 415 -0.004277 -0.004620 -0.002973 + 416 0.005727 -0.002611 0.021922 + 417 0.009759 0.016284 -0.017136 + 418 0.001140 -0.003169 0.001021 + 419 0.002072 0.019101 -0.019824 + 420 0.029356 -0.011686 0.004675 + 421 0.001175 0.002540 0.001846 + 422 0.009479 -0.017538 0.002696 + 423 0.008327 0.028039 -0.001246 + 424 0.002971 -0.004730 0.000069 + 425 0.010168 -0.005904 -0.016535 + 426 0.009223 0.011295 0.006248 + 427 -0.003323 0.000861 0.005020 + 428 -0.005244 0.001685 -0.001864 + 429 0.000994 0.014826 0.000976 + 430 -0.002795 0.003958 -0.004848 + 431 0.010698 -0.011688 -0.000537 + 432 0.008158 0.021591 -0.003259 + 433 0.000363 0.002223 0.004053 + 434 -0.002225 0.004315 -0.010042 + 435 -0.000151 -0.000572 0.000675 + 436 0.006996 -0.000559 0.003307 + 437 -0.011410 -0.004708 0.006782 + 438 -0.015909 0.022113 0.004877 + 439 -0.002401 -0.002279 0.002655 + 440 -0.002478 0.000164 0.005849 + 441 -0.003545 0.002314 0.007358 + 442 0.002189 0.006935 -0.001251 + 443 -0.007190 0.031224 0.006804 + 444 0.004661 -0.003296 0.013412 + 445 0.003709 0.001514 -0.003921 + 446 0.015678 0.007604 0.000133 + 447 -0.004648 -0.004474 -0.027064 + 448 0.001807 -0.004146 0.004203 + 449 0.029598 0.003434 0.012408 + 450 -0.004603 -0.006201 0.002287 + 451 -0.003031 -0.004136 -0.006564 + 452 0.009003 0.019264 0.004529 + 453 -0.000188 0.010449 0.001077 + 454 0.003891 0.002752 0.005629 + 455 0.001092 0.012776 0.008682 + 456 -0.002762 0.015371 -0.005857 + 457 0.002697 -0.003406 -0.002865 + 458 0.007823 -0.013511 0.002023 + 459 -0.030492 -0.008107 -0.020624 + 460 0.000483 0.001162 0.002651 + 461 0.002571 -0.007508 -0.009384 + 462 -0.010774 -0.027329 0.003619 + 463 0.005791 0.000086 0.004298 + 464 0.008820 0.016257 -0.002226 + 465 0.000317 -0.014932 -0.013621 + 466 0.003540 0.001551 -0.001349 + 467 0.008241 0.020014 0.019807 + 468 -0.004258 -0.010227 -0.029599 + 469 0.007640 0.001287 -0.003128 + 470 0.004600 -0.001555 -0.010230 + 471 0.007870 0.002461 0.000094 + 472 0.001001 0.005160 -0.001529 + 473 0.006073 0.015127 0.022819 + 474 0.006356 -0.012345 -0.003131 + 475 -0.005549 -0.000151 0.001312 + 476 -0.015747 0.009610 0.004075 + 477 0.009345 0.004620 -0.013632 + 478 -0.005694 -0.004777 0.002781 + 479 -0.015785 0.018249 0.008919 + 480 0.007264 0.001342 -0.012954 + 481 -0.002601 -0.003124 -0.001775 + 482 -0.010924 -0.002942 0.001676 + 483 0.020644 0.001519 0.001050 + 484 -0.003829 -0.001681 0.001973 + 485 -0.009248 -0.008096 0.002166 + 486 -0.004627 -0.003317 0.000426 + 487 0.004750 0.008629 -0.001691 + 488 -0.009177 0.001481 0.019567 + 489 -0.000748 -0.004703 -0.011184 + 490 -0.000930 -0.004032 -0.001796 + 491 -0.007051 -0.001375 -0.004647 + 492 -0.000505 0.005436 -0.004029 + 493 -0.000767 -0.000313 -0.004426 + 494 0.007019 0.022441 0.008035 + 495 0.002030 -0.018016 0.012244 + 496 -0.000430 -0.004092 0.001186 + 497 0.012447 -0.008156 0.016405 + 498 -0.008008 0.011043 -0.000527 + 499 0.001752 0.001451 -0.008850 + 500 -0.001696 0.002950 -0.000035 + 501 0.006054 -0.001180 -0.028952 + 502 0.001434 -0.008124 -0.001958 + 503 0.001762 -0.007034 -0.009244 + 504 -0.008796 -0.004759 -0.009928 + 505 0.000249 0.001170 0.006380 + 506 -0.005081 0.014461 -0.003259 + 507 -0.002522 0.001324 0.007841 + 508 0.003441 0.001538 0.006742 + 509 0.007735 -0.006583 0.003492 + 510 0.009681 0.006088 0.008608 + 511 -0.006695 -0.001970 0.000807 + 512 0.004268 0.004052 0.001263 + 513 -0.004129 -0.012886 -0.007489 + 514 -0.002878 0.001158 0.006535 + 515 -0.007680 -0.001896 0.002953 + 516 -0.000917 -0.006257 -0.002762 + 517 -0.001401 -0.003523 -0.005778 + 518 -0.001854 0.007834 0.015061 + 519 -0.010095 0.007049 -0.021128 + 520 -0.000766 -0.000153 0.007009 + 521 0.009064 -0.003223 0.017921 + 522 0.000864 -0.000043 0.007876 + 523 -0.001025 0.001319 -0.006573 + 524 -0.006395 0.000755 -0.002686 + 525 -0.032670 0.007943 0.004175 + 526 0.002953 0.006520 0.004065 + 527 0.009139 -0.008077 -0.010889 + 528 -0.002820 0.012454 -0.005504 + 529 -0.008727 0.003418 0.002451 + 530 -0.007112 -0.005703 0.023446 + 531 -0.011285 0.014165 -0.019563 + 532 -0.002562 0.003192 -0.002295 + 533 -0.003618 0.007211 0.002298 + 534 0.010325 0.001834 0.002853 + 535 0.002563 0.000345 -0.002878 + 536 0.002396 0.022293 -0.006961 + 537 0.001693 -0.002677 0.010576 + 538 -0.001561 0.000734 0.001793 + 539 -0.008542 0.015338 0.007321 + 540 -0.015880 0.015140 0.014642 + 541 0.001092 0.000090 0.000997 + 542 -0.004522 -0.004004 0.003687 + 543 0.003258 -0.006156 0.000500 + 544 -0.001608 0.002026 0.003790 + 545 -0.010430 -0.004583 0.015482 + 546 0.002628 0.011416 0.004923 + 547 -0.002068 0.005845 0.001850 + 548 0.001194 0.007931 0.007672 + 549 -0.020261 -0.007195 -0.008896 + 550 0.005399 0.001999 0.000211 + 551 0.004420 0.012603 0.006214 + 552 0.007790 0.005534 0.000006 + 553 -0.004249 0.001186 -0.000260 + 554 0.006385 -0.014925 0.000020 + 555 0.009902 0.016988 -0.004080 + 556 0.006637 -0.003469 0.000450 + 557 -0.002010 0.011423 -0.004361 + 558 -0.009074 0.013716 -0.002539 + 559 0.003243 -0.003710 -0.002565 + 560 -0.000480 -0.009433 0.000267 + 561 0.002981 -0.005587 -0.010088 + 562 0.002665 0.008169 0.002667 + 563 -0.001817 0.009035 0.022525 + 564 0.005689 0.010678 0.000603 + 565 0.003217 0.002617 0.001072 + 566 0.025108 0.001061 -0.027288 + 567 -0.003091 0.028727 0.028529 + 568 0.003991 -0.002246 0.002528 + 569 0.011195 -0.007917 0.010511 + 570 -0.006686 -0.007088 -0.000640 + 571 0.005302 0.003751 0.001484 + 572 0.001250 0.007658 -0.006666 + 573 0.018145 -0.005375 0.000139 + 574 -0.003857 0.003583 0.000238 + 575 0.006752 0.001063 0.004538 + 576 -0.006479 0.014326 -0.017669 + 577 0.001793 0.003661 0.002509 + 578 0.010186 -0.003147 0.008687 + 579 -0.001160 -0.005645 -0.003812 + 580 -0.002296 0.006997 0.000837 + 581 -0.031138 0.017223 0.000984 + 582 0.002587 -0.007480 0.015277 + 583 0.000288 -0.000668 0.001548 + 584 0.016041 -0.004051 0.004629 + 585 -0.025116 0.003224 0.009356 + 586 -0.000853 0.003188 0.004014 + 587 -0.001700 -0.004491 0.006716 + 588 -0.008947 -0.009004 -0.023328 + 589 0.005432 -0.003893 -0.001000 + 590 -0.019524 0.021049 -0.035976 + 591 0.009404 0.004475 -0.004525 + 592 -0.006508 -0.002709 0.000481 + 593 0.010852 -0.015643 0.005754 + 594 0.006526 0.026156 0.009018 + 595 -0.004611 -0.001841 0.002205 + 596 -0.013411 -0.011893 -0.011510 + 597 -0.002150 -0.000804 -0.006730 + 598 -0.002593 -0.000356 0.003104 + 599 0.009483 0.002951 -0.001362 + 600 -0.015523 -0.003843 0.010828 + 601 -0.001229 0.003953 0.000471 + 602 -0.017788 0.002114 0.033354 + 603 0.015187 -0.017947 -0.007994 + 604 -0.001335 -0.000196 0.007281 + 605 0.015188 0.007448 0.005030 + 606 -0.001538 0.002386 -0.009662 + 607 -0.001172 0.004261 0.002894 + 608 -0.002229 0.015661 0.009134 + 609 0.017428 0.004976 0.006974 + 610 -0.001490 0.003604 0.004586 + 611 -0.017720 0.006222 -0.023144 + 612 0.010016 -0.015847 -0.004678 + 613 -0.002648 0.000934 0.000698 + 614 -0.011832 0.016782 0.007626 + 615 -0.005427 0.001385 0.015386 + 616 0.003669 -0.001949 0.003946 + 617 0.005164 0.000243 0.009975 + 618 -0.000161 0.003111 0.001353 + 619 0.002976 -0.004733 0.001868 + 620 -0.002832 -0.014197 -0.023534 + 621 -0.003347 -0.011551 0.000693 + 622 0.004912 0.001701 -0.000793 + 623 0.013809 0.007164 -0.016905 + 624 0.024958 -0.010962 -0.008428 + 625 0.007422 -0.002948 -0.001308 + 626 -0.016590 -0.032000 -0.001025 + 627 0.011367 0.004098 0.010259 + 628 -0.002045 -0.000742 0.000577 + 629 -0.030845 0.001448 0.030396 + 630 0.001781 -0.017639 0.014980 + 631 0.002233 -0.004427 -0.002429 + 632 0.018586 -0.001402 0.006993 + 633 -0.012356 0.003736 0.007796 + 634 -0.004338 0.007766 0.000310 + 635 0.001990 0.000209 0.007107 + 636 -0.006343 0.005190 -0.018263 + 637 -0.005455 0.000492 -0.002847 + 638 0.000522 0.006495 0.003755 + 639 -0.001841 -0.009429 -0.001507 + 640 -0.002314 -0.002516 -0.005613 + 641 0.018652 0.002237 -0.015930 + 642 -0.002326 -0.000776 -0.003132 + 643 -0.005512 -0.000623 -0.000619 + 644 -0.001015 0.005882 0.003225 + 645 0.000586 0.023218 -0.004529 + 646 -0.001138 0.000800 0.002687 + 647 0.003627 0.013371 -0.016172 + 648 0.018968 0.017228 -0.000038 + 649 -0.002086 -0.000112 -0.007393 + 650 0.016103 0.035588 0.008775 + 651 -0.038516 0.012158 -0.009536 + 652 0.002958 0.004862 -0.007554 + 653 0.024333 0.013052 -0.023133 + 654 0.002379 -0.000049 -0.006601 + 655 0.003804 -0.003076 -0.001112 + 656 -0.004763 0.002283 -0.025897 + 657 -0.036538 -0.010672 -0.010599 + 658 -0.000713 0.003957 0.002151 + 659 -0.016531 0.001472 0.004862 + 660 -0.009287 0.028134 0.010480 + 661 0.004192 -0.003835 0.000568 + 662 0.011523 0.002433 0.036479 + 663 -0.009197 -0.041577 0.000393 + 664 0.000280 -0.002373 -0.004460 + 665 0.002206 -0.003211 0.000957 + 666 0.006211 0.013469 -0.005353 + 667 -0.000522 0.001664 -0.004748 + 668 0.004459 -0.024042 -0.023029 + 669 0.011377 0.013403 0.030836 + 670 0.003382 -0.002813 0.000451 + 671 0.000766 0.000074 -0.006820 + 672 0.013252 -0.015598 0.024274 + 673 -0.003243 0.006406 -0.002570 + 674 0.019962 -0.008888 -0.019769 + 675 -0.027628 -0.005508 -0.000297 + 676 -0.007770 -0.003882 0.002155 + 677 -0.001777 0.012358 0.000036 + 678 -0.024978 0.005564 -0.015024 + 679 0.000188 0.001017 0.004117 + 680 -0.006440 -0.003105 0.019733 + 681 -0.016780 0.005575 -0.004078 + 682 0.000151 0.001697 -0.001387 + 683 -0.002925 0.000955 -0.004378 + 684 0.000826 0.008069 0.003052 + 685 -0.003543 -0.000321 -0.000587 + 686 -0.012205 0.000432 -0.005990 + 687 0.004010 0.009678 -0.003793 + 688 0.001940 -0.000340 0.003900 + 689 0.005837 0.014815 -0.005621 + 690 -0.008710 -0.017653 0.020395 + 691 -0.001931 -0.003975 -0.002577 + 692 -0.003368 -0.014386 -0.006878 + 693 -0.013782 -0.002984 0.003522 + 694 0.004968 -0.000283 -0.003322 + 695 0.019160 0.006665 -0.007077 + 696 0.022604 -0.000847 -0.016983 + 697 0.002571 0.000550 -0.007379 + 698 -0.001443 -0.002487 -0.007727 + 699 -0.011487 -0.013883 0.019460 + 700 0.001096 -0.004750 0.003965 + 701 -0.016603 -0.010473 0.014272 + 702 0.023559 -0.001392 -0.008500 + 703 -0.002022 -0.005262 -0.004485 + 704 0.002332 -0.014942 -0.004917 + 705 -0.009402 0.006267 -0.002020 + 706 -0.000288 0.003264 -0.003564 + 707 0.004565 0.033122 -0.006655 + 708 -0.018922 -0.009521 0.000208 + 709 -0.003485 0.003285 -0.000556 + 710 0.004587 -0.002798 -0.000984 + 711 -0.006054 0.007231 -0.001425 + 712 0.004718 0.000201 -0.003948 + 713 -0.014114 0.009800 -0.004955 + 714 -0.008099 -0.004168 0.008689 + 715 0.000410 -0.000654 0.009605 + 716 0.008711 0.018707 0.002740 + 717 0.003459 -0.008185 0.010239 + 718 0.003479 0.000757 0.004467 + 719 0.000433 -0.000495 0.007710 + 720 0.012945 0.003286 -0.002052 + 721 -0.010010 -0.003567 0.006956 + 722 0.005307 -0.001615 -0.002198 + 723 -0.012515 0.011984 0.016669 + 724 0.001378 -0.002186 -0.001614 + 725 0.012587 -0.019891 0.012237 + 726 0.012601 0.007024 0.014776 + 727 -0.002983 -0.001722 -0.004228 + 728 0.015268 -0.011359 -0.002815 + 729 -0.003967 0.028638 0.000653 + 730 -0.000313 -0.000495 0.001546 + 731 -0.030938 -0.009463 -0.008649 + 732 -0.033474 -0.019299 0.015331 + 733 0.000845 -0.003919 -0.003202 + 734 -0.027178 0.011071 -0.026350 + 735 -0.007741 0.001470 -0.016184 + 736 -0.001239 0.001989 -0.002789 + 737 0.011285 0.001382 -0.006222 + 738 0.022813 -0.006205 -0.006536 + 739 0.003987 -0.004190 -0.005010 + 740 -0.007915 0.002670 -0.013878 + 741 0.004194 0.006086 -0.010350 + 742 0.006539 -0.005074 0.002196 + 743 0.015306 0.008181 0.005081 + 744 0.007865 0.003022 -0.004716 + 745 -0.001784 -0.010062 0.004309 + 746 -0.002378 -0.011275 0.006933 + 747 -0.008336 -0.001053 0.004620 + 748 -0.002979 0.004768 -0.002497 + 749 -0.000959 0.004004 -0.002600 + 750 -0.019512 -0.002978 0.005044 + 751 -0.004903 -0.000550 0.000659 + 752 -0.005086 0.005639 -0.022167 + 753 -0.008131 0.001631 -0.018889 + 754 -0.001761 -0.001628 0.000503 + 755 -0.003957 -0.007199 -0.006609 + 756 0.003155 -0.001306 0.005143 + 757 0.000937 0.008247 -0.008723 + 758 0.028994 0.004889 0.007225 + 759 -0.000469 -0.025903 0.001925 + 760 -0.001834 -0.000370 -0.001605 + 761 0.007234 -0.001225 -0.019036 + 762 -0.003442 -0.001966 0.000209 + 763 0.000445 0.007510 0.001158 + 764 -0.008348 0.004439 -0.007776 + 765 -0.012793 0.011539 0.019680 + 766 0.000065 -0.000962 -0.004032 + 767 -0.002013 -0.005477 0.003901 + 768 0.003529 0.021570 0.007224 + 769 -0.002661 0.002604 -0.003268 + 770 0.005668 -0.003962 -0.004196 + 771 -0.003633 0.008263 -0.012842 + 772 0.001811 0.001915 0.002764 + 773 0.007995 -0.017893 0.012738 + 774 -0.018466 -0.002519 -0.001997 + 775 -0.002231 0.000080 0.000338 + 776 -0.020092 -0.012422 0.010443 + 777 0.017610 0.006562 -0.019411 + 778 -0.001733 0.005494 0.004582 + 779 0.013495 0.017522 0.004058 + 780 0.014733 0.026971 -0.010419 + 781 0.001950 0.000577 -0.000870 + 782 -0.025830 0.001269 0.005271 + 783 0.007534 -0.015453 0.006553 + 784 0.004959 0.000931 -0.005022 + 785 -0.008754 0.005835 0.049441 + 786 0.010447 0.012462 0.001546 + 787 -0.001107 0.002522 0.000433 + 788 0.009871 0.011686 0.008446 + 789 -0.006988 0.002247 0.021211 + 790 0.004245 0.001822 -0.000253 + 791 0.000153 -0.002603 0.008675 + 792 0.006252 0.003177 -0.013109 + 793 -0.002534 0.003863 0.000617 + 794 -0.000057 0.004391 -0.016346 + 795 0.005974 -0.000584 -0.004834 + 796 0.001827 -0.002339 -0.002010 + 797 -0.023150 0.007693 0.012507 + 798 0.012203 0.000464 -0.020004 + 799 -0.000293 -0.001883 -0.002470 + 800 -0.004248 0.006084 0.002613 + 801 -0.013517 0.015693 0.003574 + 802 -0.009450 0.005229 -0.003400 + 803 -0.015058 -0.007700 0.001796 + 804 -0.000196 -0.003546 0.002537 + 805 0.008758 -0.003257 0.005431 + 806 0.012998 -0.011952 -0.017276 + 807 0.008558 -0.002765 0.006723 + 808 -0.001470 -0.000539 0.002965 + 809 0.024028 -0.019423 -0.012788 + 810 0.003892 0.003966 -0.001573 + 811 0.000254 0.001510 0.000089 + 812 0.024395 0.007424 -0.013783 + 813 0.006830 0.017138 0.017010 + 814 -0.001535 -0.003749 -0.001708 + 815 0.013748 -0.018314 -0.006646 + 816 0.003900 0.002047 0.006451 + 817 0.006585 0.003832 -0.000629 + 818 0.021540 0.003252 0.001280 + 819 0.007897 0.007247 -0.003727 + 820 -0.002115 -0.002434 -0.005025 + 821 -0.016735 0.003360 -0.019137 + 822 0.003237 -0.017804 -0.004111 + 823 -0.003907 0.002878 -0.003988 + 824 -0.005419 -0.002010 -0.004476 + 825 -0.006449 0.003104 -0.002766 + 826 -0.013638 -0.002258 -0.002448 + 827 -0.007838 0.000023 -0.005866 + 828 -0.006633 0.001312 -0.008943 + 829 0.001696 0.003761 -0.002125 + 830 -0.001113 -0.010288 -0.008692 + 831 0.010380 0.008838 -0.015548 + 832 -0.003164 0.004544 -0.002070 + 833 -0.001495 -0.013094 -0.000890 + 834 0.011945 -0.015741 -0.003378 + 835 -0.008802 -0.001939 -0.005442 + 836 -0.002949 -0.007279 -0.004665 + 837 0.008414 -0.021459 -0.000948 + 838 0.001330 0.000622 0.000916 + 839 -0.001965 0.001331 0.006138 + 840 0.003081 -0.004825 0.007272 + 841 0.001557 -0.005770 -0.001563 + 842 0.014285 0.020628 -0.029634 + 843 -0.006815 0.003616 0.008747 + 844 0.001116 -0.003881 -0.003556 + 845 0.008316 -0.005783 -0.005256 + 846 -0.011615 0.015346 0.026431 + 847 0.004309 0.003546 -0.004311 + 848 0.007868 -0.013572 0.000073 + 849 -0.011699 0.005875 0.003604 + 850 0.000505 -0.004069 -0.002113 + 851 0.001211 -0.005770 -0.003436 + 852 -0.004651 0.001028 0.007154 + 853 -0.003913 -0.006795 -0.004733 + 854 -0.004339 -0.014527 -0.023555 + 855 -0.006756 -0.006056 -0.008714 + 856 0.007493 0.001588 -0.006408 + 857 0.020526 0.022065 -0.006921 + 858 0.010862 0.004031 -0.001655 + 859 0.003459 -0.001125 -0.001494 + 860 -0.000710 0.004855 0.022662 + 861 -0.000022 0.009082 0.012428 + 862 -0.000591 0.002648 0.002517 + 863 0.017910 0.003993 0.005847 + 864 -0.004999 0.014284 -0.016199 + 865 -0.001700 -0.002300 0.001206 + 866 -0.016994 -0.008747 -0.012103 + 867 -0.008118 -0.008616 0.003715 + 868 -0.002056 -0.003732 -0.006667 + 869 -0.002586 -0.005666 -0.002032 + 870 -0.002179 -0.001361 -0.001378 + 871 0.001952 0.000747 -0.004175 + 872 -0.000006 -0.004573 0.003592 + 873 -0.004377 -0.012174 0.000091 + 874 -0.006945 -0.004708 0.004295 + 875 -0.011724 -0.010397 0.002368 + 876 0.006805 0.012734 0.019238 + 877 0.004959 0.005871 -0.001277 + 878 -0.012228 -0.000867 -0.006672 + 879 0.014516 0.032640 0.025985 + 880 0.000767 -0.000179 0.004816 + 881 0.006242 0.002132 0.007465 + 882 0.006812 0.003103 0.007707 + 883 0.005120 -0.003059 -0.001062 + 884 -0.008255 -0.016076 -0.002362 + 885 -0.001789 -0.014152 -0.001194 + 886 -0.009000 0.001340 0.001690 + 887 -0.020559 -0.017599 0.000329 + 888 -0.003544 -0.006539 0.004087 + 889 -0.000933 0.000538 -0.001999 + 890 0.032797 0.013397 0.000525 + 891 -0.012354 -0.008526 -0.038077 + 892 0.002953 -0.002317 -0.004454 + 893 -0.029479 -0.014864 0.005868 + 894 0.019223 0.000709 -0.013773 + 895 0.002346 -0.003694 -0.004486 + 896 -0.005275 -0.001221 -0.010755 + 897 0.010883 0.001918 -0.002099 + 898 -0.000263 -0.000830 0.005518 + 899 0.000399 -0.005578 0.011643 + 900 -0.007207 -0.006080 -0.006632 + 901 -0.000868 0.002637 -0.000416 + 902 -0.003601 0.001456 0.001019 + 903 0.003465 0.009000 0.002627 + 904 -0.005492 0.001153 0.005034 + 905 0.008501 0.009963 0.005133 + 906 0.002740 0.005510 0.005387 + 907 0.001230 0.003701 -0.010904 + 908 0.005640 0.000943 -0.026378 + 909 -0.001655 0.006661 0.001080 + 910 0.000417 -0.004485 0.000899 + 911 0.004051 -0.003590 0.002016 + 912 0.010109 -0.002124 0.001500 + 913 0.002439 0.006335 0.003103 + 914 -0.006325 0.005901 0.006397 + 915 0.008058 0.002545 0.004591 + 916 -0.001774 -0.003954 -0.005522 + 917 -0.001697 -0.002110 -0.006988 + 918 0.000641 -0.012660 -0.001878 + 919 0.000840 0.002158 -0.002127 + 920 -0.006972 -0.005865 -0.019536 + 921 -0.009078 -0.009093 0.005319 + 922 -0.002466 0.001612 -0.002348 + 923 -0.007997 0.000173 -0.007016 + 924 -0.005167 0.000122 -0.004809 + 925 0.000182 0.007626 -0.005820 + 926 -0.000187 0.006758 -0.004766 + 927 -0.005146 0.010941 -0.001145 + 928 -0.001035 0.003329 -0.000156 + 929 -0.002925 0.005286 0.005381 + 930 -0.007353 0.014383 0.015446 + 931 0.001566 0.003779 -0.001844 + 932 0.014111 -0.006162 0.016836 + 933 -0.008051 -0.000942 0.006114 + 934 0.000472 0.000581 0.003898 + 935 0.010438 -0.015336 0.026259 + 936 -0.009803 0.018803 -0.011113 + 937 -0.002622 0.001845 -0.004649 + 938 0.000192 0.006195 -0.003034 + 939 -0.004379 0.004856 -0.008876 + 940 0.005312 -0.005320 -0.000644 + 941 0.004197 0.002434 0.005873 + 942 0.001054 -0.002144 -0.009156 + 943 0.001818 0.002764 0.000410 + 944 0.002489 0.005354 -0.014128 + 945 0.003819 0.010472 0.007403 + 946 0.005262 -0.000699 0.001191 + 947 -0.002052 -0.008290 0.017377 + 948 -0.012921 -0.009037 0.007720 + 949 0.002875 -0.000206 -0.005514 + 950 0.004620 -0.003924 -0.007344 + 951 0.004396 0.015332 -0.008395 + 952 -0.001773 -0.005567 0.004807 + 953 0.014650 -0.004337 0.011316 + 954 0.007355 -0.004603 0.004796 + 955 0.001050 0.002663 -0.000049 + 956 -0.000422 0.019759 -0.003121 + 957 -0.011736 0.001700 0.005445 + 958 0.002314 -0.007359 0.001422 + 959 0.000226 -0.009157 0.011161 + 960 0.002971 -0.007641 -0.001658 + 961 0.002025 0.003310 0.000085 + 962 0.003783 0.005544 -0.002440 + 963 -0.003390 -0.001680 0.007759 + 964 -0.000259 -0.001517 -0.001671 + 965 -0.009891 -0.000275 0.002930 + 966 -0.004798 -0.018121 0.000493 + 967 0.002742 0.002196 0.002639 + 968 -0.032110 0.008681 0.017593 + 969 -0.005767 -0.003804 -0.003447 + 970 -0.001025 -0.001901 0.007377 + 971 -0.025416 -0.005633 -0.009650 + 972 -0.002448 -0.002342 0.009184 + 973 0.000510 -0.004313 0.003297 + 974 -0.004244 -0.006185 -0.015114 + 975 0.002817 0.008222 0.025232 + 976 -0.005979 0.000432 0.003264 + 977 0.000348 0.000126 0.007237 + 978 -0.031461 0.008376 -0.002490 + 979 -0.003066 -0.005264 0.001528 + 980 0.000500 -0.005194 -0.000082 + 981 -0.006145 0.003915 -0.013465 + 982 -0.002081 -0.001596 0.001268 + 983 0.004918 -0.004802 -0.009499 + 984 -0.008729 0.005751 0.010881 + 985 0.002456 -0.001947 -0.001558 + 986 -0.006566 -0.000024 0.003315 + 987 0.007532 0.005898 -0.002575 + 988 -0.004247 -0.003264 -0.000409 + 989 0.002165 -0.007499 0.004990 + 990 -0.000419 0.003692 -0.004472 + 991 -0.001571 -0.000159 -0.000431 + 992 0.005413 0.009517 0.004397 + 993 -0.002643 -0.002292 -0.001478 + 994 -0.003884 0.005066 -0.000457 + 995 0.006816 0.009263 -0.003376 + 996 -0.007273 0.011919 0.000514 + 997 0.000030 0.001409 0.005477 + 998 0.005334 -0.020033 0.004464 + 999 0.016228 0.009598 -0.007106 + 1000 -0.002283 -0.004481 0.001317 + 1001 -0.002631 -0.006631 -0.004233 + 1002 0.004184 0.000805 0.014756 + 1003 0.000408 -0.003693 0.003308 + 1004 0.004530 -0.006410 -0.006453 + 1005 -0.004928 -0.003846 0.015168 + 1006 0.003101 -0.001511 0.005308 + 1007 0.014081 -0.002443 0.012313 + 1008 0.002846 0.010440 -0.000376 + 1009 0.003569 -0.002175 -0.006662 + 1010 -0.008368 -0.011644 -0.006989 + 1011 0.019824 -0.004949 -0.018661 + 1012 0.003202 -0.011850 0.003160 + 1013 0.014918 -0.009378 0.018579 + 1014 -0.002594 0.004575 -0.001959 + 1015 -0.002298 0.000413 -0.003910 + 1016 0.012837 -0.003799 -0.015681 + 1017 -0.005955 -0.000660 0.004171 + 1018 0.001582 0.000975 0.000146 + 1019 0.006776 -0.014144 -0.007821 + 1020 0.004234 -0.001693 -0.007198 + 1021 -0.001802 -0.002656 0.003257 + 1022 0.028537 0.012512 0.005966 + 1023 -0.000026 -0.011732 -0.013572 + 1024 0.006685 0.008417 -0.002619 + 1025 -0.018380 0.006240 0.006444 + 1026 0.014195 0.009753 -0.004447 + 1027 -0.000769 -0.006799 -0.003510 + 1028 -0.003532 0.013774 -0.009337 + 1029 0.005263 0.018084 -0.010946 + 1030 0.004102 0.004262 -0.002426 + 1031 -0.003256 -0.005354 0.003498 + 1032 -0.021894 -0.003478 0.016467 + 1033 0.001456 -0.004355 -0.002070 + 1034 -0.005859 -0.004113 -0.005871 + 1035 -0.005758 -0.006886 -0.016585 + 1036 0.001562 0.006459 -0.000209 + 1037 0.001331 0.004667 0.000892 + 1038 0.012898 0.027063 -0.008125 + 1039 0.002117 0.007131 0.002457 + 1040 0.026605 0.010046 0.019045 + 1041 -0.017364 0.007077 -0.014953 + 1042 -0.000452 0.009291 0.004625 + 1043 -0.011059 0.009571 0.015357 + 1044 0.027928 -0.000208 0.009437 + 1045 0.003475 -0.004274 -0.000546 + 1046 0.012160 -0.001385 -0.006922 + 1047 -0.016274 -0.008100 -0.006675 + 1048 -0.003853 -0.003278 -0.001388 + 1049 0.014697 -0.003341 -0.007454 + 1050 0.011346 -0.009086 -0.006461 + 1051 -0.001161 -0.003940 -0.002833 + 1052 0.011182 0.001281 -0.000803 + 1053 -0.001345 -0.002375 -0.003580 + 1054 0.004028 0.002256 0.000990 + 1055 0.013302 0.008212 -0.007566 + 1056 0.029179 -0.014499 0.008878 + 1057 0.000706 0.001652 0.001826 + 1058 0.000498 -0.007266 0.024956 + 1059 0.001324 -0.008155 0.011295 + 1060 0.000971 -0.006253 -0.004688 + 1061 -0.004746 -0.005680 -0.016047 + 1062 -0.000356 -0.009050 -0.006561 + 1063 -0.000866 0.005460 0.000045 + 1064 -0.006882 0.011747 0.020163 + 1065 -0.000733 0.001409 -0.010900 + 1066 -0.003804 0.003558 0.001444 + 1067 0.004513 0.002071 -0.017536 + 1068 -0.000869 -0.002704 -0.014336 + 1069 -0.003015 0.003241 -0.002075 + 1070 0.003734 -0.005456 -0.000879 + 1071 -0.006686 -0.008010 -0.008654 + 1072 -0.000541 -0.003669 -0.004373 + 1073 0.003151 -0.002513 -0.013951 + 1074 0.003979 -0.005557 0.002931 + 1075 -0.005175 -0.004387 0.000228 + 1076 -0.005613 -0.012392 -0.029351 + 1077 0.009704 0.009953 -0.015680 + 1078 -0.000915 0.003660 -0.003078 + 1079 0.002529 0.001465 0.006987 + 1080 0.000880 0.001866 -0.004217 + 1081 0.000835 -0.000410 0.000029 + 1082 0.003324 -0.009356 0.012151 + 1083 -0.000797 0.009753 -0.012613 + 1084 0.004557 -0.006851 0.000257 + 1085 0.014378 -0.010986 -0.004036 + 1086 0.001889 0.001865 0.000904 + 1087 0.003881 0.000306 -0.000266 + 1088 0.006043 -0.030376 0.018797 + 1089 -0.001012 -0.002296 0.000324 + 1090 0.007042 0.008682 0.007323 + 1091 0.010016 0.002442 -0.028255 + 1092 -0.004827 0.009414 -0.012200 + 1093 0.002178 0.003272 0.000190 + 1094 0.003486 0.001815 -0.002585 + 1095 0.006020 0.002953 -0.010998 + 1096 0.002573 -0.000704 0.002051 + 1097 -0.010233 0.004335 0.005568 + 1098 0.003397 0.002649 0.010631 + 1099 -0.000367 -0.008657 0.004003 + 1100 0.006810 -0.008282 0.003316 + 1101 -0.008301 -0.011638 -0.006525 + 1102 -0.001900 -0.008810 0.001531 + 1103 0.003628 0.008111 0.009571 + 1104 0.017147 0.000173 0.003988 + 1105 0.006161 0.005444 0.001389 + 1106 -0.033784 0.028714 -0.002486 + 1107 0.022179 0.015181 0.025221 + 1108 0.002935 0.001125 -0.009560 + 1109 0.013392 0.009490 0.002655 + 1110 0.015380 -0.002935 -0.004728 + 1111 0.002760 -0.001052 0.002516 + 1112 -0.006737 0.002302 0.012384 + 1113 -0.004649 -0.009652 -0.009326 + 1114 -0.003333 0.004385 -0.006004 + 1115 -0.014175 0.007089 0.000199 + 1116 0.009875 0.004925 0.012791 + 1117 -0.004828 0.000366 0.001718 + 1118 0.009618 -0.007069 -0.012330 + 1119 -0.021489 -0.009155 -0.001603 + 1120 -0.001360 0.002089 -0.003585 + 1121 0.003530 -0.001847 0.010254 + 1122 0.016468 0.005240 -0.014692 + 1123 0.001989 -0.000949 0.003286 + 1124 0.022107 -0.012110 -0.007316 + 1125 0.012518 -0.010337 0.015891 + 1126 0.000850 -0.001413 -0.001737 + 1127 -0.014943 0.000360 -0.000490 + 1128 -0.027983 -0.005206 0.004037 + 1129 0.011232 0.000349 -0.006679 + 1130 -0.005484 -0.003095 -0.004430 + 1131 -0.005050 -0.002005 -0.015837 + 1132 -0.000470 0.001924 0.001131 + 1133 -0.016506 0.005240 0.008171 + 1134 0.011977 -0.012388 0.003671 + 1135 -0.000818 0.001081 0.001571 + 1136 0.009956 -0.006601 -0.002667 + 1137 -0.013344 0.009962 -0.000602 + 1138 -0.004379 0.004681 0.005655 + 1139 -0.022717 0.009805 -0.016911 + 1140 -0.017223 0.002867 0.018671 + 1141 -0.000339 -0.000149 -0.001276 + 1142 0.002292 0.016872 -0.004987 + 1143 -0.012964 -0.000693 -0.007140 + 1144 -0.002149 0.004008 -0.001355 + 1145 0.012575 0.018012 -0.011467 + 1146 -0.018572 0.011663 -0.005755 + 1147 0.000951 -0.000232 0.005705 + 1148 0.001030 -0.002411 0.005162 + 1149 -0.004871 0.010528 0.006213 + 1150 -0.003431 0.005236 0.003321 + 1151 -0.006083 0.008172 0.003730 + 1152 0.021201 0.002738 -0.026021 + 1153 -0.000559 -0.001274 0.002074 + 1154 -0.000342 -0.008595 -0.003314 + 1155 -0.004563 0.013150 0.001114 + 1156 0.002547 -0.003346 0.000793 + 1157 -0.004000 0.002915 0.001908 + 1158 0.008526 -0.013385 0.001263 + 1159 0.003331 -0.001629 -0.001592 + 1160 0.012216 0.004263 0.001290 + 1161 -0.024729 0.027722 0.012828 + 1162 -0.004556 0.005331 -0.000790 + 1163 -0.001260 0.004809 0.012624 + 1164 0.009151 0.007740 0.005908 + 1165 0.006739 -0.002486 0.000962 + 1166 0.002801 -0.001010 0.007063 + 1167 0.006266 -0.009780 0.000447 + 1168 -0.001756 -0.006121 -0.000399 + 1169 0.002128 0.011752 0.003187 + 1170 -0.000744 -0.004455 -0.001624 + 1171 -0.003120 -0.007987 0.008768 + 1172 -0.001279 -0.014309 0.014916 + 1173 -0.003496 -0.005392 0.006518 + 1174 -0.005252 -0.000094 0.002610 + 1175 -0.004319 0.000327 0.003799 + 1176 0.014469 -0.001407 -0.023557 + 1177 -0.001733 0.011173 0.001097 + 1178 0.019607 0.000729 -0.008577 + 1179 -0.013430 0.021297 -0.011104 + 1180 0.005550 -0.002953 -0.004489 + 1181 -0.021164 -0.004283 0.009224 + 1182 0.020762 -0.011806 0.008058 + 1183 -0.003934 -0.006346 0.000789 + 1184 -0.004154 -0.012917 -0.000804 + 1185 0.001834 -0.003234 0.006486 + 1186 -0.003359 -0.000166 0.000482 + 1187 -0.010938 -0.009570 0.011838 + 1188 -0.006339 -0.002743 -0.017319 + 1189 -0.002008 -0.000238 -0.002842 + 1190 0.009730 0.002797 -0.000255 + 1191 0.004802 0.018470 -0.005529 + 1192 0.002978 0.003254 0.000406 + 1193 0.001762 -0.016118 0.017481 + 1194 0.009625 0.005549 -0.002833 + 1195 -0.005277 -0.000015 -0.004247 + 1196 0.008535 -0.018189 -0.023760 + 1197 -0.020839 0.008581 0.007193 + 1198 0.001976 -0.001531 0.001386 + 1199 -0.012488 -0.005613 0.004418 + 1200 0.012387 0.001324 -0.002579 + 1201 0.004612 0.001574 0.002430 + 1202 0.004011 0.024078 0.008286 + 1203 0.028635 -0.001749 -0.000378 + 1204 -0.001292 -0.004163 0.001688 + 1205 0.018917 -0.005327 -0.022863 + 1206 -0.021498 0.026796 -0.015481 + 1207 -0.004360 -0.003023 -0.007483 + 1208 0.015222 -0.007834 -0.014901 + 1209 -0.015487 -0.004003 -0.024684 + 1210 0.000162 -0.000232 -0.002511 + 1211 0.005663 0.001759 0.003041 + 1212 -0.026577 0.001752 0.009499 + 1213 -0.002118 -0.004800 0.002106 + 1214 0.012772 0.013880 -0.004149 + 1215 0.008831 0.004495 0.004278 + 1216 -0.001002 0.000396 0.000450 + 1217 0.001493 -0.000300 0.006615 + 1218 0.022789 -0.011336 -0.001626 + 1219 -0.002165 0.002305 -0.004399 + 1220 -0.001727 0.010653 0.006150 + 1221 0.001799 -0.000399 -0.015101 + 1222 -0.002535 -0.001664 0.000167 + 1223 -0.007939 0.009699 -0.003581 + 1224 -0.009214 -0.009452 -0.003331 + 1225 -0.002745 0.003249 0.011490 + 1226 0.010727 -0.015563 0.011870 + 1227 -0.003771 0.013856 -0.015486 + 1228 -0.000932 0.001513 0.000721 + 1229 -0.002528 0.000192 0.015301 + 1230 -0.027023 -0.007231 0.009659 + 1231 -0.005525 0.001099 -0.001369 + 1232 -0.002318 -0.008510 -0.009719 + 1233 -0.005945 -0.008347 0.009845 + 1234 -0.000817 -0.006097 -0.001394 + 1235 0.026844 0.005400 -0.013998 + 1236 -0.019837 0.017329 -0.010038 + 1237 -0.002691 -0.005371 -0.000786 + 1238 -0.007304 -0.006372 0.007409 + 1239 -0.014066 -0.005252 0.014237 + 1240 -0.000660 -0.004157 -0.007445 + 1241 -0.015343 -0.015681 0.000525 + 1242 -0.004856 0.008296 -0.020506 + 1243 -0.000451 -0.006253 0.005274 + 1244 -0.016626 -0.024128 0.003146 + 1245 0.003430 -0.001516 0.006995 + 1246 0.002369 0.000761 -0.000692 + 1247 -0.011034 0.017913 -0.003576 + 1248 0.014886 0.005052 0.010870 + 1249 0.000976 0.003044 0.004043 + 1250 0.002084 0.009119 -0.003484 + 1251 -0.004682 -0.003095 0.024419 + 1252 -0.001872 0.005519 -0.003878 + 1253 0.014045 0.004474 0.006660 + 1254 -0.006683 -0.012923 -0.006357 + 1255 -0.007125 -0.002296 0.002894 + 1256 -0.009126 -0.000293 0.008175 + 1257 -0.005668 -0.002902 -0.000640 + 1258 -0.009805 0.000500 -0.001546 + 1259 -0.007254 -0.007274 0.010849 + 1260 0.005786 0.004719 0.004479 + 1261 0.000767 -0.007091 -0.002809 + 1262 -0.010861 -0.024470 -0.006678 + 1263 0.010352 0.003874 -0.018616 + 1264 -0.001332 -0.000776 -0.001533 + 1265 0.005055 -0.002761 -0.000154 + 1266 0.001293 -0.010766 0.003695 + 1267 0.004101 0.005423 0.004161 + 1268 -0.006495 -0.001645 0.007645 + 1269 0.024277 0.000761 0.018148 + 1270 0.000384 -0.004677 0.001777 + 1271 -0.000305 -0.022286 0.006378 + 1272 0.014900 -0.009298 0.005029 + 1273 -0.002201 -0.002422 -0.001266 + 1274 0.002419 0.000621 -0.006170 + 1275 0.002242 -0.003567 -0.006329 + 1276 0.001155 0.006214 -0.002164 + 1277 -0.025679 0.011598 0.001775 + 1278 -0.016652 0.005061 0.002255 + 1279 -0.000163 0.000193 -0.001041 + 1280 -0.002822 -0.004131 -0.007696 + 1281 -0.007029 0.005316 -0.012422 + 1282 -0.001259 -0.001443 0.001295 + 1283 -0.000992 -0.027820 -0.000474 + 1284 -0.012190 -0.043729 -0.008054 + 1285 -0.001840 -0.001572 0.001104 + 1286 0.008311 0.001263 -0.001841 + 1287 0.001277 0.000429 -0.007113 + 1288 -0.005029 -0.002280 -0.002761 + 1289 -0.024723 0.012515 -0.012864 + 1290 -0.013845 -0.020399 0.001674 + 1291 -0.000161 0.002303 0.004199 + 1292 -0.010956 -0.010528 0.017163 + 1293 0.023554 -0.006815 0.021159 + 1294 0.000772 -0.000829 0.004462 + 1295 0.024106 -0.007189 -0.017980 + 1296 -0.011795 0.000225 0.018351 + 1297 -0.002503 0.000288 -0.000931 + 1298 -0.001901 -0.006775 -0.001166 + 1299 -0.002626 0.004209 -0.000596 + 1300 -0.003248 -0.009856 0.001496 + 1301 -0.008616 0.000206 -0.000660 + 1302 0.012991 -0.001944 0.010735 + 1303 0.000183 0.003767 -0.002207 + 1304 0.002875 0.006021 0.006091 + 1305 -0.003343 -0.008883 0.015455 + 1306 -0.003761 0.009400 -0.007147 + 1307 -0.002601 -0.012510 0.005900 + 1308 -0.013464 0.021935 0.006364 + 1309 0.007717 -0.006568 -0.004280 + 1310 0.004551 -0.013432 0.001741 + 1311 0.016676 -0.009730 -0.005415 + 1312 -0.003518 -0.000115 0.000120 + 1313 -0.018566 -0.004441 0.007076 + 1314 0.011422 0.004168 0.013848 + 1315 -0.002232 0.003004 -0.005210 + 1316 -0.004985 -0.000655 -0.007286 + 1317 -0.004756 0.005461 -0.010032 + 1318 0.003296 -0.000345 0.003797 + 1319 0.000013 0.003387 0.009258 + 1320 -0.001175 0.009021 0.016554 + 1321 0.004610 0.000563 0.001890 + 1322 0.001511 0.004957 0.010795 + 1323 -0.000517 0.009529 0.012695 + 1324 0.003561 -0.002127 -0.002139 + 1325 -0.016355 -0.004573 0.011414 + 1326 0.002437 -0.000969 0.003958 + 1327 -0.003191 0.002772 0.003706 + 1328 0.002188 0.004078 0.024902 + 1329 0.005804 0.008997 0.000514 + 1330 0.000169 -0.001823 0.006601 + 1331 -0.012837 0.016738 0.032499 + 1332 -0.003787 -0.003993 0.005792 + 1333 -0.006500 -0.001952 -0.005568 + 1334 0.004632 0.002607 -0.001417 + 1335 0.007826 -0.018417 0.003893 + 1336 0.001400 0.000629 -0.002329 + 1337 -0.026090 -0.010827 -0.007428 + 1338 0.014757 0.003359 0.005866 + 1339 0.005344 0.002452 0.000637 + 1340 0.002304 0.001516 0.008371 + 1341 0.003116 0.003502 0.000920 + 1342 0.000219 0.006872 -0.006361 + 1343 0.004872 0.004948 -0.015461 + 1344 0.002293 0.008990 -0.007103 + 1345 -0.000248 -0.001405 -0.000404 + 1346 0.016050 0.005473 0.014883 + 1347 0.000661 0.010958 0.009762 + 1348 0.002507 0.004854 0.004016 + 1349 -0.000026 0.005865 -0.004933 + 1350 -0.003541 0.012071 0.011984 + 1351 -0.000388 -0.001662 -0.002624 + 1352 -0.008781 0.002236 0.005933 + 1353 -0.002303 0.010321 -0.013971 + 1354 0.000266 0.005381 0.006218 + 1355 -0.030793 -0.017551 0.006520 + 1356 -0.001710 0.006198 0.003481 + 1357 -0.000575 0.000387 0.003498 + 1358 0.011844 0.006387 0.013823 + 1359 -0.004149 -0.001630 0.001064 + 1360 0.002966 -0.001211 -0.000529 + 1361 0.011026 0.001160 0.001568 + 1362 0.015143 -0.001234 0.000065 + 1363 0.000976 0.001952 -0.002769 + 1364 0.013527 0.011152 0.001594 + 1365 -0.000179 -0.000211 -0.002554 + 1366 -0.005351 -0.004969 -0.002979 + 1367 -0.006889 0.021662 -0.005435 + 1368 -0.002462 0.016113 0.008657 + 1369 -0.000975 0.000751 -0.000755 + 1370 -0.003243 0.006738 -0.001393 + 1371 -0.002267 -0.000779 0.003167 + 1372 0.001566 -0.003190 -0.000583 + 1373 -0.002018 -0.005136 0.012563 + 1374 -0.006828 0.007134 0.011132 + 1375 0.005244 -0.004715 -0.003319 + 1376 -0.010064 -0.001392 0.024842 + 1377 -0.003331 -0.012180 0.011450 + 1378 0.005044 -0.003538 0.000197 + 1379 0.014932 -0.005316 0.014871 + 1380 0.002959 -0.015155 -0.010790 + 1381 0.004288 0.003508 0.003045 + 1382 0.010516 0.006731 0.001181 + 1383 0.003157 0.002004 0.039661 + 1384 -0.003464 -0.000341 -0.002519 + 1385 0.000767 -0.010574 0.002375 + 1386 0.012132 0.009405 0.005728 + 1387 -0.002537 0.005096 -0.000141 + 1388 0.008455 -0.000335 0.003398 + 1389 0.000567 0.012932 0.006368 + 1390 0.007440 -0.002304 0.001444 + 1391 0.003946 0.007849 -0.005030 + 1392 0.012038 -0.016280 0.007159 + 1393 -0.001061 -0.002610 -0.000083 + 1394 0.010905 -0.006613 -0.001941 + 1395 -0.013885 -0.027620 0.005494 + 1396 0.013746 0.003525 0.007163 + 1397 0.003586 0.002644 -0.010792 + 1398 0.018544 0.013850 0.017322 + 1399 0.004571 0.000027 -0.001760 + 1400 0.012220 0.001858 -0.006751 + 1401 0.009850 -0.002003 0.019339 + 1402 -0.001383 0.002281 -0.007042 + 1403 -0.003363 0.001654 -0.017801 + 1404 0.011330 0.009635 0.005470 + 1405 0.000650 -0.001098 -0.005942 + 1406 0.005198 -0.008028 -0.003832 + 1407 0.017668 -0.005738 0.026099 + 1408 -0.001891 0.001162 0.003476 + 1409 -0.003537 0.018838 0.000972 + 1410 0.007980 0.016250 0.030292 + 1411 -0.001348 0.000197 0.004181 + 1412 -0.002255 -0.008393 -0.001355 + 1413 -0.008567 -0.008184 -0.000151 + 1414 -0.001145 0.001777 -0.004250 + 1415 -0.002565 -0.000609 -0.002622 + 1416 0.017182 0.009342 -0.008899 + 1417 -0.000336 -0.000833 -0.006619 + 1418 0.006594 -0.014023 -0.011705 + 1419 -0.010047 -0.002912 -0.003804 + 1420 0.005759 0.000406 0.005233 + 1421 -0.013174 -0.018780 -0.002966 + 1422 -0.003551 -0.005212 0.011087 + 1423 -0.001811 -0.005836 -0.002120 + 1424 -0.008296 0.022099 0.012646 + 1425 0.010130 0.006059 0.033707 + 1426 0.001039 -0.001025 -0.000459 + 1427 0.004468 0.000527 0.001539 + 1428 -0.001728 -0.005304 0.003140 + 1429 -0.000141 -0.003112 0.003400 + 1430 0.007530 -0.026022 0.005020 + 1431 -0.011982 0.032142 -0.001998 + 1432 -0.001642 0.003923 -0.003350 + 1433 0.016086 -0.002664 -0.005695 + 1434 -0.010354 0.000136 0.021071 + 1435 0.001502 -0.001507 0.005856 + 1436 -0.003359 -0.017617 -0.013060 + 1437 -0.001621 -0.013764 -0.008355 + 1438 -0.006074 0.001165 0.001910 + 1439 -0.004946 0.003618 0.011324 + 1440 -0.007761 0.002697 -0.006763 + 1441 -0.009332 0.000898 0.000750 + 1442 -0.017083 -0.010335 0.011191 + 1443 0.020780 0.013466 -0.015083 + 1444 -0.008140 -0.008032 -0.000180 + 1445 -0.001836 -0.008988 0.003973 + 1446 -0.008280 -0.004548 -0.003224 + 1447 0.000996 -0.002062 -0.001184 + 1448 -0.001863 -0.012096 0.003957 + 1449 -0.027050 0.007989 0.002157 + 1450 -0.001321 -0.000325 0.001355 + 1451 -0.006885 -0.000536 -0.022446 + 1452 0.008792 -0.007975 0.003329 + 1453 -0.003682 -0.004782 -0.002567 + 1454 -0.001180 -0.009011 0.018662 + 1455 -0.000958 -0.004899 0.013723 + 1456 0.000545 0.011919 -0.001753 + 1457 0.023799 0.010298 -0.002649 + 1458 0.014717 0.007757 -0.005400 + 1459 -0.004576 -0.007691 0.001365 + 1460 -0.006577 -0.016846 -0.022862 + 1461 -0.005206 0.003687 0.012428 + 1462 0.001923 -0.004758 -0.001993 + 1463 0.006600 0.017503 0.006935 + 1464 -0.006747 -0.003482 -0.000067 + 1465 0.000613 0.004580 0.004038 + 1466 -0.001945 0.022605 -0.000652 + 1467 0.017624 -0.001392 0.003829 + 1468 -0.003065 -0.003003 -0.000747 + 1469 -0.012664 -0.016566 -0.007030 + 1470 0.008660 -0.008358 0.004763 + 1471 -0.004008 0.000421 -0.006040 + 1472 0.003555 0.008566 -0.015842 + 1473 -0.001032 0.001700 -0.010204 + 1474 -0.000556 0.000599 0.003074 + 1475 0.001542 0.002939 0.005269 + 1476 -0.005281 -0.001944 0.003338 + 1477 -0.000195 -0.000293 -0.001004 + 1478 -0.009991 -0.005354 -0.013386 + 1479 -0.000476 -0.017594 0.007900 + 1480 0.000550 -0.000431 0.001422 + 1481 0.018094 -0.005183 0.016234 + 1482 0.010706 0.011668 -0.017772 + 1483 0.001291 0.006499 0.000951 + 1484 0.009985 -0.016962 0.009714 + 1485 0.020849 0.018365 -0.008351 + 1486 0.006940 0.004692 -0.002409 + 1487 0.022308 0.010182 -0.022897 + 1488 0.000269 0.008847 0.011834 + 1489 0.002051 0.007334 -0.000125 + 1490 -0.023048 0.013759 -0.030276 + 1491 0.023523 -0.005817 0.007754 + 1492 -0.001269 0.002979 0.001311 + 1493 -0.005596 0.006174 0.011007 + 1494 -0.009061 0.022719 0.002133 + 1495 -0.001128 0.004307 -0.002381 + 1496 -0.004340 0.013891 -0.003505 + 1497 0.001822 -0.005505 -0.001135 + 1498 -0.000910 0.001437 0.000165 + 1499 0.004510 -0.000360 -0.006425 + 1500 0.003993 0.000498 0.007321 + 1501 -0.002868 -0.000316 -0.000509 + 1502 0.000620 0.011286 0.008461 + 1503 -0.013079 -0.008157 0.007561 + 1504 -0.003002 0.003413 0.004968 + 1505 0.015262 -0.005133 0.012052 + 1506 -0.003968 -0.003643 0.003514 + 1507 0.005087 -0.001882 -0.000518 + 1508 0.000932 -0.002238 0.000800 + 1509 -0.008149 0.000695 -0.000827 + 1510 -0.001261 -0.003375 0.000333 + 1511 -0.001224 -0.004135 -0.003080 + 1512 0.009246 -0.010372 0.026354 + 1513 0.000697 -0.003200 0.001222 + 1514 -0.002319 0.003800 0.022860 + 1515 -0.018205 0.011600 -0.011416 + 1516 -0.001731 -0.001076 0.002612 + 1517 -0.004661 -0.010783 -0.001505 + 1518 0.016208 0.002810 0.004482 + 1519 0.003508 -0.001750 0.002537 + 1520 0.024576 -0.026041 -0.004083 + 1521 -0.019140 0.000844 0.001909 + 1522 -0.000341 0.001152 0.001967 + 1523 -0.020076 0.003364 0.001315 + 1524 -0.000942 0.000692 -0.003283 + 1525 -0.006519 -0.000419 0.000991 + 1526 -0.004033 0.006531 0.004791 + 1527 0.005626 0.012187 -0.014266 + 1528 0.001113 -0.004253 0.011930 + 1529 -0.010144 0.003567 0.009059 + 1530 -0.003464 0.001115 0.011591 + 1531 0.000006 0.000074 0.005751 + 1532 0.003604 0.008464 0.010627 + 1533 -0.004351 -0.009621 -0.000453 + 1534 -0.000196 -0.001160 0.002795 + 1535 -0.006855 0.001414 0.005552 + 1536 -0.000894 -0.002102 0.005053 + 1537 -0.002040 -0.005887 -0.003590 + 1538 -0.006852 -0.011947 -0.023080 + 1539 -0.016070 0.000160 0.010390 + 1540 0.004712 0.002848 -0.002998 + 1541 -0.004259 0.007840 0.008142 + 1542 -0.004861 0.004263 0.011728 + 1543 0.006968 -0.004871 0.004119 + 1544 -0.016558 -0.002046 -0.006090 + 1545 -0.006229 0.004475 0.001436 + 1546 -0.002341 -0.004733 -0.003946 + 1547 0.003563 0.004733 0.009615 + 1548 -0.013018 0.004747 -0.004733 + 1549 0.001703 -0.000331 0.003605 + 1550 0.005459 -0.002653 -0.012447 + 1551 0.013689 0.008625 -0.003301 + 1552 0.003195 0.001205 -0.000779 + 1553 -0.003336 -0.011439 -0.004979 + 1554 0.001015 0.018568 -0.007361 + 1555 -0.001647 -0.003759 0.001214 + 1556 0.015583 -0.016961 0.000384 + 1557 -0.011138 -0.013161 -0.015913 + 1558 0.005848 -0.002193 -0.007682 + 1559 0.009577 -0.005765 0.010025 + 1560 0.006984 0.005858 -0.020668 + 1561 -0.005040 0.001396 0.001932 + 1562 0.007071 0.009231 0.007700 + 1563 0.001743 0.005137 0.005850 + 1564 0.001857 0.002145 -0.004455 + 1565 -0.007462 0.014047 -0.012730 + 1566 0.013730 -0.006385 0.009586 + 1567 -0.002000 0.003453 -0.001882 + 1568 -0.009622 -0.007424 -0.003371 + 1569 -0.006993 -0.018224 -0.006858 + 1570 0.001461 0.001281 -0.002568 + 1571 0.018901 0.002357 0.001811 + 1572 -0.001592 0.019333 -0.002732 + 1573 -0.001308 -0.005730 -0.002519 + 1574 -0.014074 0.007287 0.021518 + 1575 -0.017324 -0.018775 -0.005647 + 1576 0.002340 -0.001593 0.004994 + 1577 -0.000516 0.003608 0.002676 + 1578 -0.014840 -0.017283 -0.001508 + 1579 -0.001557 -0.002471 -0.002555 + 1580 0.016654 -0.033672 0.006595 + 1581 0.013351 -0.030070 0.003443 + 1582 0.003752 0.001449 0.001862 + 1583 -0.011257 -0.002704 0.007355 + 1584 0.002139 0.006577 0.012771 + 1585 0.002251 0.002492 -0.002180 + 1586 0.010691 -0.005615 -0.001517 + 1587 -0.018738 0.016070 0.006914 + 1588 -0.001600 0.000180 0.001378 + 1589 0.004891 -0.007732 -0.013906 + 1590 -0.015149 0.011285 0.002913 + 1591 0.003944 -0.001162 -0.002407 + 1592 -0.013220 -0.006427 -0.006873 + 1593 -0.008388 0.022805 -0.011588 + 1594 0.000621 -0.004836 0.005509 + 1595 0.006148 -0.013451 0.002326 + 1596 -0.001161 -0.012639 -0.002024 + 1597 -0.005042 0.000613 0.003072 + 1598 -0.002560 -0.009516 -0.007164 + 1599 -0.007736 0.003315 0.007824 + 1600 -0.002409 -0.002549 -0.003082 + 1601 -0.002839 0.004415 -0.008830 + 1602 -0.006633 -0.001003 -0.004060 + 1603 -0.004810 -0.007495 -0.004047 + 1604 0.005200 -0.017270 0.009101 + 1605 0.000670 -0.009280 -0.012848 + 1606 -0.003830 0.001924 -0.002728 + 1607 -0.035525 0.007821 -0.020602 + 1608 0.016575 -0.019547 -0.006176 + 1609 0.003828 0.000099 -0.002605 + 1610 0.017387 0.007652 0.014875 + 1611 0.012190 0.014852 0.016071 + 1612 -0.003436 0.002187 -0.001035 + 1613 -0.005586 -0.003901 0.006033 + 1614 -0.005884 -0.005331 -0.011796 + 1615 -0.001799 -0.005019 0.004011 + 1616 0.002094 -0.028579 0.008471 + 1617 0.023334 0.020189 0.016696 + 1618 -0.000653 -0.003079 -0.001689 + 1619 -0.005925 -0.004542 -0.007489 + 1620 0.003980 0.000361 0.005598 + 1621 -0.000999 0.004025 -0.003724 + 1622 0.000058 0.024442 0.006515 + 1623 0.011473 -0.013431 0.004073 + 1624 0.002923 -0.003314 0.001931 + 1625 0.003377 -0.006029 -0.008704 + 1626 0.002413 0.015094 0.010447 + 1627 0.003654 -0.000619 -0.001261 + 1628 -0.004232 -0.000930 0.001384 + 1629 0.019160 0.000313 -0.006734 + 1630 0.003534 0.002394 -0.000501 + 1631 -0.008068 0.002953 0.008451 + 1632 0.014612 0.006975 -0.004278 + 1633 0.001620 0.003004 0.003226 + 1634 -0.007605 -0.007788 0.011245 + 1635 0.020296 -0.014907 -0.003043 + 1636 -0.002678 -0.006261 0.001869 + 1637 -0.007968 -0.013586 -0.003793 + 1638 -0.015202 -0.007224 -0.014352 + 1639 -0.005816 -0.003019 0.006480 + 1640 -0.001607 -0.004084 0.006246 + 1641 0.008520 -0.008049 0.002824 + 1642 -0.000658 -0.004008 -0.000300 + 1643 -0.000444 0.000650 -0.012168 + 1644 -0.006399 -0.006883 0.005254 + 1645 -0.001317 0.006093 0.001522 + 1646 -0.010770 -0.004270 -0.010989 + 1647 -0.005520 0.020979 0.012203 + 1648 -0.004763 0.001957 0.003649 + 1649 -0.010531 0.001095 0.022741 + 1650 0.001695 -0.009764 -0.029750 + 1651 0.000561 0.003660 0.004562 + 1652 0.004814 -0.011887 -0.011791 + 1653 0.015151 -0.017660 -0.020515 + 1654 -0.003720 -0.008154 0.002101 + 1655 -0.006836 0.005342 0.006830 + 1656 -0.008891 -0.005752 0.002656 + 1657 -0.004211 -0.006534 0.001470 + 1658 0.024344 -0.009232 0.001415 + 1659 -0.010793 -0.032076 -0.013330 + 1660 -0.000393 0.010082 -0.000260 + 1661 -0.003386 0.024037 -0.002341 + 1662 0.005231 -0.007154 0.002310 + 1663 0.004778 0.000685 -0.001247 + 1664 0.006845 -0.000146 -0.002439 + 1665 0.002831 0.001509 -0.001312 + 1666 -0.004575 0.002015 0.002231 + 1667 -0.008714 0.004773 0.019310 + 1668 -0.009036 0.006437 0.017025 + 1669 -0.001102 -0.003004 0.003294 + 1670 0.004690 0.016121 0.007181 + 1671 -0.000881 -0.003815 0.001639 + 1672 -0.000053 -0.001708 0.002633 + 1673 -0.004620 0.003536 0.000715 + 1674 -0.002636 -0.005429 0.007498 + 1675 0.002307 0.001406 0.002665 + 1676 -0.005270 -0.001969 0.007587 + 1677 0.001417 -0.009022 -0.021912 + 1678 0.000203 0.002930 -0.002177 + 1679 0.003819 0.012652 -0.002939 + 1680 -0.001040 0.005171 0.022221 + 1681 -0.001765 0.004140 -0.001020 + 1682 0.015888 -0.002384 -0.000464 + 1683 -0.019573 0.014814 -0.003047 + 1684 -0.002840 -0.000626 0.000097 + 1685 0.019011 -0.004434 -0.031132 + 1686 -0.011722 0.011711 0.019623 + 1687 -0.000720 0.008278 0.001232 + 1688 -0.000014 -0.005707 0.005722 + 1689 0.006445 -0.004607 0.004541 + 1690 -0.008451 -0.005406 -0.003097 + 1691 -0.025859 -0.004092 0.011942 + 1692 0.003198 0.017013 -0.015979 + 1693 0.001237 0.005482 0.001012 + 1694 -0.003233 0.012773 -0.012817 + 1695 -0.013658 -0.008102 0.007350 + 1696 0.004867 0.002547 -0.001769 + 1697 0.019074 -0.004173 0.005165 + 1698 0.008487 0.001064 0.000080 + 1699 0.002766 -0.001251 -0.001561 + 1700 -0.019200 0.027169 -0.007481 + 1701 0.006036 -0.028485 -0.009388 + 1702 -0.005460 0.002563 0.001784 + 1703 -0.017462 0.006398 0.005231 + 1704 -0.014453 0.005484 0.004388 + 1705 0.002956 -0.001348 0.006512 + 1706 0.009654 0.004653 0.025184 + 1707 0.006226 -0.001478 -0.018062 + 1708 0.003757 -0.000921 -0.000401 + 1709 0.004307 -0.009700 -0.007768 + 1710 0.003780 -0.012914 0.008582 + 1711 0.004846 -0.002032 -0.000808 + 1712 -0.000823 -0.002500 -0.004619 + 1713 0.014769 -0.010350 0.008970 + 1714 -0.001580 -0.000837 0.000021 + 1715 -0.002003 -0.002972 -0.000158 + 1716 -0.004469 -0.000404 0.001257 + 1717 -0.001782 0.001231 -0.003624 + 1718 -0.009550 0.008477 -0.006010 + 1719 -0.003240 -0.001801 -0.002707 + 1720 -0.003131 -0.002749 -0.002782 + 1721 -0.003319 -0.008008 -0.009572 + 1722 -0.003280 -0.008289 -0.009069 + 1723 -0.006776 0.001807 0.000809 + 1724 0.000630 0.005359 0.003033 + 1725 0.016012 0.013546 0.014364 + 1726 -0.005383 0.003683 -0.001052 + 1727 -0.000343 -0.021814 -0.000655 + 1728 0.015975 0.004809 -0.015863 + 1729 -0.002843 0.002136 0.000031 + 1730 0.008511 0.002265 -0.002748 + 1731 -0.026285 -0.002274 -0.004757 + 1732 0.005294 -0.003565 0.004694 + 1733 -0.002668 0.001103 -0.001112 + 1734 -0.009429 0.006969 -0.008965 + 1735 -0.001634 0.000110 0.001819 + 1736 -0.004942 0.001203 -0.007254 + 1737 -0.002655 0.002573 -0.003610 + 1738 -0.004831 0.005860 0.001407 + 1739 -0.014232 0.009476 0.016389 + 1740 -0.017895 0.005674 -0.009379 + 1741 0.003013 -0.002508 -0.001228 + 1742 0.000746 0.006449 -0.005992 + 1743 0.006650 -0.002762 0.000152 + 1744 0.002550 -0.008457 0.001324 + 1745 -0.001868 -0.010233 -0.023525 + 1746 0.003968 -0.007880 0.008439 + 1747 -0.000591 0.004322 -0.003592 + 1748 -0.014424 0.009132 0.003708 + 1749 0.012052 -0.004950 -0.011581 + 1750 0.001849 0.003842 -0.009164 + 1751 0.009453 -0.005684 -0.004817 + 1752 0.001564 0.018776 -0.004831 + 1753 0.000794 0.000968 -0.001710 + 1754 -0.003816 -0.004723 -0.000498 + 1755 -0.011972 0.005633 -0.006975 + 1756 -0.004635 0.005064 -0.004764 + 1757 -0.010722 0.012077 -0.027297 + 1758 -0.003376 0.000707 0.006078 + 1759 0.001092 0.005159 -0.000557 + 1760 0.014326 0.002844 -0.021424 + 1761 0.019579 -0.002405 -0.009532 + 1762 -0.000565 0.006632 0.002294 + 1763 -0.025047 0.006219 0.001583 + 1764 -0.004637 -0.007484 0.007079 + 1765 0.002563 -0.001616 -0.003316 + 1766 -0.001239 0.014897 -0.002355 + 1767 -0.001256 -0.009226 0.009450 + 1768 0.001056 0.005329 -0.003831 + 1769 -0.012555 0.037676 0.021233 + 1770 -0.005969 -0.003116 -0.014248 + 1771 0.000691 0.001302 0.002405 + 1772 -0.015733 0.001224 -0.004288 + 1773 0.006783 0.015986 -0.003342 + 1774 0.002355 0.002897 -0.002965 + 1775 -0.000435 0.005789 0.007980 + 1776 0.014211 0.000855 -0.014841 + 1777 -0.004596 -0.002169 0.000774 + 1778 0.002630 -0.027237 0.012553 + 1779 -0.000727 -0.003394 -0.009924 + 1780 0.001821 -0.001310 0.000540 + 1781 0.005476 -0.002057 0.001588 + 1782 0.008060 0.013457 -0.013767 + 1783 0.003078 -0.007047 0.009501 + 1784 -0.004392 -0.004982 0.015684 + 1785 -0.021173 -0.003917 -0.003013 + 1786 0.001492 -0.007162 -0.003460 + 1787 0.020179 0.025050 0.005018 + 1788 -0.018378 -0.021938 0.007656 + 1789 -0.000363 0.004076 -0.003991 + 1790 0.012179 0.023942 -0.003853 + 1791 0.002207 0.011773 0.006443 + 1792 0.001993 0.000538 0.002365 + 1793 0.008602 -0.013779 -0.007218 + 1794 0.007374 0.001122 0.001108 + 1795 0.003207 -0.011319 -0.004081 + 1796 0.010332 -0.007827 -0.001929 + 1797 0.001869 0.022609 0.012256 + 1798 0.001101 0.003835 0.002357 + 1799 -0.003624 0.011759 0.002745 + 1800 0.001557 -0.002337 -0.004179 + 1801 0.003327 -0.001910 -0.005250 + 1802 0.011996 0.003017 0.013309 + 1803 -0.013682 -0.002775 -0.008939 + 1804 -0.002064 -0.000934 0.000427 + 1805 -0.012146 0.024406 -0.015171 + 1806 0.005030 -0.019570 0.004311 + 1807 0.003003 0.004365 0.002257 + 1808 0.000823 0.000086 -0.005161 + 1809 -0.003001 0.001206 0.008241 + 1810 0.005602 -0.001423 0.002945 + 1811 0.000330 0.001483 -0.011075 + 1812 0.003652 0.009252 -0.000166 + 1813 0.004531 -0.000860 -0.000170 + 1814 0.018728 0.013621 0.031510 + 1815 0.011579 -0.009257 -0.004100 + 1816 0.002862 0.000330 -0.002342 + 1817 -0.003456 -0.001426 -0.004566 + 1818 -0.006589 0.018593 0.018322 + 1819 -0.001663 0.002113 0.003120 + 1820 0.002523 0.005185 0.010725 + 1821 -0.006456 -0.005159 0.018366 + 1822 -0.000677 -0.000638 0.005530 + 1823 0.006499 0.011396 0.003392 + 1824 0.000945 -0.008826 -0.007441 + 1825 -0.002582 0.001006 0.000170 + 1826 -0.000739 0.010378 -0.012944 + 1827 -0.004082 -0.009693 0.012271 + 1828 -0.002259 -0.002179 0.001812 + 1829 0.004365 0.028602 0.007523 + 1830 -0.001047 0.006781 -0.010318 + 1831 0.003053 0.002227 0.004523 + 1832 -0.004297 -0.007295 0.001900 + 1833 0.002925 0.002066 0.004473 + 1834 0.003171 0.000025 0.002189 + 1835 0.001188 0.002838 0.001014 + 1836 0.006142 0.003073 -0.003689 + 1837 0.009818 0.005253 0.006222 + 1838 0.013907 -0.003607 0.006764 + 1839 -0.000327 0.015573 -0.010930 + 1840 -0.003110 -0.005538 0.000400 + 1841 0.006244 -0.021206 -0.003853 + 1842 -0.010299 0.008474 0.021147 + 1843 -0.001053 -0.000598 0.004581 + 1844 -0.013621 0.002557 -0.003175 + 1845 -0.002495 0.000789 0.011106 + 1846 -0.000137 -0.004006 -0.000014 + 1847 -0.017819 -0.013981 0.011316 + 1848 -0.005844 -0.000863 -0.025248 + 1849 -0.002799 0.002996 -0.002499 + 1850 -0.012455 0.012490 -0.004469 + 1851 0.010514 0.009490 -0.009495 + 1852 -0.000560 -0.004144 -0.000656 + 1853 -0.007255 0.002559 0.003817 + 1854 0.004602 -0.007276 0.003469 + 1855 0.000128 0.001144 -0.008402 + 1856 0.008157 0.001721 -0.014464 + 1857 -0.004034 0.002739 -0.008982 + 1858 0.002856 0.004731 -0.003812 + 1859 0.008481 -0.004184 -0.015612 + 1860 -0.004966 0.006658 -0.006541 + 1861 0.005415 -0.007185 0.002622 + 1862 -0.000791 0.004294 0.012806 + 1863 0.006266 -0.008943 0.000048 + 1864 -0.004891 -0.000259 0.002435 + 1865 0.000775 -0.012600 0.009738 + 1866 -0.000239 0.020688 0.014963 + 1867 0.007752 0.006605 0.003522 + 1868 0.005559 0.005449 0.004823 + 1869 0.001382 0.020031 -0.009484 + 1870 0.000269 -0.000837 -0.001948 + 1871 -0.015324 0.006379 0.032972 + 1872 -0.010895 -0.006739 0.002233 + 1873 0.002406 -0.005817 -0.007929 + 1874 0.011974 0.013774 0.020789 + 1875 -0.005616 -0.012309 -0.023698 + 1876 -0.002712 -0.000118 0.000894 + 1877 -0.000559 -0.018665 -0.005699 + 1878 -0.022904 -0.016730 0.007620 + 1879 -0.006235 -0.000119 -0.005440 + 1880 -0.008616 0.001720 0.002602 + 1881 -0.019263 0.001295 0.018377 + 1882 -0.002493 0.002824 -0.002915 + 1883 0.007384 0.000692 0.003462 + 1884 -0.019228 -0.005451 0.005676 + 1885 0.002956 0.004628 -0.002177 + 1886 0.005617 0.021792 -0.005623 + 1887 -0.010771 -0.007154 -0.002600 + 1888 -0.006932 -0.006388 0.001795 + 1889 -0.026638 0.002211 0.017012 + 1890 -0.006429 -0.013703 0.021233 + 1891 0.004179 0.001508 -0.002942 + 1892 -0.015358 0.009799 -0.025507 + 1893 -0.009827 0.001263 -0.015038 + 1894 0.002515 0.004808 -0.006083 + 1895 -0.001395 -0.005178 0.010798 + 1896 0.005498 0.001296 -0.013456 + 1897 -0.006679 0.000004 0.000833 + 1898 -0.006339 0.003210 0.000555 + 1899 -0.007815 -0.000155 0.006317 + 1900 -0.003334 -0.000730 -0.000139 + 1901 -0.003197 -0.021225 -0.009098 + 1902 0.003310 -0.008203 -0.004863 + 1903 -0.007379 0.001152 -0.003847 + 1904 -0.008175 0.003836 -0.004939 + 1905 -0.007216 0.002039 -0.012076 + 1906 -0.002751 -0.006050 -0.001404 + 1907 -0.005827 0.008129 0.005351 + 1908 0.010377 0.010628 0.018761 + 1909 -0.002571 -0.007065 0.006215 + 1910 -0.004848 -0.014622 0.001577 + 1911 -0.004351 -0.002361 0.020679 + 1912 0.006139 0.001291 0.002464 + 1913 0.004939 0.003608 0.002097 + 1914 0.004274 0.000152 0.002451 + 1915 0.002989 0.000832 -0.000352 + 1916 -0.014159 -0.000914 0.002187 + 1917 0.012237 -0.003167 0.009134 + 1918 -0.004575 -0.001662 0.000082 + 1919 -0.007883 -0.002056 0.002571 + 1920 -0.003336 -0.001305 -0.000658 + 1921 0.004366 0.000439 0.001158 + 1922 -0.000155 0.003368 0.010592 + 1923 -0.014972 -0.009424 -0.018312 + 1924 -0.000613 -0.002374 0.000797 + 1925 0.007460 -0.016336 -0.000977 + 1926 -0.006787 0.004573 0.010255 + 1927 -0.002452 -0.000122 0.000124 + 1928 -0.015584 -0.009431 -0.007285 + 1929 -0.000101 0.008080 -0.015191 + 1930 0.002197 0.002310 -0.001612 + 1931 0.016237 -0.005090 0.018070 + 1932 0.001709 -0.003220 -0.011865 + 1933 -0.001150 0.000898 0.004173 + 1934 0.000323 -0.000312 -0.014495 + 1935 0.000516 -0.000491 -0.011422 + 1936 -0.005815 -0.002965 0.000187 + 1937 0.008195 0.018425 -0.027236 + 1938 -0.010921 -0.007575 -0.002217 + 1939 -0.004740 0.002745 0.006330 + 1940 0.002035 0.006523 0.010880 + 1941 -0.012191 0.004818 0.006605 + 1942 -0.003197 -0.004418 -0.003375 + 1943 0.003590 -0.017196 0.008070 + 1944 0.004548 0.006106 0.016045 + 1945 0.005444 0.002200 0.004561 + 1946 0.004448 0.009092 -0.001577 + 1947 -0.000522 0.006033 0.006559 + 1948 0.005450 0.001267 0.002269 + 1949 0.027952 -0.012604 0.001935 + 1950 -0.004826 -0.018174 0.014813 + 1951 0.005498 -0.000626 0.001156 + 1952 0.001428 -0.010472 0.000805 + 1953 -0.010198 -0.005573 -0.014564 + 1954 0.001605 -0.006572 0.005587 + 1955 -0.002403 -0.004981 0.000460 + 1956 0.010287 -0.003414 0.005774 + 1957 -0.005679 0.003540 -0.003175 + 1958 -0.005054 0.005203 -0.002733 + 1959 -0.006462 0.003843 0.002657 + 1960 -0.006606 -0.002499 -0.001538 + 1961 0.027567 -0.002565 0.034908 + 1962 0.001905 -0.003739 -0.001134 + 1963 -0.000871 0.002779 0.006534 + 1964 -0.013473 -0.002631 0.001200 + 1965 -0.008136 0.003625 0.001725 + 1966 0.002375 -0.002767 -0.000214 + 1967 0.015603 0.001192 0.006785 + 1968 -0.008229 0.002751 0.010337 + 1969 -0.002111 -0.006139 0.006236 + 1970 0.025783 -0.003684 0.015052 + 1971 -0.008026 -0.018580 0.028847 + 1972 -0.001966 -0.005103 0.002533 + 1973 0.025504 -0.012928 0.014439 + 1974 0.015919 0.008653 -0.013047 + 1975 -0.002145 -0.003853 -0.002353 + 1976 0.020573 0.023626 0.033600 + 1977 0.002418 -0.000127 0.000258 + 1978 -0.000168 -0.002747 0.002505 + 1979 0.011847 0.007945 0.003222 + 1980 0.002222 -0.001343 0.005437 + 1981 -0.004734 0.003071 -0.000955 + 1982 0.003752 -0.001882 -0.005052 + 1983 -0.008195 0.007844 0.004577 + 1984 0.007575 0.002209 -0.000466 + 1985 -0.005510 0.009650 -0.004399 + 1986 0.018263 0.019292 -0.008157 + 1987 -0.005098 -0.001581 -0.000328 + 1988 -0.004522 -0.021884 -0.005509 + 1989 -0.001598 -0.001668 0.002704 + 1990 -0.000494 0.002205 0.012458 + 1991 0.003153 0.001522 0.015672 + 1992 -0.000092 -0.002603 0.010098 + 1993 0.001919 -0.007389 0.001539 + 1994 -0.002690 -0.003376 -0.009963 + 1995 -0.005006 0.002932 -0.001670 + 1996 -0.003089 -0.005736 0.003689 + 1997 0.010713 -0.027613 -0.023000 + 1998 -0.006878 0.009457 0.006998 + 1999 -0.001817 0.000266 -0.004238 + 2000 -0.010974 0.005190 0.000117 + 2001 -0.008937 -0.003277 0.004337 + 2002 -0.000987 -0.001334 -0.004265 + 2003 -0.022280 -0.011677 -0.018343 + 2004 -0.010076 -0.005729 -0.026032 + +Bonds + + 1 3 1 7 + 2 2 1 3 + 3 1 1 2 + 4 4 2 5 + 5 4 2 6 + 6 4 2 4 + 7 6 7 19 + 8 5 7 8 + 9 1 8 9 + 10 7 8 11 + 11 8 8 20 + 12 3 9 28 + 13 2 9 10 + 14 10 11 21 + 15 9 11 12 + 16 10 11 22 + 17 11 12 14 + 18 11 12 13 + 19 12 13 23 + 20 11 13 15 + 21 12 14 24 + 22 11 14 16 + 23 11 15 17 + 24 12 15 25 + 25 11 16 17 + 26 12 16 26 + 27 13 17 18 + 28 14 18 27 + 29 5 28 29 + 30 6 28 32 + 31 1 29 30 + 32 8 29 33 + 33 8 29 34 + 34 3 30 35 + 35 2 30 31 + 36 5 35 36 + 37 6 35 39 + 38 1 36 37 + 39 8 36 40 + 40 8 36 41 + 41 2 37 38 + 42 3 37 42 + 43 6 42 53 + 44 5 42 43 + 45 1 43 44 + 46 7 43 46 + 47 8 43 54 + 48 3 44 62 + 49 2 44 45 + 50 10 46 56 + 51 10 46 55 + 52 9 46 47 + 53 11 47 48 + 54 11 47 49 + 55 11 48 50 + 56 12 48 57 + 57 11 49 51 + 58 12 49 58 + 59 11 50 52 + 60 12 50 59 + 61 11 51 52 + 62 12 51 60 + 63 12 52 61 + 64 6 62 70 + 65 5 62 63 + 66 7 63 66 + 67 1 63 64 + 68 8 63 71 + 69 2 64 65 + 70 3 64 79 + 71 15 66 67 + 72 10 66 73 + 73 10 66 72 + 74 10 67 75 + 75 10 67 74 + 76 16 67 68 + 77 17 68 69 + 78 4 69 76 + 79 4 69 78 + 80 4 69 77 + 81 5 79 80 + 82 6 79 81 + 83 4 80 84 + 84 4 80 83 + 85 4 80 82 + 86 18 85 86 + 87 18 85 87 + 88 18 88 90 + 89 18 88 89 + 90 18 91 93 + 91 18 91 92 + 92 18 94 96 + 93 18 94 95 + 94 18 97 98 + 95 18 97 99 + 96 18 100 101 + 97 18 100 102 + 98 18 103 104 + 99 18 103 105 + 100 18 106 107 + 101 18 106 108 + 102 18 109 111 + 103 18 109 110 + 104 18 112 114 + 105 18 112 113 + 106 18 115 116 + 107 18 115 117 + 108 18 118 120 + 109 18 118 119 + 110 18 121 123 + 111 18 121 122 + 112 18 124 126 + 113 18 124 125 + 114 18 127 128 + 115 18 127 129 + 116 18 130 132 + 117 18 130 131 + 118 18 133 134 + 119 18 133 135 + 120 18 136 137 + 121 18 136 138 + 122 18 139 140 + 123 18 139 141 + 124 18 142 144 + 125 18 142 143 + 126 18 145 147 + 127 18 145 146 + 128 18 148 150 + 129 18 148 149 + 130 18 151 152 + 131 18 151 153 + 132 18 154 156 + 133 18 154 155 + 134 18 157 159 + 135 18 157 158 + 136 18 160 162 + 137 18 160 161 + 138 18 163 164 + 139 18 163 165 + 140 18 166 168 + 141 18 166 167 + 142 18 169 171 + 143 18 169 170 + 144 18 172 174 + 145 18 172 173 + 146 18 175 177 + 147 18 175 176 + 148 18 178 180 + 149 18 178 179 + 150 18 181 182 + 151 18 181 183 + 152 18 184 186 + 153 18 184 185 + 154 18 187 188 + 155 18 187 189 + 156 18 190 191 + 157 18 190 192 + 158 18 193 194 + 159 18 193 195 + 160 18 196 197 + 161 18 196 198 + 162 18 199 201 + 163 18 199 200 + 164 18 202 204 + 165 18 202 203 + 166 18 205 206 + 167 18 205 207 + 168 18 208 210 + 169 18 208 209 + 170 18 211 212 + 171 18 211 213 + 172 18 214 215 + 173 18 214 216 + 174 18 217 219 + 175 18 217 218 + 176 18 220 222 + 177 18 220 221 + 178 18 223 224 + 179 18 223 225 + 180 18 226 228 + 181 18 226 227 + 182 18 229 231 + 183 18 229 230 + 184 18 232 233 + 185 18 232 234 + 186 18 235 236 + 187 18 235 237 + 188 18 238 240 + 189 18 238 239 + 190 18 241 242 + 191 18 241 243 + 192 18 244 246 + 193 18 244 245 + 194 18 247 248 + 195 18 247 249 + 196 18 250 251 + 197 18 250 252 + 198 18 253 254 + 199 18 253 255 + 200 18 256 257 + 201 18 256 258 + 202 18 259 261 + 203 18 259 260 + 204 18 262 264 + 205 18 262 263 + 206 18 265 266 + 207 18 265 267 + 208 18 268 269 + 209 18 268 270 + 210 18 271 272 + 211 18 271 273 + 212 18 274 275 + 213 18 274 276 + 214 18 277 279 + 215 18 277 278 + 216 18 280 282 + 217 18 280 281 + 218 18 283 284 + 219 18 283 285 + 220 18 286 287 + 221 18 286 288 + 222 18 289 290 + 223 18 289 291 + 224 18 292 294 + 225 18 292 293 + 226 18 295 296 + 227 18 295 297 + 228 18 298 299 + 229 18 298 300 + 230 18 301 303 + 231 18 301 302 + 232 18 304 305 + 233 18 304 306 + 234 18 307 309 + 235 18 307 308 + 236 18 310 311 + 237 18 310 312 + 238 18 313 314 + 239 18 313 315 + 240 18 316 317 + 241 18 316 318 + 242 18 319 321 + 243 18 319 320 + 244 18 322 323 + 245 18 322 324 + 246 18 325 327 + 247 18 325 326 + 248 18 328 329 + 249 18 328 330 + 250 18 331 332 + 251 18 331 333 + 252 18 334 335 + 253 18 334 336 + 254 18 337 339 + 255 18 337 338 + 256 18 340 341 + 257 18 340 342 + 258 18 343 344 + 259 18 343 345 + 260 18 346 347 + 261 18 346 348 + 262 18 349 350 + 263 18 349 351 + 264 18 352 353 + 265 18 352 354 + 266 18 355 356 + 267 18 355 357 + 268 18 358 359 + 269 18 358 360 + 270 18 361 362 + 271 18 361 363 + 272 18 364 365 + 273 18 364 366 + 274 18 367 369 + 275 18 367 368 + 276 18 370 372 + 277 18 370 371 + 278 18 373 374 + 279 18 373 375 + 280 18 376 378 + 281 18 376 377 + 282 18 379 381 + 283 18 379 380 + 284 18 382 383 + 285 18 382 384 + 286 18 385 386 + 287 18 385 387 + 288 18 388 390 + 289 18 388 389 + 290 18 391 393 + 291 18 391 392 + 292 18 394 395 + 293 18 394 396 + 294 18 397 399 + 295 18 397 398 + 296 18 400 402 + 297 18 400 401 + 298 18 403 405 + 299 18 403 404 + 300 18 406 407 + 301 18 406 408 + 302 18 409 411 + 303 18 409 410 + 304 18 412 413 + 305 18 412 414 + 306 18 415 417 + 307 18 415 416 + 308 18 418 420 + 309 18 418 419 + 310 18 421 422 + 311 18 421 423 + 312 18 424 425 + 313 18 424 426 + 314 18 427 428 + 315 18 427 429 + 316 18 430 432 + 317 18 430 431 + 318 18 433 435 + 319 18 433 434 + 320 18 436 437 + 321 18 436 438 + 322 18 439 440 + 323 18 439 441 + 324 18 442 443 + 325 18 442 444 + 326 18 445 447 + 327 18 445 446 + 328 18 448 449 + 329 18 448 450 + 330 18 451 453 + 331 18 451 452 + 332 18 454 456 + 333 18 454 455 + 334 18 457 458 + 335 18 457 459 + 336 18 460 462 + 337 18 460 461 + 338 18 463 465 + 339 18 463 464 + 340 18 466 467 + 341 18 466 468 + 342 18 469 470 + 343 18 469 471 + 344 18 472 473 + 345 18 472 474 + 346 18 475 476 + 347 18 475 477 + 348 18 478 479 + 349 18 478 480 + 350 18 481 482 + 351 18 481 483 + 352 18 484 485 + 353 18 484 486 + 354 18 487 489 + 355 18 487 488 + 356 18 490 492 + 357 18 490 491 + 358 18 493 495 + 359 18 493 494 + 360 18 496 497 + 361 18 496 498 + 362 18 499 501 + 363 18 499 500 + 364 18 502 503 + 365 18 502 504 + 366 18 505 507 + 367 18 505 506 + 368 18 508 509 + 369 18 508 510 + 370 18 511 513 + 371 18 511 512 + 372 18 514 516 + 373 18 514 515 + 374 18 517 518 + 375 18 517 519 + 376 18 520 521 + 377 18 520 522 + 378 18 523 525 + 379 18 523 524 + 380 18 526 528 + 381 18 526 527 + 382 18 529 530 + 383 18 529 531 + 384 18 532 533 + 385 18 532 534 + 386 18 535 536 + 387 18 535 537 + 388 18 538 540 + 389 18 538 539 + 390 18 541 542 + 391 18 541 543 + 392 18 544 546 + 393 18 544 545 + 394 18 547 549 + 395 18 547 548 + 396 18 550 551 + 397 18 550 552 + 398 18 553 555 + 399 18 553 554 + 400 18 556 557 + 401 18 556 558 + 402 18 559 561 + 403 18 559 560 + 404 18 562 563 + 405 18 562 564 + 406 18 565 567 + 407 18 565 566 + 408 18 568 570 + 409 18 568 569 + 410 18 571 573 + 411 18 571 572 + 412 18 574 575 + 413 18 574 576 + 414 18 577 579 + 415 18 577 578 + 416 18 580 581 + 417 18 580 582 + 418 18 583 585 + 419 18 583 584 + 420 18 586 588 + 421 18 586 587 + 422 18 589 590 + 423 18 589 591 + 424 18 592 594 + 425 18 592 593 + 426 18 595 597 + 427 18 595 596 + 428 18 598 600 + 429 18 598 599 + 430 18 601 602 + 431 18 601 603 + 432 18 604 606 + 433 18 604 605 + 434 18 607 609 + 435 18 607 608 + 436 18 610 611 + 437 18 610 612 + 438 18 613 615 + 439 18 613 614 + 440 18 616 618 + 441 18 616 617 + 442 18 619 620 + 443 18 619 621 + 444 18 622 623 + 445 18 622 624 + 446 18 625 627 + 447 18 625 626 + 448 18 628 629 + 449 18 628 630 + 450 18 631 632 + 451 18 631 633 + 452 18 634 635 + 453 18 634 636 + 454 18 637 639 + 455 18 637 638 + 456 18 640 642 + 457 18 640 641 + 458 18 643 644 + 459 18 643 645 + 460 18 646 647 + 461 18 646 648 + 462 18 649 650 + 463 18 649 651 + 464 18 652 653 + 465 18 652 654 + 466 18 655 657 + 467 18 655 656 + 468 18 658 660 + 469 18 658 659 + 470 18 661 663 + 471 18 661 662 + 472 18 664 665 + 473 18 664 666 + 474 18 667 669 + 475 18 667 668 + 476 18 670 672 + 477 18 670 671 + 478 18 673 674 + 479 18 673 675 + 480 18 676 677 + 481 18 676 678 + 482 18 679 681 + 483 18 679 680 + 484 18 682 684 + 485 18 682 683 + 486 18 685 686 + 487 18 685 687 + 488 18 688 690 + 489 18 688 689 + 490 18 691 693 + 491 18 691 692 + 492 18 694 695 + 493 18 694 696 + 494 18 697 698 + 495 18 697 699 + 496 18 700 701 + 497 18 700 702 + 498 18 703 704 + 499 18 703 705 + 500 18 706 707 + 501 18 706 708 + 502 18 709 710 + 503 18 709 711 + 504 18 712 714 + 505 18 712 713 + 506 18 715 716 + 507 18 715 717 + 508 18 718 719 + 509 18 718 720 + 510 18 721 722 + 511 18 721 723 + 512 18 724 726 + 513 18 724 725 + 514 18 727 728 + 515 18 727 729 + 516 18 730 731 + 517 18 730 732 + 518 18 733 735 + 519 18 733 734 + 520 18 736 737 + 521 18 736 738 + 522 18 739 741 + 523 18 739 740 + 524 18 742 743 + 525 18 742 744 + 526 18 745 746 + 527 18 745 747 + 528 18 748 750 + 529 18 748 749 + 530 18 751 753 + 531 18 751 752 + 532 18 754 756 + 533 18 754 755 + 534 18 757 758 + 535 18 757 759 + 536 18 760 762 + 537 18 760 761 + 538 18 763 764 + 539 18 763 765 + 540 18 766 767 + 541 18 766 768 + 542 18 769 770 + 543 18 769 771 + 544 18 772 774 + 545 18 772 773 + 546 18 775 777 + 547 18 775 776 + 548 18 778 780 + 549 18 778 779 + 550 18 781 783 + 551 18 781 782 + 552 18 784 786 + 553 18 784 785 + 554 18 787 789 + 555 18 787 788 + 556 18 790 791 + 557 18 790 792 + 558 18 793 795 + 559 18 793 794 + 560 18 796 797 + 561 18 796 798 + 562 18 799 801 + 563 18 799 800 + 564 18 802 803 + 565 18 802 804 + 566 18 805 806 + 567 18 805 807 + 568 18 808 809 + 569 18 808 810 + 570 18 811 813 + 571 18 811 812 + 572 18 814 815 + 573 18 814 816 + 574 18 817 818 + 575 18 817 819 + 576 18 820 821 + 577 18 820 822 + 578 18 823 824 + 579 18 823 825 + 580 18 826 828 + 581 18 826 827 + 582 18 829 830 + 583 18 829 831 + 584 18 832 834 + 585 18 832 833 + 586 18 835 837 + 587 18 835 836 + 588 18 838 839 + 589 18 838 840 + 590 18 841 842 + 591 18 841 843 + 592 18 844 845 + 593 18 844 846 + 594 18 847 848 + 595 18 847 849 + 596 18 850 852 + 597 18 850 851 + 598 18 853 854 + 599 18 853 855 + 600 18 856 858 + 601 18 856 857 + 602 18 859 861 + 603 18 859 860 + 604 18 862 863 + 605 18 862 864 + 606 18 865 866 + 607 18 865 867 + 608 18 868 869 + 609 18 868 870 + 610 18 871 873 + 611 18 871 872 + 612 18 874 875 + 613 18 874 876 + 614 18 877 878 + 615 18 877 879 + 616 18 880 882 + 617 18 880 881 + 618 18 883 884 + 619 18 883 885 + 620 18 886 887 + 621 18 886 888 + 622 18 889 891 + 623 18 889 890 + 624 18 892 894 + 625 18 892 893 + 626 18 895 896 + 627 18 895 897 + 628 18 898 899 + 629 18 898 900 + 630 18 901 903 + 631 18 901 902 + 632 18 904 905 + 633 18 904 906 + 634 18 907 908 + 635 18 907 909 + 636 18 910 911 + 637 18 910 912 + 638 18 913 915 + 639 18 913 914 + 640 18 916 917 + 641 18 916 918 + 642 18 919 920 + 643 18 919 921 + 644 18 922 924 + 645 18 922 923 + 646 18 925 927 + 647 18 925 926 + 648 18 928 930 + 649 18 928 929 + 650 18 931 932 + 651 18 931 933 + 652 18 934 935 + 653 18 934 936 + 654 18 937 939 + 655 18 937 938 + 656 18 940 942 + 657 18 940 941 + 658 18 943 945 + 659 18 943 944 + 660 18 946 948 + 661 18 946 947 + 662 18 949 950 + 663 18 949 951 + 664 18 952 953 + 665 18 952 954 + 666 18 955 956 + 667 18 955 957 + 668 18 958 960 + 669 18 958 959 + 670 18 961 963 + 671 18 961 962 + 672 18 964 965 + 673 18 964 966 + 674 18 967 969 + 675 18 967 968 + 676 18 970 972 + 677 18 970 971 + 678 18 973 975 + 679 18 973 974 + 680 18 976 978 + 681 18 976 977 + 682 18 979 981 + 683 18 979 980 + 684 18 982 983 + 685 18 982 984 + 686 18 985 987 + 687 18 985 986 + 688 18 988 989 + 689 18 988 990 + 690 18 991 993 + 691 18 991 992 + 692 18 994 996 + 693 18 994 995 + 694 18 997 998 + 695 18 997 999 + 696 18 1000 1001 + 697 18 1000 1002 + 698 18 1003 1005 + 699 18 1003 1004 + 700 18 1006 1007 + 701 18 1006 1008 + 702 18 1009 1011 + 703 18 1009 1010 + 704 18 1012 1013 + 705 18 1012 1014 + 706 18 1015 1017 + 707 18 1015 1016 + 708 18 1018 1020 + 709 18 1018 1019 + 710 18 1021 1023 + 711 18 1021 1022 + 712 18 1024 1025 + 713 18 1024 1026 + 714 18 1027 1028 + 715 18 1027 1029 + 716 18 1030 1032 + 717 18 1030 1031 + 718 18 1033 1034 + 719 18 1033 1035 + 720 18 1036 1037 + 721 18 1036 1038 + 722 18 1039 1041 + 723 18 1039 1040 + 724 18 1042 1043 + 725 18 1042 1044 + 726 18 1045 1046 + 727 18 1045 1047 + 728 18 1048 1050 + 729 18 1048 1049 + 730 18 1051 1053 + 731 18 1051 1052 + 732 18 1054 1056 + 733 18 1054 1055 + 734 18 1057 1058 + 735 18 1057 1059 + 736 18 1060 1062 + 737 18 1060 1061 + 738 18 1063 1064 + 739 18 1063 1065 + 740 18 1066 1068 + 741 18 1066 1067 + 742 18 1069 1071 + 743 18 1069 1070 + 744 18 1072 1074 + 745 18 1072 1073 + 746 18 1075 1077 + 747 18 1075 1076 + 748 18 1078 1079 + 749 18 1078 1080 + 750 18 1081 1082 + 751 18 1081 1083 + 752 18 1084 1085 + 753 18 1084 1086 + 754 18 1087 1089 + 755 18 1087 1088 + 756 18 1090 1092 + 757 18 1090 1091 + 758 18 1093 1095 + 759 18 1093 1094 + 760 18 1096 1097 + 761 18 1096 1098 + 762 18 1099 1100 + 763 18 1099 1101 + 764 18 1102 1103 + 765 18 1102 1104 + 766 18 1105 1107 + 767 18 1105 1106 + 768 18 1108 1110 + 769 18 1108 1109 + 770 18 1111 1112 + 771 18 1111 1113 + 772 18 1114 1116 + 773 18 1114 1115 + 774 18 1117 1119 + 775 18 1117 1118 + 776 18 1120 1121 + 777 18 1120 1122 + 778 18 1123 1124 + 779 18 1123 1125 + 780 18 1126 1128 + 781 18 1126 1127 + 782 18 1129 1130 + 783 18 1129 1131 + 784 18 1132 1133 + 785 18 1132 1134 + 786 18 1135 1137 + 787 18 1135 1136 + 788 18 1138 1140 + 789 18 1138 1139 + 790 18 1141 1142 + 791 18 1141 1143 + 792 18 1144 1146 + 793 18 1144 1145 + 794 18 1147 1149 + 795 18 1147 1148 + 796 18 1150 1152 + 797 18 1150 1151 + 798 18 1153 1155 + 799 18 1153 1154 + 800 18 1156 1158 + 801 18 1156 1157 + 802 18 1159 1160 + 803 18 1159 1161 + 804 18 1162 1164 + 805 18 1162 1163 + 806 18 1165 1166 + 807 18 1165 1167 + 808 18 1168 1170 + 809 18 1168 1169 + 810 18 1171 1172 + 811 18 1171 1173 + 812 18 1174 1175 + 813 18 1174 1176 + 814 18 1177 1179 + 815 18 1177 1178 + 816 18 1180 1182 + 817 18 1180 1181 + 818 18 1183 1185 + 819 18 1183 1184 + 820 18 1186 1187 + 821 18 1186 1188 + 822 18 1189 1190 + 823 18 1189 1191 + 824 18 1192 1194 + 825 18 1192 1193 + 826 18 1195 1196 + 827 18 1195 1197 + 828 18 1198 1199 + 829 18 1198 1200 + 830 18 1201 1202 + 831 18 1201 1203 + 832 18 1204 1205 + 833 18 1204 1206 + 834 18 1207 1209 + 835 18 1207 1208 + 836 18 1210 1212 + 837 18 1210 1211 + 838 18 1213 1214 + 839 18 1213 1215 + 840 18 1216 1218 + 841 18 1216 1217 + 842 18 1219 1221 + 843 18 1219 1220 + 844 18 1222 1224 + 845 18 1222 1223 + 846 18 1225 1226 + 847 18 1225 1227 + 848 18 1228 1229 + 849 18 1228 1230 + 850 18 1231 1232 + 851 18 1231 1233 + 852 18 1234 1236 + 853 18 1234 1235 + 854 18 1237 1239 + 855 18 1237 1238 + 856 18 1240 1242 + 857 18 1240 1241 + 858 18 1243 1244 + 859 18 1243 1245 + 860 18 1246 1248 + 861 18 1246 1247 + 862 18 1249 1250 + 863 18 1249 1251 + 864 18 1252 1254 + 865 18 1252 1253 + 866 18 1255 1256 + 867 18 1255 1257 + 868 18 1258 1259 + 869 18 1258 1260 + 870 18 1261 1263 + 871 18 1261 1262 + 872 18 1264 1265 + 873 18 1264 1266 + 874 18 1267 1268 + 875 18 1267 1269 + 876 18 1270 1271 + 877 18 1270 1272 + 878 18 1273 1274 + 879 18 1273 1275 + 880 18 1276 1277 + 881 18 1276 1278 + 882 18 1279 1280 + 883 18 1279 1281 + 884 18 1282 1283 + 885 18 1282 1284 + 886 18 1285 1286 + 887 18 1285 1287 + 888 18 1288 1289 + 889 18 1288 1290 + 890 18 1291 1293 + 891 18 1291 1292 + 892 18 1294 1295 + 893 18 1294 1296 + 894 18 1297 1299 + 895 18 1297 1298 + 896 18 1300 1302 + 897 18 1300 1301 + 898 18 1303 1304 + 899 18 1303 1305 + 900 18 1306 1308 + 901 18 1306 1307 + 902 18 1309 1311 + 903 18 1309 1310 + 904 18 1312 1314 + 905 18 1312 1313 + 906 18 1315 1317 + 907 18 1315 1316 + 908 18 1318 1320 + 909 18 1318 1319 + 910 18 1321 1323 + 911 18 1321 1322 + 912 18 1324 1325 + 913 18 1324 1326 + 914 18 1327 1329 + 915 18 1327 1328 + 916 18 1330 1332 + 917 18 1330 1331 + 918 18 1333 1334 + 919 18 1333 1335 + 920 18 1336 1337 + 921 18 1336 1338 + 922 18 1339 1340 + 923 18 1339 1341 + 924 18 1342 1344 + 925 18 1342 1343 + 926 18 1345 1347 + 927 18 1345 1346 + 928 18 1348 1350 + 929 18 1348 1349 + 930 18 1351 1352 + 931 18 1351 1353 + 932 18 1354 1355 + 933 18 1354 1356 + 934 18 1357 1358 + 935 18 1357 1359 + 936 18 1360 1362 + 937 18 1360 1361 + 938 18 1363 1365 + 939 18 1363 1364 + 940 18 1366 1368 + 941 18 1366 1367 + 942 18 1369 1370 + 943 18 1369 1371 + 944 18 1372 1373 + 945 18 1372 1374 + 946 18 1375 1377 + 947 18 1375 1376 + 948 18 1378 1379 + 949 18 1378 1380 + 950 18 1381 1382 + 951 18 1381 1383 + 952 18 1384 1385 + 953 18 1384 1386 + 954 18 1387 1388 + 955 18 1387 1389 + 956 18 1390 1392 + 957 18 1390 1391 + 958 18 1393 1395 + 959 18 1393 1394 + 960 18 1396 1397 + 961 18 1396 1398 + 962 18 1399 1401 + 963 18 1399 1400 + 964 18 1402 1403 + 965 18 1402 1404 + 966 18 1405 1406 + 967 18 1405 1407 + 968 18 1408 1409 + 969 18 1408 1410 + 970 18 1411 1412 + 971 18 1411 1413 + 972 18 1414 1416 + 973 18 1414 1415 + 974 18 1417 1419 + 975 18 1417 1418 + 976 18 1420 1422 + 977 18 1420 1421 + 978 18 1423 1425 + 979 18 1423 1424 + 980 18 1426 1428 + 981 18 1426 1427 + 982 18 1429 1430 + 983 18 1429 1431 + 984 18 1432 1434 + 985 18 1432 1433 + 986 18 1435 1436 + 987 18 1435 1437 + 988 18 1438 1439 + 989 18 1438 1440 + 990 18 1441 1442 + 991 18 1441 1443 + 992 18 1444 1445 + 993 18 1444 1446 + 994 18 1447 1448 + 995 18 1447 1449 + 996 18 1450 1451 + 997 18 1450 1452 + 998 18 1453 1455 + 999 18 1453 1454 + 1000 18 1456 1457 + 1001 18 1456 1458 + 1002 18 1459 1461 + 1003 18 1459 1460 + 1004 18 1462 1463 + 1005 18 1462 1464 + 1006 18 1465 1466 + 1007 18 1465 1467 + 1008 18 1468 1470 + 1009 18 1468 1469 + 1010 18 1471 1472 + 1011 18 1471 1473 + 1012 18 1474 1476 + 1013 18 1474 1475 + 1014 18 1477 1478 + 1015 18 1477 1479 + 1016 18 1480 1482 + 1017 18 1480 1481 + 1018 18 1483 1485 + 1019 18 1483 1484 + 1020 18 1486 1488 + 1021 18 1486 1487 + 1022 18 1489 1491 + 1023 18 1489 1490 + 1024 18 1492 1493 + 1025 18 1492 1494 + 1026 18 1495 1496 + 1027 18 1495 1497 + 1028 18 1498 1499 + 1029 18 1498 1500 + 1030 18 1501 1502 + 1031 18 1501 1503 + 1032 18 1504 1505 + 1033 18 1504 1506 + 1034 18 1507 1509 + 1035 18 1507 1508 + 1036 18 1510 1512 + 1037 18 1510 1511 + 1038 18 1513 1515 + 1039 18 1513 1514 + 1040 18 1516 1518 + 1041 18 1516 1517 + 1042 18 1519 1520 + 1043 18 1519 1521 + 1044 18 1522 1524 + 1045 18 1522 1523 + 1046 18 1525 1526 + 1047 18 1525 1527 + 1048 18 1528 1529 + 1049 18 1528 1530 + 1050 18 1531 1533 + 1051 18 1531 1532 + 1052 18 1534 1536 + 1053 18 1534 1535 + 1054 18 1537 1539 + 1055 18 1537 1538 + 1056 18 1540 1541 + 1057 18 1540 1542 + 1058 18 1543 1545 + 1059 18 1543 1544 + 1060 18 1546 1547 + 1061 18 1546 1548 + 1062 18 1549 1551 + 1063 18 1549 1550 + 1064 18 1552 1553 + 1065 18 1552 1554 + 1066 18 1555 1557 + 1067 18 1555 1556 + 1068 18 1558 1559 + 1069 18 1558 1560 + 1070 18 1561 1562 + 1071 18 1561 1563 + 1072 18 1564 1565 + 1073 18 1564 1566 + 1074 18 1567 1569 + 1075 18 1567 1568 + 1076 18 1570 1571 + 1077 18 1570 1572 + 1078 18 1573 1575 + 1079 18 1573 1574 + 1080 18 1576 1578 + 1081 18 1576 1577 + 1082 18 1579 1581 + 1083 18 1579 1580 + 1084 18 1582 1584 + 1085 18 1582 1583 + 1086 18 1585 1586 + 1087 18 1585 1587 + 1088 18 1588 1590 + 1089 18 1588 1589 + 1090 18 1591 1592 + 1091 18 1591 1593 + 1092 18 1594 1596 + 1093 18 1594 1595 + 1094 18 1597 1598 + 1095 18 1597 1599 + 1096 18 1600 1602 + 1097 18 1600 1601 + 1098 18 1603 1605 + 1099 18 1603 1604 + 1100 18 1606 1608 + 1101 18 1606 1607 + 1102 18 1609 1610 + 1103 18 1609 1611 + 1104 18 1612 1614 + 1105 18 1612 1613 + 1106 18 1615 1617 + 1107 18 1615 1616 + 1108 18 1618 1620 + 1109 18 1618 1619 + 1110 18 1621 1623 + 1111 18 1621 1622 + 1112 18 1624 1625 + 1113 18 1624 1626 + 1114 18 1627 1629 + 1115 18 1627 1628 + 1116 18 1630 1631 + 1117 18 1630 1632 + 1118 18 1633 1635 + 1119 18 1633 1634 + 1120 18 1636 1637 + 1121 18 1636 1638 + 1122 18 1639 1641 + 1123 18 1639 1640 + 1124 18 1642 1643 + 1125 18 1642 1644 + 1126 18 1645 1646 + 1127 18 1645 1647 + 1128 18 1648 1650 + 1129 18 1648 1649 + 1130 18 1651 1653 + 1131 18 1651 1652 + 1132 18 1654 1656 + 1133 18 1654 1655 + 1134 18 1657 1658 + 1135 18 1657 1659 + 1136 18 1660 1661 + 1137 18 1660 1662 + 1138 18 1663 1664 + 1139 18 1663 1665 + 1140 18 1666 1668 + 1141 18 1666 1667 + 1142 18 1669 1670 + 1143 18 1669 1671 + 1144 18 1672 1674 + 1145 18 1672 1673 + 1146 18 1675 1676 + 1147 18 1675 1677 + 1148 18 1678 1680 + 1149 18 1678 1679 + 1150 18 1681 1683 + 1151 18 1681 1682 + 1152 18 1684 1685 + 1153 18 1684 1686 + 1154 18 1687 1688 + 1155 18 1687 1689 + 1156 18 1690 1691 + 1157 18 1690 1692 + 1158 18 1693 1695 + 1159 18 1693 1694 + 1160 18 1696 1697 + 1161 18 1696 1698 + 1162 18 1699 1701 + 1163 18 1699 1700 + 1164 18 1702 1703 + 1165 18 1702 1704 + 1166 18 1705 1707 + 1167 18 1705 1706 + 1168 18 1708 1709 + 1169 18 1708 1710 + 1170 18 1711 1712 + 1171 18 1711 1713 + 1172 18 1714 1716 + 1173 18 1714 1715 + 1174 18 1717 1718 + 1175 18 1717 1719 + 1176 18 1720 1721 + 1177 18 1720 1722 + 1178 18 1723 1724 + 1179 18 1723 1725 + 1180 18 1726 1727 + 1181 18 1726 1728 + 1182 18 1729 1730 + 1183 18 1729 1731 + 1184 18 1732 1734 + 1185 18 1732 1733 + 1186 18 1735 1737 + 1187 18 1735 1736 + 1188 18 1738 1740 + 1189 18 1738 1739 + 1190 18 1741 1743 + 1191 18 1741 1742 + 1192 18 1744 1745 + 1193 18 1744 1746 + 1194 18 1747 1749 + 1195 18 1747 1748 + 1196 18 1750 1751 + 1197 18 1750 1752 + 1198 18 1753 1755 + 1199 18 1753 1754 + 1200 18 1756 1758 + 1201 18 1756 1757 + 1202 18 1759 1760 + 1203 18 1759 1761 + 1204 18 1762 1764 + 1205 18 1762 1763 + 1206 18 1765 1767 + 1207 18 1765 1766 + 1208 18 1768 1769 + 1209 18 1768 1770 + 1210 18 1771 1773 + 1211 18 1771 1772 + 1212 18 1774 1776 + 1213 18 1774 1775 + 1214 18 1777 1779 + 1215 18 1777 1778 + 1216 18 1780 1781 + 1217 18 1780 1782 + 1218 18 1783 1784 + 1219 18 1783 1785 + 1220 18 1786 1787 + 1221 18 1786 1788 + 1222 18 1789 1790 + 1223 18 1789 1791 + 1224 18 1792 1793 + 1225 18 1792 1794 + 1226 18 1795 1796 + 1227 18 1795 1797 + 1228 18 1798 1799 + 1229 18 1798 1800 + 1230 18 1801 1803 + 1231 18 1801 1802 + 1232 18 1804 1806 + 1233 18 1804 1805 + 1234 18 1807 1809 + 1235 18 1807 1808 + 1236 18 1810 1812 + 1237 18 1810 1811 + 1238 18 1813 1815 + 1239 18 1813 1814 + 1240 18 1816 1818 + 1241 18 1816 1817 + 1242 18 1819 1821 + 1243 18 1819 1820 + 1244 18 1822 1823 + 1245 18 1822 1824 + 1246 18 1825 1827 + 1247 18 1825 1826 + 1248 18 1828 1830 + 1249 18 1828 1829 + 1250 18 1831 1832 + 1251 18 1831 1833 + 1252 18 1834 1835 + 1253 18 1834 1836 + 1254 18 1837 1838 + 1255 18 1837 1839 + 1256 18 1840 1842 + 1257 18 1840 1841 + 1258 18 1843 1845 + 1259 18 1843 1844 + 1260 18 1846 1848 + 1261 18 1846 1847 + 1262 18 1849 1851 + 1263 18 1849 1850 + 1264 18 1852 1854 + 1265 18 1852 1853 + 1266 18 1855 1856 + 1267 18 1855 1857 + 1268 18 1858 1859 + 1269 18 1858 1860 + 1270 18 1861 1862 + 1271 18 1861 1863 + 1272 18 1864 1866 + 1273 18 1864 1865 + 1274 18 1867 1869 + 1275 18 1867 1868 + 1276 18 1870 1871 + 1277 18 1870 1872 + 1278 18 1873 1874 + 1279 18 1873 1875 + 1280 18 1876 1877 + 1281 18 1876 1878 + 1282 18 1879 1881 + 1283 18 1879 1880 + 1284 18 1882 1883 + 1285 18 1882 1884 + 1286 18 1885 1886 + 1287 18 1885 1887 + 1288 18 1888 1890 + 1289 18 1888 1889 + 1290 18 1891 1892 + 1291 18 1891 1893 + 1292 18 1894 1896 + 1293 18 1894 1895 + 1294 18 1897 1898 + 1295 18 1897 1899 + 1296 18 1900 1902 + 1297 18 1900 1901 + 1298 18 1903 1905 + 1299 18 1903 1904 + 1300 18 1906 1908 + 1301 18 1906 1907 + 1302 18 1909 1911 + 1303 18 1909 1910 + 1304 18 1912 1913 + 1305 18 1912 1914 + 1306 18 1915 1916 + 1307 18 1915 1917 + 1308 18 1918 1920 + 1309 18 1918 1919 + 1310 18 1921 1923 + 1311 18 1921 1922 + 1312 18 1924 1926 + 1313 18 1924 1925 + 1314 18 1927 1929 + 1315 18 1927 1928 + 1316 18 1930 1932 + 1317 18 1930 1931 + 1318 18 1933 1935 + 1319 18 1933 1934 + 1320 18 1936 1937 + 1321 18 1936 1938 + 1322 18 1939 1940 + 1323 18 1939 1941 + 1324 18 1942 1944 + 1325 18 1942 1943 + 1326 18 1945 1947 + 1327 18 1945 1946 + 1328 18 1948 1950 + 1329 18 1948 1949 + 1330 18 1951 1953 + 1331 18 1951 1952 + 1332 18 1954 1955 + 1333 18 1954 1956 + 1334 18 1957 1959 + 1335 18 1957 1958 + 1336 18 1960 1961 + 1337 18 1960 1962 + 1338 18 1963 1965 + 1339 18 1963 1964 + 1340 18 1966 1967 + 1341 18 1966 1968 + 1342 18 1969 1970 + 1343 18 1969 1971 + 1344 18 1972 1974 + 1345 18 1972 1973 + 1346 18 1975 1977 + 1347 18 1975 1976 + 1348 18 1978 1979 + 1349 18 1978 1980 + 1350 18 1981 1982 + 1351 18 1981 1983 + 1352 18 1984 1986 + 1353 18 1984 1985 + 1354 18 1987 1988 + 1355 18 1987 1989 + 1356 18 1990 1992 + 1357 18 1990 1991 + 1358 18 1993 1995 + 1359 18 1993 1994 + 1360 18 1996 1998 + 1361 18 1996 1997 + 1362 18 1999 2000 + 1363 18 1999 2001 + 1364 18 2002 2004 + 1365 18 2002 2003 + +Angles + + 1 5 2 1 7 + 2 4 2 1 3 + 3 6 3 1 7 + 4 7 4 2 5 + 5 7 5 2 6 + 6 1 1 2 5 + 7 1 1 2 6 + 8 1 1 2 4 + 9 7 4 2 6 + 10 2 1 7 8 + 11 3 1 7 19 + 12 11 8 7 19 + 13 9 7 8 11 + 14 8 7 8 9 + 15 16 11 8 20 + 16 15 9 8 20 + 17 14 9 8 11 + 18 10 7 8 20 + 19 5 8 9 28 + 20 4 8 9 10 + 21 6 10 9 28 + 22 18 12 11 22 + 23 23 21 11 22 + 24 12 8 11 12 + 25 13 8 11 21 + 26 18 12 11 21 + 27 13 8 11 22 + 28 19 13 12 14 + 29 17 11 12 14 + 30 17 11 12 13 + 31 20 15 13 23 + 32 20 12 13 23 + 33 19 12 13 15 + 34 20 12 14 24 + 35 20 16 14 24 + 36 19 12 14 16 + 37 20 13 15 25 + 38 20 17 15 25 + 39 19 13 15 17 + 40 20 14 16 26 + 41 19 14 16 17 + 42 20 17 16 26 + 43 21 15 17 18 + 44 19 15 17 16 + 45 21 16 17 18 + 46 22 17 18 27 + 47 2 9 28 29 + 48 3 9 28 32 + 49 11 29 28 32 + 50 15 30 29 34 + 51 10 28 29 33 + 52 10 28 29 34 + 53 15 30 29 33 + 54 24 33 29 34 + 55 8 28 29 30 + 56 6 31 30 35 + 57 5 29 30 35 + 58 4 29 30 31 + 59 2 30 35 36 + 60 3 30 35 39 + 61 11 36 35 39 + 62 8 35 36 37 + 63 10 35 36 41 + 64 10 35 36 40 + 65 24 40 36 41 + 66 15 37 36 40 + 67 15 37 36 41 + 68 6 38 37 42 + 69 5 36 37 42 + 70 4 36 37 38 + 71 11 43 42 53 + 72 2 37 42 43 + 73 3 37 42 53 + 74 10 42 43 54 + 75 16 46 43 54 + 76 14 44 43 46 + 77 9 42 43 46 + 78 8 42 43 44 + 79 15 44 43 54 + 80 5 43 44 62 + 81 6 45 44 62 + 82 4 43 44 45 + 83 13 43 46 55 + 84 13 43 46 56 + 85 12 43 46 47 + 86 23 55 46 56 + 87 18 47 46 56 + 88 18 47 46 55 + 89 17 46 47 49 + 90 17 46 47 48 + 91 19 48 47 49 + 92 20 50 48 57 + 93 19 47 48 50 + 94 20 47 48 57 + 95 20 51 49 58 + 96 19 47 49 51 + 97 20 47 49 58 + 98 20 48 50 59 + 99 19 48 50 52 + 100 20 52 50 59 + 101 20 52 51 60 + 102 20 49 51 60 + 103 19 49 51 52 + 104 20 50 52 61 + 105 19 50 52 51 + 106 20 51 52 61 + 107 2 44 62 63 + 108 3 44 62 70 + 109 11 63 62 70 + 110 16 66 63 71 + 111 15 64 63 71 + 112 14 64 63 66 + 113 10 62 63 71 + 114 9 62 63 66 + 115 8 62 63 64 + 116 4 63 64 65 + 117 6 65 64 79 + 118 5 63 64 79 + 119 23 72 66 73 + 120 27 67 66 73 + 121 27 67 66 72 + 122 25 63 66 67 + 123 13 63 66 73 + 124 13 63 66 72 + 125 29 68 67 75 + 126 23 74 67 75 + 127 29 68 67 74 + 128 26 66 67 68 + 129 27 66 67 74 + 130 27 66 67 75 + 131 28 67 68 69 + 132 29 68 69 76 + 133 29 68 69 77 + 134 29 68 69 78 + 135 7 76 69 78 + 136 7 76 69 77 + 137 7 77 69 78 + 138 3 64 79 81 + 139 2 64 79 80 + 140 11 80 79 81 + 141 7 83 80 84 + 142 30 79 80 84 + 143 7 82 80 83 + 144 30 79 80 83 + 145 30 79 80 82 + 146 7 82 80 84 + 147 31 86 85 87 + 148 31 89 88 90 + 149 31 92 91 93 + 150 31 95 94 96 + 151 31 98 97 99 + 152 31 101 100 102 + 153 31 104 103 105 + 154 31 107 106 108 + 155 31 110 109 111 + 156 31 113 112 114 + 157 31 116 115 117 + 158 31 119 118 120 + 159 31 122 121 123 + 160 31 125 124 126 + 161 31 128 127 129 + 162 31 131 130 132 + 163 31 134 133 135 + 164 31 137 136 138 + 165 31 140 139 141 + 166 31 143 142 144 + 167 31 146 145 147 + 168 31 149 148 150 + 169 31 152 151 153 + 170 31 155 154 156 + 171 31 158 157 159 + 172 31 161 160 162 + 173 31 164 163 165 + 174 31 167 166 168 + 175 31 170 169 171 + 176 31 173 172 174 + 177 31 176 175 177 + 178 31 179 178 180 + 179 31 182 181 183 + 180 31 185 184 186 + 181 31 188 187 189 + 182 31 191 190 192 + 183 31 194 193 195 + 184 31 197 196 198 + 185 31 200 199 201 + 186 31 203 202 204 + 187 31 206 205 207 + 188 31 209 208 210 + 189 31 212 211 213 + 190 31 215 214 216 + 191 31 218 217 219 + 192 31 221 220 222 + 193 31 224 223 225 + 194 31 227 226 228 + 195 31 230 229 231 + 196 31 233 232 234 + 197 31 236 235 237 + 198 31 239 238 240 + 199 31 242 241 243 + 200 31 245 244 246 + 201 31 248 247 249 + 202 31 251 250 252 + 203 31 254 253 255 + 204 31 257 256 258 + 205 31 260 259 261 + 206 31 263 262 264 + 207 31 266 265 267 + 208 31 269 268 270 + 209 31 272 271 273 + 210 31 275 274 276 + 211 31 278 277 279 + 212 31 281 280 282 + 213 31 284 283 285 + 214 31 287 286 288 + 215 31 290 289 291 + 216 31 293 292 294 + 217 31 296 295 297 + 218 31 299 298 300 + 219 31 302 301 303 + 220 31 305 304 306 + 221 31 308 307 309 + 222 31 311 310 312 + 223 31 314 313 315 + 224 31 317 316 318 + 225 31 320 319 321 + 226 31 323 322 324 + 227 31 326 325 327 + 228 31 329 328 330 + 229 31 332 331 333 + 230 31 335 334 336 + 231 31 338 337 339 + 232 31 341 340 342 + 233 31 344 343 345 + 234 31 347 346 348 + 235 31 350 349 351 + 236 31 353 352 354 + 237 31 356 355 357 + 238 31 359 358 360 + 239 31 362 361 363 + 240 31 365 364 366 + 241 31 368 367 369 + 242 31 371 370 372 + 243 31 374 373 375 + 244 31 377 376 378 + 245 31 380 379 381 + 246 31 383 382 384 + 247 31 386 385 387 + 248 31 389 388 390 + 249 31 392 391 393 + 250 31 395 394 396 + 251 31 398 397 399 + 252 31 401 400 402 + 253 31 404 403 405 + 254 31 407 406 408 + 255 31 410 409 411 + 256 31 413 412 414 + 257 31 416 415 417 + 258 31 419 418 420 + 259 31 422 421 423 + 260 31 425 424 426 + 261 31 428 427 429 + 262 31 431 430 432 + 263 31 434 433 435 + 264 31 437 436 438 + 265 31 440 439 441 + 266 31 443 442 444 + 267 31 446 445 447 + 268 31 449 448 450 + 269 31 452 451 453 + 270 31 455 454 456 + 271 31 458 457 459 + 272 31 461 460 462 + 273 31 464 463 465 + 274 31 467 466 468 + 275 31 470 469 471 + 276 31 473 472 474 + 277 31 476 475 477 + 278 31 479 478 480 + 279 31 482 481 483 + 280 31 485 484 486 + 281 31 488 487 489 + 282 31 491 490 492 + 283 31 494 493 495 + 284 31 497 496 498 + 285 31 500 499 501 + 286 31 503 502 504 + 287 31 506 505 507 + 288 31 509 508 510 + 289 31 512 511 513 + 290 31 515 514 516 + 291 31 518 517 519 + 292 31 521 520 522 + 293 31 524 523 525 + 294 31 527 526 528 + 295 31 530 529 531 + 296 31 533 532 534 + 297 31 536 535 537 + 298 31 539 538 540 + 299 31 542 541 543 + 300 31 545 544 546 + 301 31 548 547 549 + 302 31 551 550 552 + 303 31 554 553 555 + 304 31 557 556 558 + 305 31 560 559 561 + 306 31 563 562 564 + 307 31 566 565 567 + 308 31 569 568 570 + 309 31 572 571 573 + 310 31 575 574 576 + 311 31 578 577 579 + 312 31 581 580 582 + 313 31 584 583 585 + 314 31 587 586 588 + 315 31 590 589 591 + 316 31 593 592 594 + 317 31 596 595 597 + 318 31 599 598 600 + 319 31 602 601 603 + 320 31 605 604 606 + 321 31 608 607 609 + 322 31 611 610 612 + 323 31 614 613 615 + 324 31 617 616 618 + 325 31 620 619 621 + 326 31 623 622 624 + 327 31 626 625 627 + 328 31 629 628 630 + 329 31 632 631 633 + 330 31 635 634 636 + 331 31 638 637 639 + 332 31 641 640 642 + 333 31 644 643 645 + 334 31 647 646 648 + 335 31 650 649 651 + 336 31 653 652 654 + 337 31 656 655 657 + 338 31 659 658 660 + 339 31 662 661 663 + 340 31 665 664 666 + 341 31 668 667 669 + 342 31 671 670 672 + 343 31 674 673 675 + 344 31 677 676 678 + 345 31 680 679 681 + 346 31 683 682 684 + 347 31 686 685 687 + 348 31 689 688 690 + 349 31 692 691 693 + 350 31 695 694 696 + 351 31 698 697 699 + 352 31 701 700 702 + 353 31 704 703 705 + 354 31 707 706 708 + 355 31 710 709 711 + 356 31 713 712 714 + 357 31 716 715 717 + 358 31 719 718 720 + 359 31 722 721 723 + 360 31 725 724 726 + 361 31 728 727 729 + 362 31 731 730 732 + 363 31 734 733 735 + 364 31 737 736 738 + 365 31 740 739 741 + 366 31 743 742 744 + 367 31 746 745 747 + 368 31 749 748 750 + 369 31 752 751 753 + 370 31 755 754 756 + 371 31 758 757 759 + 372 31 761 760 762 + 373 31 764 763 765 + 374 31 767 766 768 + 375 31 770 769 771 + 376 31 773 772 774 + 377 31 776 775 777 + 378 31 779 778 780 + 379 31 782 781 783 + 380 31 785 784 786 + 381 31 788 787 789 + 382 31 791 790 792 + 383 31 794 793 795 + 384 31 797 796 798 + 385 31 800 799 801 + 386 31 803 802 804 + 387 31 806 805 807 + 388 31 809 808 810 + 389 31 812 811 813 + 390 31 815 814 816 + 391 31 818 817 819 + 392 31 821 820 822 + 393 31 824 823 825 + 394 31 827 826 828 + 395 31 830 829 831 + 396 31 833 832 834 + 397 31 836 835 837 + 398 31 839 838 840 + 399 31 842 841 843 + 400 31 845 844 846 + 401 31 848 847 849 + 402 31 851 850 852 + 403 31 854 853 855 + 404 31 857 856 858 + 405 31 860 859 861 + 406 31 863 862 864 + 407 31 866 865 867 + 408 31 869 868 870 + 409 31 872 871 873 + 410 31 875 874 876 + 411 31 878 877 879 + 412 31 881 880 882 + 413 31 884 883 885 + 414 31 887 886 888 + 415 31 890 889 891 + 416 31 893 892 894 + 417 31 896 895 897 + 418 31 899 898 900 + 419 31 902 901 903 + 420 31 905 904 906 + 421 31 908 907 909 + 422 31 911 910 912 + 423 31 914 913 915 + 424 31 917 916 918 + 425 31 920 919 921 + 426 31 923 922 924 + 427 31 926 925 927 + 428 31 929 928 930 + 429 31 932 931 933 + 430 31 935 934 936 + 431 31 938 937 939 + 432 31 941 940 942 + 433 31 944 943 945 + 434 31 947 946 948 + 435 31 950 949 951 + 436 31 953 952 954 + 437 31 956 955 957 + 438 31 959 958 960 + 439 31 962 961 963 + 440 31 965 964 966 + 441 31 968 967 969 + 442 31 971 970 972 + 443 31 974 973 975 + 444 31 977 976 978 + 445 31 980 979 981 + 446 31 983 982 984 + 447 31 986 985 987 + 448 31 989 988 990 + 449 31 992 991 993 + 450 31 995 994 996 + 451 31 998 997 999 + 452 31 1001 1000 1002 + 453 31 1004 1003 1005 + 454 31 1007 1006 1008 + 455 31 1010 1009 1011 + 456 31 1013 1012 1014 + 457 31 1016 1015 1017 + 458 31 1019 1018 1020 + 459 31 1022 1021 1023 + 460 31 1025 1024 1026 + 461 31 1028 1027 1029 + 462 31 1031 1030 1032 + 463 31 1034 1033 1035 + 464 31 1037 1036 1038 + 465 31 1040 1039 1041 + 466 31 1043 1042 1044 + 467 31 1046 1045 1047 + 468 31 1049 1048 1050 + 469 31 1052 1051 1053 + 470 31 1055 1054 1056 + 471 31 1058 1057 1059 + 472 31 1061 1060 1062 + 473 31 1064 1063 1065 + 474 31 1067 1066 1068 + 475 31 1070 1069 1071 + 476 31 1073 1072 1074 + 477 31 1076 1075 1077 + 478 31 1079 1078 1080 + 479 31 1082 1081 1083 + 480 31 1085 1084 1086 + 481 31 1088 1087 1089 + 482 31 1091 1090 1092 + 483 31 1094 1093 1095 + 484 31 1097 1096 1098 + 485 31 1100 1099 1101 + 486 31 1103 1102 1104 + 487 31 1106 1105 1107 + 488 31 1109 1108 1110 + 489 31 1112 1111 1113 + 490 31 1115 1114 1116 + 491 31 1118 1117 1119 + 492 31 1121 1120 1122 + 493 31 1124 1123 1125 + 494 31 1127 1126 1128 + 495 31 1130 1129 1131 + 496 31 1133 1132 1134 + 497 31 1136 1135 1137 + 498 31 1139 1138 1140 + 499 31 1142 1141 1143 + 500 31 1145 1144 1146 + 501 31 1148 1147 1149 + 502 31 1151 1150 1152 + 503 31 1154 1153 1155 + 504 31 1157 1156 1158 + 505 31 1160 1159 1161 + 506 31 1163 1162 1164 + 507 31 1166 1165 1167 + 508 31 1169 1168 1170 + 509 31 1172 1171 1173 + 510 31 1175 1174 1176 + 511 31 1178 1177 1179 + 512 31 1181 1180 1182 + 513 31 1184 1183 1185 + 514 31 1187 1186 1188 + 515 31 1190 1189 1191 + 516 31 1193 1192 1194 + 517 31 1196 1195 1197 + 518 31 1199 1198 1200 + 519 31 1202 1201 1203 + 520 31 1205 1204 1206 + 521 31 1208 1207 1209 + 522 31 1211 1210 1212 + 523 31 1214 1213 1215 + 524 31 1217 1216 1218 + 525 31 1220 1219 1221 + 526 31 1223 1222 1224 + 527 31 1226 1225 1227 + 528 31 1229 1228 1230 + 529 31 1232 1231 1233 + 530 31 1235 1234 1236 + 531 31 1238 1237 1239 + 532 31 1241 1240 1242 + 533 31 1244 1243 1245 + 534 31 1247 1246 1248 + 535 31 1250 1249 1251 + 536 31 1253 1252 1254 + 537 31 1256 1255 1257 + 538 31 1259 1258 1260 + 539 31 1262 1261 1263 + 540 31 1265 1264 1266 + 541 31 1268 1267 1269 + 542 31 1271 1270 1272 + 543 31 1274 1273 1275 + 544 31 1277 1276 1278 + 545 31 1280 1279 1281 + 546 31 1283 1282 1284 + 547 31 1286 1285 1287 + 548 31 1289 1288 1290 + 549 31 1292 1291 1293 + 550 31 1295 1294 1296 + 551 31 1298 1297 1299 + 552 31 1301 1300 1302 + 553 31 1304 1303 1305 + 554 31 1307 1306 1308 + 555 31 1310 1309 1311 + 556 31 1313 1312 1314 + 557 31 1316 1315 1317 + 558 31 1319 1318 1320 + 559 31 1322 1321 1323 + 560 31 1325 1324 1326 + 561 31 1328 1327 1329 + 562 31 1331 1330 1332 + 563 31 1334 1333 1335 + 564 31 1337 1336 1338 + 565 31 1340 1339 1341 + 566 31 1343 1342 1344 + 567 31 1346 1345 1347 + 568 31 1349 1348 1350 + 569 31 1352 1351 1353 + 570 31 1355 1354 1356 + 571 31 1358 1357 1359 + 572 31 1361 1360 1362 + 573 31 1364 1363 1365 + 574 31 1367 1366 1368 + 575 31 1370 1369 1371 + 576 31 1373 1372 1374 + 577 31 1376 1375 1377 + 578 31 1379 1378 1380 + 579 31 1382 1381 1383 + 580 31 1385 1384 1386 + 581 31 1388 1387 1389 + 582 31 1391 1390 1392 + 583 31 1394 1393 1395 + 584 31 1397 1396 1398 + 585 31 1400 1399 1401 + 586 31 1403 1402 1404 + 587 31 1406 1405 1407 + 588 31 1409 1408 1410 + 589 31 1412 1411 1413 + 590 31 1415 1414 1416 + 591 31 1418 1417 1419 + 592 31 1421 1420 1422 + 593 31 1424 1423 1425 + 594 31 1427 1426 1428 + 595 31 1430 1429 1431 + 596 31 1433 1432 1434 + 597 31 1436 1435 1437 + 598 31 1439 1438 1440 + 599 31 1442 1441 1443 + 600 31 1445 1444 1446 + 601 31 1448 1447 1449 + 602 31 1451 1450 1452 + 603 31 1454 1453 1455 + 604 31 1457 1456 1458 + 605 31 1460 1459 1461 + 606 31 1463 1462 1464 + 607 31 1466 1465 1467 + 608 31 1469 1468 1470 + 609 31 1472 1471 1473 + 610 31 1475 1474 1476 + 611 31 1478 1477 1479 + 612 31 1481 1480 1482 + 613 31 1484 1483 1485 + 614 31 1487 1486 1488 + 615 31 1490 1489 1491 + 616 31 1493 1492 1494 + 617 31 1496 1495 1497 + 618 31 1499 1498 1500 + 619 31 1502 1501 1503 + 620 31 1505 1504 1506 + 621 31 1508 1507 1509 + 622 31 1511 1510 1512 + 623 31 1514 1513 1515 + 624 31 1517 1516 1518 + 625 31 1520 1519 1521 + 626 31 1523 1522 1524 + 627 31 1526 1525 1527 + 628 31 1529 1528 1530 + 629 31 1532 1531 1533 + 630 31 1535 1534 1536 + 631 31 1538 1537 1539 + 632 31 1541 1540 1542 + 633 31 1544 1543 1545 + 634 31 1547 1546 1548 + 635 31 1550 1549 1551 + 636 31 1553 1552 1554 + 637 31 1556 1555 1557 + 638 31 1559 1558 1560 + 639 31 1562 1561 1563 + 640 31 1565 1564 1566 + 641 31 1568 1567 1569 + 642 31 1571 1570 1572 + 643 31 1574 1573 1575 + 644 31 1577 1576 1578 + 645 31 1580 1579 1581 + 646 31 1583 1582 1584 + 647 31 1586 1585 1587 + 648 31 1589 1588 1590 + 649 31 1592 1591 1593 + 650 31 1595 1594 1596 + 651 31 1598 1597 1599 + 652 31 1601 1600 1602 + 653 31 1604 1603 1605 + 654 31 1607 1606 1608 + 655 31 1610 1609 1611 + 656 31 1613 1612 1614 + 657 31 1616 1615 1617 + 658 31 1619 1618 1620 + 659 31 1622 1621 1623 + 660 31 1625 1624 1626 + 661 31 1628 1627 1629 + 662 31 1631 1630 1632 + 663 31 1634 1633 1635 + 664 31 1637 1636 1638 + 665 31 1640 1639 1641 + 666 31 1643 1642 1644 + 667 31 1646 1645 1647 + 668 31 1649 1648 1650 + 669 31 1652 1651 1653 + 670 31 1655 1654 1656 + 671 31 1658 1657 1659 + 672 31 1661 1660 1662 + 673 31 1664 1663 1665 + 674 31 1667 1666 1668 + 675 31 1670 1669 1671 + 676 31 1673 1672 1674 + 677 31 1676 1675 1677 + 678 31 1679 1678 1680 + 679 31 1682 1681 1683 + 680 31 1685 1684 1686 + 681 31 1688 1687 1689 + 682 31 1691 1690 1692 + 683 31 1694 1693 1695 + 684 31 1697 1696 1698 + 685 31 1700 1699 1701 + 686 31 1703 1702 1704 + 687 31 1706 1705 1707 + 688 31 1709 1708 1710 + 689 31 1712 1711 1713 + 690 31 1715 1714 1716 + 691 31 1718 1717 1719 + 692 31 1721 1720 1722 + 693 31 1724 1723 1725 + 694 31 1727 1726 1728 + 695 31 1730 1729 1731 + 696 31 1733 1732 1734 + 697 31 1736 1735 1737 + 698 31 1739 1738 1740 + 699 31 1742 1741 1743 + 700 31 1745 1744 1746 + 701 31 1748 1747 1749 + 702 31 1751 1750 1752 + 703 31 1754 1753 1755 + 704 31 1757 1756 1758 + 705 31 1760 1759 1761 + 706 31 1763 1762 1764 + 707 31 1766 1765 1767 + 708 31 1769 1768 1770 + 709 31 1772 1771 1773 + 710 31 1775 1774 1776 + 711 31 1778 1777 1779 + 712 31 1781 1780 1782 + 713 31 1784 1783 1785 + 714 31 1787 1786 1788 + 715 31 1790 1789 1791 + 716 31 1793 1792 1794 + 717 31 1796 1795 1797 + 718 31 1799 1798 1800 + 719 31 1802 1801 1803 + 720 31 1805 1804 1806 + 721 31 1808 1807 1809 + 722 31 1811 1810 1812 + 723 31 1814 1813 1815 + 724 31 1817 1816 1818 + 725 31 1820 1819 1821 + 726 31 1823 1822 1824 + 727 31 1826 1825 1827 + 728 31 1829 1828 1830 + 729 31 1832 1831 1833 + 730 31 1835 1834 1836 + 731 31 1838 1837 1839 + 732 31 1841 1840 1842 + 733 31 1844 1843 1845 + 734 31 1847 1846 1848 + 735 31 1850 1849 1851 + 736 31 1853 1852 1854 + 737 31 1856 1855 1857 + 738 31 1859 1858 1860 + 739 31 1862 1861 1863 + 740 31 1865 1864 1866 + 741 31 1868 1867 1869 + 742 31 1871 1870 1872 + 743 31 1874 1873 1875 + 744 31 1877 1876 1878 + 745 31 1880 1879 1881 + 746 31 1883 1882 1884 + 747 31 1886 1885 1887 + 748 31 1889 1888 1890 + 749 31 1892 1891 1893 + 750 31 1895 1894 1896 + 751 31 1898 1897 1899 + 752 31 1901 1900 1902 + 753 31 1904 1903 1905 + 754 31 1907 1906 1908 + 755 31 1910 1909 1911 + 756 31 1913 1912 1914 + 757 31 1916 1915 1917 + 758 31 1919 1918 1920 + 759 31 1922 1921 1923 + 760 31 1925 1924 1926 + 761 31 1928 1927 1929 + 762 31 1931 1930 1932 + 763 31 1934 1933 1935 + 764 31 1937 1936 1938 + 765 31 1940 1939 1941 + 766 31 1943 1942 1944 + 767 31 1946 1945 1947 + 768 31 1949 1948 1950 + 769 31 1952 1951 1953 + 770 31 1955 1954 1956 + 771 31 1958 1957 1959 + 772 31 1961 1960 1962 + 773 31 1964 1963 1965 + 774 31 1967 1966 1968 + 775 31 1970 1969 1971 + 776 31 1973 1972 1974 + 777 31 1976 1975 1977 + 778 31 1979 1978 1980 + 779 31 1982 1981 1983 + 780 31 1985 1984 1986 + 781 31 1988 1987 1989 + 782 31 1991 1990 1992 + 783 31 1994 1993 1995 + 784 31 1997 1996 1998 + 785 31 2000 1999 2001 + 786 31 2003 2002 2004 + +Dihedrals + + 1 6 3 1 7 8 + 2 6 2 1 7 19 + 3 4 2 1 7 8 + 4 5 2 1 7 8 + 5 6 3 1 7 19 + 6 3 3 1 2 4 + 7 3 3 1 2 6 + 8 3 3 1 2 5 + 9 3 5 2 1 7 + 10 3 4 2 1 7 + 11 3 6 2 1 7 + 12 3 19 7 8 20 + 13 1 1 7 8 9 + 14 3 1 7 8 20 + 15 2 1 7 8 11 + 16 8 9 8 11 22 + 17 3 7 8 9 10 + 18 7 7 8 9 28 + 19 8 7 8 11 21 + 20 8 7 8 11 12 + 21 3 9 8 7 19 + 22 3 11 8 9 28 + 23 8 7 8 11 22 + 24 3 11 8 7 19 + 25 10 9 8 11 12 + 26 3 20 8 9 28 + 27 8 9 8 11 21 + 28 8 20 8 11 22 + 29 8 20 8 11 21 + 30 4 8 9 28 29 + 31 5 8 9 28 29 + 32 6 10 9 28 29 + 33 11 10 9 8 11 + 34 6 10 9 28 32 + 35 3 10 9 8 20 + 36 6 8 9 28 32 + 37 9 8 11 12 13 + 38 8 12 11 8 20 + 39 9 8 11 12 14 + 40 14 14 12 13 15 + 41 13 13 12 14 24 + 42 3 13 12 11 22 + 43 14 13 12 14 16 + 44 3 14 12 11 22 + 45 3 13 12 11 21 + 46 13 11 12 14 24 + 47 12 11 12 14 16 + 48 3 14 12 11 21 + 49 13 11 12 13 23 + 50 13 14 12 13 23 + 51 12 11 12 13 15 + 52 16 23 13 15 25 + 53 13 12 13 15 25 + 54 14 12 13 15 17 + 55 14 12 14 16 17 + 56 13 12 14 16 26 + 57 16 24 14 16 26 + 58 12 13 15 17 18 + 59 13 17 15 13 23 + 60 14 13 15 17 16 + 61 12 14 16 17 18 + 62 13 17 16 14 24 + 63 14 14 16 17 15 + 64 15 16 17 18 27 + 65 13 15 17 16 26 + 66 13 18 17 15 25 + 67 15 15 17 18 27 + 68 13 16 17 15 25 + 69 13 18 17 16 26 + 70 1 9 28 29 30 + 71 3 32 28 29 33 + 72 3 9 28 29 33 + 73 3 9 28 29 34 + 74 3 32 28 29 34 + 75 3 33 29 30 35 + 76 3 30 29 28 32 + 77 3 34 29 30 35 + 78 7 28 29 30 35 + 79 3 28 29 30 31 + 80 6 29 30 35 39 + 81 4 29 30 35 36 + 82 5 29 30 35 36 + 83 3 31 30 29 34 + 84 3 31 30 29 33 + 85 6 31 30 35 39 + 86 6 31 30 35 36 + 87 1 30 35 36 37 + 88 3 39 35 36 41 + 89 3 30 35 36 40 + 90 3 30 35 36 41 + 91 3 39 35 36 40 + 92 3 40 36 37 42 + 93 3 41 36 37 42 + 94 7 35 36 37 42 + 95 3 35 36 37 38 + 96 3 37 36 35 39 + 97 6 38 37 42 53 + 98 3 38 37 36 40 + 99 6 38 37 42 43 + 100 4 36 37 42 43 + 101 6 36 37 42 53 + 102 5 36 37 42 43 + 103 3 38 37 36 41 + 104 3 37 42 43 54 + 105 1 37 42 43 44 + 106 3 53 42 43 54 + 107 2 37 42 43 46 + 108 10 44 43 46 47 + 109 3 44 43 42 53 + 110 8 42 43 46 56 + 111 8 42 43 46 55 + 112 8 42 43 46 47 + 113 3 46 43 42 53 + 114 8 44 43 46 55 + 115 8 54 43 46 56 + 116 7 42 43 44 62 + 117 3 42 43 44 45 + 118 3 46 43 44 62 + 119 3 54 43 44 62 + 120 8 54 43 46 55 + 121 8 44 43 46 56 + 122 5 43 44 62 63 + 123 6 45 44 62 70 + 124 6 43 44 62 70 + 125 4 43 44 62 63 + 126 11 45 44 43 46 + 127 3 45 44 43 54 + 128 6 45 44 62 63 + 129 9 43 46 47 48 + 130 8 47 46 43 54 + 131 9 43 46 47 49 + 132 3 49 47 46 55 + 133 13 46 47 48 57 + 134 14 49 47 48 50 + 135 3 49 47 46 56 + 136 12 46 47 48 50 + 137 12 46 47 49 51 + 138 14 48 47 49 51 + 139 13 46 47 49 58 + 140 3 48 47 46 55 + 141 3 48 47 46 56 + 142 13 48 47 49 58 + 143 13 49 47 48 57 + 144 14 47 48 50 52 + 145 16 57 48 50 59 + 146 13 47 48 50 59 + 147 16 58 49 51 60 + 148 13 47 49 51 60 + 149 14 47 49 51 52 + 150 13 48 50 52 61 + 151 14 48 50 52 51 + 152 16 59 50 52 61 + 153 13 52 50 48 57 + 154 14 49 51 52 50 + 155 13 49 51 52 61 + 156 13 52 51 49 58 + 157 16 60 51 52 61 + 158 13 51 52 50 59 + 159 13 50 52 51 60 + 160 3 70 62 63 71 + 161 2 44 62 63 66 + 162 1 44 62 63 64 + 163 3 44 62 63 71 + 164 8 62 63 66 72 + 165 8 62 63 66 67 + 166 3 71 63 64 79 + 167 3 62 63 64 65 + 168 3 64 63 62 70 + 169 8 62 63 66 73 + 170 7 62 63 64 79 + 171 8 64 63 66 67 + 172 3 66 63 64 79 + 173 8 64 63 66 72 + 174 3 66 63 62 70 + 175 8 71 63 66 73 + 176 8 64 63 66 73 + 177 8 71 63 66 72 + 178 6 63 64 79 81 + 179 6 65 64 79 80 + 180 3 65 64 63 71 + 181 4 63 64 79 80 + 182 6 65 64 79 81 + 183 5 63 64 79 80 + 184 11 65 64 63 66 + 185 8 67 66 63 71 + 186 17 63 66 67 74 + 187 17 72 66 67 75 + 188 17 63 66 67 75 + 189 17 63 66 67 68 + 190 17 73 66 67 74 + 191 17 73 66 67 75 + 192 17 72 66 67 74 + 193 19 66 67 68 69 + 194 21 68 67 66 72 + 195 18 66 67 68 69 + 196 21 68 67 66 73 + 197 20 69 68 67 74 + 198 20 69 68 67 75 + 199 20 67 68 69 77 + 200 20 67 68 69 76 + 201 20 67 68 69 78 + 202 3 81 79 80 83 + 203 3 81 79 80 84 + 204 3 64 79 80 84 + 205 3 81 79 80 82 + 206 3 64 79 80 83 + 207 3 64 79 80 82 + +Impropers + + 1 2 7 1 8 19 + 2 1 1 2 7 3 + 3 1 9 8 28 10 + 4 2 28 9 29 32 + 5 1 30 29 35 31 + 6 2 35 30 36 39 + 7 1 37 36 42 38 + 8 2 42 37 43 53 + 9 1 44 43 62 45 + 10 2 62 44 63 70 + 11 1 64 63 79 65 + 12 2 79 64 80 81 diff --git a/examples/USER/misc/temper_npt/in.temper_npt b/examples/USER/misc/temper_npt/in.temper_npt new file mode 100644 index 0000000000000000000000000000000000000000..81f818b66dbb42b17fc6f1e732a9ad7b95f665c2 --- /dev/null +++ b/examples/USER/misc/temper_npt/in.temper_npt @@ -0,0 +1,29 @@ +# Solvated 5-mer peptide +# Demonstrating temper/npt +units real +atom_style full + +pair_style lj/charmm/coul/long 8.0 10.0 10.0 +bond_style harmonic +angle_style charmm +dihedral_style charmm +improper_style harmonic +kspace_style pppm 0.0001 + +read_data data.peptide + +neighbor 2.0 bin +neigh_modify delay 5 + +timestep 2.0 + +thermo_style custom step temp epair emol etotal press density +thermo 50 + +variable temper_T world 275 280 285 290 295 300 305 310 +variable rep world 0 1 2 3 4 5 6 7 +fix myfix all npt temp ${temper_T} ${temper_T} 100.0 iso 1 1 1000 +run 500 +temper/npt 2000 100 ${temper_T} myfix 0 58728 1 +fix 2 all shake 0.0001 10 100 b 4 6 8 10 12 14 18 a 31 +group peptide type <= 12 diff --git a/examples/USER/misc/temper_npt/log.temper_npt-17Aug17.g++.8 b/examples/USER/misc/temper_npt/log.temper_npt-17Aug17.g++.8 new file mode 100644 index 0000000000000000000000000000000000000000..66c290c292dddedcae9c379e34011f3c526dbba5 --- /dev/null +++ b/examples/USER/misc/temper_npt/log.temper_npt-17Aug17.g++.8 @@ -0,0 +1,24 @@ +LAMMPS (17 Aug 2017) +Running on 8 partitions of processors +Step T0 T1 T2 T3 T4 T5 T6 T7 +500 0 1 2 3 4 5 6 7 +600 0 1 2 3 5 4 7 6 +700 0 2 1 4 6 3 7 5 +800 0 2 1 4 6 3 7 5 +900 0 2 1 3 6 4 7 5 +1000 0 2 1 3 7 4 6 5 +1100 0 1 2 3 7 4 6 5 +1200 0 1 2 3 7 4 6 5 +1300 0 1 2 4 7 3 5 6 +1400 0 1 2 4 7 3 5 6 +1500 0 2 1 4 7 3 5 6 +1600 1 3 0 4 6 2 5 7 +1700 1 3 0 4 5 2 6 7 +1800 0 3 1 4 5 2 6 7 +1900 0 3 2 4 5 1 6 7 +2000 1 2 3 5 4 0 6 7 +2100 2 1 3 5 4 0 6 7 +2200 2 1 3 4 5 0 7 6 +2300 1 2 4 3 5 0 7 6 +2400 1 2 4 3 5 0 6 7 +2500 2 1 3 4 5 0 6 7 diff --git a/examples/USER/misc/temper_npt/log.temper_npt-17Aug17.g++.8.0 b/examples/USER/misc/temper_npt/log.temper_npt-17Aug17.g++.8.0 new file mode 100644 index 0000000000000000000000000000000000000000..15fbef885dafeca50718fd02370bb60ff427bf89 --- /dev/null +++ b/examples/USER/misc/temper_npt/log.temper_npt-17Aug17.g++.8.0 @@ -0,0 +1,211 @@ +LAMMPS (17 Aug 2017) +Processor partition = 0 + using 1 OpenMP thread(s) per MPI task +# Solvated 5-mer peptide +# Demonstrating temper/npt +units real +atom_style full + +pair_style lj/charmm/coul/long 8.0 10.0 10.0 +bond_style harmonic +angle_style charmm +dihedral_style charmm +improper_style harmonic +kspace_style pppm 0.0001 + +read_data data.peptide + orthogonal box = (36.8402 41.0137 29.7681) to (64.2116 68.3851 57.1395) + 1 by 1 by 2 MPI processor grid + reading atoms ... + 2004 atoms + reading velocities ... + 2004 velocities + scanning bonds ... + 3 = max bonds/atom + scanning angles ... + 6 = max angles/atom + scanning dihedrals ... + 14 = max dihedrals/atom + scanning impropers ... + 1 = max impropers/atom + reading bonds ... + 1365 bonds + reading angles ... + 786 angles + reading dihedrals ... + 207 dihedrals + reading impropers ... + 12 impropers + 4 = max # of 1-2 neighbors + 7 = max # of 1-3 neighbors + 14 = max # of 1-4 neighbors + 18 = max # of special neighbors + +neighbor 2.0 bin +neigh_modify delay 5 + +timestep 2.0 + +thermo_style custom step temp epair emol etotal press density +thermo 50 + +variable temper_T world 275 280 285 290 295 300 305 310 +variable rep world 0 1 2 3 4 5 6 7 +fix myfix all npt temp ${temper_T} ${temper_T} 100.0 iso 1 1 1000 +fix myfix all npt temp 275 ${temper_T} 100.0 iso 1 1 1000 +fix myfix all npt temp 275 275 100.0 iso 1 1 1000 +run 500 +PPPM initialization ... +WARNING: Using 12-bit tables for long-range coulomb (../kspace.cpp:321) + G vector (1/distance) = 0.268725 + grid = 15 15 15 + stencil order = 5 + estimated absolute RMS force accuracy = 0.0228209 + estimated relative force accuracy = 6.87243e-05 + using double precision FFTs + 3d grid and FFT values/proc = 6776 1800 +Neighbor list info ... + update every 1 steps, delay 5 steps, check yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 12 + ghost atom cutoff = 12 + binsize = 6, bins = 5 5 5 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair lj/charmm/coul/long, perpetual + attributes: half, newton on + pair build: half/bin/newton + stencil: half/bin/3d/newton + bin: standard +Per MPI rank memory allocation (min/avg/max) = 15.94 | 15.95 | 15.96 Mbytes +Step Temp E_pair E_mol TotEng Press Density + 0 190.0857 -6442.768 70.391457 -5237.4579 20361.998 0.98480122 + 50 221.73889 -7683.7524 1219.961 -5139.8856 -23756.591 0.996067 + 100 253.40719 -6992.3405 479.6715 -4999.6856 12620.614 1.0124851 + 150 273.60252 -6943.8714 474.24744 -4836.0631 6691.4146 1.0213937 + 200 265.37126 -7274.7854 1059.7586 -4630.6111 -17765.088 1.0221471 + 250 263.1769 -6503.9902 470.29014 -4462.3859 21936.742 1.0159924 + 300 274.03852 -7026.6057 1021.3683 -4369.0734 -14847.42 1.0095778 + 350 283.20032 -6715.3608 688.9769 -4335.5187 3430.7111 1.0045615 + 400 282.2987 -6645.6692 598.6786 -4361.5086 6318.9525 1.0001513 + 450 265.89091 -6977.5705 985.58718 -4404.465 -13261.32 0.99833097 + 500 270.30038 -6683.7902 650.5748 -4419.37 10014.277 1.000501 +Loop time of 11.0158 on 2 procs for 500 steps with 2004 atoms + +Performance: 7.843 ns/day, 3.060 hours/ns, 45.389 timesteps/s +99.4% CPU use with 2 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 7.6893 | 7.8012 | 7.9131 | 4.0 | 70.82 +Bond | 0.085948 | 0.089635 | 0.093322 | 1.2 | 0.81 +Kspace | 1.1113 | 1.2333 | 1.3552 | 11.0 | 11.20 +Neigh | 1.2316 | 1.2336 | 1.2356 | 0.2 | 11.20 +Comm | 0.24281 | 0.24305 | 0.2433 | 0.0 | 2.21 +Output | 0.00052857 | 0.00053537 | 0.00054216 | 0.0 | 0.00 +Modify | 0.35968 | 0.38071 | 0.40175 | 3.4 | 3.46 +Other | | 0.03378 | | | 0.31 + +Nlocal: 1002 ave 1012 max 992 min +Histogram: 1 0 0 0 0 0 0 0 0 1 +Nghost: 8737.5 ave 8747 max 8728 min +Histogram: 1 0 0 0 0 0 0 0 0 1 +Neighs: 359463 ave 359931 max 358995 min +Histogram: 1 0 0 0 0 0 0 0 0 1 + +Total # of neighbors = 718926 +Ave neighs/atom = 358.746 +Ave special neighs/atom = 2.34032 +Neighbor list builds = 50 +Dangerous builds = 0 +temper/npt 2000 100 ${temper_T} myfix 0 58728 1 +temper/npt 2000 100 275 myfix 0 58728 1 +PPPM initialization ... +WARNING: Using 12-bit tables for long-range coulomb (../kspace.cpp:321) + G vector (1/distance) = 0.269166 + grid = 15 15 15 + stencil order = 5 + estimated absolute RMS force accuracy = 0.0224625 + estimated relative force accuracy = 6.76451e-05 + using double precision FFTs + 3d grid and FFT values/proc = 6776 1800 +Per MPI rank memory allocation (min/avg/max) = 15.94 | 15.95 | 15.96 Mbytes +Step Temp E_pair E_mol TotEng Press Density + 500 270.30038 -6683.7883 650.5748 -4419.3682 10014.295 1.000501 + 550 270.02511 -6875.5939 861.97452 -4401.4176 -7136.4285 1.005266 + 600 278.94444 -6786.546 772.05516 -4349.0356 1262.4902 1.0110761 + 650 283.8929 -6763.9691 734.90211 -4334.0667 3664.1311 1.0138933 + 700 276.67406 -6889.5452 847.87041 -4389.775 -4754.9929 1.0145005 + 750 266.09032 -6720.4921 700.27463 -4431.5085 5654.8094 1.013756 + 800 277.69948 -6917.9358 860.12186 -4399.7918 -4729.7009 1.0124281 + 850 278.00722 -6808.1267 798.69768 -4349.5695 1468.5155 1.0139727 + 900 276.49266 -6784.5965 818.01248 -4315.7673 2510.6047 1.0158115 + 950 270.36225 -6847.6403 901.97122 -4331.4544 -3448.3968 1.0175668 + 1000 276.75533 -6809.4075 781.83481 -4375.1877 3379.8584 1.0173101 + 1050 271.67172 -6913.3268 847.97269 -4443.3211 -2045.5605 1.016761 + 1100 265.73149 -6867.7958 840.08439 -4441.1449 -323.23893 1.0170333 + 1150 274.51451 -6834.9841 792.48751 -4403.4906 2604.0644 1.0175885 + 1200 274.22914 -6919.9496 890.14423 -4392.5032 -3454.4418 1.0167016 + 1250 274.13019 -6817.7256 825.11317 -4355.901 2067.3849 1.0181714 + 1300 287.36094 -6906.5403 854.11016 -4336.7237 -438.01206 1.0180794 + 1350 275.51763 -6911.8172 855.25923 -4411.5627 -742.96412 1.0180086 + 1400 269.90457 -6919.4028 855.55485 -4452.3659 311.08918 1.0213368 + 1450 276.99478 -6980.8317 913.69108 -4413.326 -1810.1051 1.0265437 + 1500 282.20313 -6926.698 863.56525 -4378.2213 932.7594 1.0301769 + 1550 276.82056 -6917.141 910.22058 -4354.146 -899.64097 1.0361201 + 1600 278.2946 -6903.7351 893.14524 -4349.0145 1399.9679 1.0421849 + 1650 270.12097 -6863.0844 879.81355 -4370.4967 1132.9864 1.0410741 + 1700 274.02565 -6912.4818 893.37432 -4383.0202 -1359.393 1.0366624 + 1750 276.77322 -6866.3214 899.18224 -4314.6474 887.47588 1.0332821 + 1800 287.02945 -6961.9217 950.89476 -4297.2996 -1298.0904 1.0313542 + 1850 279.37232 -6930.51 898.78906 -4363.711 397.74804 1.0309206 + 1900 277.14727 -6978.8634 915.53145 -4408.6069 636.36898 1.0285813 + 1950 275.14272 -7010.256 927.28727 -4440.212 -2352.6961 1.0241747 + 2000 270.84972 -6967.52 913.42253 -4436.9722 1669.9637 1.0251906 + 2050 276.70108 -6992.4582 993.37473 -4347.0223 -500.38379 1.0325714 + 2100 278.49569 -6922.9266 939.43518 -4320.7155 700.24515 1.0385166 + 2150 279.69822 -6896.5008 923.58805 -4302.9571 702.22759 1.0415681 + 2200 284.136 -6951.6694 974.70903 -4280.5086 352.95043 1.0452009 + 2250 292.01941 -6960.5848 964.01635 -4253.0483 2680.7007 1.0430517 + 2300 277.58812 -6995.5006 1010.8176 -4327.3258 -1508.9961 1.0328658 + 2350 270.61616 -6978.93 966.12478 -4397.0745 -1636.7434 1.0267664 + 2400 279.36012 -6991.4739 957.43125 -4366.1056 432.00482 1.0260429 + 2450 286.38546 -7074.807 1004.3206 -4360.6042 160.9109 1.0251585 + 2500 269.98622 -6932.0456 957.35208 -4362.724 1748.1568 1.0186556 +Loop time of 46.7361 on 2 procs for 2000 steps with 2004 atoms + +Performance: 7.395 ns/day, 3.246 hours/ns, 42.793 timesteps/s +99.2% CPU use with 2 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 32.381 | 32.617 | 32.854 | 4.1 | 69.79 +Bond | 0.3601 | 0.36578 | 0.37147 | 0.9 | 0.78 +Kspace | 4.6658 | 4.933 | 5.2002 | 12.0 | 10.56 +Neigh | 4.9833 | 4.9921 | 5.0009 | 0.4 | 10.68 +Comm | 0.96477 | 0.96532 | 0.96587 | 0.1 | 2.07 +Output | 0.0021896 | 0.0022331 | 0.0022767 | 0.1 | 0.00 +Modify | 1.4424 | 1.5379 | 1.6334 | 7.7 | 3.29 +Other | | 1.322 | | | 2.83 + +Nlocal: 1002 ave 1011 max 993 min +Histogram: 1 0 0 0 0 0 0 0 0 1 +Nghost: 8835 ave 8847 max 8823 min +Histogram: 1 0 0 0 0 0 0 0 0 1 +Neighs: 366395 ave 367166 max 365624 min +Histogram: 1 0 0 0 0 0 0 0 0 1 + +Total # of neighbors = 732790 +Ave neighs/atom = 365.664 +Ave special neighs/atom = 2.34032 +Neighbor list builds = 195 +Dangerous builds = 0 +fix 2 all shake 0.0001 10 100 b 4 6 8 10 12 14 18 a 31 + 19 = # of size 2 clusters + 6 = # of size 3 clusters + 3 = # of size 4 clusters + 640 = # of frozen angles +group peptide type <= 12 +84 atoms in group peptide +Total wall time: 0:00:58 diff --git a/examples/USER/misc/temper_npt/log.temper_npt-17Aug17.g++.8.1 b/examples/USER/misc/temper_npt/log.temper_npt-17Aug17.g++.8.1 new file mode 100644 index 0000000000000000000000000000000000000000..ebdb7b7f3012ea82d0ee1e4942faf2284efc2ce0 --- /dev/null +++ b/examples/USER/misc/temper_npt/log.temper_npt-17Aug17.g++.8.1 @@ -0,0 +1,211 @@ +LAMMPS (17 Aug 2017) +Processor partition = 1 + using 1 OpenMP thread(s) per MPI task +# Solvated 5-mer peptide +# Demonstrating temper/npt +units real +atom_style full + +pair_style lj/charmm/coul/long 8.0 10.0 10.0 +bond_style harmonic +angle_style charmm +dihedral_style charmm +improper_style harmonic +kspace_style pppm 0.0001 + +read_data data.peptide + orthogonal box = (36.8402 41.0137 29.7681) to (64.2116 68.3851 57.1395) + 1 by 1 by 2 MPI processor grid + reading atoms ... + 2004 atoms + reading velocities ... + 2004 velocities + scanning bonds ... + 3 = max bonds/atom + scanning angles ... + 6 = max angles/atom + scanning dihedrals ... + 14 = max dihedrals/atom + scanning impropers ... + 1 = max impropers/atom + reading bonds ... + 1365 bonds + reading angles ... + 786 angles + reading dihedrals ... + 207 dihedrals + reading impropers ... + 12 impropers + 4 = max # of 1-2 neighbors + 7 = max # of 1-3 neighbors + 14 = max # of 1-4 neighbors + 18 = max # of special neighbors + +neighbor 2.0 bin +neigh_modify delay 5 + +timestep 2.0 + +thermo_style custom step temp epair emol etotal press density +thermo 50 + +variable temper_T world 275 280 285 290 295 300 305 310 +variable rep world 0 1 2 3 4 5 6 7 +fix myfix all npt temp ${temper_T} ${temper_T} 100.0 iso 1 1 1000 +fix myfix all npt temp 280 ${temper_T} 100.0 iso 1 1 1000 +fix myfix all npt temp 280 280 100.0 iso 1 1 1000 +run 500 +PPPM initialization ... +WARNING: Using 12-bit tables for long-range coulomb (../kspace.cpp:321) + G vector (1/distance) = 0.268725 + grid = 15 15 15 + stencil order = 5 + estimated absolute RMS force accuracy = 0.0228209 + estimated relative force accuracy = 6.87243e-05 + using double precision FFTs + 3d grid and FFT values/proc = 6776 1800 +Neighbor list info ... + update every 1 steps, delay 5 steps, check yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 12 + ghost atom cutoff = 12 + binsize = 6, bins = 5 5 5 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair lj/charmm/coul/long, perpetual + attributes: half, newton on + pair build: half/bin/newton + stencil: half/bin/3d/newton + bin: standard +Per MPI rank memory allocation (min/avg/max) = 15.94 | 15.95 | 15.96 Mbytes +Step Temp E_pair E_mol TotEng Press Density + 0 190.0857 -6442.768 70.391457 -5237.4579 20361.998 0.98480122 + 50 222.19861 -7681.6246 1220.9355 -5134.0385 -23782.584 0.99586813 + 100 254.66243 -6984.8813 480.32613 -4984.0772 12653.925 1.0120499 + 150 275.28565 -6924.9875 473.42216 -4807.9551 6796.8759 1.0208676 + 200 266.52981 -7245.4283 1066.0809 -4588.0144 -17643.106 1.0213699 + 250 265.06051 -6458.7243 468.97999 -4407.1839 22476.585 1.0143215 + 300 276.91573 -6986.8723 1020.9402 -4312.5895 -14559.244 1.005554 + 350 284.26789 -6635.8191 681.27092 -4257.3089 2625.7849 0.99664411 + 400 284.48799 -6543.0099 637.61352 -4206.8431 7901.0269 0.99079237 + 450 271.30029 -6770.4441 1003.5624 -4147.0663 -13046.51 0.9856127 + 500 292.02418 -6514.8219 628.56367 -4142.7096 9871.7492 0.98625432 +Loop time of 11.1841 on 2 procs for 500 steps with 2004 atoms + +Performance: 7.725 ns/day, 3.107 hours/ns, 44.706 timesteps/s +98.4% CPU use with 2 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 7.8072 | 7.9267 | 8.0463 | 4.2 | 70.88 +Bond | 0.08858 | 0.091102 | 0.093624 | 0.8 | 0.81 +Kspace | 1.1403 | 1.2665 | 1.3927 | 11.2 | 11.32 +Neigh | 1.2478 | 1.2496 | 1.2514 | 0.2 | 11.17 +Comm | 0.21574 | 0.23191 | 0.24809 | 3.4 | 2.07 +Output | 0.00054431 | 0.00054872 | 0.00055313 | 0.0 | 0.00 +Modify | 0.36159 | 0.38512 | 0.40864 | 3.8 | 3.44 +Other | | 0.03255 | | | 0.29 + +Nlocal: 1002 ave 1026 max 978 min +Histogram: 1 0 0 0 0 0 0 0 0 1 +Nghost: 8640.5 ave 8690 max 8591 min +Histogram: 1 0 0 0 0 0 0 0 0 1 +Neighs: 354518 ave 367457 max 341580 min +Histogram: 1 0 0 0 0 0 0 0 0 1 + +Total # of neighbors = 709037 +Ave neighs/atom = 353.811 +Ave special neighs/atom = 2.34032 +Neighbor list builds = 49 +Dangerous builds = 0 +temper/npt 2000 100 ${temper_T} myfix 0 58728 1 +temper/npt 2000 100 280 myfix 0 58728 1 +PPPM initialization ... +WARNING: Using 12-bit tables for long-range coulomb (../kspace.cpp:321) + G vector (1/distance) = 0.268766 + grid = 15 15 15 + stencil order = 5 + estimated absolute RMS force accuracy = 0.0227872 + estimated relative force accuracy = 6.8623e-05 + using double precision FFTs + 3d grid and FFT values/proc = 6776 1800 +Per MPI rank memory allocation (min/avg/max) = 15.94 | 15.95 | 15.96 Mbytes +Step Temp E_pair E_mol TotEng Press Density + 500 292.02418 -6514.8215 628.56367 -4142.7092 9871.7534 0.98625432 + 550 282.55729 -6813.6685 882.47773 -4244.1648 -5377.4053 0.98629839 + 600 274.41644 -6737.0424 793.45027 -4305.1716 -306.54594 0.98725369 + 650 274.38967 -6664.1973 722.25014 -4303.6865 4628.1283 0.99175575 + 700 282.07693 -6819.1345 897.72476 -4237.2518 -7210.1942 0.99693402 + 750 281.80476 -6580.3192 776.69527 -4121.091 5466.9616 1.0060075 + 800 288.76507 -6726.7205 885.07773 -4117.5529 -2623.0756 1.0132495 + 850 289.21519 -6755.4289 847.00353 -4181.648 776.75991 1.0160602 + 900 280.679 -6694.3766 777.91069 -4240.6544 2272.2098 1.0170439 + 950 280.93616 -6813.8865 910.52053 -4226.0191 -3872.8603 1.0202606 + 1000 289.91762 -6710.0317 786.39268 -4192.6678 4456.0575 1.0222223 + 1050 292.7318 -6830.313 882.85834 -4199.6812 -2434.3412 1.0214856 + 1100 280.61029 -6789.3828 846.07872 -4267.9028 580.25027 1.0202095 + 1150 277.27283 -6806.9599 852.2013 -4299.2838 18.428929 1.0180062 + 1200 284.68488 -6849.8644 877.54803 -4272.5875 -1041.3591 1.0171686 + 1250 290.47153 -6864.5918 827.15634 -4303.1571 2658.2245 1.0175104 + 1300 279.84219 -6892.8497 884.4759 -4337.5586 -1800.8783 1.0176916 + 1350 275.59818 -6848.0359 848.53171 -4354.028 1599.2311 1.0197901 + 1400 276.67929 -6893.565 900.40614 -4341.2278 295.46659 1.0221449 + 1450 281.18148 -6902.3901 931.40362 -4292.1748 -1585.1315 1.0243322 + 1500 282.82339 -6846.4364 887.9988 -4269.8228 2142.9076 1.0291373 + 1550 291.40537 -6898.3742 920.23257 -4238.2876 -355.99408 1.0308242 + 1600 279.9548 -6863.2068 923.64788 -4268.0713 233.83555 1.0259922 + 1650 282.90611 -6848.3952 903.97971 -4255.3069 369.65523 1.0200083 + 1700 292.24099 -6884.346 965.54265 -4173.9603 -971.39092 1.0155909 + 1750 285.95609 -6805.2486 955.25719 -4142.6727 646.23287 1.012031 + 1800 293.50173 -6823.8152 919.24584 -4152.199 530.19678 1.0078324 + 1850 300.737 -6918.3747 942.10944 -4180.6963 -949.67639 1.0061029 + 1900 284.98969 -6913.5357 956.78373 -4255.2032 -163.02524 1.0095568 + 1950 282.78589 -6905.1978 951.94384 -4264.8631 -891.31043 1.0177223 + 2000 289.82463 -6977.0203 1022.9525 -4223.6518 -540.73403 1.0269481 + 2050 292.13474 -6900.8375 924.54552 -4232.0833 2656.3028 1.0310097 + 2100 284.54116 -6958.82 968.35681 -4291.5924 -286.70605 1.0264636 + 2150 268.14376 -6966.2184 973.69354 -4391.5558 -1446.0052 1.0190957 + 2200 275.09872 -6957.02 982.37472 -4332.1512 -1449.1984 1.0199163 + 2250 285.69237 -7002.4814 1014.3438 -4282.3934 -1530.0347 1.0264012 + 2300 282.59746 -6922.8242 980.57612 -4254.9822 381.8231 1.0332785 + 2350 290.98138 -6993.8628 1022.527 -4234.0132 -559.9386 1.0396092 + 2400 281.29903 -6963.5226 967.13898 -4316.8702 1438.7922 1.0452404 + 2450 278.44605 -6968.5134 945.32295 -4360.7108 1102.9302 1.0498791 + 2500 278.65789 -7034.3651 1032.8711 -4337.7496 -923.32414 1.0527955 +Loop time of 46.7418 on 2 procs for 2000 steps with 2004 atoms + +Performance: 7.394 ns/day, 3.246 hours/ns, 42.788 timesteps/s +98.3% CPU use with 2 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 33.141 | 33.146 | 33.152 | 0.1 | 70.91 +Bond | 0.36441 | 0.36647 | 0.36853 | 0.3 | 0.78 +Kspace | 4.9269 | 4.9539 | 4.9808 | 1.2 | 10.60 +Neigh | 5.2154 | 5.223 | 5.2306 | 0.3 | 11.17 +Comm | 0.90923 | 0.97305 | 1.0369 | 6.5 | 2.08 +Output | 0.0021682 | 0.0027286 | 0.003289 | 1.1 | 0.01 +Modify | 1.454 | 1.5534 | 1.6528 | 8.0 | 3.32 +Other | | 0.5229 | | | 1.12 + +Nlocal: 1002 ave 1005 max 999 min +Histogram: 1 0 0 0 0 0 0 0 0 1 +Nghost: 9059.5 ave 9084 max 9035 min +Histogram: 1 0 0 0 0 0 0 0 0 1 +Neighs: 378277 ave 380641 max 375913 min +Histogram: 1 0 0 0 0 0 0 0 0 1 + +Total # of neighbors = 756554 +Ave neighs/atom = 377.522 +Ave special neighs/atom = 2.34032 +Neighbor list builds = 197 +Dangerous builds = 0 +fix 2 all shake 0.0001 10 100 b 4 6 8 10 12 14 18 a 31 + 19 = # of size 2 clusters + 6 = # of size 3 clusters + 3 = # of size 4 clusters + 640 = # of frozen angles +group peptide type <= 12 +84 atoms in group peptide +Total wall time: 0:00:58 diff --git a/examples/USER/misc/temper_npt/log.temper_npt-17Aug17.g++.8.2 b/examples/USER/misc/temper_npt/log.temper_npt-17Aug17.g++.8.2 new file mode 100644 index 0000000000000000000000000000000000000000..42d42381c798355cb3279d217decf76c34c0721d --- /dev/null +++ b/examples/USER/misc/temper_npt/log.temper_npt-17Aug17.g++.8.2 @@ -0,0 +1,211 @@ +LAMMPS (17 Aug 2017) +Processor partition = 2 + using 1 OpenMP thread(s) per MPI task +# Solvated 5-mer peptide +# Demonstrating temper/npt +units real +atom_style full + +pair_style lj/charmm/coul/long 8.0 10.0 10.0 +bond_style harmonic +angle_style charmm +dihedral_style charmm +improper_style harmonic +kspace_style pppm 0.0001 + +read_data data.peptide + orthogonal box = (36.8402 41.0137 29.7681) to (64.2116 68.3851 57.1395) + 1 by 1 by 2 MPI processor grid + reading atoms ... + 2004 atoms + reading velocities ... + 2004 velocities + scanning bonds ... + 3 = max bonds/atom + scanning angles ... + 6 = max angles/atom + scanning dihedrals ... + 14 = max dihedrals/atom + scanning impropers ... + 1 = max impropers/atom + reading bonds ... + 1365 bonds + reading angles ... + 786 angles + reading dihedrals ... + 207 dihedrals + reading impropers ... + 12 impropers + 4 = max # of 1-2 neighbors + 7 = max # of 1-3 neighbors + 14 = max # of 1-4 neighbors + 18 = max # of special neighbors + +neighbor 2.0 bin +neigh_modify delay 5 + +timestep 2.0 + +thermo_style custom step temp epair emol etotal press density +thermo 50 + +variable temper_T world 275 280 285 290 295 300 305 310 +variable rep world 0 1 2 3 4 5 6 7 +fix myfix all npt temp ${temper_T} ${temper_T} 100.0 iso 1 1 1000 +fix myfix all npt temp 285 ${temper_T} 100.0 iso 1 1 1000 +fix myfix all npt temp 285 285 100.0 iso 1 1 1000 +run 500 +PPPM initialization ... +WARNING: Using 12-bit tables for long-range coulomb (../kspace.cpp:321) + G vector (1/distance) = 0.268725 + grid = 15 15 15 + stencil order = 5 + estimated absolute RMS force accuracy = 0.0228209 + estimated relative force accuracy = 6.87243e-05 + using double precision FFTs + 3d grid and FFT values/proc = 6776 1800 +Neighbor list info ... + update every 1 steps, delay 5 steps, check yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 12 + ghost atom cutoff = 12 + binsize = 6, bins = 5 5 5 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair lj/charmm/coul/long, perpetual + attributes: half, newton on + pair build: half/bin/newton + stencil: half/bin/3d/newton + bin: standard +Per MPI rank memory allocation (min/avg/max) = 15.94 | 15.95 | 15.96 Mbytes +Step Temp E_pair E_mol TotEng Press Density + 0 190.0857 -6442.768 70.391457 -5237.4579 20361.998 0.98480122 + 50 222.63643 -7679.59 1221.8685 -5128.4568 -23807.78 0.99567623 + 100 255.85049 -6977.7653 480.95894 -4969.235 12685.571 1.0116281 + 150 276.83083 -6906.8603 472.9485 -4781.076 6899.3786 1.0203576 + 200 267.19755 -7210.264 1068.2756 -4546.6687 -17521.505 1.0207097 + 250 263.8837 -6392.2545 463.0506 -4353.6698 22886.964 1.0130132 + 300 280.88953 -6919.81 1005.9833 -4236.7581 -14774.964 1.0024942 + 350 289.59472 -6621.8351 734.60058 -4158.1911 2409.0738 0.99451628 + 400 288.29076 -6495.283 634.61137 -4139.4136 6594.965 0.98796525 + 450 281.92055 -6838.8449 1025.3043 -4130.3164 -12795.112 0.98591519 + 500 298.25519 -6578.7232 652.75467 -4145.2172 10282.835 0.98902709 +Loop time of 11.0965 on 2 procs for 500 steps with 2004 atoms + +Performance: 7.786 ns/day, 3.082 hours/ns, 45.059 timesteps/s +99.1% CPU use with 2 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 7.9379 | 7.9449 | 7.952 | 0.2 | 71.60 +Bond | 0.090588 | 0.090927 | 0.091265 | 0.1 | 0.82 +Kspace | 1.1684 | 1.176 | 1.1837 | 0.7 | 10.60 +Neigh | 1.2553 | 1.2556 | 1.256 | 0.0 | 11.32 +Comm | 0.20599 | 0.21536 | 0.22474 | 2.0 | 1.94 +Output | 0.00049877 | 0.00050557 | 0.00051236 | 0.0 | 0.00 +Modify | 0.35224 | 0.37667 | 0.40111 | 4.0 | 3.39 +Other | | 0.03635 | | | 0.33 + +Nlocal: 1002 ave 1007 max 997 min +Histogram: 1 0 0 0 0 0 0 0 0 1 +Nghost: 8699.5 ave 8735 max 8664 min +Histogram: 1 0 0 0 0 0 0 0 0 1 +Neighs: 355600 ave 363554 max 347647 min +Histogram: 1 0 0 0 0 0 0 0 0 1 + +Total # of neighbors = 711201 +Ave neighs/atom = 354.891 +Ave special neighs/atom = 2.34032 +Neighbor list builds = 50 +Dangerous builds = 0 +temper/npt 2000 100 ${temper_T} myfix 0 58728 1 +temper/npt 2000 100 285 myfix 0 58728 1 +PPPM initialization ... +WARNING: Using 12-bit tables for long-range coulomb (../kspace.cpp:321) + G vector (1/distance) = 0.268844 + grid = 15 15 15 + stencil order = 5 + estimated absolute RMS force accuracy = 0.0227233 + estimated relative force accuracy = 6.84305e-05 + using double precision FFTs + 3d grid and FFT values/proc = 6776 1800 +Per MPI rank memory allocation (min/avg/max) = 15.94 | 15.95 | 15.96 Mbytes +Step Temp E_pair E_mol TotEng Press Density + 500 298.25519 -6578.7239 652.75467 -4145.218 10282.81 0.98902709 + 550 280.55812 -6800.9339 904.37474 -4221.4693 -6284.3677 0.99138729 + 600 282.54117 -6736.9067 793.64464 -4256.3323 379.51956 0.99544144 + 650 289.246 -6695.3988 727.43292 -4241.0045 3741.9292 1.0004679 + 700 298.37935 -6898.8951 912.35329 -4205.0492 -5179.2622 1.0029455 + 750 276.21453 -6657.3814 738.83164 -4269.3936 6422.8684 1.003042 + 800 273.34049 -6770.7481 842.34057 -4296.411 -2699.1945 1.0011122 + 850 279.30106 -6766.7842 807.51048 -4291.6893 -583.46522 1.0039015 + 900 286.09076 -6808.4366 807.15205 -4293.1617 1405.0223 1.0062162 + 950 283.04021 -6838.8107 869.45604 -4279.4454 -2826.6403 1.008228 + 1000 278.36762 -6776.1595 827.04427 -4287.104 2510.6216 1.0123638 + 1050 276.46194 -6858.6173 893.69758 -4314.2864 -1818.0617 1.0153108 + 1100 270.91883 -6818.5634 864.2518 -4336.7738 1021.1432 1.0153455 + 1150 274.70844 -6747.0957 849.98378 -4256.948 1453.2165 1.0141005 + 1200 292.66211 -6864.4907 917.17522 -4199.958 -2889.5663 1.0130738 + 1250 288.1024 -6814.0744 887.46443 -4206.4766 2384.4467 1.0139599 + 1300 286.54446 -6864.9998 900.886 -4253.2821 -2397.0043 1.0140796 + 1350 274.86169 -6804.6738 866.75191 -4296.843 1112.3802 1.0143892 + 1400 275.30771 -6837.4182 904.04812 -4289.6282 136.99961 1.0170328 + 1450 296.09129 -6868.8691 910.61078 -4190.4268 -1076.0085 1.0204782 + 1500 292.50596 -6812.8248 889.10378 -4177.2959 1069.9919 1.0198406 + 1550 284.3886 -6876.901 909.58572 -4269.3554 -1153.6899 1.0177539 + 1600 276.41187 -6876.8574 907.69862 -4318.8244 114.8894 1.0158964 + 1650 275.68967 -6919.4356 902.04604 -4371.3672 -1493.2092 1.0141832 + 1700 271.20923 -6893.2373 912.27766 -4361.688 -563.23529 1.0157743 + 1750 279.40649 -6842.0743 892.63677 -4281.2237 944.83039 1.0207184 + 1800 282.84659 -6889.8537 934.73963 -4266.3608 -895.12942 1.0238833 + 1850 279.58052 -6900.6624 951.17313 -4280.2364 648.68857 1.024366 + 1900 276.44092 -6841.9805 881.15423 -4310.3185 1052.7352 1.0229576 + 1950 289.89625 -6960.295 949.2514 -4280.2 -2500.9996 1.0210089 + 2000 283.75058 -6908.6985 930.56698 -4283.9809 1529.221 1.0211902 + 2050 284.00141 -6837.2348 943.57188 -4198.0147 -710.45695 1.0190262 + 2100 294.53504 -6879.4583 983.431 -4137.4874 -496.16699 1.0172736 + 2150 296.46029 -6854.8307 926.58211 -4158.2139 757.20038 1.017548 + 2200 284.26196 -6896.5957 989.5222 -4209.8697 -1953.1733 1.0187998 + 2250 284.51713 -6852.3924 938.51853 -4215.1465 210.72971 1.0208918 + 2300 289.88921 -6867.2253 969.05163 -4167.372 -80.492209 1.0240397 + 2350 296.17997 -6836.2421 954.2497 -4113.6314 -389.76698 1.0272081 + 2400 309.56546 -6833.5714 970.44217 -4014.8493 610.57346 1.0294586 + 2450 300.61402 -6827.9964 1025.4417 -4007.7199 1121.4824 1.0284326 + 2500 298.82336 -6815.7862 945.53298 -4086.1097 -726.1131 1.0224541 +Loop time of 46.7423 on 2 procs for 2000 steps with 2004 atoms + +Performance: 7.394 ns/day, 3.246 hours/ns, 42.788 timesteps/s +99.3% CPU use with 2 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 32.492 | 32.625 | 32.758 | 2.3 | 69.80 +Bond | 0.3584 | 0.36552 | 0.37265 | 1.2 | 0.78 +Kspace | 4.7476 | 4.8898 | 5.0319 | 6.4 | 10.46 +Neigh | 5.1461 | 5.1463 | 5.1464 | 0.0 | 11.01 +Comm | 0.86246 | 0.89403 | 0.92559 | 3.3 | 1.91 +Output | 0.0020437 | 0.0020902 | 0.0021367 | 0.1 | 0.00 +Modify | 1.4279 | 1.5187 | 1.6095 | 7.4 | 3.25 +Other | | 1.301 | | | 2.78 + +Nlocal: 1002 ave 1010 max 994 min +Histogram: 1 0 0 0 0 0 0 0 0 1 +Nghost: 8922 ave 9009 max 8835 min +Histogram: 1 0 0 0 0 0 0 0 0 1 +Neighs: 367689 ave 371637 max 363741 min +Histogram: 1 0 0 0 0 0 0 0 0 1 + +Total # of neighbors = 735378 +Ave neighs/atom = 366.955 +Ave special neighs/atom = 2.34032 +Neighbor list builds = 200 +Dangerous builds = 0 +fix 2 all shake 0.0001 10 100 b 4 6 8 10 12 14 18 a 31 + 19 = # of size 2 clusters + 6 = # of size 3 clusters + 3 = # of size 4 clusters + 640 = # of frozen angles +group peptide type <= 12 +84 atoms in group peptide +Total wall time: 0:00:58 diff --git a/examples/USER/misc/temper_npt/log.temper_npt-17Aug17.g++.8.3 b/examples/USER/misc/temper_npt/log.temper_npt-17Aug17.g++.8.3 new file mode 100644 index 0000000000000000000000000000000000000000..b97559765ddd661a922947869604c71a851829b5 --- /dev/null +++ b/examples/USER/misc/temper_npt/log.temper_npt-17Aug17.g++.8.3 @@ -0,0 +1,211 @@ +LAMMPS (17 Aug 2017) +Processor partition = 3 + using 1 OpenMP thread(s) per MPI task +# Solvated 5-mer peptide +# Demonstrating temper/npt +units real +atom_style full + +pair_style lj/charmm/coul/long 8.0 10.0 10.0 +bond_style harmonic +angle_style charmm +dihedral_style charmm +improper_style harmonic +kspace_style pppm 0.0001 + +read_data data.peptide + orthogonal box = (36.8402 41.0137 29.7681) to (64.2116 68.3851 57.1395) + 1 by 1 by 2 MPI processor grid + reading atoms ... + 2004 atoms + reading velocities ... + 2004 velocities + scanning bonds ... + 3 = max bonds/atom + scanning angles ... + 6 = max angles/atom + scanning dihedrals ... + 14 = max dihedrals/atom + scanning impropers ... + 1 = max impropers/atom + reading bonds ... + 1365 bonds + reading angles ... + 786 angles + reading dihedrals ... + 207 dihedrals + reading impropers ... + 12 impropers + 4 = max # of 1-2 neighbors + 7 = max # of 1-3 neighbors + 14 = max # of 1-4 neighbors + 18 = max # of special neighbors + +neighbor 2.0 bin +neigh_modify delay 5 + +timestep 2.0 + +thermo_style custom step temp epair emol etotal press density +thermo 50 + +variable temper_T world 275 280 285 290 295 300 305 310 +variable rep world 0 1 2 3 4 5 6 7 +fix myfix all npt temp ${temper_T} ${temper_T} 100.0 iso 1 1 1000 +fix myfix all npt temp 290 ${temper_T} 100.0 iso 1 1 1000 +fix myfix all npt temp 290 290 100.0 iso 1 1 1000 +run 500 +PPPM initialization ... +WARNING: Using 12-bit tables for long-range coulomb (../kspace.cpp:321) + G vector (1/distance) = 0.268725 + grid = 15 15 15 + stencil order = 5 + estimated absolute RMS force accuracy = 0.0228209 + estimated relative force accuracy = 6.87243e-05 + using double precision FFTs + 3d grid and FFT values/proc = 6776 1800 +Neighbor list info ... + update every 1 steps, delay 5 steps, check yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 12 + ghost atom cutoff = 12 + binsize = 6, bins = 5 5 5 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair lj/charmm/coul/long, perpetual + attributes: half, newton on + pair build: half/bin/newton + stencil: half/bin/3d/newton + bin: standard +Per MPI rank memory allocation (min/avg/max) = 15.94 | 15.95 | 15.96 Mbytes +Step Temp E_pair E_mol TotEng Press Density + 0 190.0857 -6442.768 70.391457 -5237.4579 20361.998 0.98480122 + 50 223.053 -7677.6519 1222.7567 -5123.1433 -23832.135 0.99549097 + 100 256.97829 -6970.9352 481.56411 -4955.0662 12716.194 1.0112202 + 150 278.44824 -6890.5623 472.60764 -4755.4621 6994.6533 1.0198648 + 200 271.15638 -7198.8095 1073.0275 -4506.826 -17647.735 1.020128 + 250 271.19291 -6398.4699 477.07511 -4302.2206 23076.406 1.0123626 + 300 295.5039 -6953.4923 1007.5309 -4181.6369 -15039.211 1.0007168 + 350 297.29537 -6594.1646 707.50773 -4111.6362 1990.9893 0.99116796 + 400 294.93533 -6450.921 630.83559 -4059.1555 6431.7427 0.98805162 + 450 295.23265 -6781.3296 1002.9096 -4015.715 -12070.145 0.98722232 + 500 284.70036 -6389.6524 668.83647 -4020.9946 10958.208 0.98502274 +Loop time of 11.0942 on 2 procs for 500 steps with 2004 atoms + +Performance: 7.788 ns/day, 3.082 hours/ns, 45.069 timesteps/s +99.3% CPU use with 2 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 7.7626 | 7.8378 | 7.913 | 2.7 | 70.65 +Bond | 0.086271 | 0.08859 | 0.090909 | 0.8 | 0.80 +Kspace | 1.1309 | 1.2146 | 1.2982 | 7.6 | 10.95 +Neigh | 1.2958 | 1.2978 | 1.2999 | 0.2 | 11.70 +Comm | 0.24052 | 0.24249 | 0.24445 | 0.4 | 2.19 +Output | 0.00055242 | 0.00056267 | 0.00057292 | 0.0 | 0.01 +Modify | 0.35597 | 0.3786 | 0.40124 | 3.7 | 3.41 +Other | | 0.03375 | | | 0.30 + +Nlocal: 1002 ave 1015 max 989 min +Histogram: 1 0 0 0 0 0 0 0 0 1 +Nghost: 8686.5 ave 8717 max 8656 min +Histogram: 1 0 0 0 0 0 0 0 0 1 +Neighs: 354166 ave 365049 max 343283 min +Histogram: 1 0 0 0 0 0 0 0 0 1 + +Total # of neighbors = 708332 +Ave neighs/atom = 353.459 +Ave special neighs/atom = 2.34032 +Neighbor list builds = 52 +Dangerous builds = 0 +temper/npt 2000 100 ${temper_T} myfix 0 58728 1 +temper/npt 2000 100 290 myfix 0 58728 1 +PPPM initialization ... +WARNING: Using 12-bit tables for long-range coulomb (../kspace.cpp:321) + G vector (1/distance) = 0.268731 + grid = 15 15 15 + stencil order = 5 + estimated absolute RMS force accuracy = 0.0228157 + estimated relative force accuracy = 6.87089e-05 + using double precision FFTs + 3d grid and FFT values/proc = 6776 1800 +Per MPI rank memory allocation (min/avg/max) = 15.94 | 15.95 | 15.96 Mbytes +Step Temp E_pair E_mol TotEng Press Density + 500 284.70036 -6389.6523 668.83647 -4020.9946 10958.208 0.98502274 + 550 290.90514 -6715.0579 911.30009 -4066.8904 -6474.803 0.98383517 + 600 283.07652 -6555.4875 766.62589 -4098.7355 261.44315 0.98334866 + 650 293.39943 -6543.5525 727.38701 -4064.4058 5298.0746 0.98688936 + 700 295.77284 -6702.0803 912.68434 -4023.4658 -6806.6079 0.98957885 + 750 302.19503 -6545.9025 745.53299 -3996.0952 4624.9549 0.9931176 + 800 292.89947 -6664.6734 861.73293 -4054.1658 -1569.2753 0.99667377 + 850 288.96376 -6637.9753 841.33585 -4071.3632 -864.6336 1.0003373 + 900 291.22538 -6602.7272 806.80566 -4057.1422 2231.0477 1.0028411 + 950 290.78982 -6720.7893 893.26995 -4091.3406 -3898.6743 1.0021058 + 1000 285.74827 -6640.6252 810.15614 -4124.3911 558.53066 1.0051325 + 1050 288.3183 -6717.0357 867.9383 -4127.675 355.99916 1.0122228 + 1100 291.39421 -6746.7014 879.64717 -4127.2669 -736.99584 1.011619 + 1150 290.47863 -6710.1637 836.85441 -4138.9885 1105.9666 1.0069336 + 1200 288.94451 -6726.3595 867.56238 -4133.6359 -901.95525 1.0026837 + 1250 290.75557 -6716.8398 867.19843 -4113.6671 1376.8368 1.0000807 + 1300 289.52654 -6715.6758 904.46364 -4082.5758 -1400.2433 0.99935875 + 1350 292.30663 -6661.0526 904.32661 -4011.491 196.73374 0.99704618 + 1400 301.41479 -6661.807 880.88881 -3981.3023 1079.6673 0.99635503 + 1450 301.10415 -6704.7089 950.31941 -3956.6283 -1083.4574 0.99740883 + 1500 303.52341 -6687.1744 886.70817 -3988.2608 901.20455 0.99756877 + 1550 290.70908 -6738.4941 931.37971 -4071.4177 -56.269366 0.99843015 + 1600 289.8778 -6709.348 888.89193 -4089.7225 506.51952 1.0003118 + 1650 288.12183 -6724.4008 896.24971 -4107.9017 -1229.6117 1.004563 + 1700 297.81604 -6743.9356 906.62851 -4059.1778 1032.1913 1.0116813 + 1750 304.22415 -6761.8681 932.14203 -4013.3368 1825.359 1.015764 + 1800 286.62853 -6698.3527 911.17615 -4075.843 -1160.6136 1.0169905 + 1850 292.7719 -6787.8009 918.61838 -4121.1696 1455.4151 1.0203418 + 1900 290.87293 -6806.1448 960.43892 -4109.0309 -829.39096 1.022593 + 1950 304.5232 -6848.8518 954.93165 -4075.7453 915.93096 1.0221703 + 2000 286.15289 -6721.328 941.83273 -4071.0015 194.2717 1.0167052 + 2050 305.2696 -6720.8244 968.69939 -3929.4938 -1154.2389 1.0114409 + 2100 298.14935 -6678.8136 975.17824 -3923.516 794.1643 1.0070072 + 2150 301.51333 -6734.6863 950.33572 -3984.1464 -537.44292 1.0048337 + 2200 298.25074 -6736.277 945.4083 -4010.144 211.60185 1.0060101 + 2250 297.20864 -6820.7924 941.75394 -4104.5356 772.05119 1.0087884 + 2300 286.08552 -6853.0967 990.41746 -4154.5877 -760.47968 1.0110651 + 2350 295.49972 -6888.1433 937.27703 -4186.5667 966.37988 1.0150101 + 2400 289.60528 -6888.0768 967.74071 -4191.2297 1140.8847 1.0176507 + 2450 290.7003 -6906.443 998.89141 -4171.9073 -363.47638 1.0151765 + 2500 291.05855 -6817.2894 972.06896 -4107.4372 415.89846 1.0117849 +Loop time of 46.7412 on 2 procs for 2000 steps with 2004 atoms + +Performance: 7.394 ns/day, 3.246 hours/ns, 42.789 timesteps/s +99.3% CPU use with 2 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 31.884 | 32.272 | 32.659 | 6.8 | 69.04 +Bond | 0.34239 | 0.35991 | 0.37742 | 2.9 | 0.77 +Kspace | 4.6486 | 5.0781 | 5.5076 | 19.1 | 10.86 +Neigh | 5.1657 | 5.1742 | 5.1828 | 0.4 | 11.07 +Comm | 0.96743 | 0.96831 | 0.96918 | 0.1 | 2.07 +Output | 0.0021966 | 0.0022568 | 0.002317 | 0.1 | 0.00 +Modify | 1.4428 | 1.5251 | 1.6074 | 6.7 | 3.26 +Other | | 1.362 | | | 2.91 + +Nlocal: 1002 ave 1004 max 1000 min +Histogram: 1 0 0 0 0 0 0 0 0 1 +Nghost: 8824 ave 8848 max 8800 min +Histogram: 1 0 0 0 0 0 0 0 0 1 +Neighs: 363564 ave 364653 max 362474 min +Histogram: 1 0 0 0 0 0 0 0 0 1 + +Total # of neighbors = 727127 +Ave neighs/atom = 362.838 +Ave special neighs/atom = 2.34032 +Neighbor list builds = 201 +Dangerous builds = 0 +fix 2 all shake 0.0001 10 100 b 4 6 8 10 12 14 18 a 31 + 19 = # of size 2 clusters + 6 = # of size 3 clusters + 3 = # of size 4 clusters + 640 = # of frozen angles +group peptide type <= 12 +84 atoms in group peptide +Total wall time: 0:00:58 diff --git a/examples/USER/misc/temper_npt/log.temper_npt-17Aug17.g++.8.4 b/examples/USER/misc/temper_npt/log.temper_npt-17Aug17.g++.8.4 new file mode 100644 index 0000000000000000000000000000000000000000..ad7e1fdb52fc48ac56dc03510f5d8b3faa0f6a2e --- /dev/null +++ b/examples/USER/misc/temper_npt/log.temper_npt-17Aug17.g++.8.4 @@ -0,0 +1,211 @@ +LAMMPS (17 Aug 2017) +Processor partition = 4 + using 1 OpenMP thread(s) per MPI task +# Solvated 5-mer peptide +# Demonstrating temper/npt +units real +atom_style full + +pair_style lj/charmm/coul/long 8.0 10.0 10.0 +bond_style harmonic +angle_style charmm +dihedral_style charmm +improper_style harmonic +kspace_style pppm 0.0001 + +read_data data.peptide + orthogonal box = (36.8402 41.0137 29.7681) to (64.2116 68.3851 57.1395) + 1 by 1 by 2 MPI processor grid + reading atoms ... + 2004 atoms + reading velocities ... + 2004 velocities + scanning bonds ... + 3 = max bonds/atom + scanning angles ... + 6 = max angles/atom + scanning dihedrals ... + 14 = max dihedrals/atom + scanning impropers ... + 1 = max impropers/atom + reading bonds ... + 1365 bonds + reading angles ... + 786 angles + reading dihedrals ... + 207 dihedrals + reading impropers ... + 12 impropers + 4 = max # of 1-2 neighbors + 7 = max # of 1-3 neighbors + 14 = max # of 1-4 neighbors + 18 = max # of special neighbors + +neighbor 2.0 bin +neigh_modify delay 5 + +timestep 2.0 + +thermo_style custom step temp epair emol etotal press density +thermo 50 + +variable temper_T world 275 280 285 290 295 300 305 310 +variable rep world 0 1 2 3 4 5 6 7 +fix myfix all npt temp ${temper_T} ${temper_T} 100.0 iso 1 1 1000 +fix myfix all npt temp 295 ${temper_T} 100.0 iso 1 1 1000 +fix myfix all npt temp 295 295 100.0 iso 1 1 1000 +run 500 +PPPM initialization ... +WARNING: Using 12-bit tables for long-range coulomb (../kspace.cpp:321) + G vector (1/distance) = 0.268725 + grid = 15 15 15 + stencil order = 5 + estimated absolute RMS force accuracy = 0.0228209 + estimated relative force accuracy = 6.87243e-05 + using double precision FFTs + 3d grid and FFT values/proc = 6776 1800 +Neighbor list info ... + update every 1 steps, delay 5 steps, check yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 12 + ghost atom cutoff = 12 + binsize = 6, bins = 5 5 5 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair lj/charmm/coul/long, perpetual + attributes: half, newton on + pair build: half/bin/newton + stencil: half/bin/3d/newton + bin: standard +Per MPI rank memory allocation (min/avg/max) = 15.94 | 15.95 | 15.96 Mbytes +Step Temp E_pair E_mol TotEng Press Density + 0 190.0857 -6442.768 70.391457 -5237.4579 20361.998 0.98480122 + 50 223.44965 -7675.7636 1223.6082 -5118.0353 -23854.901 0.99531214 + 100 258.05368 -6964.3986 482.14839 -4941.5246 12745.624 1.010825 + 150 279.95689 -6874.6176 472.25664 -4730.8609 7091.9355 1.0193879 + 200 275.57578 -7193.9232 1079.6288 -4468.952 -17877.542 1.0195441 + 250 279.43717 -6402.2754 479.97988 -4253.8984 23273.809 1.0116181 + 300 292.20824 -6863.5426 998.78846 -4120.1066 -14524.477 0.99985013 + 350 297.83477 -6520.8204 705.46814 -4037.1112 1640.5321 0.99100268 + 400 300.71476 -6441.8834 652.50284 -3993.9443 7052.2304 0.98787311 + 450 298.04546 -6757.2898 986.07239 -3991.7184 -11211.612 0.98470906 + 500 290.54704 -6432.0836 676.82263 -4020.5317 9503.0303 0.98022653 +Loop time of 11.0411 on 2 procs for 500 steps with 2004 atoms + +Performance: 7.825 ns/day, 3.067 hours/ns, 45.286 timesteps/s +99.2% CPU use with 2 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 7.7513 | 7.8142 | 7.8771 | 2.3 | 70.77 +Bond | 0.087844 | 0.089858 | 0.091872 | 0.7 | 0.81 +Kspace | 1.1507 | 1.2078 | 1.2649 | 5.2 | 10.94 +Neigh | 1.2777 | 1.2798 | 1.282 | 0.2 | 11.59 +Comm | 0.21883 | 0.2369 | 0.25497 | 3.7 | 2.15 +Output | 0.00052476 | 0.00053084 | 0.00053692 | 0.0 | 0.00 +Modify | 0.35187 | 0.38007 | 0.40828 | 4.6 | 3.44 +Other | | 0.03188 | | | 0.29 + +Nlocal: 1002 ave 1018 max 986 min +Histogram: 1 0 0 0 0 0 0 0 0 1 +Nghost: 8685.5 ave 8713 max 8658 min +Histogram: 1 0 0 0 0 0 0 0 0 1 +Neighs: 352674 ave 363841 max 341507 min +Histogram: 1 0 0 0 0 0 0 0 0 1 + +Total # of neighbors = 705348 +Ave neighs/atom = 351.97 +Ave special neighs/atom = 2.34032 +Neighbor list builds = 51 +Dangerous builds = 0 +temper/npt 2000 100 ${temper_T} myfix 0 58728 1 +temper/npt 2000 100 295 myfix 0 58728 1 +PPPM initialization ... +WARNING: Using 12-bit tables for long-range coulomb (../kspace.cpp:321) + G vector (1/distance) = 0.268595 + grid = 15 15 15 + stencil order = 5 + estimated absolute RMS force accuracy = 0.0229274 + estimated relative force accuracy = 6.90452e-05 + using double precision FFTs + 3d grid and FFT values/proc = 6776 1800 +Per MPI rank memory allocation (min/avg/max) = 15.94 | 15.95 | 15.96 Mbytes +Step Temp E_pair E_mol TotEng Press Density + 500 290.54704 -6432.0826 676.82263 -4020.5307 9503.0509 0.98022653 + 550 299.80307 -6732.1631 858.08424 -4084.0858 -5804.5234 0.97922483 + 600 282.09517 -6605.4814 819.96587 -4101.2486 -819.40251 0.98081741 + 650 294.53657 -6522.7525 767.04478 -3997.1588 4596.0585 0.98382352 + 700 305.841 -6619.4153 905.5064 -3887.8662 -5973.5686 0.98622017 + 750 307.23206 -6438.653 789.70387 -3814.6009 6681.8219 0.98950206 + 800 307.87505 -6564.5918 887.75178 -3838.6527 -1917.6181 0.98688326 + 850 298.61627 -6528.5749 847.91654 -3897.7513 -3785.6609 0.9806677 + 900 300.37107 -6492.7964 828.13288 -3871.2792 3123.0873 0.97992098 + 950 313.50832 -6648.6955 936.69562 -3840.1788 -3465.5075 0.97832705 + 1000 300.79594 -6452.6853 828.10459 -3828.6598 2639.7489 0.9724972 + 1050 316.04685 -6570.6422 935.04399 -3748.6208 -2434.9525 0.96835974 + 1100 311.0203 -6489.14 897.50532 -3734.6686 -1557.8625 0.97044387 + 1150 311.75575 -6489.2845 888.02191 -3739.9054 1954.7864 0.97411485 + 1200 304.34674 -6521.7138 905.22814 -3799.3644 -1699.1298 0.98025305 + 1250 305.82 -6594.6645 927.05285 -3841.6942 1061.9124 0.98818343 + 1300 300.78043 -6566.1931 942.90743 -3827.4574 -864.10057 0.99107957 + 1350 314.72676 -6545.9508 912.22446 -3754.6305 606.75529 0.9929135 + 1400 315.913 -6551.4197 960.628 -3704.6134 1064.6728 0.99029667 + 1450 309.18966 -6497.0696 918.08358 -3732.9498 -1325.2759 0.98343775 + 1500 312.58526 -6494.4875 891.16465 -3737.013 1380.3782 0.98291945 + 1550 317.55684 -6590.3216 970.14576 -3724.1828 -1866.6608 0.9847875 + 1600 307.38151 -6552.4153 940.826 -3776.3487 -390.22458 0.98596757 + 1650 295.78641 -6508.499 880.69089 -3861.7969 -1368.3717 0.98931642 + 1700 306.06415 -6655.9157 976.17248 -3852.3681 -1599.4137 0.99512042 + 1750 303.02767 -6625.01 920.50823 -3895.2561 2274.9319 1.0015941 + 1800 295.63701 -6674.2337 928.57382 -3980.5406 -290.52041 1.0049878 + 1850 302.04323 -6768.1711 959.29198 -4005.5112 -688.59334 1.0096755 + 1900 299.41653 -6746.3896 940.56717 -4018.1373 1011.075 1.0170047 + 1950 298.83395 -6766.5655 950.11421 -4032.2445 -187.97792 1.0202189 + 2000 299.45823 -6824.2159 958.18625 -4078.0956 -715.67202 1.0223031 + 2050 290.49349 -6835.2073 950.68063 -4150.1172 -345.43177 1.0232367 + 2100 283.23103 -6798.203 936.42547 -4170.729 300.36081 1.0201704 + 2150 295.58133 -6797.5304 933.21906 -4099.5245 -293.26979 1.0191458 + 2200 287.12783 -6693.6112 942.32795 -4036.9686 -1430.1972 1.0191149 + 2250 301.19592 -6762.0204 998.15337 -3965.5579 -956.39215 1.0207659 + 2300 303.62433 -6716.6297 960.83467 -3942.987 77.237938 1.0202529 + 2350 292.95455 -6741.789 993.45295 -3999.2326 1009.5683 1.0189011 + 2400 295.01475 -6781.545 966.72586 -4053.4151 109.26284 1.0174852 + 2450 300.36482 -6827.3015 978.76759 -4055.187 -395.9959 1.0168907 + 2500 303.77029 -6833.9094 987.05071 -4033.1791 259.58796 1.0139892 +Loop time of 46.7422 on 2 procs for 2000 steps with 2004 atoms + +Performance: 7.394 ns/day, 3.246 hours/ns, 42.788 timesteps/s +99.3% CPU use with 2 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 31.75 | 32.061 | 32.372 | 5.5 | 68.59 +Bond | 0.36191 | 0.36261 | 0.36331 | 0.1 | 0.78 +Kspace | 4.6321 | 4.925 | 5.2179 | 13.2 | 10.54 +Neigh | 5.3267 | 5.3348 | 5.3429 | 0.3 | 11.41 +Comm | 0.88959 | 0.96174 | 1.0339 | 7.4 | 2.06 +Output | 0.0022326 | 0.0022967 | 0.0023608 | 0.1 | 0.00 +Modify | 1.4187 | 1.5349 | 1.6512 | 9.4 | 3.28 +Other | | 1.56 | | | 3.34 + +Nlocal: 1002 ave 1009 max 995 min +Histogram: 1 0 0 0 0 0 0 0 0 1 +Nghost: 8864 ave 8880 max 8848 min +Histogram: 1 0 0 0 0 0 0 0 0 1 +Neighs: 364886 ave 365536 max 364236 min +Histogram: 1 0 0 0 0 0 0 0 0 1 + +Total # of neighbors = 729772 +Ave neighs/atom = 364.158 +Ave special neighs/atom = 2.34032 +Neighbor list builds = 206 +Dangerous builds = 0 +fix 2 all shake 0.0001 10 100 b 4 6 8 10 12 14 18 a 31 + 19 = # of size 2 clusters + 6 = # of size 3 clusters + 3 = # of size 4 clusters + 640 = # of frozen angles +group peptide type <= 12 +84 atoms in group peptide +Total wall time: 0:00:58 diff --git a/examples/USER/misc/temper_npt/log.temper_npt-17Aug17.g++.8.5 b/examples/USER/misc/temper_npt/log.temper_npt-17Aug17.g++.8.5 new file mode 100644 index 0000000000000000000000000000000000000000..078ab383b88cf8f81e138557fd4da331e58a6acb --- /dev/null +++ b/examples/USER/misc/temper_npt/log.temper_npt-17Aug17.g++.8.5 @@ -0,0 +1,211 @@ +LAMMPS (17 Aug 2017) +Processor partition = 5 + using 1 OpenMP thread(s) per MPI task +# Solvated 5-mer peptide +# Demonstrating temper/npt +units real +atom_style full + +pair_style lj/charmm/coul/long 8.0 10.0 10.0 +bond_style harmonic +angle_style charmm +dihedral_style charmm +improper_style harmonic +kspace_style pppm 0.0001 + +read_data data.peptide + orthogonal box = (36.8402 41.0137 29.7681) to (64.2116 68.3851 57.1395) + 1 by 1 by 2 MPI processor grid + reading atoms ... + 2004 atoms + reading velocities ... + 2004 velocities + scanning bonds ... + 3 = max bonds/atom + scanning angles ... + 6 = max angles/atom + scanning dihedrals ... + 14 = max dihedrals/atom + scanning impropers ... + 1 = max impropers/atom + reading bonds ... + 1365 bonds + reading angles ... + 786 angles + reading dihedrals ... + 207 dihedrals + reading impropers ... + 12 impropers + 4 = max # of 1-2 neighbors + 7 = max # of 1-3 neighbors + 14 = max # of 1-4 neighbors + 18 = max # of special neighbors + +neighbor 2.0 bin +neigh_modify delay 5 + +timestep 2.0 + +thermo_style custom step temp epair emol etotal press density +thermo 50 + +variable temper_T world 275 280 285 290 295 300 305 310 +variable rep world 0 1 2 3 4 5 6 7 +fix myfix all npt temp ${temper_T} ${temper_T} 100.0 iso 1 1 1000 +fix myfix all npt temp 300 ${temper_T} 100.0 iso 1 1 1000 +fix myfix all npt temp 300 300 100.0 iso 1 1 1000 +run 500 +PPPM initialization ... +WARNING: Using 12-bit tables for long-range coulomb (../kspace.cpp:321) + G vector (1/distance) = 0.268725 + grid = 15 15 15 + stencil order = 5 + estimated absolute RMS force accuracy = 0.0228209 + estimated relative force accuracy = 6.87243e-05 + using double precision FFTs + 3d grid and FFT values/proc = 6776 1800 +Neighbor list info ... + update every 1 steps, delay 5 steps, check yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 12 + ghost atom cutoff = 12 + binsize = 6, bins = 5 5 5 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair lj/charmm/coul/long, perpetual + attributes: half, newton on + pair build: half/bin/newton + stencil: half/bin/3d/newton + bin: standard +Per MPI rank memory allocation (min/avg/max) = 15.94 | 15.95 | 15.96 Mbytes +Step Temp E_pair E_mol TotEng Press Density + 0 190.0857 -6442.768 70.391457 -5237.4579 20361.998 0.98480122 + 50 223.82864 -7673.9648 1224.4256 -5113.1564 -23877.062 0.99513919 + 100 259.08234 -6958.1555 482.71038 -4928.5779 12773.331 1.010442 + 150 281.33296 -6859.1832 472.14676 -4707.3204 7185.467 1.0189247 + 200 278.97145 -7183.3765 1085.5768 -4432.1832 -18068.845 1.0189951 + 250 279.03591 -6351.7829 479.41881 -4206.3627 23082.567 1.0112758 + 300 300.6326 -6884.9027 1026.5309 -4063.426 -13809.886 0.99975981 + 350 305.9627 -6542.2739 749.87415 -3965.6303 1365.919 0.98893682 + 400 300.95813 -6356.16 664.78738 -3894.4833 7945.2634 0.98104761 + 450 305.74067 -6698.3004 1016.1128 -3856.7437 -11928.509 0.97692928 + 500 295.19123 -6343.4664 707.06763 -3873.9411 9895.6164 0.97622451 +Loop time of 11.1232 on 2 procs for 500 steps with 2004 atoms + +Performance: 7.768 ns/day, 3.090 hours/ns, 44.951 timesteps/s +99.0% CPU use with 2 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 7.8133 | 7.8368 | 7.8603 | 0.8 | 70.45 +Bond | 0.088746 | 0.089125 | 0.089505 | 0.1 | 0.80 +Kspace | 1.2047 | 1.2319 | 1.2591 | 2.5 | 11.07 +Neigh | 1.3081 | 1.31 | 1.3119 | 0.2 | 11.78 +Comm | 0.21978 | 0.23832 | 0.25687 | 3.8 | 2.14 +Output | 0.00053644 | 0.00054514 | 0.00055385 | 0.0 | 0.00 +Modify | 0.35216 | 0.38209 | 0.41202 | 4.8 | 3.44 +Other | | 0.03448 | | | 0.31 + +Nlocal: 1002 ave 1003 max 1001 min +Histogram: 1 0 0 0 0 0 0 0 0 1 +Nghost: 8664.5 ave 8679 max 8650 min +Histogram: 1 0 0 0 0 0 0 0 0 1 +Neighs: 350634 ave 352508 max 348761 min +Histogram: 1 0 0 0 0 0 0 0 0 1 + +Total # of neighbors = 701269 +Ave neighs/atom = 349.935 +Ave special neighs/atom = 2.34032 +Neighbor list builds = 52 +Dangerous builds = 0 +temper/npt 2000 100 ${temper_T} myfix 0 58728 1 +temper/npt 2000 100 300 myfix 0 58728 1 +PPPM initialization ... +WARNING: Using 12-bit tables for long-range coulomb (../kspace.cpp:321) + G vector (1/distance) = 0.26848 + grid = 15 15 15 + stencil order = 5 + estimated absolute RMS force accuracy = 0.0230214 + estimated relative force accuracy = 6.93284e-05 + using double precision FFTs + 3d grid and FFT values/proc = 6776 1800 +Per MPI rank memory allocation (min/avg/max) = 15.94 | 15.95 | 15.96 Mbytes +Step Temp E_pair E_mol TotEng Press Density + 500 295.19123 -6343.4702 707.06763 -3873.9449 9895.5638 0.97622451 + 550 302.94979 -6642.4394 911.36179 -3922.2969 -5410.8109 0.97461641 + 600 297.33068 -6551.2919 805.26047 -3970.8 -646.78096 0.97348192 + 650 294.80947 -6578.9544 780.59748 -4038.1786 3293.0695 0.97423526 + 700 286.5511 -6718.4475 944.64841 -4062.9279 -5230.2518 0.97771554 + 750 294.49463 -6602.2482 777.88337 -4066.0662 4142.887 0.9831379 + 800 291.06018 -6664.3537 858.09465 -4068.466 -2624.3753 0.98991103 + 850 293.82285 -6689.8325 860.75951 -4074.7853 -435.3378 0.99623629 + 900 287.38111 -6671.9376 837.28605 -4118.8247 2185.0063 0.99906496 + 950 288.54911 -6783.7293 916.92837 -4144.0005 -2644.9104 0.99578685 + 1000 293.00277 -6687.2173 803.00518 -4134.8207 2220.968 0.98936787 + 1050 301.16902 -6760.9066 892.18697 -4070.5711 -2974.6886 0.98583275 + 1100 309.08554 -6738.1202 875.08899 -4017.6166 921.61791 0.98892607 + 1150 298.58252 -6674.1083 871.86516 -4019.5376 944.64401 0.98978942 + 1200 298.47184 -6760.3869 925.22004 -4053.1221 -798.3384 0.98947798 + 1250 291.12935 -6703.3237 856.27457 -4108.8431 544.44438 0.98937896 + 1300 293.02206 -6830.1194 917.90705 -4162.7058 432.93648 0.98837688 + 1350 282.12152 -6775.1505 898.35169 -4192.3746 -968.85129 0.98738197 + 1400 284.13008 -6684.782 848.15892 -4140.2066 -909.72792 0.98855422 + 1450 283.07781 -6640.5698 889.19504 -4061.241 120.67624 0.99460963 + 1500 299.32129 -6744.9956 896.07755 -4061.8016 -500.39827 1.002166 + 1550 290.06547 -6763.7114 921.50981 -4110.3475 1970.1344 1.0045278 + 1600 294.31127 -6824.5224 885.60385 -4181.7147 -1450.5522 1.0021664 + 1650 289.14351 -6837.8321 902.7679 -4208.7148 -36.719886 1.0010127 + 1700 284.10327 -6855.1076 903.75736 -4255.0939 984.04625 1.0006878 + 1750 280.04385 -6904.9119 918.67229 -4314.2203 -1431.4015 1.0004286 + 1800 281.68654 -6818.1122 846.72598 -4289.5591 520.17793 1.0021784 + 1850 286.93593 -6902.5226 934.50057 -4254.8531 -793.77873 1.0057534 + 1900 292.37295 -6876.9829 886.20947 -4245.1425 1563.8149 1.0119959 + 1950 278.61219 -6897.2099 935.36125 -4298.3772 -498.09374 1.0139668 + 2000 278.03754 -6936.4809 912.07762 -4364.3628 -475.0812 1.0140553 + 2050 280.17142 -6999.6889 907.21584 -4419.692 -483.15119 1.0159549 + 2100 275.01317 -7045.1909 966.49463 -4436.7129 516.29126 1.0192102 + 2150 275.36286 -6985.3989 879.47784 -4461.8499 -33.602001 1.0183533 + 2200 276.11062 -7026.4293 936.6898 -4441.2038 -1270.9384 1.0213402 + 2250 283.79417 -7011.4884 977.04948 -4340.0281 -178.52826 1.0266779 + 2300 276.26548 -6911.7259 909.12359 -4353.142 1380.5761 1.0284968 + 2350 279.5692 -7056.2521 960.48747 -4426.5792 202.29669 1.0282733 + 2400 270.18994 -6995.9308 932.57134 -4450.1735 -1921.755 1.0261097 + 2450 273.41894 -6999.2367 955.71826 -4411.0536 -376.50236 1.0265598 + 2500 279.53567 -6995.6096 941.2382 -4385.3862 300.84721 1.0300527 +Loop time of 46.7426 on 2 procs for 2000 steps with 2004 atoms + +Performance: 7.394 ns/day, 3.246 hours/ns, 42.788 timesteps/s +98.6% CPU use with 2 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 32.111 | 32.533 | 32.954 | 7.4 | 69.60 +Bond | 0.36551 | 0.36836 | 0.3712 | 0.5 | 0.79 +Kspace | 4.9203 | 5.3226 | 5.7249 | 17.4 | 11.39 +Neigh | 5.2618 | 5.2695 | 5.2772 | 0.3 | 11.27 +Comm | 0.89292 | 0.96319 | 1.0335 | 7.2 | 2.06 +Output | 0.0021534 | 0.0022 | 0.0022466 | 0.1 | 0.00 +Modify | 1.4108 | 1.5304 | 1.65 | 9.7 | 3.27 +Other | | 0.7537 | | | 1.61 + +Nlocal: 1002 ave 1023 max 981 min +Histogram: 1 0 0 0 0 0 0 0 0 1 +Nghost: 8955 ave 9060 max 8850 min +Histogram: 1 0 0 0 0 0 0 0 0 1 +Neighs: 370398 ave 378514 max 362281 min +Histogram: 1 0 0 0 0 0 0 0 0 1 + +Total # of neighbors = 740795 +Ave neighs/atom = 369.658 +Ave special neighs/atom = 2.34032 +Neighbor list builds = 200 +Dangerous builds = 0 +fix 2 all shake 0.0001 10 100 b 4 6 8 10 12 14 18 a 31 + 19 = # of size 2 clusters + 6 = # of size 3 clusters + 3 = # of size 4 clusters + 640 = # of frozen angles +group peptide type <= 12 +84 atoms in group peptide +Total wall time: 0:00:58 diff --git a/examples/USER/misc/temper_npt/log.temper_npt-17Aug17.g++.8.6 b/examples/USER/misc/temper_npt/log.temper_npt-17Aug17.g++.8.6 new file mode 100644 index 0000000000000000000000000000000000000000..7dbd6f612870a62a826e445eeb4d3491e9f5233c --- /dev/null +++ b/examples/USER/misc/temper_npt/log.temper_npt-17Aug17.g++.8.6 @@ -0,0 +1,211 @@ +LAMMPS (17 Aug 2017) +Processor partition = 6 + using 1 OpenMP thread(s) per MPI task +# Solvated 5-mer peptide +# Demonstrating temper/npt +units real +atom_style full + +pair_style lj/charmm/coul/long 8.0 10.0 10.0 +bond_style harmonic +angle_style charmm +dihedral_style charmm +improper_style harmonic +kspace_style pppm 0.0001 + +read_data data.peptide + orthogonal box = (36.8402 41.0137 29.7681) to (64.2116 68.3851 57.1395) + 1 by 1 by 2 MPI processor grid + reading atoms ... + 2004 atoms + reading velocities ... + 2004 velocities + scanning bonds ... + 3 = max bonds/atom + scanning angles ... + 6 = max angles/atom + scanning dihedrals ... + 14 = max dihedrals/atom + scanning impropers ... + 1 = max impropers/atom + reading bonds ... + 1365 bonds + reading angles ... + 786 angles + reading dihedrals ... + 207 dihedrals + reading impropers ... + 12 impropers + 4 = max # of 1-2 neighbors + 7 = max # of 1-3 neighbors + 14 = max # of 1-4 neighbors + 18 = max # of special neighbors + +neighbor 2.0 bin +neigh_modify delay 5 + +timestep 2.0 + +thermo_style custom step temp epair emol etotal press density +thermo 50 + +variable temper_T world 275 280 285 290 295 300 305 310 +variable rep world 0 1 2 3 4 5 6 7 +fix myfix all npt temp ${temper_T} ${temper_T} 100.0 iso 1 1 1000 +fix myfix all npt temp 305 ${temper_T} 100.0 iso 1 1 1000 +fix myfix all npt temp 305 305 100.0 iso 1 1 1000 +run 500 +PPPM initialization ... +WARNING: Using 12-bit tables for long-range coulomb (../kspace.cpp:321) + G vector (1/distance) = 0.268725 + grid = 15 15 15 + stencil order = 5 + estimated absolute RMS force accuracy = 0.0228209 + estimated relative force accuracy = 6.87243e-05 + using double precision FFTs + 3d grid and FFT values/proc = 6776 1800 +Neighbor list info ... + update every 1 steps, delay 5 steps, check yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 12 + ghost atom cutoff = 12 + binsize = 6, bins = 5 5 5 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair lj/charmm/coul/long, perpetual + attributes: half, newton on + pair build: half/bin/newton + stencil: half/bin/3d/newton + bin: standard +Per MPI rank memory allocation (min/avg/max) = 15.94 | 15.95 | 15.96 Mbytes +Step Temp E_pair E_mol TotEng Press Density + 0 190.0857 -6442.768 70.391457 -5237.4579 20361.998 0.98480122 + 50 224.19041 -7672.2342 1225.2069 -5108.4844 -23898.427 0.9949719 + 100 260.06304 -6952.1103 483.25334 -4916.1343 12800.907 1.01007 + 150 282.69922 -6844.8106 472.2939 -4684.6433 7274.1665 1.0184736 + 200 283.07925 -7183.2915 1096.3999 -4396.7493 -18428.465 1.0184431 + 250 283.61722 -6327.2943 475.82271 -4158.1172 23020.286 1.0107938 + 300 301.71789 -6811.4188 1004.2807 -4005.7126 -14017.258 0.99889097 + 350 311.03337 -6506.7477 765.85039 -3883.8531 763.04925 0.98860598 + 400 317.775 -6392.1118 666.55754 -3828.2587 7828.8386 0.98148763 + 450 303.51186 -6657.5211 1017.7742 -3827.6103 -12704.511 0.97662555 + 500 296.45297 -6312.4144 719.53961 -3822.8838 8469.2935 0.97646495 +Loop time of 10.8893 on 2 procs for 500 steps with 2004 atoms + +Performance: 7.934 ns/day, 3.025 hours/ns, 45.917 timesteps/s +99.4% CPU use with 2 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 7.7295 | 7.7574 | 7.7852 | 1.0 | 71.24 +Bond | 0.088436 | 0.089395 | 0.090353 | 0.3 | 0.82 +Kspace | 1.1269 | 1.16 | 1.1931 | 3.1 | 10.65 +Neigh | 1.2353 | 1.2377 | 1.2402 | 0.2 | 11.37 +Comm | 0.21436 | 0.23339 | 0.25242 | 3.9 | 2.14 +Output | 0.00055766 | 0.00056684 | 0.00057602 | 0.0 | 0.01 +Modify | 0.34907 | 0.37832 | 0.40758 | 4.8 | 3.47 +Other | | 0.03245 | | | 0.30 + +Nlocal: 1002 ave 1007 max 997 min +Histogram: 1 0 0 0 0 0 0 0 0 1 +Nghost: 8685.5 ave 8750 max 8621 min +Histogram: 1 0 0 0 0 0 0 0 0 1 +Neighs: 350698 ave 351936 max 349459 min +Histogram: 1 0 0 0 0 0 0 0 0 1 + +Total # of neighbors = 701395 +Ave neighs/atom = 349.998 +Ave special neighs/atom = 2.34032 +Neighbor list builds = 50 +Dangerous builds = 0 +temper/npt 2000 100 ${temper_T} myfix 0 58728 1 +temper/npt 2000 100 305 myfix 0 58728 1 +PPPM initialization ... +WARNING: Using 12-bit tables for long-range coulomb (../kspace.cpp:321) + G vector (1/distance) = 0.268487 + grid = 15 15 15 + stencil order = 5 + estimated absolute RMS force accuracy = 0.0230158 + estimated relative force accuracy = 6.93113e-05 + using double precision FFTs + 3d grid and FFT values/proc = 6776 1800 +Per MPI rank memory allocation (min/avg/max) = 15.94 | 15.95 | 15.96 Mbytes +Step Temp E_pair E_mol TotEng Press Density + 500 296.45297 -6312.4159 719.53961 -3822.8853 8469.2763 0.97646495 + 550 303.89646 -6501.1353 863.14038 -3823.5621 -2928.2904 0.98030197 + 600 309.76597 -6524.1714 843.08835 -3831.606 -871.10399 0.98376234 + 650 299.00298 -6442.6354 805.96883 -3851.4506 3266.5866 0.98567102 + 700 309.92953 -6599.5125 902.18135 -3846.8775 -4895.7743 0.9877618 + 750 310.03453 -6432.9154 800.77648 -3781.0583 4312.9432 0.98939465 + 800 313.79353 -6482.8645 876.10518 -3733.2354 459.73904 0.9883653 + 850 308.0727 -6473.4666 891.51665 -3742.5826 -1645.1499 0.9829221 + 900 312.68166 -6456.773 820.7786 -3769.109 2194.8957 0.97822936 + 950 305.94065 -6546.0017 902.97469 -3816.3892 -2693.7918 0.97584317 + 1000 298.40902 -6464.4155 886.05639 -3796.6893 592.46618 0.9764313 + 1050 308.71394 -6480.6485 854.83864 -3782.6139 843.67793 0.97834087 + 1100 309.34645 -6526.4283 897.66923 -3781.7868 -297.6956 0.98046791 + 1150 303.65216 -6540.534 858.53216 -3869.0276 623.45838 0.98196819 + 1200 298.33689 -6610.5403 897.10898 -3932.1923 -1107.1097 0.98263413 + 1250 302.10596 -6587.4254 875.62056 -3908.0623 1244.7382 0.98273784 + 1300 316.19456 -6618.7414 894.33747 -3836.5445 -1399.1921 0.98252654 + 1350 302.28789 -6625.1555 938.19878 -3882.1279 -57.818071 0.98275084 + 1400 301.42717 -6602.0706 858.72022 -3943.6606 1462.1175 0.97898596 + 1450 299.43442 -6655.6584 893.68574 -3974.1807 383.13882 0.97462948 + 1500 301.76848 -6653.4568 896.33172 -3955.3975 -756.22375 0.96978565 + 1550 310.10887 -6664.8547 953.35222 -3859.9781 -1305.0786 0.96689812 + 1600 297.16621 -6510.7805 907.3012 -3829.2299 992.41943 0.96413868 + 1650 295.71413 -6598.1621 990.18935 -3842.3931 -2049.7934 0.96131396 + 1700 303.88264 -6629.5417 931.13321 -3884.0582 -630.7683 0.96321179 + 1750 300.85941 -6666.8007 941.42895 -3929.0719 357.85887 0.96822524 + 1800 299.34518 -6674.9694 932.15075 -3955.5595 -914.97614 0.97074982 + 1850 298.12166 -6610.2338 910.63353 -3919.6462 1390.5062 0.97402953 + 1900 307.86527 -6647.8711 931.49082 -3878.2514 -1629.6931 0.97542316 + 1950 305.04604 -6616.6069 937.35845 -3857.952 858.37861 0.97770539 + 2000 305.41215 -6597.2293 916.75863 -3856.9883 763.6265 0.98001111 + 2050 294.66502 -6632.9068 1035.729 -3837.8618 -2248.1496 0.98430681 + 2100 300.5948 -6569.1213 956.22884 -3818.1724 291.3677 0.99188971 + 2150 305.73836 -6623.7387 1021.1569 -3777.1519 -603.41468 1.0003649 + 2200 316.63308 -6681.0402 972.23429 -3818.3283 948.97143 1.0073383 + 2250 306.36381 -6653.5361 947.42424 -3876.9476 900.19264 1.010245 + 2300 301.9961 -6699.2583 1022.4799 -3873.6918 -499.39887 1.0119712 + 2350 307.25098 -6642.8345 970.32723 -3838.0461 366.40507 1.0118686 + 2400 311.79941 -6675.2645 1030.8811 -3782.7656 -1083.5459 1.0113601 + 2450 309.31064 -6630.1585 958.35981 -3825.0401 471.39091 1.0099697 + 2500 301.87691 -6689.2603 967.59935 -3919.2859 -854.45149 1.0097679 +Loop time of 46.7431 on 2 procs for 2000 steps with 2004 atoms + +Performance: 7.394 ns/day, 3.246 hours/ns, 42.787 timesteps/s +99.4% CPU use with 2 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 31.029 | 31.472 | 31.916 | 7.9 | 67.33 +Bond | 0.36154 | 0.36249 | 0.36343 | 0.2 | 0.78 +Kspace | 4.7001 | 5.1269 | 5.5536 | 18.8 | 10.97 +Neigh | 5.311 | 5.3205 | 5.33 | 0.4 | 11.38 +Comm | 0.86766 | 0.94238 | 1.0171 | 7.7 | 2.02 +Output | 0.0022194 | 0.0022837 | 0.0023479 | 0.1 | 0.00 +Modify | 1.4059 | 1.5219 | 1.638 | 9.4 | 3.26 +Other | | 1.994 | | | 4.27 + +Nlocal: 1002 ave 1012 max 992 min +Histogram: 1 0 0 0 0 0 0 0 0 1 +Nghost: 8807.5 ave 8818 max 8797 min +Histogram: 1 0 0 0 0 0 0 0 0 1 +Neighs: 363096 ave 369482 max 356711 min +Histogram: 1 0 0 0 0 0 0 0 0 1 + +Total # of neighbors = 726193 +Ave neighs/atom = 362.372 +Ave special neighs/atom = 2.34032 +Neighbor list builds = 207 +Dangerous builds = 0 +fix 2 all shake 0.0001 10 100 b 4 6 8 10 12 14 18 a 31 + 19 = # of size 2 clusters + 6 = # of size 3 clusters + 3 = # of size 4 clusters + 640 = # of frozen angles +group peptide type <= 12 +84 atoms in group peptide +Total wall time: 0:00:58 diff --git a/examples/USER/misc/temper_npt/log.temper_npt-17Aug17.g++.8.7 b/examples/USER/misc/temper_npt/log.temper_npt-17Aug17.g++.8.7 new file mode 100644 index 0000000000000000000000000000000000000000..b6757e1f1bf14e13a0dfb715ddce0132ef99a366 --- /dev/null +++ b/examples/USER/misc/temper_npt/log.temper_npt-17Aug17.g++.8.7 @@ -0,0 +1,211 @@ +LAMMPS (17 Aug 2017) +Processor partition = 7 + using 1 OpenMP thread(s) per MPI task +# Solvated 5-mer peptide +# Demonstrating temper/npt +units real +atom_style full + +pair_style lj/charmm/coul/long 8.0 10.0 10.0 +bond_style harmonic +angle_style charmm +dihedral_style charmm +improper_style harmonic +kspace_style pppm 0.0001 + +read_data data.peptide + orthogonal box = (36.8402 41.0137 29.7681) to (64.2116 68.3851 57.1395) + 1 by 1 by 2 MPI processor grid + reading atoms ... + 2004 atoms + reading velocities ... + 2004 velocities + scanning bonds ... + 3 = max bonds/atom + scanning angles ... + 6 = max angles/atom + scanning dihedrals ... + 14 = max dihedrals/atom + scanning impropers ... + 1 = max impropers/atom + reading bonds ... + 1365 bonds + reading angles ... + 786 angles + reading dihedrals ... + 207 dihedrals + reading impropers ... + 12 impropers + 4 = max # of 1-2 neighbors + 7 = max # of 1-3 neighbors + 14 = max # of 1-4 neighbors + 18 = max # of special neighbors + +neighbor 2.0 bin +neigh_modify delay 5 + +timestep 2.0 + +thermo_style custom step temp epair emol etotal press density +thermo 50 + +variable temper_T world 275 280 285 290 295 300 305 310 +variable rep world 0 1 2 3 4 5 6 7 +fix myfix all npt temp ${temper_T} ${temper_T} 100.0 iso 1 1 1000 +fix myfix all npt temp 310 ${temper_T} 100.0 iso 1 1 1000 +fix myfix all npt temp 310 310 100.0 iso 1 1 1000 +run 500 +PPPM initialization ... +WARNING: Using 12-bit tables for long-range coulomb (../kspace.cpp:321) + G vector (1/distance) = 0.268725 + grid = 15 15 15 + stencil order = 5 + estimated absolute RMS force accuracy = 0.0228209 + estimated relative force accuracy = 6.87243e-05 + using double precision FFTs + 3d grid and FFT values/proc = 6776 1800 +Neighbor list info ... + update every 1 steps, delay 5 steps, check yes + max neighbors/atom: 2000, page size: 100000 + master list distance cutoff = 12 + ghost atom cutoff = 12 + binsize = 6, bins = 5 5 5 + 1 neighbor lists, perpetual/occasional/extra = 1 0 0 + (1) pair lj/charmm/coul/long, perpetual + attributes: half, newton on + pair build: half/bin/newton + stencil: half/bin/3d/newton + bin: standard +Per MPI rank memory allocation (min/avg/max) = 15.94 | 15.95 | 15.96 Mbytes +Step Temp E_pair E_mol TotEng Press Density + 0 190.0857 -6442.768 70.391457 -5237.4579 20361.998 0.98480122 + 50 224.5362 -7670.5503 1225.9519 -5103.9909 -23918.514 0.99480995 + 100 261.00419 -6946.2961 483.78483 -4904.1694 12827.309 1.0097087 + 150 284.14624 -6832.0094 472.66187 -4662.8346 7354.8252 1.0180355 + 200 284.05862 -7160.8537 1102.3553 -4362.5087 -18524.276 1.0178951 + 250 290.82577 -6319.5357 471.77841 -4111.3638 22989.86 1.0099523 + 300 306.50487 -6809.5465 1015.3715 -3964.1684 -13215.763 0.99625687 + 350 319.20654 -6502.4307 761.98704 -3834.601 -965.94424 0.98284646 + 400 316.81299 -6295.1539 646.79195 -3756.8102 8469.8917 0.97675631 + 450 312.90373 -6639.6427 1048.7063 -3722.7251 -13014.646 0.97486033 + 500 319.55848 -6335.5865 712.00927 -3715.6334 9980.2286 0.97468964 +Loop time of 10.7877 on 2 procs for 500 steps with 2004 atoms + +Performance: 8.009 ns/day, 2.997 hours/ns, 46.349 timesteps/s +99.1% CPU use with 2 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 7.6698 | 7.7211 | 7.7724 | 1.8 | 71.57 +Bond | 0.085352 | 0.086755 | 0.088159 | 0.5 | 0.80 +Kspace | 1.089 | 1.1417 | 1.1944 | 4.9 | 10.58 +Neigh | 1.2554 | 1.2554 | 1.2554 | 0.0 | 11.64 +Comm | 0.16438 | 0.17539 | 0.1864 | 2.6 | 1.63 +Output | 0.00045967 | 0.0004642 | 0.00046873 | 0.0 | 0.00 +Modify | 0.35006 | 0.37517 | 0.40028 | 4.1 | 3.48 +Other | | 0.0317 | | | 0.29 + +Nlocal: 1002 ave 1004 max 1000 min +Histogram: 1 0 0 0 0 0 0 0 0 1 +Nghost: 8709.5 ave 8714 max 8705 min +Histogram: 1 0 0 0 0 0 0 0 0 1 +Neighs: 350398 ave 352725 max 348070 min +Histogram: 1 0 0 0 0 0 0 0 0 1 + +Total # of neighbors = 700795 +Ave neighs/atom = 349.698 +Ave special neighs/atom = 2.34032 +Neighbor list builds = 51 +Dangerous builds = 0 +temper/npt 2000 100 ${temper_T} myfix 0 58728 1 +temper/npt 2000 100 310 myfix 0 58728 1 +PPPM initialization ... +WARNING: Using 12-bit tables for long-range coulomb (../kspace.cpp:321) + G vector (1/distance) = 0.268436 + grid = 15 15 15 + stencil order = 5 + estimated absolute RMS force accuracy = 0.0230577 + estimated relative force accuracy = 6.94376e-05 + using double precision FFTs + 3d grid and FFT values/proc = 6776 1800 +Per MPI rank memory allocation (min/avg/max) = 15.94 | 15.95 | 15.96 Mbytes +Step Temp E_pair E_mol TotEng Press Density + 500 319.55848 -6335.5878 712.00927 -3715.6347 9980.2224 0.97468964 + 550 312.3068 -6517.9692 882.51888 -3770.8031 -4737.1103 0.97368346 + 600 306.74828 -6500.9408 860.97959 -3808.5014 -1687.6369 0.97333001 + 650 309.25363 -6453.3615 753.23233 -3853.711 4484.0534 0.97330212 + 700 305.22336 -6644.7434 922.38867 -3899.9996 -5823.8028 0.97262421 + 750 297.24363 -6480.4086 771.41874 -3934.2782 5025.8889 0.97337406 + 800 300.89643 -6587.4079 835.06282 -3955.8242 -1517.9426 0.97460241 + 850 305.43206 -6685.1173 846.71999 -4014.7961 -1788.398 0.97836973 + 900 289.95008 -6574.8681 806.12799 -4037.575 2604.847 0.98232784 + 950 299.22424 -6671.7556 898.72395 -3986.4946 -2702.719 0.98919804 + 1000 305.3932 -6576.089 826.21317 -3926.5066 2254.7456 0.99471125 + 1050 304.62574 -6619.698 893.18161 -3907.7293 -1010.7916 0.99551385 + 1100 304.13778 -6603.0961 846.91376 -3940.3087 -211.63132 0.99359493 + 1150 285.80722 -6557.1116 859.12907 -3991.5526 1777.6534 0.99165538 + 1200 295.20871 -6612.8101 855.05738 -3995.1906 -389.55216 0.98957199 + 1250 301.4547 -6623.3355 907.78288 -3915.6984 1193.6428 0.98887879 + 1300 302.29836 -6545.5769 862.86619 -3877.8194 443.76145 0.9853829 + 1350 309.29624 -6539.3158 878.22476 -3814.4185 -769.46378 0.98002173 + 1400 311.28962 -6582.4295 939.53596 -3784.3195 -239.11773 0.97952655 + 1450 307.46833 -6597.7591 922.88062 -3839.1196 453.60414 0.98288752 + 1500 308.8234 -6660.3138 910.39719 -3906.0672 356.0472 0.98507945 + 1550 297.42322 -6596.3955 938.61921 -3881.9924 -883.10576 0.98730686 + 1600 309.492 -6649.4174 963.57197 -3838.0041 470.91335 0.99194955 + 1650 309.46921 -6602.6445 958.19972 -3796.7395 1417.6814 0.99437216 + 1700 308.27043 -6575.0156 941.02926 -3793.4384 -445.78985 0.99171728 + 1750 306.31262 -6515.703 929.60371 -3757.2406 944.20045 0.98661702 + 1800 308.63008 -6484.7465 959.53268 -3682.5186 333.02755 0.98504191 + 1850 316.69569 -6520.4677 975.02618 -3654.5901 -835.64735 0.98329409 + 1900 316.03266 -6531.6456 948.03331 -3696.7196 -745.03047 0.98236945 + 1950 308.97313 -6562.2733 955.48033 -3762.0496 -1147.5825 0.983921 + 2000 305.67836 -6611.4675 991.3364 -3795.0594 -2361.1127 0.98852677 + 2050 312.66709 -6687.3067 980.96042 -3839.5479 -244.80211 0.99714887 + 2100 307.23751 -6664.4853 963.74125 -3866.3633 268.84485 1.0050595 + 2150 296.36081 -6633.5455 966.74219 -3897.3626 -741.15958 1.0135557 + 2200 306.79331 -6709.7668 989.09713 -3888.9411 -108.31295 1.0211476 + 2250 310.62715 -6713.5021 973.14019 -3885.7431 1576.0539 1.0235204 + 2300 304.34901 -6675.1811 1001.4509 -3856.5955 -481.96378 1.0180933 + 2350 300.55584 -6592.7909 993.96783 -3804.3356 114.74351 1.0116595 + 2400 307.16641 -6626.7049 984.70783 -3808.0408 620.2875 1.0087872 + 2450 301.62279 -6643.7063 978.76012 -3864.0884 72.614095 1.0085247 + 2500 307.17634 -6691.4794 975.63125 -3881.8326 495.45555 1.0099428 +Loop time of 46.7465 on 2 procs for 2000 steps with 2004 atoms + +Performance: 7.393 ns/day, 3.246 hours/ns, 42.784 timesteps/s +99.1% CPU use with 2 MPI tasks x 1 OpenMP threads + +MPI task timing breakdown: +Section | min time | avg time | max time |%varavg| %total +--------------------------------------------------------------- +Pair | 31.19 | 31.703 | 32.216 | 9.1 | 67.82 +Bond | 0.35397 | 0.35463 | 0.35528 | 0.1 | 0.76 +Kspace | 4.3783 | 4.8922 | 5.4062 | 23.2 | 10.47 +Neigh | 5.2885 | 5.2889 | 5.2893 | 0.0 | 11.31 +Comm | 0.67571 | 0.71687 | 0.75803 | 4.9 | 1.53 +Output | 0.0019109 | 0.0019529 | 0.0019948 | 0.1 | 0.00 +Modify | 1.4216 | 1.5185 | 1.6154 | 7.9 | 3.25 +Other | | 2.271 | | | 4.86 + +Nlocal: 1002 ave 1010 max 994 min +Histogram: 1 0 0 0 0 0 0 0 0 1 +Nghost: 8811.5 ave 8832 max 8791 min +Histogram: 1 0 0 0 0 0 0 0 0 1 +Neighs: 363080 ave 367967 max 358193 min +Histogram: 1 0 0 0 0 0 0 0 0 1 + +Total # of neighbors = 726160 +Ave neighs/atom = 362.355 +Ave special neighs/atom = 2.34032 +Neighbor list builds = 207 +Dangerous builds = 0 +fix 2 all shake 0.0001 10 100 b 4 6 8 10 12 14 18 a 31 + 19 = # of size 2 clusters + 6 = # of size 3 clusters + 3 = # of size 4 clusters + 640 = # of frozen angles +group peptide type <= 12 +84 atoms in group peptide +Total wall time: 0:00:58 diff --git a/lib/gpu/Install.py b/lib/gpu/Install.py index 6ea2159de5821b5765f9731812d0862eef143707..13d7ad157ef6435c5c6f03e743ccdd1bd2d6fa63 100644 --- a/lib/gpu/Install.py +++ b/lib/gpu/Install.py @@ -9,8 +9,8 @@ import sys,os,subprocess # help message help = """ -Syntax from src dir: make lib-gpu args="-m machine -h hdir -a arch -p precision -e esuffix -m -o osuffix" -Syntax from lib dir: python Install.py -m machine -h hdir -a arch -p precision -e esuffix -m -o osuffix +Syntax from src dir: make lib-gpu args="-m machine -h hdir -a arch -p precision -e esuffix -b -o osuffix" +Syntax from lib dir: python Install.py -m machine -h hdir -a arch -p precision -e esuffix -b -o osuffix specify one or more options, order does not matter diff --git a/lib/kokkos/CHANGELOG.md b/lib/kokkos/CHANGELOG.md index 3fe9e46111b9f858d84e4579c8b026ae37dda472..43d3f17d634eacb38cf1f017afb9fea5706ac7cb 100644 --- a/lib/kokkos/CHANGELOG.md +++ b/lib/kokkos/CHANGELOG.md @@ -1,5 +1,22 @@ # Change Log +## [2.04.00](https://github.com/kokkos/kokkos/tree/2.04.00) (2017-08-16) +[Full Changelog](https://github.com/kokkos/kokkos/compare/2.03.13...2.04.00) + +**Implemented enhancements:** + +- Added ROCm backend to support AMD GPUs +- Kokkos::complex\ behaves slightly differently from std::complex\ [\#1011](https://github.com/kokkos/kokkos/issues/1011) +- Kokkos::Experimental::Crs constructor arguments were in the wrong order [\#992](https://github.com/kokkos/kokkos/issues/992) +- Work graph construction ease-of-use (one lambda for count and fill) [\#991](https://github.com/kokkos/kokkos/issues/991) +- when\_all returns pointer of futures (improved interface) [\#990](https://github.com/kokkos/kokkos/issues/990) +- Allow assignment of LayoutLeft to LayoutRight or vice versa for rank-0 Views [\#594](https://github.com/kokkos/kokkos/issues/594) +- Changed the meaning of Kokkos\_ENABLE\_CXX11\_DISPATCH\_LAMBDA [\#1035](https://github.com/kokkos/kokkos/issues/1035) + +**Fixed bugs:** + +- memory pool default constructor does not properly set member variables. [\#1007](https://github.com/kokkos/kokkos/issues/1007) + ## [2.03.13](https://github.com/kokkos/kokkos/tree/2.03.13) (2017-07-27) [Full Changelog](https://github.com/kokkos/kokkos/compare/2.03.05...2.03.13) diff --git a/lib/kokkos/Makefile.kokkos b/lib/kokkos/Makefile.kokkos index d2967cf9a3fe51d5335e50969f31368e71cbad07..b8236e8fd11d4a2a1b8123d16d9287697192bdad 100644 --- a/lib/kokkos/Makefile.kokkos +++ b/lib/kokkos/Makefile.kokkos @@ -4,10 +4,16 @@ KOKKOS_PATH=../../lib/kokkos CXXFLAGS=$(CCFLAGS) -# Options: Cuda,OpenMP,Pthreads,Qthreads,Serial +# Options: Cuda,ROCm,OpenMP,Pthreads,Qthreads,Serial KOKKOS_DEVICES ?= "OpenMP" #KOKKOS_DEVICES ?= "Pthreads" -# Options: KNC,SNB,HSW,Kepler,Kepler30,Kepler32,Kepler35,Kepler37,Maxwell,Maxwell50,Maxwell52,Maxwell53,Pascal60,Pascal61,ARMv80,ARMv81,ARMv8-ThunderX,BGQ,Power7,Power8,Power9,KNL,BDW,SKX +# Options: +# Intel: KNC,KNL,SNB,HSW,BDW,SKX +# NVIDIA: Kepler,Kepler30,Kepler32,Kepler35,Kepler37,Maxwell,Maxwell50,Maxwell52,Maxwell53,Pascal60,Pascal61 +# ARM: ARMv80,ARMv81,ARMv8-ThunderX +# IBM: BGQ,Power7,Power8,Power9 +# AMD-GPUS: Kaveri,Carrizo,Fiji,Vega +# AMD-CPUS: AMDAVX,Ryzen,Epyc KOKKOS_ARCH ?= "" # Options: yes,no KOKKOS_DEBUG ?= "no" @@ -43,8 +49,8 @@ KOKKOS_INTERNAL_CUDA_USE_UVM := $(strip $(shell echo $(KOKKOS_CUDA_OPTIONS) | gr KOKKOS_INTERNAL_CUDA_USE_RELOC := $(strip $(shell echo $(KOKKOS_CUDA_OPTIONS) | grep "rdc" | wc -l)) KOKKOS_INTERNAL_CUDA_USE_LAMBDA := $(strip $(shell echo $(KOKKOS_CUDA_OPTIONS) | grep "enable_lambda" | wc -l)) + # Check for Kokkos Host Execution Spaces one of which must be on. -KOKKOS_INTERNAL_USE_OPENMPTARGET := $(strip $(shell echo $(KOKKOS_DEVICES) | grep OpenMPTarget | wc -l)) KOKKOS_INTERNAL_USE_OPENMP := $(strip $(shell echo $(subst OpenMPTarget,,$(KOKKOS_DEVICES)) | grep OpenMP | wc -l)) KOKKOS_INTERNAL_USE_PTHREADS := $(strip $(shell echo $(KOKKOS_DEVICES) | grep Pthread | wc -l)) KOKKOS_INTERNAL_USE_QTHREADS := $(strip $(shell echo $(KOKKOS_DEVICES) | grep Qthreads | wc -l)) @@ -60,6 +66,8 @@ endif # Check for other Execution Spaces. KOKKOS_INTERNAL_USE_CUDA := $(strip $(shell echo $(KOKKOS_DEVICES) | grep Cuda | wc -l)) +KOKKOS_INTERNAL_USE_ROCM := $(strip $(shell echo $(KOKKOS_DEVICES) | grep ROCm | wc -l)) +KOKKOS_INTERNAL_USE_OPENMPTARGET := $(strip $(shell echo $(KOKKOS_DEVICES) | grep OpenMPTarget | wc -l)) ifeq ($(KOKKOS_INTERNAL_USE_CUDA), 1) KOKKOS_INTERNAL_NVCC_PATH := $(shell which nvcc) @@ -87,6 +95,7 @@ ifneq ($(MPICH_CXX),) endif KOKKOS_INTERNAL_COMPILER_CLANG := $(strip $(shell $(CXX) --version 2>&1 | grep clang | wc -l)) KOKKOS_INTERNAL_COMPILER_APPLE_CLANG := $(strip $(shell $(CXX) --version 2>&1 | grep "apple-darwin" | wc -l)) +KOKKOS_INTERNAL_COMPILER_HCC := $(strip $(shell $(CXX) --version 2>&1 | grep HCC | wc -l)) ifeq ($(KOKKOS_INTERNAL_COMPILER_CLANG), 2) KOKKOS_INTERNAL_COMPILER_CLANG = 1 @@ -99,6 +108,10 @@ endif ifeq ($(KOKKOS_INTERNAL_COMPILER_APPLE_CLANG), 1) KOKKOS_INTERNAL_COMPILER_CLANG = 0 endif +# AMD HCC passes both clang and hcc test so turn off clang +ifeq ($(KOKKOS_INTERNAL_COMPILER_HCC), 1) + KOKKOS_INTENAL_COMPILER_CLANG = 0 +endif ifeq ($(KOKKOS_INTERNAL_COMPILER_CLANG), 1) KOKKOS_INTERNAL_COMPILER_CLANG_VERSION := $(shell clang --version | grep version | cut -d ' ' -f3 | tr -d '.') @@ -183,8 +196,12 @@ else ifeq ($(KOKKOS_INTERNAL_COMPILER_CRAY), 1) KOKKOS_INTERNAL_CXX11_FLAG := -hstd=c++11 else - KOKKOS_INTERNAL_CXX11_FLAG := --std=c++11 - KOKKOS_INTERNAL_CXX1Z_FLAG := --std=c++1z + ifeq ($(KOKKOS_INTERNAL_COMPILER_HCC), 1) + KOKKOS_INTERNAL_CXX11_FLAG := + else + KOKKOS_INTERNAL_CXX11_FLAG := --std=c++11 + KOKKOS_INTERNAL_CXX1Z_FLAG := --std=c++1z + endif endif endif endif @@ -259,6 +276,13 @@ KOKKOS_INTERNAL_USE_ARCH_IBM := $(strip $(shell echo $(KOKKOS_INTERNAL_USE_ARCH_ # AMD based. KOKKOS_INTERNAL_USE_ARCH_AMDAVX := $(strip $(shell echo $(KOKKOS_ARCH) | grep AMDAVX | wc -l)) +KOKKOS_INTERNAL_USE_ARCH_RYZEN := $(strip $(shell echo $(KOKKOS_ARCH) | grep Ryzen | wc -l)) +KOKKOS_INTERNAL_USE_ARCH_EPYC := $(strip $(shell echo $(KOKKOS_ARCH) | grep Epyc | wc -l)) +KOKKOS_INTERNAL_USE_ARCH_KAVERI := $(strip $(shell echo $(KOKKOS_ARCH) | grep Kaveri | wc -l)) +KOKKOS_INTERNAL_USE_ARCH_CARRIZO := $(strip $(shell echo $(KOKKOS_ARCH) | grep Carrizo | wc -l)) +KOKKOS_INTERNAL_USE_ARCH_FIJI := $(strip $(shell echo $(KOKKOS_ARCH) | grep Fiji | wc -l)) +KOKKOS_INTERNAL_USE_ARCH_VEGA := $(strip $(shell echo $(KOKKOS_ARCH) | grep Vega | wc -l)) +KOKKOS_INTERNAL_USE_ARCH_GFX901 := $(strip $(shell echo $(KOKKOS_ARCH) | grep gfx901 | wc -l)) # Any AVX? KOKKOS_INTERNAL_USE_ARCH_SSE42 := $(strip $(shell echo $(KOKKOS_INTERNAL_USE_ARCH_WSM) | bc )) @@ -271,6 +295,7 @@ KOKKOS_INTERNAL_USE_ARCH_AVX512XEON := $(strip $(shell echo $(KOKKOS_INTERNAL_US KOKKOS_INTERNAL_USE_ISA_X86_64 := $(strip $(shell echo $(KOKKOS_INTERNAL_USE_ARCH_WSM)+$(KOKKOS_INTERNAL_USE_ARCH_SNB)+$(KOKKOS_INTERNAL_USE_ARCH_HSW)+$(KOKKOS_INTERNAL_USE_ARCH_BDW)+$(KOKKOS_INTERNAL_USE_ARCH_KNL)+$(KOKKOS_INTERNAL_USE_ARCH_SKX) | bc )) KOKKOS_INTERNAL_USE_ISA_KNC := $(strip $(shell echo $(KOKKOS_INTERNAL_USE_ARCH_KNC) | bc )) KOKKOS_INTERNAL_USE_ISA_POWERPCLE := $(strip $(shell echo $(KOKKOS_INTERNAL_USE_ARCH_POWER8)+$(KOKKOS_INTERNAL_USE_ARCH_POWER9) | bc )) +KOKKOS_INTERNAL_USE_ISA_POWERPCBE := $(strip $(shell echo $(KOKKOS_INTERNAL_USE_ARCH_POWER7) | bc )) # Decide whether we can support transactional memory KOKKOS_INTERNAL_USE_TM := $(strip $(shell echo $(KOKKOS_INTERNAL_USE_ARCH_BDW)+$(KOKKOS_INTERNAL_USE_ARCH_SKX) | bc )) @@ -319,8 +344,12 @@ ifeq ($(KOKKOS_INTERNAL_USE_CUDA), 1) tmp := $(shell echo "\#define KOKKOS_HAVE_CUDA 1" >> KokkosCore_config.tmp ) endif +ifeq ($(KOKKOS_INTERNAL_USE_ROCM), 1) + tmp := $(shell echo '\#define KOKKOS_ENABLE_ROCM 1' >> KokkosCore_config.tmp) +endif + ifeq ($(KOKKOS_INTERNAL_USE_OPENMPTARGET), 1) - tmp := $(shell echo '\#define KOKKOS_ENABLE_OPENMPTARGET 1' >> KokkosCore_config.tmp) + tmp := $(shell echo '\#define KOKKOS_ENABLE_OPENMPTARGET 1' >> KokkosCore_config.tmp) endif ifeq ($(KOKKOS_INTERNAL_USE_OPENMP), 1) @@ -363,6 +392,12 @@ ifeq ($(KOKKOS_INTERNAL_USE_ISA_POWERPCLE), 1) tmp := $(shell echo "\#endif" >> KokkosCore_config.tmp ) endif +ifeq ($(KOKKOS_INTERNAL_USE_ISA_POWERPCBE), 1) + tmp := $(shell echo "\#ifndef __CUDA_ARCH__" >> KokkosCore_config.tmp ) + tmp := $(shell echo "\#define KOKKOS_USE_ISA_POWERPCBE" >> KokkosCore_config.tmp ) + tmp := $(shell echo "\#endif" >> KokkosCore_config.tmp ) +endif + tmp := $(shell echo "/* General Settings */" >> KokkosCore_config.tmp) ifeq ($(KOKKOS_INTERNAL_ENABLE_CXX11), 1) KOKKOS_CXXFLAGS += $(KOKKOS_INTERNAL_CXX11_FLAG) @@ -561,6 +596,18 @@ ifeq ($(KOKKOS_INTERNAL_USE_ARCH_AVX), 1) endif endif +ifeq ($(KOKKOS_INTERNAL_USE_ARCH_POWER7), 1) + tmp := $(shell echo "\#define KOKKOS_ARCH_POWER7 1" >> KokkosCore_config.tmp ) + + ifeq ($(KOKKOS_INTERNAL_COMPILER_PGI), 1) + + else + # Assume that this is a really a GNU compiler or it could be XL on P8. + KOKKOS_CXXFLAGS += -mcpu=power7 -mtune=power7 + KOKKOS_LDFLAGS += -mcpu=power7 -mtune=power7 + endif +endif + ifeq ($(KOKKOS_INTERNAL_USE_ARCH_POWER8), 1) tmp := $(shell echo "\#define KOKKOS_ARCH_POWER8 1" >> KokkosCore_config.tmp ) @@ -742,7 +789,49 @@ ifeq ($(KOKKOS_INTERNAL_USE_CUDA), 1) endif endif +# Figure out the architecture flag for ROCm. +ifeq ($(KOKKOS_INTERNAL_USE_ROCM), 1) + # Lets start with adding architecture defines + ifeq ($(KOKKOS_INTERNAL_USE_ARCH_KAVERI), 1) + tmp := $(shell echo "\#define KOKKOS_ARCH_ROCM 701" >> KokkosCore_config.tmp ) + tmp := $(shell echo "\#define KOKKOS_ARCH_KAVERI 1" >> KokkosCore_config.tmp ) + KOKKOS_INTERNAL_ROCM_ARCH_FLAG := --amdgpu-target=gfx701 + endif + ifeq ($(KOKKOS_INTERNAL_USE_ARCH_CARRIZO), 1) + tmp := $(shell echo "\#define KOKKOS_ARCH_ROCM 801" >> KokkosCore_config.tmp ) + tmp := $(shell echo "\#define KOKKOS_ARCH_CARRIZO 1" >> KokkosCore_config.tmp ) + KOKKOS_INTERNAL_ROCM_ARCH_FLAG := --amdgpu-target=gfx801 + endif + ifeq ($(KOKKOS_INTERNAL_USE_ARCH_FIJI), 1) + tmp := $(shell echo "\#define KOKKOS_ARCH_ROCM 803" >> KokkosCore_config.tmp ) + tmp := $(shell echo "\#define KOKKOS_ARCH_FIJI 1" >> KokkosCore_config.tmp ) + KOKKOS_INTERNAL_ROCM_ARCH_FLAG := --amdgpu-target=gfx803 + endif + ifeq ($(KOKKOS_INTERNAL_USE_ARCH_VEGA), 1) + tmp := $(shell echo "\#define KOKKOS_ARCH_ROCM 900" >> KokkosCore_config.tmp ) + tmp := $(shell echo "\#define KOKKOS_ARCH_VEGA 1" >> KokkosCore_config.tmp ) + KOKKOS_INTERNAL_ROCM_ARCH_FLAG := --amdgpu-target=gfx900 + endif + ifeq ($(KOKKOS_INTERNAL_USE_ARCH_GFX901), 1) + tmp := $(shell echo "\#define KOKKOS_ARCH_ROCM 901" >> KokkosCore_config.tmp ) + tmp := $(shell echo "\#define KOKKOS_ARCH_GFX901 1" >> KokkosCore_config.tmp ) + KOKKOS_INTERNAL_ROCM_ARCH_FLAG := --amdgpu-target=gfx901 + endif + + + KOKKOS_INTERNAL_HCC_PATH := $(shell which $(CXX)) + ROCM_HCC_PATH ?= $(KOKKOS_INTERNAL_HCC_PATH:/bin/clang++=) + + KOKKOS_CXXFLAGS += $(shell $(ROCM_HCC_PATH)/bin/hcc-config --cxxflags) + KOKKOS_LDFLAGS += $(shell $(ROCM_HCC_PATH)/bin/hcc-config --ldflags) -lhc_am -lm + KOKKOS_LDFLAGS += $(KOKKOS_INTERNAL_ROCM_ARCH_FLAG) + + KOKKOS_SRC += $(wildcard $(KOKKOS_PATH)/core/src/ROCm/*.cpp) + KOKKOS_HEADERS += $(wildcard $(KOKKOS_PATH)/core/src/ROCm/*.hpp) +endif + KOKKOS_INTERNAL_LS_CONFIG := $(shell ls KokkosCore_config.h 2>&1) + ifeq ($(KOKKOS_INTERNAL_LS_CONFIG), KokkosCore_config.h) KOKKOS_INTERNAL_NEW_CONFIG := $(strip $(shell diff KokkosCore_config.h KokkosCore_config.tmp | grep define | wc -l)) else diff --git a/lib/kokkos/Makefile.targets b/lib/kokkos/Makefile.targets index a9341a907c15009eb270c1b44bb4074f8f1f8cb5..964ec966d5ab458b5c09b647bb9040d72f937921 100644 --- a/lib/kokkos/Makefile.targets +++ b/lib/kokkos/Makefile.targets @@ -42,6 +42,17 @@ Kokkos_Cuda_Locks.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_PATH)/core/src/Cuda/Kokkos_C $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_PATH)/core/src/Cuda/Kokkos_Cuda_Locks.cpp endif +ifeq ($(KOKKOS_INTERNAL_USE_ROCM), 1) +Kokkos_ROCm_Exec.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_PATH)/core/src/ROCm/Kokkos_ROCm_Exec.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_PATH)/core/src/ROCm/Kokkos_ROCm_Exec.cpp +Kokkos_ROCm_Space.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_PATH)/core/src/ROCm/Kokkos_ROCm_Space.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_PATH)/core/src/ROCm/Kokkos_ROCm_Space.cpp +Kokkos_ROCm_Task.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_PATH)/core/src/ROCm/Kokkos_ROCm_Task.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_PATH)/core/src/ROCm/Kokkos_ROCm_Task.cpp +Kokkos_ROCm_Impl.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_PATH)/core/src/ROCm/Kokkos_ROCm_Impl.cpp + $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_PATH)/core/src/ROCm/Kokkos_ROCm_Impl.cpp +endif + ifeq ($(KOKKOS_INTERNAL_USE_PTHREADS), 1) Kokkos_ThreadsExec_base.o: $(KOKKOS_CPP_DEPENDS) $(KOKKOS_PATH)/core/src/Threads/Kokkos_ThreadsExec_base.cpp $(CXX) $(KOKKOS_CPPFLAGS) $(KOKKOS_CXXFLAGS) $(CXXFLAGS) -c $(KOKKOS_PATH)/core/src/Threads/Kokkos_ThreadsExec_base.cpp diff --git a/lib/kokkos/README b/lib/kokkos/README index 257a2e5db475dea8c89f1468c42432614c909762..e5ed39ef53dc25804f8663f12f9da2a92cb02e29 100644 --- a/lib/kokkos/README +++ b/lib/kokkos/README @@ -80,6 +80,9 @@ Other compilers working: X86: Cygwin 2.1.0 64bit with gcc 4.9.3 +Limited testing of the following compilers on POWER7+ systems: + GCC 4.8.5 (on RHEL7.1 POWER7+) + Known non-working combinations: Power8: Pthreads backend @@ -171,3 +174,22 @@ Contributions to Kokkos are welcome. In order to do so, please open an issue where a feature request or bug can be discussed. Then issue a pull request with your contribution. Pull requests must be issued against the develop branch. +=========================================================================== +====Citing Kokkos========================================================== +=========================================================================== + +If you publish work which mentions Kokkos, please cite the following paper: + +@article{CarterEdwards20143202, +title = "Kokkos: Enabling manycore performance portability through polymorphic memory access patterns ", +journal = "Journal of Parallel and Distributed Computing ", +volume = "74", +number = "12", +pages = "3202 - 3216", +year = "2014", +note = "Domain-Specific Languages and High-Level Frameworks for High-Performance Computing ", +issn = "0743-7315", +doi = "https://doi.org/10.1016/j.jpdc.2014.07.003", +url = "http://www.sciencedirect.com/science/article/pii/S0743731514001257", +author = "H. Carter Edwards and Christian R. Trott and Daniel Sunderland" +} diff --git a/lib/kokkos/algorithms/src/Kokkos_Random.hpp b/lib/kokkos/algorithms/src/Kokkos_Random.hpp index 42c115b7a5cec83616bff6a6e513d4e2aafd8a3a..9082e47052937dd63a483099ae43a7c65e86bff3 100644 --- a/lib/kokkos/algorithms/src/Kokkos_Random.hpp +++ b/lib/kokkos/algorithms/src/Kokkos_Random.hpp @@ -755,6 +755,12 @@ namespace Kokkos { return Random_XorShift64(state_(i),i); } + // NOTE: state_idx MUST be unique and less than num_states + KOKKOS_INLINE_FUNCTION + Random_XorShift64 get_state(const int state_idx) const { + return Random_XorShift64(state_(state_idx),state_idx); + } + KOKKOS_INLINE_FUNCTION void free_state(const Random_XorShift64& state) const { state_(state.state_idx_) = state.state_; @@ -1010,6 +1016,12 @@ namespace Kokkos { return Random_XorShift1024(state_,p_(i),i); }; + // NOTE: state_idx MUST be unique and less than num_states + KOKKOS_INLINE_FUNCTION + Random_XorShift1024 get_state(const int state_idx) const { + return Random_XorShift1024(state_,p_(state_idx),state_idx); + } + KOKKOS_INLINE_FUNCTION void free_state(const Random_XorShift1024& state) const { for(int i = 0; i<16; i++) @@ -1208,8 +1220,8 @@ Random_XorShift64 Random_XorShift64_Pool::get_state( template<> KOKKOS_INLINE_FUNCTION void Random_XorShift64_Pool::free_state(const Random_XorShift64 &state) const { -#ifdef __CUDA_ARCH__ state_(state.state_idx_) = state.state_; +#ifdef __CUDA_ARCH__ locks_(state.state_idx_) = 0; return; #endif @@ -1244,9 +1256,9 @@ Random_XorShift1024 Random_XorShift1024_Pool::get_st template<> KOKKOS_INLINE_FUNCTION void Random_XorShift1024_Pool::free_state(const Random_XorShift1024 &state) const { -#ifdef __CUDA_ARCH__ for(int i=0; i<16; i++) state_(state.state_idx_,i) = state.state_[i]; +#ifdef __CUDA_ARCH__ locks_(state.state_idx_) = 0; return; #endif diff --git a/lib/kokkos/config/kokkos-promotion.txt b/lib/kokkos/config/kokkos-promotion.txt new file mode 100644 index 0000000000000000000000000000000000000000..d56298b4163c9506ed0b4a551b220752de8449b2 --- /dev/null +++ b/lib/kokkos/config/kokkos-promotion.txt @@ -0,0 +1,140 @@ +Summary: + +- Step 1: Testing Kokkos itself using test_all_sandia + +- Step 2: Testing of Kokkos integrated into Trilinos (config/trilinos-integration/*.sh) + +- Step 3: Locally update CHANGELOG, merge into master, edit config/master_history.txt + +- Step 4: Locally snapshot new master into corresponding Trilinos branch (develop or temporary), push with checking-test-sems.sh + +- Step 5: Push local Kokkos master to GitHub (need Owner approval) + +Steps 1, 2, and 4 include testing that may fail. These failures must be fixed either by pull requests to Kokkos develop, or by creating a new Trilinos branch for parts of Trilinos that must be updated. This is what usually takes the most time. + + +// -------------------------------------------------------------------------------- // + + +Step 1: The following should be repeated on enough machines to cover all +supported compilers. Those machines are: + + kokkos-dev + ??? <- TODO: identify other machines + + 1.1. Clone kokkos develop branch (or just switch to it) + + git clone -b develop git@github.com:kokkos/kokkos.git + cd kokkos + + 1.2. Create a testing directory + + mkdir testing + cd testing + + 1.3. Run the test_all_sandia script with no options to test all compilers + + nohup ../config/test_all_sandia & + tail -f nohup.out # to watch progress + +// -------------------------------------------------------------------------------- // + +Step 2: + 2.1. Build and test Trilinos with 4 different configurations; Run scripts for white and shepard that are provided in kokkos/config/trilinos-integration. These scripts load their own modules/environment, so don't require preparation. You can run all four at the same time, use separate directories for each. + + mkdir serial + cd serial + nohup KOKKOS_PATH/config/trilinos-integration/shepard_jenkins_run_script_serial_intel & + + 2.2. Compare the compile errors and test failures between updated and pristine versions. There may be compile failures that happen in both, tests that fail in both, and there may be tests that only fail some times (thus, rerun tests manually as needed). + +// -------------------------------------------------------------------------------- // + +Step 3: This step should be run on kokkos-dev + + 3.1. If you don't have a GitHub token already, generate one for yourself (this will give you TOKEN): + + https://github.com/settings/tokens + + 3.2. Get a clean copy of the Kokkos develop branch + + git clone -b develop git@github.com:kokkos/kokkos.git + cd kokkos + + 3.3. Generate the initial changelog. Use the most recent tag as OLDTAG (`git tag -l` can show you all tags). The NEWTAG is the new version number, e.g. "2.04.00". RUN THIS OUTSIDE THE KOKKOS SOURCE TREE! + + module load ruby/2.3.1/gcc/5.3.0 + gitthub_changelog_generator kokkos/kokkos --token TOKEN --no-pull-requests --include-labels 'InDevelop' --enhancement-labels 'enhancement,Feature Request' --future-release 'NEWTAG' --between-tags 'NEWTAG,OLDTAG' + cat CHANGELOG.md + + 3.4. Manually cleanup and commit the change log. Pushing to develop requires Owner permission. + (Copy the new section from the generated CHANGELOG.md to KOKKOS_PATH/CHANGELOG.md) + (Make desired changes to CHANGELOG.md to enhance clarity (remove issues not noteworthy)) + (Commit and push the CHANGELOG.md to develop) + + 3.5. Merge develop into master. DO NOT FAST-FORWARD THE MERGE!!!! + + (From kokkos directory): + git checkout master + git merge --no-ff origin/develop + + 3.6. Update the tag in kokkos/config/master_history.txt + + Tag description: MajorNumber.MinorNumber.WeeksSinceMinorNumberUpdate + Tag field widths: #.#.## + date description: month:day:year + date field widths: ##:##:#### + master description: SHA1 of previous master commit (use `git log`?) + develop description: SHA1 of merged develop branch + SHA1 field width: ######## (8 chars) + + # Append to config/master_history.txt: + + tag: 2.03.13 date: 07:27:2017 master: da314444 develop: 29ccb58a + + git commit --amend -a + + + 3.7. Create the new tag: + + git tag -a #.#.## + + (type the following into the tag message (same as for step 4.3)) + tag: #.#.## + date: mm/dd/yyyy + master: sha1 + develop: sha1 + + 3.8. DO NOT PUSH YET !!! + + +// -------------------------------------------------------------------------------- // + +Step 4: This step can be done on any SEMS machine (e.g. kokkos-dev). Actually, the checkin step requires lots of disk space and RAM. Use ceerws1113 if you have access to it. + + 4.1 Clone the Trilinos corresponding branch (or just switch to it) + + git clone -b develop git@github.com:trilinos/Trilinos.git + TRILINOS_PATH=$PWD/Trilinos + + 4.2 Snapshot Kokkos into Trilinos - this requires python/2.7.9 and that both Trilinos and Kokkos be clean - no untracked or modified files. Run the following outside of the Kokkos and Trilinos source trees. + + module load sems-python/2.7.9 + python KOKKOS_PATH/config/snapshot.py KOKKOS_PATH TRILINOS_PATH/packages + + 4.3. Run checkin-test to push to trilinos using the CI build modules (gcc/4.9.3) + + cd TRILINOS_PATH + mkdir CHECKIN + cd CHECKIN + nohup ../cmake/std/sems/checkin-test-sems.sh --do-all --push & + + 4.4. If there are failures, fix and backtrack. Otherwise, go to next step + +// -------------------------------------------------------------------------------- // + +Step 5: Push Kokkos master to GitHub (requires Owner permission). + + cd KOKKOS_PATH + git push --follow-tags origin master + diff --git a/lib/kokkos/config/master_history.txt b/lib/kokkos/config/master_history.txt index 0447db4b2b7bf7638de2ab89d082b4faa6ba2bfe..96b05c02e1fae8d1c4cb9cb914b24786f7b4a1c9 100644 --- a/lib/kokkos/config/master_history.txt +++ b/lib/kokkos/config/master_history.txt @@ -8,3 +8,4 @@ tag: 2.02.15 date: 02:10:2017 master: 8c64cd93 develop: 28dea8b6 tag: 2.03.00 date: 04:25:2017 master: 120d9ce7 develop: 015ba641 tag: 2.03.05 date: 05:27:2017 master: 36b92f43 develop: 79073186 tag: 2.03.13 date: 07:27:2017 master: da314444 develop: 29ccb58a +tag: 2.04.00 date: 08:16:2017 master: 54eb75c0 develop: 32fb8ee1 diff --git a/lib/kokkos/config/test_all_sandia b/lib/kokkos/config/test_all_sandia index 005cd2072132cf50e7d73fa92767a9df5956a0db..e6fcaad2614dc6b19e23b895ebb237ca83d350c5 100755 --- a/lib/kokkos/config/test_all_sandia +++ b/lib/kokkos/config/test_all_sandia @@ -167,7 +167,6 @@ if [ "$MACHINE" = "sems" ]; then "intel/15.0.2 $BASE_MODULE_LIST $INTEL_BUILD_LIST icpc $INTEL_WARNING_FLAGS" "intel/16.0.1 $BASE_MODULE_LIST $INTEL_BUILD_LIST icpc $INTEL_WARNING_FLAGS" "intel/16.0.3 $BASE_MODULE_LIST $INTEL_BUILD_LIST icpc $INTEL_WARNING_FLAGS" - "intel/17.0.1 $BASE_MODULE_LIST $INTEL_BUILD_LIST icpc $INTEL_WARNING_FLAGS" "clang/3.6.1 $BASE_MODULE_LIST $CLANG_BUILD_LIST clang++ $CLANG_WARNING_FLAGS" "clang/3.7.1 $BASE_MODULE_LIST $CLANG_BUILD_LIST clang++ $CLANG_WARNING_FLAGS" "clang/3.8.1 $BASE_MODULE_LIST $CLANG_BUILD_LIST clang++ $CLANG_WARNING_FLAGS" diff --git a/lib/kokkos/core/cmake/KokkosCore_config.h.in b/lib/kokkos/core/cmake/KokkosCore_config.h.in index 621cd54e1c84d954bd32bf69cbe7feeeba77947d..599c6b022409f1446cda3b15b985f080171e57b4 100644 --- a/lib/kokkos/core/cmake/KokkosCore_config.h.in +++ b/lib/kokkos/core/cmake/KokkosCore_config.h.in @@ -1,15 +1,15 @@ -#if !defined(KOKKOS_MACROS_HPP) || defined(KOKKOS_CORE_CONFIG_H) -#error "Don't include KokkosCore_config.h directly; include Kokkos_Macros.hpp instead." -#else -#define KOKKOS_CORE_CONFIG_H -#endif - /* The trivial 'src/build_common.sh' creates a config * that must stay in sync with this file. */ #cmakedefine KOKKOS_FOR_SIERRA -#ifndef KOKKOS_FOR_SIERRA +#if !defined(KOKKOS_FOR_SIERRA) + +#if !defined(KOKKOS_MACROS_HPP) || defined(KOKKOS_CORE_CONFIG_H) +#error "Don't include KokkosCore_config.h directly; include Kokkos_Macros.hpp instead." +#else +#define KOKKOS_CORE_CONFIG_H +#endif #cmakedefine KOKKOS_HAVE_CUDA #cmakedefine KOKKOS_HAVE_OPENMP @@ -93,12 +93,6 @@ #cmakedefine KOKKOS_ARCH_PASCAL60 1 #cmakedefine KOKKOS_ARCH_PASCAL61 1 -// Don't forbid users from defining this macro on the command line, -// but still make sure that CMake logic can control its definition. -#ifndef KOKKOS_HAVE_CXX11_DISPATCH_LAMBDA -#cmakedefine KOKKOS_HAVE_CXX11_DISPATCH_LAMBDA 1 -#endif - // TODO: These are currently not used in Kokkos. Should they be removed? #cmakedefine KOKKOS_HAVE_MPI #cmakedefine KOKKOS_HAVE_CUSPARSE @@ -107,4 +101,4 @@ #cmakedefine KOKKOS_USING_DEPRECATED_VIEW #cmakedefine KOKKOS_HAVE_CXX11 -#endif // KOKKOS_FOR_SIERRA +#endif // !defined(KOKKOS_FOR_SIERRA) diff --git a/lib/kokkos/core/src/CMakeLists.txt b/lib/kokkos/core/src/CMakeLists.txt index 492470d05d07ee5684a04bff54fc103e82708ba9..0d5d97a829488090d8ecd721e13301b494196557 100644 --- a/lib/kokkos/core/src/CMakeLists.txt +++ b/lib/kokkos/core/src/CMakeLists.txt @@ -9,30 +9,6 @@ TRIBITS_ADD_OPTION_AND_DEFINE( ASSERT_DEFINED(${PROJECT_NAME}_ENABLE_CXX11) ASSERT_DEFINED(${PACKAGE_NAME}_ENABLE_CUDA) -# Kokkos_ENABLE_CXX11_DISPATCH_LAMBDA governs whether Kokkos allows -# use of lambdas at the outer level of parallel dispatch (that is, as -# the argument to an outer parallel_for, parallel_reduce, or -# parallel_scan). This works with non-CUDA execution spaces if C++11 -# is enabled. It does not currently work with public releases of -# CUDA. If that changes, please change the default here to ON if CUDA -# and C++11 are ON. -IF (${PROJECT_NAME}_ENABLE_CXX11) - IF (${PACKAGE_NAME}_ENABLE_CUDA) - SET(Kokkos_ENABLE_CXX11_DISPATCH_LAMBDA_DEFAULT OFF) - ELSE () - SET(Kokkos_ENABLE_CXX11_DISPATCH_LAMBDA_DEFAULT ON) - ENDIF () -ELSE () - SET(Kokkos_ENABLE_CXX11_DISPATCH_LAMBDA_DEFAULT OFF) -ENDIF () - -TRIBITS_ADD_OPTION_AND_DEFINE( - Kokkos_ENABLE_CXX11_DISPATCH_LAMBDA - KOKKOS_HAVE_CXX11_DISPATCH_LAMBDA - "Whether Kokkos allows use of lambdas at the outer level of parallel dispatch (that is, as the argument to an outer parallel_for, parallel_reduce, or parallel_scan). This requires C++11. It also does not currently work with public releases of CUDA. As a result, even if C++11 is enabled, this will be OFF by default if CUDA is enabled. If this option is ON, the macro KOKKOS_HAVE_CXX11_DISPATCH_LAMBDA will be defined. For compatibility with Kokkos' Makefile build system, it is also possible to define that macro on the command line." - ${Kokkos_ENABLE_CXX11_DISPATCH_LAMBDA_DEFAULT} - ) - TRIBITS_CONFIGURE_FILE(${PACKAGE_NAME}_config.h) INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR}) diff --git a/lib/kokkos/core/src/Kokkos_Array.hpp b/lib/kokkos/core/src/Kokkos_Array.hpp index abb263b7ccd7d6f82f469d06fadbc2326fe21438..43e6386b54fce21c1053103aa82e540e1b69e6ce 100644 --- a/lib/kokkos/core/src/Kokkos_Array.hpp +++ b/lib/kokkos/core/src/Kokkos_Array.hpp @@ -152,10 +152,10 @@ public: KOKKOS_INLINE_FUNCTION pointer data() { return pointer(0) ; } KOKKOS_INLINE_FUNCTION const_pointer data() const { return const_pointer(0); } - ~Array() = default ; - Array() = default ; - Array( const Array & ) = default ; - Array & operator = ( const Array & ) = default ; + KOKKOS_FUNCTION_DEFAULTED ~Array() = default ; + KOKKOS_FUNCTION_DEFAULTED Array() = default ; + KOKKOS_FUNCTION_DEFAULTED Array( const Array & ) = default ; + KOKKOS_FUNCTION_DEFAULTED Array & operator = ( const Array & ) = default ; // Some supported compilers are not sufficiently C++11 compliant // for default move constructor and move assignment operator. @@ -209,7 +209,7 @@ public: KOKKOS_INLINE_FUNCTION pointer data() { return m_elem ; } KOKKOS_INLINE_FUNCTION const_pointer data() const { return m_elem ; } - ~Array() = default ; + KOKKOS_FUNCTION_DEFAULTED ~Array() = default ; Array() = delete ; Array( const Array & rhs ) = delete ; @@ -278,7 +278,7 @@ public: KOKKOS_INLINE_FUNCTION pointer data() { return m_elem ; } KOKKOS_INLINE_FUNCTION const_pointer data() const { return m_elem ; } - ~Array() = default ; + KOKKOS_FUNCTION_DEFAULTED ~Array() = default ; Array() = delete ; Array( const Array & ) = delete ; diff --git a/lib/kokkos/core/src/Kokkos_Atomic.hpp b/lib/kokkos/core/src/Kokkos_Atomic.hpp index 3c8673c66a4783cf6dabcb6096568cc8cf8f0d7d..54a97a16c1338187e18b54d176d9241f8ba8253c 100644 --- a/lib/kokkos/core/src/Kokkos_Atomic.hpp +++ b/lib/kokkos/core/src/Kokkos_Atomic.hpp @@ -80,6 +80,11 @@ // Compiling NVIDIA device code, must use Cuda atomics: #define KOKKOS_ENABLE_CUDA_ATOMICS + +#elif defined(KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_ROCM_GPU) + +#define KOKKOS_ENABLE_ROCM_ATOMICS + #endif #if ! defined( KOKKOS_ENABLE_GNU_ATOMICS ) && \ @@ -154,6 +159,19 @@ const char * atomic_query_version() } // namespace Kokkos +#if defined( KOKKOS_ENABLE_ROCM ) +#include +namespace Kokkos { +namespace Impl { +extern KOKKOS_INLINE_FUNCTION +bool lock_address_rocm_space(void* ptr); + +extern KOKKOS_INLINE_FUNCTION +void unlock_address_rocm_space(void* ptr); +} +} +#endif + #ifdef _WIN32 #include "impl/Kokkos_Atomic_Windows.hpp" #else diff --git a/lib/kokkos/core/src/Kokkos_Complex.hpp b/lib/kokkos/core/src/Kokkos_Complex.hpp index 1fe964a6d2cf5ae5fa69478c82e83429a762ddf4..26b47a8b749e7340692e5d9a6a13273cb0e0f8f4 100644 --- a/lib/kokkos/core/src/Kokkos_Complex.hpp +++ b/lib/kokkos/core/src/Kokkos_Complex.hpp @@ -107,6 +107,11 @@ public: re_ (val), im_ (0.0) {} + // BUG HCC WORKAROUND + KOKKOS_INLINE_FUNCTION complex( const RealType& re, const RealType& im): + re_ (re), im_ (im) + {} + //! Constructor that takes the real and imaginary parts. template KOKKOS_INLINE_FUNCTION complex (const RealType1& re, const RealType2& im) : @@ -227,6 +232,16 @@ public: return re_; } + //! Set the imaginary part of this complex number. + KOKKOS_INLINE_FUNCTION void imag (RealType v) { + im_ = v; + } + + //! Set the real part of this complex number. + KOKKOS_INLINE_FUNCTION void real (RealType v) { + re_ = v; + } + KOKKOS_INLINE_FUNCTION complex& operator += (const complex& src) { re_ += src.re_; @@ -299,7 +314,7 @@ public: // Scale (by the "1-norm" of y) to avoid unwarranted overflow. // If the real part is +/-Inf and the imaginary part is -/+Inf, // this won't change the result. - const RealType s = ::fabs (y.real ()) + ::fabs (y.imag ()); + const RealType s = std::fabs (y.real ()) + std::fabs (y.imag ()); // If s is 0, then y is zero, so x/y == real(x)/0 + i*imag(x)/0. // In that case, the relation x/y == (x/s) / (y/s) doesn't hold, @@ -537,7 +552,7 @@ operator / (const complex& x, const complex& y) { // Scale (by the "1-norm" of y) to avoid unwarranted overflow. // If the real part is +/-Inf and the imaginary part is -/+Inf, // this won't change the result. - const RealType s = ::fabs (real (y)) + ::fabs (imag (y)); + const RealType s = std::fabs (real (y)) + std::fabs (imag (y)); // If s is 0, then y is zero, so x/y == real(x)/0 + i*imag(x)/0. // In that case, the relation x/y == (x/s) / (y/s) doesn't hold, diff --git a/lib/kokkos/core/src/Kokkos_Core.hpp b/lib/kokkos/core/src/Kokkos_Core.hpp index ddb11d28944d2145dcf46c8bd1511d03732e0d3f..3748c35eb0a52d5c1011f4618c9440cbba3bcf99 100644 --- a/lib/kokkos/core/src/Kokkos_Core.hpp +++ b/lib/kokkos/core/src/Kokkos_Core.hpp @@ -74,6 +74,10 @@ #include #endif +#if defined( KOKKOS_ENABLE_ROCM ) +#include +#endif + #include #include #include diff --git a/lib/kokkos/core/src/Kokkos_Core_fwd.hpp b/lib/kokkos/core/src/Kokkos_Core_fwd.hpp index 8c080f7a8fbd4cc35c39fd0ed601e4d456346001..29001e19eddb4fb48bfad15043684b4884c8a29e 100644 --- a/lib/kokkos/core/src/Kokkos_Core_fwd.hpp +++ b/lib/kokkos/core/src/Kokkos_Core_fwd.hpp @@ -122,6 +122,13 @@ class CudaHostPinnedSpace; ///< Memory space on Host accessible to Cuda GPU class Cuda; ///< Execution space for Cuda GPU #endif +#if defined( KOKKOS_ENABLE_ROCM ) +namespace Experimental { +class ROCmSpace ; ///< Memory space on ROCm GPU +class ROCm ; ///< Execution space for ROCm GPU +} +#endif + template struct Device; @@ -140,6 +147,8 @@ namespace Kokkos { typedef Cuda DefaultExecutionSpace; #elif defined ( KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_OPENMPTARGET ) typedef Experimental::OpenMPTarget DefaultExecutionSpace ; +#elif defined ( KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_ROCM ) + typedef Experimental::ROCm DefaultExecutionSpace ; #elif defined( KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_OPENMP ) typedef OpenMP DefaultExecutionSpace; #elif defined( KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_THREADS ) @@ -185,6 +194,8 @@ namespace Impl { #if defined( KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_CUDA ) && defined( KOKKOS_ENABLE_CUDA ) typedef Kokkos::CudaSpace ActiveExecutionMemorySpace; +#elif defined( KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_ROCM_GPU ) +typedef Kokkos::HostSpace ActiveExecutionMemorySpace ; #elif defined( KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_HOST ) typedef Kokkos::HostSpace ActiveExecutionMemorySpace; #else diff --git a/lib/kokkos/core/src/Kokkos_Crs.hpp b/lib/kokkos/core/src/Kokkos_Crs.hpp index 93b3fa5ca9e479f1a5666b4776257e536e9e73d8..f089c16ad2ca3c71ad7cdf2042e19bee93a7e0ed 100644 --- a/lib/kokkos/core/src/Kokkos_Crs.hpp +++ b/lib/kokkos/core/src/Kokkos_Crs.hpp @@ -98,18 +98,18 @@ public: typedef View row_map_type; typedef View entries_type; - entries_type entries; row_map_type row_map; + entries_type entries; //! Construct an empty view. - Crs () : entries(), row_map() {} + Crs() : row_map(), entries() {} //! Copy constructor (shallow copy). - Crs (const Crs& rhs) : entries (rhs.entries), row_map (rhs.row_map) + Crs(const Crs& rhs) : row_map(rhs.row_map), entries(rhs.entries) {} template - Crs (const EntriesType& entries_,const RowMapType& row_map_) : entries (entries_), row_map (row_map_) + Crs(const RowMapType& row_map_, const EntriesType& entries_) : row_map(row_map_), entries(entries_) {} /** \brief Assign to a view of the rhs array. @@ -117,8 +117,8 @@ public: * then allocated memory is deallocated. */ Crs& operator= (const Crs& rhs) { - entries = rhs.entries; row_map = rhs.row_map; + entries = rhs.entries; return *this; } @@ -151,7 +151,7 @@ void get_crs_transpose_counts( template< class OutCounts, class InCrs> -void get_crs_row_map_from_counts( +typename OutCounts::value_type get_crs_row_map_from_counts( OutCounts& out, InCrs const& in, std::string const& name = "row_map"); @@ -204,18 +204,20 @@ class CrsRowMapFromCounts { using execution_space = typename InCounts::execution_space; using value_type = typename OutRowMap::value_type; using index_type = typename InCounts::size_type; + using last_value_type = Kokkos::View; private: - InCounts in; - OutRowMap out; + InCounts m_in; + OutRowMap m_out; + last_value_type m_last_value; public: KOKKOS_INLINE_FUNCTION void operator()(index_type i, value_type& update, bool final_pass) const { - update += in(i); - if (final_pass) { - out(i + 1) = update; - if (i == 0) { - out(0) = 0; - } + if (i < m_in.size()) { + update += m_in(i); + if (final_pass) m_out(i + 1) = update; + } else if (final_pass) { + m_out(0) = 0; + m_last_value() = update; } } KOKKOS_INLINE_FUNCTION @@ -226,12 +228,16 @@ class CrsRowMapFromCounts { } using self_type = CrsRowMapFromCounts; CrsRowMapFromCounts(InCounts const& arg_in, OutRowMap const& arg_out): - in(arg_in),out(arg_out) { + m_in(arg_in), m_out(arg_out), m_last_value("last_value") { + } + value_type execute() { using policy_type = RangePolicy; using closure_type = Kokkos::Impl::ParallelScan; - closure_type closure(*this, policy_type(0, in.size())); + closure_type closure(*this, policy_type(0, m_in.size() + 1)); closure.execute(); - execution_space::fence(); + auto last_value = Kokkos::create_mirror_view(m_last_value); + Kokkos::deep_copy(last_value, m_last_value); + return last_value(); } }; @@ -297,13 +303,14 @@ void get_crs_transpose_counts( template< class OutRowMap, class InCounts> -void get_crs_row_map_from_counts( +typename OutRowMap::value_type get_crs_row_map_from_counts( OutRowMap& out, InCounts const& in, std::string const& name) { out = OutRowMap(ViewAllocateWithoutInitializing(name), in.size() + 1); Kokkos::Impl::Experimental:: CrsRowMapFromCounts functor(in, out); + return functor.execute(); } template< class DataType, @@ -328,6 +335,65 @@ void transpose_crs( FillCrsTransposeEntries entries_functor(in, out); } +template< class CrsType, + class Functor> +struct CountAndFill { + using data_type = typename CrsType::size_type; + using size_type = typename CrsType::size_type; + using row_map_type = typename CrsType::row_map_type; + using entries_type = typename CrsType::entries_type; + using counts_type = row_map_type; + CrsType m_crs; + Functor m_functor; + counts_type m_counts; + struct Count {}; + KOKKOS_INLINE_FUNCTION void operator()(Count, size_type i) const { + m_counts(i) = m_functor(i, nullptr); + } + struct Fill {}; + KOKKOS_INLINE_FUNCTION void operator()(Fill, size_type i) const { + auto j = m_crs.row_map(i); + data_type* fill = &(m_crs.entries(j)); + m_functor(i, fill); + } + using self_type = CountAndFill; + CountAndFill(CrsType& crs, size_type nrows, Functor const& f): + m_crs(crs), + m_functor(f) + { + using execution_space = typename CrsType::execution_space; + m_counts = counts_type("counts", nrows); + { + using count_policy_type = RangePolicy; + using count_closure_type = + Kokkos::Impl::ParallelFor; + const count_closure_type closure(*this, count_policy_type(0, nrows)); + closure.execute(); + } + auto nentries = Kokkos::Experimental:: + get_crs_row_map_from_counts(m_crs.row_map, m_counts); + m_counts = counts_type(); + m_crs.entries = entries_type("entries", nentries); + { + using fill_policy_type = RangePolicy; + using fill_closure_type = + Kokkos::Impl::ParallelFor; + const fill_closure_type closure(*this, fill_policy_type(0, nrows)); + closure.execute(); + } + crs = m_crs; + } +}; + +template< class CrsType, + class Functor> +void count_and_fill_crs( + CrsType& crs, + typename CrsType::size_type nrows, + Functor const& f) { + Kokkos::Experimental::CountAndFill(crs, nrows, f); +} + }} // namespace Kokkos::Experimental #endif /* #define KOKKOS_CRS_HPP */ diff --git a/lib/kokkos/core/src/Kokkos_Macros.hpp b/lib/kokkos/core/src/Kokkos_Macros.hpp index 250ef6630ad6ec294782121e2eab866e89b434d9..7137eaae4b7d8336e269b0f946c10a7cf4e62515 100644 --- a/lib/kokkos/core/src/Kokkos_Macros.hpp +++ b/lib/kokkos/core/src/Kokkos_Macros.hpp @@ -96,6 +96,14 @@ //---------------------------------------------------------------------------- +#if defined(KOKKOS_ENABLE_SERIAL) || defined(KOKKOS_ENABLE_THREADS) || \ + defined(KOKKOS_ENABLE_OPENMP) || defined(KOKKOS_ENABLE_QTHREADS) || \ + defined(KOKKOS_ENABLE_ROCM) || defined(KOKKOS_ENABLE_OPENMPTARGET) + #define KOKKOS_INTERNAL_ENABLE_NON_CUDA_BACKEND +#endif + +#define KOKKOS_ENABLE_CXX11_DISPATCH_LAMBDA + #if defined( KOKKOS_ENABLE_CUDA ) && defined( __CUDACC__ ) // Compiling with a CUDA compiler. // @@ -133,6 +141,9 @@ #if ( CUDA_VERSION < 8000 ) && defined( __NVCC__ ) #define KOKKOS_LAMBDA [=]__device__ + #if defined( KOKKOS_INTERNAL_ENABLE_NON_CUDA_BACKEND ) + #undef KOKKOS_ENABLE_CXX11_DISPATCH_LAMBDA + #endif #else #define KOKKOS_LAMBDA [=]__host__ __device__ @@ -141,16 +152,13 @@ #endif #endif - #define KOKKOS_ENABLE_CXX11_DISPATCH_LAMBDA 1 - #endif -#endif // #if defined( KOKKOS_ENABLE_CUDA ) && defined( __CUDACC__ ) - -#if defined( KOKKOS_ENABLE_CXX11_DISPATCH_LAMBDA ) - // Cuda version 8.0 still needs the functor wrapper - #if /* ( CUDA_VERSION < 8000 ) && */ defined( __NVCC__ ) + #if defined( __NVCC__ ) #define KOKKOS_IMPL_NEED_FUNCTOR_WRAPPER - #endif -#endif + #endif + #else // !defined(KOKKOS_ENABLE_CUDA_LAMBDA) + #undef KOKKOS_ENABLE_CXX11_DISPATCH_LAMBDA + #endif // !defined(KOKKOS_ENABLE_CUDA_LAMBDA) +#endif // #if defined( KOKKOS_ENABLE_CUDA ) && defined( __CUDACC__ ) //---------------------------------------------------------------------------- // Language info: C++, CUDA, OPENMP @@ -161,8 +169,20 @@ #define KOKKOS_FORCEINLINE_FUNCTION __device__ __host__ __forceinline__ #define KOKKOS_INLINE_FUNCTION __device__ __host__ inline #define KOKKOS_FUNCTION __device__ __host__ + #ifdef KOKKOS_COMPILER_CLANG + #define KOKKOS_FUNCTION_DEFAULTED KOKKOS_FUNCTION + #endif #endif // #if defined( __CUDA_ARCH__ ) +#if defined( KOKKOS_ENABLE_ROCM ) && defined( __HCC__ ) + + #define KOKKOS_FORCEINLINE_FUNCTION __attribute__((amp,cpu)) inline + #define KOKKOS_INLINE_FUNCTION __attribute__((amp,cpu)) inline + #define KOKKOS_FUNCTION __attribute__((amp,cpu)) + #define KOKKOS_LAMBDA [=] __attribute__((amp,cpu)) + #define KOKKOS_FUNCTION_DEFAULTED KOKKOS_FUNCTION +#endif + #if defined( _OPENMP ) // Compiling with OpenMP. // The value of _OPENMP is an integer value YYYYMM @@ -179,15 +199,6 @@ // Host code is compiled again with another compiler. // Device code is compile to 'ptx'. #define KOKKOS_COMPILER_NVCC __NVCC__ -#else - #if !defined( KOKKOS_ENABLE_CXX11_DISPATCH_LAMBDA ) - #if !defined( KOKKOS_ENABLE_CUDA ) // Compiling with clang for Cuda does not work with LAMBDAs either - // CUDA (including version 6.5) does not support giving lambdas as - // arguments to global functions. Thus its not currently possible - // to dispatch lambdas from the host. - #define KOKKOS_ENABLE_CXX11_DISPATCH_LAMBDA 1 - #endif - #endif #endif // #if defined( __NVCC__ ) #if !defined( KOKKOS_LAMBDA ) @@ -321,6 +332,10 @@ //#define KOKKOS_ENABLE_PRAGMA_LOOPCOUNT 1 //#define KOKKOS_ENABLE_PRAGMA_VECTOR 1 //#define KOKKOS_ENABLE_PRAGMA_SIMD 1 + + #if ! defined( KOKKOS_ENABLE_ASM ) + #define KOKKOS_ENABLE_ASM 1 + #endif #endif //---------------------------------------------------------------------------- @@ -397,6 +412,10 @@ #define KOKKOS_FUNCTION /**/ #endif +#if !defined( KOKKOS_FUNCTION_DEFAULTED ) + #define KOKKOS_FUNCTION_DEFAULTED /**/ +#endif + //---------------------------------------------------------------------------- // Define empty macro for restrict if necessary: @@ -424,6 +443,7 @@ // There is zero or one default execution space specified. #if 1 < ( ( defined( KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_CUDA ) ? 1 : 0 ) + \ + ( defined( KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_ROCM ) ? 1 : 0 ) + \ ( defined( KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_OPENMPTARGET ) ? 1 : 0 ) + \ ( defined( KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_OPENMP ) ? 1 : 0 ) + \ ( defined( KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_THREADS ) ? 1 : 0 ) + \ @@ -435,6 +455,7 @@ // If default is not specified then chose from enabled execution spaces. // Priority: CUDA, OPENMP, THREADS, QTHREADS, SERIAL #if defined( KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_CUDA ) +#elif defined( KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_ROCM ) #elif defined( KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_OPENMPTARGET ) #elif defined( KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_OPENMP ) #elif defined( KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_THREADS ) @@ -442,6 +463,8 @@ #elif defined( KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_SERIAL ) #elif defined( KOKKOS_ENABLE_CUDA ) #define KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_CUDA +#elif defined( KOKKOS_ENABLE_ROCM ) + #define KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_ROCM #elif defined( KOKKOS_ENABLE_OPENMPTARGET ) #define KOKKOS_ENABLE_DEFAULT_DEVICE_TYPE_OPENMPTARGET #elif defined( KOKKOS_ENABLE_OPENMP ) @@ -459,6 +482,8 @@ #if defined( __CUDACC__ ) && defined( __CUDA_ARCH__ ) && defined( KOKKOS_ENABLE_CUDA ) #define KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_CUDA +#elif defined( __HCC__ ) && defined( __HCC_ACCELERATOR__ ) && defined( KOKKOS_ENABLE_ROCM ) + #define KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_ROCM_GPU #else #define KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_HOST #endif diff --git a/lib/kokkos/core/src/Kokkos_MemoryPool.hpp b/lib/kokkos/core/src/Kokkos_MemoryPool.hpp index 1da936067d59e269ce43fb6a9e65cfe16220cc2e..4ba5812f9e93e19060a8fa8cb20e94b1fb6864f7 100644 --- a/lib/kokkos/core/src/Kokkos_MemoryPool.hpp +++ b/lib/kokkos/core/src/Kokkos_MemoryPool.hpp @@ -233,12 +233,24 @@ public: //-------------------------------------------------------------------------- - MemoryPool() = default ; MemoryPool( MemoryPool && ) = default ; MemoryPool( const MemoryPool & ) = default ; MemoryPool & operator = ( MemoryPool && ) = default ; MemoryPool & operator = ( const MemoryPool & ) = default ; + MemoryPool() + : m_tracker() + , m_sb_state_array(0) + , m_sb_state_size(0) + , m_sb_size_lg2(0) + , m_max_block_size_lg2(0) + , m_min_block_size_lg2(0) + , m_sb_count(0) + , m_hint_offset(0) + , m_data_offset(0) + , m_unused_padding(0) + {} + /**\brief Allocate a memory pool from 'memspace'. * * The memory pool will have at least 'min_total_alloc_size' bytes diff --git a/lib/kokkos/core/src/Kokkos_Parallel_Reduce.hpp b/lib/kokkos/core/src/Kokkos_Parallel_Reduce.hpp index 9df6d4ba097d62191214e27578c656bf21ea70a5..c392fc5b9ab76f19769b5d68b8b65cbd8340db54 100644 --- a/lib/kokkos/core/src/Kokkos_Parallel_Reduce.hpp +++ b/lib/kokkos/core/src/Kokkos_Parallel_Reduce.hpp @@ -1016,7 +1016,7 @@ parallel_reduce( std::string const & arg_label //------------------------------ - #if (KOKKOS_ENABLE_PROFILING) + #if defined(KOKKOS_ENABLE_PROFILING) uint64_t kpID = 0; if(Kokkos::Profiling::profileLibraryLoaded()) { Kokkos::Profiling::beginParallelReduce(arg_label, 0, &kpID); @@ -1042,7 +1042,7 @@ parallel_reduce( std::string const & arg_label //------------------------------ - #if (KOKKOS_ENABLE_PROFILING) + #if defined(KOKKOS_ENABLE_PROFILING) if(Kokkos::Profiling::profileLibraryLoaded()) { Kokkos::Profiling::endParallelReduce(kpID); } diff --git a/lib/kokkos/core/src/Kokkos_ROCm.hpp b/lib/kokkos/core/src/Kokkos_ROCm.hpp new file mode 100644 index 0000000000000000000000000000000000000000..b13b0b01dea588e3ddf2fd57a7be5b24005d4498 --- /dev/null +++ b/lib/kokkos/core/src/Kokkos_ROCm.hpp @@ -0,0 +1,220 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#ifndef KOKKOS_ROCM_HPP +#define KOKKOS_ROCM_HPP + +#include + +#if defined( KOKKOS_ENABLE_ROCM ) +#include +//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/*--------------------------------------------------------------------------*/ + +#include +#include +#include + +#if defined( __HCC_ACCELERATOR__ ) + +using namespace ::Concurrency::precise_math ; + +#endif + +/*--------------------------------------------------------------------------*/ + +namespace Kokkos { +namespace Impl { +class ROCmExec ; +} // namespace Impl +} // namespace Kokkos + +/*--------------------------------------------------------------------------*/ + +namespace Kokkos { +namespace Experimental { +/// \class ROCm +/// \brief Kokkos device for multicore processors in the host memory space. +class ROCm { +public: + //------------------------------------ + //! \name Type declarations that all Kokkos devices must provide. + //@{ + + //! Tag this class as a kokkos execution space + typedef ROCm execution_space ; + typedef ROCmSpace memory_space ; + typedef Kokkos::Device device_type; + + typedef LayoutLeft array_layout ; + typedef HostSpace::size_type size_type ; + + typedef ScratchMemorySpace< ROCm > scratch_memory_space ; + + ~ROCm() {} + ROCm(); +// explicit ROCm( const int instance_id ); + + ROCm( ROCm && ) = default ; + ROCm( const ROCm & ) = default ; + ROCm & operator = ( ROCm && ) = default ; + ROCm & operator = ( const ROCm & ) = default ; + + + //@} + //------------------------------------ + //! \name Functions that all Kokkos devices must implement. + //@{ + + KOKKOS_INLINE_FUNCTION static int in_parallel() { +#if defined( __HCC_ACCELERATOR__ ) + return true; +#else + return false; +#endif + } + + /** \brief Set the device in a "sleep" state. */ + static bool sleep() ; + + /** \brief Wake the device from the 'sleep' state. A noop for OpenMP. */ + static bool wake() ; + + /** \brief Wait until all dispatched functors complete. A noop for OpenMP. */ + static void fence() ; + + /// \brief Print configuration information to the given output stream. + static void print_configuration( std::ostream & , const bool detail = false ); + + /// \brief Free any resources being consumed by the device. + static void finalize() ; + + /** \brief Initialize the device. + * + */ + struct SelectDevice { + int rocm_device_id ; + SelectDevice() : rocm_device_id(1) {} + explicit SelectDevice( int id ) : rocm_device_id( id+1 ) {} + }; + + int rocm_device() const { return m_device ; } + bool isAPU(); + bool isAPU(int device); + + static void initialize( const SelectDevice = SelectDevice()); + + static int is_initialized(); + +// static size_type device_arch(); + +// static size_type detect_device_count(); + + + static int concurrency() ; + static const char* name(); +private: + int m_device ; + +}; +} +} // namespace Kokkos + +namespace Kokkos { +namespace Impl { + +template<> +struct MemorySpaceAccess + < Kokkos::Experimental::ROCmSpace + , Kokkos::Experimental::ROCm::scratch_memory_space + > +{ + enum { assignable = false }; + enum { accessible = true }; + enum { deepcopy = false }; +}; + +template<> +struct VerifyExecutionCanAccessMemorySpace + < Kokkos::Experimental::ROCm::memory_space + , Kokkos::Experimental::ROCm::scratch_memory_space + > +{ + enum { value = true }; + KOKKOS_INLINE_FUNCTION static void verify( void ) { } + KOKKOS_INLINE_FUNCTION static void verify( const void * ) { } +}; + +template<> +struct VerifyExecutionCanAccessMemorySpace + < Kokkos::HostSpace + , Kokkos::Experimental::ROCm::scratch_memory_space + > +{ + enum { value = false }; + inline static void verify( void ) { Experimental::ROCmSpace::access_error(); } + inline static void verify( const void * p ) { Experimental::ROCmSpace::access_error(p); } +}; +} // namespace Experimental +} // namespace Kokkos + + +#include +#include + +#endif +#endif + + diff --git a/lib/kokkos/core/src/Kokkos_ROCmSpace.hpp b/lib/kokkos/core/src/Kokkos_ROCmSpace.hpp new file mode 100644 index 0000000000000000000000000000000000000000..dce6a3cb3f838c56aba2de6f73a775b0586ea353 --- /dev/null +++ b/lib/kokkos/core/src/Kokkos_ROCmSpace.hpp @@ -0,0 +1,622 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#ifndef KOKKOS_ROCMSPACE_HPP +#define KOKKOS_ROCMSPACE_HPP + +#include + +#if defined( KOKKOS_ENABLE_ROCM ) + +#include +#include +#include + +#include + + +/*--------------------------------------------------------------------------*/ + +namespace Kokkos { +namespace Experimental { +/** \brief ROCm on-device memory management */ + +class ROCmSpace { +public: + + //! Tag this class as a kokkos memory space + typedef ROCmSpace memory_space ; + typedef Kokkos::Experimental::ROCm execution_space ; + typedef Kokkos::Device device_type; + + typedef unsigned int size_type ; + + /*--------------------------------*/ + + ROCmSpace(); + ROCmSpace( ROCmSpace && rhs ) = default ; + ROCmSpace( const ROCmSpace & rhs ) = default ; + ROCmSpace & operator = ( ROCmSpace && rhs ) = default ; + ROCmSpace & operator = ( const ROCmSpace & rhs ) = default ; + ~ROCmSpace() = default ; + + /**\brief Allocate untracked memory in the rocm space */ + void * allocate( const size_t arg_alloc_size ) const ; + + /**\brief Deallocate untracked memory in the rocm space */ + void deallocate( void * const arg_alloc_ptr + , const size_t arg_alloc_size ) const ; + + /**\brief Return Name of the MemorySpace */ + static constexpr const char* name() { return m_name; }; + + /*--------------------------------*/ + /** \brief Error reporting for HostSpace attempt to access ROCmSpace */ + static void access_error(); + static void access_error( const void * const ); + +private: + + int m_device ; ///< Which ROCm device + + static constexpr const char* m_name = "ROCm"; + friend class Kokkos::Impl::SharedAllocationRecord< Kokkos::Experimental::ROCmSpace , void > ; +}; + +} // namespace Experimental + +namespace Impl { + +void * rocm_device_allocate(int); +void * rocm_hostpinned_allocate(int); +void rocm_device_free(void * ); + +/// \brief Initialize lock array for arbitrary size atomics. +/// +/// Arbitrary atomics are implemented using a hash table of locks +/// where the hash value is derived from the address of the +/// object for which an atomic operation is performed. +/// This function initializes the locks to zero (unset). +void init_lock_arrays_rocm_space(); + +/// \brief Retrieve the pointer to the lock array for arbitrary size atomics. +/// +/// Arbitrary atomics are implemented using a hash table of locks +/// where the hash value is derived from the address of the +/// object for which an atomic operation is performed. +/// This function retrieves the lock array pointer. +/// If the array is not yet allocated it will do so. +int* atomic_lock_array_rocm_space_ptr(bool deallocate = false); + +/// \brief Retrieve the pointer to the scratch array for team and thread private global memory. +/// +/// Team and Thread private scratch allocations in +/// global memory are aquired via locks. +/// This function retrieves the lock array pointer. +/// If the array is not yet allocated it will do so. +int* scratch_lock_array_rocm_space_ptr(bool deallocate = false); + +/// \brief Retrieve the pointer to the scratch array for unique identifiers. +/// +/// Unique identifiers in the range 0-ROCm::concurrency +/// are provided via locks. +/// This function retrieves the lock array pointer. +/// If the array is not yet allocated it will do so. +int* threadid_lock_array_rocm_space_ptr(bool deallocate = false); +} +} // namespace Kokkos + +/*--------------------------------------------------------------------------*/ +/*--------------------------------------------------------------------------*/ + + +namespace Kokkos { +namespace Experimental { +/** \brief Host memory that is accessible to ROCm execution space + * through ROCm's host-pinned memory allocation. + */ +class ROCmHostPinnedSpace { +public: + + //! Tag this class as a kokkos memory space + /** \brief Memory is in HostSpace so use the HostSpace::execution_space */ + typedef HostSpace::execution_space execution_space ; + typedef ROCmHostPinnedSpace memory_space ; + typedef Kokkos::Device device_type; + typedef unsigned int size_type ; + + /*--------------------------------*/ + + ROCmHostPinnedSpace(); + ROCmHostPinnedSpace( ROCmHostPinnedSpace && rhs ) = default ; + ROCmHostPinnedSpace( const ROCmHostPinnedSpace & rhs ) = default ; + ROCmHostPinnedSpace & operator = ( ROCmHostPinnedSpace && rhs ) = default ; + ROCmHostPinnedSpace & operator = ( const ROCmHostPinnedSpace & rhs ) = default ; + ~ROCmHostPinnedSpace() = default ; + + /**\brief Allocate untracked memory in the space */ + void * allocate( const size_t arg_alloc_size ) const ; + + /**\brief Deallocate untracked memory in the space */ + void deallocate( void * const arg_alloc_ptr + , const size_t arg_alloc_size ) const ; + + /**\brief Return Name of the MemorySpace */ + static constexpr const char* name() { return m_name; }; + +private: + + static constexpr const char* m_name = "ROCmHostPinned"; + + /*--------------------------------*/ +}; +} // namespace Experimental +} // namespace Kokkos + +/*--------------------------------------------------------------------------*/ +/*--------------------------------------------------------------------------*/ + +namespace Kokkos { +namespace Impl { + +static_assert( Kokkos::Impl::MemorySpaceAccess< Kokkos::Experimental::ROCmSpace , Kokkos::Experimental::ROCmSpace >::assignable , "" ); + +//---------------------------------------- + +template<> +struct MemorySpaceAccess< Kokkos::HostSpace , Kokkos::Experimental::ROCmSpace > { + enum { assignable = false }; + enum { accessible = false }; + enum { deepcopy = true }; +}; + +template<> +struct MemorySpaceAccess< Kokkos::HostSpace , Kokkos::Experimental::ROCmHostPinnedSpace > { + // HostSpace::execution_space == ROCmHostPinnedSpace::execution_space + enum { assignable = true }; + enum { accessible = true }; + enum { deepcopy = true }; +}; + +//---------------------------------------- + +template<> +struct MemorySpaceAccess< Kokkos::Experimental::ROCmSpace , Kokkos::HostSpace > { + enum { assignable = false }; + enum { accessible = false }; + enum { deepcopy = true }; +}; + +template<> +struct MemorySpaceAccess< Kokkos::Experimental::ROCmSpace , Kokkos::Experimental::ROCmHostPinnedSpace > { + // ROCmSpace::execution_space != ROCmHostPinnedSpace::execution_space + enum { assignable = false }; + enum { accessible = true }; // ROCmSpace::execution_space + enum { deepcopy = true }; +}; + + +//---------------------------------------- +// ROCmHostPinnedSpace::execution_space == HostSpace::execution_space +// ROCmHostPinnedSpace accessible to both ROCm and Host + +template<> +struct MemorySpaceAccess< Kokkos::Experimental::ROCmHostPinnedSpace , Kokkos::HostSpace > { + enum { assignable = false }; // Cannot access from ROCm + enum { accessible = true }; // ROCmHostPinnedSpace::execution_space + enum { deepcopy = true }; +}; + +template<> +struct MemorySpaceAccess< Kokkos::Experimental::ROCmHostPinnedSpace , Kokkos::Experimental::ROCmSpace > { + enum { assignable = false }; // Cannot access from Host + enum { accessible = false }; + enum { deepcopy = true }; +}; + +}; +//---------------------------------------- + +} // namespace Kokkos::Impl + +/*--------------------------------------------------------------------------*/ +/*--------------------------------------------------------------------------*/ + +namespace Kokkos { +namespace Impl { + +hc::completion_future DeepCopyAsyncROCm( void * dst , const void * src , size_t n); + +template<> struct DeepCopy< Kokkos::Experimental::ROCmSpace , Kokkos::Experimental::ROCmSpace , Kokkos::Experimental::ROCm> +{ + DeepCopy( void * dst , const void * src , size_t ); + DeepCopy( const Kokkos::Experimental::ROCm & , void * dst , const void * src , size_t ); +}; + +template<> struct DeepCopy< Kokkos::Experimental::ROCmSpace , HostSpace , Kokkos::Experimental::ROCm > +{ + DeepCopy( void * dst , const void * src , size_t ); + DeepCopy( const Kokkos::Experimental::ROCm & , void * dst , const void * src , size_t ); +}; + +template<> struct DeepCopy< HostSpace , Kokkos::Experimental::ROCmSpace , Kokkos::Experimental::ROCm > +{ + DeepCopy( void * dst , const void * src , size_t ); + DeepCopy( const Kokkos::Experimental::ROCm & , void * dst , const void * src , size_t ); +}; + +template struct DeepCopy< Kokkos::Experimental::ROCmSpace , Kokkos::Experimental::ROCmSpace , ExecutionSpace > +{ + inline + DeepCopy( void * dst , const void * src , size_t n ) + { (void) DeepCopy< Kokkos::Experimental::ROCmSpace , Kokkos::Experimental::ROCmSpace , Kokkos::Experimental::ROCm >( dst , src , n ); } + + inline + DeepCopy( const ExecutionSpace& exec, void * dst , const void * src , size_t n ) + { + exec.fence(); + hc::completion_future fut = DeepCopyAsyncROCm (dst,src,n); + fut.wait(); +// DeepCopy (dst,src,n); + } +}; + +template struct DeepCopy< Kokkos::Experimental::ROCmSpace , HostSpace , ExecutionSpace > +{ + inline + DeepCopy( void * dst , const void * src , size_t n ) + { (void) DeepCopy< Kokkos::Experimental::ROCmSpace , HostSpace , Kokkos::Experimental::ROCm>( dst , src , n ); } + + inline + DeepCopy( const ExecutionSpace& exec, void * dst , const void * src , size_t n ) + { + exec.fence(); + DeepCopy (dst,src,n); + } +}; + +template +struct DeepCopy< HostSpace , Kokkos::Experimental::ROCmSpace , ExecutionSpace > +{ + inline + DeepCopy( void * dst , const void * src , size_t n ) + { (void) DeepCopy< HostSpace , Kokkos::Experimental::ROCmSpace , Kokkos::Experimental::ROCm >( dst , src , n ); } + + inline + DeepCopy( const ExecutionSpace& exec, void * dst , const void * src , size_t n ) + { + exec.fence(); + DeepCopy (dst,src,n); + } +}; + +template<> struct DeepCopy< Kokkos::Experimental::ROCmHostPinnedSpace , Kokkos::Experimental::ROCmHostPinnedSpace , Kokkos::Experimental::ROCm> +{ + DeepCopy( void * dst , const void * src , size_t ); + DeepCopy( const Kokkos::Experimental::ROCm & , void * dst , const void * src , size_t ); +}; + +template<> struct DeepCopy< Kokkos::Experimental::ROCmHostPinnedSpace , HostSpace , Kokkos::Experimental::ROCm > +{ + DeepCopy( void * dst , const void * src , size_t ); + DeepCopy( const Kokkos::Experimental::ROCm & , void * dst , const void * src , size_t ); +}; + +template<> struct DeepCopy< HostSpace , Kokkos::Experimental::ROCmHostPinnedSpace , Kokkos::Experimental::ROCm > +{ + DeepCopy( void * dst , const void * src , size_t ); + DeepCopy( const Kokkos::Experimental::ROCm & , void * dst , const void * src , size_t ); +}; + +template +struct DeepCopy< Kokkos::Experimental::ROCmSpace , Kokkos::Experimental::ROCmHostPinnedSpace , ExecutionSpace> +{ + inline + DeepCopy( void * dst , const void * src , size_t n ) + { (void) DeepCopy< Kokkos::Experimental::ROCmSpace , HostSpace , Kokkos::Experimental::ROCm >( dst , src , n ); } + + inline + DeepCopy( const ExecutionSpace& exec, void * dst , const void * src , size_t n ) + { + exec.fence(); + hc::completion_future fut = DeepCopyAsyncROCm (dst,src,n); + fut.wait(); +// DeepCopyROCm (dst,src,n); + } +}; + +template struct DeepCopy< Kokkos::Experimental::ROCmHostPinnedSpace , Kokkos::Experimental::ROCmSpace , ExecutionSpace > +{ + inline + DeepCopy( void * dst , const void * src , size_t n ) + { (void) DeepCopy< HostSpace , Kokkos::Experimental::ROCmSpace , Kokkos::Experimental::ROCm >( dst , src , n ); } + + inline + DeepCopy( const ExecutionSpace& exec, void * dst , const void * src , size_t n ) + { + exec.fence(); + hc::completion_future fut = DeepCopyAsyncROCm (dst,src,n); + fut.wait(); +// DeepCopyROCm (dst,src,n); + } +}; + + + +template struct DeepCopy< Kokkos::Experimental::ROCmHostPinnedSpace , Kokkos::Experimental::ROCmHostPinnedSpace , ExecutionSpace > +{ + inline + DeepCopy( void * dst , const void * src , size_t n ) + { (void) DeepCopy< Kokkos::Experimental::ROCmHostPinnedSpace , Kokkos::Experimental::ROCmHostPinnedSpace , Kokkos::Experimental::ROCm >( dst , src , n ); } + + inline + DeepCopy( const ExecutionSpace& exec, void * dst , const void * src , size_t n ) + { + exec.fence(); +// hc::completion_future fut = DeepCopyAsyncROCm (dst,src,n); +// fut.wait(); +// DeepCopyAsyncROCm (dst,src,n); + DeepCopy (dst,src,n); + } +}; + +template struct DeepCopy< Kokkos::Experimental::ROCmHostPinnedSpace , HostSpace , ExecutionSpace > +{ + inline + DeepCopy( void * dst , const void * src , size_t n ) + { (void) DeepCopy< Kokkos::Experimental::ROCmHostPinnedSpace , HostSpace , Kokkos::Experimental::ROCm>( dst , src , n ); } + + inline + DeepCopy( const ExecutionSpace& exec, void * dst , const void * src , size_t n ) + { + exec.fence(); + DeepCopy (dst,src,n); + } +}; + +template +struct DeepCopy< HostSpace , Kokkos::Experimental::ROCmHostPinnedSpace , ExecutionSpace > +{ + inline + DeepCopy( void * dst , const void * src , size_t n ) + { (void) DeepCopy< HostSpace , Kokkos::Experimental::ROCmHostPinnedSpace , Kokkos::Experimental::ROCm >( dst , src , n ); } + + inline + DeepCopy( const ExecutionSpace& exec, void * dst , const void * src , size_t n ) + { + exec.fence(); + DeepCopy (dst,src,n); + } +}; +} // namespace Impl +} // namespace Kokkos + +//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- + +namespace Kokkos { +namespace Impl { + +/** Running in ROCmSpace attempting to access HostSpace: error */ +template<> +struct VerifyExecutionCanAccessMemorySpace< Kokkos::Experimental::ROCmSpace , Kokkos::HostSpace > +{ + enum { value = false }; + KOKKOS_INLINE_FUNCTION static void verify( void ) + { Kokkos::abort("ROCm code attempted to access HostSpace memory"); } + + KOKKOS_INLINE_FUNCTION static void verify( const void * ) + { Kokkos::abort("ROCm code attempted to access HostSpace memory"); } +}; + +/** Running in ROCmSpace accessing ROCmHostPinnedSpace: ok */ +template<> +struct VerifyExecutionCanAccessMemorySpace< Kokkos::Experimental::ROCmSpace , Kokkos::Experimental::ROCmHostPinnedSpace > +{ + enum { value = true }; + KOKKOS_INLINE_FUNCTION static void verify( void ) { } + KOKKOS_INLINE_FUNCTION static void verify( const void * ) { } +}; + +/** Running in ROCmSpace attempting to access an unknown space: error */ +template< class OtherSpace > +struct VerifyExecutionCanAccessMemorySpace< + typename enable_if< ! is_same::value , Kokkos::Experimental::ROCmSpace >::type , + OtherSpace > +{ + enum { value = false }; + KOKKOS_INLINE_FUNCTION static void verify( void ) + { Kokkos::abort("ROCm code attempted to access unknown Space memory"); } + + KOKKOS_INLINE_FUNCTION static void verify( const void * ) + { Kokkos::abort("ROCm code attempted to access unknown Space memory"); } +}; + +//---------------------------------------------------------------------------- +/** Running in HostSpace attempting to access ROCmSpace */ +template<> +struct VerifyExecutionCanAccessMemorySpace< Kokkos::HostSpace , Kokkos::Experimental::ROCmSpace > +{ + enum { value = false }; + inline static void verify( void ) { Kokkos::Experimental::ROCmSpace::access_error(); } + inline static void verify( const void * p ) { Kokkos::Experimental::ROCmSpace::access_error(p); } +}; + +/** Running in HostSpace accessing ROCmHostPinnedSpace is OK */ +template<> +struct VerifyExecutionCanAccessMemorySpace< Kokkos::HostSpace , Kokkos::Experimental::ROCmHostPinnedSpace > +{ + enum { value = true }; + KOKKOS_INLINE_FUNCTION static void verify( void ) {} + KOKKOS_INLINE_FUNCTION static void verify( const void * ) {} +}; +} // namespace Impl +} // namespace Kokkos + +//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- + +namespace Kokkos { +namespace Impl { + +template<> +class SharedAllocationRecord< Kokkos::Experimental::ROCmSpace , void > + : public SharedAllocationRecord< void , void > +{ +private: + + + typedef SharedAllocationRecord< void , void > RecordBase ; + + SharedAllocationRecord( const SharedAllocationRecord & ) = delete ; + SharedAllocationRecord & operator = ( const SharedAllocationRecord & ) = delete ; + + static void deallocate( RecordBase * ); + + static RecordBase s_root_record ; + + const Kokkos::Experimental::ROCmSpace m_space ; + +protected: + + ~SharedAllocationRecord(); + + SharedAllocationRecord( const Kokkos::Experimental::ROCmSpace & arg_space + , const std::string & arg_label + , const size_t arg_alloc_size + , const RecordBase::function_type arg_dealloc = & deallocate + ); + +public: + + std::string get_label() const ; + + static SharedAllocationRecord * allocate( const Kokkos::Experimental::ROCmSpace & arg_space + , const std::string & arg_label + , const size_t arg_alloc_size ); + + /**\brief Allocate tracked memory in the space */ + static + void * allocate_tracked( const Kokkos::Experimental::ROCmSpace & arg_space + , const std::string & arg_label + , const size_t arg_alloc_size ); + + /**\brief Reallocate tracked memory in the space */ + static + void * reallocate_tracked( void * const arg_alloc_ptr + , const size_t arg_alloc_size ); + + /**\brief Deallocate tracked memory in the space */ + static + void deallocate_tracked( void * const arg_alloc_ptr ); + + static SharedAllocationRecord * get_record( void * arg_alloc_ptr ); + + static void print_records( std::ostream & , const Kokkos::Experimental::ROCmSpace & , bool detail = false ); +}; + +template<> +class SharedAllocationRecord< Kokkos::Experimental::ROCmHostPinnedSpace , void > + : public SharedAllocationRecord< void , void > +{ +private: + + typedef SharedAllocationRecord< void , void > RecordBase ; + + SharedAllocationRecord( const SharedAllocationRecord & ) = delete ; + SharedAllocationRecord & operator = ( const SharedAllocationRecord & ) = delete ; + + static void deallocate( RecordBase * ); + + static RecordBase s_root_record ; + + const Kokkos::Experimental::ROCmHostPinnedSpace m_space ; + +protected: + + ~SharedAllocationRecord(); + SharedAllocationRecord() : RecordBase(), m_space() {} + + SharedAllocationRecord( const Kokkos::Experimental::ROCmHostPinnedSpace & arg_space + , const std::string & arg_label + , const size_t arg_alloc_size + , const RecordBase::function_type arg_dealloc = & deallocate + ); + +public: + + std::string get_label() const ; + + static SharedAllocationRecord * allocate( const Kokkos::Experimental::ROCmHostPinnedSpace & arg_space + , const std::string & arg_label + , const size_t arg_alloc_size + ); + /**\brief Allocate tracked memory in the space */ + static + void * allocate_tracked( const Kokkos::Experimental::ROCmHostPinnedSpace & arg_space + , const std::string & arg_label + , const size_t arg_alloc_size ); + + /**\brief Reallocate tracked memory in the space */ + static + void * reallocate_tracked( void * const arg_alloc_ptr + , const size_t arg_alloc_size ); + + /**\brief Deallocate tracked memory in the space */ + static + void deallocate_tracked( void * const arg_alloc_ptr ); + + + static SharedAllocationRecord * get_record( void * arg_alloc_ptr ); + + static void print_records( std::ostream & , const Kokkos::Experimental::ROCmHostPinnedSpace & , bool detail = false ); +}; +} // namespace Impl +} // namespace Kokkos + +//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- + +#endif /* #if defined( KOKKOS_ENABLE_ROCM ) */ +#endif /* #define KOKKOS_ROCMSPACE_HPP */ + diff --git a/lib/kokkos/core/src/Kokkos_TaskScheduler.hpp b/lib/kokkos/core/src/Kokkos_TaskScheduler.hpp index fcfc91a4eeb8bd0e92506a85ec2989d49f81ef54..079f80f5561f7efa5a5d1adf2f1fe6914acb82ff 100644 --- a/lib/kokkos/core/src/Kokkos_TaskScheduler.hpp +++ b/lib/kokkos/core/src/Kokkos_TaskScheduler.hpp @@ -681,6 +681,67 @@ public: return f ; } + template < class F > + KOKKOS_FUNCTION + Future< execution_space > + when_all( int narg , F const func ) + { + using input_type = decltype( func(0) ); + using future_type = Future< execution_space > ; + using task_base = Kokkos::Impl::TaskBase< void , void , void > ; + + static_assert( is_future< input_type >::value + , "Functor must return a Kokkos::Future" ); + + future_type f ; + + if ( 0 == narg ) return f ; + + size_t const alloc_size = m_queue->when_all_allocation_size( narg ); + + f.m_task = + reinterpret_cast< task_base * >( m_queue->allocate( alloc_size ) ); + + if ( f.m_task ) { + + // Reference count starts at two: + // +1 to match decrement when task completes + // +1 for the future + + new( f.m_task ) task_base(); + + f.m_task->m_queue = m_queue ; + f.m_task->m_ref_count = 2 ; + f.m_task->m_alloc_size = alloc_size ; + f.m_task->m_dep_count = narg ; + f.m_task->m_task_type = task_base::Aggregate ; + + // Assign dependences, reference counts were already incremented + + task_base * volatile * const dep = + f.m_task->aggregate_dependences(); + + for ( int i = 0 ; i < narg ; ++i ) { + const input_type arg_f = func(i); + if ( 0 != arg_f.m_task ) { + + if ( m_queue != static_cast< queue_type * >( arg_f.m_task->m_queue ) ) { + Kokkos::abort("Kokkos when_all Futures must be in the same scheduler" ); + } + // Increment reference count to track subsequent assignment. + Kokkos::atomic_increment( &(arg_f.m_task->m_ref_count) ); + dep[i] = arg_f.m_task ; + } + } + + Kokkos::memory_fence(); + + m_queue->schedule_aggregate( f.m_task ); + // this when_all may be processed at any moment + } + return f ; + } + //---------------------------------------- KOKKOS_INLINE_FUNCTION diff --git a/lib/kokkos/core/src/Kokkos_View.hpp b/lib/kokkos/core/src/Kokkos_View.hpp index 1754e4a8fb5999a6baf1ddb8eec22810f4ec5238..47b105cfdccc9bb83cc961f50bd082f2e0ccdf9f 100644 --- a/lib/kokkos/core/src/Kokkos_View.hpp +++ b/lib/kokkos/core/src/Kokkos_View.hpp @@ -2429,6 +2429,7 @@ template < class ValueType > struct CommonViewAllocProp< void, ValueType > { using value_type = ValueType; + using scalar_array_type = ValueType; template < class ... Views > CommonViewAllocProp( const Views & ... ) {} diff --git a/lib/kokkos/core/src/ROCm/Kokkos_ROCm_Atomic.hpp b/lib/kokkos/core/src/ROCm/Kokkos_ROCm_Atomic.hpp new file mode 100644 index 0000000000000000000000000000000000000000..a93f488203d7fac66daf79395ce9a2c3ab9aa01a --- /dev/null +++ b/lib/kokkos/core/src/ROCm/Kokkos_ROCm_Atomic.hpp @@ -0,0 +1,439 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +//#include + +#ifdef KOKKOS_ENABLE_ROCM_ATOMICS +namespace Kokkos { + //ROCm can do: + //Types int/unsigned int + //variants: atomic_exchange/compare_exchange/fetch_add/fetch_sub/fetch_max/fetch_min/fetch_and/fetch_or/fetch_xor/fetch_inc/fetch_dec + + + KOKKOS_INLINE_FUNCTION + int atomic_exchange(int* dest, const int& val) { + return hc::atomic_exchange_int(dest, val); + } + + KOKKOS_INLINE_FUNCTION + unsigned int atomic_exchange(unsigned int* dest, const unsigned int& val) { + return hc::atomic_exchange_unsigned(dest, val); + } + + KOKKOS_INLINE_FUNCTION + int64_t atomic_exchange(int64_t* dest, const int64_t& val) { + return (int64_t)hc::atomic_exchange_uint64((uint64_t*)dest, (const uint64_t&)val); + } + + KOKKOS_INLINE_FUNCTION + uint64_t atomic_exchange(uint64_t* dest, const uint64_t& val) { + return hc::atomic_exchange_uint64(dest, val); + } + + KOKKOS_INLINE_FUNCTION + long long atomic_exchange(long long* dest, const long long& val) { + return (long long)hc::atomic_exchange_uint64((uint64_t*)dest, (const uint64_t&)val); + } + + KOKKOS_INLINE_FUNCTION + unsigned long long atomic_exchange(unsigned long long* dest, const unsigned long long& val) { + return (unsigned long long)hc::atomic_exchange_uint64((uint64_t*)dest, (const uint64_t&)val); + } + + KOKKOS_INLINE_FUNCTION + float atomic_exchange(float* dest, const float& val) { + union U { + int i ; + float f ; + KOKKOS_INLINE_FUNCTION U() {}; + } idest,ival; + idest.f = *dest; + ival.f = val; + idest.i = hc::atomic_exchange_int((int*)dest, ival.i); + return idest.f; + } + + KOKKOS_INLINE_FUNCTION + double atomic_exchange(double* dest, const double& val) { + union U { + uint64_t i ; + double d ; + KOKKOS_INLINE_FUNCTION U() {}; + } idest,ival; + idest.d = *dest; + ival.d = val; + idest.i = hc::atomic_exchange_uint64((uint64_t*)dest, ival.i); + return idest.d; + } + + KOKKOS_INLINE_FUNCTION + int atomic_compare_exchange(int* dest, int compare, const int& val); + + KOKKOS_INLINE_FUNCTION + int64_t atomic_compare_exchange(int64_t* dest, int64_t compare, const int64_t& val); + + template + KOKKOS_INLINE_FUNCTION + T atomic_exchange(T* dest, typename std::enable_if::type val) { + union U { + int i ; + T t ; + KOKKOS_INLINE_FUNCTION U() {}; + } assume , oldval , newval ; + + oldval.t = *dest ; + assume.i = oldval.i ; + newval.t = val ; + atomic_compare_exchange( reinterpret_cast(dest) , assume.i, newval.i ); + + return oldval.t ; + } + + template + KOKKOS_INLINE_FUNCTION + T atomic_exchange(T* dest, typename std::enable_if::type val) { + union U { + uint64_t i ; + T t ; + KOKKOS_INLINE_FUNCTION U() {}; + } assume , oldval , newval ; + + oldval.t = *dest ; + + assume.i = oldval.i ; + newval.t = val ; + atomic_compare_exchange( (int64_t*)(dest) , assume.i, newval.i ); + + return oldval.t ; + } + + template + KOKKOS_INLINE_FUNCTION + T atomic_exchange(T* dest, typename std::enable_if::type val) { + return val; + } + + KOKKOS_INLINE_FUNCTION + int atomic_compare_exchange(int* dest, int compare, const int& val) { + return hc::atomic_compare_exchange_int(dest, compare, val); + } + + KOKKOS_INLINE_FUNCTION + unsigned int atomic_compare_exchange(unsigned int* dest, unsigned int compare, const unsigned int& val) { + return hc::atomic_compare_exchange_unsigned(dest, compare, val); + } + + KOKKOS_INLINE_FUNCTION + int64_t atomic_compare_exchange(int64_t* dest, int64_t compare, const int64_t& val) { + return (int64_t) hc::atomic_compare_exchange_uint64((uint64_t*)dest, (uint64_t)compare, (const uint64_t&)val); + } + + KOKKOS_INLINE_FUNCTION + uint64_t atomic_compare_exchange(uint64_t* dest, uint64_t compare, const uint64_t& val) { + return hc::atomic_compare_exchange_uint64(dest, compare, val); + } + + KOKKOS_INLINE_FUNCTION + long long atomic_compare_exchange(long long* dest, long long compare, const long long& val) { + return (long long)hc::atomic_compare_exchange_uint64((uint64_t*)(dest), (uint64_t)(compare), (const uint64_t&)(val)); + } + + KOKKOS_INLINE_FUNCTION + float atomic_compare_exchange(float* dest, float compare, const float& val) { + union U { + int i ; + float f ; + KOKKOS_INLINE_FUNCTION U() {}; + } idest,icompare,ival; + idest.f = *dest; + icompare.f = compare; + ival.f = val; + idest.i = hc::atomic_compare_exchange_int(reinterpret_cast(dest), icompare.i, ival.i); + return idest.f; + } + + KOKKOS_INLINE_FUNCTION + double atomic_compare_exchange(double* dest, double compare, const double& val) { + union U { + uint64_t i ; + double d ; + KOKKOS_INLINE_FUNCTION U() {}; + } idest,icompare,ival; + idest.d = *dest; + icompare.d = compare; + ival.d = val; + idest.i = hc::atomic_compare_exchange_uint64(reinterpret_cast(dest), icompare.i, ival.i); + return idest.d; + } + + template + KOKKOS_INLINE_FUNCTION + T atomic_compare_exchange(volatile T* dest, T compare, typename std::enable_if::type val) { + union U { + int i ; + T f ; + KOKKOS_INLINE_FUNCTION U() {}; + } idest,icompare,ival; + idest.f = *dest; + icompare.f = compare; + ival.f = val; + idest.i = hc::atomic_compare_exchange_int((int*)(dest), icompare.i, ival.i); + return idest.f; + } + + template + KOKKOS_INLINE_FUNCTION + T atomic_compare_exchange(volatile T* dest, T compare, typename std::enable_if::type val) { + union U { + uint64_t i ; + T f ; + KOKKOS_INLINE_FUNCTION U() {}; + } idest,icompare,ival; + idest.f = *dest; + icompare.f = compare; + ival.f = val; + idest.i = hc::atomic_compare_exchange_uint64((uint64_t*)(dest), icompare.i, ival.i); + return idest.f; + } + + template + KOKKOS_INLINE_FUNCTION + T atomic_compare_exchange(volatile T* dest, T compare, typename std::enable_if<(sizeof(T) != sizeof(int32_t)) && (sizeof(T) != sizeof(int64_t)), const T&>::type val) { + return val; + } + + KOKKOS_INLINE_FUNCTION + int atomic_fetch_add (volatile int * dest, const int& val) { + return hc::atomic_fetch_add((int *)dest, val); + } + + KOKKOS_INLINE_FUNCTION + unsigned int atomic_fetch_add(unsigned int* dest, const unsigned int& val) { + return hc::atomic_fetch_add(dest, val); + } + + KOKKOS_INLINE_FUNCTION + unsigned long atomic_fetch_add(volatile unsigned long* dest, const unsigned long& val) { + return (unsigned long)hc::atomic_fetch_add((uint64_t *)dest, (const uint64_t)val); + } + + KOKKOS_INLINE_FUNCTION + int64_t atomic_fetch_add(volatile int64_t* dest, const int64_t& val) { + return (int64_t)hc::atomic_fetch_add((uint64_t *)dest, (const uint64_t&)val); + } + + KOKKOS_INLINE_FUNCTION + char atomic_fetch_add(volatile char * dest, const char& val) { + unsigned int oldval,newval,assume; + oldval = *(int *)dest ; + + do { + assume = oldval ; + newval = assume&0x7fffff00 + ((assume&0xff)+val)&0xff ; + oldval = hc::atomic_compare_exchange_unsigned((unsigned int*)dest, assume,newval); + } while ( assume != oldval ); + + return oldval ; + } + + + KOKKOS_INLINE_FUNCTION + short atomic_fetch_add(volatile short * dest, const short& val) { + unsigned int oldval,newval,assume; + oldval = *(int *)dest ; + + do { + assume = oldval ; + newval = assume&0x7fff0000 + ((assume&0xffff)+val)&0xffff ; + oldval = hc::atomic_compare_exchange_unsigned((unsigned int*)dest, assume,newval); + } while ( assume != oldval ); + + return oldval ; + } + + KOKKOS_INLINE_FUNCTION + long long atomic_fetch_add(volatile long long * dest, const long long& val) { + return (long long)hc::atomic_fetch_add((uint64_t*)dest, (const uint64_t&)val); + } + + + + KOKKOS_INLINE_FUNCTION + int atomic_fetch_sub (volatile int * dest, const int& val) { + return hc::atomic_fetch_sub((int *)dest, val); + } + + KOKKOS_INLINE_FUNCTION + unsigned int atomic_fetch_sub(volatile unsigned int* dest, const unsigned int& val) { + return hc::atomic_fetch_sub((unsigned int *)dest, val); + } + + KOKKOS_INLINE_FUNCTION + int64_t atomic_fetch_sub(int64_t* dest, const int64_t& val) { + return (int64_t)hc::atomic_fetch_add((uint64_t *)dest, -(const uint64_t&)val); +// return (int64_t)hc::atomic_fetch_sub_uint64((uint64_t*)dest, (const uint64_t&)val); + } + + KOKKOS_INLINE_FUNCTION + char atomic_fetch_sub(volatile char * dest, const char& val) { + unsigned int oldval,newval,assume; + oldval = *(int *)dest ; + + do { + assume = oldval ; + newval = assume&0x7fffff00 + ((assume&0xff)-val)&0xff ; + oldval = hc::atomic_compare_exchange_unsigned((unsigned int*)dest, assume,newval); + } while ( assume != oldval ); + + return oldval ; + } + + KOKKOS_INLINE_FUNCTION + short atomic_fetch_sub(volatile short * dest, const short& val) { + unsigned int oldval,newval,assume; + oldval = *(int *)dest ; + + do { + assume = oldval ; + newval = assume&0x7fff0000 + ((assume&0xffff)-val)&0xffff; + oldval = hc::atomic_compare_exchange_unsigned((unsigned int*)dest, assume,newval); + } while ( assume != oldval ); + + return oldval ; + } + + KOKKOS_INLINE_FUNCTION + long long atomic_fetch_sub(volatile long long * dest, const long long& val) { + return (long long)hc::atomic_fetch_add((uint64_t*)dest, -(const uint64_t&)val); + } + + template + KOKKOS_INLINE_FUNCTION + T atomic_fetch_add(volatile T* dest, typename std::enable_if::type val) { + union U { + unsigned int i ; + T t ; + KOKKOS_INLINE_FUNCTION U() {}; + } assume , oldval , newval ; + + oldval.t = *dest ; + + do { + assume.i = oldval.i ; + newval.t = assume.t + val ; + oldval.i = atomic_compare_exchange( (unsigned int*)(dest) , assume.i , newval.i ); + } while ( assume.i != oldval.i ); + + return oldval.t ; + } + + template + KOKKOS_INLINE_FUNCTION + T atomic_fetch_add(volatile T* dest, typename std::enable_if::type val) { + union U { + uint64_t i ; + T t ; + KOKKOS_INLINE_FUNCTION U() {}; + } assume , oldval , newval ; + + oldval.t = *dest ; + + do { + assume.i = oldval.i ; + newval.t = assume.t + val ; + oldval.i = atomic_compare_exchange( (uint64_t*)dest , assume.i , newval.i ); + } while ( assume.i != oldval.i ); + + return oldval.t ; + } + + + //WORKAROUND + template + KOKKOS_INLINE_FUNCTION + T atomic_fetch_add(volatile T* dest, typename std::enable_if::type val) { + return val ; + } + + template + KOKKOS_INLINE_FUNCTION + T atomic_fetch_sub(volatile T* dest, typename std::enable_if::type & val) { + union U { + int i ; + T t ; + KOKKOS_INLINE_FUNCTION U() {}; + } assume , oldval , newval ; + + oldval.t = *dest ; + + do { + assume.i = oldval.i ; + newval.t = assume.t - val ; + oldval.i = Kokkos::atomic_compare_exchange( (int*)dest , assume.i , newval.i ); + } while ( assume.i != oldval.i ); + + return oldval.t ; + } + + template + KOKKOS_INLINE_FUNCTION + T atomic_fetch_sub(volatile T* dest, typename std::enable_if::type val) { + union U { + int64_t i ; + T t ; + KOKKOS_INLINE_FUNCTION U() {}; + } assume , oldval , newval ; + + oldval.t = *dest ; + + do { + assume.i = oldval.i ; + newval.t = assume.t - val ; + oldval.i = atomic_compare_exchange( (int64_t*)dest , assume.i , newval.i ); + } while ( assume.i != oldval.i ); + + return oldval.t ; + } +} +#endif diff --git a/lib/kokkos/core/src/ROCm/Kokkos_ROCm_Config.hpp b/lib/kokkos/core/src/ROCm/Kokkos_ROCm_Config.hpp new file mode 100644 index 0000000000000000000000000000000000000000..83b5792a6495a70607c9832a653cfdfa7e6f968d --- /dev/null +++ b/lib/kokkos/core/src/ROCm/Kokkos_ROCm_Config.hpp @@ -0,0 +1,51 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#ifndef GUARD_CORE_KOKKOS_ROCM_CONFIG_HPP +#define GUARD_CORE_KOKKOS_ROCM_CONFIG_HPP + +#ifndef KOKKOS_ROCM_HAS_WORKAROUNDS +#define KOKKOS_ROCM_HAS_WORKAROUNDS 1 +#endif + +#endif diff --git a/lib/kokkos/core/src/ROCm/Kokkos_ROCm_Exec.cpp b/lib/kokkos/core/src/ROCm/Kokkos_ROCm_Exec.cpp new file mode 100644 index 0000000000000000000000000000000000000000..e919d35903d2da15522738aa9870862dd6c0c065 --- /dev/null +++ b/lib/kokkos/core/src/ROCm/Kokkos_ROCm_Exec.cpp @@ -0,0 +1,133 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ +#ifndef KOKKOS_ROCMEXEC_HPP +#define KOKKOS_ROCMEXEC_HPP + +#include +#include +#include +//#include +#include + +#define ROCM_SPACE_ATOMIC_MASK 0x1FFFF +#define ROCM_SPACE_ATOMIC_XOR_MASK 0x15A39 +#define ROCM_CONCURRENCY 20480 +//#define ROCM_CONCURRENCY 81920 # for fiji + +namespace Kokkos { + static int rocm_space_atomic_locks[ROCM_SPACE_ATOMIC_MASK+1]; + static int rocm_space_scratch_locks[ROCM_CONCURRENCY]; + static int rocm_space_threadid_locks[ROCM_CONCURRENCY]; +namespace Impl { +// TODO: mimic cuda implemtation, add dgpu capability + + void init_rocm_atomic_lock_array() { + static int is_initialized = 0; + if(!is_initialized) + { + for(int i = 0; i < ROCM_SPACE_ATOMIC_MASK+1; i++) + rocm_space_atomic_locks[i] = 0; + is_initialized = 1; + } + } + + void init_rocm_scratch_lock_array() { + static int is_initialized = 0; + if(!is_initialized) + { + for(int i = 0; i < ROCM_CONCURRENCY; i++) + rocm_space_scratch_locks[i] = 0; + is_initialized = 1; + } + } + + void init_rocm_threadid_lock_array() { + static int is_initialized = 0; + if(!is_initialized) + { + for(int i = 0; i < ROCM_CONCURRENCY; i++) + rocm_space_threadid_locks[i] = 0; + is_initialized = 1; + } + } + + void init_lock_arrays_rocm_space() { + init_rocm_atomic_lock_array(); +// init_rocm_scratch_lock_array(); +// init_rocm_threadid_lock_array(); + } +} + +} // namespace Kokkos +#if 0 +namespace Kokkos { +namespace Impl { +KOKKOS_INLINE_FUNCTION +bool lock_address_rocm_space(void* ptr) { +#if 0 +return(Kokkos::Impl::lock_address_host_space(ptr)); +#else + size_t offset = size_t(ptr); + offset = offset >> 2; + offset = offset & ROCM_SPACE_ATOMIC_MASK; + return (0 == hc::atomic_compare_exchange(&rocm_space_atomic_locks[offset],0,1)); +#endif +} + +KOKKOS_INLINE_FUNCTION +void unlock_address_rocm_space(void* ptr) { +#if 0 +Kokkos::Impl::unlock_address_host_space(ptr) ; +#else + size_t offset = size_t(ptr); + offset = offset >> 2; + offset = offset & ROCM_SPACE_ATOMIC_MASK; + hc::atomic_exchange( &rocm_space_atomic_locks[ offset ], 0); +#endif +} + +} +} // namespace Kokkos +#endif + +#endif /* #ifndef KOKKOS_ROCMEXEC_HPP */ diff --git a/lib/kokkos/core/src/ROCm/Kokkos_ROCm_Exec.hpp b/lib/kokkos/core/src/ROCm/Kokkos_ROCm_Exec.hpp new file mode 100644 index 0000000000000000000000000000000000000000..48a27eb11d1f02632f9f1f74772eac9bbb874f2d --- /dev/null +++ b/lib/kokkos/core/src/ROCm/Kokkos_ROCm_Exec.hpp @@ -0,0 +1,137 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ +#ifndef KOKKOS_ROCMEXEC_HPP +#define KOKKOS_ROCMEXEC_HPP + +#include +#include + +#if defined(__HCC_ACCELERATOR__) +#define printf(...) +#endif + +namespace Kokkos { +namespace Impl { +struct ROCmTraits { +// TODO: determine if needed + enum { WavefrontSize = 64 /* 64 */ }; + enum { WorkgroupSize = 64 /* 64 */ }; + enum { WavefrontIndexMask = 0x001f /* Mask for warpindex */ }; + enum { WavefrontIndexShift = 5 /* WarpSize == 1 << WarpShift */ }; + + enum { SharedMemoryBanks = 32 /* Compute device 2.0 */ }; + enum { SharedMemoryCapacity = 0x0C000 /* 48k shared / 16k L1 Cache */ }; + enum { SharedMemoryUsage = 0x04000 /* 16k shared / 48k L1 Cache */ }; + + enum { UpperBoundExtentCount = 65535 /* Hard upper bound */ }; +#if 0 + KOKKOS_INLINE_FUNCTION static + ROCmSpace::size_type wavefront_count( ROCmSpace::size_type i ) + { return ( i + WavefrontIndexMask ) >> WavefrontIndexShift ; } + + KOKKOS_INLINE_FUNCTION static + ROCmSpace::size_type wavefront_align( ROCmSpace::size_type i ) + { + enum { Mask = ~ROCmSpace::size_type( WavefrontIndexMask ) }; + return ( i + WavefrontIndexMask ) & Mask ; + } +#endif +}; +size_t rocm_internal_cu_count(); +size_t rocm_internal_maximum_workgroup_count(); + +size_t * rocm_internal_scratch_flags( const size_t size ); +size_t * rocm_internal_scratch_space( const size_t size ); + +} +} // namespace Kokkos +#define ROCM_SPACE_ATOMIC_MASK 0x1FFFF +#define ROCM_SPACE_ATOMIC_XOR_MASK 0x15A39 +//int rocm_space_atomic_locks[ROCM_SPACE_ATOMIC_MASK+1]; +extern int + *rocm_space_atomic_locks; + +namespace Kokkos { +namespace Impl { + void init_lock_arrays_rocm_space(); + + void* rocm_resize_scratch_space(size_t bytes, bool force_shrink = false); + +// TODO: determine if needed +KOKKOS_INLINE_FUNCTION +bool lock_address_rocm_space(void* ptr) { +#if 0 +return(Kokkos::Impl::lock_address_host_space(ptr)); +#else + size_t offset = size_t(ptr); + offset = offset >> 2; + offset = offset & ROCM_SPACE_ATOMIC_MASK; + return (0 == hc::atomic_compare_exchange(&rocm_space_atomic_locks[offset],0,1)); +#endif +} +KOKKOS_INLINE_FUNCTION +void unlock_address_rocm_space(void* ptr) { +#if 0 +Kokkos::Impl::unlock_address_host_space(ptr) ; +#else + size_t offset = size_t(ptr); + offset = offset >> 2; + offset = offset & ROCM_SPACE_ATOMIC_MASK; + hc::atomic_exchange( &rocm_space_atomic_locks[ offset ], 0); +#endif +} + +} +} // namespace Kokkos + +namespace Kokkos { +namespace Impl { +//extern +//KOKKOS_INLINE_FUNCTION +//void init_lock_arrays_rocm_space(); + + +} +} // namespace Kokkos + +#endif /* #ifndef KOKKOS_ROCMEXEC_HPP */ diff --git a/lib/kokkos/core/src/ROCm/Kokkos_ROCm_Impl.cpp b/lib/kokkos/core/src/ROCm/Kokkos_ROCm_Impl.cpp new file mode 100644 index 0000000000000000000000000000000000000000..1322391d926122a5b54f2835ee0e6828571b0a4d --- /dev/null +++ b/lib/kokkos/core/src/ROCm/Kokkos_ROCm_Impl.cpp @@ -0,0 +1,753 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +/*--------------------------------------------------------------------------*/ +/* Kokkos interfaces */ + +#include + +/* only compile this file if ROCM is enabled for Kokkos */ +#ifdef KOKKOS_ENABLE_ROCM + +//#include +#include +#include +#include + +/*--------------------------------------------------------------------------*/ +/* Standard 'C' libraries */ +#include + +/* Standard 'C++' libraries */ +#include +#include +#include +#include + + + +//KOKKOS_INLINE_FUNCTION +// Kokkos::Impl::ROCmLockArraysStruct kokkos_impl_rocm_lock_arrays ; + + +/*--------------------------------------------------------------------------*/ +namespace Kokkos { +namespace Impl { + +#if 0 +namespace { +__global__ +void query_rocm_kernel_arch( int * d_arch ) +{ +#if defined( __HCC_ACCELERATOR__ ) + *d_arch = OCM_ARCH__ ; +#else + *d_arch = 0 ; +#endif +} + +/** Query what compute capability is actually launched to the device: */ +int rocm_kernel_arch() +{ + int * d_arch = 0 ; + rocmMalloc( (void **) & d_arch , sizeof(int) ); + query_rocm_kernel_arch<<<1,1>>>( d_arch ); + int arch = 0 ; + rocmMemcpy( & arch , d_arch , sizeof(int) , rocmMemcpyDefault ); + rocmFree( d_arch ); + return arch ; +} +bool rocm_launch_blocking() +{ + const char * env = getenv("ROCM_LAUNCH_BLOCKING"); + + if (env == 0) return false; + + return atoi(env); +} + +} +#endif + +// true device memory allocation, not visible from host +void * rocm_device_allocate(int size) +{ + void * ptr; + hc::accelerator acc; + ptr = hc::am_alloc(size,acc,0); + return ptr; +} + +// host pinned allocation +// flag = 1, non-coherent, host resident, but with gpu address space pointer +// flag = 2, coherent, host resident, but with host address space pointer +void * rocm_hostpinned_allocate(int size) +{ + void * ptr; + hc::accelerator acc; + ptr = hc::am_alloc(size,acc,2); + return ptr; +} +// same free used by all rocm memory allocations +void rocm_device_free(void * ptr) +{ + hc::am_free(ptr); +} + + +KOKKOS_INLINE_FUNCTION +void rocm_device_synchronize() +{ + hc::accelerator_view av = hc::accelerator().get_default_view(); + hc::completion_future fut = av.create_marker(); + fut.wait(); +} + +void rocm_internal_error_throw( const char * name, const char * file, const int line ) +{ +#if 0 + std::ostringstream out ; + out << name << " error( " << rocmGetErrorName(e) << "): " << rocmGetErrorString(e); + if (file) { + out << " " << file << ":" << line; + } + throw_runtime_exception( out.str() ); +#endif +} + +//---------------------------------------------------------------------------- +// Some significant rocm device properties: +// +// rocmDeviceProp::name : Text label for device +// rocmDeviceProp::major : Device major number +// rocmDeviceProp::minor : Device minor number +// rocmDeviceProp::workgroupSize : number of threads per workgroup +// rocmDeviceProp::multiProcessorCount : number of multiprocessors +// rocmDeviceProp::sharedMemPerBlock : capacity of shared memory per wavefront +// rocmDeviceProp::totalConstMem : capacity of constant memory +// rocmDeviceProp::totalGlobalMem : capacity of global memory +// rocmDeviceProp::maxGridSize[3] : maximum grid size + +// +// +// the data we have available from a ROCm accelerator +// std::wstring get_device_path() +// std::wstring get_description() +// unsigned int get_version() +// bool get_has_display() +// size_t get_dedicated_memory() +// bool get_supports_double_precision() +// bool get_supports_limited_double_precision() +// bool get_is_debug() +// bool get_supports_cpu_shared_memory() +// size_t get_max_tile_static_size() +// unsigned int get_cu_count() +// bool has_cpu_accessible_am() +struct rocmDeviceProp { + char name[256]; + char description[256]; + unsigned int version; + int device_type; + int device_ordinal; + int major; + int minor; + size_t totalGlobalMem; + size_t sharedMemPerWavefront; + int WavefrontSize; + int WorkgroupSize; + int MaxTileCount; + int maxThreadsPerWorkgroup; + int multiProcessorCount; + int canMapHostMemory; + bool APU; +}; + + + +void rocmGetDeviceProperties(struct rocmDeviceProp* devProp, int device) +{ + std::wstring s; + int i,n; + hc::accelerator acc; + std::vector accv = acc.get_all() ; + + hc::accelerator a = accv[device]; + + s=a.get_device_path(); + i = 0; + for(wchar_t c: s) + if((n=std::wctomb(&devProp->name[i],c))>0) + i+=n; + + /* assume a CPU */ + devProp->version = a.get_version(); + devProp->major = a.get_version()>>16; // for CPU, these are meaningless + devProp->minor = a.get_version()&0xff; + devProp->device_ordinal = 0; + + /* is this an AMD graphics card */ + if((devProp->name[0]=='g') && (devProp->name[1]=='f') + && (devProp->name[2]=='x')) { + /* for AMD cards, the name has the format gfxMmmO */ + + devProp->device_type = ((devProp->name[3]-0x30)<<16) + + ((devProp->name[4]-0x30)<<8) + + (devProp->name[5]-0x30); + devProp->device_ordinal = devProp->name[6]-0x30; + devProp->major = devProp->name[3]-0x30; + devProp->minor = devProp->name[5]-0x30; + } + + s=a.get_description(); + i = 0; + for(wchar_t c: s) + if((n=std::wctomb(&devProp->description[i],c))>0) + i+=n; + devProp->totalGlobalMem = a.get_dedicated_memory(); + devProp->sharedMemPerWavefront = a.get_max_tile_static_size(); + devProp->WavefrontSize = 64; + devProp->WorkgroupSize = 256; // preferred + devProp->MaxTileCount = 409600; // as defined in /opt/rocm/hcc-lc/include/hsa_new.h + devProp->maxThreadsPerWorkgroup = 1024; + devProp->multiProcessorCount = a.get_cu_count(); + devProp->canMapHostMemory = a.get_supports_cpu_shared_memory(); +// Kaveri has 64KB L2 per CU, 16KB L1, 64KB Vector Regs/SIMD, or 128 regs/thread +// GCN has 64KB LDS per CU + +//Kaveri APU is 7:0:0 +//Carrizo APU is 8:0:1 + devProp->APU = (((devProp->major==7)&&(devProp->minor==0))| + ((devProp->major==8)&&(devProp->minor==1)))?true:false; +} + +namespace { + + + +class ROCmInternalDevices { +public: + enum { MAXIMUM_DEVICE_COUNT = 64 }; + struct rocmDeviceProp m_rocmProp[ MAXIMUM_DEVICE_COUNT ] ; + int m_rocmDevCount ; + + ROCmInternalDevices(); + + static const ROCmInternalDevices & singleton(); +}; + +ROCmInternalDevices::ROCmInternalDevices() +{ + hc::accelerator acc; + std::vector accv = acc.get_all() ; + m_rocmDevCount = accv.size(); + + if(m_rocmDevCount > MAXIMUM_DEVICE_COUNT) { + Kokkos::abort("Sorry, you have more GPUs per node than we thought anybody would ever have. Please report this to github.com/kokkos/kokkos."); + } + for ( int i = 0 ; i < m_rocmDevCount ; ++i ) { + rocmGetDeviceProperties( m_rocmProp + i , i ); + } +} + +const ROCmInternalDevices & ROCmInternalDevices::singleton() +{ + static ROCmInternalDevices* self = nullptr; + if (!self) { + self = new ROCmInternalDevices(); + } + return *self; + +} + +} + +//---------------------------------------------------------------------------- + +class ROCmInternal { +private: + + ROCmInternal( const ROCmInternal & ); + ROCmInternal & operator = ( const ROCmInternal & ); + + +public: + + typedef Kokkos::Experimental::ROCm::size_type size_type ; + + int m_rocmDev ; + int m_rocmArch ; + unsigned m_multiProcCount ; + unsigned m_maxWorkgroup ; + unsigned m_maxSharedWords ; + size_type m_scratchSpaceCount ; + size_type m_scratchFlagsCount ; + size_type * m_scratchSpace ; + size_type * m_scratchFlags ; + + static int was_finalized; + + static ROCmInternal & singleton(); + + int verify_is_initialized( const char * const label ) const ; + + int is_initialized() const + { return 0 != m_scratchSpace && 0 != m_scratchFlags ; } + + void initialize( int rocm_device_id ); + void finalize(); + + void print_configuration( std::ostream & ) const ; + + + ~ROCmInternal(); + + ROCmInternal() + : m_rocmDev( -1 ) + , m_rocmArch( -1 ) + , m_multiProcCount( 0 ) + , m_maxWorkgroup( 0 ) + , m_maxSharedWords( 0 ) + , m_scratchSpaceCount( 0 ) + , m_scratchFlagsCount( 0 ) + , m_scratchSpace( 0 ) + , m_scratchFlags( 0 ) + {} + + size_type * scratch_space( const size_type size ); + size_type * scratch_flags( const size_type size ); +}; + +int ROCmInternal::was_finalized = 0; +//---------------------------------------------------------------------------- + + +void ROCmInternal::print_configuration( std::ostream & s ) const +{ + const ROCmInternalDevices & dev_info = ROCmInternalDevices::singleton(); + +#if defined( KOKKOS_ENABLE_ROCM ) + s << "macro KOKKOS_ENABLE_ROCM : defined" << std::endl ; +#endif +#if defined( __hcc_version__ ) + s << "macro __hcc_version__ = " << __hcc_version__ + << std::endl ; +#endif + + for ( int i = 0 ; i < dev_info.m_rocmDevCount ; ++i ) { + s << "Kokkos::Experimental::ROCm[ " << i << " ] " + << dev_info.m_rocmProp[i].name + << " version " << (dev_info.m_rocmProp[i].major) << "." << dev_info.m_rocmProp[i].minor + << ", Total Global Memory: " << human_memory_size(dev_info.m_rocmProp[i].totalGlobalMem) + << ", Shared Memory per Wavefront: " << human_memory_size(dev_info.m_rocmProp[i].sharedMemPerWavefront); + if ( m_rocmDev == i ) s << " : Selected" ; + s << std::endl ; + } +} + +//---------------------------------------------------------------------------- + +ROCmInternal::~ROCmInternal() +{ + if ( m_scratchSpace || + m_scratchFlags ) { + std::cerr << "Kokkos::Experimental::ROCm ERROR: Failed to call Kokkos::Experimental::ROCm::finalize()" + << std::endl ; + std::cerr.flush(); + } + + m_rocmDev = -1 ; + m_rocmArch = -1 ; + m_multiProcCount = 0 ; + m_maxWorkgroup = 0 ; + m_maxSharedWords = 0 ; + m_scratchSpaceCount = 0 ; + m_scratchFlagsCount = 0 ; + m_scratchSpace = 0 ; + m_scratchFlags = 0 ; +} + +int ROCmInternal::verify_is_initialized( const char * const label ) const +{ + if ( m_rocmDev < 0 ) { + std::cerr << "Kokkos::Experimental::ROCm::" << label << " : ERROR device not initialized" << std::endl ; + } + return 0 <= m_rocmDev ; +} + +ROCmInternal & ROCmInternal::singleton() +{ + static ROCmInternal* self = nullptr ; + if (!self) { + self = new ROCmInternal(); + } + return *self ; + +} + +void ROCmInternal::initialize( int rocm_device_id ) +{ + if ( was_finalized ) Kokkos::abort("Calling ROCm::initialize after ROCm::finalize is illegal\n"); + + if ( is_initialized() ) return; + + enum { WordSize = sizeof(size_type) }; + + if ( ! HostSpace::execution_space::is_initialized() ) { + const std::string msg("ROCm::initialize ERROR : HostSpace::execution_space is not initialized"); + throw_runtime_exception( msg ); + } + + const ROCmInternalDevices & dev_info = ROCmInternalDevices::singleton(); + + const bool ok_init = 0 == m_scratchSpace || 0 == m_scratchFlags ; + + const bool ok_id = 1 <= rocm_device_id && + rocm_device_id < dev_info.m_rocmDevCount ; + + // Need at least a GPU device + + const bool ok_dev = ok_id && + ( 1 <= dev_info.m_rocmProp[ rocm_device_id ].major && + 0 <= dev_info.m_rocmProp[ rocm_device_id ].minor ); + if ( ok_init && ok_dev ) { + + const struct rocmDeviceProp & rocmProp = + dev_info.m_rocmProp[ rocm_device_id ]; + + m_rocmDev = rocm_device_id ; + +// rocmSetDevice( m_rocmDev ) ); + Kokkos::Impl::rocm_device_synchronize(); + +/* + // Query what compute capability architecture a kernel executes: + m_rocmArch = rocm_kernel_arch(); + if ( m_rocmArch != rocmProp.major * 100 + rocmProp.minor * 10 ) { + std::cerr << "Kokkos::Experimental::ROCm::initialize WARNING: running kernels compiled for compute capability " + << ( m_rocmArch / 100 ) << "." << ( ( m_rocmArch % 100 ) / 10 ) + << " on device with compute capability " + << rocmProp.major << "." << rocmProp.minor + << " , this will likely reduce potential performance." + << std::endl ; + } +*/ + // number of multiprocessors + + m_multiProcCount = rocmProp.multiProcessorCount ; + + //---------------------------------- + // Maximum number of wavefronts, + // at most one workgroup per thread in a workgroup for reduction. + + + m_maxSharedWords = rocmProp.sharedMemPerWavefront/ WordSize ; + + //---------------------------------- + // Maximum number of Workgroups: + + m_maxWorkgroup = 5*rocmProp.multiProcessorCount; //TODO: confirm usage and value + + //---------------------------------- + // Multiblock reduction uses scratch flags for counters + // and scratch space for partial reduction values. + // Allocate some initial space. This will grow as needed. + + { + const unsigned reduce_block_count = m_maxWorkgroup * Impl::ROCmTraits::WorkgroupSize ; + + (void) scratch_flags( reduce_block_count * 2 * sizeof(size_type) ); + (void) scratch_space( reduce_block_count * 16 * sizeof(size_type) ); + } + //---------------------------------- + + } + else { + + std::ostringstream msg ; + msg << "Kokkos::Experimental::ROCm::initialize(" << rocm_device_id << ") FAILED" ; + + if ( ! ok_init ) { + msg << " : Already initialized" ; + } + if ( ! ok_id ) { + msg << " : Device identifier out of range " + << "[0.." << (dev_info.m_rocmDevCount-1) << "]" ; + } + else if ( ! ok_dev ) { + msg << " : Device " ; + msg << dev_info.m_rocmProp[ rocm_device_id ].major ; + msg << "." ; + msg << dev_info.m_rocmProp[ rocm_device_id ].minor ; + msg << " Need at least a GPU" ; + msg << std::endl; + } + Kokkos::Impl::throw_runtime_exception( msg.str() ); + } + + + // Init the array for used for arbitrarily sized atomics + Kokkos::Impl::init_lock_arrays_rocm_space(); + +// Kokkos::Impl::ROCmLockArraysStruct locks; +// locks.atomic = atomic_lock_array_rocm_space_ptr(false); +// locks.scratch = scratch_lock_array_rocm_space_ptr(false); +// locks.threadid = threadid_lock_array_rocm_space_ptr(false); +// rocmMemcpyToSymbol( kokkos_impl_rocm_lock_arrays , & locks , sizeof(ROCmLockArraysStruct) ); +} + +//---------------------------------------------------------------------------- + +typedef Kokkos::Experimental::ROCm::size_type ScratchGrain[ Impl::ROCmTraits::WorkgroupSize ] ; +enum { sizeScratchGrain = sizeof(ScratchGrain) }; + +void rocmMemset( Kokkos::Experimental::ROCm::size_type * ptr , Kokkos::Experimental::ROCm::size_type value , Kokkos::Experimental::ROCm::size_type size) +{ +char * mptr = (char * ) ptr; +#if 0 + parallel_for_each(hc::extent<1>(size), + [=, &ptr] + (hc::index<1> idx) __HC__ + { + int i = idx[0]; + ptr[i] = value; + }).wait(); +#else + for (int i= 0; i Record ; + + Record * const r = Record::allocate( Kokkos::HostSpace() + , "InternalScratchFlags" + , ( sizeScratchGrain * m_scratchFlagsCount ) ); + + Record::increment( r ); + + m_scratchFlags = reinterpret_cast( r->data() ); + + rocmMemset( m_scratchFlags , 0 , m_scratchFlagsCount * sizeScratchGrain ); + } + + return m_scratchFlags ; +} + +Kokkos::Experimental::ROCm::size_type * +ROCmInternal::scratch_space( const Kokkos::Experimental::ROCm::size_type size ) +{ + if ( verify_is_initialized("scratch_space") && m_scratchSpaceCount * sizeScratchGrain < size ) { + + m_scratchSpaceCount = ( size + sizeScratchGrain - 1 ) / sizeScratchGrain ; + + typedef Kokkos::Experimental::Impl::SharedAllocationRecord< Kokkos::HostSpace , void > Record ; + + Record * const r = Record::allocate( Kokkos::HostSpace() + , "InternalScratchSpace" + , ( sizeScratchGrain * m_scratchSpaceCount ) ); + + Record::increment( r ); + + m_scratchSpace = reinterpret_cast( r->data() ); + } + + return m_scratchSpace ; +} + +//---------------------------------------------------------------------------- + +void ROCmInternal::finalize() +{ + was_finalized = 1; + if ( 0 != m_scratchSpace || 0 != m_scratchFlags ) { + +// atomic_lock_array_rocm_space_ptr(false); +// scratch_lock_array_rocm_space_ptr(false); +// threadid_lock_array_rocm_space_ptr(false); + + typedef Kokkos::Experimental::Impl::SharedAllocationRecord< HostSpace > RecordROCm ; + typedef Kokkos::Experimental::Impl::SharedAllocationRecord< Kokkos::Experimental::ROCmHostPinnedSpace > RecordHost ; + + RecordROCm::decrement( RecordROCm::get_record( m_scratchFlags ) ); + RecordROCm::decrement( RecordROCm::get_record( m_scratchSpace ) ); + + m_rocmDev = -1 ; + m_multiProcCount = 0 ; + m_maxWorkgroup = 0 ; + m_maxSharedWords = 0 ; + m_scratchSpaceCount = 0 ; + m_scratchFlagsCount = 0 ; + m_scratchSpace = 0 ; + m_scratchFlags = 0 ; + } +} + +//---------------------------------------------------------------------------- + +Kokkos::Experimental::ROCm::size_type rocm_internal_cu_count() +{ return ROCmInternal::singleton().m_multiProcCount ; } + +Kokkos::Experimental::ROCm::size_type rocm_internal_maximum_extent_size() +{ return ROCmInternal::singleton().m_maxWorkgroup ; } + +Kokkos::Experimental::ROCm::size_type rocm_internal_maximum_shared_words() +{ return ROCmInternal::singleton().m_maxSharedWords ; } + +Kokkos::Experimental::ROCm::size_type * rocm_internal_scratch_space( const Kokkos::Experimental::ROCm::size_type size ) +{ return ROCmInternal::singleton().scratch_space( size ); } + +Kokkos::Experimental::ROCm::size_type * rocm_internal_scratch_flags( const Kokkos::Experimental::ROCm::size_type size ) +{ return ROCmInternal::singleton().scratch_flags( size ); } + + + +} // namespace Impl +} // namespace Kokkos + +//---------------------------------------------------------------------------- + +namespace Kokkos { +namespace Experimental { + +//ROCm::size_type ROCm::detect_device_count() +//{ return Impl::ROCmInternalDevices::singleton().m_rocmDevCount ; } + +int ROCm::concurrency() { +#if defined(KOKKOS_ARCH_KAVERI) + return 8*64*40; // 20480 kaveri +#else + return 32*8*40; // 81920 fiji and hawaii +#endif +} +int ROCm::is_initialized() +{ return Kokkos::Impl::ROCmInternal::singleton().is_initialized(); } + +void ROCm::initialize( const ROCm::SelectDevice config ) +{ + Kokkos::Impl::ROCmInternal::singleton().initialize( config.rocm_device_id ); + + #if defined(KOKKOS_ENABLE_PROFILING) + Kokkos::Profiling::initialize(); + #endif +} + +#if 0 +std::vector +ROCm::detect_device_arch() +{ + const Impl::ROCmInternalDevices & s = Impl::ROCmInternalDevices::singleton(); + + std::vector output( s.m_rocmDevCount ); + + for ( int i = 0 ; i < s.m_rocmDevCount ; ++i ) { + output[i] = s.m_rocmProp[i].major * 100 + s.m_rocmProp[i].minor ; + } + + return output ; +} + +ROCm::size_type ROCm::device_arch() +{ + return 1 ; +} +#endif + +void ROCm::finalize() +{ + Kokkos::Impl::ROCmInternal::singleton().finalize(); + + #if defined(KOKKOS_ENABLE_PROFILING) + Kokkos::Profiling::finalize(); + #endif +} + +ROCm::ROCm() + : m_device( Kokkos::Impl::ROCmInternal::singleton().m_rocmDev ) +{ + Kokkos::Impl::ROCmInternal::singleton().verify_is_initialized( "ROCm instance constructor" ); +} + +bool ROCm::isAPU(int device) { + const Kokkos::Impl::ROCmInternalDevices & dev_info = + Kokkos::Impl::ROCmInternalDevices::singleton(); + return (dev_info.m_rocmProp[device].APU); +} + +bool ROCm::isAPU() { + return ROCm::isAPU(rocm_device()); +} + +//ROCm::ROCm( const int instance_id ) +// : m_device( Impl::ROCmInternal::singleton().m_rocmDev ) +//{} + +void ROCm::print_configuration( std::ostream & s , const bool ) +{ Kokkos::Impl::ROCmInternal::singleton().print_configuration( s ); } + +bool ROCm::sleep() { return false ; } + +bool ROCm::wake() { return true ; } + +void ROCm::fence() +{ + Kokkos::Impl::rocm_device_synchronize(); +} + +const char* ROCm::name() { return "ROCm"; } + +} // namespace Experimental +} // namespace Kokkos + +#endif // KOKKOS_ENABLE_ROCM +//---------------------------------------------------------------------------- + diff --git a/lib/kokkos/core/src/ROCm/Kokkos_ROCm_Invoke.hpp b/lib/kokkos/core/src/ROCm/Kokkos_ROCm_Invoke.hpp new file mode 100644 index 0000000000000000000000000000000000000000..481e7df3a431d8f68cbff760abdf8475ae1df2df --- /dev/null +++ b/lib/kokkos/core/src/ROCm/Kokkos_ROCm_Invoke.hpp @@ -0,0 +1,138 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include + +#if !defined( KOKKOS_ROCM_INVOKE_H ) +#define KOKKOS_ROCM_INVOKE_H + +namespace Kokkos { +namespace Impl { + +template()), int>::type = 0> +KOKKOS_INLINE_FUNCTION void rocm_invoke(F&& f, Ts&&... xs) +{ + f(Tag(), static_cast(xs)...); +} + +template()), int>::type = 0> +KOKKOS_INLINE_FUNCTION void rocm_invoke(F&& f, Ts&&... xs) +{ + f(static_cast(xs)...); +} + + +template +struct rocm_invoke_fn +{ + F* f; + rocm_invoke_fn(F& f_) : f(&f_) + {} + + template + KOKKOS_INLINE_FUNCTION void operator()(Ts&&... xs) const + { + rocm_invoke(*f, static_cast(xs)...); + } +}; + +template +KOKKOS_INLINE_FUNCTION rocm_invoke_fn make_rocm_invoke_fn(F& f) +{ + return {f}; +} + +template +KOKKOS_INLINE_FUNCTION T& rocm_unwrap(T& x) +{ + return x; +} + +template +KOKKOS_INLINE_FUNCTION T& rocm_unwrap(std::reference_wrapper x) +{ + return x; +} + +template +struct rocm_capture_fn +{ + F f; + T data; + + KOKKOS_INLINE_FUNCTION rocm_capture_fn(F f_, T x) + : f(f_), data(x) + {} + + template + KOKKOS_INLINE_FUNCTION void operator()(Ts&&... xs) const + { + f(rocm_unwrap(data), static_cast(xs)...); + } +}; + +template +KOKKOS_INLINE_FUNCTION rocm_capture_fn rocm_capture(F f, T x) +{ + return {f, x}; +} + +template +KOKKOS_INLINE_FUNCTION auto rocm_capture(F f, T x, U y, Ts... xs) -> decltype(rocm_capture(rocm_capture(f, x), y, xs...)) +{ + return rocm_capture(rocm_capture(f, x), y, xs...); +} + +struct rocm_apply_op +{ + template + KOKKOS_INLINE_FUNCTION void operator()(F&& f, Ts&&... xs) const + { + f(static_cast(xs)...); + } +}; + +}} + +#endif diff --git a/lib/kokkos/core/src/ROCm/Kokkos_ROCm_Join.hpp b/lib/kokkos/core/src/ROCm/Kokkos_ROCm_Join.hpp new file mode 100644 index 0000000000000000000000000000000000000000..d3d150703ed3bc4352f56f3294bffe1134cf0dad --- /dev/null +++ b/lib/kokkos/core/src/ROCm/Kokkos_ROCm_Join.hpp @@ -0,0 +1,72 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#if !defined( KOKKOS_ROCM_JOIN_H ) +#define KOKKOS_ROCM_JOIN_H + +namespace Kokkos { +namespace Impl { + + +// Adaptor to use ValueJoin with standard algorithms +template +struct join_operator +{ + const F* fp; + template + T operator()(T x, const U& y) const + { + Joiner::join(*fp, &x, &y); + return x; + } +}; + +template +join_operator make_join_operator(const F& f) +{ + return join_operator{&f}; +} + +}} + +#endif diff --git a/lib/kokkos/core/src/ROCm/Kokkos_ROCm_Parallel.hpp b/lib/kokkos/core/src/ROCm/Kokkos_ROCm_Parallel.hpp new file mode 100644 index 0000000000000000000000000000000000000000..14ab52a1c20aca9bc0d846dbd47a5744f81c029c --- /dev/null +++ b/lib/kokkos/core/src/ROCm/Kokkos_ROCm_Parallel.hpp @@ -0,0 +1,1265 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include +#include +#include +#include + + +namespace Kokkos { +namespace Impl { + +struct ROCmTeamMember ; + +template< class ... Properties > +class TeamPolicyInternal< Kokkos::Experimental::ROCm, Properties ... >: public PolicyTraits { +private: + int m_league_size ; + int m_team_size ; + int m_vector_length ; + int m_team_scratch_size[2] ; + int m_thread_scratch_size[2] ; + int m_chunk_size ; + + +public: + + using execution_policy = TeamPolicyInternal ; + using execution_space = Kokkos::Experimental::ROCm ; + typedef PolicyTraits traits; + + TeamPolicyInternal& operator = (const TeamPolicyInternal& p) { + m_league_size = p.m_league_size; + m_team_size = p.m_team_size; + m_vector_length = p.m_vector_length; + m_team_scratch_size[0] = p.m_team_scratch_size[0]; + m_team_scratch_size[1] = p.m_team_scratch_size[1]; + m_thread_scratch_size[0] = p.m_thread_scratch_size[0]; + m_thread_scratch_size[1] = p.m_thread_scratch_size[1]; + m_chunk_size = p.m_chunk_size; + return *this; + } + + TeamPolicyInternal() + : m_league_size( 0 ) + , m_team_size( 0 ) + , m_vector_length( 0 ) + , m_team_scratch_size {0,0} + , m_thread_scratch_size {0,0} + , m_chunk_size ( 64 ) + {} + + TeamPolicyInternal( const int arg_league_size + , const int arg_team_size ) + : m_league_size( arg_league_size ), + m_team_size( arg_team_size ) + , m_team_scratch_size {0,0} + , m_thread_scratch_size {0,0} + , m_chunk_size ( 64 ) + {} + + TeamPolicyInternal( const int arg_league_size + , const int arg_team_size + , const int vector_length_request=1) + : m_league_size( arg_league_size ), + m_team_size( arg_team_size ), + m_vector_length (vector_length_request) + , m_team_scratch_size {0,0} + , m_thread_scratch_size {0,0} + , m_chunk_size ( 64 ) + {} + + TeamPolicyInternal( const int arg_league_size + , const Kokkos::AUTO_t ) + : m_league_size( arg_league_size ), m_team_size( -1 ) + , m_team_scratch_size {0,0} + , m_thread_scratch_size {0,0} + , m_chunk_size ( 64 ) + {} + + TeamPolicyInternal( const int arg_league_size + , const Kokkos::AUTO_t + , const int vector_length_request) + : m_league_size( arg_league_size ), + m_team_size( -1 ), + m_vector_length (vector_length_request) + , m_team_scratch_size {0,0} + , m_thread_scratch_size {0,0} + , m_chunk_size ( 64 ) + {} + + inline int chunk_size() const { return m_chunk_size ; } + + /** \brief set chunk_size to a discrete value*/ + KOKKOS_INLINE_FUNCTION TeamPolicyInternal set_chunk_size(typename traits::index_type chunk_size_) const { + TeamPolicyInternal p = *this; + p.m_chunk_size = chunk_size_; + return p; + } + + /** \brief set per team scratch size for a specific level of the scratch hierarchy */ + inline TeamPolicyInternal set_scratch_size(const int& level, const PerTeamValue& per_team) const { + TeamPolicyInternal p = *this; + p.m_team_scratch_size[level] = per_team.value; + return p; + }; + + /** \brief set per thread scratch size for a specific level of the scratch hierarchy */ + inline TeamPolicyInternal set_scratch_size(const int& level, const PerThreadValue& per_thread) const { + TeamPolicyInternal p = *this; + p.m_thread_scratch_size[level] = per_thread.value; + return p; + }; + + /** \brief set per thread and per team scratch size for a specific level of the scratch hierarchy */ + inline TeamPolicyInternal set_scratch_size(const int& level, const PerTeamValue& per_team, const PerThreadValue& per_thread) const { + TeamPolicyInternal p = *this; + p.m_team_scratch_size[level] = per_team.value; + p.m_thread_scratch_size[level] = per_thread.value; + return p; + }; + +// TODO: evaluate proper team_size_max requirements + template< class Functor_Type> + KOKKOS_INLINE_FUNCTION static + int team_size_max( const Functor_Type & functor) + { + typedef typename Kokkos::Impl::FunctorValueTraits::value_type value_type; + return team_size_recommended(functor); + // return std::min(Kokkos::Impl::get_max_tile_size() / sizeof(value_type), Kokkos::Impl::get_max_tile_thread()); + } + + template< class Functor_Type> + KOKKOS_INLINE_FUNCTION static int team_size_recommended(const Functor_Type & functor) + { return Kokkos::Impl::get_tile_size::value_type>(); } + + template< class Functor_Type > + KOKKOS_INLINE_FUNCTION static int team_size_recommended(const Functor_Type &functor, const int vector_length) + { + int max = team_size_recommended( functor )/vector_length; + if(max < 1) max = 1; + return(max); + } + + template + KOKKOS_INLINE_FUNCTION int team_size(const F& f) const { return (m_team_size > 0) ? m_team_size : team_size_recommended(f); } + KOKKOS_INLINE_FUNCTION int team_size() const { return (m_team_size > 0) ? m_team_size : Impl::get_max_tile_thread(); ; } + KOKKOS_INLINE_FUNCTION int league_size() const { return m_league_size ; } + + + inline int vector_length() const { return m_vector_length ; } + inline int scratch_size(int level, int team_size_ = -1) const { + if(team_size_<0) team_size_ = m_team_size; + return m_team_scratch_size[level] + team_size_*m_thread_scratch_size[level]; + } + inline size_t team_scratch_size(int level) const { + return m_team_scratch_size[level]; + } + inline size_t thread_scratch_size(int level) const { + return m_thread_scratch_size[level]; + } + + typedef Impl::ROCmTeamMember member_type; +}; + + struct ROCmTeamMember { + typedef Kokkos::Experimental::ROCm execution_space ; + typedef Kokkos::ScratchMemorySpace scratch_memory_space ; + + KOKKOS_INLINE_FUNCTION + const scratch_memory_space & team_shmem() const + { return m_team_shared.set_team_thread_mode(0,1,0); } + KOKKOS_INLINE_FUNCTION + const execution_space::scratch_memory_space & team_scratch(const int& level) const + { return m_team_shared.set_team_thread_mode(level,1,0) ; } + KOKKOS_INLINE_FUNCTION + const execution_space::scratch_memory_space & thread_scratch(const int& level) const + { return m_team_shared.set_team_thread_mode(level, + team_size(), + team_rank()) ; } + + + /* Rank of this team within the league of teams */ + KOKKOS_INLINE_FUNCTION int league_rank() const { return m_idx.tile[0]; } + /* Number of teams in the league */ + KOKKOS_INLINE_FUNCTION int league_size() const { return m_league_size; } + /* Rank of this thread within this team */ + KOKKOS_INLINE_FUNCTION int team_rank() const { return m_idx.local[0] / m_vector_length; } + /* Rank of this thread within this thread */ + KOKKOS_INLINE_FUNCTION int vector_rank() const { return m_idx.local[0] % m_vector_length; } + KOKKOS_INLINE_FUNCTION int lindex() const { return m_idx.local[0]; } + KOKKOS_INLINE_FUNCTION int gindex() const { return m_idx.global[0]; } + KOKKOS_INLINE_FUNCTION int tindex() const { return m_idx.tile[0]; } + KOKKOS_INLINE_FUNCTION int tile_dim() const { return m_idx.tile_dim[0]; } + KOKKOS_INLINE_FUNCTION int team_size() const { return m_team_size; } + KOKKOS_INLINE_FUNCTION int vector_length() const { return m_vector_length; } + + + KOKKOS_INLINE_FUNCTION + ROCmTeamMember( const hc::tiled_index< 1 > & arg_idx, int league_size_,int team_size_ ) + : m_league_size( league_size_ ) + , m_team_size( team_size_ ) + , m_team_shared( nullptr, 0 ) + , m_vector_length( 1 ) + , m_idx( arg_idx ) + {} + + KOKKOS_INLINE_FUNCTION + ROCmTeamMember( const hc::tiled_index< 1 > & arg_idx, int league_size_,int team_size_, char * shared, std::size_t shsize, std::size_t scratch_size0, char * scratch_ptr, std::size_t scratch_size1, std::size_t vector_length) + : m_league_size( league_size_ ) + , m_team_size( team_size_ ) + , m_team_shared( shared + + arg_idx.tile[0]*(shsize+scratch_size0), + (shsize+scratch_size0)*league_size_, + scratch_ptr + arg_idx.tile[0]*scratch_size1, + scratch_size1*league_size_) + , m_vector_length( vector_length ) + , m_idx( arg_idx ) + {} + + KOKKOS_INLINE_FUNCTION + void team_barrier() const { + m_idx.barrier.wait(); + } + + template + KOKKOS_INLINE_FUNCTION + void team_broadcast(const ValueType& value, const int& thread_id ) const + { + static_assert(std::is_trivially_default_constructible(), "Only trivial constructible types can be broadcasted"); + tile_static ValueType local_value; + zero_init(local_value); + if (this->team_rank() == thread_id) { + local_value = value; + } + this->team_barrier(); + value = local_value; + } +// Reduce accross a team of threads. +// +// Each thread has vector_length elements. +// This reduction is for TeamThreadRange operations, where the range +// is spread across threads. Effectively, there are vector_length +// independent reduction operations. +// This is different from a reduction across the elements of a thread, +// which reduces every vector element. + + template< class ValueType, class JoinOp > + KOKKOS_INLINE_FUNCTION + ValueType team_reduce( const ValueType & value , const JoinOp & op_in) const + { + typedef JoinLambdaAdapter JoinOpFunctor ; + const JoinOpFunctor op(op_in); + + tile_static ValueType buffer[512]; + const auto local = lindex(); + const auto team = team_rank(); + auto vector_rank = local%m_vector_length; + auto thread_base = team*m_vector_length; + + const std::size_t size = next_pow_2(m_team_size+1)/2; +#if defined(ROCM15) + buffer[local] = value; +#else + // ROCM 1.5 handles address spaces better, previous version didn't + lds_for(buffer[local], [&](ValueType& x) + { + x = value; + }); +#endif + m_idx.barrier.wait(); + + for(std::size_t s = 1; s < size; s *= 2) + { + const std::size_t index = 2 * s * team; + if (index < size) + { +#if defined(ROCM15) + op.join(buffer[vector_rank+index*m_vector_length], + buffer[vector_rank+(index+s)*m_vector_length]); +#else + lds_for(buffer[vector_rank+index*m_vector_length], [&](ValueType& x) + { + lds_for(buffer[vector_rank+(index+s)*m_vector_length], + [&](ValueType& y) + { + op.join(x, y); + }); + }); +#endif + } + m_idx.barrier.wait(); + } + + if (local == 0) + { + for(int i=size*m_vector_length; i + KOKKOS_INLINE_FUNCTION + ValueType thread_reduce( const ValueType & value , const JoinOp & op_in) const + { + typedef JoinLambdaAdapter JoinOpFunctor ; + const JoinOpFunctor op(op_in); + + const auto local = m_idx.local[0]; + tile_static ValueType buffer[512]; + const std::size_t size = m_vector_length; //vector length must be power of 2 + auto vector_rank = local%m_vector_length; + auto thread_base = team_rank()*m_vector_length; + lds_for(buffer[local], [&](ValueType& x) + { + x = value; + }); + m_idx.barrier.wait(); + for(std::size_t s = 1; s < size; s *= 2) + { + const std::size_t index = 2 * s * vector_rank; + if (index < size) + { +#if defined(ROCM15) + op.join(buffer[thread_base+index], buffer[thread_base+index+s]); +#else + + lds_for(buffer[thread_base+index], [&](ValueType& x) + { + lds_for(buffer[thread_base+index+s], [&](ValueType& y) + { + op.join(x, y); + }); + }); +#endif + } + m_idx.barrier.wait(); + } + + m_idx.barrier.wait(); + return buffer[thread_base]; + } + + /** \brief Intra-team exclusive prefix sum with team_rank() ordering + * with intra-team non-deterministic ordering accumulation. + * + * The global inter-team accumulation value will, at the end of the + * league's parallel execution, be the scan's total. + * Parallel execution ordering of the league's teams is non-deterministic. + * As such the base value for each team's scan operation is similarly + * non-deterministic. + */ + template< typename Type > + KOKKOS_INLINE_FUNCTION Type team_scan( const Type & value , Type * const global_accum = nullptr ) const + { + #if 0 + const auto local = m_idx.local[0]; + const auto last = m_team_size - 1; + const auto init = 0; + tile_static Type buffer[256]; + + if (local == last) buffer[0] = init; + else buffer[local] = value; + + m_idx.barrier.wait(); + + for(std::size_t s = 1; s < m_team_size; s *= 2) + { + if (local >= s) buffer[local] += buffer[local - s]; + m_idx.barrier.wait(); + } + + if ( global_accum ) + { + if(local == last) + { + atomic_fetch_add(global_accum, buffer[local] + value); + } + m_idx.barrier.wait(); + buffer[local] += *global_accum; + } + m_idx.barrier.wait(); + return buffer[local]; +#else + tile_static Type sarray[2][256+1]; + int lid = m_idx.local[0]; + int lp1 = lid+1; + + int toggle = 1; + int _toggle = 0; + m_idx.barrier.wait(); + + if(lid == 0) + { + sarray[1][0] = 0; + sarray[0][0] = 0; + } + sarray[1][lp1] = value; + + m_idx.barrier.wait(); + for(int stride = 1; stride < m_team_size; stride*=2) + { + if(lid >= stride) + { + sarray[_toggle][lp1] = + sarray[toggle][lp1]+sarray[toggle][lp1-stride]; + } + else + { + sarray[_toggle][lp1] = sarray[toggle][lp1]; + } + toggle = _toggle; + _toggle = 1-toggle; + m_idx.barrier.wait(); + } + + if ( global_accum ) + { + if(m_team_size == lp1) + { + sarray[toggle][m_team_size] = atomic_fetch_add(global_accum,sarray[toggle][m_team_size]); + } + m_idx.barrier.wait(); + sarray[toggle][lid] += sarray[toggle][m_team_size]; + } + m_idx.barrier.wait(); + return sarray[toggle][lid]; +#endif + } + + private: + int m_league_size ; + int m_team_size ; + const scratch_memory_space m_team_shared; + + public: + int m_vector_length; + hc::tiled_index<1> m_idx; + }; +} +} // namespace Kokkos +#include + +namespace Kokkos { +namespace Impl { + +//---------------------------------------------------------------------------- + +template< class FunctorType , class... Traits > +class ParallelFor< FunctorType + , Kokkos::RangePolicy< Traits... >, Kokkos::Experimental::ROCm > +{ +private: + + typedef Kokkos::RangePolicy< Traits... > Policy ; + +public: + + inline + ParallelFor( const FunctorType & f + , const Policy & policy ) + { + + + const auto len = policy.end()-policy.begin(); + const auto offset = policy.begin(); + if(len == 0) return; +// define a lambda to work around a compiler issue. The compiler does not +// properly dereference f inside the pfe. +auto foo = [=](size_t i){rocm_invoke(f, i);}; + +#if __hcc_workweek__ > 16600 + hc::parallel_for_each(hc::extent<1>(len) , [=](const hc::index<1> & idx) [[hc]] [[hc_max_workgroup_dim(1024,1,1)]] +#else + hc::parallel_for_each(hc::extent<1>(len).tile(256) , [=](const hc::index<1> & idx) [[hc]] +#endif + { + if(idx[0] +class ParallelFor< F + , Kokkos::TeamPolicy< Traits... > + , Kokkos::Experimental::ROCm > +{ + using Policy = Kokkos::Impl::TeamPolicyInternal< Kokkos::Experimental::ROCm, Traits... >; + typedef Kokkos::Impl::FunctorValueTraits ValueTraits; + +public: + inline + ParallelFor( const F & f + , const Policy & policy ) + { + const auto league_size = policy.league_size(); + const auto team_size = policy.team_size(); + const int vector_length = policy.vector_length(); + const auto total_size = league_size * team_size * vector_length; + const int scratch_size0 = policy.scratch_size(0,team_size); + const int scratch_size1 = policy.scratch_size(1,team_size); + + if(total_size == 0) return; + + const auto shared_size = FunctorTeamShmemSize< F >::value( f , team_size ); + char * scratch = NULL; + char * shared = (char *)rocm_device_allocate(shared_size * league_size + + scratch_size0*league_size); + if(0 flat_extent( total_size ); + + hc::tiled_extent< 1 > team_extent = flat_extent.tile(team_size*vector_length); + hc::parallel_for_each( team_extent , [=](hc::tiled_index<1> idx) [[hc]] + { + rocm_invoke(f, typename Policy::member_type(idx, league_size, team_size, shared, shared_size, scratch_size0, scratch, scratch_size1,vector_length)); + }).wait(); + + if(0 +class ParallelReduce< + FunctorType , Kokkos::RangePolicy< Traits... >, ReducerType, Kokkos::Experimental::ROCm > +{ +public: + + typedef Kokkos::RangePolicy< Traits... > Policy ; + + // TODO: Use generic lambdas instead + struct invoke_fn + { + template + KOKKOS_INLINE_FUNCTION void operator()(std::size_t size, F&& f, hc::tiled_index<1> idx, tile_desc td, Ts&&... xs) const + { + auto global = idx.global[0]; + if (global < size) f(idx.global[0], static_cast(xs)...); + } + }; + + template< class ViewType > + inline + ParallelReduce( const FunctorType & f, + const Policy & policy, + const ViewType & result_view, + typename std::enable_if< + Kokkos::is_view< ViewType >::value && + !Kokkos::is_reducer_type::value + ,void*>::type = NULL) + { + typedef typename Policy::work_tag Tag; + typedef Kokkos::Impl::FunctorValueTraits< FunctorType , Tag > ValueTraits; + typedef Kokkos::Impl::FunctorValueInit< FunctorType , Tag > ValueInit; + typedef typename ValueTraits::reference_type reference_type; + + const auto total_size = policy.end() - policy.begin(); + + if(total_size==0) { + if (result_view.data()) { + ValueInit::init( f , result_view.data() ); + } + return; + } + + Kokkos::Impl::reduce_enqueue< Tag > + ( total_size + , f + , InvalidType{} + , rocm_capture(invoke_fn{}, total_size) + , result_view.data() + , result_view.extent(0) + ); + } + + inline + ParallelReduce( const FunctorType & f, + Policy policy, + const ReducerType& reducer ) + { + typedef typename Policy::work_tag Tag; + + typedef Kokkos::Impl::if_c< std::is_same::value, FunctorType, ReducerType> ReducerConditional; + typedef typename ReducerConditional::type ReducerTypeFwd; + typedef Kokkos::Impl::FunctorValueTraits< FunctorType , Tag > ValueTraits; + typedef Kokkos::Impl::FunctorValueInit< ReducerType, Tag > ValueInit ; + + typedef typename ValueTraits::reference_type reference_type; + + const auto total_size = policy.end() - policy.begin(); + + if(total_size==0) { + if (reducer.view().data()) { + ValueInit::init( ReducerConditional::select(f,reducer), + reducer.view().data() ); + } + return; + } + + Kokkos::Impl::reduce_enqueue< Tag > + ( total_size + , f + , reducer + , rocm_capture(invoke_fn{}, total_size) + , reducer.view().data() + , reducer.view().extent(0) + ); + } + + KOKKOS_INLINE_FUNCTION + void execute() const {} + +}; + +template< class FunctorType, class ReducerType, class... Traits > +class ParallelReduce< + FunctorType , Kokkos::TeamPolicy< Traits... >, ReducerType, Kokkos::Experimental::ROCm > +{ + using Policy = Kokkos::Impl::TeamPolicyInternal< Kokkos::Experimental::ROCm, Traits... >; + typedef Kokkos::Impl::FunctorValueTraits ValueTraits; + +public: + + struct invoke_fn + { + template + KOKKOS_INLINE_FUNCTION void operator()(Create&& create, F&& f, hc::tiled_index<1> idx, tile_desc td, Ts&&... xs) const + { + f(create(idx, td), static_cast(xs)...); + } + }; + + template< class ViewType > + inline + ParallelReduce( const FunctorType & f, + const Policy & policy, + const ViewType & result_view, + typename std::enable_if< + Kokkos::is_view< ViewType >::value && + !Kokkos::is_reducer_type::value + ,void*>::type = NULL) + { + const int league_size = policy.league_size(); + const int team_size = policy.team_size(f); + const int vector_length = policy.vector_length(); + const int scratch_size0 = policy.scratch_size(0,team_size); + const int scratch_size1 = policy.scratch_size(1,team_size); + const int total_size = league_size * team_size ; + + if(total_size == 0) return; + + const int reduce_size = ValueTraits::value_size( f ); + const int shared_size = FunctorTeamShmemSize< FunctorType >::value( f , team_size ); + + char * shared; + char * scratch = NULL; + + shared = (char *)rocm_device_allocate(league_size * + (shared_size + scratch_size0)); + if(0 idx, tile_desc td) + { + + return typename Policy::member_type(idx, league_size, td.team_size, + shared, shared_size, scratch_size0, + scratch, scratch_size1, + vector_length); + }; + + Kokkos::Impl::reduce_enqueue< typename Policy::work_tag > + ( total_size*vector_length + , f + , InvalidType{} + , rocm_capture(invoke_fn{}, create_team_member) + , result_view.ptr_on_device() + , result_view.dimension_0() + , team_size + , vector_length + , shared_size + ); + + if(0::value( f , team_size ); + const int scratch_size0 = policy.scratch_size(0,team_size); + const int scratch_size1 = policy.scratch_size(1,team_size); + + char * shared; + char * scratch = NULL; + shared = (char *)rocm_device_allocate((shared_size + scratch_size0) * + league_size); + if(0 idx, tile_desc td) + { + return typename Policy::member_type(idx, league_size, td.tile_size, shared, shared_size, scratch_size0, scratch, scratch_size1, vector_length); + }; + + Kokkos::Impl::reduce_enqueue< typename Policy::work_tag > + ( league_size + , f + , reducer + , rocm_capture(invoke_fn{}, create_team_member) + , reducer.view().data() + , reducer.view().extent(0),team_size,vector_length + , shared_size + ); + + if(0 +class ParallelScan< FunctorType , Kokkos::RangePolicy< Traits... >, Kokkos::Experimental::ROCm > +{ +private: + + typedef Kokkos::RangePolicy< Traits... > Policy; + typedef typename Policy::work_tag Tag; + typedef Kokkos::Impl::FunctorValueTraits< FunctorType, Tag> ValueTraits; + +public: + + //---------------------------------------- + + inline + ParallelScan( const FunctorType & f + , const Policy & policy ) + { + const auto len = policy.end()-policy.begin(); + + + if(len==0) return; + + scan_enqueue(len, f, [](hc::tiled_index<1> idx, int, int) { return idx.global[0]; }); + } + + KOKKOS_INLINE_FUNCTION + void execute() const {} + + //---------------------------------------- +}; + +template< class FunctorType , class... Traits> +class ParallelScan< FunctorType , Kokkos::TeamPolicy< Traits... >, Kokkos::Experimental::ROCm > +{ +private: + + using Policy = Kokkos::Impl::TeamPolicyInternal< Kokkos::Experimental::ROCm, Traits... >; + typedef typename Policy::work_tag Tag; + typedef Kokkos::Impl::FunctorValueTraits< FunctorType, Tag> ValueTraits; + +public: + + //---------------------------------------- + + inline + ParallelScan( const FunctorType & f + , const Policy & policy ) + { + const auto league_size = policy.league_size(); + const auto team_size = policy.team_size(f); + const auto len = league_size * team_size; + + if(len == 0) return; + + scan_enqueue(len, f, [&](hc::tiled_index<1> idx, int n_teams, int n_leagues) { return typename Policy::member_type(idx,n_leagues,n_teams); }); + } + + KOKKOS_INLINE_FUNCTION + void execute() const {} + + //---------------------------------------- +}; + +} +} + +namespace Kokkos { +namespace Impl { + template + struct TeamThreadRangeBoundariesStruct { + typedef iType index_type; + const iType start; + const iType end; + const iType increment; + const ROCmTeamMember& thread; + +#if defined( __HCC_ACCELERATOR__ ) + KOKKOS_INLINE_FUNCTION + TeamThreadRangeBoundariesStruct (const ROCmTeamMember& thread_, const iType& count): + start( thread_.team_rank() ), + end( count ), + increment( thread_.team_size() ), + thread(thread_) + {} + KOKKOS_INLINE_FUNCTION + TeamThreadRangeBoundariesStruct (const ROCmTeamMember& thread_, const iType& begin_, const iType& end_): + start( begin_ + thread_.team_rank() ), + end( end_ ), + increment( thread_.team_size() ), + thread(thread_) + {} +#else + KOKKOS_INLINE_FUNCTION + TeamThreadRangeBoundariesStruct (const ROCmTeamMember& thread_, const iType& count): + start( 0 ), + end( count ), + increment( 1 ), + thread(thread_) + {} + KOKKOS_INLINE_FUNCTION + TeamThreadRangeBoundariesStruct (const ROCmTeamMember& thread_, const iType& begin_, const iType& end_): + start( begin_ ), + end( end_ ), + increment( 1 ), + thread(thread_) + {} +#endif + }; + template + struct ThreadVectorRangeBoundariesStruct { + typedef iType index_type; + const iType start; + const iType end; + const iType increment; + const ROCmTeamMember& thread; + +#if defined( __HCC_ACCELERATOR__ ) + KOKKOS_INLINE_FUNCTION + ThreadVectorRangeBoundariesStruct (const ROCmTeamMember& thread_, const iType& count): + start( thread_.lindex()%thread_.vector_length() ), + end( count ), + increment( thread_.vector_length() ), + thread(thread_) + {} + +// KOKKOS_INLINE_FUNCTION +// ThreadVectorRangeBoundariesStruct (const iType& count): +// start( 0 ), +// end( count ), +// increment( 1 ) +// {} +#else + KOKKOS_INLINE_FUNCTION + ThreadVectorRangeBoundariesStruct (const ROCmTeamMember& thread_, const iType& count): + start( 0 ), + end( count ), + increment( 1 ), + thread(thread_) + {} + KOKKOS_INLINE_FUNCTION + ThreadVectorRangeBoundariesStruct (const iType& count): + start( 0 ), + end( count ), + increment( 1 ) + {} +#endif + }; + +} +} + +namespace Kokkos { + +template +KOKKOS_INLINE_FUNCTION +Impl::TeamThreadRangeBoundariesStruct + TeamThreadRange(const Impl::ROCmTeamMember& thread, const iType& count) { + return Impl::TeamThreadRangeBoundariesStruct(thread,count); +} + +template +KOKKOS_INLINE_FUNCTION +Impl::TeamThreadRangeBoundariesStruct::type,Impl::ROCmTeamMember> + TeamThreadRange(const Impl::ROCmTeamMember& thread, const iType1& begin, const iType2& end) { + typedef typename std::common_type< iType1, iType2 >::type iType; + return Impl::TeamThreadRangeBoundariesStruct(thread,begin,end); +} + +template +KOKKOS_INLINE_FUNCTION +Impl::ThreadVectorRangeBoundariesStruct + ThreadVectorRange(const Impl::ROCmTeamMember& thread, const iType& count) { + return Impl::ThreadVectorRangeBoundariesStruct(thread,count); +} + +KOKKOS_INLINE_FUNCTION +Impl::ThreadSingleStruct PerTeam(const Impl::ROCmTeamMember& thread) { + return Impl::ThreadSingleStruct(thread); +} + +KOKKOS_INLINE_FUNCTION +Impl::VectorSingleStruct PerThread(const Impl::ROCmTeamMember& thread) { + return Impl::VectorSingleStruct(thread); +} + +template +KOKKOS_INLINE_FUNCTION +void single(const Impl::VectorSingleStruct& single_struct, const FunctorType& lambda) { + if(single_struct.team_member.vector_rank()==0) lambda(); +} + +template +KOKKOS_INLINE_FUNCTION +void single(const Impl::ThreadSingleStruct& single_struct, const FunctorType& lambda) { + if((single_struct.team_member.lindex()==0)) lambda(); +} + +template +KOKKOS_INLINE_FUNCTION +void single(const Impl::VectorSingleStruct& single_struct, const FunctorType& lambda, ValueType& val) { +#if defined(ROCM15) + // 1.5 needs this more proper restriction on which work units run + if( single_struct.team_member.vector_rank()==0) lambda(val); + val = shfl(val,0,single_struct.team_member.vector_length()); +#else + // but older compilers are fine with this (TestTeamVector::Test< Kokkos::Experimental::ROCm >(4)) + lambda(val); +#endif +} + +template +KOKKOS_INLINE_FUNCTION +void single(const Impl::ThreadSingleStruct& single_struct, const FunctorType& lambda, ValueType& val) { + if(single_struct.team_member.lindex()==0) lambda(val); + single_struct.team_member.team_broadcast(val,0); +} + +} + +namespace Kokkos { + + /** \brief Inter-thread parallel_for. Executes lambda(iType i) for each i=0..N-1. + * + * The range i=0..N-1 is mapped to all threads of the the calling thread team. + * This functionality requires C++11 support.*/ +template +KOKKOS_INLINE_FUNCTION +void parallel_for(const Impl::TeamThreadRangeBoundariesStruct& loop_boundaries, const Lambda& lambda) { + for( iType i = loop_boundaries.start; i < loop_boundaries.end; i+=loop_boundaries.increment) + lambda(i); +} + +/** \brief Inter-thread thread range parallel_reduce. Executes lambda(iType i, ValueType & val) for each i=0..N-1. + * + * The range i=0..N-1 is mapped to all threads of the the calling thread team and a summation of + * val is performed and put into result. This functionality requires C++11 support.*/ +template< typename iType, class Lambda, typename ValueType > +KOKKOS_INLINE_FUNCTION +void parallel_reduce(const Impl::TeamThreadRangeBoundariesStruct& loop_boundaries, + const Lambda & lambda, ValueType& result) { + + result = ValueType(); + + for( iType i = loop_boundaries.start; i < loop_boundaries.end; i+=loop_boundaries.increment) { + ValueType tmp = ValueType(); + lambda(i,tmp); + result+=tmp; + } + result = loop_boundaries.thread.team_reduce(result, + Impl::JoinAdd()); +// Impl::rocm_intra_workgroup_reduction( loop_boundaries.thread, result, +// Impl::JoinAdd()); +// Impl::rocm_inter_workgroup_reduction( loop_boundaries.thread, result, +// Impl::JoinAdd()); +} + +/** \brief Intra-thread thread range parallel_reduce. Executes lambda(iType i, ValueType & val) for each i=0..N-1. + * + * The range i=0..N-1 is mapped to all vector lanes of the the calling thread and a reduction of + * val is performed using JoinType(ValueType& val, const ValueType& update) and put into init_result. + * The input value of init_result is used as initializer for temporary variables of ValueType. Therefore + * the input value should be the neutral element with respect to the join operation (e.g. '0 for +-' or + * '1 for *'). This functionality requires C++11 support.*/ +template< typename iType, class Lambda, typename ValueType, class JoinType > +KOKKOS_INLINE_FUNCTION +void parallel_reduce(const Impl::TeamThreadRangeBoundariesStruct& loop_boundaries, + const Lambda & lambda, const JoinType& join, ValueType& result) { + +#if defined(ROCM15) + ValueType tmp = result; + // Simpler code works with ROCM1.5 + for( iType i = loop_boundaries.start; i < loop_boundaries.end; i+=loop_boundaries.increment) { + lambda(i,tmp); + } + result = loop_boundaries.thread.team_reduce(tmp,join); +#else + // this workaround freezes up with ROCM1.5, but needed for earlier compilers + for( iType i = loop_boundaries.start; i < loop_boundaries.end; i+=loop_boundaries.increment) { + ValueType tmp = ValueType(); + lambda(i,tmp); + join(result,tmp); + } + result = loop_boundaries.thread.team_reduce(result,join); +#endif +// Impl::rocm_intra_workgroup_reduction( loop_boundaries.thread, result,join); +// Impl::rocm_inter_workgroup_reduction( loop_boundaries.thread, result,join); +} + +} //namespace Kokkos + + +namespace Kokkos { +/** \brief Intra-thread vector parallel_for. Executes lambda(iType i) for each i=0..N-1. + * + * The range i=0..N-1 is mapped to all vector lanes of the the calling thread. + * This functionality requires C++11 support.*/ +template +KOKKOS_INLINE_FUNCTION +void parallel_for(const Impl::ThreadVectorRangeBoundariesStruct& + loop_boundaries, const Lambda& lambda) { + + for( iType i = loop_boundaries.start; i < loop_boundaries.end; i+=loop_boundaries.increment) + lambda(i); +} + +/** \brief Intra-thread vector parallel_reduce. Executes lambda(iType i, ValueType & val) for each i=0..N-1. + * + * The range i=0..N-1 is mapped to all vector lanes of the the calling thread and a summation of + * val is performed and put into result. This functionality requires C++11 support.*/ +template< typename iType, class Lambda, typename ValueType > +KOKKOS_INLINE_FUNCTION +void parallel_reduce(const Impl::ThreadVectorRangeBoundariesStruct& + loop_boundaries, const Lambda & lambda, ValueType& result) { + result = ValueType(); + + for( iType i = loop_boundaries.start; i < loop_boundaries.end; i+=loop_boundaries.increment) { + ValueType tmp = ValueType(); + lambda(i,tmp); + result+=tmp; + } + result = loop_boundaries.thread.thread_reduce(result,Impl::JoinAdd()); +} + +/** \brief Intra-thread vector parallel_reduce. Executes lambda(iType i, ValueType & val) for each i=0..N-1. + * + * The range i=0..N-1 is mapped to all vector lanes of the the calling thread and a reduction of + * val is performed using JoinType(ValueType& val, const ValueType& update) and put into init_result. + * The input value of init_result is used as initializer for temporary variables of ValueType. Therefore + * the input value should be the neutral element with respect to the join operation (e.g. '0 for +-' or + * '1 for *'). This functionality requires C++11 support.*/ +template< typename iType, class Lambda, typename ValueType, class JoinType > +KOKKOS_INLINE_FUNCTION +void parallel_reduce(const Impl::ThreadVectorRangeBoundariesStruct& + loop_boundaries, const Lambda & lambda, const JoinType& join, ValueType& result) { + + for( iType i = loop_boundaries.start; i < loop_boundaries.end; i+=loop_boundaries.increment) { + lambda(i,result); + loop_boundaries.thread.team_barrier(); + } + result = loop_boundaries.thread.thread_reduce(result,join); +} + +/** \brief Intra-thread vector parallel exclusive prefix sum. Executes lambda(iType i, ValueType & val, bool final) + * for each i=0..N-1. + * + * The range i=0..N-1 is mapped to all vector lanes in the thread and a scan operation is performed. + * Depending on the target execution space the operator might be called twice: once with final=false + * and once with final=true. When final==true val contains the prefix sum value. The contribution of this + * "i" needs to be added to val no matter whether final==true or not. In a serial execution + * (i.e. team_size==1) the operator is only called once with final==true. Scan_val will be set + * to the final sum value over all vector lanes. + * This functionality requires C++11 support.*/ +template< typename iType, class FunctorType > +KOKKOS_INLINE_FUNCTION +void parallel_scan(const Impl::ThreadVectorRangeBoundariesStruct& + loop_boundaries, const FunctorType & lambda) { + + typedef Kokkos::Impl::FunctorValueTraits< FunctorType , void > ValueTraits ; + typedef typename ValueTraits::value_type value_type ; + + value_type scan_val = value_type(); +#if (__ROCM_ARCH__ >= 800) +// adopt the cuda vector shuffle method + const int VectorLength = loop_boundaries.increment; + int lid = loop_boundaries.thread.lindex(); + int vector_rank = lid%VectorLength; + + iType loop_bound = ((loop_boundaries.end+VectorLength-1)/VectorLength) * VectorLength; + value_type val ; + for(int _i = vector_rank; _i < loop_bound; _i += VectorLength) { + val = value_type(); + if(_i 1) { + const value_type tmp2 = shfl_up(tmp, 1,VectorLength); + if(vector_rank > 0) + tmp+=tmp2; + } + if(vector_rank == 1) + result_i = tmp; + if (VectorLength > 3) { + const value_type tmp2 = shfl_up(tmp, 2,VectorLength); + if(vector_rank > 1) + tmp+=tmp2; + } + if ((vector_rank >= 2) && + (vector_rank < 4)) + result_i = tmp; + if (VectorLength > 7) { + const value_type tmp2 = shfl_up(tmp, 4,VectorLength); + if(vector_rank > 3) + tmp+=tmp2; + } + if ((vector_rank >= 4) && + (vector_rank < 8)) + result_i = tmp; + if (VectorLength > 15) { + const value_type tmp2 = shfl_up(tmp, 8,VectorLength); + if(vector_rank > 7) + tmp+=tmp2; + } + if ((vector_rank >= 8) && + (vector_rank < 16)) + result_i = tmp; + if (VectorLength > 31) { + const value_type tmp2 = shfl_up(tmp, 16,VectorLength); + if(vector_rank > 15) + tmp+=tmp2; + } + if ((vector_rank >=16) && + (vector_rank < 32)) + result_i = tmp; + if (VectorLength > 63) { + const value_type tmp2 = shfl_up(tmp, 32,VectorLength); + if(vector_rank > 31) + tmp+=tmp2; + } + + if (vector_rank >= 32) + result_i = tmp; + + val = scan_val + result_i - val; + scan_val += shfl(tmp,VectorLength-1,VectorLength); + if(_i + +#include +#include +#include +#include +#include +#include +#include + +////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +namespace Kokkos { +namespace Impl { + +template +T* reduce_value(T* x, std::true_type) [[hc]] +{ + return x; +} + +template +T& reduce_value(T* x, std::false_type) [[hc]] +{ + return *x; +} + +#if KOKKOS_ROCM_HAS_WORKAROUNDS +struct always_true +{ + template + bool operator()(Ts&&...) const + { + return true; + } +}; +#endif + +template< class Tag, class F, class ReducerType, class Invoker, class T > +void reduce_enqueue( + const int szElements, // size of the extent + const F & f, + const ReducerType& reducer, + Invoker invoke, + T * const output_result, + int const output_length, + const int team_size=64, + const int vector_size=1, + int const shared_size=0) +{ + using namespace hc ; + + typedef Kokkos::Impl::if_c< std::is_same::value, F, ReducerType> ReducerConditional; + typedef typename ReducerConditional::type ReducerTypeFwd; + + typedef Kokkos::Impl::FunctorValueTraits< ReducerTypeFwd , Tag > ValueTraits ; + typedef Kokkos::Impl::FunctorValueInit< ReducerTypeFwd , Tag > ValueInit ; + typedef Kokkos::Impl::FunctorValueJoin< ReducerTypeFwd , Tag > ValueJoin ; + typedef Kokkos::Impl::FunctorFinal< ReducerTypeFwd , Tag > ValueFinal ; + + typedef typename ValueTraits::pointer_type pointer_type ; + typedef typename ValueTraits::reference_type reference_type ; + + if (output_length < 1) return; + + assert(output_result != nullptr); + const auto td = get_tile_desc(szElements,output_length,team_size,vector_size, shared_size); + + // allocate host and device memory for the results from each team + std::vector result_cpu(td.num_tiles*output_length); + hc::array result(td.num_tiles*output_length); + + auto fut = tile_for(td, [=,&result](hc::tiled_index<1> t_idx, tile_buffer buffer) [[hc]] + { + const auto local = t_idx.local[0]; + const auto global = t_idx.global[0]; + const auto tile = t_idx.tile[0]; + + buffer.action_at(local, [&](T* state) + { + ValueInit::init(ReducerConditional::select(f, reducer), state); + invoke(make_rocm_invoke_fn(f), t_idx, td, reduce_value(state, std::is_pointer())); + }); + t_idx.barrier.wait(); + + // Reduce within a tile using multiple threads. +// even though buffer.size is always 64, the value 64 must be hard coded below +// due to a compiler bug +// for(std::size_t s = 1; s < buffer.size(); s *= 2) + for(std::size_t s = 1; s < 64; s *= 2) + { + const std::size_t index = 2 * s * local; +// if (index < buffer.size()) + if (index < 64) + { + buffer.action_at(index, index + s, [&](T* x, T* y) + { + ValueJoin::join(ReducerConditional::select(f, reducer), x, y); + }); + } + t_idx.barrier.wait(); + } + + // Store the tile result in the global memory. + if (local == 0) + { +#if KOKKOS_ROCM_HAS_WORKAROUNDS + // Workaround for assigning from LDS memory: std::copy should work + // directly + buffer.action_at(0, [&](T* x) + { +#if ROCM15 +// new ROCM 15 address space changes aren't implemented in std algorithms yet + auto * src = reinterpret_cast(x); + auto * dest = reinterpret_cast(result.data()+tile*output_length); + for(int i=0; i + +/* only compile this file if ROCM is enabled for Kokkos */ +#if defined( __HCC__ ) && defined( KOKKOS_ENABLE_ROCM ) + +//#include + +#include +#include +#include +#include + +//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- + +namespace Kokkos { +namespace Impl { + +//---------------------------------------------------------------------------- + +template< typename T > +KOKKOS_INLINE_FUNCTION +void rocm_shfl( T & out , T const & in , int lane , + typename std::enable_if< sizeof(int) == sizeof(T) , int >::type width ) +{ + *reinterpret_cast(&out) = + __shfl( *reinterpret_cast(&in) , lane , width ); +} + +template< typename T > +KOKKOS_INLINE_FUNCTION +void rocm_shfl( T & out , T const & in , int lane , + typename std::enable_if + < ( sizeof(int) < sizeof(T) ) && ( 0 == ( sizeof(T) % sizeof(int) ) ) + , int >::type width ) +{ + enum : int { N = sizeof(T) / sizeof(int) }; + + for ( int i = 0 ; i < N ; ++i ) { + reinterpret_cast(&out)[i] = + __shfl( reinterpret_cast(&in)[i] , lane , width ); + } +} + +//---------------------------------------------------------------------------- + +template< typename T > +KOKKOS_INLINE_FUNCTION +void rocm_shfl_down( T & out , T const & in , int delta , + typename std::enable_if< sizeof(int) == sizeof(T) , int >::type width ) +{ + *reinterpret_cast(&out) = + __shfl_down( *reinterpret_cast(&in) , delta , width ); +} + +template< typename T > +KOKKOS_INLINE_FUNCTION +void rocm_shfl_down( T & out , T const & in , int delta , + typename std::enable_if + < ( sizeof(int) < sizeof(T) ) && ( 0 == ( sizeof(T) % sizeof(int) ) ) + , int >::type width ) +{ + enum : int { N = sizeof(T) / sizeof(int) }; + + for ( int i = 0 ; i < N ; ++i ) { + reinterpret_cast(&out)[i] = + __shfl_down( reinterpret_cast(&in)[i] , delta , width ); + } +} + +//---------------------------------------------------------------------------- + +template< typename T > +KOKKOS_INLINE_FUNCTION +void rocm_shfl_up( T & out , T const & in , int delta , + typename std::enable_if< sizeof(int) == sizeof(T) , int >::type width ) +{ + *reinterpret_cast(&out) = + __shfl_up( *reinterpret_cast(&in) , delta , width ); +} + +template< typename T > +KOKKOS_INLINE_FUNCTION +void rocm_shfl_up( T & out , T const & in , int delta , + typename std::enable_if + < ( sizeof(int) < sizeof(T) ) && ( 0 == ( sizeof(T) % sizeof(int) ) ) + , int >::type width ) +{ + enum : int { N = sizeof(T) / sizeof(int) }; + + for ( int i = 0 ; i < N ; ++i ) { + reinterpret_cast(&out)[i] = + __shfl_up( reinterpret_cast(&in)[i] , delta , width ); + } +} +#if 0 +//---------------------------------------------------------------------------- +/** \brief Reduce within a workgroup over team.vector_length(), the "vector" dimension. + * + * This will be called within a nested, intra-team parallel operation. + * Use shuffle operations to avoid conflicts with shared memory usage. + * + * Requires: + * team.vector_length() is power of 2 + * team.vector_length() <= 32 (one workgroup) + * + * Cannot use "butterfly" pattern because floating point + * addition is non-associative. Therefore, must broadcast + * the final result. + */ +template< class Reducer > +KOKKOS_INLINE_FUNCTION +void rocm_intra_workgroup_vector_reduce( Reducer const & reducer ) +{ + static_assert( + std::is_reference< typename Reducer::reference_type >::value , "" ); + + if ( 1 < team.vector_length() ) { + + typename Reducer::value_type tmp ; + + for ( int i = team.vector_length() ; ( i >>= 1 ) ; ) { + + rocm_shfl_down( tmp , reducer.reference() , i , team.vector_length() ); + + if ( team.vector_rank() < i ) { reducer.join( reducer.data() , & tmp ); } + } + + // Broadcast from root "lane" to all other "lanes" + + rocm_shfl( reducer.reference() , reducer.reference() , 0 , team.vector_length() ); + } +} + +/** \brief Inclusive scan over team.vector_length(), the "vector" dimension. + * + * This will be called within a nested, intra-team parallel operation. + * Use shuffle operations to avoid conflicts with shared memory usage. + * + * Algorithm is concurrent bottom-up reductions in triangular pattern + * where each ROCM thread is the root of a reduction tree from the + * zeroth ROCM thread to itself. + * + * Requires: + * team.vector_length() is power of 2 + * team.vector_length() <= 32 (one workgroup) + */ +template< typename ValueType > +KOKKOS_INLINE_FUNCTION +void rocm_intra_workgroup_vector_inclusive_scan( ValueType & local ) +{ + ValueType tmp ; + + // Bottom up: + // [t] += [t-1] if t >= 1 + // [t] += [t-2] if t >= 2 + // [t] += [t-4] if t >= 4 + // ... + + for ( int i = 1 ; i < team.vector_length() ; i <<= 1 ) { + + rocm_shfl_up( tmp , local , i , team.vector_length() ); + + if ( i <= team.vector_rank() ) { local += tmp ; } + } +} +#endif + +//---------------------------------------------------------------------------- +/* + * Algorithmic constraints: + * (a) threads with same team.team_rank() have same value + * (b) team.vector_length() == power of two + * (c) blockDim.z == 1 + */ + +template< class ValueType , class JoinOp> +KOKKOS_INLINE_FUNCTION +void rocm_intra_workgroup_reduction( const ROCmTeamMember& team, + ValueType& result, + const JoinOp& join) { + + unsigned int shift = 1; + int max_active_thread = team.team_size(); + + //Reduce over values from threads with different team.team_rank() + while(team.vector_length() * shift < 32 ) { + const ValueType tmp = shfl_down(result, team.vector_length()*shift,32u); + //Only join if upper thread is active (this allows non power of two for team.team_size() + if(team.team_rank() + shift < max_active_thread) + join(result , tmp); + shift*=2; + } + + result = shfl(result,0,32); +} + +template< class ValueType , class JoinOp> +KOKKOS_INLINE_FUNCTION +void rocm_inter_workgroup_reduction( const ROCmTeamMember& team, + ValueType& value, + const JoinOp& join) { + + #define STEP_WIDTH 4 + + tile_static ValueType sh_result[256]; + int max_active_thread = team.team_size(); + ValueType* result = (ValueType*) & sh_result; + const unsigned step = 256 / team.vector_length(); + unsigned shift = STEP_WIDTH; + const int id = team.team_rank()%step==0?team.team_rank()/step:65000; + if(id < STEP_WIDTH ) { + result[id] = value; + } + team.team_barrier(); + + while (shift<=max_active_thread/step) { + if(shift<=id && shift+STEP_WIDTH>id && team.vector_rank()==0) { + join(result[id%STEP_WIDTH],value); + } + team.team_barrier(); + shift+=STEP_WIDTH; + } + + + value = result[0]; + for(int i = 1; (i*step +KOKKOS_INLINE_FUNCTION +void rocm_intra_block_reduction( ROCmTeamMember& team, + ValueType& value, + const JoinOp& join, + const int max_active_thread) { + rocm_intra_workgroup_reduction(team,value,join,max_active_thread); + rocm_inter_workgroup_reduction(team,value,join,max_active_thread); +} + +template< class FunctorType , class JoinOp , class ArgTag = void > +KOKKOS_INLINE_FUNCTION +bool rocm_inter_block_reduction( ROCmTeamMember& team, + typename FunctorValueTraits< FunctorType , ArgTag >::reference_type value, + typename FunctorValueTraits< FunctorType , ArgTag >::reference_type neutral, + const JoinOp& join, + ROCm::size_type * const m_scratch_space, + typename FunctorValueTraits< FunctorType , ArgTag >::pointer_type const result, + ROCm::size_type * const m_scratch_flags, + const int max_active_thread) { +#ifdef __ROCM_ARCH__ + typedef typename FunctorValueTraits< FunctorType , ArgTag >::pointer_type pointer_type; + typedef typename FunctorValueTraits< FunctorType , ArgTag >::value_type value_type; + + //Do the intra-block reduction with shfl operations and static shared memory + rocm_intra_block_reduction(value,join,max_active_thread); + + const unsigned id = team.team_rank()*team.vector_length() + team.vector_rank(); + + //One thread in the block writes block result to global scratch_memory + if(id == 0 ) { + pointer_type global = ((pointer_type) m_scratch_space) + blockIdx.x; + *global = value; + } + + //One workgroup of last block performs inter block reduction through loading the block values from global scratch_memory + bool last_block = false; + + team.team_barrier(); + if ( id < 32 ) { + ROCm::size_type count; + + //Figure out whether this is the last block + if(id == 0) + count = Kokkos::atomic_fetch_add(m_scratch_flags,1); + count = Kokkos::shfl(count,0,32); + + //Last block does the inter block reduction + if( count == gridDim.x - 1) { + //set flag back to zero + if(id == 0) + *m_scratch_flags = 0; + last_block = true; + value = neutral; + + pointer_type const volatile global = (pointer_type) m_scratch_space ; + + //Reduce all global values with splitting work over threads in one workgroup + const int step_size = team.vector_length()*team.team_size() < 32 ? team.vector_length()*team.team_size() : 32; + for(int i=id; i 1) { + value_type tmp = Kokkos::shfl_down(value, 1,32); + if( id + 1 < gridDim.x ) + join(value, tmp); + } + if (team.vector_length()*team.team_size() > 2) { + value_type tmp = Kokkos::shfl_down(value, 2,32); + if( id + 2 < gridDim.x ) + join(value, tmp); + } + if (team.vector_length()*team.team_size() > 4) { + value_type tmp = Kokkos::shfl_down(value, 4,32); + if( id + 4 < gridDim.x ) + join(value, tmp); + } + if (team.vector_length()*team.team_size() > 8) { + value_type tmp = Kokkos::shfl_down(value, 8,32); + if( id + 8 < gridDim.x ) + join(value, tmp); + } + if (team.vector_length()*team.team_size() > 16) { + value_type tmp = Kokkos::shfl_down(value, 16,32); + if( id + 16 < gridDim.x ) + join(value, tmp); + } + } + } + + //The last block has in its thread=0 the global reduction value through "value" + return last_block; +#else + return true; +#endif +} +#endif +#if 0 + +//---------------------------------------------------------------------------- +// See section B.17 of ROCm C Programming Guide Version 3.2 +// for discussion of +// __launch_bounds__(maxThreadsPerBlock,minBlocksPerMultiprocessor) +// function qualifier which could be used to improve performance. +//---------------------------------------------------------------------------- +// Maximize shared memory and minimize L1 cache: +// rocmFuncSetCacheConfig(MyKernel, rocmFuncCachePreferShared ); +// For 2.0 capability: 48 KB shared and 16 KB L1 +//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- +/* + * Algorithmic constraints: + * (a) team.team_size() is a power of two + * (b) team.team_size() <= 512 + * (c) team.vector_length() == blockDim.z == 1 + */ + +template< bool DoScan , class FunctorType , class ArgTag > +KOKKOS_INLINE_FUNCTION +void rocm_intra_block_reduce_scan( const FunctorType & functor , + const typename FunctorValueTraits< FunctorType , ArgTag >::pointer_type base_data ) +{ + typedef FunctorValueTraits< FunctorType , ArgTag > ValueTraits ; + typedef FunctorValueJoin< FunctorType , ArgTag > ValueJoin ; + + typedef typename ValueTraits::pointer_type pointer_type ; + + const unsigned value_count = ValueTraits::value_count( functor ); + const unsigned BlockSizeMask = team.team_size() - 1 ; + + // Must have power of two thread count + + if ( BlockSizeMask & team.team_size() ) { Kokkos::abort("ROCm::rocm_intra_block_scan requires power-of-two blockDim"); } + +#define BLOCK_REDUCE_STEP( R , TD , S ) \ + if ( ! ( R & ((1<<(S+1))-1) ) ) { ValueJoin::join( functor , TD , (TD - (value_count< +KOKKOS_INLINE_FUNCTION +bool rocm_single_inter_block_reduce_scan( const FunctorType & functor , + const ROCm::size_type block_id , + const ROCm::size_type block_count , + ROCm::size_type * const shared_data , + ROCm::size_type * const global_data , + ROCm::size_type * const global_flags ) +{ + typedef ROCm::size_type size_type ; + typedef FunctorValueTraits< FunctorType , ArgTag > ValueTraits ; + typedef FunctorValueJoin< FunctorType , ArgTag > ValueJoin ; + typedef FunctorValueInit< FunctorType , ArgTag > ValueInit ; + typedef FunctorValueOps< FunctorType , ArgTag > ValueOps ; + + typedef typename ValueTraits::pointer_type pointer_type ; + typedef typename ValueTraits::reference_type reference_type ; + typedef typename ValueTraits::value_type value_type ; + + // '__ffs' = position of the least significant bit set to 1. + // 'team.team_size()' is guaranteed to be a power of two so this + // is the integral shift value that can replace an integral divide. + const unsigned BlockSizeShift = __ffs( team.team_size() ) - 1 ; + const unsigned BlockSizeMask = team.team_size() - 1 ; + + // Must have power of two thread count + if ( BlockSizeMask & team.team_size() ) { Kokkos::abort("ROCm::rocm_single_inter_block_reduce_scan requires power-of-two blockDim"); } + + const integral_nonzero_constant< size_type , ValueTraits::StaticValueSize / sizeof(size_type) > + word_count( ValueTraits::value_size( functor ) / sizeof(size_type) ); + + // Reduce the accumulation for the entire block. + rocm_intra_block_reduce_scan( functor , pointer_type(shared_data) ); + + { + // Write accumulation total to global scratch space. + // Accumulation total is the last thread's data. + size_type * const shared = shared_data + word_count.value * BlockSizeMask ; + size_type * const global = global_data + word_count.value * block_id ; + +#if (__ROCM_ARCH__ < 500) + for ( size_type i = team.team_rank() ; i < word_count.value ; i += team.team_size() ) { global[i] = shared[i] ; } +#else + for ( size_type i = 0 ; i < word_count.value ; i += 1 ) { global[i] = shared[i] ; } +#endif + + } + + // Contributing blocks note that their contribution has been completed via an atomic-increment flag + // If this block is not the last block to contribute to this group then the block is done. + team.team_barrier(); + const bool is_last_block = + ! team.team_reduce( team.team_rank() ? 0 : ( 1 + atomicInc( global_flags , block_count - 1 ) < block_count ) ,Impl::JoinAdd()); + + if ( is_last_block ) { + + const size_type b = ( long(block_count) * long(team.team_rank()) ) >> BlockSizeShift ; + const size_type e = ( long(block_count) * long( team.team_rank() + 1 ) ) >> BlockSizeShift ; + + { + void * const shared_ptr = shared_data + word_count.value * team.team_rank() ; + reference_type shared_value = ValueInit::init( functor , shared_ptr ); + + for ( size_type i = b ; i < e ; ++i ) { + ValueJoin::join( functor , shared_ptr , global_data + word_count.value * i ); + } + } + + rocm_intra_block_reduce_scan( functor , pointer_type(shared_data) ); + + if ( DoScan ) { + + size_type * const shared_value = shared_data + word_count.value * ( team.team_rank() ? team.team_rank() - 1 : team.team_size() ); + + if ( ! team.team_rank() ) { ValueInit::init( functor , shared_value ); } + + // Join previous inclusive scan value to each member + for ( size_type i = b ; i < e ; ++i ) { + size_type * const global_value = global_data + word_count.value * i ; + ValueJoin::join( functor , shared_value , global_value ); + ValueOps ::copy( functor , global_value , shared_value ); + } + } + } + + return is_last_block ; +} + +// Size in bytes required for inter block reduce or scan +template< bool DoScan , class FunctorType , class ArgTag > +inline +unsigned rocm_single_inter_block_reduce_scan_shmem( const FunctorType & functor , const unsigned BlockSize ) +{ + return ( BlockSize + 2 ) * Impl::FunctorValueTraits< FunctorType , ArgTag >::value_size( functor ); +} +#endif + +} // namespace Impl +} // namespace Kokkos + +//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- + +#endif /* #if defined( __ROCMCC__ ) */ +#endif /* KOKKOS_ROCM_REDUCESCAN_HPP */ + diff --git a/lib/kokkos/core/src/ROCm/Kokkos_ROCm_Scan.hpp b/lib/kokkos/core/src/ROCm/Kokkos_ROCm_Scan.hpp new file mode 100644 index 0000000000000000000000000000000000000000..acf75f6f1366fbc618e075ded29e52f7aa1a742c --- /dev/null +++ b/lib/kokkos/core/src/ROCm/Kokkos_ROCm_Scan.hpp @@ -0,0 +1,157 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include + +namespace Kokkos { +namespace Impl { + +template< class Tag, class F, class TransformIndex> +void scan_enqueue( + const int len, + const F & f, + TransformIndex transform_index) +{ + typedef Kokkos::Impl::FunctorValueTraits< F, Tag> ValueTraits; + typedef Kokkos::Impl::FunctorValueInit< F, Tag> ValueInit; + typedef Kokkos::Impl::FunctorValueJoin< F, Tag> ValueJoin; + typedef Kokkos::Impl::FunctorValueOps< F, Tag> ValueOps; + + typedef typename ValueTraits::value_type value_type; + typedef typename ValueTraits::pointer_type pointer_type; + typedef typename ValueTraits::reference_type reference_type; + + const auto td = get_tile_desc(len); + std::vector result_cpu(td.num_tiles); + hc::array result(td.num_tiles); + hc::array scratch(len); + + tile_for(td, [&,len,td](hc::tiled_index<1> t_idx, tile_buffer buffer) [[hc]] + { + const auto local = t_idx.local[0]; + const auto global = t_idx.global[0]; + const auto tile = t_idx.tile[0]; + + // Join tile buffer elements + const auto join = [&](std::size_t i, std::size_t j) + { + buffer.action_at(i, j, [&](value_type& x, const value_type& y) + { + ValueJoin::join(f, &x, &y); + }); + }; + + // Copy into tile + buffer.action_at(local, [&](value_type& state) + { + ValueInit::init(f, &state); + if (global < len) rocm_invoke(f, transform_index(t_idx, td.tile_size, td.num_tiles), state, false); + }); + t_idx.barrier.wait(); + // Up sweep phase + for(std::size_t d=1;d0;d/=2) + { + auto d2 = 2*d; + auto i = local*d2; + if(i1) +// std::partial_sum(result_cpu.data(), result_cpu.data()+(td.num_tiles-1)*sizeof(value_type), result_cpu.data(), make_join_operator(f)); +// use this implementation instead. + for(int i=1; i(len).tile(td.tile_size), [&,len,td](hc::tiled_index<1> t_idx) [[hc]] + { +// const auto local = t_idx.local[0]; + const auto global = t_idx.global[0]; + const auto tile = t_idx.tile[0]; + + if (global < len) + { + auto final_state = scratch[global]; + +// the join is locking up, at least with 1.6 + if (tile != 0) final_state += result[tile-1]; +// if (tile != 0) ValueJoin::join(f, &final_state, &result[tile-1]); + rocm_invoke(f, transform_index(t_idx, td.tile_size, td.num_tiles), final_state, true); + } + }).wait(); +} + +} // namespace Impl +} // namespace Kokkos diff --git a/lib/kokkos/core/src/ROCm/Kokkos_ROCm_Space.cpp b/lib/kokkos/core/src/ROCm/Kokkos_ROCm_Space.cpp new file mode 100644 index 0000000000000000000000000000000000000000..e2b673807641b718b30aaa2fdd76e26a064de3de --- /dev/null +++ b/lib/kokkos/core/src/ROCm/Kokkos_ROCm_Space.cpp @@ -0,0 +1,726 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include +#include +#include +#include +#include +#include + +/* only compile this file if ROCM is enabled for Kokkos */ +#ifdef KOKKOS_ENABLE_ROCM + +#include +#include +#include + +#include + +#if defined(KOKKOS_ENABLE_PROFILING) +#include +#endif + + +/*--------------------------------------------------------------------------*/ +/*--------------------------------------------------------------------------*/ +#define ROCM_SAFE_CALL +namespace Kokkos { +namespace Impl { +using namespace hc; + +DeepCopy::DeepCopy( void * dst , const void * src , size_t n ) +{ + hc::accelerator acc; + hc::accelerator_view av = acc.get_default_view(); + av.copy( src , dst , n); +} + + +DeepCopy::DeepCopy( void * dst , const void * src , size_t n ) +{ + hc::accelerator acc; + hc::accelerator_view av = acc.get_default_view(); + av.copy( src , dst , n); +} + +DeepCopy::DeepCopy( void * dst , const void * src , size_t n ) +{ + hc::accelerator acc; + hc::accelerator_view av = acc.get_default_view(); + av.copy( src , dst , n); +} + +DeepCopy::DeepCopy( const Kokkos::Experimental::ROCm & instance , void * dst , const void * src , size_t n ) +{ + hc::accelerator acc; + hc::accelerator_view av = acc.get_default_view(); + av.copy( src , dst , n); +} + +DeepCopy::DeepCopy( const Kokkos::Experimental::ROCm & instance , void * dst , const void * src , size_t n ) +{ + hc::accelerator acc; + hc::accelerator_view av = acc.get_default_view(); + av.copy( src , dst , n); +} + +DeepCopy::DeepCopy( const Kokkos::Experimental::ROCm & instance , void * dst , const void * src , size_t n ) +{ + hc::accelerator acc; + hc::accelerator_view av = acc.get_default_view(); + av.copy( src , dst , n); +} + + + +DeepCopy::DeepCopy( void * dst , const void * src , size_t n ) +{ + hc::accelerator acc; + hc::accelerator_view av = acc.get_default_view(); + av.copy( src , dst , n); +} + + +DeepCopy::DeepCopy( void * dst , const void * src , size_t n ) +{ + hc::accelerator acc; + hc::accelerator_view av = acc.get_default_view(); + av.copy( src , dst , n); +} + +DeepCopy::DeepCopy( void * dst , const void * src , size_t n ) +{ + hc::accelerator acc; + hc::accelerator_view av = acc.get_default_view(); + av.copy( src , dst , n); +} + +DeepCopy::DeepCopy( const Kokkos::Experimental::ROCm & instance , void * dst , const void * src , size_t n ) +{ + hc::accelerator acc; + hc::accelerator_view av = acc.get_default_view(); + av.copy( src , dst , n); +} + +DeepCopy::DeepCopy( const Kokkos::Experimental::ROCm & instance , void * dst , const void * src , size_t n ) +{ + hc::accelerator acc; + hc::accelerator_view av = acc.get_default_view(); + av.copy( src , dst , n); +} + +DeepCopy::DeepCopy( const Kokkos::Experimental::ROCm & instance , void * dst , const void * src , size_t n ) +{ + hc::accelerator acc; + hc::accelerator_view av = acc.get_default_view(); + av.copy( src , dst , n); +} + + +hc::completion_future DeepCopyAsyncROCm( void * dst , const void * src , size_t n) { + hc::accelerator acc; + hc::accelerator_view av = acc.get_default_view(); + return(av.copy_async( src , dst , n)); +} + +} // namespace Impl +} // namespace Kokkos + +/*--------------------------------------------------------------------------*/ +/*--------------------------------------------------------------------------*/ + + +namespace Kokkos { + +void Experimental::ROCmSpace::access_error() +{ + const std::string msg("Kokkos::Experimental::ROCmSpace::access_error attempt to execute Experimental::ROCm function from non-ROCm space" ); + Kokkos::Impl::throw_runtime_exception( msg ); +} + +void Experimental::ROCmSpace::access_error( const void * const ) +{ + const std::string msg("Kokkos::Experimental::ROCmSpace::access_error attempt to execute Experimental::ROCm function from non-ROCm space" ); + Kokkos::Impl::throw_runtime_exception( msg ); +} + +} // namespace Kokkos + +/*--------------------------------------------------------------------------*/ +/*--------------------------------------------------------------------------*/ + +namespace Kokkos { +namespace Experimental { + +ROCmSpace::ROCmSpace() + : m_device( ROCm().rocm_device() ) +{ +} + +ROCmHostPinnedSpace::ROCmHostPinnedSpace() +{ +} + +void * ROCmSpace::allocate( const size_t arg_alloc_size ) const +{ + void * ptr = Kokkos::Impl::rocm_device_allocate( arg_alloc_size ); + return ptr ; +} + +void * Experimental::ROCmHostPinnedSpace::allocate( const size_t arg_alloc_size ) const +{ + void * ptr = Kokkos::Impl::rocm_hostpinned_allocate( arg_alloc_size ); + return ptr ; +} + +void ROCmSpace::deallocate( void * const arg_alloc_ptr , const size_t /* arg_alloc_size */ ) const +{ + Kokkos::Impl::rocm_device_free(arg_alloc_ptr); +} + +void Experimental::ROCmHostPinnedSpace::deallocate( void * const arg_alloc_ptr , const size_t /* arg_alloc_size */ ) const +{ + Kokkos::Impl::rocm_device_free(arg_alloc_ptr); +} + +} // namespace Experimental +} // namespace Kokkos + +//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- + +namespace Kokkos { +namespace Impl { + +SharedAllocationRecord< void , void > +SharedAllocationRecord< Kokkos::Experimental::ROCmSpace , void >::s_root_record ; + +SharedAllocationRecord< void , void > +SharedAllocationRecord< Kokkos::Experimental::ROCmHostPinnedSpace , void >::s_root_record ; + + +std::string +SharedAllocationRecord< Kokkos::Experimental::ROCmSpace , void >::get_label() const +{ + SharedAllocationHeader header ; + + Kokkos::Impl::DeepCopy< Kokkos::HostSpace , Kokkos::Experimental::ROCmSpace >( & header , RecordBase::head() , sizeof(SharedAllocationHeader) ); + + return std::string( header.m_label ); +} + +std::string +SharedAllocationRecord< Kokkos::Experimental::ROCmHostPinnedSpace , void >::get_label() const +{ + return std::string( RecordBase::head()->m_label ); +} + +SharedAllocationRecord< Kokkos::Experimental::ROCmSpace , void > * +SharedAllocationRecord< Kokkos::Experimental::ROCmSpace , void >:: +allocate( const Kokkos::Experimental::ROCmSpace & arg_space + , const std::string & arg_label + , const size_t arg_alloc_size + ) +{ + return new SharedAllocationRecord( arg_space , arg_label , arg_alloc_size ); +} + +SharedAllocationRecord< Kokkos::Experimental::ROCmHostPinnedSpace , void > * +SharedAllocationRecord< Kokkos::Experimental::ROCmHostPinnedSpace , void >:: +allocate( const Kokkos::Experimental::ROCmHostPinnedSpace & arg_space + , const std::string & arg_label + , const size_t arg_alloc_size + ) +{ + return new SharedAllocationRecord( arg_space , arg_label , arg_alloc_size ); +} + +void +SharedAllocationRecord< Kokkos::Experimental::ROCmSpace , void >:: +deallocate( SharedAllocationRecord< void , void > * arg_rec ) +{ + delete static_cast(arg_rec); +} + +void +SharedAllocationRecord< Kokkos::Experimental::ROCmHostPinnedSpace , void >:: +deallocate( SharedAllocationRecord< void , void > * arg_rec ) +{ + delete static_cast(arg_rec); +} + +SharedAllocationRecord< Kokkos::Experimental::ROCmSpace , void >:: +~SharedAllocationRecord() +{ + #if defined(KOKKOS_ENABLE_PROFILING) + if(Kokkos::Profiling::profileLibraryLoaded()) { + + SharedAllocationHeader header ; + Kokkos::Impl::DeepCopy( & header , RecordBase::m_alloc_ptr , sizeof(SharedAllocationHeader) ); + + Kokkos::Profiling::deallocateData( + Kokkos::Profiling::SpaceHandle(Kokkos::Experimental::ROCmSpace::name()),header.m_label, + data(),size()); + } + #endif + + m_space.deallocate( SharedAllocationRecord< void , void >::m_alloc_ptr + , SharedAllocationRecord< void , void >::m_alloc_size + ); +} + +SharedAllocationRecord< Kokkos::Experimental::ROCmHostPinnedSpace , void >:: +~SharedAllocationRecord() +{ + #if defined(KOKKOS_ENABLE_PROFILING) + if(Kokkos::Profiling::profileLibraryLoaded()) { + Kokkos::Profiling::deallocateData( + Kokkos::Profiling::SpaceHandle(Kokkos::Experimental::ROCmHostPinnedSpace::name()),RecordBase::m_alloc_ptr->m_label, + data(),size()); + } + #endif + + m_space.deallocate( SharedAllocationRecord< void , void >::m_alloc_ptr + , SharedAllocationRecord< void , void >::m_alloc_size + ); +} + +SharedAllocationRecord< Kokkos::Experimental::ROCmSpace , void >:: +SharedAllocationRecord( const Kokkos::Experimental::ROCmSpace & arg_space + , const std::string & arg_label + , const size_t arg_alloc_size + , const SharedAllocationRecord< void , void >::function_type arg_dealloc + ) + // Pass through allocated [ SharedAllocationHeader , user_memory ] + // Pass through deallocation function + : SharedAllocationRecord< void , void > + ( & SharedAllocationRecord< Kokkos::Experimental::ROCmSpace , void >::s_root_record + , reinterpret_cast( arg_space.allocate( sizeof(SharedAllocationHeader) + arg_alloc_size ) ) + , sizeof(SharedAllocationHeader) + arg_alloc_size + , arg_dealloc + ) + , m_space( arg_space ) +{ + #if defined(KOKKOS_ENABLE_PROFILING) + if(Kokkos::Profiling::profileLibraryLoaded()) { + Kokkos::Profiling::allocateData(Kokkos::Profiling::SpaceHandle(arg_space.name()),arg_label,data(),arg_alloc_size); + } + #endif + + SharedAllocationHeader header ; + + // Fill in the Header information + header.m_record = static_cast< SharedAllocationRecord< void , void > * >( this ); + + strncpy( header.m_label + , arg_label.c_str() + , SharedAllocationHeader::maximum_label_length + ); + + // Copy to device memory + Kokkos::Impl::DeepCopy( RecordBase::m_alloc_ptr , & header , sizeof(SharedAllocationHeader) ); +} + +SharedAllocationRecord< Kokkos::Experimental::ROCmHostPinnedSpace , void >:: +SharedAllocationRecord( const Kokkos::Experimental::ROCmHostPinnedSpace & arg_space + , const std::string & arg_label + , const size_t arg_alloc_size + , const SharedAllocationRecord< void , void >::function_type arg_dealloc + ) + // Pass through allocated [ SharedAllocationHeader , user_memory ] + // Pass through deallocation function + : SharedAllocationRecord< void , void > + ( & SharedAllocationRecord< Kokkos::Experimental::ROCmHostPinnedSpace , void >::s_root_record + , reinterpret_cast( arg_space.allocate( sizeof(SharedAllocationHeader) + arg_alloc_size ) ) + , sizeof(SharedAllocationHeader) + arg_alloc_size + , arg_dealloc + ) + , m_space( arg_space ) +{ + #if defined(KOKKOS_ENABLE_PROFILING) + if(Kokkos::Profiling::profileLibraryLoaded()) { + Kokkos::Profiling::allocateData(Kokkos::Profiling::SpaceHandle(arg_space.name()),arg_label,data(),arg_alloc_size); + } + #endif + // Fill in the Header information, directly accessible via host pinned memory + + RecordBase::m_alloc_ptr->m_record = this ; + + strncpy( RecordBase::m_alloc_ptr->m_label + , arg_label.c_str() + , SharedAllocationHeader::maximum_label_length + ); +} + +//---------------------------------------------------------------------------- + +void * SharedAllocationRecord< Kokkos::Experimental::ROCmSpace , void >:: +allocate_tracked( const Kokkos::Experimental::ROCmSpace & arg_space + , const std::string & arg_alloc_label + , const size_t arg_alloc_size ) +{ + if ( ! arg_alloc_size ) return (void *) 0 ; + + SharedAllocationRecord * const r = + allocate( arg_space , arg_alloc_label , arg_alloc_size ); + + RecordBase::increment( r ); + + return r->data(); +} + +void SharedAllocationRecord< Kokkos::Experimental::ROCmSpace , void >:: +deallocate_tracked( void * const arg_alloc_ptr ) +{ + if ( arg_alloc_ptr != 0 ) { + SharedAllocationRecord * const r = get_record( arg_alloc_ptr ); + + RecordBase::decrement( r ); + } +} + +void * SharedAllocationRecord< Kokkos::Experimental::ROCmSpace , void >:: +reallocate_tracked( void * const arg_alloc_ptr + , const size_t arg_alloc_size ) +{ + SharedAllocationRecord * const r_old = get_record( arg_alloc_ptr ); + SharedAllocationRecord * const r_new = allocate( r_old->m_space , r_old->get_label() , arg_alloc_size ); + + Kokkos::Impl::DeepCopy( r_new->data() , r_old->data() + , std::min( r_old->size() , r_new->size() ) ); + + RecordBase::increment( r_new ); + RecordBase::decrement( r_old ); + + return r_new->data(); +} + +#if 0 +void * SharedAllocationRecord< Kokkos::Experimental::ROCmHostPinnedSpace , void >:: +allocate_tracked( const Kokkos::Experimental::ROCmHostPinnedSpace & arg_space + , const std::string & arg_alloc_label + , const size_t arg_alloc_size ) +{ + if ( ! arg_alloc_size ) return (void *) 0 ; + + SharedAllocationRecord * const r = + allocate( arg_space , arg_alloc_label , arg_alloc_size ); + + RecordBase::increment( r ); + + return r->data(); +} + +void SharedAllocationRecord< Kokkos::Experimental::ROCmHostPinnedSpace , void >:: +deallocate_tracked( void * const arg_alloc_ptr ) +{ + if ( arg_alloc_ptr != 0 ) { + SharedAllocationRecord * const r = get_record( arg_alloc_ptr ); + + RecordBase::decrement( r ); + } +} + +void * SharedAllocationRecord< Kokkos::Experimental::ROCmHostPinnedSpace , void >:: +reallocate_tracked( void * const arg_alloc_ptr + , const size_t arg_alloc_size ) +{ + SharedAllocationRecord * const r_old = get_record( arg_alloc_ptr ); + SharedAllocationRecord * const r_new = allocate( r_old->m_space , r_old->get_label() , arg_alloc_size ); + + Kokkos::Impl::DeepCopy( r_new->data() , r_old->data() + , std::min( r_old->size() , r_new->size() ) ); + + RecordBase::increment( r_new ); + RecordBase::decrement( r_old ); + + return r_new->data(); +} +#endif + +//---------------------------------------------------------------------------- + +SharedAllocationRecord< Kokkos::Experimental::ROCmSpace , void > * +SharedAllocationRecord< Kokkos::Experimental::ROCmSpace , void >::get_record( void * alloc_ptr ) +{ + using Header = SharedAllocationHeader ; + using RecordBase = SharedAllocationRecord< void , void > ; + using RecordROCm = SharedAllocationRecord< Kokkos::Experimental::ROCmSpace , void > ; + +#if 0 + // Copy the header from the allocation + Header head ; + + Header const * const head_rocm = alloc_ptr ? Header::get_header( alloc_ptr ) : (Header*) 0 ; + + if ( alloc_ptr ) { + Kokkos::Impl::DeepCopy( & head , head_rocm , sizeof(SharedAllocationHeader) ); + } + + RecordROCm * const record = alloc_ptr ? static_cast< RecordROCm * >( head.m_record ) : (RecordROCm *) 0 ; + + if ( ! alloc_ptr || record->m_alloc_ptr != head_rocm ) { + Kokkos::Impl::throw_runtime_exception( std::string("Kokkos::Impl::SharedAllocationRecord< Kokkos::Experimental::ROCmSpace , void >::get_record ERROR" ) ); + } + +#else + + // Iterate the list to search for the record among all allocations + // requires obtaining the root of the list and then locking the list. + + RecordROCm * const record = static_cast< RecordROCm * >( RecordBase::find( & s_root_record , alloc_ptr ) ); + + if ( record == 0 ) { + Kokkos::Impl::throw_runtime_exception( std::string("Kokkos::Impl::SharedAllocationRecord< Kokkos::Experimental::ROCmSpace , void >::get_record ERROR" ) ); + } + +#endif + + return record ; +} + +#if 0 +SharedAllocationRecord< Kokkos::Experimental::ROCmHostPinnedSpace , void > * +SharedAllocationRecord< Kokkos::Experimental::ROCmHostPinnedSpace , void >::get_record( void * alloc_ptr ) +{ + using Header = SharedAllocationHeader ; + using RecordROCm = SharedAllocationRecord< Kokkos::Experimental::ROCmHostPinnedSpace , void > ; + + Header * const h = alloc_ptr ? reinterpret_cast< Header * >( alloc_ptr ) - 1 : (Header *) 0 ; + + if ( ! alloc_ptr || h->m_record->m_alloc_ptr != h ) { + Kokkos::Impl::throw_runtime_exception( std::string("Kokkos::Impl::SharedAllocationRecord< Kokkos::Experimental::ROCmHostPinnedSpace , void >::get_record ERROR" ) ); + } + + return static_cast< RecordROCm * >( h->m_record ); +} +#endif + +// Iterate records to print orphaned memory ... +void +SharedAllocationRecord< Kokkos::Experimental::ROCmSpace , void >:: +print_records( std::ostream & s , const Kokkos::Experimental::ROCmSpace & space , bool detail ) +{ + SharedAllocationRecord< void , void > * r = & s_root_record ; + + char buffer[256] ; + + SharedAllocationHeader head ; + + if ( detail ) { + do { + if ( r->m_alloc_ptr ) { + Kokkos::Impl::DeepCopy( & head , r->m_alloc_ptr , sizeof(SharedAllocationHeader) ); + } + else { + head.m_label[0] = 0 ; + } + + //Formatting dependent on sizeof(uintptr_t) + const char * format_string; + + if (sizeof(uintptr_t) == sizeof(unsigned long)) { + format_string = "ROCm addr( 0x%.12lx ) list( 0x%.12lx 0x%.12lx ) extent[ 0x%.12lx + %.8ld ] count(%d) dealloc(0x%.12lx) %s\n"; + } + else if (sizeof(uintptr_t) == sizeof(unsigned long long)) { + format_string = "ROCm addr( 0x%.12llx ) list( 0x%.12llx 0x%.12llx ) extent[ 0x%.12llx + %.8ld ] count(%d) dealloc(0x%.12llx) %s\n"; + } + + snprintf( buffer , 256 + , format_string + , reinterpret_cast( r ) + , reinterpret_cast( r->m_prev ) + , reinterpret_cast( r->m_next ) + , reinterpret_cast( r->m_alloc_ptr ) + , r->m_alloc_size + , r->m_count + , reinterpret_cast( r->m_dealloc ) + , head.m_label + ); + std::cout << buffer ; + r = r->m_next ; + } while ( r != & s_root_record ); + } + else { + do { + if ( r->m_alloc_ptr ) { + + Kokkos::Impl::DeepCopy( & head , r->m_alloc_ptr , sizeof(SharedAllocationHeader) ); + + //Formatting dependent on sizeof(uintptr_t) + const char * format_string; + + if (sizeof(uintptr_t) == sizeof(unsigned long)) { + format_string = "ROCm [ 0x%.12lx + %ld ] %s\n"; + } + else if (sizeof(uintptr_t) == sizeof(unsigned long long)) { + format_string = "ROCm [ 0x%.12llx + %ld ] %s\n"; + } + + snprintf( buffer , 256 + , format_string + , reinterpret_cast< uintptr_t >( r->data() ) + , r->size() + , head.m_label + ); + } + else { + snprintf( buffer , 256 , "ROCm [ 0 + 0 ]\n" ); + } + std::cout << buffer ; + r = r->m_next ; + } while ( r != & s_root_record ); + } +} +#if 0 +void +SharedAllocationRecord< Kokkos::Experimental::ROCmHostPinnedSpace , void >:: +print_records( std::ostream & s , const Kokkos::Experimental::ROCmHostPinnedSpace & space , bool detail ) +{ + SharedAllocationRecord< void , void >::print_host_accessible_records( s , "ROCmHostPinned" , & s_root_record , detail ); +} +#endif + +} // namespace Impl +} // namespace Kokkos + +/*--------------------------------------------------------------------------*/ +/*--------------------------------------------------------------------------*/ +namespace Kokkos { +namespace { +#if 0 + KOKKOS_INLINE_FUNCTION void init_lock_array_kernel_atomic() { + unsigned i = tindex()*team_size() + lindex(); + + if(i>>(); + init_lock_array_kernel_scratch_threadid<<<(Kokkos::Experimental::ROCm::concurrency()+255)/256,256>>>(Kokkos::Experimental::ROCm::concurrency()); + } +} +#endif + +void* rocm_resize_scratch_space(size_t bytes, bool force_shrink) { + static void* ptr = NULL; + static size_t current_size = 0; + if(current_size == 0) { + current_size = bytes; + ptr = Kokkos::kokkos_malloc("ROCmSpace::ScratchMemory",current_size); + } + if(bytes > current_size) { + current_size = bytes; + ptr = Kokkos::kokkos_realloc(ptr,current_size); + } + if((bytes < current_size) && (force_shrink)) { + current_size = bytes; + Kokkos::kokkos_free(ptr); + ptr = Kokkos::kokkos_malloc("ROCmSpace::ScratchMemory",current_size); + } + return ptr; +} + +} +} + +#endif // KOKKOS_ENABLE_ROCM + diff --git a/lib/kokkos/core/src/ROCm/Kokkos_ROCm_Task.cpp b/lib/kokkos/core/src/ROCm/Kokkos_ROCm_Task.cpp new file mode 100644 index 0000000000000000000000000000000000000000..317995c4f476357aa27c7e63d15791c79e0390dd --- /dev/null +++ b/lib/kokkos/core/src/ROCm/Kokkos_ROCm_Task.cpp @@ -0,0 +1,174 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include + +#if defined( KOKKOS_ENABLE_ROCM ) && defined( KOKKOS_ENABLE_TASKDAG ) + +#include + +//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- + +namespace Kokkos { +namespace Impl { + +template class TaskQueue< Kokkos::Experimental::ROCm > ; + + +//---------------------------------------------------------------------------- +KOKKOS_INLINE_FUNCTION +void TaskQueueSpecialization< Kokkos::Experimental::ROCm >::driver + ( TaskQueueSpecialization< Kokkos::Experimental::ROCm >::queue_type * const queue, + hc::tiled_index<3> threadIdx ) +{ + using Member = TaskExec< Kokkos::Experimental::ROCm > ; + using Queue = TaskQueue< Kokkos::Experimental::ROCm > ; + using task_root_type = TaskBase< void , void , void > ; + + task_root_type * const end = (task_root_type *) task_root_type::EndTag ; + + Member single_exec( 1, threadIdx ); + Member team_exec( threadIdx.tile_dim[0], threadIdx ); + + const int wavefront_lane = threadIdx.local[0] + threadIdx.local[1]* threadIdx.tile_dim[0] ; + + union { + task_root_type * ptr ; + int raw[2] ; + } task ; + + // Loop until all queues are empty and no tasks in flight + + do { + + // Each team lead attempts to acquire either a thread team task + // or collection of single thread tasks for the team. + + if ( 0 == wavefront_lane ) { + + task.ptr = 0 < *((volatile int *) & queue->m_ready_count) ? end : 0 ; + + // Loop by priority and then type + for ( int i = 0 ; i < Queue::NumQueue && end == task.ptr ; ++i ) { + for ( int j = 0 ; j < 2 && end == task.ptr ; ++j ) { + task.ptr = Queue::pop_ready_task( & queue->m_ready[i][j] ); + } + } + +#if 0 +printf("TaskQueue::driver(%d,%d) task(%lx)\n",threadIdx.z,blockIdx.x + , uintptr_t(task.ptr)); +#endif + + } + + // shuffle broadcast + + task.raw[0] = hc::__shfl( task.raw[0] , 0 ); + task.raw[1] = hc::__shfl( task.raw[1] , 0 ); + + if ( 0 == task.ptr ) break ; // 0 == queue->m_ready_count + + if ( end != task.ptr ) { + if ( task_root_type::TaskTeam == task.ptr->m_task_type ) { + // Thread Team Task + (*task.ptr->m_apply)( task.ptr , & team_exec ); + } + else if ( 0 == threadIdx.local[1] ) { + // Single Thread Task + (*task.ptr->m_apply)( task.ptr , & single_exec ); + } + + if ( 0 == wavefront_lane ) { + queue->complete( task.ptr ); + } + } + } while(1); +} +#if 0 +namespace { +KOKKOS_INLINE_FUNCTION +void rocm_task_queue_execute( TaskQueue< Kokkos::Experimental::ROCm > * queue, + hc::tiled_index<3> threadIdx ) +{ TaskQueueSpecialization< Kokkos::Experimental::ROCm >::driver( queue, threadIdx ); } + +} +#endif +void TaskQueueSpecialization< Kokkos::Experimental::ROCm >::execute + ( TaskQueue< Kokkos::Experimental::ROCm > * const queue ) +{ + const int workgroups_per_wavefront = 4 ; + const int wavefront_size = Kokkos::Impl::ROCmTraits::WavefrontSize ; + const int cu_count = Kokkos::Impl::rocm_internal_cu_count(); +// const dim3 grid( Kokkos::Impl::rocm_internal_cu_count() , 1 , 1 ); +// const dim3 block( 1 , Kokkos::Impl::ROCmTraits::WorkGroupSize , workgroups_per_wavefront ); + + + + // Query the stack size, in bytes: + // If not large enough then set the stack size, in bytes: + +// adapted from the cuda code. TODO: Not at all sure that this is the proper +// to map the cuda grid/blocks/3D tiling to HCC +#if 0 + hc::extent< 3 > flat_extent( cu_count, + wavefront_size, workgroups_per_wavefront ); + hc::tiled_extent< 3 > team_extent = flat_extent.tile(1, + wavefront_size,workgroups_per_wavefront); + + hc::parallel_for_each( team_extent , [&](hc::tiled_index<3> idx) [[hc]] + { + TaskQueueSpecialization< Kokkos::Experimental::ROCm >::driver( queue,idx ); + }).wait(); +#endif +} + + +}} /* namespace Kokkos::Impl */ + +//---------------------------------------------------------------------------- + +#endif /* #if defined( KOKKOS_ENABLE_ROCM ) && defined( KOKKOS_ENABLE_TASKDAG ) */ + + diff --git a/lib/kokkos/core/src/ROCm/Kokkos_ROCm_Task.hpp b/lib/kokkos/core/src/ROCm/Kokkos_ROCm_Task.hpp new file mode 100644 index 0000000000000000000000000000000000000000..16badcc1d4d50e3f4bbd0ff387b327b30dc945dc --- /dev/null +++ b/lib/kokkos/core/src/ROCm/Kokkos_ROCm_Task.hpp @@ -0,0 +1,458 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#ifndef KOKKOS_IMPL_ROCM_TASK_HPP +#define KOKKOS_IMPL_ROCM_TASK_HPP + +#if defined( KOKKOS_ENABLE_TASKDAG ) + +#include + +//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- + +namespace Kokkos { +namespace Impl { + +template< class > class TaskExec ; + +template<> +class TaskQueueSpecialization< Kokkos::Experimental::ROCm > +{ +public: + + using execution_space = Kokkos::Experimental::ROCm ; + using queue_type = Kokkos::Impl::TaskQueue< execution_space > ; + using task_base_type = Kokkos::Impl::TaskBase< execution_space , void , void > ; + using member_type = TaskExec< execution_space > ; + + // Must specify memory space + using memory_space = Kokkos::HostSpace ; + + static + void iff_single_thread_recursive_execute( queue_type * const ) {} + + KOKKOS_INLINE_FUNCTION + static void driver( queue_type * const, hc::tiled_index<3> ); + + // Must provide task queue execution function + static void execute( queue_type * const ); + + // Must provide mechanism to set function pointer in + // execution space from the host process. + template< typename FunctorType > + static + void proc_set_apply( typename TaskBase< Kokkos::Experimental::ROCm + , typename FunctorType::value_type + , FunctorType + >::function_type * ptr ) + { + using TaskType = TaskBase< Kokkos::Experimental::ROCm + , typename FunctorType::value_type + , FunctorType + > ; + hc::extent< 1 > flat_extent( 1 ); + hc::tiled_extent< 1 > team_extent = flat_extent.tile( 1); + + hc::parallel_for_each( team_extent , [&](hc::tiled_index<1> idx) [[hc]] + { + *ptr = TaskType::apply ; + }).wait(); + } +}; + +/*template<> +KOKKOS_FUNCTION +void TaskQueue::decrement( typename TaskQueue::task_root_type * +) {} +*/ +extern template class TaskQueue< Kokkos::Experimental::ROCm > ; + +//---------------------------------------------------------------------------- +/**\brief Impl::TaskExec is the TaskScheduler::member_type + * passed to tasks running in a ROCm space. + * + * ROCm thread blocks for tasking are dimensioned: + * idx.tile_dim[0] == vector length + * idx.tile_dim[1] == team size + * idx.tile_dim[2] == number of teams + * where + * idx.tile_dim[0] * idx.tile_dim[1] == WavefrontSize + * + * Both single thread and thread team tasks are run by a full ROCm warp. + * A single thread task is called by warp lane #0 and the remaining + * lanes of the warp are idle. + */ +template<> +class TaskExec< Kokkos::Experimental::ROCm > +{ +private: + + TaskExec( TaskExec && ) = delete ; + TaskExec( TaskExec const & ) = delete ; + TaskExec & operator = ( TaskExec && ) = delete ; + TaskExec & operator = ( TaskExec const & ) = delete ; + + + friend class Kokkos::Impl::TaskQueue< Kokkos::Experimental::ROCm > ; + friend class Kokkos::Impl::TaskQueueSpecialization< Kokkos::Experimental::ROCm > ; + + int m_team_size ; + hc::tiled_index<3> m_idx; + +// KOKKOS_INLINE_FUNCTION TaskExec( int arg_team_size ) //TODO: tile_dim[0] +// : m_team_size( arg_team_size ) {} + + KOKKOS_INLINE_FUNCTION TaskExec( int arg_team_size, + hc::tiled_index<3> tidx) + : m_team_size( arg_team_size), + m_idx( tidx ) {} + +public: +// const auto local = t_idx.local[0]; +// const auto global = t_idx.global[0]; +// const auto tile = t_idx.tile[0]; + + hc::tiled_index<3> idx() const { return m_idx;} + +#if defined( __HCC_ACCELERATOR__ ) + KOKKOS_INLINE_FUNCTION void team_barrier() { /* __threadfence_block(); */ } + KOKKOS_INLINE_FUNCTION int team_rank() const { return m_idx.local[1] ; } // t_idx.tile[0]; + KOKKOS_INLINE_FUNCTION int team_size() const { return m_team_size ; } +#else + KOKKOS_INLINE_FUNCTION void team_barrier() {} + KOKKOS_INLINE_FUNCTION int team_rank() const { return 0 ; } + KOKKOS_INLINE_FUNCTION int team_size() const { return 0 ; } +#endif +}; + +}} /* namespace Kokkos::Impl */ + +//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- +namespace Kokkos { + +template +KOKKOS_INLINE_FUNCTION +Impl::TeamThreadRangeBoundariesStruct > +TeamThreadRange + ( Impl::TaskExec< Kokkos::Experimental::ROCm > & thread, const iType & count ) +{ + return Impl::TeamThreadRangeBoundariesStruct >(thread,count); +} + +template +KOKKOS_INLINE_FUNCTION +Impl::TeamThreadRangeBoundariesStruct< typename std::common_type< iType1, iType2 >::type, + Impl::TaskExec< Kokkos::Experimental::ROCm > > +TeamThreadRange + ( Impl:: TaskExec< Kokkos::Experimental::ROCm > & thread, const iType1 & begin, const iType2 & end ) +{ + typedef typename std::common_type::type iType; + return Impl::TeamThreadRangeBoundariesStruct >(thread, begin, end); +} + +template +KOKKOS_INLINE_FUNCTION +Impl::ThreadVectorRangeBoundariesStruct > +ThreadVectorRange + ( Impl::TaskExec< Kokkos::Experimental::ROCm > & thread + , const iType & count ) +{ + return Impl::ThreadVectorRangeBoundariesStruct >(thread,count); +} + +/** \brief Inter-thread parallel_for. Executes lambda(iType i) for each i=0..N-1. + * + * The range i=0..N-1 is mapped to all threads of the the calling thread team. + * This functionality requires C++11 support. +*/ +template +KOKKOS_INLINE_FUNCTION +void parallel_for + ( const Impl::TeamThreadRangeBoundariesStruct >& loop_boundaries + , const Lambda& lambda + ) +{ + for( iType i = loop_boundaries.start; i < loop_boundaries.end; i+=loop_boundaries.increment) { + lambda(i); + } +} + +// reduce across corresponding lanes between team members within workgroup +// assume stride*team_size == workgroup_size +template< typename ValueType > +KOKKOS_INLINE_FUNCTION +void strided_shfl_workgroup_reduction + (const ValueType& f(), + ValueType& val, + int team_size, + int stride) +{ + for (int lane_delta=(team_size*stride)>>1; lane_delta>=stride; lane_delta>>=1) { + f(val, Kokkos::shfl_down(val, lane_delta, team_size*stride)); + } +} + +template< typename ValueType, class JoinType > +KOKKOS_INLINE_FUNCTION +void strided_shfl_workgroup_reduction + (const JoinType& join, + ValueType& val, + int team_size, + int stride) +{ + for (int lane_delta=(team_size*stride)>>1; lane_delta>=stride; lane_delta>>=1) { + join(val, shfl_down(val, lane_delta, team_size*stride)); + } +} + +// multiple within-workgroup non-strided reductions +template< typename ValueType, class JoinType > +KOKKOS_INLINE_FUNCTION +void multi_shfl_workgroup_reduction + (const JoinType& join, + ValueType& val, + int vec_length) +{ + for (int lane_delta=vec_length>>1; lane_delta; lane_delta>>=1) { + join(val, shfl_down(val, lane_delta, vec_length)); + } +} + +// broadcast within workgroup +template< class ValueType > +KOKKOS_INLINE_FUNCTION +ValueType shfl_workgroup_broadcast + (ValueType& val, + int src_lane, + int width) +{ + return shfl(val, src_lane, width); +} + +// all-reduce across corresponding vector lanes between team members within workgroup +// assume vec_length*team_size == workgroup_size +// blockDim.x == vec_length == stride +// blockDim.y == team_size +// threadIdx.x == position in vec +// threadIdx.y == member number + +template +KOKKOS_INLINE_FUNCTION +void parallel_reduce + ( const Impl::TeamThreadRangeBoundariesStruct >& loop_boundaries + , const Lambda& lambda + , ValueType& initialized_result) +{ + int team_rank = loop_boundaries.thread.team_rank(); // member num within the team + ValueType result = initialized_result; + hc::tiled_index<3> idx = loop_boundaries.thread.idx(); + + for( iType i = loop_boundaries.start; i < loop_boundaries.end; i+=loop_boundaries.increment) { + lambda(i, result); + } + initialized_result = result; + + strided_shfl_workgroup_reduction( + [&] (ValueType& val1, const ValueType& val2) { val1 += val2; }, + initialized_result, + loop_boundaries.thread.team_size(), + idx.tile_dim[0]); + initialized_result = shfl_workgroup_broadcast( initialized_result, idx.local[0], Impl::ROCmTraits::WavefrontSize ); + +} + +template< typename iType, class Lambda, typename ValueType, class JoinType > +KOKKOS_INLINE_FUNCTION +void parallel_reduce + (const Impl::TeamThreadRangeBoundariesStruct >& loop_boundaries, + const Lambda & lambda, + const JoinType & join, + ValueType& initialized_result) +{ + hc::tiled_index<3> idx = loop_boundaries.thread.idx(); + int team_rank = loop_boundaries.thread.team_rank(); // member num within the team + ValueType result = initialized_result; + + for( iType i = loop_boundaries.start; i < loop_boundaries.end; i+=loop_boundaries.increment) { + lambda(i, result); + } + + strided_shfl_workgroup_reduction( + join, + initialized_result, + loop_boundaries.thread.team_size(), + idx.tile_dim[0]); + initialized_result = shfl_workgroup_broadcast( initialized_result, idx.local[0], Impl::ROCmTraits::WavefrontSize ); +} + +// placeholder for future function +template< typename iType, class Lambda, typename ValueType > +KOKKOS_INLINE_FUNCTION +void parallel_reduce + (const Impl::ThreadVectorRangeBoundariesStruct >& loop_boundaries, + const Lambda & lambda, + ValueType& initialized_result) +{ + ValueType result = initialized_result; + hc::tiled_index<3> idx = loop_boundaries.thread.idx(); + + for( iType i = loop_boundaries.start; i < loop_boundaries.end; i+=loop_boundaries.increment) { + lambda(i,result); + } + + initialized_result = result; + + //initialized_result = multi_shfl_workgroup_reduction( + multi_shfl_workgroup_reduction( + [&] (ValueType& val1, const ValueType& val2) { val1 += val2; }, + initialized_result, + idx.tile_dim[0]); + initialized_result = shfl_workgroup_broadcast( initialized_result, 0, idx.tile_dim[0] ); +} + +// placeholder for future function +template< typename iType, class Lambda, typename ValueType, class JoinType > +KOKKOS_INLINE_FUNCTION +void parallel_reduce + (const Impl::ThreadVectorRangeBoundariesStruct >& loop_boundaries, + const Lambda & lambda, + const JoinType & join, + ValueType& initialized_result) +{ + hc::tiled_index<3> idx = loop_boundaries.thread.idx(); + ValueType result = initialized_result; + for( iType i = loop_boundaries.start; i < loop_boundaries.end; i+=loop_boundaries.increment) { + lambda(i,result); + } + initialized_result = result; + + multi_shfl_workgroup_reduction(join, initialized_result, idx.tile_dim[0]); + initialized_result = shfl_workgroup_broadcast( initialized_result, 0, idx.tile_dim[0] ); +} + +template< typename ValueType, typename iType, class Lambda > +KOKKOS_INLINE_FUNCTION +void parallel_scan + (const Impl::TeamThreadRangeBoundariesStruct >& loop_boundaries, + const Lambda & lambda) +{ + hc::tiled_index<3> idx = loop_boundaries.thread.idx(); + ValueType accum = 0 ; + ValueType val, y, local_total; + + for( iType i = loop_boundaries.start; i < loop_boundaries.end; i+=loop_boundaries.increment) { + val = 0; + lambda(i,val,false); + + // intra-idx.tile_dim[0] exclusive scan on 'val' + // accum = accumulated, sum in total for this iteration + + // INCLUSIVE scan + for( int offset = idx.tile_dim[0] ; offset < Impl::ROCmTraits::WavefrontSize ; offset <<= 1 ) { + y = shfl_up(val, offset, Impl::ROCmTraits::WavefrontSize); + if(idx.local[1]*idx.tile_dim[0] >= offset) { val += y; } + } + + // pass accum to all threads + local_total = shfl_workgroup_broadcast(val, + idx.local[0]+Impl::ROCmTraits::WavefrontSize-idx.tile_dim[0], + Impl::ROCmTraits::WavefrontSize); + + // make EXCLUSIVE scan by shifting values over one + val = shfl_up(val, idx.tile_dim[0], Impl::ROCmTraits::WavefrontSize); + if ( idx.local[1] == 0 ) { val = 0 ; } + + val += accum; + lambda(i,val,true); + accum += local_total; + } +} + +// placeholder for future function +template< typename iType, class Lambda, typename ValueType > +KOKKOS_INLINE_FUNCTION +void parallel_scan + (const Impl::ThreadVectorRangeBoundariesStruct >& loop_boundaries, + const Lambda & lambda) +{ + hc::tiled_index<3> idx = loop_boundaries.thread.idx(); + ValueType accum = 0 ; + ValueType val, y, local_total; + + for( iType i = loop_boundaries.start; i < loop_boundaries.end; i+=loop_boundaries.increment) { + val = 0; + lambda(i,val,false); + + // intra-idx.tile_dim[0] exclusive scan on 'val' + // accum = accumulated, sum in total for this iteration + + // INCLUSIVE scan + for( int offset = 1 ; offset < idx.tile_dim[0] ; offset <<= 1 ) { + y = shfl_up(val, offset, idx.tile_dim[0]); + if(idx.local[0] >= offset) { val += y; } + } + + // pass accum to all threads + local_total = shfl_workgroup_broadcast(val, idx.tile_dim[0]-1, + idx.tile_dim[0]); + + // make EXCLUSIVE scan by shifting values over one + val = shfl_up(val, 1, idx.tile_dim[0]); + if ( idx.local[0] == 0 ) { val = 0 ; } + + val += accum; + lambda(i,val,true); + accum += local_total; + } +} + + +} /* namespace Kokkos */ +//---------------------------------------------------------------------------- +//---------------------------------------------------------------------------- + +#endif /* #if defined( KOKKOS_ENABLE_TASKDAG ) */ +#endif /* #ifndef KOKKOS_IMPL_ROCM_TASK_HPP */ + diff --git a/lib/kokkos/core/src/ROCm/Kokkos_ROCm_Tile.hpp b/lib/kokkos/core/src/ROCm/Kokkos_ROCm_Tile.hpp new file mode 100644 index 0000000000000000000000000000000000000000..e1a89e379462d0580ae0ac3b53937d454d155ea8 --- /dev/null +++ b/lib/kokkos/core/src/ROCm/Kokkos_ROCm_Tile.hpp @@ -0,0 +1,518 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include +#include +#include +#include + +#if !defined( KOKKOS_ROCM_TILE_H ) +#define KOKKOS_ROCM_TILE_H + +// Macro to abstract out the enable_if craziness +#define KOKKOS_ROCM_REQUIRES(...) \ + bool KokkosROCmRequiresBool ## __LINE__ = true, typename std::enable_if::type = 0 + +// This number uniquely identifies the 1.5 release build. +#if __hcc_workweek__ > 17160 +#define ROCM15 1 +#endif + +namespace Kokkos { +namespace Impl { + +template + +#if defined(ROCM15) +using lds_t = T; +#else +// prior to 1.5, needed to decorate LDS addresses +using lds_t = __attribute__((address_space(3))) T; +#endif + +#define KOKKOS_ROCM_TILE_RESTRIC_CPU restrict(cpu, amp) + +// a set of routines to the replace the std::routines +// that will operate on address space 3 types + +#if defined(ROCM15) +// 1.5 can't use std::copy et al for LDS access, so we define our own +// set of routines +template +void rcopy(I first, I last, O out) [[hc]] +{ + while (first != last) *out++ = *first++; +} +template +void rfor_each(I first, I last, F f) [[hc]] +{ + for(;first!=last;++first) f(*first); +} + +template +void rtransform(I first, I last, O out, F f) [[hc]] +{ + while(first!=last) *out++ = f(*first++); +} +#endif + + +inline std::size_t get_max_tile_size() KOKKOS_ROCM_TILE_RESTRIC_CPU +{ + return hc::accelerator().get_max_tile_static_size() - 1024; +} + +inline std::size_t get_max_tile_thread() KOKKOS_ROCM_TILE_RESTRIC_CPU +{ + return 64; +} + +inline int next_pow_2(int x) restrict(cpu, amp) +{ + --x; + x |= x >> 1; + x |= x >> 2; + x |= x >> 4; + x |= x >> 8; + x |= x >> 16; + return x+1; +} + +template +inline std::size_t get_tile_size(std::size_t n = 1, + std::size_t team = 64, + std::size_t vector = 1) + KOKKOS_ROCM_TILE_RESTRIC_CPU +{ + const auto size = sizeof(T) * n; + const auto group_size = get_max_tile_size(); + if (size == 0 || size > group_size) return 0; + // Assume that thread size is a power of 2 + auto thread_size = std::min(team*vector,4*get_max_tile_thread()); + // ensure that we have enough tile static memory to keep + // threadsize * size elements for reductions + while(size > (group_size / thread_size) && thread_size > 2) +{ thread_size /= 2; +} + return thread_size; +} + +template +struct array_view +{ + T* x; + std::size_t n; + + array_view(T* xp, std::size_t np) [[hc]] [[cpu]] + : x(xp), n(np) + {} + + array_view(T* xp, T* yp) [[hc]] [[cpu]] + : x(xp), n(yp-xp) + {} + + T& operator[](std::size_t i) const [[hc]] [[cpu]] + { + return x[i]; + } + + std::size_t size() const [[hc]] [[cpu]] + { + return this->n; + } + + T* data() const [[hc]] [[cpu]] + { + return x; + } + + T* begin() const [[hc]] [[cpu]] + { + return x; + } + + T* end() const [[hc]] [[cpu]] + { + return x+this->size(); + } +}; + +template +struct rocm_char +{ using type=char; }; + +template +struct rocm_char +: std::add_const::type> +{}; +#if !defined(ROCM15) +// earlier compilers required explicit address space decorations +template +struct rocm_char<__attribute__((address_space(3))) T> +{ using type = __attribute__((address_space(3))) typename rocm_char::type; }; + +template +struct rocm_char +{ using type = const __attribute__((address_space(3))) typename rocm_char::type; }; +#endif + +template::type> +Char* rocm_byte_cast(T& x) restrict(cpu, amp) +{ + return reinterpret_cast(&x); +} + +template +void rocm_raw_assign(T& x, const U& y) restrict(cpu, amp) +{ + auto * src = rocm_byte_cast(y); + auto * dest = rocm_byte_cast(x); +#if defined (ROCM15) + rcopy(src, src+sizeof(T), dest); +#else + std::copy(src, src+sizeof(T), dest); +#endif +} + +template +void rocm_assign_impl(T& x, const U& y, std::true_type) restrict(cpu, amp) +{ + rocm_raw_assign(x, y); +} + +template +void rocm_assign_impl(T& x, const U& y, std::false_type) restrict(cpu, amp) +{ + x = y; +} + +// Workaround for assigning in and out of LDS memory +template +void rocm_assign(T& x, const U& y) restrict(cpu, amp) +{ + rocm_assign_impl(x, y, std::integral_constant()); +} + +// Compute the address space of tile +template +struct tile_type +{ +#if defined (ROCM15) + typedef T type; +#else + typedef __attribute__((address_space(3))) T type; +#endif +}; + +#if !defined (ROCM15) +template +void lds_for(__attribute__((address_space(3))) T& value, Body b) [[hc]] +{ + T state = value; + b(state); + value = state; +} +#endif + +template +void lds_for(T& value, Body b) [[hc]] +{ + b(value); +} + + +constexpr std::size_t get_max_tile_array_size() +{ + return 24; +} + +template +struct single_action +{ + template + void action_at(std::size_t i, Action a) [[hc]] + { + auto& value = static_cast(*this)[i]; +#if KOKKOS_ROCM_HAS_WORKAROUNDS + T state = value; + a(state); + value = state; +#else + a(value); +#endif + } + + template + void action_at(std::size_t i, std::size_t j, Action a) [[hc]] + { + static_cast(*this).action_at(i, [&](T& x) + { + static_cast(*this).action_at(j, [&](T& y) + { + a(x, y); + }); + }); + } +}; + +template +struct tile_buffer +: array_view::type>, single_action, T> +{ + typedef typename tile_type::type element_type; + typedef array_view base; + + using base::base; + + tile_buffer(element_type* xp, std::size_t np, std::size_t) [[hc]] [[cpu]] + : base(xp, np) + {} + + tile_buffer(T* xp, T* yp, std::size_t) [[hc]] [[cpu]] + : base(xp, yp) + {} +}; + +template +struct tile_buffer +{ + typedef typename tile_type::type element_type; + typedef typename tile_type::type tchar_type; + element_type* element_data; + std::size_t n, m; + + tile_buffer(element_type* xp, std::size_t np, std::size_t mp) [[hc]] [[cpu]] + : element_data(xp), n(np), m(mp) + {} + + tile_buffer(element_type* xp, element_type* yp, std::size_t mp) [[hc]] [[cpu]] + : element_data(xp), n(yp-xp), m(mp) + {} + + element_type* operator[](std::size_t i) const [[hc]] [[cpu]] + { + return element_data+i*m; + } + + template + typename Impl::enable_if< (sizeof(Q) <= 8) , void >::type + action_at(std::size_t i, Action a) [[hc]] + { + element_type* value = (*this)[i]; +#if defined (ROCM15) + a(value); +#else +#if KOKKOS_ROCM_HAS_WORKAROUNDS + if (m > get_max_tile_array_size()) return; + T state[get_max_tile_array_size()]; + // std::copy(value, value+m, state); + // Workaround for assigning from LDS memory + std::transform(value, value+m, state, [](element_type& x) + { + T result; + rocm_assign(result, x); + return result; + }); + a(state); + std::copy(state, state+m, value); +#endif +#endif + } + + template + typename Impl::enable_if< !(sizeof(Q) <= 8) , void >::type + action_at(std::size_t i, Action a) [[hc]] + { + element_type* value = (*this)[i]; +#if defined (ROCM15) + a(value); +#else +//#if KOKKOS_ROCM_HAS_WORKAROUNDS + if (m > get_max_tile_array_size()) return; + T state[get_max_tile_array_size()]; + // std::copy(value, value+m, state); + // Workaround for assigning from LDS memory + std::transform(value, value+m, state, [](element_type& x) + { + T result; + rocm_assign(result, x); + return result; + }); + a(state); + // this workaround required when T is greater than 8 bytes + tile_static char tv[64*sizeof(T)]; + size_t sT = sizeof(T); + for (int j = 0; j + void action_at(std::size_t i, std::size_t j, Action a) [[hc]] + { + this->action_at(i, [&](T* x) + { + this->action_at(j, [&](T* y) + { + a(x, y); + }); + }); + } + + std::size_t size() const [[hc]] [[cpu]] + { + return this->n; + } + + element_type* data() const [[hc]] [[cpu]] + { + return element_data; + } +}; + +// Zero initialize LDS memory +struct zero_init_f +{ + template +#if defined (ROCM15) + void operator()(T& x, std::size_t=1) const [[hc]] + { + auto * start = reinterpret_cast(&x); + for(int i=0; i(&x); + std::fill(start, start+sizeof(T), 0); + rocm_raw_assign(x, T()); + } +#endif + + template +#if defined (ROCM15) + void operator()(T* x, std::size_t size) const [[hc]] + { + rfor_each(x, x+size, *this); + } +#else + void operator()(__attribute__((address_space(3))) T* x, std::size_t size) const [[hc]] + { + std::for_each(x, x+size, *this); + } +#endif +}; + +static constexpr zero_init_f zero_init = {}; + +struct tile_desc +{ + // Number of work items, or size of extent + std::size_t elements; + // number of threads in team + std::size_t team_size; + // vector length of team + std::size_t vector_length; + // Size of tile + std::size_t tile_size; + // Size of array + std::size_t array_size; + // Number of tiles + std::size_t num_tiles; + // Per team reserved LDS memory, used for reduction + std::size_t reduce_size; + // Per team shared memory in LDS, this in addition to reduce shared mem + std::size_t shared_size; + std::size_t size; +}; + +template +tile_desc get_tile_desc(std::size_t size, + std::size_t array_size=1, + std::size_t team_size=64, + std::size_t vector_size=1, + std::size_t shared_size=0) +{ + tile_desc result; + result.elements = size; + result.array_size = array_size; + result.vector_length = vector_size; + result.team_size = team_size; + result.tile_size = get_tile_size(array_size,team_size,vector_size); + result.num_tiles = std::ceil(1.0 * size / result.tile_size); + result.reduce_size = result.tile_size * sizeof(T) * array_size; + result.shared_size = shared_size; + result.size = result.tile_size * result.num_tiles; + + return result; +} + +template::type> +hc::completion_future tile_for(tile_desc td, F f) +{ + assert(td.array_size <= get_max_tile_array_size() && "Exceed max array size"); + assert(((td.size % td.tile_size) == 0) && "Tile size must be divisible by extent"); + auto grid = hc::extent<1>(td.size).tile_with_dynamic( + td.tile_size, td.reduce_size + td.shared_size); + // grid.set_dynamic_group_segment_size(td.reduce_size + td.shared_size); + return parallel_for_each(grid, [=](hc::tiled_index<1> t_idx) [[hc]] + { +#if defined (ROCM15) + typedef T group_t; +#else + typedef __attribute__((address_space(3))) T group_t; +#endif + group_t * buffer = (group_t *)hc::get_dynamic_group_segment_base_pointer(); + tile_buffer tb(buffer, td.tile_size, td.array_size); + zero_init(tb[t_idx.local[0]], td.array_size); + f(t_idx, tb); + }); +} + +}} + +#endif diff --git a/lib/kokkos/core/src/ROCm/Kokkos_ROCm_Vectorization.hpp b/lib/kokkos/core/src/ROCm/Kokkos_ROCm_Vectorization.hpp new file mode 100644 index 0000000000000000000000000000000000000000..ac166f9ad8d7ed4a214b5d710ba4b632455e5968 --- /dev/null +++ b/lib/kokkos/core/src/ROCm/Kokkos_ROCm_Vectorization.hpp @@ -0,0 +1,346 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ +#ifndef KOKKOS_ROCM_VECTORIZATION_HPP +#define KOKKOS_ROCM_VECTORIZATION_HPP + +#include + +/* only compile this file if ROCM is enabled for Kokkos */ +#ifdef KOKKOS_ENABLE_ROCM + +#include + +namespace Kokkos { +using namespace hc; + +// Shuffle only makes sense on >= Fiji GPUs; it doesn't work on CPUs +// or other GPUs. We provide a generic definition (which is trivial +// and doesn't do what it claims to do) because we don't actually use +// this function unless we are on a suitable GPU, with a suitable +// Scalar type. (For example, in the mat-vec, the "ThreadsPerRow" +// internal parameter depends both on the ExecutionSpace and the Scalar type, +// and it controls whether shfl_down() gets called.) +namespace Impl { + + template< typename Scalar > + struct shfl_union { + enum {n = sizeof(Scalar)/4}; + float fval[n]; + KOKKOS_INLINE_FUNCTION + Scalar value() { + return *(Scalar*) fval; + } + KOKKOS_INLINE_FUNCTION + void operator= (Scalar& value_) { + float* const val_ptr = (float*) &value_; + for(int i=0; i + KOKKOS_INLINE_FUNCTION + Scalar shfl(const Scalar &val, const int& srcLane, const typename Impl::enable_if< (sizeof(Scalar) == 4) , int >::type& width + ) { + Scalar tmp1 = val; + float tmp = *reinterpret_cast(&tmp1); + tmp = __shfl(tmp,srcLane,width); + return *reinterpret_cast(&tmp); + } + + KOKKOS_INLINE_FUNCTION + double shfl(const double &val, const int& srcLane, const int& width) { + int lo = __double2loint(val); + int hi = __double2hiint(val); + lo = __shfl(lo,srcLane,width); + hi = __shfl(hi,srcLane,width); + return __hiloint2double(hi,lo); + } + + template + KOKKOS_INLINE_FUNCTION + Scalar shfl(const Scalar &val, const int& srcLane, const typename Impl::enable_if< (sizeof(Scalar) == 8) ,int>::type& width) { + int lo = __double2loint(*reinterpret_cast(&val)); + int hi = __double2hiint(*reinterpret_cast(&val)); + lo = __shfl(lo,srcLane,width); + hi = __shfl(hi,srcLane,width); + const double tmp = __hiloint2double(hi,lo); + return *(reinterpret_cast(&tmp)); + } + + template + KOKKOS_INLINE_FUNCTION + Scalar shfl(const Scalar &val, const int& srcLane, const typename Impl::enable_if< (sizeof(Scalar) > 8) ,int>::type& width) { + Impl::shfl_union s_val; + Impl::shfl_union r_val; + s_val = val; + + for(int i = 0; i + KOKKOS_INLINE_FUNCTION + Scalar shfl_down(const Scalar &val, const int& delta, const typename Impl::enable_if< (sizeof(Scalar) == 4) , int >::type & width) { + Scalar tmp1 = val; + float tmp = *reinterpret_cast(&tmp1); + tmp = __shfl_down(tmp,delta,width); + return *reinterpret_cast(&tmp); + } + + KOKKOS_INLINE_FUNCTION + long shfl_down(const long &val, const int& delta, const int& width) { + int lo = __long2loint(val); + int hi = __long2hiint(val); + lo = __shfl_down(lo,delta,width); + hi = __shfl_down(hi,delta,width); + return __hiloint2long(hi,lo); + } + + KOKKOS_INLINE_FUNCTION + double shfl_down(const double &val, const int& delta, const int& width) { + int lo = __double2loint(val); + int hi = __double2hiint(val); + lo = __shfl_down(lo,delta,width); + hi = __shfl_down(hi,delta,width); + return __hiloint2double(hi,lo); + } + + template + KOKKOS_INLINE_FUNCTION + Scalar shfl_down(const Scalar &val, const int& delta, const typename Impl::enable_if< (sizeof(Scalar) == 8) , int >::type & width) { + int lo = __double2loint(*reinterpret_cast(&val)); + int hi = __double2hiint(*reinterpret_cast(&val)); + lo = __shfl_down(lo,delta,width); + hi = __shfl_down(hi,delta,width); + const double tmp = __hiloint2double(hi,lo); + return *(reinterpret_cast(&tmp)); + } + + template + KOKKOS_INLINE_FUNCTION + Scalar shfl_down(const Scalar &val, const int& delta, const typename Impl::enable_if< (sizeof(Scalar) > 8) , int >::type & width) { + Impl::shfl_union s_val; + Impl::shfl_union r_val; + s_val = val; + + for(int i = 0; i + KOKKOS_INLINE_FUNCTION + Scalar shfl_up(const Scalar &val, const int& delta, const typename Impl::enable_if< (sizeof(Scalar) == 4) , int >::type & width) { + Scalar tmp1 = val; + float tmp = *reinterpret_cast(&tmp1); + tmp = __shfl_up(tmp,delta,width); + return *reinterpret_cast(&tmp); + } + + KOKKOS_INLINE_FUNCTION + double shfl_up(const double &val, const int& delta, const int& width ) { + int lo = __double2loint(val); + int hi = __double2hiint(val); + lo = __shfl_up(lo,delta,width); + hi = __shfl_up(hi,delta,width); + return __hiloint2double(hi,lo); + } + + template + KOKKOS_INLINE_FUNCTION + Scalar shfl_up(const Scalar &val, const int& delta, const typename Impl::enable_if< (sizeof(Scalar) == 8) , int >::type & width) { + int lo = __double2loint(*reinterpret_cast(&val)); + int hi = __double2hiint(*reinterpret_cast(&val)); + lo = __shfl_up(lo,delta,width); + hi = __shfl_up(hi,delta,width); + const double tmp = __hiloint2double(hi,lo); + return *(reinterpret_cast(&tmp)); + } + + template + KOKKOS_INLINE_FUNCTION + Scalar shfl_up(const Scalar &val, const int& delta, const typename Impl::enable_if< (sizeof(Scalar) > 8) , int >::type & width) { + Impl::shfl_union s_val; + Impl::shfl_union r_val; + s_val = val; + + for(int i = 0; i + inline + Scalar shfl(const Scalar &val, const int& srcLane, const int& width) { + if(width > 1) Kokkos::abort("Error: calling shfl from a device with CC<8.0."); + return val; + } + + template + inline + Scalar shfl_down(const Scalar &val, const int& delta, const int& width) { + if(width > 1) Kokkos::abort("Error: calling shfl_down from a device with CC<8.0."); + return val; + } + + template + inline + Scalar shfl_up(const Scalar &val, const int& delta, const int& width) { + if(width > 1) Kokkos::abort("Error: calling shfl_down from a device with CC<8.0."); + return val; + } +#endif + + + +} + +#endif // KOKKOS_ENABLE_ROCM +#endif diff --git a/lib/kokkos/core/src/ROCm/hc_math_std.hpp b/lib/kokkos/core/src/ROCm/hc_math_std.hpp new file mode 100644 index 0000000000000000000000000000000000000000..56c2e634e45b7e7e6ae9af8e244a017217e21850 --- /dev/null +++ b/lib/kokkos/core/src/ROCm/hc_math_std.hpp @@ -0,0 +1,367 @@ +#pragma once + +#include "hc.hpp" +#include + +// Math functions with integer overloads will be converted to +// this floating point type. +#define HC_IMPLICIT_FLOAT_CONV double + +#ifdef __KALMAR_ACCELERATOR__ + +#define HC_MATH_WRAPPER_1(function, arg1) \ +template \ +inline T function(T arg1) __attribute__((hc,cpu)) { \ + return hc::precise_math::function(arg1); \ +} + +#define KALMAR_MATH_WRAPPER_1(function, arg1) HC_MATH_WRAPPER_1(function, arg1) + +#define HC_MATH_WRAPPER_FP_OVERLOAD_1(function, arg1) \ +template \ +inline \ +typename std::enable_if::value,HC_IMPLICIT_FLOAT_CONV>::type \ + function(T arg1) __attribute__((hc,cpu)) { \ + return hc::precise_math::function(static_cast(arg1)); \ +} \ +template \ +inline \ +typename std::enable_if::value,T>::type \ + function(T arg1) __attribute__((hc,cpu)) { \ + return hc::precise_math::function(arg1); \ +} + +#define KALMAR_MATH_WRAPPER_FP_OVERLOAD_1(function, arg1) HC_MATH_WRAPPER_FP_OVERLOAD_1(function, arg1) + +#define HC_MATH_WRAPPER_2(function, arg1, arg2) \ +template \ +inline T function(T arg1, T arg2) __attribute__((hc,cpu)) { \ + return hc::precise_math::function(arg1, arg2); \ +} + +#define HC_MATH_ALIAS_2(alias, function, arg1, arg2) \ +template \ +inline T alias(T arg1, T arg2) __attribute__((hc,cpu)) { \ + return hc::precise_math::function(arg1, arg2); \ +} + +#define HC_MATH_WRAPPER_3(function, arg1, arg2, arg3) \ +template \ +inline T function(T arg1, T arg2, T arg3) __attribute__((hc,cpu)) { \ + return hc::precise_math::function(arg1, arg2, arg3); \ +} + +#define HC_MATH_WRAPPER_TQ(function, arg1) \ +template \ +inline T function(Q arg1) __attribute__((hc,cpu)) { \ + return hc::precise_math::function(arg1); \ +} + +#define HC_MATH_WRAPPER_FP_OVERLOAD_TQ(function, T, arg1) \ +template \ +inline \ +typename std::enable_if::value,T>::type \ +function(Q arg1) __attribute__((hc,cpu)) { \ + return hc::precise_math::function(static_cast(arg1)); \ +}\ +template \ +inline \ +typename std::enable_if::value,T>::type \ +function(Q arg1) __attribute__((hc,cpu)) { \ + return hc::precise_math::function(arg1); \ +} + +#define HC_MATH_WRAPPER_TTQ(function, arg1, arg2) \ +template \ +inline T function(T arg1, Q arg2) __attribute__((hc,cpu)) { \ + return hc::precise_math::function(arg1, arg2); \ +} + +#define HC_MATH_WRAPPER_FP_OVERLOAD_TTQ(function, arg1, arg2) \ +template \ +inline \ +typename std::enable_if::value||std::is_integral::value,HC_IMPLICIT_FLOAT_CONV>::type \ +function(T arg1, Q arg2) __attribute__((hc,cpu)) { \ + return hc::precise_math::function(static_cast(arg1),static_cast(arg2)); \ +}\ +template \ +inline \ +typename std::enable_if::value&&std::is_floating_point::value,T>::type \ +function(T arg1, Q arg2) __attribute__((hc,cpu)) { \ + return hc::precise_math::function(arg1,arg2); \ +} + +#define HC_MATH_WRAPPER_TTTQ(function, arg1, arg2, arg3) \ +template \ +inline T function(T arg1, T arg2, Q arg3) __attribute__((hc,cpu)) { \ + return hc::precise_math::function(arg1, arg2, arg3); \ +} + +#define HC_MATH_WRAPPER_VTQQ(function, arg1, arg2, arg3) \ +template \ +inline void function(T arg1, Q arg2, Q arg3) __attribute__((hc,cpu)) { \ + hc::precise_math::function(arg1, arg2, arg3); \ +} + +#else + +#define HC_MATH_WRAPPER_1(function, arg1) \ +template \ +inline T function(T arg1) __attribute__((hc,cpu)) { \ + return std::function(arg1); \ +} + +#define KALMAR_MATH_WRAPPER_1(function, arg1) \ +template \ +inline T function(T arg1) __attribute__((hc,cpu)) { \ + return hc::precise_math::function(arg1); \ +} + +#define HC_MATH_WRAPPER_FP_OVERLOAD_1(function, arg1) \ +template \ +inline \ +typename std::enable_if::value,HC_IMPLICIT_FLOAT_CONV>::type \ + function(T arg1) __attribute__((hc,cpu)) { \ + return ::function(static_cast(arg1)); \ +} \ +template \ +inline \ +typename std::enable_if::value,T>::type \ + function(T arg1) __attribute__((hc,cpu)) { \ + return std::function(arg1); \ +} + +#define KALMAR_MATH_WRAPPER_FP_OVERLOAD_1(function, arg1) \ +template \ +inline \ +typename std::enable_if::value,HC_IMPLICIT_FLOAT_CONV>::type \ + function(T arg1) __attribute__((hc,cpu)) { \ + return hc::precise_math::function(static_cast(arg1)); \ +} \ +template \ +inline \ +typename std::enable_if::value,T>::type \ + function(T arg1) __attribute__((hc,cpu)) { \ + return hc::precise_math::function(arg1); \ +} + +#define HC_MATH_WRAPPER_2(function, arg1, arg2) \ +template \ +inline T function(T arg1, T arg2) __attribute__((hc,cpu)) { \ + return std::function(arg1, arg2); \ +} + +#define HC_MATH_ALIAS_2(alias, function, arg1, arg2) \ +template \ +inline T alias(T arg1, T arg2) __attribute__((hc,cpu)) { \ + return std::function(arg1, arg2); \ +} + +#define HC_MATH_WRAPPER_3(function, arg1, arg2, arg3) \ +template \ +inline T function(T arg1, T arg2, T arg3) __attribute__((hc,cpu)) { \ + return std::function(arg1, arg2, arg3); \ +} + +#define HC_MATH_WRAPPER_TQ(function, arg1) \ +template \ +inline T function(Q arg1) __attribute__((hc,cpu)) { \ + return std::function(arg1); \ +} + +#define HC_MATH_WRAPPER_FP_OVERLOAD_TQ(function, T, arg1) \ +template \ +inline \ +typename std::enable_if::value,T>::type \ +function(Q arg1) __attribute__((hc)) { \ + return std::function(static_cast(arg1)); \ +}\ +template \ +inline \ +typename std::enable_if::value,T>::type \ +function(Q arg1) __attribute__((hc)) { \ + return std::function(arg1); \ +} + +#define HC_MATH_WRAPPER_TTQ(function, arg1, arg2) \ +template \ +inline T function(T arg1, Q arg2) __attribute__((hc,cpu)) { \ + return std::function(arg1, arg2); \ +} + +#define HC_MATH_WRAPPER_FP_OVERLOAD_TTQ(function, arg1, arg2) \ +template \ +inline \ +typename std::enable_if::value||std::is_integral::value,HC_IMPLICIT_FLOAT_CONV>::type \ +function(T arg1, Q arg2) __attribute__((hc,cpu)) { \ + return std::function(static_cast(arg1),static_cast(arg2)); \ +}\ +template \ +inline \ +typename std::enable_if::value&&std::is_floating_point::value,T>::type \ +function(T arg1, Q arg2) __attribute__((hc,cpu)) { \ + return std::function(arg1,arg2); \ +} + +#define HC_MATH_WRAPPER_TTTQ(function, arg1, arg2, arg3) \ +template \ +inline T function(T arg1, T arg2, Q arg3) __attribute__((hc,cpu)) { \ + return std::function(arg1, arg2, arg3); \ +} + +#define HC_MATH_WRAPPER_VTQQ(function, arg1, arg2, arg3) \ +template \ +inline void function(T arg1, Q arg2, Q arg3) __attribute__((hc,cpu)) { \ + std::function(arg1, arg2, arg3); \ +} + +#endif + + +// override global math functions +namespace std { + +// following math functions are NOT available because they don't have a GPU implementation +// +// erfinv +// erfcinv +// fpclassify +// +// following math functions are NOT available because they don't have a CPU implementation +// +// cospif +// cospi +// rsqrtf +// rsqrt +// sinpif +// sinpi +// tanpi +// + +HC_MATH_WRAPPER_TQ(ilogbf, x) +HC_MATH_WRAPPER_FP_OVERLOAD_TQ(ilogb, int, x) +HC_MATH_WRAPPER_FP_OVERLOAD_TQ(isfinite, bool, x) +HC_MATH_WRAPPER_FP_OVERLOAD_TQ(isinf, bool, x) +HC_MATH_WRAPPER_FP_OVERLOAD_TQ(isnan, bool, x) +HC_MATH_WRAPPER_FP_OVERLOAD_TQ(isnormal, bool, x) +HC_MATH_WRAPPER_TQ(nanf, tagp) +HC_MATH_WRAPPER_TQ(nan, tagp) +//HC_MATH_WRAPPER_TQ(signbitf, x) +HC_MATH_WRAPPER_TQ(signbit, x) +HC_MATH_WRAPPER_TTQ(frexpf, x, exp) +HC_MATH_WRAPPER_TTQ(frexp, x, exp) +HC_MATH_WRAPPER_TTQ(ldexpf, x, exp) +HC_MATH_WRAPPER_TTQ(ldexp, x, exp) +HC_MATH_WRAPPER_TTQ(lgammaf, x, exp) +HC_MATH_WRAPPER_TTQ(lgamma, x, exp) +HC_MATH_WRAPPER_TTQ(modff, x, exp) +HC_MATH_WRAPPER_TTQ(modf, x, exp) +HC_MATH_WRAPPER_TTQ(scalbnf, x, exp) +HC_MATH_WRAPPER_TTQ(scalbn, x, exp) +HC_MATH_WRAPPER_TTTQ(remquof, x, y, quo) +HC_MATH_WRAPPER_TTTQ(remquo, x, y, quo) +HC_MATH_WRAPPER_VTQQ(sincosf, x, s, c) +HC_MATH_WRAPPER_VTQQ(sincos, x, s, c) + +HC_MATH_WRAPPER_1(acosf, x) +HC_MATH_WRAPPER_FP_OVERLOAD_1(acos, x) +HC_MATH_WRAPPER_1(acoshf, x) +HC_MATH_WRAPPER_FP_OVERLOAD_1(acosh, x) +HC_MATH_WRAPPER_1(asinf, x) +HC_MATH_WRAPPER_FP_OVERLOAD_1(asin, x) +HC_MATH_WRAPPER_1(asinhf, x) +HC_MATH_WRAPPER_FP_OVERLOAD_1(asinh, x) +HC_MATH_WRAPPER_1(atanf, x) +HC_MATH_WRAPPER_FP_OVERLOAD_1(atan, x) +HC_MATH_WRAPPER_1(atanhf, x) +HC_MATH_WRAPPER_FP_OVERLOAD_1(atanh, x) +HC_MATH_WRAPPER_2(atan2f, x, y) +HC_MATH_WRAPPER_2(atan2, x, y) +HC_MATH_WRAPPER_1(cbrtf, x) +HC_MATH_WRAPPER_FP_OVERLOAD_1(cbrt, x) +HC_MATH_WRAPPER_1(ceilf, x) +HC_MATH_WRAPPER_FP_OVERLOAD_1(ceil, x) +HC_MATH_WRAPPER_2(copysignf, x, y) +HC_MATH_WRAPPER_2(copysign, x, y) +HC_MATH_WRAPPER_1(cosf, x) +HC_MATH_WRAPPER_FP_OVERLOAD_1(cos, x) +HC_MATH_WRAPPER_1(coshf, x) +HC_MATH_WRAPPER_FP_OVERLOAD_1(cosh, x) +KALMAR_MATH_WRAPPER_1(cospif, x) +KALMAR_MATH_WRAPPER_FP_OVERLOAD_1(cospi, x) +HC_MATH_WRAPPER_1(erff, x) +HC_MATH_WRAPPER_FP_OVERLOAD_1(erf, x) +HC_MATH_WRAPPER_1(erfcf, x) +HC_MATH_WRAPPER_FP_OVERLOAD_1(erfc, x) +HC_MATH_WRAPPER_1(expf, x) +HC_MATH_WRAPPER_FP_OVERLOAD_1(exp, x) +HC_MATH_WRAPPER_1(exp2f, x) +HC_MATH_WRAPPER_FP_OVERLOAD_1(exp2, x) +HC_MATH_WRAPPER_1(exp10f, x) +HC_MATH_WRAPPER_FP_OVERLOAD_1(exp10, x) +HC_MATH_WRAPPER_1(expm1f, x) +HC_MATH_WRAPPER_FP_OVERLOAD_1(expm1, x) +HC_MATH_WRAPPER_1(fabsf, x) +HC_MATH_WRAPPER_FP_OVERLOAD_1(fabs, x) +HC_MATH_WRAPPER_2(fdimf, x, y) +HC_MATH_WRAPPER_2(fdim, x, y) +HC_MATH_WRAPPER_1(floorf, x) +HC_MATH_WRAPPER_FP_OVERLOAD_1(floor, x) +HC_MATH_WRAPPER_3(fmaf, x, y, z) +HC_MATH_WRAPPER_3(fma, x, y, z) +HC_MATH_WRAPPER_2(fmaxf, x, y) +HC_MATH_WRAPPER_2(fmax, x, y) +HC_MATH_WRAPPER_2(fminf, x, y) +HC_MATH_WRAPPER_2(fmin, x, y) +HC_MATH_WRAPPER_2(fmodf, x, y) +HC_MATH_WRAPPER_2(fmod, x, y) +HC_MATH_WRAPPER_2(hypotf, x, y) +HC_MATH_WRAPPER_2(hypot, x, y) +HC_MATH_WRAPPER_1(logf, x) +HC_MATH_WRAPPER_FP_OVERLOAD_1(log, x) +HC_MATH_WRAPPER_1(log10f, x) +HC_MATH_WRAPPER_FP_OVERLOAD_1(log10, x) +HC_MATH_WRAPPER_1(log2f, x) +HC_MATH_WRAPPER_FP_OVERLOAD_1(log2, x) +HC_MATH_WRAPPER_1(log1pf, x) +HC_MATH_WRAPPER_FP_OVERLOAD_1(log1p, x) +HC_MATH_WRAPPER_1(logbf, x) +HC_MATH_WRAPPER_FP_OVERLOAD_1(logb, x) +HC_MATH_WRAPPER_1(nearbyintf, x) +HC_MATH_WRAPPER_FP_OVERLOAD_1(nearbyint, x) +HC_MATH_WRAPPER_2(nextafterf, x, y) +HC_MATH_WRAPPER_2(nextafter, x, y) +HC_MATH_WRAPPER_2(powf, x, y) +HC_MATH_WRAPPER_FP_OVERLOAD_TTQ(pow,x,y) +//HC_MATH_WRAPPER_1(rcbrtf, x) +//HC_MATH_WRAPPER_1(rcbrt, x) +HC_MATH_WRAPPER_2(remainderf, x, y) +HC_MATH_WRAPPER_2(remainder, x, y) +HC_MATH_WRAPPER_1(roundf, x) +HC_MATH_WRAPPER_FP_OVERLOAD_1(round, x) +KALMAR_MATH_WRAPPER_1(rsqrtf, x) +KALMAR_MATH_WRAPPER_FP_OVERLOAD_1(rsqrt, x) +HC_MATH_WRAPPER_2(scalbf, x, exp) +HC_MATH_WRAPPER_2(scalb, x, exp) +HC_MATH_WRAPPER_1(sinf, x) +HC_MATH_WRAPPER_FP_OVERLOAD_1(sin, x) +HC_MATH_WRAPPER_1(sinhf, x) +HC_MATH_WRAPPER_FP_OVERLOAD_1(sinh, x) +KALMAR_MATH_WRAPPER_1(sinpif, x) +KALMAR_MATH_WRAPPER_FP_OVERLOAD_1(sinpi, x) +HC_MATH_WRAPPER_1(sqrtf, x) +HC_MATH_WRAPPER_FP_OVERLOAD_1(sqrt, x) +HC_MATH_WRAPPER_1(tgammaf, x) +HC_MATH_WRAPPER_FP_OVERLOAD_1(tgamma, x) +HC_MATH_WRAPPER_1(tanf, x) +HC_MATH_WRAPPER_FP_OVERLOAD_1(tan, x) +HC_MATH_WRAPPER_1(tanhf, x) +HC_MATH_WRAPPER_FP_OVERLOAD_1(tanh, x) +HC_MATH_WRAPPER_1(truncf, x) +HC_MATH_WRAPPER_FP_OVERLOAD_1(trunc, x) + +//HC_MATH_ALIAS_2(min, fmin, x, y) +//HC_MATH_ALIAS_2(max, fmax, x, y) + +} // namespace + diff --git a/lib/kokkos/core/src/impl/Kokkos_Atomic_Compare_Exchange_Strong.hpp b/lib/kokkos/core/src/impl/Kokkos_Atomic_Compare_Exchange_Strong.hpp index 5b894b037b83ce8095a78ad094f9c33ef1020d42..49fca9c8551886346432658ba638450506ad5eff 100644 --- a/lib/kokkos/core/src/impl/Kokkos_Atomic_Compare_Exchange_Strong.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_Atomic_Compare_Exchange_Strong.hpp @@ -125,6 +125,7 @@ T atomic_compare_exchange( volatile T * const dest , const T & compare , //---------------------------------------------------------------------------- // GCC native CAS supports int, long, unsigned int, unsigned long. // Intel native CAS support int and long with the same interface as GCC. +#if !defined(KOKKOS_ENABLE_ROCM_ATOMICS) #if !defined(__CUDA_ARCH__) || defined(KOKKOS_IMPL_CUDA_CLANG_WORKAROUND) #if defined(KOKKOS_ENABLE_GNU_ATOMICS) || defined(KOKKOS_ENABLE_INTEL_ATOMICS) @@ -280,6 +281,7 @@ T atomic_compare_exchange( volatile T * const dest, const T compare, const T val #endif #endif +#endif // !defined ROCM_ATOMICS template KOKKOS_INLINE_FUNCTION diff --git a/lib/kokkos/core/src/impl/Kokkos_Atomic_Fetch_Add.hpp b/lib/kokkos/core/src/impl/Kokkos_Atomic_Fetch_Add.hpp index 084c55efedd20b77dbd1fefa86e8f970a4302473..2af1737c31f8137901fbf3c4d8cab0bc1b88a3f9 100644 --- a/lib/kokkos/core/src/impl/Kokkos_Atomic_Fetch_Add.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_Atomic_Fetch_Add.hpp @@ -158,6 +158,7 @@ T atomic_fetch_add( volatile T * const dest , #endif #endif //---------------------------------------------------------------------------- +#if !defined(KOKKOS_ENABLE_ROCM_ATOMICS) #if !defined(__CUDA_ARCH__) || defined(KOKKOS_IMPL_CUDA_CLANG_WORKAROUND) #if defined(KOKKOS_ENABLE_GNU_ATOMICS) || defined(KOKKOS_ENABLE_INTEL_ATOMICS) @@ -355,6 +356,7 @@ T atomic_fetch_add( volatile T * const dest , const T val ) #endif #endif +#endif // !defined ROCM_ATOMICS //---------------------------------------------------------------------------- // Simpler version of atomic_fetch_add without the fetch diff --git a/lib/kokkos/core/src/impl/Kokkos_Atomic_Fetch_Sub.hpp b/lib/kokkos/core/src/impl/Kokkos_Atomic_Fetch_Sub.hpp index 038cc13e9aa400d93679febb34370bb0fb729adc..b7c14052eb4519f522c5b6a2a724f5aa5ad976f5 100644 --- a/lib/kokkos/core/src/impl/Kokkos_Atomic_Fetch_Sub.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_Atomic_Fetch_Sub.hpp @@ -135,6 +135,7 @@ T atomic_fetch_sub( volatile T * const dest , #endif #endif //---------------------------------------------------------------------------- +#if !defined(KOKKOS_ENABLE_ROCM_ATOMICS) #if !defined(__CUDA_ARCH__) || defined(KOKKOS_IMPL_CUDA_CLANG_WORKAROUND) #if defined(KOKKOS_ENABLE_GNU_ATOMICS) || defined(KOKKOS_ENABLE_INTEL_ATOMICS) @@ -263,6 +264,8 @@ T atomic_fetch_sub( volatile T * const dest , const T val ) #endif #endif +#endif // !defined ROCM_ATOMICS + // Simpler version of atomic_fetch_sub without the fetch template KOKKOS_INLINE_FUNCTION diff --git a/lib/kokkos/core/src/impl/Kokkos_Atomic_Generic.hpp b/lib/kokkos/core/src/impl/Kokkos_Atomic_Generic.hpp index 65578156d5be52232785d93744c9025c814bd6a8..f47ba1a98a9225aa50f54ebfbb27ab052dbd2b3b 100644 --- a/lib/kokkos/core/src/impl/Kokkos_Atomic_Generic.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_Atomic_Generic.hpp @@ -238,7 +238,7 @@ T atomic_fetch_oper( const Oper& op, volatile T * const dest , *dest = Oper::apply(return_val, val); Impl::unlock_address_host_space( (void*) dest ); return return_val; -#else +#elif defined(KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_CUDA) // This is a way to (hopefully) avoid dead lock in a warp T return_val; int done = 0; @@ -277,7 +277,7 @@ T atomic_oper_fetch( const Oper& op, volatile T * const dest , *dest = return_val; Impl::unlock_address_host_space( (void*) dest ); return return_val; -#else +#elif defined(KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_CUDA) T return_val; // This is a way to (hopefully) avoid dead lock in a warp int done = 0; diff --git a/lib/kokkos/core/src/impl/Kokkos_BitOps.hpp b/lib/kokkos/core/src/impl/Kokkos_BitOps.hpp index df16b3738b7abfea350ca4375c4b0e84973877b4..3d3029535e9c770b65cbe07af5f6256fd01ada0d 100644 --- a/lib/kokkos/core/src/impl/Kokkos_BitOps.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_BitOps.hpp @@ -62,6 +62,8 @@ int bit_first_zero( unsigned i ) noexcept #if defined( __CUDA_ARCH__ ) return full != i ? __ffs( ~i ) - 1 : -1 ; +#elif defined( __HCC_ACCELERATOR__ ) + return full != i ? (int)hc::__firstbit_u32_u32(~i) : -1 ; #elif defined( KOKKOS_COMPILER_INTEL ) return full != i ? _bit_scan_forward( ~i ) : -1 ; #elif defined( KOKKOS_COMPILER_IBM ) @@ -82,6 +84,8 @@ int bit_scan_forward( unsigned i ) { #if defined( __CUDA_ARCH__ ) return __ffs(i) - 1; +#elif defined( __HCC_ACCELERATOR__ ) + return (int)hc::__firstbit_u32_u32(i); #elif defined( KOKKOS_COMPILER_INTEL ) return _bit_scan_forward(i); #elif defined( KOKKOS_COMPILER_IBM ) @@ -106,6 +110,8 @@ int bit_scan_reverse( unsigned i ) enum { shift = static_cast( sizeof(unsigned) * CHAR_BIT - 1 ) }; #if defined( __CUDA_ARCH__ ) return shift - __clz(i); +#elif defined( __HCC_ACCELERATOR__ ) + return (int)hc::__firstbit_u32_u32(i); #elif defined( KOKKOS_COMPILER_INTEL ) return _bit_scan_reverse(i); #elif defined( KOKKOS_COMPILER_IBM ) @@ -130,6 +136,8 @@ int bit_count( unsigned i ) { #if defined( __CUDA_ARCH__ ) return __popc(i); +#elif defined( __HCC_ACCELERATOR__ ) + return (int)hc::__popcount_u32_b32(i); #elif defined ( __INTEL_COMPILER ) return _popcnt32(i); #elif defined( KOKKOS_COMPILER_IBM ) diff --git a/lib/kokkos/core/src/impl/Kokkos_ClockTic.hpp b/lib/kokkos/core/src/impl/Kokkos_ClockTic.hpp index 92111c3c59263eeeeccdb59982febfa7755d7d62..c59c59d4979247a9131835c8ee41393a5f5e3836 100644 --- a/lib/kokkos/core/src/impl/Kokkos_ClockTic.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_ClockTic.hpp @@ -72,6 +72,10 @@ uint64_t clock_tic(void) noexcept return clock64(); +#elif defined(__HCC_ACCELERATOR__) + // Get clock register + return hc::__clock_u64(); + #elif defined( __i386__ ) || defined( __x86_64 ) // Return value of 64-bit hi-res clock register. diff --git a/lib/kokkos/core/src/impl/Kokkos_Core.cpp b/lib/kokkos/core/src/impl/Kokkos_Core.cpp index f52cc469ace10cd795b3fa1389732e292f4357ee..ab6cffc7c3c18ef03b3f2f22689c7b8b8923e909 100644 --- a/lib/kokkos/core/src/impl/Kokkos_Core.cpp +++ b/lib/kokkos/core/src/impl/Kokkos_Core.cpp @@ -80,7 +80,7 @@ setenv("MEMKIND_HBW_NODES", "1", 0); const int num_threads = args.num_threads; const int use_numa = args.num_numa; #endif // defined( KOKKOS_ENABLE_OPENMP ) || defined( KOKKOS_ENABLE_THREADS ) -#if defined( KOKKOS_ENABLE_CUDA ) +#if defined( KOKKOS_ENABLE_CUDA ) || defined( KOKKOS_ENABLE_ROCM ) const int use_gpu = args.device_id; #endif // defined( KOKKOS_ENABLE_CUDA ) @@ -162,6 +162,18 @@ setenv("MEMKIND_HBW_NODES", "1", 0); } #endif +#if defined( KOKKOS_ENABLE_ROCM ) + if( std::is_same< Kokkos::Experimental::ROCm , Kokkos::DefaultExecutionSpace >::value || 0 < use_gpu ) { + if (use_gpu > -1) { + Kokkos::Experimental::ROCm::initialize( Kokkos::Experimental::ROCm::SelectDevice( use_gpu ) ); + } + else { + Kokkos::Experimental::ROCm::initialize(); + } + std::cout << "Kokkos::initialize() fyi: ROCm enabled and initialized" << std::endl ; + } +#endif + #if defined(KOKKOS_ENABLE_PROFILING) Kokkos::Profiling::initialize(); #endif @@ -181,6 +193,13 @@ void finalize_internal( const bool all_spaces = false ) } #endif +#if defined( KOKKOS_ENABLE_ROCM ) + if( std::is_same< Kokkos::Experimental::ROCm , Kokkos::DefaultExecutionSpace >::value || all_spaces ) { + if(Kokkos::Experimental::ROCm::is_initialized()) + Kokkos::Experimental::ROCm::finalize(); + } +#endif + #if defined( KOKKOS_ENABLE_OPENMPTARGET ) if( std::is_same< Kokkos::Experimental::OpenMPTarget , Kokkos::DefaultExecutionSpace >::value || all_spaces ) { if(Kokkos::Experimental::OpenMPTarget::is_initialized()) @@ -225,6 +244,12 @@ void fence_internal() } #endif +#if defined( KOKKOS_ENABLE_ROCM ) + if( std::is_same< Kokkos::Experimental::ROCm , Kokkos::DefaultExecutionSpace >::value ) { + Kokkos::Experimental::ROCm::fence(); + } +#endif + #if defined( KOKKOS_ENABLE_OPENMP ) if( std::is_same< Kokkos::OpenMP , Kokkos::DefaultExecutionSpace >::value || std::is_same< Kokkos::OpenMP , Kokkos::HostSpace::execution_space >::value ) { diff --git a/lib/kokkos/core/src/impl/Kokkos_Error.hpp b/lib/kokkos/core/src/impl/Kokkos_Error.hpp index 4bc2637c57980502c4fe7b8a5e1c4f86db43bb86..b4390f14a16d14bd7fafcfbecb805071bec8696e 100644 --- a/lib/kokkos/core/src/impl/Kokkos_Error.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_Error.hpp @@ -75,7 +75,7 @@ void abort( const char * const message ) { #ifdef __CUDA_ARCH__ Kokkos::Impl::cuda_abort(message); #else - #ifndef KOKKOS_ENABLE_OPENMPTARGET + #if !defined(KOKKOS_ENABLE_OPENMPTARGET) && !defined(__HCC_ACCELERATOR__) Kokkos::Impl::host_abort(message); #endif #endif diff --git a/lib/kokkos/core/src/impl/Kokkos_HostThreadTeam.cpp b/lib/kokkos/core/src/impl/Kokkos_HostThreadTeam.cpp index d2446bde09ad7697fb23d11d469fe1566dde8fac..047b262422853deb7e0c95a94f0544cc6d664240 100644 --- a/lib/kokkos/core/src/impl/Kokkos_HostThreadTeam.cpp +++ b/lib/kokkos/core/src/impl/Kokkos_HostThreadTeam.cpp @@ -275,7 +275,9 @@ int HostThreadTeamData::rendezvous( int64_t * const buffer for ( int i = 0 ; i < end ; ++i ) { ((int8_t*) & value )[i] = int8_t( step ); } - + // Do not REMOVE this store fence!!! + // Makes stuff hang on GCC with more than 8 threads + store_fence(); spinwait_until_equal( buffer[ (rank << shift_mem_cycle) + sync_offset ] , value ); } diff --git a/lib/kokkos/core/src/impl/Kokkos_Memory_Fence.hpp b/lib/kokkos/core/src/impl/Kokkos_Memory_Fence.hpp index 7a887a9e29f55372a65c5c2653a14d2f0d4c5ec5..eedf3d559eaabfe960dd6e3214efd194bb7eb0b6 100644 --- a/lib/kokkos/core/src/impl/Kokkos_Memory_Fence.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_Memory_Fence.hpp @@ -53,6 +53,8 @@ void memory_fence() { #if defined( __CUDA_ARCH__ ) __threadfence(); +#elif defined( KOKKOS_ENABLE_ROCM_ATOMICS ) + amp_barrier(CLK_LOCAL_MEM_FENCE | CLK_GLOBAL_MEM_FENCE); #elif defined( KOKKOS_ENABLE_ASM ) && defined( KOKKOS_ENABLE_ISA_X86_64 ) asm volatile ( "mfence" ::: "memory" diff --git a/lib/kokkos/core/src/impl/Kokkos_OldMacros.hpp b/lib/kokkos/core/src/impl/Kokkos_OldMacros.hpp index 15ce6964a0369980df0124021062b08caa5f9e39..a408199088c5e0b7bd67e3944b72af35d96cef55 100644 --- a/lib/kokkos/core/src/impl/Kokkos_OldMacros.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_OldMacros.hpp @@ -140,12 +140,6 @@ #endif #endif -#ifdef KOKKOS_HAVE_CXX11_DISPATCH_LAMBDA -#ifndef KOKKOS_ENABLE_CXX11_DISPATCH_LAMBDA -#define KOKKOS_ENABLE_CXX11_DISPATCH_LAMBDA KOKKOS_HAVE_CXX11_DISPATCH_LAMBDA -#endif -#endif - #ifdef KOKKOS_HAVE_CXX1Z #ifndef KOKKOS_ENABLE_CXX1Z #define KOKKOS_ENABLE_CXX1Z KOKKOS_HAVE_CXX1Z diff --git a/lib/kokkos/core/src/impl/Kokkos_TaskQueue_impl.hpp b/lib/kokkos/core/src/impl/Kokkos_TaskQueue_impl.hpp index 1974f7e1cae62eca6a1f692476786623f4993800..0cce45b2e710f337f26b2790afe014722a2386e7 100644 --- a/lib/kokkos/core/src/impl/Kokkos_TaskQueue_impl.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_TaskQueue_impl.hpp @@ -456,10 +456,11 @@ void TaskQueue< ExecSpace >::schedule_aggregate // task->m_next == member of linked list (queue) #if KOKKOS_IMPL_DEBUG_TASKDAG_SCHEDULING - printf( "schedule_aggregate( 0x%lx { 0x%lx 0x%lx %d %d %d }\n" + printf( "schedule_aggregate( 0x%lx { 0x%lx 0x%lx %d %d %d %d }\n" , uintptr_t(task) , uintptr_t(task->m_wait) , uintptr_t(task->m_next) + , task->m_dep_count , task->m_task_type , task->m_priority , task->m_ref_count ); @@ -597,7 +598,6 @@ void TaskQueue< ExecSpace >::complete , task->m_task_type , task->m_priority , task->m_ref_count ); - fflush( stdout ); #endif task_root_type volatile & t = *task ; diff --git a/lib/kokkos/core/src/impl/Kokkos_ViewMapping.hpp b/lib/kokkos/core/src/impl/Kokkos_ViewMapping.hpp index d346f9e6393530f4489d027db2c4d7f9892b15d1..b2adcc9f067582dacd7474cb366be0da2cde6482 100644 --- a/lib/kokkos/core/src/impl/Kokkos_ViewMapping.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_ViewMapping.hpp @@ -1015,8 +1015,13 @@ struct ViewOffset< Dimension , Kokkos::LayoutLeft constexpr ViewOffset( const ViewOffset< DimRHS , Kokkos::LayoutRight , void > & rhs ) : m_dim( rhs.m_dim.N0, 0, 0, 0, 0, 0, 0, 0 ) { - static_assert( DimRHS::rank == 1 && dimension_type::rank == 1 && dimension_type::rank_dynamic == 1 - , "ViewOffset LayoutLeft and LayoutRight are only compatible when rank == 1" ); + static_assert( + ( DimRHS::rank == 0 && + dimension_type::rank == 0 ) || + ( DimRHS::rank == 1 && + dimension_type::rank == 1 && + dimension_type::rank_dynamic == 1 ) + , "ViewOffset LayoutLeft and LayoutRight are only compatible when rank <= 1" ); } template< class DimRHS > @@ -1024,8 +1029,13 @@ struct ViewOffset< Dimension , Kokkos::LayoutLeft ViewOffset( const ViewOffset< DimRHS , Kokkos::LayoutStride , void > & rhs ) : m_dim( rhs.m_dim.N0, 0, 0, 0, 0, 0, 0, 0 ) { - static_assert( DimRHS::rank == 1 && dimension_type::rank == 1 && dimension_type::rank_dynamic == 1 - , "ViewOffset LayoutLeft and LayoutStride are only compatible when rank == 1" ); + static_assert( + ( DimRHS::rank == 0 && + dimension_type::rank == 0 ) || + ( DimRHS::rank == 1 && + dimension_type::rank == 1 && + dimension_type::rank_dynamic == 1 ) + , "ViewOffset LayoutLeft and LayoutStride are only compatible when rank <= 1" ); if ( rhs.m_stride.S0 != 1 ) { Kokkos::abort("Kokkos::Impl::ViewOffset assignment of LayoutLeft from LayoutStride requires stride == 1" ); } @@ -1493,8 +1503,13 @@ struct ViewOffset< Dimension , Kokkos::LayoutRight constexpr ViewOffset( const ViewOffset< DimRHS , Kokkos::LayoutLeft , void > & rhs ) : m_dim( rhs.m_dim.N0, 0, 0, 0, 0, 0, 0, 0 ) { - static_assert( DimRHS::rank == 1 && dimension_type::rank == 1 && dimension_type::rank_dynamic == 1 - , "ViewOffset LayoutRight and LayoutLeft are only compatible when rank == 1" ); + static_assert( + ( DimRHS::rank == 0 && + dimension_type::rank == 0 ) || + ( DimRHS::rank == 1 && + dimension_type::rank == 1 && + dimension_type::rank_dynamic == 1 ) + , "ViewOffset LayoutRight and LayoutLeft are only compatible when rank <= 1" ); } template< class DimRHS > @@ -1502,8 +1517,13 @@ struct ViewOffset< Dimension , Kokkos::LayoutRight ViewOffset( const ViewOffset< DimRHS , Kokkos::LayoutStride , void > & rhs ) : m_dim( rhs.m_dim.N0, 0, 0, 0, 0, 0, 0, 0 ) { - static_assert( DimRHS::rank == 1 && dimension_type::rank == 1 && dimension_type::rank_dynamic == 1 - , "ViewOffset LayoutLeft/Right and LayoutStride are only compatible when rank == 1" ); + static_assert( + ( DimRHS::rank == 0 && + dimension_type::rank == 0 ) || + ( DimRHS::rank == 1 && + dimension_type::rank == 1 && + dimension_type::rank_dynamic == 1 ) + , "ViewOffset LayoutRight and LayoutString are only compatible when rank <= 1" ); if ( rhs.m_stride.S0 != 1 ) { Kokkos::abort("Kokkos::Impl::ViewOffset assignment of LayoutLeft/Right from LayoutStride requires stride == 1" ); } diff --git a/lib/kokkos/core/src/impl/Kokkos_ViewTile.hpp b/lib/kokkos/core/src/impl/Kokkos_ViewTile.hpp index 5a8600e0aee34719e512229292ecb37d9b950657..37367f68e4bbb1c7e9a01c395ab7fdf7729bdae4 100644 --- a/lib/kokkos/core/src/impl/Kokkos_ViewTile.hpp +++ b/lib/kokkos/core/src/impl/Kokkos_ViewTile.hpp @@ -143,7 +143,7 @@ public: //---------------------------------------- - ~ViewOffset() = default ; + KOKKOS_FUNCTION_DEFAULTED ~ViewOffset() = default ; KOKKOS_INLINE_FUNCTION ViewOffset() = default ; KOKKOS_INLINE_FUNCTION ViewOffset( const ViewOffset & ) = default ; KOKKOS_INLINE_FUNCTION ViewOffset & operator = ( const ViewOffset & ) = default ; diff --git a/lib/kokkos/core/unit_test/CMakeLists.txt b/lib/kokkos/core/unit_test/CMakeLists.txt index 475b6bb48a2eee3583da12aa4baae3f3ab4e8536..8aeae1199f46b701d7a79fe2541821ba09b2f7f9 100644 --- a/lib/kokkos/core/unit_test/CMakeLists.txt +++ b/lib/kokkos/core/unit_test/CMakeLists.txt @@ -57,6 +57,7 @@ IF(Kokkos_ENABLE_Serial) serial/TestSerial_ViewMapping_b.cpp serial/TestSerial_ViewMapping_subview.cpp serial/TestSerial_ViewOfClass.cpp + serial/TestSerial_Crs.cpp serial/TestSerial_WorkGraph.cpp COMM serial mpi NUM_MPI_PROCS 1 @@ -103,6 +104,7 @@ IF(Kokkos_ENABLE_Pthread) threads/TestThreads_ViewMapping_b.cpp threads/TestThreads_ViewMapping_subview.cpp threads/TestThreads_ViewOfClass.cpp + threads/TestThreads_Crs.cpp threads/TestThreads_WorkGraph.cpp COMM serial mpi NUM_MPI_PROCS 1 @@ -149,6 +151,7 @@ IF(Kokkos_ENABLE_OpenMP) openmp/TestOpenMP_ViewMapping_b.cpp openmp/TestOpenMP_ViewMapping_subview.cpp openmp/TestOpenMP_ViewOfClass.cpp + openmp/TestOpenMP_Crs.cpp openmp/TestOpenMP_WorkGraph.cpp openmp/TestOpenMP_UniqueToken.cpp COMM serial mpi @@ -241,6 +244,7 @@ IF(Kokkos_ENABLE_Cuda) cuda/TestCuda_ViewMapping_b.cpp cuda/TestCuda_ViewMapping_subview.cpp cuda/TestCuda_ViewOfClass.cpp + cuda/TestCuda_Crs.cpp cuda/TestCuda_WorkGraph.cpp COMM serial mpi NUM_MPI_PROCS 1 diff --git a/lib/kokkos/core/unit_test/Makefile b/lib/kokkos/core/unit_test/Makefile index c877aa7dd2d252e0d19970becbc4deaac41f2d45..07859f7ac37afc1bf209feba1ece15214745a7f3 100644 --- a/lib/kokkos/core/unit_test/Makefile +++ b/lib/kokkos/core/unit_test/Makefile @@ -10,6 +10,8 @@ vpath %.cpp ${KOKKOS_PATH}/core/unit_test/openmp vpath %.cpp ${KOKKOS_PATH}/core/unit_test/openmptarget vpath %.cpp ${KOKKOS_PATH}/core/unit_test/qthreads vpath %.cpp ${KOKKOS_PATH}/core/unit_test/cuda +vpath %.cpp ${KOKKOS_PATH}/core/unit_test/rocm + TEST_HEADERS = $(wildcard $(KOKKOS_PATH)/core/unit_test/*.hpp) TEST_HEADERS += $(wildcard $(KOKKOS_PATH)/core/unit_test/*/*.hpp) @@ -62,6 +64,7 @@ endif OBJ_CUDA += TestCuda_TeamReductionScan.o OBJ_CUDA += TestCuda_Other.o OBJ_CUDA += TestCuda_MDRange.o + OBJ_CUDA += TestCuda_Crs.o OBJ_CUDA += TestCuda_Task.o TestCuda_WorkGraph.o OBJ_CUDA += TestCuda_Spaces.o OBJ_CUDA += TestCuda_UniqueToken.o @@ -71,6 +74,58 @@ endif TEST_TARGETS += test-cuda endif +ifeq ($(KOKKOS_INTERNAL_USE_ROCM), 1) + OBJ_ROCM = UnitTestMainInit.o gtest-all.o + OBJ_ROCM += TestROCm_Init.o + OBJ_ROCM += TestROCm_Complex.o +# OBJ_ROCM += TestROCm_RangePolicy.o +# rocm.range_scan locking up + OBJ_ROCM += TestROCm_AtomicOperations.o + OBJ_ROCM += TestROCm_Atomics.o +# complex failing + OBJ_ROCM += TestROCm_AtomicViews.o + OBJ_ROCM += TestROCm_Other.o +# rocm.memory_pool + OBJ_ROCM += TestROCm_Scan.o + OBJ_ROCM += TestROCm_SharedAlloc.o + OBJ_ROCM += TestROCm_SubView_a.o +# OBJ_ROCM += TestROCm_SubView_b.o +# relies on host accessable device memory +# OBJ_ROCM += TestROCm_SubView_c01.o +# OBJ_ROCM += TestROCm_SubView_c02.o +# OBJ_ROCM += TestROCm_SubView_c03.o +# OBJ_ROCM += TestROCm_SubView_c04.o +# OBJ_ROCM += TestROCm_SubView_c05.o +# OBJ_ROCM += TestROCm_SubView_c06.o +# OBJ_ROCM += TestROCm_SubView_c07.o +# OBJ_ROCM += TestROCm_SubView_c08.o +# OBJ_ROCM += TestROCm_SubView_c09.o +# OBJ_ROCM += TestROCm_SubView_c10.o +# OBJ_ROCM += TestROCm_SubView_c11.o +# OBJ_ROCM += TestROCm_SubView_c12.o +# all of the above use UVM or Host accessable memory +# OBJ_ROCM += TestROCm_Team.o +# compile fails +# OBJ_ROCM += TestROCm_TeamReductionScan.o +# compile fails +# OBJ_ROCM += TestROCm_TeamScratch.o +# compile fails + OBJ_ROCM += TestROCm_ViewAPI_b.o +# test fail in view_api + OBJ_ROCM += TestROCm_ViewMapping_a.o + OBJ_ROCM += TestROCm_ViewMapping_b.o + OBJ_ROCM += TestROCm_ViewMapping_subview.o + OBJ_ROCM += TestROCmHostPinned_ViewAPI.o + OBJ_ROCM += TestROCmHostPinned_ViewMapping_a.o + OBJ_ROCM += TestROCmHostPinned_ViewMapping_b.o + OBJ_ROCM += TestROCmHostPinned_ViewMapping_subview.o + OBJ_ROCM += TestROCm_ViewOfClass.o + OBJ_ROCM += TestROCm_Spaces.o + + TARGETS += KokkosCore_UnitTest_ROCm + TEST_TARGETS += test-rocm +endif + ifeq ($(KOKKOS_INTERNAL_USE_PTHREADS), 1) OBJ_THREADS = UnitTestMainInit.o gtest-all.o @@ -122,6 +177,7 @@ endif OBJ_OPENMP += TestOpenMP_TeamReductionScan.o OBJ_OPENMP += TestOpenMP_Other.o OBJ_OPENMP += TestOpenMP_MDRange.o + OBJ_OPENMP += TestOpenMP_Crs.o OBJ_OPENMP += TestOpenMP_Task.o TestOpenMP_WorkGraph.o OBJ_OPENMP += TestOpenMP_UniqueToken.o @@ -209,7 +265,11 @@ endif OBJ_SERIAL += TestSerial_Team.o TestSerial_TeamScratch.o OBJ_SERIAL += TestSerial_TeamReductionScan.o OBJ_SERIAL += TestSerial_Other.o + #HCC_WORKAROUND + ifneq ($(KOKKOS_INTERNAL_COMPILER_HCC), 1) OBJ_SERIAL += TestSerial_MDRange.o + endif + OBJ_SERIAL += TestSerial_Crs.o OBJ_SERIAL += TestSerial_Task.o TestSerial_WorkGraph.o TARGETS += KokkosCore_UnitTest_Serial @@ -223,8 +283,10 @@ TEST_TARGETS += test-hwloc OBJ_DEFAULT = UnitTestMainInit.o gtest-all.o ifneq ($(KOKKOS_INTERNAL_USE_OPENMPTARGET), 1) +ifneq ($(KOKKOS_INTERNAL_COMPILER_HCC), 1) OBJ_DEFAULT += TestDefaultDeviceType.o TestDefaultDeviceType_a.o TestDefaultDeviceType_b.o TestDefaultDeviceType_c.o TestDefaultDeviceType_d.o endif +endif TARGETS += KokkosCore_UnitTest_Default TEST_TARGETS += test-default @@ -239,6 +301,9 @@ TEST_TARGETS += ${INITTESTS_TEST_TARGETS} KokkosCore_UnitTest_Cuda: $(OBJ_CUDA) $(KOKKOS_LINK_DEPENDS) $(LINK) $(EXTRA_PATH) $(OBJ_CUDA) $(KOKKOS_LIBS) $(LIB) $(KOKKOS_LDFLAGS) $(LDFLAGS) -o KokkosCore_UnitTest_Cuda +KokkosCore_UnitTest_ROCm: $(OBJ_ROCM) $(KOKKOS_LINK_DEPENDS) + $(LINK) $(EXTRA_PATH) $(OBJ_ROCM) $(KOKKOS_LIBS) $(LIB) $(KOKKOS_LDFLAGS) $(LDFLAGS) -o KokkosCore_UnitTest_ROCm + KokkosCore_UnitTest_Threads: $(OBJ_THREADS) $(KOKKOS_LINK_DEPENDS) $(LINK) $(EXTRA_PATH) $(OBJ_THREADS) $(KOKKOS_LIBS) $(LIB) $(KOKKOS_LDFLAGS) $(LDFLAGS) -o KokkosCore_UnitTest_Threads @@ -272,6 +337,9 @@ ${INITTESTS_TARGETS}: KokkosCore_UnitTest_DefaultDeviceTypeInit_%: TestDefaultDe test-cuda: KokkosCore_UnitTest_Cuda ./KokkosCore_UnitTest_Cuda +test-rocm: KokkosCore_UnitTest_ROCm + ./KokkosCore_UnitTest_ROCm + test-threads: KokkosCore_UnitTest_Threads ./KokkosCore_UnitTest_Threads diff --git a/lib/kokkos/core/unit_test/TestCompilerMacros.hpp b/lib/kokkos/core/unit_test/TestCompilerMacros.hpp index fddcc4a2e6ce76925b68caf7908e26f0efffa45d..f0391134ba9c772546c62434e324cb0749b952e0 100644 --- a/lib/kokkos/core/unit_test/TestCompilerMacros.hpp +++ b/lib/kokkos/core/unit_test/TestCompilerMacros.hpp @@ -43,6 +43,19 @@ #include +#if defined(KOKKOS_ENABLE_CUDA) && \ + ( !defined(KOKKOS_ENABLE_CUDA_LAMBDA) || \ + ( ( defined(KOKKOS_ENABLE_SERIAL) || defined(KOKKOS_ENABLE_OPENMP) ) && \ + ( (CUDA_VERSION < 8000) && defined( __NVCC__ )))) + #if defined(KOKKOS_ENABLE_CXX11_DISPATCH_LAMBDA) + #error "Macro bug: KOKKOS_ENABLE_CXX11_DISPATCH_LAMBDA shouldn't be defined" + #endif +#else + #if !defined(KOKKOS_ENABLE_CXX11_DISPATCH_LAMBDA) + #error "Macro bug: KOKKOS_ENABLE_CXX11_DISPATCH_LAMBDA should be defined" + #endif +#endif + #define KOKKOS_PRAGMA_UNROLL(a) namespace TestCompilerMacros { diff --git a/lib/kokkos/core/unit_test/TestComplex.hpp b/lib/kokkos/core/unit_test/TestComplex.hpp index 36f05612e0972a043af9622801bc1855c58cc62b..ce5537fed362a43eac1b57c8f63a06d7329c1ff4 100644 --- a/lib/kokkos/core/unit_test/TestComplex.hpp +++ b/lib/kokkos/core/unit_test/TestComplex.hpp @@ -158,7 +158,8 @@ struct TestComplexBasicMath { d_results(1) = a-b; d_results(2) = a*b; d_results(3) = a/b; - d_results(4) = Kokkos::complex(1.0,2.0); + d_results(4).real(1.0); + d_results(4).imag(2.0); d_results(4) += a; d_results(5) = Kokkos::complex(1.0,2.0); d_results(5) -= a; @@ -173,7 +174,8 @@ struct TestComplexBasicMath { d_results(9) = a-c; d_results(10) = a*c; d_results(11) = a/c; - d_results(12) = Kokkos::complex(1.0,2.0); + d_results(12).real(1.0); + d_results(12).imag(2.0); d_results(12) += c; d_results(13) = Kokkos::complex(1.0,2.0); d_results(13) -= c; diff --git a/lib/kokkos/core/unit_test/TestCrs.hpp b/lib/kokkos/core/unit_test/TestCrs.hpp new file mode 100644 index 0000000000000000000000000000000000000000..90f40368688c4ab9902cbd246b0fb3ea1acc9adf --- /dev/null +++ b/lib/kokkos/core/unit_test/TestCrs.hpp @@ -0,0 +1,98 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include + +#include + +namespace Test { + +namespace { + +template< class ExecSpace > +struct CountFillFunctor { + KOKKOS_INLINE_FUNCTION + std::int32_t operator()(std::int32_t row, std::int32_t* fill) const { + auto n = (row % 4) + 1; + if (fill) { + for (std::int32_t j = 0; j < n; ++j) { + fill[j] = j + 1; + } + } + return n; + } +}; + +template< class ExecSpace > +void test_count_fill(std::int32_t nrows) { + Kokkos::Experimental::Crs graph; + Kokkos::Experimental::count_and_fill_crs(graph, nrows, CountFillFunctor()); + ASSERT_EQ(graph.numRows(), nrows); + auto row_map = Kokkos::create_mirror_view(graph.row_map); + Kokkos::deep_copy(row_map, graph.row_map); + auto entries = Kokkos::create_mirror_view(graph.entries); + Kokkos::deep_copy(entries, graph.entries); + for (std::int32_t row = 0; row < nrows; ++row) { + auto n = (row % 4) + 1; + ASSERT_EQ(row_map(row + 1) - row_map(row), n); + for (std::int32_t j = 0; j < n; ++j) { + ASSERT_EQ(entries(row_map(row) + j), j + 1); + } + } +} + +} // anonymous namespace + +TEST_F( TEST_CATEGORY, crs_count_fill ) +{ + test_count_fill(0); + test_count_fill(1); + test_count_fill(2); + test_count_fill(3); + test_count_fill(13); + test_count_fill(100); + test_count_fill(1000); + test_count_fill(10000); +} + +} // namespace Test diff --git a/lib/kokkos/core/unit_test/TestRange.hpp b/lib/kokkos/core/unit_test/TestRange.hpp index 3cea1ad4a00e5476df6fbd5c20518c5426884cf6..e6857a4d2f6937be1489ba3b54ed32524e520779 100644 --- a/lib/kokkos/core/unit_test/TestRange.hpp +++ b/lib/kokkos/core/unit_test/TestRange.hpp @@ -301,19 +301,19 @@ TEST_F( TEST_CATEGORY, range_scan ) { { TestRange< TEST_EXECSPACE, Kokkos::Schedule >f(0); f.test_scan(); } { TestRange< TEST_EXECSPACE, Kokkos::Schedule >f(0); f.test_scan(); } -#ifndef KOKKOS_ENABLE_CUDA +#if !defined(KOKKOS_ENABLE_CUDA) && !defined(KOKKOS_ENABLE_ROCM) { TestRange< TEST_EXECSPACE, Kokkos::Schedule >f(0); f.test_dynamic_policy(); } #endif { TestRange< TEST_EXECSPACE, Kokkos::Schedule >f(2); f.test_scan(); } { TestRange< TEST_EXECSPACE, Kokkos::Schedule >f(3); f.test_scan(); } -#ifndef KOKKOS_ENABLE_CUDA +#if !defined(KOKKOS_ENABLE_CUDA) && !defined(KOKKOS_ENABLE_ROCM) { TestRange< TEST_EXECSPACE, Kokkos::Schedule >f(3); f.test_dynamic_policy(); } #endif { TestRange< TEST_EXECSPACE, Kokkos::Schedule >f(1000); f.test_scan(); } { TestRange< TEST_EXECSPACE, Kokkos::Schedule >f(1001); f.test_scan(); } -#ifndef KOKKOS_ENABLE_CUDA +#if !defined(KOKKOS_ENABLE_CUDA) && !defined(KOKKOS_ENABLE_ROCM) { TestRange< TEST_EXECSPACE, Kokkos::Schedule >f(1001); f.test_dynamic_policy(); } #endif } diff --git a/lib/kokkos/core/unit_test/TestScan.hpp b/lib/kokkos/core/unit_test/TestScan.hpp index fa7669c5edbb87a6850dc8191cf93a2629949080..823f0c99a81c3bd80b6b9c0d49983c13d30663b2 100644 --- a/lib/kokkos/core/unit_test/TestScan.hpp +++ b/lib/kokkos/core/unit_test/TestScan.hpp @@ -92,7 +92,7 @@ struct TestScan { Kokkos::deep_copy( errors_a, 0 ); errors = errors_a; - parallel_scan( N , *this ); + Kokkos::parallel_scan( N , *this ); } TestScan( const WorkSpec & Start , const WorkSpec & N ) @@ -103,7 +103,7 @@ struct TestScan { Kokkos::deep_copy( errors_a, 0 ); errors = errors_a; - parallel_scan( exec_policy( Start , N ) , *this ); + Kokkos::parallel_scan( exec_policy( Start , N ) , *this ); } static void test_range( const WorkSpec & begin, const WorkSpec & end ) diff --git a/lib/kokkos/core/unit_test/TestTaskScheduler.hpp b/lib/kokkos/core/unit_test/TestTaskScheduler.hpp index 4e6654385792b1b08c34e97c4e4011f816cebbf1..a3f59a2b9e77203eb008fe9b402b0e1deada9df0 100644 --- a/lib/kokkos/core/unit_test/TestTaskScheduler.hpp +++ b/lib/kokkos/core/unit_test/TestTaskScheduler.hpp @@ -250,34 +250,23 @@ struct TestTaskDependence { const int n = CHUNK < m_count ? CHUNK : m_count; if ( 1 < m_count ) { - // Test use of memory pool for temporary allocation: - // Raw allocation: - future_type * const f = - (future_type *) m_sched.memory()->allocate( sizeof(future_type) * n ); + const int increment = ( m_count + n - 1 ) / n; - // In-place construction: - for ( int i = 0; i < n; ++i ) new(f+i) future_type(); + future_type f = + m_sched.when_all( n , [this,increment]( int i ) { + const long inc = increment ; + const long begin = i * inc ; + const long count = begin + inc < m_count ? inc : m_count - begin ; - const int inc = ( m_count + n - 1 ) / n; - - for ( int i = 0; i < n; ++i ) { - long begin = i * inc; - long count = begin + inc < m_count ? inc : m_count - begin; - - f[i] = Kokkos::task_spawn( Kokkos::TaskSingle( m_sched ) - , TestTaskDependence( count, m_sched, m_accum ) ); - } + return Kokkos::task_spawn + ( Kokkos::TaskSingle( m_sched ) + , TestTaskDependence( count, m_sched, m_accum ) ); + }); m_count = 0; - Kokkos::respawn( this, Kokkos::when_all( f, n ) ); - - // In-place destruction to release future: - for ( int i = 0; i < n; ++i ) (f+i)->~future_type(); - - // Raw deallocation: - m_sched.memory()->deallocate( f , sizeof(future_type) * n ); + Kokkos::respawn( this, f ); } else if ( 1 == m_count ) { Kokkos::atomic_increment( & m_accum() ); @@ -372,7 +361,9 @@ struct TestTaskTeam { , begin - 1 ) ); + #ifndef __HCC_ACCELERATOR__ assert( !future.is_null() ); + #endif Kokkos::respawn( this, future ); } @@ -664,6 +655,7 @@ TEST_F( TEST_CATEGORY, task_fib ) TEST_F( TEST_CATEGORY, task_depend ) { for ( int i = 0; i < 25; ++i ) { +printf("\nTest::task_depend %d\n",i); TestTaskScheduler::TestTaskDependence< TEST_EXECSPACE >::run( i ); } } diff --git a/lib/kokkos/core/unit_test/TestViewAPI.hpp b/lib/kokkos/core/unit_test/TestViewAPI.hpp index 232163f11e1f86b13ce986837c5d17ffa4431460..721ffd8378d7d8bc24d92c41689c332520e5af5f 100644 --- a/lib/kokkos/core/unit_test/TestViewAPI.hpp +++ b/lib/kokkos/core/unit_test/TestViewAPI.hpp @@ -1324,10 +1324,14 @@ TEST_F( TEST_CATEGORY, view_remap ) #ifdef KOKKOS_ENABLE_CUDA #define EXECSPACE std::conditional::value,Kokkos::CudaHostPinnedSpace,TEST_EXECSPACE>::type #else - #ifdef KOKKOS_ENABLE_OPENMPTARGET - #define EXECSPACE Kokkos::HostSpace + #ifdef KOKKOS_ENABLE_ROCM + #define EXECSPACE std::conditional::value,Kokkos::Experimental::ROCmHostPinnedSpace,TEST_EXECSPACE>::type #else - #define EXECSPACE TEST_EXECSPACE + #if defined(KOKKOS_ENABLE_OPENMPTARGET) + #define EXECSPACE Kokkos::HostSpace + #else + #define EXECSPACE TEST_EXECSPACE + #endif #endif #endif @@ -1375,4 +1379,14 @@ TEST_F( TEST_CATEGORY, view_remap ) } } +TEST_F( TEST_CATEGORY, view_mirror_nonconst ) +{ + Kokkos::View d_view("d_view", 10); + Kokkos::View d_view_const = d_view; + auto h_view = Kokkos::create_mirror(d_view_const); + Kokkos::deep_copy(h_view, d_view_const); + auto h_view2 = Kokkos::create_mirror(Kokkos::HostSpace(), d_view_const); + Kokkos::deep_copy(h_view2, d_view_const); +} + } // namespace Test diff --git a/lib/kokkos/core/unit_test/TestViewCtorPropEmbeddedDim.hpp b/lib/kokkos/core/unit_test/TestViewCtorPropEmbeddedDim.hpp index 305ddb2a1d09f8535f42b456ca7e9ff22ce60a34..61b43a588ae4badda6c19680d2a3d4882fea649c 100644 --- a/lib/kokkos/core/unit_test/TestViewCtorPropEmbeddedDim.hpp +++ b/lib/kokkos/core/unit_test/TestViewCtorPropEmbeddedDim.hpp @@ -107,6 +107,7 @@ struct TestViewCtorProp_EmbeddedDim { Kokkos::deep_copy( hcv1, cv1 ); ASSERT_EQ( (std::is_same< CommonViewValueType, double >::value) , true ) ; + ASSERT_EQ( (std::is_same< typename decltype(view_alloc_arg)::scalar_array_type, CommonViewValueType>::value) , true ) ; #if 0 // debug output for ( int i = 0; i < N0*N1; ++i ) { diff --git a/lib/kokkos/core/unit_test/TestViewMapping_a.hpp b/lib/kokkos/core/unit_test/TestViewMapping_a.hpp index 810ae72e7367b4d30a62736756e1cf88c2827509..f963875ae1b67ce441c4b963ea20ad646f0452bc 100644 --- a/lib/kokkos/core/unit_test/TestViewMapping_a.hpp +++ b/lib/kokkos/core/unit_test/TestViewMapping_a.hpp @@ -1012,7 +1012,7 @@ void test_view_mapping() ASSERT_EQ( a.use_count(), 1 ); ASSERT_EQ( b.use_count(), 0 ); -#if !defined( KOKKOS_ENABLE_CUDA_LAMBDA ) +#if !defined( KOKKOS_ENABLE_CUDA_LAMBDA ) && !defined( KOKKOS_ENABLE_ROCM ) // Cannot launch host lambda when CUDA lambda is enabled. typedef typename Kokkos::Impl::HostMirror< Space >::Space::execution_space host_exec_space; @@ -1021,6 +1021,7 @@ void test_view_mapping() // 'a' is captured by copy, and the capture mechanism converts 'a' to an // unmanaged copy. When the parallel dispatch accepts a move for the // lambda, this count should become 1. + ASSERT_EQ( a.use_count(), 2 ); V x = a; ASSERT_EQ( a.use_count(), 2 ); diff --git a/lib/kokkos/core/unit_test/TestViewMapping_b.hpp b/lib/kokkos/core/unit_test/TestViewMapping_b.hpp index ee1c96b423e15185d3c6e4f33c9d4f9ad8e55709..d0cbfe9e7d4449f6897798d1cd09d714603c96dc 100644 --- a/lib/kokkos/core/unit_test/TestViewMapping_b.hpp +++ b/lib/kokkos/core/unit_test/TestViewMapping_b.hpp @@ -133,11 +133,15 @@ TEST_F( TEST_CATEGORY , view_mapping_atomic ) f.run(); } +} + /*--------------------------------------------------------------------------*/ + namespace Test { -struct ValueType { + +struct MappingClassValueType { KOKKOS_INLINE_FUNCTION - ValueType() + MappingClassValueType() { #if 0 #if defined( KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_CUDA ) @@ -150,7 +154,7 @@ struct ValueType { #endif } KOKKOS_INLINE_FUNCTION - ~ValueType() + ~MappingClassValueType() { #if 0 #if defined( KOKKOS_ACTIVE_EXECUTION_MEMORY_SPACE_CUDA ) @@ -163,7 +167,6 @@ struct ValueType { #endif } }; -} template< class Space > void test_view_mapping_class_value() @@ -172,7 +175,7 @@ void test_view_mapping_class_value() ExecSpace::fence(); { - Kokkos::View< Test::ValueType, ExecSpace > a( "a" ); + Kokkos::View< MappingClassValueType, ExecSpace > a( "a" ); ExecSpace::fence(); } ExecSpace::fence(); @@ -184,3 +187,74 @@ TEST_F( TEST_CATEGORY , view_mapping_class_value ) } } + +/*--------------------------------------------------------------------------*/ + +namespace Test { + +TEST_F( TEST_CATEGORY , view_mapping_assignable ) +{ + typedef TEST_EXECSPACE exec_space ; + + { // Assignment of rank-0 Left = Right + typedef Kokkos::ViewTraits dst_traits ; + typedef Kokkos::ViewTraits src_traits ; + typedef Kokkos::Impl::ViewMapping mapping ; + static_assert( mapping::is_assignable , "" ); + + Kokkos::View src ; + Kokkos::View dst( src ); + dst = src ; + } + + { // Assignment of rank-0 Right = Left + typedef Kokkos::ViewTraits dst_traits ; + typedef Kokkos::ViewTraits src_traits ; + typedef Kokkos::Impl::ViewMapping mapping ; + static_assert( mapping::is_assignable , "" ); + + Kokkos::View src ; + Kokkos::View dst( src ); + dst = src ; + } + + { // Assignment of rank-1 Left = Right + typedef Kokkos::ViewTraits dst_traits ; + typedef Kokkos::ViewTraits src_traits ; + typedef Kokkos::Impl::ViewMapping mapping ; + static_assert( mapping::is_assignable , "" ); + + Kokkos::View src ; + Kokkos::View dst( src ); + dst = src ; + } + + { // Assignment of rank-1 Right = Left + typedef Kokkos::ViewTraits dst_traits ; + typedef Kokkos::ViewTraits src_traits ; + typedef Kokkos::Impl::ViewMapping mapping ; + static_assert( mapping::is_assignable , "" ); + + Kokkos::View src ; + Kokkos::View dst( src ); + dst = src ; + } + + { // Assignment of rank-2 Left = Right + typedef Kokkos::ViewTraits dst_traits ; + typedef Kokkos::ViewTraits src_traits ; + typedef Kokkos::Impl::ViewMapping mapping ; + static_assert( ! mapping::is_assignable , "" ); + } + + { // Assignment of rank-2 Right = Left + typedef Kokkos::ViewTraits dst_traits ; + typedef Kokkos::ViewTraits src_traits ; + typedef Kokkos::Impl::ViewMapping mapping ; + static_assert( ! mapping::is_assignable , "" ); + } + +} + +} + diff --git a/lib/kokkos/core/unit_test/cuda/TestCuda_Crs.cpp b/lib/kokkos/core/unit_test/cuda/TestCuda_Crs.cpp new file mode 100644 index 0000000000000000000000000000000000000000..a90e88933e12e5b9e0ac899e401a9958ab7d0d8d --- /dev/null +++ b/lib/kokkos/core/unit_test/cuda/TestCuda_Crs.cpp @@ -0,0 +1,45 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include diff --git a/lib/kokkos/core/unit_test/default/TestDefaultDeviceType_c.cpp b/lib/kokkos/core/unit_test/default/TestDefaultDeviceType_c.cpp index e11996e8f90111b1fc2cd95727842eeb42466826..4500392b27081a7f80c5da98cd44204ac1086f23 100644 --- a/lib/kokkos/core/unit_test/default/TestDefaultDeviceType_c.cpp +++ b/lib/kokkos/core/unit_test/default/TestDefaultDeviceType_c.cpp @@ -46,6 +46,7 @@ #include #if !defined( KOKKOS_ENABLE_CUDA ) || defined( __CUDACC__ ) +#if !defined( KOKKOS_ENABLE_ROCM ) #include #include @@ -60,3 +61,4 @@ TEST_F( defaultdevicetype, reduce_instantiation_c ) } // namespace Test #endif +#endif diff --git a/lib/kokkos/core/unit_test/openmp/TestOpenMP_Crs.cpp b/lib/kokkos/core/unit_test/openmp/TestOpenMP_Crs.cpp new file mode 100644 index 0000000000000000000000000000000000000000..54b283f5390a22dc5f4a90acee3129ef34170f5c --- /dev/null +++ b/lib/kokkos/core/unit_test/openmp/TestOpenMP_Crs.cpp @@ -0,0 +1,45 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include diff --git a/lib/kokkos/core/unit_test/rocm/TestROCmHostPinned_Category.hpp b/lib/kokkos/core/unit_test/rocm/TestROCmHostPinned_Category.hpp new file mode 100644 index 0000000000000000000000000000000000000000..94e778b3bcd086fa9649d3326905f587dde62e66 --- /dev/null +++ b/lib/kokkos/core/unit_test/rocm/TestROCmHostPinned_Category.hpp @@ -0,0 +1,65 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#ifndef KOKKOS_TEST_THREADS_HPP +#define KOKKOS_TEST_THREADS_HPP + +#include + +namespace Test { + +class rocm_hostpinned : public ::testing::Test { +protected: + static void SetUpTestCase() { + } + + static void TearDownTestCase() { + } +}; + +} // namespace Test + +#define TEST_CATEGORY rocm_hostpinned +#define TEST_EXECSPACE Kokkos::Experimental::ROCmHostPinnedSpace + +#endif diff --git a/lib/kokkos/core/unit_test/rocm/TestROCmHostPinned_SharedAlloc.cpp b/lib/kokkos/core/unit_test/rocm/TestROCmHostPinned_SharedAlloc.cpp new file mode 100644 index 0000000000000000000000000000000000000000..2f8f379db02943e5b7bf1bab70e2ea3a2fe01e90 --- /dev/null +++ b/lib/kokkos/core/unit_test/rocm/TestROCmHostPinned_SharedAlloc.cpp @@ -0,0 +1,55 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include + +namespace Test { + + +TEST_F( TEST_CATEGORY, impl_shared_alloc ) +{ + test_shared_alloc< TEST_EXECSPACE, Kokkos::DefaultHostExecutionSpace >(); +} + +} // namespace Test diff --git a/lib/kokkos/core/unit_test/rocm/TestROCmHostPinned_ViewAPI.cpp b/lib/kokkos/core/unit_test/rocm/TestROCmHostPinned_ViewAPI.cpp new file mode 100644 index 0000000000000000000000000000000000000000..32ecbbb48f564cbc4eb145c57e503fb2c740b5eb --- /dev/null +++ b/lib/kokkos/core/unit_test/rocm/TestROCmHostPinned_ViewAPI.cpp @@ -0,0 +1,45 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include diff --git a/lib/kokkos/core/unit_test/rocm/TestROCmHostPinned_ViewMapping_a.cpp b/lib/kokkos/core/unit_test/rocm/TestROCmHostPinned_ViewMapping_a.cpp new file mode 100644 index 0000000000000000000000000000000000000000..5523fac7fc6443cfcf70db74a286a4a2497f707c --- /dev/null +++ b/lib/kokkos/core/unit_test/rocm/TestROCmHostPinned_ViewMapping_a.cpp @@ -0,0 +1,46 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include + diff --git a/lib/kokkos/core/unit_test/rocm/TestROCmHostPinned_ViewMapping_b.cpp b/lib/kokkos/core/unit_test/rocm/TestROCmHostPinned_ViewMapping_b.cpp new file mode 100644 index 0000000000000000000000000000000000000000..5e29612d72440e016a960fd6ad4d714ee5f4131b --- /dev/null +++ b/lib/kokkos/core/unit_test/rocm/TestROCmHostPinned_ViewMapping_b.cpp @@ -0,0 +1,46 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include + diff --git a/lib/kokkos/core/unit_test/rocm/TestROCmHostPinned_ViewMapping_subview.cpp b/lib/kokkos/core/unit_test/rocm/TestROCmHostPinned_ViewMapping_subview.cpp new file mode 100644 index 0000000000000000000000000000000000000000..6a6194b38f66f5b26dfd3f8d43c166fefd1ff357 --- /dev/null +++ b/lib/kokkos/core/unit_test/rocm/TestROCmHostPinned_ViewMapping_subview.cpp @@ -0,0 +1,46 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include + diff --git a/lib/kokkos/core/unit_test/rocm/TestROCm_All.cpp b/lib/kokkos/core/unit_test/rocm/TestROCm_All.cpp new file mode 100644 index 0000000000000000000000000000000000000000..a9c7e51b6230104eb8419980c93b79149a6881d6 --- /dev/null +++ b/lib/kokkos/core/unit_test/rocm/TestROCm_All.cpp @@ -0,0 +1,33 @@ +#include "rocm/TestROCm_Init.cpp" + +//#include "rocm/TestROCm_Complex.cpp" +#include "rocm/TestROCm_Reductions.cpp" +//#include "rocm/TestROCm_RangePolicy.cpp" +//#include "rocm/TestROCm_AtomicOperations.cpp" +//#include "rocm/TestROCm_Atomics.cpp" +//#include "rocm/TestROCm_AtomicViews.cpp" +//#include "rocm/TestROCm_Other.cpp" +//#include "rocm/TestROCm_Scan.cpp" +//#include "rocm/TestROCm_SharedAlloc.cpp" +//#include "rocm/TestROCm_SubView_a.cpp" +//#include "rocm/TestROCm_SubView_b.cpp" +//#include "rocm/TestROCm_SubView_c01.cpp" +//#include "rocm/TestROCm_SubView_c02.cpp" +//#include "rocm/TestROCm_SubView_c03.cpp" +//#include "rocm/TestROCm_SubView_c04.cpp" +//#include "rocm/TestROCm_SubView_c05.cpp" +//#include "rocm/TestROCm_SubView_c06.cpp" +//#include "rocm/TestROCm_SubView_c07.cpp" +//#include "rocm/TestROCm_SubView_c08.cpp" +//#include "rocm/TestROCm_SubView_c09.cpp" +//#include "rocm/TestROCm_SubView_c10.cpp" +//#include "rocm/TestROCm_SubView_c11.cpp" +//#include "rocm/TestROCm_SubView_c12.cpp" +//#include "rocm/TestROCm_Team.cpp" +//#include "rocm/TestROCm_TeamReductionScan.cpp" +//#include "rocm/TestROCm_TeamScratch.cpp" +//#include "rocm/TestROCm_ViewAPI_b.cpp" +//#include "rocm/TestROCm_ViewMapping_a.cpp" +//#include "rocm/TestROCm_ViewMapping_b.cpp" +//#include "rocm/TestROCm_ViewMapping_subview.cpp" +//#include "rocm/TestROCm_ViewOfClass.cpp" diff --git a/lib/kokkos/core/unit_test/rocm/TestROCm_AtomicOperations.cpp b/lib/kokkos/core/unit_test/rocm/TestROCm_AtomicOperations.cpp new file mode 100644 index 0000000000000000000000000000000000000000..e6b7a2531677e5451308642e2854fb44e2e8ef82 --- /dev/null +++ b/lib/kokkos/core/unit_test/rocm/TestROCm_AtomicOperations.cpp @@ -0,0 +1,46 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include + diff --git a/lib/kokkos/core/unit_test/rocm/TestROCm_AtomicViews.cpp b/lib/kokkos/core/unit_test/rocm/TestROCm_AtomicViews.cpp new file mode 100644 index 0000000000000000000000000000000000000000..d5f82826b08c499f857fd807ab65ee8026aaf9f5 --- /dev/null +++ b/lib/kokkos/core/unit_test/rocm/TestROCm_AtomicViews.cpp @@ -0,0 +1,47 @@ + +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include + diff --git a/lib/kokkos/core/unit_test/rocm/TestROCm_Atomics.cpp b/lib/kokkos/core/unit_test/rocm/TestROCm_Atomics.cpp new file mode 100644 index 0000000000000000000000000000000000000000..5944830c43f1253f747e83cbf2e68aab5ee09446 --- /dev/null +++ b/lib/kokkos/core/unit_test/rocm/TestROCm_Atomics.cpp @@ -0,0 +1,46 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include + diff --git a/lib/kokkos/core/unit_test/rocm/TestROCm_Category.hpp b/lib/kokkos/core/unit_test/rocm/TestROCm_Category.hpp new file mode 100644 index 0000000000000000000000000000000000000000..a34068f533cc11290f72f2a1e99043ef3cf4a9f2 --- /dev/null +++ b/lib/kokkos/core/unit_test/rocm/TestROCm_Category.hpp @@ -0,0 +1,65 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#ifndef KOKKOS_TEST_ROCM_HPP +#define KOKKOS_TEST_ROCM_HPP + +#include + +namespace Test { + +class rocm : public ::testing::Test { +protected: + static void SetUpTestCase() { + } + + static void TearDownTestCase() { + } +}; + +} // namespace Test + +#define TEST_CATEGORY rocm +#define TEST_EXECSPACE Kokkos::Experimental::ROCm + +#endif diff --git a/lib/kokkos/core/unit_test/rocm/TestROCm_Complex.cpp b/lib/kokkos/core/unit_test/rocm/TestROCm_Complex.cpp new file mode 100644 index 0000000000000000000000000000000000000000..2b72cdee88cbdfdd5818acb88192d675ff0addc2 --- /dev/null +++ b/lib/kokkos/core/unit_test/rocm/TestROCm_Complex.cpp @@ -0,0 +1,47 @@ + +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include + diff --git a/lib/kokkos/core/unit_test/rocm/TestROCm_Init.cpp b/lib/kokkos/core/unit_test/rocm/TestROCm_Init.cpp new file mode 100644 index 0000000000000000000000000000000000000000..dafe9fb52914ef2999286732493e4c1192d91505 --- /dev/null +++ b/lib/kokkos/core/unit_test/rocm/TestROCm_Init.cpp @@ -0,0 +1,50 @@ + +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include +#include +#include + + diff --git a/lib/kokkos/core/unit_test/rocm/TestROCm_Other.cpp b/lib/kokkos/core/unit_test/rocm/TestROCm_Other.cpp new file mode 100644 index 0000000000000000000000000000000000000000..3e182dacbad413dc5dd18043d4337ae782e0d74f --- /dev/null +++ b/lib/kokkos/core/unit_test/rocm/TestROCm_Other.cpp @@ -0,0 +1,52 @@ + +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include +#include +//include +#include +#include + +#include diff --git a/lib/kokkos/core/unit_test/rocm/TestROCm_RangePolicy.cpp b/lib/kokkos/core/unit_test/rocm/TestROCm_RangePolicy.cpp new file mode 100644 index 0000000000000000000000000000000000000000..ef7dad95a3afd5481258368ae5f7ae4d9f171c77 --- /dev/null +++ b/lib/kokkos/core/unit_test/rocm/TestROCm_RangePolicy.cpp @@ -0,0 +1,47 @@ + +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include + diff --git a/lib/kokkos/core/unit_test/rocm/TestROCm_Reductions.cpp b/lib/kokkos/core/unit_test/rocm/TestROCm_Reductions.cpp new file mode 100644 index 0000000000000000000000000000000000000000..33c4d960f865d14d28355eba053c7f4a1c8dbf90 --- /dev/null +++ b/lib/kokkos/core/unit_test/rocm/TestROCm_Reductions.cpp @@ -0,0 +1,48 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include +#include +#include + diff --git a/lib/kokkos/core/unit_test/rocm/TestROCm_Scan.cpp b/lib/kokkos/core/unit_test/rocm/TestROCm_Scan.cpp new file mode 100644 index 0000000000000000000000000000000000000000..ae0a016af3d285f17da0cf71200f3410c2428bf6 --- /dev/null +++ b/lib/kokkos/core/unit_test/rocm/TestROCm_Scan.cpp @@ -0,0 +1,47 @@ + +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include + diff --git a/lib/kokkos/core/unit_test/rocm/TestROCm_SharedAlloc.cpp b/lib/kokkos/core/unit_test/rocm/TestROCm_SharedAlloc.cpp new file mode 100644 index 0000000000000000000000000000000000000000..7a038edf4b2a330a2f8c71037cbb56acff85eca6 --- /dev/null +++ b/lib/kokkos/core/unit_test/rocm/TestROCm_SharedAlloc.cpp @@ -0,0 +1,55 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include + +namespace Test { + + +TEST_F( TEST_CATEGORY, impl_shared_alloc ) +{ + test_shared_alloc< Kokkos::Experimental::ROCmSpace, Kokkos::DefaultHostExecutionSpace >(); +} + +} // namespace Test diff --git a/lib/kokkos/core/unit_test/rocm/TestROCm_Spaces.cpp b/lib/kokkos/core/unit_test/rocm/TestROCm_Spaces.cpp new file mode 100644 index 0000000000000000000000000000000000000000..d44e7afec385bb08385d4a7a178593b3e7d8a1b2 --- /dev/null +++ b/lib/kokkos/core/unit_test/rocm/TestROCm_Spaces.cpp @@ -0,0 +1,196 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include + +namespace Test { + +KOKKOS_INLINE_FUNCTION +void test_abort() +{ + Kokkos::abort( "test_abort" ); +} + +KOKKOS_INLINE_FUNCTION +void test_rocm_spaces_int_value( int * ptr ) +{ + if ( *ptr == 42 ) { *ptr = 2 * 42; } +} + +TEST_F( rocm, space_access ) +{ + static_assert( + Kokkos::Impl::MemorySpaceAccess< Kokkos::HostSpace, Kokkos::HostSpace >::assignable, "" ); + + static_assert( + Kokkos::Impl::MemorySpaceAccess< Kokkos::HostSpace, Kokkos::Experimental::ROCmHostPinnedSpace >::assignable, "" ); + + static_assert( + ! Kokkos::Impl::MemorySpaceAccess< Kokkos::HostSpace, Kokkos::Experimental::ROCmSpace >::assignable, "" ); + + static_assert( + ! Kokkos::Impl::MemorySpaceAccess< Kokkos::HostSpace, Kokkos::Experimental::ROCmSpace >::accessible, "" ); + + //-------------------------------------- + + static_assert( + Kokkos::Impl::MemorySpaceAccess< Kokkos::Experimental::ROCmSpace, Kokkos::Experimental::ROCmSpace >::assignable, "" ); + + static_assert( + ! Kokkos::Impl::MemorySpaceAccess< Kokkos::Experimental::ROCmSpace, Kokkos::Experimental::ROCmHostPinnedSpace >::assignable, "" ); + + static_assert( + Kokkos::Impl::MemorySpaceAccess< Kokkos::Experimental::ROCmSpace, Kokkos::Experimental::ROCmHostPinnedSpace >::accessible, "" ); + + static_assert( + ! Kokkos::Impl::MemorySpaceAccess< Kokkos::Experimental::ROCmSpace, Kokkos::HostSpace >::assignable, "" ); + + static_assert( + ! Kokkos::Impl::MemorySpaceAccess< Kokkos::Experimental::ROCmSpace, Kokkos::HostSpace >::accessible, "" ); + + //-------------------------------------- + + static_assert( + Kokkos::Impl::MemorySpaceAccess< Kokkos::Experimental::ROCmHostPinnedSpace, Kokkos::Experimental::ROCmHostPinnedSpace >::assignable, "" ); + + static_assert( + ! Kokkos::Impl::MemorySpaceAccess< Kokkos::Experimental::ROCmHostPinnedSpace, Kokkos::HostSpace >::assignable, "" ); + + static_assert( + Kokkos::Impl::MemorySpaceAccess< Kokkos::Experimental::ROCmHostPinnedSpace, Kokkos::HostSpace >::accessible, "" ); + + static_assert( + ! Kokkos::Impl::MemorySpaceAccess< Kokkos::Experimental::ROCmHostPinnedSpace, Kokkos::Experimental::ROCmSpace >::assignable, "" ); + + static_assert( + ! Kokkos::Impl::MemorySpaceAccess< Kokkos::Experimental::ROCmHostPinnedSpace, Kokkos::Experimental::ROCmSpace >::accessible, "" ); + + //-------------------------------------- + + static_assert( + ! Kokkos::Impl::SpaceAccessibility< Kokkos::Experimental::ROCm, Kokkos::HostSpace >::accessible, "" ); + + static_assert( + Kokkos::Impl::SpaceAccessibility< Kokkos::Experimental::ROCm, Kokkos::Experimental::ROCmSpace >::accessible, "" ); + + static_assert( + Kokkos::Impl::SpaceAccessibility< Kokkos::Experimental::ROCm, Kokkos::Experimental::ROCmHostPinnedSpace >::accessible, "" ); + + static_assert( + ! Kokkos::Impl::SpaceAccessibility< Kokkos::HostSpace, Kokkos::Experimental::ROCmSpace >::accessible, "" ); + + static_assert( + Kokkos::Impl::SpaceAccessibility< Kokkos::HostSpace, Kokkos::Experimental::ROCmHostPinnedSpace >::accessible, "" ); + + static_assert( + std::is_same< Kokkos::Impl::HostMirror< Kokkos::Experimental::ROCmSpace >::Space + , Kokkos::HostSpace >::value, "" ); + + static_assert( + std::is_same< Kokkos::Impl::HostMirror< Kokkos::Experimental::ROCmHostPinnedSpace >::Space + , Kokkos::Experimental::ROCmHostPinnedSpace >::value, "" ); + + static_assert( + Kokkos::Impl::SpaceAccessibility + < Kokkos::Impl::HostMirror< Kokkos::Experimental::ROCm >::Space + , Kokkos::HostSpace + >::accessible, "" ); + + static_assert( + Kokkos::Impl::SpaceAccessibility + < Kokkos::Impl::HostMirror< Kokkos::Experimental::ROCmSpace >::Space + , Kokkos::HostSpace + >::accessible, "" ); + + static_assert( + Kokkos::Impl::SpaceAccessibility + < Kokkos::Impl::HostMirror< Kokkos::Experimental::ROCmHostPinnedSpace >::Space + , Kokkos::HostSpace + >::accessible, "" ); +} + +template< class MemSpace, class ExecSpace > +struct TestViewROCmAccessible { + enum { N = 1000 }; + + using V = Kokkos::View< double*, MemSpace >; + + V m_base; + + struct TagInit {}; + struct TagTest {}; + + KOKKOS_INLINE_FUNCTION + void operator()( const TagInit &, const int i ) const { m_base[i] = i + 1; } + + KOKKOS_INLINE_FUNCTION + void operator()( const TagTest &, const int i, long & error_count ) const + { if ( m_base[i] != i + 1 ) ++error_count; } + + TestViewROCmAccessible() + : m_base( "base", N ) + {} + + static void run() + { + TestViewROCmAccessible self; + Kokkos::parallel_for( Kokkos::RangePolicy< typename MemSpace::execution_space, TagInit >( 0, N ), self ); + MemSpace::execution_space::fence(); + + // Next access is a different execution space, must complete prior kernel. + long error_count = -1; + Kokkos::parallel_reduce( Kokkos::RangePolicy< ExecSpace, TagTest >( 0, N ), self, error_count ); + EXPECT_EQ( error_count, 0 ); + } +}; + +TEST_F( rocm, impl_view_accessible ) +{ + TestViewROCmAccessible< Kokkos::Experimental::ROCmSpace, Kokkos::Experimental::ROCm >::run(); + + TestViewROCmAccessible< Kokkos::Experimental::ROCmHostPinnedSpace, Kokkos::Experimental::ROCm >::run(); + TestViewROCmAccessible< Kokkos::Experimental::ROCmHostPinnedSpace, Kokkos::HostSpace::execution_space >::run(); +} + +} // namespace Test diff --git a/lib/kokkos/core/unit_test/rocm/TestROCm_SubView_a.cpp b/lib/kokkos/core/unit_test/rocm/TestROCm_SubView_a.cpp new file mode 100644 index 0000000000000000000000000000000000000000..ea39a25b5c755bef4f5421321336aba5d1e6efbd --- /dev/null +++ b/lib/kokkos/core/unit_test/rocm/TestROCm_SubView_a.cpp @@ -0,0 +1,104 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include + +namespace Test { + +TEST_F( TEST_CATEGORY, view_subview_auto_1d_left ) +{ + TestViewSubview::test_auto_1d< Kokkos::LayoutLeft, TEST_EXECSPACE >(); +} + +TEST_F( TEST_CATEGORY, view_subview_auto_1d_right ) +{ + TestViewSubview::test_auto_1d< Kokkos::LayoutRight, TEST_EXECSPACE >(); +} + +TEST_F( TEST_CATEGORY, view_subview_auto_1d_stride ) +{ + TestViewSubview::test_auto_1d< Kokkos::LayoutStride, TEST_EXECSPACE >(); +} + +TEST_F( TEST_CATEGORY, view_subview_assign_strided ) +{ + TestViewSubview::test_1d_strided_assignment< TEST_EXECSPACE >(); +} + +TEST_F( TEST_CATEGORY, view_subview_left_0 ) +{ + TestViewSubview::test_left_0< TEST_EXECSPACE >(); +} + +TEST_F( TEST_CATEGORY, view_subview_left_1 ) +{ + TestViewSubview::test_left_1< TEST_EXECSPACE >(); +} + +TEST_F( TEST_CATEGORY, view_subview_left_2 ) +{ + TestViewSubview::test_left_2< TEST_EXECSPACE >(); +} + +TEST_F( TEST_CATEGORY, view_subview_left_3 ) +{ + TestViewSubview::test_left_3< TEST_EXECSPACE >(); +} + +TEST_F( TEST_CATEGORY, view_subview_right_0 ) +{ + TestViewSubview::test_right_0< TEST_EXECSPACE >(); +} + +TEST_F( TEST_CATEGORY, view_subview_right_1 ) +{ + TestViewSubview::test_right_1< TEST_EXECSPACE >(); +} + +TEST_F( TEST_CATEGORY, view_subview_right_3 ) +{ + TestViewSubview::test_right_3< TEST_EXECSPACE >(); +} + +} // namespace Test diff --git a/lib/kokkos/core/unit_test/rocm/TestROCm_SubView_b.cpp b/lib/kokkos/core/unit_test/rocm/TestROCm_SubView_b.cpp new file mode 100644 index 0000000000000000000000000000000000000000..00a3a341bbdaaea802aa89477b25224af30b3bda --- /dev/null +++ b/lib/kokkos/core/unit_test/rocm/TestROCm_SubView_b.cpp @@ -0,0 +1,63 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include + +namespace Test { + +TEST_F( TEST_CATEGORY, view_subview_layoutleft_to_layoutleft ) +{ + TestViewSubview::test_layoutleft_to_layoutleft< TEST_EXECSPACE >(); + TestViewSubview::test_layoutleft_to_layoutleft< TEST_EXECSPACE, Kokkos::MemoryTraits >(); + TestViewSubview::test_layoutleft_to_layoutleft< TEST_EXECSPACE, Kokkos::MemoryTraits >(); +} + +TEST_F( TEST_CATEGORY, view_subview_layoutright_to_layoutright ) +{ + TestViewSubview::test_layoutright_to_layoutright< TEST_EXECSPACE >(); + TestViewSubview::test_layoutright_to_layoutright< TEST_EXECSPACE, Kokkos::MemoryTraits >(); + TestViewSubview::test_layoutright_to_layoutright< TEST_EXECSPACE, Kokkos::MemoryTraits >(); +} + +} // namespace Test diff --git a/lib/kokkos/core/unit_test/rocm/TestROCm_SubView_c01.cpp b/lib/kokkos/core/unit_test/rocm/TestROCm_SubView_c01.cpp new file mode 100644 index 0000000000000000000000000000000000000000..c17b0722e99f88947d854a759184ab4ff9a913b1 --- /dev/null +++ b/lib/kokkos/core/unit_test/rocm/TestROCm_SubView_c01.cpp @@ -0,0 +1,54 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include + +namespace Test { + +TEST_F( TEST_CATEGORY, view_subview_1d_assign ) +{ + TestViewSubview::test_1d_assign< TEST_EXECSPACE >(); +} + +} // namespace Test diff --git a/lib/kokkos/core/unit_test/rocm/TestROCm_SubView_c02.cpp b/lib/kokkos/core/unit_test/rocm/TestROCm_SubView_c02.cpp new file mode 100644 index 0000000000000000000000000000000000000000..e723b433239a2ac94a541f7d6949b93b0d256bbd --- /dev/null +++ b/lib/kokkos/core/unit_test/rocm/TestROCm_SubView_c02.cpp @@ -0,0 +1,54 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include + +namespace Test { + +TEST_F( TEST_CATEGORY, view_subview_1d_assign_atomic ) +{ + TestViewSubview::test_1d_assign< TEST_EXECSPACE, Kokkos::MemoryTraits >(); +} + +} // namespace Test diff --git a/lib/kokkos/core/unit_test/rocm/TestROCm_SubView_c03.cpp b/lib/kokkos/core/unit_test/rocm/TestROCm_SubView_c03.cpp new file mode 100644 index 0000000000000000000000000000000000000000..b1170a70f50ad622330ad3e58e4fff9c27c1215f --- /dev/null +++ b/lib/kokkos/core/unit_test/rocm/TestROCm_SubView_c03.cpp @@ -0,0 +1,54 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include + +namespace Test { + +TEST_F( TEST_CATEGORY, view_subview_1d_assign_randomaccess ) +{ + TestViewSubview::test_1d_assign< TEST_EXECSPACE, Kokkos::MemoryTraits >(); +} + +} // namespace Test diff --git a/lib/kokkos/core/unit_test/rocm/TestROCm_SubView_c04.cpp b/lib/kokkos/core/unit_test/rocm/TestROCm_SubView_c04.cpp new file mode 100644 index 0000000000000000000000000000000000000000..0788a82ba4d4833a8b51652a22ae92469b5625f7 --- /dev/null +++ b/lib/kokkos/core/unit_test/rocm/TestROCm_SubView_c04.cpp @@ -0,0 +1,54 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include + +namespace Test { + +TEST_F( TEST_CATEGORY, view_subview_2d_from_3d ) +{ + TestViewSubview::test_2d_subview_3d< TEST_EXECSPACE >(); +} + +} // namespace Test diff --git a/lib/kokkos/core/unit_test/rocm/TestROCm_SubView_c05.cpp b/lib/kokkos/core/unit_test/rocm/TestROCm_SubView_c05.cpp new file mode 100644 index 0000000000000000000000000000000000000000..8d075a37c099e887542f311e19f8f0d99d618aa3 --- /dev/null +++ b/lib/kokkos/core/unit_test/rocm/TestROCm_SubView_c05.cpp @@ -0,0 +1,54 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include + +namespace Test { + +TEST_F( TEST_CATEGORY, view_subview_2d_from_3d_atomic ) +{ + TestViewSubview::test_2d_subview_3d< TEST_EXECSPACE, Kokkos::MemoryTraits >(); +} + +} // namespace Test diff --git a/lib/kokkos/core/unit_test/rocm/TestROCm_SubView_c06.cpp b/lib/kokkos/core/unit_test/rocm/TestROCm_SubView_c06.cpp new file mode 100644 index 0000000000000000000000000000000000000000..b9dc782571a5a00b39a54ddb5090f6de0f36326f --- /dev/null +++ b/lib/kokkos/core/unit_test/rocm/TestROCm_SubView_c06.cpp @@ -0,0 +1,54 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include + +namespace Test { + +TEST_F( TEST_CATEGORY, view_subview_2d_from_3d_randomaccess ) +{ + TestViewSubview::test_2d_subview_3d< TEST_EXECSPACE, Kokkos::MemoryTraits >(); +} + +} // namespace Test diff --git a/lib/kokkos/core/unit_test/rocm/TestROCm_SubView_c07.cpp b/lib/kokkos/core/unit_test/rocm/TestROCm_SubView_c07.cpp new file mode 100644 index 0000000000000000000000000000000000000000..54c46095aa9df55bc66451a76be4d4ec862f069a --- /dev/null +++ b/lib/kokkos/core/unit_test/rocm/TestROCm_SubView_c07.cpp @@ -0,0 +1,54 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include + +namespace Test { + +TEST_F( TEST_CATEGORY, view_subview_3d_from_5d_left ) +{ + TestViewSubview::test_3d_subview_5d_left< TEST_EXECSPACE >(); +} + +} // namespace Test diff --git a/lib/kokkos/core/unit_test/rocm/TestROCm_SubView_c08.cpp b/lib/kokkos/core/unit_test/rocm/TestROCm_SubView_c08.cpp new file mode 100644 index 0000000000000000000000000000000000000000..369e16a795acc12cbe22f5fc5bf22ff82c019c0b --- /dev/null +++ b/lib/kokkos/core/unit_test/rocm/TestROCm_SubView_c08.cpp @@ -0,0 +1,54 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include + +namespace Test { + +TEST_F( TEST_CATEGORY, view_subview_3d_from_5d_left_atomic ) +{ + TestViewSubview::test_3d_subview_5d_left< TEST_EXECSPACE, Kokkos::MemoryTraits >(); +} + +} // namespace Test diff --git a/lib/kokkos/core/unit_test/rocm/TestROCm_SubView_c09.cpp b/lib/kokkos/core/unit_test/rocm/TestROCm_SubView_c09.cpp new file mode 100644 index 0000000000000000000000000000000000000000..b97926f98e8815229f4ed16fac9bc19fbe95eeec --- /dev/null +++ b/lib/kokkos/core/unit_test/rocm/TestROCm_SubView_c09.cpp @@ -0,0 +1,54 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include + +namespace Test { + +TEST_F( TEST_CATEGORY, view_subview_3d_from_5d_left_randomaccess ) +{ + TestViewSubview::test_3d_subview_5d_left< TEST_EXECSPACE, Kokkos::MemoryTraits >(); +} + +} // namespace Test diff --git a/lib/kokkos/core/unit_test/rocm/TestROCm_SubView_c10.cpp b/lib/kokkos/core/unit_test/rocm/TestROCm_SubView_c10.cpp new file mode 100644 index 0000000000000000000000000000000000000000..a1d47e0fbdcaed6b064e039289b3cf500c613d98 --- /dev/null +++ b/lib/kokkos/core/unit_test/rocm/TestROCm_SubView_c10.cpp @@ -0,0 +1,54 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include + +namespace Test { + +TEST_F( TEST_CATEGORY, view_subview_3d_from_5d_right ) +{ + TestViewSubview::test_3d_subview_5d_right< TEST_EXECSPACE >(); +} + +} // namespace Test diff --git a/lib/kokkos/core/unit_test/rocm/TestROCm_SubView_c11.cpp b/lib/kokkos/core/unit_test/rocm/TestROCm_SubView_c11.cpp new file mode 100644 index 0000000000000000000000000000000000000000..5be70dc22e80c159730aa3134dd3d1b7b01cfa58 --- /dev/null +++ b/lib/kokkos/core/unit_test/rocm/TestROCm_SubView_c11.cpp @@ -0,0 +1,54 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include + +namespace Test { + +TEST_F( TEST_CATEGORY, view_subview_3d_from_5d_right_atomic ) +{ + TestViewSubview::test_3d_subview_5d_right< TEST_EXECSPACE, Kokkos::MemoryTraits >(); +} + +} // namespace Test diff --git a/lib/kokkos/core/unit_test/rocm/TestROCm_SubView_c12.cpp b/lib/kokkos/core/unit_test/rocm/TestROCm_SubView_c12.cpp new file mode 100644 index 0000000000000000000000000000000000000000..81354766623fc7336025493a7a2bca61079d21fa --- /dev/null +++ b/lib/kokkos/core/unit_test/rocm/TestROCm_SubView_c12.cpp @@ -0,0 +1,54 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include + +namespace Test { + +TEST_F( TEST_CATEGORY, view_subview_3d_from_5d_right_randomaccess ) +{ + TestViewSubview::test_3d_subview_5d_right< TEST_EXECSPACE, Kokkos::MemoryTraits >(); +} + +} // namespace Test diff --git a/lib/kokkos/core/unit_test/rocm/TestROCm_Team.cpp b/lib/kokkos/core/unit_test/rocm/TestROCm_Team.cpp new file mode 100644 index 0000000000000000000000000000000000000000..054bbd83c830724612cb6c2dd49d9a88a4853241 --- /dev/null +++ b/lib/kokkos/core/unit_test/rocm/TestROCm_Team.cpp @@ -0,0 +1,75 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include + +namespace Test { + +TEST_F( TEST_CATEGORY, team_for ) +{ + TestTeamPolicy< TEST_EXECSPACE, Kokkos::Schedule >::test_for( 0 ); + TestTeamPolicy< TEST_EXECSPACE, Kokkos::Schedule >::test_for( 0 ); + + TestTeamPolicy< TEST_EXECSPACE, Kokkos::Schedule >::test_for( 2 ); + TestTeamPolicy< TEST_EXECSPACE, Kokkos::Schedule >::test_for( 2 ); + + TestTeamPolicy< TEST_EXECSPACE, Kokkos::Schedule >::test_for( 1000 ); + TestTeamPolicy< TEST_EXECSPACE, Kokkos::Schedule >::test_for( 1000 ); +} + + +TEST_F( TEST_CATEGORY, team_reduce ) +{ + TestTeamPolicy< TEST_EXECSPACE, Kokkos::Schedule >::test_reduce( 0 ); + TestTeamPolicy< TEST_EXECSPACE, Kokkos::Schedule >::test_reduce( 0 ); + TestTeamPolicy< TEST_EXECSPACE, Kokkos::Schedule >::test_reduce( 2 ); + TestTeamPolicy< TEST_EXECSPACE, Kokkos::Schedule >::test_reduce( 2 ); + TestTeamPolicy< TEST_EXECSPACE, Kokkos::Schedule >::test_reduce( 1000 ); + TestTeamPolicy< TEST_EXECSPACE, Kokkos::Schedule >::test_reduce( 1000 ); +} +} + +#include + + diff --git a/lib/kokkos/core/unit_test/rocm/TestROCm_TeamReductionScan.cpp b/lib/kokkos/core/unit_test/rocm/TestROCm_TeamReductionScan.cpp new file mode 100644 index 0000000000000000000000000000000000000000..ba0eb0e1bd54c8073ac078a5191ff83bd920d593 --- /dev/null +++ b/lib/kokkos/core/unit_test/rocm/TestROCm_TeamReductionScan.cpp @@ -0,0 +1,82 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include + +namespace Test { + +#if !defined(KOKKOS_ROCM_CLANG_WORKAROUND) +TEST_F( TEST_CATEGORY, team_scan ) +{ + TestScanTeam< TEST_EXECSPACE, Kokkos::Schedule >( 0 ); + TestScanTeam< TEST_EXECSPACE, Kokkos::Schedule >( 0 ); + TestScanTeam< TEST_EXECSPACE, Kokkos::Schedule >( 10 ); + TestScanTeam< TEST_EXECSPACE, Kokkos::Schedule >( 10 ); + TestScanTeam< TEST_EXECSPACE, Kokkos::Schedule >( 10000 ); + TestScanTeam< TEST_EXECSPACE, Kokkos::Schedule >( 10000 ); +} +#endif + +TEST_F( TEST_CATEGORY, team_long_reduce ) +{ + TestReduceTeam< long, TEST_EXECSPACE, Kokkos::Schedule >( 0 ); + TestReduceTeam< long, TEST_EXECSPACE, Kokkos::Schedule >( 0 ); + TestReduceTeam< long, TEST_EXECSPACE, Kokkos::Schedule >( 3 ); + TestReduceTeam< long, TEST_EXECSPACE, Kokkos::Schedule >( 3 ); + TestReduceTeam< long, TEST_EXECSPACE, Kokkos::Schedule >( 100000 ); + TestReduceTeam< long, TEST_EXECSPACE, Kokkos::Schedule >( 100000 ); +} + +TEST_F( TEST_CATEGORY, team_double_reduce ) +{ + TestReduceTeam< double, TEST_EXECSPACE, Kokkos::Schedule >( 0 ); + TestReduceTeam< double, TEST_EXECSPACE, Kokkos::Schedule >( 0 ); + TestReduceTeam< double, TEST_EXECSPACE, Kokkos::Schedule >( 3 ); + TestReduceTeam< double, TEST_EXECSPACE, Kokkos::Schedule >( 3 ); + TestReduceTeam< double, TEST_EXECSPACE, Kokkos::Schedule >( 100000 ); + TestReduceTeam< double, TEST_EXECSPACE, Kokkos::Schedule >( 100000 ); +} + +} // namespace Test + diff --git a/lib/kokkos/core/unit_test/rocm/TestROCm_TeamScratch.cpp b/lib/kokkos/core/unit_test/rocm/TestROCm_TeamScratch.cpp new file mode 100644 index 0000000000000000000000000000000000000000..351dfee2b5cd2b23cab117738a8fb8bd8dfc054d --- /dev/null +++ b/lib/kokkos/core/unit_test/rocm/TestROCm_TeamScratch.cpp @@ -0,0 +1,83 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include + +namespace Test { + +TEST_F( TEST_CATEGORY, team_shared_request ) +{ + TestSharedTeam< TEST_EXECSPACE, Kokkos::Schedule >(); + TestSharedTeam< TEST_EXECSPACE, Kokkos::Schedule >(); +} + +TEST_F( TEST_CATEGORY, team_scratch_request ) +{ + TestScratchTeam< TEST_EXECSPACE, Kokkos::Schedule >(); + TestScratchTeam< TEST_EXECSPACE, Kokkos::Schedule >(); +} + +#if defined( KOKKOS_ENABLE_CXX11_DISPATCH_LAMBDA ) +#if !defined(KOKKOS_ENABLE_ROCM) || ( 8000 <= ROCM_VERSION ) +TEST_F( TEST_CATEGORY, team_lambda_shared_request ) +{ + TestLambdaSharedTeam< Kokkos::HostSpace, TEST_EXECSPACE, Kokkos::Schedule >(); + TestLambdaSharedTeam< Kokkos::HostSpace, TEST_EXECSPACE, Kokkos::Schedule >(); +} +#endif +#endif + +TEST_F( TEST_CATEGORY, shmem_size ) +{ + TestShmemSize< TEST_EXECSPACE >(); +} + +TEST_F( TEST_CATEGORY, multi_level_scratch ) +{ + TestMultiLevelScratchTeam< TEST_EXECSPACE, Kokkos::Schedule >(); + TestMultiLevelScratchTeam< TEST_EXECSPACE, Kokkos::Schedule >(); +} + +} // namespace Test + diff --git a/lib/kokkos/core/unit_test/rocm/TestROCm_ViewAPI_b.cpp b/lib/kokkos/core/unit_test/rocm/TestROCm_ViewAPI_b.cpp new file mode 100644 index 0000000000000000000000000000000000000000..3e6f559438a410a900fcea2808330ffdc227073f --- /dev/null +++ b/lib/kokkos/core/unit_test/rocm/TestROCm_ViewAPI_b.cpp @@ -0,0 +1,45 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include diff --git a/lib/kokkos/core/unit_test/rocm/TestROCm_ViewMapping_a.cpp b/lib/kokkos/core/unit_test/rocm/TestROCm_ViewMapping_a.cpp new file mode 100644 index 0000000000000000000000000000000000000000..a7b2b9695de8f910d089f50de86928a60d09225f --- /dev/null +++ b/lib/kokkos/core/unit_test/rocm/TestROCm_ViewMapping_a.cpp @@ -0,0 +1,46 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include + diff --git a/lib/kokkos/core/unit_test/rocm/TestROCm_ViewMapping_b.cpp b/lib/kokkos/core/unit_test/rocm/TestROCm_ViewMapping_b.cpp new file mode 100644 index 0000000000000000000000000000000000000000..fa5b209f1b39530e518ee3d1803ef1b70aa9504e --- /dev/null +++ b/lib/kokkos/core/unit_test/rocm/TestROCm_ViewMapping_b.cpp @@ -0,0 +1,46 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include + diff --git a/lib/kokkos/core/unit_test/rocm/TestROCm_ViewMapping_subview.cpp b/lib/kokkos/core/unit_test/rocm/TestROCm_ViewMapping_subview.cpp new file mode 100644 index 0000000000000000000000000000000000000000..0af114c7ea2b0691127a92632036941e6fdea82b --- /dev/null +++ b/lib/kokkos/core/unit_test/rocm/TestROCm_ViewMapping_subview.cpp @@ -0,0 +1,46 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include + diff --git a/lib/kokkos/core/unit_test/rocm/TestROCm_ViewOfClass.cpp b/lib/kokkos/core/unit_test/rocm/TestROCm_ViewOfClass.cpp new file mode 100644 index 0000000000000000000000000000000000000000..f0b95c0e004cb5dc6f4c0ffa668cd1dda8e5719d --- /dev/null +++ b/lib/kokkos/core/unit_test/rocm/TestROCm_ViewOfClass.cpp @@ -0,0 +1,46 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include + diff --git a/lib/kokkos/core/unit_test/serial/TestSerial_Crs.cpp b/lib/kokkos/core/unit_test/serial/TestSerial_Crs.cpp new file mode 100644 index 0000000000000000000000000000000000000000..5799ab816c2ce2c9f97c78f208809717f93d8404 --- /dev/null +++ b/lib/kokkos/core/unit_test/serial/TestSerial_Crs.cpp @@ -0,0 +1,45 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include diff --git a/lib/kokkos/core/unit_test/threads/TestThreads_Crs.cpp b/lib/kokkos/core/unit_test/threads/TestThreads_Crs.cpp new file mode 100644 index 0000000000000000000000000000000000000000..25243273fe82b73c41bef5702e45db6e7ada6860 --- /dev/null +++ b/lib/kokkos/core/unit_test/threads/TestThreads_Crs.cpp @@ -0,0 +1,45 @@ +/* +//@HEADER +// ************************************************************************ +// +// Kokkos v. 2.0 +// Copyright (2014) Sandia Corporation +// +// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, +// the U.S. Government retains certain rights in this software. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// 3. Neither the name of the Corporation nor the names of the +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE +// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Questions? Contact H. Carter Edwards (hcedwar@sandia.gov) +// +// ************************************************************************ +//@HEADER +*/ + +#include +#include diff --git a/lib/kokkos/generate_makefile.bash b/lib/kokkos/generate_makefile.bash index 6d636dc7e4fc0e8225556bca214b0984f2c43bca..b4a69d30fd97d3fd566d31d0ad12dc0053713633 100755 --- a/lib/kokkos/generate_makefile.bash +++ b/lib/kokkos/generate_makefile.bash @@ -31,6 +31,9 @@ do KOKKOS_DEVICES="${KOKKOS_DEVICES},Cuda" CUDA_PATH="${key#*=}" ;; + --with-rocm) + KOKKOS_DEVICES="${KOKKOS_DEVICES},ROCm" + ;; --with-openmp) KOKKOS_DEVICES="${KOKKOS_DEVICES},OpenMP" ;; @@ -56,6 +59,9 @@ do --with-hwloc*) HWLOC_PATH="${key#*=}" ;; + --with-memkind*) + MEMKIND_PATH="${key#*=}" + ;; --arch*) KOKKOS_ARCH="${key#*=}" ;; @@ -117,6 +123,7 @@ do echo " ARMv81 = ARMv8.1 Compatible CPU" echo " ARMv8-ThunderX = ARMv8 Cavium ThunderX CPU" echo " [IBM]" + echo " Power7 = IBM POWER7 and POWER7+ CPUs" echo " Power8 = IBM POWER8 CPUs" echo " Power9 = IBM POWER9 CPUs" echo " [Intel]" @@ -151,7 +158,8 @@ do echo " -lpthread, etc.)." echo "--with-gtest=/Path/To/Gtest: Set path to gtest. (Used in unit and performance" echo " tests.)" - echo "--with-hwloc=/Path/To/Hwloc: Set path to hwloc." + echo "--with-hwloc=/Path/To/Hwloc: Set path to hwloc library." + echo "--with-memkind=/Path/To/MemKind: Set path to memkind library." echo "--with-options=[OPT]: Additional options to Kokkos:" echo " compiler_warnings" echo " aggressive_vectorization = add ivdep on loops" @@ -228,7 +236,17 @@ else fi if [ ${#HWLOC_PATH} -gt 0 ]; then - KOKKOS_SETTINGS="${KOKKOS_SETTINGS} HWLOC_PATH=${HWLOC_PATH} KOKKOS_USE_TPLS=hwloc" + KOKKOS_SETTINGS="${KOKKOS_SETTINGS} HWLOC_PATH=${HWLOC_PATH}" + KOKKOS_USE_TPLS="${KOKKOS_USE_TPLS},hwloc" +fi + +if [ ${#MEMKIND_PATH} -gt 0 ]; then + KOKKOS_SETTINGS="${KOKKOS_SETTINGS} MEMKIND_PATH=${MEMKIND_PATH}" + KOKKOS_USE_TPLS="${KOKKOS_USE_TPLS},experimental_memkind" +fi + +if [ ${#KOKKOS_USE_TPLS} -gt 0 ]; then + KOKKOS_SETTINGS="${KOKKOS_SETTINGS} KOKKOS_USE_TPLS=${KOKKOS_USE_TPLS}" fi if [ ${#QTHREADS_PATH} -gt 0 ]; then diff --git a/python/lammps.py b/python/lammps.py index a512efdcda71abfed9209aa44978ad3040c9f0b0..2db657fbae84c17a7afb6af7b10eecebb4bb4ccf 100644 --- a/python/lammps.py +++ b/python/lammps.py @@ -32,6 +32,13 @@ import select import re import sys +def get_ctypes_int(size): + if size == 4: + return c_int32 + elif size == 8: + return c_int64 + return c_int + class MPIAbortException(Exception): def __init__(self, message): self.message = message @@ -162,6 +169,14 @@ class lammps(object): pythonapi.PyCObject_AsVoidPtr.argtypes = [py_object] self.lmp = c_void_p(pythonapi.PyCObject_AsVoidPtr(ptr)) + # optional numpy support (lazy loading) + self._numpy = None + + # set default types + self.c_bigint = get_ctypes_int(self.extract_setting("bigint")) + self.c_tagint = get_ctypes_int(self.extract_setting("tagint")) + self.c_imageint = get_ctypes_int(self.extract_setting("imageint")) + def __del__(self): if self.lmp and self.opened: self.lib.lammps_close(self.lmp) @@ -236,6 +251,48 @@ class lammps(object): ptr = self.lib.lammps_extract_atom(self.lmp,name) return ptr + # extract lammps type byte sizes + + def extract_setting(self, name): + if name: name = name.encode() + self.lib.lammps_extract_atom.restype = c_int + return int(self.lib.lammps_extract_setting(self.lmp,name)) + + @property + def numpy(self): + if not self._numpy: + import numpy as np + class LammpsNumpyWrapper: + def __init__(self, lmp): + self.lmp = lmp + + def extract_atom_iarray(self, name, nelem, dim=1): + if dim == 1: + tmp = self.lmp.extract_atom(name, 0) + ptr = cast(tmp, POINTER(c_int * nelem)) + else: + tmp = self.lmp.extract_atom(name, 1) + ptr = cast(tmp[0], POINTER(c_int * nelem * dim)) + + a = np.frombuffer(ptr.contents, dtype=np.intc) + a.shape = (nelem, dim) + return a + + def extract_atom_darray(self, name, nelem, dim=1): + if dim == 1: + tmp = self.lmp.extract_atom(name, 2) + ptr = cast(tmp, POINTER(c_double * nelem)) + else: + tmp = self.lmp.extract_atom(name, 3) + ptr = cast(tmp[0], POINTER(c_double * nelem * dim)) + + a = np.frombuffer(ptr.contents) + a.shape = (nelem, dim) + return a + + self._numpy = LammpsNumpyWrapper(self) + return self._numpy + # extract compute info def extract_compute(self,id,style,type): diff --git a/src/.gitignore b/src/.gitignore index 80166e260e42c40c435c86d01aa254e1baeb3f17..a5d6773c5bd7b280e984078ef5c8ea81b75293c0 100644 --- a/src/.gitignore +++ b/src/.gitignore @@ -57,9 +57,39 @@ /intel_buffers.cpp /intel_buffers.h /intel_intrinsics.h +/intel_intrinsics_airebo.h /intel_preprocess.h /intel_simd.h +/atom_vec_edpd.cpp +/atom_vec_edpd.h +/atom_vec_mdpd.cpp +/atom_vec_mdpd.h +/atom_vec_tdpd.cpp +/atom_vec_tdpd.h +/compute_edpd_temp_atom.cpp +/compute_edpd_temp_atom.h +/compute_tdpd_cc_atom.cpp +/compute_tdpd_cc_atom.h +/fix_edpd_source.cpp +/fix_edpd_source.h +/fix_mvv_dpd.cpp +/fix_mvv_dpd.h +/fix_mvv_edpd.cpp +/fix_mvv_edpd.h +/fix_mvv_tdpd.cpp +/fix_mvv_tdpd.h +/fix_tdpd_source.cpp +/fix_tdpd_source.h +/pair_edpd.cpp +/pair_edpd.h +/pair_mdpd.cpp +/pair_mdpd.h +/pair_mdpd_rhosum.cpp +/pair_mdpd_rhosum.h +/pair_tdpd.cpp +/pair_tdpd.h + /compute_sna_atom.cpp /compute_sna_atom.h /compute_snad_atom.cpp @@ -928,6 +958,8 @@ /temper.h /temper_grem.cpp /temper_grem.h +/temper_npt.cpp +/temper_npt.h /thr_data.cpp /thr_data.h /verlet_split.cpp diff --git a/src/Depend.sh b/src/Depend.sh index 0962dace510b8cdbeb2e0c3c93779f15907a6fb0..94636079603b3c5c2f5543be735eb8c7a3eab97c 100644 --- a/src/Depend.sh +++ b/src/Depend.sh @@ -115,6 +115,10 @@ if (test $1 = "USER-CGSDK") then depend USER-OMP fi +if (test $1 = "USER-DPD") then + depend KOKKOS +fi + if (test $1 = "USER-FEP") then depend USER-OMP fi diff --git a/src/KOKKOS/Install.sh b/src/KOKKOS/Install.sh index 790b9224c2ba3670622cfc03f2e332b660b7d5c4..df5fc3e5f1a9d146a94f37435842d6076f4edff2 100644 --- a/src/KOKKOS/Install.sh +++ b/src/KOKKOS/Install.sh @@ -49,8 +49,12 @@ action atom_vec_bond_kokkos.cpp atom_vec_bond.cpp action atom_vec_bond_kokkos.h atom_vec_bond.h action atom_vec_charge_kokkos.cpp action atom_vec_charge_kokkos.h +action atom_vec_dpd_kokkos.cpp atom_vec_dpd.cpp +action atom_vec_dpd_kokkos.h atom_vec_dpd.h action atom_vec_full_kokkos.cpp atom_vec_full.cpp action atom_vec_full_kokkos.h atom_vec_full.h +action atom_vec_hybrid_kokkos.cpp +action atom_vec_hybrid_kokkos.h action atom_vec_kokkos.cpp action atom_vec_kokkos.h action atom_vec_molecular_kokkos.cpp atom_vec_molecular.cpp @@ -77,6 +81,8 @@ action domain_kokkos.cpp action domain_kokkos.h action fix_deform_kokkos.cpp action fix_deform_kokkos.h +action fix_eos_table_rx_kokkos.cpp fix_eos_table_rx.cpp +action fix_eos_table_rx_kokkos.h fix_eos_table_rx.h action fix_langevin_kokkos.cpp action fix_langevin_kokkos.h action fix_nh_kokkos.cpp @@ -89,6 +95,8 @@ action fix_nve_kokkos.cpp action fix_nve_kokkos.h action fix_nvt_kokkos.cpp action fix_nvt_kokkos.h +action fix_property_atom_kokkos.cpp +action fix_property_atom_kokkos.h action fix_qeq_reax_kokkos.cpp fix_qeq_reax.cpp action fix_qeq_reax_kokkos.h fix_qeq_reax.h action fix_reaxc_bonds_kokkos.cpp fix_reaxc_bonds.cpp @@ -97,10 +105,18 @@ action fix_reaxc_species_kokkos.cpp fix_reaxc_species.cpp action fix_reaxc_species_kokkos.h fix_reaxc_species.h action fix_setforce_kokkos.cpp action fix_setforce_kokkos.h +action fix_shardlow_kokkos.cpp fix_shardlow.cpp +action fix_shardlow_kokkos.h fix_shardlow.h action fix_momentum_kokkos.cpp action fix_momentum_kokkos.h +action fix_wall_lj93_kokkos.cpp +action fix_wall_lj93_kokkos.h action fix_wall_reflect_kokkos.cpp action fix_wall_reflect_kokkos.h +action fix_dpd_energy_kokkos.cpp fix_dpd_energy.cpp +action fix_dpd_energy_kokkos.h fix_dpd_energy.h +action fix_rx_kokkos.cpp fix_rx.cpp +action fix_rx_kokkos.h fix_rx.h action gridcomm_kokkos.cpp gridcomm.cpp action gridcomm_kokkos.h gridcomm.h action improper_class2_kokkos.cpp improper_class2.cpp @@ -124,8 +140,12 @@ action npair_copy_kokkos.cpp action npair_copy_kokkos.h action npair_kokkos.cpp action npair_kokkos.h +action npair_ssa_kokkos.cpp npair_half_bin_newton_ssa.cpp +action npair_ssa_kokkos.h npair_half_bin_newton_ssa.h action nbin_kokkos.cpp action nbin_kokkos.h +action nbin_ssa_kokkos.cpp nbin_ssa.cpp +action nbin_ssa_kokkos.h nbin_ssa.h action math_special_kokkos.cpp action math_special_kokkos.h action pair_buck_coul_cut_kokkos.cpp @@ -144,12 +164,20 @@ action pair_coul_long_kokkos.cpp pair_coul_long.cpp action pair_coul_long_kokkos.h pair_coul_long.h action pair_coul_wolf_kokkos.cpp action pair_coul_wolf_kokkos.h +action pair_dpd_fdt_energy_kokkos.cpp pair_dpd_fdt_energy.cpp +action pair_dpd_fdt_energy_kokkos.h pair_dpd_fdt_energy.h action pair_eam_kokkos.cpp pair_eam.cpp action pair_eam_kokkos.h pair_eam.h action pair_eam_alloy_kokkos.cpp pair_eam_alloy.cpp action pair_eam_alloy_kokkos.h pair_eam_alloy.h action pair_eam_fs_kokkos.cpp pair_eam_fs.cpp action pair_eam_fs_kokkos.h pair_eam_fs.h +action pair_exp6_rx_kokkos.cpp pair_exp6_rx.cpp +action pair_exp6_rx_kokkos.h pair_exp6_rx.h +action pair_hybrid_kokkos.cpp +action pair_hybrid_kokkos.h +action pair_hybrid_overlay_kokkos.cpp +action pair_hybrid_overlay_kokkos.h action pair_kokkos.h action pair_lj_charmm_coul_charmm_implicit_kokkos.cpp pair_lj_charmm_coul_charmm_implicit.cpp action pair_lj_charmm_coul_charmm_implicit_kokkos.h pair_lj_charmm_coul_charmm_implicit.h @@ -183,6 +211,8 @@ action pair_lj_sdk_kokkos.cpp pair_lj_sdk.cpp action pair_lj_sdk_kokkos.h pair_lj_sdk.h action pair_morse_kokkos.cpp action pair_morse_kokkos.h +action pair_multi_lucy_rx_kokkos.cpp pair_multi_lucy_rx.cpp +action pair_multi_lucy_rx_kokkos.h pair_multi_lucy_rx.h action pair_reaxc_kokkos.cpp pair_reaxc.cpp action pair_reaxc_kokkos.h pair_reaxc.h action pair_sw_kokkos.cpp pair_sw.cpp @@ -191,6 +221,8 @@ action pair_vashishta_kokkos.cpp pair_vashishta.cpp action pair_vashishta_kokkos.h pair_vashishta.h action pair_table_kokkos.cpp action pair_table_kokkos.h +action pair_table_rx_kokkos.cpp pair_table_rx.cpp +action pair_table_rx_kokkos.h pair_table_rx.h action pair_tersoff_kokkos.cpp pair_tersoff.cpp action pair_tersoff_kokkos.h pair_tersoff.h action pair_tersoff_mod_kokkos.cpp pair_tersoff_mod.cpp @@ -199,6 +231,8 @@ action pair_tersoff_zbl_kokkos.cpp pair_tersoff_zbl.cpp action pair_tersoff_zbl_kokkos.h pair_tersoff_zbl.h action pppm_kokkos.cpp pppm.cpp action pppm_kokkos.h pppm.h +action rand_pool_wrap_kokkos.cpp +action rand_pool_wrap_kokkos.h action region_block_kokkos.cpp action region_block_kokkos.h action verlet_kokkos.cpp diff --git a/src/KOKKOS/angle_charmm_kokkos.cpp b/src/KOKKOS/angle_charmm_kokkos.cpp index 8dd22022d8f7272d342cf6e86f36700e9086adf6..401a00c856ffcc86543f22024bbb0cec1d9dc2e3 100644 --- a/src/KOKKOS/angle_charmm_kokkos.cpp +++ b/src/KOKKOS/angle_charmm_kokkos.cpp @@ -271,10 +271,10 @@ void AngleCharmmKokkos::coeff(int narg, char **arg) Kokkos::DualView k_k_ub("AngleCharmm::k_ub",n+1); Kokkos::DualView k_r_ub("AngleCharmm::r_ub",n+1); - d_k = k_k.d_view; - d_theta0 = k_theta0.d_view; - d_k_ub = k_k_ub.d_view; - d_r_ub = k_r_ub.d_view; + d_k = k_k.template view(); + d_theta0 = k_theta0.template view(); + d_k_ub = k_k_ub.template view(); + d_r_ub = k_r_ub.template view(); for (int i = 1; i <= n; i++) { k_k.h_view[i] = k[i]; diff --git a/src/KOKKOS/atom_kokkos.cpp b/src/KOKKOS/atom_kokkos.cpp index 577eff2364bf8e053a04ba47dfad387ca204210e..31b33dbdc9a2c406e40e6e36f8898d88d1c50d5b 100644 --- a/src/KOKKOS/atom_kokkos.cpp +++ b/src/KOKKOS/atom_kokkos.cpp @@ -49,6 +49,7 @@ AtomKokkos::~AtomKokkos() memory->destroy_kokkos(k_radius, radius); memory->destroy_kokkos(k_rmass, rmass); memory->destroy_kokkos(k_omega, omega); + memory->destroy_kokkos(k_angmom, angmom); memory->destroy_kokkos(k_torque, torque); memory->destroy_kokkos(k_nspecial, nspecial); @@ -73,6 +74,19 @@ AtomKokkos::~AtomKokkos() memory->destroy_kokkos(k_improper_atom2, improper_atom2); memory->destroy_kokkos(k_improper_atom3, improper_atom3); memory->destroy_kokkos(k_improper_atom4, improper_atom4); + + // USER-DPD package + memory->destroy_kokkos(k_uCond,uCond); + memory->destroy_kokkos(k_uMech,uMech); + memory->destroy_kokkos(k_uChem,uChem); + memory->destroy_kokkos(k_uCG,uCG); + memory->destroy_kokkos(k_uCGnew,uCGnew); + memory->destroy_kokkos(k_rho,rho); + memory->destroy_kokkos(k_dpdTheta,dpdTheta); + memory->destroy_kokkos(k_duChem,duChem); + + memory->destroy_kokkos(k_dvector,dvector); + dvector = NULL; } /* ---------------------------------------------------------------------- */ @@ -227,6 +241,63 @@ void AtomKokkos::grow(unsigned int mask){ } } +/* ---------------------------------------------------------------------- + add a custom variable with name of type flag = 0/1 for int/double + assumes name does not already exist + return index in ivector or dvector of its location +------------------------------------------------------------------------- */ + +int AtomKokkos::add_custom(const char *name, int flag) +{ + int index; + + if (flag == 0) { + index = nivector; + nivector++; + iname = (char **) memory->srealloc(iname,nivector*sizeof(char *), + "atom:iname"); + int n = strlen(name) + 1; + iname[index] = new char[n]; + strcpy(iname[index],name); + ivector = (int **) memory->srealloc(ivector,nivector*sizeof(int *), + "atom:ivector"); + memory->create(ivector[index],nmax,"atom:ivector"); + } else { + index = ndvector; + ndvector++; + dname = (char **) memory->srealloc(dname,ndvector*sizeof(char *), + "atom:dname"); + int n = strlen(name) + 1; + dname[index] = new char[n]; + strcpy(dname[index],name); + memory->grow_kokkos(k_dvector,dvector,ndvector,nmax, + "atom:dvector"); + } + + return index; +} + +/* ---------------------------------------------------------------------- + remove a custom variable of type flag = 0/1 for int/double at index + free memory for vector and name and set ptrs to NULL + ivector/dvector and iname/dname lists never shrink +------------------------------------------------------------------------- */ + +void AtomKokkos::remove_custom(int flag, int index) +{ + if (flag == 0) { + memory->destroy(ivector[index]); + ivector[index] = NULL; + delete [] iname[index]; + iname[index] = NULL; + } else { + //memory->destroy_kokkos(dvector); + dvector[index] = NULL; + delete [] dname[index]; + dname[index] = NULL; + } +} + /* ---------------------------------------------------------------------- */ void AtomKokkos::deallocate_topology() diff --git a/src/KOKKOS/atom_kokkos.h b/src/KOKKOS/atom_kokkos.h index 05aae712d9cbebccfcff1a67c65fa10d7b751a0a..224502318996aa12da4139928b5e323569d8cbbe 100644 --- a/src/KOKKOS/atom_kokkos.h +++ b/src/KOKKOS/atom_kokkos.h @@ -34,6 +34,7 @@ class AtomKokkos : public Atom { DAT::tdual_float_1d k_radius; DAT::tdual_float_1d k_rmass; DAT::tdual_v_array k_omega; + DAT::tdual_v_array k_angmom; DAT::tdual_f_array k_torque; DAT::tdual_tagint_1d k_molecule; DAT::tdual_int_2d k_nspecial; @@ -51,6 +52,14 @@ class AtomKokkos : public Atom { DAT::tdual_int_2d k_improper_type; DAT::tdual_tagint_2d k_improper_atom1, k_improper_atom2, k_improper_atom3, k_improper_atom4; + DAT::tdual_float_2d k_dvector; + + +// USER-DPD package + DAT::tdual_efloat_1d k_uCond, k_uMech, k_uChem, k_uCG, k_uCGnew, + k_rho,k_dpdTheta,k_duChem; + + AtomKokkos(class LAMMPS *); ~AtomKokkos(); @@ -60,6 +69,8 @@ class AtomKokkos : public Atom { void sync_overlapping_device(const ExecutionSpace space, unsigned int mask); virtual void sort(); virtual void grow(unsigned int mask); + int add_custom(const char *, int); + void remove_custom(int, int); virtual void deallocate_topology(); void sync_modify(ExecutionSpace, unsigned int, unsigned int); private: diff --git a/src/KOKKOS/atom_vec_angle_kokkos.cpp b/src/KOKKOS/atom_vec_angle_kokkos.cpp index 34b868aadc1b51c176ec55f946a05d2305e19b87..05414cf2e45cdc92f9750c552cb390d915e151cb 100644 --- a/src/KOKKOS/atom_vec_angle_kokkos.cpp +++ b/src/KOKKOS/atom_vec_angle_kokkos.cpp @@ -308,7 +308,6 @@ int AtomVecAngleKokkos::pack_comm_kokkos(const int &n, Kokkos::parallel_for(n,f); } } - LMPHostType::fence(); } else { sync(Device,X_MASK); if(pbc_flag) { @@ -336,7 +335,6 @@ int AtomVecAngleKokkos::pack_comm_kokkos(const int &n, Kokkos::parallel_for(n,f); } } - LMPDeviceType::fence(); } return n*size_forward; @@ -430,7 +428,6 @@ int AtomVecAngleKokkos::pack_comm_self(const int &n, const DAT::tdual_int_2d &li Kokkos::parallel_for(n,f); } } - LMPHostType::fence(); } else { sync(Device,X_MASK); modified(Device,X_MASK); @@ -463,7 +460,6 @@ int AtomVecAngleKokkos::pack_comm_self(const int &n, const DAT::tdual_int_2d &li Kokkos::parallel_for(n,f); } } - LMPDeviceType::fence(); } return n*3; } @@ -501,13 +497,11 @@ void AtomVecAngleKokkos::unpack_comm_kokkos(const int &n, const int &first, modified(Host,X_MASK); struct AtomVecAngleKokkos_UnpackComm f(atomKK->k_x,buf,first); Kokkos::parallel_for(n,f); - LMPDeviceType::fence(); } else { sync(Device,X_MASK); modified(Device,X_MASK); struct AtomVecAngleKokkos_UnpackComm f(atomKK->k_x,buf,first); Kokkos::parallel_for(n,f); - LMPDeviceType::fence(); } } @@ -753,13 +747,11 @@ int AtomVecAngleKokkos::pack_border_kokkos(int n, DAT::tdual_int_2d k_sendlist, buf.view(), k_sendlist.view(), iswap,h_x,h_tag,h_type,h_mask,h_molecule,dx,dy,dz); Kokkos::parallel_for(n,f); - LMPHostType::fence(); } else { AtomVecAngleKokkos_PackBorder f( buf.view(), k_sendlist.view(), iswap,d_x,d_tag,d_type,d_mask,d_molecule,dx,dy,dz); Kokkos::parallel_for(n,f); - LMPDeviceType::fence(); } } else { @@ -769,13 +761,11 @@ int AtomVecAngleKokkos::pack_border_kokkos(int n, DAT::tdual_int_2d k_sendlist, buf.view(), k_sendlist.view(), iswap,h_x,h_tag,h_type,h_mask,h_molecule,dx,dy,dz); Kokkos::parallel_for(n,f); - LMPHostType::fence(); } else { AtomVecAngleKokkos_PackBorder f( buf.view(), k_sendlist.view(), iswap,d_x,d_tag,d_type,d_mask,d_molecule,dx,dy,dz); Kokkos::parallel_for(n,f); - LMPDeviceType::fence(); } } return n*size_border; @@ -977,12 +967,10 @@ void AtomVecAngleKokkos::unpack_border_kokkos(const int &n, const int &first, struct AtomVecAngleKokkos_UnpackBorder f(buf.view(),h_x,h_tag,h_type,h_mask,h_molecule,first); Kokkos::parallel_for(n,f); - LMPHostType::fence(); } else { struct AtomVecAngleKokkos_UnpackBorder f(buf.view(),d_x,d_tag,d_type,d_mask,d_molecule,first); Kokkos::parallel_for(n,f); - LMPDeviceType::fence(); } } @@ -1241,13 +1229,11 @@ int AtomVecAngleKokkos::pack_exchange_kokkos(const int &nsend,DAT::tdual_xfloat_ AtomVecAngleKokkos_PackExchangeFunctor f(atomKK,k_buf,k_sendlist,k_copylist,atom->nlocal,dim,lo,hi); Kokkos::parallel_for(nsend,f); - LMPHostType::fence(); return nsend*elements; } else { AtomVecAngleKokkos_PackExchangeFunctor f(atomKK,k_buf,k_sendlist,k_copylist,atom->nlocal,dim,lo,hi); Kokkos::parallel_for(nsend,f); - LMPDeviceType::fence(); return nsend*elements; } } @@ -1405,7 +1391,6 @@ int AtomVecAngleKokkos::unpack_exchange_kokkos(DAT::tdual_xfloat_2d &k_buf,int n AtomVecAngleKokkos_UnpackExchangeFunctor f(atomKK,k_buf,k_count,dim,lo,hi); Kokkos::parallel_for(nrecv/elements,f); - LMPHostType::fence(); return k_count.h_view(0); } else { k_count.h_view(0) = nlocal; @@ -1414,7 +1399,6 @@ int AtomVecAngleKokkos::unpack_exchange_kokkos(DAT::tdual_xfloat_2d &k_buf,int n AtomVecAngleKokkos_UnpackExchangeFunctor f(atomKK,k_buf,k_count,dim,lo,hi); Kokkos::parallel_for(nrecv/elements,f); - LMPDeviceType::fence(); k_count.modify(); k_count.sync(); diff --git a/src/KOKKOS/atom_vec_angle_kokkos.h b/src/KOKKOS/atom_vec_angle_kokkos.h index 0a477b03866560f7b9175b8342b25f28c9cb814e..abdd48fce51e3181357a95f33ef988868661173b 100644 --- a/src/KOKKOS/atom_vec_angle_kokkos.h +++ b/src/KOKKOS/atom_vec_angle_kokkos.h @@ -14,6 +14,8 @@ #ifdef ATOM_CLASS AtomStyle(angle/kk,AtomVecAngleKokkos) +AtomStyle(angle/kk/device,AtomVecAngleKokkos) +AtomStyle(angle/kk/host,AtomVecAngleKokkos) #else diff --git a/src/KOKKOS/atom_vec_atomic_kokkos.cpp b/src/KOKKOS/atom_vec_atomic_kokkos.cpp index d040bd35531320292d885279152df1fda372c2b7..b63dc5fb8c94aad0ac9312fad0268a89d2f4d62d 100644 --- a/src/KOKKOS/atom_vec_atomic_kokkos.cpp +++ b/src/KOKKOS/atom_vec_atomic_kokkos.cpp @@ -224,7 +224,6 @@ int AtomVecAtomicKokkos::pack_comm_kokkos(const int &n, Kokkos::parallel_for(n,f); } } - LMPHostType::fence(); } else { sync(Device,X_MASK); if(pbc_flag) { @@ -252,7 +251,6 @@ int AtomVecAtomicKokkos::pack_comm_kokkos(const int &n, Kokkos::parallel_for(n,f); } } - LMPDeviceType::fence(); } return n*size_forward; @@ -340,7 +338,6 @@ int AtomVecAtomicKokkos::pack_comm_self(const int &n, const DAT::tdual_int_2d &l Kokkos::parallel_for(n,f); } } - LMPHostType::fence(); } else { sync(Device,X_MASK); modified(Device,X_MASK); @@ -369,7 +366,6 @@ int AtomVecAtomicKokkos::pack_comm_self(const int &n, const DAT::tdual_int_2d &l Kokkos::parallel_for(n,f); } } - LMPDeviceType::fence(); } return n*3; } @@ -407,13 +403,11 @@ void AtomVecAtomicKokkos::unpack_comm_kokkos(const int &n, const int &first, modified(Host,X_MASK); struct AtomVecAtomicKokkos_UnpackComm f(atomKK->k_x,buf,first); Kokkos::parallel_for(n,f); - LMPDeviceType::fence(); } else { sync(Device,X_MASK); modified(Device,X_MASK); struct AtomVecAtomicKokkos_UnpackComm f(atomKK->k_x,buf,first); Kokkos::parallel_for(n,f); - LMPDeviceType::fence(); } } @@ -655,13 +649,11 @@ int AtomVecAtomicKokkos::pack_border_kokkos(int n, DAT::tdual_int_2d k_sendlist, buf.view(), k_sendlist.view(), iswap,h_x,h_tag,h_type,h_mask,dx,dy,dz); Kokkos::parallel_for(n,f); - LMPHostType::fence(); } else { AtomVecAtomicKokkos_PackBorder f( buf.view(), k_sendlist.view(), iswap,d_x,d_tag,d_type,d_mask,dx,dy,dz); Kokkos::parallel_for(n,f); - LMPDeviceType::fence(); } } else { @@ -671,13 +663,11 @@ int AtomVecAtomicKokkos::pack_border_kokkos(int n, DAT::tdual_int_2d k_sendlist, buf.view(), k_sendlist.view(), iswap,h_x,h_tag,h_type,h_mask,dx,dy,dz); Kokkos::parallel_for(n,f); - LMPHostType::fence(); } else { AtomVecAtomicKokkos_PackBorder f( buf.view(), k_sendlist.view(), iswap,d_x,d_tag,d_type,d_mask,dx,dy,dz); Kokkos::parallel_for(n,f); - LMPDeviceType::fence(); } } return n*6; @@ -853,11 +843,9 @@ void AtomVecAtomicKokkos::unpack_border_kokkos(const int &n, const int &first, if(space==Host) { struct AtomVecAtomicKokkos_UnpackBorder f(buf.view(),h_x,h_tag,h_type,h_mask,first); Kokkos::parallel_for(n,f); - LMPHostType::fence(); } else { struct AtomVecAtomicKokkos_UnpackBorder f(buf.view(),d_x,d_tag,d_type,d_mask,first); Kokkos::parallel_for(n,f); - LMPDeviceType::fence(); } } @@ -1009,12 +997,10 @@ int AtomVecAtomicKokkos::pack_exchange_kokkos(const int &nsend,DAT::tdual_xfloat if(space == Host) { AtomVecAtomicKokkos_PackExchangeFunctor f(atomKK,k_buf,k_sendlist,k_copylist,atom->nlocal,dim,lo,hi); Kokkos::parallel_for(nsend,f); - LMPHostType::fence(); return nsend*11; } else { AtomVecAtomicKokkos_PackExchangeFunctor f(atomKK,k_buf,k_sendlist,k_copylist,atom->nlocal,dim,lo,hi); Kokkos::parallel_for(nsend,f); - LMPDeviceType::fence(); return nsend*11; } } @@ -1106,7 +1092,6 @@ int AtomVecAtomicKokkos::unpack_exchange_kokkos(DAT::tdual_xfloat_2d &k_buf,int k_count.h_view(0) = nlocal; AtomVecAtomicKokkos_UnpackExchangeFunctor f(atomKK,k_buf,k_count,dim,lo,hi); Kokkos::parallel_for(nrecv/11,f); - LMPHostType::fence(); return k_count.h_view(0); } else { k_count.h_view(0) = nlocal; @@ -1114,7 +1099,6 @@ int AtomVecAtomicKokkos::unpack_exchange_kokkos(DAT::tdual_xfloat_2d &k_buf,int k_count.sync(); AtomVecAtomicKokkos_UnpackExchangeFunctor f(atomKK,k_buf,k_count,dim,lo,hi); Kokkos::parallel_for(nrecv/11,f); - LMPDeviceType::fence(); k_count.modify(); k_count.sync(); diff --git a/src/KOKKOS/atom_vec_atomic_kokkos.h b/src/KOKKOS/atom_vec_atomic_kokkos.h index 0c3e24f9d9661303a51db514eb13f5ce416f9375..5e9a72c2e377c18c9435744fda21f70844d9c4a7 100644 --- a/src/KOKKOS/atom_vec_atomic_kokkos.h +++ b/src/KOKKOS/atom_vec_atomic_kokkos.h @@ -14,6 +14,8 @@ #ifdef ATOM_CLASS AtomStyle(atomic/kk,AtomVecAtomicKokkos) +AtomStyle(atomic/kk/device,AtomVecAtomicKokkos) +AtomStyle(atomic/kk/host,AtomVecAtomicKokkos) #else diff --git a/src/KOKKOS/atom_vec_bond_kokkos.cpp b/src/KOKKOS/atom_vec_bond_kokkos.cpp index c46c49cb293fad7fcec6f395f0aa206788cf7561..e0f29a27bb7f251aa4816e4bd1a19f43f6f2a39b 100644 --- a/src/KOKKOS/atom_vec_bond_kokkos.cpp +++ b/src/KOKKOS/atom_vec_bond_kokkos.cpp @@ -266,7 +266,6 @@ int AtomVecBondKokkos::pack_comm_kokkos(const int &n, Kokkos::parallel_for(n,f); } } - LMPHostType::fence(); } else { sync(Device,X_MASK); if(pbc_flag) { @@ -294,7 +293,6 @@ int AtomVecBondKokkos::pack_comm_kokkos(const int &n, Kokkos::parallel_for(n,f); } } - LMPDeviceType::fence(); } return n*size_forward; @@ -382,7 +380,6 @@ int AtomVecBondKokkos::pack_comm_self(const int &n, const DAT::tdual_int_2d &lis Kokkos::parallel_for(n,f); } } - LMPHostType::fence(); } else { sync(Device,X_MASK); modified(Device,X_MASK); @@ -411,7 +408,6 @@ int AtomVecBondKokkos::pack_comm_self(const int &n, const DAT::tdual_int_2d &lis Kokkos::parallel_for(n,f); } } - LMPDeviceType::fence(); } return n*3; } @@ -449,13 +445,11 @@ void AtomVecBondKokkos::unpack_comm_kokkos(const int &n, const int &first, modified(Host,X_MASK); struct AtomVecBondKokkos_UnpackComm f(atomKK->k_x,buf,first); Kokkos::parallel_for(n,f); - LMPDeviceType::fence(); } else { sync(Device,X_MASK); modified(Device,X_MASK); struct AtomVecBondKokkos_UnpackComm f(atomKK->k_x,buf,first); Kokkos::parallel_for(n,f); - LMPDeviceType::fence(); } } @@ -701,13 +695,11 @@ int AtomVecBondKokkos::pack_border_kokkos(int n, DAT::tdual_int_2d k_sendlist, buf.view(), k_sendlist.view(), iswap,h_x,h_tag,h_type,h_mask,h_molecule,dx,dy,dz); Kokkos::parallel_for(n,f); - LMPHostType::fence(); } else { AtomVecBondKokkos_PackBorder f( buf.view(), k_sendlist.view(), iswap,d_x,d_tag,d_type,d_mask,d_molecule,dx,dy,dz); Kokkos::parallel_for(n,f); - LMPDeviceType::fence(); } } else { @@ -717,13 +709,11 @@ int AtomVecBondKokkos::pack_border_kokkos(int n, DAT::tdual_int_2d k_sendlist, buf.view(), k_sendlist.view(), iswap,h_x,h_tag,h_type,h_mask,h_molecule,dx,dy,dz); Kokkos::parallel_for(n,f); - LMPHostType::fence(); } else { AtomVecBondKokkos_PackBorder f( buf.view(), k_sendlist.view(), iswap,d_x,d_tag,d_type,d_mask,d_molecule,dx,dy,dz); Kokkos::parallel_for(n,f); - LMPDeviceType::fence(); } } return n*size_border; @@ -925,12 +915,10 @@ void AtomVecBondKokkos::unpack_border_kokkos(const int &n, const int &first, struct AtomVecBondKokkos_UnpackBorder f(buf.view(),h_x,h_tag,h_type,h_mask,h_molecule,first); Kokkos::parallel_for(n,f); - LMPHostType::fence(); } else { struct AtomVecBondKokkos_UnpackBorder f(buf.view(),d_x,d_tag,d_type,d_mask,d_molecule,first); Kokkos::parallel_for(n,f); - LMPDeviceType::fence(); } } @@ -1157,13 +1145,11 @@ int AtomVecBondKokkos::pack_exchange_kokkos(const int &nsend,DAT::tdual_xfloat_2 AtomVecBondKokkos_PackExchangeFunctor f(atomKK,k_buf,k_sendlist,k_copylist,atom->nlocal,dim,lo,hi); Kokkos::parallel_for(nsend,f); - LMPHostType::fence(); return nsend*elements; } else { AtomVecBondKokkos_PackExchangeFunctor f(atomKK,k_buf,k_sendlist,k_copylist,atom->nlocal,dim,lo,hi); Kokkos::parallel_for(nsend,f); - LMPDeviceType::fence(); return nsend*elements; } } @@ -1299,7 +1285,6 @@ int AtomVecBondKokkos::unpack_exchange_kokkos(DAT::tdual_xfloat_2d &k_buf,int nr AtomVecBondKokkos_UnpackExchangeFunctor f(atomKK,k_buf,k_count,dim,lo,hi); Kokkos::parallel_for(nrecv/elements,f); - LMPHostType::fence(); return k_count.h_view(0); } else { k_count.h_view(0) = nlocal; @@ -1308,7 +1293,6 @@ int AtomVecBondKokkos::unpack_exchange_kokkos(DAT::tdual_xfloat_2d &k_buf,int nr AtomVecBondKokkos_UnpackExchangeFunctor f(atomKK,k_buf,k_count,dim,lo,hi); Kokkos::parallel_for(nrecv/elements,f); - LMPDeviceType::fence(); k_count.modify(); k_count.sync(); diff --git a/src/KOKKOS/atom_vec_bond_kokkos.h b/src/KOKKOS/atom_vec_bond_kokkos.h index e64017c99be6f8deb6a2055aeb611e310e4d9c0b..3dcc99fa784bb86a33ef11474e42865a04d2253f 100644 --- a/src/KOKKOS/atom_vec_bond_kokkos.h +++ b/src/KOKKOS/atom_vec_bond_kokkos.h @@ -14,6 +14,8 @@ #ifdef ATOM_CLASS AtomStyle(bond/kk,AtomVecBondKokkos) +AtomStyle(bond/kk/device,AtomVecBondKokkos) +AtomStyle(bond/kk/host,AtomVecBondKokkos) #else diff --git a/src/KOKKOS/atom_vec_charge_kokkos.cpp b/src/KOKKOS/atom_vec_charge_kokkos.cpp index 856660d1e9cdecf8c7fab09b53ad20326329f422..89f7e91c2b18feabc5c5427c5b92092afdfd0ce8 100644 --- a/src/KOKKOS/atom_vec_charge_kokkos.cpp +++ b/src/KOKKOS/atom_vec_charge_kokkos.cpp @@ -236,7 +236,6 @@ int AtomVecChargeKokkos::pack_comm_kokkos(const int &n, Kokkos::parallel_for(n,f); } } - LMPHostType::fence(); } else { sync(Device,X_MASK); if(pbc_flag) { @@ -264,7 +263,6 @@ int AtomVecChargeKokkos::pack_comm_kokkos(const int &n, Kokkos::parallel_for(n,f); } } - LMPDeviceType::fence(); } return n*size_forward; @@ -352,7 +350,6 @@ int AtomVecChargeKokkos::pack_comm_self(const int &n, const DAT::tdual_int_2d &l Kokkos::parallel_for(n,f); } } - LMPHostType::fence(); } else { sync(Device,X_MASK); modified(Device,X_MASK); @@ -381,7 +378,6 @@ int AtomVecChargeKokkos::pack_comm_self(const int &n, const DAT::tdual_int_2d &l Kokkos::parallel_for(n,f); } } - LMPDeviceType::fence(); } return n*3; } @@ -419,13 +415,11 @@ void AtomVecChargeKokkos::unpack_comm_kokkos(const int &n, const int &first, modified(Host,X_MASK); struct AtomVecChargeKokkos_UnpackComm f(atomKK->k_x,buf,first); Kokkos::parallel_for(n,f); - LMPDeviceType::fence(); } else { sync(Device,X_MASK); modified(Device,X_MASK); struct AtomVecChargeKokkos_UnpackComm f(atomKK->k_x,buf,first); Kokkos::parallel_for(n,f); - LMPDeviceType::fence(); } } @@ -669,13 +663,11 @@ int AtomVecChargeKokkos::pack_border_kokkos(int n, DAT::tdual_int_2d k_sendlist, buf.view(), k_sendlist.view(), iswap,h_x,h_tag,h_type,h_mask,h_q,dx,dy,dz); Kokkos::parallel_for(n,f); - LMPHostType::fence(); } else { AtomVecChargeKokkos_PackBorder f( buf.view(), k_sendlist.view(), iswap,d_x,d_tag,d_type,d_mask,d_q,dx,dy,dz); Kokkos::parallel_for(n,f); - LMPDeviceType::fence(); } } else { @@ -685,13 +677,11 @@ int AtomVecChargeKokkos::pack_border_kokkos(int n, DAT::tdual_int_2d k_sendlist, buf.view(), k_sendlist.view(), iswap,h_x,h_tag,h_type,h_mask,h_q,dx,dy,dz); Kokkos::parallel_for(n,f); - LMPHostType::fence(); } else { AtomVecChargeKokkos_PackBorder f( buf.view(), k_sendlist.view(), iswap,d_x,d_tag,d_type,d_mask,d_q,dx,dy,dz); Kokkos::parallel_for(n,f); - LMPDeviceType::fence(); } } return n*size_border; @@ -890,12 +880,10 @@ void AtomVecChargeKokkos::unpack_border_kokkos(const int &n, const int &first, struct AtomVecChargeKokkos_UnpackBorder f(buf.view(),h_x,h_tag,h_type,h_mask,h_q,first); Kokkos::parallel_for(n,f); - LMPHostType::fence(); } else { struct AtomVecChargeKokkos_UnpackBorder f(buf.view(),d_x,d_tag,d_type,d_mask,d_q,first); Kokkos::parallel_for(n,f); - LMPDeviceType::fence(); } modified(space,X_MASK|TAG_MASK|TYPE_MASK|MASK_MASK|Q_MASK); } @@ -1078,13 +1066,11 @@ int AtomVecChargeKokkos::pack_exchange_kokkos(const int &nsend,DAT::tdual_xfloat AtomVecChargeKokkos_PackExchangeFunctor f(atomKK,k_buf,k_sendlist,k_copylist,atom->nlocal,dim,lo,hi); Kokkos::parallel_for(nsend,f); - LMPHostType::fence(); return nsend*12; } else { AtomVecChargeKokkos_PackExchangeFunctor f(atomKK,k_buf,k_sendlist,k_copylist,atom->nlocal,dim,lo,hi); Kokkos::parallel_for(nsend,f); - LMPDeviceType::fence(); return nsend*12; } } @@ -1181,7 +1167,6 @@ int AtomVecChargeKokkos::unpack_exchange_kokkos(DAT::tdual_xfloat_2d &k_buf,int k_count.h_view(0) = nlocal; AtomVecChargeKokkos_UnpackExchangeFunctor f(atomKK,k_buf,k_count,dim,lo,hi); Kokkos::parallel_for(nrecv/12,f); - LMPHostType::fence(); return k_count.h_view(0); } else { k_count.h_view(0) = nlocal; @@ -1190,7 +1175,6 @@ int AtomVecChargeKokkos::unpack_exchange_kokkos(DAT::tdual_xfloat_2d &k_buf,int AtomVecChargeKokkos_UnpackExchangeFunctor f(atomKK,k_buf,k_count,dim,lo,hi); Kokkos::parallel_for(nrecv/12,f); - LMPDeviceType::fence(); k_count.modify(); k_count.sync(); diff --git a/src/KOKKOS/atom_vec_charge_kokkos.h b/src/KOKKOS/atom_vec_charge_kokkos.h index 38e32458c685d0ca5798f180dd177ed1cd2e9675..f9b385e7ed87aaf7557dfb0d0c7bdbbc2febafb2 100644 --- a/src/KOKKOS/atom_vec_charge_kokkos.h +++ b/src/KOKKOS/atom_vec_charge_kokkos.h @@ -14,6 +14,8 @@ #ifdef ATOM_CLASS AtomStyle(charge/kk,AtomVecChargeKokkos) +AtomStyle(charge/kk/device,AtomVecChargeKokkos) +AtomStyle(charge/kk/host,AtomVecChargeKokkos) #else diff --git a/src/KOKKOS/atom_vec_dpd_kokkos.cpp b/src/KOKKOS/atom_vec_dpd_kokkos.cpp new file mode 100644 index 0000000000000000000000000000000000000000..c4e493bd8536dd036931e61c0e0f080fc9d925ad --- /dev/null +++ b/src/KOKKOS/atom_vec_dpd_kokkos.cpp @@ -0,0 +1,2002 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale AtomicKokkos/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#include +#include "atom_vec_dpd_kokkos.h" +#include "atom_kokkos.h" +#include "comm_kokkos.h" +#include "domain.h" +#include "modify.h" +#include "fix.h" +#include "atom_masks.h" +#include "memory.h" +#include "error.h" + +using namespace LAMMPS_NS; + +#define DELTA 10000 + +/* ---------------------------------------------------------------------- */ + +AtomVecDPDKokkos::AtomVecDPDKokkos(LAMMPS *lmp) : AtomVecKokkos(lmp) +{ + molecular = 0; + mass_type = 1; + + comm_x_only = comm_f_only = 0; + size_forward = 7; + size_reverse = 3; + size_border = 12; + size_velocity = 3; + size_data_atom = 6; + size_data_vel = 4; + xcol_data = 4; + + atom->rho_flag = 1; + atom->dpd_flag = 1; + + k_count = DAT::tdual_int_1d("atom::k_count",1); + atomKK = (AtomKokkos *) atom; + commKK = (CommKokkos *) comm; +} + +/* ---------------------------------------------------------------------- + grow atom arrays + n = 0 grows arrays by DELTA + n > 0 allocates arrays to size n +------------------------------------------------------------------------- */ + +void AtomVecDPDKokkos::grow(int n) +{ + if (n == 0) nmax += DELTA; + else nmax = n; + atomKK->nmax = nmax; + if (nmax < 0 || nmax > MAXSMALLINT) + error->one(FLERR,"Per-processor system is too big"); + + sync(Device,ALL_MASK); + modified(Device,ALL_MASK); + + memory->grow_kokkos(atomKK->k_tag,atomKK->tag,nmax,"atom:tag"); + memory->grow_kokkos(atomKK->k_type,atomKK->type,nmax,"atom:type"); + memory->grow_kokkos(atomKK->k_mask,atomKK->mask,nmax,"atom:mask"); + memory->grow_kokkos(atomKK->k_image,atomKK->image,nmax,"atom:image"); + + memory->grow_kokkos(atomKK->k_x,atomKK->x,nmax,3,"atom:x"); + memory->grow_kokkos(atomKK->k_v,atomKK->v,nmax,3,"atom:v"); + memory->grow_kokkos(atomKK->k_f,atomKK->f,nmax,3,"atom:f"); + + + memory->grow_kokkos(atomKK->k_rho,atomKK->rho,nmax,"atom:rho"); + memory->grow_kokkos(atomKK->k_dpdTheta,atomKK->dpdTheta,nmax,"atom:dpdTheta"); + memory->grow_kokkos(atomKK->k_uCond,atomKK->uCond,nmax,"atom:uCond"); + memory->grow_kokkos(atomKK->k_uMech,atomKK->uMech,nmax,"atom:uMech"); + memory->grow_kokkos(atomKK->k_uChem,atomKK->uChem,nmax,"atom:uChem"); + memory->grow_kokkos(atomKK->k_uCG,atomKK->uCG,nmax,"atom:uCG"); + memory->grow_kokkos(atomKK->k_uCGnew,atomKK->uCGnew,nmax,"atom:uCGnew"); + memory->grow_kokkos(atomKK->k_duChem,atomKK->duChem,nmax,"atom:duChem"); + + if (atom->nextra_grow) + for (int iextra = 0; iextra < atom->nextra_grow; iextra++) + modify->fix[atom->extra_grow[iextra]]->grow_arrays(nmax); + + grow_reset(); + sync(Host,ALL_MASK); +} + +/* ---------------------------------------------------------------------- + reset local array ptrs +------------------------------------------------------------------------- */ + +void AtomVecDPDKokkos::grow_reset() +{ + tag = atomKK->tag; + d_tag = atomKK->k_tag.d_view; + h_tag = atomKK->k_tag.h_view; + + type = atomKK->type; + d_type = atomKK->k_type.d_view; + h_type = atomKK->k_type.h_view; + mask = atomKK->mask; + d_mask = atomKK->k_mask.d_view; + h_mask = atomKK->k_mask.h_view; + image = atomKK->image; + d_image = atomKK->k_image.d_view; + h_image = atomKK->k_image.h_view; + + x = atomKK->x; + d_x = atomKK->k_x.d_view; + h_x = atomKK->k_x.h_view; + v = atomKK->v; + d_v = atomKK->k_v.d_view; + h_v = atomKK->k_v.h_view; + f = atomKK->f; + d_f = atomKK->k_f.d_view; + h_f = atomKK->k_f.h_view; + + rho = atomKK->rho; + d_rho = atomKK->k_rho.d_view; + h_rho = atomKK->k_rho.h_view; + dpdTheta = atomKK->dpdTheta; + d_dpdTheta = atomKK->k_dpdTheta.d_view; + h_dpdTheta = atomKK->k_dpdTheta.h_view; + uCond = atomKK->uCond; + d_uCond = atomKK->k_uCond.d_view;; + h_uCond = atomKK->k_uCond.h_view; + uMech = atomKK->uMech; + d_uMech = atomKK->k_uMech.d_view;; + h_uMech = atomKK->k_uMech.h_view; + uChem = atomKK->uChem; + d_uChem = atomKK->k_uChem.d_view;; + h_uChem = atomKK->k_uChem.h_view; + uCG = atomKK->uCG; + d_uCG = atomKK->k_uCG.d_view;; + h_uCG = atomKK->k_uCG.h_view; + uCGnew = atomKK->uCGnew; + d_uCGnew = atomKK->k_uCGnew.d_view;; + h_uCGnew = atomKK->k_uCGnew.h_view; + duChem = atomKK->duChem; + d_duChem = atomKK->k_duChem.d_view;; + h_duChem = atomKK->k_duChem.h_view; +} + +/* ---------------------------------------------------------------------- + copy atom I info to atom J +------------------------------------------------------------------------- */ + +void AtomVecDPDKokkos::copy(int i, int j, int delflag) +{ + sync(Host,X_MASK | V_MASK | TAG_MASK | TYPE_MASK | + MASK_MASK | IMAGE_MASK | DPDTHETA_MASK | + UCOND_MASK | UMECH_MASK | UCHEM_MASK | DVECTOR_MASK); + + h_tag[j] = h_tag[i]; + h_type[j] = h_type[i]; + mask[j] = mask[i]; + h_image[j] = h_image[i]; + h_x(j,0) = h_x(i,0); + h_x(j,1) = h_x(i,1); + h_x(j,2) = h_x(i,2); + h_v(j,0) = h_v(i,0); + h_v(j,1) = h_v(i,1); + h_v(j,2) = h_v(i,2); + h_dpdTheta[j] = h_dpdTheta[i]; + h_uCond[j] = h_uCond[i]; + h_uMech[j] = h_uMech[i]; + h_uChem[j] = h_uChem[i]; + h_uCG[j] = h_uCG[i]; + h_uCGnew[j] = h_uCGnew[i]; + + if (atom->nextra_grow) + for (int iextra = 0; iextra < atom->nextra_grow; iextra++) + modify->fix[atom->extra_grow[iextra]]->copy_arrays(i,j,delflag); + + modified(Host,X_MASK | V_MASK | TAG_MASK | TYPE_MASK | + MASK_MASK | IMAGE_MASK | DPDTHETA_MASK | + UCOND_MASK | UMECH_MASK | UCHEM_MASK | DVECTOR_MASK); +} + +/* ---------------------------------------------------------------------- */ + +template +struct AtomVecDPDKokkos_PackComm { + typedef DeviceType device_type; + + typename ArrayTypes::t_x_array_randomread _x; + typename ArrayTypes::t_efloat_1d _dpdTheta,_uCond,_uMech,_uChem; + typename ArrayTypes::t_xfloat_2d_um _buf; + typename ArrayTypes::t_int_2d_const _list; + const int _iswap; + X_FLOAT _xprd,_yprd,_zprd,_xy,_xz,_yz; + X_FLOAT _pbc[6]; + + AtomVecDPDKokkos_PackComm( + const typename DAT::tdual_x_array &x, + const typename DAT::tdual_efloat_1d &dpdTheta, + const typename DAT::tdual_efloat_1d &uCond, + const typename DAT::tdual_efloat_1d &uMech, + const typename DAT::tdual_efloat_1d &uChem, + const typename DAT::tdual_xfloat_2d &buf, + const typename DAT::tdual_int_2d &list, + const int & iswap, + const X_FLOAT &xprd, const X_FLOAT &yprd, const X_FLOAT &zprd, + const X_FLOAT &xy, const X_FLOAT &xz, const X_FLOAT &yz, const int* const pbc): + _x(x.view()), + _dpdTheta(dpdTheta.view()), + _uCond(uCond.view()), + _uMech(uMech.view()), + _uChem(uChem.view()), + _list(list.view()),_iswap(iswap), + _xprd(xprd),_yprd(yprd),_zprd(zprd), + _xy(xy),_xz(xz),_yz(yz) { + const size_t maxsend = (buf.view().dimension_0()*buf.view().dimension_1())/3; + const size_t elements = 3; + buffer_view(_buf,buf,maxsend,elements); + _pbc[0] = pbc[0]; _pbc[1] = pbc[1]; _pbc[2] = pbc[2]; + _pbc[3] = pbc[3]; _pbc[4] = pbc[4]; _pbc[5] = pbc[5]; + }; + + KOKKOS_INLINE_FUNCTION + void operator() (const int& i) const { + const int j = _list(_iswap,i); + if (PBC_FLAG == 0) { + _buf(i,0) = _x(j,0); + _buf(i,1) = _x(j,1); + _buf(i,2) = _x(j,2); + } else { + if (TRICLINIC == 0) { + _buf(i,0) = _x(j,0) + _pbc[0]*_xprd; + _buf(i,1) = _x(j,1) + _pbc[1]*_yprd; + _buf(i,2) = _x(j,2) + _pbc[2]*_zprd; + } else { + _buf(i,0) = _x(j,0) + _pbc[0]*_xprd + _pbc[5]*_xy + _pbc[4]*_xz; + _buf(i,1) = _x(j,1) + _pbc[1]*_yprd + _pbc[3]*_yz; + _buf(i,2) = _x(j,2) + _pbc[2]*_zprd; + } + } + _buf(i,3) = _dpdTheta(j); + _buf(i,4) = _uCond(j); + _buf(i,5) = _uMech(j); + _buf(i,6) = _uChem(j); + } +}; + +/* ---------------------------------------------------------------------- */ + +int AtomVecDPDKokkos::pack_comm_kokkos(const int &n, + const DAT::tdual_int_2d &list, + const int & iswap, + const DAT::tdual_xfloat_2d &buf, + const int &pbc_flag, + const int* const pbc) +{ + // Check whether to always run forward communication on the host + // Choose correct forward PackComm kernel + + if(commKK->forward_comm_on_host) { + sync(Host,X_MASK|DPDTHETA_MASK|UCOND_MASK|UMECH_MASK|UCHEM_MASK); + if(pbc_flag) { + if(domain->triclinic) { + struct AtomVecDPDKokkos_PackComm f(atomKK->k_x, + atomKK->k_dpdTheta,atomKK->k_uCond,atomKK->k_uMech,atomKK->k_uChem, + buf,list,iswap, + domain->xprd,domain->yprd,domain->zprd, + domain->xy,domain->xz,domain->yz,pbc); + Kokkos::parallel_for(n,f); + } else { + struct AtomVecDPDKokkos_PackComm f(atomKK->k_x, + atomKK->k_dpdTheta,atomKK->k_uCond,atomKK->k_uMech,atomKK->k_uChem, + buf,list,iswap, + domain->xprd,domain->yprd,domain->zprd, + domain->xy,domain->xz,domain->yz,pbc); + Kokkos::parallel_for(n,f); + } + } else { + if(domain->triclinic) { + struct AtomVecDPDKokkos_PackComm f(atomKK->k_x, + atomKK->k_dpdTheta,atomKK->k_uCond,atomKK->k_uMech,atomKK->k_uChem, + buf,list,iswap, + domain->xprd,domain->yprd,domain->zprd, + domain->xy,domain->xz,domain->yz,pbc); + Kokkos::parallel_for(n,f); + } else { + struct AtomVecDPDKokkos_PackComm f(atomKK->k_x, + atomKK->k_dpdTheta,atomKK->k_uCond,atomKK->k_uMech,atomKK->k_uChem, + buf,list,iswap, + domain->xprd,domain->yprd,domain->zprd, + domain->xy,domain->xz,domain->yz,pbc); + Kokkos::parallel_for(n,f); + } + } + } else { + sync(Device,X_MASK|DPDTHETA_MASK|UCOND_MASK|UMECH_MASK|UCHEM_MASK); + if(pbc_flag) { + if(domain->triclinic) { + struct AtomVecDPDKokkos_PackComm f(atomKK->k_x, + atomKK->k_dpdTheta,atomKK->k_uCond,atomKK->k_uMech,atomKK->k_uChem, + buf,list,iswap, + domain->xprd,domain->yprd,domain->zprd, + domain->xy,domain->xz,domain->yz,pbc); + Kokkos::parallel_for(n,f); + } else { + struct AtomVecDPDKokkos_PackComm f(atomKK->k_x, + atomKK->k_dpdTheta,atomKK->k_uCond,atomKK->k_uMech,atomKK->k_uChem, + buf,list,iswap, + domain->xprd,domain->yprd,domain->zprd, + domain->xy,domain->xz,domain->yz,pbc); + Kokkos::parallel_for(n,f); + } + } else { + if(domain->triclinic) { + struct AtomVecDPDKokkos_PackComm f(atomKK->k_x, + atomKK->k_dpdTheta,atomKK->k_uCond,atomKK->k_uMech,atomKK->k_uChem, + buf,list,iswap, + domain->xprd,domain->yprd,domain->zprd, + domain->xy,domain->xz,domain->yz,pbc); + Kokkos::parallel_for(n,f); + } else { + struct AtomVecDPDKokkos_PackComm f(atomKK->k_x, + atomKK->k_dpdTheta,atomKK->k_uCond,atomKK->k_uMech,atomKK->k_uChem, + buf,list,iswap, + domain->xprd,domain->yprd,domain->zprd, + domain->xy,domain->xz,domain->yz,pbc); + Kokkos::parallel_for(n,f); + } + } + } + + return n*size_forward; +} + +/* ---------------------------------------------------------------------- */ + +template +struct AtomVecDPDKokkos_PackCommSelf { + typedef DeviceType device_type; + + typename ArrayTypes::t_x_array_randomread _x; + typename ArrayTypes::t_x_array _xw; + typename ArrayTypes::t_efloat_1d _dpdTheta,_uCond,_uMech,_uChem; + int _nfirst; + typename ArrayTypes::t_int_2d_const _list; + const int _iswap; + X_FLOAT _xprd,_yprd,_zprd,_xy,_xz,_yz; + X_FLOAT _pbc[6]; + + AtomVecDPDKokkos_PackCommSelf( + const typename DAT::tdual_x_array &x, + const typename DAT::tdual_efloat_1d &dpdTheta, + const typename DAT::tdual_efloat_1d &uCond, + const typename DAT::tdual_efloat_1d &uMech, + const typename DAT::tdual_efloat_1d &uChem, + const int &nfirst, + const typename DAT::tdual_int_2d &list, + const int & iswap, + const X_FLOAT &xprd, const X_FLOAT &yprd, const X_FLOAT &zprd, + const X_FLOAT &xy, const X_FLOAT &xz, const X_FLOAT &yz, const int* const pbc): + _x(x.view()),_xw(x.view()), + _dpdTheta(dpdTheta.view()), + _uCond(uCond.view()), + _uMech(uMech.view()), + _uChem(uChem.view()), + _nfirst(nfirst),_list(list.view()),_iswap(iswap), + _xprd(xprd),_yprd(yprd),_zprd(zprd), + _xy(xy),_xz(xz),_yz(yz) { + _pbc[0] = pbc[0]; _pbc[1] = pbc[1]; _pbc[2] = pbc[2]; + _pbc[3] = pbc[3]; _pbc[4] = pbc[4]; _pbc[5] = pbc[5]; + }; + + KOKKOS_INLINE_FUNCTION + void operator() (const int& i) const { + const int j = _list(_iswap,i); + if (PBC_FLAG == 0) { + _xw(i+_nfirst,0) = _x(j,0); + _xw(i+_nfirst,1) = _x(j,1); + _xw(i+_nfirst,2) = _x(j,2); + } else { + if (TRICLINIC == 0) { + _xw(i+_nfirst,0) = _x(j,0) + _pbc[0]*_xprd; + _xw(i+_nfirst,1) = _x(j,1) + _pbc[1]*_yprd; + _xw(i+_nfirst,2) = _x(j,2) + _pbc[2]*_zprd; + } else { + _xw(i+_nfirst,0) = _x(j,0) + _pbc[0]*_xprd + _pbc[5]*_xy + _pbc[4]*_xz; + _xw(i+_nfirst,1) = _x(j,1) + _pbc[1]*_yprd + _pbc[3]*_yz; + _xw(i+_nfirst,2) = _x(j,2) + _pbc[2]*_zprd; + } + } + _dpdTheta(i+_nfirst) = _dpdTheta(j); + _uCond(i+_nfirst) = _uCond(j); + _uMech(i+_nfirst) = _uMech(j); + _uChem(i+_nfirst) = _uChem(j); + } +}; + +/* ---------------------------------------------------------------------- */ + +int AtomVecDPDKokkos::pack_comm_self(const int &n, const DAT::tdual_int_2d &list, const int & iswap, + const int nfirst, const int &pbc_flag, const int* const pbc) { + if(commKK->forward_comm_on_host) { + sync(Host,X_MASK|DPDTHETA_MASK|UCOND_MASK|UMECH_MASK|UCHEM_MASK); + modified(Host,X_MASK|DPDTHETA_MASK|UCOND_MASK|UMECH_MASK|UCHEM_MASK); + if(pbc_flag) { + if(domain->triclinic) { + struct AtomVecDPDKokkos_PackCommSelf f(atomKK->k_x, + atomKK->k_dpdTheta,atomKK->k_uCond,atomKK->k_uMech,atomKK->k_uChem, + nfirst,list,iswap, + domain->xprd,domain->yprd,domain->zprd, + domain->xy,domain->xz,domain->yz,pbc); + Kokkos::parallel_for(n,f); + } else { + struct AtomVecDPDKokkos_PackCommSelf f(atomKK->k_x, + atomKK->k_dpdTheta,atomKK->k_uCond,atomKK->k_uMech,atomKK->k_uChem, + nfirst,list,iswap, + domain->xprd,domain->yprd,domain->zprd, + domain->xy,domain->xz,domain->yz,pbc); + Kokkos::parallel_for(n,f); + } + } else { + if(domain->triclinic) { + struct AtomVecDPDKokkos_PackCommSelf f(atomKK->k_x, + atomKK->k_dpdTheta,atomKK->k_uCond,atomKK->k_uMech,atomKK->k_uChem, + nfirst,list,iswap, + domain->xprd,domain->yprd,domain->zprd, + domain->xy,domain->xz,domain->yz,pbc); + Kokkos::parallel_for(n,f); + } else { + struct AtomVecDPDKokkos_PackCommSelf f(atomKK->k_x, + atomKK->k_dpdTheta,atomKK->k_uCond,atomKK->k_uMech,atomKK->k_uChem, + nfirst,list,iswap, + domain->xprd,domain->yprd,domain->zprd, + domain->xy,domain->xz,domain->yz,pbc); + Kokkos::parallel_for(n,f); + } + } + } else { + sync(Device,X_MASK|DPDTHETA_MASK|UCOND_MASK|UMECH_MASK|UCHEM_MASK); + modified(Device,X_MASK|DPDTHETA_MASK|UCOND_MASK|UMECH_MASK|UCHEM_MASK); + if(pbc_flag) { + if(domain->triclinic) { + struct AtomVecDPDKokkos_PackCommSelf f(atomKK->k_x, + atomKK->k_dpdTheta,atomKK->k_uCond,atomKK->k_uMech,atomKK->k_uChem, + nfirst,list,iswap, + domain->xprd,domain->yprd,domain->zprd, + domain->xy,domain->xz,domain->yz,pbc); + Kokkos::parallel_for(n,f); + } else { + struct AtomVecDPDKokkos_PackCommSelf f(atomKK->k_x, + atomKK->k_dpdTheta,atomKK->k_uCond,atomKK->k_uMech,atomKK->k_uChem, + nfirst,list,iswap, + domain->xprd,domain->yprd,domain->zprd, + domain->xy,domain->xz,domain->yz,pbc); + Kokkos::parallel_for(n,f); + } + } else { + if(domain->triclinic) { + struct AtomVecDPDKokkos_PackCommSelf f(atomKK->k_x, + atomKK->k_dpdTheta,atomKK->k_uCond,atomKK->k_uMech,atomKK->k_uChem, + nfirst,list,iswap, + domain->xprd,domain->yprd,domain->zprd, + domain->xy,domain->xz,domain->yz,pbc); + Kokkos::parallel_for(n,f); + } else { + struct AtomVecDPDKokkos_PackCommSelf f(atomKK->k_x, + atomKK->k_dpdTheta,atomKK->k_uCond,atomKK->k_uMech,atomKK->k_uChem, + nfirst,list,iswap, + domain->xprd,domain->yprd,domain->zprd, + domain->xy,domain->xz,domain->yz,pbc); + Kokkos::parallel_for(n,f); + } + } + } + return n*3; +} + +/* ---------------------------------------------------------------------- */ + +template +struct AtomVecDPDKokkos_UnpackComm { + typedef DeviceType device_type; + + typename ArrayTypes::t_x_array _x; + typename ArrayTypes::t_efloat_1d _dpdTheta,_uCond,_uMech,_uChem; + typename ArrayTypes::t_xfloat_2d_const _buf; + int _first; + + AtomVecDPDKokkos_UnpackComm( + const typename DAT::tdual_x_array &x, + const typename DAT::tdual_efloat_1d &dpdTheta, + const typename DAT::tdual_efloat_1d &uCond, + const typename DAT::tdual_efloat_1d &uMech, + const typename DAT::tdual_efloat_1d &uChem, + const typename DAT::tdual_xfloat_2d &buf, + const int& first):_x(x.view()), + _dpdTheta(dpdTheta.view()), + _uCond(uCond.view()), + _uMech(uMech.view()), + _uChem(uChem.view()), + _buf(buf.view()), + _first(first) {}; + + KOKKOS_INLINE_FUNCTION + void operator() (const int& i) const { + _x(i+_first,0) = _buf(i,0); + _x(i+_first,1) = _buf(i,1); + _x(i+_first,2) = _buf(i,2); + _dpdTheta(i+_first) = _buf(i,3); + _uCond(i+_first) = _buf(i,4); + _uMech(i+_first) = _buf(i,5); + _uChem(i+_first) = _buf(i,6); + } +}; + +/* ---------------------------------------------------------------------- */ + +void AtomVecDPDKokkos::unpack_comm_kokkos(const int &n, const int &first, + const DAT::tdual_xfloat_2d &buf ) { + if(commKK->forward_comm_on_host) { + sync(Host,X_MASK|DPDTHETA_MASK|UCOND_MASK|UMECH_MASK|UCHEM_MASK); + modified(Host,X_MASK|DPDTHETA_MASK|UCOND_MASK|UMECH_MASK|UCHEM_MASK); + struct AtomVecDPDKokkos_UnpackComm f(atomKK->k_x, + atomKK->k_dpdTheta,atomKK->k_uCond,atomKK->k_uMech,atomKK->k_uChem, + buf,first); + Kokkos::parallel_for(n,f); + } else { + sync(Device,X_MASK|DPDTHETA_MASK|UCOND_MASK|UMECH_MASK|UCHEM_MASK); + modified(Device,X_MASK|DPDTHETA_MASK|UCOND_MASK|UMECH_MASK|UCHEM_MASK); + struct AtomVecDPDKokkos_UnpackComm f(atomKK->k_x, + atomKK->k_dpdTheta,atomKK->k_uCond,atomKK->k_uMech,atomKK->k_uChem, + buf,first); + Kokkos::parallel_for(n,f); + } +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecDPDKokkos::pack_comm(int n, int *list, double *buf, + int pbc_flag, int *pbc) +{ + int i,j,m; + double dx,dy,dz; + + sync(Host,X_MASK|DPDTHETA_MASK|UCOND_MASK|UMECH_MASK|UCHEM_MASK); + + m = 0; + if (pbc_flag == 0) { + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = h_x(j,0); + buf[m++] = h_x(j,1); + buf[m++] = h_x(j,2); + buf[m++] = h_dpdTheta[j]; + buf[m++] = h_uCond[j]; + buf[m++] = h_uMech[j]; + buf[m++] = h_uChem[j]; + } + } else { + if (domain->triclinic == 0) { + dx = pbc[0]*domain->xprd; + dy = pbc[1]*domain->yprd; + dz = pbc[2]*domain->zprd; + } else { + dx = pbc[0]*domain->xprd + pbc[5]*domain->xy + pbc[4]*domain->xz; + dy = pbc[1]*domain->yprd + pbc[3]*domain->yz; + dz = pbc[2]*domain->zprd; + } + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = h_x(j,0) + dx; + buf[m++] = h_x(j,1) + dy; + buf[m++] = h_x(j,2) + dz; + buf[m++] = h_dpdTheta[j]; + buf[m++] = h_uCond[j]; + buf[m++] = h_uMech[j]; + buf[m++] = h_uChem[j]; + } + } + return m; +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecDPDKokkos::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; + + sync(Host,X_MASK|V_MASK|DPDTHETA_MASK|UCOND_MASK|UMECH_MASK|UCHEM_MASK); + + m = 0; + if (pbc_flag == 0) { + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = h_x(j,0); + buf[m++] = h_x(j,1); + buf[m++] = h_x(j,2); + buf[m++] = h_v(j,0); + buf[m++] = h_v(j,1); + buf[m++] = h_v(j,2); + buf[m++] = h_dpdTheta[j]; + buf[m++] = h_uCond[j]; + buf[m++] = h_uMech[j]; + buf[m++] = h_uChem[j]; + } + } else { + if (domain->triclinic == 0) { + dx = pbc[0]*domain->xprd; + dy = pbc[1]*domain->yprd; + dz = pbc[2]*domain->zprd; + } else { + dx = pbc[0]*domain->xprd + pbc[5]*domain->xy + pbc[4]*domain->xz; + dy = pbc[1]*domain->yprd + pbc[3]*domain->yz; + dz = pbc[2]*domain->zprd; + } + if (!deform_vremap) { + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = h_x(j,0) + dx; + buf[m++] = h_x(j,1) + dy; + buf[m++] = h_x(j,2) + dz; + buf[m++] = h_v(j,0); + buf[m++] = h_v(j,1); + buf[m++] = h_v(j,2); + buf[m++] = h_dpdTheta[j]; + buf[m++] = h_uCond[j]; + buf[m++] = h_uMech[j]; + buf[m++] = h_uChem[j]; + } + } 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++] = h_x(j,0) + dx; + buf[m++] = h_x(j,1) + dy; + buf[m++] = h_x(j,2) + dz; + if (mask[i] & deform_groupbit) { + buf[m++] = h_v(j,0) + dvx; + buf[m++] = h_v(j,1) + dvy; + buf[m++] = h_v(j,2) + dvz; + } else { + buf[m++] = h_v(j,0); + buf[m++] = h_v(j,1); + buf[m++] = h_v(j,2); + } + buf[m++] = h_dpdTheta(j); + buf[m++] = h_uCond(j); + buf[m++] = h_uMech(j); + buf[m++] = h_uChem(j); + } + } + } + return m; +} + +/* ---------------------------------------------------------------------- */ + +void AtomVecDPDKokkos::unpack_comm(int n, int first, double *buf) +{ + int i,m,last; + + m = 0; + last = first + n; + for (i = first; i < last; i++) { + h_x(i,0) = buf[m++]; + h_x(i,1) = buf[m++]; + h_x(i,2) = buf[m++]; + h_dpdTheta[i] = buf[m++]; + h_uCond[i] = buf[m++]; + h_uMech[i] = buf[m++]; + h_uChem[i] = buf[m++]; + } + + modified(Host,X_MASK|DPDTHETA_MASK|UCOND_MASK|UMECH_MASK|UCHEM_MASK); +} + +/* ---------------------------------------------------------------------- */ + +void AtomVecDPDKokkos::unpack_comm_vel(int n, int first, double *buf) +{ + int i,m,last; + + m = 0; + last = first + n; + for (i = first; i < last; i++) { + h_x(i,0) = buf[m++]; + h_x(i,1) = buf[m++]; + h_x(i,2) = buf[m++]; + h_v(i,0) = buf[m++]; + h_v(i,1) = buf[m++]; + h_v(i,2) = buf[m++]; + h_dpdTheta[i] = buf[m++]; + h_uCond[i] = buf[m++]; + h_uMech[i] = buf[m++]; + h_uChem[i] = buf[m++]; + } + + modified(Host,X_MASK|V_MASK|DPDTHETA_MASK|UCOND_MASK|UMECH_MASK|UCHEM_MASK); +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecDPDKokkos::pack_reverse(int n, int first, double *buf) +{ + if(n > 0) + sync(Host,F_MASK); + + int m = 0; + const int last = first + n; + for (int i = first; i < last; i++) { + buf[m++] = h_f(i,0); + buf[m++] = h_f(i,1); + buf[m++] = h_f(i,2); + } + return m; +} + +/* ---------------------------------------------------------------------- */ + +void AtomVecDPDKokkos::unpack_reverse(int n, int *list, double *buf) +{ + if(n > 0) { + sync(Host,F_MASK); + modified(Host,F_MASK); + } + + int m = 0; + for (int i = 0; i < n; i++) { + const int j = list[i]; + h_f(j,0) += buf[m++]; + h_f(j,1) += buf[m++]; + h_f(j,2) += buf[m++]; + } +} + +/* ---------------------------------------------------------------------- */ + +template +struct AtomVecDPDKokkos_PackBorder { + typedef DeviceType device_type; + + typename ArrayTypes::t_xfloat_2d _buf; + const typename ArrayTypes::t_int_2d_const _list; + const int _iswap; + const typename ArrayTypes::t_x_array_randomread _x; + const typename ArrayTypes::t_tagint_1d _tag; + const typename ArrayTypes::t_int_1d _type; + const typename ArrayTypes::t_int_1d _mask; + typename ArrayTypes::t_efloat_1d _dpdTheta,_uCond,_uMech,_uChem,_uCG,_uCGnew; + X_FLOAT _dx,_dy,_dz; + + AtomVecDPDKokkos_PackBorder( + const typename ArrayTypes::t_xfloat_2d &buf, + const typename ArrayTypes::t_int_2d_const &list, + const int & iswap, + const typename ArrayTypes::t_x_array &x, + const typename ArrayTypes::t_tagint_1d &tag, + const typename ArrayTypes::t_int_1d &type, + const typename ArrayTypes::t_int_1d &mask, + const typename ArrayTypes::t_efloat_1d &dpdTheta, + const typename ArrayTypes::t_efloat_1d &uCond, + const typename ArrayTypes::t_efloat_1d &uMech, + const typename ArrayTypes::t_efloat_1d &uChem, + const typename ArrayTypes::t_efloat_1d &uCG, + const typename ArrayTypes::t_efloat_1d &uCGnew, + const X_FLOAT &dx, const X_FLOAT &dy, const X_FLOAT &dz): + _buf(buf),_list(list),_iswap(iswap), + _x(x),_tag(tag),_type(type),_mask(mask), + _dpdTheta(dpdTheta), + _uCond(uCond), + _uMech(uMech), + _uChem(uChem), + _uCG(uCGnew), + _uCGnew(uCGnew), + _dx(dx),_dy(dy),_dz(dz) {} + + KOKKOS_INLINE_FUNCTION + void operator() (const int& i) const { + const int j = _list(_iswap,i); + if (PBC_FLAG == 0) { + _buf(i,0) = _x(j,0); + _buf(i,1) = _x(j,1); + _buf(i,2) = _x(j,2); + } else { + _buf(i,0) = _x(j,0) + _dx; + _buf(i,1) = _x(j,1) + _dy; + _buf(i,2) = _x(j,2) + _dz; + } + _buf(i,3) = _tag(j); + _buf(i,4) = _type(j); + _buf(i,5) = _mask(j); + _buf(i,6) = _dpdTheta(j); + _buf(i,7) = _uCond(j); + _buf(i,8) = _uMech(j); + _buf(i,9) = _uChem(j); + _buf(i,10) = _uCG(j); + _buf(i,11) = _uCGnew(j); + } +}; + +/* ---------------------------------------------------------------------- */ + +int AtomVecDPDKokkos::pack_border_kokkos(int n, DAT::tdual_int_2d k_sendlist, DAT::tdual_xfloat_2d buf,int iswap, + int pbc_flag, int *pbc, ExecutionSpace space) +{ + X_FLOAT dx,dy,dz; + + sync(space,ALL_MASK); + + if (pbc_flag != 0) { + 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(space==Host) { + AtomVecDPDKokkos_PackBorder f( + buf.view(), k_sendlist.view(), + iswap,h_x,h_tag,h_type,h_mask, + h_dpdTheta,h_uCond,h_uMech,h_uChem,h_uCG,h_uCGnew, + dx,dy,dz); + Kokkos::parallel_for(n,f); + } else { + AtomVecDPDKokkos_PackBorder f( + buf.view(), k_sendlist.view(), + iswap,d_x,d_tag,d_type,d_mask, + d_dpdTheta,d_uCond,d_uMech,d_uChem,d_uCG,d_uCGnew, + dx,dy,dz); + Kokkos::parallel_for(n,f); + } + + } else { + dx = dy = dz = 0; + if(space==Host) { + AtomVecDPDKokkos_PackBorder f( + buf.view(), k_sendlist.view(), + iswap,h_x,h_tag,h_type,h_mask, + h_dpdTheta,h_uCond,h_uMech,h_uChem,h_uCG,h_uCGnew, + dx,dy,dz); + Kokkos::parallel_for(n,f); + } else { + AtomVecDPDKokkos_PackBorder f( + buf.view(), k_sendlist.view(), + iswap,d_x,d_tag,d_type,d_mask, + d_dpdTheta,d_uCond,d_uMech,d_uChem,d_uCG,d_uCGnew, + dx,dy,dz); + Kokkos::parallel_for(n,f); + } + } + return n*6; +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecDPDKokkos::pack_border(int n, int *list, double *buf, + int pbc_flag, int *pbc) +{ + int i,j,m; + double dx,dy,dz; + + sync(Host,ALL_MASK); + + m = 0; + if (pbc_flag == 0) { + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = h_x(j,0); + buf[m++] = h_x(j,1); + buf[m++] = h_x(j,2); + buf[m++] = ubuf(h_tag(j)).d; + buf[m++] = ubuf(h_type(j)).d; + buf[m++] = ubuf(h_mask(j)).d; + buf[m++] = h_dpdTheta(j); + buf[m++] = h_uCond(j); + buf[m++] = h_uMech(j); + buf[m++] = h_uChem(j); + buf[m++] = h_uCG(j); + buf[m++] = h_uCGnew(j); + } + } else { + if (domain->triclinic == 0) { + dx = pbc[0]*domain->xprd; + dy = pbc[1]*domain->yprd; + dz = pbc[2]*domain->zprd; + } else { + dx = pbc[0]; + dy = pbc[1]; + dz = pbc[2]; + } + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = h_x(j,0) + dx; + buf[m++] = h_x(j,1) + dy; + buf[m++] = h_x(j,2) + dz; + buf[m++] = ubuf(h_tag(j)).d; + buf[m++] = ubuf(h_type(j)).d; + buf[m++] = ubuf(h_mask(j)).d; + buf[m++] = h_dpdTheta(j); + buf[m++] = h_uCond(j); + buf[m++] = h_uMech(j); + buf[m++] = h_uChem(j); + buf[m++] = h_uCG(j); + buf[m++] = h_uCGnew(j); + } + } + + if (atom->nextra_border) + for (int iextra = 0; iextra < atom->nextra_border; iextra++) + m += modify->fix[atom->extra_border[iextra]]->pack_border(n,list,&buf[m]); + + return m; +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecDPDKokkos::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; + + sync(Host,ALL_MASK); + + m = 0; + if (pbc_flag == 0) { + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = h_x(j,0); + buf[m++] = h_x(j,1); + buf[m++] = h_x(j,2); + buf[m++] = ubuf(h_tag(j)).d; + buf[m++] = ubuf(h_type(j)).d; + buf[m++] = ubuf(h_mask(j)).d; + buf[m++] = h_v(j,0); + buf[m++] = h_v(j,1); + buf[m++] = h_v(j,2); + buf[m++] = h_dpdTheta(j); + buf[m++] = h_uCond(j); + buf[m++] = h_uMech(j); + buf[m++] = h_uChem(j); + buf[m++] = h_uCG(j); + buf[m++] = h_uCGnew(j); + } + } else { + if (domain->triclinic == 0) { + dx = pbc[0]*domain->xprd; + dy = pbc[1]*domain->yprd; + dz = pbc[2]*domain->zprd; + } else { + dx = pbc[0]; + dy = pbc[1]; + dz = pbc[2]; + } + if (!deform_vremap) { + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = h_x(j,0) + dx; + buf[m++] = h_x(j,1) + dy; + buf[m++] = h_x(j,2) + dz; + buf[m++] = ubuf(h_tag(j)).d; + buf[m++] = ubuf(h_type(j)).d; + buf[m++] = ubuf(h_mask(j)).d; + buf[m++] = h_v(j,0); + buf[m++] = h_v(j,1); + buf[m++] = h_v(j,2); + buf[m++] = h_dpdTheta(j); + buf[m++] = h_uCond(j); + buf[m++] = h_uMech(j); + buf[m++] = h_uChem(j); + buf[m++] = h_uCG(j); + buf[m++] = h_uCGnew(j); + } + } 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++] = h_x(j,0) + dx; + buf[m++] = h_x(j,1) + dy; + buf[m++] = h_x(j,2) + dz; + buf[m++] = ubuf(h_tag(j)).d; + buf[m++] = ubuf(h_type(j)).d; + buf[m++] = ubuf(h_mask(j)).d; + if (mask[i] & deform_groupbit) { + buf[m++] = h_v(j,0) + dvx; + buf[m++] = h_v(j,1) + dvy; + buf[m++] = h_v(j,2) + dvz; + } else { + buf[m++] = h_v(j,0); + buf[m++] = h_v(j,1); + buf[m++] = h_v(j,2); + } + buf[m++] = h_dpdTheta(j); + buf[m++] = h_uCond(j); + buf[m++] = h_uMech(j); + buf[m++] = h_uChem(j); + buf[m++] = h_uCG(j); + buf[m++] = h_uCGnew(j); + } + } + } + + if (atom->nextra_border) + for (int iextra = 0; iextra < atom->nextra_border; iextra++) + m += modify->fix[atom->extra_border[iextra]]->pack_border(n,list,&buf[m]); + + return m; +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecDPDKokkos::pack_comm_hybrid(int n, int *list, double *buf) +{ + int i,j,m; + + sync(Host,DPDTHETA_MASK | UCOND_MASK | + UMECH_MASK | UCHEM_MASK | UCG_MASK | UCGNEW_MASK); + + m = 0; + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = h_dpdTheta[j]; + buf[m++] = h_uCond[j]; + buf[m++] = h_uMech[j]; + buf[m++] = h_uChem[j]; + } + return m; +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecDPDKokkos::pack_border_hybrid(int n, int *list, double *buf) +{ + int i,j,m; + + sync(Host,DPDTHETA_MASK | UCOND_MASK | + UMECH_MASK | UCHEM_MASK | UCG_MASK | UCGNEW_MASK); + + m = 0; + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = h_dpdTheta[j]; + buf[m++] = h_uCond[j]; + buf[m++] = h_uMech[j]; + buf[m++] = h_uChem[j]; + buf[m++] = h_uCG[j]; + buf[m++] = h_uCGnew[j]; + } + return m; +} + +/* ---------------------------------------------------------------------- */ + +template +struct AtomVecDPDKokkos_UnpackBorder { + typedef DeviceType device_type; + + const typename ArrayTypes::t_xfloat_2d_const _buf; + typename ArrayTypes::t_x_array _x; + typename ArrayTypes::t_tagint_1d _tag; + typename ArrayTypes::t_int_1d _type; + typename ArrayTypes::t_int_1d _mask; + typename ArrayTypes::t_efloat_1d _dpdTheta,_uCond,_uMech,_uChem,_uCG,_uCGnew; + int _first; + + + AtomVecDPDKokkos_UnpackBorder( + const typename ArrayTypes::t_xfloat_2d_const &buf, + typename ArrayTypes::t_x_array &x, + typename ArrayTypes::t_tagint_1d &tag, + typename ArrayTypes::t_int_1d &type, + typename ArrayTypes::t_int_1d &mask, + const typename ArrayTypes::t_efloat_1d &dpdTheta, + const typename ArrayTypes::t_efloat_1d &uCond, + const typename ArrayTypes::t_efloat_1d &uMech, + const typename ArrayTypes::t_efloat_1d &uChem, + const typename ArrayTypes::t_efloat_1d &uCG, + const typename ArrayTypes::t_efloat_1d &uCGnew, + const int& first): + _buf(buf),_x(x),_tag(tag),_type(type),_mask(mask), + _dpdTheta(dpdTheta), + _uCond(uCond), + _uMech(uMech), + _uChem(uChem), + _uCG(uCGnew), + _uCGnew(uCGnew), + _first(first) {}; + + KOKKOS_INLINE_FUNCTION + void operator() (const int& i) const { + _x(i+_first,0) = _buf(i,0); + _x(i+_first,1) = _buf(i,1); + _x(i+_first,2) = _buf(i,2); + _tag(i+_first) = static_cast (_buf(i,3)); + _type(i+_first) = static_cast (_buf(i,4)); + _mask(i+_first) = static_cast (_buf(i,5)); + _dpdTheta(i+_first) = _buf(i,6); + _uCond(i+_first) = _buf(i,7); + _uMech(i+_first) = _buf(i,8); + _uChem(i+_first) = _buf(i,9); + _uCG(i+_first) = _buf(i,10); + _uCGnew(i+_first) = _buf(i,11); +// printf("%i %i %lf %lf %lf %i BORDER\n",_tag(i+_first),i+_first,_x(i+_first,0),_x(i+_first,1),_x(i+_first,2),_type(i+_first)); + } +}; + +/* ---------------------------------------------------------------------- */ + +void AtomVecDPDKokkos::unpack_border_kokkos(const int &n, const int &first, + const DAT::tdual_xfloat_2d &buf,ExecutionSpace space) { + modified(space,X_MASK|TAG_MASK|TYPE_MASK|MASK_MASK| + DPDTHETA_MASK|UCOND_MASK|UMECH_MASK|UCHEM_MASK| + UCG_MASK|UCGNEW_MASK); + while (first+n >= nmax) grow(0); + modified(space,X_MASK|TAG_MASK|TYPE_MASK|MASK_MASK| + DPDTHETA_MASK|UCOND_MASK|UMECH_MASK|UCHEM_MASK| + UCG_MASK|UCGNEW_MASK|DVECTOR_MASK); + if(space==Host) { + struct AtomVecDPDKokkos_UnpackBorder f(buf.view(), + h_x,h_tag,h_type,h_mask, + h_dpdTheta,h_uCond,h_uMech,h_uChem,h_uCG,h_uCGnew, + first); + Kokkos::parallel_for(n,f); + } else { + struct AtomVecDPDKokkos_UnpackBorder f(buf.view(), + d_x,d_tag,d_type,d_mask, + d_dpdTheta,d_uCond,d_uMech,d_uChem,d_uCG,d_uCGnew, + first); + Kokkos::parallel_for(n,f); + } +} + +/* ---------------------------------------------------------------------- */ + +void AtomVecDPDKokkos::unpack_border(int n, int first, double *buf) +{ + int i,m,last; + + m = 0; + last = first + n; + for (i = first; i < last; i++) { + if (i == nmax) grow(0); + + h_x(i,0) = buf[m++]; + h_x(i,1) = buf[m++]; + h_x(i,2) = buf[m++]; + h_tag(i) = (tagint) ubuf(buf[m++]).i; + h_type(i) = (int) ubuf(buf[m++]).i; + h_mask(i) = (int) ubuf(buf[m++]).i; + h_dpdTheta(i) = buf[m++]; + h_uCond(i) = buf[m++]; + h_uMech(i) = buf[m++]; + h_uChem(i) = buf[m++]; + h_uCG(i) = buf[m++]; + h_uCGnew(i) = buf[m++]; + } + + if (atom->nextra_border) + for (int iextra = 0; iextra < atom->nextra_border; iextra++) + m += modify->fix[atom->extra_border[iextra]]-> + unpack_border(n,first,&buf[m]); + + modified(Host,X_MASK|TAG_MASK|TYPE_MASK|MASK_MASK| + DPDTHETA_MASK|UCOND_MASK|UMECH_MASK|UCHEM_MASK| + UCG_MASK|UCGNEW_MASK|DVECTOR_MASK); +} + +/* ---------------------------------------------------------------------- */ + +void AtomVecDPDKokkos::unpack_border_vel(int n, int first, double *buf) +{ + int i,m,last; + + m = 0; + last = first + n; + for (i = first; i < last; i++) { + if (i == nmax) grow(0); + + h_x(i,0) = buf[m++]; + h_x(i,1) = buf[m++]; + h_x(i,2) = buf[m++]; + h_tag(i) = (tagint) ubuf(buf[m++]).i; + h_type(i) = (int) ubuf(buf[m++]).i; + h_mask(i) = (int) ubuf(buf[m++]).i; + h_v(i,0) = buf[m++]; + h_v(i,1) = buf[m++]; + h_v(i,2) = buf[m++]; + h_dpdTheta(i) = buf[m++]; + h_uCond(i) = buf[m++]; + h_uMech(i) = buf[m++]; + h_uChem(i) = buf[m++]; + h_uCG(i) = buf[m++]; + h_uCGnew(i) = buf[m++]; + } + + if (atom->nextra_border) + for (int iextra = 0; iextra < atom->nextra_border; iextra++) + m += modify->fix[atom->extra_border[iextra]]-> + unpack_border(n,first,&buf[m]); + + modified(Host,X_MASK|V_MASK|TAG_MASK|TYPE_MASK|MASK_MASK| + DPDTHETA_MASK|UCOND_MASK|UMECH_MASK|UCHEM_MASK| + UCG_MASK|UCGNEW_MASK|DVECTOR_MASK); +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecDPDKokkos::unpack_comm_hybrid(int n, int first, double *buf) +{ + int i,m,last; + + m = 0; + last = first + n; + for (i = first; i < last; i++) { + h_dpdTheta(i) = buf[m++]; + h_uCond(i) = buf[m++]; + h_uMech(i) = buf[m++]; + h_uChem(i) = buf[m++]; + } + + modified(Host,DPDTHETA_MASK | UCOND_MASK | + UMECH_MASK | UCHEM_MASK | UCG_MASK | UCGNEW_MASK); + + return m; +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecDPDKokkos::unpack_border_hybrid(int n, int first, double *buf) +{ + int i,m,last; + + m = 0; + last = first + n; + for (i = first; i < last; i++) { + h_dpdTheta(i) = buf[m++]; + h_uCond(i) = buf[m++]; + h_uMech(i) = buf[m++]; + h_uChem(i) = buf[m++]; + h_uCG(i) = buf[m++]; + h_uCGnew(i) = buf[m++]; + } + + modified(Host,DPDTHETA_MASK | UCOND_MASK | + UMECH_MASK | UCHEM_MASK | UCG_MASK | UCGNEW_MASK); + + return m; +} + +/* ---------------------------------------------------------------------- */ + +template +struct AtomVecDPDKokkos_PackExchangeFunctor { + typedef DeviceType device_type; + typedef ArrayTypes AT; + typename AT::t_x_array_randomread _x; + typename AT::t_v_array_randomread _v; + typename AT::t_tagint_1d_randomread _tag; + typename AT::t_int_1d_randomread _type; + typename AT::t_int_1d_randomread _mask; + typename AT::t_imageint_1d_randomread _image; + typename AT::t_efloat_1d_randomread _dpdTheta,_uCond,_uMech,_uChem,_uCG,_uCGnew; + typename AT::t_x_array _xw; + typename AT::t_v_array _vw; + typename AT::t_tagint_1d _tagw; + typename AT::t_int_1d _typew; + typename AT::t_int_1d _maskw; + typename AT::t_imageint_1d _imagew; + typename AT::t_efloat_1d _dpdThetaw,_uCondw,_uMechw,_uChemw,_uCGw,_uCGneww; + + typename AT::t_xfloat_2d_um _buf; + typename AT::t_int_1d_const _sendlist; + typename AT::t_int_1d_const _copylist; + int _nlocal,_dim; + X_FLOAT _lo,_hi; + + AtomVecDPDKokkos_PackExchangeFunctor( + const AtomKokkos* atom, + const typename AT::tdual_xfloat_2d buf, + typename AT::tdual_int_1d sendlist, + typename AT::tdual_int_1d copylist,int nlocal, int dim, + X_FLOAT lo, X_FLOAT hi): + _x(atom->k_x.view()), + _v(atom->k_v.view()), + _tag(atom->k_tag.view()), + _type(atom->k_type.view()), + _mask(atom->k_mask.view()), + _image(atom->k_image.view()), + _dpdTheta(atom->k_dpdTheta.view()), + _uCond(atom->k_uCond.view()), + _uMech(atom->k_uMech.view()), + _uChem(atom->k_uChem.view()), + _uCG(atom->k_uCG.view()), + _uCGnew(atom->k_uCGnew.view()), + _xw(atom->k_x.view()), + _vw(atom->k_v.view()), + _tagw(atom->k_tag.view()), + _typew(atom->k_type.view()), + _maskw(atom->k_mask.view()), + _imagew(atom->k_image.view()), + _dpdThetaw(atom->k_dpdTheta.view()), + _uCondw(atom->k_uCond.view()), + _uMechw(atom->k_uMech.view()), + _uChemw(atom->k_uChem.view()), + _uCGw(atom->k_uCG.view()), + _uCGneww(atom->k_uCGnew.view()), + _sendlist(sendlist.template view()), + _copylist(copylist.template view()), + _nlocal(nlocal),_dim(dim), + _lo(lo),_hi(hi){ + const size_t elements = 17; + const int maxsendlist = (buf.template view().dimension_0()*buf.template view().dimension_1())/elements; + + buffer_view(_buf,buf,maxsendlist,elements); + } + + KOKKOS_INLINE_FUNCTION + void operator() (const int &mysend) const { + const int i = _sendlist(mysend); + _buf(mysend,0) = 17; + _buf(mysend,1) = _x(i,0); + _buf(mysend,2) = _x(i,1); + _buf(mysend,3) = _x(i,2); + _buf(mysend,4) = _v(i,0); + _buf(mysend,5) = _v(i,1); + _buf(mysend,6) = _v(i,2); + _buf(mysend,7) = _tag[i]; + _buf(mysend,8) = _type[i]; + _buf(mysend,9) = _mask[i]; + _buf(mysend,10) = _image[i]; + _buf(mysend,11) = _dpdTheta[i]; + _buf(mysend,12) = _uCond[i]; + _buf(mysend,13) = _uMech[i]; + _buf(mysend,14) = _uChem[i]; + _buf(mysend,15) = _uCG[i]; + _buf(mysend,16) = _uCGnew[i]; + const int j = _copylist(mysend); + + if(j>-1) { + _xw(i,0) = _x(j,0); + _xw(i,1) = _x(j,1); + _xw(i,2) = _x(j,2); + _vw(i,0) = _v(j,0); + _vw(i,1) = _v(j,1); + _vw(i,2) = _v(j,2); + _tagw[i] = _tag(j); + _typew[i] = _type(j); + _maskw[i] = _mask(j); + _imagew[i] = _image(j); + _dpdThetaw[i] = _dpdTheta(j); + _uCondw[i] = _uCond(j); + _uMechw[i] = _uMech(j); + _uChemw[i] = _uChem(j); + _uCGw[i] = _uCG(j); + _uCGneww[i] = _uCGnew(j); + } + } +}; + +/* ---------------------------------------------------------------------- */ + +int AtomVecDPDKokkos::pack_exchange_kokkos(const int &nsend,DAT::tdual_xfloat_2d &k_buf, DAT::tdual_int_1d k_sendlist,DAT::tdual_int_1d k_copylist,ExecutionSpace space,int dim,X_FLOAT lo,X_FLOAT hi ) +{ + if(nsend > (int) (k_buf.view().dimension_0()*k_buf.view().dimension_1())/17) { + int newsize = nsend*17/k_buf.view().dimension_1()+1; + k_buf.resize(newsize,k_buf.view().dimension_1()); + } + sync(space,X_MASK | V_MASK | TAG_MASK | TYPE_MASK | + MASK_MASK | IMAGE_MASK| DPDTHETA_MASK | UCOND_MASK | + UMECH_MASK | UCHEM_MASK | UCG_MASK | UCGNEW_MASK | + DVECTOR_MASK); + if(space == Host) { + AtomVecDPDKokkos_PackExchangeFunctor f(atomKK,k_buf,k_sendlist,k_copylist,atom->nlocal,dim,lo,hi); + Kokkos::parallel_for(nsend,f); + } else { + AtomVecDPDKokkos_PackExchangeFunctor f(atomKK,k_buf,k_sendlist,k_copylist,atom->nlocal,dim,lo,hi); + Kokkos::parallel_for(nsend,f); + } + return nsend*17; +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecDPDKokkos::pack_exchange(int i, double *buf) +{ + sync(Host,X_MASK | V_MASK | TAG_MASK | TYPE_MASK | + MASK_MASK | IMAGE_MASK| DPDTHETA_MASK | UCOND_MASK | + UMECH_MASK | UCHEM_MASK | UCG_MASK | UCGNEW_MASK | + DVECTOR_MASK); + + int m = 1; + buf[m++] = h_x(i,0); + buf[m++] = h_x(i,1); + buf[m++] = h_x(i,2); + buf[m++] = h_v(i,0); + buf[m++] = h_v(i,1); + buf[m++] = h_v(i,2); + buf[m++] = ubuf(h_tag(i)).d; + buf[m++] = ubuf(h_type(i)).d; + buf[m++] = ubuf(h_mask(i)).d; + buf[m++] = ubuf(h_image(i)).d; + buf[m++] = h_dpdTheta[i]; + buf[m++] = h_uCond[i]; + buf[m++] = h_uMech[i]; + buf[m++] = h_uChem[i]; + buf[m++] = h_uCG[i]; + buf[m++] = h_uCGnew[i]; + + 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; +} + +/* ---------------------------------------------------------------------- */ + +template +struct AtomVecDPDKokkos_UnpackExchangeFunctor { + typedef DeviceType device_type; + typedef ArrayTypes AT; + typename AT::t_x_array _x; + typename AT::t_v_array _v; + typename AT::t_tagint_1d _tag; + typename AT::t_int_1d _type; + typename AT::t_int_1d _mask; + typename AT::t_imageint_1d _image; + typename AT::t_efloat_1d _dpdTheta; + typename AT::t_efloat_1d _uCond; + typename AT::t_efloat_1d _uMech; + typename AT::t_efloat_1d _uChem; + typename AT::t_efloat_1d _uCG; + typename AT::t_efloat_1d _uCGnew; + + typename AT::t_xfloat_2d_um _buf; + typename AT::t_int_1d _nlocal; + int _dim; + X_FLOAT _lo,_hi; + + AtomVecDPDKokkos_UnpackExchangeFunctor( + const AtomKokkos* atom, + const typename AT::tdual_xfloat_2d buf, + typename AT::tdual_int_1d nlocal, + int dim, X_FLOAT lo, X_FLOAT hi): + _x(atom->k_x.view()), + _v(atom->k_v.view()), + _tag(atom->k_tag.view()), + _type(atom->k_type.view()), + _mask(atom->k_mask.view()), + _image(atom->k_image.view()), + _nlocal(nlocal.template view()),_dim(dim), + _lo(lo),_hi(hi){ + const size_t elements = 17; + const int maxsendlist = (buf.template view().dimension_0()*buf.template view().dimension_1())/elements; + + buffer_view(_buf,buf,maxsendlist,elements); + } + + KOKKOS_INLINE_FUNCTION + void operator() (const int &myrecv) const { + X_FLOAT x = _buf(myrecv,_dim+1); + if (x >= _lo && x < _hi) { + int i = Kokkos::atomic_fetch_add(&_nlocal(0),1); + _x(i,0) = _buf(myrecv,1); + _x(i,1) = _buf(myrecv,2); + _x(i,2) = _buf(myrecv,3); + _v(i,0) = _buf(myrecv,4); + _v(i,1) = _buf(myrecv,5); + _v(i,2) = _buf(myrecv,6); + _tag[i] = _buf(myrecv,7); + _type[i] = _buf(myrecv,8); + _mask[i] = _buf(myrecv,9); + _image[i] = _buf(myrecv,10); + _dpdTheta[i] = _buf(myrecv,11); + _uCond[i] = _buf(myrecv,12); + _uMech[i] = _buf(myrecv,13); + _uChem[i] = _buf(myrecv,14); + _uCG[i] = _buf(myrecv,15); + _uCGnew[i] = _buf(myrecv,16); + } + } +}; + +/* ---------------------------------------------------------------------- */ + +int AtomVecDPDKokkos::unpack_exchange_kokkos(DAT::tdual_xfloat_2d &k_buf,int nrecv,int nlocal,int dim,X_FLOAT lo,X_FLOAT hi,ExecutionSpace space) { + if(space == Host) { + k_count.h_view(0) = nlocal; + AtomVecDPDKokkos_UnpackExchangeFunctor f(atomKK,k_buf,k_count,dim,lo,hi); + Kokkos::parallel_for(nrecv/17,f); + } else { + k_count.h_view(0) = nlocal; + k_count.modify(); + k_count.sync(); + AtomVecDPDKokkos_UnpackExchangeFunctor f(atomKK,k_buf,k_count,dim,lo,hi); + Kokkos::parallel_for(nrecv/17,f); + k_count.modify(); + k_count.sync(); + } + + modified(space,X_MASK | V_MASK | TAG_MASK | TYPE_MASK | + MASK_MASK | IMAGE_MASK| DPDTHETA_MASK | UCOND_MASK | + UMECH_MASK | UCHEM_MASK | UCG_MASK | UCGNEW_MASK | + DVECTOR_MASK); + + return k_count.h_view(0); +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecDPDKokkos::unpack_exchange(double *buf) +{ + int nlocal = atom->nlocal; + if (nlocal == nmax) grow(0); + + int m = 1; + h_x(nlocal,0) = buf[m++]; + h_x(nlocal,1) = buf[m++]; + h_x(nlocal,2) = buf[m++]; + h_v(nlocal,0) = buf[m++]; + h_v(nlocal,1) = buf[m++]; + h_v(nlocal,2) = buf[m++]; + h_tag(nlocal) = (tagint) ubuf(buf[m++]).i; + h_type(nlocal) = (int) ubuf(buf[m++]).i; + h_mask(nlocal) = (int) ubuf(buf[m++]).i; + h_image(nlocal) = (imageint) ubuf(buf[m++]).i; + h_dpdTheta[nlocal] = buf[m++]; + h_uCond[nlocal] = buf[m++]; + h_uMech[nlocal] = buf[m++]; + h_uChem[nlocal] = buf[m++]; + h_uCG[nlocal] = buf[m++]; + h_uCGnew[nlocal] = 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]); + + modified(Host,X_MASK | V_MASK | TAG_MASK | TYPE_MASK | + MASK_MASK | IMAGE_MASK| DPDTHETA_MASK | UCOND_MASK | + UMECH_MASK | UCHEM_MASK | UCG_MASK | UCGNEW_MASK | + DVECTOR_MASK); + + atom->nlocal++; + return m; +} + +/* ---------------------------------------------------------------------- + size of restart data for all atoms owned by this proc + include extra data stored by fixes +------------------------------------------------------------------------- */ + +int AtomVecDPDKokkos::size_restart() +{ + int i; + + int nlocal = atom->nlocal; + int n = 15 * nlocal; // 11 + dpdTheta + uCond + uMech + uChem + + 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 AtomVecDPDKokkos::pack_restart(int i, double *buf) +{ + sync(Host,X_MASK | V_MASK | TAG_MASK | TYPE_MASK | + MASK_MASK | IMAGE_MASK | DPDTHETA_MASK | + UCOND_MASK | UMECH_MASK | UCHEM_MASK | DVECTOR_MASK); + + int m = 1; + buf[m++] = h_x(i,0); + buf[m++] = h_x(i,1); + buf[m++] = h_x(i,2); + buf[m++] = ubuf(h_tag(i)).d; + buf[m++] = ubuf(h_type(i)).d; + buf[m++] = ubuf(h_mask(i)).d; + buf[m++] = ubuf(h_image(i)).d; + buf[m++] = h_v(i,0); + buf[m++] = h_v(i,1); + buf[m++] = h_v(i,2); + buf[m++] = h_dpdTheta[i]; + buf[m++] = h_uCond[i]; + buf[m++] = h_uMech[i]; + buf[m++] = h_uChem[i]; + + 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 AtomVecDPDKokkos::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; + h_x(nlocal,0) = buf[m++]; + h_x(nlocal,1) = buf[m++]; + h_x(nlocal,2) = buf[m++]; + h_tag(nlocal) = (tagint) ubuf(buf[m++]).i; + h_type(nlocal) = (int) ubuf(buf[m++]).i; + h_mask(nlocal) = (int) ubuf(buf[m++]).i; + h_image(nlocal) = (imageint) ubuf(buf[m++]).i; + h_v(nlocal,0) = buf[m++]; + h_v(nlocal,1) = buf[m++]; + h_v(nlocal,2) = buf[m++]; + h_dpdTheta[nlocal] = buf[m++]; + h_uCond[nlocal] = buf[m++]; + h_uMech[nlocal] = buf[m++]; + h_uChem[nlocal] = 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++]; + } + + modified(Host,X_MASK | V_MASK | TAG_MASK | TYPE_MASK | + MASK_MASK | IMAGE_MASK | DPDTHETA_MASK | + UCOND_MASK | UMECH_MASK | UCHEM_MASK | DVECTOR_MASK); + + atom->nlocal++; + return m; +} + +/* ---------------------------------------------------------------------- + create one atom of itype at coord + set other values to defaults +------------------------------------------------------------------------- */ + +void AtomVecDPDKokkos::create_atom(int itype, double *coord) +{ + int nlocal = atom->nlocal; + if (nlocal == nmax) { + //if(nlocal>2) printf("typeA: %i %i\n",type[0],type[1]); + atomKK->modified(Host,ALL_MASK); + grow(0); + //if(nlocal>2) printf("typeB: %i %i\n",type[0],type[1]); + } + atomKK->modified(Host,ALL_MASK); + + tag[nlocal] = 0; + type[nlocal] = itype; + h_x(nlocal,0) = coord[0]; + h_x(nlocal,1) = coord[1]; + h_x(nlocal,2) = coord[2]; + h_mask[nlocal] = 1; + h_image[nlocal] = ((tagint) IMGMAX << IMG2BITS) | + ((tagint) IMGMAX << IMGBITS) | IMGMAX; + h_v(nlocal,0) = 0.0; + h_v(nlocal,1) = 0.0; + h_v(nlocal,2) = 0.0; + h_rho[nlocal] = 0.0; + h_dpdTheta[nlocal] = 0.0; + h_uCond[nlocal] = 0.0; + h_uMech[nlocal] = 0.0; + h_uChem[nlocal] = 0.0; + h_uCG[nlocal] = 0.0; + h_uCGnew[nlocal] = 0.0; + h_duChem[nlocal] = 0.0; + + //atomKK->modified(Host,TAG_MASK|TYPE_MASK|DPDTHETA_MASK|X_MASK|IMAGE_MASK| + // MASK_MASK|V_MASK|DPDRHO_MASK|UCOND_MASK|UMECH_MASK| + // UCHEM_MASK|UCG_MASK|UCGNEW_MASK); + + atom->nlocal++; +} + +/* ---------------------------------------------------------------------- + unpack one line from Atoms section of data file + initialize other atom quantities +------------------------------------------------------------------------- */ + +void AtomVecDPDKokkos::data_atom(double *coord, tagint imagetmp, + char **values) +{ + int nlocal = atom->nlocal; + if (nlocal == nmax) grow(0); + + h_tag[nlocal] = ATOTAGINT(values[0]); + h_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"); + + h_dpdTheta[nlocal] = atof(values[2]); + if (h_dpdTheta[nlocal] <= 0) + error->one(FLERR,"Internal temperature in Atoms section of date file must be > zero"); + + h_x(nlocal,0) = coord[0]; + h_x(nlocal,1) = coord[1]; + h_x(nlocal,2) = coord[2]; + + h_image[nlocal] = imagetmp; + + h_mask[nlocal] = 1; + h_v(nlocal,0) = 0.0; + h_v(nlocal,1) = 0.0; + h_v(nlocal,2) = 0.0; + + h_rho[nlocal] = 0.0; + h_uCond[nlocal] = 0.0; + h_uMech[nlocal] = 0.0; + h_uChem[nlocal] = 0.0; + h_uCG[nlocal] = 0.0; + h_uCGnew[nlocal] = 0.0; + + atomKK->modified(Host,ALL_MASK); + + atom->nlocal++; +} + +/* ---------------------------------------------------------------------- + unpack hybrid quantities from one line in Atoms section of data file + initialize other atom quantities for this sub-style +------------------------------------------------------------------------- */ + +int AtomVecDPDKokkos::data_atom_hybrid(int nlocal, char **values) +{ + h_dpdTheta(nlocal) = atof(values[0]); + + atomKK->modified(Host,DPDTHETA_MASK); + + return 1; +} + +/* ---------------------------------------------------------------------- + pack atom info for data file including 3 image flags +------------------------------------------------------------------------- */ + +void AtomVecDPDKokkos::pack_data(double **buf) +{ + atomKK->sync(Host,TAG_MASK|TYPE_MASK|DPDTHETA_MASK|X_MASK|IMAGE_MASK); + + int nlocal = atom->nlocal; + for (int i = 0; i < nlocal; i++) { + buf[i][0] = ubuf(h_tag(i)).d; + buf[i][1] = ubuf(h_type(i)).d; + buf[i][2] = h_dpdTheta(i); + buf[i][3] = h_x(i,0); + buf[i][4] = h_x(i,1); + buf[i][5] = h_x(i,2); + buf[i][6] = (h_image[i] & IMGMASK) - IMGMAX; + buf[i][7] = (h_image[i] >> IMGBITS & IMGMASK) - IMGMAX; + buf[i][8] = (h_image[i] >> IMG2BITS) - IMGMAX; + } +} + +/* ---------------------------------------------------------------------- + pack hybrid atom info for data file +------------------------------------------------------------------------- */ + +int AtomVecDPDKokkos::pack_data_hybrid(int i, double *buf) +{ + atomKK->sync(Host,DPDTHETA_MASK); + + buf[0] = h_dpdTheta(i); + return 1; +} + +/* ---------------------------------------------------------------------- + write atom info to data file including 3 image flags +------------------------------------------------------------------------- */ + +void AtomVecDPDKokkos::write_data(FILE *fp, int n, double **buf) +{ + for (int i = 0; i < n; i++) + fprintf(fp,TAGINT_FORMAT " %d %-1.16e %-1.16e %-1.16e %-1.16e %d %d %d\n", + (tagint) ubuf(buf[i][0]).i,(int) ubuf(buf[i][1]).i, + buf[i][2],buf[i][3],buf[i][4],buf[i][5], + (int) ubuf(buf[i][6]).i,(int) ubuf(buf[i][7]).i, + (int) ubuf(buf[i][8]).i); +} + +/* ---------------------------------------------------------------------- + write hybrid atom info to data file +------------------------------------------------------------------------- */ + +int AtomVecDPDKokkos::write_data_hybrid(FILE *fp, double *buf) +{ + fprintf(fp," %-1.16e",buf[0]); + return 1; +} + +/* ---------------------------------------------------------------------- + return # of bytes of allocated memory +------------------------------------------------------------------------- */ + +bigint AtomVecDPDKokkos::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*commKK->nthreads,3); + if (atom->memcheck("rho")) bytes += memory->usage(rho,nmax); + if (atom->memcheck("dpdTheta")) bytes += memory->usage(dpdTheta,nmax); + if (atom->memcheck("uCond")) bytes += memory->usage(uCond,nmax); + if (atom->memcheck("uMech")) bytes += memory->usage(uMech,nmax); + if (atom->memcheck("uChem")) bytes += memory->usage(uChem,nmax); + if (atom->memcheck("uCG")) bytes += memory->usage(uCG,nmax); + if (atom->memcheck("uCGnew")) bytes += memory->usage(uCGnew,nmax); + if (atom->memcheck("duChem")) bytes += memory->usage(duChem,nmax); + + return bytes; +} + +/* ---------------------------------------------------------------------- */ + +void AtomVecDPDKokkos::sync(ExecutionSpace space, unsigned int mask) +{ + if (space == Device) { + if (mask & X_MASK) atomKK->k_x.sync(); + if (mask & V_MASK) atomKK->k_v.sync(); + if (mask & F_MASK) atomKK->k_f.sync(); + if (mask & TAG_MASK) atomKK->k_tag.sync(); + if (mask & TYPE_MASK) atomKK->k_type.sync(); + if (mask & MASK_MASK) atomKK->k_mask.sync(); + if (mask & IMAGE_MASK) atomKK->k_image.sync(); + if (mask & DPDRHO_MASK) atomKK->k_rho.sync(); + if (mask & DPDTHETA_MASK) atomKK->k_dpdTheta.sync(); + if (mask & UCOND_MASK) atomKK->k_uCond.sync(); + if (mask & UMECH_MASK) atomKK->k_uMech.sync(); + if (mask & UCHEM_MASK) atomKK->k_uChem.sync(); + if (mask & UCG_MASK) atomKK->k_uCG.sync(); + if (mask & UCGNEW_MASK) atomKK->k_uCGnew.sync(); + if (mask & DUCHEM_MASK) atomKK->k_duChem.sync(); + if (mask & DVECTOR_MASK) atomKK->k_dvector.sync(); + } else { + if (mask & X_MASK) atomKK->k_x.sync(); + if (mask & V_MASK) atomKK->k_v.sync(); + if (mask & F_MASK) atomKK->k_f.sync(); + if (mask & TAG_MASK) atomKK->k_tag.sync(); + if (mask & TYPE_MASK) atomKK->k_type.sync(); + if (mask & MASK_MASK) atomKK->k_mask.sync(); + if (mask & IMAGE_MASK) atomKK->k_image.sync(); + if (mask & DPDRHO_MASK) atomKK->k_rho.sync(); + if (mask & DPDTHETA_MASK) atomKK->k_dpdTheta.sync(); + if (mask & UCOND_MASK) atomKK->k_uCond.sync(); + if (mask & UMECH_MASK) atomKK->k_uMech.sync(); + if (mask & UCHEM_MASK) atomKK->k_uChem.sync(); + if (mask & UCG_MASK) atomKK->k_uCG.sync(); + if (mask & UCGNEW_MASK) atomKK->k_uCGnew.sync(); + if (mask & DUCHEM_MASK) atomKK->k_duChem.sync(); + if (mask & DVECTOR_MASK) atomKK->k_dvector.sync(); + } +} + +/* ---------------------------------------------------------------------- */ + +void AtomVecDPDKokkos::sync_overlapping_device(ExecutionSpace space, unsigned int mask) +{ + if (space == Device) { + if ((mask & X_MASK) && atomKK->k_x.need_sync()) + perform_async_copy(atomKK->k_x,space); + if ((mask & V_MASK) && atomKK->k_v.need_sync()) + perform_async_copy(atomKK->k_v,space); + if ((mask & F_MASK) && atomKK->k_f.need_sync()) + perform_async_copy(atomKK->k_f,space); + if ((mask & TAG_MASK) && atomKK->k_tag.need_sync()) + perform_async_copy(atomKK->k_tag,space); + if ((mask & TYPE_MASK) && atomKK->k_type.need_sync()) + perform_async_copy(atomKK->k_type,space); + if ((mask & MASK_MASK) && atomKK->k_mask.need_sync()) + perform_async_copy(atomKK->k_mask,space); + if ((mask & IMAGE_MASK) && atomKK->k_image.need_sync()) + perform_async_copy(atomKK->k_image,space); + if ((mask & DPDRHO_MASK) && atomKK->k_rho.need_sync()) + perform_async_copy(atomKK->k_rho,space); + if ((mask & DPDTHETA_MASK) && atomKK->k_dpdTheta.need_sync()) + perform_async_copy(atomKK->k_dpdTheta,space); + if ((mask & UCOND_MASK) && atomKK->k_uCond.need_sync()) + perform_async_copy(atomKK->k_uCond,space); + if ((mask & UMECH_MASK) && atomKK->k_uMech.need_sync()) + perform_async_copy(atomKK->k_uMech,space); + if ((mask & UCHEM_MASK) && atomKK->k_uChem.need_sync()) + perform_async_copy(atomKK->k_uChem,space); + if ((mask & UCG_MASK) && atomKK->k_uCG.need_sync()) + perform_async_copy(atomKK->k_uCG,space); + if ((mask & UCGNEW_MASK) && atomKK->k_uCGnew.need_sync()) + perform_async_copy(atomKK->k_uCGnew,space); + if ((mask & DUCHEM_MASK) && atomKK->k_duChem.need_sync()) + perform_async_copy(atomKK->k_duChem,space); + if ((mask & DVECTOR_MASK) && atomKK->k_dvector.need_sync()) + perform_async_copy(atomKK->k_dvector,space); + } else { + if ((mask & X_MASK) && atomKK->k_x.need_sync()) + perform_async_copy(atomKK->k_x,space); + if ((mask & V_MASK) && atomKK->k_v.need_sync()) + perform_async_copy(atomKK->k_v,space); + if ((mask & F_MASK) && atomKK->k_f.need_sync()) + perform_async_copy(atomKK->k_f,space); + if ((mask & TAG_MASK) && atomKK->k_tag.need_sync()) + perform_async_copy(atomKK->k_tag,space); + if ((mask & TYPE_MASK) && atomKK->k_type.need_sync()) + perform_async_copy(atomKK->k_type,space); + if ((mask & MASK_MASK) && atomKK->k_mask.need_sync()) + perform_async_copy(atomKK->k_mask,space); + if ((mask & IMAGE_MASK) && atomKK->k_image.need_sync()) + perform_async_copy(atomKK->k_image,space); + if ((mask & DPDRHO_MASK) && atomKK->k_rho.need_sync()) + perform_async_copy(atomKK->k_rho,space); + if ((mask & DPDTHETA_MASK) && atomKK->k_dpdTheta.need_sync()) + perform_async_copy(atomKK->k_dpdTheta,space); + if ((mask & UCOND_MASK) && atomKK->k_uCond.need_sync()) + perform_async_copy(atomKK->k_uCond,space); + if ((mask & UMECH_MASK) && atomKK->k_uMech.need_sync()) + perform_async_copy(atomKK->k_uMech,space); + if ((mask & UCHEM_MASK) && atomKK->k_uChem.need_sync()) + perform_async_copy(atomKK->k_uChem,space); + if ((mask & UCG_MASK) && atomKK->k_uCG.need_sync()) + perform_async_copy(atomKK->k_uCG,space); + if ((mask & UCGNEW_MASK) && atomKK->k_uCGnew.need_sync()) + perform_async_copy(atomKK->k_uCGnew,space); + if ((mask & DUCHEM_MASK) && atomKK->k_duChem.need_sync()) + perform_async_copy(atomKK->k_duChem,space); + if ((mask & DVECTOR_MASK) && atomKK->k_dvector.need_sync()) + perform_async_copy(atomKK->k_dvector,space); + } +} + +/* ---------------------------------------------------------------------- */ + +void AtomVecDPDKokkos::modified(ExecutionSpace space, unsigned int mask) +{ + if (space == Device) { + if (mask & X_MASK) atomKK->k_x.modify(); + if (mask & V_MASK) atomKK->k_v.modify(); + if (mask & F_MASK) atomKK->k_f.modify(); + if (mask & TAG_MASK) atomKK->k_tag.modify(); + if (mask & TYPE_MASK) atomKK->k_type.modify(); + if (mask & MASK_MASK) atomKK->k_mask.modify(); + if (mask & IMAGE_MASK) atomKK->k_image.modify(); + if (mask & DPDRHO_MASK) atomKK->k_rho.modify(); + if (mask & DPDTHETA_MASK) atomKK->k_dpdTheta.modify(); + if (mask & UCOND_MASK) atomKK->k_uCond.modify(); + if (mask & UMECH_MASK) atomKK->k_uMech.modify(); + if (mask & UCHEM_MASK) atomKK->k_uChem.modify(); + if (mask & UCG_MASK) atomKK->k_uCG.modify(); + if (mask & UCGNEW_MASK) atomKK->k_uCGnew.modify(); + if (mask & DUCHEM_MASK) atomKK->k_duChem.modify(); + if (mask & DVECTOR_MASK) atomKK->k_dvector.modify(); + } else { + if (mask & X_MASK) atomKK->k_x.modify(); + if (mask & V_MASK) atomKK->k_v.modify(); + if (mask & F_MASK) atomKK->k_f.modify(); + if (mask & TAG_MASK) atomKK->k_tag.modify(); + if (mask & TYPE_MASK) atomKK->k_type.modify(); + if (mask & MASK_MASK) atomKK->k_mask.modify(); + if (mask & IMAGE_MASK) atomKK->k_image.modify(); + if (mask & DPDRHO_MASK) atomKK->k_rho.modify(); + if (mask & DPDTHETA_MASK) atomKK->k_dpdTheta.modify(); + if (mask & UCOND_MASK) atomKK->k_uCond.modify(); + if (mask & UMECH_MASK) atomKK->k_uMech.modify(); + if (mask & UCHEM_MASK) atomKK->k_uChem.modify(); + if (mask & UCG_MASK) atomKK->k_uCG.modify(); + if (mask & UCGNEW_MASK) atomKK->k_uCGnew.modify(); + if (mask & DUCHEM_MASK) atomKK->k_duChem.modify(); + if (mask & DVECTOR_MASK) atomKK->k_dvector.modify(); + } +} + diff --git a/src/KOKKOS/atom_vec_dpd_kokkos.h b/src/KOKKOS/atom_vec_dpd_kokkos.h new file mode 100644 index 0000000000000000000000000000000000000000..372404cc7d9f239e8b23516f091a67011e7e59bd --- /dev/null +++ b/src/KOKKOS/atom_vec_dpd_kokkos.h @@ -0,0 +1,137 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale AtomicKokkos/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(dpd/kk,AtomVecDPDKokkos) +AtomStyle(dpd/kk/device,AtomVecDPDKokkos) +AtomStyle(dpd/kk/host,AtomVecDPDKokkos) + +#else + +#ifndef LMP_ATOM_VEC_DPD_KOKKOS_H +#define LMP_ATOM_VEC_DPD_KOKKOS_H + +#include "atom_vec_kokkos.h" +#include "kokkos_type.h" + +namespace LAMMPS_NS { + +class AtomVecDPDKokkos : public AtomVecKokkos { + public: + AtomVecDPDKokkos(class LAMMPS *); + virtual ~AtomVecDPDKokkos() {} + void grow(int); + void copy(int, int, int); + int pack_comm(int, int *, double *, int, int *); + int pack_comm_vel(int, int *, double *, int, int *); + int pack_comm_hybrid(int, int *, double *); + void unpack_comm(int, int, double *); + void unpack_comm_vel(int, int, double *); + int unpack_comm_hybrid(int, int, double *); + int pack_reverse(int, int, double *); + void unpack_reverse(int, int *, double *); + int pack_border(int, int *, double *, int, int *); + int pack_border_vel(int, int *, double *, int, int *); + int pack_border_hybrid(int, int *, double *); + void unpack_border(int, int, double *); + void unpack_border_vel(int, int, double *); + int unpack_border_hybrid(int, int, double *); + int pack_exchange(int, double *); + int unpack_exchange(double *); + int size_restart(); + int pack_restart(int, double *); + int unpack_restart(double *); + void create_atom(int, double *); + void data_atom(double *, tagint, char **); + int data_atom_hybrid(int, char **); + void pack_data(double **); + int pack_data_hybrid(int, double *); + void write_data(FILE *, int, double **); + int write_data_hybrid(FILE *, double *); + bigint memory_usage(); + + void grow_reset(); + int pack_comm_kokkos(const int &n, const DAT::tdual_int_2d &k_sendlist, + const int & iswap, + const DAT::tdual_xfloat_2d &buf, + const int &pbc_flag, const int pbc[]); + void unpack_comm_kokkos(const int &n, const int &nfirst, + const DAT::tdual_xfloat_2d &buf); + int pack_comm_self(const int &n, const DAT::tdual_int_2d &list, + const int & iswap, const int nfirst, + const int &pbc_flag, const int pbc[]); + int pack_border_kokkos(int n, DAT::tdual_int_2d k_sendlist, + DAT::tdual_xfloat_2d buf,int iswap, + int pbc_flag, int *pbc, ExecutionSpace space); + void unpack_border_kokkos(const int &n, const int &nfirst, + const DAT::tdual_xfloat_2d &buf, + ExecutionSpace space); + int pack_exchange_kokkos(const int &nsend,DAT::tdual_xfloat_2d &buf, + DAT::tdual_int_1d k_sendlist, + DAT::tdual_int_1d k_copylist, + ExecutionSpace space, int dim, + X_FLOAT lo, X_FLOAT hi); + int unpack_exchange_kokkos(DAT::tdual_xfloat_2d &k_buf, int nrecv, + int nlocal, int dim, X_FLOAT lo, X_FLOAT hi, + ExecutionSpace space); + + void sync(ExecutionSpace space, unsigned int mask); + void modified(ExecutionSpace space, unsigned int mask); + void sync_overlapping_device(ExecutionSpace space, unsigned int mask); + double *uCond,*uMech,*uChem,*uCG,*uCGnew,*rho,*dpdTheta; + double *duChem; + + protected: + DAT::t_efloat_1d d_uCond, d_uMech, d_uChem, d_uCG, d_uCGnew,d_rho,d_dpdTheta,d_duChem; + HAT::t_efloat_1d h_uCond, h_uMech, h_uChem, h_uCG, h_uCGnew,h_rho,h_dpdTheta,h_duChem; + + tagint *tag; + imageint *image; + int *type,*mask; + double **x,**v,**f; + + DAT::t_tagint_1d d_tag; + HAT::t_tagint_1d h_tag; + DAT::t_imageint_1d d_image; + HAT::t_imageint_1d h_image; + DAT::t_int_1d d_type, d_mask; + HAT::t_int_1d h_type, h_mask; + + DAT::t_x_array d_x; + DAT::t_v_array d_v; + DAT::t_f_array d_f; + HAT::t_x_array h_x; + HAT::t_v_array h_v; + HAT::t_f_array h_f; + + DAT::tdual_int_1d k_count; +}; + +} + +#endif +#endif + +/* ERROR/WARNING messages: + +E: Per-processor system is too big + +The number of owned atoms plus ghost atoms on a single +processor must fit in 32-bit integer. + +E: Invalid atom type in Atoms section of data file + +Atom types must range from 1 to specified # of types. + +*/ diff --git a/src/KOKKOS/atom_vec_full_kokkos.cpp b/src/KOKKOS/atom_vec_full_kokkos.cpp index fa4cf18ae386c4bec29d064b32f8bb359e9fed72..fd7eaf7c81c9c6814b606976fc4f06def58f9339 100644 --- a/src/KOKKOS/atom_vec_full_kokkos.cpp +++ b/src/KOKKOS/atom_vec_full_kokkos.cpp @@ -396,7 +396,6 @@ int AtomVecFullKokkos::pack_comm_kokkos(const int &n, Kokkos::parallel_for(n,f); } } - LMPHostType::fence(); } else { sync(Device,X_MASK); if(pbc_flag) { @@ -424,7 +423,6 @@ int AtomVecFullKokkos::pack_comm_kokkos(const int &n, Kokkos::parallel_for(n,f); } } - LMPDeviceType::fence(); } return n*size_forward; @@ -515,7 +513,6 @@ int AtomVecFullKokkos::pack_comm_self(const int &n, const DAT::tdual_int_2d &lis Kokkos::parallel_for(n,f); } } - LMPHostType::fence(); } else { sync(Device,X_MASK); modified(Device,X_MASK); @@ -544,7 +541,6 @@ int AtomVecFullKokkos::pack_comm_self(const int &n, const DAT::tdual_int_2d &lis Kokkos::parallel_for(n,f); } } - LMPDeviceType::fence(); } return n*3; } @@ -582,13 +578,11 @@ void AtomVecFullKokkos::unpack_comm_kokkos(const int &n, const int &first, modified(Host,X_MASK); struct AtomVecFullKokkos_UnpackComm f(atomKK->k_x,buf,first); Kokkos::parallel_for(n,f); - LMPDeviceType::fence(); } else { sync(Device,X_MASK); modified(Device,X_MASK); struct AtomVecFullKokkos_UnpackComm f(atomKK->k_x,buf,first); Kokkos::parallel_for(n,f); - LMPDeviceType::fence(); } } @@ -838,13 +832,11 @@ int AtomVecFullKokkos::pack_border_kokkos(int n, DAT::tdual_int_2d k_sendlist, buf.view(), k_sendlist.view(), iswap,h_x,h_tag,h_type,h_mask,h_q,h_molecule,dx,dy,dz); Kokkos::parallel_for(n,f); - LMPHostType::fence(); } else { AtomVecFullKokkos_PackBorder f( buf.view(), k_sendlist.view(), iswap,d_x,d_tag,d_type,d_mask,d_q,d_molecule,dx,dy,dz); Kokkos::parallel_for(n,f); - LMPDeviceType::fence(); } } else { @@ -854,13 +846,11 @@ int AtomVecFullKokkos::pack_border_kokkos(int n, DAT::tdual_int_2d k_sendlist, buf.view(), k_sendlist.view(), iswap,h_x,h_tag,h_type,h_mask,h_q,h_molecule,dx,dy,dz); Kokkos::parallel_for(n,f); - LMPHostType::fence(); } else { AtomVecFullKokkos_PackBorder f( buf.view(), k_sendlist.view(), iswap,d_x,d_tag,d_type,d_mask,d_q,d_molecule,dx,dy,dz); Kokkos::parallel_for(n,f); - LMPDeviceType::fence(); } } return n*size_border; @@ -1071,12 +1061,10 @@ void AtomVecFullKokkos::unpack_border_kokkos(const int &n, const int &first, struct AtomVecFullKokkos_UnpackBorder f(buf.view(),h_x,h_tag,h_type,h_mask,h_q,h_molecule,first); Kokkos::parallel_for(n,f); - LMPHostType::fence(); } else { struct AtomVecFullKokkos_UnpackBorder f(buf.view(),d_x,d_tag,d_type,d_mask,d_q,d_molecule,first); Kokkos::parallel_for(n,f); - LMPDeviceType::fence(); } } @@ -1422,13 +1410,11 @@ int AtomVecFullKokkos::pack_exchange_kokkos(const int &nsend,DAT::tdual_xfloat_2 AtomVecFullKokkos_PackExchangeFunctor f(atomKK,k_buf,k_sendlist,k_copylist,atom->nlocal,dim,lo,hi); Kokkos::parallel_for(nsend,f); - LMPHostType::fence(); return nsend*elements; } else { AtomVecFullKokkos_PackExchangeFunctor f(atomKK,k_buf,k_sendlist,k_copylist,atom->nlocal,dim,lo,hi); Kokkos::parallel_for(nsend,f); - LMPDeviceType::fence(); return nsend*elements; } } @@ -1643,7 +1629,6 @@ int AtomVecFullKokkos::unpack_exchange_kokkos(DAT::tdual_xfloat_2d &k_buf,int nr AtomVecFullKokkos_UnpackExchangeFunctor f(atomKK,k_buf,k_count,dim,lo,hi); Kokkos::parallel_for(nrecv/elements,f); - LMPHostType::fence(); return k_count.h_view(0); } else { k_count.h_view(0) = nlocal; @@ -1652,7 +1637,6 @@ int AtomVecFullKokkos::unpack_exchange_kokkos(DAT::tdual_xfloat_2d &k_buf,int nr AtomVecFullKokkos_UnpackExchangeFunctor f(atomKK,k_buf,k_count,dim,lo,hi); Kokkos::parallel_for(nrecv/elements,f); - LMPDeviceType::fence(); k_count.modify(); k_count.sync(); diff --git a/src/KOKKOS/atom_vec_full_kokkos.h b/src/KOKKOS/atom_vec_full_kokkos.h index 841707b33888e081ac9fcebef45dec1734c8ff50..760df087e14105a3330b4a5301a1ddc09f9900af 100644 --- a/src/KOKKOS/atom_vec_full_kokkos.h +++ b/src/KOKKOS/atom_vec_full_kokkos.h @@ -14,6 +14,8 @@ #ifdef ATOM_CLASS AtomStyle(full/kk,AtomVecFullKokkos) +AtomStyle(full/kk/device,AtomVecFullKokkos) +AtomStyle(full/kk/host,AtomVecFullKokkos) #else diff --git a/src/KOKKOS/atom_vec_hybrid_kokkos.cpp b/src/KOKKOS/atom_vec_hybrid_kokkos.cpp new file mode 100644 index 0000000000000000000000000000000000000000..e5e361e70ab21645b67608f6d4f68ab07fb19900 --- /dev/null +++ b/src/KOKKOS/atom_vec_hybrid_kokkos.cpp @@ -0,0 +1,1218 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#include +#include +#include "atom_vec_hybrid_kokkos.h" +#include "atom_kokkos.h" +#include "domain.h" +#include "modify.h" +#include "fix.h" +#include "memory.h" +#include "error.h" +#include "atom_masks.h" + +using namespace LAMMPS_NS; + +/* ---------------------------------------------------------------------- */ + +AtomVecHybridKokkos::AtomVecHybridKokkos(LAMMPS *lmp) : AtomVecKokkos(lmp) {} + +/* ---------------------------------------------------------------------- */ + +AtomVecHybridKokkos::~AtomVecHybridKokkos() +{ + for (int k = 0; k < nstyles; k++) delete styles[k]; + delete [] styles; + for (int k = 0; k < nstyles; k++) delete [] keywords[k]; + delete [] keywords; +} + +/* ---------------------------------------------------------------------- + process sub-style args +------------------------------------------------------------------------- */ + +void AtomVecHybridKokkos::process_args(int narg, char **arg) +{ + // build list of all known atom styles + + build_styles(); + + // allocate list of sub-styles as big as possibly needed if no extra args + + styles = new AtomVec*[narg]; + keywords = new char*[narg]; + + // allocate each sub-style + // call process_args() with set of args that are not atom style names + // use known_style() to determine which args these are + + int i,jarg,dummy; + + int iarg = 0; + nstyles = 0; + while (iarg < narg) { + if (strcmp(arg[iarg],"hybrid") == 0) + error->all(FLERR,"Atom style hybrid cannot have hybrid as an argument"); + for (i = 0; i < nstyles; i++) + if (strcmp(arg[iarg],keywords[i]) == 0) + error->all(FLERR,"Atom style hybrid cannot use same atom style twice"); + styles[nstyles] = atom->new_avec(arg[iarg],1,dummy); + keywords[nstyles] = new char[strlen(arg[iarg])+1]; + strcpy(keywords[nstyles],arg[iarg]); + jarg = iarg + 1; + while (jarg < narg && !known_style(arg[jarg])) jarg++; + styles[nstyles]->process_args(jarg-iarg-1,&arg[iarg+1]); + iarg = jarg; + nstyles++; + } + + // free allstyles created by build_styles() + + for (int i = 0; i < nallstyles; i++) delete [] allstyles[i]; + delete [] allstyles; + + // hybrid settings are MAX or MIN of sub-style settings + // hybrid sizes are minimal values plus extra values for each sub-style + + molecular = 0; + comm_x_only = comm_f_only = 1; + + size_forward = 3; + size_reverse = 3; + size_border = 6; + size_data_atom = 5; + size_data_vel = 4; + xcol_data = 3; + + for (int k = 0; k < nstyles; k++) { + if ((styles[k]->molecular == 1 && molecular == 2) || + (styles[k]->molecular == 2 && molecular == 1)) + error->all(FLERR,"Cannot mix molecular and molecule template " + "atom styles"); + molecular = MAX(molecular,styles[k]->molecular); + + bonds_allow = MAX(bonds_allow,styles[k]->bonds_allow); + angles_allow = MAX(angles_allow,styles[k]->angles_allow); + dihedrals_allow = MAX(dihedrals_allow,styles[k]->dihedrals_allow); + impropers_allow = MAX(impropers_allow,styles[k]->impropers_allow); + mass_type = MAX(mass_type,styles[k]->mass_type); + dipole_type = MAX(dipole_type,styles[k]->dipole_type); + forceclearflag = MAX(forceclearflag,styles[k]->forceclearflag); + + if (styles[k]->molecular == 2) onemols = styles[k]->onemols; + + comm_x_only = MIN(comm_x_only,styles[k]->comm_x_only); + comm_f_only = MIN(comm_f_only,styles[k]->comm_f_only); + size_forward += styles[k]->size_forward - 3; + size_reverse += styles[k]->size_reverse - 3; + size_border += styles[k]->size_border - 6; + size_data_atom += styles[k]->size_data_atom - 5; + size_data_vel += styles[k]->size_data_vel - 4; + } + + size_velocity = 3; + if (atom->omega_flag) size_velocity += 3; + if (atom->angmom_flag) size_velocity += 3; +} + +/* ---------------------------------------------------------------------- */ + +void AtomVecHybridKokkos::init() +{ + AtomVec::init(); + for (int k = 0; k < nstyles; k++) styles[k]->init(); +} + +/* ---------------------------------------------------------------------- + grow atom arrays + n = 0 grows arrays by a chunk + n > 0 allocates arrays to size n +------------------------------------------------------------------------- */ + +void AtomVecHybridKokkos::grow(int n) +{ + if (n == 0) grow_nmax(); + else nmax = n; + atom->nmax = nmax; + if (nmax < 0 || nmax > MAXSMALLINT) + 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 + + int tmp = atom->nextra_grow; + atom->nextra_grow = 0; + for (int k = 0; k < nstyles; k++) styles[k]->grow(nmax); + atom->nextra_grow = tmp; + + // insure hybrid local ptrs and sub-style ptrs are up to date + // for sub-styles, do this in case + // multiple sub-style reallocs of same array occurred + + grow_reset(); + + 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 AtomVecHybridKokkos::grow_reset() +{ + tag = atomKK->tag; + d_tag = atomKK->k_tag.d_view; + h_tag = atomKK->k_tag.h_view; + + type = atomKK->type; + d_type = atomKK->k_type.d_view; + h_type = atomKK->k_type.h_view; + + mask = atomKK->mask; + d_mask = atomKK->k_mask.d_view; + h_mask = atomKK->k_mask.h_view; + + image = atomKK->image; + d_image = atomKK->k_image.d_view; + h_image = atomKK->k_image.h_view; + + x = atomKK->x; + d_x = atomKK->k_x.d_view; + h_x = atomKK->k_x.h_view; + + v = atomKK->v; + d_v = atomKK->k_v.d_view; + h_v = atomKK->k_v.h_view; + + f = atomKK->f; + d_f = atomKK->k_f.d_view; + h_f = atomKK->k_f.h_view; + + v = atomKK->v; + d_v = atomKK->k_v.d_view; + h_v = atomKK->k_v.h_view; + + omega = atomKK->omega; + d_omega = atomKK->k_omega.d_view; + h_omega = atomKK->k_omega.h_view; + + angmom = atomKK->angmom; + d_angmom = atomKK->k_angmom.d_view; + h_angmom = atomKK->k_angmom.h_view; + + for (int k = 0; k < nstyles; k++) styles[k]->grow_reset(); +} + +/* ---------------------------------------------------------------------- + copy atom I info to atom J for all sub-styles +------------------------------------------------------------------------- */ + +void AtomVecHybridKokkos::copy(int i, int j, int delflag) +{ + int tmp = atom->nextra_grow; + atom->nextra_grow = 0; + for (int k = 0; k < nstyles; k++) styles[k]->copy(i,j,delflag); + atom->nextra_grow = tmp; + + if (atom->nextra_grow) + for (int iextra = 0; iextra < atom->nextra_grow; iextra++) + modify->fix[atom->extra_grow[iextra]]->copy_arrays(i,j,delflag); +} + +/* ---------------------------------------------------------------------- */ + +void AtomVecHybridKokkos::clear_bonus() +{ + for (int k = 0; k < nstyles; k++) styles[k]->clear_bonus(); +} + +/* ---------------------------------------------------------------------- */ + +void AtomVecHybridKokkos::force_clear(int n, size_t nbytes) +{ + for (int k = 0; k < nstyles; k++) + if (styles[k]->forceclearflag) styles[k]->force_clear(n,nbytes); +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecHybridKokkos::pack_comm_kokkos(const int &n, const DAT::tdual_int_2d &k_sendlist, + const int & iswap, + const DAT::tdual_xfloat_2d &buf, + const int &pbc_flag, const int pbc[]) +{ + error->all(FLERR,"AtomVecHybridKokkos doesn't yet support threaded comm"); +} +void AtomVecHybridKokkos::unpack_comm_kokkos(const int &n, const int &nfirst, + const DAT::tdual_xfloat_2d &buf) +{ + error->all(FLERR,"AtomVecHybridKokkos doesn't yet support threaded comm"); +} +int AtomVecHybridKokkos::pack_comm_self(const int &n, const DAT::tdual_int_2d &list, + const int & iswap, const int nfirst, + const int &pbc_flag, const int pbc[]) +{ + error->all(FLERR,"AtomVecHybridKokkos doesn't yet support threaded comm"); +} +int AtomVecHybridKokkos::pack_border_kokkos(int n, DAT::tdual_int_2d k_sendlist, + DAT::tdual_xfloat_2d buf,int iswap, + int pbc_flag, int *pbc, ExecutionSpace space) +{ + error->all(FLERR,"AtomVecHybridKokkos doesn't yet support threaded comm"); +} +void AtomVecHybridKokkos::unpack_border_kokkos(const int &n, const int &nfirst, + const DAT::tdual_xfloat_2d &buf, + ExecutionSpace space) +{ + error->all(FLERR,"AtomVecHybridKokkos doesn't yet support threaded comm"); +} +int AtomVecHybridKokkos::pack_exchange_kokkos(const int &nsend,DAT::tdual_xfloat_2d &buf, + DAT::tdual_int_1d k_sendlist, + DAT::tdual_int_1d k_copylist, + ExecutionSpace space, int dim, + X_FLOAT lo, X_FLOAT hi) +{ + error->all(FLERR,"AtomVecHybridKokkos doesn't yet support threaded comm"); +} +int AtomVecHybridKokkos::unpack_exchange_kokkos(DAT::tdual_xfloat_2d &k_buf, int nrecv, + int nlocal, int dim, X_FLOAT lo, X_FLOAT hi, + ExecutionSpace space) +{ + error->all(FLERR,"AtomVecHybridKokkos doesn't yet support threaded comm"); +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecHybridKokkos::pack_comm(int n, int *list, double *buf, + int pbc_flag, int *pbc) +{ + sync(Host,X_MASK); + + int i,j,k,m; + double dx,dy,dz; + + m = 0; + if (pbc_flag == 0) { + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = h_x(j,0); + buf[m++] = h_x(j,1); + buf[m++] = h_x(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++] = h_x(j,0) + dx; + buf[m++] = h_x(j,1) + dy; + buf[m++] = h_x(j,2) + dz; + } + } + + // pack sub-style contributions as contiguous chunks + + for (k = 0; k < nstyles; k++) + m += styles[k]->pack_comm_hybrid(n,list,&buf[m]); + + return m; +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecHybridKokkos::pack_comm_vel(int n, int *list, double *buf, + int pbc_flag, int *pbc) +{ + sync(Host,X_MASK|V_MASK|OMEGA_MASK/*|ANGMOM_MASK*/); + + int i,j,k,m; + double dx,dy,dz,dvx,dvy,dvz; + int omega_flag = atom->omega_flag; + int angmom_flag = atom->angmom_flag; + + m = 0; + if (pbc_flag == 0) { + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = h_x(j,0); + buf[m++] = h_x(j,1); + buf[m++] = h_x(j,2); + buf[m++] = h_v(j,0); + buf[m++] = h_v(j,1); + buf[m++] = h_v(j,2); + if (omega_flag) { + buf[m++] = h_omega(j,0); + buf[m++] = h_omega(j,1); + buf[m++] = h_omega(j,2); + } + if (angmom_flag) { + buf[m++] = h_angmom(j,0); + buf[m++] = h_angmom(j,1); + buf[m++] = h_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++] = h_x(j,0) + dx; + buf[m++] = h_x(j,1) + dy; + buf[m++] = h_x(j,2) + dz; + buf[m++] = h_v(j,0); + buf[m++] = h_v(j,1); + buf[m++] = h_v(j,2); + if (omega_flag) { + buf[m++] = h_omega(j,0); + buf[m++] = h_omega(j,1); + buf[m++] = h_omega(j,2); + } + if (angmom_flag) { + buf[m++] = h_angmom(j,0); + buf[m++] = h_angmom(j,1); + buf[m++] = h_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++] = h_x(j,0) + dx; + buf[m++] = h_x(j,1) + dy; + buf[m++] = h_x(j,2) + dz; + if (h_mask[i] & deform_groupbit) { + buf[m++] = h_v(j,0) + dvx; + buf[m++] = h_v(j,1) + dvy; + buf[m++] = h_v(j,2) + dvz; + } else { + buf[m++] = h_v(j,0); + buf[m++] = h_v(j,1); + buf[m++] = h_v(j,2); + } + if (omega_flag) { + buf[m++] = h_omega(j,0); + buf[m++] = h_omega(j,1); + buf[m++] = h_omega(j,2); + } + if (angmom_flag) { + buf[m++] = h_angmom(j,0); + buf[m++] = h_angmom(j,1); + buf[m++] = h_angmom(j,2); + } + } + } + } + + // pack sub-style contributions as contiguous chunks + + for (k = 0; k < nstyles; k++) + m += styles[k]->pack_comm_hybrid(n,list,&buf[m]); + + return m; +} + +/* ---------------------------------------------------------------------- */ + +void AtomVecHybridKokkos::unpack_comm(int n, int first, double *buf) +{ + int i,k,m,last; + + m = 0; + last = first + n; + for (i = first; i < last; i++) { + h_x(i,0) = buf[m++]; + h_x(i,1) = buf[m++]; + h_x(i,2) = buf[m++]; + } + + modified(Host,X_MASK); + + // unpack sub-style contributions as contiguous chunks + + for (k = 0; k < nstyles; k++) + m += styles[k]->unpack_comm_hybrid(n,first,&buf[m]); +} + +/* ---------------------------------------------------------------------- */ + +void AtomVecHybridKokkos::unpack_comm_vel(int n, int first, double *buf) +{ + int i,k,m,last; + int omega_flag = atom->omega_flag; + int angmom_flag = atom->angmom_flag; + + m = 0; + last = first + n; + for (i = first; i < last; i++) { + h_x(i,0) = buf[m++]; + h_x(i,1) = buf[m++]; + h_x(i,2) = buf[m++]; + h_v(i,0) = buf[m++]; + h_v(i,1) = buf[m++]; + h_v(i,2) = buf[m++]; + if (omega_flag) { + h_omega(i,0) = buf[m++]; + h_omega(i,1) = buf[m++]; + h_omega(i,2) = buf[m++]; + } + if (angmom_flag) { + h_angmom(i,0) = buf[m++]; + h_angmom(i,1) = buf[m++]; + h_angmom(i,2) = buf[m++]; + } + } + + modified(Host,X_MASK|V_MASK|OMEGA_MASK/*|ANGMOM_MASK*/); + + // unpack sub-style contributions as contiguous chunks + + for (k = 0; k < nstyles; k++) + m += styles[k]->unpack_comm_hybrid(n,first,&buf[m]); +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecHybridKokkos::pack_reverse(int n, int first, double *buf) +{ + sync(Host,F_MASK); + + int i,k,m,last; + + m = 0; + last = first + n; + for (i = first; i < last; i++) { + buf[m++] = h_f(i,0); + buf[m++] = h_f(i,1); + buf[m++] = h_f(i,2); + } + + // pack sub-style contributions as contiguous chunks + + for (k = 0; k < nstyles; k++) + m += styles[k]->pack_reverse_hybrid(n,first,&buf[m]); + + return m; +} + +/* ---------------------------------------------------------------------- */ + +void AtomVecHybridKokkos::unpack_reverse(int n, int *list, double *buf) +{ + int i,j,k,m; + + m = 0; + for (i = 0; i < n; i++) { + j = list[i]; + h_f(j,0) += buf[m++]; + h_f(j,1) += buf[m++]; + h_f(j,2) += buf[m++]; + } + + modified(Host,F_MASK); + + // unpack sub-style contributions as contiguous chunks + + for (k = 0; k < nstyles; k++) + m += styles[k]->unpack_reverse_hybrid(n,list,&buf[m]); +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecHybridKokkos::pack_border(int n, int *list, double *buf, + int pbc_flag, int *pbc) +{ + sync(Host,X_MASK|TAG_MASK|TYPE_MASK|MASK_MASK); + + int i,j,k,m; + double dx,dy,dz; + + m = 0; + if (pbc_flag == 0) { + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = h_x(j,0); + buf[m++] = h_x(j,1); + buf[m++] = h_x(j,2); + buf[m++] = ubuf(h_tag[j]).d; + buf[m++] = ubuf(h_type[j]).d; + buf[m++] = ubuf(h_mask[j]).d; + } + } 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++] = h_x(j,0) + dx; + buf[m++] = h_x(j,1) + dy; + buf[m++] = h_x(j,2) + dz; + buf[m++] = ubuf(h_tag[j]).d; + buf[m++] = ubuf(h_type[j]).d; + buf[m++] = ubuf(h_mask[j]).d; + } + } + + // pack sub-style contributions as contiguous chunks + + for (k = 0; k < nstyles; k++) + m += styles[k]->pack_border_hybrid(n,list,&buf[m]); + + if (atom->nextra_border) + for (int iextra = 0; iextra < atom->nextra_border; iextra++) + m += modify->fix[atom->extra_border[iextra]]->pack_border(n,list,&buf[m]); + + return m; +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecHybridKokkos::pack_border_vel(int n, int *list, double *buf, + int pbc_flag, int *pbc) +{ + sync(Host,X_MASK|TAG_MASK|TYPE_MASK|MASK_MASK|V_MASK|OMEGA_MASK/*|ANGMOM_MASK*/); + int i,j,k,m; + double dx,dy,dz,dvx,dvy,dvz; + int omega_flag = atom->omega_flag; + int angmom_flag = atom->angmom_flag; + + m = 0; + if (pbc_flag == 0) { + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = h_x(j,0); + buf[m++] = h_x(j,1); + buf[m++] = h_x(j,2); + buf[m++] = ubuf(h_tag[j]).d; + buf[m++] = ubuf(h_type[j]).d; + buf[m++] = ubuf(h_mask[j]).d; + buf[m++] = h_v(j,0); + buf[m++] = h_v(j,1); + buf[m++] = h_v(j,2); + if (omega_flag) { + buf[m++] = h_omega(j,0); + buf[m++] = h_omega(j,1); + buf[m++] = h_omega(j,2); + } + if (angmom_flag) { + buf[m++] = h_angmom(j,0); + buf[m++] = h_angmom(j,1); + buf[m++] = h_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++] = h_x(j,0) + dx; + buf[m++] = h_x(j,1) + dy; + buf[m++] = h_x(j,2) + dz; + buf[m++] = ubuf(h_tag[j]).d; + buf[m++] = ubuf(h_type[j]).d; + buf[m++] = ubuf(h_mask[j]).d; + buf[m++] = h_v(j,0); + buf[m++] = h_v(j,1); + buf[m++] = h_v(j,2); + if (omega_flag) { + buf[m++] = h_omega(j,0); + buf[m++] = h_omega(j,1); + buf[m++] = h_omega(j,2); + } + if (angmom_flag) { + buf[m++] = h_angmom(j,0); + buf[m++] = h_angmom(j,1); + buf[m++] = h_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++] = h_x(j,0) + dx; + buf[m++] = h_x(j,1) + dy; + buf[m++] = h_x(j,2) + dz; + buf[m++] = ubuf(h_tag[j]).d; + buf[m++] = ubuf(h_type[j]).d; + buf[m++] = ubuf(h_mask[j]).d; + if (h_mask[i] & deform_groupbit) { + buf[m++] = h_v(j,0) + dvx; + buf[m++] = h_v(j,1) + dvy; + buf[m++] = h_v(j,2) + dvz; + } else { + buf[m++] = h_v(j,0); + buf[m++] = h_v(j,1); + buf[m++] = h_v(j,2); + } + if (omega_flag) { + buf[m++] = h_omega(j,0); + buf[m++] = h_omega(j,1); + buf[m++] = h_omega(j,2); + } + if (angmom_flag) { + buf[m++] = h_angmom(j,0); + buf[m++] = h_angmom(j,1); + buf[m++] = h_angmom(j,2); + } + } + } + } + + // pack sub-style contributions as contiguous chunks + + for (k = 0; k < nstyles; k++) + m += styles[k]->pack_border_hybrid(n,list,&buf[m]); + + if (atom->nextra_border) + for (int iextra = 0; iextra < atom->nextra_border; iextra++) + m += modify->fix[atom->extra_border[iextra]]->pack_border(n,list,&buf[m]); + + return m; +} + +/* ---------------------------------------------------------------------- */ + +void AtomVecHybridKokkos::unpack_border(int n, int first, double *buf) +{ + int i,k,m,last; + + m = 0; + last = first + n; + for (i = first; i < last; i++) { + if (i == nmax) grow(0); + h_x(i,0) = buf[m++]; + h_x(i,1) = buf[m++]; + h_x(i,2) = buf[m++]; + h_tag[i] = (tagint) ubuf(buf[m++]).i; + h_type[i] = (int) ubuf(buf[m++]).i; + h_mask[i] = (int) ubuf(buf[m++]).i; + } + + modified(Host,X_MASK|TAG_MASK|TYPE_MASK|MASK_MASK); + + // unpack sub-style contributions as contiguous chunks + + for (k = 0; k < nstyles; k++) + m += styles[k]->unpack_border_hybrid(n,first,&buf[m]); + + if (atom->nextra_border) + for (int iextra = 0; iextra < atom->nextra_border; iextra++) + m += modify->fix[atom->extra_border[iextra]]-> + unpack_border(n,first,&buf[m]); +} + +/* ---------------------------------------------------------------------- */ + +void AtomVecHybridKokkos::unpack_border_vel(int n, int first, double *buf) +{ + int i,k,m,last; + int omega_flag = atom->omega_flag; + int angmom_flag = atom->angmom_flag; + + m = 0; + last = first + n; + for (i = first; i < last; i++) { + if (i == nmax) grow(0); + h_x(i,0) = buf[m++]; + h_x(i,1) = buf[m++]; + h_x(i,2) = buf[m++]; + h_tag[i] = (tagint) ubuf(buf[m++]).i; + h_type[i] = (int) ubuf(buf[m++]).i; + h_mask[i] = (int) ubuf(buf[m++]).i; + h_v(i,0) = buf[m++]; + h_v(i,1) = buf[m++]; + h_v(i,2) = buf[m++]; + if (omega_flag) { + h_omega(i,0) = buf[m++]; + h_omega(i,1) = buf[m++]; + h_omega(i,2) = buf[m++]; + } + if (angmom_flag) { + h_angmom(i,0) = buf[m++]; + h_angmom(i,1) = buf[m++]; + h_angmom(i,2) = buf[m++]; + } + } + + modified(Host,X_MASK|TAG_MASK|TYPE_MASK|MASK_MASK|V_MASK|OMEGA_MASK/*|ANGMOM_MASK*/); + + // unpack sub-style contributions as contiguous chunks + + for (k = 0; k < nstyles; k++) + m += styles[k]->unpack_border_hybrid(n,first,&buf[m]); + + if (atom->nextra_border) + for (int iextra = 0; iextra < atom->nextra_border; iextra++) + m += modify->fix[atom->extra_border[iextra]]-> + unpack_border(n,first,&buf[m]); +} + +/* ---------------------------------------------------------------------- + pack data for atom I for sending to another proc + pack each sub-style one after the other +------------------------------------------------------------------------- */ + +int AtomVecHybridKokkos::pack_exchange(int i, double *buf) +{ + int k,m; + + int tmp = atom->nextra_grow; + atom->nextra_grow = 0; + + m = 0; + for (k = 0; k < nstyles; k++) + m += styles[k]->pack_exchange(i,&buf[m]); + + atom->nextra_grow = tmp; + + 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; +} + +/* ---------------------------------------------------------------------- + unpack data for single atom received from another proc + unpack each sub-style one after the other + grow() occurs here so arrays for all sub-styles are grown +------------------------------------------------------------------------- */ + +int AtomVecHybridKokkos::unpack_exchange(double *buf) +{ + int k,m; + + int nlocal = atom->nlocal; + if (nlocal == nmax) grow(0); + + int tmp = atom->nextra_grow; + atom->nextra_grow = 0; + + m = 0; + for (k = 0; k < nstyles; k++) { + m += styles[k]->unpack_exchange(&buf[m]); + atom->nlocal--; + } + + atom->nextra_grow = tmp; + + 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 AtomVecHybridKokkos::size_restart() +{ + int tmp = atom->nextra_restart; + atom->nextra_restart = 0; + + int n = 0; + for (int k = 0; k < nstyles; k++) + n += styles[k]->size_restart(); + + atom->nextra_restart = tmp; + + int nlocal = atom->nlocal; + if (atom->nextra_restart) + for (int iextra = 0; iextra < atom->nextra_restart; iextra++) + for (int 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 + pack each sub-style one after the other +------------------------------------------------------------------------- */ + +int AtomVecHybridKokkos::pack_restart(int i, double *buf) +{ + int tmp = atom->nextra_restart; + atom->nextra_restart = 0; + + int m = 0; + for (int k = 0; k < nstyles; k++) + m += styles[k]->pack_restart(i,&buf[m]); + + atom->nextra_restart = tmp; + + 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 + unpack each sub-style one after the other + grow() occurs here so arrays for all sub-styles are grown +------------------------------------------------------------------------- */ + +int AtomVecHybridKokkos::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 tmp = atom->nextra_store; + atom->nextra_store = 0; + + int m = 0; + for (int k = 0; k < nstyles; k++) { + m += styles[k]->unpack_restart(&buf[m]); + atom->nlocal--; + } + atom->nextra_store = tmp; + + 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 + create each sub-style one after the other + grow() occurs here so arrays for all sub-styles are grown +------------------------------------------------------------------------- */ + +void AtomVecHybridKokkos::create_atom(int itype, double *coord) +{ + int nlocal = atom->nlocal; + if (nlocal == nmax) grow(0); + + for (int k = 0; k < nstyles; k++) { + styles[k]->create_atom(itype,coord); + atom->nlocal--; + } + atom->nlocal++; +} + +/* ---------------------------------------------------------------------- + unpack one line from Atoms section of data file + grow() occurs here so arrays for all sub-styles are grown +------------------------------------------------------------------------- */ + +void AtomVecHybridKokkos::data_atom(double *coord, imageint imagetmp, char **values) +{ + sync(Host,X_MASK|TAG_MASK|TYPE_MASK|IMAGE_MASK|MASK_MASK|V_MASK|OMEGA_MASK/*|ANGMOM_MASK*/); + + int nlocal = atom->nlocal; + if (nlocal == nmax) grow(0); + + h_tag[nlocal] = ATOTAGINT(values[0]); + h_type[nlocal] = atoi(values[1]); + if (h_type[nlocal] <= 0 || h_type[nlocal] > atom->ntypes) + error->one(FLERR,"Invalid atom h_type in Atoms section of data file"); + + h_x(nlocal,0) = coord[0]; + h_x(nlocal,1) = coord[1]; + h_x(nlocal,2) = coord[2]; + + h_image[nlocal] = imagetmp; + h_mask[nlocal] = 1; + + h_v(nlocal,0) = 0.0; + h_v(nlocal,1) = 0.0; + h_v(nlocal,2) = 0.0; + if (atom->omega_flag) { + h_omega(nlocal,0) = 0.0; + h_omega(nlocal,1) = 0.0; + h_omega(nlocal,2) = 0.0; + } + if (atom->angmom_flag) { + h_angmom(nlocal,0) = 0.0; + h_angmom(nlocal,1) = 0.0; + h_angmom(nlocal,2) = 0.0; + } + + modified(Host,X_MASK|TAG_MASK|TYPE_MASK|IMAGE_MASK|MASK_MASK|V_MASK|OMEGA_MASK/*|ANGMOM_MASK*/); + + // each sub-style parses sub-style specific values + + int m = 5; + for (int k = 0; k < nstyles; k++) + m += styles[k]->data_atom_hybrid(nlocal,&values[m]); + + atom->nlocal++; +} + +/* ---------------------------------------------------------------------- + unpack one line from Velocities section of data file +------------------------------------------------------------------------- */ + +void AtomVecHybridKokkos::data_vel(int m, char **values) +{ + sync(Host,V_MASK); + + h_v(m,0) = atof(values[0]); + h_v(m,1) = atof(values[1]); + h_v(m,2) = atof(values[2]); + + modified(Host,V_MASK); + + // each sub-style parses sub-style specific values + + int n = 3; + for (int k = 0; k < nstyles; k++) + n += styles[k]->data_vel_hybrid(m,&values[n]); +} + +/* ---------------------------------------------------------------------- + pack atom info for data file including 3 image flags +------------------------------------------------------------------------- */ + +void AtomVecHybridKokkos::pack_data(double **buf) +{ + sync(Host,TAG_MASK|TYPE_MASK|X_MASK); + + int k,m; + + int nlocal = atom->nlocal; + for (int i = 0; i < nlocal; i++) { + buf[i][0] = ubuf(h_tag[i]).d; + buf[i][1] = ubuf(h_type[i]).d; + buf[i][2] = h_x(i,0); + buf[i][3] = h_x(i,1); + buf[i][4] = h_x(i,2); + + m = 5; + for (k = 0; k < nstyles; k++) + m += styles[k]->pack_data_hybrid(i,&buf[i][m]); + + buf[i][m] = ubuf((h_image[i] & IMGMASK) - IMGMAX).d; + buf[i][m+1] = ubuf((h_image[i] >> IMGBITS & IMGMASK) - IMGMAX).d; + buf[i][m+2] = ubuf((h_image[i] >> IMG2BITS) - IMGMAX).d; + } +} + +/* ---------------------------------------------------------------------- + write atom info to data file including 3 h_image flags +------------------------------------------------------------------------- */ + +void AtomVecHybridKokkos::write_data(FILE *fp, int n, double **buf) +{ + int k,m; + + for (int i = 0; i < n; i++) { + fprintf(fp,TAGINT_FORMAT " %d %-1.16e %-1.16e %-1.16e", + (tagint) ubuf(buf[i][0]).i,(int) ubuf(buf[i][1]).i, + buf[i][2],buf[i][3],buf[i][4]); + + m = 5; + for (k = 0; k < nstyles; k++) + m += styles[k]->write_data_hybrid(fp,&buf[i][m]); + + fprintf(fp," %d %d %d\n", + (int) ubuf(buf[i][m]).i,(int) ubuf(buf[i][m+1]).i, + (int) ubuf(buf[i][m+2]).i); + } +} + +/* ---------------------------------------------------------------------- + pack velocity info for data file +------------------------------------------------------------------------- */ + +void AtomVecHybridKokkos::pack_vel(double **buf) +{ + sync(Host,V_MASK); + + int k,m; + + int nlocal = atom->nlocal; + for (int i = 0; i < nlocal; i++) { + buf[i][0] = ubuf(h_tag[i]).d; + buf[i][1] = h_v(i,0); + buf[i][2] = h_v(i,1); + buf[i][3] = h_v(i,2); + + m = 4; + for (k = 0; k < nstyles; k++) + m += styles[k]->pack_vel_hybrid(i,&buf[i][m]); + } +} + +/* ---------------------------------------------------------------------- + write velocity info to data file +------------------------------------------------------------------------- */ + +void AtomVecHybridKokkos::write_vel(FILE *fp, int n, double **buf) +{ + int k,m; + + for (int i = 0; i < n; i++) { + fprintf(fp,TAGINT_FORMAT " %g %g %g", + (tagint) ubuf(buf[i][0]).i,buf[i][1],buf[i][2],buf[i][3]); + + m = 4; + for (k = 0; k < nstyles; k++) + m += styles[k]->write_vel_hybrid(fp,&buf[i][m]); + + fprintf(fp,"\n"); + } +} + +/* ---------------------------------------------------------------------- + assign an index to named atom property and return index + returned value encodes which sub-style and index returned by sub-style + return -1 if name is unknown to any sub-styles +------------------------------------------------------------------------- */ + +int AtomVecHybridKokkos::property_atom(char *name) +{ + for (int k = 0; k < nstyles; k++) { + int index = styles[k]->property_atom(name); + if (index >= 0) return index*nstyles + k; + } + return -1; +} + +/* ---------------------------------------------------------------------- + pack per-atom data into buf for ComputePropertyAtom + index maps to data specific to this atom style +------------------------------------------------------------------------- */ + +void AtomVecHybridKokkos::pack_property_atom(int multiindex, double *buf, + int nvalues, int groupbit) +{ + int k = multiindex % nstyles; + int index = multiindex/nstyles; + styles[k]->pack_property_atom(index,buf,nvalues,groupbit); +} + +/* ---------------------------------------------------------------------- + allstyles = list of all atom styles in this LAMMPS executable +------------------------------------------------------------------------- */ + +void AtomVecHybridKokkos::build_styles() +{ + nallstyles = 0; +#define ATOM_CLASS +#define AtomStyle(key,Class) nallstyles++; +#include "style_atom.h" +#undef AtomStyle +#undef ATOM_CLASS + + allstyles = new char*[nallstyles]; + + int n; + nallstyles = 0; +#define ATOM_CLASS +#define AtomStyle(key,Class) \ + n = strlen(#key) + 1; \ + allstyles[nallstyles] = new char[n]; \ + strcpy(allstyles[nallstyles],#key); \ + nallstyles++; +#include "style_atom.h" +#undef AtomStyle +#undef ATOM_CLASS +} + +/* ---------------------------------------------------------------------- + allstyles = list of all known atom styles +------------------------------------------------------------------------- */ + +int AtomVecHybridKokkos::known_style(char *str) +{ + for (int i = 0; i < nallstyles; i++) + if (strcmp(str,allstyles[i]) == 0) return 1; + return 0; +} + +/* ---------------------------------------------------------------------- + return # of bytes of allocated memory +------------------------------------------------------------------------- */ + +bigint AtomVecHybridKokkos::memory_usage() +{ + bigint bytes = 0; + for (int k = 0; k < nstyles; k++) bytes += styles[k]->memory_usage(); + return bytes; +} + +/* ---------------------------------------------------------------------- */ + +void AtomVecHybridKokkos::sync(ExecutionSpace space, unsigned int h_mask) +{ + for (int k = 0; k < nstyles; k++) ((AtomVecKokkos*) styles[k])->sync(space,h_mask); +} + +/* ---------------------------------------------------------------------- */ + +void AtomVecHybridKokkos::sync_overlapping_device(ExecutionSpace space, unsigned int h_mask) +{ + for (int k = 0; k < nstyles; k++) ((AtomVecKokkos*) styles[k])->sync_overlapping_device(space,h_mask); +} + +/* ---------------------------------------------------------------------- */ + +void AtomVecHybridKokkos::modified(ExecutionSpace space, unsigned int h_mask) +{ + for (int k = 0; k < nstyles; k++) ((AtomVecKokkos*) styles[k])->modified(space,h_mask); +} diff --git a/src/KOKKOS/atom_vec_hybrid_kokkos.h b/src/KOKKOS/atom_vec_hybrid_kokkos.h new file mode 100644 index 0000000000000000000000000000000000000000..fcf48f6c7494e1f281969dc60db5525845da5a65 --- /dev/null +++ b/src/KOKKOS/atom_vec_hybrid_kokkos.h @@ -0,0 +1,161 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#ifdef ATOM_CLASS + +AtomStyle(hybrid/kk,AtomVecHybridKokkos) + +#else + +#ifndef LMP_ATOM_VEC_HYBRID_KOKKOS_H +#define LMP_ATOM_VEC_HYBRID_KOKKOS_H + +#include +#include "atom_vec_kokkos.h" +#include "kokkos_type.h" + +namespace LAMMPS_NS { + +class AtomVecHybridKokkos : public AtomVecKokkos { + public: + int nstyles; + class AtomVec **styles; + char **keywords; + + AtomVecHybridKokkos(class LAMMPS *); + ~AtomVecHybridKokkos(); + void process_args(int, char **); + void init(); + void grow(int); + void grow_reset(); + void copy(int, int, int); + void clear_bonus(); + void force_clear(int, size_t); + 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_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 *, imageint, char **); + int data_atom_hybrid(int, char **) {return 0;} + void data_vel(int, char **); + void pack_data(double **); + void write_data(FILE *, int, double **); + void pack_vel(double **); + void write_vel(FILE *, int, double **); + int property_atom(char *); + void pack_property_atom(int, double *, int, int); + bigint memory_usage(); + + int pack_comm_kokkos(const int &n, const DAT::tdual_int_2d &k_sendlist, + const int & iswap, + const DAT::tdual_xfloat_2d &buf, + const int &pbc_flag, const int pbc[]); + void unpack_comm_kokkos(const int &n, const int &nfirst, + const DAT::tdual_xfloat_2d &buf); + int pack_comm_self(const int &n, const DAT::tdual_int_2d &list, + const int & iswap, const int nfirst, + const int &pbc_flag, const int pbc[]); + int pack_border_kokkos(int n, DAT::tdual_int_2d k_sendlist, + DAT::tdual_xfloat_2d buf,int iswap, + int pbc_flag, int *pbc, ExecutionSpace space); + void unpack_border_kokkos(const int &n, const int &nfirst, + const DAT::tdual_xfloat_2d &buf, + ExecutionSpace space); + int pack_exchange_kokkos(const int &nsend,DAT::tdual_xfloat_2d &buf, + DAT::tdual_int_1d k_sendlist, + DAT::tdual_int_1d k_copylist, + ExecutionSpace space, int dim, + X_FLOAT lo, X_FLOAT hi); + int unpack_exchange_kokkos(DAT::tdual_xfloat_2d &k_buf, int nrecv, + int nlocal, int dim, X_FLOAT lo, X_FLOAT hi, + ExecutionSpace space); + + void sync(ExecutionSpace space, unsigned int mask); + void modified(ExecutionSpace space, unsigned int mask); + void sync_overlapping_device(ExecutionSpace space, unsigned int mask); + + private: + tagint *tag; + int *type,*mask; + imageint *image; + double **x,**v,**f; + double **omega,**angmom; + + DAT::t_tagint_1d d_tag; + DAT::t_int_1d d_type, d_mask; + HAT::t_tagint_1d h_tag; + HAT::t_int_1d h_type, h_mask; + + DAT::t_imageint_1d d_image; + HAT::t_imageint_1d h_image; + + DAT::t_x_array d_x; + DAT::t_v_array d_v; + DAT::t_f_array d_f; + HAT::t_x_array h_x; + HAT::t_v_array h_v; + HAT::t_f_array h_f; + + DAT::t_v_array d_omega, d_angmom; + HAT::t_v_array h_omega, h_angmom; + + DAT::tdual_int_1d k_count; + + int nallstyles; + char **allstyles; + + void build_styles(); + int known_style(char *); +}; + +} + +#endif +#endif + +/* ERROR/WARNING messages: + +E: Atom style hybrid cannot have hybrid as an argument + +Self-explanatory. + +E: Atom style hybrid cannot use same atom style twice + +Self-explanatory. + +E: Cannot mix molecular and molecule template atom styles + +Self-explanatory. + +E: Per-processor system is too big + +The number of owned atoms plus ghost atoms on a single +processor must fit in 32-bit integer. + +E: Invalid atom type in Atoms section of data file + +Atom types must range from 1 to specified # of types. + +*/ diff --git a/src/KOKKOS/atom_vec_molecular_kokkos.cpp b/src/KOKKOS/atom_vec_molecular_kokkos.cpp index 5c16ac15135ec642a2a3fa95b31c01cbf41c71fb..dbf6a857b2521874ba7dca32a4cf374030c546e1 100644 --- a/src/KOKKOS/atom_vec_molecular_kokkos.cpp +++ b/src/KOKKOS/atom_vec_molecular_kokkos.cpp @@ -387,7 +387,6 @@ int AtomVecMolecularKokkos::pack_comm_kokkos(const int &n, Kokkos::parallel_for(n,f); } } - LMPHostType::fence(); } else { sync(Device,X_MASK); if(pbc_flag) { @@ -415,7 +414,6 @@ int AtomVecMolecularKokkos::pack_comm_kokkos(const int &n, Kokkos::parallel_for(n,f); } } - LMPDeviceType::fence(); } return n*size_forward; @@ -506,7 +504,6 @@ int AtomVecMolecularKokkos::pack_comm_self(const int &n, const DAT::tdual_int_2d Kokkos::parallel_for(n,f); } } - LMPHostType::fence(); } else { sync(Device,X_MASK); modified(Device,X_MASK); @@ -535,7 +532,6 @@ int AtomVecMolecularKokkos::pack_comm_self(const int &n, const DAT::tdual_int_2d Kokkos::parallel_for(n,f); } } - LMPDeviceType::fence(); } return n*3; } @@ -573,13 +569,11 @@ void AtomVecMolecularKokkos::unpack_comm_kokkos(const int &n, const int &first, modified(Host,X_MASK); struct AtomVecMolecularKokkos_UnpackComm f(atomKK->k_x,buf,first); Kokkos::parallel_for(n,f); - LMPDeviceType::fence(); } else { sync(Device,X_MASK); modified(Device,X_MASK); struct AtomVecMolecularKokkos_UnpackComm f(atomKK->k_x,buf,first); Kokkos::parallel_for(n,f); - LMPDeviceType::fence(); } } @@ -825,13 +819,11 @@ int AtomVecMolecularKokkos::pack_border_kokkos(int n, DAT::tdual_int_2d k_sendli buf.view(), k_sendlist.view(), iswap,h_x,h_tag,h_type,h_mask,h_molecule,dx,dy,dz); Kokkos::parallel_for(n,f); - LMPHostType::fence(); } else { AtomVecMolecularKokkos_PackBorder f( buf.view(), k_sendlist.view(), iswap,d_x,d_tag,d_type,d_mask,d_molecule,dx,dy,dz); Kokkos::parallel_for(n,f); - LMPDeviceType::fence(); } } else { @@ -841,13 +833,11 @@ int AtomVecMolecularKokkos::pack_border_kokkos(int n, DAT::tdual_int_2d k_sendli buf.view(), k_sendlist.view(), iswap,h_x,h_tag,h_type,h_mask,h_molecule,dx,dy,dz); Kokkos::parallel_for(n,f); - LMPHostType::fence(); } else { AtomVecMolecularKokkos_PackBorder f( buf.view(), k_sendlist.view(), iswap,d_x,d_tag,d_type,d_mask,d_molecule,dx,dy,dz); Kokkos::parallel_for(n,f); - LMPDeviceType::fence(); } } return n*size_border; @@ -1049,12 +1039,10 @@ void AtomVecMolecularKokkos::unpack_border_kokkos(const int &n, const int &first struct AtomVecMolecularKokkos_UnpackBorder f(buf.view(),h_x,h_tag,h_type,h_mask,h_molecule,first); Kokkos::parallel_for(n,f); - LMPHostType::fence(); } else { struct AtomVecMolecularKokkos_UnpackBorder f(buf.view(),d_x,d_tag,d_type,d_mask,d_molecule,first); Kokkos::parallel_for(n,f); - LMPDeviceType::fence(); } } @@ -1389,13 +1377,11 @@ int AtomVecMolecularKokkos::pack_exchange_kokkos(const int &nsend,DAT::tdual_xfl AtomVecMolecularKokkos_PackExchangeFunctor f(atomKK,k_buf,k_sendlist,k_copylist,atom->nlocal,dim,lo,hi); Kokkos::parallel_for(nsend,f); - LMPHostType::fence(); return nsend*elements; } else { AtomVecMolecularKokkos_PackExchangeFunctor f(atomKK,k_buf,k_sendlist,k_copylist,atom->nlocal,dim,lo,hi); Kokkos::parallel_for(nsend,f); - LMPDeviceType::fence(); return nsend*elements; } } @@ -1608,7 +1594,6 @@ int AtomVecMolecularKokkos::unpack_exchange_kokkos(DAT::tdual_xfloat_2d &k_buf,i AtomVecMolecularKokkos_UnpackExchangeFunctor f(atomKK,k_buf,k_count,dim,lo,hi); Kokkos::parallel_for(nrecv/elements,f); - LMPHostType::fence(); return k_count.h_view(0); } else { k_count.h_view(0) = nlocal; @@ -1617,7 +1602,6 @@ int AtomVecMolecularKokkos::unpack_exchange_kokkos(DAT::tdual_xfloat_2d &k_buf,i AtomVecMolecularKokkos_UnpackExchangeFunctor f(atomKK,k_buf,k_count,dim,lo,hi); Kokkos::parallel_for(nrecv/elements,f); - LMPDeviceType::fence(); k_count.modify(); k_count.sync(); diff --git a/src/KOKKOS/atom_vec_molecular_kokkos.h b/src/KOKKOS/atom_vec_molecular_kokkos.h index 4ec26621cc8397f2a565027b564d128df25f25d3..06444510e05f65361a28257b4e52ab3c82ddf5e2 100644 --- a/src/KOKKOS/atom_vec_molecular_kokkos.h +++ b/src/KOKKOS/atom_vec_molecular_kokkos.h @@ -14,6 +14,8 @@ #ifdef ATOM_CLASS AtomStyle(molecular/kk,AtomVecMolecularKokkos) +AtomStyle(molecular/kk/device,AtomVecMolecularKokkos) +AtomStyle(molecular/kk/host,AtomVecMolecularKokkos) #else diff --git a/src/KOKKOS/bond_fene_kokkos.cpp b/src/KOKKOS/bond_fene_kokkos.cpp index 025838340bbb6945b24e51c8bd185c72b1afa7d1..8a716a98ef534bfdcc3daf31696d01e1af22b071 100644 --- a/src/KOKKOS/bond_fene_kokkos.cpp +++ b/src/KOKKOS/bond_fene_kokkos.cpp @@ -253,10 +253,10 @@ void BondFENEKokkos::allocate() k_epsilon = DAT::tdual_ffloat_1d("BondFene::epsilon",n+1); k_sigma = DAT::tdual_ffloat_1d("BondFene::sigma",n+1); - d_k = k_k.d_view; - d_r0 = k_r0.d_view; - d_epsilon = k_epsilon.d_view; - d_sigma = k_sigma.d_view; + d_k = k_k.template view(); + d_r0 = k_r0.template view(); + d_epsilon = k_epsilon.template view(); + d_sigma = k_sigma.template view(); } /* ---------------------------------------------------------------------- diff --git a/src/KOKKOS/bond_fene_kokkos.h b/src/KOKKOS/bond_fene_kokkos.h index c630abcafcd75a66ad57fc560327999986834248..094685d0cfcd859436474d7ed073d03d1bebc3a8 100644 --- a/src/KOKKOS/bond_fene_kokkos.h +++ b/src/KOKKOS/bond_fene_kokkos.h @@ -85,10 +85,10 @@ class BondFENEKokkos : public BondFENE { DAT::tdual_ffloat_1d k_epsilon; DAT::tdual_ffloat_1d k_sigma; - DAT::t_ffloat_1d d_k; - DAT::t_ffloat_1d d_r0; - DAT::t_ffloat_1d d_epsilon; - DAT::t_ffloat_1d d_sigma; + typename AT::t_ffloat_1d d_k; + typename AT::t_ffloat_1d d_r0; + typename AT::t_ffloat_1d d_epsilon; + typename AT::t_ffloat_1d d_sigma; virtual void allocate(); }; diff --git a/src/KOKKOS/comm_kokkos.cpp b/src/KOKKOS/comm_kokkos.cpp index f38a6c21c91191f9a004c3e86d79a1762bdb68c6..da1f4a89fed120db225b88f76bbc9e4374eadafe 100644 --- a/src/KOKKOS/comm_kokkos.cpp +++ b/src/KOKKOS/comm_kokkos.cpp @@ -488,6 +488,7 @@ void CommKokkos::exchange_device() if (true) { if (k_sendflag.h_view.dimension_0()(); k_count.h_view(0) = k_exchange_sendlist.h_view.dimension_0(); while (k_count.h_view(0)>=k_exchange_sendlist.h_view.dimension_0()) { k_count.h_view(0) = 0; @@ -498,7 +499,6 @@ void CommKokkos::exchange_device() f(atomKK->k_x,k_exchange_sendlist,k_count,k_sendflag, nlocal,dim,lo,hi); Kokkos::parallel_for(nlocal,f); - DeviceType::fence(); k_exchange_sendlist.modify(); k_sendflag.modify(); k_count.modify(); @@ -534,7 +534,6 @@ void CommKokkos::exchange_device() k_exchange_sendlist,k_exchange_copylist, ExecutionSpaceFromDevice:: space,dim,lo,hi); - DeviceType::fence(); } else { while (i < nlocal) { @@ -559,7 +558,6 @@ void CommKokkos::exchange_device() atom->nlocal=avec-> unpack_exchange_kokkos(k_buf_send,nrecv,atom->nlocal,dim,lo,hi, ExecutionSpaceFromDevice::space); - DeviceType::fence(); } } else { MPI_Sendrecv(&nsend,1,MPI_INT,procneigh[dim][0],0, @@ -592,7 +590,6 @@ void CommKokkos::exchange_device() atom->nlocal = avec-> unpack_exchange_kokkos(k_buf_recv,nrecv,atom->nlocal,dim,lo,hi, ExecutionSpaceFromDevice::space); - DeviceType::fence(); } } @@ -764,7 +761,6 @@ void CommKokkos::borders_device() { total_send,nfirst,nlast,dim,lo,hi,iswap,maxsendlist[iswap]); Kokkos::TeamPolicy config((nlast-nfirst+127)/128,128); Kokkos::parallel_for(config,f); - DeviceType::fence(); total_send.template modify(); total_send.template sync(); @@ -781,7 +777,6 @@ void CommKokkos::borders_device() { total_send,nfirst,nlast,dim,lo,hi,iswap,maxsendlist[iswap]); Kokkos::TeamPolicy config((nlast-nfirst+127)/128,128); Kokkos::parallel_for(config,f); - DeviceType::fence(); total_send.template modify(); total_send.template sync(); } @@ -910,7 +905,6 @@ void CommKokkos::borders_device() { if (exec_space == Host) k_sendlist.sync(); atomKK->modified(exec_space,ALL_MASK); - DeviceType::fence(); atomKK->sync(Host,TAG_MASK); if (map_style) atom->map_set(); } diff --git a/src/KOKKOS/dihedral_charmm_kokkos.cpp b/src/KOKKOS/dihedral_charmm_kokkos.cpp index a8a8aade604a001cc8e2499b2be9c06f74f500af..7f2117c97f545021ca35172c62f9299adb9e8275 100644 --- a/src/KOKKOS/dihedral_charmm_kokkos.cpp +++ b/src/KOKKOS/dihedral_charmm_kokkos.cpp @@ -432,12 +432,12 @@ void DihedralCharmmKokkos::coeff(int narg, char **arg) Kokkos::DualView k_sin_shift("DihedralCharmm::sin_shift",nd+1); Kokkos::DualView k_weight("DihedralCharmm::weight",nd+1); - d_k = k_k.d_view; - d_multiplicity = k_multiplicity.d_view; - d_shift = k_shift.d_view; - d_cos_shift = k_cos_shift.d_view; - d_sin_shift = k_sin_shift.d_view; - d_weight = k_weight.d_view; + d_k = k_k.template view(); + d_multiplicity = k_multiplicity.template view(); + d_shift = k_shift.template view(); + d_cos_shift = k_cos_shift.template view(); + d_sin_shift = k_sin_shift.template view(); + d_weight = k_weight.template view(); int n = atom->ndihedraltypes; for (int i = 1; i <= n; i++) { @@ -479,10 +479,10 @@ void DihedralCharmmKokkos::init_style() Kokkos::DualView k_lj14_3("DihedralCharmm:lj14_3",n+1,n+1); Kokkos::DualView k_lj14_4("DihedralCharmm:lj14_4",n+1,n+1); - d_lj14_1 = k_lj14_1.d_view; - d_lj14_2 = k_lj14_2.d_view; - d_lj14_3 = k_lj14_3.d_view; - d_lj14_4 = k_lj14_4.d_view; + d_lj14_1 = k_lj14_1.template view(); + d_lj14_2 = k_lj14_2.template view(); + d_lj14_3 = k_lj14_3.template view(); + d_lj14_4 = k_lj14_4.template view(); if (weightflag) { diff --git a/src/KOKKOS/dihedral_opls_kokkos.cpp b/src/KOKKOS/dihedral_opls_kokkos.cpp index e37d4d2ef5636b867e927da9421b06f959d0b093..0ee00ca8db438c2c47eba7443e93039295ab2f93 100644 --- a/src/KOKKOS/dihedral_opls_kokkos.cpp +++ b/src/KOKKOS/dihedral_opls_kokkos.cpp @@ -348,10 +348,10 @@ void DihedralOPLSKokkos::allocate() k_k3 = DAT::tdual_ffloat_1d("DihedralOPLS::k3",n+1); k_k4 = DAT::tdual_ffloat_1d("DihedralOPLS::k4",n+1); - d_k1 = k_k1.d_view; - d_k2 = k_k2.d_view; - d_k3 = k_k3.d_view; - d_k4 = k_k4.d_view; + d_k1 = k_k1.template view(); + d_k2 = k_k2.template view(); + d_k3 = k_k3.template view(); + d_k4 = k_k4.template view(); } /* ---------------------------------------------------------------------- diff --git a/src/KOKKOS/dihedral_opls_kokkos.h b/src/KOKKOS/dihedral_opls_kokkos.h index 0a8860c87c4c3f5ca9fabc2cd58280be3b40c34e..2594f5e74d7c3c6c01ccce1be0cdee1fa577f0b0 100644 --- a/src/KOKKOS/dihedral_opls_kokkos.h +++ b/src/KOKKOS/dihedral_opls_kokkos.h @@ -83,10 +83,10 @@ class DihedralOPLSKokkos : public DihedralOPLS { DAT::tdual_ffloat_1d k_k3; DAT::tdual_ffloat_1d k_k4; - DAT::t_ffloat_1d d_k1; - DAT::t_ffloat_1d d_k2; - DAT::t_ffloat_1d d_k3; - DAT::t_ffloat_1d d_k4; + typename AT::t_ffloat_1d d_k1; + typename AT::t_ffloat_1d d_k2; + typename AT::t_ffloat_1d d_k3; + typename AT::t_ffloat_1d d_k4; virtual void allocate(); }; diff --git a/src/KOKKOS/domain_kokkos.cpp b/src/KOKKOS/domain_kokkos.cpp index 4bf8dc9841cb212bab694cae9dbe1032d711d8bd..d9c1332778116bcd6f9e21990c14f0d1ffff7666 100644 --- a/src/KOKKOS/domain_kokkos.cpp +++ b/src/KOKKOS/domain_kokkos.cpp @@ -99,7 +99,6 @@ void DomainKokkos::reset_box() DomainResetBoxFunctor f(atomKK->k_x); Kokkos::parallel_reduce(nlocal,f,result); - LMPDeviceType::fence(); double (*extent)[2] = result.value; double all[3][2]; @@ -384,7 +383,6 @@ void DomainKokkos::pbc() Kokkos::parallel_for(nlocal,f); } } - LMPDeviceType::fence(); atomKK->modified(Device,X_MASK|V_MASK|IMAGE_MASK); } @@ -424,7 +422,6 @@ void DomainKokkos::remap_all() copymode = 1; Kokkos::parallel_for(Kokkos::RangePolicy(0,nlocal),*this); - LMPDeviceType::fence(); copymode = 0; atomKK->modified(Device,X_MASK | IMAGE_MASK); @@ -528,7 +525,6 @@ void DomainKokkos::image_flip(int m_in, int n_in, int p_in) copymode = 1; Kokkos::parallel_for(Kokkos::RangePolicy(0,nlocal),*this); - LMPDeviceType::fence(); copymode = 0; atomKK->modified(Device,IMAGE_MASK); @@ -561,7 +557,6 @@ void DomainKokkos::lamda2x(int n) copymode = 1; Kokkos::parallel_for(Kokkos::RangePolicy(0,n),*this); - LMPDeviceType::fence(); copymode = 0; atomKK->modified(Device,X_MASK); @@ -587,7 +582,6 @@ void DomainKokkos::x2lamda(int n) copymode = 1; Kokkos::parallel_for(Kokkos::RangePolicy(0,n),*this); - LMPDeviceType::fence(); copymode = 0; atomKK->modified(Device,X_MASK); diff --git a/src/KOKKOS/fix_deform_kokkos.h b/src/KOKKOS/fix_deform_kokkos.h index 8fa12a2e377d6fd03e91093bc93553b4173d5c5a..69f65fbcf413898365124552fcdbb322029e348a 100644 --- a/src/KOKKOS/fix_deform_kokkos.h +++ b/src/KOKKOS/fix_deform_kokkos.h @@ -14,6 +14,8 @@ #ifdef FIX_CLASS FixStyle(deform/kk,FixDeformKokkos) +FixStyle(deform/kk/device,FixDeformKokkos) +FixStyle(deform/kk/host,FixDeformKokkos) #else diff --git a/src/KOKKOS/fix_dpd_energy_kokkos.cpp b/src/KOKKOS/fix_dpd_energy_kokkos.cpp new file mode 100644 index 0000000000000000000000000000000000000000..e6878afed4ba44287e1efecb138b7f7c95272314 --- /dev/null +++ b/src/KOKKOS/fix_dpd_energy_kokkos.cpp @@ -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. +------------------------------------------------------------------------- */ + +#include +#include +#include "fix_dpd_energy_kokkos.h" +#include "atom_masks.h" +#include "atom_kokkos.h" +#include "force.h" +#include "update.h" +#include "respa.h" +#include "modify.h" +#include "error.h" + +using namespace LAMMPS_NS; +using namespace FixConst; + +/* ---------------------------------------------------------------------- */ + +template +FixDPDenergyKokkos::FixDPDenergyKokkos(LAMMPS *lmp, int narg, char **arg) : + FixDPDenergy(lmp, narg, arg) +{ + kokkosable = 1; + atomKK = (AtomKokkos *) atom; + execution_space = ExecutionSpaceFromDevice::space; + datamask_read = EMPTY_MASK; + datamask_modify = EMPTY_MASK; + pairDPDEKK = dynamic_cast(pairDPDE); + if (!pairDPDEKK) + error->all(FLERR,"Must use pair_style dpd/fdt/energy/kk with fix dpd/energy/kk"); +} + +/* ---------------------------------------------------------------------- */ + +template +void FixDPDenergyKokkos::take_half_step() +{ + int nlocal = atom->nlocal; + if (igroup == atom->firstgroup) nlocal = atom->nfirst; + + using AT = ArrayTypes; + + atomKK->sync(execution_space, UCOND_MASK); + typename AT::t_efloat_1d uCond = atomKK->k_uCond.view(); + atomKK->sync(execution_space, UMECH_MASK); + typename AT::t_efloat_1d uMech = atomKK->k_uMech.view(); + + pairDPDEKK->k_duCond.template sync(); + typename AT::t_efloat_1d_const duCond = pairDPDEKK->k_duCond.template view(); + pairDPDEKK->k_duMech.template sync(); + typename AT::t_efloat_1d_const duMech = pairDPDEKK->k_duMech.template view(); + + auto dt = update->dt; + + Kokkos::parallel_for(nlocal, LAMMPS_LAMBDA(int i) { + uCond(i) += 0.5*dt*duCond(i); + uMech(i) += 0.5*dt*duMech(i); + }); + + atomKK->modified(execution_space, UCOND_MASK); + atomKK->modified(execution_space, UMECH_MASK); +} + +/* ---------------------------------------------------------------------- */ + +template +void FixDPDenergyKokkos::initial_integrate(int) +{ + take_half_step(); +} + +/* ---------------------------------------------------------------------- */ + +template +void FixDPDenergyKokkos::final_integrate() +{ + take_half_step(); +} + +namespace LAMMPS_NS { +template class FixDPDenergyKokkos; +#ifdef KOKKOS_HAVE_CUDA +template class FixDPDenergyKokkos; +#endif +} diff --git a/src/KOKKOS/fix_dpd_energy_kokkos.h b/src/KOKKOS/fix_dpd_energy_kokkos.h new file mode 100644 index 0000000000000000000000000000000000000000..ebf3a796fe0b033c35fd081fcef398dbbda86708 --- /dev/null +++ b/src/KOKKOS/fix_dpd_energy_kokkos.h @@ -0,0 +1,54 @@ +/* ---------------------------------------------------------------------- + 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(dpd/energy/kk,FixDPDenergyKokkos) +FixStyle(dpd/energy/kk/device,FixDPDenergyKokkos) +FixStyle(dpd/energy/kk/host,FixDPDenergyKokkos) + +#else + +#ifndef LMP_FIX_DPDE_KOKKOS_H +#define LMP_FIX_DPDE_KOKKOS_H + +#include "fix_dpd_energy.h" +#include "pair_dpd_fdt_energy_kokkos.h" + +namespace LAMMPS_NS { + +template +class FixDPDenergyKokkos : public FixDPDenergy { + public: + FixDPDenergyKokkos(class LAMMPS *, int, char **); + virtual ~FixDPDenergyKokkos() {} + virtual void initial_integrate(int); + virtual void final_integrate(); + + void take_half_step(); + protected: + PairDPDfdtEnergyKokkos* pairDPDEKK; +}; + +} + +#endif +#endif + +/* ERROR/WARNING messages: + +E: Must use pair_style dpd/fdt/energy/kk with fix dpd/energy/kk + +Self-explanatory. + +*/ diff --git a/src/KOKKOS/fix_eos_table_rx_kokkos.cpp b/src/KOKKOS/fix_eos_table_rx_kokkos.cpp new file mode 100644 index 0000000000000000000000000000000000000000..552141ced24f50d68108d372405c5cb82da03360 --- /dev/null +++ b/src/KOKKOS/fix_eos_table_rx_kokkos.cpp @@ -0,0 +1,569 @@ +/* ---------------------------------------------------------------------- + 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: Stan Moore (Sandia) +------------------------------------------------------------------------- */ + +#include +#include +#include "fix_eos_table_rx_kokkos.h" +#include "atom_kokkos.h" +#include "error.h" +#include "force.h" +#include "memory.h" +#include "comm.h" +#include +#include "modify.h" +#include "atom_masks.h" + +#define MAXLINE 1024 + +#ifdef DBL_EPSILON + #define MY_EPSILON (10.0*DBL_EPSILON) +#else + #define MY_EPSILON (10.0*2.220446049250313e-16) +#endif + + +using namespace LAMMPS_NS; +using namespace FixConst; + +/* ---------------------------------------------------------------------- */ + +template +FixEOStableRXKokkos::FixEOStableRXKokkos(LAMMPS *lmp, int narg, char **arg) : + FixEOStableRX(lmp, narg, arg) +{ + kokkosable = 1; + + atomKK = (AtomKokkos *) atom; + execution_space = ExecutionSpaceFromDevice::space; + datamask_read = EMPTY_MASK; + datamask_modify = EMPTY_MASK; + + update_table = 1; + h_table = new TableHost(); + d_table = new TableDevice(); + + k_error_flag = DAT::tdual_int_scalar("fix:error_flag"); + k_warning_flag = DAT::tdual_int_scalar("fix:warning_flag"); + + k_dHf = DAT::tdual_float_1d("fix:dHf",nspecies); + k_energyCorr = DAT::tdual_float_1d("fix:energyCorr",nspecies); + k_tempCorrCoeff = DAT::tdual_float_1d("fix:tempCorrCoeff",nspecies); + k_moleculeCorrCoeff = DAT::tdual_float_1d("fix:moleculeCorrCoeff",nspecies); + for (int n = 0; n < nspecies; n++) { + k_dHf.h_view(n) = dHf[n]; + k_energyCorr.h_view(n) = energyCorr[n]; + k_tempCorrCoeff.h_view(n) = tempCorrCoeff[n]; + k_moleculeCorrCoeff.h_view(n) = moleculeCorrCoeff[n]; + } + + k_dHf.modify(); + k_dHf.sync(); + d_dHf = k_dHf.view(); + + k_energyCorr.modify(); + k_energyCorr.sync(); + d_energyCorr = k_energyCorr.view(); + + k_tempCorrCoeff.modify(); + k_tempCorrCoeff.sync(); + d_tempCorrCoeff = k_tempCorrCoeff.view(); + + k_moleculeCorrCoeff.modify(); + k_moleculeCorrCoeff.sync(); + d_moleculeCorrCoeff = k_moleculeCorrCoeff.view(); +} + +/* ---------------------------------------------------------------------- */ + +template +FixEOStableRXKokkos::~FixEOStableRXKokkos() +{ + if (copymode) return; + + delete h_table; + delete d_table; +} + +/* ---------------------------------------------------------------------- */ + +template +void FixEOStableRXKokkos::setup(int vflag) +{ + if (update_table) + create_kokkos_tables(); + + copymode = 1; + + int nlocal = atom->nlocal; + boltz = force->boltz; + mask = atomKK->k_mask.view(); + uCond = atomKK->k_uCond.view(); + uMech = atomKK->k_uMech.view(); + uChem = atomKK->k_uChem.view(); + dpdTheta= atomKK->k_dpdTheta.view(); + uCG = atomKK->k_uCG.view(); + uCGnew = atomKK->k_uCGnew.view(); + dvector = atomKK->k_dvector.view(); + + if (!this->restart_reset) { + atomKK->sync(execution_space,MASK_MASK | UCHEM_MASK | UCG_MASK | UCGNEW_MASK); + Kokkos::parallel_for(Kokkos::RangePolicy(0,nlocal),*this); + atomKK->modified(execution_space,UCHEM_MASK | UCG_MASK | UCGNEW_MASK); + } + + // Communicate the updated momenta and velocities to all nodes + atomKK->sync(Host,UCHEM_MASK | UCG_MASK | UCGNEW_MASK); + comm->forward_comm_fix(this); + atomKK->modified(Host,UCHEM_MASK | UCG_MASK | UCGNEW_MASK); + + atomKK->sync(execution_space,MASK_MASK | UCOND_MASK | UMECH_MASK | UCHEM_MASK | DPDTHETA_MASK | DVECTOR_MASK); + Kokkos::parallel_for(Kokkos::RangePolicy(0,nlocal),*this); + atomKK->modified(execution_space,DPDTHETA_MASK); + + error_check(); + + copymode = 0; +} + +template +KOKKOS_INLINE_FUNCTION +void FixEOStableRXKokkos::operator()(TagFixEOStableRXSetup, const int &i) const { + if (mask[i] & groupbit) { + const double duChem = uCG[i] - uCGnew[i]; + uChem[i] += duChem; + uCG[i] = 0.0; + uCGnew[i] = 0.0; + } +} + +template +KOKKOS_INLINE_FUNCTION +void FixEOStableRXKokkos::operator()(TagFixEOStableRXTemperatureLookup, const int &i) const { + if (mask[i] & groupbit) + temperature_lookup(i,uCond[i]+uMech[i]+uChem[i],dpdTheta[i]); +} + +/* ---------------------------------------------------------------------- */ + +template +void FixEOStableRXKokkos::init() +{ + if (update_table) + create_kokkos_tables(); + + copymode = 1; + + int nlocal = atom->nlocal; + boltz = force->boltz; + mask = atomKK->k_mask.view(); + uCond = atomKK->k_uCond.view(); + uMech = atomKK->k_uMech.view(); + uChem = atomKK->k_uChem.view(); + dpdTheta= atomKK->k_dpdTheta.view(); + dvector = atomKK->k_dvector.view(); + + if (this->restart_reset) { + atomKK->sync(execution_space,MASK_MASK | UCOND_MASK | UMECH_MASK | UCHEM_MASK | DPDTHETA_MASK | DVECTOR_MASK); + Kokkos::parallel_for(Kokkos::RangePolicy(0,nlocal),*this); + atomKK->modified(execution_space,DPDTHETA_MASK); + } else { + atomKK->sync(execution_space,MASK_MASK | UCOND_MASK | UMECH_MASK | UCHEM_MASK | DPDTHETA_MASK | DVECTOR_MASK); + Kokkos::parallel_for(Kokkos::RangePolicy(0,nlocal),*this); + atomKK->modified(execution_space,UCOND_MASK | UMECH_MASK | UCHEM_MASK); + } + + error_check(); + + copymode = 0; +} + +template +KOKKOS_INLINE_FUNCTION +void FixEOStableRXKokkos::operator()(TagFixEOStableRXInit, const int &i) const { + double tmp; + if (mask[i] & groupbit) { + if(dpdTheta[i] <= 0.0) + k_error_flag.template view()() = 1; + energy_lookup(i,dpdTheta[i],tmp); + uCond[i] = 0.0; + uMech[i] = tmp; + uChem[i] = 0.0; + } +} + +/* ---------------------------------------------------------------------- */ + +template +void FixEOStableRXKokkos::post_integrate() +{ + if (update_table) + create_kokkos_tables(); + + copymode = 1; + + int nlocal = atom->nlocal; + boltz = force->boltz; + mask = atomKK->k_mask.view(); + uCond = atomKK->k_uCond.view(); + uMech = atomKK->k_uMech.view(); + uChem = atomKK->k_uChem.view(); + dpdTheta= atomKK->k_dpdTheta.view(); + dvector = atomKK->k_dvector.view(); + + atomKK->sync(execution_space,MASK_MASK | UCOND_MASK | UMECH_MASK | UCHEM_MASK | DPDTHETA_MASK | DVECTOR_MASK); + Kokkos::parallel_for(Kokkos::RangePolicy(0,nlocal),*this); + atomKK->modified(execution_space,DPDTHETA_MASK); + + error_check(); + + copymode = 0; +} + +template +KOKKOS_INLINE_FUNCTION +void FixEOStableRXKokkos::operator()(TagFixEOStableRXTemperatureLookup2, const int &i) const { + if (mask[i] & groupbit){ + temperature_lookup(i,uCond[i]+uMech[i]+uChem[i],dpdTheta[i]); + if (dpdTheta[i] <= 0.0) + k_error_flag.template view()() = 1; + } +} + +/* ---------------------------------------------------------------------- */ + +template +void FixEOStableRXKokkos::end_of_step() +{ + if (update_table) + create_kokkos_tables(); + + copymode = 1; + + int nlocal = atom->nlocal; + boltz = force->boltz; + mask = atomKK->k_mask.view(); + uCond = atomKK->k_uCond.view(); + uMech = atomKK->k_uMech.view(); + uChem = atomKK->k_uChem.view(); + dpdTheta= atomKK->k_dpdTheta.view(); + uCG = atomKK->k_uCG.view(); + uCGnew = atomKK->k_uCGnew.view(); + dvector = atomKK->k_dvector.view(); + + + // Communicate the ghost uCGnew + atomKK->sync(Host,UCG_MASK | UCGNEW_MASK); + comm->reverse_comm_fix(this); + atomKK->modified(Host,UCG_MASK | UCGNEW_MASK); + + atomKK->sync(execution_space,MASK_MASK | UCHEM_MASK | UCG_MASK | UCGNEW_MASK); + Kokkos::parallel_for(Kokkos::RangePolicy(0,nlocal),*this); + atomKK->modified(execution_space,UCHEM_MASK | UCG_MASK | UCGNEW_MASK); + + // Communicate the updated momenta and velocities to all nodes + atomKK->sync(Host,UCHEM_MASK | UCG_MASK | UCGNEW_MASK); + comm->forward_comm_fix(this); + atomKK->modified(Host,UCHEM_MASK | UCG_MASK | UCGNEW_MASK); + + atomKK->sync(execution_space,MASK_MASK | UCOND_MASK | UMECH_MASK | UCHEM_MASK | DPDTHETA_MASK | DVECTOR_MASK); + Kokkos::parallel_for(Kokkos::RangePolicy(0,nlocal),*this); + atomKK->modified(execution_space,DPDTHETA_MASK); + + error_check(); + + copymode = 0; +} + +/* ---------------------------------------------------------------------- + calculate potential ui at temperature thetai +------------------------------------------------------------------------- */ + +template +KOKKOS_INLINE_FUNCTION +void FixEOStableRXKokkos::energy_lookup(int id, double thetai, double &ui) const +{ + int itable, nPG; + double fraction, uTmp, nMolecules, nTotal, nTotalPG; + double tolerance = 1.0e-10; + + ui = 0.0; + nTotal = 0.0; + nTotalPG = 0.0; + nPG = 0; + + if (rx_flag) { + for (int ispecies = 0; ispecies < nspecies; ispecies++ ) { + nTotal += dvector(ispecies,id); + if (fabs(d_moleculeCorrCoeff[ispecies]) > tolerance) { + nPG++; + nTotalPG += dvector(ispecies,id); + } + } + } else { + nTotal = 1.0; + } + + for(int ispecies=0;ispecieslo); + thetai = MAX(thetai,d_table_const.lo(ispecies)); + //thetai = MIN(thetai,tb->hi); + thetai = MIN(thetai,d_table_const.hi(ispecies)); + + if (tabstyle == LINEAR) { + //itable = static_cast ((thetai - tb->lo) * tb->invdelta); + itable = static_cast ((thetai - d_table_const.lo(ispecies)) * d_table_const.invdelta(ispecies)); + //fraction = (thetai - tb->r[itable]) * tb->invdelta; + fraction = (thetai - d_table_const.r(ispecies,itable)) * d_table_const.invdelta(ispecies); + //uTmp = tb->e[itable] + fraction*tb->de[itable]; + uTmp = d_table_const.e(ispecies,itable) + fraction*d_table_const.de(ispecies,itable); + + uTmp += d_dHf[ispecies]; + uTmp += d_tempCorrCoeff[ispecies]*thetai; // temperature correction + uTmp += d_energyCorr[ispecies]; // energy correction + if (nPG > 0) ui += d_moleculeCorrCoeff[ispecies]*nTotalPG/double(nPG); // molecule correction + + if (rx_flag) nMolecules = dvector(ispecies,id); + else nMolecules = 1.0; + ui += nMolecules*uTmp; + } + } + ui = ui - double(nTotal+1.5)*boltz*thetai; +} + +/* ---------------------------------------------------------------------- + calculate temperature thetai at energy ui +------------------------------------------------------------------------- */ + +template +KOKKOS_INLINE_FUNCTION +void FixEOStableRXKokkos::temperature_lookup(int id, double ui, double &thetai) const +{ + //Table *tb = &tables[0]; + + int it; + double t1,t2,u1,u2,f1,f2; + double maxit = 100; + double temp; + double delta = 0.001; + double tolerance = 1.0e-10; + int lo = d_table_const.lo(0); + int hi = d_table_const.hi(0); + + // Store the current thetai in t1 + t1 = MAX(thetai,lo); + t1 = MIN(t1,hi); + if(t1==hi) delta = -delta; + + // Compute u1 at thetai + energy_lookup(id,t1,u1); + + // Compute f1 + f1 = u1 - ui; + + // Compute guess of t2 + t2 = (1.0 + delta)*t1; + + // Compute u2 at t2 + energy_lookup(id,t2,u2); + + // Compute f1 + f2 = u2 - ui; + + // Apply the Secant Method + for(it=0; it()() = 2; + temp = t1; + temp = MAX(temp,lo); + temp = MIN(temp,hi); + k_warning_flag.template view()() = 1; + break; + } + temp = t2 - f2*(t2-t1)/(f2-f1); + if(fabs(temp-t2) < tolerance) break; + f1 = f2; + t1 = t2; + t2 = temp; + energy_lookup(id,t2,u2); + f2 = u2 - ui; + } + if(it==maxit){ + if(isnan(f1) || isnan(f2) || isnan(ui) || isnan(thetai) || isnan(t1) || isnan(t2)) + k_error_flag.template view()() = 2; + else + k_error_flag.template view()() = 3; + } + thetai = temp; +} + +/* ---------------------------------------------------------------------- */ + +template +int FixEOStableRXKokkos::pack_forward_comm(int n, int *list, double *buf, int pbc_flag, int *pbc) +{ + int ii,jj,m; + HAT::t_efloat_1d h_uChem = atomKK->k_uChem.h_view; + HAT::t_efloat_1d h_uCG = atomKK->k_uCG.h_view; + HAT::t_efloat_1d h_uCGnew = atomKK->k_uCGnew.h_view; + + m = 0; + for (ii = 0; ii < n; ii++) { + jj = list[ii]; + buf[m++] = h_uChem[jj]; + buf[m++] = h_uCG[jj]; + buf[m++] = h_uCGnew[jj]; + } + return m; +} + +/* ---------------------------------------------------------------------- */ + +template +void FixEOStableRXKokkos::unpack_forward_comm(int n, int first, double *buf) +{ + int ii,m,last; + HAT::t_efloat_1d h_uChem = atomKK->k_uChem.h_view; + HAT::t_efloat_1d h_uCG = atomKK->k_uCG.h_view; + HAT::t_efloat_1d h_uCGnew = atomKK->k_uCGnew.h_view; + + m = 0; + last = first + n ; + for (ii = first; ii < last; ii++){ + h_uChem[ii] = buf[m++]; + h_uCG[ii] = buf[m++]; + h_uCGnew[ii] = buf[m++]; + } +} + +/* ---------------------------------------------------------------------- */ + +template +int FixEOStableRXKokkos::pack_reverse_comm(int n, int first, double *buf) +{ + int i,m,last; + HAT::t_efloat_1d h_uCG = atomKK->k_uCG.h_view; + HAT::t_efloat_1d h_uCGnew = atomKK->k_uCGnew.h_view; + + m = 0; + last = first + n; + for (i = first; i < last; i++) { + buf[m++] = h_uCG[i]; + buf[m++] = h_uCGnew[i]; + } + return m; +} + +/* ---------------------------------------------------------------------- */ + +template +void FixEOStableRXKokkos::unpack_reverse_comm(int n, int *list, double *buf) +{ + int i,j,m; + HAT::t_efloat_1d h_uCG = atomKK->k_uCG.h_view; + HAT::t_efloat_1d h_uCGnew = atomKK->k_uCGnew.h_view; + + m = 0; + for (i = 0; i < n; i++) { + j = list[i]; + + h_uCG[j] += buf[m++]; + h_uCGnew[j] += buf[m++]; + } +} + +/* ---------------------------------------------------------------------- */ + +template +void FixEOStableRXKokkos::error_check() +{ + k_error_flag.template modify(); + k_error_flag.template sync(); + if (k_error_flag.h_view() == 1) + error->one(FLERR,"Internal temperature <= zero"); + else if (k_error_flag.h_view() == 2) + error->one(FLERR,"NaN detected in secant solver."); + else if (k_error_flag.h_view() == 3) + error->one(FLERR,"Maxit exceeded in secant solver."); + + k_warning_flag.template modify(); + k_warning_flag.template sync(); + if (k_warning_flag.h_view()) { + error->warning(FLERR,"Secant solver did not converge because table bounds were exceeded."); + k_warning_flag.h_view() = 0; + k_warning_flag.template modify(); + k_warning_flag.template sync(); + } +} + +/* ---------------------------------------------------------------------- */ + +template +void FixEOStableRXKokkos::create_kokkos_tables() +{ + const int tlm1 = tablength-1; + + memory->create_kokkos(d_table->lo,h_table->lo,ntables,"Table::lo"); + memory->create_kokkos(d_table->hi,h_table->hi,ntables,"Table::hi"); + memory->create_kokkos(d_table->invdelta,h_table->invdelta,ntables,"Table::invdelta"); + + if(tabstyle == LINEAR) { + memory->create_kokkos(d_table->r,h_table->r,ntables,tablength,"Table::r"); + memory->create_kokkos(d_table->e,h_table->e,ntables,tablength,"Table::e"); + memory->create_kokkos(d_table->de,h_table->de,ntables,tlm1,"Table::de"); + } + + for(int i=0; i < ntables; i++) { + Table* tb = &tables[i]; + + h_table->lo[i] = tb->lo; + h_table->hi[i] = tb->hi; + h_table->invdelta[i] = tb->invdelta; + + for(int j = 0; jr.dimension_1(); j++) + h_table->r(i,j) = tb->r[j]; + for(int j = 0; je.dimension_1(); j++) + h_table->e(i,j) = tb->e[j]; + for(int j = 0; jde.dimension_1(); j++) + h_table->de(i,j) = tb->de[j]; + } + + Kokkos::deep_copy(d_table->lo,h_table->lo); + Kokkos::deep_copy(d_table->hi,h_table->hi); + Kokkos::deep_copy(d_table->invdelta,h_table->invdelta); + Kokkos::deep_copy(d_table->r,h_table->r); + Kokkos::deep_copy(d_table->e,h_table->e); + Kokkos::deep_copy(d_table->de,h_table->de); + + d_table_const.lo = d_table->lo; + d_table_const.hi = d_table->hi; + d_table_const.invdelta = d_table->invdelta; + d_table_const.r = d_table->r; + d_table_const.e = d_table->e; + d_table_const.de = d_table->de; + + update_table = 0; +} + +/* ---------------------------------------------------------------------- */ + +namespace LAMMPS_NS { +template class FixEOStableRXKokkos; +#ifdef KOKKOS_HAVE_CUDA +template class FixEOStableRXKokkos; +#endif +} diff --git a/src/KOKKOS/fix_eos_table_rx_kokkos.h b/src/KOKKOS/fix_eos_table_rx_kokkos.h new file mode 100644 index 0000000000000000000000000000000000000000..91d73f10360b23082d977dbdf97f125a930defb2 --- /dev/null +++ b/src/KOKKOS/fix_eos_table_rx_kokkos.h @@ -0,0 +1,212 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#ifdef FIX_CLASS + +FixStyle(eos/table/rx/kk,FixEOStableRXKokkos) +FixStyle(eos/table/rx/kk/device,FixEOStableRXKokkos) +FixStyle(eos/table/rx/kk/host,FixEOStableRXKokkos) + +#else + +#ifndef LMP_FIX_EOS_TABLE_RX_KOKKOS_H +#define LMP_FIX_EOS_TABLE_RX_KOKKOS_H + +#include "fix_eos_table_rx.h" +#include "kokkos_type.h" + +namespace LAMMPS_NS { + +struct TagFixEOStableRXInit{}; +struct TagFixEOStableRXSetup{}; +struct TagFixEOStableRXTemperatureLookup{}; +struct TagFixEOStableRXTemperatureLookup2{}; + +template +class FixEOStableRXKokkos : public FixEOStableRX { + public: + typedef DeviceType device_type; + typedef ArrayTypes AT; + typedef EV_FLOAT value_type; + + FixEOStableRXKokkos(class LAMMPS *, int, char **); + virtual ~FixEOStableRXKokkos(); + void setup(int); + void init(); + void post_integrate(); + void end_of_step(); + + KOKKOS_INLINE_FUNCTION + void operator()(TagFixEOStableRXInit, const int&) const; + + KOKKOS_INLINE_FUNCTION + void operator()(TagFixEOStableRXSetup, const int&) const; + + KOKKOS_INLINE_FUNCTION + void operator()(TagFixEOStableRXTemperatureLookup, const int&) const; + + KOKKOS_INLINE_FUNCTION + void operator()(TagFixEOStableRXTemperatureLookup2, const int&) const; + + KOKKOS_INLINE_FUNCTION + void energy_lookup(int, double, double &) const; + + KOKKOS_INLINE_FUNCTION + void temperature_lookup(int, double, double &) const; + + protected: + //struct Table { + // int ninput; + // double lo,hi; + // double *rfile,*efile; + // double *e2file; + // double delta,invdelta,deltasq6; + // double *r,*e,*de,*e2; + //}; + //Table *tables, *tables2; + + /*struct TableDeviceConst { + typename ArrayTypes::t_int_1d_randomread lo,hi; + typename ArrayTypes::t_ffloat_1d_randomread invdelta; + typename ArrayTypes::t_ffloat_2d_randomread r,e,de; + };*/ + //Its faster not to use texture fetch if the number of tables is less than 32! + struct TableDeviceConst { + typename ArrayTypes::t_int_1d lo,hi; + typename ArrayTypes::t_ffloat_1d invdelta; + typename ArrayTypes::t_ffloat_2d_randomread r,e,de; + }; + + struct TableDevice { + typename ArrayTypes::t_int_1d lo,hi; + typename ArrayTypes::t_ffloat_1d invdelta; + typename ArrayTypes::t_ffloat_2d r,e,de; + }; + + struct TableHost { + typename ArrayTypes::t_int_1d lo,hi; + typename ArrayTypes::t_ffloat_1d invdelta; + typename ArrayTypes::t_ffloat_2d r,e,de; + }; + + TableDeviceConst d_table_const; + TableDevice* d_table; + TableHost* h_table; + + int **tabindex; + + double boltz; + + void allocate(); + void error_check(); + int update_table; + void create_kokkos_tables(); + + DAT::tdual_float_1d k_dHf,k_energyCorr,k_tempCorrCoeff,k_moleculeCorrCoeff; + typename AT::t_float_1d d_dHf,d_energyCorr,d_tempCorrCoeff,d_moleculeCorrCoeff; + + typename AT::t_int_1d mask; + typename AT::t_efloat_1d uCond,uMech,uChem,uCG,uCGnew,rho,dpdTheta,duChem; + typename AT::t_float_2d dvector; + + DAT::tdual_int_scalar k_error_flag; + DAT::tdual_int_scalar k_warning_flag; + + int pack_reverse_comm(int, int, double *); + void unpack_reverse_comm(int, int *, double *); + int pack_forward_comm(int , int *, double *, int, int *); + void unpack_forward_comm(int , int , double *); + + }; +} + +#endif +#endif + +/* ERROR/WARNING messages: + +E: Illegal ... command + +Self-explanatory. Check the input script syntax and compare to the +documentation for the command. You can use -echo screen as a +command-line option when running LAMMPS to see the offending line. + +E: FixEOStableRXKokkos requires a fix rx command. + +The fix rx command must come before the pair style command in the input file + +E: There are no rx species specified + +There must be at least one species specified through the fix rx command + +E: Invalid eos/table/rx length + +The eos/table/rx table must have more than one entry. + +E: eos/table/rx values are not increasing + +The equation-of-state must an increasing function + +E: FixEOStableRX requires atom_style with internal temperature and energies (e.g. dpd) + +Self-explanatory. + +E: Internal temperature <= zero. + +Self-explanatory. + +E: Cannot open eos table/rx potential file %s + +Self-explanatory. + +E: Incorrect format in eos table/rx file + +Self-explanatory. + +E: Cannot open file %s + +Self-explanatory. + +E: Did not find keyword in table file + +Self-explanatory. + +E: Illegal fix eos/table/rx command + +Incorrect number of arguments specified for the fix eos/table/rx command. + +E: Invalid keyword in fix eos/table/rx parameters + +Self-explanatory. + +E: The number of columns in fix eos/table/rx does not match the number of species. + +Self-explanatory. Check format for fix eos/table/rx file. + +E: fix eos/table/rx parameters did not set N + +The number of table entries was not set in the eos/table/rx file + +W: Secant solver did not converge because table bounds were exceeded + +The secant solver failed to converge, resulting in the lower or upper table bound temperature to be returned + +E: NaN detected in secant solver. + +Self-explanatory. + +E: Maxit exceeded in secant solver + +The maximum number of interations was exceeded in the secant solver + +*/ diff --git a/src/KOKKOS/fix_nh_kokkos.cpp b/src/KOKKOS/fix_nh_kokkos.cpp index fb03bf68c6308163a2126a0e9f9a2ec82f9139c2..7136c776a1de7e39d670fa53c69945f8f1d15b3f 100644 --- a/src/KOKKOS/fix_nh_kokkos.cpp +++ b/src/KOKKOS/fix_nh_kokkos.cpp @@ -80,7 +80,7 @@ void FixNHKokkos::init() FixNH::init(); atomKK->k_mass.modify(); - atomKK->k_mass.sync(); + atomKK->k_mass.sync(); } /* ---------------------------------------------------------------------- diff --git a/src/KOKKOS/fix_nve_kokkos.cpp b/src/KOKKOS/fix_nve_kokkos.cpp index eb41443bab6c410044ad6a2f32a0cd7c3ee2feb0..c071447eb7872e72f51055e8ab5232a574f29545 100644 --- a/src/KOKKOS/fix_nve_kokkos.cpp +++ b/src/KOKKOS/fix_nve_kokkos.cpp @@ -46,7 +46,7 @@ void FixNVEKokkos::init() FixNVE::init(); atomKK->k_mass.modify(); - atomKK->k_mass.sync(); + atomKK->k_mass.sync(); } /* ---------------------------------------------------------------------- diff --git a/src/KOKKOS/fix_property_atom_kokkos.cpp b/src/KOKKOS/fix_property_atom_kokkos.cpp new file mode 100644 index 0000000000000000000000000000000000000000..cb52988c318fcbd147a534ac16d2ea5494f5f63d --- /dev/null +++ b/src/KOKKOS/fix_property_atom_kokkos.cpp @@ -0,0 +1,72 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#include +#include +#include "fix_property_atom_kokkos.h" +#include "atom_kokkos.h" +#include "comm.h" +#include "memory.h" +#include "error.h" +#include "update.h" + +using namespace LAMMPS_NS; +using namespace FixConst; + +enum{MOLECULE,CHARGE,RMASS,INTEGER,DOUBLE}; + +/* ---------------------------------------------------------------------- */ + +FixPropertyAtomKokkos::FixPropertyAtomKokkos(LAMMPS *lmp, int narg, char **arg) : + FixPropertyAtom(lmp, narg, arg) +{ + atomKK = (AtomKokkos *) atom; +} + +/* ---------------------------------------------------------------------- + allocate atom-based arrays + initialize new values to 0, + since AtomVec class won't do it as atoms are added, + e.g. in create_atom() or data_atom() +------------------------------------------------------------------------- */ + +void FixPropertyAtomKokkos::grow_arrays(int nmax) +{ + for (int m = 0; m < nvalue; m++) { + if (style[m] == MOLECULE) { + memory->grow(atom->molecule,nmax,"atom:molecule"); + size_t nbytes = (nmax-nmax_old) * sizeof(tagint); + memset(&atom->molecule[nmax_old],0,nbytes); + } else if (style[m] == CHARGE) { + memory->grow(atom->q,nmax,"atom:q"); + size_t nbytes = (nmax-nmax_old) * sizeof(double); + memset(&atom->q[nmax_old],0,nbytes); + } else if (style[m] == RMASS) { + memory->grow(atom->rmass,nmax,"atom:rmass"); + size_t nbytes = (nmax-nmax_old) * sizeof(double); + memset(&atom->rmass[nmax_old],0,nbytes); + } else if (style[m] == INTEGER) { + memory->grow(atom->ivector[index[m]],nmax,"atom:ivector"); + size_t nbytes = (nmax-nmax_old) * sizeof(int); + memset(&atom->ivector[index[m]][nmax_old],0,nbytes); + } else if (style[m] == DOUBLE) { + memory->grow_kokkos(atomKK->k_dvector,atomKK->dvector,atomKK->k_dvector.dimension_0(),nmax, + "atom:dvector"); + //memory->grow(atom->dvector[index[m]],nmax,"atom:dvector"); + //size_t nbytes = (nmax-nmax_old) * sizeof(double); + //memset(&atom->dvector[index[m]][nmax_old],0,nbytes); + } + } + + nmax_old = nmax; +} diff --git a/src/KOKKOS/fix_property_atom_kokkos.h b/src/KOKKOS/fix_property_atom_kokkos.h new file mode 100644 index 0000000000000000000000000000000000000000..ed1e4d7cfb8be27310cf8b3347ed3f417103edad --- /dev/null +++ b/src/KOKKOS/fix_property_atom_kokkos.h @@ -0,0 +1,90 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#ifdef FIX_CLASS + +FixStyle(property/atom/kk,FixPropertyAtomKokkos) + +#else + +#ifndef LMP_FIX_PROPERTY_ATOM_KOKKOS_H +#define LMP_FIX_PROPERTY_ATOM_KOKKOS_H + +#include "fix_property_atom.h" + +namespace LAMMPS_NS { + +class FixPropertyAtomKokkos : public FixPropertyAtom { + public: + FixPropertyAtomKokkos(class LAMMPS *, int, char **); + virtual ~FixPropertyAtomKokkos() {} + + void grow_arrays(int); +}; + +} + +#endif +#endif + +/* ERROR/WARNING messages: + +E: Illegal ... command + +Self-explanatory. Check the input script syntax and compare to the +documentation for the command. You can use -echo screen as a +command-line option when running LAMMPS to see the offending line. + +E: Fix property/atom mol when atom_style already has molecule attribute + +Self-explanatory. + +E: Fix property/atom cannot specify mol twice + +Self-explanatory. + +E: Fix property/atom q when atom_style already has charge attribute + +Self-explanatory. + +E: Fix property/atom cannot specify q twice + +Self-explanatory. + +E: Fix property/atom vector name already exists + +The name for an integer or floating-point vector must be unique. + +W: Fix property/atom mol or charge w/out ghost communication + +A model typically needs these properties defined for ghost atoms. + +E: Atom style was redefined after using fix property/atom + +This is not allowed. + +E: Incorrect %s format in data file + +A section of the data file being read by fix property/atom does +not have the correct number of values per line. + +E: Too few lines in %s section of data file + +Self-explanatory. + +E: Invalid atom ID in %s section of data file + +An atom in a section of the data file being read by fix property/atom +has an invalid atom ID that is <= 0 or > the maximum existing atom ID. + +*/ diff --git a/src/KOKKOS/fix_qeq_reax_kokkos.cpp b/src/KOKKOS/fix_qeq_reax_kokkos.cpp index cef003222a813922ba223f03512ae495651efe48..e54b53ae89dfae19de258c12234728625f6650fe 100644 --- a/src/KOKKOS/fix_qeq_reax_kokkos.cpp +++ b/src/KOKKOS/fix_qeq_reax_kokkos.cpp @@ -79,7 +79,7 @@ template void FixQEqReaxKokkos::init() { atomKK->k_q.modify(); - atomKK->k_q.sync(); + atomKK->k_q.sync(); FixQEqReax::init(); diff --git a/src/KOKKOS/fix_reaxc_bonds_kokkos.cpp b/src/KOKKOS/fix_reaxc_bonds_kokkos.cpp index e4fb9385a5167d01fb29356b22dbe7fc922c6aca..0d74a49ed304498a5f11d55133898a4565e56002 100644 --- a/src/KOKKOS/fix_reaxc_bonds_kokkos.cpp +++ b/src/KOKKOS/fix_reaxc_bonds_kokkos.cpp @@ -64,7 +64,7 @@ FixReaxCBondsKokkos::~FixReaxCBondsKokkos() void FixReaxCBondsKokkos::init() { - Pair *pair_kk = force->pair_match("reax/c/kk",1); + Pair *pair_kk = force->pair_match("reax/c/kk",0); if (pair_kk == NULL) error->all(FLERR,"Cannot use fix reax/c/bonds without " "pair_style reax/c/kk"); diff --git a/src/KOKKOS/fix_reaxc_bonds_kokkos.h b/src/KOKKOS/fix_reaxc_bonds_kokkos.h index e85a7988f3aca259b727cc65e8efa5764cf84b88..55adb6f8d96741e31957a492359b03bc0633d501 100644 --- a/src/KOKKOS/fix_reaxc_bonds_kokkos.h +++ b/src/KOKKOS/fix_reaxc_bonds_kokkos.h @@ -14,6 +14,8 @@ #ifdef FIX_CLASS FixStyle(reax/c/bonds/kk,FixReaxCBondsKokkos) +FixStyle(reax/c/bonds/kk/device,FixReaxCBondsKokkos) +FixStyle(reax/c/bonds/kk/host,FixReaxCBondsKokkos) #else diff --git a/src/KOKKOS/fix_reaxc_species_kokkos.cpp b/src/KOKKOS/fix_reaxc_species_kokkos.cpp index 8b778ecf650e582b53dd757e460e0e937e115f34..f2719f9f0e7048a6db47bf49dfd09979a6f5074b 100644 --- a/src/KOKKOS/fix_reaxc_species_kokkos.cpp +++ b/src/KOKKOS/fix_reaxc_species_kokkos.cpp @@ -66,7 +66,7 @@ FixReaxCSpeciesKokkos::~FixReaxCSpeciesKokkos() void FixReaxCSpeciesKokkos::init() { - Pair* pair_kk = force->pair_match("reax/c/kk",1); + Pair* pair_kk = force->pair_match("reax/c/kk",0); if (pair_kk == NULL) error->all(FLERR,"Cannot use fix reax/c/species/kk without " "pair_style reax/c/kk"); diff --git a/src/KOKKOS/fix_reaxc_species_kokkos.h b/src/KOKKOS/fix_reaxc_species_kokkos.h index 64de060006caf0a9965f40c33bad609cfdd468e2..7c163b23b54500438d0e1de68d524ffe97a8fd86 100644 --- a/src/KOKKOS/fix_reaxc_species_kokkos.h +++ b/src/KOKKOS/fix_reaxc_species_kokkos.h @@ -14,6 +14,8 @@ #ifdef FIX_CLASS FixStyle(reax/c/species/kk,FixReaxCSpeciesKokkos) +FixStyle(reax/c/species/kk/device,FixReaxCSpeciesKokkos) +FixStyle(reax/c/species/kk/host,FixReaxCSpeciesKokkos) #else diff --git a/src/KOKKOS/fix_rx_kokkos.cpp b/src/KOKKOS/fix_rx_kokkos.cpp new file mode 100644 index 0000000000000000000000000000000000000000..b1cfd20be23f57a25981e151a5098c0b43b13ae6 --- /dev/null +++ b/src/KOKKOS/fix_rx_kokkos.cpp @@ -0,0 +1,2279 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#include +#include +#include "fix_rx_kokkos.h" +#include "atom_masks.h" +#include "atom_kokkos.h" +#include "force.h" +#include "memory.h" +#include "update.h" +#include "respa.h" +#include "modify.h" +#include "neighbor.h" +#include "neigh_list_kokkos.h" +#include "neigh_request.h" +#include "error.h" +#include "math_special_kokkos.h" + +#include // DBL_EPSILON + +using namespace LAMMPS_NS; +using namespace FixConst; +using namespace MathSpecialKokkos; + +#ifdef DBL_EPSILON + #define MY_EPSILON (10.0*DBL_EPSILON) +#else + #define MY_EPSILON (10.0*2.220446049250313e-16) +#endif + +#define SparseKinetics_enableIntegralReactions (true) +#define SparseKinetics_invalidIndex (-1) + +// From fix_rx.cpp ... this should be lifted into fix_rx.h or fix_rx_kokkos.h? +enum{NONE,HARMONIC}; +enum{LUCY}; + +namespace /* anonymous */ +{ + +typedef double TimerType; +TimerType getTimeStamp(void) { return MPI_Wtime(); } +double getElapsedTime( const TimerType &t0, const TimerType &t1) { return t1-t0; } + +} // end namespace + +/* ---------------------------------------------------------------------- */ + +template +FixRxKokkos::FixRxKokkos(LAMMPS *lmp, int narg, char **arg) : + FixRX(lmp, narg, arg), + pairDPDEKK(NULL), + update_kinetics_data(true) +{ + kokkosable = 1; + atomKK = (AtomKokkos *) atom; + execution_space = ExecutionSpaceFromDevice::space; + datamask_read = EMPTY_MASK; + datamask_modify = EMPTY_MASK; + + k_error_flag = DAT::tdual_int_scalar("FixRxKokkos::k_error_flag"); + + //printf("Inside FixRxKokkos::FixRxKokkos\n"); +} + +template +FixRxKokkos::~FixRxKokkos() +{ + //printf("Inside FixRxKokkos::~FixRxKokkos copymode= %d\n", copymode); + if (copymode) return; + + if (localTempFlag) + memory->destroy_kokkos(k_dpdThetaLocal, dpdThetaLocal); + + memory->destroy_kokkos(k_sumWeights, sumWeights); + //memory->destroy_kokkos(k_sumWeights); + + //delete [] scratchSpace; + memory->destroy_kokkos(d_scratchSpace); + + memory->destroy_kokkos(k_cutsq); +} + +/* ---------------------------------------------------------------------- */ + +template +void FixRxKokkos::post_constructor() +{ + // Run the parents and then reset one value. + FixRX::post_constructor(); + + // Need a copy of this + this->my_restartFlag = modify->fix[modify->nfix-1]->restart_reset; +} + +/* ---------------------------------------------------------------------- */ + +template +void FixRxKokkos::init() +{ + //printf("Inside FixRxKokkos::init\n"); + + // Call the parent's version. + //FixRX::init(); + + pairDPDE = (PairDPDfdtEnergy *) force->pair_match("dpd/fdt/energy",1); + if (pairDPDE == NULL) + pairDPDE = (PairDPDfdtEnergy *) force->pair_match("dpd/fdt/energy/kk",1); + + if (pairDPDE == NULL) + error->all(FLERR,"Must use pair_style dpd/fdt/energy with fix rx"); + + pairDPDEKK = dynamic_cast(pairDPDE); + if (pairDPDEKK == NULL) + error->all(FLERR,"Must use pair_style dpd/fdt/energy/kk with fix rx/kk"); + + bool eos_flag = false; + for (int i = 0; i < modify->nfix; i++) + if (strncmp(modify->fix[i]->style,"eos/table/rx",3) == 0) eos_flag = true; + if(!eos_flag) error->all(FLERR,"fix rx requires fix eos/table/rx to be specified"); + + if (update_kinetics_data) + create_kinetics_data(); + + // From FixRX::init() + // need a half neighbor list + // built whenever re-neighboring occurs + + int irequest = neighbor->request(this,instance_me); + neighbor->requests[irequest]->pair = 0; + neighbor->requests[irequest]->fix = 1; + + // Update the neighbor data for Kokkos. + int neighflag = lmp->kokkos->neighflag; + + neighbor->requests[irequest]-> + kokkos_host = Kokkos::Impl::is_same::value && + !Kokkos::Impl::is_same::value; + neighbor->requests[irequest]-> + kokkos_device = Kokkos::Impl::is_same::value; + + if (neighflag == FULL) { + neighbor->requests[irequest]->full = 1; + neighbor->requests[irequest]->half = 0; + } else { //if (neighflag == HALF || neighflag == HALFTHREAD) + neighbor->requests[irequest]->full = 0; + neighbor->requests[irequest]->half = 1; + } +} + +/* ---------------------------------------------------------------------- */ + +template +void FixRxKokkos::init_list(int, class NeighList* ptr) +{ + //printf("Inside FixRxKokkos::init_list\n"); + this->list = ptr; +} + +/* ---------------------------------------------------------------------- */ + +template +void FixRxKokkos::rk4(const double t_stop, double *y, double *rwork, void* v_params) const +{ + double *k1 = rwork; + double *k2 = k1 + nspecies; + double *k3 = k2 + nspecies; + double *k4 = k3 + nspecies; + double *yp = k4 + nspecies; + + const int numSteps = minSteps; + + const double h = t_stop / double(numSteps); + + // Run the requested steps with h. + for (int step = 0; step < numSteps; step++) + { + // k1 + rhs(0.0,y,k1,v_params); + + // k2 + for (int ispecies = 0; ispecies < nspecies; ispecies++) + yp[ispecies] = y[ispecies] + 0.5*h*k1[ispecies]; + + rhs(0.0,yp,k2,v_params); + + // k3 + for (int ispecies = 0; ispecies < nspecies; ispecies++) + yp[ispecies] = y[ispecies] + 0.5*h*k2[ispecies]; + + rhs(0.0,yp,k3,v_params); + + // k4 + for (int ispecies = 0; ispecies < nspecies; ispecies++) + yp[ispecies] = y[ispecies] + h*k3[ispecies]; + + rhs(0.0,yp,k4,v_params); + + for (int ispecies = 0; ispecies < nspecies; ispecies++) + y[ispecies] += h*(k1[ispecies]/6.0 + k2[ispecies]/3.0 + k3[ispecies]/3.0 + k4[ispecies]/6.0); + + } // end for (int step... + +} + +/* ---------------------------------------------------------------------- */ + +template + template +void FixRxKokkos::k_rk4(const double t_stop, VectorType& y, VectorType& rwork, UserDataType& userData) const +{ + VectorType k1( rwork ); + VectorType k2( &k1[nspecies] ); + VectorType k3( &k2[nspecies] ); + VectorType k4( &k3[nspecies] ); + VectorType yp( &k4[nspecies] ); + + const int numSteps = minSteps; + + const double h = t_stop / double(numSteps); + + // Run the requested steps with h. + for (int step = 0; step < numSteps; step++) + { + // k1 + k_rhs(0.0,y,k1, userData); + + // k2 + for (int ispecies = 0; ispecies < nspecies; ispecies++) + yp[ispecies] = y[ispecies] + 0.5*h*k1[ispecies]; + + k_rhs(0.0,yp,k2, userData); + + // k3 + for (int ispecies = 0; ispecies < nspecies; ispecies++) + yp[ispecies] = y[ispecies] + 0.5*h*k2[ispecies]; + + k_rhs(0.0,yp,k3, userData); + + // k4 + for (int ispecies = 0; ispecies < nspecies; ispecies++) + yp[ispecies] = y[ispecies] + h*k3[ispecies]; + + k_rhs(0.0,yp,k4, userData); + + for (int ispecies = 0; ispecies < nspecies; ispecies++) + y[ispecies] += h*(k1[ispecies]/6.0 + k2[ispecies]/3.0 + k3[ispecies]/3.0 + k4[ispecies]/6.0); + + } // end for (int step... + +} + +/* ---------------------------------------------------------------------- */ + +// f1 = dt*f(t,x) +// f2 = dt*f(t+ c20*dt,x + c21*f1) +// f3 = dt*f(t+ c30*dt,x + c31*f1 + c32*f2) +// f4 = dt*f(t+ c40*dt,x + c41*f1 + c42*f2 + c43*f3) +// f5 = dt*f(t+dt,x + c51*f1 + c52*f2 + c53*f3 + c54*f4) +// f6 = dt*f(t+ c60*dt,x + c61*f1 + c62*f2 + c63*f3 + c64*f4 + c65*f5) +// +// fifth-order runge-kutta integration +// x5 = x + b1*f1 + b3*f3 + b4*f4 + b5*f5 + b6*f6 +// fourth-order runge-kutta integration +// x = x + a1*f1 + a3*f3 + a4*f4 + a5*f5 + +template + template +void FixRxKokkos::k_rkf45_step (const int neq, const double h, VectorType& y, VectorType& y_out, VectorType& rwk, UserDataType& userData) const +{ + const double c21=0.25; + const double c31=0.09375; + const double c32=0.28125; + const double c41=0.87938097405553; + const double c42=-3.2771961766045; + const double c43=3.3208921256258; + const double c51=2.0324074074074; + const double c52=-8.0; + const double c53=7.1734892787524; + const double c54=-0.20589668615984; + const double c61=-0.2962962962963; + const double c62=2.0; + const double c63=-1.3816764132554; + const double c64=0.45297270955166; + const double c65=-0.275; + const double a1=0.11574074074074; + const double a3=0.54892787524366; + const double a4=0.5353313840156; + const double a5=-0.2; + const double b1=0.11851851851852; + const double b3=0.51898635477583; + const double b4=0.50613149034201; + const double b5=-0.18; + const double b6=0.036363636363636; + + // local dependent variables (5 total) + VectorType& f1 = rwk; + VectorType f2( &rwk[ neq] ); + VectorType f3( &rwk[2*neq] ); + VectorType f4( &rwk[3*neq] ); + VectorType f5( &rwk[4*neq] ); + VectorType f6( &rwk[5*neq] ); + + // scratch for the intermediate solution. + VectorType& ytmp = y_out; + + // 1) + k_rhs (0.0, y, f1, userData); + + for (int k = 0; k < neq; k++){ + f1[k] *= h; + ytmp[k] = y[k] + c21 * f1[k]; + } + + // 2) + k_rhs(0.0, ytmp, f2, userData); + + for (int k = 0; k < neq; k++){ + f2[k] *= h; + ytmp[k] = y[k] + c31 * f1[k] + c32 * f2[k]; + } + + // 3) + k_rhs(0.0, ytmp, f3, userData); + + for (int k = 0; k < neq; k++) { + f3[k] *= h; + ytmp[k] = y[k] + c41 * f1[k] + c42 * f2[k] + c43 * f3[k]; + } + + // 4) + k_rhs(0.0, ytmp, f4, userData); + + for (int k = 0; k < neq; k++) { + f4[k] *= h; + ytmp[k] = y[k] + c51 * f1[k] + c52 * f2[k] + c53 * f3[k] + c54 * f4[k]; + } + + // 5) + k_rhs(0.0, ytmp, f5, userData); + + for (int k = 0; k < neq; k++) { + f5[k] *= h; + ytmp[k] = y[k] + c61*f1[k] + c62*f2[k] + c63*f3[k] + c64*f4[k] + c65*f5[k]; + } + + // 6) + k_rhs(0.0, ytmp, f6, userData); + + for (int k = 0; k < neq; k++) + { + //const double f6 = h * ydot[k]; + f6[k] *= h; + + // 5th-order solution. + const double r5 = b1*f1[k] + b3*f3[k] + b4*f4[k] + b5*f5[k] + b6*f6[k]; + + // 4th-order solution. + const double r4 = a1*f1[k] + a3*f3[k] + a4*f4[k] + a5*f5[k]; + + // Truncation error: difference between 4th and 5th-order solutions. + rwk[k] = fabs(r5 - r4); + + // Update solution. + //y_out[k] = y[k] + r5; // Local extrapolation + y_out[k] = y[k] + r4; + } + + return; +} + +template + template +int FixRxKokkos::k_rkf45_h0 + (const int neq, const double t, const double t_stop, + const double hmin, const double hmax, + double& h0, VectorType& y, VectorType& rwk, UserDataType& userData) const +{ + // Set lower and upper bounds on h0, and take geometric mean as first trial value. + // Exit with this value if the bounds cross each other. + + // Adjust upper bound based on ydot ... + double hg = sqrt(hmin*hmax); + + //if (hmax < hmin) + //{ + // h0 = hg; + // return; + //} + + // Start iteration to find solution to ... {WRMS norm of (h0^2 y'' / 2)} = 1 + + VectorType& ydot = rwk; + VectorType y1 ( &ydot[ neq] ); + VectorType ydot1 ( &ydot[2*neq] ); + + const int max_iters = 10; + bool hnew_is_ok = false; + double hnew = hg; + int iter = 0; + + // compute ydot at t=t0 + k_rhs (t, y, ydot, userData); + + while(1) + { + // Estimate y'' with finite-difference ... + + for (int k = 0; k < neq; k++) + y1[k] = y[k] + hg * ydot[k]; + + // compute y' at t1 + k_rhs (t + hg, y1, ydot1, userData); + + // Compute WRMS norm of y'' + double yddnrm = 0.0; + for (int k = 0; k < neq; k++){ + double ydd = (ydot1[k] - ydot[k]) / hg; + double wterr = ydd / (relTol * fabs( y[k] ) + absTol); + yddnrm += wterr * wterr; + } + + yddnrm = sqrt( yddnrm / double(neq) ); + + //std::cout << "iter " << _iter << " hg " << hg << " y'' " << yddnrm << std::endl; + //std::cout << "ydot " << ydot[neq-1] << std::endl; + + // should we accept this? + if (hnew_is_ok || iter == max_iters){ + hnew = hg; + //if (iter == max_iters) + // fprintf(stderr, "ERROR_HIN_MAX_ITERS\n"); + break; + } + + // Get the new value of h ... + hnew = (yddnrm*hmax*hmax > 2.0) ? sqrt(2.0 / yddnrm) : sqrt(hg * hmax); + + // test the stopping conditions. + double hrat = hnew / hg; + + // Accept this value ... the bias factor should bring it within range. + if ( (hrat > 0.5) && (hrat < 2.0) ) + hnew_is_ok = true; + + // If y'' is still bad after a few iterations, just accept h and give up. + if ( (iter > 1) && hrat > 2.0 ) { + hnew = hg; + hnew_is_ok = true; + } + + //printf("iter=%d, yddnrw=%e, hnew=%e, hmin=%e, hmax=%e\n", iter, yddnrm, hnew, hmin, hmax); + + hg = hnew; + iter ++; + } + + // bound and bias estimate + h0 = hnew * 0.5; + h0 = fmax(h0, hmin); + h0 = fmin(h0, hmax); + //printf("h0=%e, hmin=%e, hmax=%e\n", h0, hmin, hmax); + + return (iter + 1); +} + +template + template +void FixRxKokkos::k_rkf45(const int neq, const double t_stop, VectorType& y, VectorType& rwork, UserDataType& userData, CounterType& counter) const +{ + // Rounding coefficient. + const double uround = DBL_EPSILON; + + // Adaption limit (shrink or grow) + const double adaption_limit = 4.0; + + // Safety factor on the adaption. very specific but not necessary .. 0.9 is common. + const double hsafe = 0.840896415; + + // Time rounding factor. + const double tround = t_stop * uround; + + // Counters for diagnostics. + int nst = 0; // # of steps (accepted) + int nit = 0; // # of iterations total + int nfe = 0; // # of RHS evaluations + + // Min/Max step-size limits. + const double h_min = 100.0 * tround; + const double h_max = (minSteps > 0) ? t_stop / double(minSteps) : t_stop; + + // Set the initial step-size. 0 forces an internal estimate ... stable Euler step size. + double h = (minSteps > 0) ? t_stop / double(minSteps) : 0.0; + + double t = 0.0; + + if (h < h_min){ + //fprintf(stderr,"hin not implemented yet\n"); + //exit(-1); + nfe = k_rkf45_h0 (neq, t, t_stop, h_min, h_max, h, y, rwork, userData); + } + + //printf("t= %e t_stop= %e h= %e\n", t, t_stop, h); + + // Integrate until we reach the end time. + while (fabs(t - t_stop) > tround) + { + VectorType& yout = rwork; + VectorType eout ( &yout[neq] ); + + // Take a trial step. + k_rkf45_step (neq, h, y, yout, eout, userData); + + // Estimate the solution error. + // ... weighted 2-norm of the error. + double err2 = 0.0; + for (int k = 0; k < neq; k++){ + const double wterr = eout[k] / (relTol * fabs( y[k] ) + absTol); + err2 += wterr * wterr; + } + + double err = fmax( uround, sqrt( err2 / double(nspecies) )); + + // Accept the solution? + if (err <= 1.0 || h <= h_min){ + t += h; + nst++; + + for (int k = 0; k < neq; k++) + y[k] = yout[k]; + } + + // Adjust h for the next step. + double hfac = hsafe * sqrt( sqrt( 1.0 / err ) ); + + // Limit the adaption. + hfac = fmax( hfac, 1.0 / adaption_limit ); + hfac = fmin( hfac, adaption_limit ); + + // Apply the adaption factor... + h *= hfac; + + // Limit h. + h = fmin( h, h_max ); + h = fmax( h, h_min ); + + // Stretch h if we're within 5% ... and we didn't just fail. + if (err <= 1.0 && (t + 1.05*h) > t_stop) + h = t_stop - t; + + // And don't overshoot the end. + if (t + h > t_stop) + h = t_stop - t; + + nit++; + nfe += 6; + + if (maxIters && nit > maxIters){ + //fprintf(stderr,"atom[%d] took too many iterations in rkf45 %d %e %e\n", id, nit, t, t_stop); + counter.nFails ++; + break; + // We should set an error here so that the solution is not used! + } + + } // end while + + counter.nSteps += nst; + counter.nIters += nit; + counter.nFuncs += nfe; + + //printf("id= %d nst= %d nit= %d\n", id, nst, nit); +} +/* ---------------------------------------------------------------------- */ + +// f1 = dt*f(t,x) +// f2 = dt*f(t+ c20*dt,x + c21*f1) +// f3 = dt*f(t+ c30*dt,x + c31*f1 + c32*f2) +// f4 = dt*f(t+ c40*dt,x + c41*f1 + c42*f2 + c43*f3) +// f5 = dt*f(t+dt,x + c51*f1 + c52*f2 + c53*f3 + c54*f4) +// f6 = dt*f(t+ c60*dt,x + c61*f1 + c62*f2 + c63*f3 + c64*f4 + c65*f5) +// +// fifth-order runge-kutta integration +// x5 = x + b1*f1 + b3*f3 + b4*f4 + b5*f5 + b6*f6 +// fourth-order runge-kutta integration +// x = x + a1*f1 + a3*f3 + a4*f4 + a5*f5 + +template +void FixRxKokkos::rkf45_step (const int neq, const double h, double y[], double y_out[], double rwk[], void* v_param) const +{ + const double c21=0.25; + const double c31=0.09375; + const double c32=0.28125; + const double c41=0.87938097405553; + const double c42=-3.2771961766045; + const double c43=3.3208921256258; + const double c51=2.0324074074074; + const double c52=-8.0; + const double c53=7.1734892787524; + const double c54=-0.20589668615984; + const double c61=-0.2962962962963; + const double c62=2.0; + const double c63=-1.3816764132554; + const double c64=0.45297270955166; + const double c65=-0.275; + const double a1=0.11574074074074; + const double a3=0.54892787524366; + const double a4=0.5353313840156; + const double a5=-0.2; + const double b1=0.11851851851852; + const double b3=0.51898635477583; + const double b4=0.50613149034201; + const double b5=-0.18; + const double b6=0.036363636363636; + + // local dependent variables (5 total) + double* f1 = &rwk[ 0]; + double* f2 = &rwk[ neq]; + double* f3 = &rwk[2*neq]; + double* f4 = &rwk[3*neq]; + double* f5 = &rwk[4*neq]; + double* f6 = &rwk[5*neq]; + + // scratch for the intermediate solution. + //double* ytmp = &rwk[6*neq]; + double* ytmp = y_out; + + // 1) + rhs (0.0, y, f1, v_param); + + for (int k = 0; k < neq; k++){ + f1[k] *= h; + ytmp[k] = y[k] + c21 * f1[k]; + } + + // 2) + rhs(0.0, ytmp, f2, v_param); + + for (int k = 0; k < neq; k++){ + f2[k] *= h; + ytmp[k] = y[k] + c31 * f1[k] + c32 * f2[k]; + } + + // 3) + rhs(0.0, ytmp, f3, v_param); + + for (int k = 0; k < neq; k++) { + f3[k] *= h; + ytmp[k] = y[k] + c41 * f1[k] + c42 * f2[k] + c43 * f3[k]; + } + + // 4) + rhs(0.0, ytmp, f4, v_param); + + for (int k = 0; k < neq; k++) { + f4[k] *= h; + ytmp[k] = y[k] + c51 * f1[k] + c52 * f2[k] + c53 * f3[k] + c54 * f4[k]; + } + + // 5) + rhs(0.0, ytmp, f5, v_param); + + for (int k = 0; k < neq; k++) { + f5[k] *= h; + ytmp[k] = y[k] + c61*f1[k] + c62*f2[k] + c63*f3[k] + c64*f4[k] + c65*f5[k]; + } + + // 6) + rhs(0.0, ytmp, f6, v_param); + + for (int k = 0; k < neq; k++) + { + //const double f6 = h * ydot[k]; + f6[k] *= h; + + // 5th-order solution. + const double r5 = b1*f1[k] + b3*f3[k] + b4*f4[k] + b5*f5[k] + b6*f6[k]; + + // 4th-order solution. + const double r4 = a1*f1[k] + a3*f3[k] + a4*f4[k] + a5*f5[k]; + + // Truncation error: difference between 4th and 5th-order solutions. + rwk[k] = fabs(r5 - r4); + + // Update solution. + //y_out[k] = y[k] + r5; // Local extrapolation + y_out[k] = y[k] + r4; + } + + return; +} + +template +int FixRxKokkos::rkf45_h0 + (const int neq, const double t, const double t_stop, + const double hmin, const double hmax, + double& h0, double y[], double rwk[], void* v_params) const +{ + // Set lower and upper bounds on h0, and take geometric mean as first trial value. + // Exit with this value if the bounds cross each other. + + // Adjust upper bound based on ydot ... + double hg = sqrt(hmin*hmax); + + //if (hmax < hmin) + //{ + // h0 = hg; + // return; + //} + + // Start iteration to find solution to ... {WRMS norm of (h0^2 y'' / 2)} = 1 + + double *ydot = rwk; + double *y1 = ydot + neq; + double *ydot1 = y1 + neq; + + const int max_iters = 10; + bool hnew_is_ok = false; + double hnew = hg; + int iter = 0; + + // compute ydot at t=t0 + rhs (t, y, ydot, v_params); + + while(1) + { + // Estimate y'' with finite-difference ... + + for (int k = 0; k < neq; k++) + y1[k] = y[k] + hg * ydot[k]; + + // compute y' at t1 + rhs (t + hg, y1, ydot1, v_params); + + // Compute WRMS norm of y'' + double yddnrm = 0.0; + for (int k = 0; k < neq; k++){ + double ydd = (ydot1[k] - ydot[k]) / hg; + double wterr = ydd / (relTol * fabs( y[k] ) + absTol); + yddnrm += wterr * wterr; + } + + yddnrm = sqrt( yddnrm / double(neq) ); + + //std::cout << "iter " << _iter << " hg " << hg << " y'' " << yddnrm << std::endl; + //std::cout << "ydot " << ydot[neq-1] << std::endl; + + // should we accept this? + if (hnew_is_ok || iter == max_iters){ + hnew = hg; + if (iter == max_iters) + fprintf(stderr, "ERROR_HIN_MAX_ITERS\n"); + break; + } + + // Get the new value of h ... + hnew = (yddnrm*hmax*hmax > 2.0) ? sqrt(2.0 / yddnrm) : sqrt(hg * hmax); + + // test the stopping conditions. + double hrat = hnew / hg; + + // Accept this value ... the bias factor should bring it within range. + if ( (hrat > 0.5) && (hrat < 2.0) ) + hnew_is_ok = true; + + // If y'' is still bad after a few iterations, just accept h and give up. + if ( (iter > 1) && hrat > 2.0 ) { + hnew = hg; + hnew_is_ok = true; + } + + //printf("iter=%d, yddnrw=%e, hnew=%e, hmin=%e, hmax=%e\n", iter, yddnrm, hnew, hmin, hmax); + + hg = hnew; + iter ++; + } + + // bound and bias estimate + h0 = hnew * 0.5; + h0 = fmax(h0, hmin); + h0 = fmin(h0, hmax); + //printf("h0=%e, hmin=%e, hmax=%e\n", h0, hmin, hmax); + + return (iter + 1); +} + +template +void FixRxKokkos::rkf45(const int neq, const double t_stop, double *y, double *rwork, void *v_param, CounterType& counter) const +{ + // Rounding coefficient. + const double uround = DBL_EPSILON; + + // Adaption limit (shrink or grow) + const double adaption_limit = 4.0; + + // Safety factor on the adaption. very specific but not necessary .. 0.9 is common. + const double hsafe = 0.840896415; + + // Time rounding factor. + const double tround = t_stop * uround; + + // Counters for diagnostics. + int nst = 0; // # of steps (accepted) + int nit = 0; // # of iterations total + int nfe = 0; // # of RHS evaluations + + // Min/Max step-size limits. + const double h_min = 100.0 * tround; + const double h_max = (minSteps > 0) ? t_stop / double(minSteps) : t_stop; + + // Set the initial step-size. 0 forces an internal estimate ... stable Euler step size. + double h = (minSteps > 0) ? t_stop / double(minSteps) : 0.0; + + double t = 0.0; + + if (h < h_min){ + //fprintf(stderr,"hin not implemented yet\n"); + //exit(-1); + nfe = rkf45_h0 (neq, t, t_stop, h_min, h_max, h, y, rwork, v_param); + } + + //printf("t= %e t_stop= %e h= %e\n", t, t_stop, h); + + // Integrate until we reach the end time. + while (fabs(t - t_stop) > tround){ + double *yout = rwork; + double *eout = yout + neq; + + // Take a trial step. + rkf45_step (neq, h, y, yout, eout, v_param); + + // Estimate the solution error. + // ... weighted 2-norm of the error. + double err2 = 0.0; + for (int k = 0; k < neq; k++){ + const double wterr = eout[k] / (relTol * fabs( y[k] ) + absTol); + err2 += wterr * wterr; + } + + double err = fmax( uround, sqrt( err2 / double(nspecies) )); + + // Accept the solution? + if (err <= 1.0 || h <= h_min){ + t += h; + nst++; + + for (int k = 0; k < neq; k++) + y[k] = yout[k]; + } + + // Adjust h for the next step. + double hfac = hsafe * sqrt( sqrt( 1.0 / err ) ); + + // Limit the adaption. + hfac = fmax( hfac, 1.0 / adaption_limit ); + hfac = fmin( hfac, adaption_limit ); + + // Apply the adaption factor... + h *= hfac; + + // Limit h. + h = fmin( h, h_max ); + h = fmax( h, h_min ); + + // Stretch h if we're within 5% ... and we didn't just fail. + if (err <= 1.0 && (t + 1.05*h) > t_stop) + h = t_stop - t; + + // And don't overshoot the end. + if (t + h > t_stop) + h = t_stop - t; + + nit++; + nfe += 6; + + if (maxIters && nit > maxIters){ + //fprintf(stderr,"atom[%d] took too many iterations in rkf45 %d %e %e\n", id, nit, t, t_stop); + counter.nFails ++; + break; + // We should set an error here so that the solution is not used! + } + + } // end while + + counter.nSteps += nst; + counter.nIters += nit; + counter.nFuncs += nfe; + + //printf("id= %d nst= %d nit= %d\n", id, nst, nit); +} + +/* ---------------------------------------------------------------------- */ + +template +int FixRxKokkos::rhs(double t, const double *y, double *dydt, void *params) const +{ + // Use the sparse format instead. + if (useSparseKinetics) + return this->rhs_sparse( t, y, dydt, params); + else + return this->rhs_dense ( t, y, dydt, params); +} + +/* ---------------------------------------------------------------------- */ + +template +int FixRxKokkos::rhs_dense(double t, const double *y, double *dydt, void *params) const +{ + UserRHSData *userData = (UserRHSData *) params; + + double *rxnRateLaw = userData->rxnRateLaw; + double *kFor = userData->kFor; + + //const double VDPD = domain->xprd * domain->yprd * domain->zprd / atom->natoms; + //const int nspecies = atom->nspecies_dpd; + + for(int ispecies=0; ispecies +int FixRxKokkos::rhs_sparse(double t, const double *y, double *dydt, void *v_params) const +{ + UserRHSData *userData = (UserRHSData *) v_params; + + //const double VDPD = domain->xprd * domain->yprd * domain->zprd / atom->natoms; + + #define kFor (userData->kFor) + #define kRev (NULL) + #define rxnRateLaw (userData->rxnRateLaw) + #define conc (dydt) + #define maxReactants (this->sparseKinetics_maxReactants) + #define maxSpecies (this->sparseKinetics_maxSpecies) + #define nuk (this->d_kineticsData.nuk) + #define nu (this->d_kineticsData.nu) + #define inu (this->d_kineticsData.inu) + #define isIntegral(idx) ( SparseKinetics_enableIntegralReactions \ + && this->d_kineticsData.isIntegral(idx) ) + + for (int k = 0; k < nspecies; ++k) + conc[k] = y[k] / VDPD; + + // Construct the reaction rate laws + for (int i = 0; i < nreactions; ++i) + { + double rxnRateLawForward; + if (isIntegral(i)){ + rxnRateLawForward = kFor[i] * powint( conc[ nuk(i,0) ], inu(i,0) ); + for (int kk = 1; kk < maxReactants; ++kk){ + const int k = nuk(i,kk); + if (k == SparseKinetics_invalidIndex) break; + //if (k != SparseKinetics_invalidIndex) + rxnRateLawForward *= powint( conc[k], inu(i,kk) ); + } + } else { + rxnRateLawForward = kFor[i] * pow( conc[ nuk(i,0) ], nu(i,0) ); + for (int kk = 1; kk < maxReactants; ++kk){ + const int k = nuk(i,kk); + if (k == SparseKinetics_invalidIndex) break; + //if (k != SparseKinetics_invalidIndex) + rxnRateLawForward *= pow( conc[k], nu(i,kk) ); + } + } + + rxnRateLaw[i] = rxnRateLawForward; + } + + // Construct the reaction rates for each species from the + // Stoichiometric matrix and ROP vector. + for (int k = 0; k < nspecies; ++k) + dydt[k] = 0.0; + + for (int i = 0; i < nreactions; ++i){ + // Reactants ... + dydt[ nuk(i,0) ] -= nu(i,0) * rxnRateLaw[i]; + for (int kk = 1; kk < maxReactants; ++kk){ + const int k = nuk(i,kk); + if (k == SparseKinetics_invalidIndex) break; + //if (k != SparseKinetics_invalidIndex) + dydt[k] -= nu(i,kk) * rxnRateLaw[i]; + } + + // Products ... + dydt[ nuk(i,maxReactants) ] += nu(i,maxReactants) * rxnRateLaw[i]; + for (int kk = maxReactants+1; kk < maxSpecies; ++kk){ + const int k = nuk(i,kk); + if (k == SparseKinetics_invalidIndex) break; + //if (k != SparseKinetics_invalidIndex) + dydt[k] += nu(i,kk) * rxnRateLaw[i]; + } + } + + // Add in the volume factor to convert to the proper units. + for (int k = 0; k < nspecies; ++k) + dydt[k] *= VDPD; + + #undef kFor + #undef kRev + #undef rxnRateLaw + #undef conc + #undef maxReactants + #undef maxSpecies + #undef nuk + #undef nu + #undef inu + #undef isIntegral + //#undef invalidIndex + + return 0; +} + +/* ---------------------------------------------------------------------- */ + +template + template +int FixRxKokkos::k_rhs(double t, const VectorType& y, VectorType& dydt, UserDataType& userData) const +{ + // Use the sparse format instead. + if (useSparseKinetics) + return this->k_rhs_sparse( t, y, dydt, userData); + else + return this->k_rhs_dense ( t, y, dydt, userData); +} + +/* ---------------------------------------------------------------------- */ + +template + template +int FixRxKokkos::k_rhs_dense(double t, const VectorType& y, VectorType& dydt, UserDataType& userData) const +{ + #define rxnRateLaw (userData.rxnRateLaw) + #define kFor (userData.kFor ) + + //const double VDPD = domain->xprd * domain->yprd * domain->zprd / atom->natoms; + //const int nspecies = atom->nspecies_dpd; + + for(int ispecies=0; ispecies + template +int FixRxKokkos::k_rhs_sparse(double t, const VectorType& y, VectorType& dydt, UserDataType& userData) const +{ + #define kFor (userData.kFor) + #define kRev (NULL) + #define rxnRateLaw (userData.rxnRateLaw) + #define conc (dydt) + #define maxReactants (this->sparseKinetics_maxReactants) + #define maxSpecies (this->sparseKinetics_maxSpecies) + #define nuk (this->d_kineticsData.nuk) + #define nu (this->d_kineticsData.nu) + #define inu (this->d_kineticsData.inu) + #define isIntegral(idx) ( SparseKinetics_enableIntegralReactions \ + && this->d_kineticsData.isIntegral(idx) ) + + for (int k = 0; k < nspecies; ++k) + conc[k] = y[k] / VDPD; + + // Construct the reaction rate laws + for (int i = 0; i < nreactions; ++i) + { + double rxnRateLawForward; + if (isIntegral(i)){ + rxnRateLawForward = kFor[i] * powint( conc[ nuk(i,0) ], inu(i,0) ); + for (int kk = 1; kk < maxReactants; ++kk){ + const int k = nuk(i,kk); + if (k == SparseKinetics_invalidIndex) break; + //if (k != SparseKinetics_invalidIndex) + rxnRateLawForward *= powint( conc[k], inu(i,kk) ); + } + } else { + rxnRateLawForward = kFor[i] * pow( conc[ nuk(i,0) ], nu(i,0) ); + for (int kk = 1; kk < maxReactants; ++kk){ + const int k = nuk(i,kk); + if (k == SparseKinetics_invalidIndex) break; + //if (k != SparseKinetics_invalidIndex) + rxnRateLawForward *= pow( conc[k], nu(i,kk) ); + } + } + + rxnRateLaw[i] = rxnRateLawForward; + } + + // Construct the reaction rates for each species from the + // Stoichiometric matrix and ROP vector. + for (int k = 0; k < nspecies; ++k) + dydt[k] = 0.0; + + for (int i = 0; i < nreactions; ++i){ + // Reactants ... + dydt[ nuk(i,0) ] -= nu(i,0) * rxnRateLaw[i]; + for (int kk = 1; kk < maxReactants; ++kk){ + const int k = nuk(i,kk); + if (k == SparseKinetics_invalidIndex) break; + //if (k != SparseKinetics_invalidIndex) + dydt[k] -= nu(i,kk) * rxnRateLaw[i]; + } + + // Products ... + dydt[ nuk(i,maxReactants) ] += nu(i,maxReactants) * rxnRateLaw[i]; + for (int kk = maxReactants+1; kk < maxSpecies; ++kk){ + const int k = nuk(i,kk); + if (k == SparseKinetics_invalidIndex) break; + //if (k != SparseKinetics_invalidIndex) + dydt[k] += nu(i,kk) * rxnRateLaw[i]; + } + } + + // Add in the volume factor to convert to the proper units. + for (int k = 0; k < nspecies; ++k) + dydt[k] *= VDPD; + + #undef kFor + #undef kRev + #undef rxnRateLaw + #undef conc + #undef maxReactants + #undef maxSpecies + #undef nuk + #undef nu + #undef inu + #undef isIntegral + //#undef invalidIndex + + return 0; +} + +/* ---------------------------------------------------------------------- */ + +/*template + template + KOKKOS_INLINE_FUNCTION +void FixRxKokkos::operator()(SolverType, const int &i) const +{ + if (atom->mask[i] & groupbit) + { + double *rwork = new double[8*nspecies]; + + UserRHSData userData; + userData.kFor = new double[nreactions]; + userData.rxnRateLaw = new double[nreactions]; + + int ode_counter[4] = { 0 }; + + const double theta = (localTempFlag) ? dpdThetaLocal[i] : atom->dpdTheta[i]; + + //Compute the reaction rate constants + for (int irxn = 0; irxn < nreactions; irxn++) + { + if (SolverType::setToZero) + userData.kFor[irxn] = 0.0; + else + userData.kFor[irxn] = Arr[irxn]*pow(theta,nArr[irxn])*exp(-Ea[irxn]/force->boltz/theta); + } + + if (odeIntegrationFlag == ODE_LAMMPS_RK4) + rk4(i, rwork, &userData); + else if (odeIntegrationFlag == ODE_LAMMPS_RKF45) + rkf45(i, rwork, &userData, ode_counter); + + delete [] rwork; + delete [] userData.kFor; + delete [] userData.rxnRateLaw; + } +} */ + +/* ---------------------------------------------------------------------- */ + +template +void FixRxKokkos::create_kinetics_data(void) +{ + //printf("Inside FixRxKokkos::create_kinetics_data\n"); + + memory->create_kokkos( d_kineticsData.Arr, h_kineticsData.Arr, nreactions, "KineticsType::Arr"); + memory->create_kokkos( d_kineticsData.nArr, h_kineticsData.nArr, nreactions, "KineticsType::nArr"); + memory->create_kokkos( d_kineticsData.Ea, h_kineticsData.Ea, nreactions, "KineticsType::Ea"); + + for (int i = 0; i < nreactions; ++i) + { + h_kineticsData.Arr[i] = Arr[i]; + h_kineticsData.nArr[i] = nArr[i]; + h_kineticsData.Ea[i] = Ea[i]; + } + + Kokkos::deep_copy( d_kineticsData.Arr, h_kineticsData.Arr ); + Kokkos::deep_copy( d_kineticsData.nArr, h_kineticsData.nArr ); + Kokkos::deep_copy( d_kineticsData.Ea, h_kineticsData.Ea ); + + if (useSparseKinetics) + { + + memory->create_kokkos( d_kineticsData.nu , h_kineticsData.nu , nreactions, sparseKinetics_maxSpecies, "KineticsType::nu"); + memory->create_kokkos( d_kineticsData.nuk, h_kineticsData.nuk, nreactions, sparseKinetics_maxSpecies, "KineticsType::nuk"); + + for (int i = 0; i < nreactions; ++i) + for (int k = 0; k < sparseKinetics_maxSpecies; ++k) + { + h_kineticsData.nu (i,k) = sparseKinetics_nu [i][k]; + h_kineticsData.nuk(i,k) = sparseKinetics_nuk[i][k]; + } + + Kokkos::deep_copy( d_kineticsData.nu, h_kineticsData.nu ); + Kokkos::deep_copy( d_kineticsData.nuk, h_kineticsData.nuk ); + + if (SparseKinetics_enableIntegralReactions) + { + memory->create_kokkos( d_kineticsData.inu, h_kineticsData.inu, nreactions, sparseKinetics_maxSpecies, "KineticsType::inu"); + memory->create_kokkos( d_kineticsData.isIntegral, h_kineticsData.isIntegral, nreactions, "KineticsType::isIntegral"); + + for (int i = 0; i < nreactions; ++i) + { + h_kineticsData.isIntegral(i) = sparseKinetics_isIntegralReaction[i]; + + for (int k = 0; k < sparseKinetics_maxSpecies; ++k) + h_kineticsData.inu(i,k) = sparseKinetics_inu[i][k]; + } + + Kokkos::deep_copy( d_kineticsData.inu, h_kineticsData.inu ); + Kokkos::deep_copy( d_kineticsData.isIntegral, h_kineticsData.isIntegral ); + } + } + + //else + //{ + + // Dense option + memory->create_kokkos( d_kineticsData.stoich, h_kineticsData.stoich, nreactions, nspecies, "KineticsType::stoich"); + memory->create_kokkos( d_kineticsData.stoichReactants, h_kineticsData.stoichReactants, nreactions, nspecies, "KineticsType::stoichReactants"); + memory->create_kokkos( d_kineticsData.stoichProducts, h_kineticsData.stoichProducts, nreactions, nspecies, "KineticsType::stoichProducts"); + + for (int i = 0; i < nreactions; ++i) + for (int k = 0; k < nspecies; ++k) + { + h_kineticsData.stoich(i,k) = stoich[i][k]; + h_kineticsData.stoichReactants(i,k) = stoichReactants[i][k]; + h_kineticsData.stoichProducts(i,k) = stoichProducts[i][k]; + } + + Kokkos::deep_copy( d_kineticsData.stoich, h_kineticsData.stoich ); + Kokkos::deep_copy( d_kineticsData.stoichReactants, h_kineticsData.stoichReactants ); + Kokkos::deep_copy( d_kineticsData.stoichProducts, h_kineticsData.stoichProducts ); + + //} + + update_kinetics_data = false; +} + +/* ---------------------------------------------------------------------- */ + +template +void FixRxKokkos::setup_pre_force(int vflag) +{ + //printf("Inside FixRxKokkos::setup_pre_force restartFlag= %d\n", my_restartFlag); + + if (my_restartFlag) + my_restartFlag = 0; + else + this->solve_reactions( vflag, false ); +} + +/* ---------------------------------------------------------------------- */ + +template +void FixRxKokkos::pre_force(int vflag) +{ + //printf("Inside FixRxKokkos::pre_force localTempFlag= %d\n", localTempFlag); + + this->solve_reactions( vflag, true ); +} + +/* ---------------------------------------------------------------------- */ + +template + KOKKOS_INLINE_FUNCTION +void FixRxKokkos::operator()(Tag_FixRxKokkos_zeroCounterViews, const int& i) const +{ + d_diagnosticCounterPerODEnSteps(i) = 0; + d_diagnosticCounterPerODEnFuncs(i) = 0; +} + +/* ---------------------------------------------------------------------- */ + +template + template + KOKKOS_INLINE_FUNCTION +void FixRxKokkos::operator()(Tag_FixRxKokkos_solveSystems, const int& i, CounterType& counter) const +{ + if (d_mask(i) & groupbit) + { + StridedArrayType y( d_scratchSpace.ptr_on_device() + scratchSpaceSize * i ); + StridedArrayType rwork( &y[nspecies] ); + + UserRHSDataKokkos<1> userData; + userData.kFor.m_data = &( rwork[7*nspecies] ); + userData.rxnRateLaw.m_data = &( userData.kFor[ nreactions ] ); + + CounterType counter_i; + + const double theta = (localTempFlag) ? d_dpdThetaLocal(i) : d_dpdTheta(i); + + //Compute the reaction rate constants + for (int irxn = 0; irxn < nreactions; irxn++) + { + if (ZERO_RATES) + userData.kFor[irxn] = 0.0; + else + { + userData.kFor[irxn] = d_kineticsData.Arr(irxn) * + pow(theta, d_kineticsData.nArr(irxn)) * + exp(-d_kineticsData.Ea(irxn) / boltz / theta); + } + } + + // Update ConcOld and initialize the ODE solution vector y[]. + for (int ispecies = 0; ispecies < nspecies; ispecies++) + { + const double tmp = d_dvector(ispecies, i); + d_dvector(ispecies+nspecies, i) = tmp; + y[ispecies] = tmp; + } + + // Solver the ODE system. + if (odeIntegrationFlag == ODE_LAMMPS_RK4) + { + k_rk4(t_stop, y, rwork, userData); + } + else if (odeIntegrationFlag == ODE_LAMMPS_RKF45) + { + k_rkf45(nspecies, t_stop, y, rwork, userData, counter_i); + + if (diagnosticFrequency == 1) + { + d_diagnosticCounterPerODEnSteps(i) = counter_i.nSteps; + d_diagnosticCounterPerODEnFuncs(i) = counter_i.nFuncs; + } + } + + // Store the solution back in dvector. + for (int ispecies = 0; ispecies < nspecies; ispecies++) + { + if (y[ispecies] < -1.0e-10) + { + //error->one(FLERR,"Computed concentration in RK solver is < -1.0e-10"); + k_error_flag.template view()() = 2; + // This should be an atomic update. + } + else if (y[ispecies] < MY_EPSILON) + y[ispecies] = 0.0; + + d_dvector(ispecies,i) = y[ispecies]; + } + + // Update the iteration statistics counter. Is this unique for each iteration? + counter += counter_i; + + } // if +} + +/* ---------------------------------------------------------------------- */ + +template +void FixRxKokkos::solve_reactions(const int vflag, const bool isPreForce) +{ + //printf("Inside FixRxKokkos::solve_reactions localTempFlag= %d isPreForce= %s\n", localTempFlag, isPreForce ? "True" : "false"); + + copymode = 1; + + if (update_kinetics_data) + create_kinetics_data(); + + TimerType timer_start = getTimeStamp(); + + //const int nlocal = atom->nlocal; + this->nlocal = atom->nlocal; + const int nghost = atom->nghost; + const int newton_pair = force->newton_pair; + + // Set the forward rates to zero if acting as setup_pre_force. + const bool setRatesToZero = (isPreForce == false); + + if (localTempFlag) + { + const int count = nlocal + (newton_pair ? nghost : 0); + + if (count > k_dpdThetaLocal.template view().dimension_0()) { + memory->destroy_kokkos (k_dpdThetaLocal, dpdThetaLocal); + memory->create_kokkos (k_dpdThetaLocal, dpdThetaLocal, count, "FixRxKokkos::dpdThetaLocal"); + this->d_dpdThetaLocal = k_dpdThetaLocal.template view(); + this->h_dpdThetaLocal = k_dpdThetaLocal.h_view; + } + + const int neighflag = lmp->kokkos->neighflag; + +#define _template_switch(_wtflag, _localTempFlag) { \ + if (neighflag == HALF) \ + if (newton_pair) \ + computeLocalTemperature<_wtflag, _localTempFlag, true , HALF> (); \ + else \ + computeLocalTemperature<_wtflag, _localTempFlag, false, HALF> (); \ + else if (neighflag == HALFTHREAD) \ + if (newton_pair) \ + computeLocalTemperature<_wtflag, _localTempFlag, true , HALFTHREAD> (); \ + else \ + computeLocalTemperature<_wtflag, _localTempFlag, false, HALFTHREAD> (); \ + else if (neighflag == FULL) \ + if (newton_pair) \ + computeLocalTemperature<_wtflag, _localTempFlag, true , FULL> (); \ + else \ + computeLocalTemperature<_wtflag, _localTempFlag, false, FULL> (); \ + } + + // Are there is no other options than wtFlag = (0)LUCY and localTempFlag = NONE : HARMONIC? + if (localTempFlag == HARMONIC) { + _template_switch(LUCY, HARMONIC) + } + else { + _template_switch(LUCY, NONE) + } +#undef _template_switch + } + + TimerType timer_localTemperature = getTimeStamp(); + + // Total counters from the ODE solvers. + CounterType TotalCounters; + + // Set data needed in the operators. + // ... + + // Local references to the atomKK objects. + //typename ArrayTypes::t_efloat_1d d_dpdTheta = atomKK->k_dpdTheta.view(); + //typename ArrayTypes::t_float_2d d_dvector = atomKK->k_dvector.view(); + //typename ArrayTypes::t_int_1d d_mask = atomKK->k_mask.view(); + this->d_dpdTheta = atomKK->k_dpdTheta.view(); + this->d_dvector = atomKK->k_dvector.view(); + this->d_mask = atomKK->k_mask.view(); + + // Get up-to-date data. + atomKK->sync( execution_space, MASK_MASK | DVECTOR_MASK | DPDTHETA_MASK ); + + // Set some constants outside of the parallel_for + //const double boltz = force->boltz; + //const double t_stop = update->dt; // DPD time-step and integration length. + this->boltz = force->boltz; + this->t_stop = update->dt; // DPD time-step and integration length. + + // Average DPD volume. Used in the RHS function. + this->VDPD = domain->xprd * domain->yprd * domain->zprd / atom->natoms; + + if (odeIntegrationFlag == ODE_LAMMPS_RKF45 && diagnosticFrequency == 1) + { + memory->create_kokkos (k_diagnosticCounterPerODEnSteps, diagnosticCounterPerODEnSteps, nlocal, "FixRxKokkos::diagnosticCounterPerODEnSteps"); + memory->create_kokkos (k_diagnosticCounterPerODEnFuncs, diagnosticCounterPerODEnFuncs, nlocal, "FixRxKokkos::diagnosticCounterPerODEnFuncs"); + + d_diagnosticCounterPerODEnSteps = k_diagnosticCounterPerODEnSteps.template view(); + d_diagnosticCounterPerODEnFuncs = k_diagnosticCounterPerODEnFuncs.template view(); + + Kokkos::parallel_for ( Kokkos::RangePolicy(0,nlocal), *this); + //Kokkos::parallel_for ( nlocal, + // LAMMPS_LAMBDA(const int i) + // { + // d_diagnosticCounterPerODEnSteps(i) = 0; + // d_diagnosticCounterPerODEnFuncs(i) = 0; + // } + // ); + } + + // Error flag for any failures. + //DAT::tdual_int_scalar k_error_flag("pair:error_flag"); + + // Initialize and sync the device flag. + k_error_flag.h_view() = 0; + k_error_flag.template modify(); + k_error_flag.template sync(); + + // Create scratch array space. + //const size_t scratchSpaceSize = (8*nspecies + 2*nreactions); + this->scratchSpaceSize = (8*nspecies + 2*nreactions); + //double *scratchSpace = new double[ scratchSpaceSize * nlocal ]; + + //typename ArrayTypes::t_double_1d d_scratchSpace("d_scratchSpace", scratchSpaceSize * nlocal); + if (nlocal*scratchSpaceSize > d_scratchSpace.dimension_0()) { + memory->destroy_kokkos (d_scratchSpace); + memory->create_kokkos (d_scratchSpace, nlocal*scratchSpaceSize, "FixRxKokkos::d_scratchSpace"); + } + +#if 0 + Kokkos::parallel_reduce( nlocal, LAMMPS_LAMBDA(int i, CounterType &counter) + { + if (d_mask(i) & groupbit) + { + //double *y = new double[8*nspecies]; + //double *rwork = y + nspecies; + + //StridedArrayType _y( y ); + //StridedArrayType _rwork( rwork ); + + StridedArrayType y( d_scratchSpace.ptr_on_device() + scratchSpaceSize * i ); + StridedArrayType rwork( &y[nspecies] ); + + //UserRHSData userData; + //userData.kFor = new double[nreactions]; + //userData.rxnRateLaw = new double[nreactions]; + + //UserRHSDataKokkos<1> userDataKokkos; + //userDataKokkos.kFor.m_data = userData.kFor; + //userDataKokkos.rxnRateLaw.m_data = userData.rxnRateLaw; + + UserRHSDataKokkos<1> userData; + userData.kFor.m_data = &( rwork[7*nspecies] ); + userData.rxnRateLaw.m_data = &( userData.kFor[ nreactions ] ); + + CounterType counter_i; + + const double theta = (localTempFlag) ? d_dpdThetaLocal(i) : d_dpdTheta(i); + + //Compute the reaction rate constants + for (int irxn = 0; irxn < nreactions; irxn++) + { + if (setRatesToZero) + userData.kFor[irxn] = 0.0; + else + { + userData.kFor[irxn] = d_kineticsData.Arr(irxn) * + pow(theta, d_kineticsData.nArr(irxn)) * + exp(-d_kineticsData.Ea(irxn) / boltz / theta); + } + } + + // Update ConcOld and initialize the ODE solution vector y[]. + for (int ispecies = 0; ispecies < nspecies; ispecies++) + { + const double tmp = d_dvector(ispecies, i); + d_dvector(ispecies+nspecies, i) = tmp; + y[ispecies] = tmp; + } + + // Solver the ODE system. + if (odeIntegrationFlag == ODE_LAMMPS_RK4) + { + k_rk4(t_stop, y, rwork, userData); + } + else if (odeIntegrationFlag == ODE_LAMMPS_RKF45) + { + k_rkf45(nspecies, t_stop, y, rwork, userData, counter_i); + + if (diagnosticFrequency == 1) + { + d_diagnosticCounterPerODEnSteps(i) = counter_i.nSteps; + d_diagnosticCounterPerODEnFuncs(i) = counter_i.nFuncs; + } + } + + // Store the solution back in dvector. + for (int ispecies = 0; ispecies < nspecies; ispecies++) + { + if (y[ispecies] < -1.0e-10) + { + //error->one(FLERR,"Computed concentration in RK solver is < -1.0e-10"); + k_error_flag.template view()() = 2; + // This should be an atomic update. + } + else if (y[ispecies] < MY_EPSILON) + y[ispecies] = 0.0; + + d_dvector(ispecies,i) = y[ispecies]; + } + + //delete [] y; + //delete [] userData.kFor; + //delete [] userData.rxnRateLaw; + + // Update the iteration statistics counter. Is this unique for each iteration? + counter += counter_i; + + } // if + } // parallel_for lambda-body + + , TotalCounters // reduction value for all iterations. + ); +#else + if (setRatesToZero) + Kokkos::parallel_reduce( Kokkos::RangePolicy >(0,nlocal), *this, TotalCounters); + else + Kokkos::parallel_reduce( Kokkos::RangePolicy >(0,nlocal), *this, TotalCounters); +#endif + + TimerType timer_ODE = getTimeStamp(); + + // Check the error flag for any failures. + k_error_flag.template modify(); + k_error_flag.template sync(); + if (k_error_flag.h_view() == 2) + error->one(FLERR,"Computed concentration in RK solver is < -1.0e-10"); + + // Signal that dvector has been modified on this execution space. + atomKK->modified( execution_space, DVECTOR_MASK ); + + // Communicate the updated species data to all nodes + atomKK->sync ( Host, DVECTOR_MASK ); + + comm->forward_comm_fix(this); + + atomKK->modified ( Host, DVECTOR_MASK ); + + TimerType timer_stop = getTimeStamp(); + + double time_ODE = getElapsedTime(timer_localTemperature, timer_ODE); + + //printf("me= %d kokkos total= %g temp= %g ode= %g comm= %g nlocal= %d nfc= %d %d\n", comm->me, + // getElapsedTime(timer_start, timer_stop), + // getElapsedTime(timer_start, timer_localTemperature), + // getElapsedTime(timer_localTemperature, timer_ODE), + // getElapsedTime(timer_ODE, timer_stop), nlocal, TotalCounters.nFuncs, TotalCounters.nSteps); + + // Warn the user if a failure was detected in the ODE solver. + if (TotalCounters.nFails > 0){ + char sbuf[128]; + sprintf(sbuf,"in FixRX::pre_force, ODE solver failed for %d atoms.", TotalCounters.nFails); + error->warning(FLERR, sbuf); + } + + // Compute and report ODE diagnostics, if requested. + if (odeIntegrationFlag == ODE_LAMMPS_RKF45 && diagnosticFrequency != 0) + { + // Update the counters. + diagnosticCounter[StepSum] += TotalCounters.nSteps; + diagnosticCounter[FuncSum] += TotalCounters.nFuncs; + diagnosticCounter[TimeSum] += time_ODE; + diagnosticCounter[AtomSum] += nlocal; + diagnosticCounter[numDiagnosticCounters-1] ++; + + if ( (diagnosticFrequency > 0 && + ((update->ntimestep - update->firststep) % diagnosticFrequency) == 0) || + (diagnosticFrequency < 0 && update->ntimestep == update->laststep) ) + this->odeDiagnostics(); + } + + copymode = 0; +} + +/* ---------------------------------------------------------------------- */ + +template +void FixRxKokkos::odeDiagnostics(void) +{ + TimerType timer_start = getTimeStamp(); + + // Compute: + // 1) Average # of ODE integrator steps and RHS evaluations per atom globally. + // 2) RMS # of ... + // 3) Average # of ODE steps and RHS evaluations per MPI task. + // 4) RMS # of ODE steps and RHS evaluations per MPI task. + // 5) MAX # of ODE steps and RHS evaluations per MPI task. + // + // ... 1,2 are for ODE control diagnostics. + // ... 3-5 are for load balancing diagnostics. + // + // To do this, we'll need to + // a) Allreduce (sum) the sum of nSteps / nFuncs. Dividing by atom->natoms + // gives the avg # of steps/funcs per atom globally. + // b) Reduce (sum) to root the sum of squares of the differences. + // i) Sum_i (steps_i - avg_steps_global)^2 + // ii) Sum_i (funcs_i - avg_funcs_global)^2 + // iii) (avg_steps_local - avg_steps_global)^2 + // iv) (avg_funcs_local - avg_funcs_global)^2 + + const int numCounters = numDiagnosticCounters-1; + + // # of time-steps for averaging. + const int nTimes = this->diagnosticCounter[numDiagnosticCounters-1]; + + // # of ODE's per time-step (on average). + //const int nODEs = this->diagnosticCounter[AtomSum] / nTimes; + + // Sum up the sums from each task. + double sums[numCounters]; + double my_vals[numCounters]; + double max_per_proc[numCounters]; + double min_per_proc[numCounters]; + + // Compute counters per dpd time-step. + for (int i = 0; i < numCounters; ++i){ + my_vals[i] = this->diagnosticCounter[i] / nTimes; + //printf("my sum[%d] = %f %d\n", i, my_vals[i], comm->me); + } + + MPI_Allreduce (my_vals, sums, numCounters, MPI_DOUBLE, MPI_SUM, world); + + MPI_Reduce (my_vals, max_per_proc, numCounters, MPI_DOUBLE, MPI_MAX, 0, world); + MPI_Reduce (my_vals, min_per_proc, numCounters, MPI_DOUBLE, MPI_MIN, 0, world); + + const double nODEs = sums[numCounters-1]; + + double avg_per_atom[numCounters], avg_per_proc[numCounters]; + + // Averages per-ODE and per-proc per time-step. + for (int i = 0; i < numCounters; ++i){ + avg_per_atom[i] = sums[i] / nODEs; + avg_per_proc[i] = sums[i] / comm->nprocs; + } + + // Sum up the differences from each task. + double sum_sq[2*numCounters]; + double my_sum_sq[2*numCounters]; + for (int i = 0; i < numCounters; ++i){ + double diff_i = my_vals[i] - avg_per_proc[i]; + my_sum_sq[i] = diff_i * diff_i; + } + + double max_per_ODE[numCounters], min_per_ODE[numCounters]; + + // Process the per-ODE RMS of the # of steps/funcs + if (diagnosticFrequency == 1) + { + h_diagnosticCounterPerODEnSteps = k_diagnosticCounterPerODEnSteps.h_view; + h_diagnosticCounterPerODEnFuncs = k_diagnosticCounterPerODEnFuncs.h_view; + + Kokkos::deep_copy( h_diagnosticCounterPerODEnSteps, d_diagnosticCounterPerODEnSteps ); + Kokkos::deep_copy( h_diagnosticCounterPerODEnFuncs, d_diagnosticCounterPerODEnFuncs ); + + double my_max[numCounters], my_min[numCounters]; + + //const int nlocal = atom->nlocal; + nlocal = atom->nlocal; + HAT::t_int_1d h_mask = atomKK->k_mask.h_view; + + for (int i = 0; i < numCounters; ++i) + { + my_sum_sq[i+numCounters] = 0; + my_max[i] = 0; + my_min[i] = DBL_MAX; + } + + for (int j = 0; j < nlocal; ++j) + if (h_mask(j) & groupbit) + { + int nSteps = h_diagnosticCounterPerODEnSteps(j); + double diff_nSteps = double( nSteps ) - avg_per_atom[StepSum]; + my_sum_sq[StepSum+numCounters] += diff_nSteps*diff_nSteps; + my_max[StepSum] = std::max( my_max[StepSum], (double)nSteps ); + my_min[StepSum] = std::min( my_min[StepSum], (double)nSteps ); + + int nFuncs = h_diagnosticCounterPerODEnFuncs(j); + double diff_nFuncs = double( nFuncs ) - avg_per_atom[FuncSum]; + my_sum_sq[FuncSum+numCounters] += diff_nFuncs*diff_nFuncs; + + my_max[FuncSum] = std::max( my_max[FuncSum], (double)nFuncs ); + my_min[FuncSum] = std::min( my_min[FuncSum], (double)nFuncs ); + } + + memory->destroy_kokkos( k_diagnosticCounterPerODEnSteps, diagnosticCounterPerODEnSteps ); + memory->destroy_kokkos( k_diagnosticCounterPerODEnFuncs, diagnosticCounterPerODEnFuncs ); + + MPI_Reduce (my_sum_sq, sum_sq, 2*numCounters, MPI_DOUBLE, MPI_SUM, 0, world); + + MPI_Reduce (my_max, max_per_ODE, numCounters, MPI_DOUBLE, MPI_MAX, 0, world); + MPI_Reduce (my_min, min_per_ODE, numCounters, MPI_DOUBLE, MPI_MIN, 0, world); + } + else + MPI_Reduce (my_sum_sq, sum_sq, numCounters, MPI_DOUBLE, MPI_SUM, 0, world); + + TimerType timer_stop = getTimeStamp(); + double time_local = getElapsedTime( timer_start, timer_stop ); + + if (comm->me == 0){ + char smesg[128]; + +#define print_mesg(smesg) {\ + if (screen) fprintf(screen,"%s\n", smesg); \ + if (logfile) fprintf(logfile,"%s\n", smesg); } + + sprintf(smesg, "FixRX::ODE Diagnostics: # of iters |# of rhs evals| run-time (sec) | # atoms"); + print_mesg(smesg); + + sprintf(smesg, " AVG per ODE : %-12.5g | %-12.5g | %-12.5g", avg_per_atom[0], avg_per_atom[1], avg_per_atom[2]); + print_mesg(smesg); + + // only valid for single time-step! + if (diagnosticFrequency == 1){ + double rms_per_ODE[numCounters]; + for (int i = 0; i < numCounters; ++i) + rms_per_ODE[i] = sqrt( sum_sq[i+numCounters] / nODEs ); + + sprintf(smesg, " RMS per ODE : %-12.5g | %-12.5g ", rms_per_ODE[0], rms_per_ODE[1]); + print_mesg(smesg); + + sprintf(smesg, " MAX per ODE : %-12.5g | %-12.5g ", max_per_ODE[0], max_per_ODE[1]); + print_mesg(smesg); + + sprintf(smesg, " MIN per ODE : %-12.5g | %-12.5g ", min_per_ODE[0], min_per_ODE[1]); + print_mesg(smesg); + } + + sprintf(smesg, " AVG per Proc : %-12.5g | %-12.5g | %-12.5g | %-12.5g", avg_per_proc[StepSum], avg_per_proc[FuncSum], avg_per_proc[TimeSum], avg_per_proc[AtomSum]); + print_mesg(smesg); + + if (comm->nprocs > 1){ + double rms_per_proc[numCounters]; + for (int i = 0; i < numCounters; ++i) + rms_per_proc[i] = sqrt( sum_sq[i] / comm->nprocs ); + + sprintf(smesg, " RMS per Proc : %-12.5g | %-12.5g | %-12.5g | %-12.5g", rms_per_proc[0], rms_per_proc[1], rms_per_proc[2], rms_per_proc[AtomSum]); + print_mesg(smesg); + + sprintf(smesg, " MAX per Proc : %-12.5g | %-12.5g | %-12.5g | %-12.5g", max_per_proc[0], max_per_proc[1], max_per_proc[2], max_per_proc[AtomSum]); + print_mesg(smesg); + + sprintf(smesg, " MIN per Proc : %-12.5g | %-12.5g | %-12.5g | %-12.5g", min_per_proc[0], min_per_proc[1], min_per_proc[2], min_per_proc[AtomSum]); + print_mesg(smesg); + } + + sprintf(smesg, " AVG'd over %d time-steps", nTimes); + print_mesg(smesg); + sprintf(smesg, " AVG'ing took %g sec", time_local); + print_mesg(smesg); + +#undef print_mesg + + } + + // Reset the counters. + for (int i = 0; i < numDiagnosticCounters; ++i) + diagnosticCounter[i] = 0; + + return; +} + +/* ---------------------------------------------------------------------- */ + +template + KOKKOS_INLINE_FUNCTION +void FixRxKokkos::operator()(Tag_FixRxKokkos_zeroTemperatureViews, const int& i) const +{ + d_sumWeights(i) = 0.0; + d_dpdThetaLocal(i) = 0.0; +} + +/* ---------------------------------------------------------------------- */ + +template + template + KOKKOS_INLINE_FUNCTION +void FixRxKokkos::operator()(Tag_FixRxKokkos_firstPairOperator, const int& ii) const +{ + // Create an atomic view of sumWeights and dpdThetaLocal. Only needed + // for Half/thread scenarios. + typedef Kokkos::View< E_FLOAT*, typename DAT::t_efloat_1d::array_layout, DeviceType, Kokkos::MemoryTraits< AtomicF< NEIGHFLAG >::value> > AtomicViewType; + + AtomicViewType a_dpdThetaLocal = d_dpdThetaLocal; + AtomicViewType a_sumWeights = d_sumWeights; + + // Local scalar accumulators. + double i_dpdThetaLocal = 0.0; + double i_sumWeights = 0.0; + + const int i = d_ilist(ii); + + const double xtmp = d_x(i,0); + const double ytmp = d_x(i,1); + const double ztmp = d_x(i,2); + const int itype = d_type(i); + + const int jnum = d_numneigh(i); + + for (int jj = 0; jj < jnum; jj++) + { + const int j = (d_neighbors(i,jj) & NEIGHMASK); + const int jtype = d_type(j); + + const double delx = xtmp - d_x(j,0); + const double dely = ytmp - d_x(j,1); + const double delz = ztmp - d_x(j,2); + const double rsq = delx*delx + dely*dely + delz*delz; + + const double cutsq_ij = d_cutsq(itype,jtype); + + if (rsq < cutsq_ij) + { + const double rcut = sqrt( cutsq_ij ); + double rij = sqrt(rsq); + double ratio = rij/rcut; + + double wij = 0.0; + + // Lucy's Weight Function + if (WT_FLAG == LUCY) + { + wij = (1.0+3.0*ratio) * (1.0-ratio)*(1.0-ratio)*(1.0-ratio); + i_dpdThetaLocal += wij / d_dpdTheta(j); + if ((NEIGHFLAG==HALF || NEIGHFLAG==HALFTHREAD) && (NEWTON_PAIR || j < nlocal)) + a_dpdThetaLocal(j) += wij / d_dpdTheta(i); + } + + i_sumWeights += wij; + if ((NEIGHFLAG==HALF || NEIGHFLAG==HALFTHREAD) && (NEWTON_PAIR || j < nlocal)) + a_sumWeights(j) += wij; + } + } + + // Update, don't assign, the array value (because another iteration may have hit it). + a_dpdThetaLocal(i) += i_dpdThetaLocal; + a_sumWeights(i) += i_sumWeights; +} + +/* ---------------------------------------------------------------------- */ + +template + template + KOKKOS_INLINE_FUNCTION +void FixRxKokkos::operator()(Tag_FixRxKokkos_2ndPairOperator, const int& i) const +{ + double wij = 0.0; + + // Lucy Weight Function + if (WT_FLAG == LUCY) + { + wij = 1.0; + d_dpdThetaLocal(i) += wij / d_dpdTheta(i); + } + d_sumWeights(i) += wij; + + // Normalized local temperature + d_dpdThetaLocal(i) = d_dpdThetaLocal(i) / d_sumWeights(i); + + if (LOCAL_TEMP_FLAG == HARMONIC) + d_dpdThetaLocal(i) = 1.0 / d_dpdThetaLocal(i); +} + +/* ---------------------------------------------------------------------- */ + +template + template +void FixRxKokkos::computeLocalTemperature() +{ + //typename ArrayTypes::t_x_array_randomread d_x = atomKK->k_x.view(); + //typename ArrayTypes::t_int_1d_randomread d_type = atomKK->k_type.view(); + //typename ArrayTypes::t_efloat_1d d_dpdTheta = atomKK->k_dpdTheta.view(); + d_x = atomKK->k_x.view(); + d_type = atomKK->k_type.view(); + d_dpdTheta = atomKK->k_dpdTheta.view(); + + atomKK->sync(execution_space, X_MASK | TYPE_MASK | DPDTHETA_MASK ); + + //const int nlocal = atom->nlocal; + nlocal = atom->nlocal; + const int nghost = atom->nghost; + + //printf("Inside FixRxKokkos::computeLocalTemperature: %d %d %d %d %d %d %d\n", WT_FLAG, LOCAL_TEMP_FLAG, NEWTON_PAIR, (int)lmp->kokkos->neighflag, NEIGHFLAG, nlocal, nghost); + + // Pull from pairDPDE. The pairDPDEKK objects are protected so recreate here for now. + //pairDPDEKK->k_cutsq.template sync(); + //typename ArrayTypes::t_ffloat_2d d_cutsq = pairDPDEKK->k_cutsq.template view::tdual_ffloat_2d k_cutsq; + //typename ArrayTypes::t_ffloat_2d d_cutsq; + //double **h_cutsq; + + { + const int ntypes = atom->ntypes; + + //memory->create_kokkos (k_cutsq, h_cutsq, ntypes+1, ntypes+1, "pair:cutsq"); + if (ntypes+1 > k_cutsq.dimension_0()) { + memory->destroy_kokkos (k_cutsq); + memory->create_kokkos (k_cutsq, ntypes+1, ntypes+1, "FixRxKokkos::k_cutsq"); + d_cutsq = k_cutsq.template view(); + } + + for (int i = 1; i <= ntypes; ++i) + for (int j = i; j <= ntypes; ++j) + { + k_cutsq.h_view(i,j) = pairDPDE->cutsq[i][j]; + k_cutsq.h_view(j,i) = k_cutsq.h_view(i,j); + } + + k_cutsq.template modify(); + k_cutsq.template sync(); + } + + // Initialize the local temperature weight array + int sumWeightsCt = nlocal + (NEWTON_PAIR ? nghost : 0); + + //memory->create_kokkos (k_sumWeights, sumWeights, sumWeightsCt, "FixRxKokkos::sumWeights"); + if (sumWeightsCt > k_sumWeights.template view().dimension_0()) { + memory->destroy_kokkos(k_sumWeights, sumWeights); + memory->create_kokkos (k_sumWeights, sumWeightsCt, "FixRxKokkos::sumWeights"); + d_sumWeights = k_sumWeights.template view(); + h_sumWeights = k_sumWeights.h_view; + } + + // Initialize the accumulator to zero ... + //Kokkos::parallel_for (sumWeightsCt, + // LAMMPS_LAMBDA(const int i) + // { + // d_sumWeights(i) = 0.0; + // } + // ); + + Kokkos::parallel_for (Kokkos::RangePolicy(0, sumWeightsCt), *this); + + // Local list views. (This isn't working!) + NeighListKokkos* k_list = static_cast*>(list); + if (not(list->kokkos)) + error->one(FLERR,"list is not a Kokkos list\n"); + + //typename ArrayTypes::t_neighbors_2d d_neighbors = k_list->d_neighbors; + //typename ArrayTypes::t_int_1d d_ilist = k_list->d_ilist; + //typename ArrayTypes::t_int_1d d_numneigh = k_list->d_numneigh; + d_neighbors = k_list->d_neighbors; + d_ilist = k_list->d_ilist; + d_numneigh = k_list->d_numneigh; + + const int inum = list->inum; + + // loop over neighbors of my atoms +#if 0 + Kokkos::parallel_for ( inum, + LAMMPS_LAMBDA(const int ii) + { + // Create an atomic view of sumWeights and dpdThetaLocal. Only needed + // for Half/thread scenarios. + //typedef Kokkos::View< E_FLOAT*, typename DAT::t_efloat_1d::array_layout, DeviceType, Kokkos::MemoryTraits< AtomicF< NEIGHFLAG >::value> > AtomicViewType; + typedef Kokkos::View< E_FLOAT*, typename DAT::t_efloat_1d::array_layout, DeviceType, Kokkos::MemoryTraits< AtomicF< NEIGHFLAG >::value> > AtomicViewType; + + AtomicViewType a_dpdThetaLocal = d_dpdThetaLocal; + AtomicViewType a_sumWeights = d_sumWeights; + + // Local scalar accumulators. + double i_dpdThetaLocal = 0.0; + double i_sumWeights = 0.0; + + const int i = d_ilist(ii); + + const double xtmp = d_x(i,0); + const double ytmp = d_x(i,1); + const double ztmp = d_x(i,2); + const int itype = d_type(i); + + const int jnum = d_numneigh(i); + + for (int jj = 0; jj < jnum; jj++) + { + const int j = (d_neighbors(i,jj) & NEIGHMASK); + const int jtype = d_type(j); + + const double delx = xtmp - d_x(j,0); + const double dely = ytmp - d_x(j,1); + const double delz = ztmp - d_x(j,2); + const double rsq = delx*delx + dely*dely + delz*delz; + + const double cutsq_ij = d_cutsq(itype,jtype); + + if (rsq < cutsq_ij) + { + const double rcut = sqrt( cutsq_ij ); + double rij = sqrt(rsq); + double ratio = rij/rcut; + + double wij = 0.0; + + // Lucy's Weight Function + if (WT_FLAG == LUCY) + { + wij = (1.0+3.0*ratio) * (1.0-ratio)*(1.0-ratio)*(1.0-ratio); + i_dpdThetaLocal += wij / d_dpdTheta(j); + if (NEWTON_PAIR || j < nlocal) + a_dpdThetaLocal(j) += wij / d_dpdTheta(i); + } + + i_sumWeights += wij; + if (NEWTON_PAIR || j < nlocal) + a_sumWeights(j) += wij; + } + } + + // Update, don't assign, the array value (because another iteration may have hit it). + a_dpdThetaLocal(i) += i_dpdThetaLocal; + a_sumWeights(i) += i_sumWeights; + } + ); +#else + Kokkos::parallel_for (Kokkos::RangePolicy >(0, inum), *this); +#endif + + // Signal that dpdThetaLocal and sumWeights have been modified. + k_dpdThetaLocal.template modify(); + k_sumWeights. template modify(); + + // Communicate the sum dpdTheta and the weights on the host. + if (NEWTON_PAIR) comm->reverse_comm_fix(this); + + // Update the device view in case they got changed. + k_dpdThetaLocal.template sync(); + k_sumWeights. template sync(); + + // self-interaction for local temperature +#if 0 + Kokkos::parallel_for ( nlocal, + LAMMPS_LAMBDA(const int i) + { + double wij = 0.0; + + // Lucy Weight Function + if (WT_FLAG == LUCY) + { + wij = 1.0; + d_dpdThetaLocal(i) += wij / d_dpdTheta(i); + } + d_sumWeights(i) += wij; + + // Normalized local temperature + d_dpdThetaLocal(i) = d_dpdThetaLocal(i) / d_sumWeights(i); + + if (LOCAL_TEMP_FLAG == HARMONIC) + d_dpdThetaLocal(i) = 1.0 / d_dpdThetaLocal(i); + } + ); +#else + Kokkos::parallel_for (Kokkos::RangePolicy >(0, nlocal), *this); +#endif + +} + +/* ---------------------------------------------------------------------- */ + +template +int FixRxKokkos::pack_forward_comm(int n, int *list, double *buf, int pbc_flag, int *pbc) +{ + //printf("inside FixRxKokkos::pack_forward_comm %d\n", comm->me); + + HAT::t_float_2d h_dvector = atomKK->k_dvector.h_view; + + int m = 0; + for (int ii = 0; ii < n; ii++) { + const int jj = list[ii]; + for(int ispecies = 0; ispecies < nspecies; ispecies++){ + buf[m++] = h_dvector(ispecies,jj); + buf[m++] = h_dvector(ispecies+nspecies,jj); + } + } + + //printf("done with FixRxKokkos::pack_forward_comm %d\n", comm->me); + + return m; +} + +/* ---------------------------------------------------------------------- */ + +template +void FixRxKokkos::unpack_forward_comm(int n, int first, double *buf) +{ + //printf("inside FixRxKokkos::unpack_forward_comm %d\n", comm->me); + + HAT::t_float_2d h_dvector = atomKK->k_dvector.h_view; + + const int last = first + n ; + int m = 0; + for (int ii = first; ii < last; ii++){ + for (int ispecies = 0; ispecies < nspecies; ispecies++){ + h_dvector(ispecies,ii) = buf[m++]; + h_dvector(ispecies+nspecies,ii) = buf[m++]; + } + } + + //printf("done with FixRxKokkos::unpack_forward_comm %d\n", comm->me); +} + +/* ---------------------------------------------------------------------- */ + +template +int FixRxKokkos::pack_reverse_comm(int n, int first, double *buf) +{ + //printf("inside FixRxKokkos::pack_reverse_comm %d %d %d\n", comm->me, first, n); + // Sync the host view. + k_dpdThetaLocal.template sync(); + k_sumWeights. template sync(); + + const int last = first + n; + int m = 0; + for (int i = first; i < last; ++i) + { + buf[m++] = h_dpdThetaLocal(i); + buf[m++] = h_sumWeights(i); + } + //printf("done with FixRxKokkos::pack_reverse_comm %d\n", comm->me); + + return m; +} + +/* ---------------------------------------------------------------------- */ + +template +void FixRxKokkos::unpack_reverse_comm(int n, int *list, double *buf) +{ + // printf("inside FixRxKokkos::unpack_reverse_comm %d\n", comm->me); + int m = 0; + for (int i = 0; i < n; i++) { + const int j = list[i]; + + h_dpdThetaLocal(j) += buf[m++]; + h_sumWeights(j) += buf[m++]; + } + + // Signal that the host view has been modified. + k_dpdThetaLocal.template modify(); + k_sumWeights. template modify(); + + // printf("done with FixRxKokkos::unpack_reverse_comm %d\n", comm->me); +} + +namespace LAMMPS_NS { +template class FixRxKokkos; +#ifdef KOKKOS_HAVE_CUDA +template class FixRxKokkos; +#endif +} diff --git a/src/KOKKOS/fix_rx_kokkos.h b/src/KOKKOS/fix_rx_kokkos.h new file mode 100644 index 0000000000000000000000000000000000000000..92b715f34deac1f38d42417755ce79d94d49d3b5 --- /dev/null +++ b/src/KOKKOS/fix_rx_kokkos.h @@ -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. +------------------------------------------------------------------------- */ + +#ifdef FIX_CLASS + +FixStyle(rx/kk,FixRxKokkos) +FixStyle(rx/kk/device,FixRxKokkos) +FixStyle(rx/kk/host,FixRxKokkos) + +#else + +#ifndef LMP_FIX_RX_KOKKOS_H +#define LMP_FIX_RX_KOKKOS_H + +#include "fix_rx.h" +#include "pair_dpd_fdt_energy_kokkos.h" +#include "kokkos_type.h" +#include "neigh_list.h" +#include "neigh_list_kokkos.h" + +namespace LAMMPS_NS { + +struct Tag_FixRxKokkos_zeroTemperatureViews {}; +struct Tag_FixRxKokkos_zeroCounterViews {}; + +template +struct Tag_FixRxKokkos_firstPairOperator {}; + +template +struct Tag_FixRxKokkos_2ndPairOperator {}; + +template +struct Tag_FixRxKokkos_solveSystems {}; + +struct s_CounterType +{ + int nSteps, nIters, nFuncs, nFails; + + KOKKOS_INLINE_FUNCTION + s_CounterType() : nSteps(0), nIters(0), nFuncs(0), nFails(0) {}; + + KOKKOS_INLINE_FUNCTION + s_CounterType& operator+=(const s_CounterType &rhs) + { + nSteps += rhs.nSteps; + nIters += rhs.nIters; + nFuncs += rhs.nFuncs; + nFails += rhs.nFails; + return *this; + } + + KOKKOS_INLINE_FUNCTION + volatile s_CounterType& operator+=(const volatile s_CounterType &rhs) volatile + { + nSteps += rhs.nSteps; + nIters += rhs.nIters; + nFuncs += rhs.nFuncs; + nFails += rhs.nFails; + return *this; + } +}; +typedef struct s_CounterType CounterType; + +template +class FixRxKokkos : public FixRX { + public: + typedef ArrayTypes AT; + + FixRxKokkos(class LAMMPS *, int, char **); + virtual ~FixRxKokkos(); + virtual void init(); + void init_list(int, class NeighList *); + void post_constructor(); + virtual void setup_pre_force(int); + virtual void pre_force(int); + + // Define a value_type here for the reduction operator on CounterType. + typedef CounterType value_type; + + KOKKOS_INLINE_FUNCTION + void operator()(Tag_FixRxKokkos_zeroCounterViews, const int&) const; + + KOKKOS_INLINE_FUNCTION + void operator()(Tag_FixRxKokkos_zeroTemperatureViews, const int&) const; + + template + KOKKOS_INLINE_FUNCTION + void operator()(Tag_FixRxKokkos_firstPairOperator, const int&) const; + + template + KOKKOS_INLINE_FUNCTION + void operator()(Tag_FixRxKokkos_2ndPairOperator, const int&) const; + + template + KOKKOS_INLINE_FUNCTION + void operator()(Tag_FixRxKokkos_solveSystems, const int&, CounterType&) const; + + //protected: + PairDPDfdtEnergyKokkos* pairDPDEKK; + double VDPD; + + double boltz; + double t_stop; + + template + struct StridedArrayType + { + typedef T value_type; + enum { Stride = stride }; + + value_type *m_data; + + KOKKOS_INLINE_FUNCTION + StridedArrayType() : m_data(NULL) {} + KOKKOS_INLINE_FUNCTION + StridedArrayType(value_type *ptr) : m_data(ptr) {} + + KOKKOS_INLINE_FUNCTION value_type& operator()(const int idx) { return m_data[Stride*idx]; } + KOKKOS_INLINE_FUNCTION const value_type& operator()(const int idx) const { return m_data[Stride*idx]; } + KOKKOS_INLINE_FUNCTION value_type& operator[](const int idx) { return m_data[Stride*idx]; } + KOKKOS_INLINE_FUNCTION const value_type& operator[](const int idx) const { return m_data[Stride*idx]; } + }; + + template + struct UserRHSDataKokkos + { + StridedArrayType kFor; + StridedArrayType rxnRateLaw; + }; + + void solve_reactions(const int vflag, const bool isPreForce); + + int rhs (double, const double *, double *, void *) const; + int rhs_dense (double, const double *, double *, void *) const; + int rhs_sparse(double, const double *, double *, void *) const; + + template + KOKKOS_INLINE_FUNCTION + int k_rhs (double, const VectorType&, VectorType&, UserDataType& ) const; + + template + KOKKOS_INLINE_FUNCTION + int k_rhs_dense (double, const VectorType&, VectorType&, UserDataType& ) const; + + template + KOKKOS_INLINE_FUNCTION + int k_rhs_sparse(double, const VectorType&, VectorType&, UserDataType& ) const; + + //!< Classic Runge-Kutta 4th-order stepper. + void rk4(const double t_stop, double *y, double *rwork, void *v_params) const; + + //!< Runge-Kutta-Fehlberg ODE Solver. + void rkf45(const int neq, const double t_stop, double *y, double *rwork, void *v_params, CounterType& counter) const; + + //!< Runge-Kutta-Fehlberg ODE stepper function. + void rkf45_step (const int neq, const double h, double y[], double y_out[], + double rwk[], void *) const; + + //!< Initial step size estimation for the Runge-Kutta-Fehlberg ODE solver. + int rkf45_h0 (const int neq, const double t, const double t_stop, + const double hmin, const double hmax, + double& h0, double y[], double rwk[], void *v_params) const; + + //!< Classic Runge-Kutta 4th-order stepper. + template + KOKKOS_INLINE_FUNCTION + void k_rk4(const double t_stop, VectorType& y, VectorType& rwork, UserDataType& userData) const; + + //!< Runge-Kutta-Fehlberg ODE Solver. + template + KOKKOS_INLINE_FUNCTION + void k_rkf45(const int neq, const double t_stop, VectorType& y, VectorType& rwork, UserDataType& userData, CounterType& counter) const; + + //!< Runge-Kutta-Fehlberg ODE stepper function. + template + KOKKOS_INLINE_FUNCTION + void k_rkf45_step (const int neq, const double h, VectorType& y, VectorType& y_out, + VectorType& rwk, UserDataType& userData) const; + + //!< Initial step size estimation for the Runge-Kutta-Fehlberg ODE solver. + template + KOKKOS_INLINE_FUNCTION + int k_rkf45_h0 (const int neq, const double t, const double t_stop, + const double hmin, const double hmax, + double& h0, VectorType& y, VectorType& rwk, UserDataType& userData) const; + + //!< ODE Solver diagnostics. + void odeDiagnostics(void); + + //!< Special counters per-ode. + int *diagnosticCounterPerODEnSteps; + int *diagnosticCounterPerODEnFuncs; + DAT::tdual_int_1d k_diagnosticCounterPerODEnSteps; + DAT::tdual_int_1d k_diagnosticCounterPerODEnFuncs; + //typename ArrayTypes::t_int_1d d_diagnosticCounterPerODEnSteps; + //typename ArrayTypes::t_int_1d d_diagnosticCounterPerODEnFuncs; + typename AT::t_int_1d d_diagnosticCounterPerODEnSteps; + typename AT::t_int_1d d_diagnosticCounterPerODEnFuncs; + HAT::t_int_1d h_diagnosticCounterPerODEnSteps; + HAT::t_int_1d h_diagnosticCounterPerODEnFuncs; + + template + struct KineticsType + { + // Arrhenius rate coefficients. + typename ArrayTypes::t_float_1d Arr, nArr, Ea; + + // Dense versions. + typename ArrayTypes::t_float_2d stoich, stoichReactants, stoichProducts; + + // Sparse versions. + typename ArrayTypes::t_int_2d nuk, inu; + typename ArrayTypes::t_float_2d nu; + typename ArrayTypes::t_int_1d isIntegral; + }; + + //!< Kokkos versions of the kinetics data. + KineticsType h_kineticsData; + KineticsType d_kineticsData; + + bool update_kinetics_data; + + void create_kinetics_data(void); + + // Need a dual-view and device-view for dpdThetaLocal and sumWeights since they're used in several callbacks. + DAT::tdual_efloat_1d k_dpdThetaLocal, k_sumWeights; + //typename ArrayTypes::t_efloat_1d d_dpdThetaLocal, d_sumWeights; + typename AT::t_efloat_1d d_dpdThetaLocal, d_sumWeights; + HAT::t_efloat_1d h_dpdThetaLocal, h_sumWeights; + + typename ArrayTypes::t_x_array_randomread d_x ; + typename ArrayTypes::t_int_1d_randomread d_type ; + typename ArrayTypes::t_efloat_1d d_dpdTheta; + + typename ArrayTypes::tdual_ffloat_2d k_cutsq; + typename ArrayTypes::t_ffloat_2d d_cutsq; + //double **h_cutsq; + + typename ArrayTypes::t_neighbors_2d d_neighbors; + typename ArrayTypes::t_int_1d d_ilist ; + typename ArrayTypes::t_int_1d d_numneigh ; + + typename ArrayTypes::t_float_2d d_dvector; + typename ArrayTypes::t_int_1d d_mask ; + + typename ArrayTypes::t_double_1d d_scratchSpace; + size_t scratchSpaceSize; + + // Error flag for any failures. + DAT::tdual_int_scalar k_error_flag; + + template + void computeLocalTemperature(); + + int pack_reverse_comm(int, int, double *); + void unpack_reverse_comm(int, int *, double *); + int pack_forward_comm(int , int *, double *, int, int *); + void unpack_forward_comm(int , int , double *); + + //private: // replicate a few from FixRX + int my_restartFlag; + int nlocal; +}; + +} + +#endif +#endif + +/* ERROR/WARNING messages: + +*/ diff --git a/src/KOKKOS/fix_setforce_kokkos.cpp b/src/KOKKOS/fix_setforce_kokkos.cpp index 5e26ef3610535a74b9e24ba2fc9f9c9822589c04..2ef04ad6ee3285534ab1f36a26842641fcf5802c 100644 --- a/src/KOKKOS/fix_setforce_kokkos.cpp +++ b/src/KOKKOS/fix_setforce_kokkos.cpp @@ -89,8 +89,10 @@ void FixSetForceKokkos::post_force(int vflag) if (iregion >= 0) { region = domain->regions[iregion]; region->prematch(); - d_match = DAT::t_int_1d("setforce:d_match",nlocal); - region->match_all_kokkos(groupbit,d_match); + DAT::tdual_int_1d k_match = DAT::tdual_int_1d("setforce:k_match",nlocal); + region->match_all_kokkos(groupbit,k_match); + k_match.template sync(); + d_match = k_match.template view(); } // reallocate sforce array if necessary diff --git a/src/KOKKOS/fix_setforce_kokkos.h b/src/KOKKOS/fix_setforce_kokkos.h index dffa22c93a4d9f82b5bd646ab03a2adf6cc3ba8f..3cbf3d372085d34b0579f5af52e819a0a7f3cb9a 100644 --- a/src/KOKKOS/fix_setforce_kokkos.h +++ b/src/KOKKOS/fix_setforce_kokkos.h @@ -75,8 +75,8 @@ class FixSetForceKokkos : public FixSetForce { private: DAT::tdual_ffloat_2d k_sforce; - DAT::t_ffloat_2d_randomread d_sforce; - DAT::t_int_1d d_match; + typename AT::t_ffloat_2d_randomread d_sforce; + typename AT::t_int_1d d_match; typename AT::t_x_array_randomread x; typename AT::t_f_array f; diff --git a/src/KOKKOS/fix_shardlow_kokkos.cpp b/src/KOKKOS/fix_shardlow_kokkos.cpp new file mode 100644 index 0000000000000000000000000000000000000000..98bbb02714ca454b01e4ac3b65351b3d029ac06e --- /dev/null +++ b/src/KOKKOS/fix_shardlow_kokkos.cpp @@ -0,0 +1,856 @@ +/* ---------------------------------------------------------------------- + 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: + James Larentzos (U.S. Army Research Laboratory) + and Timothy I. Mattox (Engility Corporation) + + Martin Lisal (Institute of Chemical Process Fundamentals + of the Czech Academy of Sciences and J. E. Purkinje University) + + John Brennan, Joshua Moore and William Mattson (Army Research Lab) + + Please cite the related publications: + J. P. Larentzos, J. K. Brennan, J. D. Moore, M. Lisal, W. D. Mattson, + "Parallel implementation of isothermal and isoenergetic Dissipative + Particle Dynamics using Shardlow-like splitting algorithms", + Computer Physics Communications, 2014, 185, pp 1987--1998. + + M. Lisal, J. K. Brennan, J. Bonet Avalos, "Dissipative particle dynamics + at isothermal, isobaric, isoenergetic, and isoenthalpic conditions using + Shardlow-like splitting algorithms", Journal of Chemical Physics, 2011, + 135, 204105. +------------------------------------------------------------------------- */ + +#include +#include +#include +#include "fix_shardlow_kokkos.h" +#include "atom.h" +#include "atom_masks.h" +#include "atom_kokkos.h" +#include "force.h" +#include "update.h" +#include "respa.h" +#include "error.h" +#include +#include "atom_vec.h" +#include "comm.h" +#include "neighbor.h" +#include "neigh_list_kokkos.h" +#include "neigh_request.h" +#include "memory.h" +#include "domain.h" +#include "modify.h" +// #include "pair_dpd_fdt.h" +#include "pair_dpd_fdt_energy_kokkos.h" +#include "pair.h" +#include "npair_ssa_kokkos.h" +#include "citeme.h" + +using namespace LAMMPS_NS; +using namespace FixConst; + +#define EPSILON 1.0e-10 +#define EPSILON_SQUARED ((EPSILON) * (EPSILON)) + + +/* ---------------------------------------------------------------------- */ + +template +FixShardlowKokkos::FixShardlowKokkos(LAMMPS *lmp, int narg, char **arg) : + FixShardlow(lmp, narg, arg), k_pairDPDE(NULL), ghostmax(0), nlocal(0) , nghost(0) +{ + kokkosable = 1; + atomKK = (AtomKokkos *) atom; + execution_space = ExecutionSpaceFromDevice::space; + + datamask_read = EMPTY_MASK; + datamask_modify = EMPTY_MASK; + + if (narg != 3) error->all(FLERR,"Illegal fix shardlow command"); + +// k_pairDPD = NULL; + k_pairDPDE = NULL; +// k_pairDPD = (PairDPDfdtKokkos *) force->pair_match("dpd/fdt",1); + k_pairDPDE = dynamic_cast *>(force->pair_match("dpd/fdt/energy",0)); + +// if(k_pairDPDE){ + comm_forward = 3; + comm_reverse = 5; + maxRNG = 0; +#ifdef DPD_USE_RAN_MARS + pp_random = NULL; +#endif +// } else { +// comm_forward = 3; +// comm_reverse = 3; +// } + + + if(/* k_pairDPD == NULL &&*/ k_pairDPDE == NULL) + error->all(FLERR,"Must use pair_style "/*"dpd/fdt/kk or "*/"dpd/fdt/energy/kk with fix shardlow/kk"); + +#ifdef DEBUG_SSA_PAIR_CT + d_counters = typename AT::t_int_2d("FixShardlowKokkos::d_counters", 2, 3); + d_hist = typename AT::t_int_1d("FixShardlowKokkos::d_hist", 32); +#ifndef KOKKOS_USE_CUDA_UVM + h_counters = Kokkos::create_mirror_view(d_counters); + h_hist = Kokkos::create_mirror_view(d_hist); +#else + h_counters = d_counters; + h_hist = d_hist; +#endif +#endif +} + +/* ---------------------------------------------------------------------- */ + +template +FixShardlowKokkos::~FixShardlowKokkos() +{ + ghostmax = 0; +#ifdef DPD_USE_RAN_MARS + if (pp_random) { + for (int i = 1; i < maxRNG; ++i) delete pp_random[i]; + delete[] pp_random; + pp_random = NULL; + } +#endif +} + +/* ---------------------------------------------------------------------- */ + +template +int FixShardlowKokkos::setmask() +{ + int mask = 0; + mask |= INITIAL_INTEGRATE | PRE_NEIGHBOR; + return mask; +} + +/* ---------------------------------------------------------------------- */ + +template +void FixShardlowKokkos::init() +{ + FixShardlow::init(); + + int irequest = neighbor->nrequest - 1; + + neighbor->requests[irequest]-> + kokkos_host = Kokkos::Impl::is_same::value && + !Kokkos::Impl::is_same::value; + neighbor->requests[irequest]-> + kokkos_device = Kokkos::Impl::is_same::value; + +// neighbor->requests[irequest]->pair = 0; +// neighbor->requests[irequest]->fix = 1; +// neighbor->requests[irequest]->ghost= 1; +// neighbor->requests[irequest]->ssa = 1; + + int ntypes = atom->ntypes; + k_params = Kokkos::DualView + ("FixShardlowKokkos::params",ntypes+1,ntypes+1); + params = k_params.template view(); + k_pairDPDE->k_cutsq.template sync(); + d_cutsq = k_pairDPDE->k_cutsq.template view(); + + const double boltz2 = 2.0*force->boltz; + for (int i = 1; i <= ntypes; i++) { + for (int j = i; j <= ntypes; j++) { + F_FLOAT cutone = k_pairDPDE->cut[i][j]; + if (cutone > EPSILON) k_params.h_view(i,j).cutinv = 1.0/cutone; + else k_params.h_view(i,j).cutinv = FLT_MAX; + k_params.h_view(i,j).halfsigma = 0.5*k_pairDPDE->sigma[i][j]; + k_params.h_view(i,j).kappa = k_pairDPDE->kappa[i][j]; + k_params.h_view(i,j).alpha = sqrt(boltz2*k_pairDPDE->kappa[i][j]); + + k_params.h_view(j,i) = k_params.h_view(i,j); + + if(ik_cutsq.h_view(i,j); + } + } + } + + k_params.template modify(); +} + +/* ---------------------------------------------------------------------- */ + +template +void FixShardlowKokkos::init_list(int id, NeighList *ptr) +{ + FixShardlow::init_list(id, ptr); + k_list = static_cast*>(ptr); +} + +/* ---------------------------------------------------------------------- */ + +template +void FixShardlowKokkos::pre_neighbor() +{ + // NOTE: this logic is specific to orthogonal boxes, not triclinic + + // Enforce the constraint that ghosts must be contained in the nearest sub-domains + double bbx = domain->subhi[0] - domain->sublo[0]; + double bby = domain->subhi[1] - domain->sublo[1]; + double bbz = domain->subhi[2] - domain->sublo[2]; + + double rcut = 2.0*neighbor->cutneighmax; + + if (domain->triclinic) + error->all(FLERR,"Fix shardlow does not yet support triclinic geometries"); + + if(rcut >= bbx || rcut >= bby || rcut>= bbz ) + { + char fmt[] = {"Shardlow algorithm requires sub-domain length > 2*(rcut+skin). Either reduce the number of processors requested, or change the cutoff/skin: rcut= %e bbx= %e bby= %e bbz= %e\n"}; + char *msg = (char *) malloc(sizeof(fmt) + 4*15); + sprintf(msg, fmt, rcut, bbx, bby, bbz); + error->one(FLERR, msg); + } + + nlocal = atomKK->nlocal; + nghost = atomKK->nghost; + + // Allocate memory for h_v_t0 to hold the initial velocities for the ghosts + if (nghost > ghostmax) { + ghostmax = nghost; + k_v_t0 = DAT::tdual_v_array("FixShardlowKokkos:v_t0", ghostmax); + // d_v_t0 = k_v_t0.template view(); + h_v_t0 = k_v_t0.h_view; + } + + // Setup views of relevant data + x = atomKK->k_x.template view(); + v = atomKK->k_v.template view(); + h_v = atomKK->k_v.h_view; + uCond = atomKK->k_uCond.template view(); + h_uCond = atomKK->k_uCond.h_view; + uMech = atomKK->k_uMech.template view(); + h_uMech = atomKK->k_uMech.h_view; + type = atomKK->k_type.view(); + if (atomKK->rmass) { + massPerI = true; + masses = atomKK->k_rmass.view(); + } else { + massPerI = false; + masses = atomKK->k_mass.view(); + } +// if(k_pairDPDE){ + dpdTheta = atomKK->k_dpdTheta.view(); + +//} else { +//} +} + +template +void FixShardlowKokkos::setup_pre_neighbor() +{ + pre_neighbor(); +} + +/* ---------------------------------------------------------------------- */ + +#ifdef ENABLE_KOKKOS_DPD_CONSTANT_TEMPERATURE +#error "FixShardlowKokkos::ssa_update_dpd() is not functional yet - TIM 20170830" +/* ---------------------------------------------------------------------- + Perform the stochastic integration and Shardlow update for constant temperature + Allow for both per-type and per-atom mass + + NOTE: only implemented for orthogonal boxes, not triclinic +------------------------------------------------------------------------- */ +template +template +void FixShardlowKokkos::ssa_update_dpd( + int start_ii, int count, int id +) +{ +#ifdef DPD_USE_RAN_MARS + class RanMars *pRNG = pp_random[id]; +#else + rand_type rand_gen = rand_pool.get_state(id); +#endif + + int ct = count; + int ii = start_ii; + + while (ct-- > 0) { + const int i = d_ilist(ii); + const int jlen = d_numneigh(ii); + + const double xtmp = x(i, 0); + const double ytmp = x(i, 1); + const double ztmp = x(i, 2); + + // load velocity for i from memory + double vxi = v(i, 0); + double vyi = v(i, 1); + double vzi = v(i, 2); + + const int itype = type(i); + + const double mass_i = masses(massPerI ? i : itype); + const double massinv_i = 1.0 / mass_i; + + // Loop over Directional Neighbors only + for (int jj = 0; jj < jlen; jj++) { + const int j = d_neighbors(ii,jj) & NEIGHMASK; + int jtype = type[j]; + + const X_FLOAT delx = xtmp - x(j, 0); + const X_FLOAT dely = ytmp - x(j, 1); + const X_FLOAT delz = ztmp - x(j, 2); + const F_FLOAT rsq = delx*delx + dely*dely + delz*delz; +#ifdef DEBUG_SSA_PAIR_CT + if ((i < nlocal) && (j < nlocal)) Kokkos::atomic_increment(&(d_counters(0, 0))); + else Kokkos::atomic_increment(&(d_counters(0, 1))); + Kokkos::atomic_increment(&(d_counters(0, 2))); + int rsqi = rsq / 8; + if (rsqi < 0) rsqi = 0; + else if (rsqi > 31) rsqi = 31; + Kokkos::atomic_increment(&(d_hist(rsqi))); +#endif + + // NOTE: r can be 0.0 in DPD systems, so do EPSILON_SQUARED test + if ((rsq < (STACKPARAMS?m_cutsq[itype][jtype]:d_cutsq(itype,jtype))) + && (rsq >= EPSILON_SQUARED)) { +#ifdef DEBUG_SSA_PAIR_CT + if ((i < nlocal) && (j < nlocal)) Kokkos::atomic_increment(&(d_counters(1, 0))); + else Kokkos::atomic_increment(&(d_counters(1, 1))); + Kokkos::atomic_increment(&(d_counters(1, 2))); +#endif + double r = sqrt(rsq); + double rinv = 1.0/r; + double delx_rinv = delx*rinv; + double dely_rinv = dely*rinv; + double delz_rinv = delz*rinv; + + double wr = 1.0 - r*(STACKPARAMS?m_params[itype][jtype].cutinv:params(itype,jtype).cutinv); + double wdt = wr*wr*dt; + + double halfsigma_ij = STACKPARAMS?m_params[itype][jtype].halfsigma:params(itype,jtype).halfsigma; + double halfgamma_ij = halfsigma_ij*halfsigma_ij*boltz_inv*theta_ij_inv; + + double sigmaRand = halfsigma_ij*wr*dtsqrt*ftm2v * +#ifdef DPD_USE_RAN_MARS + pRNG->gaussian(); +#else + rand_gen.normal(); +#endif + + const double mass_j = masses(massPerI ? j : jtype); + double massinv_j = 1.0 / mass_j; + + double gammaFactor = halfgamma_ij*wdt*ftm2v; + double inv_1p_mu_gammaFactor = 1.0/(1.0 + (massinv_i + massinv_j)*gammaFactor); + + double vxj = v(j, 0); + double vyj = v(j, 1); + double vzj = v(j, 2); + + // Compute the initial velocity difference between atom i and atom j + double delvx = vxi - vxj; + double delvy = vyi - vyj; + double delvz = vzi - vzj; + double dot_rinv = (delx_rinv*delvx + dely_rinv*delvy + delz_rinv*delvz); + + // Compute momentum change between t and t+dt + double factorA = sigmaRand - gammaFactor*dot_rinv; + + // Update the velocity on i + vxi += delx_rinv*factorA*massinv_i; + vyi += dely_rinv*factorA*massinv_i; + vzi += delz_rinv*factorA*massinv_i; + + // Update the velocity on j + vxj -= delx_rinv*factorA*massinv_j; + vyj -= dely_rinv*factorA*massinv_j; + vzj -= delz_rinv*factorA*massinv_j; + + //ii. Compute the new velocity diff + delvx = vxi - vxj; + delvy = vyi - vyj; + delvz = vzi - vzj; + dot_rinv = delx_rinv*delvx + dely_rinv*delvy + delz_rinv*delvz; + + // Compute the new momentum change between t and t+dt + double factorB = (sigmaRand - gammaFactor*dot_rinv)*inv_1p_mu_gammaFactor; + + // Update the velocity on i + vxi += delx_rinv*factorB*massinv_i; + vyi += dely_rinv*factorB*massinv_i; + vzi += delz_rinv*factorB*massinv_i; + + // Update the velocity on j + vxj -= delx_rinv*factorB*massinv_j; + vyj -= dely_rinv*factorB*massinv_j; + vzj -= delz_rinv*factorB*massinv_j; + + // Store updated velocity for j + v(j, 0) = vxj; + v(j, 1) = vyj; + v(j, 2) = vzj; + } + } + // store updated velocity for i + v(i, 0) = vxi; + v(i, 1) = vyi; + v(i, 2) = vzi; + } + +#ifndef DPD_USE_RAN_MARS + rand_pool.free_state(rand_gen); +#endif +} +#endif + +/* ---------------------------------------------------------------------- + Perform the stochastic integration and Shardlow update for constant energy + Allow for both per-type and per-atom mass + + NOTE: only implemented for orthogonal boxes, not triclinic +------------------------------------------------------------------------- */ +template +template +KOKKOS_INLINE_FUNCTION +void FixShardlowKokkos::ssa_update_dpde( + int start_ii, int count, int id +) const +{ +#ifdef DPD_USE_RAN_MARS + class RanMars *pRNG = pp_random[id]; +#else + rand_type rand_gen = rand_pool.get_state(id); +#endif + + int ct = count; + int ii = start_ii; + + while (ct-- > 0) { + const int i = d_ilist(ii); + const int jlen = d_numneigh(ii); + + const double xtmp = x(i, 0); + const double ytmp = x(i, 1); + const double ztmp = x(i, 2); + + // load velocity for i from memory + double vxi = v(i, 0); + double vyi = v(i, 1); + double vzi = v(i, 2); + + double uMech_i = uMech(i); + double uCond_i = uCond(i); + const int itype = type(i); + + const double theta_i_inv = 1.0/dpdTheta(i); + const double mass_i = masses(massPerI ? i : itype); + const double massinv_i = 1.0 / mass_i; + const double mass_i_div_neg4_ftm2v = mass_i*(-0.25)/ftm2v; + + // Loop over Directional Neighbors only + for (int jj = 0; jj < jlen; jj++) { + const int j = d_neighbors(ii,jj) & NEIGHMASK; + const int jtype = type(j); + + const X_FLOAT delx = xtmp - x(j, 0); + const X_FLOAT dely = ytmp - x(j, 1); + const X_FLOAT delz = ztmp - x(j, 2); + const F_FLOAT rsq = delx*delx + dely*dely + delz*delz; +#ifdef DEBUG_SSA_PAIR_CT + if ((i < nlocal) && (j < nlocal)) Kokkos::atomic_increment(&(d_counters(0, 0))); + else Kokkos::atomic_increment(&(d_counters(0, 1))); + Kokkos::atomic_increment(&(d_counters(0, 2))); + int rsqi = rsq / 8; + if (rsqi < 0) rsqi = 0; + else if (rsqi > 31) rsqi = 31; + Kokkos::atomic_increment(&(d_hist(rsqi))); +#endif + + // NOTE: r can be 0.0 in DPD systems, so do EPSILON_SQUARED test + if ((rsq < (STACKPARAMS?m_cutsq[itype][jtype]:d_cutsq(itype,jtype))) + && (rsq >= EPSILON_SQUARED)) { +#ifdef DEBUG_SSA_PAIR_CT + if ((i < nlocal) && (j < nlocal)) Kokkos::atomic_increment(&(d_counters(1, 0))); + else Kokkos::atomic_increment(&(d_counters(1, 1))); + Kokkos::atomic_increment(&(d_counters(1, 2))); +#endif + + double r = sqrt(rsq); + double rinv = 1.0/r; + double delx_rinv = delx*rinv; + double dely_rinv = dely*rinv; + double delz_rinv = delz*rinv; + + double wr = 1.0 - r*(STACKPARAMS?m_params[itype][jtype].cutinv:params(itype,jtype).cutinv); + double wdt = wr*wr*dt; + + // Compute the current temperature + double theta_j_inv = 1.0/dpdTheta(j); + double theta_ij_inv = 0.5*(theta_i_inv + theta_j_inv); + + double halfsigma_ij = STACKPARAMS?m_params[itype][jtype].halfsigma:params(itype,jtype).halfsigma; + double halfgamma_ij = halfsigma_ij*halfsigma_ij*boltz_inv*theta_ij_inv; + + double sigmaRand = halfsigma_ij*wr*dtsqrt*ftm2v * +#ifdef DPD_USE_RAN_MARS + pRNG->gaussian(); +#else + rand_gen.normal(); +#endif + + const double mass_j = masses(massPerI ? j : jtype); + double mass_ij_div_neg4_ftm2v = mass_j*mass_i_div_neg4_ftm2v; + double massinv_j = 1.0 / mass_j; + + // Compute uCond + double kappa_ij = STACKPARAMS?m_params[itype][jtype].kappa:params(itype,jtype).kappa; + double alpha_ij = STACKPARAMS?m_params[itype][jtype].alpha:params(itype,jtype).alpha; + double del_uCond = alpha_ij*wr*dtsqrt * +#ifdef DPD_USE_RAN_MARS + pRNG->gaussian(); +#else + rand_gen.normal(); +#endif + + del_uCond += kappa_ij*(theta_i_inv - theta_j_inv)*wdt; + uCond[j] -= del_uCond; + uCond_i += del_uCond; + + double gammaFactor = halfgamma_ij*wdt*ftm2v; + double inv_1p_mu_gammaFactor = 1.0/(1.0 + (massinv_i + massinv_j)*gammaFactor); + + double vxj = v(j, 0); + double vyj = v(j, 1); + double vzj = v(j, 2); + double dot4 = vxj*vxj + vyj*vyj + vzj*vzj; + double dot3 = vxi*vxi + vyi*vyi + vzi*vzi; + + // Compute the initial velocity difference between atom i and atom j + double delvx = vxi - vxj; + double delvy = vyi - vyj; + double delvz = vzi - vzj; + double dot_rinv = (delx_rinv*delvx + dely_rinv*delvy + delz_rinv*delvz); + + // Compute momentum change between t and t+dt + double factorA = sigmaRand - gammaFactor*dot_rinv; + + // Update the velocity on i + vxi += delx_rinv*factorA*massinv_i; + vyi += dely_rinv*factorA*massinv_i; + vzi += delz_rinv*factorA*massinv_i; + + // Update the velocity on j + vxj -= delx_rinv*factorA*massinv_j; + vyj -= dely_rinv*factorA*massinv_j; + vzj -= delz_rinv*factorA*massinv_j; + + //ii. Compute the new velocity diff + delvx = vxi - vxj; + delvy = vyi - vyj; + delvz = vzi - vzj; + dot_rinv = delx_rinv*delvx + dely_rinv*delvy + delz_rinv*delvz; + + // Compute the new momentum change between t and t+dt + double factorB = (sigmaRand - gammaFactor*dot_rinv)*inv_1p_mu_gammaFactor; + + // Update the velocity on i + vxi += delx_rinv*factorB*massinv_i; + vyi += dely_rinv*factorB*massinv_i; + vzi += delz_rinv*factorB*massinv_i; + double partial_uMech = (vxi*vxi + vyi*vyi + vzi*vzi - dot3)*massinv_j; + + // Update the velocity on j + vxj -= delx_rinv*factorB*massinv_j; + vyj -= dely_rinv*factorB*massinv_j; + vzj -= delz_rinv*factorB*massinv_j; + partial_uMech += (vxj*vxj + vyj*vyj + vzj*vzj - dot4)*massinv_i; + + // Store updated velocity for j + v(j, 0) = vxj; + v(j, 1) = vyj; + v(j, 2) = vzj; + + // Compute uMech + double del_uMech = partial_uMech*mass_ij_div_neg4_ftm2v; + uMech_i += del_uMech; + uMech(j) += del_uMech; + } + } + // store updated velocity for i + v(i, 0) = vxi; + v(i, 1) = vyi; + v(i, 2) = vzi; + // store updated uMech and uCond for i + uMech(i) = uMech_i; + uCond(i) = uCond_i; + ii++; + } + +#ifndef DPD_USE_RAN_MARS + rand_pool.free_state(rand_gen); +#endif +} + + +template +void FixShardlowKokkos::initial_integrate(int vflag) +{ + d_numneigh = k_list->d_numneigh; + d_neighbors = k_list->d_neighbors; + d_ilist = k_list->d_ilist; + + copymode = 1; + + dtsqrt = sqrt(update->dt); + + NPairSSAKokkos *np_ssa = dynamic_cast*>(list->np); + if (!np_ssa) error->one(FLERR, "NPair wasn't a NPairSSAKokkos object"); + ssa_phaseCt = np_ssa->ssa_phaseCt; + ssa_phaseLen = np_ssa->ssa_phaseLen; + ssa_itemLoc = np_ssa->ssa_itemLoc; + ssa_itemLen = np_ssa->ssa_itemLen; + ssa_gphaseCt = np_ssa->ssa_gphaseCt; + ssa_gphaseLen = np_ssa->ssa_gphaseLen; + ssa_gitemLoc = np_ssa->ssa_gitemLoc; + ssa_gitemLen = np_ssa->ssa_gitemLen; + + np_ssa->k_ssa_itemLoc.template sync(); + np_ssa->k_ssa_itemLen.template sync(); + np_ssa->k_ssa_gitemLoc.template sync(); + np_ssa->k_ssa_gitemLen.template sync(); + + np_ssa->k_ssa_phaseLen.template sync(); + np_ssa->k_ssa_gphaseLen.template sync(); + auto h_ssa_phaseLen = np_ssa->k_ssa_phaseLen.h_view; + auto h_ssa_gphaseLen = np_ssa->k_ssa_gphaseLen.h_view; + + int maxWorkItemCt = (int) ssa_itemLoc.dimension_1(); + if (maxWorkItemCt < (int) ssa_gitemLoc.dimension_1()) { + maxWorkItemCt = (int) ssa_gitemLoc.dimension_1(); + } + if (maxWorkItemCt > maxRNG) { +#ifdef DPD_USE_RAN_MARS + if (pp_random) { + for (int i = 1; i < maxRNG; ++i) delete pp_random[i]; + delete[] pp_random; + pp_random = NULL; + } + pp_random = new RanMars*[maxWorkItemCt]; + for (int i = 1; i < maxWorkItemCt; ++i) { + pp_random[i] = new RanMars(lmp, k_pairDPDE->seed + comm->me + comm->nprocs*i); + } + pp_random[0] = k_pairDPDE->random; +#else + rand_pool.init(k_pairDPDE->seed + comm->me, maxWorkItemCt); +#endif + maxRNG = maxWorkItemCt; + } + +#ifdef DEBUG_SSA_PAIR_CT + for (int i = 0; i < 2; ++i) + for (int j = 0; j < 3; ++j) + h_counters(i,j) = 0; + for (int i = 0; i < 32; ++i) h_hist[i] = 0; + deep_copy(d_counters, h_counters); + deep_copy(d_hist, h_hist); +#endif + + //theta_ij_inv = 1.0/k_pairDPD->temperature; // independent of i,j + boltz_inv = 1.0/force->boltz; + ftm2v = force->ftm2v; + dt = update->dt; + + k_params.template sync(); + + // process neighbors in the local AIR + atomKK->sync(execution_space,X_MASK | V_MASK | TYPE_MASK | RMASS_MASK | UCOND_MASK | UMECH_MASK | DPDTHETA_MASK); + for (workPhase = 0; workPhase < ssa_phaseCt; ++workPhase) { + int workItemCt = h_ssa_phaseLen[workPhase]; + + if(atom->ntypes > MAX_TYPES_STACKPARAMS) + Kokkos::parallel_for(Kokkos::RangePolicy >(0,workItemCt),*this); + else + Kokkos::parallel_for(Kokkos::RangePolicy >(0,workItemCt),*this); + } + atomKK->modified(execution_space,V_MASK | UCOND_MASK | UMECH_MASK); + + //Loop over all 13 outward directions (7 stages) + for (workPhase = 0; workPhase < ssa_gphaseCt; ++workPhase) { + // int airnum = workPhase + 1; + int workItemCt = h_ssa_gphaseLen[workPhase]; + + // Communicate the updated velocities to all nodes + atomKK->sync(Host,V_MASK); + comm->forward_comm_fix(this); + atomKK->modified(Host,V_MASK); + + if(k_pairDPDE){ + // Zero out the ghosts' uCond & uMech to be used as delta accumulators +// memset(&(atom->uCond[nlocal]), 0, sizeof(double)*nghost); +// memset(&(atom->uMech[nlocal]), 0, sizeof(double)*nghost); + + // must capture local variables, not class variables + atomKK->sync(execution_space,UCOND_MASK | UMECH_MASK); + auto l_uCond = uCond; + auto l_uMech = uMech; + Kokkos::parallel_for(Kokkos::RangePolicy(nlocal,nlocal+nghost), LAMMPS_LAMBDA (const int i) { + l_uCond(i) = 0.0; + l_uMech(i) = 0.0; + }); + atomKK->modified(execution_space,UCOND_MASK | UMECH_MASK); + } + + // process neighbors in this AIR + atomKK->sync(execution_space,X_MASK | V_MASK | TYPE_MASK | RMASS_MASK | UCOND_MASK | UMECH_MASK | DPDTHETA_MASK); + if(atom->ntypes > MAX_TYPES_STACKPARAMS) + Kokkos::parallel_for(Kokkos::RangePolicy >(0,workItemCt),*this); + else + Kokkos::parallel_for(Kokkos::RangePolicy >(0,workItemCt),*this); + atomKK->modified(execution_space,V_MASK | UCOND_MASK | UMECH_MASK); + + // Communicate the ghost deltas to the atom owners + atomKK->sync(Host,V_MASK | UCOND_MASK | UMECH_MASK); + comm->reverse_comm_fix(this); + atomKK->modified(Host,V_MASK | UCOND_MASK | UMECH_MASK); + + } //End Loop over all directions For airnum = Top, Top-Right, Right, Bottom-Right, Back + +#ifdef DEBUG_SSA_PAIR_CT +deep_copy(h_counters, d_counters); +deep_copy(h_hist, d_hist); +for (int i = 0; i < 32; ++i) fprintf(stdout, "%8d", h_hist[i]); +fprintf(stdout, "\n%6d %6d,%6d %6d: " + ,h_counters(0, 2) + ,h_counters(1, 2) + ,h_counters(0, 1) + ,h_counters(1, 1) +); +#endif + + copymode = 0; +} + +template +template +KOKKOS_INLINE_FUNCTION +void FixShardlowKokkos::operator()(TagFixShardlowSSAUpdateDPDE, const int &workItem) const { + const int ct = ssa_itemLen(workPhase, workItem); + const int ii = ssa_itemLoc(workPhase, workItem); + ssa_update_dpde(ii, ct, workItem); +} + +template +template +KOKKOS_INLINE_FUNCTION +void FixShardlowKokkos::operator()(TagFixShardlowSSAUpdateDPDEGhost, const int &workItem) const { + const int ct = ssa_gitemLen(workPhase, workItem); + const int ii = ssa_gitemLoc(workPhase, workItem); + ssa_update_dpde(ii, ct, workItem); +} + +/* ---------------------------------------------------------------------- */ + +template +int FixShardlowKokkos::pack_forward_comm(int n, int *list, double *buf, int pbc_flag, int *pbc) +{ + int ii,jj,m; + + m = 0; + for (ii = 0; ii < n; ii++) { + jj = list[ii]; + buf[m++] = h_v(jj, 0); + buf[m++] = h_v(jj, 1); + buf[m++] = h_v(jj, 2); + } + return m; +} + +/* ---------------------------------------------------------------------- */ + +template +void FixShardlowKokkos::unpack_forward_comm(int n, int first, double *buf) +{ + int ii,m,last; + + m = 0; + last = first + n ; + for (ii = first; ii < last; ii++) { + h_v_t0(ii - nlocal, 0) = h_v(ii, 0) = buf[m++]; + h_v_t0(ii - nlocal, 1) = h_v(ii, 1) = buf[m++]; + h_v_t0(ii - nlocal, 2) = h_v(ii, 2) = buf[m++]; + } +} + +/* ---------------------------------------------------------------------- */ + +template +int FixShardlowKokkos::pack_reverse_comm(int n, int first, double *buf) +{ + int i,m,last; + + m = 0; + last = first + n; + for (i = first; i < last; i++) { + buf[m++] = h_v(i, 0) - h_v_t0(i - nlocal, 0); + buf[m++] = h_v(i, 1) - h_v_t0(i - nlocal, 1); + buf[m++] = h_v(i, 2) - h_v_t0(i - nlocal, 2); + if(k_pairDPDE){ + buf[m++] = h_uCond(i); // for ghosts, this is an accumulated delta + buf[m++] = h_uMech(i); // for ghosts, this is an accumulated delta + } + } + return m; +} + +/* ---------------------------------------------------------------------- */ + +template +void FixShardlowKokkos::unpack_reverse_comm(int n, int *list, double *buf) +{ + int i,j,m; + + m = 0; + for (i = 0; i < n; i++) { + j = list[i]; + + h_v(j, 0) += buf[m++]; + h_v(j, 1) += buf[m++]; + h_v(j, 2) += buf[m++]; + if(k_pairDPDE){ + h_uCond(j) += buf[m++]; // add in the accumulated delta + h_uMech(j) += buf[m++]; // add in the accumulated delta + } + } +} + +/* ---------------------------------------------------------------------- */ + +template +double FixShardlowKokkos::memory_usage() +{ + double bytes = 0.0; + bytes += sizeof(double)*3*ghostmax; // v_t0[] + return bytes; +} + +namespace LAMMPS_NS { +template class FixShardlowKokkos; +#ifdef KOKKOS_HAVE_CUDA +template class FixShardlowKokkos; +#endif +} diff --git a/src/KOKKOS/fix_shardlow_kokkos.h b/src/KOKKOS/fix_shardlow_kokkos.h new file mode 100644 index 0000000000000000000000000000000000000000..70dccf2e2d6b9faeba8bae406d26c986d0fac3d5 --- /dev/null +++ b/src/KOKKOS/fix_shardlow_kokkos.h @@ -0,0 +1,196 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#ifdef FIX_CLASS + +FixStyle(shardlow/kk,FixShardlowKokkos) +FixStyle(shardlow/kk/device,FixShardlowKokkos) +FixStyle(shardlow/kk/host,FixShardlowKokkos) + +#else + +#ifndef LMP_FIX_SHARDLOW_KOKKOS_H +#define LMP_FIX_SHARDLOW_KOKKOS_H + +#include "float.h" +#include "fix_shardlow.h" +#include "kokkos_type.h" +#include "neigh_list_kokkos.h" +#ifdef ENABLE_KOKKOS_DPD_CONSTANT_TEMPERATURE +#include "pair_dpd_fdt_kokkos.h" +#endif +#include "pair_dpd_fdt_energy_kokkos.h" + +namespace LAMMPS_NS { + +template +struct TagFixShardlowSSAUpdateDPDE{}; + +template +struct TagFixShardlowSSAUpdateDPDEGhost{}; + +template +class FixShardlowKokkos : public FixShardlow { + public: + typedef ArrayTypes AT; + NeighListKokkos *k_list; // The SSA specific neighbor list + + FixShardlowKokkos(class LAMMPS *, int, char **); + ~FixShardlowKokkos(); + int setmask(); + virtual void init(); + virtual void init_list(int, class NeighList *); + virtual void initial_integrate(int); + void setup_pre_neighbor(); + void pre_neighbor(); + + double memory_usage(); + + int pack_reverse_comm(int, int, double *); + void unpack_reverse_comm(int, int *, double *); + int pack_forward_comm(int , int *, double *, int, int *); + void unpack_forward_comm(int , int , double *); + + struct params_ssa { + KOKKOS_INLINE_FUNCTION + params_ssa(){cutinv=FLT_MAX;halfsigma=0;kappa=0;alpha=0;}; + KOKKOS_INLINE_FUNCTION + params_ssa(int i){cutinv=FLT_MAX;halfsigma=0;kappa=0;alpha=0;}; + F_FLOAT cutinv,halfsigma,kappa,alpha; + }; + + template + KOKKOS_INLINE_FUNCTION + void operator()(TagFixShardlowSSAUpdateDPDE, const int&) const; + + template + KOKKOS_INLINE_FUNCTION + void operator()(TagFixShardlowSSAUpdateDPDEGhost, const int&) const; + +#ifdef DEBUG_SSA_PAIR_CT + typename AT::t_int_2d d_counters; + typename HAT::t_int_2d h_counters; + typename AT::t_int_1d d_hist; + typename HAT::t_int_1d h_hist; +#endif + + protected: + int workPhase; + double theta_ij_inv,boltz_inv,ftm2v,dt; + +#ifdef ENABLE_KOKKOS_DPD_CONSTANT_TEMPERATURE +// class PairDPDfdt *pairDPD; FIXME as per k_pairDPDE below +#endif + PairDPDfdtEnergyKokkos *k_pairDPDE; + + int maxRNG; +#ifdef DPD_USE_RAN_MARS + class RanMars **pp_random; +#elif defined(DPD_USE_Random_XorShift1024) + Kokkos::Random_XorShift1024_Pool rand_pool; + typedef typename Kokkos::Random_XorShift1024_Pool::generator_type rand_type; +#else + Kokkos::Random_XorShift64_Pool rand_pool; + typedef typename Kokkos::Random_XorShift64_Pool::generator_type rand_type; +#endif + + Kokkos::DualView k_params; + typename Kokkos::DualView::t_dev_const_um params; + // hardwired to space for MAX_TYPES_STACKPARAMS (12) atom types + params_ssa m_params[MAX_TYPES_STACKPARAMS+1][MAX_TYPES_STACKPARAMS+1]; + + F_FLOAT m_cutsq[MAX_TYPES_STACKPARAMS+1][MAX_TYPES_STACKPARAMS+1]; + typename ArrayTypes::t_ffloat_2d d_cutsq; + + typename DAT::tdual_v_array k_v_t0; + // typename AT::t_v_array d_v_t0; v_t0 only used in comm routines (on host) + typename HAT::t_v_array h_v_t0; + + typename AT::t_x_array x; + typename AT::t_v_array v; + typename HAT::t_v_array h_v; + typename AT::t_efloat_1d uCond, uMech; + typename HAT::t_efloat_1d h_uCond, h_uMech; + typename AT::t_int_1d type; + bool massPerI; + typename AT::t_float_1d_randomread masses; + typename AT::t_efloat_1d dpdTheta; + + double dtsqrt; // = sqrt(update->dt); + int ghostmax; + int nlocal, nghost; + + typename AT::t_neighbors_2d d_neighbors; + typename AT::t_int_1d_randomread d_ilist, d_numneigh; + + int ssa_phaseCt; + typename AT::t_int_1d ssa_phaseLen; + typename AT::t_int_2d ssa_itemLoc, ssa_itemLen; + + int ssa_gphaseCt; + typename AT::t_int_1d ssa_gphaseLen; + typename AT::t_int_2d ssa_gitemLoc, ssa_gitemLen; + + +#ifdef ENABLE_KOKKOS_DPD_CONSTANT_TEMPERATURE + template + KOKKOS_INLINE_FUNCTION + void ssa_update_dpd(int, int, int) const; // Constant Temperature +#endif + template + KOKKOS_INLINE_FUNCTION + void ssa_update_dpde(int, int, int) const; // Constant Energy + +}; + +} + +#endif +#endif + +/* ERROR/WARNING messages: + +E: Illegal ... command + +Self-explanatory. Check the input script syntax and compare to the +documentation for the command. You can use -echo screen as a +command-line option when running LAMMPS to see the offending line. + +E: Must use dpd/fdt pair_style with fix shardlow + +Self-explanatory. + +E: Must use pair_style dpd/fdt or dpd/fdt/energy with fix shardlow + +E: A deterministic integrator must be specified after fix shardlow in input +file (e.g. fix nve or fix nph). + +Self-explanatory. + +E: Cannot use constant temperature integration routines with DPD + +Self-explanatory. Must use deterministic integrators such as nve or nph + +E: Fix shardlow does not yet support triclinic geometries + +Self-explanatory. + +E: Shardlow algorithm requires sub-domain length > 2*(rcut+skin). Either +reduce the number of processors requested, or change the cutoff/skin + +The Shardlow splitting algorithm requires the size of the sub-domain lengths +to be are larger than twice the cutoff+skin. Generally, the domain decomposition +is dependant on the number of processors requested. + +*/ diff --git a/src/KOKKOS/fix_wall_lj93_kokkos.cpp b/src/KOKKOS/fix_wall_lj93_kokkos.cpp new file mode 100644 index 0000000000000000000000000000000000000000..b0f7e0bda4ffa85493cf03c3da193780d2b4e61b --- /dev/null +++ b/src/KOKKOS/fix_wall_lj93_kokkos.cpp @@ -0,0 +1,103 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#include +#include "fix_wall_lj93_kokkos.h" +#include "atom_kokkos.h" +#include "error.h" +#include "atom_masks.h" + +using namespace LAMMPS_NS; +using namespace FixConst; + +/* ---------------------------------------------------------------------- */ + +template +FixWallLJ93Kokkos::FixWallLJ93Kokkos(LAMMPS *lmp, int narg, char **arg) : + FixWallLJ93(lmp, narg, arg) +{ + kokkosable = 1; + atomKK = (AtomKokkos *) atom; + execution_space = ExecutionSpaceFromDevice::space; + datamask_read = EMPTY_MASK; + datamask_modify = EMPTY_MASK; +} + +/* ---------------------------------------------------------------------- + interaction of all particles in group with a wall + m = index of wall coeffs + which = xlo,xhi,ylo,yhi,zlo,zhi + error if any particle is on or behind wall +------------------------------------------------------------------------- */ + +template +void FixWallLJ93Kokkos::wall_particle(int m_in, int which, double coord_in) +{ + m = m_in; + coord = coord_in; + + atomKK->sync(execution_space, X_MASK|F_MASK|MASK_MASK); + x = atomKK->k_x.view(); + f = atomKK->k_f.view(); + mask = atomKK->k_mask.view(); + DAT::tdual_int_scalar k_oneflag = DAT::tdual_int_scalar("fix:oneflag"); + d_oneflag = k_oneflag.view(); + + int nlocal = atom->nlocal; + + dim = which / 2; + side = which % 2; + if (side == 0) side = -1; + + copymode = 1; + FixWallLJ93KokkosFunctor wp_functor(this); + Kokkos::parallel_reduce(nlocal,wp_functor,ewall); + copymode = 0; + + atomKK->modified(execution_space, F_MASK); + + k_oneflag.template modify(); + k_oneflag.template sync(); + if (k_oneflag.h_view()) error->one(FLERR,"Particle on or inside fix wall surface"); +} + +template +KOKKOS_INLINE_FUNCTION +void FixWallLJ93Kokkos::wall_particle_item(int i, value_type ewall) const { + if (mask(i) & groupbit) { + double delta; + if (side < 0) delta = x(i,dim) - coord; + else delta = coord - x(i,dim); + if (delta >= cutoff[m]) return; + if (delta <= 0.0) { + d_oneflag() = 1; + return; + } + double rinv = 1.0/delta; + double r2inv = rinv*rinv; + double r4inv = r2inv*r2inv; + double r10inv = r4inv*r4inv*r2inv; + double fwall = side * (coeff1[m]*r10inv - coeff2[m]*r4inv); + f(i,dim) -= fwall; + ewall[0] += coeff3[m]*r4inv*r4inv*rinv - + coeff4[m]*r2inv*rinv - offset[m]; + ewall[m+1] += fwall; + } +} + +namespace LAMMPS_NS { +template class FixWallLJ93Kokkos; +#ifdef KOKKOS_HAVE_CUDA +template class FixWallLJ93Kokkos; +#endif +} diff --git a/src/KOKKOS/fix_wall_lj93_kokkos.h b/src/KOKKOS/fix_wall_lj93_kokkos.h new file mode 100644 index 0000000000000000000000000000000000000000..64f3c59a62e3ba91cd4fd5f05e7c897d361ee71b --- /dev/null +++ b/src/KOKKOS/fix_wall_lj93_kokkos.h @@ -0,0 +1,83 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#ifdef FIX_CLASS + +FixStyle(wall/lj93/kk,FixWallLJ93Kokkos) +FixStyle(wall/lj93/kk/device,FixWallLJ93Kokkos) +FixStyle(wall/lj93/kk/host,FixWallLJ93Kokkos) + +#else + +#ifndef LMP_FIX_WALL_LJ93_KOKKOS_H +#define LMP_FIX_WALL_LJ93_KOKKOS_H + +#include "fix_wall_lj93.h" +#include "kokkos_type.h" + +namespace LAMMPS_NS { + +template +class FixWallLJ93Kokkos : public FixWallLJ93 { + public: + typedef DeviceType device_type; + typedef ArrayTypes AT; + typedef double value_type[]; + + FixWallLJ93Kokkos(class LAMMPS *, int, char **); + void wall_particle(int, int, double); + + int m; + + KOKKOS_INLINE_FUNCTION + void wall_particle_item(int, value_type) const; + + private: + int dim,side; + double coord; + + typename AT::t_x_array x; + typename AT::t_f_array f; + typename AT::t_int_1d mask; + typename AT::t_int_scalar d_oneflag; +}; + +template +struct FixWallLJ93KokkosFunctor { + typedef DeviceType device_type ; + typedef double value_type[]; + const int value_count; + + FixWallLJ93Kokkos c; + FixWallLJ93KokkosFunctor(FixWallLJ93Kokkos* c_ptr): + c(*c_ptr), + value_count(c_ptr->m+1) {} + KOKKOS_INLINE_FUNCTION + void operator()(const int i, value_type ewall) const { + c.wall_particle_item(i,ewall); + } +}; + +} + +#endif +#endif + +/* ERROR/WARNING messages: + +E: Particle on or inside fix wall surface + +Particles must be "exterior" to the wall in order for energy/force to +be calculated. + +*/ diff --git a/src/KOKKOS/improper_harmonic_kokkos.cpp b/src/KOKKOS/improper_harmonic_kokkos.cpp index 1e58e18c5189766dad20958c535f0eb123169950..73e105864f630b0516ac90ba41058cf101878bea 100644 --- a/src/KOKKOS/improper_harmonic_kokkos.cpp +++ b/src/KOKKOS/improper_harmonic_kokkos.cpp @@ -309,8 +309,8 @@ void ImproperHarmonicKokkos::allocate() k_k = Kokkos::DualView("ImproperHarmonic::k",n+1); k_chi = Kokkos::DualView("ImproperHarmonic::chi",n+1); - d_k = k_k.d_view; - d_chi = k_chi.d_view; + d_k = k_k.template view(); + d_chi = k_chi.template view(); } /* ---------------------------------------------------------------------- diff --git a/src/KOKKOS/kokkos.cpp b/src/KOKKOS/kokkos.cpp index b8be74ac1ed392979f7209f1745e88daab934b62..072a802b54e7534a8139e6f9092c65354b2c1ce9 100644 --- a/src/KOKKOS/kokkos.cpp +++ b/src/KOKKOS/kokkos.cpp @@ -293,4 +293,4 @@ void KokkosLMP::my_signal_handler(int sig) if (sig == SIGSEGV) { kill(getpid(),SIGABRT); } -} \ No newline at end of file +} diff --git a/src/KOKKOS/nbin_kokkos.cpp b/src/KOKKOS/nbin_kokkos.cpp index 5e4178724790f7d584cd7ed1632a8d82b94ecd0a..c7e815928a185f7255d36749121d17615d546661 100644 --- a/src/KOKKOS/nbin_kokkos.cpp +++ b/src/KOKKOS/nbin_kokkos.cpp @@ -95,7 +95,6 @@ void NBinKokkos::bin_atoms() MemsetZeroFunctor f_zero; f_zero.ptr = (void*) k_bincount.view().ptr_on_device(); Kokkos::parallel_for(mbins, f_zero); - DeviceType::fence(); atomKK->sync(ExecutionSpaceFromDevice::space,X_MASK); x = atomKK->k_x.view(); @@ -106,7 +105,6 @@ void NBinKokkos::bin_atoms() NPairKokkosBinAtomsFunctor f(*this); Kokkos::parallel_for(atom->nlocal+atom->nghost, f); - DeviceType::fence(); deep_copy(h_resize, d_resize); if(h_resize()) { diff --git a/src/KOKKOS/nbin_ssa_kokkos.cpp b/src/KOKKOS/nbin_ssa_kokkos.cpp new file mode 100644 index 0000000000000000000000000000000000000000..ab97cb584805b6328df67cfe954d02ba44fc3907 --- /dev/null +++ b/src/KOKKOS/nbin_ssa_kokkos.cpp @@ -0,0 +1,307 @@ +/* ---------------------------------------------------------------------- + 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: + James Larentzos (ARL) and Timothy I. Mattox (Engility Corporation) +------------------------------------------------------------------------- */ + +#include "nbin_ssa_kokkos.h" +#include "neighbor.h" +#include "atom_kokkos.h" +#include "group.h" +#include "domain.h" +#include "comm.h" +#include "update.h" +#include "error.h" +#include "atom_masks.h" + +// #include "memory.h" + +using namespace LAMMPS_NS; + +/* ---------------------------------------------------------------------- */ + +template +NBinSSAKokkos::NBinSSAKokkos(LAMMPS *lmp) : NBinStandard(lmp) +{ + atoms_per_bin = ghosts_per_gbin = 16; + + d_resize = typename AT::t_int_scalar("NBinSSAKokkos::d_resize"); + d_lbinxlo = typename AT::t_int_scalar("NBinSSAKokkos::d_lbinxlo"); + d_lbinylo = typename AT::t_int_scalar("NBinSSAKokkos::d_lbinylo"); + d_lbinzlo = typename AT::t_int_scalar("NBinSSAKokkos::d_lbinzlo"); + d_lbinxhi = typename AT::t_int_scalar("NBinSSAKokkos::d_lbinxhi"); + d_lbinyhi = typename AT::t_int_scalar("NBinSSAKokkos::d_lbinyhi"); + d_lbinzhi = typename AT::t_int_scalar("NBinSSAKokkos::d_lbinzhi"); +#ifndef KOKKOS_USE_CUDA_UVM + h_resize = Kokkos::create_mirror_view(d_resize); + h_lbinxlo = Kokkos::create_mirror_view(d_lbinxlo); + h_lbinylo = Kokkos::create_mirror_view(d_lbinylo); + h_lbinzlo = Kokkos::create_mirror_view(d_lbinzlo); + h_lbinxhi = Kokkos::create_mirror_view(d_lbinxhi); + h_lbinyhi = Kokkos::create_mirror_view(d_lbinyhi); + h_lbinzhi = Kokkos::create_mirror_view(d_lbinzhi); +#else + h_resize = d_resize; + h_lbinxlo = d_lbinxlo; + h_lbinylo = d_lbinylo; + h_lbinzlo = d_lbinzlo; + h_lbinxhi = d_lbinxhi; + h_lbinyhi = d_lbinyhi; + h_lbinzhi = d_lbinzhi; +#endif + h_resize() = 1; + + k_gbincount = DAT::tdual_int_1d("NBinSSAKokkos::gbincount",8); + gbincount = k_gbincount.view(); +} + +/* ---------------------------------------------------------------------- */ + +template +void NBinSSAKokkos::bin_atoms_setup(int nall) +{ + if (mbins > (int) k_bins.h_view.dimension_0()) { + k_bins = DAT::tdual_int_2d("NBinSSAKokkos::bins",mbins,atoms_per_bin); + bins = k_bins.view(); + + k_bincount = DAT::tdual_int_1d("NBinSSAKokkos::bincount",mbins); + bincount = k_bincount.view(); + } + + ghosts_per_gbin = atom->nghost / 7; // estimate needed size + + if (ghosts_per_gbin > (int) k_gbins.h_view.dimension_1()) { + k_gbins = DAT::tdual_int_2d("NBinSSAKokkos::gbins",8,ghosts_per_gbin); + gbins = k_gbins.view(); + } + + // Clear the local bin extent bounding box. + h_lbinxlo() = mbinx - 1; // Safe to = stencil->sx + 1 + h_lbinylo() = mbiny - 1; // Safe to = stencil->sy + 1 + h_lbinzlo() = mbinz - 1; // Safe to = stencil->sz + 1 + h_lbinxhi() = 0; // Safe to = mbinx - stencil->sx - 1 + h_lbinyhi() = 0; // Safe to = mbiny - stencil->sy - 1 + h_lbinzhi() = 0; // Safe to = mbinz - stencil->sz - 1 + deep_copy(d_lbinxlo, h_lbinxlo); + deep_copy(d_lbinylo, h_lbinylo); + deep_copy(d_lbinzlo, h_lbinzlo); + deep_copy(d_lbinxhi, h_lbinxhi); + deep_copy(d_lbinyhi, h_lbinyhi); + deep_copy(d_lbinzhi, h_lbinzhi); +} + +/* ---------------------------------------------------------------------- + bin owned and ghost atoms for the Shardlow Splitting Algorithm (SSA) + local atoms are in distinct bins (binhead[]) from the ghosts + ghost atoms are "binned" in gairhead_ssa[] instead + ghosts which are not in an Active Interaction Region (AIR) are skipped +------------------------------------------------------------------------- */ + +template +void NBinSSAKokkos::bin_atoms() +{ + last_bin = update->ntimestep; + + int nlocal = atom->nlocal; + int nghost = atom->nghost; + int nall = nlocal + nghost; + + atomKK->sync(ExecutionSpaceFromDevice::space,X_MASK); + x = atomKK->k_x.view(); + + sublo_[0] = domain->sublo[0]; + sublo_[1] = domain->sublo[1]; + sublo_[2] = domain->sublo[2]; + subhi_[0] = domain->subhi[0]; + subhi_[1] = domain->subhi[1]; + subhi_[2] = domain->subhi[2]; + + bboxlo_[0] = bboxlo[0]; bboxlo_[1] = bboxlo[1]; bboxlo_[2] = bboxlo[2]; + bboxhi_[0] = bboxhi[0]; bboxhi_[1] = bboxhi[1]; bboxhi_[2] = bboxhi[2]; + + k_binID = DAT::tdual_int_1d("NBinSSAKokkos::binID",nall); + binID = k_binID.view(); + + // find each local atom's binID + { + atoms_per_bin = 0; + NPairSSAKokkosBinIDAtomsFunctor f(*this); + Kokkos::parallel_reduce(nlocal, f, atoms_per_bin); + } + deep_copy(h_lbinxlo, d_lbinxlo); + deep_copy(h_lbinylo, d_lbinylo); + deep_copy(h_lbinzlo, d_lbinzlo); + deep_copy(h_lbinxhi, d_lbinxhi); + deep_copy(h_lbinyhi, d_lbinyhi); + deep_copy(h_lbinzhi, d_lbinzhi); + + // find each ghost's binID (AIR number) + { + for (int i = 0; i < 8; i++) k_gbincount.h_view(i) = 0; + k_gbincount.modify(); + k_gbincount.sync(); + ghosts_per_gbin = 0; + NPairSSAKokkosBinIDGhostsFunctor f(*this); + Kokkos::parallel_reduce(Kokkos::RangePolicy(nlocal,nall), f, ghosts_per_gbin); + } + + // actually bin the ghost atoms + { + if(ghosts_per_gbin > (int) gbins.dimension_1()) { + k_gbins = DAT::tdual_int_2d("gbins", 8, ghosts_per_gbin); + gbins = k_gbins.view(); + } + for (int i = 0; i < 8; i++) k_gbincount.h_view(i) = 0; + k_gbincount.modify(); + k_gbincount.sync(); + + auto binID_ = binID; + auto gbincount_ = gbincount; + auto gbins_ = gbins; + + Kokkos::parallel_for(Kokkos::RangePolicy(nlocal,nall), + LAMMPS_LAMBDA (const int i) { + const int iAIR = binID_(i); + if (iAIR > 0) { // include only ghost atoms in an AIR + const int ac = Kokkos::atomic_fetch_add(&gbincount_[iAIR], (int)1); + gbins_(iAIR, ac) = i; + } + }); + Kokkos::parallel_for(Kokkos::RangePolicy(1,8), + LAMMPS_LAMBDA (const int i) { + sortBin(gbincount_, gbins_, i); + }); + } + c_gbins = gbins; // gbins won't change until the next bin_atoms + + // actually bin the local atoms + { + if ((mbins > (int) bins.dimension_0()) || + (atoms_per_bin > (int) bins.dimension_1())) { + k_bins = DAT::tdual_int_2d("bins", mbins, atoms_per_bin); + bins = k_bins.view(); + } + MemsetZeroFunctor f_zero; + f_zero.ptr = (void*) k_bincount.view().ptr_on_device(); + Kokkos::parallel_for(mbins, f_zero); + + auto bincount_ = bincount; + auto bins_ = bins; + + NPairSSAKokkosBinAtomsFunctor f(*this); + Kokkos::parallel_for(nlocal, f); + + Kokkos::parallel_for(mbins, + LAMMPS_LAMBDA (const int i) { + sortBin(bincount_, bins_, i); + }); + } + k_bins.modify(); + k_bincount.modify(); + c_bins = bins; // bins won't change until the next bin_atoms + + k_gbins.modify(); + k_gbincount.modify(); + +//now dispose of the k_binID array + k_binID = DAT::tdual_int_1d("NBinSSAKokkos::binID",0); + binID = k_binID.view(); +} + +/* ---------------------------------------------------------------------- */ + +template +KOKKOS_INLINE_FUNCTION +void NBinSSAKokkos::binAtomsItem(const int &i) const +{ + const int ibin = binID(i); + const int ac = Kokkos::atomic_fetch_add(&(bincount[ibin]), (int)1); + bins(ibin, ac) = i; +} + +template +KOKKOS_INLINE_FUNCTION +void NBinSSAKokkos::binIDAtomsItem(const int &i, int &update) const +{ + int loc[3]; + const int ibin = coord2bin(x(i, 0), x(i, 1), x(i, 2), &(loc[0])); + binID(i) = ibin; + + // Find the bounding box of the local atoms in the bins + if (loc[0] < d_lbinxlo()) Kokkos::atomic_fetch_min(&d_lbinxlo(),loc[0]); + if (loc[0] >= d_lbinxhi()) Kokkos::atomic_fetch_max(&d_lbinxhi(),loc[0] + 1); + if (loc[1] < d_lbinylo()) Kokkos::atomic_fetch_min(&d_lbinylo(),loc[1]); + if (loc[1] >= d_lbinyhi()) Kokkos::atomic_fetch_max(&d_lbinyhi(),loc[1] + 1); + if (loc[2] < d_lbinzlo()) Kokkos::atomic_fetch_min(&d_lbinzlo(),loc[2]); + if (loc[2] >= d_lbinzhi()) Kokkos::atomic_fetch_max(&d_lbinzhi(),loc[2] + 1); + + const int ac = Kokkos::atomic_fetch_add(&(bincount[ibin]), (int)1); + if (update <= ac) update = ac + 1; +} + +template +KOKKOS_INLINE_FUNCTION +void NBinSSAKokkos::binIDGhostsItem(const int &i, int &update) const +{ + const int iAIR = coord2ssaAIR(x(i, 0), x(i, 1), x(i, 2)); + binID(i) = iAIR; + if (iAIR > 0) { // include only ghost atoms in an AIR + const int ac = Kokkos::atomic_fetch_add(&gbincount[iAIR], (int)1); + if (update <= ac) update = ac + 1; + } +} + +// An implementation of heapsort without recursion +template +KOKKOS_INLINE_FUNCTION +void NBinSSAKokkos::sortBin( + typename AT::t_int_1d gbincount, + typename AT::t_int_2d gbins, + const int &ibin) +{ + int n = gbincount(ibin); + int i = n/2; + int t; + + do { /* Loops until bin is sorted */ + if (i > 0) { /* First stage - Sorting the heap */ + i--; /* Save its index to i */ + t = gbins(ibin, i); /* Save parent value to t */ + } else { /* Second stage - Extracting elements in-place */ + if ((--n) <= 0) return; /* When the heap is empty, we are done */ + t = gbins(ibin, n); /* Save last value (it will be overwritten) */ + gbins(ibin, n) = gbins(ibin, 0); /* Save largest value at the end of the bin */ + } + int parent = i; /* We will start pushing down t from parent */ + int child = i*2 + 1; /* parent's left child */ + /* Sift operation - pushing the value of t down the heap */ + while (child < n) { + /* Choose the largest child */ + if ((child + 1 < n) && (gbins(ibin, child + 1) > gbins(ibin, child))) ++child; + if (gbins(ibin, child) <= t) break; /* t's place is found */ + gbins(ibin, parent) = gbins(ibin, child); /* Move the largest child up */ + parent = child; /* Move parent pointer to this child */ + child = parent*2+1; /* Find the next child */ + } + gbins(ibin, parent) = t; /* We save t in the heap */ + } while(1); +} + +namespace LAMMPS_NS { +template class NBinSSAKokkos; +#ifdef KOKKOS_HAVE_CUDA +template class NBinSSAKokkos; +#endif +} diff --git a/src/KOKKOS/nbin_ssa_kokkos.h b/src/KOKKOS/nbin_ssa_kokkos.h new file mode 100644 index 0000000000000000000000000000000000000000..cc98859913253c81bd8265a6785423bce79492a5 --- /dev/null +++ b/src/KOKKOS/nbin_ssa_kokkos.h @@ -0,0 +1,246 @@ +/* -*- 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 NBIN_CLASS + +NBinStyle(ssa/kk/host, + NBinSSAKokkos, + NB_SSA | NB_KOKKOS_HOST) + +NBinStyle(ssa/kk/device, + NBinSSAKokkos, + NB_SSA | NB_KOKKOS_DEVICE) + +#else + +#ifndef LMP_NBIN_SSA_KOKKOS_H +#define LMP_NBIN_SSA_KOKKOS_H + +#include "nbin_standard.h" +#include "kokkos_type.h" + +namespace LAMMPS_NS { + +template +class NBinSSAKokkos : public NBinStandard { + public: + typedef ArrayTypes AT; + + NBinSSAKokkos(class LAMMPS *); + ~NBinSSAKokkos() {} + void bin_atoms_setup(int); + void bin_atoms(); + + // temporary array to hold the binID for each atom + DAT::tdual_int_1d k_binID; + typename AT::t_int_1d binID; + typename AT::t_int_1d_const c_binID; + + int atoms_per_bin; + DAT::tdual_int_1d k_bincount; + DAT::tdual_int_2d k_bins; + typename AT::t_int_1d bincount; + typename AT::t_int_2d bins; + typename AT::t_int_2d_const c_bins; + + int ghosts_per_gbin; + DAT::tdual_int_1d k_gbincount; + DAT::tdual_int_2d k_gbins; + typename AT::t_int_1d gbincount; + typename AT::t_int_2d gbins; + typename AT::t_int_2d_const c_gbins; + + typename AT::t_int_scalar d_resize; + typename ArrayTypes::t_int_scalar h_resize; + typename AT::t_x_array_randomread x; + + // Bounds of the local atoms in the bins array + typename AT::t_int_scalar d_lbinxlo; // lowest local bin x-dim coordinate + typename AT::t_int_scalar d_lbinylo; // lowest local bin y-dim coordinate + typename AT::t_int_scalar d_lbinzlo; // lowest local bin z-dim coordinate + typename AT::t_int_scalar d_lbinxhi; // highest local bin x-dim coordinate + typename AT::t_int_scalar d_lbinyhi; // highest local bin y-dim coordinate + typename AT::t_int_scalar d_lbinzhi; // highest local bin z-dim coordinate + typename ArrayTypes::t_int_scalar h_lbinxlo; + typename ArrayTypes::t_int_scalar h_lbinylo; + typename ArrayTypes::t_int_scalar h_lbinzlo; + typename ArrayTypes::t_int_scalar h_lbinxhi; + typename ArrayTypes::t_int_scalar h_lbinyhi; + typename ArrayTypes::t_int_scalar h_lbinzhi; + + + KOKKOS_INLINE_FUNCTION + void binAtomsItem(const int &i) const; + + KOKKOS_INLINE_FUNCTION + void binIDAtomsItem(const int &i, int &update) const; + + KOKKOS_INLINE_FUNCTION + void binIDGhostsItem(const int &i, int &update) const; + + static KOKKOS_INLINE_FUNCTION + void sortBin( + typename AT::t_int_1d gbincount, + typename AT::t_int_2d gbins, + const int &ibin); + +/* ---------------------------------------------------------------------- + convert atom coords into the ssa active interaction region number +------------------------------------------------------------------------- */ + KOKKOS_INLINE_FUNCTION + int coord2ssaAIR(const X_FLOAT & x,const X_FLOAT & y,const X_FLOAT & z) const + { + int ix, iy, iz; + ix = iy = iz = 0; + if (z < sublo_[2]) iz = -1; + if (z >= subhi_[2]) iz = 1; + if (y < sublo_[1]) iy = -1; + if (y >= subhi_[1]) iy = 1; + if (x < sublo_[0]) ix = -1; + if (x >= subhi_[0]) ix = 1; + if(iz < 0){ + return -1; + } else if(iz == 0){ + if( iy<0 ) return -1; // bottom left/middle/right + if( (iy==0) && (ix<0) ) return -1; // left atoms + if( (iy==0) && (ix==0) ) return 0; // Locally owned atoms + if( (iy==0) && (ix>0) ) return 2; // Right atoms + if( (iy>0) && (ix==0) ) return 1; // Top-middle atoms + if( (iy>0) && (ix!=0) ) return 3; // Top-right and top-left atoms + } else { // iz > 0 + if((ix==0) && (iy==0)) return 4; // Back atoms + if((ix==0) && (iy!=0)) return 5; // Top-back and bottom-back atoms + if((ix!=0) && (iy==0)) return 6; // Left-back and right-back atoms + if((ix!=0) && (iy!=0)) return 7; // Back corner atoms + } + return -2; + } + + KOKKOS_INLINE_FUNCTION + int coord2bin(const X_FLOAT & x,const X_FLOAT & y,const X_FLOAT & z, int* i) const + { + int ix,iy,iz; + + if (x >= bboxhi_[0]) + ix = static_cast ((x-bboxhi_[0])*bininvx) + nbinx; + else if (x >= bboxlo_[0]) { + ix = static_cast ((x-bboxlo_[0])*bininvx); + ix = MIN(ix,nbinx-1); + } else + ix = static_cast ((x-bboxlo_[0])*bininvx) - 1; + + if (y >= bboxhi_[1]) + iy = static_cast ((y-bboxhi_[1])*bininvy) + nbiny; + else if (y >= bboxlo_[1]) { + iy = static_cast ((y-bboxlo_[1])*bininvy); + iy = MIN(iy,nbiny-1); + } else + iy = static_cast ((y-bboxlo_[1])*bininvy) - 1; + + if (z >= bboxhi_[2]) + iz = static_cast ((z-bboxhi_[2])*bininvz) + nbinz; + else if (z >= bboxlo_[2]) { + iz = static_cast ((z-bboxlo_[2])*bininvz); + iz = MIN(iz,nbinz-1); + } else + iz = static_cast ((z-bboxlo_[2])*bininvz) - 1; + + i[0] = ix - mbinxlo; + i[1] = iy - mbinylo; + i[2] = iz - mbinzlo; + + return (iz-mbinzlo)*mbiny*mbinx + (iy-mbinylo)*mbinx + (ix-mbinxlo); + } + + private: + double bboxlo_[3],bboxhi_[3]; + double sublo_[3], subhi_[3]; +}; + +template +struct NPairSSAKokkosBinAtomsFunctor { + typedef DeviceType device_type; + + const NBinSSAKokkos c; + + NPairSSAKokkosBinAtomsFunctor(const NBinSSAKokkos &_c): + c(_c) {}; + ~NPairSSAKokkosBinAtomsFunctor() {} + KOKKOS_INLINE_FUNCTION + void operator() (const int & i) const { + c.binAtomsItem(i); + } +}; + +template +struct NPairSSAKokkosBinIDAtomsFunctor { + typedef DeviceType device_type; + typedef int value_type; + + const NBinSSAKokkos c; + + NPairSSAKokkosBinIDAtomsFunctor(const NBinSSAKokkos &_c): + c(_c) {}; + ~NPairSSAKokkosBinIDAtomsFunctor() {} + KOKKOS_INLINE_FUNCTION + void operator() (const int & i, value_type& update) const { + c.binIDAtomsItem(i, update); + } + + KOKKOS_INLINE_FUNCTION + void join (volatile value_type& dst, + const volatile value_type& src) const { + if (dst < src) dst = src; + } + + KOKKOS_INLINE_FUNCTION + void init (value_type& dst) const { + dst = INT_MIN; + } +}; + +template +struct NPairSSAKokkosBinIDGhostsFunctor { + typedef DeviceType device_type; + typedef int value_type; + + const NBinSSAKokkos c; + + NPairSSAKokkosBinIDGhostsFunctor(const NBinSSAKokkos &_c): + c(_c) {}; + ~NPairSSAKokkosBinIDGhostsFunctor() {} + KOKKOS_INLINE_FUNCTION + void operator() (const int & i, value_type& update) const { + c.binIDGhostsItem(i, update); + } + + KOKKOS_INLINE_FUNCTION + void join (volatile value_type& dst, + const volatile value_type& src) const { + if (dst < src) dst = src; + } + + KOKKOS_INLINE_FUNCTION + void init (value_type& dst) const { + dst = INT_MIN; + } +}; + +} + +#endif +#endif + +/* ERROR/WARNING messages: + +*/ diff --git a/src/KOKKOS/neigh_bond_kokkos.cpp b/src/KOKKOS/neigh_bond_kokkos.cpp index 767def70c2fd4569a95a690a3d4dc13397e59dc0..a674e7cec48a0e16ff9aa91f36ec85c53b23c0a5 100644 --- a/src/KOKKOS/neigh_bond_kokkos.cpp +++ b/src/KOKKOS/neigh_bond_kokkos.cpp @@ -274,7 +274,6 @@ void NeighBondKokkos::bond_all() k_fail_flag.template sync(); Kokkos::parallel_reduce(Kokkos::RangePolicy(0,nlocal),*this,nmissing); - DeviceType::fence(); k_nlist.template modify(); k_nlist.template sync(); @@ -307,6 +306,8 @@ void NeighBondKokkos::bond_all() "Bond atoms missing at step " BIGINT_FORMAT,update->ntimestep); if (me == 0) error->warning(FLERR,str); } + + k_bondlist.modify(); } template @@ -368,7 +369,6 @@ void NeighBondKokkos::bond_partial() k_fail_flag.template sync(); Kokkos::parallel_reduce(Kokkos::RangePolicy(0,nlocal),*this,nmissing); - DeviceType::fence(); k_nlist.template modify(); k_nlist.template sync(); @@ -401,6 +401,8 @@ void NeighBondKokkos::bond_partial() "Bond atoms missing at step " BIGINT_FORMAT,update->ntimestep); if (me == 0) error->warning(FLERR,str); } + + k_bondlist.modify(); } template @@ -435,9 +437,10 @@ void NeighBondKokkos::bond_check() int flag = 0; update_domain_variables(); + atomKK->sync(execution_space, X_MASK); + k_bondlist.sync(); Kokkos::parallel_reduce(Kokkos::RangePolicy(0,neighbor->nbondlist),*this,flag); - DeviceType::fence(); int flag_all; MPI_Allreduce(&flag,&flag_all,1,MPI_INT,MPI_SUM,world); @@ -488,7 +491,6 @@ void NeighBondKokkos::angle_all() k_fail_flag.template sync(); Kokkos::parallel_reduce(Kokkos::RangePolicy(0,nlocal),*this,nmissing); - DeviceType::fence(); k_nlist.template modify(); k_nlist.template sync(); @@ -521,6 +523,8 @@ void NeighBondKokkos::angle_all() "Angle atoms missing at step " BIGINT_FORMAT,update->ntimestep); if (me == 0) error->warning(FLERR,str); } + + k_anglelist.modify(); } template @@ -589,7 +593,6 @@ void NeighBondKokkos::angle_partial() k_fail_flag.template sync(); Kokkos::parallel_reduce(Kokkos::RangePolicy(0,nlocal),*this,nmissing); - DeviceType::fence(); k_nlist.template modify(); k_nlist.template sync(); @@ -622,6 +625,8 @@ void NeighBondKokkos::angle_partial() "Angle atoms missing at step " BIGINT_FORMAT,update->ntimestep); if (me == 0) error->warning(FLERR,str); } + + k_anglelist.modify(); } template @@ -664,9 +669,10 @@ void NeighBondKokkos::angle_check() // in case angle potential computes any of them update_domain_variables(); + atomKK->sync(execution_space, X_MASK); + k_anglelist.sync(); Kokkos::parallel_reduce(Kokkos::RangePolicy(0,neighbor->nanglelist),*this,flag); - DeviceType::fence(); int flag_all; MPI_Allreduce(&flag,&flag_all,1,MPI_INT,MPI_SUM,world); @@ -729,7 +735,6 @@ void NeighBondKokkos::dihedral_all() k_fail_flag.template sync(); Kokkos::parallel_reduce(Kokkos::RangePolicy(0,nlocal),*this,nmissing); - DeviceType::fence(); k_nlist.template modify(); k_nlist.template sync(); @@ -762,6 +767,8 @@ void NeighBondKokkos::dihedral_all() "Dihedral atoms missing at step " BIGINT_FORMAT,update->ntimestep); if (me == 0) error->warning(FLERR,str); } + + k_dihedrallist.modify(); } template @@ -835,7 +842,6 @@ void NeighBondKokkos::dihedral_partial() k_fail_flag.template sync(); Kokkos::parallel_reduce(Kokkos::RangePolicy(0,nlocal),*this,nmissing); - DeviceType::fence(); k_nlist.template modify(); k_nlist.template sync(); @@ -868,6 +874,8 @@ void NeighBondKokkos::dihedral_partial() "Dihedral atoms missing at step " BIGINT_FORMAT,update->ntimestep); if (me == 0) error->warning(FLERR,str); } + + k_dihedrallist.modify(); } template @@ -915,9 +923,10 @@ void NeighBondKokkos::dihedral_check(int nlist, typename AT::t_int_2 // in case dihedral/improper potential computes any of them update_domain_variables(); + atomKK->sync(execution_space, X_MASK); + k_dihedrallist.sync(); Kokkos::parallel_reduce(Kokkos::RangePolicy(0,nlist),*this,flag); - DeviceType::fence(); int flag_all; MPI_Allreduce(&flag,&flag_all,1,MPI_INT,MPI_SUM,world); @@ -997,7 +1006,6 @@ void NeighBondKokkos::improper_all() k_fail_flag.template sync(); Kokkos::parallel_reduce(Kokkos::RangePolicy(0,nlocal),*this,nmissing); - DeviceType::fence(); k_nlist.template modify(); k_nlist.template sync(); @@ -1030,6 +1038,8 @@ void NeighBondKokkos::improper_all() "Improper atoms missing at step " BIGINT_FORMAT,update->ntimestep); if (me == 0) error->warning(FLERR,str); } + + k_improperlist.modify(); } template @@ -1103,7 +1113,6 @@ void NeighBondKokkos::improper_partial() k_fail_flag.template sync(); Kokkos::parallel_reduce(Kokkos::RangePolicy(0,nlocal),*this,nmissing); - DeviceType::fence(); k_nlist.template modify(); k_nlist.template sync(); @@ -1136,6 +1145,8 @@ void NeighBondKokkos::improper_partial() "Improper atoms missing at step " BIGINT_FORMAT,update->ntimestep); if (me == 0) error->warning(FLERR,str); } + + k_improperlist.modify(); } template diff --git a/src/KOKKOS/neigh_list_kokkos.h b/src/KOKKOS/neigh_list_kokkos.h index c887bd13b789555353792a928e7c71778308c7e7..1c433f321c9684b34b2181214b65b6d39bc069bf 100644 --- a/src/KOKKOS/neigh_list_kokkos.h +++ b/src/KOKKOS/neigh_list_kokkos.h @@ -48,7 +48,7 @@ class AtomNeighborsConst const int num_neighs; KOKKOS_INLINE_FUNCTION - AtomNeighborsConst(int* const & firstneigh, const int & _num_neighs, + AtomNeighborsConst(const int* const & firstneigh, const int & _num_neighs, const int & stride): _firstneigh(firstneigh), num_neighs(_num_neighs), _stride(stride) {}; KOKKOS_INLINE_FUNCTION @@ -82,6 +82,14 @@ public: &d_neighbors(i,1)-&d_neighbors(i,0)); } + KOKKOS_INLINE_FUNCTION + static AtomNeighborsConst static_neighbors_const(int i, + typename ArrayTypes::t_neighbors_2d_const const& d_neighbors, + typename ArrayTypes::t_int_1d_const const& d_numneigh) { + return AtomNeighborsConst(&d_neighbors(i,0),d_numneigh(i), + &d_neighbors(i,1)-&d_neighbors(i,0)); + } + KOKKOS_INLINE_FUNCTION AtomNeighborsConst get_neighbors_const(const int &i) const { return AtomNeighborsConst(&d_neighbors(i,0),d_numneigh(i), diff --git a/src/KOKKOS/neighbor_kokkos.cpp b/src/KOKKOS/neighbor_kokkos.cpp index e40e6a238c6f06fc7d8d5db58d7520b97f8e3e31..9a40808052f138bfaaf4bfbef49515f5a08386df 100644 --- a/src/KOKKOS/neighbor_kokkos.cpp +++ b/src/KOKKOS/neighbor_kokkos.cpp @@ -206,7 +206,6 @@ int NeighborKokkos::check_distance_kokkos() int flag = 0; copymode = 1; Kokkos::parallel_reduce(Kokkos::RangePolicy >(0,nlocal),*this,flag); - DeviceType::fence(); copymode = 0; int flagall; @@ -273,7 +272,6 @@ void NeighborKokkos::build_kokkos(int topoflag) } copymode = 1; Kokkos::parallel_for(Kokkos::RangePolicy >(0,nlocal),*this); - DeviceType::fence(); copymode = 0; xhold.modify(); if (boxcheck) { @@ -387,16 +385,6 @@ void NeighborKokkos::build_topology() { k_dihedrallist = neighbond_device.k_dihedrallist; k_improperlist = neighbond_device.k_improperlist; - k_bondlist.sync(); - k_anglelist.sync(); - k_dihedrallist.sync(); - k_improperlist.sync(); - - k_bondlist.modify(); - k_anglelist.modify(); - k_dihedrallist.modify(); - k_improperlist.modify(); - // Transfer topology neighbor lists to Host for non-Kokkos styles if (force->bond && force->bond->execution_space == Host) @@ -415,15 +403,5 @@ void NeighborKokkos::build_topology() { k_anglelist = neighbond_host.k_anglelist; k_dihedrallist = neighbond_host.k_dihedrallist; k_improperlist = neighbond_host.k_improperlist; - - k_bondlist.sync(); - k_anglelist.sync(); - k_dihedrallist.sync(); - k_improperlist.sync(); - - k_bondlist.modify(); - k_anglelist.modify(); - k_dihedrallist.modify(); - k_improperlist.modify(); } } diff --git a/src/KOKKOS/npair_kokkos.cpp b/src/KOKKOS/npair_kokkos.cpp index b7b550369d26efadaf1d2ff69671d00409f2f6d2..b568bd5c93923e0e25fe6fa32fb913b9f602c651 100644 --- a/src/KOKKOS/npair_kokkos.cpp +++ b/src/KOKKOS/npair_kokkos.cpp @@ -173,19 +173,13 @@ void NPairKokkos::build(NeighList *list_) data.special_flag[2] = special_flag[2]; data.special_flag[3] = special_flag[3]; - if(list->d_neighbors.dimension_0()d_neighbors = typename ArrayTypes::t_neighbors_2d("neighbors", nall*1.1, list->maxneighs); - list->d_numneigh = typename ArrayTypes::t_int_1d("numneigh", nall*1.1); - data.neigh_list.d_neighbors = list->d_neighbors; - data.neigh_list.d_numneigh = list->d_numneigh; - } data.h_resize()=1; while(data.h_resize()) { data.h_new_maxneighs() = list->maxneighs; - data.h_resize() = 0; + data.h_resize() = 0; - Kokkos::deep_copy(data.resize, data.h_resize); - Kokkos::deep_copy(data.new_maxneighs, data.h_new_maxneighs); + Kokkos::deep_copy(data.resize, data.h_resize); + Kokkos::deep_copy(data.new_maxneighs, data.h_new_maxneighs); #ifdef KOKKOS_HAVE_CUDA #define BINS_PER_BLOCK 2 const int factor = atoms_per_bin<64?2:1; @@ -194,27 +188,32 @@ void NPairKokkos::build(NeighList *list_) const int factor = 1; #endif -if (GHOST) { - NPairKokkosBuildFunctorGhost f(data,atoms_per_bin * 5 * sizeof(X_FLOAT) * factor); - Kokkos::parallel_for(nall, f); -} else { - if (newton_pair) { - NPairKokkosBuildFunctor f(data,atoms_per_bin * 5 * sizeof(X_FLOAT) * factor); + if (GHOST) { + NPairKokkosBuildFunctorGhost f(data,atoms_per_bin * 5 * sizeof(X_FLOAT) * factor); + Kokkos::parallel_for(nall, f); + } else { + if (newton_pair) { + NPairKokkosBuildFunctor f(data,atoms_per_bin * 5 * sizeof(X_FLOAT) * factor); #ifdef KOKKOS_HAVE_CUDA - Kokkos::parallel_for(config, f); + if (ExecutionSpaceFromDevice::space == Device) + Kokkos::parallel_for(config, f); + else + Kokkos::parallel_for(nall, f); #else - Kokkos::parallel_for(nall, f); + Kokkos::parallel_for(nall, f); #endif - } else { - NPairKokkosBuildFunctor f(data,atoms_per_bin * 5 * sizeof(X_FLOAT) * factor); + } else { + NPairKokkosBuildFunctor f(data,atoms_per_bin * 5 * sizeof(X_FLOAT) * factor); #ifdef KOKKOS_HAVE_CUDA - Kokkos::parallel_for(config, f); + if (ExecutionSpaceFromDevice::space == Device) + Kokkos::parallel_for(config, f); + else + Kokkos::parallel_for(nall, f); #else - Kokkos::parallel_for(nall, f); + Kokkos::parallel_for(nall, f); #endif - } -} - DeviceType::fence(); + } + } deep_copy(data.h_resize, data.resize); if(data.h_resize()) { @@ -429,10 +428,10 @@ void NeighborKokkosExecute:: neigh_list.d_numneigh(i) = n; - if(n >= neigh_list.maxneighs) { + if(n > neigh_list.maxneighs) { resize() = 1; - if(n >= new_maxneighs()) new_maxneighs() = n; + if(n > new_maxneighs()) Kokkos::atomic_fetch_max(&new_maxneighs(),n); } neigh_list.d_ilist(i) = i; @@ -639,10 +638,10 @@ void NeighborKokkosExecute::build_ItemCuda(typename Kokkos::TeamPoli neigh_list.d_ilist(i) = i; } - if(n >= neigh_list.maxneighs) { + if(n > neigh_list.maxneighs) { resize() = 1; - if(n >= new_maxneighs()) new_maxneighs() = n; + if(n > new_maxneighs()) Kokkos::atomic_fetch_max(&new_maxneighs(),n); } } } @@ -731,9 +730,9 @@ void NeighborKokkosExecute:: const int ybin = binxyz[1]; const int zbin = binxyz[2]; for (int k = 0; k < nstencil; k++) { - const X_FLOAT xbin2 = xbin + stencilxyz(k,0); - const X_FLOAT ybin2 = ybin + stencilxyz(k,1); - const X_FLOAT zbin2 = zbin + stencilxyz(k,2); + const int xbin2 = xbin + stencilxyz(k,0); + const int ybin2 = ybin + stencilxyz(k,1); + const int zbin2 = zbin + stencilxyz(k,2); if (xbin2 < 0 || xbin2 >= mbinx || ybin2 < 0 || ybin2 >= mbiny || zbin2 < 0 || zbin2 >= mbinz) continue; @@ -762,10 +761,10 @@ void NeighborKokkosExecute:: neigh_list.d_numneigh(i) = n; - if(n >= neigh_list.maxneighs) { + if(n > neigh_list.maxneighs) { resize() = 1; - if(n >= new_maxneighs()) new_maxneighs() = n; + if(n > new_maxneighs()) Kokkos::atomic_fetch_max(&new_maxneighs(),n); } neigh_list.d_ilist(i) = i; } diff --git a/src/KOKKOS/npair_kokkos.h b/src/KOKKOS/npair_kokkos.h index 53183114d3f9a88d9c0e23de685e922a21aa4117..517ea546fa1cff1e053fe84105a615316f8687f6 100644 --- a/src/KOKKOS/npair_kokkos.h +++ b/src/KOKKOS/npair_kokkos.h @@ -281,9 +281,6 @@ class NeighborKokkosExecute void build_ItemCuda(typename Kokkos::TeamPolicy::member_type dev) const; #endif - KOKKOS_INLINE_FUNCTION - void binatomsItem(const int &i) const; - KOKKOS_INLINE_FUNCTION int coord2bin(const X_FLOAT & x,const X_FLOAT & y,const X_FLOAT & z) const { @@ -409,7 +406,7 @@ struct NPairKokkosBuildFunctor { c.template build_Item(i); } - void operator() (typename Kokkos::TeamPolicy::member_type dev) const {} + void operator() (typename Kokkos::TeamPolicy::member_type dev) const {} // Should error out }; template diff --git a/src/KOKKOS/npair_ssa_kokkos.cpp b/src/KOKKOS/npair_ssa_kokkos.cpp new file mode 100644 index 0000000000000000000000000000000000000000..b73e54e33fb469dd4ffbaefa8314532eadbe2559 --- /dev/null +++ b/src/KOKKOS/npair_ssa_kokkos.cpp @@ -0,0 +1,750 @@ +/* ---------------------------------------------------------------------- + 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: + James Larentzos and Timothy I. Mattox (Engility Corporation) +------------------------------------------------------------------------- */ + +#include "npair_ssa_kokkos.h" +#include "neigh_list.h" +#include "atom_kokkos.h" +#include "atom_masks.h" +#include "domain_kokkos.h" +#include "neighbor_kokkos.h" +#include "nbin_ssa_kokkos.h" +#include "nstencil_ssa.h" +#include "error.h" +#include "comm.h" + +namespace LAMMPS_NS { + +/* ---------------------------------------------------------------------- */ + +template +NPairSSAKokkos::NPairSSAKokkos(LAMMPS *lmp) : NPair(lmp), ssa_phaseCt(27), ssa_gphaseCt(7) +{ + const int gphaseLenEstimate = 1; //FIXME make this 4 eventually + k_ssa_gphaseLen = DAT::tdual_int_1d("NPairSSAKokkos:ssa_gphaseLen",ssa_gphaseCt); + ssa_gphaseLen = k_ssa_gphaseLen.view(); + + k_ssa_gitemLoc = DAT::tdual_int_2d("NPairSSAKokkos::ssa_gitemLoc",ssa_gphaseCt,gphaseLenEstimate); + ssa_gitemLoc = k_ssa_gitemLoc.view(); + k_ssa_gitemLen = DAT::tdual_int_2d("NPairSSAKokkos::ssa_gitemLen",ssa_gphaseCt,gphaseLenEstimate); + ssa_gitemLen = k_ssa_gitemLen.view(); +} + +/* ---------------------------------------------------------------------- + copy needed info from Neighbor class to this build class + ------------------------------------------------------------------------- */ + +template +void NPairSSAKokkos::copy_neighbor_info() +{ + NPair::copy_neighbor_info(); + + NeighborKokkos* neighborKK = (NeighborKokkos*) neighbor; + + // general params + + k_cutneighsq = neighborKK->k_cutneighsq; + + // exclusion info + + k_ex1_type = neighborKK->k_ex1_type; + k_ex2_type = neighborKK->k_ex2_type; + k_ex_type = neighborKK->k_ex_type; + k_ex1_group = neighborKK->k_ex1_group; + k_ex2_group = neighborKK->k_ex2_group; + k_ex1_bit = neighborKK->k_ex1_bit; + k_ex2_bit = neighborKK->k_ex2_bit; + k_ex_mol_group = neighborKK->k_ex_mol_group; + k_ex_mol_bit = neighborKK->k_ex_mol_bit; +} + +/* ---------------------------------------------------------------------- + copy per-atom and per-bin vectors from NBinSSAKokkos class to this build class + ------------------------------------------------------------------------- */ + +template +void NPairSSAKokkos::copy_bin_info() +{ + NPair::copy_bin_info(); + + NBinSSAKokkos* nbKK = dynamic_cast*>(nb); + if (!nbKK) error->one(FLERR, "NBin wasn't a NBinSSAKokkos object"); + + atoms_per_bin = nbKK->atoms_per_bin; + k_bincount = nbKK->k_bincount; + k_bins = nbKK->k_bins; + + ghosts_per_gbin = nbKK->ghosts_per_gbin; + k_gbincount = nbKK->k_gbincount; + k_gbins = nbKK->k_gbins; + + lbinxlo = nbKK->h_lbinxlo(); + lbinxhi = nbKK->h_lbinxhi(); + lbinylo = nbKK->h_lbinylo(); + lbinyhi = nbKK->h_lbinyhi(); + lbinzlo = nbKK->h_lbinzlo(); + lbinzhi = nbKK->h_lbinzhi(); +} + +/* ---------------------------------------------------------------------- + copy needed info from NStencil class to this build class + ------------------------------------------------------------------------- */ + +template +void NPairSSAKokkos::copy_stencil_info() +{ + NPair::copy_stencil_info(); + + nstencil = ns->nstencil; + + int maxstencil = ns->get_maxstencil(); + + k_stencil = DAT::tdual_int_1d("NPairSSAKokkos:stencil",maxstencil); + for (int k = 0; k < maxstencil; k++) { + k_stencil.h_view(k) = ns->stencil[k]; + } + k_stencil.modify(); + k_stencil.sync(); + k_stencilxyz = DAT::tdual_int_1d_3("NPairSSAKokkos:stencilxyz",maxstencil); + for (int k = 0; k < maxstencil; k++) { + k_stencilxyz.h_view(k,0) = ns->stencilxyz[k][0]; + k_stencilxyz.h_view(k,1) = ns->stencilxyz[k][1]; + k_stencilxyz.h_view(k,2) = ns->stencilxyz[k][2]; + } + k_stencilxyz.modify(); + k_stencilxyz.sync(); + + NStencilSSA *ns_ssa = dynamic_cast(ns); + if (!ns_ssa) error->one(FLERR, "NStencil wasn't a NStencilSSA object"); + + k_nstencil_ssa = DAT::tdual_int_1d("NPairSSAKokkos:nstencil_ssa",5); + for (int k = 0; k < 5; ++k) { + k_nstencil_ssa.h_view(k) = ns_ssa->nstencil_ssa[k]; + } + k_nstencil_ssa.modify(); + k_nstencil_ssa.sync(); + sx1 = ns_ssa->sx + 1; + sy1 = ns_ssa->sy + 1; + sz1 = ns_ssa->sz + 1; + + // Setup the phases of the workplan for locals + ssa_phaseCt = sz1*sy1*sx1; + if (ssa_phaseCt > (int) k_ssa_phaseLen.dimension_0()) { + k_ssa_phaseLen = DAT::tdual_int_1d("NPairSSAKokkos:ssa_phaseLen",ssa_phaseCt); + ssa_phaseLen = k_ssa_phaseLen.view(); + k_ssa_phaseOff = DAT::tdual_int_1d_3("NPairSSAKokkos:ssa_phaseOff",ssa_phaseCt); + ssa_phaseOff = k_ssa_phaseOff.view(); + } + auto h_ssa_phaseOff = k_ssa_phaseOff.h_view; + k_ssa_phaseOff.sync(); + int workPhase = 0; + for (int zoff = sz1 - 1; zoff >= 0; --zoff) { + for (int yoff = sy1 - 1; yoff >= 0; --yoff) { + for (int xoff = sx1 - 1; xoff >= 0; --xoff) { + h_ssa_phaseOff(workPhase, 0) = xoff; + h_ssa_phaseOff(workPhase, 1) = yoff; + h_ssa_phaseOff(workPhase, 2) = zoff; + workPhase++; + } + } + } + k_ssa_phaseOff.modify(); + k_ssa_phaseOff.sync(); + +} + +/* ---------------------------------------------------------------------- */ + +template +KOKKOS_INLINE_FUNCTION +int NPairSSAKokkosExecute::find_special(const int &i, const int &j) const +{ + const int n1 = nspecial(i,0); + const int n2 = nspecial(i,1); + const int n3 = nspecial(i,2); + + for (int k = 0; k < n3; k++) { + if (special(i,k) == tag(j)) { + if (k < n1) { + if (special_flag[1] == 0) return -1; + else if (special_flag[1] == 1) return 0; + else return 1; + } else if (k < n2) { + if (special_flag[2] == 0) return -1; + else if (special_flag[2] == 1) return 0; + else return 2; + } else { + if (special_flag[3] == 0) return -1; + else if (special_flag[3] == 1) return 0; + else return 3; + } + } + } + return 0; +}; + +/* ---------------------------------------------------------------------- */ + +template +KOKKOS_INLINE_FUNCTION +int NPairSSAKokkosExecute::exclusion(const int &i,const int &j, + const int &itype,const int &jtype) const +{ + int m; + + if (nex_type && ex_type(itype,jtype)) return 1; + + if (nex_group) { + for (m = 0; m < nex_group; m++) { + if (mask(i) & ex1_bit(m) && mask(j) & ex2_bit(m)) return 1; + if (mask(i) & ex2_bit(m) && mask(j) & ex1_bit(m)) return 1; + } + } + + if (nex_mol) { + for (m = 0; m < nex_mol; m++) + if (mask(i) & ex_mol_bit(m) && mask(j) & ex_mol_bit(m) && + molecule(i) == molecule(j)) return 1; + } + + return 0; +} + +/* ---------------------------------------------------------------------- */ + + +/* ---------------------------------------------------------------------- + binned neighbor list construction with full Newton's 3rd law + for use by Shardlow Spliting Algorithm + each owned atom i checks its own bin and other bins in Newton stencil + every pair stored exactly once by some processor +------------------------------------------------------------------------- */ + +template +void NPairSSAKokkos::build(NeighList *list_) +{ + NeighListKokkos* list = (NeighListKokkos*) list_; + const int nlocal = includegroup?atom->nfirst:atom->nlocal; + int nl_size; + + int xbinCt = (lbinxhi - lbinxlo + sx1 - 1) / sx1 + 1; + int ybinCt = (lbinyhi - lbinylo + sy1 - 1) / sy1 + 1; + int zbinCt = (lbinzhi - lbinzlo + sz1 - 1) / sz1 + 1; + int phaseLenEstimate = xbinCt*ybinCt*zbinCt; + + if ((ssa_phaseCt > (int) k_ssa_itemLoc.dimension_0()) || + (phaseLenEstimate > (int) k_ssa_itemLoc.dimension_1())) { + k_ssa_itemLoc = DAT::tdual_int_2d("NPairSSAKokkos::ssa_itemLoc",ssa_phaseCt,phaseLenEstimate); + ssa_itemLoc = k_ssa_itemLoc.view(); + k_ssa_itemLen = DAT::tdual_int_2d("NPairSSAKokkos::ssa_itemLen",ssa_phaseCt,phaseLenEstimate); + ssa_itemLen = k_ssa_itemLen.view(); + } + + k_ssa_itemLoc.sync(); + k_ssa_itemLen.sync(); + k_ssa_gitemLoc.sync(); + k_ssa_gitemLen.sync(); + k_ssa_phaseOff.sync(); + k_ssa_phaseLen.sync(); + auto h_ssa_itemLoc = k_ssa_itemLoc.h_view; + auto h_ssa_itemLen = k_ssa_itemLen.h_view; + auto h_ssa_gitemLoc = k_ssa_gitemLoc.h_view; + auto h_ssa_gitemLen = k_ssa_gitemLen.h_view; + auto h_ssa_phaseOff = k_ssa_phaseOff.h_view; + auto h_ssa_phaseLen = k_ssa_phaseLen.h_view; + +{ // Preflight the neighbor list workplan + k_bincount.sync(); + auto h_bincount = k_bincount.h_view; + k_stencil.sync(); + auto h_stencil = k_stencil.h_view; + k_nstencil_ssa.sync(); + auto h_nstencil_ssa = k_nstencil_ssa.h_view; + int inum = 0; + + // loop over bins with local atoms, counting half of the neighbors + for (int workPhase = 0; workPhase < ssa_phaseCt; ++workPhase) { + int zoff = h_ssa_phaseOff(workPhase, 2); + int yoff = h_ssa_phaseOff(workPhase, 1); + int xoff = h_ssa_phaseOff(workPhase, 0); + int workItem = 0; + for (int zbin = lbinzlo + zoff; zbin < lbinzhi; zbin += sz1) { + for (int ybin = lbinylo + yoff - sy1 + 1; ybin < lbinyhi; ybin += sy1) { + for (int xbin = lbinxlo + xoff - sx1 + 1; xbin < lbinxhi; xbin += sx1) { + int inum_start = inum; +// if (workItem >= phaseLenEstimate) error->one(FLERR,"phaseLenEstimate was too small"); + + for (int subphase = 0; subphase < 4; subphase++) { + int s_ybin = ybin + ((subphase & 0x2) ? sy1 - 1 : 0); + int s_xbin = xbin + ((subphase & 0x1) ? sx1 - 1 : 0); + if ((s_ybin < lbinylo) || (s_ybin >= lbinyhi)) continue; + if ((s_xbin < lbinxlo) || (s_xbin >= lbinxhi)) continue; + + const int ibin = zbin*mbiny*mbinx + s_ybin*mbinx + s_xbin; + const int ibinCt = h_bincount(ibin); + if (ibinCt > 0) { + int base_n = 0; + bool include_same = false; + // count all local atoms in the current stencil "subphase" as potential neighbors + for (int k = h_nstencil_ssa(subphase); k < h_nstencil_ssa(subphase+1); k++) { + const int jbin = ibin+h_stencil(k); + if (jbin != ibin) base_n += h_bincount(jbin); + else include_same = true; + } + // Calculate how many ibin particles would have had some neighbors + if (base_n > 0) inum += ibinCt; + else if (include_same) inum += ibinCt - 1; + } + } + h_ssa_itemLoc(workPhase,workItem) = inum_start; // record where workItem starts in ilist + h_ssa_itemLen(workPhase,workItem) = inum - inum_start; // record workItem length +#ifdef DEBUG_SSA_BUILD_LOCALS +if (h_ssa_itemLen(workPhase,workItem) < 0) fprintf(stdout, "undr%03d phase (%3d,%3d) inum %d - inum_start %d UNDERFLOW\n" + ,comm->me + ,workPhase + ,workItem + ,inum + ,inum_start +); +#endif + workItem++; + } + } + } + +#ifdef DEBUG_SSA_BUILD_LOCALS +fprintf(stdout, "phas%03d phase %3d could use %6d inums, expected %6d inums. maxworkItems = %3d, inums/workItems = %g\n" + ,comm->me + ,workPhase + ,inum - h_ssa_itemLoc(workPhase, 0) + ,(nlocal*4 + ssa_phaseCt - 1) / ssa_phaseCt + ,workItem + ,(inum - h_ssa_itemLoc(workPhase, 0)) / (double) workItem +); +#endif + // record where workPhase ends + h_ssa_phaseLen(workPhase) = workItem; + } +#ifdef DEBUG_SSA_BUILD_LOCALS +fprintf(stdout, "tota%03d total %3d could use %6d inums, expected %6d inums. inums/phase = %g\n" + ,comm->me + ,workPhase + ,inum + ,nlocal*4 + ,inum / (double) workPhase +); +#endif + nl_size = inum; // record how much space is needed for the local work plan +} + + // count how many ghosts might have neighbors, and increase the work plan storage + k_gbincount.sync(); + for (int workPhase = 0; workPhase < ssa_gphaseCt; workPhase++) { + int len = k_gbincount.h_view(workPhase + 1); + h_ssa_gitemLoc(workPhase,0) = nl_size; // record where workItem starts in ilist + h_ssa_gitemLen(workPhase,0) = len; + nl_size += len; + } + list->grow(nl_size); // Make special larger SSA neighbor list + + k_ssa_itemLoc.modify(); + k_ssa_itemLen.modify(); + k_ssa_gitemLoc.modify(); + k_ssa_gitemLen.modify(); + k_ssa_phaseLen.modify(); + k_ssa_itemLoc.sync(); + k_ssa_itemLen.sync(); + k_ssa_gitemLen.sync(); + k_ssa_gitemLoc.sync(); + k_ssa_phaseOff.sync(); + k_ssa_phaseLen.sync(); + k_ssa_gphaseLen.sync(); + + NPairSSAKokkosExecute + data(*list, + k_cutneighsq.view(), + k_bincount.view(), + k_bins.view(), + k_gbincount.view(), + k_gbins.view(), + lbinxlo, lbinxhi, lbinylo, lbinyhi, lbinzlo, lbinzhi, + nstencil, sx1, sy1, sz1, + k_stencil.view(), + k_stencilxyz.view(), + k_nstencil_ssa.view(), + ssa_phaseCt, + k_ssa_phaseLen.view(), + k_ssa_phaseOff.view(), + k_ssa_itemLoc.view(), + k_ssa_itemLen.view(), + ssa_gphaseCt, + k_ssa_gphaseLen.view(), + k_ssa_gitemLoc.view(), + k_ssa_gitemLen.view(), + nlocal, + atomKK->k_x.view(), + atomKK->k_type.view(), + atomKK->k_mask.view(), + atomKK->k_molecule.view(), + atomKK->k_tag.view(), + atomKK->k_special.view(), + atomKK->k_nspecial.view(), + atomKK->molecular, + nbinx,nbiny,nbinz,mbinx,mbiny,mbinz,mbinxlo,mbinylo,mbinzlo, + bininvx,bininvy,bininvz, + exclude, nex_type, + k_ex1_type.view(), + k_ex2_type.view(), + k_ex_type.view(), + nex_group, + k_ex1_group.view(), + k_ex2_group.view(), + k_ex1_bit.view(), + k_ex2_bit.view(), + nex_mol, + k_ex_mol_group.view(), + k_ex_mol_bit.view(), + bboxhi,bboxlo, + domain->xperiodic,domain->yperiodic,domain->zperiodic, + domain->xprd_half,domain->yprd_half,domain->zprd_half); + + k_cutneighsq.sync(); + k_ex1_type.sync(); + k_ex2_type.sync(); + k_ex_type.sync(); + k_ex1_group.sync(); + k_ex2_group.sync(); + k_ex1_bit.sync(); + k_ex2_bit.sync(); + k_ex_mol_group.sync(); + k_ex_mol_bit.sync(); + k_bincount.sync(); + k_bins.sync(); + k_gbincount.sync(); + k_gbins.sync(); + atomKK->sync(Device,X_MASK|TYPE_MASK|MASK_MASK|MOLECULE_MASK|TAG_MASK|SPECIAL_MASK); + + data.special_flag[0] = special_flag[0]; + data.special_flag[1] = special_flag[1]; + data.special_flag[2] = special_flag[2]; + data.special_flag[3] = special_flag[3]; + + bool firstTry = true; + data.h_resize()=1; + while(data.h_resize()) { + data.h_new_maxneighs() = list->maxneighs; + data.h_resize() = 0; + + Kokkos::deep_copy(data.resize, data.h_resize); + Kokkos::deep_copy(data.new_maxneighs, data.h_new_maxneighs); + + // loop over bins with local atoms, storing half of the neighbors + Kokkos::parallel_for(ssa_phaseCt, LAMMPS_LAMBDA (const int workPhase) { + data.build_locals_onePhase(firstTry, comm->me, workPhase); + }); + k_ssa_itemLoc.modify(); + k_ssa_itemLen.modify(); + k_ssa_phaseLen.modify(); + k_ssa_itemLoc.sync(); + k_ssa_itemLen.sync(); + k_ssa_phaseLen.sync(); + data.neigh_list.inum = h_ssa_itemLoc(ssa_phaseCt-1,h_ssa_phaseLen(ssa_phaseCt-1)-1) + + h_ssa_itemLen(ssa_phaseCt-1,h_ssa_phaseLen(ssa_phaseCt-1)-1); + + // loop over AIR ghost atoms, storing their local neighbors + Kokkos::parallel_for(ssa_gphaseCt, LAMMPS_LAMBDA (const int workPhase) { + data.build_ghosts_onePhase(workPhase); + }); + k_ssa_gitemLoc.modify(); + k_ssa_gitemLen.modify(); + k_ssa_gphaseLen.modify(); + k_ssa_gitemLoc.sync(); + k_ssa_gitemLen.sync(); + k_ssa_gphaseLen.sync(); + auto h_ssa_gphaseLen = k_ssa_gphaseLen.h_view; + data.neigh_list.gnum = h_ssa_gitemLoc(ssa_gphaseCt-1,h_ssa_gphaseLen(ssa_gphaseCt-1)-1) + + h_ssa_gitemLen(ssa_gphaseCt-1,h_ssa_gphaseLen(ssa_gphaseCt-1)-1) - data.neigh_list.inum; + firstTry = false; + + deep_copy(data.h_resize, data.resize); + + if(data.h_resize()) { + deep_copy(data.h_new_maxneighs, data.new_maxneighs); + list->maxneighs = data.h_new_maxneighs() * 1.2; + list->d_neighbors = typename ArrayTypes::t_neighbors_2d("neighbors", list->d_neighbors.dimension_0(), list->maxneighs); + data.neigh_list.d_neighbors = list->d_neighbors; + data.neigh_list.maxneighs = list->maxneighs; + } + } + + //k_ssa_phaseLen.modify(); + //k_ssa_itemLoc.modify(); + //k_ssa_itemLen.modify(); + //k_ssa_gphaseLen.modify(); + //k_ssa_gitemLoc.modify(); + //k_ssa_gitemLen.modify(); + + list->inum = data.neigh_list.inum; //FIXME once the above is in a parallel_for + list->gnum = data.neigh_list.gnum; // it will need a deep_copy or something + +#ifdef DEBUG_SSA_BUILD_LOCALS +fprintf(stdout, "Fina%03d %6d inum %6d gnum, total used %6d, allocated %6d\n" + ,comm->me + ,list->inum + ,list->gnum + ,list->inum + list->gnum + ,nl_size +); +#endif + + list->k_ilist.template modify(); +} + + +template +void NPairSSAKokkosExecute::build_locals_onePhase(const bool firstTry, int me, int workPhase) const +{ + const typename ArrayTypes::t_int_1d_const_um stencil = d_stencil; + int which = 0; + + int zoff = d_ssa_phaseOff(workPhase, 2); + int yoff = d_ssa_phaseOff(workPhase, 1); + int xoff = d_ssa_phaseOff(workPhase, 0); + int workItem = 0; + int skippedItems = 0; + for (int zbin = lbinzlo + zoff; zbin < lbinzhi; zbin += sz1) { + for (int ybin = lbinylo + yoff - sy1 + 1; ybin < lbinyhi; ybin += sy1) { + for (int xbin = lbinxlo + xoff - sx1 + 1; xbin < lbinxhi; xbin += sx1) { + if (d_ssa_itemLen(workPhase, workItem + skippedItems) == 0) { + if (firstTry) ++skippedItems; + else ++workItem; // phase is done,should break out of three loops here if we could... + continue; + } + int inum_start = d_ssa_itemLoc(workPhase, workItem + skippedItems); + int inum = inum_start; + + for (int subphase = 0; subphase < 4; subphase++) { + int s_ybin = ybin + ((subphase & 0x2) ? sy1 - 1 : 0); + int s_xbin = xbin + ((subphase & 0x1) ? sx1 - 1 : 0); + if ((s_ybin < lbinylo) || (s_ybin >= lbinyhi)) continue; + if ((s_xbin < lbinxlo) || (s_xbin >= lbinxhi)) continue; + + int ibin = zbin*mbiny*mbinx + s_ybin*mbinx + s_xbin; + for (int il = 0; il < c_bincount(ibin); ++il) { + const int i = c_bins(ibin, il); + int n = 0; + + const AtomNeighbors neighbors_i = neigh_list.get_neighbors(inum); + const X_FLOAT xtmp = x(i, 0); + const X_FLOAT ytmp = x(i, 1); + const X_FLOAT ztmp = x(i, 2); + const int itype = type(i); + + // loop over all local atoms in the current stencil "subphase" + for (int k = d_nstencil_ssa(subphase); k < d_nstencil_ssa(subphase+1); k++) { + const int jbin = ibin+stencil(k); + int jl; + if (jbin != ibin) jl = 0; + else jl = il + 1; // same bin as i, so start just past i in the bin + for (; jl < c_bincount(jbin); ++jl) { + const int j = c_bins(jbin, jl); + const int jtype = type(j); + if(exclude && exclusion(i,j,itype,jtype)) continue; + + const X_FLOAT delx = xtmp - x(j, 0); + const X_FLOAT dely = ytmp - x(j, 1); + const X_FLOAT delz = ztmp - x(j, 2); + const X_FLOAT rsq = delx*delx + dely*dely + delz*delz; + if(rsq <= cutneighsq(itype,jtype)) { + if (molecular) { + if (!moltemplate) + which = find_special(i,j); + /* else if (imol >= 0) */ + /* which = find_special(onemols[imol]->special[iatom], */ + /* onemols[imol]->nspecial[iatom], */ + /* tag[j]-tagprev); */ + /* else which = 0; */ + if (which == 0){ + if(n 0) { + if(n 0) { + neigh_list.d_numneigh(inum) = n; + neigh_list.d_ilist(inum++) = i; + if(n > neigh_list.maxneighs) { + resize() = 1; + if(n > new_maxneighs()) Kokkos::atomic_fetch_max(&new_maxneighs(),n); + } + } + } + } + int len = inum - inum_start; +#ifdef DEBUG_SSA_BUILD_LOCALS + if (len != d_ssa_itemLen(workPhase, workItem + skippedItems)) { +fprintf(stdout, "Leng%03d workphase (%2d,%3d,%3d): len = %4d, but ssa_itemLen = %4d%s\n" + ,me + ,workPhase + ,workItem + ,workItem + skippedItems + ,len + ,d_ssa_itemLen(workPhase, workItem + skippedItems) + ,(len > d_ssa_itemLen(workPhase, workItem + skippedItems)) ? " OVERFLOW" : "" +); + } +#endif + if (inum > inum_start) { + d_ssa_itemLoc(workPhase,workItem) = inum_start; // record where workItem starts in ilist + d_ssa_itemLen(workPhase,workItem) = inum - inum_start; // record actual workItem length + workItem++; + } else if (firstTry) ++skippedItems; + } + } + } + +#ifdef DEBUG_SSA_BUILD_LOCALS +fprintf(stdout, "Phas%03d phase %3d used %6d inums, workItems = %3d, skipped = %3d, inums/workItems = %g\n" + ,me + ,workPhase + ,inum - d_ssa_itemLoc(workPhase, 0) + ,workItem + ,skippedItems + ,(inum - d_ssa_itemLoc(workPhase, 0)) / (double) workItem +); +#endif + // record where workPhase actually ends + if (firstTry) { + d_ssa_phaseLen(workPhase) = workItem; + while (workItem < (int) d_ssa_itemLen.dimension_1()) { + d_ssa_itemLen(workPhase,workItem++) = 0; + } + } + +} + + +template +void NPairSSAKokkosExecute::build_ghosts_onePhase(int workPhase) const +{ + const typename ArrayTypes::t_int_1d_const_um stencil = d_stencil; + int which = 0; + + // since these are ghosts, must check if stencil bin is out of bounds + int airnum = workPhase + 1; + //FIXME for now, there is only 1 workItem for each ghost AIR + int workItem; + for (workItem = 0; workItem < 1; ++workItem) { + int gNdx = d_ssa_gitemLoc(workPhase, workItem); // record where workItem starts in ilist + for (int il = 0; il < c_gbincount(airnum); ++il) { + const int i = c_gbins(airnum, il); + int n = 0; + + const AtomNeighbors neighbors_i = neigh_list.get_neighbors(gNdx); + const X_FLOAT xtmp = x(i, 0); + const X_FLOAT ytmp = x(i, 1); + const X_FLOAT ztmp = x(i, 2); + const int itype = type(i); + + int loc[3]; + const int ibin = coord2bin(x(i, 0), x(i, 1), x(i, 2), &(loc[0])); + + // loop over AIR ghost atoms in all bins in "full" stencil + // Note: the non-AIR ghost atoms have already been filtered out + for (int k = 0; k < nstencil; k++) { + int xbin2 = loc[0] + d_stencilxyz(k,0); + int ybin2 = loc[1] + d_stencilxyz(k,1); + int zbin2 = loc[2] + d_stencilxyz(k,2); + // Skip it if this bin is outside the extent of local bins + if (xbin2 < lbinxlo || xbin2 >= lbinxhi || + ybin2 < lbinylo || ybin2 >= lbinyhi || + zbin2 < lbinzlo || zbin2 >= lbinzhi) continue; + const int jbin = ibin+stencil(k); + for (int jl = 0; jl < c_bincount(jbin); ++jl) { + const int j = c_bins(jbin, jl); + const int jtype = type(j); + if(exclude && exclusion(i,j,itype,jtype)) continue; + + const X_FLOAT delx = xtmp - x(j, 0); + const X_FLOAT dely = ytmp - x(j, 1); + const X_FLOAT delz = ztmp - x(j, 2); + const X_FLOAT rsq = delx*delx + dely*dely + delz*delz; + if(rsq <= cutneighsq(itype,jtype)) { + if (molecular) { + if (!moltemplate) + which = find_special(j,i); + /* else if (jmol >= 0) */ + /* which = find_special(onemols[jmol]->special[jatom], */ + /* onemols[jmol]->nspecial[jatom], */ + /* tag[i]-jtagprev); */ + /* else which = 0; */ + if (which == 0){ + if(n 0) { + if(n 0) { + neigh_list.d_numneigh(gNdx) = n; + neigh_list.d_ilist(gNdx++) = i; + if(n > neigh_list.maxneighs) { + resize() = 1; + if(n > new_maxneighs()) Kokkos::atomic_fetch_max(&new_maxneighs(),n); + } + } + } + // record where workItem ends in ilist + d_ssa_gitemLen(workPhase,workItem) = gNdx - d_ssa_gitemLoc(workPhase,workItem); + // if (d_ssa_gitemLen(workPhase,workItem) > 0) workItem++; + } + d_ssa_gphaseLen(workPhase) = workItem; +} + +} + +namespace LAMMPS_NS { +template class NPairSSAKokkos; +#ifdef KOKKOS_HAVE_CUDA +template class NPairSSAKokkos; +#endif +} diff --git a/src/KOKKOS/npair_ssa_kokkos.h b/src/KOKKOS/npair_ssa_kokkos.h new file mode 100644 index 0000000000000000000000000000000000000000..98046feba88b4fb239004228cfa940f74946ca2b --- /dev/null +++ b/src/KOKKOS/npair_ssa_kokkos.h @@ -0,0 +1,362 @@ +/* -*- 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 NPAIR_CLASS + +typedef NPairSSAKokkos NPairSSAKokkosHost; +NPairStyle(half/bin/newton/ssa/kk/host, + NPairSSAKokkosHost, + NP_HALF | NP_BIN | NP_NEWTON | NP_ORTHO | NP_SSA | NP_GHOST | NP_KOKKOS_HOST) + +typedef NPairSSAKokkos NPairSSAKokkosDevice; +NPairStyle(half/bin/newton/ssa/kk/device, + NPairSSAKokkosDevice, + NP_HALF | NP_BIN | NP_NEWTON | NP_ORTHO | NP_SSA | NP_GHOST | NP_KOKKOS_DEVICE) + +#else + +#ifndef LMP_NPAIR_SSA_KOKKOS_H +#define LMP_NPAIR_SSA_KOKKOS_H + +#include "npair.h" +#include "neigh_list_kokkos.h" + +namespace LAMMPS_NS { + +template +class NPairSSAKokkos : public NPair { + public: + typedef ArrayTypes AT; + + // SSA Work plan data structures + int ssa_phaseCt; + DAT::tdual_int_1d k_ssa_phaseLen; + DAT::tdual_int_1d_3 k_ssa_phaseOff; + DAT::tdual_int_2d k_ssa_itemLoc; + DAT::tdual_int_2d k_ssa_itemLen; + typename AT::t_int_1d ssa_phaseLen; + typename AT::t_int_1d_3 ssa_phaseOff; + typename AT::t_int_2d ssa_itemLoc; + typename AT::t_int_2d ssa_itemLen; + + const int ssa_gphaseCt; + DAT::tdual_int_1d k_ssa_gphaseLen; + DAT::tdual_int_2d k_ssa_gitemLoc; + DAT::tdual_int_2d k_ssa_gitemLen; + typename AT::t_int_1d ssa_gphaseLen; + typename AT::t_int_2d ssa_gitemLoc; + typename AT::t_int_2d ssa_gitemLen; + + NPairSSAKokkos(class LAMMPS *); + ~NPairSSAKokkos() {} + void copy_neighbor_info(); + void copy_bin_info(); + void copy_stencil_info(); + void build(class NeighList *); + private: + // data from Neighbor class + + DAT::tdual_xfloat_2d k_cutneighsq; + + // exclusion data from Neighbor class + + DAT::tdual_int_1d k_ex1_type,k_ex2_type; + DAT::tdual_int_2d k_ex_type; + DAT::tdual_int_1d k_ex1_group,k_ex2_group; + DAT::tdual_int_1d k_ex1_bit,k_ex2_bit; + DAT::tdual_int_1d k_ex_mol_group; + DAT::tdual_int_1d k_ex_mol_bit; + + // data from NBinSSA class + + int atoms_per_bin; + DAT::tdual_int_1d k_bincount; + DAT::tdual_int_2d k_bins; + int ghosts_per_gbin; + DAT::tdual_int_1d k_gbincount; + DAT::tdual_int_2d k_gbins; + int lbinxlo, lbinxhi, lbinylo, lbinyhi, lbinzlo, lbinzhi; + + // data from NStencilSSA class + + int nstencil; + DAT::tdual_int_1d k_stencil; // # of J neighs for each I + DAT::tdual_int_1d_3 k_stencilxyz; + DAT::tdual_int_1d k_nstencil_ssa; + int sx1, sy1, sz1; +}; + +template +class NPairSSAKokkosExecute +{ + typedef ArrayTypes AT; + + public: + NeighListKokkos neigh_list; + + // data from Neighbor class + + const typename AT::t_xfloat_2d_randomread cutneighsq; + + // exclusion data from Neighbor class + + const int exclude; + + const int nex_type; + const typename AT::t_int_1d_const ex1_type,ex2_type; + const typename AT::t_int_2d_const ex_type; + + const int nex_group; + const typename AT::t_int_1d_const ex1_group,ex2_group; + const typename AT::t_int_1d_const ex1_bit,ex2_bit; + + const int nex_mol; + const typename AT::t_int_1d_const ex_mol_group; + const typename AT::t_int_1d_const ex_mol_bit; + + // data from NBinSSA class + + const typename AT::t_int_1d bincount; + const typename AT::t_int_1d_const c_bincount; + typename AT::t_int_2d bins; + typename AT::t_int_2d_const c_bins; + const typename AT::t_int_1d gbincount; + const typename AT::t_int_1d_const c_gbincount; + typename AT::t_int_2d gbins; + typename AT::t_int_2d_const c_gbins; + const int lbinxlo, lbinxhi, lbinylo, lbinyhi, lbinzlo, lbinzhi; + + + // data from NStencil class + + const int nstencil; + const int sx1, sy1, sz1; + typename AT::t_int_1d d_stencil; // # of J neighs for each I + typename AT::t_int_1d_3 d_stencilxyz; + typename AT::t_int_1d d_nstencil_ssa; + + // data from Atom class + + const typename AT::t_x_array_randomread x; + const typename AT::t_int_1d_const type,mask; + const typename AT::t_tagint_1d_const molecule; + const typename AT::t_tagint_1d_const tag; + const typename AT::t_tagint_2d_const special; + const typename AT::t_int_2d_const nspecial; + const int molecular; + int moltemplate; + + int special_flag[4]; + + const int nbinx,nbiny,nbinz; + const int mbinx,mbiny,mbinz; + const int mbinxlo,mbinylo,mbinzlo; + const X_FLOAT bininvx,bininvy,bininvz; + X_FLOAT bboxhi[3],bboxlo[3]; + + const int nlocal; + + typename AT::t_int_scalar resize; + typename AT::t_int_scalar new_maxneighs; + typename ArrayTypes::t_int_scalar h_resize; + typename ArrayTypes::t_int_scalar h_new_maxneighs; + + const int xperiodic, yperiodic, zperiodic; + const int xprd_half, yprd_half, zprd_half; + + // SSA Work plan data structures + int ssa_phaseCt; + typename AT::t_int_1d d_ssa_phaseLen; + typename AT::t_int_1d_3_const d_ssa_phaseOff; + typename AT::t_int_2d d_ssa_itemLoc; + typename AT::t_int_2d d_ssa_itemLen; + int ssa_gphaseCt; + typename AT::t_int_1d d_ssa_gphaseLen; + typename AT::t_int_2d d_ssa_gitemLoc; + typename AT::t_int_2d d_ssa_gitemLen; + + NPairSSAKokkosExecute( + const NeighListKokkos &_neigh_list, + const typename AT::t_xfloat_2d_randomread &_cutneighsq, + const typename AT::t_int_1d &_bincount, + const typename AT::t_int_2d &_bins, + const typename AT::t_int_1d &_gbincount, + const typename AT::t_int_2d &_gbins, + const int _lbinxlo, const int _lbinxhi, + const int _lbinylo, const int _lbinyhi, + const int _lbinzlo, const int _lbinzhi, + const int _nstencil, const int _sx1, const int _sy1, const int _sz1, + const typename AT::t_int_1d &_d_stencil, + const typename AT::t_int_1d_3 &_d_stencilxyz, + const typename AT::t_int_1d &_d_nstencil_ssa, + const int _ssa_phaseCt, + const typename AT::t_int_1d &_d_ssa_phaseLen, + const typename AT::t_int_1d_3 &_d_ssa_phaseOff, + const typename AT::t_int_2d &_d_ssa_itemLoc, + const typename AT::t_int_2d &_d_ssa_itemLen, + const int _ssa_gphaseCt, + const typename AT::t_int_1d &_d_ssa_gphaseLen, + const typename AT::t_int_2d &_d_ssa_gitemLoc, + const typename AT::t_int_2d &_d_ssa_gitemLen, + const int _nlocal, + const typename AT::t_x_array_randomread &_x, + const typename AT::t_int_1d_const &_type, + const typename AT::t_int_1d_const &_mask, + const typename AT::t_tagint_1d_const &_molecule, + const typename AT::t_tagint_1d_const &_tag, + const typename AT::t_tagint_2d_const &_special, + const typename AT::t_int_2d_const &_nspecial, + const int &_molecular, + const int & _nbinx,const int & _nbiny,const int & _nbinz, + const int & _mbinx,const int & _mbiny,const int & _mbinz, + const int & _mbinxlo,const int & _mbinylo,const int & _mbinzlo, + const X_FLOAT &_bininvx,const X_FLOAT &_bininvy,const X_FLOAT &_bininvz, + const int & _exclude,const int & _nex_type, + const typename AT::t_int_1d_const & _ex1_type, + const typename AT::t_int_1d_const & _ex2_type, + const typename AT::t_int_2d_const & _ex_type, + const int & _nex_group, + const typename AT::t_int_1d_const & _ex1_group, + const typename AT::t_int_1d_const & _ex2_group, + const typename AT::t_int_1d_const & _ex1_bit, + const typename AT::t_int_1d_const & _ex2_bit, + const int & _nex_mol, + const typename AT::t_int_1d_const & _ex_mol_group, + const typename AT::t_int_1d_const & _ex_mol_bit, + const X_FLOAT *_bboxhi, const X_FLOAT* _bboxlo, + const int & _xperiodic, const int & _yperiodic, const int & _zperiodic, + const int & _xprd_half, const int & _yprd_half, const int & _zprd_half): + neigh_list(_neigh_list), cutneighsq(_cutneighsq), + bincount(_bincount),c_bincount(_bincount),bins(_bins),c_bins(_bins), + gbincount(_gbincount),c_gbincount(_gbincount),gbins(_gbins),c_gbins(_gbins), + lbinxlo(_lbinxlo),lbinxhi(_lbinxhi), + lbinylo(_lbinylo),lbinyhi(_lbinyhi), + lbinzlo(_lbinzlo),lbinzhi(_lbinzhi), + nstencil(_nstencil),sx1(_sx1),sy1(_sy1),sz1(_sz1), + d_stencil(_d_stencil),d_stencilxyz(_d_stencilxyz),d_nstencil_ssa(_d_nstencil_ssa), + ssa_phaseCt(_ssa_phaseCt), + d_ssa_phaseLen(_d_ssa_phaseLen), + d_ssa_phaseOff(_d_ssa_phaseOff), + d_ssa_itemLoc(_d_ssa_itemLoc), + d_ssa_itemLen(_d_ssa_itemLen), + ssa_gphaseCt(_ssa_gphaseCt), + d_ssa_gphaseLen(_d_ssa_gphaseLen), + d_ssa_gitemLoc(_d_ssa_gitemLoc), + d_ssa_gitemLen(_d_ssa_gitemLen), + nlocal(_nlocal), + x(_x),type(_type),mask(_mask),molecule(_molecule), + tag(_tag),special(_special),nspecial(_nspecial),molecular(_molecular), + nbinx(_nbinx),nbiny(_nbiny),nbinz(_nbinz), + mbinx(_mbinx),mbiny(_mbiny),mbinz(_mbinz), + mbinxlo(_mbinxlo),mbinylo(_mbinylo),mbinzlo(_mbinzlo), + bininvx(_bininvx),bininvy(_bininvy),bininvz(_bininvz), + exclude(_exclude),nex_type(_nex_type), + ex1_type(_ex1_type),ex2_type(_ex2_type),ex_type(_ex_type), + nex_group(_nex_group), + ex1_group(_ex1_group),ex2_group(_ex2_group), + ex1_bit(_ex1_bit),ex2_bit(_ex2_bit),nex_mol(_nex_mol), + ex_mol_group(_ex_mol_group),ex_mol_bit(_ex_mol_bit), + xperiodic(_xperiodic),yperiodic(_yperiodic),zperiodic(_zperiodic), + xprd_half(_xprd_half),yprd_half(_yprd_half),zprd_half(_zprd_half) { + + if (molecular == 2) moltemplate = 1; + else moltemplate = 0; + + bboxlo[0] = _bboxlo[0]; bboxlo[1] = _bboxlo[1]; bboxlo[2] = _bboxlo[2]; + bboxhi[0] = _bboxhi[0]; bboxhi[1] = _bboxhi[1]; bboxhi[2] = _bboxhi[2]; + + resize = typename AT::t_int_scalar("NPairSSAKokkosExecute::resize"); +#ifndef KOKKOS_USE_CUDA_UVM + h_resize = Kokkos::create_mirror_view(resize); +#else + h_resize = resize; +#endif + h_resize() = 1; + new_maxneighs = typename AT:: + t_int_scalar("NPairSSAKokkosExecute::new_maxneighs"); +#ifndef KOKKOS_USE_CUDA_UVM + h_new_maxneighs = Kokkos::create_mirror_view(new_maxneighs); +#else + h_new_maxneighs = new_maxneighs; +#endif + h_new_maxneighs() = neigh_list.maxneighs; + }; + + ~NPairSSAKokkosExecute() {neigh_list.copymode = 1;}; + + KOKKOS_FUNCTION + void build_locals_onePhase(const bool firstTry, int me, int workPhase) const; + + KOKKOS_FUNCTION + void build_ghosts_onePhase(int workPhase) const; + + KOKKOS_INLINE_FUNCTION + int coord2bin(const X_FLOAT & x,const X_FLOAT & y,const X_FLOAT & z, int* i) const + { + int ix,iy,iz; + + if (x >= bboxhi[0]) + ix = static_cast ((x-bboxhi[0])*bininvx) + nbinx; + else if (x >= bboxlo[0]) { + ix = static_cast ((x-bboxlo[0])*bininvx); + ix = MIN(ix,nbinx-1); + } else + ix = static_cast ((x-bboxlo[0])*bininvx) - 1; + + if (y >= bboxhi[1]) + iy = static_cast ((y-bboxhi[1])*bininvy) + nbiny; + else if (y >= bboxlo[1]) { + iy = static_cast ((y-bboxlo[1])*bininvy); + iy = MIN(iy,nbiny-1); + } else + iy = static_cast ((y-bboxlo[1])*bininvy) - 1; + + if (z >= bboxhi[2]) + iz = static_cast ((z-bboxhi[2])*bininvz) + nbinz; + else if (z >= bboxlo[2]) { + iz = static_cast ((z-bboxlo[2])*bininvz); + iz = MIN(iz,nbinz-1); + } else + iz = static_cast ((z-bboxlo[2])*bininvz) - 1; + + i[0] = ix - mbinxlo; + i[1] = iy - mbinylo; + i[2] = iz - mbinzlo; + + return (iz-mbinzlo)*mbiny*mbinx + (iy-mbinylo)*mbinx + (ix-mbinxlo); + } + + KOKKOS_INLINE_FUNCTION + int exclusion(const int &i,const int &j, const int &itype,const int &jtype) const; + + KOKKOS_INLINE_FUNCTION + int find_special(const int &i, const int &j) const; + + KOKKOS_INLINE_FUNCTION + int minimum_image_check(double dx, double dy, double dz) const { + if (xperiodic && fabs(dx) > xprd_half) return 1; + if (yperiodic && fabs(dy) > yprd_half) return 1; + if (zperiodic && fabs(dz) > zprd_half) return 1; + return 0; + } + +}; + +} + +#endif +#endif + +/* ERROR/WARNING messages: + +*/ diff --git a/src/KOKKOS/pair_buck_coul_cut_kokkos.cpp b/src/KOKKOS/pair_buck_coul_cut_kokkos.cpp index 34fd4272267333e8333776b0739685c8192f20c8..0da8a0a3d6a9267bc6e45a74aa4b52f2f2471c47 100644 --- a/src/KOKKOS/pair_buck_coul_cut_kokkos.cpp +++ b/src/KOKKOS/pair_buck_coul_cut_kokkos.cpp @@ -261,7 +261,7 @@ void PairBuckCoulCutKokkos::allocate() memory->create_kokkos(k_cut_coulsq,cut_coulsq,n+1,n+1,"pair:cut_coulsq"); d_cut_coulsq = k_cut_coulsq.template view(); k_params = Kokkos::DualView("PairBuckCoulCut::params",n+1,n+1); - params = k_params.d_view; + params = k_params.template view(); } /* ---------------------------------------------------------------------- diff --git a/src/KOKKOS/pair_buck_coul_long_kokkos.cpp b/src/KOKKOS/pair_buck_coul_long_kokkos.cpp index 243bac5ab70805134d0c48d359ca7959f9db5054..3a5cbd868f725c54a95c6c6cb0fc9a2335137ea5 100644 --- a/src/KOKKOS/pair_buck_coul_long_kokkos.cpp +++ b/src/KOKKOS/pair_buck_coul_long_kokkos.cpp @@ -319,7 +319,7 @@ void PairBuckCoulLongKokkos::allocate() d_cut_coulsq = k_cut_coulsq.template view(); k_params = Kokkos::DualView("PairBuckCoulLong::params",n+1,n+1); - params = k_params.d_view; + params = k_params.template view(); } template diff --git a/src/KOKKOS/pair_buck_kokkos.cpp b/src/KOKKOS/pair_buck_kokkos.cpp index d8534f79005eec2ed926659e80e2eded9c7aefaa..e7640471d501bc8be6778c4acb32395e18cf950a 100644 --- a/src/KOKKOS/pair_buck_kokkos.cpp +++ b/src/KOKKOS/pair_buck_kokkos.cpp @@ -197,7 +197,7 @@ void PairBuckKokkos::allocate() memory->create_kokkos(k_cutsq,cutsq,n+1,n+1,"pair:cutsq"); d_cutsq = k_cutsq.template view(); k_params = Kokkos::DualView("PairBuck::params",n+1,n+1); - params = k_params.d_view; + params = k_params.template view(); } /* ---------------------------------------------------------------------- diff --git a/src/KOKKOS/pair_coul_cut_kokkos.cpp b/src/KOKKOS/pair_coul_cut_kokkos.cpp index 80ab01d91a52a77294852155cfe57494079456b3..8edf093e2e118a4315b899aa6c304a9e78f670f9 100644 --- a/src/KOKKOS/pair_coul_cut_kokkos.cpp +++ b/src/KOKKOS/pair_coul_cut_kokkos.cpp @@ -199,7 +199,7 @@ void PairCoulCutKokkos::allocate() d_cut_coulsq = k_cut_coulsq.template view(); k_params = Kokkos::DualView("PairCoulCut::params",n+1,n+1); - params = k_params.d_view; + params = k_params.template view(); } /* ---------------------------------------------------------------------- diff --git a/src/KOKKOS/pair_coul_debye_kokkos.cpp b/src/KOKKOS/pair_coul_debye_kokkos.cpp index 0771572e46b9bb399437672e511cb58392c79cc6..c331ab8da8f5881441985a0bfdf69d7f9da8bc8d 100644 --- a/src/KOKKOS/pair_coul_debye_kokkos.cpp +++ b/src/KOKKOS/pair_coul_debye_kokkos.cpp @@ -221,7 +221,7 @@ void PairCoulDebyeKokkos::allocate() memory->create_kokkos(k_cutsq,cutsq,n+1,n+1,"pair:cutsq"); d_cutsq = k_cutsq.template view(); k_params = Kokkos::DualView("PairCoulDebye::params",n+1,n+1); - params = k_params.d_view; + params = k_params.template view(); } /* ---------------------------------------------------------------------- diff --git a/src/KOKKOS/pair_coul_long_kokkos.cpp b/src/KOKKOS/pair_coul_long_kokkos.cpp index 7dbadf4834f27f1cca2c0ea2db956cf01bc104ad..721e140e3374794dad4016fce79888cb60a07145 100644 --- a/src/KOKKOS/pair_coul_long_kokkos.cpp +++ b/src/KOKKOS/pair_coul_long_kokkos.cpp @@ -279,7 +279,7 @@ void PairCoulLongKokkos::allocate() d_cut_coulsq = k_cut_coulsq.template view(); k_params = Kokkos::DualView("PairCoulLong::params",n+1,n+1); - params = k_params.d_view; + params = k_params.template view(); } template diff --git a/src/KOKKOS/pair_dpd_fdt_energy_kokkos.cpp b/src/KOKKOS/pair_dpd_fdt_energy_kokkos.cpp new file mode 100644 index 0000000000000000000000000000000000000000..c559ab412f355c1dc10a51adb4308fbf031003d4 --- /dev/null +++ b/src/KOKKOS/pair_dpd_fdt_energy_kokkos.cpp @@ -0,0 +1,796 @@ +/* ---------------------------------------------------------------------- + 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: Stan Moore (Sandia) +------------------------------------------------------------------------- */ + +#include +#include +#include +#include +#include "atom_kokkos.h" +#include "atom_vec.h" +#include "comm.h" +#include "update.h" +#include "fix.h" +#include "force.h" +#include "neighbor.h" +#include "neigh_list.h" +#include "neigh_request.h" +#include "memory.h" +#include "modify.h" +#include "pair_dpd_fdt_energy_kokkos.h" +#include "error.h" +#include "atom_masks.h" + +using namespace LAMMPS_NS; + +#define EPSILON 1.0e-10 + +/* ---------------------------------------------------------------------- */ + +template +PairDPDfdtEnergyKokkos::PairDPDfdtEnergyKokkos(LAMMPS *lmp) : + PairDPDfdtEnergy(lmp), +#ifdef DPD_USE_RAN_MARS + rand_pool(0 /* unused */, lmp) +#else + rand_pool() +#endif +{ + atomKK = (AtomKokkos *) atom; + execution_space = ExecutionSpaceFromDevice::space; + datamask_read = EMPTY_MASK; + datamask_modify = EMPTY_MASK; +} + +/* ---------------------------------------------------------------------- */ + +template +PairDPDfdtEnergyKokkos::~PairDPDfdtEnergyKokkos() +{ + if (copymode) return; + + memory->destroy_kokkos(k_eatom,eatom); + memory->destroy_kokkos(k_vatom,vatom); + + if (allocated) { + memory->destroy_kokkos(k_duCond,duCond); + memory->destroy_kokkos(k_duMech,duMech); + } + + memory->destroy_kokkos(k_cutsq,cutsq); + +#ifdef DPD_USE_RAN_MARS + rand_pool.destroy(); +#endif +} + +/* ---------------------------------------------------------------------- + init specific to this pair style +------------------------------------------------------------------------- */ + +template +void PairDPDfdtEnergyKokkos::init_style() +{ + PairDPDfdtEnergy::init_style(); + + // irequest = neigh request made by parent class + + neighflag = lmp->kokkos->neighflag; + int irequest = neighbor->nrequest - 1; + + neighbor->requests[irequest]-> + kokkos_host = Kokkos::Impl::is_same::value && + !Kokkos::Impl::is_same::value; + neighbor->requests[irequest]-> + kokkos_device = Kokkos::Impl::is_same::value; + + if (neighflag == FULL) { + neighbor->requests[irequest]->full = 1; + neighbor->requests[irequest]->half = 0; + } else if (neighflag == HALF || neighflag == HALFTHREAD) { + neighbor->requests[irequest]->full = 0; + neighbor->requests[irequest]->half = 1; + } else { + error->all(FLERR,"Cannot use chosen neighbor list style with dpd/fdt/energy/kk"); + } + +#ifdef DPD_USE_RAN_MARS + rand_pool.init(random,seed); +#else + rand_pool.init(seed + comm->me,DeviceType::max_hardware_threads()); +#endif +} + +#if defined(KOKKOS_ENABLE_CUDA) && defined(__CUDACC__) +// CUDA specialization of init_style to properly call rand_pool.init() +template<> +void PairDPDfdtEnergyKokkos::init_style() +{ + PairDPDfdtEnergy::init_style(); + + // irequest = neigh request made by parent class + + neighflag = lmp->kokkos->neighflag; + int irequest = neighbor->nrequest - 1; + + neighbor->requests[irequest]-> + kokkos_host = Kokkos::Impl::is_same::value && + !Kokkos::Impl::is_same::value; + neighbor->requests[irequest]-> + kokkos_device = Kokkos::Impl::is_same::value; + + if (neighflag == FULL) { + neighbor->requests[irequest]->full = 1; + neighbor->requests[irequest]->half = 0; + } else if (neighflag == HALF || neighflag == HALFTHREAD) { + neighbor->requests[irequest]->full = 0; + neighbor->requests[irequest]->half = 1; + } else { + error->all(FLERR,"Cannot use chosen neighbor list style with dpd/fdt/energy/kk"); + } + +#ifdef DPD_USE_RAN_MARS + rand_pool.init(random,seed); +#else + rand_pool.init(seed + comm->me,4*32768 /*fake max_hardware_threads()*/); +#endif +} +#endif + +/* ---------------------------------------------------------------------- */ + +template +void PairDPDfdtEnergyKokkos::compute(int eflag_in, int vflag_in) +{ + copymode = 1; + + eflag = eflag_in; + vflag = vflag_in; + + if (neighflag == FULL) no_virial_fdotr_compute = 1; + if (eflag || vflag) ev_setup(eflag,vflag,0); + else evflag = vflag_fdotr = 0; + + // reallocate per-atom arrays if necessary + + if (eflag_atom) { + memory->destroy_kokkos(k_eatom,eatom); + memory->create_kokkos(k_eatom,eatom,maxeatom,"pair:eatom"); + d_eatom = k_eatom.template view(); + } + if (vflag_atom) { + memory->destroy_kokkos(k_vatom,vatom); + memory->create_kokkos(k_vatom,vatom,maxvatom,6,"pair:vatom"); + d_vatom = k_vatom.template view(); + } + + x = atomKK->k_x.view(); + v = atomKK->k_v.view(); + f = atomKK->k_f.view(); + type = atomKK->k_type.view(); + mass = atomKK->k_mass.view(); + rmass = atomKK->rmass; + dpdTheta = atomKK->k_dpdTheta.view(); + + k_cutsq.template sync(); + k_params.template sync(); + atomKK->sync(execution_space,X_MASK | F_MASK | TYPE_MASK | ENERGY_MASK | VIRIAL_MASK); + if (evflag) atomKK->modified(execution_space,F_MASK | ENERGY_MASK | VIRIAL_MASK); + else atomKK->modified(execution_space,F_MASK); + + special_lj[0] = force->special_lj[0]; + special_lj[1] = force->special_lj[1]; + special_lj[2] = force->special_lj[2]; + special_lj[3] = force->special_lj[3]; + + nlocal = atom->nlocal; + int nghost = atom->nghost; + int newton_pair = force->newton_pair; + dtinvsqrt = 1.0/sqrt(update->dt); + + int inum = list->inum; + NeighListKokkos* k_list = static_cast*>(list); + d_numneigh = k_list->d_numneigh; + d_neighbors = k_list->d_neighbors; + d_ilist = k_list->d_ilist; + + boltz = force->boltz; + ftm2v = force->ftm2v; + + // loop over neighbors of my atoms + + EV_FLOAT ev; + + if (splitFDT_flag) { + if (!a0_is_zero) { + if(atom->ntypes > MAX_TYPES_STACKPARAMS) { + if (neighflag == HALF) { + if (newton_pair) { + if (evflag) Kokkos::parallel_reduce(Kokkos::RangePolicy >(0,inum),*this,ev); + else Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + } else { + if (evflag) Kokkos::parallel_reduce(Kokkos::RangePolicy >(0,inum),*this,ev); + else Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + } + } else if (neighflag == HALFTHREAD) { + if (newton_pair) { + if (evflag) Kokkos::parallel_reduce(Kokkos::RangePolicy >(0,inum),*this,ev); + else Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + } else { + if (evflag) Kokkos::parallel_reduce(Kokkos::RangePolicy >(0,inum),*this,ev); + else Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + } + } else if (neighflag == FULL) { + if (newton_pair) { + if (evflag) Kokkos::parallel_reduce(Kokkos::RangePolicy >(0,inum),*this,ev); + else Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + } else { + if (evflag) Kokkos::parallel_reduce(Kokkos::RangePolicy >(0,inum),*this,ev); + else Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + } + } + } else { + if (neighflag == HALF) { + if (newton_pair) { + if (evflag) Kokkos::parallel_reduce(Kokkos::RangePolicy >(0,inum),*this,ev); + else Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + } else { + if (evflag) Kokkos::parallel_reduce(Kokkos::RangePolicy >(0,inum),*this,ev); + else Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + } + } else if (neighflag == HALFTHREAD) { + if (newton_pair) { + if (evflag) Kokkos::parallel_reduce(Kokkos::RangePolicy >(0,inum),*this,ev); + else Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + } else { + if (evflag) Kokkos::parallel_reduce(Kokkos::RangePolicy >(0,inum),*this,ev); + else Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + } + } else if (neighflag == FULL) { + if (newton_pair) { + if (evflag) Kokkos::parallel_reduce(Kokkos::RangePolicy >(0,inum),*this,ev); + else Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + } else { + if (evflag) Kokkos::parallel_reduce(Kokkos::RangePolicy >(0,inum),*this,ev); + else Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + } + } + } + } + } else { + + // Allocate memory for duCond and duMech + if (allocated) { + memory->destroy_kokkos(k_duCond,duCond); + memory->destroy_kokkos(k_duMech,duMech); + } + memory->create_kokkos(k_duCond,duCond,nlocal+nghost,"pair:duCond"); + memory->create_kokkos(k_duMech,duMech,nlocal+nghost,"pair:duMech"); + d_duCond = k_duCond.view(); + d_duMech = k_duMech.view(); + h_duCond = k_duCond.h_view; + h_duMech = k_duMech.h_view; + Kokkos::parallel_for(Kokkos::RangePolicy(0,nlocal+nghost),*this); + + atomKK->sync(execution_space,V_MASK | DPDTHETA_MASK | RMASS_MASK); + atomKK->k_mass.sync(); + + // loop over neighbors of my atoms + + if(atom->ntypes > MAX_TYPES_STACKPARAMS) { + if (neighflag == HALF) { + if (newton_pair) { + if (evflag) Kokkos::parallel_reduce(Kokkos::RangePolicy >(0,inum),*this,ev); + else Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + } else { + if (evflag) Kokkos::parallel_reduce(Kokkos::RangePolicy >(0,inum),*this,ev); + else Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + } + } else if (neighflag == HALFTHREAD) { + if (newton_pair) { + if (evflag) Kokkos::parallel_reduce(Kokkos::RangePolicy >(0,inum),*this,ev); + else Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + } else { + if (evflag) Kokkos::parallel_reduce(Kokkos::RangePolicy >(0,inum),*this,ev); + else Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + } + } else if (neighflag == FULL) { + if (newton_pair) { + if (evflag) Kokkos::parallel_reduce(Kokkos::RangePolicy >(0,inum),*this,ev); + else Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + } else { + if (evflag) Kokkos::parallel_reduce(Kokkos::RangePolicy >(0,inum),*this,ev); + else Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + } + } + } else { + if (neighflag == HALF) { + if (newton_pair) { + if (evflag) Kokkos::parallel_reduce(Kokkos::RangePolicy >(0,inum),*this,ev); + else Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + } else { + if (evflag) Kokkos::parallel_reduce(Kokkos::RangePolicy >(0,inum),*this,ev); + else Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + } + } else if (neighflag == HALFTHREAD) { + if (newton_pair) { + if (evflag) Kokkos::parallel_reduce(Kokkos::RangePolicy >(0,inum),*this,ev); + else Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + } else { + if (evflag) Kokkos::parallel_reduce(Kokkos::RangePolicy >(0,inum),*this,ev); + else Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + } + } else if (neighflag == FULL) { + if (newton_pair) { + if (evflag) Kokkos::parallel_reduce(Kokkos::RangePolicy >(0,inum),*this,ev); + else Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + } else { + if (evflag) Kokkos::parallel_reduce(Kokkos::RangePolicy >(0,inum),*this,ev); + else Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + } + } + } + + // Communicate the ghost delta energies to the locally owned atoms + + // this memory transfer can be removed when fix_dpd_fdt_energy_kokkos is added + k_duCond.template modify(); + k_duCond.template sync(); + k_duMech.template modify(); + k_duMech.template sync(); + comm->reverse_comm_pair(this); + } + + if (eflag_global) eng_vdwl += ev.evdwl; + if (vflag_global) { + virial[0] += ev.v[0]; + virial[1] += ev.v[1]; + virial[2] += ev.v[2]; + virial[3] += ev.v[3]; + virial[4] += ev.v[4]; + virial[5] += ev.v[5]; + } + + if (vflag_fdotr) pair_virial_fdotr_compute(this); + + if (eflag_atom) { + k_eatom.template modify(); + k_eatom.template sync(); + } + + if (vflag_atom) { + k_vatom.template modify(); + k_vatom.template sync(); + } + + copymode = 0; +} + +template +KOKKOS_INLINE_FUNCTION +void PairDPDfdtEnergyKokkos::operator()(TagPairDPDfdtEnergyZero, const int &ii) const { + d_duCond[ii] = 0.0; + d_duMech[ii] = 0.0; +} + +template +template +KOKKOS_INLINE_FUNCTION +void PairDPDfdtEnergyKokkos::operator()(TagPairDPDfdtEnergyComputeSplit, const int &ii, EV_FLOAT& ev) const { + + // The f array is atomic for Half/Thread neighbor style + Kokkos::View::value> > a_f = f; + + int i,j,jj,jnum,itype,jtype; + double xtmp,ytmp,ztmp,delx,dely,delz,evdwl,fpair; + double rsq,r,rinv,wd,wr,factor_dpd; + + i = d_ilist[ii]; + xtmp = x(i,0); + ytmp = x(i,1); + ztmp = x(i,2); + itype = type[i]; + jnum = d_numneigh[i]; + + double fx_i = 0.0; + double fy_i = 0.0; + double fz_i = 0.0; + + for (jj = 0; jj < jnum; jj++) { + j = d_neighbors(i,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]; + + double cutsq_ij = STACKPARAMS?m_cutsq[itype][jtype]:d_cutsq(itype,jtype); + if (rsq < cutsq_ij) { + r = sqrt(rsq); + if (r < EPSILON) continue; // r can be 0.0 in DPD systems + rinv = 1.0/r; + double cut_ij = STACKPARAMS?m_params[itype][jtype].cut:params(itype,jtype).cut; + wr = 1.0 - r/cut_ij; + wd = wr*wr; + + // conservative force = a0 * wr + double a0_ij = STACKPARAMS?m_params[itype][jtype].a0:params(itype,jtype).a0; + fpair = a0_ij*wr; + fpair *= factor_dpd*rinv; + + fx_i += delx*fpair; + fy_i += dely*fpair; + fz_i += delz*fpair; + if ((NEIGHFLAG==HALF || NEIGHFLAG==HALFTHREAD) && (NEWTON_PAIR || j < nlocal)) { + a_f(j,0) -= delx*fpair; + a_f(j,1) -= dely*fpair; + a_f(j,2) -= delz*fpair; + } + + if (eflag) { + // unshifted eng of conservative term: + // evdwl = -a0[itype][jtype]*r * (1.0-0.5*r/d_cut(itype,jtype)); + // eng shifted to 0.0 at cutoff + evdwl = 0.5*a0_ij*cut_ij * wd; + evdwl *= factor_dpd; + if (EVFLAG) + ev.evdwl += (((NEIGHFLAG==HALF || NEIGHFLAG==HALFTHREAD) && (NEWTON_PAIR||(jtemplate ev_tally(ev,i,j,evdwl,fpair,delx,dely,delz); + } + } + + a_f(i,0) += fx_i; + a_f(i,1) += fy_i; + a_f(i,2) += fz_i; +} + +template +template +KOKKOS_INLINE_FUNCTION +void PairDPDfdtEnergyKokkos::operator()(TagPairDPDfdtEnergyComputeSplit, const int &ii) const { + EV_FLOAT ev; + this->template operator()(TagPairDPDfdtEnergyComputeSplit(), ii, ev); +} + +template +template +KOKKOS_INLINE_FUNCTION +void PairDPDfdtEnergyKokkos::operator()(TagPairDPDfdtEnergyComputeNoSplit, const int &ii, EV_FLOAT& ev) const { + + // These array are atomic for Half/Thread neighbor style + Kokkos::View::value> > a_f = f; + Kokkos::View::value> > a_duCond = d_duCond; + Kokkos::View::value> > a_duMech = d_duMech; + + int i,j,jj,jnum,itype,jtype; + double xtmp,ytmp,ztmp,delx,dely,delz,evdwl,fpair; + double vxtmp,vytmp,vztmp,delvx,delvy,delvz; + double rsq,r,rinv,wd,wr,factor_dpd,uTmp; + double dot,randnum; + + double kappa_ij, alpha_ij, theta_ij, gamma_ij; + double mass_i, mass_j; + double massinv_i, massinv_j; + double randPair, mu_ij; + + rand_type rand_gen = rand_pool.get_state(); + + i = d_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]; + jnum = d_numneigh[i]; + + double fx_i = 0.0; + double fy_i = 0.0; + double fz_i = 0.0; + + for (jj = 0; jj < jnum; jj++) { + j = d_neighbors(i,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]; + + double cutsq_ij = STACKPARAMS?m_cutsq[itype][jtype]:d_cutsq(itype,jtype); + if (rsq < cutsq_ij) { + r = sqrt(rsq); + if (r < EPSILON) continue; // r can be 0.0 in DPD systems + rinv = 1.0/r; + double cut_ij = STACKPARAMS?m_params[itype][jtype].cut:params(itype,jtype).cut; + wr = 1.0 - r/cut_ij; + wd = wr*wr; + + delvx = vxtmp - v(j,0); + delvy = vytmp - v(j,1); + delvz = vztmp - v(j,2); + dot = delx*delvx + dely*delvy + delz*delvz; + randnum = rand_gen.normal(); + + // Compute the current temperature + theta_ij = 0.5*(1.0/dpdTheta[i] + 1.0/dpdTheta[j]); + theta_ij = 1.0/theta_ij; + + double sigma_ij = STACKPARAMS?m_params[itype][jtype].sigma:params(itype,jtype).sigma; + gamma_ij = sigma_ij*sigma_ij + / (2.0*boltz*theta_ij); + + // conservative force = a0 * wr + // drag force = -gamma * wr^2 * (delx dot delv) / r + // random force = sigma * wr * rnd * dtinvsqrt; + + double a0_ij = STACKPARAMS?m_params[itype][jtype].a0:params(itype,jtype).a0; + fpair = a0_ij*wr; + fpair -= gamma_ij*wd*dot*rinv; + fpair += sigma_ij*wr*randnum*dtinvsqrt; + fpair *= factor_dpd*rinv; + + fx_i += delx*fpair; + fy_i += dely*fpair; + fz_i += delz*fpair; + if ((NEIGHFLAG==HALF || NEIGHFLAG==HALFTHREAD) && (NEWTON_PAIR || j < nlocal)) { + a_f(j,0) -= delx*fpair; + a_f(j,1) -= dely*fpair; + a_f(j,2) -= delz*fpair; + } + + if (rmass) { + mass_i = rmass[i]; + mass_j = rmass[j]; + } else { + mass_i = mass[itype]; + mass_j = mass[jtype]; + } + massinv_i = 1.0 / mass_i; + massinv_j = 1.0 / mass_j; + + // Compute the mechanical and conductive energy, uMech and uCond + mu_ij = massinv_i + massinv_j; + mu_ij *= ftm2v; + + uTmp = gamma_ij*wd*rinv*rinv*dot*dot + - 0.5*sigma_ij*sigma_ij*mu_ij*wd; + uTmp -= sigma_ij*wr*rinv*dot*randnum*dtinvsqrt; + uTmp *= 0.5; + + a_duMech[i] += uTmp; + if ((NEIGHFLAG==HALF || NEIGHFLAG==HALFTHREAD) && (NEWTON_PAIR || j < nlocal)) { + a_duMech[j] += uTmp; + } + + // Compute uCond + randnum = rand_gen.normal(); + kappa_ij = STACKPARAMS?m_params[itype][jtype].kappa:params(itype,jtype).kappa; + alpha_ij = sqrt(2.0*boltz*kappa_ij); + randPair = alpha_ij*wr*randnum*dtinvsqrt; + + uTmp = kappa_ij*(1.0/dpdTheta[i] - 1.0/dpdTheta[j])*wd; + uTmp += randPair; + + a_duCond[i] += uTmp; + if ((NEIGHFLAG==HALF || NEIGHFLAG==HALFTHREAD) && (NEWTON_PAIR || j < nlocal)) { + a_duCond[j] -= uTmp; + } + + if (eflag) { + // unshifted eng of conservative term: + // evdwl = -a0[itype][jtype]*r * (1.0-0.5*r/d_cut(itype,jtype)); + // eng shifted to 0.0 at cutoff + evdwl = 0.5*a0_ij*cut_ij * wd; + evdwl *= factor_dpd; + if (EVFLAG) + ev.evdwl += (((NEIGHFLAG==HALF || NEIGHFLAG==HALFTHREAD) && (NEWTON_PAIR||(jtemplate ev_tally(ev,i,j,evdwl,fpair,delx,dely,delz); + } + } + + a_f(i,0) += fx_i; + a_f(i,1) += fy_i; + a_f(i,2) += fz_i; + + rand_pool.free_state(rand_gen); +} + +template +template +KOKKOS_INLINE_FUNCTION +void PairDPDfdtEnergyKokkos::operator()(TagPairDPDfdtEnergyComputeNoSplit, const int &ii) const { + EV_FLOAT ev; + this->template operator()(TagPairDPDfdtEnergyComputeNoSplit(), ii, ev); +} + +/* ---------------------------------------------------------------------- + allocate all arrays +------------------------------------------------------------------------- */ + +template +void PairDPDfdtEnergyKokkos::allocate() +{ + PairDPDfdtEnergy::allocate(); + + int n = atom->ntypes; + int nlocal = atom->nlocal; + int nghost = atom->nghost; + + memory->destroy(cutsq); + memory->create_kokkos(k_cutsq,cutsq,n+1,n+1,"pair:cutsq"); + d_cutsq = k_cutsq.template view(); + + k_params = Kokkos::DualView("PairDPDfdtEnergy::params",n+1,n+1); + params = k_params.template view(); + + if (!splitFDT_flag) { + memory->destroy(duCond); + memory->destroy(duMech); + memory->create_kokkos(k_duCond,duCond,nlocal+nghost+1,"pair:duCond"); + memory->create_kokkos(k_duMech,duMech,nlocal+nghost+1,"pair:duMech"); + d_duCond = k_duCond.view(); + d_duMech = k_duMech.view(); + h_duCond = k_duCond.h_view; + h_duMech = k_duMech.h_view; + } +} + +/* ---------------------------------------------------------------------- + init for one type pair i,j and corresponding j,i +------------------------------------------------------------------------- */ + +template +double PairDPDfdtEnergyKokkos::init_one(int i, int j) +{ + double cutone = PairDPDfdtEnergy::init_one(i,j); + + k_params.h_view(i,j).cut = cut[i][j]; + k_params.h_view(i,j).a0 = a0[i][j]; + k_params.h_view(i,j).sigma = sigma[i][j]; + k_params.h_view(i,j).kappa = kappa[i][j]; + k_params.h_view(j,i) = k_params.h_view(i,j); + if(i(); + k_params.template modify(); + + return cutone; +} + +/* ---------------------------------------------------------------------- */ + +template +template +KOKKOS_INLINE_FUNCTION +void PairDPDfdtEnergyKokkos::ev_tally(EV_FLOAT &ev, const int &i, const int &j, + const F_FLOAT &epair, const F_FLOAT &fpair, const F_FLOAT &delx, + const F_FLOAT &dely, const F_FLOAT &delz) const +{ + const int EFLAG = eflag; + const int VFLAG = vflag_either; + + // The eatom and vatom arrays are atomic for Half/Thread neighbor style + Kokkos::View::value> > v_eatom = k_eatom.view(); + Kokkos::View::value> > v_vatom = k_vatom.view(); + + if (EFLAG) { + if (eflag_atom) { + const E_FLOAT epairhalf = 0.5 * epair; + if (NEIGHFLAG!=FULL) { + if (NEWTON_PAIR || i < nlocal) v_eatom[i] += epairhalf; + if (NEWTON_PAIR || j < nlocal) v_eatom[j] += epairhalf; + } else { + v_eatom[i] += epairhalf; + } + } + } + + if (VFLAG) { + const E_FLOAT v0 = delx*delx*fpair; + const E_FLOAT v1 = dely*dely*fpair; + const E_FLOAT v2 = delz*delz*fpair; + const E_FLOAT v3 = delx*dely*fpair; + const E_FLOAT v4 = delx*delz*fpair; + const E_FLOAT v5 = dely*delz*fpair; + + if (vflag_global) { + if (NEIGHFLAG!=FULL) { + if (NEWTON_PAIR || i < nlocal) { + ev.v[0] += 0.5*v0; + ev.v[1] += 0.5*v1; + ev.v[2] += 0.5*v2; + ev.v[3] += 0.5*v3; + ev.v[4] += 0.5*v4; + ev.v[5] += 0.5*v5; + } + if (NEWTON_PAIR || j < nlocal) { + ev.v[0] += 0.5*v0; + ev.v[1] += 0.5*v1; + ev.v[2] += 0.5*v2; + ev.v[3] += 0.5*v3; + ev.v[4] += 0.5*v4; + ev.v[5] += 0.5*v5; + } + } else { + ev.v[0] += 0.5*v0; + ev.v[1] += 0.5*v1; + ev.v[2] += 0.5*v2; + ev.v[3] += 0.5*v3; + ev.v[4] += 0.5*v4; + ev.v[5] += 0.5*v5; + } + } + + if (vflag_atom) { + if (NEIGHFLAG!=FULL) { + if (NEWTON_PAIR || i < nlocal) { + v_vatom(i,0) += 0.5*v0; + v_vatom(i,1) += 0.5*v1; + v_vatom(i,2) += 0.5*v2; + v_vatom(i,3) += 0.5*v3; + v_vatom(i,4) += 0.5*v4; + v_vatom(i,5) += 0.5*v5; + } + if (NEWTON_PAIR || j < nlocal) { + v_vatom(j,0) += 0.5*v0; + v_vatom(j,1) += 0.5*v1; + v_vatom(j,2) += 0.5*v2; + v_vatom(j,3) += 0.5*v3; + v_vatom(j,4) += 0.5*v4; + v_vatom(j,5) += 0.5*v5; + } + } else { + v_vatom(i,0) += 0.5*v0; + v_vatom(i,1) += 0.5*v1; + v_vatom(i,2) += 0.5*v2; + v_vatom(i,3) += 0.5*v3; + v_vatom(i,4) += 0.5*v4; + v_vatom(i,5) += 0.5*v5; + } + } + } +} + +/* ---------------------------------------------------------------------- */ + +template +KOKKOS_INLINE_FUNCTION +int PairDPDfdtEnergyKokkos::sbmask(const int& j) const { + return j >> SBBITS & 3; +} + +namespace LAMMPS_NS { +template class PairDPDfdtEnergyKokkos; +#ifdef KOKKOS_HAVE_CUDA +template class PairDPDfdtEnergyKokkos; +#endif +} diff --git a/src/KOKKOS/pair_dpd_fdt_energy_kokkos.h b/src/KOKKOS/pair_dpd_fdt_energy_kokkos.h new file mode 100644 index 0000000000000000000000000000000000000000..424779f839240d90bf4fb51495c97fcfad2fe627 --- /dev/null +++ b/src/KOKKOS/pair_dpd_fdt_energy_kokkos.h @@ -0,0 +1,182 @@ +/* -*- 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(dpd/fdt/energy/kk,PairDPDfdtEnergyKokkos) +PairStyle(dpd/fdt/energy/kk/device,PairDPDfdtEnergyKokkos) +PairStyle(dpd/fdt/energy/kk/host,PairDPDfdtEnergyKokkos) + +#else + +#ifndef LMP_PAIR_DPD_FDT_ENERGY_KOKKOS_H +#define LMP_PAIR_DPD_FDT_ENERGY_KOKKOS_H + +#if !defined(DPD_USE_RAN_MARS) && !defined(DPD_USE_Random_XorShift64) && !defined(Random_XorShift1024) +#define DPD_USE_Random_XorShift64 +#endif + +#include "pair_dpd_fdt_energy.h" +#include "pair_kokkos.h" +#include "kokkos_type.h" +#ifdef DPD_USE_RAN_MARS +#include "rand_pool_wrap_kokkos.h" +#else +#include "Kokkos_Random.hpp" +#endif + +namespace LAMMPS_NS { + +struct TagPairDPDfdtEnergyZero{}; + +template +struct TagPairDPDfdtEnergyComputeSplit{}; + +template +struct TagPairDPDfdtEnergyComputeNoSplit{}; + +template +class PairDPDfdtEnergyKokkos : public PairDPDfdtEnergy { + public: + typedef DeviceType device_type; + typedef ArrayTypes AT; + typedef EV_FLOAT value_type; + + PairDPDfdtEnergyKokkos(class LAMMPS *); + virtual ~PairDPDfdtEnergyKokkos(); + virtual void compute(int, int); + void init_style(); + double init_one(int, int); + + KOKKOS_INLINE_FUNCTION + void operator()(TagPairDPDfdtEnergyZero, const int&) const; + + template + KOKKOS_INLINE_FUNCTION + void operator()(TagPairDPDfdtEnergyComputeSplit, const int&, EV_FLOAT&) const; + + template + KOKKOS_INLINE_FUNCTION + void operator()(TagPairDPDfdtEnergyComputeSplit, const int&) const; + + template + KOKKOS_INLINE_FUNCTION + void operator()(TagPairDPDfdtEnergyComputeNoSplit, const int&, EV_FLOAT&) const; + + template + KOKKOS_INLINE_FUNCTION + void operator()(TagPairDPDfdtEnergyComputeNoSplit, const int&) const; + + template + KOKKOS_INLINE_FUNCTION + void ev_tally(EV_FLOAT &ev, const int &i, const int &j, + const F_FLOAT &epair, const F_FLOAT &fpair, const F_FLOAT &delx, + const F_FLOAT &dely, const F_FLOAT &delz) const; + + KOKKOS_INLINE_FUNCTION + int sbmask(const int& j) const; + + struct params_dpd { + KOKKOS_INLINE_FUNCTION + params_dpd(){cut=0;a0=0;sigma=0;kappa=0;}; + KOKKOS_INLINE_FUNCTION + params_dpd(int i){cut=0;a0=0;sigma=0;kappa=0;}; + F_FLOAT cut,a0,sigma,kappa; + }; + + DAT::tdual_efloat_1d k_duCond,k_duMech; + +#ifdef DPD_USE_RAN_MARS + RandPoolWrap rand_pool; + typedef RandWrap rand_type; +#elif defined(DPD_USE_Random_XorShift64) + Kokkos::Random_XorShift64_Pool rand_pool; + typedef typename Kokkos::Random_XorShift64_Pool::generator_type rand_type; +#elif defined(DPD_USE_Random_XorShift1024) + Kokkos::Random_XorShift1024_Pool rand_pool; + typedef typename Kokkos::Random_XorShift1024_Pool::generator_type rand_type; +#endif + + typename ArrayTypes::tdual_ffloat_2d k_cutsq; + typename ArrayTypes::t_ffloat_2d d_cutsq; + + protected: + int eflag,vflag; + int nlocal,neighflag; + double dtinvsqrt; + double boltz,ftm2v; + double special_lj[4]; + + virtual void allocate(); + + Kokkos::DualView k_params; + typename Kokkos::DualView::t_dev_const_um params; + // hardwired to space for MAX_TYPES_STACKPARAMS (12) atom types + params_dpd m_params[MAX_TYPES_STACKPARAMS+1][MAX_TYPES_STACKPARAMS+1]; + + F_FLOAT m_cutsq[MAX_TYPES_STACKPARAMS+1][MAX_TYPES_STACKPARAMS+1]; + typename ArrayTypes::t_x_array_randomread x; + typename ArrayTypes::t_x_array c_x; + typename ArrayTypes::t_v_array_randomread v; + typename ArrayTypes::t_f_array f; + typename ArrayTypes::t_int_1d_randomread type; + typename ArrayTypes::t_float_1d_randomread mass; + double *rmass; + typename AT::t_efloat_1d dpdTheta; + typename AT::t_efloat_1d d_duCond,d_duMech; + HAT::t_efloat_1d h_duCond,h_duMech; + + DAT::tdual_efloat_1d k_eatom; + DAT::tdual_virial_array k_vatom; + typename AT::t_efloat_1d d_eatom; + typename AT::t_virial_array d_vatom; + + typename AT::t_neighbors_2d d_neighbors; + typename AT::t_int_1d_randomread d_ilist; + typename AT::t_int_1d_randomread d_numneigh; + + friend void pair_virial_fdotr_compute(PairDPDfdtEnergyKokkos*); +}; + +} + +#endif +#endif + +/* ERROR/WARNING messages: + +E: Illegal ... command + +Self-explanatory. Check the input script syntax and compare to the +documentation for the command. You can use -echo screen as a +command-line option when running LAMMPS to see the offending line. + +E: Incorrect args for pair coefficients + +Self-explanatory. Check the input script or data file. + +E: Pair dpd/fdt/energy requires ghost atoms store velocity + +Use the communicate vel yes command to enable this. + +E: Pair dpd/fdt/energy requires newton pair on + +Self-explanatory. + +E: All pair coeffs are not set + +All pair coefficients must be set in the data file or by the +pair_coeff command before running a simulation. + +*/ diff --git a/src/KOKKOS/pair_eam_alloy_kokkos.cpp b/src/KOKKOS/pair_eam_alloy_kokkos.cpp index f8b7a69d603e81bfd8fec11dbdbc97a1b1587ce0..aa68d0a05438ad2db1256e62cbb979861be47c47 100644 --- a/src/KOKKOS/pair_eam_alloy_kokkos.cpp +++ b/src/KOKKOS/pair_eam_alloy_kokkos.cpp @@ -101,8 +101,8 @@ void PairEAMAlloyKokkos::compute(int eflag_in, int vflag_in) nmax = atom->nmax; k_rho = DAT::tdual_ffloat_1d("pair:rho",nmax); k_fp = DAT::tdual_ffloat_1d("pair:fp",nmax); - d_rho = k_rho.d_view; - d_fp = k_fp.d_view; + d_rho = k_rho.template view(); + d_fp = k_fp.template view(); h_rho = k_rho.h_view; h_fp = k_fp.h_view; } @@ -322,9 +322,9 @@ void PairEAMAlloyKokkos::file2array() k_type2z2r.template modify(); k_type2z2r.template sync(); - d_type2frho = k_type2frho.d_view; - d_type2rhor = k_type2rhor.d_view; - d_type2z2r = k_type2z2r.d_view; + d_type2frho = k_type2frho.template view(); + d_type2rhor = k_type2rhor.template view(); + d_type2z2r = k_type2z2r.template view(); } /* ---------------------------------------------------------------------- */ @@ -358,9 +358,9 @@ void PairEAMAlloyKokkos::array2spline() k_z2r_spline.template modify(); k_z2r_spline.template sync(); - d_frho_spline = k_frho_spline.d_view; - d_rhor_spline = k_rhor_spline.d_view; - d_z2r_spline = k_z2r_spline.d_view; + d_frho_spline = k_frho_spline.template view(); + d_rhor_spline = k_rhor_spline.template view(); + d_z2r_spline = k_z2r_spline.template view(); } /* ---------------------------------------------------------------------- */ @@ -405,7 +405,7 @@ int PairEAMAlloyKokkos::pack_forward_comm_kokkos(int n, DAT::tdual_i d_sendlist = k_sendlist.view(); iswap = iswap_in; v_buf = buf.view(); - Kokkos::parallel_for(Kokkos::RangePolicy(0,n),*this); + Kokkos::parallel_for(Kokkos::RangePolicy(0,n),*this); return n; } @@ -423,7 +423,7 @@ void PairEAMAlloyKokkos::unpack_forward_comm_kokkos(int n, int first { first = first_in; v_buf = buf.view(); - Kokkos::parallel_for(Kokkos::RangePolicy(0,n),*this); + Kokkos::parallel_for(Kokkos::RangePolicy(0,n),*this); } template diff --git a/src/KOKKOS/pair_eam_alloy_kokkos.h b/src/KOKKOS/pair_eam_alloy_kokkos.h index d8c745b23032e79128f797b912c983933e3def5c..fb07eec32b1253c61d309f60f1010fb31d4441a6 100644 --- a/src/KOKKOS/pair_eam_alloy_kokkos.h +++ b/src/KOKKOS/pair_eam_alloy_kokkos.h @@ -130,15 +130,15 @@ class PairEAMAlloyKokkos : public PairEAM { DAT::tdual_ffloat_1d k_rho; DAT::tdual_ffloat_1d k_fp; - DAT::t_ffloat_1d d_rho; + typename AT::t_ffloat_1d d_rho; typename AT::t_ffloat_1d v_rho; - DAT::t_ffloat_1d d_fp; + typename AT::t_ffloat_1d d_fp; HAT::t_ffloat_1d h_rho; HAT::t_ffloat_1d h_fp; - DAT::t_int_1d_randomread d_type2frho; - DAT::t_int_2d_randomread d_type2rhor; - DAT::t_int_2d_randomread d_type2z2r; + typename AT::t_int_1d_randomread d_type2frho; + typename AT::t_int_2d_randomread d_type2rhor; + typename AT::t_int_2d_randomread d_type2z2r; typedef Kokkos::DualView tdual_ffloat_2d_n7; typedef typename tdual_ffloat_2d_n7::t_dev_const_randomread t_ffloat_2d_n7_randomread; diff --git a/src/KOKKOS/pair_eam_fs_kokkos.cpp b/src/KOKKOS/pair_eam_fs_kokkos.cpp index 57820afb26c9cec2452509979d1179157dcd1e0f..a982f94ec4d607ae2e83d1773ed38a98a082ad09 100644 --- a/src/KOKKOS/pair_eam_fs_kokkos.cpp +++ b/src/KOKKOS/pair_eam_fs_kokkos.cpp @@ -101,8 +101,8 @@ void PairEAMFSKokkos::compute(int eflag_in, int vflag_in) nmax = atom->nmax; k_rho = DAT::tdual_ffloat_1d("pair:rho",nmax); k_fp = DAT::tdual_ffloat_1d("pair:fp",nmax); - d_rho = k_rho.d_view; - d_fp = k_fp.d_view; + d_rho = k_rho.template view(); + d_fp = k_fp.template view(); h_rho = k_rho.h_view; h_fp = k_fp.h_view; } @@ -322,9 +322,9 @@ void PairEAMFSKokkos::file2array() k_type2z2r.template modify(); k_type2z2r.template sync(); - d_type2frho = k_type2frho.d_view; - d_type2rhor = k_type2rhor.d_view; - d_type2z2r = k_type2z2r.d_view; + d_type2frho = k_type2frho.template view(); + d_type2rhor = k_type2rhor.template view(); + d_type2z2r = k_type2z2r.template view(); } /* ---------------------------------------------------------------------- */ @@ -358,9 +358,9 @@ void PairEAMFSKokkos::array2spline() k_z2r_spline.template modify(); k_z2r_spline.template sync(); - d_frho_spline = k_frho_spline.d_view; - d_rhor_spline = k_rhor_spline.d_view; - d_z2r_spline = k_z2r_spline.d_view; + d_frho_spline = k_frho_spline.template view(); + d_rhor_spline = k_rhor_spline.template view(); + d_z2r_spline = k_z2r_spline.template view(); } /* ---------------------------------------------------------------------- */ @@ -405,7 +405,7 @@ int PairEAMFSKokkos::pack_forward_comm_kokkos(int n, DAT::tdual_int_ d_sendlist = k_sendlist.view(); iswap = iswap_in; v_buf = buf.view(); - Kokkos::parallel_for(Kokkos::RangePolicy(0,n),*this); + Kokkos::parallel_for(Kokkos::RangePolicy(0,n),*this); return n; } @@ -423,7 +423,7 @@ void PairEAMFSKokkos::unpack_forward_comm_kokkos(int n, int first_in { first = first_in; v_buf = buf.view(); - Kokkos::parallel_for(Kokkos::RangePolicy(0,n),*this); + Kokkos::parallel_for(Kokkos::RangePolicy(0,n),*this); } template diff --git a/src/KOKKOS/pair_eam_fs_kokkos.h b/src/KOKKOS/pair_eam_fs_kokkos.h index 40375af066d3208ce7ca41a491c11ad7c4f91efa..d71ec2b8870f103ae1f839d5a90ff791c367afaf 100644 --- a/src/KOKKOS/pair_eam_fs_kokkos.h +++ b/src/KOKKOS/pair_eam_fs_kokkos.h @@ -130,15 +130,15 @@ class PairEAMFSKokkos : public PairEAM { DAT::tdual_ffloat_1d k_rho; DAT::tdual_ffloat_1d k_fp; - DAT::t_ffloat_1d d_rho; + typename AT::t_ffloat_1d d_rho; typename AT::t_ffloat_1d v_rho; - DAT::t_ffloat_1d d_fp; + typename AT::t_ffloat_1d d_fp; HAT::t_ffloat_1d h_rho; HAT::t_ffloat_1d h_fp; - DAT::t_int_1d_randomread d_type2frho; - DAT::t_int_2d_randomread d_type2rhor; - DAT::t_int_2d_randomread d_type2z2r; + typename AT::t_int_1d_randomread d_type2frho; + typename AT::t_int_2d_randomread d_type2rhor; + typename AT::t_int_2d_randomread d_type2z2r; typedef Kokkos::DualView tdual_ffloat_2d_n7; typedef typename tdual_ffloat_2d_n7::t_dev_const_randomread t_ffloat_2d_n7_randomread; diff --git a/src/KOKKOS/pair_eam_kokkos.cpp b/src/KOKKOS/pair_eam_kokkos.cpp index e84866994781baf23bc807a172068456771e4721..8ac92a1766c62eedbaf37663d5ba1092bbab4599 100644 --- a/src/KOKKOS/pair_eam_kokkos.cpp +++ b/src/KOKKOS/pair_eam_kokkos.cpp @@ -96,8 +96,8 @@ void PairEAMKokkos::compute(int eflag_in, int vflag_in) nmax = atom->nmax; k_rho = DAT::tdual_ffloat_1d("pair:rho",nmax); k_fp = DAT::tdual_ffloat_1d("pair:fp",nmax); - d_rho = k_rho.d_view; - d_fp = k_fp.d_view; + d_rho = k_rho.template view(); + d_fp = k_fp.template view(); h_rho = k_rho.h_view; h_fp = k_fp.h_view; } @@ -322,9 +322,9 @@ void PairEAMKokkos::file2array() k_type2z2r.template modify(); k_type2z2r.template sync(); - d_type2frho = k_type2frho.d_view; - d_type2rhor = k_type2rhor.d_view; - d_type2z2r = k_type2z2r.d_view; + d_type2frho = k_type2frho.template view(); + d_type2rhor = k_type2rhor.template view(); + d_type2z2r = k_type2z2r.template view(); } /* ---------------------------------------------------------------------- */ @@ -358,9 +358,9 @@ void PairEAMKokkos::array2spline() k_z2r_spline.template modify(); k_z2r_spline.template sync(); - d_frho_spline = k_frho_spline.d_view; - d_rhor_spline = k_rhor_spline.d_view; - d_z2r_spline = k_z2r_spline.d_view; + d_frho_spline = k_frho_spline.template view(); + d_rhor_spline = k_rhor_spline.template view(); + d_z2r_spline = k_z2r_spline.template view(); } /* ---------------------------------------------------------------------- */ @@ -405,7 +405,7 @@ int PairEAMKokkos::pack_forward_comm_kokkos(int n, DAT::tdual_int_2d d_sendlist = k_sendlist.view(); iswap = iswap_in; v_buf = buf.view(); - Kokkos::parallel_for(Kokkos::RangePolicy(0,n),*this); + Kokkos::parallel_for(Kokkos::RangePolicy(0,n),*this); return n; } @@ -423,7 +423,7 @@ void PairEAMKokkos::unpack_forward_comm_kokkos(int n, int first_in, { first = first_in; v_buf = buf.view(); - Kokkos::parallel_for(Kokkos::RangePolicy(0,n),*this); + Kokkos::parallel_for(Kokkos::RangePolicy(0,n),*this); } template diff --git a/src/KOKKOS/pair_eam_kokkos.h b/src/KOKKOS/pair_eam_kokkos.h index 229b16471d341ef638e5d6cbea3fa2dbef9ecda0..856cc51f7709f24cec67df5d0e8de930f4796c69 100644 --- a/src/KOKKOS/pair_eam_kokkos.h +++ b/src/KOKKOS/pair_eam_kokkos.h @@ -127,15 +127,15 @@ class PairEAMKokkos : public PairEAM { DAT::tdual_ffloat_1d k_rho; DAT::tdual_ffloat_1d k_fp; - DAT::t_ffloat_1d d_rho; + typename AT::t_ffloat_1d d_rho; typename AT::t_ffloat_1d v_rho; - DAT::t_ffloat_1d d_fp; + typename AT::t_ffloat_1d d_fp; HAT::t_ffloat_1d h_rho; HAT::t_ffloat_1d h_fp; - DAT::t_int_1d_randomread d_type2frho; - DAT::t_int_2d_randomread d_type2rhor; - DAT::t_int_2d_randomread d_type2z2r; + typename AT::t_int_1d_randomread d_type2frho; + typename AT::t_int_2d_randomread d_type2rhor; + typename AT::t_int_2d_randomread d_type2z2r; typedef Kokkos::DualView tdual_ffloat_2d_n7; typedef typename tdual_ffloat_2d_n7::t_dev_const_randomread t_ffloat_2d_n7_randomread; diff --git a/src/KOKKOS/pair_exp6_rx_kokkos.cpp b/src/KOKKOS/pair_exp6_rx_kokkos.cpp new file mode 100644 index 0000000000000000000000000000000000000000..8d65be23af00e7c37e4ce2ad0f1f781a822fc6c4 --- /dev/null +++ b/src/KOKKOS/pair_exp6_rx_kokkos.cpp @@ -0,0 +1,2644 @@ +/* ---------------------------------------------------------------------- + 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: Stan Moore (Sandia) +------------------------------------------------------------------------- */ + +#include +#include +#include +#include +#include "pair_exp6_rx_kokkos.h" +#include "atom.h" +#include "comm.h" +#include "force.h" +#include "neigh_list.h" +#include "math_const.h" +#include "math_special_kokkos.h" +#include "memory.h" +#include "error.h" +#include "modify.h" +#include "fix.h" +#include +#include "atom_masks.h" +#include "neigh_request.h" + +using namespace LAMMPS_NS; +using namespace MathConst; +using namespace MathSpecialKokkos; + +#define MAXLINE 1024 +#define DELTA 4 + +#ifdef DBL_EPSILON + #define MY_EPSILON (10.0*DBL_EPSILON) +#else + #define MY_EPSILON (10.0*2.220446049250313e-16) +#endif + +#define oneFluidApproxParameter (-1) +#define isOneFluidApprox(_site) ( (_site) == oneFluidApproxParameter ) + +#define exp6PotentialType (1) +#define isExp6PotentialType(_type) ( (_type) == exp6PotentialType ) + +namespace /* anonymous */ +{ + +//typedef double TimerType; +//TimerType getTimeStamp(void) { return MPI_Wtime(); } +//double getElapsedTime( const TimerType &t0, const TimerType &t1) { return t1-t0; } + +typedef struct timespec TimerType; +TimerType getTimeStamp(void) { TimerType tick; clock_gettime( CLOCK_MONOTONIC, &tick); return tick; } +double getElapsedTime( const TimerType &t0, const TimerType &t1) +{ + return (t1.tv_sec - t0.tv_sec) + 1e-9*(t1.tv_nsec - t0.tv_nsec); +} + +} // end namespace + +/* ---------------------------------------------------------------------- */ + +template +PairExp6rxKokkos::PairExp6rxKokkos(LAMMPS *lmp) : PairExp6rx(lmp) +{ + atomKK = (AtomKokkos *) atom; + execution_space = ExecutionSpaceFromDevice::space; + datamask_read = EMPTY_MASK; + datamask_modify = EMPTY_MASK; + + k_error_flag = DAT::tdual_int_scalar("pair:error_flag"); +} + +/* ---------------------------------------------------------------------- */ + +template +PairExp6rxKokkos::~PairExp6rxKokkos() +{ + if (copymode) return; + + memory->destroy_kokkos(k_eatom,eatom); + memory->destroy_kokkos(k_vatom,vatom); + + memory->destroy_kokkos(k_cutsq,cutsq); + + for (int i=0; i < nparams; ++i) { + delete[] params[i].name; + delete[] params[i].potential; + } + memory->destroy_kokkos(k_params,params); + + memory->destroy_kokkos(k_mol2param,mol2param); +} + +/* ---------------------------------------------------------------------- */ + +template +void PairExp6rxKokkos::init_style() +{ + PairExp6rx::init_style(); + + // irequest = neigh request made by parent class + + neighflag = lmp->kokkos->neighflag; + int irequest = neighbor->nrequest - 1; + + neighbor->requests[irequest]-> + kokkos_host = Kokkos::Impl::is_same::value && + !Kokkos::Impl::is_same::value; + neighbor->requests[irequest]-> + kokkos_device = Kokkos::Impl::is_same::value; + + if (neighflag == FULL) { + neighbor->requests[irequest]->full = 1; + neighbor->requests[irequest]->half = 0; + } else if (neighflag == HALF || neighflag == HALFTHREAD) { + neighbor->requests[irequest]->full = 0; + neighbor->requests[irequest]->half = 1; + } else { + error->all(FLERR,"Cannot use chosen neighbor list style with exp6/rx/kk"); + } +} + +/* ---------------------------------------------------------------------- */ + +template +void PairExp6rxKokkos::compute(int eflag_in, int vflag_in) +{ + TimerType t_start = getTimeStamp(); + + copymode = 1; + + eflag = eflag_in; + vflag = vflag_in; + + if (neighflag == FULL) no_virial_fdotr_compute = 1; + if (eflag || vflag) ev_setup(eflag,vflag,0); + else evflag = vflag_fdotr = 0; + + // reallocate per-atom arrays if necessary + + if (eflag_atom) { + memory->destroy_kokkos(k_eatom,eatom); + memory->create_kokkos(k_eatom,eatom,maxeatom,"pair:eatom"); + d_eatom = k_eatom.template view(); + } + if (vflag_atom) { + memory->destroy_kokkos(k_vatom,vatom); + memory->create_kokkos(k_vatom,vatom,maxvatom,6,"pair:vatom"); + d_vatom = k_vatom.template view(); + } + + x = atomKK->k_x.view(); + f = atomKK->k_f.view(); + type = atomKK->k_type.view(); + uCG = atomKK->k_uCG.view(); + uCGnew = atomKK->k_uCGnew.view(); + dvector = atomKK->k_dvector.view(); + nlocal = atom->nlocal; + special_lj[0] = force->special_lj[0]; + special_lj[1] = force->special_lj[1]; + special_lj[2] = force->special_lj[2]; + special_lj[3] = force->special_lj[3]; + newton_pair = force->newton_pair; + + atomKK->sync(execution_space,X_MASK | F_MASK | TYPE_MASK | ENERGY_MASK | VIRIAL_MASK | UCG_MASK | UCGNEW_MASK | DVECTOR_MASK); + if (evflag) atomKK->modified(execution_space,F_MASK | ENERGY_MASK | VIRIAL_MASK | UCG_MASK | UCGNEW_MASK); + else atomKK->modified(execution_space,F_MASK | UCG_MASK | UCGNEW_MASK); + k_cutsq.template sync(); + + // Initialize the Exp6 parameter data for both the local + // and ghost atoms. Make the parameter data persistent + // and exchange like any other atom property later. + + TimerType t_mix_start = getTimeStamp(); + { + const int np_total = nlocal + atom->nghost; + + if (np_total > PairExp6ParamData.epsilon1.dimension_0()) { + PairExp6ParamData.epsilon1 = typename AT::t_float_1d("PairExp6ParamData.epsilon1" ,np_total); + PairExp6ParamData.alpha1 = typename AT::t_float_1d("PairExp6ParamData.alpha1" ,np_total); + PairExp6ParamData.rm1 = typename AT::t_float_1d("PairExp6ParamData.rm1" ,np_total); + PairExp6ParamData.mixWtSite1 = typename AT::t_float_1d("PairExp6ParamData.mixWtSite1" ,np_total); + PairExp6ParamData.epsilon2 = typename AT::t_float_1d("PairExp6ParamData.epsilon2" ,np_total); + PairExp6ParamData.alpha2 = typename AT::t_float_1d("PairExp6ParamData.alpha2" ,np_total); + PairExp6ParamData.rm2 = typename AT::t_float_1d("PairExp6ParamData.rm2" ,np_total); + PairExp6ParamData.mixWtSite2 = typename AT::t_float_1d("PairExp6ParamData.mixWtSite2" ,np_total); + PairExp6ParamData.epsilonOld1 = typename AT::t_float_1d("PairExp6ParamData.epsilonOld1" ,np_total); + PairExp6ParamData.alphaOld1 = typename AT::t_float_1d("PairExp6ParamData.alphaOld1" ,np_total); + PairExp6ParamData.rmOld1 = typename AT::t_float_1d("PairExp6ParamData.rmOld1" ,np_total); + PairExp6ParamData.mixWtSite1old = typename AT::t_float_1d("PairExp6ParamData.mixWtSite1old",np_total); + PairExp6ParamData.epsilonOld2 = typename AT::t_float_1d("PairExp6ParamData.epsilonOld2" ,np_total); + PairExp6ParamData.alphaOld2 = typename AT::t_float_1d("PairExp6ParamData.alphaOld2" ,np_total); + PairExp6ParamData.rmOld2 = typename AT::t_float_1d("PairExp6ParamData.rmOld2" ,np_total); + PairExp6ParamData.mixWtSite2old = typename AT::t_float_1d("PairExp6ParamData.mixWtSite2old",np_total); + + PairExp6ParamDataVect.epsilon = typename AT::t_float_1d("PairExp6ParamDataVect.epsilon" ,np_total); + PairExp6ParamDataVect.rm3 = typename AT::t_float_1d("PairExp6ParamDataVect.rm3" ,np_total); + PairExp6ParamDataVect.alpha = typename AT::t_float_1d("PairExp6ParamDataVect.alpha" ,np_total); + PairExp6ParamDataVect.xMolei = typename AT::t_float_1d("PairExp6ParamDataVect.xMolei" ,np_total); + PairExp6ParamDataVect.epsilon_old = typename AT::t_float_1d("PairExp6ParamDataVect.epsilon_old" ,np_total); + PairExp6ParamDataVect.rm3_old = typename AT::t_float_1d("PairExp6ParamDataVect.rm3_old" ,np_total); + PairExp6ParamDataVect.alpha_old = typename AT::t_float_1d("PairExp6ParamDataVect.alpha_old" ,np_total); + PairExp6ParamDataVect.xMolei_old = typename AT::t_float_1d("PairExp6ParamDataVect.xMolei_old" ,np_total); + PairExp6ParamDataVect.fractionOFA = typename AT::t_float_1d("PairExp6ParamDataVect.fractionOFA" ,np_total); + PairExp6ParamDataVect.fraction1 = typename AT::t_float_1d("PairExp6ParamDataVect.fraction1" ,np_total); + PairExp6ParamDataVect.fraction2 = typename AT::t_float_1d("PairExp6ParamDataVect.fraction2" ,np_total); + PairExp6ParamDataVect.nMoleculesOFA = typename AT::t_float_1d("PairExp6ParamDataVect.nMoleculesOFA" ,np_total); + PairExp6ParamDataVect.nMolecules1 = typename AT::t_float_1d("PairExp6ParamDataVect.nMolecules1" ,np_total); + PairExp6ParamDataVect.nMolecules2 = typename AT::t_float_1d("PairExp6ParamDataVect.nMolecules2" ,np_total); + PairExp6ParamDataVect.nTotal = typename AT::t_float_1d("PairExp6ParamDataVect.nTotal" ,np_total); + PairExp6ParamDataVect.fractionOFAold = typename AT::t_float_1d("PairExp6ParamDataVect.fractionOFAold" ,np_total); + PairExp6ParamDataVect.fractionOld1 = typename AT::t_float_1d("PairExp6ParamDataVect.fractionOld1" ,np_total); + PairExp6ParamDataVect.fractionOld2 = typename AT::t_float_1d("PairExp6ParamDataVect.fractionOld2" ,np_total); + PairExp6ParamDataVect.nMoleculesOFAold = typename AT::t_float_1d("PairExp6ParamDataVect.nMoleculesOFAold",np_total); + PairExp6ParamDataVect.nMoleculesOld1 = typename AT::t_float_1d("PairExp6ParamDataVect.nMoleculesOld1" ,np_total); + PairExp6ParamDataVect.nMoleculesOld2 = typename AT::t_float_1d("PairExp6ParamDataVect.nMoleculesOld2" ,np_total); + PairExp6ParamDataVect.nTotalold = typename AT::t_float_1d("PairExp6ParamDataVect.nTotalold" ,np_total); + } else + Kokkos::parallel_for(Kokkos::RangePolicy(0,np_total),*this); + +#ifdef KOKKOS_HAVE_CUDA + Kokkos::parallel_for(Kokkos::RangePolicy(0,np_total),*this); +#else + int errorFlag = 0; + getMixingWeightsVect (np_total, errorFlag, PairExp6ParamData.epsilon1, + PairExp6ParamData.alpha1, + PairExp6ParamData.rm1, + PairExp6ParamData.mixWtSite1, + PairExp6ParamData.epsilon2, + PairExp6ParamData.alpha2, + PairExp6ParamData.rm2, + PairExp6ParamData.mixWtSite2, + PairExp6ParamData.epsilonOld1, + PairExp6ParamData.alphaOld1, + PairExp6ParamData.rmOld1, + PairExp6ParamData.mixWtSite1old, + PairExp6ParamData.epsilonOld2, + PairExp6ParamData.alphaOld2, + PairExp6ParamData.rmOld2, + PairExp6ParamData.mixWtSite2old); + if (errorFlag == 1) + error->all(FLERR,"The number of molecules in CG particle is less than 10*DBL_EPSILON."); + else if (errorFlag == 2) + error->all(FLERR,"Computed fraction less than -10*DBL_EPSILON"); +#endif + } + TimerType t_mix_stop = getTimeStamp(); + + k_error_flag.template modify(); + k_error_flag.template sync(); + if (k_error_flag.h_view() == 1) + error->all(FLERR,"The number of molecules in CG particle is less than 10*DBL_EPSILON."); + else if (k_error_flag.h_view() == 2) + error->all(FLERR,"Computed fraction less than -10*DBL_EPSILON"); + + int inum = list->inum; + NeighListKokkos* k_list = static_cast*>(list); + d_numneigh = k_list->d_numneigh; + d_neighbors = k_list->d_neighbors; + d_ilist = k_list->d_ilist; + + // loop over neighbors of my atoms + + EV_FLOAT ev; + +#ifdef KOKKOS_HAVE_CUDA // Use atomics + + if (neighflag == HALF) { + if (newton_pair) { + if (evflag) Kokkos::parallel_reduce(Kokkos::RangePolicy >(0,inum),*this,ev); + else Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + } else { + if (evflag) Kokkos::parallel_reduce(Kokkos::RangePolicy >(0,inum),*this,ev); + else Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + } + } else if (neighflag == HALFTHREAD) { + if (newton_pair) { + if (evflag) Kokkos::parallel_reduce(Kokkos::RangePolicy >(0,inum),*this,ev); + else Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + } else { + if (evflag) Kokkos::parallel_reduce(Kokkos::RangePolicy >(0,inum),*this,ev); + else Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + } + } else if (neighflag == FULL) { + if (newton_pair) { + if (evflag) Kokkos::parallel_reduce(Kokkos::RangePolicy >(0,inum),*this,ev); + else Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + } else { + if (evflag) Kokkos::parallel_reduce(Kokkos::RangePolicy >(0,inum),*this,ev); + else Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + } + } + +#else // No atomics + + num_threads = lmp->kokkos->num_threads; + int nmax = f.dimension_0(); + if (nmax > t_f.dimension_1()) { + t_f = t_f_array_thread("pair_exp6_rx:t_f",num_threads,nmax); + t_uCG = t_efloat_1d_thread("pair_exp6_rx:t_uCG",num_threads,nmax); + t_uCGnew = t_efloat_1d_thread("pair_exp6_rx:t_UCGnew",num_threads,nmax); + } + + Kokkos::parallel_for(Kokkos::RangePolicy(0,nmax),*this); + + if (neighflag == HALF) { + if (newton_pair) { + if (evflag) Kokkos::parallel_reduce(Kokkos::RangePolicy >(0,inum),*this,ev); + else Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + } else { + if (evflag) Kokkos::parallel_reduce(Kokkos::RangePolicy >(0,inum),*this,ev); + else Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + } + } else if (neighflag == HALFTHREAD) { + if (newton_pair) { + if (evflag) Kokkos::parallel_reduce(Kokkos::RangePolicy >(0,inum),*this,ev); + else Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + } else { + if (evflag) Kokkos::parallel_reduce(Kokkos::RangePolicy >(0,inum),*this,ev); + else Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + } + } else if (neighflag == FULL) { + if (newton_pair) { + if (evflag) Kokkos::parallel_reduce(Kokkos::RangePolicy >(0,inum),*this,ev); + else Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + } else { + if (evflag) Kokkos::parallel_reduce(Kokkos::RangePolicy >(0,inum),*this,ev); + else Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + } + } + + Kokkos::parallel_for(Kokkos::RangePolicy(0,nmax),*this); + +#endif + + k_error_flag.template modify(); + k_error_flag.template sync(); + if (k_error_flag.h_view()) + error->all(FLERR,"alpha_ij is 6.0 in pair exp6"); + + if (eflag_global) eng_vdwl += ev.evdwl; + if (vflag_global) { + virial[0] += ev.v[0]; + virial[1] += ev.v[1]; + virial[2] += ev.v[2]; + virial[3] += ev.v[3]; + virial[4] += ev.v[4]; + virial[5] += ev.v[5]; + } + + if (vflag_fdotr) pair_virial_fdotr_compute(this); + + if (eflag_atom) { + k_eatom.template modify(); + k_eatom.template sync(); + } + + if (vflag_atom) { + k_vatom.template modify(); + k_vatom.template sync(); + } + + copymode = 0; + + //TimerType t_stop = getTimeStamp(); + //printf("PairExp6rxKokkos::compute %f %f\n", getElapsedTime(t_start, t_stop), getElapsedTime(t_mix_start, t_mix_stop)); +} + +template +KOKKOS_INLINE_FUNCTION +void PairExp6rxKokkos::operator()(TagPairExp6rxZeroMixingWeights, const int &i) const { + PairExp6ParamData.epsilon1[i] = 0.0; + PairExp6ParamData.alpha1[i] = 0.0; + PairExp6ParamData.rm1[i] = 0.0; + PairExp6ParamData.mixWtSite1[i] = 0.0; + PairExp6ParamData.epsilon2[i] = 0.0; + PairExp6ParamData.alpha2[i] = 0.0; + PairExp6ParamData.rm2[i] = 0.0; + PairExp6ParamData.mixWtSite2[i] = 0.0; + PairExp6ParamData.epsilonOld1[i] = 0.0; + PairExp6ParamData.alphaOld1[i] = 0.0; + PairExp6ParamData.rmOld1[i] = 0.0; + PairExp6ParamData.mixWtSite1old[i] = 0.0; + PairExp6ParamData.epsilonOld2[i] = 0.0; + PairExp6ParamData.alphaOld2[i] = 0.0; + PairExp6ParamData.rmOld2[i] = 0.0; + PairExp6ParamData.mixWtSite2old[i] = 0.0; +} + +template +KOKKOS_INLINE_FUNCTION +void PairExp6rxKokkos::operator()(TagPairExp6rxgetMixingWeights, const int &i) const { + getMixingWeights (i, PairExp6ParamData.epsilon1[i], + PairExp6ParamData.alpha1[i], + PairExp6ParamData.rm1[i], + PairExp6ParamData.mixWtSite1[i], + PairExp6ParamData.epsilon2[i], + PairExp6ParamData.alpha2[i], + PairExp6ParamData.rm2[i], + PairExp6ParamData.mixWtSite2[i], + PairExp6ParamData.epsilonOld1[i], + PairExp6ParamData.alphaOld1[i], + PairExp6ParamData.rmOld1[i], + PairExp6ParamData.mixWtSite1old[i], + PairExp6ParamData.epsilonOld2[i], + PairExp6ParamData.alphaOld2[i], + PairExp6ParamData.rmOld2[i], + PairExp6ParamData.mixWtSite2old[i]); +} + +template +template +KOKKOS_INLINE_FUNCTION +void PairExp6rxKokkos::operator()(TagPairExp6rxCompute, const int &ii, EV_FLOAT& ev) const { + + { + const bool one_type = (ntypes == 1); + if (isite1 == isite2) + if (one_type) + this->vectorized_operator(ii, ev); + else + this->vectorized_operator(ii, ev); + else + if (one_type) + this->vectorized_operator(ii, ev); + else + this->vectorized_operator(ii, ev); + return; + } + + // These arrays are atomic for Half/Thread neighbor style + Kokkos::View::value> > a_f = f; + Kokkos::View::value> > a_uCG = uCG; + Kokkos::View::value> > a_uCGnew = uCGnew; + + int i,jj,jnum,itype,jtype; + double xtmp,ytmp,ztmp,delx,dely,delz,evdwl,evdwlOld,fpair; + double rsq,r2inv,r6inv,forceExp6,factor_lj; + double rCut,rCutInv,rCut2inv,rCut6inv,rCutExp,urc,durc; + double rm2ij,rm6ij; + double r,rexp; + + double alphaOld12_ij, rmOld12_ij, epsilonOld12_ij; + double alphaOld21_ij, rmOld21_ij, epsilonOld21_ij; + double alpha12_ij, rm12_ij, epsilon12_ij; + double alpha21_ij, rm21_ij, epsilon21_ij; + double rminv, buck1, buck2; + double epsilonOld1_i,alphaOld1_i,rmOld1_i; + double epsilonOld1_j,alphaOld1_j,rmOld1_j; + double epsilonOld2_i,alphaOld2_i,rmOld2_i; + double epsilonOld2_j,alphaOld2_j,rmOld2_j; + double epsilon1_i,alpha1_i,rm1_i; + double epsilon1_j,alpha1_j,rm1_j; + double epsilon2_i,alpha2_i,rm2_i; + double epsilon2_j,alpha2_j,rm2_j; + double evdwlOldEXP6_12, evdwlOldEXP6_21, fpairOldEXP6_12, fpairOldEXP6_21; + double evdwlEXP6_12, evdwlEXP6_21; + double mixWtSite1old_i, mixWtSite1old_j; + double mixWtSite2old_i, mixWtSite2old_j; + double mixWtSite1_i, mixWtSite1_j; + double mixWtSite2_i, mixWtSite2_j; + + const int nRep = 12; + const double shift = 1.05; + double rin1, aRep, uin1, win1, uin1rep, rin1exp, rin6, rin6inv; + + evdwlOld = 0.0; + evdwl = 0.0; + + i = d_ilist[ii]; + xtmp = x(i,0); + ytmp = x(i,1); + ztmp = x(i,2); + itype = type[i]; + jnum = d_numneigh[i]; + + double fx_i = 0.0; + double fy_i = 0.0; + double fz_i = 0.0; + double uCG_i = 0.0; + double uCGnew_i = 0.0; + + { + epsilon1_i = PairExp6ParamData.epsilon1[i]; + alpha1_i = PairExp6ParamData.alpha1[i]; + rm1_i = PairExp6ParamData.rm1[i]; + mixWtSite1_i = PairExp6ParamData.mixWtSite1[i]; + epsilon2_i = PairExp6ParamData.epsilon2[i]; + alpha2_i = PairExp6ParamData.alpha2[i]; + rm2_i = PairExp6ParamData.rm2[i]; + mixWtSite2_i = PairExp6ParamData.mixWtSite2[i]; + epsilonOld1_i = PairExp6ParamData.epsilonOld1[i]; + alphaOld1_i = PairExp6ParamData.alphaOld1[i]; + rmOld1_i = PairExp6ParamData.rmOld1[i]; + mixWtSite1old_i = PairExp6ParamData.mixWtSite1old[i]; + epsilonOld2_i = PairExp6ParamData.epsilonOld2[i]; + alphaOld2_i = PairExp6ParamData.alphaOld2[i]; + rmOld2_i = PairExp6ParamData.rmOld2[i]; + mixWtSite2old_i = PairExp6ParamData.mixWtSite2old[i]; + } + + for (jj = 0; jj < jnum; jj++) { + int j = d_neighbors(i,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 < d_cutsq(itype,jtype)) { // optimize + r2inv = 1.0/rsq; + r6inv = r2inv*r2inv*r2inv; + + r = sqrt(rsq); + rCut2inv = 1.0/d_cutsq(itype,jtype); + rCut6inv = rCut2inv*rCut2inv*rCut2inv; + rCut = sqrt(d_cutsq(itype,jtype)); + rCutInv = 1.0/rCut; + + // + // A. Compute the exp-6 potential + // + + // A1. Get alpha, epsilon and rm for particle j + + { + epsilon1_j = PairExp6ParamData.epsilon1[j]; + alpha1_j = PairExp6ParamData.alpha1[j]; + rm1_j = PairExp6ParamData.rm1[j]; + mixWtSite1_j = PairExp6ParamData.mixWtSite1[j]; + epsilon2_j = PairExp6ParamData.epsilon2[j]; + alpha2_j = PairExp6ParamData.alpha2[j]; + rm2_j = PairExp6ParamData.rm2[j]; + mixWtSite2_j = PairExp6ParamData.mixWtSite2[j]; + epsilonOld1_j = PairExp6ParamData.epsilonOld1[j]; + alphaOld1_j = PairExp6ParamData.alphaOld1[j]; + rmOld1_j = PairExp6ParamData.rmOld1[j]; + mixWtSite1old_j = PairExp6ParamData.mixWtSite1old[j]; + epsilonOld2_j = PairExp6ParamData.epsilonOld2[j]; + alphaOld2_j = PairExp6ParamData.alphaOld2[j]; + rmOld2_j = PairExp6ParamData.rmOld2[j]; + mixWtSite2old_j = PairExp6ParamData.mixWtSite2old[j]; + } + + // A2. Apply Lorentz-Berthelot mixing rules for the i-j pair + alphaOld12_ij = sqrt(alphaOld1_i*alphaOld2_j); + rmOld12_ij = 0.5*(rmOld1_i + rmOld2_j); + epsilonOld12_ij = sqrt(epsilonOld1_i*epsilonOld2_j); + alphaOld21_ij = sqrt(alphaOld2_i*alphaOld1_j); + rmOld21_ij = 0.5*(rmOld2_i + rmOld1_j); + epsilonOld21_ij = sqrt(epsilonOld2_i*epsilonOld1_j); + + alpha12_ij = sqrt(alpha1_i*alpha2_j); + rm12_ij = 0.5*(rm1_i + rm2_j); + epsilon12_ij = sqrt(epsilon1_i*epsilon2_j); + alpha21_ij = sqrt(alpha2_i*alpha1_j); + rm21_ij = 0.5*(rm2_i + rm1_j); + epsilon21_ij = sqrt(epsilon2_i*epsilon1_j); + + evdwlOldEXP6_12 = 0.0; + evdwlOldEXP6_21 = 0.0; + evdwlEXP6_12 = 0.0; + evdwlEXP6_21 = 0.0; + fpairOldEXP6_12 = 0.0; + fpairOldEXP6_21 = 0.0; + + if(rmOld12_ij!=0.0 && rmOld21_ij!=0.0){ + if(alphaOld21_ij == 6.0 || alphaOld12_ij == 6.0) + k_error_flag.template view()() = 1; + + // A3. Compute some convenient quantities for evaluating the force + rminv = 1.0/rmOld12_ij; + buck1 = epsilonOld12_ij / (alphaOld12_ij - 6.0); + rexp = expValue(alphaOld12_ij*(1.0-r*rminv)); + rm2ij = rmOld12_ij*rmOld12_ij; + rm6ij = rm2ij*rm2ij*rm2ij; + + // Compute the shifted potential + rCutExp = expValue(alphaOld12_ij*(1.0-rCut*rminv)); + buck2 = 6.0*alphaOld12_ij; + urc = buck1*(6.0*rCutExp - alphaOld12_ij*rm6ij*rCut6inv); + durc = -buck1*buck2*(rCutExp* rminv - rCutInv*rm6ij*rCut6inv); + rin1 = shift*rmOld12_ij*func_rin(alphaOld12_ij); + if(r < rin1){ + rin6 = rin1*rin1*rin1*rin1*rin1*rin1; + rin6inv = 1.0/rin6; + + rin1exp = expValue(alphaOld12_ij*(1.0-rin1*rminv)); + + uin1 = buck1*(6.0*rin1exp - alphaOld12_ij*rm6ij*rin6inv) - urc - durc*(rin1-rCut); + + win1 = buck1*buck2*(rin1*rin1exp*rminv - rm6ij*rin6inv) + rin1*durc; + + aRep = win1*powint(rin1,nRep)/nRep; + + uin1rep = aRep/powint(rin1,nRep); + + forceExp6 = double(nRep)*aRep/powint(r,nRep); + fpairOldEXP6_12 = factor_lj*forceExp6*r2inv; + + evdwlOldEXP6_12 = uin1 - uin1rep + aRep/powint(r,nRep); + } else { + forceExp6 = buck1*buck2*(r*rexp*rminv - rm6ij*r6inv) + r*durc; + fpairOldEXP6_12 = factor_lj*forceExp6*r2inv; + + evdwlOldEXP6_12 = buck1*(6.0*rexp - alphaOld12_ij*rm6ij*r6inv) - urc - durc*(r-rCut); + } + + // A3. Compute some convenient quantities for evaluating the force + rminv = 1.0/rmOld21_ij; + buck1 = epsilonOld21_ij / (alphaOld21_ij - 6.0); + buck2 = 6.0*alphaOld21_ij; + rexp = expValue(alphaOld21_ij*(1.0-r*rminv)); + rm2ij = rmOld21_ij*rmOld21_ij; + rm6ij = rm2ij*rm2ij*rm2ij; + + // Compute the shifted potential + rCutExp = expValue(alphaOld21_ij*(1.0-rCut*rminv)); + buck2 = 6.0*alphaOld21_ij; + urc = buck1*(6.0*rCutExp - alphaOld21_ij*rm6ij*rCut6inv); + durc = -buck1*buck2*(rCutExp* rminv - rCutInv*rm6ij*rCut6inv); + rin1 = shift*rmOld21_ij*func_rin(alphaOld21_ij); + + if(r < rin1){ + rin6 = rin1*rin1*rin1*rin1*rin1*rin1; + rin6inv = 1.0/rin6; + + rin1exp = expValue(alphaOld21_ij*(1.0-rin1*rminv)); + + uin1 = buck1*(6.0*rin1exp - alphaOld21_ij*rm6ij*rin6inv) - urc - durc*(rin1-rCut); + + win1 = buck1*buck2*(rin1*rin1exp*rminv - rm6ij*rin6inv) + rin1*durc; + + aRep = win1*powint(rin1,nRep)/nRep; + + uin1rep = aRep/powint(rin1,nRep); + + forceExp6 = double(nRep)*aRep/powint(r,nRep); + fpairOldEXP6_21 = factor_lj*forceExp6*r2inv; + + evdwlOldEXP6_21 = uin1 - uin1rep + aRep/powint(r,nRep); + } else { + forceExp6 = buck1*buck2*(r*rexp*rminv - rm6ij*r6inv) + r*durc; + fpairOldEXP6_21 = factor_lj*forceExp6*r2inv; + + evdwlOldEXP6_21 = buck1*(6.0*rexp - alphaOld21_ij*rm6ij*r6inv) - urc - durc*(r-rCut); + } + + if (isite1 == isite2) + evdwlOld = sqrt(mixWtSite1old_i*mixWtSite2old_j)*evdwlOldEXP6_12; + else + evdwlOld = sqrt(mixWtSite1old_i*mixWtSite2old_j)*evdwlOldEXP6_12 + sqrt(mixWtSite2old_i*mixWtSite1old_j)*evdwlOldEXP6_21; + + evdwlOld *= factor_lj; + + uCG_i += 0.5*evdwlOld; + if ((NEIGHFLAG==HALF || NEIGHFLAG==HALFTHREAD) && (NEWTON_PAIR || j < nlocal)) + a_uCG[j] += 0.5*evdwlOld; + } + + if(rm12_ij!=0.0 && rm21_ij!=0.0){ + if(alpha21_ij == 6.0 || alpha12_ij == 6.0) + k_error_flag.template view()() = 1; + + // A3. Compute some convenient quantities for evaluating the force + rminv = 1.0/rm12_ij; + buck1 = epsilon12_ij / (alpha12_ij - 6.0); + buck2 = 6.0*alpha12_ij; + rexp = expValue(alpha12_ij*(1.0-r*rminv)); + rm2ij = rm12_ij*rm12_ij; + rm6ij = rm2ij*rm2ij*rm2ij; + + // Compute the shifted potential + rCutExp = expValue(alpha12_ij*(1.0-rCut*rminv)); + urc = buck1*(6.0*rCutExp - alpha12_ij*rm6ij*rCut6inv); + durc = -buck1*buck2*(rCutExp*rminv - rCutInv*rm6ij*rCut6inv); + rin1 = shift*rm12_ij*func_rin(alpha12_ij); + + if(r < rin1){ + rin6 = rin1*rin1*rin1*rin1*rin1*rin1; + rin6inv = 1.0/rin6; + + rin1exp = expValue(alpha12_ij*(1.0-rin1*rminv)); + + uin1 = buck1*(6.0*rin1exp - alpha12_ij*rm6ij*rin6inv) - urc - durc*(rin1-rCut); + + win1 = buck1*buck2*(rin1*rin1exp*rminv - rm6ij*rin6inv) + rin1*durc; + + aRep = win1*powint(rin1,nRep)/nRep; + + uin1rep = aRep/powint(rin1,nRep); + + evdwlEXP6_12 = uin1 - uin1rep + aRep/powint(r,nRep); + } else { + evdwlEXP6_12 = buck1*(6.0*rexp - alpha12_ij*rm6ij*r6inv) - urc - durc*(r-rCut); + } + + rminv = 1.0/rm21_ij; + buck1 = epsilon21_ij / (alpha21_ij - 6.0); + buck2 = 6.0*alpha21_ij; + rexp = expValue(alpha21_ij*(1.0-r*rminv)); + rm2ij = rm21_ij*rm21_ij; + rm6ij = rm2ij*rm2ij*rm2ij; + + // Compute the shifted potential + rCutExp = expValue(alpha21_ij*(1.0-rCut*rminv)); + urc = buck1*(6.0*rCutExp - alpha21_ij*rm6ij*rCut6inv); + durc = -buck1*buck2*(rCutExp*rminv - rCutInv*rm6ij*rCut6inv); + rin1 = shift*rm21_ij*func_rin(alpha21_ij); + + if(r < rin1){ + rin6 = rin1*rin1*rin1*rin1*rin1*rin1; + rin6inv = 1.0/rin6; + + rin1exp = expValue(alpha21_ij*(1.0-rin1*rminv)); + + uin1 = buck1*(6.0*rin1exp - alpha21_ij*rm6ij*rin6inv) - urc - durc*(rin1-rCut); + + win1 = buck1*buck2*(rin1*rin1exp*rminv - rm6ij*rin6inv) + rin1*durc; + + aRep = win1*powint(rin1,nRep)/nRep; + + uin1rep = aRep/powint(rin1,nRep); + + evdwlEXP6_21 = uin1 - uin1rep + aRep/powint(r,nRep); + } else { + evdwlEXP6_21 = buck1*(6.0*rexp - alpha21_ij*rm6ij*r6inv) - urc - durc*(r-rCut); + } + } + + // + // Apply Mixing Rule to get the overall force for the CG pair + // + if (isite1 == isite2) fpair = sqrt(mixWtSite1old_i*mixWtSite2old_j)*fpairOldEXP6_12; + else fpair = sqrt(mixWtSite1old_i*mixWtSite2old_j)*fpairOldEXP6_12 + sqrt(mixWtSite2old_i*mixWtSite1old_j)*fpairOldEXP6_21; + + fx_i += delx*fpair; + fy_i += dely*fpair; + fz_i += delz*fpair; + if ((NEIGHFLAG==HALF || NEIGHFLAG==HALFTHREAD) && (NEWTON_PAIR || j < nlocal)) { + a_f(j,0) -= delx*fpair; + a_f(j,1) -= dely*fpair; + a_f(j,2) -= delz*fpair; + } + + if (isite1 == isite2) evdwl = sqrt(mixWtSite1_i*mixWtSite2_j)*evdwlEXP6_12; + else evdwl = sqrt(mixWtSite1_i*mixWtSite2_j)*evdwlEXP6_12 + sqrt(mixWtSite2_i*mixWtSite1_j)*evdwlEXP6_21; + evdwl *= factor_lj; + + uCGnew_i += 0.5*evdwl; + if ((NEIGHFLAG==HALF || NEIGHFLAG==HALFTHREAD) && (NEWTON_PAIR || j < nlocal)) + a_uCGnew[j] += 0.5*evdwl; + evdwl = evdwlOld; + if (EVFLAG) + ev.evdwl += (((NEIGHFLAG==HALF || NEIGHFLAG==HALFTHREAD) && (NEWTON_PAIR||(jtemplate ev_tally(ev,i,j,evdwl,fpair,delx,dely,delz); + } + } + + a_f(i,0) += fx_i; + a_f(i,1) += fy_i; + a_f(i,2) += fz_i; + a_uCG[i] += uCG_i; + a_uCGnew[i] += uCGnew_i; +} + +template +template +KOKKOS_INLINE_FUNCTION +void PairExp6rxKokkos::operator()(TagPairExp6rxCompute, const int &ii) const { + EV_FLOAT ev; + this->template operator()(TagPairExp6rxCompute(), ii, ev); +} + +// Experimental thread-safety using duplicated data instead of atomics + +template +template +KOKKOS_INLINE_FUNCTION +void PairExp6rxKokkos::operator()(TagPairExp6rxComputeNoAtomics, const int &ii, EV_FLOAT& ev) const { + + { + const bool one_type = (ntypes == 1); + if (isite1 == isite2) + if (one_type) + this->vectorized_operator(ii, ev); + else + this->vectorized_operator(ii, ev); + else + if (one_type) + this->vectorized_operator(ii, ev); + else + this->vectorized_operator(ii, ev); + return; + } + + int tid = 0; +#ifndef KOKKOS_HAVE_CUDA + tid = DeviceType::hardware_thread_id(); +#endif + + int i,jj,jnum,itype,jtype; + double xtmp,ytmp,ztmp,delx,dely,delz,evdwl,evdwlOld,fpair; + double rsq,r2inv,r6inv,forceExp6,factor_lj; + double rCut,rCutInv,rCut2inv,rCut6inv,rCutExp,urc,durc; + double rm2ij,rm6ij; + double r,rexp; + + double alphaOld12_ij, rmOld12_ij, epsilonOld12_ij; + double alphaOld21_ij, rmOld21_ij, epsilonOld21_ij; + double alpha12_ij, rm12_ij, epsilon12_ij; + double alpha21_ij, rm21_ij, epsilon21_ij; + double rminv, buck1, buck2; + double epsilonOld1_i,alphaOld1_i,rmOld1_i; + double epsilonOld1_j,alphaOld1_j,rmOld1_j; + double epsilonOld2_i,alphaOld2_i,rmOld2_i; + double epsilonOld2_j,alphaOld2_j,rmOld2_j; + double epsilon1_i,alpha1_i,rm1_i; + double epsilon1_j,alpha1_j,rm1_j; + double epsilon2_i,alpha2_i,rm2_i; + double epsilon2_j,alpha2_j,rm2_j; + double evdwlOldEXP6_12, evdwlOldEXP6_21, fpairOldEXP6_12, fpairOldEXP6_21; + double evdwlEXP6_12, evdwlEXP6_21; + double mixWtSite1old_i, mixWtSite1old_j; + double mixWtSite2old_i, mixWtSite2old_j; + double mixWtSite1_i, mixWtSite1_j; + double mixWtSite2_i, mixWtSite2_j; + + const int nRep = 12; + const double shift = 1.05; + double rin1, aRep, uin1, win1, uin1rep, rin1exp, rin6, rin6inv; + + evdwlOld = 0.0; + evdwl = 0.0; + + i = d_ilist[ii]; + xtmp = x(i,0); + ytmp = x(i,1); + ztmp = x(i,2); + itype = type[i]; + jnum = d_numneigh[i]; + + double fx_i = 0.0; + double fy_i = 0.0; + double fz_i = 0.0; + double uCG_i = 0.0; + double uCGnew_i = 0.0; + + { + epsilon1_i = PairExp6ParamData.epsilon1[i]; + alpha1_i = PairExp6ParamData.alpha1[i]; + rm1_i = PairExp6ParamData.rm1[i]; + mixWtSite1_i = PairExp6ParamData.mixWtSite1[i]; + epsilon2_i = PairExp6ParamData.epsilon2[i]; + alpha2_i = PairExp6ParamData.alpha2[i]; + rm2_i = PairExp6ParamData.rm2[i]; + mixWtSite2_i = PairExp6ParamData.mixWtSite2[i]; + epsilonOld1_i = PairExp6ParamData.epsilonOld1[i]; + alphaOld1_i = PairExp6ParamData.alphaOld1[i]; + rmOld1_i = PairExp6ParamData.rmOld1[i]; + mixWtSite1old_i = PairExp6ParamData.mixWtSite1old[i]; + epsilonOld2_i = PairExp6ParamData.epsilonOld2[i]; + alphaOld2_i = PairExp6ParamData.alphaOld2[i]; + rmOld2_i = PairExp6ParamData.rmOld2[i]; + mixWtSite2old_i = PairExp6ParamData.mixWtSite2old[i]; + } + + for (jj = 0; jj < jnum; jj++) { + int j = d_neighbors(i,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 < d_cutsq(itype,jtype)) { // optimize + r2inv = 1.0/rsq; + r6inv = r2inv*r2inv*r2inv; + + r = sqrt(rsq); + rCut2inv = 1.0/d_cutsq(itype,jtype); + rCut6inv = rCut2inv*rCut2inv*rCut2inv; + rCut = sqrt(d_cutsq(itype,jtype)); + rCutInv = 1.0/rCut; + + // + // A. Compute the exp-6 potential + // + + // A1. Get alpha, epsilon and rm for particle j + + { + epsilon1_j = PairExp6ParamData.epsilon1[j]; + alpha1_j = PairExp6ParamData.alpha1[j]; + rm1_j = PairExp6ParamData.rm1[j]; + mixWtSite1_j = PairExp6ParamData.mixWtSite1[j]; + epsilon2_j = PairExp6ParamData.epsilon2[j]; + alpha2_j = PairExp6ParamData.alpha2[j]; + rm2_j = PairExp6ParamData.rm2[j]; + mixWtSite2_j = PairExp6ParamData.mixWtSite2[j]; + epsilonOld1_j = PairExp6ParamData.epsilonOld1[j]; + alphaOld1_j = PairExp6ParamData.alphaOld1[j]; + rmOld1_j = PairExp6ParamData.rmOld1[j]; + mixWtSite1old_j = PairExp6ParamData.mixWtSite1old[j]; + epsilonOld2_j = PairExp6ParamData.epsilonOld2[j]; + alphaOld2_j = PairExp6ParamData.alphaOld2[j]; + rmOld2_j = PairExp6ParamData.rmOld2[j]; + mixWtSite2old_j = PairExp6ParamData.mixWtSite2old[j]; + } + + // A2. Apply Lorentz-Berthelot mixing rules for the i-j pair + alphaOld12_ij = sqrt(alphaOld1_i*alphaOld2_j); + rmOld12_ij = 0.5*(rmOld1_i + rmOld2_j); + epsilonOld12_ij = sqrt(epsilonOld1_i*epsilonOld2_j); + alphaOld21_ij = sqrt(alphaOld2_i*alphaOld1_j); + rmOld21_ij = 0.5*(rmOld2_i + rmOld1_j); + epsilonOld21_ij = sqrt(epsilonOld2_i*epsilonOld1_j); + + alpha12_ij = sqrt(alpha1_i*alpha2_j); + rm12_ij = 0.5*(rm1_i + rm2_j); + epsilon12_ij = sqrt(epsilon1_i*epsilon2_j); + alpha21_ij = sqrt(alpha2_i*alpha1_j); + rm21_ij = 0.5*(rm2_i + rm1_j); + epsilon21_ij = sqrt(epsilon2_i*epsilon1_j); + + evdwlOldEXP6_12 = 0.0; + evdwlOldEXP6_21 = 0.0; + evdwlEXP6_12 = 0.0; + evdwlEXP6_21 = 0.0; + fpairOldEXP6_12 = 0.0; + fpairOldEXP6_21 = 0.0; + + if(rmOld12_ij!=0.0 && rmOld21_ij!=0.0){ + if(alphaOld21_ij == 6.0 || alphaOld12_ij == 6.0) + k_error_flag.template view()() = 1; + + // A3. Compute some convenient quantities for evaluating the force + rminv = 1.0/rmOld12_ij; + buck1 = epsilonOld12_ij / (alphaOld12_ij - 6.0); + rexp = expValue(alphaOld12_ij*(1.0-r*rminv)); + rm2ij = rmOld12_ij*rmOld12_ij; + rm6ij = rm2ij*rm2ij*rm2ij; + + // Compute the shifted potential + rCutExp = expValue(alphaOld12_ij*(1.0-rCut*rminv)); + buck2 = 6.0*alphaOld12_ij; + urc = buck1*(6.0*rCutExp - alphaOld12_ij*rm6ij*rCut6inv); + durc = -buck1*buck2*(rCutExp* rminv - rCutInv*rm6ij*rCut6inv); + rin1 = shift*rmOld12_ij*func_rin(alphaOld12_ij); + if(r < rin1){ + rin6 = rin1*rin1*rin1*rin1*rin1*rin1; + rin6inv = 1.0/rin6; + + rin1exp = expValue(alphaOld12_ij*(1.0-rin1*rminv)); + + uin1 = buck1*(6.0*rin1exp - alphaOld12_ij*rm6ij*rin6inv) - urc - durc*(rin1-rCut); + + win1 = buck1*buck2*(rin1*rin1exp*rminv - rm6ij*rin6inv) + rin1*durc; + + aRep = win1*powint(rin1,nRep)/nRep; + + uin1rep = aRep/powint(rin1,nRep); + + forceExp6 = double(nRep)*aRep/powint(r,nRep); + fpairOldEXP6_12 = factor_lj*forceExp6*r2inv; + + evdwlOldEXP6_12 = uin1 - uin1rep + aRep/powint(r,nRep); + } else { + forceExp6 = buck1*buck2*(r*rexp*rminv - rm6ij*r6inv) + r*durc; + fpairOldEXP6_12 = factor_lj*forceExp6*r2inv; + + evdwlOldEXP6_12 = buck1*(6.0*rexp - alphaOld12_ij*rm6ij*r6inv) - urc - durc*(r-rCut); + } + + // A3. Compute some convenient quantities for evaluating the force + rminv = 1.0/rmOld21_ij; + buck1 = epsilonOld21_ij / (alphaOld21_ij - 6.0); + buck2 = 6.0*alphaOld21_ij; + rexp = expValue(alphaOld21_ij*(1.0-r*rminv)); + rm2ij = rmOld21_ij*rmOld21_ij; + rm6ij = rm2ij*rm2ij*rm2ij; + + // Compute the shifted potential + rCutExp = expValue(alphaOld21_ij*(1.0-rCut*rminv)); + buck2 = 6.0*alphaOld21_ij; + urc = buck1*(6.0*rCutExp - alphaOld21_ij*rm6ij*rCut6inv); + durc = -buck1*buck2*(rCutExp* rminv - rCutInv*rm6ij*rCut6inv); + rin1 = shift*rmOld21_ij*func_rin(alphaOld21_ij); + + if(r < rin1){ + rin6 = rin1*rin1*rin1*rin1*rin1*rin1; + rin6inv = 1.0/rin6; + + rin1exp = expValue(alphaOld21_ij*(1.0-rin1*rminv)); + + uin1 = buck1*(6.0*rin1exp - alphaOld21_ij*rm6ij*rin6inv) - urc - durc*(rin1-rCut); + + win1 = buck1*buck2*(rin1*rin1exp*rminv - rm6ij*rin6inv) + rin1*durc; + + aRep = win1*powint(rin1,nRep)/nRep; + + uin1rep = aRep/powint(rin1,nRep); + + forceExp6 = double(nRep)*aRep/powint(r,nRep); + fpairOldEXP6_21 = factor_lj*forceExp6*r2inv; + + evdwlOldEXP6_21 = uin1 - uin1rep + aRep/powint(r,nRep); + } else { + forceExp6 = buck1*buck2*(r*rexp*rminv - rm6ij*r6inv) + r*durc; + fpairOldEXP6_21 = factor_lj*forceExp6*r2inv; + + evdwlOldEXP6_21 = buck1*(6.0*rexp - alphaOld21_ij*rm6ij*r6inv) - urc - durc*(r-rCut); + } + + if (isite1 == isite2) + evdwlOld = sqrt(mixWtSite1old_i*mixWtSite2old_j)*evdwlOldEXP6_12; + else + evdwlOld = sqrt(mixWtSite1old_i*mixWtSite2old_j)*evdwlOldEXP6_12 + sqrt(mixWtSite2old_i*mixWtSite1old_j)*evdwlOldEXP6_21; + + evdwlOld *= factor_lj; + + uCG_i += 0.5*evdwlOld; + if ((NEIGHFLAG==HALF || NEIGHFLAG==HALFTHREAD) && (NEWTON_PAIR || j < nlocal)) + t_uCG(tid,j) += 0.5*evdwlOld; + } + + if(rm12_ij!=0.0 && rm21_ij!=0.0){ + if(alpha21_ij == 6.0 || alpha12_ij == 6.0) + k_error_flag.template view()() = 1; + + // A3. Compute some convenient quantities for evaluating the force + rminv = 1.0/rm12_ij; + buck1 = epsilon12_ij / (alpha12_ij - 6.0); + buck2 = 6.0*alpha12_ij; + rexp = expValue(alpha12_ij*(1.0-r*rminv)); + rm2ij = rm12_ij*rm12_ij; + rm6ij = rm2ij*rm2ij*rm2ij; + + // Compute the shifted potential + rCutExp = expValue(alpha12_ij*(1.0-rCut*rminv)); + urc = buck1*(6.0*rCutExp - alpha12_ij*rm6ij*rCut6inv); + durc = -buck1*buck2*(rCutExp*rminv - rCutInv*rm6ij*rCut6inv); + rin1 = shift*rm12_ij*func_rin(alpha12_ij); + + if(r < rin1){ + rin6 = rin1*rin1*rin1*rin1*rin1*rin1; + rin6inv = 1.0/rin6; + + rin1exp = expValue(alpha12_ij*(1.0-rin1*rminv)); + + uin1 = buck1*(6.0*rin1exp - alpha12_ij*rm6ij*rin6inv) - urc - durc*(rin1-rCut); + + win1 = buck1*buck2*(rin1*rin1exp*rminv - rm6ij*rin6inv) + rin1*durc; + + aRep = win1*powint(rin1,nRep)/nRep; + + uin1rep = aRep/powint(rin1,nRep); + + evdwlEXP6_12 = uin1 - uin1rep + aRep/powint(r,nRep); + } else { + evdwlEXP6_12 = buck1*(6.0*rexp - alpha12_ij*rm6ij*r6inv) - urc - durc*(r-rCut); + } + + rminv = 1.0/rm21_ij; + buck1 = epsilon21_ij / (alpha21_ij - 6.0); + buck2 = 6.0*alpha21_ij; + rexp = expValue(alpha21_ij*(1.0-r*rminv)); + rm2ij = rm21_ij*rm21_ij; + rm6ij = rm2ij*rm2ij*rm2ij; + + // Compute the shifted potential + rCutExp = expValue(alpha21_ij*(1.0-rCut*rminv)); + urc = buck1*(6.0*rCutExp - alpha21_ij*rm6ij*rCut6inv); + durc = -buck1*buck2*(rCutExp*rminv - rCutInv*rm6ij*rCut6inv); + rin1 = shift*rm21_ij*func_rin(alpha21_ij); + + if(r < rin1){ + rin6 = rin1*rin1*rin1*rin1*rin1*rin1; + rin6inv = 1.0/rin6; + + rin1exp = expValue(alpha21_ij*(1.0-rin1*rminv)); + + uin1 = buck1*(6.0*rin1exp - alpha21_ij*rm6ij*rin6inv) - urc - durc*(rin1-rCut); + + win1 = buck1*buck2*(rin1*rin1exp*rminv - rm6ij*rin6inv) + rin1*durc; + + aRep = win1*powint(rin1,nRep)/nRep; + + uin1rep = aRep/powint(rin1,nRep); + + evdwlEXP6_21 = uin1 - uin1rep + aRep/powint(r,nRep); + } else { + evdwlEXP6_21 = buck1*(6.0*rexp - alpha21_ij*rm6ij*r6inv) - urc - durc*(r-rCut); + } + } + + // + // Apply Mixing Rule to get the overall force for the CG pair + // + if (isite1 == isite2) fpair = sqrt(mixWtSite1old_i*mixWtSite2old_j)*fpairOldEXP6_12; + else fpair = sqrt(mixWtSite1old_i*mixWtSite2old_j)*fpairOldEXP6_12 + sqrt(mixWtSite2old_i*mixWtSite1old_j)*fpairOldEXP6_21; + + fx_i += delx*fpair; + fy_i += dely*fpair; + fz_i += delz*fpair; + if ((NEIGHFLAG==HALF || NEIGHFLAG==HALFTHREAD) && (NEWTON_PAIR || j < nlocal)) { + t_f(tid,j,0) -= delx*fpair; + t_f(tid,j,1) -= dely*fpair; + t_f(tid,j,2) -= delz*fpair; + } + + if (isite1 == isite2) evdwl = sqrt(mixWtSite1_i*mixWtSite2_j)*evdwlEXP6_12; + else evdwl = sqrt(mixWtSite1_i*mixWtSite2_j)*evdwlEXP6_12 + sqrt(mixWtSite2_i*mixWtSite1_j)*evdwlEXP6_21; + evdwl *= factor_lj; + + uCGnew_i += 0.5*evdwl; + if ((NEIGHFLAG==HALF || NEIGHFLAG==HALFTHREAD) && (NEWTON_PAIR || j < nlocal)) + t_uCGnew(tid,j) += 0.5*evdwl; + evdwl = evdwlOld; + if (EVFLAG) + ev.evdwl += (((NEIGHFLAG==HALF || NEIGHFLAG==HALFTHREAD) && (NEWTON_PAIR||(jtemplate ev_tally(ev,i,j,evdwl,fpair,delx,dely,delz); + } + } + + t_f(tid,i,0) += fx_i; + t_f(tid,i,1) += fy_i; + t_f(tid,i,2) += fz_i; + t_uCG(tid,i) += uCG_i; + t_uCGnew(tid,i) += uCGnew_i; +} + +// Experimental thread-safe approach using duplicated data instead of atomics and +// temporary local short vector arrays for the inner j-loop to increase vectorization. + +template + KOKKOS_INLINE_FUNCTION +double __powint(const double& x, const int) +{ + static_assert(n == 12, "__powint<> only supports specific integer powers."); + + if (n == 12) + { + // Do x^12 here ... x^12 = (x^3)^4 + double x3 = x*x*x; + return x3*x3*x3*x3; + } +} + +template + template +KOKKOS_INLINE_FUNCTION +void PairExp6rxKokkos::vectorized_operator(const int &ii, EV_FLOAT& ev) const +{ + // These arrays are atomic for Half/Thread neighbor style + Kokkos::View::value> > a_f = f; + Kokkos::View::value> > a_uCG = uCG; + Kokkos::View::value> > a_uCGnew = uCGnew; + + int tid = 0; +#ifndef KOKKOS_HAVE_CUDA + tid = DeviceType::hardware_thread_id(); +#endif + + const int nRep = 12; + const double shift = 1.05; + + const int i = d_ilist[ii]; + const double xtmp = x(i,0); + const double ytmp = x(i,1); + const double ztmp = x(i,2); + const int itype = type[i]; + const int jnum = d_numneigh[i]; + + double fx_i = 0.0; + double fy_i = 0.0; + double fz_i = 0.0; + double uCG_i = 0.0; + double uCGnew_i = 0.0; + + // Constant values for this atom. + const double epsilon1_i = PairExp6ParamData.epsilon1[i]; + const double alpha1_i = PairExp6ParamData.alpha1[i]; + const double rm1_i = PairExp6ParamData.rm1[i]; + const double mixWtSite1_i = PairExp6ParamData.mixWtSite1[i]; + const double epsilon2_i = PairExp6ParamData.epsilon2[i]; + const double alpha2_i = PairExp6ParamData.alpha2[i]; + const double rm2_i = PairExp6ParamData.rm2[i]; + const double mixWtSite2_i = PairExp6ParamData.mixWtSite2[i]; + const double epsilonOld1_i = PairExp6ParamData.epsilonOld1[i]; + const double alphaOld1_i = PairExp6ParamData.alphaOld1[i]; + const double rmOld1_i = PairExp6ParamData.rmOld1[i]; + const double mixWtSite1old_i = PairExp6ParamData.mixWtSite1old[i]; + const double epsilonOld2_i = PairExp6ParamData.epsilonOld2[i]; + const double alphaOld2_i = PairExp6ParamData.alphaOld2[i]; + const double rmOld2_i = PairExp6ParamData.rmOld2[i]; + const double mixWtSite2old_i = PairExp6ParamData.mixWtSite2old[i]; + + const double cutsq_type11 = d_cutsq(1,1); + const double rCut2inv_type11 = 1.0/ cutsq_type11; + const double rCut6inv_type11 = rCut2inv_type11*rCut2inv_type11*rCut2inv_type11; + const double rCut_type11 = sqrt( cutsq_type11 ); + const double rCutInv_type11 = 1.0/rCut_type11; + + // Do error testing locally. + bool hasError = false; + + // Process this many neighbors concurrently -- if possible. + const int batchSize = 8; + + int neigh_j[batchSize]; + double evdwlOld_j[batchSize]; + double uCGnew_j[batchSize]; + double fpair_j[batchSize]; + double delx_j[batchSize]; + double dely_j[batchSize]; + double delz_j[batchSize]; + double cutsq_j[batchSize]; + + for (int jptr = 0; jptr < jnum; ) + { + // The core computation here is very expensive so let's only bother with + // those that pass rsq < cutsq. + + for (int j = 0; j < batchSize; ++j) + { + evdwlOld_j[j] = 0.0; + uCGnew_j[j] = 0.0; + fpair_j[j] = 0.0; + //delx_j[j] = 0.0; + //dely_j[j] = 0.0; + //delz_j[j] = 0.0; + //cutsq_j[j] = 0.0; + } + + int niters = 0; + + for (; (jptr < jnum) && (niters < batchSize); ++jptr) + { + const int j = d_neighbors(i,jptr) & NEIGHMASK; + + const double delx = xtmp - x(j,0); + const double dely = ytmp - x(j,1); + const double delz = ztmp - x(j,2); + + const double rsq = delx*delx + dely*dely + delz*delz; + const int jtype = type[j]; + + const double cutsq_ij = (OneType) ? cutsq_type11 : d_cutsq(itype,jtype); + + if (rsq < cutsq_ij) + { + delx_j [niters] = delx; + dely_j [niters] = dely; + delz_j [niters] = delz; + if (OneType == false) + cutsq_j[niters] = cutsq_ij; + + neigh_j[niters] = d_neighbors(i,jptr); + + ++niters; + } + } + + // reduction here. + #pragma simd reduction(+: fx_i, fy_i, fz_i, uCG_i, uCGnew_i) reduction(|: hasError) + for (int jlane = 0; jlane < niters; jlane++) + { + int j = neigh_j[jlane]; + const double factor_lj = special_lj[sbmask(j)]; + j &= NEIGHMASK; + + const double delx = delx_j[jlane]; + const double dely = dely_j[jlane]; + const double delz = delz_j[jlane]; + + const double rsq = delx*delx + dely*dely + delz*delz; + // const int jtype = type[j]; + + // if (rsq < d_cutsq(itype,jtype)) // optimize + { + const double r2inv = 1.0/rsq; + const double r6inv = r2inv*r2inv*r2inv; + + const double r = sqrt(rsq); + const double rCut2inv = (OneType) ? rCut2inv_type11 : (1.0/ cutsq_j[jlane]); + const double rCut6inv = (OneType) ? rCut6inv_type11 : (rCut2inv*rCut2inv*rCut2inv); + const double rCut = (OneType) ? rCut_type11 : (sqrt( cutsq_j[jlane] )); + const double rCutInv = (OneType) ? rCutInv_type11 : (1.0/rCut); + + // + // A. Compute the exp-6 potential + // + + // A1. Get alpha, epsilon and rm for particle j + + const double epsilon1_j = PairExp6ParamData.epsilon1[j]; + const double alpha1_j = PairExp6ParamData.alpha1[j]; + const double rm1_j = PairExp6ParamData.rm1[j]; + const double mixWtSite1_j = PairExp6ParamData.mixWtSite1[j]; + const double epsilon2_j = PairExp6ParamData.epsilon2[j]; + const double alpha2_j = PairExp6ParamData.alpha2[j]; + const double rm2_j = PairExp6ParamData.rm2[j]; + const double mixWtSite2_j = PairExp6ParamData.mixWtSite2[j]; + const double epsilonOld1_j = PairExp6ParamData.epsilonOld1[j]; + const double alphaOld1_j = PairExp6ParamData.alphaOld1[j]; + const double rmOld1_j = PairExp6ParamData.rmOld1[j]; + const double mixWtSite1old_j = PairExp6ParamData.mixWtSite1old[j]; + const double epsilonOld2_j = PairExp6ParamData.epsilonOld2[j]; + const double alphaOld2_j = PairExp6ParamData.alphaOld2[j]; + const double rmOld2_j = PairExp6ParamData.rmOld2[j]; + const double mixWtSite2old_j = PairExp6ParamData.mixWtSite2old[j]; + + // A2. Apply Lorentz-Berthelot mixing rules for the i-j pair + const double alphaOld12_ij = sqrt(alphaOld1_i*alphaOld2_j); + const double rmOld12_ij = 0.5*(rmOld1_i + rmOld2_j); + const double epsilonOld12_ij = sqrt(epsilonOld1_i*epsilonOld2_j); + const double alphaOld21_ij = sqrt(alphaOld2_i*alphaOld1_j); + const double rmOld21_ij = 0.5*(rmOld2_i + rmOld1_j); + const double epsilonOld21_ij = sqrt(epsilonOld2_i*epsilonOld1_j); + + const double alpha12_ij = sqrt(alpha1_i*alpha2_j); + const double rm12_ij = 0.5*(rm1_i + rm2_j); + const double epsilon12_ij = sqrt(epsilon1_i*epsilon2_j); + const double alpha21_ij = sqrt(alpha2_i*alpha1_j); + const double rm21_ij = 0.5*(rm2_i + rm1_j); + const double epsilon21_ij = sqrt(epsilon2_i*epsilon1_j); + + double evdwlOldEXP6_12 = 0.0; + double evdwlOldEXP6_21 = 0.0; + double evdwlEXP6_12 = 0.0; + double evdwlEXP6_21 = 0.0; + double fpairOldEXP6_12 = 0.0; + double fpairOldEXP6_21 = 0.0; + + if(rmOld12_ij!=0.0 && rmOld21_ij!=0.0) + { + hasError |= (alphaOld21_ij == 6.0 || alphaOld12_ij == 6.0); + + // A3. Compute some convenient quantities for evaluating the force + double rminv = 1.0/rmOld12_ij; + double buck1 = epsilonOld12_ij / (alphaOld12_ij - 6.0); + double rexp = expValue(alphaOld12_ij*(1.0-r*rminv)); + double rm2ij = rmOld12_ij*rmOld12_ij; + double rm6ij = rm2ij*rm2ij*rm2ij; + + // Compute the shifted potential + double rCutExp = expValue(alphaOld12_ij*(1.0-rCut*rminv)); + double buck2 = 6.0*alphaOld12_ij; + double urc = buck1*(6.0*rCutExp - alphaOld12_ij*rm6ij*rCut6inv); + double durc = -buck1*buck2*(rCutExp* rminv - rCutInv*rm6ij*rCut6inv); + double rin1 = shift*rmOld12_ij*func_rin(alphaOld12_ij); + + if(r < rin1){ + const double rin6 = rin1*rin1*rin1*rin1*rin1*rin1; + const double rin6inv = 1.0/rin6; + + const double rin1exp = expValue(alphaOld12_ij*(1.0-rin1*rminv)); + + const double uin1 = buck1*(6.0*rin1exp - alphaOld12_ij*rm6ij*rin6inv) - urc - durc*(rin1-rCut); + + const double win1 = buck1*buck2*(rin1*rin1exp*rminv - rm6ij*rin6inv) + rin1*durc; + + const double aRep = win1*__powint<12>(rin1,nRep)/nRep; + + const double uin1rep = aRep/__powint<12>(rin1,nRep); + + const double forceExp6 = double(nRep)*aRep/__powint<12>(r,nRep); + fpairOldEXP6_12 = factor_lj*forceExp6*r2inv; + + evdwlOldEXP6_12 = uin1 - uin1rep + aRep/__powint<12>(r,nRep); + } else { + const double forceExp6 = buck1*buck2*(r*rexp*rminv - rm6ij*r6inv) + r*durc; + fpairOldEXP6_12 = factor_lj*forceExp6*r2inv; + + evdwlOldEXP6_12 = buck1*(6.0*rexp - alphaOld12_ij*rm6ij*r6inv) - urc - durc*(r-rCut); + } + + // A3. Compute some convenient quantities for evaluating the force + rminv = 1.0/rmOld21_ij; + buck1 = epsilonOld21_ij / (alphaOld21_ij - 6.0); + buck2 = 6.0*alphaOld21_ij; + rexp = expValue(alphaOld21_ij*(1.0-r*rminv)); + rm2ij = rmOld21_ij*rmOld21_ij; + rm6ij = rm2ij*rm2ij*rm2ij; + + // Compute the shifted potential + rCutExp = expValue(alphaOld21_ij*(1.0-rCut*rminv)); + buck2 = 6.0*alphaOld21_ij; + urc = buck1*(6.0*rCutExp - alphaOld21_ij*rm6ij*rCut6inv); + durc = -buck1*buck2*(rCutExp* rminv - rCutInv*rm6ij*rCut6inv); + rin1 = shift*rmOld21_ij*func_rin(alphaOld21_ij); + + if(r < rin1){ + const double rin6 = rin1*rin1*rin1*rin1*rin1*rin1; + const double rin6inv = 1.0/rin6; + + const double rin1exp = expValue(alphaOld21_ij*(1.0-rin1*rminv)); + + const double uin1 = buck1*(6.0*rin1exp - alphaOld21_ij*rm6ij*rin6inv) - urc - durc*(rin1-rCut); + + const double win1 = buck1*buck2*(rin1*rin1exp*rminv - rm6ij*rin6inv) + rin1*durc; + + const double aRep = win1*__powint<12>(rin1,nRep)/nRep; + + const double uin1rep = aRep/__powint<12>(rin1,nRep); + + const double forceExp6 = double(nRep)*aRep/__powint<12>(r,nRep); + fpairOldEXP6_21 = factor_lj*forceExp6*r2inv; + + evdwlOldEXP6_21 = uin1 - uin1rep + aRep/__powint<12>(r,nRep); + } else { + const double forceExp6 = buck1*buck2*(r*rexp*rminv - rm6ij*r6inv) + r*durc; + fpairOldEXP6_21 = factor_lj*forceExp6*r2inv; + + evdwlOldEXP6_21 = buck1*(6.0*rexp - alphaOld21_ij*rm6ij*r6inv) - urc - durc*(r-rCut); + } + + double evdwlOld; + if (Site1EqSite2) + evdwlOld = sqrt(mixWtSite1old_i*mixWtSite2old_j)*evdwlOldEXP6_12; + else + evdwlOld = sqrt(mixWtSite1old_i*mixWtSite2old_j)*evdwlOldEXP6_12 + sqrt(mixWtSite2old_i*mixWtSite1old_j)*evdwlOldEXP6_21; + + evdwlOld *= factor_lj; + + uCG_i += 0.5*evdwlOld; + + evdwlOld_j[jlane] = evdwlOld; + } + + if(rm12_ij!=0.0 && rm21_ij!=0.0) + { + hasError |= (alpha21_ij == 6.0 || alpha12_ij == 6.0); + + // A3. Compute some convenient quantities for evaluating the force + double rminv = 1.0/rm12_ij; + double buck1 = epsilon12_ij / (alpha12_ij - 6.0); + double buck2 = 6.0*alpha12_ij; + double rexp = expValue(alpha12_ij*(1.0-r*rminv)); + double rm2ij = rm12_ij*rm12_ij; + double rm6ij = rm2ij*rm2ij*rm2ij; + + // Compute the shifted potential + double rCutExp = expValue(alpha12_ij*(1.0-rCut*rminv)); + double urc = buck1*(6.0*rCutExp - alpha12_ij*rm6ij*rCut6inv); + double durc = -buck1*buck2*(rCutExp*rminv - rCutInv*rm6ij*rCut6inv); + double rin1 = shift*rm12_ij*func_rin(alpha12_ij); + + if(r < rin1){ + const double rin6 = rin1*rin1*rin1*rin1*rin1*rin1; + const double rin6inv = 1.0/rin6; + + const double rin1exp = expValue(alpha12_ij*(1.0-rin1*rminv)); + + const double uin1 = buck1*(6.0*rin1exp - alpha12_ij*rm6ij*rin6inv) - urc - durc*(rin1-rCut); + + const double win1 = buck1*buck2*(rin1*rin1exp*rminv - rm6ij*rin6inv) + rin1*durc; + + const double aRep = win1*__powint<12>(rin1,nRep)/nRep; + + const double uin1rep = aRep/__powint<12>(rin1,nRep); + + evdwlEXP6_12 = uin1 - uin1rep + aRep/__powint<12>(r,nRep); + } else { + evdwlEXP6_12 = buck1*(6.0*rexp - alpha12_ij*rm6ij*r6inv) - urc - durc*(r-rCut); + } + + rminv = 1.0/rm21_ij; + buck1 = epsilon21_ij / (alpha21_ij - 6.0); + buck2 = 6.0*alpha21_ij; + rexp = expValue(alpha21_ij*(1.0-r*rminv)); + rm2ij = rm21_ij*rm21_ij; + rm6ij = rm2ij*rm2ij*rm2ij; + + // Compute the shifted potential + rCutExp = expValue(alpha21_ij*(1.0-rCut*rminv)); + urc = buck1*(6.0*rCutExp - alpha21_ij*rm6ij*rCut6inv); + durc = -buck1*buck2*(rCutExp*rminv - rCutInv*rm6ij*rCut6inv); + rin1 = shift*rm21_ij*func_rin(alpha21_ij); + + if(r < rin1){ + const double rin6 = rin1*rin1*rin1*rin1*rin1*rin1; + const double rin6inv = 1.0/rin6; + + const double rin1exp = expValue(alpha21_ij*(1.0-rin1*rminv)); + + const double uin1 = buck1*(6.0*rin1exp - alpha21_ij*rm6ij*rin6inv) - urc - durc*(rin1-rCut); + + const double win1 = buck1*buck2*(rin1*rin1exp*rminv - rm6ij*rin6inv) + rin1*durc; + + const double aRep = win1*__powint<12>(rin1,nRep)/nRep; + + const double uin1rep = aRep/__powint<12>(rin1,nRep); + + evdwlEXP6_21 = uin1 - uin1rep + aRep/__powint<12>(r,nRep); + } else { + evdwlEXP6_21 = buck1*(6.0*rexp - alpha21_ij*rm6ij*r6inv) - urc - durc*(r-rCut); + } + } + + // + // Apply Mixing Rule to get the overall force for the CG pair + // + double fpair; + if (Site1EqSite2) + fpair = sqrt(mixWtSite1old_i*mixWtSite2old_j)*fpairOldEXP6_12; + else + fpair = sqrt(mixWtSite1old_i*mixWtSite2old_j)*fpairOldEXP6_12 + sqrt(mixWtSite2old_i*mixWtSite1old_j)*fpairOldEXP6_21; + + double evdwl; + if (Site1EqSite2) + evdwl = sqrt(mixWtSite1_i*mixWtSite2_j)*evdwlEXP6_12; + else + evdwl = sqrt(mixWtSite1_i*mixWtSite2_j)*evdwlEXP6_12 + sqrt(mixWtSite2_i*mixWtSite1_j)*evdwlEXP6_21; + + evdwl *= factor_lj; + + fpair_j[jlane] = fpair; + + fx_i += delx*fpair; + fy_i += dely*fpair; + fz_i += delz*fpair; + + uCGnew_i += 0.5*evdwl; + if ((NEIGHFLAG==HALF || NEIGHFLAG==HALFTHREAD)) + uCGnew_j[jlane] = 0.5*evdwl; + + } // if rsq < cutsq + + } // end jlane loop. + + for (int jlane = 0; jlane < niters; jlane++) + { + const int j = neigh_j[jlane] & NEIGHMASK; + + if ((NEIGHFLAG==HALF || NEIGHFLAG==HALFTHREAD) && (NEWTON_PAIR || j < nlocal)) + if (UseAtomics) + a_uCG(j) += 0.5*evdwlOld_j[jlane]; + else + t_uCG(tid,j) += 0.5*evdwlOld_j[jlane]; + + if ((NEIGHFLAG==HALF || NEIGHFLAG==HALFTHREAD) && (NEWTON_PAIR || j < nlocal)) + if (UseAtomics) + a_uCGnew(j) += uCGnew_j[jlane]; + else + t_uCGnew(tid,j) += uCGnew_j[jlane]; + + if ((NEIGHFLAG==HALF || NEIGHFLAG==HALFTHREAD) && (NEWTON_PAIR || j < nlocal)) { + if (UseAtomics) + { + a_f(j,0) -= delx_j[jlane]*fpair_j[jlane]; + a_f(j,1) -= dely_j[jlane]*fpair_j[jlane]; + a_f(j,2) -= delz_j[jlane]*fpair_j[jlane]; + } + else + { + t_f(tid,j,0) -= delx_j[jlane]*fpair_j[jlane]; + t_f(tid,j,1) -= dely_j[jlane]*fpair_j[jlane]; + t_f(tid,j,2) -= delz_j[jlane]*fpair_j[jlane]; + } + } + + double evdwl = evdwlOld_j[jlane]; + if (EVFLAG) + ev.evdwl += (((NEIGHFLAG==HALF || NEIGHFLAG==HALFTHREAD) && (NEWTON_PAIR||(jtemplate ev_tally(ev,i,j,evdwl,fpair_j[jlane],delx_j[jlane],dely_j[jlane],delz_j[jlane]); + } + } + + if (hasError) + k_error_flag.template view()() = 1; + + if (UseAtomics) + { + a_f(i,0) += fx_i; + a_f(i,1) += fy_i; + a_f(i,2) += fz_i; + a_uCG(i) += uCG_i; + a_uCGnew(i) += uCGnew_i; + } + else + { + t_f(tid,i,0) += fx_i; + t_f(tid,i,1) += fy_i; + t_f(tid,i,2) += fz_i; + t_uCG(tid,i) += uCG_i; + t_uCGnew(tid,i) += uCGnew_i; + } +} + +template +template +KOKKOS_INLINE_FUNCTION +void PairExp6rxKokkos::operator()(TagPairExp6rxComputeNoAtomics, const int &ii) const { + EV_FLOAT ev; + this->template operator()(TagPairExp6rxComputeNoAtomics(), ii, ev); +} + +template +KOKKOS_INLINE_FUNCTION +void PairExp6rxKokkos::operator()(TagPairExp6rxCollapseDupViews, const int &i) const { + for (int n = 0; n < num_threads; n++) { + f(i,0) += t_f(n,i,0); + f(i,1) += t_f(n,i,1); + f(i,2) += t_f(n,i,2); + uCG(i) += t_uCG(n,i); + uCGnew(i) += t_uCGnew(n,i); + } +} + +template +KOKKOS_INLINE_FUNCTION +void PairExp6rxKokkos::operator()(TagPairExp6rxZeroDupViews, const int &i) const { + for (int n = 0; n < num_threads; n++) { + t_f(n,i,0) = 0.0; + t_f(n,i,1) = 0.0; + t_f(n,i,2) = 0.0; + t_uCG(n,i) = 0.0; + t_uCGnew(n,i) = 0.0; + } +} + + +/* ---------------------------------------------------------------------- + allocate all arrays +------------------------------------------------------------------------- */ + +template +void PairExp6rxKokkos::allocate() +{ + allocated = 1; + ntypes = atom->ntypes; + + memory->create(setflag,ntypes+1,ntypes+1,"pair:setflag"); + for (int i = 1; i <= ntypes; i++) + for (int j = i; j <= ntypes; j++) + setflag[i][j] = 0; + + memory->create_kokkos(k_cutsq,cutsq,ntypes+1,ntypes+1,"pair:cutsq"); + d_cutsq = k_cutsq.template view(); + k_cutsq.template modify(); + + memory->create(cut,ntypes+1,ntypes+1,"pair:cut_lj"); +} + + +/* ---------------------------------------------------------------------- + set coeffs for one or more type pairs +------------------------------------------------------------------------- */ + +template +void PairExp6rxKokkos::coeff(int narg, char **arg) +{ + PairExp6rx::coeff(narg,arg); + + if (scalingFlag == POLYNOMIAL) + for (int i = 0; i < 6; i++) { + s_coeffAlpha[i] = coeffAlpha[i]; + s_coeffEps[i] = coeffEps[i]; + s_coeffRm[i] = coeffRm[i]; + } + + k_params.template modify(); + k_params.template sync(); + d_params = k_params.template view(); +} + +/* ---------------------------------------------------------------------- */ + +template +void PairExp6rxKokkos::read_file(char *file) +{ + int params_per_line = 5; + char **words = new char*[params_per_line+1]; + + memory->destroy_kokkos(k_params,params); + params = NULL; + nparams = maxparam = 0; + + // open file on proc 0 + + FILE *fp; + fp = NULL; + if (comm->me == 0) { + fp = force->open_potential(file); + if (fp == NULL) { + char str[128]; + sprintf(str,"Cannot open exp6/rx potential file %s",file); + error->one(FLERR,str); + } + } + + // read each set of params from potential file + // one set of params can span multiple lines + + int n,nwords,ispecies; + 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 exp6/rx 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; + + for (ispecies = 0; ispecies < nspecies; ispecies++) + if (strcmp(words[0],&atom->dname[ispecies][0]) == 0) break; + if (ispecies == nspecies) continue; + + // load up parameter settings and error check their values + + if (nparams == maxparam) { + k_params.template modify(); + maxparam += DELTA; + memory->grow_kokkos(k_params,params,maxparam, + "pair:params"); + } + + params[nparams].ispecies = ispecies; + + n = strlen(&atom->dname[ispecies][0]) + 1; + params[nparams].name = new char[n]; + strcpy(params[nparams].name,&atom->dname[ispecies][0]); + + n = strlen(words[1]) + 1; + params[nparams].potential = new char[n]; + strcpy(params[nparams].potential,words[1]); + if (strcmp(params[nparams].potential,"exp6") == 0){ + params[nparams].alpha = atof(words[2]); + params[nparams].epsilon = atof(words[3]); + params[nparams].rm = atof(words[4]); + if (params[nparams].epsilon <= 0.0 || params[nparams].rm <= 0.0 || + params[nparams].alpha < 0.0) + error->all(FLERR,"Illegal exp6/rx parameters. Rm and Epsilon must be greater than zero. Alpha cannot be negative."); + } else { + error->all(FLERR,"Illegal exp6/rx parameters. Interaction potential does not exist."); + } + nparams++; + } + + delete [] words; +} + +/* ---------------------------------------------------------------------- */ + +template +void PairExp6rxKokkos::setup() +{ + int i,j,n; + + // set mol2param for all combinations + // must be a single exact match to lines read from file + + memory->destroy_kokkos(k_mol2param,mol2param); + memory->create_kokkos(k_mol2param,mol2param,nspecies,"pair:mol2param"); + + for (i = 0; i < nspecies; i++) { + n = -1; + for (j = 0; j < nparams; j++) { + if (i == params[j].ispecies) { + if (n >= 0) error->all(FLERR,"Potential file has duplicate entry"); + n = j; + } + } + mol2param[i] = n; + } + + k_mol2param.template modify(); + k_mol2param.template sync(); + d_mol2param = k_mol2param.template view(); + + neighflag = lmp->kokkos->neighflag; +} + +/* ---------------------------------------------------------------------- */ + +template +KOKKOS_INLINE_FUNCTION +void PairExp6rxKokkos::getMixingWeights(int id,double &epsilon1,double &alpha1,double &rm1, double &mixWtSite1,double &epsilon2,double &alpha2,double &rm2,double &mixWtSite2,double &epsilon1_old,double &alpha1_old,double &rm1_old, double &mixWtSite1old,double &epsilon2_old,double &alpha2_old,double &rm2_old,double &mixWtSite2old) const +{ + int iparam, jparam; + double rmi, rmj, rmij, rm3ij; + double epsiloni, epsilonj, epsilonij; + double alphai, alphaj, alphaij; + double epsilon_old, rm3_old, alpha_old; + double epsilon, rm3, alpha; + double xMolei, xMolej, xMolei_old, xMolej_old; + + double fractionOFAold, fractionOFA; + double fractionOld1, fraction1; + double fractionOld2, fraction2; + double nMoleculesOFAold, nMoleculesOFA; + double nMoleculesOld1, nMolecules1; + double nMoleculesOld2, nMolecules2; + double nTotal, nTotalold; + + rm3 = 0.0; + epsilon = 0.0; + alpha = 0.0; + epsilon_old = 0.0; + rm3_old = 0.0; + alpha_old = 0.0; + fractionOFA = 0.0; + fractionOFAold = 0.0; + nMoleculesOFA = 0.0; + nMoleculesOFAold = 0.0; + nTotal = 0.0; + nTotalold = 0.0; + + // Compute the total number of molecules in the old and new CG particle as well as the total number of molecules in the fluid portion of the old and new CG particle + for (int ispecies = 0; ispecies < nspecies; ispecies++){ + nTotal += dvector(ispecies,id); + nTotalold += dvector(ispecies+nspecies,id); + + iparam = d_mol2param[ispecies]; + + if (iparam < 0 || d_params[iparam].potentialType != exp6PotentialType ) continue; + if (isOneFluidApprox(isite1) || isOneFluidApprox(isite2)) { + if (isite1 == d_params[iparam].ispecies || isite2 == d_params[iparam].ispecies) continue; + nMoleculesOFAold += dvector(ispecies+nspecies,id); + nMoleculesOFA += dvector(ispecies,id); + } + } + if(nTotal < MY_EPSILON || nTotalold < MY_EPSILON) + k_error_flag.template view()() = 1; + + // Compute the mole fraction of molecules within the fluid portion of the particle (One Fluid Approximation) + fractionOFAold = nMoleculesOFAold / nTotalold; + fractionOFA = nMoleculesOFA / nTotal; + + for (int ispecies = 0; ispecies < nspecies; ispecies++) { + iparam = d_mol2param[ispecies]; + if (iparam < 0 || d_params[iparam].potentialType != exp6PotentialType ) continue; + + // If Site1 matches a pure species, then grab the parameters + if (isite1 == d_params[iparam].ispecies){ + rm1_old = d_params[iparam].rm; + rm1 = d_params[iparam].rm; + epsilon1_old = d_params[iparam].epsilon; + epsilon1 = d_params[iparam].epsilon; + alpha1_old = d_params[iparam].alpha; + alpha1 = d_params[iparam].alpha; + + // Compute the mole fraction of Site1 + nMoleculesOld1 = dvector(ispecies+nspecies,id); + nMolecules1 = dvector(ispecies,id); + fractionOld1 = nMoleculesOld1/nTotalold; + fraction1 = nMolecules1/nTotal; + } + + // If Site2 matches a pure species, then grab the parameters + if (isite2 == d_params[iparam].ispecies){ + rm2_old = d_params[iparam].rm; + rm2 = d_params[iparam].rm; + epsilon2_old = d_params[iparam].epsilon; + epsilon2 = d_params[iparam].epsilon; + alpha2_old = d_params[iparam].alpha; + alpha2 = d_params[iparam].alpha; + + // Compute the mole fraction of Site2 + nMoleculesOld2 = dvector(ispecies+nspecies,id); + nMolecules2 = dvector(ispecies,id); + fractionOld2 = dvector(ispecies+nspecies,id)/nTotalold; + fraction2 = nMolecules2/nTotal; + } + + // If Site1 or Site2 matches is a fluid, then compute the paramters + if (isOneFluidApprox(isite1) || isOneFluidApprox(isite2)) { + if (isite1 == d_params[iparam].ispecies || isite2 == d_params[iparam].ispecies) continue; + rmi = d_params[iparam].rm; + epsiloni = d_params[iparam].epsilon; + alphai = d_params[iparam].alpha; + if(nMoleculesOFA 0.0){ + rm3_old += xMolei_old*xMolej_old*rm3ij; + epsilon_old += xMolei_old*xMolej_old*rm3ij*epsilonij; + alpha_old += xMolei_old*xMolej_old*rm3ij*epsilonij*alphaij; + } + if(fractionOFA > 0.0){ + rm3 += xMolei*xMolej*rm3ij; + epsilon += xMolei*xMolej*rm3ij*epsilonij; + alpha += xMolei*xMolej*rm3ij*epsilonij*alphaij; + } + } + } + } + + if (isOneFluidApprox(isite1)){ + rm1 = cbrt(rm3); + if(rm1 < MY_EPSILON) { + rm1 = 0.0; + epsilon1 = 0.0; + alpha1 = 0.0; + } else { + epsilon1 = epsilon / rm3; + alpha1 = alpha / epsilon1 / rm3; + } + nMolecules1 = 1.0-(nTotal-nMoleculesOFA); + fraction1 = fractionOFA; + + rm1_old = cbrt(rm3_old); + if(rm1_old < MY_EPSILON) { + rm1_old = 0.0; + epsilon1_old = 0.0; + alpha1_old = 0.0; + } else { + epsilon1_old = epsilon_old / rm3_old; + alpha1_old = alpha_old / epsilon1_old / rm3_old; + } + nMoleculesOld1 = 1.0-(nTotalold-nMoleculesOFAold); + fractionOld1 = fractionOFAold; + + if(scalingFlag == EXPONENT){ + exponentScaling(nMoleculesOFA,epsilon1,rm1); + exponentScaling(nMoleculesOFAold,epsilon1_old,rm1_old); + } else if(scalingFlag == POLYNOMIAL){ + polynomialScaling(nMoleculesOFA,alpha1,epsilon1,rm1); + polynomialScaling(nMoleculesOFAold,alpha1_old,epsilon1_old,rm1_old); + } + } + + if (isOneFluidApprox(isite2)){ + rm2 = cbrt(rm3); + if(rm2 < MY_EPSILON) { + rm2 = 0.0; + epsilon2 = 0.0; + alpha2 = 0.0; + } else { + epsilon2 = epsilon / rm3; + alpha2 = alpha / epsilon2 / rm3; + } + nMolecules2 = 1.0-(nTotal-nMoleculesOFA); + fraction2 = fractionOFA; + + rm2_old = cbrt(rm3_old); + if(rm2_old < MY_EPSILON) { + rm2_old = 0.0; + epsilon2_old = 0.0; + alpha2_old = 0.0; + } else { + epsilon2_old = epsilon_old / rm3_old; + alpha2_old = alpha_old / epsilon2_old / rm3_old; + } + nMoleculesOld2 = 1.0-(nTotalold-nMoleculesOFAold); + fractionOld2 = fractionOFAold; + + if(scalingFlag == EXPONENT){ + exponentScaling(nMoleculesOFA,epsilon2,rm2); + exponentScaling(nMoleculesOFAold,epsilon2_old,rm2_old); + } else if(scalingFlag == POLYNOMIAL){ + polynomialScaling(nMoleculesOFA,alpha2,epsilon2,rm2); + polynomialScaling(nMoleculesOFAold,alpha2_old,epsilon2_old,rm2_old); + } + } + + // Check that no fractions are less than zero + if(fraction1 < 0.0 || nMolecules1 < 0.0){ + if(fraction1 < -MY_EPSILON || nMolecules1 < -MY_EPSILON){ + k_error_flag.template view()() = 2; + } + nMolecules1 = 0.0; + fraction1 = 0.0; + } + if(fraction2 < 0.0 || nMolecules2 < 0.0){ + if(fraction2 < -MY_EPSILON || nMolecules2 < -MY_EPSILON){ + k_error_flag.template view()() = 2; + } + nMolecules2 = 0.0; + fraction2 = 0.0; + } + if(fractionOld1 < 0.0 || nMoleculesOld1 < 0.0){ + if(fractionOld1 < -MY_EPSILON || nMoleculesOld1 < -MY_EPSILON){ + k_error_flag.template view()() = 2; + } + nMoleculesOld1 = 0.0; + fractionOld1 = 0.0; + } + if(fractionOld2 < 0.0 || nMoleculesOld2 < 0.0){ + if(fractionOld2 < -MY_EPSILON || nMoleculesOld2 < -MY_EPSILON){ + k_error_flag.template view()() = 2; + } + nMoleculesOld2 = 0.0; + fractionOld2 = 0.0; + } + + if(fractionalWeighting){ + mixWtSite1old = fractionOld1; + mixWtSite1 = fraction1; + mixWtSite2old = fractionOld2; + mixWtSite2 = fraction2; + } else { + mixWtSite1old = nMoleculesOld1; + mixWtSite1 = nMolecules1; + mixWtSite2old = nMoleculesOld2; + mixWtSite2 = nMolecules2; + } +} + +#ifdef _OPENMP +void partition_range( const int begin, const int end, int &thread_begin, int &thread_end, const int chunkSize = 1) +{ + int threadId = omp_get_thread_num(); + int nThreads = omp_get_num_threads(); + + const int len = end - begin; + const int nBlocks = (len + (chunkSize - 1)) / chunkSize; + const int nBlocksPerThread = nBlocks / nThreads; + const int nRemaining = nBlocks - nBlocksPerThread * nThreads; + int block_lo, block_hi; + if (threadId < nRemaining) + { + block_lo = threadId * nBlocksPerThread + threadId; + block_hi = block_lo + nBlocksPerThread + 1; + } + else + { + block_lo = threadId * nBlocksPerThread + nRemaining; + block_hi = block_lo + nBlocksPerThread; + } + + thread_begin = std::min(begin + block_lo * chunkSize, end); + thread_end = std::min(begin + block_hi * chunkSize, end); + //printf("tid: %d %d %d %d %d\n", threadId, block_lo, block_hi, thread_begin, thread_end); +} +#endif + +/* ---------------------------------------------------------------------- */ + +#ifndef KOKKOS_HAVE_CUDA +template + template +void PairExp6rxKokkos::getMixingWeightsVect(const int np_total, int errorFlag, + ArrayT &epsilon1, ArrayT &alpha1, ArrayT &rm1, ArrayT &mixWtSite1, ArrayT &epsilon2, ArrayT &alpha2, ArrayT &rm2, ArrayT &mixWtSite2, ArrayT &epsilon1_old, ArrayT &alpha1_old, ArrayT &rm1_old, ArrayT &mixWtSite1old, ArrayT &epsilon2_old, ArrayT &alpha2_old, ArrayT &rm2_old, ArrayT &mixWtSite2old) const +{ + ArrayT epsilon = PairExp6ParamDataVect.epsilon ; + ArrayT rm3 = PairExp6ParamDataVect.rm3 ; + ArrayT alpha = PairExp6ParamDataVect.alpha ; + ArrayT xMolei = PairExp6ParamDataVect.xMolei ; + + ArrayT epsilon_old = PairExp6ParamDataVect.epsilon_old ; + ArrayT rm3_old = PairExp6ParamDataVect.rm3_old ; + ArrayT alpha_old = PairExp6ParamDataVect.alpha_old ; + ArrayT xMolei_old = PairExp6ParamDataVect.xMolei_old ; + + ArrayT fractionOFA = PairExp6ParamDataVect.fractionOFA ; + ArrayT fraction1 = PairExp6ParamDataVect.fraction1 ; + ArrayT fraction2 = PairExp6ParamDataVect.fraction2 ; + ArrayT nMoleculesOFA = PairExp6ParamDataVect.nMoleculesOFA ; + ArrayT nMolecules1 = PairExp6ParamDataVect.nMolecules1 ; + ArrayT nMolecules2 = PairExp6ParamDataVect.nMolecules2 ; + ArrayT nTotal = PairExp6ParamDataVect.nTotal ; + + ArrayT fractionOFAold = PairExp6ParamDataVect.fractionOFAold ; + ArrayT fractionOld1 = PairExp6ParamDataVect.fractionOld1 ; + ArrayT fractionOld2 = PairExp6ParamDataVect.fractionOld2 ; + ArrayT nMoleculesOFAold = PairExp6ParamDataVect.nMoleculesOFAold; + ArrayT nMoleculesOld1 = PairExp6ParamDataVect.nMoleculesOld1 ; + ArrayT nMoleculesOld2 = PairExp6ParamDataVect.nMoleculesOld2 ; + ArrayT nTotalold = PairExp6ParamDataVect.nTotalold ; + + int errorFlag1 = 0, errorFlag2 = 0; + +#ifdef _OPENMP + #pragma omp parallel reduction(+: errorFlag1, errorFlag2) +#endif + { + int idx_begin = 0, idx_end = np_total; +#ifdef _OPENMP + partition_range( 0, np_total, idx_begin, idx_end, 16 ); +#endif + + // Zero out all of the terms first. + #pragma ivdep + for (int id = idx_begin; id < idx_end; ++id) + { + rm3[id] = 0.0; + epsilon[id] = 0.0; + alpha[id] = 0.0; + epsilon_old[id] = 0.0; + rm3_old[id] = 0.0; + alpha_old[id] = 0.0; + fractionOFA[id] = 0.0; + fractionOFAold[id] = 0.0; + nMoleculesOFA[id] = 0.0; + nMoleculesOFAold[id] = 0.0; + nTotal[id] = 0.0; + nTotalold[id] = 0.0; + } + + // Compute the total number of molecules in the old and new CG particle as well as the total number of molecules in the fluid portion of the old and new CG particle + for (int ispecies = 0; ispecies < nspecies; ispecies++) + { + #pragma ivdep + for (int id = idx_begin; id < idx_end; ++id) + { + nTotal[id] += dvector(ispecies,id); + nTotalold[id] += dvector(ispecies+nspecies,id); + } + + const int iparam = d_mol2param[ispecies]; + + if (iparam < 0 || d_params[iparam].potentialType != exp6PotentialType ) continue; + if (isOneFluidApprox(isite1) || isOneFluidApprox(isite2)) { + if (isite1 == d_params[iparam].ispecies || isite2 == d_params[iparam].ispecies) continue; + + #pragma ivdep + for (int id = idx_begin; id < idx_end; ++id) + { + nMoleculesOFAold[id] += dvector(ispecies+nspecies,id); + nMoleculesOFA[id] += dvector(ispecies,id); + } + } + } + + // Make a reduction. + #pragma omp simd reduction(+:errorFlag1) + for (int id = idx_begin; id < idx_end; ++id) + { + if ( nTotal[id] < MY_EPSILON || nTotalold[id] < MY_EPSILON ) + errorFlag1 = 1; + + // Compute the mole fraction of molecules within the fluid portion of the particle (One Fluid Approximation) + fractionOFAold[id] = nMoleculesOFAold[id] / nTotalold[id]; + fractionOFA[id] = nMoleculesOFA[id] / nTotal[id]; + } + + for (int ispecies = 0; ispecies < nspecies; ispecies++) { + const int iparam = d_mol2param[ispecies]; + if (iparam < 0 || d_params[iparam].potentialType != exp6PotentialType ) continue; + + // If Site1 matches a pure species, then grab the parameters + if (isite1 == d_params[iparam].ispecies) + { + #pragma ivdep + for (int id = idx_begin; id < idx_end; ++id) + { + rm1_old[id] = d_params[iparam].rm; + rm1[id] = d_params[iparam].rm; + epsilon1_old[id] = d_params[iparam].epsilon; + epsilon1[id] = d_params[iparam].epsilon; + alpha1_old[id] = d_params[iparam].alpha; + alpha1[id] = d_params[iparam].alpha; + + // Compute the mole fraction of Site1 + nMoleculesOld1[id] = dvector(ispecies+nspecies,id); + nMolecules1[id] = dvector(ispecies,id); + fractionOld1[id] = nMoleculesOld1[id]/nTotalold[id]; + fraction1[id] = nMolecules1[id]/nTotal[id]; + } + } + + // If Site2 matches a pure species, then grab the parameters + if (isite2 == d_params[iparam].ispecies) + { + #pragma ivdep + for (int id = idx_begin; id < idx_end; ++id) + { + rm2_old[id] = d_params[iparam].rm; + rm2[id] = d_params[iparam].rm; + epsilon2_old[id] = d_params[iparam].epsilon; + epsilon2[id] = d_params[iparam].epsilon; + alpha2_old[id] = d_params[iparam].alpha; + alpha2[id] = d_params[iparam].alpha; + + // Compute the mole fraction of Site2 + nMoleculesOld2[id] = dvector(ispecies+nspecies,id); + nMolecules2[id] = dvector(ispecies,id); + fractionOld2[id] = nMoleculesOld2[id]/nTotalold[id]; + fraction2[id] = nMolecules2[id]/nTotal[id]; + } + } + + // If Site1 or Site2 matches is a fluid, then compute the paramters + if (isOneFluidApprox(isite1) || isOneFluidApprox(isite2)) { + if (isite1 == d_params[iparam].ispecies || isite2 == d_params[iparam].ispecies) continue; + + const double rmi = d_params[iparam].rm; + const double epsiloni = d_params[iparam].epsilon; + const double alphai = d_params[iparam].alpha; + + #pragma ivdep + for (int id = idx_begin; id < idx_end; ++id) + { + if(nMoleculesOFA[id] 0.0){ + rm3_old[id] += xMolei_old[id]*xMolej_old*rm3ij; + epsilon_old[id] += xMolei_old[id]*xMolej_old*rm3ij*epsilonij; + alpha_old[id] += xMolei_old[id]*xMolej_old*rm3ij*epsilonij*alphaij; + } + if(fractionOFA[id] > 0.0){ + rm3[id] += xMolei[id]*xMolej*rm3ij; + epsilon[id] += xMolei[id]*xMolej*rm3ij*epsilonij; + alpha[id] += xMolei[id]*xMolej*rm3ij*epsilonij*alphaij; + } + } + } + } + } + + if (isOneFluidApprox(isite1)) + { + #pragma ivdep + for (int id = idx_begin; id < idx_end; ++id) + { + rm1[id] = cbrt(rm3[id]); + if(rm1[id] < MY_EPSILON) { + rm1[id] = 0.0; + epsilon1[id] = 0.0; + alpha1[id] = 0.0; + } else { + epsilon1[id] = epsilon[id] / rm3[id]; + alpha1[id] = alpha[id] / epsilon1[id] / rm3[id]; + } + nMolecules1[id] = 1.0-(nTotal[id]-nMoleculesOFA[id]); + fraction1[id] = fractionOFA[id]; + + rm1_old[id] = cbrt(rm3_old[id]); + if(rm1_old[id] < MY_EPSILON) { + rm1_old[id] = 0.0; + epsilon1_old[id] = 0.0; + alpha1_old[id] = 0.0; + } else { + epsilon1_old[id] = epsilon_old[id] / rm3_old[id]; + alpha1_old[id] = alpha_old[id] / epsilon1_old[id] / rm3_old[id]; + } + nMoleculesOld1[id] = 1.0-(nTotalold[id]-nMoleculesOFAold[id]); + fractionOld1[id] = fractionOFAold[id]; + } + + if(scalingFlag == EXPONENT) { + #pragma ivdep + for (int id = idx_begin; id < idx_end; ++id) + { + exponentScaling(nMoleculesOFA[id],epsilon1[id],rm1[id]); + exponentScaling(nMoleculesOFAold[id],epsilon1_old[id],rm1_old[id]); + } + } + else if(scalingFlag == POLYNOMIAL){ + #pragma ivdep + for (int id = idx_begin; id < idx_end; ++id) + { + polynomialScaling(nMoleculesOFA[id],alpha1[id],epsilon1[id],rm1[id]); + polynomialScaling(nMoleculesOFAold[id],alpha1_old[id],epsilon1_old[id],rm1_old[id]); + } + } + } + + if (isOneFluidApprox(isite2)) + { + #pragma ivdep + for (int id = idx_begin; id < idx_end; ++id) + { + rm2[id] = cbrt(rm3[id]); + if(rm2[id] < MY_EPSILON) { + rm2[id] = 0.0; + epsilon2[id] = 0.0; + alpha2[id] = 0.0; + } else { + epsilon2[id] = epsilon[id] / rm3[id]; + alpha2[id] = alpha[id] / epsilon2[id] / rm3[id]; + } + nMolecules2[id] = 1.0-(nTotal[id]-nMoleculesOFA[id]); + fraction2[id] = fractionOFA[id]; + + rm2_old[id] = cbrt(rm3_old[id]); + if(rm2_old[id] < MY_EPSILON) { + rm2_old[id] = 0.0; + epsilon2_old[id] = 0.0; + alpha2_old[id] = 0.0; + } else { + epsilon2_old[id] = epsilon_old[id] / rm3_old[id]; + alpha2_old[id] = alpha_old[id] / epsilon2_old[id] / rm3_old[id]; + } + nMoleculesOld2[id] = 1.0-(nTotalold[id]-nMoleculesOFAold[id]); + fractionOld2[id] = fractionOFAold[id]; + } + + if(scalingFlag == EXPONENT){ + #pragma ivdep + for (int id = idx_begin; id < idx_end; ++id) + { + exponentScaling(nMoleculesOFA[id],epsilon2[id],rm2[id]); + exponentScaling(nMoleculesOFAold[id],epsilon2_old[id],rm2_old[id]); + } + } + else if(scalingFlag == POLYNOMIAL){ + #pragma ivdep + for (int id = idx_begin; id < idx_end; ++id) + { + polynomialScaling(nMoleculesOFA[id],alpha2[id],epsilon2[id],rm2[id]); + polynomialScaling(nMoleculesOFAold[id],alpha2_old[id],epsilon2_old[id],rm2_old[id]); + } + } + } + + // Check that no fractions are less than zero + #pragma omp simd reduction(+:errorFlag2) + for (int id = idx_begin; id < idx_end; ++id) + { + if(fraction1[id] < 0.0 || nMolecules1[id] < 0.0){ + if(fraction1[id] < -MY_EPSILON || nMolecules1[id] < -MY_EPSILON){ + errorFlag2 = 2; + } + nMolecules1[id] = 0.0; + fraction1[id] = 0.0; + } + if(fraction2[id] < 0.0 || nMolecules2[id] < 0.0){ + if(fraction2[id] < -MY_EPSILON || nMolecules2[id] < -MY_EPSILON){ + errorFlag2 = 2; + } + nMolecules2[id] = 0.0; + fraction2[id] = 0.0; + } + if(fractionOld1[id] < 0.0 || nMoleculesOld1[id] < 0.0){ + if(fractionOld1[id] < -MY_EPSILON || nMoleculesOld1[id] < -MY_EPSILON){ + errorFlag2 = 2; + } + nMoleculesOld1[id] = 0.0; + fractionOld1[id] = 0.0; + } + if(fractionOld2[id] < 0.0 || nMoleculesOld2[id] < 0.0){ + if(fractionOld2[id] < -MY_EPSILON || nMoleculesOld2[id] < -MY_EPSILON){ + errorFlag2 = 2; + } + nMoleculesOld2[id] = 0.0; + fractionOld2[id] = 0.0; + } + + if(fractionalWeighting){ + mixWtSite1old[id] = fractionOld1[id]; + mixWtSite1[id] = fraction1[id]; + mixWtSite2old[id] = fractionOld2[id]; + mixWtSite2[id] = fraction2[id]; + } else { + mixWtSite1old[id] = nMoleculesOld1[id]; + mixWtSite1[id] = nMolecules1[id]; + mixWtSite2old[id] = nMoleculesOld2[id]; + mixWtSite2[id] = nMolecules2[id]; + } + } + + } // end parallel region + + if (errorFlag1 > 0) + errorFlag = 1; + + if (errorFlag2 > 0) + errorFlag = 2; +} +#endif + +/* ---------------------------------------------------------------------- */ + +template +KOKKOS_INLINE_FUNCTION +void PairExp6rxKokkos::exponentScaling(double phi, double &epsilon, double &rm) const +{ + double powfuch; + + if(exponentEpsilon < 0.0){ + powfuch = pow(phi,-exponentEpsilon); + if(powfuch +KOKKOS_INLINE_FUNCTION +void PairExp6rxKokkos::polynomialScaling(double phi, double &alpha, double &epsilon, double &rm) const +{ + double phi2 = phi*phi; + double phi3 = phi2*phi; + double phi4 = phi2*phi2; + double phi5 = phi2*phi3; + + alpha = (s_coeffAlpha[0]*phi5 + s_coeffAlpha[1]*phi4 + s_coeffAlpha[2]*phi3 + s_coeffAlpha[3]*phi2 + s_coeffAlpha[4]*phi + s_coeffAlpha[5]); + epsilon *= (s_coeffEps[0]*phi5 + s_coeffEps[1]*phi4 + s_coeffEps[2]*phi3 + s_coeffEps[3]*phi2 + s_coeffEps[4]*phi + s_coeffEps[5]); + rm *= (s_coeffRm[0]*phi5 + s_coeffRm[1]*phi4 + s_coeffRm[2]*phi3 + s_coeffRm[3]*phi2 + s_coeffRm[4]*phi + s_coeffRm[5]); +} + +/* ---------------------------------------------------------------------- */ + +template +KOKKOS_INLINE_FUNCTION +double PairExp6rxKokkos::func_rin(const double &alpha) const +{ + double function; + + const double a = 3.7682065; + const double b = -1.4308614; + + function = a+b*sqrt(alpha); + function = expValue(function); + + return function; +} + +/* ---------------------------------------------------------------------- */ + +template +KOKKOS_INLINE_FUNCTION +double PairExp6rxKokkos::expValue(double value) const +{ + double returnValue; + if(value < DBL_MIN_EXP) returnValue = 0.0; + else returnValue = exp(value); + + return returnValue; +} + +/* ---------------------------------------------------------------------- */ + +template +template +KOKKOS_INLINE_FUNCTION +void PairExp6rxKokkos::ev_tally(EV_FLOAT &ev, const int &i, const int &j, + const F_FLOAT &epair, const F_FLOAT &fpair, const F_FLOAT &delx, + const F_FLOAT &dely, const F_FLOAT &delz) const +{ + const int EFLAG = eflag; + const int VFLAG = vflag_either; + + // The eatom and vatom arrays are atomic for Half/Thread neighbor style + Kokkos::View::value> > v_eatom = k_eatom.view(); + Kokkos::View::value> > v_vatom = k_vatom.view(); + + if (EFLAG) { + if (eflag_atom) { + const E_FLOAT epairhalf = 0.5 * epair; + if (NEIGHFLAG!=FULL) { + if (NEWTON_PAIR || i < nlocal) v_eatom[i] += epairhalf; + if (NEWTON_PAIR || j < nlocal) v_eatom[j] += epairhalf; + } else { + v_eatom[i] += epairhalf; + } + } + } + + if (VFLAG) { + const E_FLOAT v0 = delx*delx*fpair; + const E_FLOAT v1 = dely*dely*fpair; + const E_FLOAT v2 = delz*delz*fpair; + const E_FLOAT v3 = delx*dely*fpair; + const E_FLOAT v4 = delx*delz*fpair; + const E_FLOAT v5 = dely*delz*fpair; + + if (vflag_global) { + if (NEIGHFLAG!=FULL) { + if (NEWTON_PAIR || i < nlocal) { + ev.v[0] += 0.5*v0; + ev.v[1] += 0.5*v1; + ev.v[2] += 0.5*v2; + ev.v[3] += 0.5*v3; + ev.v[4] += 0.5*v4; + ev.v[5] += 0.5*v5; + } + if (NEWTON_PAIR || j < nlocal) { + ev.v[0] += 0.5*v0; + ev.v[1] += 0.5*v1; + ev.v[2] += 0.5*v2; + ev.v[3] += 0.5*v3; + ev.v[4] += 0.5*v4; + ev.v[5] += 0.5*v5; + } + } else { + ev.v[0] += 0.5*v0; + ev.v[1] += 0.5*v1; + ev.v[2] += 0.5*v2; + ev.v[3] += 0.5*v3; + ev.v[4] += 0.5*v4; + ev.v[5] += 0.5*v5; + } + } + + if (vflag_atom) { + if (NEIGHFLAG!=FULL) { + if (NEWTON_PAIR || i < nlocal) { + v_vatom(i,0) += 0.5*v0; + v_vatom(i,1) += 0.5*v1; + v_vatom(i,2) += 0.5*v2; + v_vatom(i,3) += 0.5*v3; + v_vatom(i,4) += 0.5*v4; + v_vatom(i,5) += 0.5*v5; + } + if (NEWTON_PAIR || j < nlocal) { + v_vatom(j,0) += 0.5*v0; + v_vatom(j,1) += 0.5*v1; + v_vatom(j,2) += 0.5*v2; + v_vatom(j,3) += 0.5*v3; + v_vatom(j,4) += 0.5*v4; + v_vatom(j,5) += 0.5*v5; + } + } else { + v_vatom(i,0) += 0.5*v0; + v_vatom(i,1) += 0.5*v1; + v_vatom(i,2) += 0.5*v2; + v_vatom(i,3) += 0.5*v3; + v_vatom(i,4) += 0.5*v4; + v_vatom(i,5) += 0.5*v5; + } + } + } +} + +/* ---------------------------------------------------------------------- */ + +template +KOKKOS_INLINE_FUNCTION +int PairExp6rxKokkos::sbmask(const int& j) const { + return j >> SBBITS & 3; +} + +namespace LAMMPS_NS { +template class PairExp6rxKokkos; +#ifdef KOKKOS_HAVE_CUDA +template class PairExp6rxKokkos; +#endif +} diff --git a/src/KOKKOS/pair_exp6_rx_kokkos.h b/src/KOKKOS/pair_exp6_rx_kokkos.h new file mode 100644 index 0000000000000000000000000000000000000000..5e44048ae2cd461e8e5f6ad8e28d887ed8085c75 --- /dev/null +++ b/src/KOKKOS/pair_exp6_rx_kokkos.h @@ -0,0 +1,280 @@ +/* ---------------------------------------------------------------------- + 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(exp6/rx/kk,PairExp6rxKokkos) +PairStyle(exp6/rx/kk/device,PairExp6rxKokkos) +PairStyle(exp6/rx/kk/host,PairExp6rxKokkos) + +#else + +#ifndef LMP_PAIR_EXP6_RX_KOKKOS_H +#define LMP_PAIR_EXP6_RX_KOKKOS_H + +#include "pair_exp6_rx.h" +#include "kokkos_type.h" +#include "pair_kokkos.h" + +namespace LAMMPS_NS { + +// Create a structure to hold the parameter data for all +// local and neighbor particles. Pack inside this struct +// to avoid any name clashes. + +template +struct PairExp6ParamDataTypeKokkos +{ + typedef ArrayTypes AT; + + int n; + typename AT::t_float_1d epsilon1, alpha1, rm1, mixWtSite1, + epsilon2, alpha2, rm2, mixWtSite2, + epsilonOld1, alphaOld1, rmOld1, mixWtSite1old, + epsilonOld2, alphaOld2, rmOld2, mixWtSite2old; + + // Default constructor -- nullify everything. + PairExp6ParamDataTypeKokkos(void) + : n(0), epsilon1(NULL), alpha1(NULL), rm1(NULL), mixWtSite1(NULL), + epsilon2(NULL), alpha2(NULL), rm2(NULL), mixWtSite2(NULL), + epsilonOld1(NULL), alphaOld1(NULL), rmOld1(NULL), mixWtSite1old(NULL), + epsilonOld2(NULL), alphaOld2(NULL), rmOld2(NULL), mixWtSite2old(NULL) + {} +}; + +template +struct PairExp6ParamDataTypeKokkosVect +{ + typedef ArrayTypes AT; + + typename AT::t_float_1d epsilon, rm3, alpha, xMolei, epsilon_old, rm3_old, + alpha_old, xMolei_old, fractionOFA, fraction1, + fraction2, nMoleculesOFA, nMolecules1, nMolecules2, + nTotal, fractionOFAold, fractionOld1, fractionOld2, + nMoleculesOFAold, nMoleculesOld1, nMoleculesOld2, + nTotalold; + + // Default constructor -- nullify everything. + PairExp6ParamDataTypeKokkosVect(void) + : epsilon(NULL), rm3(NULL), alpha(NULL), xMolei(NULL), epsilon_old(NULL), rm3_old(NULL), + alpha_old(NULL), xMolei_old(NULL), fractionOFA(NULL), fraction1(NULL), + fraction2(NULL), nMoleculesOFA(NULL), nMolecules1(NULL), nMolecules2(NULL), + nTotal(NULL), fractionOFAold(NULL), fractionOld1(NULL), fractionOld2(NULL), + nMoleculesOFAold(NULL), nMoleculesOld1(NULL), nMoleculesOld2(NULL), + nTotalold(NULL) + {} +}; + +struct TagPairExp6rxZeroMixingWeights{}; +struct TagPairExp6rxgetMixingWeights{}; + +template +struct TagPairExp6rxCompute{}; + +template +struct TagPairExp6rxComputeNoAtomics{}; + +struct TagPairExp6rxCollapseDupViews{}; +struct TagPairExp6rxZeroDupViews{}; + +template +class PairExp6rxKokkos : public PairExp6rx { + public: + typedef DeviceType device_type; + typedef ArrayTypes AT; + typedef EV_FLOAT value_type; + + PairExp6rxKokkos(class LAMMPS *); + virtual ~PairExp6rxKokkos(); + void compute(int, int); + void coeff(int, char **); + void init_style(); + + KOKKOS_INLINE_FUNCTION + void operator()(TagPairExp6rxZeroMixingWeights, const int&) const; + + KOKKOS_INLINE_FUNCTION + void operator()(TagPairExp6rxgetMixingWeights, const int&) const; + + template + KOKKOS_INLINE_FUNCTION + void operator()(TagPairExp6rxCompute, const int&, EV_FLOAT&) const; + + template + KOKKOS_INLINE_FUNCTION + void operator()(TagPairExp6rxCompute, const int&) const; + + template + KOKKOS_INLINE_FUNCTION + void operator()(TagPairExp6rxComputeNoAtomics, const int&, EV_FLOAT&) const; + + template + KOKKOS_INLINE_FUNCTION + void vectorized_operator(const int&, EV_FLOAT&) const; + + template + KOKKOS_INLINE_FUNCTION + void operator()(TagPairExp6rxComputeNoAtomics, const int&) const; + + KOKKOS_INLINE_FUNCTION + void operator()(TagPairExp6rxCollapseDupViews, const int&) const; + + KOKKOS_INLINE_FUNCTION + void operator()(TagPairExp6rxZeroDupViews, const int&) const; + + template + KOKKOS_INLINE_FUNCTION + void ev_tally(EV_FLOAT &ev, const int &i, const int &j, + const F_FLOAT &epair, const F_FLOAT &fpair, const F_FLOAT &delx, + const F_FLOAT &dely, const F_FLOAT &delz) const; + + KOKKOS_INLINE_FUNCTION + int sbmask(const int& j) const; + + protected: + int eflag,vflag; + int nlocal,newton_pair,neighflag; + double special_lj[4]; + int num_threads,ntypes; + + typename AT::t_x_array_randomread x; + typename AT::t_f_array f; + typename AT::t_int_1d_randomread type; + typename AT::t_efloat_1d uCG, uCGnew; + typename AT::t_float_2d dvector; + + typedef Kokkos::View t_f_array_thread; + typedef Kokkos::View t_efloat_1d_thread; + + t_f_array_thread t_f; + t_efloat_1d_thread t_uCG, t_uCGnew; + + DAT::tdual_efloat_1d k_eatom; + DAT::tdual_virial_array k_vatom; + typename AT::t_efloat_1d d_eatom; + typename AT::t_virial_array d_vatom; + + DAT::tdual_int_scalar k_error_flag; + + typename AT::t_neighbors_2d d_neighbors; + typename AT::t_int_1d_randomread d_ilist; + typename AT::t_int_1d_randomread d_numneigh; + + PairExp6ParamDataTypeKokkos PairExp6ParamData; + PairExp6ParamDataTypeKokkosVect PairExp6ParamDataVect; + + void allocate(); + DAT::tdual_int_1d k_mol2param; // mapping from molecule to parameters + typename AT::t_int_1d_randomread d_mol2param; + + typedef Kokkos::DualView tdual_param_1d; + typedef typename tdual_param_1d::t_dev_const_randomread t_param_1d_randomread; + + tdual_param_1d k_params; // parameter set for an I-J-K interaction + t_param_1d_randomread d_params; // parameter set for an I-J-K interaction + + typename ArrayTypes::tdual_ffloat_2d k_cutsq; + typename ArrayTypes::t_ffloat_2d d_cutsq; + + void read_file(char *); + void setup(); + + KOKKOS_INLINE_FUNCTION + void getMixingWeights(int, double &, double &, double &, double &, double &, double &, double &, double &, double &, double &, double &, double &, double &, double &, double &, double &) const; + + template + void getMixingWeightsVect(const int, int, ArrayT &, ArrayT &, ArrayT &, ArrayT &, ArrayT &, ArrayT &, ArrayT &, ArrayT &, ArrayT &, ArrayT &, ArrayT &, ArrayT &, ArrayT &, ArrayT &, ArrayT &, ArrayT &) const; + + KOKKOS_INLINE_FUNCTION + void exponentScaling(double, double &, double &) const; + + KOKKOS_INLINE_FUNCTION + void polynomialScaling(double, double &, double &, double &) const; + + double s_coeffAlpha[6],s_coeffEps[6],s_coeffRm[6]; + + KOKKOS_INLINE_FUNCTION + double func_rin(const double &) const; + + KOKKOS_INLINE_FUNCTION + double expValue(const double) const; + + friend void pair_virial_fdotr_compute(PairExp6rxKokkos*); +}; + +} + +#endif +#endif + +/* ERROR/WARNING messages: + +E: alpha_ij is 6.0 in pair exp6 + +Self-explanatory + +E: Illegal ... command + +Self-explanatory. Check the input script syntax and compare to the +documentation for the command. You can use -echo screen as a +command-line option when running LAMMPS to see the offending line. + +E: Incorrect args for pair coefficients + +Self-explanatory. Check the input script or data file. + +E: PairExp6rxKokkos requires a fix rx command + +The fix rx command must come before the pair style command in the input file + +E: There are no rx species specified + +There must be at least one species specified through the fix rx command + +E: Site1 name not recognized in pair coefficients + +The site1 keyword does not match the species keywords specified throug the fix rx command + +E: All pair coeffs are not set + +All pair coefficients must be set in the data file or by the +pair_coeff command before running a simulation. + +E: Cannot open exp6/rx potential file %s + +Self-explanatory + +E: Incorrect format in exp6/rx potential file + +Self-explanatory + +E: Illegal exp6/rx parameters. Rm and Epsilon must be greater than zero. Alpha cannot be negative. + +Self-explanatory + +E: Illegal exp6/rx parameters. Interaction potential does not exist. + +Self-explanatory + +E: Potential file has duplicate entry. + +Self-explanatory + +E: The number of molecules in CG particle is less than 10*DBL_EPSILON. + +Self-explanatory. Check the species concentrations have been properly set +and check the reaction kinetic solver parameters in fix rx to more for +sufficient accuracy. + + +*/ diff --git a/src/KOKKOS/pair_hybrid_kokkos.cpp b/src/KOKKOS/pair_hybrid_kokkos.cpp new file mode 100644 index 0000000000000000000000000000000000000000..337b56c6cee7e11e3a03dcd810bd62e161bb6813 --- /dev/null +++ b/src/KOKKOS/pair_hybrid_kokkos.cpp @@ -0,0 +1,159 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#include +#include +#include +#include +#include "pair_hybrid_kokkos.h" +#include "atom_kokkos.h" +#include "force.h" +#include "pair.h" +#include "neighbor.h" +#include "neigh_request.h" +#include "update.h" +#include "comm.h" +#include "memory.h" +#include "error.h" +#include "respa.h" +#include "atom_masks.h" + +using namespace LAMMPS_NS; + +/* ---------------------------------------------------------------------- */ + +PairHybridKokkos::PairHybridKokkos(LAMMPS *lmp) : PairHybrid(lmp) +{ + atomKK = (AtomKokkos *) atom; + + // prevent overlapping host/device computation, which isn't + // yet supported by pair_hybrid_kokkos + execution_space = Device; + + datamask_read = EMPTY_MASK; + datamask_modify = EMPTY_MASK; +} + +/* ---------------------------------------------------------------------- */ + +PairHybridKokkos::~PairHybridKokkos() +{ + +} + +/* ---------------------------------------------------------------------- + call each sub-style's compute() or compute_outer() function + accumulate sub-style global/peratom energy/virial in hybrid + for global vflag = 1: + each sub-style computes own virial[6] + sum sub-style virial[6] to hybrid's virial[6] + for global vflag = 2: + call sub-style with adjusted vflag to prevent it calling + virial_fdotr_compute() + hybrid calls virial_fdotr_compute() on final accumulated f +------------------------------------------------------------------------- */ + +void PairHybridKokkos::compute(int eflag, int vflag) +{ + int i,j,m,n; + + // if no_virial_fdotr_compute is set and global component of + // incoming vflag = 2, then + // reset vflag as if global component were 1 + // necessary since one or more sub-styles cannot compute virial as F dot r + + int neighflag = lmp->kokkos->neighflag; + if (neighflag == FULL) no_virial_fdotr_compute = 1; + + if (no_virial_fdotr_compute && vflag % 4 == 2) vflag = 1 + vflag/4 * 4; + + if (eflag || vflag) ev_setup(eflag,vflag); + else evflag = vflag_fdotr = eflag_global = vflag_global = + eflag_atom = vflag_atom = 0; + + // check if global component of incoming vflag = 2 + // if so, reset vflag passed to substyle as if it were 0 + // necessary so substyle will not invoke virial_fdotr_compute() + + int vflag_substyle; + if (vflag % 4 == 2) vflag_substyle = vflag/4 * 4; + else vflag_substyle = vflag; + + double *saved_special = save_special(); + + // check if we are running with r-RESPA using the hybrid keyword + + Respa *respa = NULL; + respaflag = 0; + if (strstr(update->integrate_style,"respa")) { + respa = (Respa *) update->integrate; + if (respa->nhybrid_styles > 0) respaflag = 1; + } + + for (m = 0; m < nstyles; m++) { + + set_special(m); + + if (!respaflag || (respaflag && respa->hybrid_compute[m])) { + + // invoke compute() unless compute flag is turned off or + // outerflag is set and sub-style has a compute_outer() method + + if (styles[m]->compute_flag == 0) continue; + atomKK->sync(styles[m]->execution_space,styles[m]->datamask_read); + if (outerflag && styles[m]->respa_enable) + styles[m]->compute_outer(eflag,vflag_substyle); + else styles[m]->compute(eflag,vflag_substyle); + atomKK->modified(styles[m]->execution_space,styles[m]->datamask_modify); + } + + restore_special(saved_special); + + // jump to next sub-style if r-RESPA does not want global accumulated data + + if (respaflag && !respa->tally_global) continue; + + if (eflag_global) { + eng_vdwl += styles[m]->eng_vdwl; + eng_coul += styles[m]->eng_coul; + } + if (vflag_global) { + for (n = 0; n < 6; n++) virial[n] += styles[m]->virial[n]; + } + if (eflag_atom) { + n = atom->nlocal; + if (force->newton_pair) n += atom->nghost; + double *eatom_substyle = styles[m]->eatom; + for (i = 0; i < n; i++) eatom[i] += eatom_substyle[i]; + } + if (vflag_atom) { + n = atom->nlocal; + if (force->newton_pair) n += atom->nghost; + double **vatom_substyle = styles[m]->vatom; + for (i = 0; i < n; i++) + for (j = 0; j < 6; j++) + vatom[i][j] += vatom_substyle[i][j]; + } + } + + delete [] saved_special; + + // perform virial_fdotr on device + + atomKK->sync(Device,X_MASK|F_MASK); + x = atomKK->k_x.view(); + f = atomKK->k_f.view(); + + if (vflag_fdotr) + pair_virial_fdotr_compute(this); +} diff --git a/src/KOKKOS/pair_hybrid_kokkos.h b/src/KOKKOS/pair_hybrid_kokkos.h new file mode 100644 index 0000000000000000000000000000000000000000..62d325925b87e188245feb813279c26871769caa --- /dev/null +++ b/src/KOKKOS/pair_hybrid_kokkos.h @@ -0,0 +1,118 @@ +/* -*- 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(hybrid/kk,PairHybridKokkos) + +#else + +#ifndef LMP_PAIR_HYBRID_KOKKOS_H +#define LMP_PAIR_HYBRID_KOKKOS_H + +#include +#include "pair_hybrid.h" +#include "pair_kokkos.h" +#include "kokkos_type.h" + +namespace LAMMPS_NS { + +class PairHybridKokkos : public PairHybrid { + friend class FixGPU; + friend class FixIntel; + friend class FixOMP; + friend class Force; + friend class Respa; + friend class Info; + public: + typedef LMPDeviceType device_type; + + PairHybridKokkos(class LAMMPS *); + virtual ~PairHybridKokkos(); + void compute(int, int); + + private: + DAT::t_x_array_randomread x; + DAT::t_f_array f; + friend void pair_virial_fdotr_compute(PairHybridKokkos*); +}; + +} + +#endif +#endif + +/* ERROR/WARNING messages: + +E: Illegal ... command + +Self-explanatory. Check the input script syntax and compare to the +documentation for the command. You can use -echo screen as a +command-line option when running LAMMPS to see the offending line. + +E: Pair style hybrid cannot have hybrid as an argument + +Self-explanatory. + +E: Pair style hybrid cannot have none as an argument + +Self-explanatory. + +E: Incorrect args for pair coefficients + +Self-explanatory. Check the input script or data file. + +E: Pair coeff for hybrid has invalid style + +Style in pair coeff must have been listed in pair_style command. + +E: Pair hybrid sub-style is not used + +No pair_coeff command used a sub-style specified in the pair_style +command. + +E: Pair_modify special setting for pair hybrid incompatible with global special_bonds setting + +Cannot override a setting of 0.0 or 1.0 or change a setting between +0.0 and 1.0. + +E: All pair coeffs are not set + +All pair coefficients must be set in the data file or by the +pair_coeff command before running a simulation. + +E: Invoked pair single on pair style none + +A command (e.g. a dump) attempted to invoke the single() function on a +pair style none, which is illegal. You are probably attempting to +compute per-atom quantities with an undefined pair style. + +E: Pair hybrid sub-style does not support single call + +You are attempting to invoke a single() call on a pair style +that doesn't support it. + +E: Pair hybrid single calls do not support per sub-style special bond values + +Self-explanatory. + +E: Unknown pair_modify hybrid sub-style + +The choice of sub-style is unknown. + +E: Coulomb cutoffs of pair hybrid sub-styles do not match + +If using a Kspace solver, all Coulomb cutoffs of long pair styles must +be the same. + +*/ diff --git a/src/KOKKOS/pair_hybrid_overlay_kokkos.cpp b/src/KOKKOS/pair_hybrid_overlay_kokkos.cpp new file mode 100644 index 0000000000000000000000000000000000000000..aa5d8951552889d492dba8405924d495eb2d63c4 --- /dev/null +++ b/src/KOKKOS/pair_hybrid_overlay_kokkos.cpp @@ -0,0 +1,107 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#include +#include +#include +#include "pair_hybrid_overlay_kokkos.h" +#include "atom.h" +#include "force.h" +#include "neighbor.h" +#include "neigh_request.h" +#include "error.h" + +using namespace LAMMPS_NS; + +/* ---------------------------------------------------------------------- */ + +PairHybridOverlayKokkos::PairHybridOverlayKokkos(LAMMPS *lmp) : PairHybridKokkos(lmp) {} + +/* ---------------------------------------------------------------------- + set coeffs for one or more type pairs +------------------------------------------------------------------------- */ + +void PairHybridOverlayKokkos::coeff(int narg, char **arg) +{ + if (narg < 3) error->all(FLERR,"Incorrect args for pair coefficients"); + if (!allocated) allocate(); + + int ilo,ihi,jlo,jhi; + force->bounds(FLERR,arg[0],atom->ntypes,ilo,ihi); + force->bounds(FLERR,arg[1],atom->ntypes,jlo,jhi); + + // 3rd arg = pair sub-style name + // 4th arg = pair sub-style index if name used multiple times + // allow for "none" as valid sub-style name + + int multflag; + int m; + + for (m = 0; m < nstyles; m++) { + multflag = 0; + if (strcmp(arg[2],keywords[m]) == 0) { + if (multiple[m]) { + multflag = 1; + if (narg < 4) error->all(FLERR,"Incorrect args for pair coefficients"); + if (!isdigit(arg[3][0])) + error->all(FLERR,"Incorrect args for pair coefficients"); + int index = force->inumeric(FLERR,arg[3]); + if (index == multiple[m]) break; + else continue; + } else break; + } + } + + int none = 0; + if (m == nstyles) { + if (strcmp(arg[2],"none") == 0) none = 1; + else error->all(FLERR,"Pair coeff for hybrid has invalid style"); + } + + // move 1st/2nd args to 2nd/3rd args + // if multflag: move 1st/2nd args to 3rd/4th args + // just copy ptrs, since arg[] points into original input line + + arg[2+multflag] = arg[1]; + arg[1+multflag] = arg[0]; + + // invoke sub-style coeff() starting with 1st remaining arg + + if (!none) styles[m]->coeff(narg-1-multflag,&arg[1+multflag]); + + // set setflag and which type pairs map to which sub-style + // if sub-style is none: set hybrid subflag, wipe out map + // else: set hybrid setflag & map only if substyle setflag is set + // if sub-style is new for type pair, add as multiple mapping + // if sub-style exists for type pair, don't add, just update coeffs + + int count = 0; + for (int i = ilo; i <= ihi; i++) { + for (int j = MAX(jlo,i); j <= jhi; j++) { + if (none) { + setflag[i][j] = 1; + nmap[i][j] = 0; + count++; + } else if (styles[m]->setflag[i][j]) { + int k; + for (k = 0; k < nmap[i][j]; k++) + if (map[i][j][k] == m) break; + if (k == nmap[i][j]) map[i][j][nmap[i][j]++] = m; + setflag[i][j] = 1; + count++; + } + } + } + + if (count == 0) error->all(FLERR,"Incorrect args for pair coefficients"); +} diff --git a/src/KOKKOS/pair_hybrid_overlay_kokkos.h b/src/KOKKOS/pair_hybrid_overlay_kokkos.h new file mode 100644 index 0000000000000000000000000000000000000000..6bec57c4536395141bff4b1c0247bcf9a1599531 --- /dev/null +++ b/src/KOKKOS/pair_hybrid_overlay_kokkos.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. +------------------------------------------------------------------------- */ + +#ifdef PAIR_CLASS + +PairStyle(hybrid/overlay/kk,PairHybridOverlayKokkos) + +#else + +#ifndef LMP_PAIR_HYBRID_OVERLAY_KOKKOS_H +#define LMP_PAIR_HYBRID_OVERLAY_KOKKOS_H + +#include "pair_hybrid_kokkos.h" + +namespace LAMMPS_NS { + +class PairHybridOverlayKokkos : public PairHybridKokkos { + public: + PairHybridOverlayKokkos(class LAMMPS *); + virtual ~PairHybridOverlayKokkos() {} + void coeff(int, char **); +}; + +} + +#endif +#endif + +/* ERROR/WARNING messages: + +E: Incorrect args for pair coefficients + +Self-explanatory. Check the input script or data file. + +E: Pair coeff for hybrid has invalid style + +Style in pair coeff must have been listed in pair_style command. + +*/ diff --git a/src/KOKKOS/pair_kokkos.h b/src/KOKKOS/pair_kokkos.h index b0614a934b4427d67e451af26e6e10e8edcc3864..f0e357270c1d5b8340c570f4a1d5be4f26d36a27 100644 --- a/src/KOKKOS/pair_kokkos.h +++ b/src/KOKKOS/pair_kokkos.h @@ -513,6 +513,7 @@ EV_FLOAT pair_compute (PairStyle* fpair, NeighListKokkos struct PairVirialFDotRCompute { + typedef DeviceType device_type; typedef ArrayTypes AT; typedef EV_FLOAT value_type; typename AT::t_x_array_const_um x; diff --git a/src/KOKKOS/pair_lj_charmm_coul_charmm_implicit_kokkos.cpp b/src/KOKKOS/pair_lj_charmm_coul_charmm_implicit_kokkos.cpp index c00b1fbae43684b720a655b6a53597d0bf3a7330..e7cf7ba42ad80ba7166322a2dd1999c3e3c19f3c 100644 --- a/src/KOKKOS/pair_lj_charmm_coul_charmm_implicit_kokkos.cpp +++ b/src/KOKKOS/pair_lj_charmm_coul_charmm_implicit_kokkos.cpp @@ -326,7 +326,7 @@ void PairLJCharmmCoulCharmmImplicitKokkos::allocate() d_cut_coulsq = k_cut_coulsq.template view(); k_params = Kokkos::DualView("PairLJCharmmCoulCharmmImplicit::params",n+1,n+1); - params = k_params.d_view; + params = k_params.template view(); } template diff --git a/src/KOKKOS/pair_lj_charmm_coul_charmm_kokkos.cpp b/src/KOKKOS/pair_lj_charmm_coul_charmm_kokkos.cpp index c88c7db2e3f614a97b57d0db6b8d9d9992b70fb2..a456d6e27600c36911da43be21f8151a91943148 100644 --- a/src/KOKKOS/pair_lj_charmm_coul_charmm_kokkos.cpp +++ b/src/KOKKOS/pair_lj_charmm_coul_charmm_kokkos.cpp @@ -327,7 +327,7 @@ void PairLJCharmmCoulCharmmKokkos::allocate() d_cut_coulsq = k_cut_coulsq.template view(); k_params = Kokkos::DualView("PairLJCharmmCoulCharmm::params",n+1,n+1); - params = k_params.d_view; + params = k_params.template view(); } template diff --git a/src/KOKKOS/pair_lj_charmm_coul_long_kokkos.cpp b/src/KOKKOS/pair_lj_charmm_coul_long_kokkos.cpp index 8ebc5f87f3beb0e1266e4c8039ae43f29e028c1f..dffbbb638ff0d1f25819d99b504e58d2d9eae300 100644 --- a/src/KOKKOS/pair_lj_charmm_coul_long_kokkos.cpp +++ b/src/KOKKOS/pair_lj_charmm_coul_long_kokkos.cpp @@ -347,7 +347,7 @@ void PairLJCharmmCoulLongKokkos::allocate() d_cut_coulsq = k_cut_coulsq.template view(); k_params = Kokkos::DualView("PairLJCharmmCoulLong::params",n+1,n+1); - params = k_params.d_view; + params = k_params.template view(); } template diff --git a/src/KOKKOS/pair_lj_class2_coul_cut_kokkos.cpp b/src/KOKKOS/pair_lj_class2_coul_cut_kokkos.cpp index 936eae79d518e1735243209916ffee90e71112e2..0081aca4f15ddf196ceb6d104ce75798fa55c736 100644 --- a/src/KOKKOS/pair_lj_class2_coul_cut_kokkos.cpp +++ b/src/KOKKOS/pair_lj_class2_coul_cut_kokkos.cpp @@ -264,7 +264,7 @@ void PairLJClass2CoulCutKokkos::allocate() memory->create_kokkos(k_cut_coulsq,cut_coulsq,n+1,n+1,"pair:cut_coulsq"); d_cut_coulsq = k_cut_coulsq.template view(); k_params = Kokkos::DualView("PairLJClass2CoulCut::params",n+1,n+1); - params = k_params.d_view; + params = k_params.template view(); } /* ---------------------------------------------------------------------- diff --git a/src/KOKKOS/pair_lj_class2_coul_long_kokkos.cpp b/src/KOKKOS/pair_lj_class2_coul_long_kokkos.cpp index 268213cdbcbc66e9565efa7a1917104c28911fa1..b5dc358feb3fed379c7236e164a0f15d0104e60b 100644 --- a/src/KOKKOS/pair_lj_class2_coul_long_kokkos.cpp +++ b/src/KOKKOS/pair_lj_class2_coul_long_kokkos.cpp @@ -316,7 +316,7 @@ void PairLJClass2CoulLongKokkos::allocate() memory->create_kokkos(k_cut_coulsq,n+1,n+1,"pair:cut_coulsq"); d_cut_coulsq = k_cut_coulsq.template view(); k_params = Kokkos::DualView("PairLJClass2CoulLong::params",n+1,n+1); - params = k_params.d_view; + params = k_params.template view(); } template diff --git a/src/KOKKOS/pair_lj_class2_kokkos.cpp b/src/KOKKOS/pair_lj_class2_kokkos.cpp index c899327d7c993802bf0655106aaa452f1e4726f6..34cc15279b4d7a2708fc5c537d14ea44fe4e0dca 100644 --- a/src/KOKKOS/pair_lj_class2_kokkos.cpp +++ b/src/KOKKOS/pair_lj_class2_kokkos.cpp @@ -203,7 +203,7 @@ void PairLJClass2Kokkos::allocate() memory->create_kokkos(k_cutsq,cutsq,n+1,n+1,"pair:cutsq"); d_cutsq = k_cutsq.template view(); k_params = Kokkos::DualView("PairLJClass2::params",n+1,n+1); - params = k_params.d_view; + params = k_params.template view(); } /* ---------------------------------------------------------------------- diff --git a/src/KOKKOS/pair_lj_cut_coul_cut_kokkos.cpp b/src/KOKKOS/pair_lj_cut_coul_cut_kokkos.cpp index f4de48f176de8b9467075f0001cfe9fae555a503..c3fda01ce63244bfa591deb80c23e4327288c68a 100644 --- a/src/KOKKOS/pair_lj_cut_coul_cut_kokkos.cpp +++ b/src/KOKKOS/pair_lj_cut_coul_cut_kokkos.cpp @@ -256,7 +256,7 @@ void PairLJCutCoulCutKokkos::allocate() memory->create_kokkos(k_cut_coulsq,cut_coulsq,n+1,n+1,"pair:cut_coulsq"); d_cut_coulsq = k_cut_coulsq.template view(); k_params = Kokkos::DualView("PairLJCutCoulCut::params",n+1,n+1); - params = k_params.d_view; + params = k_params.template view(); } /* ---------------------------------------------------------------------- diff --git a/src/KOKKOS/pair_lj_cut_coul_debye_kokkos.cpp b/src/KOKKOS/pair_lj_cut_coul_debye_kokkos.cpp index ad51dd0a889dc2a74bfc5699df7de9daae94e2eb..b7a71cb99ac3d7f22ace36d5537a1dcb920dd60b 100644 --- a/src/KOKKOS/pair_lj_cut_coul_debye_kokkos.cpp +++ b/src/KOKKOS/pair_lj_cut_coul_debye_kokkos.cpp @@ -270,7 +270,7 @@ void PairLJCutCoulDebyeKokkos::allocate() memory->create_kokkos(k_cut_coulsq,cut_coulsq,n+1,n+1,"pair:cut_coulsq"); d_cut_coulsq = k_cut_coulsq.template view(); k_params = Kokkos::DualView("PairLJCutCoulDebye::params",n+1,n+1); - params = k_params.d_view; + params = k_params.template view(); } /* ---------------------------------------------------------------------- diff --git a/src/KOKKOS/pair_lj_cut_coul_dsf_kokkos.cpp b/src/KOKKOS/pair_lj_cut_coul_dsf_kokkos.cpp index 89f263113eca976e1327793575c5743202928b56..9df59636769a25dc3d512f36d4912486cb43be66 100644 --- a/src/KOKKOS/pair_lj_cut_coul_dsf_kokkos.cpp +++ b/src/KOKKOS/pair_lj_cut_coul_dsf_kokkos.cpp @@ -288,7 +288,7 @@ void PairLJCutCoulDSFKokkos::allocate() memory->create_kokkos(k_cut_coulsq,n+1,n+1,"pair:cut_coulsq"); d_cut_coulsq = k_cut_coulsq.template view(); k_params = Kokkos::DualView("PairLJCutCoulDSF::params",n+1,n+1); - params = k_params.d_view; + params = k_params.template view(); } /* ---------------------------------------------------------------------- diff --git a/src/KOKKOS/pair_lj_cut_coul_long_kokkos.cpp b/src/KOKKOS/pair_lj_cut_coul_long_kokkos.cpp index 4de51ca8d2f5ef64e5ab864d4a5599a738d8609f..9bd79c7341a7116d74eb789ace8f5a984564278c 100644 --- a/src/KOKKOS/pair_lj_cut_coul_long_kokkos.cpp +++ b/src/KOKKOS/pair_lj_cut_coul_long_kokkos.cpp @@ -313,7 +313,7 @@ void PairLJCutCoulLongKokkos::allocate() memory->create_kokkos(k_cut_coulsq,n+1,n+1,"pair:cut_coulsq"); d_cut_coulsq = k_cut_coulsq.template view(); k_params = Kokkos::DualView("PairLJCutCoulLong::params",n+1,n+1); - params = k_params.d_view; + params = k_params.template view(); } template diff --git a/src/KOKKOS/pair_lj_cut_kokkos.cpp b/src/KOKKOS/pair_lj_cut_kokkos.cpp index ea78b73711423e8ec268a638aefda6c73814ddc9..c90d5ad11c5295083eaaa4516c6f108665280def 100644 --- a/src/KOKKOS/pair_lj_cut_kokkos.cpp +++ b/src/KOKKOS/pair_lj_cut_kokkos.cpp @@ -198,7 +198,7 @@ void PairLJCutKokkos::allocate() memory->create_kokkos(k_cutsq,cutsq,n+1,n+1,"pair:cutsq"); d_cutsq = k_cutsq.template view(); k_params = Kokkos::DualView("PairLJCut::params",n+1,n+1); - params = k_params.d_view; + params = k_params.template view(); } /* ---------------------------------------------------------------------- diff --git a/src/KOKKOS/pair_lj_expand_kokkos.cpp b/src/KOKKOS/pair_lj_expand_kokkos.cpp index 6b62150632de7b1a563a6a6a1918a52d7017beb8..95ec252ad5fdebf3d4829abc524927d17ffa6eef 100644 --- a/src/KOKKOS/pair_lj_expand_kokkos.cpp +++ b/src/KOKKOS/pair_lj_expand_kokkos.cpp @@ -205,7 +205,7 @@ void PairLJExpandKokkos::allocate() memory->create_kokkos(k_cutsq,cutsq,n+1,n+1,"pair:cutsq"); d_cutsq = k_cutsq.template view(); k_params = Kokkos::DualView("PairLJExpand::params",n+1,n+1); - params = k_params.d_view; + params = k_params.template view(); } /* ---------------------------------------------------------------------- diff --git a/src/KOKKOS/pair_lj_gromacs_coul_gromacs_kokkos.cpp b/src/KOKKOS/pair_lj_gromacs_coul_gromacs_kokkos.cpp index 0c492131dd6dcaf83f415cb6d029052b2a04c567..4b21b08eb352ad95c8806bff4ae3175204eaf767 100644 --- a/src/KOKKOS/pair_lj_gromacs_coul_gromacs_kokkos.cpp +++ b/src/KOKKOS/pair_lj_gromacs_coul_gromacs_kokkos.cpp @@ -310,7 +310,7 @@ void PairLJGromacsCoulGromacsKokkos::allocate() d_cut_coulsq = k_cut_coulsq.template view(); k_params = Kokkos::DualView("PairLJGromacsCoulGromacs::params",n+1,n+1); - params = k_params.d_view; + params = k_params.template view(); } template diff --git a/src/KOKKOS/pair_lj_gromacs_kokkos.cpp b/src/KOKKOS/pair_lj_gromacs_kokkos.cpp index 76d7abbe289e5dd2ce4b811cfc5ae888740e0375..73a17d7b22f577fc31e4d6f3271ff4bab1b7694a 100644 --- a/src/KOKKOS/pair_lj_gromacs_kokkos.cpp +++ b/src/KOKKOS/pair_lj_gromacs_kokkos.cpp @@ -252,7 +252,7 @@ void PairLJGromacsKokkos::allocate() d_cut_inner_sq = k_cut_inner_sq.template view(); k_params = Kokkos::DualView("PairLJGromacs::params",n+1,n+1); - params = k_params.d_view; + params = k_params.template view(); } /* ---------------------------------------------------------------------- diff --git a/src/KOKKOS/pair_lj_sdk_kokkos.cpp b/src/KOKKOS/pair_lj_sdk_kokkos.cpp index 41561c29889e6d991400e3249e22f578739c7509..2063f62b203546f4dfa18fd505b8e64ed7148968 100644 --- a/src/KOKKOS/pair_lj_sdk_kokkos.cpp +++ b/src/KOKKOS/pair_lj_sdk_kokkos.cpp @@ -234,7 +234,7 @@ void PairLJSDKKokkos::allocate() memory->create_kokkos(k_cutsq,cutsq,n+1,n+1,"pair:cutsq"); d_cutsq = k_cutsq.template view(); k_params = Kokkos::DualView("PairLJSDK::params",n+1,n+1); - params = k_params.d_view; + params = k_params.template view(); } /* ---------------------------------------------------------------------- diff --git a/src/KOKKOS/pair_morse_kokkos.cpp b/src/KOKKOS/pair_morse_kokkos.cpp index 3201fad215f5587b115402d1fe481c7f9f385180..08a9b82640b4ea439c67457210d6baf31cb34027 100644 --- a/src/KOKKOS/pair_morse_kokkos.cpp +++ b/src/KOKKOS/pair_morse_kokkos.cpp @@ -212,7 +212,7 @@ void PairMorseKokkos::allocate() memory->create_kokkos(k_cutsq,cutsq,n+1,n+1,"pair:cutsq"); d_cutsq = k_cutsq.template view(); k_params = Kokkos::DualView("PairMorse::params",n+1,n+1); - params = k_params.d_view; + params = k_params.template view(); } /* ---------------------------------------------------------------------- diff --git a/src/KOKKOS/pair_multi_lucy_rx_kokkos.cpp b/src/KOKKOS/pair_multi_lucy_rx_kokkos.cpp new file mode 100644 index 0000000000000000000000000000000000000000..d9a4f1ab83643ebd27f692c6290e436079c91522 --- /dev/null +++ b/src/KOKKOS/pair_multi_lucy_rx_kokkos.cpp @@ -0,0 +1,998 @@ +/* ---------------------------------------------------------------------- + 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: + Stan Moore (Sandia) + + Please cite the related publications: + J.D. Moore, B.C. Barnes, S. Izvekov, M. Lisal, M.S. Sellers, D.E. Taylor & J.K. Brennan + "A coarse-grain force field for RDX: Density dependent and energy conserving" + The Journal of Chemical Physics, 2016, 144, 104501. +------------------------------------------------------------------------------------------- */ + +#include +#include +#include "math_const.h" +#include +#include +#include "pair_multi_lucy_rx_kokkos.h" +#include "atom_kokkos.h" +#include "force.h" +#include "comm.h" +#include "neigh_list.h" +#include "memory.h" +#include "error.h" +#include "citeme.h" +#include "modify.h" +#include "fix.h" +#include "atom_masks.h" +#include "neigh_request.h" + +using namespace LAMMPS_NS; + +enum{NONE,RLINEAR,RSQ}; + +#define MAXLINE 1024 + +#ifdef DBL_EPSILON + #define MY_EPSILON (10.0*DBL_EPSILON) +#else + #define MY_EPSILON (10.0*2.220446049250313e-16) +#endif + +#define oneFluidParameter (-1) +#define isOneFluid(_site) ( (_site) == oneFluidParameter ) + +/* ---------------------------------------------------------------------- */ + +template +PairMultiLucyRXKokkos::PairMultiLucyRXKokkos(LAMMPS *lmp) : PairMultiLucyRX(lmp) +{ + respa_enable = 0; + + atomKK = (AtomKokkos *) atom; + execution_space = ExecutionSpaceFromDevice::space; + datamask_read = EMPTY_MASK; + datamask_modify = EMPTY_MASK; + + update_table = 1; + h_table = new TableHost(); + d_table = new TableDevice(); + + k_error_flag = DAT::tdual_int_scalar("pair:error_flag"); +} + +/* ---------------------------------------------------------------------- */ + +template +PairMultiLucyRXKokkos::~PairMultiLucyRXKokkos() +{ + if (copymode) return; + + memory->destroy_kokkos(k_eatom,eatom); + memory->destroy_kokkos(k_vatom,vatom); + + memory->destroy_kokkos(k_cutsq,cutsq); + + delete h_table; + delete d_table; + tabindex = NULL; +} + +/* ---------------------------------------------------------------------- */ + +template +void PairMultiLucyRXKokkos::init_style() +{ + PairMultiLucyRX::init_style(); + + // irequest = neigh request made by parent class + + neighflag = lmp->kokkos->neighflag; + int irequest = neighbor->nrequest - 1; + + neighbor->requests[irequest]-> + kokkos_host = Kokkos::Impl::is_same::value && + !Kokkos::Impl::is_same::value; + neighbor->requests[irequest]-> + kokkos_device = Kokkos::Impl::is_same::value; + + if (neighflag == FULL) { + neighbor->requests[irequest]->full = 1; + neighbor->requests[irequest]->half = 0; + } else if (neighflag == HALF || neighflag == HALFTHREAD) { + neighbor->requests[irequest]->full = 0; + neighbor->requests[irequest]->half = 1; + } else { + error->all(FLERR,"Cannot use chosen neighbor list style with multi/lucy/rx/kk"); + } +} + +/* ---------------------------------------------------------------------- */ + +template +void PairMultiLucyRXKokkos::compute(int eflag_in, int vflag_in) +{ + copymode = 1; + + if (update_table) + create_kokkos_tables(); + + if (tabstyle == LOOKUP) + compute_style(eflag_in,vflag_in); + else if(tabstyle == LINEAR) + compute_style(eflag_in,vflag_in); + + copymode = 0; +} + +/* ---------------------------------------------------------------------- */ + +template +template +void PairMultiLucyRXKokkos::compute_style(int eflag_in, int vflag_in) +{ + eflag = eflag_in; + vflag = vflag_in; + + if (neighflag == FULL) no_virial_fdotr_compute = 1; + if (eflag || vflag) ev_setup(eflag,vflag,0); + else evflag = vflag_fdotr = 0; + + // reallocate per-atom arrays if necessary + + if (eflag_atom) { + memory->destroy_kokkos(k_eatom,eatom); + memory->create_kokkos(k_eatom,eatom,maxeatom,"pair:eatom"); + d_eatom = k_eatom.template view(); + } + if (vflag_atom) { + memory->destroy_kokkos(k_vatom,vatom); + memory->create_kokkos(k_vatom,vatom,maxvatom,6,"pair:vatom"); + d_vatom = k_vatom.template view(); + } + + x = atomKK->k_x.view(); + f = atomKK->k_f.view(); + type = atomKK->k_type.view(); + rho = atomKK->k_rho.view(); + uCG = atomKK->k_uCG.view(); + uCGnew = atomKK->k_uCGnew.view(); + dvector = atomKK->k_dvector.view(); + + atomKK->sync(execution_space,X_MASK | F_MASK | TYPE_MASK | ENERGY_MASK | VIRIAL_MASK | DPDRHO_MASK | UCG_MASK | UCGNEW_MASK | DVECTOR_MASK); + k_cutsq.template sync(); + + nlocal = atom->nlocal; + int nghost = atom->nghost; + int newton_pair = force->newton_pair; + + { + const int ntotal = nlocal + nghost; + if (ntotal > d_mixWtSite1.dimension_0()) { + d_mixWtSite1old = typename AT::t_float_1d("PairMultiLucyRX::mixWtSite1old",ntotal); + d_mixWtSite2old = typename AT::t_float_1d("PairMultiLucyRX::mixWtSite2old",ntotal); + d_mixWtSite1 = typename AT::t_float_1d("PairMultiLucyRX::mixWtSite1",ntotal); + d_mixWtSite2 = typename AT::t_float_1d("PairMultiLucyRX::mixWtSite2",ntotal); + } + + Kokkos::parallel_for(Kokkos::RangePolicy(0,ntotal),*this); + } + + const int inum = list->inum; + NeighListKokkos* k_list = static_cast*>(list); + d_numneigh = k_list->d_numneigh; + d_neighbors = k_list->d_neighbors; + d_ilist = k_list->d_ilist; + + computeLocalDensity(); + + // loop over neighbors of my atoms + + EV_FLOAT ev; + + if (neighflag == HALF) { + if (newton_pair) { + if (evflag) Kokkos::parallel_reduce(Kokkos::RangePolicy >(0,inum),*this,ev); + else Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + } else { + if (evflag) Kokkos::parallel_reduce(Kokkos::RangePolicy >(0,inum),*this,ev); + else Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + } + } else if (neighflag == HALFTHREAD) { + if (newton_pair) { + if (evflag) Kokkos::parallel_reduce(Kokkos::RangePolicy >(0,inum),*this,ev); + else Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + } else { + if (evflag) Kokkos::parallel_reduce(Kokkos::RangePolicy >(0,inum),*this,ev); + else Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + } + } else if (neighflag == FULL) { + if (newton_pair) { + if (evflag) Kokkos::parallel_reduce(Kokkos::RangePolicy >(0,inum),*this,ev); + else Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + } else { + if (evflag) Kokkos::parallel_reduce(Kokkos::RangePolicy >(0,inum),*this,ev); + else Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + } + } + + if (evflag) atomKK->modified(execution_space,F_MASK | ENERGY_MASK | VIRIAL_MASK | UCG_MASK | UCGNEW_MASK); + else atomKK->modified(execution_space,F_MASK | UCG_MASK | UCGNEW_MASK); + + k_error_flag.template modify(); + k_error_flag.template sync(); + if (k_error_flag.h_view() == 1) + error->one(FLERR,"Density < table inner cutoff"); + else if (k_error_flag.h_view() == 2) + error->one(FLERR,"Density > table outer cutoff"); + else if (k_error_flag.h_view() == 3) + error->one(FLERR,"Only LOOKUP and LINEAR table styles have been implemented for pair multi/lucy/rx"); + + if (eflag_global) eng_vdwl += ev.evdwl; + if (vflag_global) { + virial[0] += ev.v[0]; + virial[1] += ev.v[1]; + virial[2] += ev.v[2]; + virial[3] += ev.v[3]; + virial[4] += ev.v[4]; + virial[5] += ev.v[5]; + } + + if (vflag_fdotr) pair_virial_fdotr_compute(this); + + if (eflag_atom) { + k_eatom.template modify(); + k_eatom.template sync(); + } + + if (vflag_atom) { + k_vatom.template modify(); + k_vatom.template sync(); + } +} + +template +KOKKOS_INLINE_FUNCTION +void PairMultiLucyRXKokkos::operator()(TagPairMultiLucyRXgetMixingWeights, const int &i) const { + getMixingWeights(i, d_mixWtSite1old[i], d_mixWtSite2old[i], d_mixWtSite1[i], d_mixWtSite2[i]); +} + +template +template +KOKKOS_INLINE_FUNCTION +void PairMultiLucyRXKokkos::operator()(TagPairMultiLucyRXCompute, const int &ii, EV_FLOAT& ev) const { + + // The f array is atomic for Half/Thread neighbor style + Kokkos::View::value> > a_f = f; + + int i,jj,jnum,itype,jtype,itable; + double xtmp,ytmp,ztmp,delx,dely,delz,evdwl,evdwlOld,fpair; + double rsq; + + double mixWtSite1old_i,mixWtSite1old_j; + double mixWtSite2old_i,mixWtSite2old_j; + double mixWtSite1_i; + + double pi = MathConst::MY_PI; + double A_i, A_j; + double fraction_i,fraction_j; + int jtable; + + int tlm1 = tablength - 1; + + i = d_ilist[ii]; + xtmp = x(i,0); + ytmp = x(i,1); + ztmp = x(i,2); + itype = type[i]; + jnum = d_numneigh[i]; + + double fx_i = 0.0; + double fy_i = 0.0; + double fz_i = 0.0; + + mixWtSite1old_i = d_mixWtSite1old[i]; + mixWtSite2old_i = d_mixWtSite2old[i]; + mixWtSite1_i = d_mixWtSite1[i]; + + for (jj = 0; jj < jnum; jj++) { + int j = d_neighbors(i,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 < d_cutsq(itype,jtype)) { // optimize + fpair = 0.0; + + mixWtSite1old_j = d_mixWtSite1old[j]; + mixWtSite2old_j = d_mixWtSite2old[j]; + + //tb = &tables[tabindex[itype][jtype]]; + const int tidx = d_table_const.tabindex(itype,jtype); + + //if (rho[i]*rho[i] < tb->innersq || rho[j]*rho[j] < tb->innersq){ + if (rho[i]*rho[i] < d_table_const.innersq(tidx) || rho[j]*rho[j] < d_table_const.innersq(tidx)){ + k_error_flag.template view()() = 1; + } + + if (TABSTYLE == LOOKUP) { + //itable = static_cast (((rho[i]*rho[i]) - tb->innersq) * tb->invdelta); + itable = static_cast (((rho[i]*rho[i]) - d_table_const.innersq(tidx)) * d_table_const.invdelta(tidx)); + //jtable = static_cast (((rho[j]*rho[j]) - tb->innersq) * tb->invdelta); + jtable = static_cast (((rho[j]*rho[j]) - d_table_const.innersq(tidx)) * d_table_const.invdelta(tidx)); + if (itable >= tlm1 || jtable >= tlm1){ + k_error_flag.template view()() = 2; + } + //A_i = tb->f[itable]; + A_i = d_table_const.f(tidx,itable); + //A_j = tb->f[jtable]; + A_j = d_table_const.f(tidx,jtable); + + const double rfactor = 1.0-sqrt(rsq/d_cutsq(itype,jtype)); + fpair = 0.5*(A_i + A_j)*(4.0-3.0*rfactor)*rfactor*rfactor*rfactor; + fpair /= sqrt(rsq); + + } else if (TABSTYLE == LINEAR) { + + //itable = static_cast ((rho[i]*rho[i] - tb->innersq) * tb->invdelta); + itable = static_cast ((rho[i]*rho[i] - d_table_const.innersq(tidx)) * d_table_const.invdelta(tidx)); + //jtable = static_cast (((rho[j]*rho[j]) - tb->innersq) * tb->invdelta); + jtable = static_cast ((rho[j]*rho[j] - d_table_const.innersq(tidx)) * d_table_const.invdelta(tidx)); + if (itable >= tlm1 || jtable >= tlm1){ + k_error_flag.template view()() = 2; + } + if(itable<0) itable=0; + if(itable>=tlm1) itable=tlm1; + if(jtable<0) jtable=0; + if(jtable>=tlm1)jtable=tlm1; + + //fraction_i = (((rho[i]*rho[i]) - tb->rsq[itable]) * tb->invdelta); + fraction_i = (((rho[i]*rho[i]) - d_table_const.rsq(tidx,itable)) * d_table_const.invdelta(tidx)); + //fraction_j = (((rho[j]*rho[j]) - tb->rsq[jtable]) * tb->invdelta); + fraction_j = (((rho[j]*rho[j]) - d_table_const.rsq(tidx,jtable)) * d_table_const.invdelta(tidx)); + if(itable==0) fraction_i=0.0; + if(itable==tlm1) fraction_i=0.0; + if(jtable==0) fraction_j=0.0; + if(jtable==tlm1) fraction_j=0.0; + + //A_i = tb->f[itable] + fraction_i*tb->df[itable]; + A_i = d_table_const.f(tidx,itable) + fraction_i*d_table_const.df(tidx,itable); + //A_j = tb->f[jtable] + fraction_j*tb->df[jtable]; + A_j = d_table_const.f(tidx,jtable) + fraction_j*d_table_const.df(tidx,jtable); + + const double rfactor = 1.0-sqrt(rsq/d_cutsq(itype,jtype)); + fpair = 0.5*(A_i + A_j)*(4.0-3.0*rfactor)*rfactor*rfactor*rfactor; + fpair /= sqrt(rsq); + + } else k_error_flag.template view()() = 3; + + if (isite1 == isite2) fpair = sqrt(mixWtSite1old_i*mixWtSite2old_j)*fpair; + else fpair = (sqrt(mixWtSite1old_i*mixWtSite2old_j) + sqrt(mixWtSite2old_i*mixWtSite1old_j))*fpair; + + fx_i += delx*fpair; + fy_i += dely*fpair; + fz_i += delz*fpair; + if ((NEIGHFLAG==HALF || NEIGHFLAG==HALFTHREAD) && (NEWTON_PAIR || j < nlocal)) { + a_f(j,0) -= delx*fpair; + a_f(j,1) -= dely*fpair; + a_f(j,2) -= delz*fpair; + } + //if (evflag) ev_tally(i,j,nlocal,newton_pair,0.0,0.0,fpair,delx,dely,delz); + if (EVFLAG) this->template ev_tally(ev,i,j,0.0,fpair,delx,dely,delz); + } + } + + a_f(i,0) += fx_i; + a_f(i,1) += fy_i; + a_f(i,2) += fz_i; + + //tb = &tables[tabindex[itype][itype]]; + const int tidx = d_table_const.tabindex(itype,itype); + //itable = static_cast (((rho[i]*rho[i]) - tb->innersq) * tb->invdelta); + itable = static_cast (((rho[i]*rho[i]) - d_table_const.innersq(tidx)) * d_table_const.invdelta(tidx)); + //if (TABSTYLE == LOOKUP) evdwl = tb->e[itable]; + if (TABSTYLE == LOOKUP) { + evdwl = d_table_const.e(tidx,itable); + } else if (TABSTYLE == LINEAR) { + if (itable >= tlm1){ + k_error_flag.template view()() = 2; + } + if(itable==0) fraction_i=0.0; + //else fraction_i = (((rho[i]*rho[i]) - tb->rsq[itable]) * tb->invdelta); + else fraction_i = (((rho[i]*rho[i]) - d_table_const.rsq(tidx,itable)) * d_table_const.invdelta(tidx)); + //evdwl = tb->e[itable] + fraction_i*tb->de[itable]; + evdwl = d_table_const.e(tidx,itable) + fraction_i*d_table_const.de(tidx,itable); + } else k_error_flag.template view()() = 3; + + evdwl *=(pi*d_cutsq(itype,itype)*d_cutsq(itype,itype))/84.0; + evdwlOld = mixWtSite1old_i*evdwl; + evdwl = mixWtSite1_i*evdwl; + + uCG[i] += evdwlOld; + uCGnew[i] += evdwl; + + evdwl = evdwlOld; + + //if (evflag) ev_tally(0,0,nlocal,newton_pair,evdwl,0.0,0.0,0.0,0.0,0.0); + if (EVFLAG) + ev.evdwl += ((/*FIXME??? (NEIGHFLAG==HALF || NEIGHFLAG==HALFTHREAD) && */ NEWTON_PAIR)?1.0:0.5)*evdwl; +} + +template +template +KOKKOS_INLINE_FUNCTION +void PairMultiLucyRXKokkos::operator()(TagPairMultiLucyRXCompute, const int &ii) const { + EV_FLOAT ev; + this->template operator()(TagPairMultiLucyRXCompute(), ii, ev); +} + +/* ---------------------------------------------------------------------- */ + +template +void PairMultiLucyRXKokkos::computeLocalDensity() +{ + x = atomKK->k_x.view(); + type = atomKK->k_type.view(); + rho = atomKK->k_rho.view(); + h_rho = atomKK->k_rho.h_view; + nlocal = atom->nlocal; + + atomKK->sync(execution_space,X_MASK | TYPE_MASK | DPDRHO_MASK); + + const int inum = list->inum; + NeighListKokkos* k_list = static_cast*>(list); + d_numneigh = k_list->d_numneigh; + d_neighbors = k_list->d_neighbors; + d_ilist = k_list->d_ilist; + + const double pi = MathConst::MY_PI; + + const bool newton_pair = force->newton_pair; + const bool one_type = (atom->ntypes == 1); + + // Special cut-off values for when there's only one type. + cutsq_type11 = cutsq[1][1]; + rcut_type11 = sqrt(cutsq_type11); + factor_type11 = 84.0/(5.0*pi*rcut_type11*rcut_type11*rcut_type11); + + // zero out density + int m = nlocal; + if (newton_pair) m += atom->nghost; + Kokkos::parallel_for(Kokkos::RangePolicy(0,m),*this); + + // rho = density at each atom + // loop over neighbors of my atoms + + if (neighflag == HALF) { + if (newton_pair) + if (one_type) + Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + else + Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + else + if (one_type) + Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + else + Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + } else if (neighflag == HALFTHREAD) { + if (newton_pair) + if (one_type) + Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + else + Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + else + if (one_type) + Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + else + Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + } else if (neighflag == FULL) { + if (newton_pair) + if (one_type) + Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + else + Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + else + if (one_type) + Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + else + Kokkos::parallel_for(Kokkos::RangePolicy >(0,inum),*this); + } + + atomKK->modified(execution_space,DPDRHO_MASK); + + // communicate and sum densities (on the host) + + if (newton_pair) + comm->reverse_comm_pair(this); + + comm->forward_comm_pair(this); +} + +template +KOKKOS_INLINE_FUNCTION +void PairMultiLucyRXKokkos::operator()(TagPairMultiLucyRXZero, const int &i) const { + rho[i] = 0.0; +} + +template +template +KOKKOS_INLINE_FUNCTION +void PairMultiLucyRXKokkos::operator()(TagPairMultiLucyRXComputeLocalDensity, const int &ii) const { + + + // The rho array is atomic for Half/Thread neighbor style + Kokkos::View::value> > a_rho = rho; + + const int i = d_ilist[ii]; + + const double xtmp = x(i,0); + const double ytmp = x(i,1); + const double ztmp = x(i,2); + + double rho_i_contrib = 0.0; + + const int itype = type[i]; + const int jnum = d_numneigh[i]; + + const double pi = MathConst::MY_PI; + + for (int jj = 0; jj < jnum; jj++){ + const int j = (d_neighbors(i,jj) & NEIGHMASK); + const int jtype = type[j]; + + const double delx = xtmp - x(j,0); + const double dely = ytmp - x(j,1); + const double delz = ztmp - x(j,2); + const double rsq = delx*delx + dely*dely + delz*delz; + + if (ONE_TYPE) { + if (rsq < cutsq_type11) { + const double rcut = rcut_type11; + const double r_over_rcut = sqrt(rsq) / rcut; + const double tmpFactor = 1.0 - r_over_rcut; + const double tmpFactor4 = tmpFactor*tmpFactor*tmpFactor*tmpFactor; + const double factor = factor_type11*(1.0 + 1.5*r_over_rcut)*tmpFactor4; + rho_i_contrib += factor; + if ((NEIGHFLAG==HALF || NEIGHFLAG==HALFTHREAD) && (NEWTON_PAIR || j < nlocal)) + a_rho[j] += factor; + } + } else if (rsq < d_cutsq(itype,jtype)) { + const double rcut = sqrt(d_cutsq(itype,jtype)); + const double tmpFactor = 1.0-sqrt(rsq)/rcut; + const double tmpFactor4 = tmpFactor*tmpFactor*tmpFactor*tmpFactor; + const double factor = (84.0/(5.0*pi*rcut*rcut*rcut))*(1.0+3.0*sqrt(rsq)/(2.0*rcut))*tmpFactor4; + rho_i_contrib += factor; + if ((NEIGHFLAG==HALF || NEIGHFLAG==HALFTHREAD) && (NEWTON_PAIR || j < nlocal)) + a_rho[j] += factor; + } + } + + a_rho[i] += rho_i_contrib; +} + +/* ---------------------------------------------------------------------- */ + +template +KOKKOS_INLINE_FUNCTION +void PairMultiLucyRXKokkos::getMixingWeights(int id, double &mixWtSite1old, double &mixWtSite2old, double &mixWtSite1, double &mixWtSite2) const +{ + double fractionOFAold, fractionOFA; + double fractionOld1, fraction1; + double fractionOld2, fraction2; + double nMoleculesOFAold, nMoleculesOFA; + double nMoleculesOld1, nMolecules1; + double nMoleculesOld2, nMolecules2; + double nTotal, nTotalOld; + + + nTotal = 0.0; + nTotalOld = 0.0; + for (int ispecies = 0; ispecies < nspecies; ispecies++){ + nTotal += dvector(ispecies,id); + nTotalOld += dvector(ispecies+nspecies,id); + } + + if (isOneFluid(isite1) == false){ + nMoleculesOld1 = dvector(isite1+nspecies,id); + nMolecules1 = dvector(isite1,id); + fractionOld1 = nMoleculesOld1/nTotalOld; + fraction1 = nMolecules1/nTotal; + } + if (isOneFluid(isite2) == false){ + nMoleculesOld2 = dvector(isite2+nspecies,id); + nMolecules2 = dvector(isite2,id); + fractionOld2 = nMoleculesOld2/nTotalOld; + fraction2 = nMolecules2/nTotal; + } + + if (isOneFluid(isite1) || isOneFluid(isite2)){ + nMoleculesOFAold = 0.0; + nMoleculesOFA = 0.0; + fractionOFAold = 0.0; + fractionOFA = 0.0; + + for (int ispecies = 0; ispecies < nspecies; ispecies++){ + if (isite1 == ispecies || isite2 == ispecies) continue; + nMoleculesOFAold += dvector(ispecies+nspecies,id); + nMoleculesOFA += dvector(ispecies,id); + fractionOFAold += dvector(ispecies+nspecies,id) / nTotalOld; + fractionOFA += dvector(ispecies,id) / nTotal; + } + if (isOneFluid(isite1)){ + nMoleculesOld1 = 1.0-(nTotalOld-nMoleculesOFAold); + nMolecules1 = 1.0-(nTotal-nMoleculesOFA); + fractionOld1 = fractionOFAold; + fraction1 = fractionOFA; + } + if (isOneFluid(isite2)){ + nMoleculesOld2 = 1.0-(nTotalOld-nMoleculesOFAold); + nMolecules2 = 1.0-(nTotal-nMoleculesOFA); + fractionOld2 = fractionOFAold; + fraction2 = fractionOFA; + } + } + + if(fractionalWeighting){ + mixWtSite1old = fractionOld1; + mixWtSite1 = fraction1; + mixWtSite2old = fractionOld2; + mixWtSite2 = fraction2; + } else { + mixWtSite1old = nMoleculesOld1; + mixWtSite1 = nMolecules1; + mixWtSite2old = nMoleculesOld2; + mixWtSite2 = nMolecules2; + } +} + +/* ---------------------------------------------------------------------- */ + +template +int PairMultiLucyRXKokkos::pack_forward_comm_kokkos(int n, DAT::tdual_int_2d k_sendlist, int iswap_in, DAT::tdual_xfloat_1d &buf, + int pbc_flag, int *pbc) +{ + atomKK->sync(execution_space,DPDRHO_MASK); + + d_sendlist = k_sendlist.view(); + iswap = iswap_in; + v_buf = buf.view(); + Kokkos::parallel_for(Kokkos::RangePolicy(0,n),*this); + return n; +} + +template +KOKKOS_INLINE_FUNCTION +void PairMultiLucyRXKokkos::operator()(TagPairMultiLucyRXPackForwardComm, const int &i) const { + int j = d_sendlist(iswap, i); + v_buf[i] = rho[j]; +} + +/* ---------------------------------------------------------------------- */ + +template +void PairMultiLucyRXKokkos::unpack_forward_comm_kokkos(int n, int first_in, DAT::tdual_xfloat_1d &buf) +{ + first = first_in; + v_buf = buf.view(); + Kokkos::parallel_for(Kokkos::RangePolicy(0,n),*this); + + atomKK->modified(execution_space,DPDRHO_MASK); +} + +template +KOKKOS_INLINE_FUNCTION +void PairMultiLucyRXKokkos::operator()(TagPairMultiLucyRXUnpackForwardComm, const int &i) const { + rho[i + first] = v_buf[i]; +} + +/* ---------------------------------------------------------------------- */ + +template +int PairMultiLucyRXKokkos::pack_forward_comm(int n, int *list, double *buf, int pbc_flag, int *pbc) +{ + int i,j,m; + + atomKK->sync(Host,DPDRHO_MASK); + + m = 0; + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = h_rho[j]; + } + return m; +} + +/* ---------------------------------------------------------------------- */ + +template +void PairMultiLucyRXKokkos::unpack_forward_comm(int n, int first, double *buf) +{ + int i,m,last; + + m = 0; + last = first + n; + for (i = first; i < last; i++) h_rho[i] = buf[m++]; + + atomKK->modified(Host,DPDRHO_MASK); +} + +/* ---------------------------------------------------------------------- */ + +template +int PairMultiLucyRXKokkos::pack_reverse_comm(int n, int first, double *buf) +{ + int i,m,last; + + atomKK->sync(Host,DPDRHO_MASK); + + m = 0; + last = first + n; + for (i = first; i < last; i++) buf[m++] = h_rho[i]; + return m; +} + +/* ---------------------------------------------------------------------- */ + +template +void PairMultiLucyRXKokkos::unpack_reverse_comm(int n, int *list, double *buf) +{ + int i,j,m; + + m = 0; + for (i = 0; i < n; i++) { + j = list[i]; + h_rho[j] += buf[m++]; + } + + atomKK->modified(Host,DPDRHO_MASK); +} + +/* ---------------------------------------------------------------------- */ + +template +template +KOKKOS_INLINE_FUNCTION +void PairMultiLucyRXKokkos::ev_tally(EV_FLOAT &ev, const int &i, const int &j, + const F_FLOAT &epair, const F_FLOAT &fpair, const F_FLOAT &delx, + const F_FLOAT &dely, const F_FLOAT &delz) const +{ + const int EFLAG = eflag; + const int VFLAG = vflag_either; + + // The eatom and vatom arrays are atomic for Half/Thread neighbor style + Kokkos::View::value> > v_eatom = k_eatom.view(); + Kokkos::View::value> > v_vatom = k_vatom.view(); + + if (EFLAG) { + if (eflag_atom) { + const E_FLOAT epairhalf = 0.5 * epair; + if (NEIGHFLAG!=FULL) { + if (NEWTON_PAIR || i < nlocal) v_eatom[i] += epairhalf; + if (NEWTON_PAIR || j < nlocal) v_eatom[j] += epairhalf; + } else { + v_eatom[i] += epairhalf; + } + } + } + + if (VFLAG) { + const E_FLOAT v0 = delx*delx*fpair; + const E_FLOAT v1 = dely*dely*fpair; + const E_FLOAT v2 = delz*delz*fpair; + const E_FLOAT v3 = delx*dely*fpair; + const E_FLOAT v4 = delx*delz*fpair; + const E_FLOAT v5 = dely*delz*fpair; + + if (vflag_global) { + if (NEIGHFLAG!=FULL) { + if (NEWTON_PAIR || i < nlocal) { + ev.v[0] += 0.5*v0; + ev.v[1] += 0.5*v1; + ev.v[2] += 0.5*v2; + ev.v[3] += 0.5*v3; + ev.v[4] += 0.5*v4; + ev.v[5] += 0.5*v5; + } + if (NEWTON_PAIR || j < nlocal) { + ev.v[0] += 0.5*v0; + ev.v[1] += 0.5*v1; + ev.v[2] += 0.5*v2; + ev.v[3] += 0.5*v3; + ev.v[4] += 0.5*v4; + ev.v[5] += 0.5*v5; + } + } else { + ev.v[0] += 0.5*v0; + ev.v[1] += 0.5*v1; + ev.v[2] += 0.5*v2; + ev.v[3] += 0.5*v3; + ev.v[4] += 0.5*v4; + ev.v[5] += 0.5*v5; + } + } + + if (vflag_atom) { + if (NEIGHFLAG!=FULL) { + if (NEWTON_PAIR || i < nlocal) { + v_vatom(i,0) += 0.5*v0; + v_vatom(i,1) += 0.5*v1; + v_vatom(i,2) += 0.5*v2; + v_vatom(i,3) += 0.5*v3; + v_vatom(i,4) += 0.5*v4; + v_vatom(i,5) += 0.5*v5; + } + if (NEWTON_PAIR || j < nlocal) { + v_vatom(j,0) += 0.5*v0; + v_vatom(j,1) += 0.5*v1; + v_vatom(j,2) += 0.5*v2; + v_vatom(j,3) += 0.5*v3; + v_vatom(j,4) += 0.5*v4; + v_vatom(j,5) += 0.5*v5; + } + } else { + v_vatom(i,0) += 0.5*v0; + v_vatom(i,1) += 0.5*v1; + v_vatom(i,2) += 0.5*v2; + v_vatom(i,3) += 0.5*v3; + v_vatom(i,4) += 0.5*v4; + v_vatom(i,5) += 0.5*v5; + } + } + } +} + +/* ---------------------------------------------------------------------- */ + +template +void PairMultiLucyRXKokkos::create_kokkos_tables() +{ + const int tlm1 = tablength-1; + + memory->create_kokkos(d_table->innersq,h_table->innersq,ntables,"Table::innersq"); + memory->create_kokkos(d_table->invdelta,h_table->invdelta,ntables,"Table::invdelta"); + + if(tabstyle == LOOKUP) { + memory->create_kokkos(d_table->e,h_table->e,ntables,tlm1,"Table::e"); + memory->create_kokkos(d_table->f,h_table->f,ntables,tlm1,"Table::f"); + } + + if(tabstyle == LINEAR) { + memory->create_kokkos(d_table->rsq,h_table->rsq,ntables,tablength,"Table::rsq"); + memory->create_kokkos(d_table->e,h_table->e,ntables,tablength,"Table::e"); + memory->create_kokkos(d_table->f,h_table->f,ntables,tablength,"Table::f"); + memory->create_kokkos(d_table->de,h_table->de,ntables,tlm1,"Table::de"); + memory->create_kokkos(d_table->df,h_table->df,ntables,tlm1,"Table::df"); + } + + for(int i=0; i < ntables; i++) { + Table* tb = &tables[i]; + + h_table->innersq[i] = tb->innersq; + h_table->invdelta[i] = tb->invdelta; + + for(int j = 0; jrsq.dimension_1(); j++) + h_table->rsq(i,j) = tb->rsq[j]; + for(int j = 0; je.dimension_1(); j++) + h_table->e(i,j) = tb->e[j]; + for(int j = 0; jde.dimension_1(); j++) + h_table->de(i,j) = tb->de[j]; + for(int j = 0; jf.dimension_1(); j++) + h_table->f(i,j) = tb->f[j]; + for(int j = 0; jdf.dimension_1(); j++) + h_table->df(i,j) = tb->df[j]; + } + + + Kokkos::deep_copy(d_table->innersq,h_table->innersq); + Kokkos::deep_copy(d_table->invdelta,h_table->invdelta); + Kokkos::deep_copy(d_table->rsq,h_table->rsq); + Kokkos::deep_copy(d_table->e,h_table->e); + Kokkos::deep_copy(d_table->de,h_table->de); + Kokkos::deep_copy(d_table->f,h_table->f); + Kokkos::deep_copy(d_table->df,h_table->df); + Kokkos::deep_copy(d_table->tabindex,h_table->tabindex); + + d_table_const.innersq = d_table->innersq; + d_table_const.invdelta = d_table->invdelta; + d_table_const.rsq = d_table->rsq; + d_table_const.e = d_table->e; + d_table_const.de = d_table->de; + d_table_const.f = d_table->f; + d_table_const.df = d_table->df; + + update_table = 0; +} + +/* ---------------------------------------------------------------------- + allocate all arrays +------------------------------------------------------------------------- */ + +template +void PairMultiLucyRXKokkos::allocate() +{ + allocated = 1; + const int nt = atom->ntypes + 1; + + memory->create(setflag,nt,nt,"pair:setflag"); + + memory->create_kokkos(k_cutsq,cutsq,nt,nt,"pair:cutsq"); + d_cutsq = k_cutsq.template view(); + k_cutsq.template modify(); + + memory->create_kokkos(d_table->tabindex,h_table->tabindex,tabindex,nt,nt,"pair:tabindex"); + d_table_const.tabindex = d_table->tabindex; + + memset(&setflag[0][0],0,nt*nt*sizeof(int)); + memset(&cutsq[0][0],0,nt*nt*sizeof(double)); + memset(&tabindex[0][0],0,nt*nt*sizeof(int)); +} + +/* ---------------------------------------------------------------------- + global settings +------------------------------------------------------------------------- */ + +template +void PairMultiLucyRXKokkos::settings(int narg, char **arg) +{ + if (narg < 2) error->all(FLERR,"Illegal pair_style command"); + + // new settings + + if (strcmp(arg[0],"lookup") == 0) tabstyle = LOOKUP; + else if (strcmp(arg[0],"linear") == 0) tabstyle = LINEAR; + else error->all(FLERR,"Unknown table style in pair_style command"); + + tablength = force->inumeric(FLERR,arg[1]); + if (tablength < 2) error->all(FLERR,"Illegal number of pair table entries"); + + // optional keywords + + int iarg = 2; + while (iarg < narg) { + if (strcmp(arg[iarg],"fractional") == 0) fractionalWeighting = true; + else if (strcmp(arg[iarg],"molecular") == 0) fractionalWeighting = false; + else error->all(FLERR,"Illegal pair_style command"); + iarg++; + } + + // delete old tables, since cannot just change settings + + for (int m = 0; m < ntables; m++) free_table(&tables[m]); + memory->sfree(tables); + + if (allocated) { + memory->destroy(setflag); + + d_table_const.tabindex = d_table->tabindex = typename ArrayTypes::t_int_2d(); + h_table->tabindex = typename ArrayTypes::t_int_2d(); + } + allocated = 0; + + ntables = 0; + tables = NULL; +} + +/* ---------------------------------------------------------------------- */ + +namespace LAMMPS_NS { +template class PairMultiLucyRXKokkos; +#ifdef KOKKOS_HAVE_CUDA +template class PairMultiLucyRXKokkos; +#endif +} diff --git a/src/KOKKOS/pair_multi_lucy_rx_kokkos.h b/src/KOKKOS/pair_multi_lucy_rx_kokkos.h new file mode 100644 index 0000000000000000000000000000000000000000..b8ced4c847f6088efe98c09f50ea706626531883 --- /dev/null +++ b/src/KOKKOS/pair_multi_lucy_rx_kokkos.h @@ -0,0 +1,266 @@ +/* ---------------------------------------------------------------------- + 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(multi/lucy/rx/kk,PairMultiLucyRXKokkos) +PairStyle(multi/lucy/rx/kk/device,PairMultiLucyRXKokkos) +PairStyle(multi/lucy/rx/kk/host,PairMultiLucyRXKokkos) + +#else + +#ifndef LMP_PAIR_MULTI_LUCY_RX_KOKKOS_H +#define LMP_PAIR_MULTI_LUCY_RX_KOKKOS_H + + +#include "pair_multi_lucy_rx.h" +#include "pair_kokkos.h" +#include "kokkos_type.h" + +namespace LAMMPS_NS { + +struct TagPairMultiLucyRXPackForwardComm{}; +struct TagPairMultiLucyRXUnpackForwardComm{}; + +struct TagPairMultiLucyRXgetMixingWeights{}; + +template +struct TagPairMultiLucyRXCompute{}; + +struct TagPairMultiLucyRXZero{}; + +template +struct TagPairMultiLucyRXComputeLocalDensity{}; + +template +class PairMultiLucyRXKokkos : public PairMultiLucyRX { + public: + typedef DeviceType device_type; + typedef ArrayTypes AT; + typedef EV_FLOAT value_type; + + PairMultiLucyRXKokkos(class LAMMPS *); + virtual ~PairMultiLucyRXKokkos(); + + void compute(int, int); + void settings(int, char **); + + template + void compute_style(int, int); + + void init_style(); + int pack_forward_comm_kokkos(int, DAT::tdual_int_2d, int, DAT::tdual_xfloat_1d&, + int, int *); + void unpack_forward_comm_kokkos(int, int, DAT::tdual_xfloat_1d&); + int pack_forward_comm(int, int *, double *, int, int *); + void unpack_forward_comm(int, int, double *); + int pack_reverse_comm(int, int, double *); + void unpack_reverse_comm(int, int *, double *); + void computeLocalDensity(); + + KOKKOS_INLINE_FUNCTION + void operator()(TagPairMultiLucyRXPackForwardComm, const int&) const; + + KOKKOS_INLINE_FUNCTION + void operator()(TagPairMultiLucyRXUnpackForwardComm, const int&) const; + + KOKKOS_INLINE_FUNCTION + void operator()(TagPairMultiLucyRXgetMixingWeights, const int&) const; + + template + KOKKOS_INLINE_FUNCTION + void operator()(TagPairMultiLucyRXCompute, const int&, EV_FLOAT&) const; + + template + KOKKOS_INLINE_FUNCTION + void operator()(TagPairMultiLucyRXCompute, const int&) const; + + KOKKOS_INLINE_FUNCTION + void operator()(TagPairMultiLucyRXZero, const int&) const; + + template + KOKKOS_INLINE_FUNCTION + void operator()(TagPairMultiLucyRXComputeLocalDensity, const int&) const; + + template + KOKKOS_INLINE_FUNCTION + void ev_tally(EV_FLOAT &ev, const int &i, const int &j, + const F_FLOAT &epair, const F_FLOAT &fpair, const F_FLOAT &delx, + const F_FLOAT &dely, const F_FLOAT &delz) const; + + private: + int nlocal; + int neighflag; + int eflag,vflag; + + double cutsq_type11; + double rcut_type11; + double factor_type11; + + enum{LOOKUP,LINEAR,SPLINE,BITMAP}; + + //struct Table { + // int ninput,rflag,fpflag,match; + // double rlo,rhi,fplo,fphi,cut; + // double *rfile,*efile,*ffile; + // double *e2file,*f2file; + // double innersq,delta,invdelta,deltasq6; + // double *rsq,*drsq,*e,*de,*f,*df,*e2,*f2; + //}; + + /*struct TableDeviceConst { + typename AT::t_int_2d_randomread tabindex; + typename AT::t_ffloat_1d_randomread innersq,invdelta; + typename AT::t_ffloat_2d_randomread rsq,e,de,f,df; + };*/ + //Its faster not to use texture fetch if the number of tables is less than 32! + struct TableDeviceConst { + typename AT::t_int_2d tabindex; + typename AT::t_ffloat_1d innersq,invdelta; + typename AT::t_ffloat_2d_randomread rsq,e,de,f,df; + }; + + struct TableDevice { + typename AT::t_int_2d tabindex; + typename AT::t_ffloat_1d innersq,invdelta; + typename AT::t_ffloat_2d rsq,e,de,f,df; + }; + + struct TableHost { + HAT::t_int_2d tabindex; + HAT::t_ffloat_1d innersq,invdelta; + HAT::t_ffloat_2d rsq,e,de,f,df; + }; + + TableDeviceConst d_table_const; + TableDevice* d_table; + TableHost* h_table; + + F_FLOAT m_cutsq[MAX_TYPES_STACKPARAMS+1][MAX_TYPES_STACKPARAMS+1]; + + void allocate(); + int update_table; + void create_kokkos_tables(); + + KOKKOS_INLINE_FUNCTION + void getMixingWeights(int, double &, double &, double &, double &) const; + + typename AT::t_float_1d d_mixWtSite1old,d_mixWtSite2old,d_mixWtSite1,d_mixWtSite2; + + typename AT::t_x_array_randomread x; + typename AT::t_f_array f; + typename AT::t_int_1d_randomread type; + typename AT::t_efloat_1d rho; + typename HAT::t_efloat_1d h_rho; + typename AT::t_efloat_1d uCG, uCGnew; + typename AT::t_float_2d dvector; + + DAT::tdual_efloat_1d k_eatom; + DAT::tdual_virial_array k_vatom; + typename AT::t_efloat_1d d_eatom; + typename AT::t_virial_array d_vatom; + + typename AT::t_neighbors_2d d_neighbors; + typename AT::t_int_1d_randomread d_ilist; + typename AT::t_int_1d_randomread d_numneigh; + + DAT::tdual_int_scalar k_error_flag; + + typename AT::tdual_ffloat_2d k_cutsq; + typename AT::t_ffloat_2d d_cutsq; + + int iswap; + int first; + typename AT::t_int_2d d_sendlist; + typename AT::t_xfloat_1d_um v_buf; + + friend void pair_virial_fdotr_compute(PairMultiLucyRXKokkos*); +}; + +} + +#endif +#endif + +/* ERROR/WARNING messages: + +E: Pair multi/lucy/rx command requires atom_style with density (e.g. dpd, meso) + +Self-explanatory + +E: Density < table inner cutoff + +The local density inner is smaller than the inner cutoff + +E: Density > table inner cutoff + +The local density inner is greater than the inner cutoff + +E: Only LOOKUP and LINEAR table styles have been implemented for pair multi/lucy/rx + +Self-explanatory + +E: Illegal ... command + +Self-explanatory. Check the input script syntax and compare to the +documentation for the command. You can use -echo screen as a +command-line option when running LAMMPS to see the offending line. + +E: Unknown table style in pair_style command + +Self-explanatory + +E: Illegal number of pair table entries + +There must be at least 2 table entries. + +E: Illegal pair_coeff command + +All pair coefficients must be set in the data file or by the +pair_coeff command before running a simulation. + +E: PairMultiLucyRXKokkos requires a fix rx command + +The fix rx command must come before the pair style command in the input file + +E: There are no rx species specified + +There must be at least one species specified through the fix rx command + +E: Invalid pair table length + +Length of read-in pair table is invalid + +E: All pair coeffs are not set + +All pair coefficients must be set in the data file or by the +pair_coeff command before running a simulation. + +E: Cannot open file %s + +The specified file cannot be opened. Check that the path and name are +correct. + +E: Did not find keyword in table file + +Keyword used in pair_coeff command was not found in table file. + +E: Invalid keyword in pair table parameters + +Keyword used in list of table parameters is not recognized. + +E: Pair table parameters did not set N + +List of pair table parameters must include N setting. + +*/ diff --git a/src/KOKKOS/pair_reaxc_kokkos.cpp b/src/KOKKOS/pair_reaxc_kokkos.cpp index 841b7fbea9dff0c60f1b24faadef0be77c90a864..d95cd8f8aefd68b5699ee89046352a30771b3db9 100644 --- a/src/KOKKOS/pair_reaxc_kokkos.cpp +++ b/src/KOKKOS/pair_reaxc_kokkos.cpp @@ -99,26 +99,26 @@ void PairReaxCKokkos::allocate() k_params_sing = Kokkos::DualView ("PairReaxC::params_sing",n+1); - paramssing = k_params_sing.d_view; + paramssing = k_params_sing.template view(); k_params_twbp = Kokkos::DualView ("PairReaxC::params_twbp",n+1,n+1); - paramstwbp = k_params_twbp.d_view; + paramstwbp = k_params_twbp.template view(); k_params_thbp = Kokkos::DualView ("PairReaxC::params_thbp",n+1,n+1,n+1); - paramsthbp = k_params_thbp.d_view; + paramsthbp = k_params_thbp.template view(); k_params_fbp = Kokkos::DualView ("PairReaxC::params_fbp",n+1,n+1,n+1,n+1); - paramsfbp = k_params_fbp.d_view; + paramsfbp = k_params_fbp.template view(); k_params_hbp = Kokkos::DualView ("PairReaxC::params_hbp",n+1,n+1,n+1); - paramshbp = k_params_hbp.d_view; + paramshbp = k_params_hbp.template view(); k_tap = DAT::tdual_ffloat_1d("pair:tap",8); - d_tap = k_tap.d_view; + d_tap = k_tap.template view(); h_tap = k_tap.h_view; } @@ -367,7 +367,7 @@ void PairReaxCKokkos::init_md() Init_Lookup_Tables(); k_LR = tdual_LR_lookup_table_kk_2d("lookup:LR",ntypes+1,ntypes+1); - d_LR = k_LR.d_view; + d_LR = k_LR.template view(); for (int i = 1; i <= ntypes; ++i) { for (int j = i; j <= ntypes; ++j) { @@ -382,19 +382,19 @@ void PairReaxCKokkos::init_md() k_LR.h_view(i,j).m = LR[i][j].m; k_LR.h_view(i,j).c = LR[i][j].c; - tdual_LR_data_1d k_y = tdual_LR_data_1d("lookup:LR[i,j].y",n); - tdual_cubic_spline_coef_1d k_H = tdual_cubic_spline_coef_1d("lookup:LR[i,j].H",n); - tdual_cubic_spline_coef_1d k_vdW = tdual_cubic_spline_coef_1d("lookup:LR[i,j].vdW",n); - tdual_cubic_spline_coef_1d k_CEvd = tdual_cubic_spline_coef_1d("lookup:LR[i,j].CEvd",n); - tdual_cubic_spline_coef_1d k_ele = tdual_cubic_spline_coef_1d("lookup:LR[i,j].ele",n); - tdual_cubic_spline_coef_1d k_CEclmb = tdual_cubic_spline_coef_1d("lookup:LR[i,j].CEclmb",n); + typename LR_lookup_table_kk::tdual_LR_data_1d k_y = typename LR_lookup_table_kk::tdual_LR_data_1d("lookup:LR[i,j].y",n); + typename LR_lookup_table_kk::tdual_cubic_spline_coef_1d k_H = typename LR_lookup_table_kk::tdual_cubic_spline_coef_1d("lookup:LR[i,j].H",n); + typename LR_lookup_table_kk::tdual_cubic_spline_coef_1d k_vdW = typename LR_lookup_table_kk::tdual_cubic_spline_coef_1d("lookup:LR[i,j].vdW",n); + typename LR_lookup_table_kk::tdual_cubic_spline_coef_1d k_CEvd = typename LR_lookup_table_kk::tdual_cubic_spline_coef_1d("lookup:LR[i,j].CEvd",n); + typename LR_lookup_table_kk::tdual_cubic_spline_coef_1d k_ele = typename LR_lookup_table_kk::tdual_cubic_spline_coef_1d("lookup:LR[i,j].ele",n); + typename LR_lookup_table_kk::tdual_cubic_spline_coef_1d k_CEclmb = typename LR_lookup_table_kk::tdual_cubic_spline_coef_1d("lookup:LR[i,j].CEclmb",n); - k_LR.h_view(i,j).d_y = k_y.d_view; - k_LR.h_view(i,j).d_H = k_H.d_view; - k_LR.h_view(i,j).d_vdW = k_vdW.d_view; - k_LR.h_view(i,j).d_CEvd = k_CEvd.d_view; - k_LR.h_view(i,j).d_ele = k_ele.d_view; - k_LR.h_view(i,j).d_CEclmb = k_CEclmb.d_view; + k_LR.h_view(i,j).d_y = k_y.template view(); + k_LR.h_view(i,j).d_H = k_H.template view(); + k_LR.h_view(i,j).d_vdW = k_vdW.template view(); + k_LR.h_view(i,j).d_CEvd = k_CEvd.template view(); + k_LR.h_view(i,j).d_ele = k_ele.template view(); + k_LR.h_view(i,j).d_CEclmb = k_CEclmb.template view(); for (int k = 0; k < n; k++) { k_y.h_view(k) = LR[i][j].y[k]; @@ -1213,7 +1213,7 @@ void PairReaxCKokkos::operator()(PairReaxComputeTabulatedLJCoulomb t = d_LR(tmin,tmax); /* Cubic Spline Interpolation */ diff --git a/src/KOKKOS/pair_reaxc_kokkos.h b/src/KOKKOS/pair_reaxc_kokkos.h index 59c4d196d5fb22f1edc6c839d56a8cb7e639242b..95fd7ced38e3f8a7b6bb15f22b79546c4a99866b 100644 --- a/src/KOKKOS/pair_reaxc_kokkos.h +++ b/src/KOKKOS/pair_reaxc_kokkos.h @@ -39,14 +39,15 @@ PairStyle(reax/c/kk/host,PairReaxCKokkos) namespace LAMMPS_NS { -typedef Kokkos::DualView tdual_LR_data_1d; -typedef typename tdual_LR_data_1d::t_dev t_LR_data_1d; - -typedef Kokkos::DualView tdual_cubic_spline_coef_1d; -typedef typename tdual_cubic_spline_coef_1d::t_dev t_cubic_spline_coef_1d; - +template struct LR_lookup_table_kk { + typedef Kokkos::DualView tdual_LR_data_1d; + typedef typename tdual_LR_data_1d::t_dev t_LR_data_1d; + + typedef Kokkos::DualView tdual_cubic_spline_coef_1d; + typedef typename tdual_cubic_spline_coef_1d::t_dev t_cubic_spline_coef_1d; + double xmin, xmax; int n; double dx, inv_dx; @@ -397,7 +398,7 @@ class PairReaxCKokkos : public PairReaxC { HAT::t_virial_array h_vatom; DAT::tdual_float_1d k_tap; - DAT::t_float_1d d_tap; + typename AT::t_float_1d d_tap; HAT::t_float_1d h_tap; typename AT::t_float_1d d_bo_rij, d_hb_rsq, d_Deltap, d_Deltap_boc, d_total_bo; @@ -438,7 +439,9 @@ class PairReaxCKokkos : public PairReaxC { int bocnt,hbcnt; - typedef Kokkos::DualView tdual_LR_lookup_table_kk_2d; + typedef LR_lookup_table_kk LR_lookup_table_kk_DT; + + typedef Kokkos::DualView tdual_LR_lookup_table_kk_2d; typedef typename tdual_LR_lookup_table_kk_2d::t_dev t_LR_lookup_table_kk_2d; tdual_LR_lookup_table_kk_2d k_LR; diff --git a/src/KOKKOS/pair_sw_kokkos.cpp b/src/KOKKOS/pair_sw_kokkos.cpp index e5c947cc8e56b447e43a1b247c81cdbee38fcccc..3440f7c63923da0467c61b702c1184ab3cb1856c 100644 --- a/src/KOKKOS/pair_sw_kokkos.cpp +++ b/src/KOKKOS/pair_sw_kokkos.cpp @@ -572,7 +572,7 @@ void PairSWKokkos::coeff(int narg, char **arg) k_map.template modify(); k_map.template sync(); - d_map = k_map.d_view; + d_map = k_map.template view(); } /* ---------------------------------------------------------------------- @@ -637,8 +637,8 @@ void PairSWKokkos::setup_params() k_params.template modify(); k_params.template sync(); - d_elem2param = k_elem2param.d_view; - d_params = k_params.d_view; + d_elem2param = k_elem2param.template view(); + d_params = k_params.template view(); } /* ---------------------------------------------------------------------- */ diff --git a/src/KOKKOS/pair_sw_kokkos.h b/src/KOKKOS/pair_sw_kokkos.h index b94e39335f639832acef58b4f44f18a2fba1cfff..3152fb6e94f5fc43b7b6b61cef54f040b5c8c590 100644 --- a/src/KOKKOS/pair_sw_kokkos.h +++ b/src/KOKKOS/pair_sw_kokkos.h @@ -103,7 +103,7 @@ class PairSWKokkos : public PairSW { typedef typename tdual_int_3d::t_host t_host_int_3d; t_int_3d_randomread d_elem2param; - DAT::t_int_1d_randomread d_map; + typename AT::t_int_1d_randomread d_map; typedef Kokkos::DualView tdual_param_1d; typedef typename tdual_param_1d::t_dev t_param_1d; @@ -125,12 +125,12 @@ class PairSWKokkos : public PairSW { DAT::tdual_efloat_1d k_eatom; DAT::tdual_virial_array k_vatom; - typename ArrayTypes::t_efloat_1d d_eatom; - typename ArrayTypes::t_virial_array d_vatom; + typename AT::t_efloat_1d d_eatom; + typename AT::t_virial_array d_vatom; - DAT::t_int_1d_randomread d_type2frho; - DAT::t_int_2d_randomread d_type2rhor; - DAT::t_int_2d_randomread d_type2z2r; + typename AT::t_int_1d_randomread d_type2frho; + typename AT::t_int_2d_randomread d_type2rhor; + typename AT::t_int_2d_randomread d_type2z2r; typename AT::t_neighbors_2d d_neighbors; typename AT::t_int_1d_randomread d_ilist; diff --git a/src/KOKKOS/pair_table_rx_kokkos.cpp b/src/KOKKOS/pair_table_rx_kokkos.cpp new file mode 100644 index 0000000000000000000000000000000000000000..2f5a670537ce05f528d1c789c3070292cacd8c80 --- /dev/null +++ b/src/KOKKOS/pair_table_rx_kokkos.cpp @@ -0,0 +1,1307 @@ +/* ---------------------------------------------------------------------- + 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: Dan Ibanez (SNL) +------------------------------------------------------------------------- */ + +#include +#include +#include +#include +#include "pair_table_rx_kokkos.h" +#include "kokkos.h" +#include "atom.h" +#include "force.h" +#include "comm.h" +#include "neighbor.h" +#include "neigh_list.h" +#include "neigh_request.h" +#include "memory.h" +#include "error.h" +#include "atom_masks.h" +#include "fix.h" +#include "kokkos_few.h" +#include + +using namespace LAMMPS_NS; + +enum{NONE,RLINEAR,RSQ,BMP}; + +#ifdef DBL_EPSILON + #define MY_EPSILON (10.0*DBL_EPSILON) +#else + #define MY_EPSILON (10.0*2.220446049250313e-16) +#endif + +#define OneFluidValue (-1) +#define isOneFluid(_site_) ( (_site_) == OneFluidValue ) + +template +KOKKOS_INLINE_FUNCTION +void getMixingWeights( + typename ArrayTypes::t_float_2d_randomread dvector, + int nspecies, + int isite1, int isite2, + bool fractionalWeighting, + int id, + double &mixWtSite1old, double &mixWtSite2old, + double &mixWtSite1, double &mixWtSite2) { + double fractionOFAold, fractionOFA; + double fractionOld1, fraction1; + double fractionOld2, fraction2; + double nMoleculesOFAold, nMoleculesOFA; + double nMoleculesOld1, nMolecules1; + double nMoleculesOld2, nMolecules2; + double nTotal, nTotalOld; + + nTotal = 0.0; + nTotalOld = 0.0; + assert(id >= 0); + assert(id < dvector.dimension_1()); + for (int ispecies = 0; ispecies < nspecies; ++ispecies){ + assert(ispecies < dvector.dimension_0()); + nTotal += dvector(ispecies,id); + assert(ispecies+nspecies < dvector.dimension_0()); + nTotalOld += dvector(ispecies+nspecies,id); + } + + assert(isite1 >= 0); + assert(isite1 < nspecies); + assert(isite2 >= 0); + assert(isite2 < nspecies); + if (isOneFluid(isite1) == false){ + nMoleculesOld1 = dvector(isite1+nspecies,id); + nMolecules1 = dvector(isite1,id); + fractionOld1 = nMoleculesOld1/nTotalOld; + fraction1 = nMolecules1/nTotal; + } + if (isOneFluid(isite2) == false){ + nMoleculesOld2 = dvector(isite2+nspecies,id); + nMolecules2 = dvector(isite2,id); + fractionOld2 = nMoleculesOld2/nTotalOld; + fraction2 = nMolecules2/nTotal; + } + + if (isOneFluid(isite1) || isOneFluid(isite2)){ + nMoleculesOFAold = 0.0; + nMoleculesOFA = 0.0; + fractionOFAold = 0.0; + fractionOFA = 0.0; + + for (int ispecies = 0; ispecies < nspecies; ispecies++){ + if (isite1 == ispecies || isite2 == ispecies) continue; + nMoleculesOFAold += dvector(ispecies+nspecies,id); + nMoleculesOFA += dvector(ispecies,id); + fractionOFAold += dvector(ispecies+nspecies,id)/nTotalOld; + fractionOFA += dvector(ispecies,id)/nTotal; + } + if(isOneFluid(isite1)){ + nMoleculesOld1 = 1.0-(nTotalOld-nMoleculesOFAold); + nMolecules1 = 1.0-(nTotal-nMoleculesOFA); + fractionOld1 = fractionOFAold; + fraction1 = fractionOFA; + } + if(isOneFluid(isite2)){ + nMoleculesOld2 = 1.0-(nTotalOld-nMoleculesOFAold); + nMolecules2 = 1.0-(nTotal-nMoleculesOFA); + fractionOld2 = fractionOFAold; + fraction2 = fractionOFA; + } + } + + if(fractionalWeighting){ + mixWtSite1old = fractionOld1; + mixWtSite1 = fraction1; + mixWtSite2old = fractionOld2; + mixWtSite2 = fraction2; + } else { + mixWtSite1old = nMoleculesOld1; + mixWtSite1 = nMolecules1; + mixWtSite2old = nMoleculesOld2; + mixWtSite2 = nMolecules2; + } +} + +/* ---------------------------------------------------------------------- */ + +template +PairTableRXKokkos::PairTableRXKokkos(LAMMPS *lmp) : PairTable(lmp) +{ + update_table = 0; + atomKK = (AtomKokkos *) atom; + execution_space = ExecutionSpaceFromDevice::space; + datamask_read = X_MASK | F_MASK | TYPE_MASK | ENERGY_MASK | VIRIAL_MASK | + DVECTOR_MASK | UCG_MASK | UCGNEW_MASK; + datamask_modify = F_MASK | ENERGY_MASK | VIRIAL_MASK | UCG_MASK | UCGNEW_MASK; + h_table = new TableHost(); + d_table = new TableDevice(); + fractionalWeighting = true; + + site1 = nullptr; + site2 = nullptr; +} + +/* ---------------------------------------------------------------------- */ + +template +PairTableRXKokkos::~PairTableRXKokkos() +{ + if (copymode) return; + + delete [] site1; + delete [] site2; + + memory->destroy_kokkos(k_eatom,eatom); + memory->destroy_kokkos(k_vatom,vatom); + + if (allocated) { + memory->destroy_kokkos(d_table->cutsq, cutsq); + memory->destroy_kokkos(d_table->tabindex, tabindex); + } + + delete h_table; + h_table = nullptr; + delete d_table; + d_table = nullptr; +} + +/* ---------------------------------------------------------------------- */ + +template +void PairTableRXKokkos::compute(int eflag_in, int vflag_in) +{ + if(update_table) + create_kokkos_tables(); + if(tabstyle == LOOKUP) + compute_style(eflag_in,vflag_in); + if(tabstyle == LINEAR) + compute_style(eflag_in,vflag_in); + if(tabstyle == SPLINE) + compute_style(eflag_in,vflag_in); + if(tabstyle == BITMAP) + compute_style(eflag_in,vflag_in); +} + +KOKKOS_INLINE_FUNCTION static int sbmask(const int& j) +{ + return j >> SBBITS & 3; +} + +template +KOKKOS_INLINE_FUNCTION +static F_FLOAT +compute_fpair(F_FLOAT rsq, + int itype, int jtype, + typename PairTableRXKokkos::TableDeviceConst const& d_table_const + ) { + Pair::union_int_float_t rsq_lookup; + double fpair; + const int tidx = d_table_const.tabindex(itype,jtype); + if (TABSTYLE == PairTable::LOOKUP) { + const int itable = static_cast ((rsq - d_table_const.innersq(tidx)) * d_table_const.invdelta(tidx)); + fpair = d_table_const.f(tidx,itable); + } else if (TABSTYLE == PairTable::LINEAR) { + const int itable = static_cast ((rsq - d_table_const.innersq(tidx)) * d_table_const.invdelta(tidx)); + const double fraction = (rsq - d_table_const.rsq(tidx,itable)) * d_table_const.invdelta(tidx); + fpair = d_table_const.f(tidx,itable) + fraction*d_table_const.df(tidx,itable); + } else if (TABSTYLE == PairTable::SPLINE) { + const int itable = static_cast ((rsq - d_table_const.innersq(tidx)) * d_table_const.invdelta(tidx)); + const double b = (rsq - d_table_const.rsq(tidx,itable)) * d_table_const.invdelta(tidx); + const double a = 1.0 - b; + fpair = a * d_table_const.f(tidx,itable) + b * d_table_const.f(tidx,itable+1) + + ((a*a*a-a)*d_table_const.f2(tidx,itable) + (b*b*b-b)*d_table_const.f2(tidx,itable+1)) * + d_table_const.deltasq6(tidx); + } else { + rsq_lookup.f = rsq; + int itable = rsq_lookup.i & d_table_const.nmask(tidx); + itable >>= d_table_const.nshiftbits(tidx); + const double fraction = (rsq_lookup.f - d_table_const.rsq(tidx,itable)) * d_table_const.drsq(tidx,itable); + fpair = d_table_const.f(tidx,itable) + fraction*d_table_const.df(tidx,itable); + } + return fpair; +} + +template +KOKKOS_INLINE_FUNCTION +static F_FLOAT +compute_evdwl( + F_FLOAT rsq, + int itype, int jtype, + typename PairTableRXKokkos::TableDeviceConst const& d_table_const + ) { + double evdwl; + Pair::union_int_float_t rsq_lookup; + const int tidx = d_table_const.tabindex(itype,jtype); + if (TABSTYLE == PairTable::LOOKUP) { + const int itable = static_cast ((rsq - d_table_const.innersq(tidx)) * d_table_const.invdelta(tidx)); + evdwl = d_table_const.e(tidx,itable); + } else if (TABSTYLE == PairTable::LINEAR) { + const int itable = static_cast ((rsq - d_table_const.innersq(tidx)) * d_table_const.invdelta(tidx)); + const double fraction = (rsq - d_table_const.rsq(tidx,itable)) * d_table_const.invdelta(tidx); + evdwl = d_table_const.e(tidx,itable) + fraction*d_table_const.de(tidx,itable); + } else if (TABSTYLE == PairTable::SPLINE) { + const int itable = static_cast ((rsq - d_table_const.innersq(tidx)) * d_table_const.invdelta(tidx)); + const double b = (rsq - d_table_const.rsq(tidx,itable)) * d_table_const.invdelta(tidx); + const double a = 1.0 - b; + evdwl = a * d_table_const.e(tidx,itable) + b * d_table_const.e(tidx,itable+1) + + ((a*a*a-a)*d_table_const.e2(tidx,itable) + (b*b*b-b)*d_table_const.e2(tidx,itable+1)) * + d_table_const.deltasq6(tidx); + } else { + rsq_lookup.f = rsq; + int itable = rsq_lookup.i & d_table_const.nmask(tidx); + itable >>= d_table_const.nshiftbits(tidx); + const double fraction = (rsq_lookup.f - d_table_const.rsq(tidx,itable)) * d_table_const.drsq(tidx,itable); + evdwl = d_table_const.e(tidx,itable) + fraction*d_table_const.de(tidx,itable); + } + return evdwl; +} + +template +KOKKOS_INLINE_FUNCTION +void +ev_tally( + int eflag, + int eflag_atom, + int vflag, + int vflag_global, + int vflag_atom, + int nlocal, + int i, int j, + EV_FLOAT& ev, + F_FLOAT epair, F_FLOAT fpair, + F_FLOAT delx, F_FLOAT dely, F_FLOAT delz, + Kokkos::View::t_virial_array::array_layout, + DeviceType, + Kokkos::MemoryTraits::value> > const& v_vatom, + Kokkos::View::t_efloat_1d::array_layout, + DeviceType, + Kokkos::MemoryTraits::value> > const& v_eatom) +{ + if (eflag) { + if (eflag_atom) { + auto epairhalf = 0.5 * epair; + if (NEIGHFLAG!=FULL) { + if (NEWTON_PAIR || i < nlocal) v_eatom[i] += epairhalf; + if (NEWTON_PAIR || j < nlocal) v_eatom[j] += epairhalf; + } else { + v_eatom[i] += epairhalf; + } + } + } + + if (vflag) { + auto v0 = delx*delx*fpair; + auto v1 = dely*dely*fpair; + auto v2 = delz*delz*fpair; + auto v3 = delx*dely*fpair; + auto v4 = delx*delz*fpair; + auto v5 = dely*delz*fpair; + + if (vflag_global) { + if (NEIGHFLAG!=FULL) { + if (NEWTON_PAIR) { + ev.v[0] += v0; + ev.v[1] += v1; + ev.v[2] += v2; + ev.v[3] += v3; + ev.v[4] += v4; + ev.v[5] += v5; + } else { + if (i < nlocal) { + ev.v[0] += 0.5*v0; + ev.v[1] += 0.5*v1; + ev.v[2] += 0.5*v2; + ev.v[3] += 0.5*v3; + ev.v[4] += 0.5*v4; + ev.v[5] += 0.5*v5; + } + if (j < nlocal) { + ev.v[0] += 0.5*v0; + ev.v[1] += 0.5*v1; + ev.v[2] += 0.5*v2; + ev.v[3] += 0.5*v3; + ev.v[4] += 0.5*v4; + ev.v[5] += 0.5*v5; + } + } + } else { + ev.v[0] += 0.5*v0; + ev.v[1] += 0.5*v1; + ev.v[2] += 0.5*v2; + ev.v[3] += 0.5*v3; + ev.v[4] += 0.5*v4; + ev.v[5] += 0.5*v5; + } + } + + if (vflag_atom) { + if (NEIGHFLAG!=FULL) { + if (NEWTON_PAIR || i < nlocal) { + v_vatom(i,0) += 0.5*v0; + v_vatom(i,1) += 0.5*v1; + v_vatom(i,2) += 0.5*v2; + v_vatom(i,3) += 0.5*v3; + v_vatom(i,4) += 0.5*v4; + v_vatom(i,5) += 0.5*v5; + } + if (NEWTON_PAIR || j < nlocal) { + v_vatom(j,0) += 0.5*v0; + v_vatom(j,1) += 0.5*v1; + v_vatom(j,2) += 0.5*v2; + v_vatom(j,3) += 0.5*v3; + v_vatom(j,4) += 0.5*v4; + v_vatom(j,5) += 0.5*v5; + } + } else { + v_vatom(i,0) += 0.5*v0; + v_vatom(i,1) += 0.5*v1; + v_vatom(i,2) += 0.5*v2; + v_vatom(i,3) += 0.5*v3; + v_vatom(i,4) += 0.5*v4; + v_vatom(i,5) += 0.5*v5; + } + } + } +} + +template +KOKKOS_INLINE_FUNCTION +static EV_FLOAT +compute_item( + int ii, + int nlocal, + typename ArrayTypes::t_int_1d_const const& d_ilist, + typename ArrayTypes::t_neighbors_2d_const const& d_neighbors, + typename ArrayTypes::t_int_1d_const const& d_numneigh, + typename ArrayTypes::t_x_array_randomread const& x, + typename ArrayTypes::t_int_1d_randomread const& type, + Kokkos::View const& mixWtSite1old, + Kokkos::View const& mixWtSite2old, + Kokkos::View const& mixWtSite1, + Kokkos::View const& mixWtSite2, + Few const& special_lj, + Few, MAX_TYPES_STACKPARAMS+1> const& m_cutsq, + typename ArrayTypes::t_ffloat_2d const& d_cutsq, + Kokkos::View::t_f_array::array_layout, + DeviceType, + Kokkos::MemoryTraits::value> > const& f, + Kokkos::View::t_efloat_1d::array_layout, + DeviceType, + Kokkos::MemoryTraits::value> > const& uCG, + Kokkos::View::t_efloat_1d::array_layout, + DeviceType, + Kokkos::MemoryTraits::value> > const& uCGnew, + int isite1, int isite2, + typename PairTableRXKokkos::TableDeviceConst const& d_table_const, + int eflag, + int eflag_atom, + int vflag, + int vflag_global, + int vflag_atom, + Kokkos::View::t_virial_array::array_layout, + DeviceType, + Kokkos::MemoryTraits::value> > const& v_vatom, + Kokkos::View::t_efloat_1d::array_layout, + DeviceType, + Kokkos::MemoryTraits::value> > const& v_eatom) { + EV_FLOAT ev; + auto i = d_ilist(ii); + auto xtmp = x(i,0); + auto ytmp = x(i,1); + auto ztmp = x(i,2); + auto itype = type(i); + + auto jlist = NeighListKokkos::static_neighbors_const(i, + d_neighbors, d_numneigh); + auto jnum = d_numneigh(i); + + double uCG_i = 0.0; + double uCGnew_i = 0.0; + double fx_i = 0.0, fy_i = 0.0, fz_i = 0.0; + + auto mixWtSite1old_i = mixWtSite1old(i); + auto mixWtSite2old_i = mixWtSite2old(i); + auto mixWtSite1_i = mixWtSite1(i); + auto mixWtSite2_i = mixWtSite2(i); + + for (int jj = 0; jj < jnum; jj++) { + auto j = jlist(jj); + const F_FLOAT factor_lj = special_lj[sbmask(j)]; + j &= NEIGHMASK; + + auto delx = xtmp - x(j,0); + auto dely = ytmp - x(j,1); + auto delz = ztmp - x(j,2); + auto rsq = delx*delx + dely*dely + delz*delz; + auto jtype = type(j); + + if(rsq < (STACKPARAMS ? m_cutsq[itype][jtype] : d_cutsq(itype,jtype))) { + auto mixWtSite1old_j = mixWtSite1old(j); + auto mixWtSite2old_j = mixWtSite2old(j); + auto mixWtSite1_j = mixWtSite1(j); + auto mixWtSite2_j = mixWtSite2(j); + + auto fpair = factor_lj * compute_fpair( + rsq,itype,jtype,d_table_const); + + if (isite1 == isite2) fpair *= sqrt(mixWtSite1old_i * mixWtSite2old_j); + else fpair *= (sqrt(mixWtSite1old_i * mixWtSite2old_j) + + sqrt(mixWtSite2old_i * mixWtSite1old_j)); + + fx_i += delx*fpair; + fy_i += dely*fpair; + fz_i += delz*fpair; + + auto do_half = (NEIGHFLAG==HALF || NEIGHFLAG==HALFTHREAD) && + (NEWTON_PAIR || j < nlocal); + if (do_half) { + f(j,0) -= delx*fpair; + f(j,1) -= dely*fpair; + f(j,2) -= delz*fpair; + } + + auto evdwl = compute_evdwl( + rsq,itype,jtype,d_table_const); + + double evdwlOld; + if (isite1 == isite2) { + evdwlOld = sqrt(mixWtSite1old_i*mixWtSite2old_j)*evdwl; + evdwl = sqrt(mixWtSite1_i*mixWtSite2_j)*evdwl; + } else { + evdwlOld = (sqrt(mixWtSite1old_i*mixWtSite2old_j) + + sqrt(mixWtSite2old_i*mixWtSite1old_j))*evdwl; + evdwl = (sqrt(mixWtSite1_i*mixWtSite2_j) + + sqrt(mixWtSite2_i*mixWtSite1_j))*evdwl; + } + evdwlOld *= factor_lj; + evdwl *= factor_lj; + + uCG_i += 0.5*evdwlOld; + if (do_half) uCG(j) += 0.5*evdwlOld; + + uCGnew_i += 0.5*evdwl; + if (do_half) uCGnew(j) += 0.5*evdwl; + evdwl = evdwlOld; + + ev.evdwl += (do_half ? 1.0 : 0.5)*evdwl; + + if (EVFLAG) { + ev_tally( + eflag,eflag_atom, + vflag,vflag_global,vflag_atom, + nlocal,i,j,ev,evdwl,fpair,delx,dely,delz, + v_vatom, v_eatom); + } + } + } + + uCG(i) += uCG_i; + uCGnew(i) += uCGnew_i; + + f(i,0) += fx_i; + f(i,1) += fy_i; + f(i,2) += fz_i; + + return ev; +} + +template +static void compute_all_items( + EV_FLOAT& ev, + int nlocal, + int inum, + typename ArrayTypes::t_int_1d_const d_ilist, + typename ArrayTypes::t_neighbors_2d_const d_neighbors, + typename ArrayTypes::t_int_1d_const d_numneigh, + typename ArrayTypes::t_x_array_randomread x, + typename ArrayTypes::t_int_1d_randomread type, + Kokkos::View const& mixWtSite1old, + Kokkos::View const& mixWtSite2old, + Kokkos::View const& mixWtSite1, + Kokkos::View const& mixWtSite2, + Few special_lj, + Few, MAX_TYPES_STACKPARAMS+1> m_cutsq, + typename ArrayTypes::t_ffloat_2d d_cutsq, + Kokkos::View::t_f_array::array_layout, + DeviceType, + Kokkos::MemoryTraits::value> > f, + Kokkos::View::t_efloat_1d::array_layout, + DeviceType,Kokkos::MemoryTraits::value> > uCG, + Kokkos::View::t_efloat_1d::array_layout, + DeviceType,Kokkos::MemoryTraits::value> > uCGnew, + int isite1, int isite2, + typename PairTableRXKokkos::TableDeviceConst d_table_const, + int eflag, + int eflag_atom, + int vflag, + int vflag_global, + int vflag_atom, + Kokkos::View::t_virial_array::array_layout, + DeviceType, + Kokkos::MemoryTraits::value> > v_vatom, + Kokkos::View::t_efloat_1d::array_layout, + DeviceType, + Kokkos::MemoryTraits::value> > v_eatom) { + if (eflag || vflag) { + Kokkos::parallel_reduce(inum, + LAMMPS_LAMBDA(int i, EV_FLOAT& energy_virial) { + energy_virial += + compute_item( + i, nlocal, d_ilist, d_neighbors, d_numneigh, x, type, + mixWtSite1old, mixWtSite2old, mixWtSite1, mixWtSite2, + special_lj, m_cutsq, d_cutsq, f, uCG, uCGnew, isite1, isite2, + d_table_const, eflag, eflag_atom, + vflag, vflag_global, vflag_atom, v_vatom, v_eatom); + }, ev); + } else { + Kokkos::parallel_for(inum, + LAMMPS_LAMBDA(int i) { + compute_item( + i, nlocal, d_ilist, d_neighbors, d_numneigh, x, type, + mixWtSite1old, mixWtSite2old, mixWtSite1, mixWtSite2, + special_lj, m_cutsq, d_cutsq, f, uCG, uCGnew, isite1, isite2, + d_table_const, eflag, eflag_atom, + vflag, vflag_global, vflag_atom, v_vatom, v_eatom); + }); + } +} + +template +static void getAllMixingWeights( + int ntotal, + typename ArrayTypes::t_float_2d_randomread dvector, + int nspecies, + int isite1, int isite2, + bool fractionalWeighting, + Kokkos::View const& mixWtSite1old, + Kokkos::View const& mixWtSite2old, + Kokkos::View const& mixWtSite1, + Kokkos::View const& mixWtSite2) { + Kokkos::parallel_for(ntotal, + LAMMPS_LAMBDA(int i) { + getMixingWeights(dvector,nspecies,isite1,isite2,fractionalWeighting, + i, mixWtSite1old(i), mixWtSite2old(i), mixWtSite1(i), mixWtSite2(i)); + }); +} + +template +template +void PairTableRXKokkos::compute_style(int eflag_in, int vflag_in) +{ + auto eflag = eflag_in; + auto vflag = vflag_in; + + if (neighflag == FULL) no_virial_fdotr_compute = 1; + + if (eflag || vflag) ev_setup(eflag,vflag,0); + else evflag = vflag_fdotr = 0; + + if (eflag_atom) { + memory->destroy_kokkos(k_eatom,eatom); + memory->create_kokkos(k_eatom,eatom,maxeatom,"pair:eatom"); + d_eatom = k_eatom.template view(); + } + if (vflag_atom) { + memory->destroy_kokkos(k_vatom,vatom); + memory->create_kokkos(k_vatom,vatom,maxvatom,6,"pair:vatom"); + d_vatom = k_vatom.template view(); + } + + atomKK->sync(execution_space,datamask_read); + if (eflag || vflag) atomKK->modified(execution_space,datamask_modify); + else atomKK->modified(execution_space,F_MASK); + + x = atomKK->k_x.view(); + f = atomKK->k_f.view(); + auto type = atomKK->k_type.view(); + auto uCG = atomKK->k_uCG.view(); + auto uCGnew = atomKK->k_uCGnew.view(); + auto nlocal = atom->nlocal; + Few special_lj_local; + special_lj_local[0] = force->special_lj[0]; + special_lj_local[1] = force->special_lj[1]; + special_lj_local[2] = force->special_lj[2]; + special_lj_local[3] = force->special_lj[3]; + auto newton_pair = force->newton_pair; + d_cutsq = d_table->cutsq; + // loop over neighbors of my atoms + + const int ntotal = atom->nlocal + atom->nghost; + if (ntotal > mixWtSite1.dimension_0()) { + mixWtSite1old = Kokkos::View("PairTableRXKokkos::mixWtSite1old", ntotal); + mixWtSite2old = Kokkos::View("PairTableRXKokkos::mixWtSite2old", ntotal); + mixWtSite1 = Kokkos::View("PairTableRXKokkos::mixWtSite1", ntotal); + mixWtSite2 = Kokkos::View("PairTableRXKokkos::mixWtSite2", ntotal); + } + + getAllMixingWeights(ntotal, atomKK->k_dvector.template view(), + nspecies, isite1, isite2, fractionalWeighting, + mixWtSite1old, mixWtSite2old, mixWtSite1, mixWtSite2); + + if (neighflag == N2) error->all(FLERR,"pair table/rx/kk can't handle N2 yet\n"); + + NeighListKokkos* l = + dynamic_cast*>(list); + + EV_FLOAT ev; + if(atom->ntypes > MAX_TYPES_STACKPARAMS) { + if (neighflag == HALFTHREAD) { + if (newton_pair) { + compute_all_items( + ev, nlocal, l->inum, l->d_ilist, l->d_neighbors, l->d_numneigh, + x, type, mixWtSite1old, mixWtSite2old, mixWtSite1, mixWtSite2, + special_lj_local, m_cutsq, d_cutsq, f, uCG, uCGnew, isite1, isite2, + d_table_const, eflag, eflag_atom, + vflag, vflag_global, vflag_atom, d_vatom, d_eatom); + } else { + compute_all_items( + ev, nlocal, l->inum, l->d_ilist, l->d_neighbors, l->d_numneigh, + x, type, mixWtSite1old, mixWtSite2old, mixWtSite1, mixWtSite2, + special_lj_local, m_cutsq, d_cutsq, f, uCG, uCGnew, isite1, isite2, + d_table_const, eflag, eflag_atom, + vflag, vflag_global, vflag_atom, d_vatom, d_eatom); + } + } else if (neighflag == HALF) { + if (newton_pair) { + compute_all_items( + ev, nlocal, l->inum, l->d_ilist, l->d_neighbors, l->d_numneigh, + x, type, mixWtSite1old, mixWtSite2old, mixWtSite1, mixWtSite2, + special_lj_local, m_cutsq, d_cutsq, f, uCG, uCGnew, isite1, isite2, + d_table_const, eflag, eflag_atom, + vflag, vflag_global, vflag_atom, d_vatom, d_eatom); + } else { + compute_all_items( + ev, nlocal, l->inum, l->d_ilist, l->d_neighbors, l->d_numneigh, + x, type, mixWtSite1old, mixWtSite2old, mixWtSite1, mixWtSite2, + special_lj_local, m_cutsq, d_cutsq, f, uCG, uCGnew, isite1, isite2, + d_table_const, eflag, eflag_atom, + vflag, vflag_global, vflag_atom, d_vatom, d_eatom); + } + } else if (neighflag == FULL) { + if (newton_pair) { + compute_all_items( + ev, nlocal, l->inum, l->d_ilist, l->d_neighbors, l->d_numneigh, + x, type, mixWtSite1old, mixWtSite2old, mixWtSite1, mixWtSite2, + special_lj_local, m_cutsq, d_cutsq, f, uCG, uCGnew, isite1, isite2, + d_table_const, eflag, eflag_atom, + vflag, vflag_global, vflag_atom, d_vatom, d_eatom); + } else { + compute_all_items( + ev, nlocal, l->inum, l->d_ilist, l->d_neighbors, l->d_numneigh, + x, type, mixWtSite1old, mixWtSite2old, mixWtSite1, mixWtSite2, + special_lj_local, m_cutsq, d_cutsq, f, uCG, uCGnew, isite1, isite2, + d_table_const, eflag, eflag_atom, + vflag, vflag_global, vflag_atom, d_vatom, d_eatom); + } + } + } else { + if (neighflag == HALFTHREAD) { + if (newton_pair) { + compute_all_items( + ev, nlocal, l->inum, l->d_ilist, l->d_neighbors, l->d_numneigh, + x, type, mixWtSite1old, mixWtSite2old, mixWtSite1, mixWtSite2, + special_lj_local, m_cutsq, d_cutsq, f, uCG, uCGnew, isite1, isite2, + d_table_const, eflag, eflag_atom, + vflag, vflag_global, vflag_atom, d_vatom, d_eatom); + } else { + compute_all_items( + ev, nlocal, l->inum, l->d_ilist, l->d_neighbors, l->d_numneigh, + x, type, mixWtSite1old, mixWtSite2old, mixWtSite1, mixWtSite2, + special_lj_local, m_cutsq, d_cutsq, f, uCG, uCGnew, isite1, isite2, + d_table_const, eflag, eflag_atom, + vflag, vflag_global, vflag_atom, d_vatom, d_eatom); + } + } else if (neighflag == HALF) { + if (newton_pair) { + compute_all_items( + ev, nlocal, l->inum, l->d_ilist, l->d_neighbors, l->d_numneigh, + x, type, mixWtSite1old, mixWtSite2old, mixWtSite1, mixWtSite2, + special_lj_local, m_cutsq, d_cutsq, f, uCG, uCGnew, isite1, isite2, + d_table_const, eflag, eflag_atom, + vflag, vflag_global, vflag_atom, d_vatom, d_eatom); + } else { + compute_all_items( + ev, nlocal, l->inum, l->d_ilist, l->d_neighbors, l->d_numneigh, + x, type, mixWtSite1old, mixWtSite2old, mixWtSite1, mixWtSite2, + special_lj_local, m_cutsq, d_cutsq, f, uCG, uCGnew, isite1, isite2, + d_table_const, eflag, eflag_atom, + vflag, vflag_global, vflag_atom, d_vatom, d_eatom); + } + } else if (neighflag == FULL) { + if (newton_pair) { + compute_all_items( + ev, nlocal, l->inum, l->d_ilist, l->d_neighbors, l->d_numneigh, + x, type, mixWtSite1old, mixWtSite2old, mixWtSite1, mixWtSite2, + special_lj_local, m_cutsq, d_cutsq, f, uCG, uCGnew, isite1, isite2, + d_table_const, eflag, eflag_atom, + vflag, vflag_global, vflag_atom, d_vatom, d_eatom); + } else { + compute_all_items( + ev, nlocal, l->inum, l->d_ilist, l->d_neighbors, l->d_numneigh, + x, type, mixWtSite1old, mixWtSite2old, mixWtSite1, mixWtSite2, + special_lj_local, m_cutsq, d_cutsq, f, uCG, uCGnew, isite1, isite2, + d_table_const, eflag, eflag_atom, + vflag, vflag_global, vflag_atom, d_vatom, d_eatom); + } + } + } + + if (eflag) eng_vdwl += ev.evdwl; + if (vflag_global) { + virial[0] += ev.v[0]; + virial[1] += ev.v[1]; + virial[2] += ev.v[2]; + virial[3] += ev.v[3]; + virial[4] += ev.v[4]; + virial[5] += ev.v[5]; + } + + if (vflag_fdotr) pair_virial_fdotr_compute(this); + + if (eflag_atom) { + k_eatom.template modify(); + k_eatom.template sync(); + } + + if (vflag_atom) { + k_vatom.template modify(); + k_vatom.template sync(); + } +} + +template +void PairTableRXKokkos::create_kokkos_tables() +{ + const int tlm1 = tablength-1; + + memory->create_kokkos(d_table->nshiftbits,h_table->nshiftbits,ntables,"Table::nshiftbits"); + memory->create_kokkos(d_table->nmask,h_table->nmask,ntables,"Table::nmask"); + memory->create_kokkos(d_table->innersq,h_table->innersq,ntables,"Table::innersq"); + memory->create_kokkos(d_table->invdelta,h_table->invdelta,ntables,"Table::invdelta"); + memory->create_kokkos(d_table->deltasq6,h_table->deltasq6,ntables,"Table::deltasq6"); + + if(tabstyle == LOOKUP) { + memory->create_kokkos(d_table->e,h_table->e,ntables,tlm1,"Table::e"); + memory->create_kokkos(d_table->f,h_table->f,ntables,tlm1,"Table::f"); + } + + if(tabstyle == LINEAR) { + memory->create_kokkos(d_table->rsq,h_table->rsq,ntables,tablength,"Table::rsq"); + memory->create_kokkos(d_table->e,h_table->e,ntables,tablength,"Table::e"); + memory->create_kokkos(d_table->f,h_table->f,ntables,tablength,"Table::f"); + memory->create_kokkos(d_table->de,h_table->de,ntables,tlm1,"Table::de"); + memory->create_kokkos(d_table->df,h_table->df,ntables,tlm1,"Table::df"); + } + + if(tabstyle == SPLINE) { + memory->create_kokkos(d_table->rsq,h_table->rsq,ntables,tablength,"Table::rsq"); + memory->create_kokkos(d_table->e,h_table->e,ntables,tablength,"Table::e"); + memory->create_kokkos(d_table->f,h_table->f,ntables,tablength,"Table::f"); + memory->create_kokkos(d_table->e2,h_table->e2,ntables,tablength,"Table::e2"); + memory->create_kokkos(d_table->f2,h_table->f2,ntables,tablength,"Table::f2"); + } + + if(tabstyle == BITMAP) { + int ntable = 1 << tablength; + memory->create_kokkos(d_table->rsq,h_table->rsq,ntables,ntable,"Table::rsq"); + memory->create_kokkos(d_table->e,h_table->e,ntables,ntable,"Table::e"); + memory->create_kokkos(d_table->f,h_table->f,ntables,ntable,"Table::f"); + memory->create_kokkos(d_table->de,h_table->de,ntables,ntable,"Table::de"); + memory->create_kokkos(d_table->df,h_table->df,ntables,ntable,"Table::df"); + memory->create_kokkos(d_table->drsq,h_table->drsq,ntables,ntable,"Table::drsq"); + } + + + + for(int i=0; i < ntables; i++) { + Table* tb = &tables[i]; + + h_table->nshiftbits[i] = tb->nshiftbits; + h_table->nmask[i] = tb->nmask; + h_table->innersq[i] = tb->innersq; + h_table->invdelta[i] = tb->invdelta; + h_table->deltasq6[i] = tb->deltasq6; + + for(int j = 0; jrsq.dimension_1(); j++) + h_table->rsq(i,j) = tb->rsq[j]; + for(int j = 0; jdrsq.dimension_1(); j++) + h_table->drsq(i,j) = tb->drsq[j]; + for(int j = 0; je.dimension_1(); j++) + h_table->e(i,j) = tb->e[j]; + for(int j = 0; jde.dimension_1(); j++) + h_table->de(i,j) = tb->de[j]; + for(int j = 0; jf.dimension_1(); j++) + h_table->f(i,j) = tb->f[j]; + for(int j = 0; jdf.dimension_1(); j++) + h_table->df(i,j) = tb->df[j]; + for(int j = 0; je2.dimension_1(); j++) + h_table->e2(i,j) = tb->e2[j]; + for(int j = 0; jf2.dimension_1(); j++) + h_table->f2(i,j) = tb->f2[j]; + } + + + Kokkos::deep_copy(d_table->nshiftbits,h_table->nshiftbits); + d_table_const.nshiftbits = d_table->nshiftbits; + Kokkos::deep_copy(d_table->nmask,h_table->nmask); + d_table_const.nmask = d_table->nmask; + Kokkos::deep_copy(d_table->innersq,h_table->innersq); + d_table_const.innersq = d_table->innersq; + Kokkos::deep_copy(d_table->invdelta,h_table->invdelta); + d_table_const.invdelta = d_table->invdelta; + Kokkos::deep_copy(d_table->deltasq6,h_table->deltasq6); + d_table_const.deltasq6 = d_table->deltasq6; + + if(tabstyle == LOOKUP) { + Kokkos::deep_copy(d_table->e,h_table->e); + d_table_const.e = d_table->e; + Kokkos::deep_copy(d_table->f,h_table->f); + d_table_const.f = d_table->f; + } + + if(tabstyle == LINEAR) { + Kokkos::deep_copy(d_table->rsq,h_table->rsq); + d_table_const.rsq = d_table->rsq; + Kokkos::deep_copy(d_table->e,h_table->e); + d_table_const.e = d_table->e; + Kokkos::deep_copy(d_table->f,h_table->f); + d_table_const.f = d_table->f; + Kokkos::deep_copy(d_table->de,h_table->de); + d_table_const.de = d_table->de; + Kokkos::deep_copy(d_table->df,h_table->df); + d_table_const.df = d_table->df; + } + + if(tabstyle == SPLINE) { + Kokkos::deep_copy(d_table->rsq,h_table->rsq); + d_table_const.rsq = d_table->rsq; + Kokkos::deep_copy(d_table->e,h_table->e); + d_table_const.e = d_table->e; + Kokkos::deep_copy(d_table->f,h_table->f); + d_table_const.f = d_table->f; + Kokkos::deep_copy(d_table->e2,h_table->e2); + d_table_const.e2 = d_table->e2; + Kokkos::deep_copy(d_table->f2,h_table->f2); + d_table_const.f2 = d_table->f2; + } + + if(tabstyle == BITMAP) { + Kokkos::deep_copy(d_table->rsq,h_table->rsq); + d_table_const.rsq = d_table->rsq; + Kokkos::deep_copy(d_table->e,h_table->e); + d_table_const.e = d_table->e; + Kokkos::deep_copy(d_table->f,h_table->f); + d_table_const.f = d_table->f; + Kokkos::deep_copy(d_table->de,h_table->de); + d_table_const.de = d_table->de; + Kokkos::deep_copy(d_table->df,h_table->df); + d_table_const.df = d_table->df; + Kokkos::deep_copy(d_table->drsq,h_table->drsq); + d_table_const.drsq = d_table->drsq; + } + + Kokkos::deep_copy(d_table->cutsq,h_table->cutsq); + d_table_const.cutsq = d_table->cutsq; + Kokkos::deep_copy(d_table->tabindex,h_table->tabindex); + d_table_const.tabindex = d_table->tabindex; + + update_table = 0; +} + +/* ---------------------------------------------------------------------- + allocate all arrays +------------------------------------------------------------------------- */ + +template +void PairTableRXKokkos::allocate() +{ + allocated = 1; + const int nt = atom->ntypes + 1; + + memory->create(setflag,nt,nt,"pair:setflag"); + memory->create_kokkos(d_table->cutsq,h_table->cutsq,cutsq,nt,nt,"pair:cutsq"); + memory->create_kokkos(d_table->tabindex,h_table->tabindex,tabindex,nt,nt,"pair:tabindex"); + d_table_const.cutsq = d_table->cutsq; + d_table_const.tabindex = d_table->tabindex; + + memset(&setflag[0][0],0,nt*nt*sizeof(int)); + memset(&cutsq[0][0],0,nt*nt*sizeof(double)); + memset(&tabindex[0][0],0,nt*nt*sizeof(int)); +} + +/* ---------------------------------------------------------------------- + global settings +------------------------------------------------------------------------- */ + +template +void PairTableRXKokkos::settings(int narg, char **arg) +{ + if (narg < 2) error->all(FLERR,"Illegal pair_style command"); + + // new settings + + if (strcmp(arg[0],"lookup") == 0) tabstyle = LOOKUP; + else if (strcmp(arg[0],"linear") == 0) tabstyle = LINEAR; + else if (strcmp(arg[0],"spline") == 0) tabstyle = SPLINE; + else if (strcmp(arg[0],"bitmap") == 0) tabstyle = BITMAP; + else error->all(FLERR,"Unknown table style in pair_style command"); + + tablength = force->inumeric(FLERR,arg[1]); + if (tablength < 2) error->all(FLERR,"Illegal number of pair table entries"); + + // optional keywords + // assert the tabulation is compatible with a specific long-range solver + + int iarg = 2; + while (iarg < narg) { + if (strcmp(arg[iarg],"ewald") == 0) ewaldflag = 1; + else if (strcmp(arg[iarg],"pppm") == 0) pppmflag = 1; + else if (strcmp(arg[iarg],"msm") == 0) msmflag = 1; + else if (strcmp(arg[iarg],"dispersion") == 0) dispersionflag = 1; + else if (strcmp(arg[iarg],"tip4p") == 0) tip4pflag = 1; + else if (strcmp(arg[iarg],"fractional") == 0) fractionalWeighting = true; + else if (strcmp(arg[iarg],"molecular") == 0) fractionalWeighting = false; + else error->all(FLERR,"Illegal pair_style command"); + iarg++; + } + + // delete old tables, since cannot just change settings + + for (int m = 0; m < ntables; m++) free_table(&tables[m]); + memory->sfree(tables); + ntables = 0; + tables = NULL; + + if (allocated) { + memory->destroy(setflag); + + d_table_const.tabindex = d_table->tabindex = typename ArrayTypes::t_int_2d(); + h_table->tabindex = typename ArrayTypes::t_int_2d(); + + d_table_const.cutsq = d_table->cutsq = typename ArrayTypes::t_ffloat_2d(); + h_table->cutsq = typename ArrayTypes::t_ffloat_2d(); + allocated = 0; + } +} + +/* ---------------------------------------------------------------------- + set coeffs for one or more type pairs +------------------------------------------------------------------------- */ + +template +void PairTableRXKokkos::coeff(int narg, char **arg) +{ + if (narg != 6 && narg != 7) error->all(FLERR,"Illegal pair_coeff command"); + if (!allocated) allocate(); + + bool rx_flag = false; + for (int i = 0; i < modify->nfix; i++) + if (strncmp(modify->fix[i]->style,"rx",2) == 0) rx_flag = true; + if (!rx_flag) error->all(FLERR,"PairTableRX requires a fix rx command."); + + int ilo,ihi,jlo,jhi; + force->bounds(FLERR,arg[0],atom->ntypes,ilo,ihi); + force->bounds(FLERR,arg[1],atom->ntypes,jlo,jhi); + + int me; + MPI_Comm_rank(world,&me); + tables = (Table *) + memory->srealloc(tables,(ntables+1)*sizeof(Table),"pair:tables"); + Table *tb = &tables[ntables]; + null_table(tb); + if (me == 0) read_table(tb,arg[2],arg[3]); + bcast_table(tb); + + nspecies = atom->nspecies_dpd; + if(nspecies==0) error->all(FLERR,"There are no rx species specified."); + int n; + n = strlen(arg[4]) + 1; + site1 = new char[n]; + strcpy(site1,arg[4]); + + int ispecies; + for (ispecies = 0; ispecies < nspecies; ispecies++){ + if (strcmp(site1,&atom->dname[ispecies][0]) == 0) break; + } + if (ispecies == nspecies && strcmp(site1,"1fluid") != 0) + error->all(FLERR,"Site1 name not recognized in pair coefficients"); + + n = strlen(arg[5]) + 1; + site2 = new char[n]; + strcpy(site2,arg[5]); + + for (ispecies = 0; ispecies < nspecies; ispecies++){ + if (strcmp(site2,&atom->dname[ispecies][0]) == 0) break; + } + if (ispecies == nspecies && strcmp(site2,"1fluid") != 0) + error->all(FLERR,"Site2 name not recognized in pair coefficients"); + + // set table cutoff + + if (narg == 7) tb->cut = force->numeric(FLERR,arg[6]); + else if (tb->rflag) tb->cut = tb->rhi; + else tb->cut = tb->rfile[tb->ninput-1]; + + // error check on table parameters + // insure cutoff is within table + // for BITMAP tables, file values can be in non-ascending order + + if (tb->ninput <= 1) error->one(FLERR,"Invalid pair table length"); + double rlo,rhi; + if (tb->rflag == 0) { + rlo = tb->rfile[0]; + rhi = tb->rfile[tb->ninput-1]; + } else { + rlo = tb->rlo; + rhi = tb->rhi; + } + 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 + // exactly match r values read from file + // for tabstyle SPLINE, always need to build spline tables + + tb->match = 0; + if (tabstyle == LINEAR && tb->ninput == tablength && + tb->rflag == RSQ && tb->rhi == tb->cut) tb->match = 1; + 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(FLERR,"Bitmapped table in file does not match requested table"); + + // spline read-in values and compute r,e,f vectors within table + + if (tb->match == 0) spline_table(tb); + compute_table(tb); + + // store ptr to table in tabindex + + int count = 0; + for (int i = ilo; i <= ihi; i++) { + for (int j = MAX(jlo,i); j <= jhi; j++) { + tabindex[i][j] = ntables; + setflag[i][j] = 1; + count++; + } + } + + if (count == 0) error->all(FLERR,"Illegal pair_coeff command"); + ntables++; + + { + if ( strcmp(site1,"1fluid") == 0 ) + isite1 = OneFluidValue; + else { + isite1 = nspecies; + + for (int k = 0; k < nspecies; k++){ + if (strcmp(site1, atom->dname[k]) == 0){ + isite1 = k; + break; + } + } + + if (isite1 == nspecies) error->all(FLERR,"isite1 == nspecies"); + } + + if ( strcmp(site2,"1fluid") == 0 ) + isite2 = OneFluidValue; + else { + isite2 = nspecies; + + for (int k = 0; k < nspecies; k++){ + if (strcmp(site2, atom->dname[k]) == 0){ + isite2 = ispecies; + break; + } + } + + if (isite2 == nspecies) + error->all(FLERR,"isite2 == nspecies"); + } + } + +} + +/* ---------------------------------------------------------------------- + init for one type pair i,j and corresponding j,i +------------------------------------------------------------------------- */ + +template +double PairTableRXKokkos::init_one(int i, int j) +{ + if (setflag[i][j] == 0) error->all(FLERR,"All pair coeffs are not set"); + + tabindex[j][i] = tabindex[i][j]; + + if(i +double PairTableRXKokkos::single(int i, int j, int itype, int jtype, double rsq, + double factor_coul, double factor_lj, + double &fforce) +{ + int itable; + double fraction,value,a,b,phi; + int tlm1 = tablength - 1; + + Table *tb = &tables[tabindex[itype][jtype]]; + double mixWtSite1_i, mixWtSite1_j; + double mixWtSite2_i, mixWtSite2_j; + double mixWtSite1old_i, mixWtSite1old_j; + double mixWtSite2old_i, mixWtSite2old_j; + + fraction = 0.0; + a = 0.0; + b = 0.0; + + atomKK->k_dvector.template sync(); + typename ArrayTypes::t_float_2d_randomread h_dvector = + atomKK->k_dvector.view(); + getMixingWeights(h_dvector, + nspecies, isite1, isite2, fractionalWeighting, + i,mixWtSite1old_i,mixWtSite2old_i, + mixWtSite1_i,mixWtSite2_i); + getMixingWeights(h_dvector, + nspecies, isite1, isite2, fractionalWeighting, + j,mixWtSite1old_j,mixWtSite2old_j, + mixWtSite1_j,mixWtSite2_j); + + 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"); + fforce = 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]; + fforce = 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; + fforce = factor_lj * value; + } else { + Pair::union_int_float_t rsq_lookup; + 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]; + fforce = factor_lj * value; + } + + if (isite1 == isite2) fforce = sqrt(mixWtSite1_i*mixWtSite2_j)*fforce; + else fforce = (sqrt(mixWtSite1_i*mixWtSite2_j) + sqrt(mixWtSite2_i*mixWtSite1_j))*fforce; + + if (tabstyle == LOOKUP) + phi = tb->e[itable]; + else if (tabstyle == LINEAR || tabstyle == BITMAP) + phi = tb->e[itable] + fraction*tb->de[itable]; + else + phi = 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; + + if (isite1 == isite2) phi = sqrt(mixWtSite1_i*mixWtSite2_j)*phi; + else phi = (sqrt(mixWtSite1_i*mixWtSite2_j) + sqrt(mixWtSite2_i*mixWtSite1_j))*phi; + + return factor_lj*phi; +} + +/* ---------------------------------------------------------------------- + compute r,e,f vectors from splined values +------------------------------------------------------------------------- */ + +template +void PairTableRXKokkos::compute_table(Table *tb) +{ + update_table = 1; + PairTable::compute_table(tb); +} + +template +void PairTableRXKokkos::init_style() +{ + neighbor->request(this,instance_me); + neighflag = lmp->kokkos->neighflag; + int irequest = neighbor->nrequest - 1; + + neighbor->requests[irequest]-> + kokkos_host = Kokkos::Impl::is_same::value && + !Kokkos::Impl::is_same::value; + neighbor->requests[irequest]-> + kokkos_device = Kokkos::Impl::is_same::value; + + if (neighflag == FULL) { + neighbor->requests[irequest]->full = 1; + neighbor->requests[irequest]->half = 0; + } else if (neighflag == HALF || neighflag == HALFTHREAD) { + neighbor->requests[irequest]->full = 0; + neighbor->requests[irequest]->half = 1; + } else if (neighflag == N2) { + neighbor->requests[irequest]->full = 0; + neighbor->requests[irequest]->half = 0; + } else { + error->all(FLERR,"Cannot use chosen neighbor list style with lj/cut/kk"); + } +} + +template +void PairTableRXKokkos::cleanup_copy() { + // WHY needed: this prevents parent copy from deallocating any arrays + allocated = 0; + cutsq = NULL; + eatom = NULL; + vatom = NULL; + h_table=NULL; d_table=NULL; +} + +namespace LAMMPS_NS { +template class PairTableRXKokkos; +#ifdef KOKKOS_HAVE_CUDA +template class PairTableRXKokkos; +#endif + +} + diff --git a/src/KOKKOS/pair_table_rx_kokkos.h b/src/KOKKOS/pair_table_rx_kokkos.h new file mode 100644 index 0000000000000000000000000000000000000000..4230263dc97cb157f5b40fee98a5a0c5cb35c711 --- /dev/null +++ b/src/KOKKOS/pair_table_rx_kokkos.h @@ -0,0 +1,122 @@ +/* -*- 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(table/rx/kk,PairTableRXKokkos) +PairStyle(table/rx/kk/device,PairTableRXKokkos) +PairStyle(table/rx/kk/host,PairTableRXKokkos) + +#else + +#ifndef LMP_PAIR_TABLE_RX_KOKKOS_H +#define LMP_PAIR_TABLE_RX_KOKKOS_H + +#include "pair_table_kokkos.h" +#include "kokkos_few.h" + +namespace LAMMPS_NS { + +template +class PairTableRXKokkos : public PairTable { + public: + enum {EnabledNeighFlags=FULL|HALFTHREAD|HALF|N2}; + typedef DeviceType device_type; + + PairTableRXKokkos(class LAMMPS *); + virtual ~PairTableRXKokkos(); + + virtual void compute(int, int); + + template + void compute_style(int, int); + + void settings(int, char **); + void coeff(int, char **); + double init_one(int, int); + virtual double single(int, int, int, int, double, double, double, double &); + + void init_style(); + + struct TableDeviceConst { + typename ArrayTypes::t_ffloat_2d cutsq; + typename ArrayTypes::t_int_2d tabindex; + typename ArrayTypes::t_int_1d nshiftbits,nmask; + typename ArrayTypes::t_ffloat_1d innersq,invdelta,deltasq6; + typename ArrayTypes::t_ffloat_2d_randomread rsq,drsq,e,de,f,df,e2,f2; + }; + + struct TableDevice { + typename ArrayTypes::t_ffloat_2d cutsq; + typename ArrayTypes::t_int_2d tabindex; + typename ArrayTypes::t_int_1d nshiftbits,nmask; + typename ArrayTypes::t_ffloat_1d innersq,invdelta,deltasq6; + typename ArrayTypes::t_ffloat_2d rsq,drsq,e,de,f,df,e2,f2; + }; + + struct TableHost { + typename ArrayTypes::t_ffloat_2d cutsq; + typename ArrayTypes::t_int_2d tabindex; + typename ArrayTypes::t_int_1d nshiftbits,nmask; + typename ArrayTypes::t_ffloat_1d innersq,invdelta,deltasq6; + typename ArrayTypes::t_ffloat_2d rsq,drsq,e,de,f,df,e2,f2; + }; + + TableDeviceConst d_table_const; + TableDevice* d_table; + TableHost* h_table; + + Few, MAX_TYPES_STACKPARAMS+1> m_cutsq; + + typename ArrayTypes::t_ffloat_2d d_cutsq; + + virtual void allocate(); + void compute_table(Table *); + + typename ArrayTypes::t_x_array_randomread x; + typename ArrayTypes::t_f_array f; + + int neighflag; + + int update_table; + void create_kokkos_tables(); + void cleanup_copy(); + + friend void pair_virial_fdotr_compute(PairTableRXKokkos*); + + /* PairTableRX members */ + + Kokkos::View mixWtSite1old; + Kokkos::View mixWtSite2old; + Kokkos::View mixWtSite1; + Kokkos::View mixWtSite2; + + int nspecies; + char *site1, *site2; + int isite1, isite2; + bool fractionalWeighting; + + typename ArrayTypes::tdual_efloat_1d k_eatom; + typename ArrayTypes::tdual_virial_array k_vatom; + typename ArrayTypes::t_efloat_1d d_eatom; + typename ArrayTypes::t_virial_array d_vatom; +}; + +} + +#endif +#endif + +/* ERROR/WARNING messages: + + */ diff --git a/src/KOKKOS/pair_tersoff_kokkos.cpp b/src/KOKKOS/pair_tersoff_kokkos.cpp index 833c815ad9129554b1d8415a9b413b689c0f58a5..3a5c2227efe1b9f71e9b1277096882e86027336e 100644 --- a/src/KOKKOS/pair_tersoff_kokkos.cpp +++ b/src/KOKKOS/pair_tersoff_kokkos.cpp @@ -76,7 +76,7 @@ void PairTersoffKokkos::allocate() k_params = Kokkos::DualView ("PairTersoff::paramskk",n+1,n+1,n+1); - paramskk = k_params.d_view; + paramskk = k_params.template view(); } /* ---------------------------------------------------------------------- diff --git a/src/KOKKOS/pair_tersoff_mod_kokkos.cpp b/src/KOKKOS/pair_tersoff_mod_kokkos.cpp index d77ba2f141debfa0fa2d8bbcd67980780ef7993b..9a59979f4c9d4d0279f5b830d0e66bcb1af39148 100644 --- a/src/KOKKOS/pair_tersoff_mod_kokkos.cpp +++ b/src/KOKKOS/pair_tersoff_mod_kokkos.cpp @@ -76,7 +76,7 @@ void PairTersoffMODKokkos::allocate() k_params = Kokkos::DualView ("PairTersoffMOD::paramskk",n+1,n+1,n+1); - paramskk = k_params.d_view; + paramskk = k_params.template view(); } /* ---------------------------------------------------------------------- diff --git a/src/KOKKOS/pair_tersoff_zbl_kokkos.cpp b/src/KOKKOS/pair_tersoff_zbl_kokkos.cpp index 040d8c5230be972b2b1de5bef8f3d064642a9528..8468bb01f5fc545d177ad637de70ae8514087693 100644 --- a/src/KOKKOS/pair_tersoff_zbl_kokkos.cpp +++ b/src/KOKKOS/pair_tersoff_zbl_kokkos.cpp @@ -87,7 +87,7 @@ void PairTersoffZBLKokkos::allocate() k_params = Kokkos::DualView ("PairTersoffZBL::paramskk",n+1,n+1,n+1); - paramskk = k_params.d_view; + paramskk = k_params.template view(); } /* ---------------------------------------------------------------------- diff --git a/src/KOKKOS/pair_vashishta_kokkos.cpp b/src/KOKKOS/pair_vashishta_kokkos.cpp index abdcfac89ee45858c85d2ee9247d7f03999d336e..fe2394ae84a9fea6847c5f22eef598c25719b95a 100644 --- a/src/KOKKOS/pair_vashishta_kokkos.cpp +++ b/src/KOKKOS/pair_vashishta_kokkos.cpp @@ -573,7 +573,7 @@ void PairVashishtaKokkos::coeff(int narg, char **arg) k_map.template modify(); k_map.template sync(); - d_map = k_map.d_view; + d_map = k_map.template view(); } /* ---------------------------------------------------------------------- @@ -638,8 +638,8 @@ void PairVashishtaKokkos::setup_params() k_params.template modify(); k_params.template sync(); - d_elem2param = k_elem2param.d_view; - d_params = k_params.d_view; + d_elem2param = k_elem2param.template view(); + d_params = k_params.template view(); } /* ---------------------------------------------------------------------- */ diff --git a/src/KOKKOS/pair_vashishta_kokkos.h b/src/KOKKOS/pair_vashishta_kokkos.h index 174db2cb946521c0f72115f20f4e319f20a98553..c5595bbd8a246ec5c1b23f2c0f9b0837c5501c8e 100644 --- a/src/KOKKOS/pair_vashishta_kokkos.h +++ b/src/KOKKOS/pair_vashishta_kokkos.h @@ -103,7 +103,7 @@ class PairVashishtaKokkos : public PairVashishta { typedef typename tdual_int_3d::t_host t_host_int_3d; t_int_3d_randomread d_elem2param; - DAT::t_int_1d_randomread d_map; + typename AT::t_int_1d_randomread d_map; typedef Kokkos::DualView tdual_param_1d; typedef typename tdual_param_1d::t_dev t_param_1d; @@ -128,9 +128,9 @@ class PairVashishtaKokkos : public PairVashishta { typename ArrayTypes::t_efloat_1d d_eatom; typename ArrayTypes::t_virial_array d_vatom; - DAT::t_int_1d_randomread d_type2frho; - DAT::t_int_2d_randomread d_type2rhor; - DAT::t_int_2d_randomread d_type2z2r; + typename AT::t_int_1d_randomread d_type2frho; + typename AT::t_int_2d_randomread d_type2rhor; + typename AT::t_int_2d_randomread d_type2z2r; typename AT::t_neighbors_2d d_neighbors; typename AT::t_int_1d_randomread d_ilist; diff --git a/src/KOKKOS/rand_pool_wrap_kokkos.cpp b/src/KOKKOS/rand_pool_wrap_kokkos.cpp new file mode 100644 index 0000000000000000000000000000000000000000..c11764640be2f1ed4056e13a0466e47b92177357 --- /dev/null +++ b/src/KOKKOS/rand_pool_wrap_kokkos.cpp @@ -0,0 +1,72 @@ +/* ---------------------------------------------------------------------- + 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 "comm.h" +#include "rand_pool_wrap_kokkos.h" +#include "lammps.h" +#include "kokkos.h" +#include "random_mars.h" +#include "update.h" + +using namespace LAMMPS_NS; + +/* ---------------------------------------------------------------------- */ + +RandPoolWrap::RandPoolWrap(int, LAMMPS *lmp) : Pointers(lmp) +{ + random_thr = NULL; + nthreads = lmp->kokkos->num_threads; +} + +/* ---------------------------------------------------------------------- */ + +RandPoolWrap::~RandPoolWrap() +{ + +} + +void RandPoolWrap::destroy() +{ + if (random_thr) { + for (int i=1; i < nthreads; ++i) + delete random_thr[i]; + + delete[] random_thr; + random_thr = NULL; + } +} + +void RandPoolWrap::init(RanMars* random, int seed) +{ + // deallocate pool of RNGs + if (random_thr) { + for (int i=1; i < this->nthreads; ++i) + delete random_thr[i]; + + delete[] random_thr; + } + + // allocate pool of RNGs + // generate a random number generator instance for + // all threads != 0. make sure we use unique seeds. + nthreads = lmp->kokkos->num_threads; + random_thr = new RanMars*[nthreads]; + for (int tid = 1; tid < nthreads; ++tid) { + random_thr[tid] = new RanMars(lmp, seed + comm->me + + comm->nprocs*tid); + } + + // to ensure full compatibility with the serial style + // we use the serial random number generator instance for thread 0 + random_thr[0] = random; +} diff --git a/src/KOKKOS/rand_pool_wrap_kokkos.h b/src/KOKKOS/rand_pool_wrap_kokkos.h new file mode 100644 index 0000000000000000000000000000000000000000..975ce0c89a41d9d4c866d673ddcba6a81c23851d --- /dev/null +++ b/src/KOKKOS/rand_pool_wrap_kokkos.h @@ -0,0 +1,83 @@ +/* ---------------------------------------------------------------------- + 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 RAND_POOL_WRAP_H +#define RAND_POOL_WRAP_H + +#include "pointers.h" +#include "kokkos_type.h" +#include "random_mars.h" +#include "error.h" + +namespace LAMMPS_NS { + +struct RandWrap { + class RanMars* rng; + + KOKKOS_INLINE_FUNCTION + RandWrap() { + rng = NULL; + } + + KOKKOS_INLINE_FUNCTION + double drand() { + return rng->uniform(); + } + + KOKKOS_INLINE_FUNCTION + double normal() { + return rng->gaussian(); + } +}; + +class RandPoolWrap : protected Pointers { + public: + RandPoolWrap(int, class LAMMPS *); + ~RandPoolWrap(); + void destroy(); + void init(RanMars*, int); + + KOKKOS_INLINE_FUNCTION + RandWrap get_state() const + { +#ifdef KOKKOS_HAVE_CUDA + error->all(FLERR,"Cannot use Marsaglia RNG with GPUs"); +#endif + + RandWrap rand_wrap; + int tid = 0; +#ifndef KOKKOS_HAVE_CUDA + tid = LMPDeviceType::hardware_thread_id(); +#endif + rand_wrap.rng = random_thr[tid]; + return rand_wrap; + } + + KOKKOS_INLINE_FUNCTION + void free_state(RandWrap) const + { + + } + + private: + class RanMars **random_thr; + int nthreads; +}; + +} + +#endif + +/* ERROR/WARNING messages: + +*/ diff --git a/src/KOKKOS/region_block_kokkos.cpp b/src/KOKKOS/region_block_kokkos.cpp index 6734d7fdd127ae87e9b0108519d81bf8ef1dfb10..eed4272f2302b7244be637409054ddac7a4d59f9 100644 --- a/src/KOKKOS/region_block_kokkos.cpp +++ b/src/KOKKOS/region_block_kokkos.cpp @@ -54,10 +54,10 @@ int RegBlockKokkos::k_inside(double x, double y, double z) const } template -void RegBlockKokkos::match_all_kokkos(int groupbit_in, DAT::t_int_1d d_match_in) +void RegBlockKokkos::match_all_kokkos(int groupbit_in, DAT::tdual_int_1d k_match_in) { groupbit = groupbit_in; - d_match = d_match_in; + d_match = k_match_in.template view(); atomKK->sync(Device, X_MASK | MASK_MASK); @@ -67,8 +67,9 @@ void RegBlockKokkos::match_all_kokkos(int groupbit_in, DAT::t_int_1d copymode = 1; Kokkos::parallel_for(Kokkos::RangePolicy(0,nlocal),*this); - DeviceType::fence(); copymode = 0; + + k_match_in.template modify(); } template diff --git a/src/KOKKOS/region_block_kokkos.h b/src/KOKKOS/region_block_kokkos.h index f570e3ed33b54cdb7f0be078e94d33b7fb3a5f38..e14ac4d0c0db75fe98f3e7525f43d8505ab30d7e 100644 --- a/src/KOKKOS/region_block_kokkos.h +++ b/src/KOKKOS/region_block_kokkos.h @@ -39,14 +39,14 @@ class RegBlockKokkos : public RegBlock { RegBlockKokkos(class LAMMPS *, int, char **); ~RegBlockKokkos(); - void match_all_kokkos(int, DAT::t_int_1d); + void match_all_kokkos(int, DAT::tdual_int_1d); KOKKOS_INLINE_FUNCTION void operator()(TagRegBlockMatchAll, const int&) const; private: int groupbit; - DAT::t_int_1d d_match; + typename AT::t_int_1d d_match; typename AT::t_x_array_randomread x; typename AT::t_int_1d_randomread mask; diff --git a/src/KOKKOS/verlet_kokkos.h b/src/KOKKOS/verlet_kokkos.h index 6455239204f87844b321aaa63216b7fe67c0a57a..7b140b6f81ae40bdb393534c7ce29e0f564bc5f2 100644 --- a/src/KOKKOS/verlet_kokkos.h +++ b/src/KOKKOS/verlet_kokkos.h @@ -14,6 +14,8 @@ #ifdef INTEGRATE_CLASS IntegrateStyle(verlet/kk,VerletKokkos) +IntegrateStyle(verlet/kk/device,VerletKokkos) +IntegrateStyle(verlet/kk/host,VerletKokkos) #else diff --git a/src/MAKE/MACHINES/Makefile.icex b/src/MAKE/MACHINES/Makefile.icex new file mode 100644 index 0000000000000000000000000000000000000000..ceeec488700d7760263103ebb51a18d081bb94f2 --- /dev/null +++ b/src/MAKE/MACHINES/Makefile.icex @@ -0,0 +1,116 @@ +# mpi = MPI with its default compiler + +SHELL = /bin/sh + +# --------------------------------------------------------------------- +# compiler/linker settings +# specify flags and libraries needed for your compiler + +CC = mpicxx +CCFLAGS = -g -O3 -Wall -Wextra -frounding-math -fsignaling-nans -march=native +SHFLAGS = -shared -MD -mcmodel=medium -fpic -fPIC +DEPFLAGS = -M + +LINK = mpicxx +LINKFLAGS = -g -O +LIB = +SIZE = size + +ARCHIVE = ar +ARFLAGS = -rc +SHLIBFLAGS = -shared + +# --------------------------------------------------------------------- +# LAMMPS-specific settings, all OPTIONAL +# specify settings for LAMMPS features you will use +# if you change any -D setting, do full re-compile after "make clean" + +# LAMMPS ifdef settings +# see possible settings in Section 2.2 (step 4) of manual + +LMP_INC = -DLAMMPS_GZIP +#LMP_INC += -DLAMMPS_JPEG +LMP_INC += -DLAMMPS_MEMALIGN=64 + +# MPI library +# see discussion in Section 2.2 (step 5) of manual +# MPI wrapper compiler/linker can provide this info +# can point to dummy MPI library in src/STUBS as in Makefile.serial +# use -D MPICH and OMPI settings in INC to avoid C++ lib conflicts +# INC = path for mpi.h, MPI compiler settings +# PATH = path for MPI library +# LIB = name of MPI library + +MPI_INC = -DMPICH_SKIP_MPICXX -DOMPI_SKIP_MPICXX=1 +MPI_PATH = +MPI_LIB = + +# FFT library +# see discussion in Section 2.2 (step 6) of manual +# can be left blank to use provided KISS FFT library +# INC = -DFFT setting, e.g. -DFFT_FFTW, FFT compiler settings +# PATH = path for FFT library +# LIB = name of FFT library + +FFT_INC = +FFT_PATH = +FFT_LIB = + +# JPEG and/or PNG library +# see discussion in Section 2.2 (step 7) of manual +# only needed if -DLAMMPS_JPEG or -DLAMMPS_PNG listed with LMP_INC +# INC = path(s) for jpeglib.h and/or png.h +# PATH = path(s) for JPEG library and/or PNG library +# LIB = name(s) of JPEG library and/or PNG library + +JPG_INC = +JPG_PATH = +JPG_LIB = + +# --------------------------------------------------------------------- +# build rules and dependencies +# do not edit this section + +include Makefile.package.settings +include Makefile.package + +EXTRA_INC = $(LMP_INC) $(PKG_INC) $(MPI_INC) $(FFT_INC) $(JPG_INC) $(PKG_SYSINC) +EXTRA_PATH = $(PKG_PATH) $(MPI_PATH) $(FFT_PATH) $(JPG_PATH) $(PKG_SYSPATH) +EXTRA_LIB = $(PKG_LIB) $(MPI_LIB) $(FFT_LIB) $(JPG_LIB) $(PKG_SYSLIB) +EXTRA_CPP_DEPENDS = $(PKG_CPP_DEPENDS) +EXTRA_LINK_DEPENDS = $(PKG_LINK_DEPENDS) + +# Path to src files + +vpath %.cpp .. +vpath %.h .. + +# Link target + +$(EXE): $(OBJ) $(EXTRA_LINK_DEPENDS) + $(LINK) $(LINKFLAGS) $(EXTRA_PATH) $(OBJ) $(EXTRA_LIB) $(LIB) -o $(EXE) + $(SIZE) $(EXE) + +# Library targets + +lib: $(OBJ) $(EXTRA_LINK_DEPENDS) + $(ARCHIVE) $(ARFLAGS) $(EXE) $(OBJ) + +shlib: $(OBJ) $(EXTRA_LINK_DEPENDS) + $(CC) $(CCFLAGS) $(SHFLAGS) $(SHLIBFLAGS) $(EXTRA_PATH) -o $(EXE) \ + $(OBJ) $(EXTRA_LIB) $(LIB) + +# Compilation rules + +%.o:%.cpp + $(CC) $(CCFLAGS) $(SHFLAGS) $(EXTRA_INC) -c $< + +# Individual dependencies + +depend : fastdep.exe $(SRC) + @./fastdep.exe $(EXTRA_INC) -- $^ > .depend || exit 1 + +fastdep.exe: ../DEPEND/fastdep.c + cc -O -o $@ $< + +sinclude .depend diff --git a/src/MPIIO/dump_custom_mpiio.cpp b/src/MPIIO/dump_custom_mpiio.cpp index 6e48bfa146be047d06cdd29a998347cf5e58acb0..0b282b77efad41a25da336c34483ef51e098665e 100644 --- a/src/MPIIO/dump_custom_mpiio.cpp +++ b/src/MPIIO/dump_custom_mpiio.cpp @@ -542,8 +542,8 @@ void DumpCustomMPIIO::write_string(int n, double *mybuf) #if defined(_OPENMP) int nthreads = omp_get_max_threads(); - if (nthreads > 1) - nsme = convert_string_omp(n,mybuf); + if ((nthreads > 1) && !(lmp->kokkos)) + nsme = convert_string_omp(n,mybuf); // not (yet) compatible with Kokkos else nsme = convert_string(n,mybuf); #else diff --git a/src/Makefile b/src/Makefile index 3b67d2284fb8b968a513280d7a93fd3c9a6ecae1..91d65a11c5772dcbfa7ab8704165b9e6dc5a0b43 100644 --- a/src/Makefile +++ b/src/Makefile @@ -59,7 +59,8 @@ PACKAGE = asphere body class2 colloid compress coreshell dipole gpu \ PACKUSER = user-atc user-awpmd user-cgdna user-cgsdk user-colvars \ user-diffraction user-dpd user-drude user-eff user-fep user-h5md \ - user-intel user-lb user-manifold user-meamc user-mgpt user-misc user-molfile \ + user-intel user-lb user-manifold user-meamc user-meso \ + user-mgpt user-misc user-molfile \ user-netcdf user-omp user-phonon user-qmmm user-qtb \ user-quip user-reaxc user-smd user-smtbq user-sph user-tally \ user-vtk diff --git a/src/Purge.list b/src/Purge.list index 340b210b20e4ed325fd87badec04372795c1fe35..315e5e342436ca8c12e7196983e18a4f908d42ea 100644 --- a/src/Purge.list +++ b/src/Purge.list @@ -16,6 +16,9 @@ style_region.h style_neigh_bin.h style_neigh_pair.h style_neigh_stencil.h +# deleted on 5 September 2017 +npair_halffull_newton_ssa.cpp +npair_halffull_newton_ssa.h # deleted on 6 June 2017 pair_lj_sf.cpp pair_lj_sf.h diff --git a/src/QEQ/fix_qeq.cpp b/src/QEQ/fix_qeq.cpp index c5b566eef785699559280eabe7bd0a681bef31a0..757eae5dd2f32093aefdd0e3f5c0b989b97ebeb9 100644 --- a/src/QEQ/fix_qeq.cpp +++ b/src/QEQ/fix_qeq.cpp @@ -692,11 +692,13 @@ void FixQEq::vector_add( double* dest, double c, double* v, int k ) void FixQEq::read_file(char *file) { - int itype,ntypes; + int i; int params_per_line = 6; char **words = new char*[params_per_line+1]; - ntypes = atom->ntypes; + int ntypes = atom->ntypes; + int *setflag = new int[ntypes+1]; + for (i=0; i < params_per_line; ++i) setflag[i] = 0; memory->create(chi,ntypes+1,"qeq:chi"); memory->create(eta,ntypes+1,"qeq:eta"); @@ -719,10 +721,10 @@ void FixQEq::read_file(char *file) // 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,eof; + int n,nwords,eof,nlo,nhi; char line[MAXLINE],*ptr; - eof = ielement = 0; + eof = 0; while (1) { if (comm->me == 0) { @@ -737,28 +739,39 @@ void FixQEq::read_file(char *file) MPI_Bcast(&n,1,MPI_INT,0,world); MPI_Bcast(line,n,MPI_CHAR,0,world); - ielement ++; - if (ielement > ntypes) - error->all(FLERR,"Invalid fix qeq parameter file"); - // strip comment, skip line if blank if ((ptr = strchr(line,'#'))) *ptr = '\0'; nwords = atom->count_words(line); if (nwords == 0) continue; - // words = ptrs to all words in line + // must have 6 parameters per line. + + if (nwords < 6) + error->all(FLERR,"Invalid fix qeq parameter file"); + + // words = ptrs to first 6 words in line - nwords = 0; - words[nwords++] = strtok(line," \t\n\r\f"); - while ((words[nwords++] = strtok(NULL," \t\n\r\f"))) continue; + for (n=0, words[n] = strtok(line," \t\n\r\f"); + n < 6; + words[++n] = strtok(NULL," \t\n\r\f")); - itype = atoi(words[0]); - chi[itype] = atof(words[1]); - eta[itype] = atof(words[2]); - gamma[itype] = atof(words[3]); - zeta[itype] = atof(words[4]); - zcore[itype] = atof(words[5]); + force->bounds(FLERR,words[0],ntypes,nlo,nhi); + for (n=nlo; n <=nhi; ++n) { + chi[n] = force->numeric(FLERR,words[1]); + eta[n] = force->numeric(FLERR,words[2]); + gamma[n] = force->numeric(FLERR,words[3]); + zeta[n] = force->numeric(FLERR,words[4]); + zcore[n] = force->numeric(FLERR,words[5]); + setflag[n] = 1; + } } + + // check if all types are set + for (n=1; n <= ntypes; ++n) + if (setflag[n] == 0) + error->all(FLERR,"Invalid fix qeq parameter file"); + delete [] words; + delete [] setflag; } diff --git a/src/REPLICA/data.peptide b/src/REPLICA/data.peptide new file mode 100644 index 0000000000000000000000000000000000000000..f9dfb6e485302da2abd338eb1be299011f4aeba7 --- /dev/null +++ b/src/REPLICA/data.peptide @@ -0,0 +1,6531 @@ +LAMMPS Description + + 2004 atoms + 1365 bonds + 786 angles + 207 dihedrals + 12 impropers + + 14 atom types + 18 bond types + 31 angle types + 21 dihedral types + 2 improper types + + 36.840194 64.211560 xlo xhi + 41.013691 68.385058 ylo yhi + 29.768095 57.139462 zlo zhi + +Masses + + 1 12.0110 + 2 12.0110 + 3 15.9990 + 4 1.0080 + 5 14.0070 + 6 12.0110 + 7 12.0110 + 8 12.0110 + 9 15.9990 + 10 1.0080 + 11 1.0080 + 12 32.0660 + 13 16.0000 + 14 1.0100 + +Pair Coeffs + + 1 0.110000 3.563595 0.110000 3.563595 + 2 0.080000 3.670503 0.010000 3.385415 + 3 0.120000 3.029056 0.120000 2.494516 + 4 0.022000 2.351973 0.022000 2.351973 + 5 0.200000 3.296325 0.200000 2.761786 + 6 0.020000 4.053589 0.010000 3.385415 + 7 0.055000 3.875410 0.010000 3.385415 + 8 0.070000 3.550053 0.070000 3.550053 + 9 0.152100 3.153782 0.152100 3.153782 + 10 0.046000 0.400014 0.046000 0.400014 + 11 0.030000 2.420037 0.030000 2.420037 + 12 0.450000 3.563595 0.450000 3.563595 + 13 0.152100 3.150570 0.152100 3.150570 + 14 0.046000 0.400014 0.046000 0.400014 + +Bond Coeffs + + 1 249.999999 1.490000 + 2 620.000001 1.230000 + 3 370.000000 1.345000 + 4 322.000001 1.111000 + 5 319.999999 1.430000 + 6 440.000000 0.997000 + 7 222.500001 1.538000 + 8 330.000001 1.080000 + 9 230.000000 1.490000 + 10 309.000001 1.111000 + 11 305.000000 1.375000 + 12 340.000001 1.080000 + 13 334.300000 1.411000 + 14 545.000001 0.960000 + 15 222.500001 1.530000 + 16 198.000000 1.818000 + 17 239.999999 1.816000 + 18 450.000000 0.957200 + +Angle Coeffs + + 1 33.000000 109.500000 30.000000 2.163000 + 2 50.000000 120.000000 0.000000 0.000000 + 3 34.000000 123.000000 0.000000 0.000000 + 4 80.000000 121.000000 0.000000 0.000000 + 5 80.000000 116.500000 0.000000 0.000000 + 6 80.000000 122.500000 0.000000 0.000000 + 7 35.500000 108.400000 5.400000 1.802000 + 8 50.000000 107.000000 0.000000 0.000000 + 9 70.000000 113.500000 0.000000 0.000000 + 10 48.000000 108.000000 0.000000 0.000000 + 11 35.000000 117.000000 0.000000 0.000000 + 12 51.800000 107.500000 0.000000 0.000000 + 13 33.430000 110.100000 22.530000 2.179000 + 14 52.000000 108.000000 0.000000 0.000000 + 15 50.000000 109.500000 0.000000 0.000000 + 16 35.000000 111.000000 0.000000 0.000000 + 17 45.800000 122.300000 0.000000 0.000000 + 18 49.300000 107.500000 0.000000 0.000000 + 19 40.000000 120.000000 35.000000 2.416200 + 20 30.000000 120.000000 22.000000 2.152500 + 21 45.200000 120.000000 0.000000 0.000000 + 22 65.000000 108.000000 0.000000 0.000000 + 23 35.500000 109.000000 5.400000 1.802000 + 24 36.000000 115.000000 0.000000 0.000000 + 25 58.350000 113.500000 11.160000 2.561000 + 26 58.000000 114.500000 0.000000 0.000000 + 27 26.500000 110.100000 22.530000 2.179000 + 28 34.000000 95.000000 0.000000 0.000000 + 29 46.100000 111.300000 0.000000 0.000000 + 30 51.500000 109.500000 0.000000 0.000000 + 31 55.000000 104.520000 0.000000 0.000000 + +Dihedral Coeffs + + 1 0.200000 1 180 1.000000 + 2 1.800000 1 0 1.000000 + 3 0.000000 1 0 1.000000 + 4 1.600000 1 0 0.500000 + 5 2.500000 2 180 0.500000 + 6 2.500000 2 180 1.000000 + 7 0.600000 1 0 1.000000 + 8 0.200000 3 0 1.000000 + 9 0.230000 2 180 1.000000 + 10 0.040000 3 0 1.000000 + 11 1.400000 1 0 1.000000 + 12 3.100000 2 180 1.000000 + 13 4.200000 2 180 1.000000 + 14 3.100000 2 180 0.500000 + 15 0.990000 2 180 1.000000 + 16 2.400000 2 180 1.000000 + 17 0.195000 3 0 1.000000 + 18 0.240000 1 180 0.500000 + 19 0.370000 3 0 0.500000 + 20 0.280000 3 0 1.000000 + 21 0.010000 3 0 1.000000 + +Improper Coeffs + + 1 120.000000 0.000000 + 2 20.000000 0.000000 + +Atoms + + 1 1 1 0.510 43.99993 58.52678 36.78550 0 0 0 + 2 1 2 -0.270 45.10395 58.23499 35.86693 0 0 0 + 3 1 3 -0.510 43.81519 59.54928 37.43995 0 0 0 + 4 1 4 0.090 45.71714 57.34797 36.13434 0 0 0 + 5 1 4 0.090 45.72261 59.13657 35.67007 0 0 0 + 6 1 4 0.090 44.66624 58.09539 34.85538 0 0 0 + 7 1 5 -0.470 43.28193 57.47427 36.91953 0 0 0 + 8 1 6 0.070 42.07157 57.45486 37.62418 0 0 0 + 9 1 1 0.510 42.19985 57.57789 39.12163 0 0 0 + 10 1 3 -0.510 41.88641 58.62251 39.70398 0 0 0 + 11 1 7 -0.180 41.25052 56.15304 37.41811 0 0 0 + 12 1 8 0.000 40.88511 55.94638 35.97460 0 0 0 + 13 1 8 -0.115 41.48305 54.96372 35.11223 0 0 0 + 14 1 8 -0.115 39.74003 56.60996 35.46443 0 0 0 + 15 1 8 -0.115 41.02111 54.75715 33.80764 0 0 0 + 16 1 8 -0.115 39.26180 56.39194 34.12024 0 0 0 + 17 1 8 0.110 39.92330 55.46092 33.27135 0 0 0 + 18 1 9 -0.540 39.48164 55.22919 31.91865 0 0 0 + 19 1 10 0.310 43.60633 56.61693 36.52744 0 0 0 + 20 1 4 0.090 41.49619 58.31145 37.30543 0 0 0 + 21 1 4 0.090 41.88498 55.29476 37.72657 0 0 0 + 22 1 4 0.090 40.30899 56.19690 38.00627 0 0 0 + 23 1 11 0.115 42.31528 54.36176 35.44606 0 0 0 + 24 1 11 0.115 39.26330 57.31216 36.13230 0 0 0 + 25 1 11 0.115 41.62695 54.10606 33.19490 0 0 0 + 26 1 11 0.115 38.42147 56.98236 33.78612 0 0 0 + 27 1 10 0.430 38.78233 55.86217 31.74004 0 0 0 + 28 1 5 -0.470 42.79933 56.56370 39.79000 0 0 0 + 29 1 7 -0.020 42.96709 56.75379 41.28116 0 0 0 + 30 1 1 0.510 43.83019 55.68988 41.92255 0 0 0 + 31 1 3 -0.510 44.98521 55.93104 42.21713 0 0 0 + 32 1 10 0.310 43.13466 55.75696 39.30966 0 0 0 + 33 1 4 0.090 42.04692 56.86721 41.83507 0 0 0 + 34 1 4 0.090 43.52938 57.66324 41.43329 0 0 0 + 35 1 5 -0.470 43.26792 54.43342 42.07043 0 0 0 + 36 1 7 -0.020 43.92411 53.28930 42.63327 0 0 0 + 37 1 1 0.510 43.51012 53.02289 44.10510 0 0 0 + 38 1 3 -0.510 42.35086 53.07863 44.50806 0 0 0 + 39 1 10 0.310 42.28859 54.34993 41.90323 0 0 0 + 40 1 4 0.090 44.98464 53.47473 42.54797 0 0 0 + 41 1 4 0.090 43.49715 52.54787 41.97419 0 0 0 + 42 1 5 -0.470 44.51925 52.64535 44.88133 0 0 0 + 43 1 6 0.070 44.47588 52.35054 46.24397 0 0 0 + 44 1 1 0.510 45.40218 53.34579 46.94730 0 0 0 + 45 1 3 -0.510 45.23520 54.55893 46.92038 0 0 0 + 46 1 7 -0.180 44.77960 50.82831 46.50232 0 0 0 + 47 1 8 0.000 43.72184 49.84551 45.98093 0 0 0 + 48 1 8 -0.115 44.14810 49.00477 44.97195 0 0 0 + 49 1 8 -0.115 42.43499 49.66652 46.53541 0 0 0 + 50 1 8 -0.115 43.26154 48.00434 44.46769 0 0 0 + 51 1 8 -0.115 41.54732 48.79670 45.95416 0 0 0 + 52 1 8 -0.115 41.98220 47.90746 44.95574 0 0 0 + 53 1 10 0.310 45.39510 52.50937 44.42482 0 0 0 + 54 1 4 0.090 43.51312 52.58974 46.67092 0 0 0 + 55 1 4 0.090 44.89709 50.54313 47.56965 0 0 0 + 56 1 4 0.090 45.72096 50.49337 46.01654 0 0 0 + 57 1 11 0.115 45.13573 49.07933 44.54134 0 0 0 + 58 1 11 0.115 42.07869 50.34816 47.29358 0 0 0 + 59 1 11 0.115 43.47793 47.29281 43.68456 0 0 0 + 60 1 11 0.115 40.52625 48.76134 46.30425 0 0 0 + 61 1 11 0.115 41.35446 47.13287 44.54059 0 0 0 + 62 1 5 -0.470 46.41448 52.86278 47.68291 0 0 0 + 63 1 6 0.070 47.25136 53.68184 48.51163 0 0 0 + 64 1 1 0.510 48.33905 54.40097 47.73886 0 0 0 + 65 1 3 -0.510 49.27132 53.85220 47.16549 0 0 0 + 66 1 7 -0.180 47.88329 52.75681 49.60227 0 0 0 + 67 1 7 -0.140 48.82515 53.51102 50.61578 0 0 0 + 68 1 12 -0.090 48.12492 55.00373 51.43039 0 0 0 + 69 1 2 -0.220 47.70783 54.12980 53.04072 0 0 0 + 70 1 10 0.310 46.67199 51.90088 47.73231 0 0 0 + 71 1 4 0.090 46.64593 54.43552 48.99310 0 0 0 + 72 1 4 0.090 48.41361 51.90817 49.11968 0 0 0 + 73 1 4 0.090 47.08748 52.35196 50.26341 0 0 0 + 74 1 4 0.090 49.16067 52.81305 51.41238 0 0 0 + 75 1 4 0.090 49.73705 53.67062 50.00155 0 0 0 + 76 1 4 0.090 47.18593 54.84215 53.71488 0 0 0 + 77 1 4 0.090 48.69939 53.91624 53.49408 0 0 0 + 78 1 4 0.090 47.19749 53.18294 52.76264 0 0 0 + 79 1 5 -0.470 48.34472 55.71775 47.80498 0 0 0 + 80 1 2 -0.110 49.37792 56.51754 47.29492 0 0 0 + 81 1 10 0.310 47.51777 56.11617 48.19410 0 0 0 + 82 1 4 0.090 50.41495 56.13038 47.38980 0 0 0 + 83 1 4 0.090 49.23515 57.51193 47.76940 0 0 0 + 84 1 4 0.090 49.28612 56.52094 46.18773 0 0 0 + 85 2 13 -0.834 52.28049 45.72878 41.48140 -1 0 1 + 86 2 14 0.417 51.97210 46.07066 40.64218 -1 0 1 + 87 2 14 0.417 52.43689 44.79855 41.31868 -1 0 1 + 88 3 13 -0.834 43.84472 45.66062 47.17660 -2 -1 -1 + 89 3 14 0.417 43.42120 44.88337 46.81226 -2 -1 -1 + 90 3 14 0.417 44.31099 46.04907 46.43636 -2 -1 -1 + 91 4 13 -0.834 51.27805 50.25403 54.67397 0 0 -1 + 92 4 14 0.417 50.81295 50.23728 53.83753 0 0 -1 + 93 4 14 0.417 52.00273 49.63953 54.55795 0 0 -1 + 94 5 13 -0.834 44.71976 53.72011 56.43834 -1 0 -1 + 95 5 14 0.417 44.56050 53.84218 55.50241 -1 0 -1 + 96 5 14 0.417 44.91937 52.78829 56.52828 -1 0 -1 + 97 6 13 -0.834 37.07074 62.07204 53.35752 -1 -1 -1 + 98 6 14 0.417 64.17057 61.77089 52.49043 -2 -1 -1 + 99 6 14 0.417 37.90147 62.52273 53.20573 -1 -1 -1 + 100 7 13 -0.834 38.31817 66.10834 49.17406 0 -1 0 + 101 7 14 0.417 37.39300 65.93985 48.99534 0 -1 0 + 102 7 14 0.417 38.36506 66.20528 50.12520 0 -1 0 + 103 8 13 -0.834 60.90915 45.97690 35.53863 -1 -1 1 + 104 8 14 0.417 61.19898 46.87819 35.39745 -1 -1 1 + 105 8 14 0.417 59.98680 45.97855 35.28269 -1 -1 1 + 106 9 13 -0.834 54.33913 64.47210 51.00391 -1 -2 0 + 107 9 14 0.417 54.43191 63.71377 50.42724 -1 -2 0 + 108 9 14 0.417 55.16289 64.94980 50.90662 -1 -2 0 + 109 10 13 -0.834 44.58017 54.03749 53.84708 1 0 -1 + 110 10 14 0.417 43.87040 54.43768 53.34476 1 0 -1 + 111 10 14 0.417 45.02999 53.47261 53.21873 1 0 -1 + 112 11 13 -0.834 45.48693 52.12363 34.38241 0 -1 1 + 113 11 14 0.417 45.46898 52.67450 33.59981 0 -1 1 + 114 11 14 0.417 44.61476 52.22113 34.76457 0 -1 1 + 115 12 13 -0.834 60.15770 61.68799 54.74753 1 0 -2 + 116 12 14 0.417 59.23977 61.46439 54.59378 1 0 -2 + 117 12 14 0.417 60.43785 61.08922 55.43980 1 0 -2 + 118 13 13 -0.834 60.74732 66.72156 42.80906 1 -2 0 + 119 13 14 0.417 60.34713 66.21969 42.09898 1 -2 0 + 120 13 14 0.417 60.92444 66.07344 43.49082 1 -2 0 + 121 14 13 -0.834 60.82245 64.17281 50.54212 0 0 0 + 122 14 14 0.417 61.43571 64.88448 50.35863 0 0 0 + 123 14 14 0.417 60.87804 64.04633 51.48930 0 0 0 + 124 15 13 -0.834 36.92704 63.01353 56.05215 0 -1 0 + 125 15 14 0.417 37.10744 62.17054 56.46815 0 -1 0 + 126 15 14 0.417 64.06237 62.79109 55.15157 -1 -1 0 + 127 16 13 -0.834 48.35559 58.70568 56.14001 1 0 0 + 128 16 14 0.417 48.11655 59.48087 55.63191 1 0 0 + 129 16 14 0.417 47.93212 58.83502 56.98865 1 0 0 + 130 17 13 -0.834 58.14651 57.18542 51.08241 0 -1 -1 + 131 17 14 0.417 57.88523 56.72609 51.88052 0 -1 -1 + 132 17 14 0.417 57.35121 57.63116 50.79076 0 -1 -1 + 133 18 13 -0.834 58.09837 59.68005 36.16995 -1 0 0 + 134 18 14 0.417 58.25901 58.76822 36.41283 -1 0 0 + 135 18 14 0.417 58.56239 60.19049 36.83355 -1 0 0 + 136 19 13 -0.834 52.29019 60.51169 50.55611 0 -2 1 + 137 19 14 0.417 52.61972 60.01708 51.30645 0 -2 1 + 138 19 14 0.417 52.55621 59.99722 49.79401 0 -2 1 + 139 20 13 -0.834 41.36642 50.33705 42.98530 0 -1 -1 + 140 20 14 0.417 41.27846 50.09969 43.90844 0 -1 -1 + 141 20 14 0.417 40.99321 51.21659 42.92708 0 -1 -1 + 142 21 13 -0.834 53.76920 67.02645 32.18667 -1 0 1 + 143 21 14 0.417 53.59447 67.18509 31.25901 -1 0 1 + 144 21 14 0.417 54.65308 67.36647 32.32596 -1 0 1 + 145 22 13 -0.834 57.83691 45.33663 46.94671 0 0 -2 + 146 22 14 0.417 57.36287 45.59552 46.15647 0 0 -2 + 147 22 14 0.417 58.62995 44.91017 46.62197 0 0 -2 + 148 23 13 -0.834 60.34518 45.83000 45.57964 -1 0 0 + 149 23 14 0.417 60.61871 44.93757 45.79176 -1 0 0 + 150 23 14 0.417 61.09971 46.21212 45.13141 -1 0 0 + 151 24 13 -0.834 55.97902 46.85046 56.80163 0 1 1 + 152 24 14 0.417 56.57528 46.69952 30.16370 0 1 2 + 153 24 14 0.417 55.81156 47.79276 56.81850 0 1 1 + 154 25 13 -0.834 57.54668 45.52135 31.46139 -1 0 1 + 155 25 14 0.417 58.36291 46.00311 31.32743 -1 0 1 + 156 25 14 0.417 57.54151 45.31312 32.39566 -1 0 1 + 157 26 13 -0.834 58.03029 52.86783 46.33564 -1 -1 0 + 158 26 14 0.417 58.13662 52.56730 47.23820 -1 -1 0 + 159 26 14 0.417 58.81317 52.55269 45.88396 -1 -1 0 + 160 27 13 -0.834 62.89253 60.86549 46.75131 -2 -1 0 + 161 27 14 0.417 63.83924 60.74010 46.81653 -2 -1 0 + 162 27 14 0.417 62.51896 60.12788 47.23361 -2 -1 0 + 163 28 13 -0.834 43.29171 48.58106 31.82206 -1 0 2 + 164 28 14 0.417 43.07532 49.46362 32.12290 -1 0 2 + 165 28 14 0.417 43.82286 48.21072 32.52701 -1 0 2 + 166 29 13 -0.834 64.19867 44.17673 45.81391 -1 1 -1 + 167 29 14 0.417 63.72986 44.44010 45.02202 -1 1 -1 + 168 29 14 0.417 37.02069 43.24876 45.68087 0 1 -1 + 169 30 13 -0.834 50.42749 42.01163 53.60484 0 2 0 + 170 30 14 0.417 51.03177 41.90084 52.87081 0 2 0 + 171 30 14 0.417 50.77279 42.76181 54.08882 0 2 0 + 172 31 13 -0.834 38.63739 61.71113 49.95150 1 0 0 + 173 31 14 0.417 38.55432 62.15607 49.10808 1 0 0 + 174 31 14 0.417 37.81718 61.22751 50.04950 1 0 0 + 175 32 13 -0.834 61.47262 53.02922 33.08309 -1 -1 0 + 176 32 14 0.417 61.21894 52.67931 33.93717 -1 -1 0 + 177 32 14 0.417 61.89351 53.86564 33.28182 -1 -1 0 + 178 33 13 -0.834 54.44545 60.06011 48.63522 -1 0 1 + 179 33 14 0.417 54.80032 60.94424 48.72810 -1 0 1 + 180 33 14 0.417 54.09041 60.03614 47.74662 -1 0 1 + 181 34 13 -0.834 56.34364 60.90201 52.60838 -1 -1 0 + 182 34 14 0.417 56.48857 60.19161 53.23333 -1 -1 0 + 183 34 14 0.417 56.17362 61.67024 53.15351 -1 -1 0 + 184 35 13 -0.834 56.05881 51.84328 55.76103 -1 0 0 + 185 35 14 0.417 55.59060 51.75146 54.93121 -1 0 0 + 186 35 14 0.417 55.46974 52.35732 56.31335 -1 0 0 + 187 36 13 -0.834 39.00621 42.74743 30.97845 0 0 1 + 188 36 14 0.417 39.67620 42.11390 30.72152 0 0 1 + 189 36 14 0.417 39.43456 43.29673 31.63499 0 0 1 + 190 37 13 -0.834 46.77585 55.39774 30.24026 0 1 0 + 191 37 14 0.417 46.10274 54.90237 29.77360 0 1 0 + 192 37 14 0.417 46.39626 56.26890 30.35527 0 1 0 + 193 38 13 -0.834 45.10722 57.60431 31.54688 -1 0 0 + 194 38 14 0.417 44.80783 58.50032 31.70105 -1 0 0 + 195 38 14 0.417 44.44237 57.22463 30.97238 -1 0 0 + 196 39 13 -0.834 43.94230 46.99244 34.45668 -2 1 1 + 197 39 14 0.417 44.62010 46.49140 34.00306 -2 1 1 + 198 39 14 0.417 44.38150 47.79794 34.72964 -2 1 1 + 199 40 13 -0.834 51.39443 50.96507 34.69072 -1 1 0 + 200 40 14 0.417 51.18729 50.42829 35.45570 -1 1 0 + 201 40 14 0.417 51.33198 51.86665 35.00616 -1 1 0 + 202 41 13 -0.834 58.96398 48.19727 42.98856 -2 1 0 + 203 41 14 0.417 58.42587 48.90112 42.62618 -2 1 0 + 204 41 14 0.417 58.82383 48.25054 43.93397 -2 1 0 + 205 42 13 -0.834 62.89335 41.94260 37.40820 0 0 0 + 206 42 14 0.417 62.48690 41.07818 37.46980 0 0 0 + 207 42 14 0.417 63.01802 42.08284 36.46957 0 0 0 + 208 43 13 -0.834 54.19388 47.88689 36.24110 -1 0 1 + 209 43 14 0.417 54.32054 48.63090 35.65235 -1 0 1 + 210 43 14 0.417 53.24370 47.78935 36.30358 -1 0 1 + 211 44 13 -0.834 39.19734 57.40342 41.28495 0 0 -2 + 212 44 14 0.417 39.05428 57.72940 40.39641 0 0 -2 + 213 44 14 0.417 39.30846 56.45861 41.17895 0 0 -2 + 214 45 13 -0.834 52.85483 61.73749 54.63897 0 0 0 + 215 45 14 0.417 53.34938 62.52765 54.42147 0 0 0 + 216 45 14 0.417 53.01046 61.14656 53.90221 0 0 0 + 217 46 13 -0.834 47.09467 62.01384 35.02302 1 0 1 + 218 46 14 0.417 47.54527 61.47644 35.67448 1 0 1 + 219 46 14 0.417 47.10116 62.89626 35.39385 1 0 1 + 220 47 13 -0.834 46.80497 49.60334 37.05700 0 0 1 + 221 47 14 0.417 46.70216 49.79770 36.12540 0 0 1 + 222 47 14 0.417 45.91311 49.45393 37.37084 0 0 1 + 223 48 13 -0.834 63.21969 59.12311 54.43455 -1 -1 -1 + 224 48 14 0.417 63.94585 59.72833 54.28405 -1 -1 -1 + 225 48 14 0.417 63.63016 58.34481 54.81141 -1 -1 -1 + 226 49 13 -0.834 59.88416 59.64215 44.04914 -2 1 0 + 227 49 14 0.417 59.74255 59.14412 44.85422 -2 1 0 + 228 49 14 0.417 59.02635 60.01323 43.84248 -2 1 0 + 229 50 13 -0.834 40.50825 42.85328 50.81112 -1 1 0 + 230 50 14 0.417 40.34650 43.39801 51.58141 -1 1 0 + 231 50 14 0.417 39.63964 42.69867 50.43985 -1 1 0 + 232 51 13 -0.834 63.77522 64.97067 44.83010 -2 0 0 + 233 51 14 0.417 37.00507 65.56132 45.28388 -1 0 0 + 234 51 14 0.417 64.14243 64.88383 43.95041 -2 0 0 + 235 52 13 -0.834 62.47161 67.86189 47.38235 -1 0 -1 + 236 52 14 0.417 61.58819 67.64608 47.08360 -1 0 -1 + 237 52 14 0.417 62.79136 67.05596 47.78790 -1 0 -1 + 238 53 13 -0.834 43.90800 54.16107 50.35199 0 0 0 + 239 53 14 0.417 43.96769 53.24711 50.07388 0 0 0 + 240 53 14 0.417 43.72593 54.64554 49.54677 0 0 0 + 241 54 13 -0.834 63.46829 44.63390 34.73615 -1 1 1 + 242 54 14 0.417 62.63731 45.04623 34.97217 -1 1 1 + 243 54 14 0.417 64.11050 45.03645 35.32075 -1 1 1 + 244 55 13 -0.834 37.30679 58.22047 51.04345 0 0 0 + 245 55 14 0.417 38.18596 58.37862 50.69950 0 0 0 + 246 55 14 0.417 36.85723 59.06017 50.94824 0 0 0 + 247 56 13 -0.834 58.72649 42.45768 31.23820 -1 1 -1 + 248 56 14 0.417 59.43634 42.77561 30.68028 -1 1 -1 + 249 56 14 0.417 58.76581 41.50474 31.15690 -1 1 -1 + 250 57 13 -0.834 52.47101 42.85691 41.60986 0 1 -1 + 251 57 14 0.417 51.62289 42.91562 41.16997 0 1 -1 + 252 57 14 0.417 52.53109 41.94497 41.89448 0 1 -1 + 253 58 13 -0.834 60.63476 59.78356 56.53663 -2 -1 -1 + 254 58 14 0.417 60.87428 58.86269 56.43247 -2 -1 -1 + 255 58 14 0.417 59.72615 59.76269 56.83705 -2 -1 -1 + 256 59 13 -0.834 52.78127 57.47386 30.66786 -1 -1 0 + 257 59 14 0.417 52.55495 58.26092 30.17228 -1 -1 0 + 258 59 14 0.417 53.05203 56.84104 30.00267 -1 -1 0 + 259 60 13 -0.834 46.04848 57.65321 54.89998 0 3 -1 + 260 60 14 0.417 46.96883 57.71336 55.15607 0 3 -1 + 261 60 14 0.417 46.02768 57.98076 54.00081 0 3 -1 + 262 61 13 -0.834 60.39356 51.43705 35.66109 -1 1 -1 + 263 61 14 0.417 60.57739 52.08235 36.34376 -1 1 -1 + 264 61 14 0.417 59.59475 50.99860 35.95414 -1 1 -1 + 265 62 13 -0.834 50.32338 62.46972 35.65752 -1 0 2 + 266 62 14 0.417 51.24156 62.23287 35.52678 -1 0 2 + 267 62 14 0.417 49.89601 61.64851 35.90085 -1 0 2 + 268 63 13 -0.834 38.23983 45.11908 50.02773 0 1 0 + 269 63 14 0.417 38.61336 45.27494 50.89515 0 1 0 + 270 63 14 0.417 38.91224 45.42406 49.41856 0 1 0 + 271 64 13 -0.834 58.93720 57.36605 46.08362 -3 0 0 + 272 64 14 0.417 58.65753 56.63297 46.63190 -3 0 0 + 273 64 14 0.417 58.29914 58.05674 46.26268 -3 0 0 + 274 65 13 -0.834 47.99806 43.44789 47.43046 -1 0 0 + 275 65 14 0.417 48.39580 43.78289 46.62684 -1 0 0 + 276 65 14 0.417 47.85848 44.22523 47.97128 -1 0 0 + 277 66 13 -0.834 51.26744 52.05593 47.09995 -1 0 0 + 278 66 14 0.417 51.36736 52.09873 46.14894 -1 0 0 + 279 66 14 0.417 50.33779 52.22629 47.25149 -1 0 0 + 280 67 13 -0.834 39.06132 52.11517 46.39010 0 0 -1 + 281 67 14 0.417 38.53402 51.36282 46.65876 0 0 -1 + 282 67 14 0.417 39.47133 52.42190 47.19884 0 0 -1 + 283 68 13 -0.834 60.17907 58.95174 50.22759 -1 1 0 + 284 68 14 0.417 60.34080 59.56538 50.94420 -1 1 0 + 285 68 14 0.417 59.41497 58.44908 50.50992 -1 1 0 + 286 69 13 -0.834 40.47698 59.65154 34.92537 0 -1 1 + 287 69 14 0.417 40.89044 60.49055 35.12877 0 -1 1 + 288 69 14 0.417 41.17964 59.12336 34.54648 0 -1 1 + 289 70 13 -0.834 60.12998 66.51474 47.03971 -1 0 -1 + 290 70 14 0.417 59.26620 66.39701 47.43506 -1 0 -1 + 291 70 14 0.417 60.21358 65.78625 46.42443 -1 0 -1 + 292 71 13 -0.834 49.25986 47.27506 43.03372 -1 0 1 + 293 71 14 0.417 49.11810 48.15331 42.68041 -1 0 1 + 294 71 14 0.417 49.86162 47.40550 43.76662 -1 0 1 + 295 72 13 -0.834 41.48105 63.65699 31.84433 0 0 1 + 296 72 14 0.417 41.11022 64.48589 32.14713 0 0 1 + 297 72 14 0.417 40.89461 63.37379 31.14281 0 0 1 + 298 73 13 -0.834 47.82875 47.97039 54.56720 0 2 0 + 299 73 14 0.417 46.99167 47.50633 54.55352 0 2 0 + 300 73 14 0.417 47.60488 48.87558 54.35102 0 2 0 + 301 74 13 -0.834 62.36735 58.64445 48.35778 -2 1 0 + 302 74 14 0.417 62.88767 57.90867 48.68045 -2 1 0 + 303 74 14 0.417 61.65918 58.73544 48.99531 -2 1 0 + 304 75 13 -0.834 52.09508 65.08907 32.87560 0 0 0 + 305 75 14 0.417 52.67402 65.75058 32.49683 0 0 0 + 306 75 14 0.417 52.41855 64.97003 33.76859 0 0 0 + 307 76 13 -0.834 39.06932 41.62988 40.69498 1 1 0 + 308 76 14 0.417 39.51114 41.04433 40.08003 1 1 0 + 309 76 14 0.417 38.93584 42.43936 40.20186 1 1 0 + 310 77 13 -0.834 37.68325 49.50718 46.00750 0 2 0 + 311 77 14 0.417 64.11601 49.67107 45.91568 -1 2 0 + 312 77 14 0.417 37.90845 48.96991 45.24796 0 2 0 + 313 78 13 -0.834 53.00757 59.49351 52.98404 -2 1 -1 + 314 78 14 0.417 52.16721 59.28329 53.39127 -2 1 -1 + 315 78 14 0.417 53.61000 58.83023 53.32076 -2 1 -1 + 316 79 13 -0.834 51.89369 64.75001 56.68467 1 0 0 + 317 79 14 0.417 51.88079 65.63682 56.32462 1 0 0 + 318 79 14 0.417 52.40589 64.82531 30.11841 1 0 1 + 319 80 13 -0.834 48.43261 63.10155 32.63566 0 0 1 + 320 80 14 0.417 47.68021 63.01753 32.04993 0 0 1 + 321 80 14 0.417 48.13916 62.71424 33.46035 0 0 1 + 322 81 13 -0.834 62.41171 68.18251 30.67168 0 -1 2 + 323 81 14 0.417 61.79235 41.16145 30.03143 0 0 2 + 324 81 14 0.417 63.18314 67.94790 30.15584 0 -1 2 + 325 82 13 -0.834 42.57575 41.32197 37.66791 0 0 1 + 326 82 14 0.417 42.98116 41.36016 36.80164 0 0 1 + 327 82 14 0.417 42.32522 42.22654 37.85569 0 0 1 + 328 83 13 -0.834 50.17315 67.44398 36.91606 0 -2 0 + 329 83 14 0.417 50.08765 67.03449 37.77701 0 -2 0 + 330 83 14 0.417 50.35347 66.71621 36.32101 0 -2 0 + 331 84 13 -0.834 39.70163 60.45247 40.03790 0 -2 -1 + 332 84 14 0.417 38.85282 60.01540 40.10676 0 -2 -1 + 333 84 14 0.417 40.20579 60.11563 40.77858 0 -2 -1 + 334 85 13 -0.834 51.74323 42.80814 51.33239 0 0 -1 + 335 85 14 0.417 52.44810 43.22892 51.82466 0 0 -1 + 336 85 14 0.417 51.80961 43.17998 50.45286 0 0 -1 + 337 86 13 -0.834 51.34695 47.68316 36.38089 0 0 1 + 338 86 14 0.417 50.77701 46.92707 36.52138 0 0 1 + 339 86 14 0.417 51.27109 47.87031 35.44523 0 0 1 + 340 87 13 -0.834 62.66950 50.66085 43.15883 -2 0 0 + 341 87 14 0.417 63.57796 50.36318 43.11051 -2 0 0 + 342 87 14 0.417 62.24654 50.26548 42.39659 -2 0 0 + 343 88 13 -0.834 46.37996 60.13914 31.06428 -2 -1 1 + 344 88 14 0.417 46.89125 59.89673 31.83632 -2 -1 1 + 345 88 14 0.417 45.51811 60.37092 31.41028 -2 -1 1 + 346 89 13 -0.834 50.23251 41.17559 46.18435 0 1 2 + 347 89 14 0.417 49.40509 68.16142 45.89628 0 0 2 + 348 89 14 0.417 50.55747 67.94506 46.85395 0 0 2 + 349 90 13 -0.834 56.10446 66.70018 42.60390 0 -2 1 + 350 90 14 0.417 56.27454 67.42915 42.00732 0 -2 1 + 351 90 14 0.417 56.27819 67.05729 43.47483 0 -2 1 + 352 91 13 -0.834 55.53824 48.43866 51.97225 -1 0 1 + 353 91 14 0.417 56.26440 48.96682 52.30388 -1 0 1 + 354 91 14 0.417 55.26306 48.88494 51.17140 -1 0 1 + 355 92 13 -0.834 37.88016 52.62502 33.55552 0 -1 0 + 356 92 14 0.417 37.58757 51.72397 33.41859 0 -1 0 + 357 92 14 0.417 38.51960 52.77804 32.85986 0 -1 0 + 358 93 13 -0.834 50.40592 66.14455 39.40035 -1 -2 -1 + 359 93 14 0.417 49.74974 66.37168 40.05920 -1 -2 -1 + 360 93 14 0.417 50.22642 65.22843 39.18876 -1 -2 -1 + 361 94 13 -0.834 59.56315 43.63477 50.02876 -1 0 0 + 362 94 14 0.417 60.08533 44.36640 50.35782 -1 0 0 + 363 94 14 0.417 60.10101 42.86112 50.19730 -1 0 0 + 364 95 13 -0.834 57.16125 61.75981 55.17964 0 0 -1 + 365 95 14 0.417 56.45534 61.68609 55.82189 0 0 -1 + 366 95 14 0.417 57.38335 62.69087 55.17297 0 0 -1 + 367 96 13 -0.834 54.81274 43.48714 43.13392 -1 2 1 + 368 96 14 0.417 53.88771 43.40698 42.90124 -1 2 1 + 369 96 14 0.417 54.97915 42.74512 43.71525 -1 2 1 + 370 97 13 -0.834 41.23040 49.49766 49.75568 0 -2 0 + 371 97 14 0.417 40.54278 49.43865 49.09241 0 -2 0 + 372 97 14 0.417 41.81904 48.76959 49.55653 0 -2 0 + 373 98 13 -0.834 54.20957 45.39084 54.97428 -1 0 0 + 374 98 14 0.417 54.66721 46.06623 55.47493 -1 0 0 + 375 98 14 0.417 53.74016 44.87996 55.63374 -1 0 0 + 376 99 13 -0.834 61.27515 64.38553 39.98716 -1 0 1 + 377 99 14 0.417 61.56153 64.23410 40.88787 -1 0 1 + 378 99 14 0.417 60.44736 63.91029 39.91542 -1 0 1 + 379 100 13 -0.834 55.67284 58.14856 42.21767 -1 1 2 + 380 100 14 0.417 55.46369 57.24253 42.44485 -1 1 2 + 381 100 14 0.417 56.62771 58.19397 42.26677 -1 1 2 + 382 101 13 -0.834 43.66528 51.07118 53.71174 0 0 0 + 383 101 14 0.417 42.87715 50.89079 53.19934 0 0 0 + 384 101 14 0.417 43.37793 51.68815 54.38481 0 0 0 + 385 102 13 -0.834 39.90899 44.53973 36.42818 0 2 0 + 386 102 14 0.417 39.84006 43.65427 36.07118 0 2 0 + 387 102 14 0.417 40.52179 44.98683 35.84438 0 2 0 + 388 103 13 -0.834 51.24695 66.96031 48.71611 -1 -1 1 + 389 103 14 0.417 50.88275 67.26607 49.54684 -1 -1 1 + 390 103 14 0.417 52.19366 66.95318 48.85726 -1 -1 1 + 391 104 13 -0.834 55.15911 56.17347 57.08906 -1 0 0 + 392 104 14 0.417 55.86241 55.65189 56.70232 -1 0 0 + 393 104 14 0.417 54.93977 55.71619 30.52949 -1 0 1 + 394 105 13 -0.834 37.33282 54.30424 56.96734 0 0 0 + 395 105 14 0.417 64.15558 54.97773 29.99806 -1 0 1 + 396 105 14 0.417 64.13467 53.88397 56.32293 -1 0 0 + 397 106 13 -0.834 53.07827 51.20543 32.31512 -1 0 1 + 398 106 14 0.417 52.39494 50.78813 31.79057 -1 0 1 + 399 106 14 0.417 52.65819 51.38698 33.15584 -1 0 1 + 400 107 13 -0.834 43.06086 51.65229 35.75926 1 1 1 + 401 107 14 0.417 42.70958 52.01746 36.57135 1 1 1 + 402 107 14 0.417 43.42908 50.80682 36.01586 1 1 1 + 403 108 13 -0.834 53.92253 56.24460 34.48089 0 0 1 + 404 108 14 0.417 53.22007 56.39276 35.11401 0 0 1 + 405 108 14 0.417 54.59075 55.76600 34.97147 0 0 1 + 406 109 13 -0.834 61.71524 66.84153 38.60005 -1 -1 0 + 407 109 14 0.417 61.25397 66.04877 38.87388 -1 -1 0 + 408 109 14 0.417 62.23260 67.09437 39.36467 -1 -1 0 + 409 110 13 -0.834 43.52824 62.78695 41.49939 0 -1 -1 + 410 110 14 0.417 43.61050 61.97218 41.00379 0 -1 -1 + 411 110 14 0.417 43.53140 63.47437 40.83330 0 -1 -1 + 412 111 13 -0.834 51.13822 55.54090 53.50461 0 1 -2 + 413 111 14 0.417 50.69587 56.38179 53.62064 0 1 -2 + 414 111 14 0.417 51.43262 55.54828 52.59383 0 1 -2 + 415 112 13 -0.834 46.94709 50.11761 31.92599 0 0 0 + 416 112 14 0.417 47.19652 51.02564 31.75423 0 0 0 + 417 112 14 0.417 46.57462 49.81059 31.09941 0 0 0 + 418 113 13 -0.834 47.96666 45.13049 44.46108 -1 2 -1 + 419 113 14 0.417 47.01871 45.24108 44.53489 -1 2 -1 + 420 113 14 0.417 48.26343 45.91034 43.99202 -1 2 -1 + 421 114 13 -0.834 44.43868 43.44849 32.90814 -1 -1 1 + 422 114 14 0.417 43.86055 43.24165 33.64245 -1 -1 1 + 423 114 14 0.417 45.31670 43.24154 33.22828 -1 -1 1 + 424 115 13 -0.834 61.07172 47.80130 53.14504 -1 1 -1 + 425 115 14 0.417 61.34864 48.71600 53.19864 -1 1 -1 + 426 115 14 0.417 60.72118 47.60538 54.01394 -1 1 -1 + 427 116 13 -0.834 51.38727 44.10864 54.92855 -1 0 -1 + 428 116 14 0.417 50.77962 44.80360 55.18160 -1 0 -1 + 429 116 14 0.417 52.05111 44.10744 55.61815 -1 0 -1 + 430 117 13 -0.834 41.05585 60.12319 49.44785 1 -1 0 + 431 117 14 0.417 41.72702 60.76812 49.67116 1 -1 0 + 432 117 14 0.417 40.24373 60.62784 49.40265 1 -1 0 + 433 118 13 -0.834 50.88548 68.33364 33.37284 -1 0 -1 + 434 118 14 0.417 50.48275 67.46671 33.32310 -1 0 -1 + 435 118 14 0.417 51.82702 68.16119 33.37343 -1 0 -1 + 436 119 13 -0.834 38.79644 59.29061 55.22446 1 1 -1 + 437 119 14 0.417 38.82887 59.83550 56.01077 1 1 -1 + 438 119 14 0.417 39.26097 59.79985 54.56028 1 1 -1 + 439 120 13 -0.834 56.31813 41.68729 51.11871 -2 0 -1 + 440 120 14 0.417 55.45155 41.35580 51.35412 -2 0 -1 + 441 120 14 0.417 56.14879 42.34135 50.44062 -2 0 -1 + 442 121 13 -0.834 45.53697 59.28154 47.22033 -1 0 -1 + 443 121 14 0.417 45.45062 59.55577 46.30733 -1 0 -1 + 444 121 14 0.417 46.00774 59.99977 47.64313 -1 0 -1 + 445 122 13 -0.834 60.47636 43.28130 46.20944 -1 0 -1 + 446 122 14 0.417 60.97762 42.59184 45.77396 -1 0 -1 + 447 122 14 0.417 59.72992 42.82584 46.59884 -1 0 -1 + 448 123 13 -0.834 58.49080 48.18289 45.77215 0 0 -1 + 449 123 14 0.417 58.74342 47.25991 45.74879 0 0 -1 + 450 123 14 0.417 58.17926 48.32386 46.66621 0 0 -1 + 451 124 13 -0.834 50.93473 56.12663 41.58575 -1 0 0 + 452 124 14 0.417 50.36171 56.05214 42.34885 -1 0 0 + 453 124 14 0.417 50.40135 56.57242 40.92771 -1 0 0 + 454 125 13 -0.834 60.55008 41.95542 56.22749 -1 0 -1 + 455 125 14 0.417 59.65163 41.78987 55.94175 -1 0 -1 + 456 125 14 0.417 61.09463 41.59967 55.52524 -1 0 -1 + 457 126 13 -0.834 58.58373 51.69338 48.78985 -1 1 0 + 458 126 14 0.417 58.38773 52.01803 49.66874 -1 1 0 + 459 126 14 0.417 58.66973 50.74614 48.89756 -1 1 0 + 460 127 13 -0.834 37.82769 45.69808 30.85100 0 1 3 + 461 127 14 0.417 38.37007 45.10637 31.37248 0 1 3 + 462 127 14 0.417 37.14646 45.99401 31.45481 0 1 3 + 463 128 13 -0.834 50.96455 60.06361 33.68049 0 0 0 + 464 128 14 0.417 51.72055 60.15430 34.26055 0 0 0 + 465 128 14 0.417 51.05673 60.77997 33.05234 0 0 0 + 466 129 13 -0.834 46.43413 68.11245 51.48833 -1 0 -1 + 467 129 14 0.417 46.82151 41.36005 50.86943 -1 1 -1 + 468 129 14 0.417 47.09847 67.43153 51.59433 -1 0 -1 + 469 130 13 -0.834 61.79997 47.41648 57.05141 -1 -1 0 + 470 130 14 0.417 62.68713 47.23872 56.73898 -1 -1 0 + 471 130 14 0.417 61.48917 46.57417 30.01195 -1 -1 1 + 472 131 13 -0.834 45.30689 46.58119 54.43763 0 1 -1 + 473 131 14 0.417 45.67282 45.73922 54.70859 0 1 -1 + 474 131 14 0.417 44.46622 46.35973 54.03705 0 1 -1 + 475 132 13 -0.834 62.60829 48.56385 49.02640 -1 1 0 + 476 132 14 0.417 62.44761 48.65968 48.08766 -1 1 0 + 477 132 14 0.417 62.98242 47.68753 49.11762 -1 1 0 + 478 133 13 -0.834 63.49107 56.77075 38.74961 -1 0 2 + 479 133 14 0.417 63.12281 56.39554 39.54952 -1 0 2 + 480 133 14 0.417 62.84612 57.42058 38.47033 -1 0 2 + 481 134 13 -0.834 50.74846 48.34849 33.46075 0 0 1 + 482 134 14 0.417 50.75342 49.30521 33.43086 0 0 1 + 483 134 14 0.417 50.91203 48.07929 32.55686 0 0 1 + 484 135 13 -0.834 44.40923 67.37148 56.42156 0 0 0 + 485 135 14 0.417 43.93400 67.78902 29.76856 0 0 1 + 486 135 14 0.417 44.94884 66.70468 56.84633 0 0 0 + 487 136 13 -0.834 44.25343 64.95349 43.22104 0 0 0 + 488 136 14 0.417 44.13229 64.08173 42.84472 0 0 0 + 489 136 14 0.417 44.01188 65.55470 42.51643 0 0 0 + 490 137 13 -0.834 46.68300 67.52863 32.69859 -1 -1 0 + 491 137 14 0.417 46.68369 68.22637 33.35389 -1 -1 0 + 492 137 14 0.417 47.60248 67.43099 32.45106 -1 -1 0 + 493 138 13 -0.834 57.25376 61.01737 33.86507 -2 1 1 + 494 138 14 0.417 57.40827 60.52366 34.67043 -2 1 1 + 495 138 14 0.417 57.35792 60.37307 33.16488 -2 1 1 + 496 139 13 -0.834 57.39946 54.16835 56.70699 0 -1 -1 + 497 139 14 0.417 57.31939 53.23092 56.53080 0 -1 -1 + 498 139 14 0.417 57.32300 54.24112 30.28699 0 -1 0 + 499 140 13 -0.834 52.36697 48.69246 41.49227 -1 1 0 + 500 140 14 0.417 51.78735 47.93629 41.40021 -1 1 0 + 501 140 14 0.417 53.21603 48.31702 41.72547 -1 1 0 + 502 141 13 -0.834 54.69200 49.57915 45.55048 0 0 -1 + 503 141 14 0.417 54.95958 48.66911 45.42211 0 0 -1 + 504 141 14 0.417 55.28513 50.08439 44.99446 0 0 -1 + 505 142 13 -0.834 37.26724 53.17896 42.50469 1 -1 -1 + 506 142 14 0.417 63.93194 53.34801 43.12782 0 -1 -1 + 507 142 14 0.417 36.94831 52.45044 41.97199 1 -1 -1 + 508 143 13 -0.834 42.56283 66.92379 33.49577 -1 0 1 + 509 143 14 0.417 41.71356 66.58931 33.20750 -1 0 1 + 510 143 14 0.417 43.03645 66.14842 33.79697 -1 0 1 + 511 144 13 -0.834 61.43331 45.62855 38.97695 0 1 1 + 512 144 14 0.417 61.20190 45.98514 39.83458 0 1 1 + 513 144 14 0.417 62.31351 45.96414 38.80708 0 1 1 + 514 145 13 -0.834 49.37935 56.26031 56.72879 1 1 0 + 515 145 14 0.417 49.03977 57.11146 56.45221 1 1 0 + 516 145 14 0.417 48.60052 55.75658 56.96530 1 1 0 + 517 146 13 -0.834 63.13959 56.23999 49.92079 -1 0 -1 + 518 146 14 0.417 63.72474 55.58123 50.29478 -1 0 -1 + 519 146 14 0.417 63.40966 57.06154 50.33112 -1 0 -1 + 520 147 13 -0.834 58.55937 66.56287 54.17345 -1 0 0 + 521 147 14 0.417 59.28260 66.81524 53.59945 -1 0 0 + 522 147 14 0.417 58.28559 67.38088 54.58834 -1 0 0 + 523 148 13 -0.834 55.49901 62.14366 46.01274 -1 0 -1 + 524 148 14 0.417 55.08057 61.57956 45.36238 -1 0 -1 + 525 148 14 0.417 55.53371 63.00495 45.59652 -1 0 -1 + 526 149 13 -0.834 48.09589 47.38106 38.97384 0 1 0 + 527 149 14 0.417 47.94178 48.02346 38.28116 0 1 0 + 528 149 14 0.417 47.26125 47.32494 39.43910 0 1 0 + 529 150 13 -0.834 40.27661 53.03711 48.83757 0 0 0 + 530 150 14 0.417 40.32476 53.91333 49.21992 0 0 0 + 531 150 14 0.417 41.18363 52.81848 48.62365 0 0 0 + 532 151 13 -0.834 36.85277 41.68065 44.81488 1 2 0 + 533 151 14 0.417 36.95709 68.34807 45.45504 1 1 0 + 534 151 14 0.417 37.14062 41.29651 43.98673 1 2 0 + 535 152 13 -0.834 37.74881 65.81650 33.58759 -1 0 1 + 536 152 14 0.417 37.69052 65.99217 34.52673 -1 0 1 + 537 152 14 0.417 37.02193 65.21970 33.40951 -1 0 1 + 538 153 13 -0.834 63.01838 46.13766 43.99274 -2 0 0 + 539 153 14 0.417 62.72780 46.33504 43.10232 -2 0 0 + 540 153 14 0.417 63.75125 46.73459 44.14387 -2 0 0 + 541 154 13 -0.834 43.83288 53.92104 38.64974 0 2 1 + 542 154 14 0.417 44.46072 53.30394 39.02556 0 2 1 + 543 154 14 0.417 44.17373 54.10726 37.77488 0 2 1 + 544 155 13 -0.834 54.48021 41.30441 45.39416 1 1 -2 + 545 155 14 0.417 54.42996 67.86451 44.88861 1 0 -2 + 546 155 14 0.417 54.84291 41.03852 46.23914 1 1 -2 + 547 156 13 -0.834 51.26407 63.10699 50.73012 0 0 -2 + 548 156 14 0.417 51.64016 62.23294 50.83411 0 0 -2 + 549 156 14 0.417 51.56733 63.39797 49.87011 0 0 -2 + 550 157 13 -0.834 54.61161 63.67709 53.56970 0 1 1 + 551 157 14 0.417 55.55339 63.81655 53.47054 0 1 1 + 552 157 14 0.417 54.24805 63.87070 52.70565 0 1 1 + 553 158 13 -0.834 46.57444 42.69363 30.13287 -1 0 1 + 554 158 14 0.417 45.93025 42.28051 30.70783 -1 0 1 + 555 158 14 0.417 47.27305 42.04459 30.04973 -1 0 1 + 556 159 13 -0.834 37.92811 50.36816 42.31352 1 1 0 + 557 159 14 0.417 38.62401 50.90050 42.69899 1 1 0 + 558 159 14 0.417 38.11553 50.37135 41.37484 1 1 0 + 559 160 13 -0.834 40.53318 48.69302 33.52502 -1 0 0 + 560 160 14 0.417 40.10720 48.55075 32.67972 -1 0 0 + 561 160 14 0.417 41.22323 49.33057 33.34173 -1 0 0 + 562 161 13 -0.834 58.20095 45.48345 42.83426 1 0 -1 + 563 161 14 0.417 58.76156 46.25356 42.92849 1 0 -1 + 564 161 14 0.417 58.80813 44.74348 42.83158 1 0 -1 + 565 162 13 -0.834 59.85909 67.06752 31.43173 -1 1 0 + 566 162 14 0.417 59.95062 66.12180 31.54782 -1 1 0 + 567 162 14 0.417 60.75672 67.38534 31.33437 -1 1 0 + 568 163 13 -0.834 48.48808 51.17807 55.92072 -2 0 0 + 569 163 14 0.417 49.24951 51.62602 55.55219 -2 0 0 + 570 163 14 0.417 48.81105 50.30745 56.15303 -2 0 0 + 571 164 13 -0.834 47.51169 45.69616 48.99410 0 0 -1 + 572 164 14 0.417 48.36822 46.03425 48.73281 0 0 -1 + 573 164 14 0.417 47.56201 45.62598 49.94740 0 0 -1 + 574 165 13 -0.834 51.10678 64.23082 47.99167 0 -2 -1 + 575 165 14 0.417 51.33188 65.16116 47.98611 0 -2 -1 + 576 165 14 0.417 50.15837 64.21415 48.12002 0 -2 -1 + 577 166 13 -0.834 42.97263 56.29674 30.18230 0 0 0 + 578 166 14 0.417 42.45756 55.50818 30.01170 0 0 0 + 579 166 14 0.417 42.79675 56.86516 56.80386 0 0 -1 + 580 167 13 -0.834 44.45917 53.64338 31.85015 -1 0 0 + 581 167 14 0.417 44.64093 54.17218 31.07325 -1 0 0 + 582 167 14 0.417 43.66299 53.15965 31.63030 -1 0 0 + 583 168 13 -0.834 52.20677 49.92062 48.65330 1 0 0 + 584 168 14 0.417 52.24176 50.63538 49.28902 1 0 0 + 585 168 14 0.417 52.01918 50.35058 47.81890 1 0 0 + 586 169 13 -0.834 45.94013 51.43638 56.49888 0 0 0 + 587 169 14 0.417 46.89200 51.34153 56.53372 0 0 0 + 588 169 14 0.417 45.60504 50.66051 56.94833 0 0 0 + 589 170 13 -0.834 45.61845 41.38709 48.05698 1 0 0 + 590 170 14 0.417 46.42604 41.83441 47.80406 1 0 0 + 591 170 14 0.417 45.31743 41.85685 48.83477 1 0 0 + 592 171 13 -0.834 47.68232 42.84819 52.92728 0 1 0 + 593 171 14 0.417 47.61830 42.41414 52.07654 0 1 0 + 594 171 14 0.417 48.39202 42.39011 53.37758 0 1 0 + 595 172 13 -0.834 37.01774 65.84057 36.39542 1 -1 0 + 596 172 14 0.417 36.84918 65.13561 37.02061 1 -1 0 + 597 172 14 0.417 63.52368 66.19949 36.19938 0 -1 0 + 598 173 13 -0.834 51.52891 58.65207 39.31760 -1 -3 -1 + 599 173 14 0.417 51.57384 59.35596 39.96472 -1 -3 -1 + 600 173 14 0.417 51.00435 59.01522 38.60403 -1 -3 -1 + 601 174 13 -0.834 49.06578 54.25781 44.33488 0 -1 -1 + 602 174 14 0.417 48.81980 55.18018 44.26437 0 -1 -1 + 603 174 14 0.417 49.41695 54.17018 45.22104 0 -1 -1 + 604 175 13 -0.834 47.03819 42.38557 34.31948 -1 -1 0 + 605 175 14 0.417 47.39035 41.82883 35.01393 -1 -1 0 + 606 175 14 0.417 47.47024 43.23019 34.44673 -1 -1 0 + 607 176 13 -0.834 41.64025 43.65472 38.33192 0 1 0 + 608 176 14 0.417 41.17224 44.02383 37.58295 0 1 0 + 609 176 14 0.417 41.46027 44.26142 39.05008 0 1 0 + 610 177 13 -0.834 61.41261 58.14241 37.49312 -2 0 0 + 611 177 14 0.417 61.24368 59.06676 37.67551 -2 0 0 + 612 177 14 0.417 60.57871 57.80631 37.16465 -2 0 0 + 613 178 13 -0.834 48.58355 55.60536 32.34542 0 -2 -2 + 614 178 14 0.417 48.05292 55.64371 31.54969 0 -2 -2 + 615 178 14 0.417 49.00004 56.46561 32.39784 0 -2 -2 + 616 179 13 -0.834 51.18618 52.33768 44.26866 0 -1 0 + 617 179 14 0.417 50.47419 52.97535 44.21659 0 -1 0 + 618 179 14 0.417 51.18053 51.90159 43.41657 0 -1 0 + 619 180 13 -0.834 63.77008 46.64985 53.45124 -2 0 -1 + 620 180 14 0.417 37.25943 46.94040 53.14955 -1 0 -1 + 621 180 14 0.417 63.15834 47.28506 53.07904 -2 0 -1 + 622 181 13 -0.834 37.28071 56.79400 31.30862 1 1 0 + 623 181 14 0.417 37.34297 57.68998 31.63963 1 1 0 + 624 181 14 0.417 36.99543 56.89301 30.40030 1 1 0 + 625 182 13 -0.834 38.98742 57.66608 44.07685 1 0 1 + 626 182 14 0.417 39.04152 57.61214 43.12270 1 0 1 + 627 182 14 0.417 39.46043 56.89430 44.38805 1 0 1 + 628 183 13 -0.834 64.13749 51.25767 48.28997 0 -1 0 + 629 183 14 0.417 64.05120 52.19840 48.13566 0 -1 0 + 630 183 14 0.417 63.26932 50.90255 48.09918 0 -1 0 + 631 184 13 -0.834 41.02949 42.14202 43.02064 0 0 -1 + 632 184 14 0.417 40.60130 42.82178 43.54104 0 0 -1 + 633 184 14 0.417 40.43829 41.99723 42.28189 0 0 -1 + 634 185 13 -0.834 49.87332 48.21836 52.83028 0 1 0 + 635 185 14 0.417 49.13733 48.15035 53.43849 0 1 0 + 636 185 14 0.417 50.32176 47.37567 52.90100 0 1 0 + 637 186 13 -0.834 56.06860 48.51217 38.12813 -1 1 0 + 638 186 14 0.417 56.55702 47.73454 38.39826 -1 1 0 + 639 186 14 0.417 55.52690 48.21357 37.39762 -1 1 0 + 640 187 13 -0.834 54.22718 59.47740 40.22374 -1 0 1 + 641 187 14 0.417 53.93839 59.03820 39.42377 -1 0 1 + 642 187 14 0.417 54.74005 58.81629 40.68868 -1 0 1 + 643 188 13 -0.834 60.09461 46.88146 32.04739 -1 0 -1 + 644 188 14 0.417 60.91535 46.43611 31.83683 -1 0 -1 + 645 188 14 0.417 60.13630 47.02716 32.99253 -1 0 -1 + 646 189 13 -0.834 45.18646 44.57845 41.54076 0 0 0 + 647 189 14 0.417 44.28239 44.89208 41.51774 0 0 0 + 648 189 14 0.417 45.34481 44.23786 40.66033 0 0 0 + 649 190 13 -0.834 42.47099 45.68692 31.56356 1 0 1 + 650 190 14 0.417 43.26152 45.18821 31.76995 1 0 1 + 651 190 14 0.417 42.78187 46.58070 31.41951 1 0 1 + 652 191 13 -0.834 41.23413 47.67043 41.85221 0 1 0 + 653 191 14 0.417 41.04508 48.58329 42.06946 0 1 0 + 654 191 14 0.417 40.84394 47.54379 40.98737 0 1 0 + 655 192 13 -0.834 48.84750 60.39708 36.57115 0 0 0 + 656 192 14 0.417 48.57626 59.48478 36.46920 0 0 0 + 657 192 14 0.417 48.59448 60.62409 37.46597 0 0 0 + 658 193 13 -0.834 56.78263 43.55464 49.12966 -1 0 -1 + 659 193 14 0.417 56.56851 44.25428 48.51250 -1 0 -1 + 660 193 14 0.417 57.66563 43.76469 49.43365 -1 0 -1 + 661 194 13 -0.834 59.52236 53.66894 43.24587 -1 2 0 + 662 194 14 0.417 59.44365 54.61174 43.10041 -1 2 0 + 663 194 14 0.417 59.73284 53.58637 44.17598 -1 2 0 + 664 195 13 -0.834 63.61393 61.54696 40.57053 -1 -1 1 + 665 195 14 0.417 36.90989 60.94398 40.24291 0 -1 1 + 666 195 14 0.417 63.74510 61.55794 41.51864 -1 -1 1 + 667 196 13 -0.834 54.91742 43.16160 33.69639 0 0 -1 + 668 196 14 0.417 55.84062 43.16106 33.94925 0 0 -1 + 669 196 14 0.417 54.73416 44.07060 33.45898 0 0 -1 + 670 197 13 -0.834 41.09699 64.92982 48.38401 0 -1 -1 + 671 197 14 0.417 40.19042 64.83711 48.67687 0 -1 -1 + 672 197 14 0.417 41.27055 64.13206 47.88433 0 -1 -1 + 673 198 13 -0.834 49.09688 60.43369 49.80048 0 0 -1 + 674 198 14 0.417 49.75346 61.03633 50.14971 0 0 -1 + 675 198 14 0.417 49.51718 59.57440 49.83534 0 0 -1 + 676 199 13 -0.834 45.06873 45.25146 44.50830 0 1 0 + 677 199 14 0.417 45.08807 45.11881 43.56053 0 1 0 + 678 199 14 0.417 44.41198 44.63084 44.82413 0 1 0 + 679 200 13 -0.834 37.63886 45.88962 36.45768 0 0 2 + 680 200 14 0.417 38.32892 45.23766 36.58017 0 0 2 + 681 200 14 0.417 37.24627 45.98938 37.32495 0 0 2 + 682 201 13 -0.834 45.25770 47.01692 51.04211 -1 0 -2 + 683 201 14 0.417 45.49830 47.82868 50.59555 -1 0 -2 + 684 201 14 0.417 46.08295 46.68269 51.39354 -1 0 -2 + 685 202 13 -0.834 63.44567 60.77839 50.98507 -2 0 0 + 686 202 14 0.417 62.95029 60.46072 51.74001 -2 0 0 + 687 202 14 0.417 62.77774 61.08133 50.36998 -2 0 0 + 688 203 13 -0.834 48.00038 59.99003 33.31045 0 1 1 + 689 203 14 0.417 48.92391 59.89924 33.54518 0 1 1 + 690 203 14 0.417 47.68314 60.70831 33.85788 0 1 1 + 691 204 13 -0.834 51.29617 53.45952 36.10138 -1 -1 1 + 692 204 14 0.417 50.79623 53.20605 36.87731 -1 -1 1 + 693 204 14 0.417 51.41983 54.40421 36.19363 -1 -1 1 + 694 205 13 -0.834 48.55343 45.13540 34.47517 0 0 0 + 695 205 14 0.417 48.10547 45.97105 34.34382 0 0 0 + 696 205 14 0.417 49.13373 45.28879 35.22081 0 0 0 + 697 206 13 -0.834 48.34844 61.02741 54.77908 1 -1 -1 + 698 206 14 0.417 47.77364 61.75290 55.02301 1 -1 -1 + 699 206 14 0.417 49.14675 61.17253 55.28690 1 -1 -1 + 700 207 13 -0.834 38.97661 48.73541 31.27301 2 -1 0 + 701 207 14 0.417 38.86774 47.99634 30.67453 2 -1 0 + 702 207 14 0.417 38.60214 49.48112 30.80404 2 -1 0 + 703 208 13 -0.834 56.37687 61.69299 40.12439 0 -1 -1 + 704 208 14 0.417 56.35009 61.71409 39.16778 0 -1 -1 + 705 208 14 0.417 55.62486 61.15580 40.37371 0 -1 -1 + 706 209 13 -0.834 47.86700 41.38854 36.76722 -1 0 0 + 707 209 14 0.417 48.79854 41.26117 36.94678 -1 0 0 + 708 209 14 0.417 47.57553 42.00602 37.43804 -1 0 0 + 709 210 13 -0.834 43.22089 60.92576 39.48904 -1 -1 0 + 710 210 14 0.417 42.70029 60.20976 39.85311 -1 -1 0 + 711 210 14 0.417 43.25319 60.74538 38.54954 -1 -1 0 + 712 211 13 -0.834 56.26248 49.03317 34.29585 -1 0 0 + 713 211 14 0.417 56.69244 49.86416 34.09381 -1 0 0 + 714 211 14 0.417 55.61194 48.92467 33.60212 -1 0 0 + 715 212 13 -0.834 47.52063 49.37901 51.21673 1 0 0 + 716 212 14 0.417 48.35964 48.95385 51.03909 1 0 0 + 717 212 14 0.417 47.47856 49.43746 52.17122 1 0 0 + 718 213 13 -0.834 62.35532 56.31018 41.33556 0 0 0 + 719 213 14 0.417 62.07506 57.22150 41.42032 0 0 0 + 720 213 14 0.417 62.92184 56.16192 42.09274 0 0 0 + 721 214 13 -0.834 61.09797 64.53756 45.11003 -1 0 1 + 722 214 14 0.417 61.11801 63.59600 44.93887 -1 0 1 + 723 214 14 0.417 61.95676 64.85132 44.82670 -1 0 1 + 724 215 13 -0.834 51.22661 62.08872 31.93454 0 0 0 + 725 215 14 0.417 51.98994 62.65586 32.04369 0 0 0 + 726 215 14 0.417 50.47877 62.65171 32.13456 0 0 0 + 727 216 13 -0.834 40.65443 48.64853 54.43476 0 0 -1 + 728 216 14 0.417 40.25608 47.97845 54.99023 0 0 -1 + 729 216 14 0.417 41.58025 48.64240 54.67776 0 0 -1 + 730 217 13 -0.834 39.34873 63.07587 52.07209 1 1 -1 + 731 217 14 0.417 39.17266 63.98076 51.81438 1 1 -1 + 732 217 14 0.417 39.29792 62.57948 51.25523 1 1 -1 + 733 218 13 -0.834 45.66307 65.90840 47.75613 -1 0 0 + 734 218 14 0.417 44.99427 65.52542 48.32381 -1 0 0 + 735 218 14 0.417 45.75913 66.80721 48.07102 -1 0 0 + 736 219 13 -0.834 45.83158 51.91442 38.93974 0 0 0 + 737 219 14 0.417 46.07939 51.87422 39.86344 0 0 0 + 738 219 14 0.417 45.49928 51.03877 38.74210 0 0 0 + 739 220 13 -0.834 58.03934 67.88594 44.36036 -1 1 -1 + 740 220 14 0.417 58.69084 68.22520 43.74661 -1 1 -1 + 741 220 14 0.417 58.24719 68.31309 45.19138 -1 1 -1 + 742 221 13 -0.834 57.23319 66.95459 30.42832 0 0 0 + 743 221 14 0.417 56.95316 66.93560 31.34345 0 0 0 + 744 221 14 0.417 58.18154 66.82998 30.46491 0 0 0 + 745 222 13 -0.834 60.87005 44.72970 53.74755 -1 0 -1 + 746 222 14 0.417 60.02694 44.42275 53.41412 -1 0 -1 + 747 222 14 0.417 61.31963 45.07903 52.97808 -1 0 -1 + 748 223 13 -0.834 50.61352 50.44308 31.66369 0 -1 0 + 749 223 14 0.417 50.38691 49.95555 30.87173 0 -1 0 + 750 223 14 0.417 50.16704 51.28387 31.56391 0 -1 0 + 751 224 13 -0.834 42.70363 42.07925 34.73823 0 1 0 + 752 224 14 0.417 42.74630 41.15512 34.49249 0 1 0 + 753 224 14 0.417 41.77538 42.23983 34.90796 0 1 0 + 754 225 13 -0.834 50.34157 43.80796 44.49841 -1 1 0 + 755 225 14 0.417 49.44649 44.14718 44.50119 -1 1 0 + 756 225 14 0.417 50.24323 42.86994 44.66171 -1 1 0 + 757 226 13 -0.834 62.39528 64.92163 33.72829 -3 -1 1 + 758 226 14 0.417 61.94679 64.42233 34.41078 -3 -1 1 + 759 226 14 0.417 61.94061 64.68505 32.91986 -3 -1 1 + 760 227 13 -0.834 46.62188 47.13429 41.79430 0 1 1 + 761 227 14 0.417 46.21721 46.28415 41.62178 0 1 1 + 762 227 14 0.417 47.40198 46.92861 42.30946 0 1 1 + 763 228 13 -0.834 41.35469 54.31275 56.45453 0 0 -1 + 764 228 14 0.417 41.79769 53.47653 56.31055 0 0 -1 + 765 228 14 0.417 40.57273 54.26794 55.90425 0 0 -1 + 766 229 13 -0.834 48.43878 42.20000 49.94999 0 0 0 + 767 229 14 0.417 49.34431 42.29756 50.24447 0 0 0 + 768 229 14 0.417 48.41583 42.63350 49.09688 0 0 0 + 769 230 13 -0.834 37.29829 50.04209 33.34795 0 1 0 + 770 230 14 0.417 36.96213 49.51969 34.07619 0 1 0 + 771 230 14 0.417 37.98470 49.49933 32.96002 0 1 0 + 772 231 13 -0.834 58.91995 56.17895 33.02333 -1 0 0 + 773 231 14 0.417 59.83980 56.43785 32.96791 -1 0 0 + 774 231 14 0.417 58.89269 55.54120 33.73661 -1 0 0 + 775 232 13 -0.834 39.86900 65.81481 43.81866 0 0 -1 + 776 232 14 0.417 40.31483 64.99515 43.60502 0 0 -1 + 777 232 14 0.417 40.41298 66.21397 44.49762 0 0 -1 + 778 233 13 -0.834 62.71324 65.93556 51.55400 -1 0 0 + 779 233 14 0.417 62.38032 66.39597 52.32436 -1 0 0 + 780 233 14 0.417 63.52336 65.52245 51.85285 -1 0 0 + 781 234 13 -0.834 59.23324 49.58642 31.35843 0 0 0 + 782 234 14 0.417 59.28102 48.68976 31.69001 0 0 0 + 783 234 14 0.417 59.95115 50.04304 31.79700 0 0 0 + 784 235 13 -0.834 41.02310 67.21389 51.60243 0 0 0 + 785 235 14 0.417 41.77450 67.79064 51.74021 0 0 0 + 786 235 14 0.417 40.36922 67.76899 51.17753 0 0 0 + 787 236 13 -0.834 41.38918 62.43794 34.42449 0 0 1 + 788 236 14 0.417 41.26665 63.14612 33.79227 0 0 1 + 789 236 14 0.417 42.30454 62.51275 34.69423 0 0 1 + 790 237 13 -0.834 52.28796 56.01034 50.59905 0 -1 -1 + 791 237 14 0.417 53.14113 56.07317 51.02851 0 -1 -1 + 792 237 14 0.417 52.14509 55.07070 50.48548 0 -1 -1 + 793 238 13 -0.834 53.25204 66.52198 39.76351 0 -1 0 + 794 238 14 0.417 52.30774 66.44732 39.62571 0 -1 0 + 795 238 14 0.417 53.47725 67.38617 39.41895 0 -1 0 + 796 239 13 -0.834 59.77604 60.82055 48.12264 -1 -1 -1 + 797 239 14 0.417 59.80699 60.05926 48.70205 -1 -1 -1 + 798 239 14 0.417 58.96049 60.71611 47.63253 -1 -1 -1 + 799 240 13 -0.834 48.99693 51.07559 36.89084 0 -1 1 + 800 240 14 0.417 48.22315 50.55308 37.10175 0 -1 1 + 801 240 14 0.417 48.88824 51.30348 35.96753 0 -1 1 + 802 241 13 -0.834 50.67863 62.63916 55.60559 1 0 -2 + 803 241 14 0.417 51.43406 62.16856 55.25331 1 0 -2 + 804 241 14 0.417 51.05760 63.36945 56.09477 1 0 -2 + 805 242 13 -0.834 41.05301 64.77947 55.72335 1 -1 -1 + 806 242 14 0.417 41.95836 64.58666 55.96711 1 -1 -1 + 807 242 14 0.417 41.07998 65.67647 55.39035 1 -1 -1 + 808 243 13 -0.834 59.16096 63.30207 34.55147 0 -1 2 + 809 243 14 0.417 58.62636 62.51316 34.64131 0 -1 2 + 810 243 14 0.417 59.80830 63.23451 35.25333 0 -1 2 + 811 244 13 -0.834 59.86542 53.52546 55.50419 0 -1 -1 + 812 244 14 0.417 60.26921 53.79963 56.32761 0 -1 -1 + 813 244 14 0.417 58.96256 53.83773 55.56399 0 -1 -1 + 814 245 13 -0.834 56.48528 44.99075 44.65443 1 0 0 + 815 245 14 0.417 55.84854 44.49932 44.13551 1 0 0 + 816 245 14 0.417 57.18258 45.20803 44.03571 1 0 0 + 817 246 13 -0.834 37.25407 54.85866 36.86076 0 -1 -1 + 818 246 14 0.417 37.37951 55.31820 36.03050 0 -1 -1 + 819 246 14 0.417 36.91899 55.52805 37.45731 0 -1 -1 + 820 247 13 -0.834 54.42875 47.21339 48.23883 -1 -1 -1 + 821 247 14 0.417 54.60966 48.13349 48.43097 -1 -1 -1 + 822 247 14 0.417 54.44092 47.16092 47.28312 -1 -1 -1 + 823 248 13 -0.834 42.61226 41.78391 40.84493 1 0 1 + 824 248 14 0.417 41.98531 41.90233 41.55849 1 0 1 + 825 248 14 0.417 42.35866 42.43623 40.19194 1 0 1 + 826 249 13 -0.834 37.83522 41.95649 50.31377 0 0 -2 + 827 249 14 0.417 37.42231 42.81133 50.19124 0 0 -2 + 828 249 14 0.417 37.46684 41.41031 49.61934 0 0 -2 + 829 250 13 -0.834 44.80898 44.15062 49.20688 0 -1 0 + 830 250 14 0.417 44.80289 44.55594 48.33975 0 -1 0 + 831 250 14 0.417 45.29722 44.76463 49.75537 0 -1 0 + 832 251 13 -0.834 37.44321 44.03405 38.75076 1 0 1 + 833 251 14 0.417 37.12277 44.06014 39.65235 1 0 1 + 834 251 14 0.417 64.13547 43.56266 38.26824 0 0 1 + 835 252 13 -0.834 38.82113 46.15070 46.12915 1 0 0 + 836 252 14 0.417 38.96657 46.44867 47.02709 1 0 0 + 837 252 14 0.417 38.09796 45.52731 46.19733 1 0 0 + 838 253 13 -0.834 43.08482 60.65520 45.34135 -1 0 1 + 839 253 14 0.417 42.82882 59.73347 45.30784 -1 0 1 + 840 253 14 0.417 44.00885 60.65685 45.09147 -1 0 1 + 841 254 13 -0.834 45.72190 46.51173 32.51384 1 0 0 + 842 254 14 0.417 46.00925 45.78294 31.96381 1 0 0 + 843 254 14 0.417 46.53186 46.95248 32.77064 1 0 0 + 844 255 13 -0.834 63.64359 44.33728 41.24417 -1 0 0 + 845 255 14 0.417 63.60411 43.61794 41.87443 -1 0 0 + 846 255 14 0.417 62.76926 44.36407 40.85550 -1 0 0 + 847 256 13 -0.834 48.53353 66.27879 51.60437 0 0 -1 + 848 256 14 0.417 49.21611 66.24938 50.93396 0 0 -1 + 849 256 14 0.417 48.67507 65.48862 52.12577 0 0 -1 + 850 257 13 -0.834 54.11962 54.32751 39.83526 -1 1 1 + 851 257 14 0.417 53.37975 54.47391 39.24585 -1 1 1 + 852 257 14 0.417 53.95747 53.46346 40.21391 -1 1 1 + 853 258 13 -0.834 53.72785 66.08707 44.78384 -1 -1 0 + 854 258 14 0.417 54.65423 65.85662 44.85413 -1 -1 0 + 855 258 14 0.417 53.26300 65.26936 44.96130 -1 -1 0 + 856 259 13 -0.834 39.06287 51.40870 53.96063 0 0 -1 + 857 259 14 0.417 39.12854 51.34243 53.00796 0 0 -1 + 858 259 14 0.417 38.38057 52.06341 54.10916 0 0 -1 + 859 260 13 -0.834 58.77064 49.77012 37.45292 0 0 0 + 860 260 14 0.417 59.49652 49.20688 37.72142 0 0 0 + 861 260 14 0.417 57.98575 49.25379 37.63621 0 0 0 + 862 261 13 -0.834 37.94204 48.36591 35.22049 -1 0 0 + 863 261 14 0.417 37.94000 47.48368 35.59187 -1 0 0 + 864 261 14 0.417 38.86901 48.59216 35.14453 -1 0 0 + 865 262 13 -0.834 47.05754 54.06564 40.63628 0 -2 1 + 866 262 14 0.417 47.01965 53.22193 41.08679 0 -2 1 + 867 262 14 0.417 46.68660 54.68838 41.26145 0 -2 1 + 868 263 13 -0.834 46.01283 65.88108 53.59469 0 0 0 + 869 263 14 0.417 45.30729 66.50296 53.77277 0 0 0 + 870 263 14 0.417 46.76378 66.42902 53.36650 0 0 0 + 871 264 13 -0.834 45.32546 67.91008 39.11365 -1 -1 0 + 872 264 14 0.417 44.38981 67.96233 38.91853 -1 -1 0 + 873 264 14 0.417 45.70517 67.47097 38.35257 -1 -1 0 + 874 265 13 -0.834 55.39761 51.53823 53.16553 -1 1 -1 + 875 265 14 0.417 54.64975 52.10179 53.36389 -1 1 -1 + 876 265 14 0.417 55.78119 51.91789 52.37499 -1 1 -1 + 877 266 13 -0.834 57.06415 51.22923 32.75117 -1 -1 0 + 878 266 14 0.417 56.79908 52.11139 32.49079 -1 -1 0 + 879 266 14 0.417 57.98399 51.16910 32.49322 -1 -1 0 + 880 267 13 -0.834 50.05222 47.30342 45.67457 0 0 -2 + 881 267 14 0.417 49.85957 46.82324 46.47990 0 0 -2 + 882 267 14 0.417 50.60617 46.70964 45.16781 0 0 -2 + 883 268 13 -0.834 50.46819 45.47822 52.51129 0 1 -1 + 884 268 14 0.417 50.78823 45.07196 53.31677 0 1 -1 + 885 268 14 0.417 51.03886 45.13243 51.82499 0 1 -1 + 886 269 13 -0.834 47.44130 61.30175 47.80124 0 0 0 + 887 269 14 0.417 48.02715 60.89314 48.43850 0 0 0 + 888 269 14 0.417 47.98636 61.43626 47.02595 0 0 0 + 889 270 13 -0.834 41.31630 52.47434 39.71677 1 0 0 + 890 270 14 0.417 41.07609 52.94514 40.51485 1 0 0 + 891 270 14 0.417 42.05418 52.96849 39.35955 1 0 0 + 892 271 13 -0.834 55.90762 58.63213 50.47814 0 1 0 + 893 271 14 0.417 55.80273 59.37784 51.06903 0 1 0 + 894 271 14 0.417 55.41449 58.87554 49.69468 0 1 0 + 895 272 13 -0.834 42.23424 55.62725 53.35280 0 1 -1 + 896 272 14 0.417 41.62946 55.10926 53.88399 0 1 -1 + 897 272 14 0.417 41.75761 56.43615 53.16647 0 1 -1 + 898 273 13 -0.834 62.31754 63.97065 42.48774 0 0 1 + 899 273 14 0.417 63.27023 64.05391 42.44669 0 0 1 + 900 273 14 0.417 62.16851 63.13573 42.93152 0 0 1 + 901 274 13 -0.834 60.93154 49.79182 56.13812 0 -1 0 + 902 274 14 0.417 61.38991 48.97402 56.33134 0 -1 0 + 903 274 14 0.417 60.29808 49.88575 56.84955 0 -1 0 + 904 275 13 -0.834 50.39572 45.11274 36.60756 0 1 -1 + 905 275 14 0.417 50.88541 44.33834 36.33051 0 1 -1 + 906 275 14 0.417 50.38352 45.05976 37.56322 0 1 -1 + 907 276 13 -0.834 46.57204 43.12189 39.29488 -1 2 -1 + 908 276 14 0.417 46.48449 42.17951 39.43813 -1 2 -1 + 909 276 14 0.417 47.49357 43.30747 39.47547 -1 2 -1 + 910 277 13 -0.834 54.39979 41.37518 38.62483 0 0 1 + 911 277 14 0.417 54.27469 42.27221 38.31511 0 0 1 + 912 277 14 0.417 54.57135 68.24024 37.83080 0 -1 1 + 913 278 13 -0.834 60.57638 52.40343 41.12327 -1 1 -1 + 914 278 14 0.417 60.40196 53.27982 40.78010 -1 1 -1 + 915 278 14 0.417 60.37657 52.46726 42.05721 -1 1 -1 + 916 279 13 -0.834 61.77806 59.06524 41.98029 0 0 0 + 917 279 14 0.417 62.58317 59.36537 42.40214 0 0 0 + 918 279 14 0.417 61.10430 59.16112 42.65342 0 0 0 + 919 280 13 -0.834 43.46789 48.64833 54.88223 0 1 -2 + 920 280 14 0.417 43.60676 49.48200 54.43286 0 1 -2 + 921 280 14 0.417 43.74339 47.98554 54.24895 0 1 -2 + 922 281 13 -0.834 51.98628 58.37454 48.60562 -1 0 0 + 923 281 14 0.417 51.81372 57.54909 49.05852 -1 0 0 + 924 281 14 0.417 52.67545 58.16319 47.97583 -1 0 0 + 925 282 13 -0.834 55.00551 65.64176 56.63926 0 -1 -1 + 926 282 14 0.417 55.59134 66.11131 29.86167 0 -1 0 + 927 282 14 0.417 54.80211 66.27584 55.95165 0 -1 -1 + 928 283 13 -0.834 55.02996 52.59142 50.59986 -1 1 0 + 929 283 14 0.417 54.13615 52.66743 50.26585 -1 1 0 + 930 283 14 0.417 55.48513 53.35419 50.24316 -1 1 0 + 931 284 13 -0.834 37.39245 67.88600 56.81733 0 -1 -1 + 932 284 14 0.417 38.13326 41.09044 56.62787 0 0 -1 + 933 284 14 0.417 37.74351 67.00148 56.71419 0 -1 -1 + 934 285 13 -0.834 42.83234 60.22766 53.36959 0 0 0 + 935 285 14 0.417 43.51497 59.86233 52.80672 0 0 0 + 936 285 14 0.417 43.27782 60.90528 53.87815 0 0 0 + 937 286 13 -0.834 59.24806 43.81265 38.44265 1 0 0 + 938 286 14 0.417 59.12140 43.55748 39.35647 1 0 0 + 939 286 14 0.417 60.07673 44.29174 38.43991 1 0 0 + 940 287 13 -0.834 61.29263 60.52642 52.74164 -1 1 -1 + 941 287 14 0.417 61.73918 60.02180 53.42149 -1 1 -1 + 942 287 14 0.417 60.93759 61.28711 53.20156 -1 1 -1 + 943 288 13 -0.834 63.43980 43.30119 30.90384 -1 1 0 + 944 288 14 0.417 63.34979 42.36405 30.73085 -1 1 0 + 945 288 14 0.417 64.20504 43.56693 30.39393 -1 1 0 + 946 289 13 -0.834 57.11924 59.06522 54.48909 -1 0 0 + 947 289 14 0.417 57.40605 59.83488 54.98062 -1 0 0 + 948 289 14 0.417 57.59698 58.33614 54.88463 -1 0 0 + 949 290 13 -0.834 51.89759 59.82680 44.82923 1 1 -1 + 950 290 14 0.417 51.33588 59.94068 44.06258 1 1 -1 + 951 290 14 0.417 51.32846 60.01914 45.57443 1 1 -1 + 952 291 13 -0.834 57.64696 65.49112 47.86068 -1 0 0 + 953 291 14 0.417 57.31105 65.98457 48.60895 -1 0 0 + 954 291 14 0.417 57.73765 64.59519 48.18521 -1 0 0 + 955 292 13 -0.834 50.35232 57.73892 32.55459 0 1 0 + 956 292 14 0.417 51.07441 57.69034 31.92813 0 1 0 + 957 292 14 0.417 50.48339 58.57180 33.00777 0 1 0 + 958 293 13 -0.834 46.20166 60.82812 38.38269 0 1 1 + 959 293 14 0.417 46.12191 61.76977 38.53504 0 1 1 + 960 293 14 0.417 45.30555 60.53505 38.21735 0 1 1 + 961 294 13 -0.834 41.42660 51.46433 55.94150 1 0 -1 + 962 294 14 0.417 40.58025 51.71240 55.56944 1 0 -1 + 963 294 14 0.417 41.63094 50.62307 55.53311 1 0 -1 + 964 295 13 -0.834 56.72642 53.95840 32.00323 0 -1 0 + 965 295 14 0.417 57.12177 54.49254 32.69216 0 -1 0 + 966 295 14 0.417 55.80349 54.21231 32.00259 0 -1 0 + 967 296 13 -0.834 43.25852 41.40642 31.27656 0 1 0 + 968 296 14 0.417 43.58058 42.21308 31.67880 0 1 0 + 969 296 14 0.417 43.16985 68.16459 32.00619 0 0 0 + 970 297 13 -0.834 54.50477 52.62435 30.30235 -2 1 0 + 971 297 14 0.417 54.04985 52.22243 31.04245 -2 1 0 + 972 297 14 0.417 54.36900 53.56465 30.41915 -2 1 0 + 973 298 13 -0.834 38.11258 59.33341 36.21749 1 0 0 + 974 298 14 0.417 38.95754 58.91929 36.04205 1 0 0 + 975 298 14 0.417 38.14750 60.16192 35.73940 1 0 0 + 976 299 13 -0.834 39.65020 64.70254 40.48616 -1 0 1 + 977 299 14 0.417 39.87581 65.58596 40.19474 -1 0 1 + 978 299 14 0.417 39.66086 64.17611 39.68676 -1 0 1 + 979 300 13 -0.834 63.26661 53.84973 48.10281 -1 1 1 + 980 300 14 0.417 63.38261 54.75210 48.40032 -1 1 1 + 981 300 14 0.417 62.32830 53.68505 48.19603 -1 1 1 + 982 301 13 -0.834 43.65966 61.04202 50.03088 0 0 0 + 983 301 14 0.417 44.11377 60.35973 50.52538 0 0 0 + 984 301 14 0.417 44.30508 61.74317 49.94108 0 0 0 + 985 302 13 -0.834 61.75204 50.20037 32.39414 0 0 0 + 986 302 14 0.417 62.04749 51.09027 32.58663 0 0 0 + 987 302 14 0.417 62.55370 49.67736 32.38826 0 0 0 + 988 303 13 -0.834 53.79071 58.98335 36.25336 -1 -2 -1 + 989 303 14 0.417 53.17711 58.26833 36.42220 -1 -2 -1 + 990 303 14 0.417 54.65389 58.60140 36.41235 -1 -2 -1 + 991 304 13 -0.834 50.47963 50.13918 42.58243 1 -1 -2 + 992 304 14 0.417 51.28111 49.63880 42.42915 1 -1 -2 + 993 304 14 0.417 50.33279 50.61369 41.76419 1 -1 -2 + 994 305 13 -0.834 50.28770 49.02182 56.79391 1 -1 -2 + 995 305 14 0.417 50.66164 48.14920 56.91622 1 -1 -2 + 996 305 14 0.417 50.60501 49.30063 55.93493 1 -1 -2 + 997 306 13 -0.834 41.36930 46.36343 34.87469 1 1 0 + 998 306 14 0.417 42.25704 46.59841 34.60463 1 1 0 + 999 306 14 0.417 40.85961 47.16333 34.74582 1 1 0 + 1000 307 13 -0.834 61.15349 47.47016 41.71779 0 1 0 + 1001 307 14 0.417 61.50139 48.29469 41.37818 0 1 0 + 1002 307 14 0.417 60.28203 47.69385 42.04454 0 1 0 + 1003 308 13 -0.834 58.35337 46.83622 34.81712 0 0 1 + 1004 308 14 0.417 57.63221 46.22391 34.67141 0 0 1 + 1005 308 14 0.417 57.97297 47.69883 34.65146 0 0 1 + 1006 309 13 -0.834 38.79812 57.92803 48.26323 1 -2 -1 + 1007 309 14 0.417 38.67444 56.98130 48.33141 1 -2 -1 + 1008 309 14 0.417 39.70990 58.06987 48.51776 1 -2 -1 + 1009 310 13 -0.834 42.15963 57.96891 45.03230 1 0 0 + 1010 310 14 0.417 42.11698 57.98663 45.98839 1 0 0 + 1011 310 14 0.417 41.83611 57.10021 44.79371 1 0 0 + 1012 311 13 -0.834 55.17551 54.72671 36.49400 0 -1 0 + 1013 311 14 0.417 55.26386 53.77738 36.57890 0 -1 0 + 1014 311 14 0.417 55.36463 55.06457 37.36939 0 -1 0 + 1015 312 13 -0.834 58.64573 63.28550 41.10609 -1 -2 -1 + 1016 312 14 0.417 58.98147 62.66636 41.75429 -1 -2 -1 + 1017 312 14 0.417 57.90273 62.83419 40.70545 -1 -2 -1 + 1018 313 13 -0.834 49.96498 59.98797 42.54359 0 -1 0 + 1019 313 14 0.417 50.57886 60.48612 42.00390 0 -1 0 + 1020 313 14 0.417 49.10600 60.17526 42.16501 0 -1 0 + 1021 314 13 -0.834 57.54750 44.35075 52.12722 -1 -1 -1 + 1022 314 14 0.417 57.86221 43.84739 51.37633 -1 -1 -1 + 1023 314 14 0.417 56.76423 44.79718 51.80558 -1 -1 -1 + 1024 315 13 -0.834 58.07892 59.46258 41.31930 1 -1 0 + 1025 315 14 0.417 58.27344 60.10968 41.99729 1 -1 0 + 1026 315 14 0.417 57.80524 59.98199 40.56328 1 -1 0 + 1027 316 13 -0.834 42.21869 44.49848 55.65511 2 1 0 + 1028 316 14 0.417 42.77458 44.78017 56.38166 2 1 0 + 1029 316 14 0.417 42.83052 44.15513 55.00395 2 1 0 + 1030 317 13 -0.834 56.38334 63.45614 43.52622 -1 -1 0 + 1031 317 14 0.417 55.66283 63.62998 42.92052 -1 -1 0 + 1032 317 14 0.417 56.48976 64.27319 44.01338 -1 -1 0 + 1033 318 13 -0.834 43.21354 46.04700 52.52965 1 1 0 + 1034 318 14 0.417 43.24360 45.09879 52.40226 1 1 0 + 1035 318 14 0.417 43.99839 46.37328 52.08943 1 1 0 + 1036 319 13 -0.834 55.96174 45.94863 35.39660 -1 0 1 + 1037 319 14 0.417 55.64687 46.44680 36.15088 -1 0 1 + 1038 319 14 0.417 55.28305 46.06527 34.73174 -1 0 1 + 1039 320 13 -0.834 47.36406 54.82690 34.84439 -1 -1 2 + 1040 320 14 0.417 47.90093 54.86776 34.05295 -1 -1 2 + 1041 320 14 0.417 47.23152 53.89118 34.99640 -1 -1 2 + 1042 321 13 -0.834 49.62685 50.00229 45.27362 1 0 -2 + 1043 321 14 0.417 49.70876 49.05477 45.38192 1 0 -2 + 1044 321 14 0.417 49.82566 50.15634 44.35005 1 0 -2 + 1045 322 13 -0.834 49.58249 46.02940 55.43310 -1 0 -2 + 1046 322 14 0.417 49.10378 46.80060 55.12924 -1 0 -2 + 1047 322 14 0.417 49.31802 45.92761 56.34739 -1 0 -2 + 1048 323 13 -0.834 51.72150 51.53491 51.55558 0 -1 -1 + 1049 323 14 0.417 51.50292 52.17946 50.88251 0 -1 -1 + 1050 323 14 0.417 52.14568 52.04382 52.24646 0 -1 -1 + 1051 324 13 -0.834 37.98107 56.66338 52.98024 0 1 0 + 1052 324 14 0.417 37.64467 57.53823 52.78607 0 1 0 + 1053 324 14 0.417 38.15999 56.27913 52.12200 0 1 0 + 1054 325 13 -0.834 59.20226 51.55233 53.16877 -1 1 0 + 1055 325 14 0.417 59.68851 51.88535 53.92302 -1 1 0 + 1056 325 14 0.417 58.63621 50.87031 53.53025 -1 1 0 + 1057 326 13 -0.834 45.75783 63.62117 39.24032 1 1 -1 + 1058 326 14 0.417 46.25179 64.38626 39.53508 1 1 -1 + 1059 326 14 0.417 44.85376 63.80686 39.49409 1 1 -1 + 1060 327 13 -0.834 58.00953 52.38584 37.67148 -1 1 1 + 1061 327 14 0.417 58.24242 51.47235 37.50553 -1 1 1 + 1062 327 14 0.417 57.26453 52.33853 38.27062 -1 1 1 + 1063 328 13 -0.834 50.62838 66.20855 42.36072 0 0 -1 + 1064 328 14 0.417 51.45434 66.68250 42.45770 0 0 -1 + 1065 328 14 0.417 49.99531 66.87945 42.10506 0 0 -1 + 1066 329 13 -0.834 53.69444 52.39171 45.41982 1 0 0 + 1067 329 14 0.417 53.84961 51.45739 45.55855 1 0 0 + 1068 329 14 0.417 52.75879 52.45359 45.22750 1 0 0 + 1069 330 13 -0.834 38.34038 60.92162 30.12773 2 0 0 + 1070 330 14 0.417 39.08908 61.47644 29.90887 2 0 0 + 1071 330 14 0.417 38.64185 60.39196 30.86585 2 0 0 + 1072 331 13 -0.834 48.03336 64.84935 43.13262 -1 0 -2 + 1073 331 14 0.417 48.90813 65.00919 43.48682 -1 0 -2 + 1074 331 14 0.417 47.46214 65.43367 43.63114 -1 0 -2 + 1075 332 13 -0.834 39.68760 66.88962 36.60665 2 0 0 + 1076 332 14 0.417 38.74743 66.72116 36.66944 2 0 0 + 1077 332 14 0.417 40.05009 66.08888 36.22764 2 0 0 + 1078 333 13 -0.834 51.94118 65.49897 51.83197 0 -1 -2 + 1079 333 14 0.417 52.71282 65.06165 51.47204 0 -1 -2 + 1080 333 14 0.417 51.22446 64.88225 51.68297 0 -1 -2 + 1081 334 13 -0.834 43.33066 57.53264 55.09930 -1 0 -2 + 1082 334 14 0.417 43.05496 56.76932 54.59178 -1 0 -2 + 1083 334 14 0.417 44.28179 57.55937 54.99503 -1 0 -2 + 1084 335 13 -0.834 47.70128 45.69178 52.17773 -1 3 -1 + 1085 335 14 0.417 47.54566 44.86273 52.63016 -1 3 -1 + 1086 335 14 0.417 48.58530 45.94693 52.44163 -1 3 -1 + 1087 336 13 -0.834 58.71603 41.81571 40.73899 -1 0 0 + 1088 336 14 0.417 57.77048 41.84330 40.88539 -1 0 0 + 1089 336 14 0.417 58.81275 41.43332 39.86682 -1 0 0 + 1090 337 13 -0.834 57.56034 60.98533 43.60766 0 -1 0 + 1091 337 14 0.417 56.67639 60.61816 43.59917 0 -1 0 + 1092 337 14 0.417 57.42830 61.92611 43.72486 0 -1 0 + 1093 338 13 -0.834 44.68088 65.08579 34.27880 -1 0 2 + 1094 338 14 0.417 45.54678 65.09564 34.68668 -1 0 2 + 1095 338 14 0.417 44.45037 64.15818 34.22739 -1 0 2 + 1096 339 13 -0.834 54.98236 48.04093 42.26075 0 0 0 + 1097 339 14 0.417 55.16505 47.86552 43.18384 0 0 0 + 1098 339 14 0.417 55.70493 48.59999 41.97513 0 0 0 + 1099 340 13 -0.834 60.57099 56.88773 56.53671 0 0 1 + 1100 340 14 0.417 60.67151 56.21616 29.83998 0 0 2 + 1101 340 14 0.417 61.34465 56.78824 55.98192 0 0 1 + 1102 341 13 -0.834 48.05045 49.69974 47.93542 -1 0 0 + 1103 341 14 0.417 48.70922 49.23613 48.45249 -1 0 0 + 1104 341 14 0.417 48.26410 49.48583 47.02721 -1 0 0 + 1105 342 13 -0.834 40.63207 55.77589 49.21695 1 0 -1 + 1106 342 14 0.417 40.84917 56.26844 50.00847 1 0 -1 + 1107 342 14 0.417 41.40772 55.85904 48.66226 1 0 -1 + 1108 343 13 -0.834 61.66015 42.71355 39.91223 0 0 0 + 1109 343 14 0.417 61.87748 41.86774 40.30419 0 0 0 + 1110 343 14 0.417 61.98864 42.65380 39.01514 0 0 0 + 1111 344 13 -0.834 38.52157 65.12766 57.04010 0 -1 -1 + 1112 344 14 0.417 38.04157 64.32142 56.85084 0 -1 -1 + 1113 344 14 0.417 39.36310 65.01535 56.59799 0 -1 -1 + 1114 345 13 -0.834 54.26556 44.72348 38.61852 -1 0 0 + 1115 345 14 0.417 54.65781 45.53245 38.94708 -1 0 0 + 1116 345 14 0.417 54.97105 44.29396 38.13473 -1 0 0 + 1117 346 13 -0.834 55.38993 55.61246 43.96322 -1 0 1 + 1118 346 14 0.417 54.74535 54.99107 43.62461 -1 0 1 + 1119 346 14 0.417 55.11835 55.77119 44.86726 -1 0 1 + 1120 347 13 -0.834 56.42023 55.00369 50.06211 -1 -1 0 + 1121 347 14 0.417 55.77599 55.59187 50.45611 -1 -1 0 + 1122 347 14 0.417 56.93756 54.68448 50.80151 -1 -1 0 + 1123 348 13 -0.834 45.79495 66.88952 36.56670 1 1 -1 + 1124 348 14 0.417 45.28578 66.71904 35.77429 1 1 -1 + 1125 348 14 0.417 46.57709 67.34552 36.25591 1 1 -1 + 1126 349 13 -0.834 62.75278 45.54084 32.23733 0 0 0 + 1127 349 14 0.417 62.61586 44.79986 31.64705 0 0 0 + 1128 349 14 0.417 62.96974 45.14017 33.07913 0 0 0 + 1129 350 13 -0.834 57.50625 65.62986 39.74454 0 0 0 + 1130 350 14 0.417 57.73342 64.85584 40.25983 0 0 0 + 1131 350 14 0.417 57.07082 66.21286 40.36642 0 0 0 + 1132 351 13 -0.834 55.96293 62.10636 50.17062 0 1 -1 + 1133 351 14 0.417 56.24333 61.70901 50.99507 0 1 -1 + 1134 351 14 0.417 56.67888 62.69531 49.93234 0 1 -1 + 1135 352 13 -0.834 37.45010 41.11856 53.00894 0 0 0 + 1136 352 14 0.417 37.99062 41.49514 53.70339 0 0 0 + 1137 352 14 0.417 37.83337 41.45341 52.19826 0 0 0 + 1138 353 13 -0.834 40.59344 47.85232 38.52244 1 0 1 + 1139 353 14 0.417 41.31256 47.71502 37.90580 1 0 1 + 1140 353 14 0.417 40.21612 48.69426 38.26747 1 0 1 + 1141 354 13 -0.834 60.77214 62.31711 30.33695 0 2 -1 + 1142 354 14 0.417 59.83662 62.43212 30.17023 0 2 -1 + 1143 354 14 0.417 60.97856 61.45964 29.96496 0 2 -1 + 1144 355 13 -0.834 47.83829 64.26042 48.43592 0 1 -1 + 1145 355 14 0.417 47.12209 64.85952 48.22523 0 1 -1 + 1146 355 14 0.417 47.44823 63.38856 48.37295 0 1 -1 + 1147 356 13 -0.834 38.69679 45.31108 42.13672 1 1 0 + 1148 356 14 0.417 39.20464 45.52138 41.35308 1 1 0 + 1149 356 14 0.417 37.90440 44.89009 41.80335 1 1 0 + 1150 357 13 -0.834 38.90832 47.67164 52.69089 0 1 0 + 1151 357 14 0.417 39.51269 48.14149 53.26554 0 1 0 + 1152 357 14 0.417 38.42834 48.36117 52.23218 0 1 0 + 1153 358 13 -0.834 45.13879 48.98199 29.96256 0 2 1 + 1154 358 14 0.417 44.63649 48.48457 30.60794 0 2 1 + 1155 358 14 0.417 44.70163 48.80464 56.50106 0 2 0 + 1156 359 13 -0.834 54.78460 57.58368 54.24956 1 1 -1 + 1157 359 14 0.417 54.71436 57.34891 55.17486 1 1 -1 + 1158 359 14 0.417 55.60599 58.07122 54.18735 1 1 -1 + 1159 360 13 -0.834 40.77006 67.09387 46.34204 0 0 1 + 1160 360 14 0.417 40.91087 66.51539 47.09156 0 0 1 + 1161 360 14 0.417 41.47386 67.73986 46.40192 0 0 1 + 1162 361 13 -0.834 53.75960 49.21723 54.03526 1 0 -1 + 1163 361 14 0.417 54.17778 50.07537 53.96484 1 0 -1 + 1164 361 14 0.417 54.18187 48.68822 53.35846 1 0 -1 + 1165 362 13 -0.834 46.41755 62.84035 30.52059 0 0 1 + 1166 362 14 0.417 46.37357 61.90548 30.72136 0 0 1 + 1167 362 14 0.417 46.76359 62.87829 57.00030 0 0 0 + 1168 363 13 -0.834 51.27491 42.28113 30.83818 0 -1 0 + 1169 363 14 0.417 51.18814 42.11416 31.77671 0 -1 0 + 1170 363 14 0.417 50.41560 42.60836 30.57220 0 -1 0 + 1171 364 13 -0.834 52.36258 42.54738 46.83477 0 -1 -1 + 1172 364 14 0.417 51.62853 42.02025 46.51928 0 -1 -1 + 1173 364 14 0.417 53.11771 42.22680 46.34158 0 -1 -1 + 1174 365 13 -0.834 40.11442 46.69570 48.71466 3 -2 1 + 1175 365 14 0.417 39.89820 47.61495 48.55824 3 -2 1 + 1176 365 14 0.417 40.87520 46.72352 49.29493 3 -2 1 + 1177 366 13 -0.834 56.56957 65.78976 45.32589 0 -2 -1 + 1178 366 14 0.417 56.86196 65.56407 46.20896 0 -2 -1 + 1179 366 14 0.417 57.34222 66.16870 44.90678 0 -2 -1 + 1180 367 13 -0.834 38.37373 47.63723 43.98242 2 0 0 + 1181 367 14 0.417 38.78516 47.21384 44.73589 2 0 0 + 1182 367 14 0.417 38.73588 47.18051 43.22315 2 0 0 + 1183 368 13 -0.834 45.69445 49.36872 40.50736 -1 0 -2 + 1184 368 14 0.417 44.73771 49.39892 40.51002 -1 0 -2 + 1185 368 14 0.417 45.90701 48.47357 40.77155 -1 0 -2 + 1186 369 13 -0.834 53.93830 54.76570 31.99728 0 -1 0 + 1187 369 14 0.417 53.94849 55.50033 32.61083 0 -1 0 + 1188 369 14 0.417 53.13070 54.29402 32.20107 0 -1 0 + 1189 370 13 -0.834 58.79125 64.07093 37.97498 -1 -1 -2 + 1190 370 14 0.417 58.48296 64.72380 38.60343 -1 -1 -2 + 1191 370 14 0.417 58.20942 64.16977 37.22136 -1 -1 -2 + 1192 371 13 -0.834 51.76123 61.42281 40.82794 0 -1 0 + 1193 371 14 0.417 52.69114 61.24136 40.69160 0 -1 0 + 1194 371 14 0.417 51.74755 62.21395 41.36660 0 -1 0 + 1195 372 13 -0.834 44.28377 63.70509 53.71234 -1 -2 -1 + 1196 372 14 0.417 44.98211 64.35001 53.59994 -1 -2 -1 + 1197 372 14 0.417 43.75271 63.78587 52.92008 -1 -2 -1 + 1198 373 13 -0.834 61.50835 48.76378 34.91047 0 0 -1 + 1199 373 14 0.417 61.23254 49.09753 34.05678 0 0 -1 + 1200 373 14 0.417 61.51672 49.53447 35.47812 0 0 -1 + 1201 374 13 -0.834 61.51337 41.63477 44.26291 -1 -1 0 + 1202 374 14 0.417 62.42662 41.58544 44.54543 -1 -1 0 + 1203 374 14 0.417 61.34749 68.16405 43.83907 -1 -2 0 + 1204 375 13 -0.834 57.73267 43.39213 33.64792 0 -1 0 + 1205 375 14 0.417 58.46456 43.28438 34.25535 0 -1 0 + 1206 375 14 0.417 58.09278 43.15396 32.79362 0 -1 0 + 1207 376 13 -0.834 63.51473 49.31549 51.59705 -1 1 -1 + 1208 376 14 0.417 63.13045 49.03534 50.76631 -1 1 -1 + 1209 376 14 0.417 62.84038 49.86142 52.00137 -1 1 -1 + 1210 377 13 -0.834 58.21462 44.79010 54.73553 -1 -1 -1 + 1211 377 14 0.417 58.08068 43.94884 55.17209 -1 -1 -1 + 1212 377 14 0.417 57.81645 44.67856 53.87224 -1 -1 -1 + 1213 378 13 -0.834 57.08090 55.14561 52.86183 0 -2 1 + 1214 378 14 0.417 57.05215 55.46811 53.76261 0 -2 1 + 1215 378 14 0.417 57.69965 54.41575 52.88786 0 -2 1 + 1216 379 13 -0.834 60.83502 54.45436 45.82182 1 0 -1 + 1217 379 14 0.417 61.05342 55.38616 45.83857 1 0 -1 + 1218 379 14 0.417 60.79443 54.20077 46.74392 1 0 -1 + 1219 380 13 -0.834 60.86442 48.23162 37.95658 0 0 2 + 1220 380 14 0.417 61.77710 48.43881 37.75572 0 0 2 + 1221 380 14 0.417 60.87611 47.30540 38.19788 0 0 2 + 1222 381 13 -0.834 43.21478 43.26953 44.97859 2 1 -1 + 1223 381 14 0.417 42.50778 42.78849 44.54850 2 1 -1 + 1224 381 14 0.417 43.42173 42.74895 45.75474 2 1 -1 + 1225 382 13 -0.834 39.01904 49.57571 48.28198 1 -1 -1 + 1226 382 14 0.417 38.68877 49.32064 47.42052 1 -1 -1 + 1227 382 14 0.417 38.42357 50.26661 48.57234 1 -1 -1 + 1228 383 13 -0.834 47.20253 45.34580 30.26781 0 0 1 + 1229 383 14 0.417 47.05738 44.40526 30.16508 0 0 1 + 1230 383 14 0.417 46.80592 45.73631 56.86044 0 0 0 + 1231 384 13 -0.834 44.57742 55.88746 33.53830 0 -1 0 + 1232 384 14 0.417 45.13093 56.49768 33.05096 0 -1 0 + 1233 384 14 0.417 44.41092 55.17196 32.92464 0 -1 0 + 1234 385 13 -0.834 42.17091 64.36626 51.74369 1 0 0 + 1235 385 14 0.417 41.78583 65.24128 51.69570 1 0 0 + 1236 385 14 0.417 41.41926 63.77568 51.79343 1 0 0 + 1237 386 13 -0.834 43.82615 43.47821 52.97551 0 0 0 + 1238 386 14 0.417 43.64099 42.56407 52.76025 0 0 0 + 1239 386 14 0.417 44.58924 43.43914 53.55207 0 0 0 + 1240 387 13 -0.834 63.58286 63.91035 38.47173 0 -1 -1 + 1241 387 14 0.417 64.14591 63.71296 39.22023 0 -1 -1 + 1242 387 14 0.417 62.70901 64.01191 38.84896 0 -1 -1 + 1243 388 13 -0.834 57.85225 42.19019 46.82252 1 1 -2 + 1244 388 14 0.417 57.61712 42.29475 47.74450 1 1 -2 + 1245 388 14 0.417 57.29406 42.81537 46.36013 1 1 -2 + 1246 389 13 -0.834 57.90802 64.30101 52.26362 1 0 1 + 1247 389 14 0.417 58.43907 64.81717 52.87010 1 0 1 + 1248 389 14 0.417 58.54387 63.78888 51.76396 1 0 1 + 1249 390 13 -0.834 53.18379 66.68791 54.05156 1 -2 0 + 1250 390 14 0.417 52.23394 66.79510 54.00115 1 -2 0 + 1251 390 14 0.417 53.33447 65.77140 53.82015 1 -2 0 + 1252 391 13 -0.834 56.95394 68.26036 36.42711 -1 1 1 + 1253 391 14 0.417 56.91362 41.83232 36.58445 -1 2 1 + 1254 391 14 0.417 57.79173 67.98998 36.80292 -1 1 1 + 1255 392 13 -0.834 64.19252 44.20158 54.88143 0 0 0 + 1256 392 14 0.417 64.09322 45.07899 54.51194 0 0 0 + 1257 392 14 0.417 63.39239 43.74201 54.62684 0 0 0 + 1258 393 13 -0.834 63.10536 65.42626 48.53464 0 0 0 + 1259 393 14 0.417 62.79665 64.63036 48.10166 0 0 0 + 1260 393 14 0.417 62.77768 65.35429 49.43112 0 0 0 + 1261 394 13 -0.834 49.28836 66.20367 32.27628 1 -1 0 + 1262 394 14 0.417 49.46858 65.88738 33.16155 1 -1 0 + 1263 394 14 0.417 49.29197 65.41476 31.73420 1 -1 0 + 1264 395 13 -0.834 46.11216 66.09570 44.77896 0 -1 0 + 1265 395 14 0.417 45.90309 66.07762 45.71287 0 -1 0 + 1266 395 14 0.417 45.36137 65.67813 44.35683 0 -1 0 + 1267 396 13 -0.834 41.43943 50.30026 52.32584 1 0 0 + 1268 396 14 0.417 41.39866 49.93140 51.44351 1 0 0 + 1269 396 14 0.417 40.92759 49.69528 52.86275 1 0 0 + 1270 397 13 -0.834 54.69177 57.80859 32.50623 0 -1 -1 + 1271 397 14 0.417 53.99890 57.66594 31.86139 0 -1 -1 + 1272 397 14 0.417 54.37599 57.37325 33.29806 0 -1 -1 + 1273 398 13 -0.834 43.56781 46.79065 37.17838 0 1 0 + 1274 398 14 0.417 43.18325 46.24795 36.49004 0 1 0 + 1275 398 14 0.417 44.03819 46.17194 37.73711 0 1 0 + 1276 399 13 -0.834 55.33436 45.90772 50.69068 -1 0 0 + 1277 399 14 0.417 55.55455 46.77982 51.01809 -1 0 0 + 1278 399 14 0.417 55.09425 46.04877 49.77488 -1 0 0 + 1279 400 13 -0.834 56.15383 51.87018 43.92178 -1 0 1 + 1280 400 14 0.417 55.25073 52.12373 44.11256 -1 0 1 + 1281 400 14 0.417 56.65027 52.68628 43.98319 -1 0 1 + 1282 401 13 -0.834 62.38946 50.01240 45.94802 0 1 -2 + 1283 401 14 0.417 62.43815 50.07607 44.99418 0 1 -2 + 1284 401 14 0.417 61.47369 50.19932 46.15457 0 1 -2 + 1285 402 13 -0.834 53.60920 58.35575 46.37412 0 0 1 + 1286 402 14 0.417 53.25556 59.03071 45.79481 0 0 1 + 1287 402 14 0.417 53.24753 57.53627 46.03666 0 0 1 + 1288 403 13 -0.834 43.13375 42.07203 50.04429 1 0 0 + 1289 403 14 0.417 43.76099 42.76922 49.85267 1 0 0 + 1290 403 14 0.417 42.35437 42.53016 50.35879 1 0 0 + 1291 404 13 -0.834 47.41498 59.41146 52.77687 -1 -1 0 + 1292 404 14 0.417 47.81303 59.83868 53.53534 -1 -1 0 + 1293 404 14 0.417 48.01011 59.60512 52.05261 -1 -1 0 + 1294 405 13 -0.834 63.75607 47.28104 38.80571 0 2 -1 + 1295 405 14 0.417 63.78573 48.20840 38.57042 0 2 -1 + 1296 405 14 0.417 37.08655 47.17376 39.44769 1 2 -1 + 1297 406 13 -0.834 46.67594 56.20863 44.42866 1 1 0 + 1298 406 14 0.417 45.82140 56.15280 44.00100 1 1 0 + 1299 406 14 0.417 46.48292 56.12468 45.36243 1 1 0 + 1300 407 13 -0.834 62.54251 68.21194 54.20445 0 -1 1 + 1301 407 14 0.417 63.31640 41.15490 53.73696 0 0 1 + 1302 407 14 0.417 62.78865 67.34176 54.51819 0 -1 1 + 1303 408 13 -0.834 60.27010 54.96049 39.87633 0 0 0 + 1304 408 14 0.417 59.62959 55.67175 39.88547 0 0 0 + 1305 408 14 0.417 61.04761 55.33233 40.29281 0 0 0 + 1306 409 13 -0.834 40.02595 44.30132 44.29580 0 -2 0 + 1307 409 14 0.417 39.70595 44.75009 45.07839 0 -2 0 + 1308 409 14 0.417 39.56836 44.72725 43.57092 0 -2 0 + 1309 410 13 -0.834 54.20011 41.08252 35.61017 0 1 0 + 1310 410 14 0.417 55.10396 68.23613 35.83794 0 0 0 + 1311 410 14 0.417 54.27044 41.57221 34.79072 0 1 0 + 1312 411 13 -0.834 60.64478 45.93023 50.84376 1 1 -1 + 1313 411 14 0.417 60.80088 46.54647 51.55941 1 1 -1 + 1314 411 14 0.417 61.20574 46.24077 50.13303 1 1 -1 + 1315 412 13 -0.834 44.55137 44.47403 38.16771 1 0 -1 + 1316 412 14 0.417 45.28189 43.86333 38.26597 1 0 -1 + 1317 412 14 0.417 43.77025 43.93754 38.30281 1 0 -1 + 1318 413 13 -0.834 58.08933 62.76987 30.45191 1 -1 0 + 1319 413 14 0.417 57.64138 63.31997 29.80927 1 -1 0 + 1320 413 14 0.417 57.43674 62.11708 30.70545 1 -1 0 + 1321 414 13 -0.834 55.65273 56.71117 38.74877 1 0 1 + 1322 414 14 0.417 56.53260 56.59636 39.10779 1 0 1 + 1323 414 14 0.417 55.14964 55.98047 39.10825 1 0 1 + 1324 415 13 -0.834 55.50009 51.16952 38.77962 0 0 0 + 1325 415 14 0.417 54.95350 51.23711 37.99672 0 0 0 + 1326 415 14 0.417 55.53220 50.23190 38.96963 0 0 0 + 1327 416 13 -0.834 47.64702 52.79911 31.71446 0 -1 0 + 1328 416 14 0.417 48.52504 53.09556 31.47481 0 -1 0 + 1329 416 14 0.417 47.06032 53.44853 31.32681 0 -1 0 + 1330 417 13 -0.834 49.26727 42.35880 39.18566 1 1 -2 + 1331 417 14 0.417 50.02784 42.93912 39.15429 1 1 -2 + 1332 417 14 0.417 49.46495 41.74196 39.89040 1 1 -2 + 1333 418 13 -0.834 47.22542 64.65021 35.82232 1 -1 0 + 1334 418 14 0.417 46.76114 65.20346 36.45050 1 -1 0 + 1335 418 14 0.417 47.98585 65.16966 35.56120 1 -1 0 + 1336 419 13 -0.834 58.53686 56.85468 40.78587 1 1 0 + 1337 419 14 0.417 58.45283 56.63469 41.71365 1 1 0 + 1338 419 14 0.417 58.36285 57.79507 40.74550 1 1 0 + 1339 420 13 -0.834 50.09436 46.17981 48.16619 -1 -1 -2 + 1340 420 14 0.417 50.67249 45.42897 48.30138 -1 -1 -2 + 1341 420 14 0.417 50.49629 46.88624 48.67183 -1 -1 -2 + 1342 421 13 -0.834 42.30297 57.95379 33.48633 0 -1 1 + 1343 421 14 0.417 41.56921 57.39445 33.23136 0 -1 1 + 1344 421 14 0.417 43.00718 57.34235 33.70193 0 -1 1 + 1345 422 13 -0.834 45.76518 43.79811 54.82490 0 -1 0 + 1346 422 14 0.417 46.45133 43.55343 54.20397 0 -1 0 + 1347 422 14 0.417 45.87205 43.18693 55.55379 0 -1 0 + 1348 423 13 -0.834 59.33326 61.34125 37.96927 -1 -1 1 + 1349 423 14 0.417 59.29007 62.29004 38.08827 -1 -1 1 + 1350 423 14 0.417 59.90006 61.03609 38.67769 -1 -1 1 + 1351 424 13 -0.834 40.95662 63.48104 42.72192 1 -1 0 + 1352 424 14 0.417 40.33618 63.69074 42.02383 1 -1 0 + 1353 424 14 0.417 41.73946 63.17568 42.26346 1 -1 0 + 1354 425 13 -0.834 38.13662 59.25720 46.08402 1 -1 -1 + 1355 425 14 0.417 38.31499 59.03616 46.99811 1 -1 -1 + 1356 425 14 0.417 38.55502 58.55783 45.58196 1 -1 -1 + 1357 426 13 -0.834 48.88681 66.85051 54.82298 1 -2 0 + 1358 426 14 0.417 49.16879 67.45078 54.13275 1 -2 0 + 1359 426 14 0.417 49.42353 66.06836 54.69484 1 -2 0 + 1360 427 13 -0.834 45.88049 57.05477 48.46508 0 0 -1 + 1361 427 14 0.417 45.73709 57.90911 48.05793 0 0 -1 + 1362 427 14 0.417 45.83791 57.22701 49.40569 0 0 -1 + 1363 428 13 -0.834 39.37333 50.31613 37.93447 0 1 0 + 1364 428 14 0.417 39.11456 50.97624 37.29140 0 1 0 + 1365 428 14 0.417 38.97424 50.60960 38.75352 0 1 0 + 1366 429 13 -0.834 37.89753 62.82745 47.39297 0 -1 0 + 1367 429 14 0.417 38.39122 62.78202 46.57414 0 -1 0 + 1368 429 14 0.417 37.01605 63.08963 47.12747 0 -1 0 + 1369 430 13 -0.834 43.16514 41.31420 47.01379 0 1 0 + 1370 430 14 0.417 42.71409 41.22965 47.85382 0 1 0 + 1371 430 14 0.417 44.05112 68.36565 47.18386 0 0 0 + 1372 431 13 -0.834 47.03179 42.44477 42.46475 1 0 0 + 1373 431 14 0.417 46.12350 42.65285 42.24573 1 0 0 + 1374 431 14 0.417 47.53228 43.19970 42.15516 1 0 0 + 1375 432 13 -0.834 55.35894 54.15040 46.85340 0 -1 0 + 1376 432 14 0.417 54.76544 53.43667 46.61975 0 -1 0 + 1377 432 14 0.417 56.17133 53.71318 47.10853 0 -1 0 + 1378 433 13 -0.834 47.00663 55.28313 38.22800 -1 -2 1 + 1379 433 14 0.417 46.53490 56.00706 38.63987 -1 -2 1 + 1380 433 14 0.417 47.07459 54.61953 38.91449 -1 -2 1 + 1381 434 13 -0.834 57.16336 58.62297 32.33349 -1 0 2 + 1382 434 14 0.417 57.63330 57.80350 32.48798 -1 0 2 + 1383 434 14 0.417 56.24209 58.36680 32.29014 -1 0 2 + 1384 435 13 -0.834 37.23245 47.62479 56.34765 0 1 -1 + 1385 435 14 0.417 37.24274 47.21497 55.48268 0 1 -1 + 1386 435 14 0.417 37.36000 46.89905 56.95860 0 1 -1 + 1387 436 13 -0.834 48.77030 41.06015 29.86683 2 1 0 + 1388 436 14 0.417 48.81141 67.97117 56.39997 2 0 -1 + 1389 436 14 0.417 49.05230 67.78232 30.51123 2 0 0 + 1390 437 13 -0.834 49.10149 56.15638 36.66346 0 0 1 + 1391 437 14 0.417 48.50786 55.61659 36.14146 0 0 1 + 1392 437 14 0.417 48.61812 56.33305 37.47053 0 0 1 + 1393 438 13 -0.834 58.15731 59.39698 29.96092 0 -1 1 + 1394 438 14 0.417 58.20240 59.10993 30.87296 0 -1 1 + 1395 438 14 0.417 57.30076 59.81721 29.88367 0 -1 1 + 1396 439 13 -0.834 59.37068 41.03089 37.87324 1 0 0 + 1397 439 14 0.417 59.56889 41.95335 37.71194 1 0 0 + 1398 439 14 0.417 60.22643 67.97433 37.90167 1 -1 0 + 1399 440 13 -0.834 38.32241 55.03397 50.58952 1 0 0 + 1400 440 14 0.417 38.22793 54.19584 50.13692 1 0 0 + 1401 440 14 0.417 39.21785 55.31153 50.39614 1 0 0 + 1402 441 13 -0.834 36.94673 59.01778 33.00159 1 -1 2 + 1403 441 14 0.417 36.95260 59.97305 32.94091 1 -1 2 + 1404 441 14 0.417 63.71798 58.82680 33.72245 0 -1 2 + 1405 442 13 -0.834 62.50746 54.84239 54.03343 0 -1 0 + 1406 442 14 0.417 61.69710 54.35984 54.19681 0 -1 0 + 1407 442 14 0.417 63.09119 54.20097 53.62833 0 -1 0 + 1408 443 13 -0.834 40.59690 62.80012 38.69405 1 -1 1 + 1409 443 14 0.417 41.53881 62.90970 38.82458 1 -1 1 + 1410 443 14 0.417 40.36980 62.03187 39.21794 1 -1 1 + 1411 444 13 -0.834 37.67477 67.71471 42.59127 0 -1 -1 + 1412 444 14 0.417 38.12213 68.13627 41.85751 0 -1 -1 + 1413 444 14 0.417 38.28279 67.03643 42.88534 0 -1 -1 + 1414 445 13 -0.834 42.73681 50.65782 33.30839 1 1 0 + 1415 445 14 0.417 42.84587 51.15085 34.12157 1 1 0 + 1416 445 14 0.417 42.32631 51.27747 32.70527 1 1 0 + 1417 446 13 -0.834 37.13349 57.05842 55.81927 0 0 0 + 1418 446 14 0.417 37.95375 57.53453 55.68979 0 0 0 + 1419 446 14 0.417 36.99014 56.59807 54.99236 0 0 0 + 1420 447 13 -0.834 61.08039 63.50929 36.52096 -1 0 0 + 1421 447 14 0.417 60.44389 63.87414 37.13579 -1 0 0 + 1422 447 14 0.417 61.70642 63.04107 37.07331 -1 0 0 + 1423 448 13 -0.834 57.12289 46.04019 38.75954 0 0 0 + 1424 448 14 0.417 56.81351 45.55997 39.52760 0 0 0 + 1425 448 14 0.417 57.99543 45.68504 38.58988 0 0 0 + 1426 449 13 -0.834 45.45003 49.45347 49.54397 0 0 -1 + 1427 449 14 0.417 45.96611 49.34591 48.74502 0 0 -1 + 1428 449 14 0.417 46.09930 49.60861 50.22999 0 0 -1 + 1429 450 13 -0.834 37.77009 64.51990 42.66941 1 0 0 + 1430 450 14 0.417 38.49339 64.80040 43.23011 1 0 0 + 1431 450 14 0.417 38.14071 64.50928 41.78694 1 0 0 + 1432 451 13 -0.834 45.78323 57.65378 39.37062 1 0 0 + 1433 451 14 0.417 46.03758 58.03295 40.21190 1 0 0 + 1434 451 14 0.417 44.96217 58.09258 39.14803 1 0 0 + 1435 452 13 -0.834 56.96672 60.41636 47.59314 0 -1 1 + 1436 452 14 0.417 56.18373 60.11455 48.05365 0 -1 1 + 1437 452 14 0.417 56.65889 61.13663 47.04297 0 -1 1 + 1438 453 13 -0.834 52.44356 65.82746 35.82081 -1 -1 0 + 1439 453 14 0.417 53.10567 65.14225 35.91211 -1 -1 0 + 1440 453 14 0.417 52.93741 66.64611 35.86748 -1 -1 0 + 1441 454 13 -0.834 50.70912 51.42252 40.30021 0 0 -1 + 1442 454 14 0.417 50.97387 50.70177 39.72866 0 0 -1 + 1443 454 14 0.417 50.17774 51.98938 39.74116 0 0 -1 + 1444 455 13 -0.834 39.22290 45.94023 39.69239 2 1 -1 + 1445 455 14 0.417 39.63836 46.66722 39.22859 2 1 -1 + 1446 455 14 0.417 38.97218 45.32685 39.00164 2 1 -1 + 1447 456 13 -0.834 43.73041 61.86387 55.46954 2 0 0 + 1448 456 14 0.417 43.61274 62.32163 56.30192 2 0 0 + 1449 456 14 0.417 43.90401 62.55964 54.83549 2 0 0 + 1450 457 13 -0.834 61.51877 56.42039 33.84869 0 0 1 + 1451 457 14 0.417 62.17805 55.74211 33.70200 0 0 1 + 1452 457 14 0.417 62.00943 57.15723 34.21276 0 0 1 + 1453 458 13 -0.834 51.72050 63.63199 42.34406 1 0 1 + 1454 458 14 0.417 51.24482 64.43296 42.56407 1 0 1 + 1455 458 14 0.417 52.62118 63.92057 42.19669 1 0 1 + 1456 459 13 -0.834 54.73666 56.51839 51.73687 0 0 -1 + 1457 459 14 0.417 54.77503 56.56844 52.69200 0 0 -1 + 1458 459 14 0.417 54.91702 57.41111 51.44234 0 0 -1 + 1459 460 13 -0.834 50.97984 54.35591 33.27919 0 1 0 + 1460 460 14 0.417 50.47200 55.12727 33.02747 0 1 0 + 1461 460 14 0.417 50.36917 53.82187 33.78725 0 1 0 + 1462 461 13 -0.834 44.82656 54.45280 36.09973 1 0 2 + 1463 461 14 0.417 45.75766 54.23599 36.14740 1 0 2 + 1464 461 14 0.417 44.76968 55.11700 35.41283 1 0 2 + 1465 462 13 -0.834 58.05791 56.64716 55.29041 1 1 0 + 1466 462 14 0.417 58.98499 56.81997 55.45441 1 1 0 + 1467 462 14 0.417 57.82639 55.96338 55.91897 1 1 0 + 1468 463 13 -0.834 55.95112 61.02029 30.79757 1 0 1 + 1469 463 14 0.417 55.28483 61.63344 30.48711 1 0 1 + 1470 463 14 0.417 55.45357 60.27206 31.12748 1 0 1 + 1471 464 13 -0.834 54.80996 46.88659 45.41700 -1 0 0 + 1472 464 14 0.417 55.42348 46.16300 45.28950 -1 0 0 + 1473 464 14 0.417 54.08129 46.68997 44.82826 -1 0 0 + 1474 465 13 -0.834 60.19361 64.43268 31.92053 0 -1 2 + 1475 465 14 0.417 60.05792 63.85315 32.67017 0 -1 2 + 1476 465 14 0.417 60.47170 63.84993 31.21392 0 -1 2 + 1477 466 13 -0.834 45.55496 65.56032 30.88251 0 -1 1 + 1478 466 14 0.417 45.97644 64.70102 30.89691 0 -1 1 + 1479 466 14 0.417 45.82502 65.97384 31.70248 0 -1 1 + 1480 467 13 -0.834 52.92714 44.06759 29.88429 0 1 0 + 1481 467 14 0.417 52.39641 43.38446 30.29405 0 1 0 + 1482 467 14 0.417 53.79372 43.96686 30.27818 0 1 0 + 1483 468 13 -0.834 40.71534 55.31247 44.93070 1 0 0 + 1484 468 14 0.417 39.81994 55.07165 45.16841 1 0 0 + 1485 468 14 0.417 41.16802 54.47609 44.82218 1 0 0 + 1486 469 13 -0.834 64.04777 59.80626 42.91634 0 -1 -1 + 1487 469 14 0.417 37.09051 60.51146 43.41377 1 -1 -1 + 1488 469 14 0.417 37.01609 59.00291 43.31068 1 -1 -1 + 1489 470 13 -0.834 57.05030 49.72625 41.88829 -1 1 1 + 1490 470 14 0.417 56.75150 50.53290 42.30818 -1 1 1 + 1491 470 14 0.417 57.52176 50.02159 41.10935 -1 1 1 + 1492 471 13 -0.834 62.59447 67.67898 41.14714 -2 -2 1 + 1493 471 14 0.417 63.45155 67.57764 41.56112 -2 -2 1 + 1494 471 14 0.417 61.96974 67.40478 41.81854 -2 -2 1 + 1495 472 13 -0.834 62.98029 58.34420 35.34278 0 0 1 + 1496 472 14 0.417 62.45371 58.26151 36.13783 0 0 1 + 1497 472 14 0.417 63.83636 58.64077 35.65169 0 0 1 + 1498 473 13 -0.834 63.44584 56.74146 44.14484 0 1 -2 + 1499 473 14 0.417 64.13590 56.53036 44.77371 0 1 -2 + 1500 473 14 0.417 62.70665 57.02149 44.68470 0 1 -2 + 1501 474 13 -0.834 44.05905 56.56929 51.60681 1 0 -1 + 1502 474 14 0.417 43.57850 56.15764 52.32504 1 0 -1 + 1503 474 14 0.417 43.90344 55.99747 50.85512 1 0 -1 + 1504 475 13 -0.834 37.49588 59.31379 39.05252 0 0 0 + 1505 475 14 0.417 37.07904 58.45297 39.09112 0 0 0 + 1506 475 14 0.417 37.58867 59.49374 38.11696 0 0 0 + 1507 476 13 -0.834 54.75747 41.52122 56.48609 -1 1 0 + 1508 476 14 0.417 54.79987 42.39714 56.86981 -1 1 0 + 1509 476 14 0.417 54.80582 41.67034 55.54179 -1 1 0 + 1510 477 13 -0.834 42.91665 58.39379 47.91495 1 0 0 + 1511 477 14 0.417 43.70923 58.91951 47.80683 1 0 0 + 1512 477 14 0.417 42.28811 58.98861 48.32409 1 0 0 + 1513 478 13 -0.834 60.63731 64.78822 56.03697 -2 1 -1 + 1514 478 14 0.417 60.86485 63.91302 56.35082 -2 1 -1 + 1515 478 14 0.417 60.50973 65.30321 56.83369 -2 1 -1 + 1516 479 13 -0.834 52.85180 54.69512 43.09842 0 0 1 + 1517 479 14 0.417 52.31485 55.13373 42.43846 0 0 1 + 1518 479 14 0.417 53.08000 53.85428 42.70200 0 0 1 + 1519 480 13 -0.834 51.49497 54.97356 38.95012 -2 1 -1 + 1520 480 14 0.417 50.77717 54.34090 38.97811 -2 1 -1 + 1521 480 14 0.417 51.51597 55.35169 39.82923 -2 1 -1 + 1522 481 13 -0.834 40.46924 62.02458 56.36341 1 0 -1 + 1523 481 14 0.417 40.45814 61.65439 55.48076 1 0 -1 + 1524 481 14 0.417 40.81799 62.90856 56.24853 1 0 -1 + 1525 482 13 -0.834 52.26692 56.29032 45.24820 0 2 1 + 1526 482 14 0.417 51.65227 56.79794 44.71834 0 2 1 + 1527 482 14 0.417 52.43092 55.49973 44.73408 0 2 1 + 1528 483 13 -0.834 53.46372 44.63556 52.39623 -1 1 1 + 1529 483 14 0.417 53.51664 45.03502 53.26448 -1 1 1 + 1530 483 14 0.417 54.08491 45.13343 51.86474 -1 1 1 + 1531 484 13 -0.834 42.90202 49.87822 40.32919 0 2 1 + 1532 484 14 0.417 42.40392 49.63281 41.10889 0 2 1 + 1533 484 14 0.417 42.31302 50.45172 39.83885 0 2 1 + 1534 485 13 -0.834 43.07357 64.57931 39.44006 2 1 1 + 1535 485 14 0.417 42.79300 64.80186 38.55237 2 1 1 + 1536 485 14 0.417 43.26869 65.42268 39.84860 2 1 1 + 1537 486 13 -0.834 38.86691 42.35197 55.12826 1 1 -1 + 1538 486 14 0.417 38.06621 42.87541 55.16185 1 1 -1 + 1539 486 14 0.417 39.52681 42.89488 55.55954 1 1 -1 + 1540 487 13 -0.834 59.15412 47.19863 55.46904 0 -1 0 + 1541 487 14 0.417 59.83963 46.99833 56.10636 0 -1 0 + 1542 487 14 0.417 58.74433 46.35364 55.28381 0 -1 0 + 1543 488 13 -0.834 52.12071 45.94110 44.23903 1 1 0 + 1544 488 14 0.417 51.89927 45.05144 44.51416 1 1 0 + 1545 488 14 0.417 52.26697 45.87115 43.29566 1 1 0 + 1546 489 13 -0.834 41.73140 52.23741 31.27732 0 0 1 + 1547 489 14 0.417 40.84403 52.55314 31.44796 0 0 1 + 1548 489 14 0.417 41.81503 52.26011 30.32405 0 0 1 + 1549 490 13 -0.834 38.46034 66.01701 52.27886 1 0 -1 + 1550 490 14 0.417 39.39276 66.02392 52.49517 1 0 -1 + 1551 490 14 0.417 38.11246 66.80769 52.69121 1 0 -1 + 1552 491 13 -0.834 42.13838 67.12262 54.88509 0 0 -3 + 1553 491 14 0.417 42.22460 67.38235 53.96784 0 0 -3 + 1554 491 14 0.417 42.96673 67.38388 55.28736 0 0 -3 + 1555 492 13 -0.834 37.89607 66.86351 46.16867 -1 -1 -1 + 1556 492 14 0.417 38.03129 66.98073 47.10899 -1 -1 -1 + 1557 492 14 0.417 38.75367 66.60168 45.83369 -1 -1 -1 + 1558 493 13 -0.834 40.37538 58.21424 30.88318 0 -1 0 + 1559 493 14 0.417 41.23010 58.63566 30.79307 0 -1 0 + 1560 493 14 0.417 40.45502 57.40101 30.38463 0 -1 0 + 1561 494 13 -0.834 54.56531 48.85249 32.17940 1 -2 2 + 1562 494 14 0.417 54.90082 48.98086 31.29216 1 -2 2 + 1563 494 14 0.417 54.03604 49.63141 32.35086 1 -2 2 + 1564 495 13 -0.834 63.56488 49.70113 37.88594 0 -1 1 + 1565 495 14 0.417 63.93261 49.40780 37.05228 0 -1 1 + 1566 495 14 0.417 63.98151 50.54765 38.04739 0 -1 1 + 1567 496 13 -0.834 39.26126 54.76920 54.71493 2 -1 2 + 1568 496 14 0.417 38.75402 55.21237 54.03483 2 -1 2 + 1569 496 14 0.417 38.67139 54.73109 55.46781 2 -1 2 + 1570 497 13 -0.834 42.78607 47.20625 49.30057 2 -1 0 + 1571 497 14 0.417 42.93670 46.34815 48.90404 2 -1 0 + 1572 497 14 0.417 43.53800 47.33917 49.87780 2 -1 0 + 1573 498 13 -0.834 59.99490 55.30114 50.55687 0 1 -1 + 1574 498 14 0.417 60.84158 55.66821 50.81111 0 1 -1 + 1575 498 14 0.417 59.38335 56.03363 50.63237 0 1 -1 + 1576 499 13 -0.834 57.95276 49.30660 54.37087 1 -1 -1 + 1577 499 14 0.417 57.34184 49.29544 55.10769 1 -1 -1 + 1578 499 14 0.417 58.55272 48.58151 54.54557 1 -1 -1 + 1579 500 13 -0.834 43.43041 64.04345 57.10111 1 -1 -1 + 1580 500 14 0.417 43.03742 64.07155 30.60210 1 -1 0 + 1581 500 14 0.417 44.26016 64.51104 29.82515 1 -1 0 + 1582 501 13 -0.834 40.71066 57.82778 50.85579 1 -1 -1 + 1583 501 14 0.417 41.04411 57.83612 51.75299 1 -1 -1 + 1584 501 14 0.417 40.96886 58.67633 50.49590 1 -1 -1 + 1585 502 13 -0.834 61.21331 60.53661 39.63578 1 -1 0 + 1586 502 14 0.417 61.87151 61.23113 39.61011 1 -1 0 + 1587 502 14 0.417 61.32085 60.13583 40.49837 1 -1 0 + 1588 503 13 -0.834 43.54081 65.33296 49.47114 1 -1 -1 + 1589 503 14 0.417 42.67637 65.41138 49.06762 1 -1 -1 + 1590 503 14 0.417 43.36562 64.99829 50.35065 1 -1 -1 + 1591 504 13 -0.834 50.27329 53.06087 30.87109 -1 0 1 + 1592 504 14 0.417 50.38769 53.42204 29.99204 -1 0 1 + 1593 504 14 0.417 50.86354 53.57620 31.42092 -1 0 1 + 1594 505 13 -0.834 40.29157 66.01889 32.67757 0 -1 0 + 1595 505 14 0.417 40.18198 66.27998 31.76320 0 -1 0 + 1596 505 14 0.417 39.39873 65.90460 33.00317 0 -1 0 + 1597 506 13 -0.834 48.15372 67.97019 44.25255 1 -1 1 + 1598 506 14 0.417 47.34263 67.52534 44.49854 1 -1 1 + 1599 506 14 0.417 47.87159 41.31478 43.68328 1 0 1 + 1600 507 13 -0.834 53.38019 63.98437 38.13827 0 0 -1 + 1601 507 14 0.417 54.19463 63.69976 37.72362 0 0 -1 + 1602 507 14 0.417 53.59582 64.82739 38.53711 0 0 -1 + 1603 508 13 -0.834 40.87597 58.12305 53.50808 0 0 0 + 1604 508 14 0.417 40.17916 58.26636 54.14852 0 0 0 + 1605 508 14 0.417 41.66044 58.48234 53.92256 0 0 0 + 1606 509 13 -0.834 38.19887 52.28056 36.30714 2 0 -1 + 1607 509 14 0.417 38.20463 53.19038 36.60452 2 0 -1 + 1608 509 14 0.417 38.09924 52.33929 35.35695 2 0 -1 + 1609 510 13 -0.834 49.63883 57.32410 43.72359 0 -1 0 + 1610 510 14 0.417 49.72446 58.17232 43.28833 0 -1 0 + 1611 510 14 0.417 48.76183 57.33851 44.10688 0 -1 0 + 1612 511 13 -0.834 42.58791 59.61362 29.86455 1 0 0 + 1613 511 14 0.417 43.07246 58.91969 56.78877 1 0 -1 + 1614 511 14 0.417 42.69535 60.38141 56.67447 1 0 -1 + 1615 512 13 -0.834 50.76111 60.95449 46.98165 -1 0 -1 + 1616 512 14 0.417 50.90477 61.15450 47.90663 -1 0 -1 + 1617 512 14 0.417 50.20825 61.66875 46.66473 -1 0 -1 + 1618 513 13 -0.834 43.18406 55.61939 48.08539 1 0 0 + 1619 513 14 0.417 43.11229 56.55752 47.90932 1 0 0 + 1620 513 14 0.417 44.01330 55.36231 47.68228 1 0 0 + 1621 514 13 -0.834 54.67377 64.76817 41.62522 1 0 1 + 1622 514 14 0.417 54.39407 65.19031 40.81294 1 0 1 + 1623 514 14 0.417 55.29742 65.38243 42.01250 1 0 1 + 1624 515 13 -0.834 53.87383 68.12810 51.72031 0 -1 0 + 1625 515 14 0.417 53.06918 41.24938 51.55887 0 0 0 + 1626 515 14 0.417 53.74278 67.72971 52.58074 0 -1 0 + 1627 516 13 -0.834 38.24785 41.26767 33.50598 2 0 0 + 1628 516 14 0.417 38.16490 67.75301 33.15337 2 -1 0 + 1629 516 14 0.417 37.95757 41.83753 32.79377 2 0 0 + 1630 517 13 -0.834 47.35008 61.96125 42.94580 2 -2 0 + 1631 517 14 0.417 47.46077 62.90828 43.03015 2 -2 0 + 1632 517 14 0.417 47.09087 61.83022 42.03373 2 -2 0 + 1633 518 13 -0.834 40.55210 54.00820 41.89137 1 -1 1 + 1634 518 14 0.417 39.80099 54.24986 41.34946 1 -1 1 + 1635 518 14 0.417 40.19429 53.40377 42.54166 1 -1 1 + 1636 519 13 -0.834 57.17705 64.40362 55.44286 1 -1 -1 + 1637 519 14 0.417 56.34510 64.78670 55.72097 1 -1 -1 + 1638 519 14 0.417 57.64987 65.12814 55.03330 1 -1 -1 + 1639 520 13 -0.834 41.86955 59.84132 42.65268 0 -1 1 + 1640 520 14 0.417 41.72011 59.11980 43.26367 0 -1 1 + 1641 520 14 0.417 42.24995 60.53605 43.19017 0 -1 1 + 1642 521 13 -0.834 61.62566 57.26645 46.18447 0 -1 -1 + 1643 521 14 0.417 60.68119 57.41642 46.22577 0 -1 -1 + 1644 521 14 0.417 61.98987 57.84356 46.85569 0 -1 -1 + 1645 522 13 -0.834 46.82701 65.68647 41.03579 0 0 0 + 1646 522 14 0.417 46.01385 65.85266 41.51264 0 0 0 + 1647 522 14 0.417 47.44009 65.38297 41.70531 0 0 0 + 1648 523 13 -0.834 54.12960 45.94549 32.81485 0 0 1 + 1649 523 14 0.417 53.25962 45.65636 32.53955 0 0 1 + 1650 523 14 0.417 54.18942 46.85072 32.50950 0 0 1 + 1651 524 13 -0.834 43.71268 59.97805 32.34985 1 1 0 + 1652 524 14 0.417 43.46300 59.27568 32.95033 1 1 0 + 1653 524 14 0.417 42.94131 60.10757 31.79808 1 1 0 + 1654 525 13 -0.834 50.10604 48.47250 49.62054 1 0 -2 + 1655 525 14 0.417 50.96037 48.77303 49.31064 1 0 -2 + 1656 525 14 0.417 50.19320 48.44287 50.57331 1 0 -2 + 1657 526 13 -0.834 54.68660 60.38920 43.62499 0 0 0 + 1658 526 14 0.417 54.62862 59.85089 42.83561 0 0 0 + 1659 526 14 0.417 53.78667 60.44045 43.94712 0 0 0 + 1660 527 13 -0.834 56.35115 44.75736 40.87552 0 -1 -1 + 1661 527 14 0.417 56.99705 44.99197 41.54186 0 -1 -1 + 1662 527 14 0.417 55.55387 44.56808 41.37024 0 -1 -1 + 1663 528 13 -0.834 48.77009 62.36934 40.44473 0 -1 0 + 1664 528 14 0.417 49.30266 62.60520 41.20432 0 -1 0 + 1665 528 14 0.417 49.04689 62.97756 39.75939 0 -1 0 + 1666 529 13 -0.834 45.88757 58.55209 41.94547 0 1 0 + 1667 529 14 0.417 46.76719 58.27665 42.20365 0 1 0 + 1668 529 14 0.417 45.35604 57.75963 42.02128 0 1 0 + 1669 530 13 -0.834 39.44116 52.22097 43.65725 1 0 2 + 1670 530 14 0.417 39.30570 52.06689 44.59221 1 0 2 + 1671 530 14 0.417 38.61744 52.60378 43.35530 1 0 2 + 1672 531 13 -0.834 43.95976 66.73852 41.23250 1 0 1 + 1673 531 14 0.417 44.64454 67.13772 40.69588 1 0 1 + 1674 531 14 0.417 43.40678 67.47232 41.50081 1 0 1 + 1675 532 13 -0.834 62.99634 65.50241 54.70446 0 -1 -1 + 1676 532 14 0.417 63.58398 64.98613 55.25617 0 -1 -1 + 1677 532 14 0.417 62.12519 65.14960 54.88585 0 -1 -1 + 1678 533 13 -0.834 62.92898 53.27582 44.77167 0 0 0 + 1679 533 14 0.417 62.08998 53.60880 45.09018 0 0 0 + 1680 533 14 0.417 62.85751 52.32504 44.85618 0 0 0 + 1681 534 13 -0.834 63.31201 43.08081 48.29805 -1 0 -1 + 1682 534 14 0.417 63.01276 42.23705 47.95930 -1 0 -1 + 1683 534 14 0.417 63.67142 43.53221 47.53431 -1 0 -1 + 1684 535 13 -0.834 47.11867 63.34781 55.06249 0 0 -1 + 1685 535 14 0.417 47.19267 64.30022 55.00160 0 0 -1 + 1686 535 14 0.417 46.22495 63.15783 54.77716 0 0 -1 + 1687 536 13 -0.834 60.37216 67.91341 52.27568 -1 0 0 + 1688 536 14 0.417 61.05051 68.14950 52.90839 -1 0 0 + 1689 536 14 0.417 60.81546 67.93922 51.42771 -1 0 0 + 1690 537 13 -0.834 60.04315 43.26291 35.25445 -1 1 1 + 1691 537 14 0.417 60.42501 44.05815 35.62593 -1 1 1 + 1692 537 14 0.417 60.79709 42.72574 35.01102 -1 1 1 + 1693 538 13 -0.834 53.03851 55.52589 47.75769 0 0 -1 + 1694 538 14 0.417 53.93635 55.46537 47.43136 0 0 -1 + 1695 538 14 0.417 52.51527 55.73342 46.98347 0 0 -1 + 1696 539 13 -0.834 37.91895 50.43697 56.37325 0 0 0 + 1697 539 14 0.417 37.51622 49.56884 56.35299 0 0 0 + 1698 539 14 0.417 38.37591 50.50915 55.53527 0 0 0 + 1699 540 13 -0.834 50.50006 63.56852 38.27177 1 1 0 + 1700 540 14 0.417 50.22462 63.18436 37.43944 1 1 0 + 1701 540 14 0.417 51.44083 63.71275 38.16986 1 1 0 + 1702 541 13 -0.834 49.44600 43.95446 42.01861 0 0 1 + 1703 541 14 0.417 49.59639 44.80378 41.60354 0 0 1 + 1704 541 14 0.417 49.73882 44.07372 42.92211 0 0 1 + 1705 542 13 -0.834 50.98365 47.23031 39.51901 1 0 1 + 1706 542 14 0.417 51.18743 48.09631 39.16579 1 0 1 + 1707 542 14 0.417 50.03928 47.13635 39.39410 1 0 1 + 1708 543 13 -0.834 45.54625 60.20130 44.30493 0 0 2 + 1709 543 14 0.417 46.27140 60.62480 43.84553 0 0 2 + 1710 543 14 0.417 45.09838 59.69256 43.62904 0 0 2 + 1711 544 13 -0.834 60.48207 53.69772 48.42686 0 0 1 + 1712 544 14 0.417 60.03677 54.31581 49.00644 0 0 1 + 1713 544 14 0.417 59.89364 52.94407 48.38216 0 0 1 + 1714 545 13 -0.834 63.04952 45.83903 48.97963 -1 1 1 + 1715 545 14 0.417 63.88202 45.63831 49.40729 -1 1 1 + 1716 545 14 0.417 62.76408 45.00498 48.60667 -1 1 1 + 1717 546 13 -0.834 40.62890 44.95273 52.60003 2 -1 -2 + 1718 546 14 0.417 41.29110 45.55853 52.26721 2 -1 -2 + 1719 546 14 0.417 40.33885 45.34348 53.42431 2 -1 -2 + 1720 547 13 -0.834 39.91743 46.12102 55.72693 -1 1 -1 + 1721 547 14 0.417 40.70381 45.68274 56.05216 -1 1 -1 + 1722 547 14 0.417 39.19323 45.65943 56.14967 -1 1 -1 + 1723 548 13 -0.834 42.06829 45.07566 41.79962 0 0 -1 + 1724 548 14 0.417 41.61985 45.91039 41.93531 0 0 -1 + 1725 548 14 0.417 41.86481 44.56390 42.58253 0 0 -1 + 1726 549 13 -0.834 44.17588 49.40877 37.86902 1 1 0 + 1727 549 14 0.417 43.85185 49.35470 38.76808 1 1 0 + 1728 549 14 0.417 43.95346 48.56183 37.48242 1 1 0 + 1729 550 13 -0.834 52.64793 63.92130 45.68237 0 1 0 + 1730 550 14 0.417 52.63502 62.96908 45.58561 0 1 0 + 1731 550 14 0.417 52.43571 64.07178 46.60356 0 1 0 + 1732 551 13 -0.834 51.57615 43.64864 38.83377 1 1 0 + 1733 551 14 0.417 51.74260 43.03820 38.11551 1 1 0 + 1734 551 14 0.417 52.20192 44.35945 38.69449 1 1 0 + 1735 552 13 -0.834 62.02099 63.12241 47.73587 0 1 0 + 1736 552 14 0.417 61.17806 62.75352 47.99973 0 1 0 + 1737 552 14 0.417 62.48263 62.39363 47.32116 0 1 0 + 1738 553 13 -0.834 38.41497 51.40373 50.93034 1 1 0 + 1739 553 14 0.417 37.60807 51.12879 50.49494 1 1 0 + 1740 553 14 0.417 38.99796 51.65996 50.21571 1 1 0 + 1741 554 13 -0.834 51.96339 44.25313 49.02477 0 0 0 + 1742 554 14 0.417 52.81680 44.60151 49.28274 0 0 0 + 1743 554 14 0.417 52.16570 43.57682 48.37831 0 0 0 + 1744 555 13 -0.834 43.58422 51.42052 49.88959 0 1 -1 + 1745 555 14 0.417 42.74054 51.00549 50.06897 0 1 -1 + 1746 555 14 0.417 44.20160 50.69175 49.82657 0 1 -1 + 1747 556 13 -0.834 52.39836 53.43568 49.29165 1 0 -1 + 1748 556 14 0.417 51.88756 52.90169 48.68323 1 0 -1 + 1749 556 14 0.417 52.64451 54.20889 48.78391 1 0 -1 + 1750 557 13 -0.834 57.76885 46.61656 49.32842 0 1 0 + 1751 557 14 0.417 57.83718 46.26991 48.43879 0 1 0 + 1752 557 14 0.417 58.65246 46.53329 49.68694 0 1 0 + 1753 558 13 -0.834 59.20868 56.75211 36.79427 0 1 -1 + 1754 558 14 0.417 59.74268 56.20033 36.22276 0 1 -1 + 1755 558 14 0.417 58.75094 56.13459 37.36470 0 1 -1 + 1756 559 13 -0.834 51.74055 42.45875 36.24184 0 1 1 + 1757 559 14 0.417 51.04879 41.79745 36.22260 0 1 1 + 1758 559 14 0.417 52.52794 41.99055 35.96429 0 1 1 + 1759 560 13 -0.834 56.37631 67.32150 33.05439 -1 0 1 + 1760 560 14 0.417 56.52797 66.39716 33.25152 -1 0 1 + 1761 560 14 0.417 56.88845 67.79399 33.71068 -1 0 1 + 1762 561 13 -0.834 54.61713 62.99597 56.69158 0 1 -1 + 1763 561 14 0.417 54.59393 63.94258 56.83172 0 1 -1 + 1764 561 14 0.417 54.12883 62.86158 55.87934 0 1 -1 + 1765 562 13 -0.834 59.12420 67.78462 34.49420 0 -1 1 + 1766 562 14 0.417 59.61921 67.94665 33.69111 0 -1 1 + 1767 562 14 0.417 59.22686 41.21594 35.00547 0 0 1 + 1768 563 13 -0.834 63.35827 53.14027 38.43168 -1 0 0 + 1769 563 14 0.417 62.48186 53.05933 38.05538 -1 0 0 + 1770 563 14 0.417 63.87715 53.55740 37.74392 -1 0 0 + 1771 564 13 -0.834 50.05518 64.80335 44.94078 1 0 -2 + 1772 564 14 0.417 50.16173 65.71408 44.66608 1 0 -2 + 1773 564 14 0.417 50.94818 64.48993 45.08424 1 0 -2 + 1774 565 13 -0.834 61.91076 61.67486 44.00650 0 -3 0 + 1775 565 14 0.417 61.40514 60.86646 44.09077 0 -3 0 + 1776 565 14 0.417 62.58390 61.60857 44.68380 0 -3 0 + 1777 566 13 -0.834 61.53884 41.33016 50.02212 -1 0 -1 + 1778 566 14 0.417 61.75835 68.35836 49.15591 -1 -1 -1 + 1779 566 14 0.417 62.19075 42.01255 50.18215 -1 0 -1 + 1780 567 13 -0.834 54.81641 49.94673 49.66324 0 -1 -1 + 1781 567 14 0.417 54.81533 50.72359 50.22249 0 -1 -1 + 1782 567 14 0.417 53.94410 49.93341 49.26932 0 -1 -1 + 1783 568 13 -0.834 60.68933 64.00249 53.56679 -1 -1 -1 + 1784 568 14 0.417 60.72666 63.10922 53.90872 -1 -1 -1 + 1785 568 14 0.417 60.37485 64.52808 54.30238 -1 -1 -1 + 1786 569 13 -0.834 55.51605 42.60469 53.96890 0 -1 0 + 1787 569 14 0.417 55.82084 42.66633 53.06360 0 -1 0 + 1788 569 14 0.417 54.99565 43.39708 54.10137 0 -1 0 + 1789 570 13 -0.834 43.79008 68.23755 52.31171 2 -1 1 + 1790 570 14 0.417 43.47705 41.06627 51.42954 2 0 1 + 1791 570 14 0.417 44.72624 68.07073 52.20206 2 -1 1 + 1792 571 13 -0.834 40.19615 44.94623 32.57234 0 0 1 + 1793 571 14 0.417 40.90940 45.49825 32.25173 0 0 1 + 1794 571 14 0.417 40.42796 44.75889 33.48196 0 0 1 + 1795 572 13 -0.834 51.93921 56.60019 36.60262 -1 0 1 + 1796 572 14 0.417 51.78399 56.35099 37.51368 -1 0 1 + 1797 572 14 0.417 51.06469 56.74242 36.24039 -1 0 1 + 1798 573 13 -0.834 61.66916 50.48338 53.29865 -1 0 -2 + 1799 573 14 0.417 61.63036 50.41309 54.25248 -1 0 -2 + 1800 573 14 0.417 60.77283 50.69388 53.03687 -1 0 -2 + 1801 574 13 -0.834 51.74160 54.87485 56.16871 0 -1 0 + 1802 574 14 0.417 50.91429 55.26706 56.44795 0 -1 0 + 1803 574 14 0.417 51.91124 55.25931 55.30869 0 -1 0 + 1804 575 13 -0.834 40.85698 68.18248 30.13155 1 -1 0 + 1805 575 14 0.417 41.30492 67.87357 56.71541 1 -1 -1 + 1806 575 14 0.417 41.55175 41.19073 30.66952 1 0 0 + 1807 576 13 -0.834 50.89809 58.89690 54.50288 -1 0 0 + 1808 576 14 0.417 50.06229 58.64352 54.89466 -1 0 0 + 1809 576 14 0.417 51.37024 59.33797 55.20914 -1 0 0 + 1810 577 13 -0.834 58.37524 67.95427 49.91095 0 1 0 + 1811 577 14 0.417 57.83519 41.29391 50.25604 0 2 0 + 1812 577 14 0.417 59.26942 68.19076 50.15744 0 1 0 + 1813 578 13 -0.834 51.40785 46.48357 30.68744 1 0 1 + 1814 578 14 0.417 52.21871 45.99275 30.55389 1 0 1 + 1815 578 14 0.417 50.76683 45.82189 30.94725 1 0 1 + 1816 579 13 -0.834 57.04032 43.52295 36.91237 0 0 0 + 1817 579 14 0.417 56.97310 44.35969 36.45239 0 0 0 + 1818 579 14 0.417 57.91622 43.53095 37.29833 0 0 0 + 1819 580 13 -0.834 48.05479 47.92450 33.11226 0 0 1 + 1820 580 14 0.417 47.68291 48.79527 32.97186 0 0 1 + 1821 580 14 0.417 48.92592 48.09081 33.47242 0 0 1 + 1822 581 13 -0.834 52.31083 59.89064 56.95945 1 -2 -1 + 1823 581 14 0.417 51.77727 60.32576 30.25310 1 -2 0 + 1824 581 14 0.417 52.84806 60.59010 56.58744 1 -2 -1 + 1825 582 13 -0.834 49.28190 53.14534 38.62511 0 0 1 + 1826 582 14 0.417 48.56647 53.70668 38.92395 0 0 1 + 1827 582 14 0.417 48.86634 52.52585 38.02526 0 0 1 + 1828 583 13 -0.834 48.15214 51.90611 34.43290 2 0 0 + 1829 583 14 0.417 48.57405 51.97443 33.57642 2 0 0 + 1830 583 14 0.417 47.22654 51.76503 34.23389 2 0 0 + 1831 584 13 -0.834 61.27546 54.09168 30.34511 0 1 1 + 1832 584 14 0.417 61.26898 53.84689 31.27046 0 1 1 + 1833 584 14 0.417 62.02427 53.62196 29.97785 0 1 1 + 1834 585 13 -0.834 47.15916 50.47662 53.78471 0 -1 0 + 1835 585 14 0.417 47.32648 50.93912 54.60588 0 -1 0 + 1836 585 14 0.417 46.29671 50.78520 53.50690 0 -1 0 + 1837 586 13 -0.834 58.58091 63.09753 49.23949 0 -1 1 + 1838 586 14 0.417 59.43607 63.50227 49.38484 0 -1 1 + 1839 586 14 0.417 58.76326 62.34843 48.67219 0 -1 1 + 1840 587 13 -0.834 55.82082 49.65937 30.11648 0 1 1 + 1841 587 14 0.417 56.52757 49.92139 30.70647 0 1 1 + 1842 587 14 0.417 55.68213 50.42183 56.92602 0 1 0 + 1843 588 13 -0.834 63.79581 52.53565 53.17702 0 -2 1 + 1844 588 14 0.417 36.89869 52.41207 52.35479 1 -2 1 + 1845 588 14 0.417 63.12882 51.84908 53.17487 0 -2 1 + 1846 589 13 -0.834 58.30874 56.36537 43.52715 0 0 3 + 1847 589 14 0.417 58.58025 56.80205 44.33452 0 0 3 + 1848 589 14 0.417 57.40732 56.09029 43.69457 0 0 3 + 1849 590 13 -0.834 38.42652 61.06904 33.48425 0 -2 -1 + 1850 590 14 0.417 39.08604 61.75763 33.56856 0 -2 -1 + 1851 590 14 0.417 38.90648 60.25628 33.64334 0 -2 -1 + 1852 591 13 -0.834 46.61439 51.58566 41.81121 1 -1 0 + 1853 591 14 0.417 46.97646 51.37067 42.67082 1 -1 0 + 1854 591 14 0.417 46.41089 50.73724 41.41750 1 -1 0 + 1855 592 13 -0.834 60.01555 43.31814 42.71405 1 0 1 + 1856 592 14 0.417 60.52150 42.79903 43.33920 1 0 1 + 1857 592 14 0.417 59.90024 42.74003 41.95989 1 0 1 + 1858 593 13 -0.834 44.88246 59.34852 51.75271 1 0 -1 + 1859 593 14 0.417 45.75263 59.37400 52.15069 1 0 -1 + 1860 593 14 0.417 44.67274 58.41644 51.69374 1 0 -1 + 1861 594 13 -0.834 58.22051 53.10280 51.15729 0 -1 0 + 1862 594 14 0.417 58.53381 52.60654 51.91346 0 -1 0 + 1863 594 14 0.417 58.92607 53.72100 50.96688 0 -1 0 + 1864 595 13 -0.834 52.85332 67.67658 42.66705 0 -1 0 + 1865 595 14 0.417 53.29462 67.40699 41.86157 0 -1 0 + 1866 595 14 0.417 53.28090 67.16860 43.35652 0 -1 0 + 1867 596 13 -0.834 60.42773 53.38162 37.56585 0 0 1 + 1868 596 14 0.417 60.55482 53.97513 38.30601 0 0 1 + 1869 596 14 0.417 59.53313 53.05721 37.66924 0 0 1 + 1870 597 13 -0.834 56.52028 65.87791 50.38146 0 0 1 + 1871 597 14 0.417 56.94337 66.73645 50.39389 0 0 1 + 1872 597 14 0.417 57.02985 65.35034 50.99649 0 0 1 + 1873 598 13 -0.834 54.80064 62.49993 33.68680 1 0 1 + 1874 598 14 0.417 55.58425 61.96146 33.79744 1 0 1 + 1875 598 14 0.417 55.10591 63.27334 33.21259 1 0 1 + 1876 599 13 -0.834 44.11783 61.90196 34.52932 1 1 -1 + 1877 599 14 0.417 44.98641 61.86349 34.92975 1 1 -1 + 1878 599 14 0.417 44.21923 61.44892 33.69223 1 1 -1 + 1879 600 13 -0.834 47.64060 51.80694 44.33090 -1 -1 0 + 1880 600 14 0.417 48.33775 51.24158 44.66345 -1 -1 0 + 1881 600 14 0.417 47.96940 52.69619 44.46262 -1 -1 0 + 1882 601 13 -0.834 56.93644 64.17109 32.73010 0 -2 0 + 1883 601 14 0.417 57.35484 63.79547 31.95543 0 -2 0 + 1884 601 14 0.417 57.46604 63.85913 33.46389 0 -2 0 + 1885 602 13 -0.834 40.19928 60.95715 53.68963 1 0 -1 + 1886 602 14 0.417 41.08822 60.76154 53.39341 1 0 -1 + 1887 602 14 0.417 39.80336 61.43545 52.96114 1 0 -1 + 1888 603 13 -0.834 56.02366 41.52320 41.07986 0 1 0 + 1889 603 14 0.417 55.42766 41.48842 40.33165 0 1 0 + 1890 603 14 0.417 55.93467 42.41489 41.41631 0 1 0 + 1891 604 13 -0.834 52.35261 67.43639 29.83633 -1 0 0 + 1892 604 14 0.417 53.08703 67.77971 56.69878 -1 0 -1 + 1893 604 14 0.417 51.97673 68.20568 30.26426 -1 0 0 + 1894 605 13 -0.834 51.14102 49.90060 37.90539 1 0 1 + 1895 605 14 0.417 51.41236 49.08269 37.48865 1 0 1 + 1896 605 14 0.417 50.32915 50.13989 37.45830 1 0 1 + 1897 606 13 -0.834 48.40753 57.18555 40.43062 0 0 0 + 1898 606 14 0.417 47.74030 57.19949 39.74445 0 0 0 + 1899 606 14 0.417 48.68357 58.09814 40.51553 0 0 0 + 1900 607 13 -0.834 38.43185 54.52830 40.23522 1 -2 1 + 1901 607 14 0.417 37.76601 54.24704 40.86274 1 -2 1 + 1902 607 14 0.417 37.95756 54.62565 39.40951 1 -2 1 + 1903 608 13 -0.834 52.97765 52.38562 41.57118 0 0 0 + 1904 608 14 0.417 52.16773 52.00413 41.23247 0 0 0 + 1905 608 14 0.417 53.62059 51.67937 41.50742 0 0 0 + 1906 609 13 -0.834 52.82978 61.35779 35.40768 0 1 -2 + 1907 609 14 0.417 53.63682 61.71145 35.03372 0 1 -2 + 1908 609 14 0.417 53.10766 60.57217 35.87865 0 1 -2 + 1909 610 13 -0.834 55.37636 43.79165 30.66790 0 0 0 + 1910 610 14 0.417 55.82860 43.25432 31.31827 0 0 0 + 1911 610 14 0.417 55.97415 44.52040 30.50110 0 0 0 + 1912 611 13 -0.834 37.90570 54.55715 45.50029 1 -2 -1 + 1913 611 14 0.417 37.12871 54.09851 45.18066 1 -2 -1 + 1914 611 14 0.417 38.24821 53.99402 46.19441 1 -2 -1 + 1915 612 13 -0.834 60.01324 50.96528 45.16358 1 1 0 + 1916 612 14 0.417 59.85669 51.13906 44.23539 1 1 0 + 1917 612 14 0.417 59.48415 50.19096 45.35532 1 1 0 + 1918 613 13 -0.834 38.84394 52.32942 30.93040 2 1 0 + 1919 613 14 0.417 38.51878 51.61086 30.38802 2 1 0 + 1920 613 14 0.417 38.41000 53.10831 30.58218 2 1 0 + 1921 614 13 -0.834 38.99542 61.66171 44.80992 1 0 2 + 1922 614 14 0.417 38.78488 60.74588 44.99207 1 0 2 + 1923 614 14 0.417 39.68427 61.62223 44.14648 1 0 2 + 1924 615 13 -0.834 57.70791 41.72720 55.47643 0 1 -2 + 1925 615 14 0.417 57.25844 41.36846 56.24163 0 1 -2 + 1926 615 14 0.417 57.00496 41.93588 54.86116 0 1 -2 + 1927 616 13 -0.834 58.08999 54.20225 35.53764 0 -1 0 + 1928 616 14 0.417 58.28608 53.46338 36.11372 0 -1 0 + 1929 616 14 0.417 57.15628 54.11553 35.34551 0 -1 0 + 1930 617 13 -0.834 53.05217 52.71850 54.07873 0 0 -1 + 1931 617 14 0.417 52.72353 53.45661 54.59199 0 0 -1 + 1932 617 14 0.417 52.69237 51.94509 54.51306 0 0 -1 + 1933 618 13 -0.834 49.92059 65.13477 35.13462 0 1 1 + 1934 618 14 0.417 50.86780 65.25694 35.19866 0 1 1 + 1935 618 14 0.417 49.79534 64.18846 35.20565 0 1 1 + 1936 619 13 -0.834 41.32410 62.50943 46.98364 1 -1 0 + 1937 619 14 0.417 40.63048 62.20572 46.39807 1 -1 0 + 1938 619 14 0.417 41.96090 61.79482 46.99226 1 -1 0 + 1939 620 13 -0.834 53.94559 67.39201 49.11860 0 0 0 + 1940 620 14 0.417 54.46912 66.60137 48.98810 0 0 0 + 1941 620 14 0.417 54.03461 67.58755 50.05138 0 0 0 + 1942 621 13 -0.834 62.73724 52.28919 56.37358 -2 0 0 + 1943 621 14 0.417 61.94239 51.76764 56.26203 -2 0 0 + 1944 621 14 0.417 63.44036 51.64333 56.44233 -2 0 0 + 1945 622 13 -0.834 40.38118 67.16060 39.18721 2 1 1 + 1946 622 14 0.417 41.33280 67.21360 39.09858 2 1 1 + 1947 622 14 0.417 40.05780 67.12713 38.28691 2 1 1 + 1948 623 13 -0.834 62.86517 42.00727 34.57539 -1 0 -1 + 1949 623 14 0.417 63.37239 42.81882 34.59420 -1 0 -1 + 1950 623 14 0.417 63.40838 41.39624 34.07760 -1 0 -1 + 1951 624 13 -0.834 45.52270 49.32960 34.34348 1 -1 1 + 1952 624 14 0.417 45.92383 49.19413 33.48500 1 -1 1 + 1953 624 14 0.417 45.24004 50.24407 34.33468 1 -1 1 + 1954 625 13 -0.834 61.03811 44.77668 56.49913 1 1 0 + 1955 625 14 0.417 60.72892 43.87199 56.45248 1 1 0 + 1956 625 14 0.417 60.93423 45.11202 55.60864 1 1 0 + 1957 626 13 -0.834 37.82896 51.65548 39.75440 0 1 1 + 1958 626 14 0.417 37.05574 52.05171 39.35268 0 1 1 + 1959 626 14 0.417 38.46628 52.36806 39.80236 0 1 1 + 1960 627 13 -0.834 57.87448 65.36125 35.56679 -1 -1 0 + 1961 627 14 0.417 58.45940 64.84211 35.01489 -1 -1 0 + 1962 627 14 0.417 58.01580 66.26448 35.28319 -1 -1 0 + 1963 628 13 -0.834 41.02352 64.37669 36.41484 0 0 1 + 1964 628 14 0.417 40.85775 63.95254 37.25679 0 0 1 + 1965 628 14 0.417 41.32667 63.66948 35.84545 0 0 1 + 1966 629 13 -0.834 48.62923 67.86173 41.06030 1 0 1 + 1967 629 14 0.417 48.15680 41.13844 41.58283 1 1 1 + 1968 629 14 0.417 47.94185 67.35115 40.63246 1 0 1 + 1969 630 13 -0.834 57.99331 55.69311 47.88478 1 2 0 + 1970 630 14 0.417 57.70999 55.65425 48.79826 1 2 0 + 1971 630 14 0.417 57.37284 55.13407 47.41709 1 2 0 + 1972 631 13 -0.834 48.67013 62.47689 45.75332 -1 -1 0 + 1973 631 14 0.417 49.00300 63.35392 45.56291 -1 -1 0 + 1974 631 14 0.417 48.17776 62.23177 44.96992 -1 -1 0 + 1975 632 13 -0.834 63.70160 54.96100 33.30497 -1 0 0 + 1976 632 14 0.417 64.21034 55.41699 32.63452 -1 0 0 + 1977 632 14 0.417 36.84822 54.18301 33.51151 0 0 0 + 1978 633 13 -0.834 61.71933 50.02843 40.52579 1 0 -1 + 1979 633 14 0.417 61.89605 49.89083 39.59516 1 0 -1 + 1980 633 14 0.417 61.20325 50.83404 40.55551 1 0 -1 + 1981 634 13 -0.834 49.51254 64.46386 53.41539 0 -1 -1 + 1982 634 14 0.417 48.93704 63.81647 53.00803 0 -1 -1 + 1983 634 14 0.417 49.96102 63.98252 54.11066 0 -1 -1 + 1984 635 13 -0.834 49.54405 44.64373 31.53722 1 2 1 + 1985 635 14 0.417 49.17415 44.45447 32.39954 1 2 1 + 1986 635 14 0.417 48.78808 44.87386 30.99705 1 2 1 + 1987 636 13 -0.834 55.54392 65.92737 37.61921 0 -1 -1 + 1988 636 14 0.417 56.11408 65.75233 38.36791 0 -1 -1 + 1989 636 14 0.417 56.12096 66.32174 36.96519 0 -1 -1 + 1990 637 13 -0.834 55.12269 51.83986 35.86341 1 0 1 + 1991 637 14 0.417 55.56426 51.26412 35.23910 1 0 1 + 1992 637 14 0.417 54.23658 51.93728 35.51477 1 0 1 + 1993 638 13 -0.834 55.63681 62.23759 37.50835 1 -1 0 + 1994 638 14 0.417 55.30920 61.35525 37.33403 1 -1 0 + 1995 638 14 0.417 56.23965 62.41667 36.78672 1 -1 0 + 1996 639 13 -0.834 39.91450 42.04260 35.59226 0 0 0 + 1997 639 14 0.417 39.72903 41.27571 36.13422 0 0 0 + 1998 639 14 0.417 39.23583 42.02933 34.91737 0 0 0 + 1999 640 13 -0.834 48.26433 59.84813 40.16126 0 1 0 + 2000 640 14 0.417 48.74870 60.67004 40.23938 0 1 0 + 2001 640 14 0.417 47.50743 60.06639 39.61748 0 1 0 + 2002 641 13 -0.834 57.35097 49.28414 48.37687 1 1 1 + 2003 641 14 0.417 57.35715 48.51028 48.94022 1 1 1 + 2004 641 14 0.417 56.55074 49.75049 48.61854 1 1 1 + +Velocities + + 1 -0.000671 -0.002823 0.003832 + 2 -0.001597 0.002405 -0.003777 + 3 0.005494 0.003807 -0.002300 + 4 -0.000077 0.004524 -0.000287 + 5 0.003116 -0.007135 -0.034325 + 6 -0.006676 0.004889 -0.001939 + 7 0.003499 -0.004774 0.000159 + 8 -0.003460 0.000694 0.000994 + 9 -0.000065 -0.001353 -0.002848 + 10 -0.001260 -0.002649 0.000699 + 11 -0.002820 -0.002457 -0.005671 + 12 0.005156 -0.005914 0.000984 + 13 -0.002342 -0.001592 0.004306 + 14 0.004397 -0.000231 0.003308 + 15 -0.003258 -0.000006 0.001838 + 16 -0.001637 -0.004429 0.003154 + 17 0.007073 -0.000472 -0.003331 + 18 -0.003380 -0.001390 0.005013 + 19 -0.011019 -0.005332 -0.010451 + 20 -0.005433 0.000844 0.004938 + 21 0.002988 0.000244 -0.009941 + 22 -0.003695 0.006546 -0.007678 + 23 0.009473 0.023276 0.019457 + 24 -0.010016 -0.024193 0.018017 + 25 0.004015 0.008726 -0.000397 + 26 -0.001741 -0.001861 0.007862 + 27 -0.009771 -0.011577 -0.005703 + 28 0.003573 0.006265 -0.005932 + 29 0.004789 0.001987 -0.004620 + 30 0.008858 -0.001064 -0.001455 + 31 -0.001403 0.000613 0.002330 + 32 -0.005808 -0.001620 0.000816 + 33 -0.004160 0.001188 -0.019638 + 34 -0.006899 0.006285 0.013256 + 35 0.000717 -0.000432 -0.006883 + 36 0.002110 0.002628 -0.004683 + 37 0.000765 -0.007298 0.000289 + 38 -0.000128 -0.002893 0.004065 + 39 -0.000411 -0.021741 0.010968 + 40 0.002858 0.000302 0.000042 + 41 0.014233 -0.004599 -0.004060 + 42 -0.001473 -0.003572 -0.006228 + 43 0.009129 -0.002755 0.001456 + 44 0.003931 0.000151 0.003472 + 45 0.001621 0.005391 -0.006087 + 46 -0.004269 -0.001973 0.002735 + 47 -0.006898 -0.001187 -0.003394 + 48 -0.008556 -0.000163 -0.001387 + 49 -0.000633 -0.001754 0.011460 + 50 0.004854 -0.002902 -0.005057 + 51 0.000678 0.003272 0.006218 + 52 0.006502 0.006365 -0.000215 + 53 0.005708 0.012368 0.002955 + 54 0.008627 -0.007839 0.003177 + 55 0.004394 0.000132 0.002346 + 56 -0.004641 0.009426 -0.005548 + 57 -0.004801 -0.024766 0.002851 + 58 -0.002703 0.001589 0.007521 + 59 0.023718 -0.006559 0.003743 + 60 -0.010013 -0.042894 -0.029745 + 61 0.016140 -0.000721 -0.001747 + 62 -0.004871 0.002439 0.001990 + 63 0.009632 0.007144 0.001203 + 64 -0.001150 0.001648 -0.003018 + 65 0.006658 -0.002268 0.006874 + 66 -0.002617 0.003321 0.002230 + 67 -0.000803 0.002802 0.003258 + 68 -0.000984 -0.001579 -0.001813 + 69 0.001316 0.000607 0.003431 + 70 -0.010901 0.000580 -0.004134 + 71 0.005370 -0.003909 0.013130 + 72 -0.012282 0.007114 -0.015100 + 73 0.004641 -0.007554 0.004302 + 74 0.017455 0.013344 0.004896 + 75 0.006200 0.026885 0.020665 + 76 -0.010372 0.000470 -0.005601 + 77 -0.003368 -0.004484 0.010962 + 78 0.012416 -0.004728 0.000719 + 79 -0.005789 0.005198 -0.007541 + 80 0.005480 -0.004049 0.003455 + 81 -0.004935 0.005839 -0.006405 + 82 0.001157 -0.011200 0.018491 + 83 -0.029013 -0.016935 0.021131 + 84 -0.020335 0.020972 0.006071 + 85 0.003304 0.007374 -0.005056 + 86 0.029227 0.010776 -0.013183 + 87 0.001651 0.006570 -0.002085 + 88 0.001533 -0.009172 0.007562 + 89 0.018153 -0.022223 0.015786 + 90 -0.010012 -0.004911 0.002561 + 91 0.000435 0.003941 -0.005468 + 92 0.003301 0.001183 -0.006999 + 93 0.006788 0.011331 -0.004427 + 94 0.001392 0.005663 -0.002907 + 95 -0.001849 -0.002229 -0.003422 + 96 -0.000820 0.005872 0.004561 + 97 -0.003264 0.002461 -0.009257 + 98 0.000160 0.016954 -0.015355 + 99 -0.006597 0.011858 0.000426 + 100 0.001816 -0.005854 -0.001317 + 101 -0.001936 -0.006103 0.018111 + 102 0.024621 -0.022735 -0.000704 + 103 -0.001102 0.008384 -0.003086 + 104 0.012559 0.004375 -0.000361 + 105 0.008377 0.014814 -0.037755 + 106 -0.002851 -0.000200 -0.000722 + 107 0.010701 0.006888 -0.007831 + 108 -0.008490 0.011514 0.009399 + 109 -0.001181 0.001853 0.002176 + 110 -0.018912 -0.023868 0.006706 + 111 -0.000415 -0.001525 0.005751 + 112 -0.001172 0.001329 -0.001270 + 113 -0.006700 -0.006243 -0.006459 + 114 0.000018 0.001429 0.001376 + 115 0.001269 0.002521 0.005249 + 116 -0.002179 0.015666 0.006861 + 117 -0.007158 0.000981 0.007353 + 118 0.001047 0.000840 -0.004404 + 119 0.000974 -0.012527 0.005053 + 120 0.026729 0.008884 -0.003350 + 121 0.001181 -0.004040 -0.002037 + 122 0.006556 -0.007438 0.002656 + 123 0.005056 -0.015002 -0.003727 + 124 -0.002704 -0.003683 -0.001021 + 125 0.025048 0.007258 0.008873 + 126 0.019645 -0.020824 -0.002539 + 127 0.000061 0.001072 0.002612 + 128 0.005132 0.013203 0.018763 + 129 0.033473 0.004804 0.018651 + 130 -0.003459 -0.000309 -0.001348 + 131 -0.008088 0.023660 0.011047 + 132 0.010962 0.031994 0.008711 + 133 0.000181 -0.002894 -0.001677 + 134 0.024049 -0.000711 -0.009405 + 135 0.018702 0.003422 -0.019522 + 136 -0.000836 -0.003270 -0.005700 + 137 0.012246 0.016524 0.001525 + 138 0.006270 -0.011288 0.002224 + 139 -0.005169 0.005097 -0.000688 + 140 -0.006982 0.003044 -0.001383 + 141 0.012227 0.012767 0.004047 + 142 -0.001169 0.006070 -0.007989 + 143 0.005451 0.002569 -0.009841 + 144 0.001825 -0.002822 -0.005341 + 145 0.000911 0.004242 -0.002026 + 146 0.012072 -0.001187 -0.010498 + 147 0.007366 0.005541 0.012099 + 148 0.009820 0.000588 0.001087 + 149 0.013758 0.005140 0.015262 + 150 0.015580 0.003311 0.013079 + 151 0.002031 0.000411 0.003403 + 152 -0.001996 0.003750 0.007387 + 153 0.000790 0.000281 -0.000919 + 154 -0.004168 0.001886 -0.004993 + 155 -0.011049 0.015294 0.001052 + 156 -0.012308 0.010348 -0.003128 + 157 -0.001609 -0.004040 -0.002294 + 158 -0.005715 -0.015529 -0.005700 + 159 0.014489 0.026653 0.004024 + 160 0.004070 0.000866 0.003373 + 161 0.004691 0.005062 0.002569 + 162 0.007082 -0.019961 -0.026174 + 163 0.005501 0.000902 -0.001325 + 164 0.007503 0.001448 -0.001472 + 165 0.013628 0.003649 -0.005952 + 166 -0.000639 0.003162 -0.007271 + 167 0.007342 -0.011001 -0.016849 + 168 -0.018400 -0.004772 0.020839 + 169 0.000214 -0.000386 0.002706 + 170 -0.005862 0.010449 -0.003793 + 171 -0.013612 0.011870 -0.006417 + 172 -0.005485 0.006465 0.005343 + 173 0.001788 0.008428 0.005641 + 174 -0.018354 0.029579 0.010717 + 175 0.002627 -0.000754 0.000071 + 176 -0.018080 0.018546 0.001794 + 177 0.006754 -0.000962 -0.007786 + 178 0.002343 0.002166 0.004945 + 179 -0.001724 0.003155 0.010761 + 180 0.010728 0.003441 0.001544 + 181 -0.000849 -0.002856 0.001461 + 182 0.009366 -0.003672 -0.001935 + 183 0.016615 -0.001746 0.005238 + 184 -0.002730 -0.000316 -0.004583 + 185 -0.014755 -0.011310 0.003338 + 186 0.005862 0.008235 -0.003200 + 187 -0.003189 -0.006285 0.009536 + 188 -0.005114 -0.007060 0.006450 + 189 -0.000516 -0.008757 0.009854 + 190 -0.000859 0.005266 0.001864 + 191 0.003108 -0.007021 0.009190 + 192 -0.015949 -0.002050 0.007021 + 193 -0.007008 0.002608 -0.004583 + 194 -0.020431 -0.004004 0.008047 + 195 -0.000364 0.001236 -0.011425 + 196 0.002420 0.006931 0.002031 + 197 0.007178 0.006129 0.009924 + 198 -0.005981 0.016623 -0.013067 + 199 0.003142 -0.001394 -0.001846 + 200 0.011374 -0.002895 -0.000674 + 201 0.032698 -0.002552 0.007288 + 202 -0.005709 0.000071 0.005037 + 203 -0.013193 -0.012592 -0.008102 + 204 -0.008194 0.014723 0.003840 + 205 -0.003270 -0.006146 0.004301 + 206 0.004399 -0.010132 -0.001197 + 207 -0.030308 0.012803 0.003540 + 208 0.002110 0.002374 0.006075 + 209 -0.000845 -0.004182 -0.002795 + 210 0.002582 -0.004671 0.002224 + 211 -0.003768 0.002130 0.001339 + 212 0.022509 0.017397 0.002782 + 213 0.020609 0.006682 -0.014082 + 214 0.003956 0.004282 -0.005023 + 215 0.007499 0.004128 0.002237 + 216 0.034882 -0.005096 0.008948 + 217 -0.002552 -0.000287 -0.001907 + 218 0.025445 0.005560 -0.016526 + 219 0.002741 0.000814 -0.004654 + 220 0.002162 -0.001203 0.000936 + 221 0.004071 0.004725 0.001938 + 222 0.002393 -0.013063 -0.003950 + 223 -0.001609 -0.003218 -0.004310 + 224 -0.012550 0.009033 -0.007868 + 225 0.014344 0.000886 -0.013005 + 226 0.005863 0.010335 -0.003424 + 227 0.011104 -0.005602 -0.012415 + 228 0.001222 0.002408 0.001546 + 229 -0.002038 0.001858 0.002991 + 230 -0.017517 -0.020932 0.016099 + 231 0.005257 0.011588 -0.018236 + 232 -0.002660 -0.006193 0.003186 + 233 -0.021995 0.012375 0.004372 + 234 -0.013906 0.028004 -0.004997 + 235 0.002339 -0.001255 -0.003548 + 236 0.001689 0.005243 -0.006337 + 237 0.000498 -0.007782 -0.015260 + 238 0.001142 0.002234 0.003408 + 239 0.007521 0.004622 -0.003272 + 240 -0.001154 0.006952 0.006739 + 241 -0.000938 -0.004609 0.002499 + 242 0.004903 0.001117 0.013021 + 243 0.008126 -0.013873 -0.001075 + 244 -0.004097 0.002491 -0.002459 + 245 0.002093 -0.002989 0.010881 + 246 0.008552 0.010436 0.008330 + 247 -0.000211 0.002295 0.001935 + 248 0.004346 0.003486 0.008405 + 249 -0.006182 0.002873 -0.007955 + 250 0.002466 0.001439 -0.002302 + 251 -0.003246 0.007233 0.009469 + 252 -0.002606 0.002646 0.002563 + 253 0.000833 -0.001794 -0.003483 + 254 -0.001066 -0.001277 -0.012569 + 255 -0.003354 -0.002604 -0.016130 + 256 0.007379 0.006324 -0.003535 + 257 0.025411 0.006788 -0.010928 + 258 0.011648 0.000201 0.004051 + 259 -0.000385 -0.000823 -0.000593 + 260 -0.001070 -0.019569 0.006235 + 261 0.011350 0.009136 0.002805 + 262 -0.001688 0.002178 0.004704 + 263 -0.011748 0.007674 0.002198 + 264 -0.005358 0.003728 -0.002879 + 265 -0.004209 0.000686 -0.004990 + 266 0.000586 0.011928 0.008080 + 267 0.004512 -0.002493 -0.000297 + 268 -0.000130 0.007801 -0.005732 + 269 -0.006259 -0.000991 -0.001515 + 270 0.015560 -0.011483 0.001826 + 271 -0.003544 0.003178 0.000326 + 272 0.006639 0.005731 0.008812 + 273 -0.009361 -0.001371 -0.002830 + 274 -0.000226 0.001739 0.001787 + 275 -0.001846 -0.005637 -0.002071 + 276 0.009461 0.005629 -0.001253 + 277 0.003294 -0.005377 -0.000680 + 278 0.027740 0.013288 0.002669 + 279 0.003403 0.012169 -0.019874 + 280 -0.001383 0.000386 -0.006636 + 281 -0.005910 0.003429 -0.006992 + 282 0.002649 -0.004178 -0.006969 + 283 0.004768 -0.001680 0.000104 + 284 -0.012916 0.017467 -0.012201 + 285 0.010278 -0.007970 0.003734 + 286 0.000005 0.000300 0.006224 + 287 0.003150 -0.001535 0.007443 + 288 -0.000547 -0.003737 0.010794 + 289 0.003054 0.005656 0.000426 + 290 0.006673 0.002252 0.007300 + 291 0.004185 0.001696 0.005292 + 292 -0.001277 -0.005156 -0.001765 + 293 0.005969 -0.004326 -0.002540 + 294 -0.026915 -0.005145 0.019233 + 295 -0.003352 -0.000356 -0.001610 + 296 -0.023375 -0.003718 -0.017075 + 297 0.006387 -0.025086 0.000315 + 298 -0.005064 0.001395 0.004436 + 299 -0.004111 0.000853 -0.032909 + 300 0.000933 0.005949 0.017391 + 301 0.000607 0.002490 -0.002786 + 302 0.002638 0.008857 0.008537 + 303 0.001294 0.011357 -0.003275 + 304 -0.001798 -0.003127 -0.000795 + 305 -0.003320 0.000996 0.004122 + 306 -0.008728 -0.000634 0.002033 + 307 -0.003535 -0.002662 -0.002777 + 308 -0.005954 -0.002781 -0.004403 + 309 -0.002147 -0.001477 -0.001223 + 310 -0.002595 -0.001397 0.002359 + 311 -0.003605 -0.000224 0.015269 + 312 -0.014002 -0.002828 0.000027 + 313 0.001583 -0.005357 0.002380 + 314 -0.002955 -0.014106 -0.011581 + 315 0.000151 -0.006411 0.002865 + 316 0.004278 -0.004088 0.000114 + 317 -0.019291 0.001584 0.015204 + 318 -0.013439 -0.000674 0.010987 + 319 0.000024 0.000995 0.005326 + 320 -0.009041 0.020464 0.014139 + 321 0.004208 -0.003482 0.004723 + 322 0.001489 -0.003292 0.000500 + 323 0.000364 0.006211 0.006844 + 324 0.007467 0.021162 -0.001636 + 325 0.009527 -0.000863 -0.005483 + 326 -0.009936 0.006496 -0.014136 + 327 -0.007595 -0.006469 -0.002090 + 328 -0.002856 -0.010388 -0.000678 + 329 -0.026693 -0.007624 -0.001572 + 330 0.029582 -0.010319 0.009090 + 331 -0.009062 0.000913 0.000368 + 332 -0.019327 0.020501 -0.000560 + 333 -0.018764 -0.008632 0.002570 + 334 0.004502 0.001200 -0.008087 + 335 0.008714 -0.005091 -0.008624 + 336 0.004610 0.003623 -0.007048 + 337 0.002461 -0.000759 0.003913 + 338 0.021591 -0.013925 0.009416 + 339 -0.017190 0.002325 0.006138 + 340 0.003361 0.004027 0.006986 + 341 0.006850 0.012752 0.018496 + 342 0.019589 0.009932 -0.004987 + 343 0.000463 0.005037 -0.000723 + 344 0.008333 0.006382 -0.005532 + 345 0.004288 0.006565 0.007800 + 346 -0.001505 -0.001295 0.001190 + 347 -0.015747 0.011253 0.025149 + 348 0.014871 -0.012646 -0.016815 + 349 -0.000186 0.002115 -0.002539 + 350 0.001936 0.000958 -0.003366 + 351 -0.014299 0.007078 -0.001653 + 352 -0.000876 -0.001637 -0.002032 + 353 -0.001168 0.005556 -0.012749 + 354 -0.003162 -0.016318 -0.009468 + 355 -0.000674 -0.001888 -0.003265 + 356 0.017652 -0.009515 0.007889 + 357 0.015313 -0.006079 0.010454 + 358 -0.000964 -0.004354 0.000067 + 359 0.004137 -0.002540 0.004500 + 360 -0.011376 -0.000921 -0.006123 + 361 0.002023 0.003210 -0.000511 + 362 0.012560 -0.011698 0.016109 + 363 -0.013295 -0.009379 -0.009014 + 364 0.003315 0.003249 0.007620 + 365 -0.010739 0.000915 -0.008118 + 366 -0.015293 0.007564 -0.004343 + 367 0.000192 0.002269 -0.000485 + 368 0.002520 -0.012494 -0.004632 + 369 0.010222 0.003093 -0.002247 + 370 0.003953 0.000628 0.004147 + 371 0.001165 -0.005271 0.007550 + 372 -0.013412 -0.019696 0.026961 + 373 0.001883 0.002252 -0.003560 + 374 0.005482 -0.004609 0.002380 + 375 -0.008048 0.004473 -0.008866 + 376 -0.002663 0.001073 0.001951 + 377 0.010178 0.018964 0.000820 + 378 0.007583 -0.018984 0.016464 + 379 0.001136 0.007646 0.002719 + 380 0.006251 0.008125 0.009187 + 381 0.001284 0.011634 -0.004097 + 382 -0.000767 0.000265 -0.000818 + 383 -0.000089 0.001579 -0.002300 + 384 -0.004565 -0.011251 0.008186 + 385 0.004778 -0.000871 0.002405 + 386 0.006618 -0.002801 0.006849 + 387 0.029884 -0.012377 0.019662 + 388 -0.002799 -0.005785 0.000693 + 389 -0.006988 0.014716 -0.008738 + 390 -0.003130 0.004832 0.002982 + 391 0.000036 -0.002467 0.000498 + 392 -0.001382 -0.006847 0.003863 + 393 -0.003623 0.001391 0.001664 + 394 0.004431 0.000182 0.002043 + 395 0.007177 -0.001675 0.008884 + 396 0.000324 0.003728 0.003379 + 397 0.004107 -0.000618 0.000098 + 398 0.019272 -0.008832 -0.013192 + 399 -0.025041 0.027976 -0.020594 + 400 0.002982 -0.002889 -0.005826 + 401 0.010564 -0.003899 -0.002078 + 402 0.005218 -0.003308 -0.010357 + 403 0.002304 -0.003833 -0.008812 + 404 -0.013421 -0.017603 -0.023172 + 405 -0.003134 -0.000582 0.001712 + 406 -0.003398 -0.002176 0.001635 + 407 -0.015813 0.008046 0.010515 + 408 0.003940 -0.004144 -0.002666 + 409 0.008428 -0.002203 -0.004077 + 410 -0.004859 0.004207 -0.016803 + 411 -0.022714 0.005614 0.004119 + 412 -0.000677 -0.000486 0.001019 + 413 0.004137 0.001524 0.004810 + 414 -0.011495 -0.003293 -0.002498 + 415 -0.004277 -0.004620 -0.002973 + 416 0.005727 -0.002611 0.021922 + 417 0.009759 0.016284 -0.017136 + 418 0.001140 -0.003169 0.001021 + 419 0.002072 0.019101 -0.019824 + 420 0.029356 -0.011686 0.004675 + 421 0.001175 0.002540 0.001846 + 422 0.009479 -0.017538 0.002696 + 423 0.008327 0.028039 -0.001246 + 424 0.002971 -0.004730 0.000069 + 425 0.010168 -0.005904 -0.016535 + 426 0.009223 0.011295 0.006248 + 427 -0.003323 0.000861 0.005020 + 428 -0.005244 0.001685 -0.001864 + 429 0.000994 0.014826 0.000976 + 430 -0.002795 0.003958 -0.004848 + 431 0.010698 -0.011688 -0.000537 + 432 0.008158 0.021591 -0.003259 + 433 0.000363 0.002223 0.004053 + 434 -0.002225 0.004315 -0.010042 + 435 -0.000151 -0.000572 0.000675 + 436 0.006996 -0.000559 0.003307 + 437 -0.011410 -0.004708 0.006782 + 438 -0.015909 0.022113 0.004877 + 439 -0.002401 -0.002279 0.002655 + 440 -0.002478 0.000164 0.005849 + 441 -0.003545 0.002314 0.007358 + 442 0.002189 0.006935 -0.001251 + 443 -0.007190 0.031224 0.006804 + 444 0.004661 -0.003296 0.013412 + 445 0.003709 0.001514 -0.003921 + 446 0.015678 0.007604 0.000133 + 447 -0.004648 -0.004474 -0.027064 + 448 0.001807 -0.004146 0.004203 + 449 0.029598 0.003434 0.012408 + 450 -0.004603 -0.006201 0.002287 + 451 -0.003031 -0.004136 -0.006564 + 452 0.009003 0.019264 0.004529 + 453 -0.000188 0.010449 0.001077 + 454 0.003891 0.002752 0.005629 + 455 0.001092 0.012776 0.008682 + 456 -0.002762 0.015371 -0.005857 + 457 0.002697 -0.003406 -0.002865 + 458 0.007823 -0.013511 0.002023 + 459 -0.030492 -0.008107 -0.020624 + 460 0.000483 0.001162 0.002651 + 461 0.002571 -0.007508 -0.009384 + 462 -0.010774 -0.027329 0.003619 + 463 0.005791 0.000086 0.004298 + 464 0.008820 0.016257 -0.002226 + 465 0.000317 -0.014932 -0.013621 + 466 0.003540 0.001551 -0.001349 + 467 0.008241 0.020014 0.019807 + 468 -0.004258 -0.010227 -0.029599 + 469 0.007640 0.001287 -0.003128 + 470 0.004600 -0.001555 -0.010230 + 471 0.007870 0.002461 0.000094 + 472 0.001001 0.005160 -0.001529 + 473 0.006073 0.015127 0.022819 + 474 0.006356 -0.012345 -0.003131 + 475 -0.005549 -0.000151 0.001312 + 476 -0.015747 0.009610 0.004075 + 477 0.009345 0.004620 -0.013632 + 478 -0.005694 -0.004777 0.002781 + 479 -0.015785 0.018249 0.008919 + 480 0.007264 0.001342 -0.012954 + 481 -0.002601 -0.003124 -0.001775 + 482 -0.010924 -0.002942 0.001676 + 483 0.020644 0.001519 0.001050 + 484 -0.003829 -0.001681 0.001973 + 485 -0.009248 -0.008096 0.002166 + 486 -0.004627 -0.003317 0.000426 + 487 0.004750 0.008629 -0.001691 + 488 -0.009177 0.001481 0.019567 + 489 -0.000748 -0.004703 -0.011184 + 490 -0.000930 -0.004032 -0.001796 + 491 -0.007051 -0.001375 -0.004647 + 492 -0.000505 0.005436 -0.004029 + 493 -0.000767 -0.000313 -0.004426 + 494 0.007019 0.022441 0.008035 + 495 0.002030 -0.018016 0.012244 + 496 -0.000430 -0.004092 0.001186 + 497 0.012447 -0.008156 0.016405 + 498 -0.008008 0.011043 -0.000527 + 499 0.001752 0.001451 -0.008850 + 500 -0.001696 0.002950 -0.000035 + 501 0.006054 -0.001180 -0.028952 + 502 0.001434 -0.008124 -0.001958 + 503 0.001762 -0.007034 -0.009244 + 504 -0.008796 -0.004759 -0.009928 + 505 0.000249 0.001170 0.006380 + 506 -0.005081 0.014461 -0.003259 + 507 -0.002522 0.001324 0.007841 + 508 0.003441 0.001538 0.006742 + 509 0.007735 -0.006583 0.003492 + 510 0.009681 0.006088 0.008608 + 511 -0.006695 -0.001970 0.000807 + 512 0.004268 0.004052 0.001263 + 513 -0.004129 -0.012886 -0.007489 + 514 -0.002878 0.001158 0.006535 + 515 -0.007680 -0.001896 0.002953 + 516 -0.000917 -0.006257 -0.002762 + 517 -0.001401 -0.003523 -0.005778 + 518 -0.001854 0.007834 0.015061 + 519 -0.010095 0.007049 -0.021128 + 520 -0.000766 -0.000153 0.007009 + 521 0.009064 -0.003223 0.017921 + 522 0.000864 -0.000043 0.007876 + 523 -0.001025 0.001319 -0.006573 + 524 -0.006395 0.000755 -0.002686 + 525 -0.032670 0.007943 0.004175 + 526 0.002953 0.006520 0.004065 + 527 0.009139 -0.008077 -0.010889 + 528 -0.002820 0.012454 -0.005504 + 529 -0.008727 0.003418 0.002451 + 530 -0.007112 -0.005703 0.023446 + 531 -0.011285 0.014165 -0.019563 + 532 -0.002562 0.003192 -0.002295 + 533 -0.003618 0.007211 0.002298 + 534 0.010325 0.001834 0.002853 + 535 0.002563 0.000345 -0.002878 + 536 0.002396 0.022293 -0.006961 + 537 0.001693 -0.002677 0.010576 + 538 -0.001561 0.000734 0.001793 + 539 -0.008542 0.015338 0.007321 + 540 -0.015880 0.015140 0.014642 + 541 0.001092 0.000090 0.000997 + 542 -0.004522 -0.004004 0.003687 + 543 0.003258 -0.006156 0.000500 + 544 -0.001608 0.002026 0.003790 + 545 -0.010430 -0.004583 0.015482 + 546 0.002628 0.011416 0.004923 + 547 -0.002068 0.005845 0.001850 + 548 0.001194 0.007931 0.007672 + 549 -0.020261 -0.007195 -0.008896 + 550 0.005399 0.001999 0.000211 + 551 0.004420 0.012603 0.006214 + 552 0.007790 0.005534 0.000006 + 553 -0.004249 0.001186 -0.000260 + 554 0.006385 -0.014925 0.000020 + 555 0.009902 0.016988 -0.004080 + 556 0.006637 -0.003469 0.000450 + 557 -0.002010 0.011423 -0.004361 + 558 -0.009074 0.013716 -0.002539 + 559 0.003243 -0.003710 -0.002565 + 560 -0.000480 -0.009433 0.000267 + 561 0.002981 -0.005587 -0.010088 + 562 0.002665 0.008169 0.002667 + 563 -0.001817 0.009035 0.022525 + 564 0.005689 0.010678 0.000603 + 565 0.003217 0.002617 0.001072 + 566 0.025108 0.001061 -0.027288 + 567 -0.003091 0.028727 0.028529 + 568 0.003991 -0.002246 0.002528 + 569 0.011195 -0.007917 0.010511 + 570 -0.006686 -0.007088 -0.000640 + 571 0.005302 0.003751 0.001484 + 572 0.001250 0.007658 -0.006666 + 573 0.018145 -0.005375 0.000139 + 574 -0.003857 0.003583 0.000238 + 575 0.006752 0.001063 0.004538 + 576 -0.006479 0.014326 -0.017669 + 577 0.001793 0.003661 0.002509 + 578 0.010186 -0.003147 0.008687 + 579 -0.001160 -0.005645 -0.003812 + 580 -0.002296 0.006997 0.000837 + 581 -0.031138 0.017223 0.000984 + 582 0.002587 -0.007480 0.015277 + 583 0.000288 -0.000668 0.001548 + 584 0.016041 -0.004051 0.004629 + 585 -0.025116 0.003224 0.009356 + 586 -0.000853 0.003188 0.004014 + 587 -0.001700 -0.004491 0.006716 + 588 -0.008947 -0.009004 -0.023328 + 589 0.005432 -0.003893 -0.001000 + 590 -0.019524 0.021049 -0.035976 + 591 0.009404 0.004475 -0.004525 + 592 -0.006508 -0.002709 0.000481 + 593 0.010852 -0.015643 0.005754 + 594 0.006526 0.026156 0.009018 + 595 -0.004611 -0.001841 0.002205 + 596 -0.013411 -0.011893 -0.011510 + 597 -0.002150 -0.000804 -0.006730 + 598 -0.002593 -0.000356 0.003104 + 599 0.009483 0.002951 -0.001362 + 600 -0.015523 -0.003843 0.010828 + 601 -0.001229 0.003953 0.000471 + 602 -0.017788 0.002114 0.033354 + 603 0.015187 -0.017947 -0.007994 + 604 -0.001335 -0.000196 0.007281 + 605 0.015188 0.007448 0.005030 + 606 -0.001538 0.002386 -0.009662 + 607 -0.001172 0.004261 0.002894 + 608 -0.002229 0.015661 0.009134 + 609 0.017428 0.004976 0.006974 + 610 -0.001490 0.003604 0.004586 + 611 -0.017720 0.006222 -0.023144 + 612 0.010016 -0.015847 -0.004678 + 613 -0.002648 0.000934 0.000698 + 614 -0.011832 0.016782 0.007626 + 615 -0.005427 0.001385 0.015386 + 616 0.003669 -0.001949 0.003946 + 617 0.005164 0.000243 0.009975 + 618 -0.000161 0.003111 0.001353 + 619 0.002976 -0.004733 0.001868 + 620 -0.002832 -0.014197 -0.023534 + 621 -0.003347 -0.011551 0.000693 + 622 0.004912 0.001701 -0.000793 + 623 0.013809 0.007164 -0.016905 + 624 0.024958 -0.010962 -0.008428 + 625 0.007422 -0.002948 -0.001308 + 626 -0.016590 -0.032000 -0.001025 + 627 0.011367 0.004098 0.010259 + 628 -0.002045 -0.000742 0.000577 + 629 -0.030845 0.001448 0.030396 + 630 0.001781 -0.017639 0.014980 + 631 0.002233 -0.004427 -0.002429 + 632 0.018586 -0.001402 0.006993 + 633 -0.012356 0.003736 0.007796 + 634 -0.004338 0.007766 0.000310 + 635 0.001990 0.000209 0.007107 + 636 -0.006343 0.005190 -0.018263 + 637 -0.005455 0.000492 -0.002847 + 638 0.000522 0.006495 0.003755 + 639 -0.001841 -0.009429 -0.001507 + 640 -0.002314 -0.002516 -0.005613 + 641 0.018652 0.002237 -0.015930 + 642 -0.002326 -0.000776 -0.003132 + 643 -0.005512 -0.000623 -0.000619 + 644 -0.001015 0.005882 0.003225 + 645 0.000586 0.023218 -0.004529 + 646 -0.001138 0.000800 0.002687 + 647 0.003627 0.013371 -0.016172 + 648 0.018968 0.017228 -0.000038 + 649 -0.002086 -0.000112 -0.007393 + 650 0.016103 0.035588 0.008775 + 651 -0.038516 0.012158 -0.009536 + 652 0.002958 0.004862 -0.007554 + 653 0.024333 0.013052 -0.023133 + 654 0.002379 -0.000049 -0.006601 + 655 0.003804 -0.003076 -0.001112 + 656 -0.004763 0.002283 -0.025897 + 657 -0.036538 -0.010672 -0.010599 + 658 -0.000713 0.003957 0.002151 + 659 -0.016531 0.001472 0.004862 + 660 -0.009287 0.028134 0.010480 + 661 0.004192 -0.003835 0.000568 + 662 0.011523 0.002433 0.036479 + 663 -0.009197 -0.041577 0.000393 + 664 0.000280 -0.002373 -0.004460 + 665 0.002206 -0.003211 0.000957 + 666 0.006211 0.013469 -0.005353 + 667 -0.000522 0.001664 -0.004748 + 668 0.004459 -0.024042 -0.023029 + 669 0.011377 0.013403 0.030836 + 670 0.003382 -0.002813 0.000451 + 671 0.000766 0.000074 -0.006820 + 672 0.013252 -0.015598 0.024274 + 673 -0.003243 0.006406 -0.002570 + 674 0.019962 -0.008888 -0.019769 + 675 -0.027628 -0.005508 -0.000297 + 676 -0.007770 -0.003882 0.002155 + 677 -0.001777 0.012358 0.000036 + 678 -0.024978 0.005564 -0.015024 + 679 0.000188 0.001017 0.004117 + 680 -0.006440 -0.003105 0.019733 + 681 -0.016780 0.005575 -0.004078 + 682 0.000151 0.001697 -0.001387 + 683 -0.002925 0.000955 -0.004378 + 684 0.000826 0.008069 0.003052 + 685 -0.003543 -0.000321 -0.000587 + 686 -0.012205 0.000432 -0.005990 + 687 0.004010 0.009678 -0.003793 + 688 0.001940 -0.000340 0.003900 + 689 0.005837 0.014815 -0.005621 + 690 -0.008710 -0.017653 0.020395 + 691 -0.001931 -0.003975 -0.002577 + 692 -0.003368 -0.014386 -0.006878 + 693 -0.013782 -0.002984 0.003522 + 694 0.004968 -0.000283 -0.003322 + 695 0.019160 0.006665 -0.007077 + 696 0.022604 -0.000847 -0.016983 + 697 0.002571 0.000550 -0.007379 + 698 -0.001443 -0.002487 -0.007727 + 699 -0.011487 -0.013883 0.019460 + 700 0.001096 -0.004750 0.003965 + 701 -0.016603 -0.010473 0.014272 + 702 0.023559 -0.001392 -0.008500 + 703 -0.002022 -0.005262 -0.004485 + 704 0.002332 -0.014942 -0.004917 + 705 -0.009402 0.006267 -0.002020 + 706 -0.000288 0.003264 -0.003564 + 707 0.004565 0.033122 -0.006655 + 708 -0.018922 -0.009521 0.000208 + 709 -0.003485 0.003285 -0.000556 + 710 0.004587 -0.002798 -0.000984 + 711 -0.006054 0.007231 -0.001425 + 712 0.004718 0.000201 -0.003948 + 713 -0.014114 0.009800 -0.004955 + 714 -0.008099 -0.004168 0.008689 + 715 0.000410 -0.000654 0.009605 + 716 0.008711 0.018707 0.002740 + 717 0.003459 -0.008185 0.010239 + 718 0.003479 0.000757 0.004467 + 719 0.000433 -0.000495 0.007710 + 720 0.012945 0.003286 -0.002052 + 721 -0.010010 -0.003567 0.006956 + 722 0.005307 -0.001615 -0.002198 + 723 -0.012515 0.011984 0.016669 + 724 0.001378 -0.002186 -0.001614 + 725 0.012587 -0.019891 0.012237 + 726 0.012601 0.007024 0.014776 + 727 -0.002983 -0.001722 -0.004228 + 728 0.015268 -0.011359 -0.002815 + 729 -0.003967 0.028638 0.000653 + 730 -0.000313 -0.000495 0.001546 + 731 -0.030938 -0.009463 -0.008649 + 732 -0.033474 -0.019299 0.015331 + 733 0.000845 -0.003919 -0.003202 + 734 -0.027178 0.011071 -0.026350 + 735 -0.007741 0.001470 -0.016184 + 736 -0.001239 0.001989 -0.002789 + 737 0.011285 0.001382 -0.006222 + 738 0.022813 -0.006205 -0.006536 + 739 0.003987 -0.004190 -0.005010 + 740 -0.007915 0.002670 -0.013878 + 741 0.004194 0.006086 -0.010350 + 742 0.006539 -0.005074 0.002196 + 743 0.015306 0.008181 0.005081 + 744 0.007865 0.003022 -0.004716 + 745 -0.001784 -0.010062 0.004309 + 746 -0.002378 -0.011275 0.006933 + 747 -0.008336 -0.001053 0.004620 + 748 -0.002979 0.004768 -0.002497 + 749 -0.000959 0.004004 -0.002600 + 750 -0.019512 -0.002978 0.005044 + 751 -0.004903 -0.000550 0.000659 + 752 -0.005086 0.005639 -0.022167 + 753 -0.008131 0.001631 -0.018889 + 754 -0.001761 -0.001628 0.000503 + 755 -0.003957 -0.007199 -0.006609 + 756 0.003155 -0.001306 0.005143 + 757 0.000937 0.008247 -0.008723 + 758 0.028994 0.004889 0.007225 + 759 -0.000469 -0.025903 0.001925 + 760 -0.001834 -0.000370 -0.001605 + 761 0.007234 -0.001225 -0.019036 + 762 -0.003442 -0.001966 0.000209 + 763 0.000445 0.007510 0.001158 + 764 -0.008348 0.004439 -0.007776 + 765 -0.012793 0.011539 0.019680 + 766 0.000065 -0.000962 -0.004032 + 767 -0.002013 -0.005477 0.003901 + 768 0.003529 0.021570 0.007224 + 769 -0.002661 0.002604 -0.003268 + 770 0.005668 -0.003962 -0.004196 + 771 -0.003633 0.008263 -0.012842 + 772 0.001811 0.001915 0.002764 + 773 0.007995 -0.017893 0.012738 + 774 -0.018466 -0.002519 -0.001997 + 775 -0.002231 0.000080 0.000338 + 776 -0.020092 -0.012422 0.010443 + 777 0.017610 0.006562 -0.019411 + 778 -0.001733 0.005494 0.004582 + 779 0.013495 0.017522 0.004058 + 780 0.014733 0.026971 -0.010419 + 781 0.001950 0.000577 -0.000870 + 782 -0.025830 0.001269 0.005271 + 783 0.007534 -0.015453 0.006553 + 784 0.004959 0.000931 -0.005022 + 785 -0.008754 0.005835 0.049441 + 786 0.010447 0.012462 0.001546 + 787 -0.001107 0.002522 0.000433 + 788 0.009871 0.011686 0.008446 + 789 -0.006988 0.002247 0.021211 + 790 0.004245 0.001822 -0.000253 + 791 0.000153 -0.002603 0.008675 + 792 0.006252 0.003177 -0.013109 + 793 -0.002534 0.003863 0.000617 + 794 -0.000057 0.004391 -0.016346 + 795 0.005974 -0.000584 -0.004834 + 796 0.001827 -0.002339 -0.002010 + 797 -0.023150 0.007693 0.012507 + 798 0.012203 0.000464 -0.020004 + 799 -0.000293 -0.001883 -0.002470 + 800 -0.004248 0.006084 0.002613 + 801 -0.013517 0.015693 0.003574 + 802 -0.009450 0.005229 -0.003400 + 803 -0.015058 -0.007700 0.001796 + 804 -0.000196 -0.003546 0.002537 + 805 0.008758 -0.003257 0.005431 + 806 0.012998 -0.011952 -0.017276 + 807 0.008558 -0.002765 0.006723 + 808 -0.001470 -0.000539 0.002965 + 809 0.024028 -0.019423 -0.012788 + 810 0.003892 0.003966 -0.001573 + 811 0.000254 0.001510 0.000089 + 812 0.024395 0.007424 -0.013783 + 813 0.006830 0.017138 0.017010 + 814 -0.001535 -0.003749 -0.001708 + 815 0.013748 -0.018314 -0.006646 + 816 0.003900 0.002047 0.006451 + 817 0.006585 0.003832 -0.000629 + 818 0.021540 0.003252 0.001280 + 819 0.007897 0.007247 -0.003727 + 820 -0.002115 -0.002434 -0.005025 + 821 -0.016735 0.003360 -0.019137 + 822 0.003237 -0.017804 -0.004111 + 823 -0.003907 0.002878 -0.003988 + 824 -0.005419 -0.002010 -0.004476 + 825 -0.006449 0.003104 -0.002766 + 826 -0.013638 -0.002258 -0.002448 + 827 -0.007838 0.000023 -0.005866 + 828 -0.006633 0.001312 -0.008943 + 829 0.001696 0.003761 -0.002125 + 830 -0.001113 -0.010288 -0.008692 + 831 0.010380 0.008838 -0.015548 + 832 -0.003164 0.004544 -0.002070 + 833 -0.001495 -0.013094 -0.000890 + 834 0.011945 -0.015741 -0.003378 + 835 -0.008802 -0.001939 -0.005442 + 836 -0.002949 -0.007279 -0.004665 + 837 0.008414 -0.021459 -0.000948 + 838 0.001330 0.000622 0.000916 + 839 -0.001965 0.001331 0.006138 + 840 0.003081 -0.004825 0.007272 + 841 0.001557 -0.005770 -0.001563 + 842 0.014285 0.020628 -0.029634 + 843 -0.006815 0.003616 0.008747 + 844 0.001116 -0.003881 -0.003556 + 845 0.008316 -0.005783 -0.005256 + 846 -0.011615 0.015346 0.026431 + 847 0.004309 0.003546 -0.004311 + 848 0.007868 -0.013572 0.000073 + 849 -0.011699 0.005875 0.003604 + 850 0.000505 -0.004069 -0.002113 + 851 0.001211 -0.005770 -0.003436 + 852 -0.004651 0.001028 0.007154 + 853 -0.003913 -0.006795 -0.004733 + 854 -0.004339 -0.014527 -0.023555 + 855 -0.006756 -0.006056 -0.008714 + 856 0.007493 0.001588 -0.006408 + 857 0.020526 0.022065 -0.006921 + 858 0.010862 0.004031 -0.001655 + 859 0.003459 -0.001125 -0.001494 + 860 -0.000710 0.004855 0.022662 + 861 -0.000022 0.009082 0.012428 + 862 -0.000591 0.002648 0.002517 + 863 0.017910 0.003993 0.005847 + 864 -0.004999 0.014284 -0.016199 + 865 -0.001700 -0.002300 0.001206 + 866 -0.016994 -0.008747 -0.012103 + 867 -0.008118 -0.008616 0.003715 + 868 -0.002056 -0.003732 -0.006667 + 869 -0.002586 -0.005666 -0.002032 + 870 -0.002179 -0.001361 -0.001378 + 871 0.001952 0.000747 -0.004175 + 872 -0.000006 -0.004573 0.003592 + 873 -0.004377 -0.012174 0.000091 + 874 -0.006945 -0.004708 0.004295 + 875 -0.011724 -0.010397 0.002368 + 876 0.006805 0.012734 0.019238 + 877 0.004959 0.005871 -0.001277 + 878 -0.012228 -0.000867 -0.006672 + 879 0.014516 0.032640 0.025985 + 880 0.000767 -0.000179 0.004816 + 881 0.006242 0.002132 0.007465 + 882 0.006812 0.003103 0.007707 + 883 0.005120 -0.003059 -0.001062 + 884 -0.008255 -0.016076 -0.002362 + 885 -0.001789 -0.014152 -0.001194 + 886 -0.009000 0.001340 0.001690 + 887 -0.020559 -0.017599 0.000329 + 888 -0.003544 -0.006539 0.004087 + 889 -0.000933 0.000538 -0.001999 + 890 0.032797 0.013397 0.000525 + 891 -0.012354 -0.008526 -0.038077 + 892 0.002953 -0.002317 -0.004454 + 893 -0.029479 -0.014864 0.005868 + 894 0.019223 0.000709 -0.013773 + 895 0.002346 -0.003694 -0.004486 + 896 -0.005275 -0.001221 -0.010755 + 897 0.010883 0.001918 -0.002099 + 898 -0.000263 -0.000830 0.005518 + 899 0.000399 -0.005578 0.011643 + 900 -0.007207 -0.006080 -0.006632 + 901 -0.000868 0.002637 -0.000416 + 902 -0.003601 0.001456 0.001019 + 903 0.003465 0.009000 0.002627 + 904 -0.005492 0.001153 0.005034 + 905 0.008501 0.009963 0.005133 + 906 0.002740 0.005510 0.005387 + 907 0.001230 0.003701 -0.010904 + 908 0.005640 0.000943 -0.026378 + 909 -0.001655 0.006661 0.001080 + 910 0.000417 -0.004485 0.000899 + 911 0.004051 -0.003590 0.002016 + 912 0.010109 -0.002124 0.001500 + 913 0.002439 0.006335 0.003103 + 914 -0.006325 0.005901 0.006397 + 915 0.008058 0.002545 0.004591 + 916 -0.001774 -0.003954 -0.005522 + 917 -0.001697 -0.002110 -0.006988 + 918 0.000641 -0.012660 -0.001878 + 919 0.000840 0.002158 -0.002127 + 920 -0.006972 -0.005865 -0.019536 + 921 -0.009078 -0.009093 0.005319 + 922 -0.002466 0.001612 -0.002348 + 923 -0.007997 0.000173 -0.007016 + 924 -0.005167 0.000122 -0.004809 + 925 0.000182 0.007626 -0.005820 + 926 -0.000187 0.006758 -0.004766 + 927 -0.005146 0.010941 -0.001145 + 928 -0.001035 0.003329 -0.000156 + 929 -0.002925 0.005286 0.005381 + 930 -0.007353 0.014383 0.015446 + 931 0.001566 0.003779 -0.001844 + 932 0.014111 -0.006162 0.016836 + 933 -0.008051 -0.000942 0.006114 + 934 0.000472 0.000581 0.003898 + 935 0.010438 -0.015336 0.026259 + 936 -0.009803 0.018803 -0.011113 + 937 -0.002622 0.001845 -0.004649 + 938 0.000192 0.006195 -0.003034 + 939 -0.004379 0.004856 -0.008876 + 940 0.005312 -0.005320 -0.000644 + 941 0.004197 0.002434 0.005873 + 942 0.001054 -0.002144 -0.009156 + 943 0.001818 0.002764 0.000410 + 944 0.002489 0.005354 -0.014128 + 945 0.003819 0.010472 0.007403 + 946 0.005262 -0.000699 0.001191 + 947 -0.002052 -0.008290 0.017377 + 948 -0.012921 -0.009037 0.007720 + 949 0.002875 -0.000206 -0.005514 + 950 0.004620 -0.003924 -0.007344 + 951 0.004396 0.015332 -0.008395 + 952 -0.001773 -0.005567 0.004807 + 953 0.014650 -0.004337 0.011316 + 954 0.007355 -0.004603 0.004796 + 955 0.001050 0.002663 -0.000049 + 956 -0.000422 0.019759 -0.003121 + 957 -0.011736 0.001700 0.005445 + 958 0.002314 -0.007359 0.001422 + 959 0.000226 -0.009157 0.011161 + 960 0.002971 -0.007641 -0.001658 + 961 0.002025 0.003310 0.000085 + 962 0.003783 0.005544 -0.002440 + 963 -0.003390 -0.001680 0.007759 + 964 -0.000259 -0.001517 -0.001671 + 965 -0.009891 -0.000275 0.002930 + 966 -0.004798 -0.018121 0.000493 + 967 0.002742 0.002196 0.002639 + 968 -0.032110 0.008681 0.017593 + 969 -0.005767 -0.003804 -0.003447 + 970 -0.001025 -0.001901 0.007377 + 971 -0.025416 -0.005633 -0.009650 + 972 -0.002448 -0.002342 0.009184 + 973 0.000510 -0.004313 0.003297 + 974 -0.004244 -0.006185 -0.015114 + 975 0.002817 0.008222 0.025232 + 976 -0.005979 0.000432 0.003264 + 977 0.000348 0.000126 0.007237 + 978 -0.031461 0.008376 -0.002490 + 979 -0.003066 -0.005264 0.001528 + 980 0.000500 -0.005194 -0.000082 + 981 -0.006145 0.003915 -0.013465 + 982 -0.002081 -0.001596 0.001268 + 983 0.004918 -0.004802 -0.009499 + 984 -0.008729 0.005751 0.010881 + 985 0.002456 -0.001947 -0.001558 + 986 -0.006566 -0.000024 0.003315 + 987 0.007532 0.005898 -0.002575 + 988 -0.004247 -0.003264 -0.000409 + 989 0.002165 -0.007499 0.004990 + 990 -0.000419 0.003692 -0.004472 + 991 -0.001571 -0.000159 -0.000431 + 992 0.005413 0.009517 0.004397 + 993 -0.002643 -0.002292 -0.001478 + 994 -0.003884 0.005066 -0.000457 + 995 0.006816 0.009263 -0.003376 + 996 -0.007273 0.011919 0.000514 + 997 0.000030 0.001409 0.005477 + 998 0.005334 -0.020033 0.004464 + 999 0.016228 0.009598 -0.007106 + 1000 -0.002283 -0.004481 0.001317 + 1001 -0.002631 -0.006631 -0.004233 + 1002 0.004184 0.000805 0.014756 + 1003 0.000408 -0.003693 0.003308 + 1004 0.004530 -0.006410 -0.006453 + 1005 -0.004928 -0.003846 0.015168 + 1006 0.003101 -0.001511 0.005308 + 1007 0.014081 -0.002443 0.012313 + 1008 0.002846 0.010440 -0.000376 + 1009 0.003569 -0.002175 -0.006662 + 1010 -0.008368 -0.011644 -0.006989 + 1011 0.019824 -0.004949 -0.018661 + 1012 0.003202 -0.011850 0.003160 + 1013 0.014918 -0.009378 0.018579 + 1014 -0.002594 0.004575 -0.001959 + 1015 -0.002298 0.000413 -0.003910 + 1016 0.012837 -0.003799 -0.015681 + 1017 -0.005955 -0.000660 0.004171 + 1018 0.001582 0.000975 0.000146 + 1019 0.006776 -0.014144 -0.007821 + 1020 0.004234 -0.001693 -0.007198 + 1021 -0.001802 -0.002656 0.003257 + 1022 0.028537 0.012512 0.005966 + 1023 -0.000026 -0.011732 -0.013572 + 1024 0.006685 0.008417 -0.002619 + 1025 -0.018380 0.006240 0.006444 + 1026 0.014195 0.009753 -0.004447 + 1027 -0.000769 -0.006799 -0.003510 + 1028 -0.003532 0.013774 -0.009337 + 1029 0.005263 0.018084 -0.010946 + 1030 0.004102 0.004262 -0.002426 + 1031 -0.003256 -0.005354 0.003498 + 1032 -0.021894 -0.003478 0.016467 + 1033 0.001456 -0.004355 -0.002070 + 1034 -0.005859 -0.004113 -0.005871 + 1035 -0.005758 -0.006886 -0.016585 + 1036 0.001562 0.006459 -0.000209 + 1037 0.001331 0.004667 0.000892 + 1038 0.012898 0.027063 -0.008125 + 1039 0.002117 0.007131 0.002457 + 1040 0.026605 0.010046 0.019045 + 1041 -0.017364 0.007077 -0.014953 + 1042 -0.000452 0.009291 0.004625 + 1043 -0.011059 0.009571 0.015357 + 1044 0.027928 -0.000208 0.009437 + 1045 0.003475 -0.004274 -0.000546 + 1046 0.012160 -0.001385 -0.006922 + 1047 -0.016274 -0.008100 -0.006675 + 1048 -0.003853 -0.003278 -0.001388 + 1049 0.014697 -0.003341 -0.007454 + 1050 0.011346 -0.009086 -0.006461 + 1051 -0.001161 -0.003940 -0.002833 + 1052 0.011182 0.001281 -0.000803 + 1053 -0.001345 -0.002375 -0.003580 + 1054 0.004028 0.002256 0.000990 + 1055 0.013302 0.008212 -0.007566 + 1056 0.029179 -0.014499 0.008878 + 1057 0.000706 0.001652 0.001826 + 1058 0.000498 -0.007266 0.024956 + 1059 0.001324 -0.008155 0.011295 + 1060 0.000971 -0.006253 -0.004688 + 1061 -0.004746 -0.005680 -0.016047 + 1062 -0.000356 -0.009050 -0.006561 + 1063 -0.000866 0.005460 0.000045 + 1064 -0.006882 0.011747 0.020163 + 1065 -0.000733 0.001409 -0.010900 + 1066 -0.003804 0.003558 0.001444 + 1067 0.004513 0.002071 -0.017536 + 1068 -0.000869 -0.002704 -0.014336 + 1069 -0.003015 0.003241 -0.002075 + 1070 0.003734 -0.005456 -0.000879 + 1071 -0.006686 -0.008010 -0.008654 + 1072 -0.000541 -0.003669 -0.004373 + 1073 0.003151 -0.002513 -0.013951 + 1074 0.003979 -0.005557 0.002931 + 1075 -0.005175 -0.004387 0.000228 + 1076 -0.005613 -0.012392 -0.029351 + 1077 0.009704 0.009953 -0.015680 + 1078 -0.000915 0.003660 -0.003078 + 1079 0.002529 0.001465 0.006987 + 1080 0.000880 0.001866 -0.004217 + 1081 0.000835 -0.000410 0.000029 + 1082 0.003324 -0.009356 0.012151 + 1083 -0.000797 0.009753 -0.012613 + 1084 0.004557 -0.006851 0.000257 + 1085 0.014378 -0.010986 -0.004036 + 1086 0.001889 0.001865 0.000904 + 1087 0.003881 0.000306 -0.000266 + 1088 0.006043 -0.030376 0.018797 + 1089 -0.001012 -0.002296 0.000324 + 1090 0.007042 0.008682 0.007323 + 1091 0.010016 0.002442 -0.028255 + 1092 -0.004827 0.009414 -0.012200 + 1093 0.002178 0.003272 0.000190 + 1094 0.003486 0.001815 -0.002585 + 1095 0.006020 0.002953 -0.010998 + 1096 0.002573 -0.000704 0.002051 + 1097 -0.010233 0.004335 0.005568 + 1098 0.003397 0.002649 0.010631 + 1099 -0.000367 -0.008657 0.004003 + 1100 0.006810 -0.008282 0.003316 + 1101 -0.008301 -0.011638 -0.006525 + 1102 -0.001900 -0.008810 0.001531 + 1103 0.003628 0.008111 0.009571 + 1104 0.017147 0.000173 0.003988 + 1105 0.006161 0.005444 0.001389 + 1106 -0.033784 0.028714 -0.002486 + 1107 0.022179 0.015181 0.025221 + 1108 0.002935 0.001125 -0.009560 + 1109 0.013392 0.009490 0.002655 + 1110 0.015380 -0.002935 -0.004728 + 1111 0.002760 -0.001052 0.002516 + 1112 -0.006737 0.002302 0.012384 + 1113 -0.004649 -0.009652 -0.009326 + 1114 -0.003333 0.004385 -0.006004 + 1115 -0.014175 0.007089 0.000199 + 1116 0.009875 0.004925 0.012791 + 1117 -0.004828 0.000366 0.001718 + 1118 0.009618 -0.007069 -0.012330 + 1119 -0.021489 -0.009155 -0.001603 + 1120 -0.001360 0.002089 -0.003585 + 1121 0.003530 -0.001847 0.010254 + 1122 0.016468 0.005240 -0.014692 + 1123 0.001989 -0.000949 0.003286 + 1124 0.022107 -0.012110 -0.007316 + 1125 0.012518 -0.010337 0.015891 + 1126 0.000850 -0.001413 -0.001737 + 1127 -0.014943 0.000360 -0.000490 + 1128 -0.027983 -0.005206 0.004037 + 1129 0.011232 0.000349 -0.006679 + 1130 -0.005484 -0.003095 -0.004430 + 1131 -0.005050 -0.002005 -0.015837 + 1132 -0.000470 0.001924 0.001131 + 1133 -0.016506 0.005240 0.008171 + 1134 0.011977 -0.012388 0.003671 + 1135 -0.000818 0.001081 0.001571 + 1136 0.009956 -0.006601 -0.002667 + 1137 -0.013344 0.009962 -0.000602 + 1138 -0.004379 0.004681 0.005655 + 1139 -0.022717 0.009805 -0.016911 + 1140 -0.017223 0.002867 0.018671 + 1141 -0.000339 -0.000149 -0.001276 + 1142 0.002292 0.016872 -0.004987 + 1143 -0.012964 -0.000693 -0.007140 + 1144 -0.002149 0.004008 -0.001355 + 1145 0.012575 0.018012 -0.011467 + 1146 -0.018572 0.011663 -0.005755 + 1147 0.000951 -0.000232 0.005705 + 1148 0.001030 -0.002411 0.005162 + 1149 -0.004871 0.010528 0.006213 + 1150 -0.003431 0.005236 0.003321 + 1151 -0.006083 0.008172 0.003730 + 1152 0.021201 0.002738 -0.026021 + 1153 -0.000559 -0.001274 0.002074 + 1154 -0.000342 -0.008595 -0.003314 + 1155 -0.004563 0.013150 0.001114 + 1156 0.002547 -0.003346 0.000793 + 1157 -0.004000 0.002915 0.001908 + 1158 0.008526 -0.013385 0.001263 + 1159 0.003331 -0.001629 -0.001592 + 1160 0.012216 0.004263 0.001290 + 1161 -0.024729 0.027722 0.012828 + 1162 -0.004556 0.005331 -0.000790 + 1163 -0.001260 0.004809 0.012624 + 1164 0.009151 0.007740 0.005908 + 1165 0.006739 -0.002486 0.000962 + 1166 0.002801 -0.001010 0.007063 + 1167 0.006266 -0.009780 0.000447 + 1168 -0.001756 -0.006121 -0.000399 + 1169 0.002128 0.011752 0.003187 + 1170 -0.000744 -0.004455 -0.001624 + 1171 -0.003120 -0.007987 0.008768 + 1172 -0.001279 -0.014309 0.014916 + 1173 -0.003496 -0.005392 0.006518 + 1174 -0.005252 -0.000094 0.002610 + 1175 -0.004319 0.000327 0.003799 + 1176 0.014469 -0.001407 -0.023557 + 1177 -0.001733 0.011173 0.001097 + 1178 0.019607 0.000729 -0.008577 + 1179 -0.013430 0.021297 -0.011104 + 1180 0.005550 -0.002953 -0.004489 + 1181 -0.021164 -0.004283 0.009224 + 1182 0.020762 -0.011806 0.008058 + 1183 -0.003934 -0.006346 0.000789 + 1184 -0.004154 -0.012917 -0.000804 + 1185 0.001834 -0.003234 0.006486 + 1186 -0.003359 -0.000166 0.000482 + 1187 -0.010938 -0.009570 0.011838 + 1188 -0.006339 -0.002743 -0.017319 + 1189 -0.002008 -0.000238 -0.002842 + 1190 0.009730 0.002797 -0.000255 + 1191 0.004802 0.018470 -0.005529 + 1192 0.002978 0.003254 0.000406 + 1193 0.001762 -0.016118 0.017481 + 1194 0.009625 0.005549 -0.002833 + 1195 -0.005277 -0.000015 -0.004247 + 1196 0.008535 -0.018189 -0.023760 + 1197 -0.020839 0.008581 0.007193 + 1198 0.001976 -0.001531 0.001386 + 1199 -0.012488 -0.005613 0.004418 + 1200 0.012387 0.001324 -0.002579 + 1201 0.004612 0.001574 0.002430 + 1202 0.004011 0.024078 0.008286 + 1203 0.028635 -0.001749 -0.000378 + 1204 -0.001292 -0.004163 0.001688 + 1205 0.018917 -0.005327 -0.022863 + 1206 -0.021498 0.026796 -0.015481 + 1207 -0.004360 -0.003023 -0.007483 + 1208 0.015222 -0.007834 -0.014901 + 1209 -0.015487 -0.004003 -0.024684 + 1210 0.000162 -0.000232 -0.002511 + 1211 0.005663 0.001759 0.003041 + 1212 -0.026577 0.001752 0.009499 + 1213 -0.002118 -0.004800 0.002106 + 1214 0.012772 0.013880 -0.004149 + 1215 0.008831 0.004495 0.004278 + 1216 -0.001002 0.000396 0.000450 + 1217 0.001493 -0.000300 0.006615 + 1218 0.022789 -0.011336 -0.001626 + 1219 -0.002165 0.002305 -0.004399 + 1220 -0.001727 0.010653 0.006150 + 1221 0.001799 -0.000399 -0.015101 + 1222 -0.002535 -0.001664 0.000167 + 1223 -0.007939 0.009699 -0.003581 + 1224 -0.009214 -0.009452 -0.003331 + 1225 -0.002745 0.003249 0.011490 + 1226 0.010727 -0.015563 0.011870 + 1227 -0.003771 0.013856 -0.015486 + 1228 -0.000932 0.001513 0.000721 + 1229 -0.002528 0.000192 0.015301 + 1230 -0.027023 -0.007231 0.009659 + 1231 -0.005525 0.001099 -0.001369 + 1232 -0.002318 -0.008510 -0.009719 + 1233 -0.005945 -0.008347 0.009845 + 1234 -0.000817 -0.006097 -0.001394 + 1235 0.026844 0.005400 -0.013998 + 1236 -0.019837 0.017329 -0.010038 + 1237 -0.002691 -0.005371 -0.000786 + 1238 -0.007304 -0.006372 0.007409 + 1239 -0.014066 -0.005252 0.014237 + 1240 -0.000660 -0.004157 -0.007445 + 1241 -0.015343 -0.015681 0.000525 + 1242 -0.004856 0.008296 -0.020506 + 1243 -0.000451 -0.006253 0.005274 + 1244 -0.016626 -0.024128 0.003146 + 1245 0.003430 -0.001516 0.006995 + 1246 0.002369 0.000761 -0.000692 + 1247 -0.011034 0.017913 -0.003576 + 1248 0.014886 0.005052 0.010870 + 1249 0.000976 0.003044 0.004043 + 1250 0.002084 0.009119 -0.003484 + 1251 -0.004682 -0.003095 0.024419 + 1252 -0.001872 0.005519 -0.003878 + 1253 0.014045 0.004474 0.006660 + 1254 -0.006683 -0.012923 -0.006357 + 1255 -0.007125 -0.002296 0.002894 + 1256 -0.009126 -0.000293 0.008175 + 1257 -0.005668 -0.002902 -0.000640 + 1258 -0.009805 0.000500 -0.001546 + 1259 -0.007254 -0.007274 0.010849 + 1260 0.005786 0.004719 0.004479 + 1261 0.000767 -0.007091 -0.002809 + 1262 -0.010861 -0.024470 -0.006678 + 1263 0.010352 0.003874 -0.018616 + 1264 -0.001332 -0.000776 -0.001533 + 1265 0.005055 -0.002761 -0.000154 + 1266 0.001293 -0.010766 0.003695 + 1267 0.004101 0.005423 0.004161 + 1268 -0.006495 -0.001645 0.007645 + 1269 0.024277 0.000761 0.018148 + 1270 0.000384 -0.004677 0.001777 + 1271 -0.000305 -0.022286 0.006378 + 1272 0.014900 -0.009298 0.005029 + 1273 -0.002201 -0.002422 -0.001266 + 1274 0.002419 0.000621 -0.006170 + 1275 0.002242 -0.003567 -0.006329 + 1276 0.001155 0.006214 -0.002164 + 1277 -0.025679 0.011598 0.001775 + 1278 -0.016652 0.005061 0.002255 + 1279 -0.000163 0.000193 -0.001041 + 1280 -0.002822 -0.004131 -0.007696 + 1281 -0.007029 0.005316 -0.012422 + 1282 -0.001259 -0.001443 0.001295 + 1283 -0.000992 -0.027820 -0.000474 + 1284 -0.012190 -0.043729 -0.008054 + 1285 -0.001840 -0.001572 0.001104 + 1286 0.008311 0.001263 -0.001841 + 1287 0.001277 0.000429 -0.007113 + 1288 -0.005029 -0.002280 -0.002761 + 1289 -0.024723 0.012515 -0.012864 + 1290 -0.013845 -0.020399 0.001674 + 1291 -0.000161 0.002303 0.004199 + 1292 -0.010956 -0.010528 0.017163 + 1293 0.023554 -0.006815 0.021159 + 1294 0.000772 -0.000829 0.004462 + 1295 0.024106 -0.007189 -0.017980 + 1296 -0.011795 0.000225 0.018351 + 1297 -0.002503 0.000288 -0.000931 + 1298 -0.001901 -0.006775 -0.001166 + 1299 -0.002626 0.004209 -0.000596 + 1300 -0.003248 -0.009856 0.001496 + 1301 -0.008616 0.000206 -0.000660 + 1302 0.012991 -0.001944 0.010735 + 1303 0.000183 0.003767 -0.002207 + 1304 0.002875 0.006021 0.006091 + 1305 -0.003343 -0.008883 0.015455 + 1306 -0.003761 0.009400 -0.007147 + 1307 -0.002601 -0.012510 0.005900 + 1308 -0.013464 0.021935 0.006364 + 1309 0.007717 -0.006568 -0.004280 + 1310 0.004551 -0.013432 0.001741 + 1311 0.016676 -0.009730 -0.005415 + 1312 -0.003518 -0.000115 0.000120 + 1313 -0.018566 -0.004441 0.007076 + 1314 0.011422 0.004168 0.013848 + 1315 -0.002232 0.003004 -0.005210 + 1316 -0.004985 -0.000655 -0.007286 + 1317 -0.004756 0.005461 -0.010032 + 1318 0.003296 -0.000345 0.003797 + 1319 0.000013 0.003387 0.009258 + 1320 -0.001175 0.009021 0.016554 + 1321 0.004610 0.000563 0.001890 + 1322 0.001511 0.004957 0.010795 + 1323 -0.000517 0.009529 0.012695 + 1324 0.003561 -0.002127 -0.002139 + 1325 -0.016355 -0.004573 0.011414 + 1326 0.002437 -0.000969 0.003958 + 1327 -0.003191 0.002772 0.003706 + 1328 0.002188 0.004078 0.024902 + 1329 0.005804 0.008997 0.000514 + 1330 0.000169 -0.001823 0.006601 + 1331 -0.012837 0.016738 0.032499 + 1332 -0.003787 -0.003993 0.005792 + 1333 -0.006500 -0.001952 -0.005568 + 1334 0.004632 0.002607 -0.001417 + 1335 0.007826 -0.018417 0.003893 + 1336 0.001400 0.000629 -0.002329 + 1337 -0.026090 -0.010827 -0.007428 + 1338 0.014757 0.003359 0.005866 + 1339 0.005344 0.002452 0.000637 + 1340 0.002304 0.001516 0.008371 + 1341 0.003116 0.003502 0.000920 + 1342 0.000219 0.006872 -0.006361 + 1343 0.004872 0.004948 -0.015461 + 1344 0.002293 0.008990 -0.007103 + 1345 -0.000248 -0.001405 -0.000404 + 1346 0.016050 0.005473 0.014883 + 1347 0.000661 0.010958 0.009762 + 1348 0.002507 0.004854 0.004016 + 1349 -0.000026 0.005865 -0.004933 + 1350 -0.003541 0.012071 0.011984 + 1351 -0.000388 -0.001662 -0.002624 + 1352 -0.008781 0.002236 0.005933 + 1353 -0.002303 0.010321 -0.013971 + 1354 0.000266 0.005381 0.006218 + 1355 -0.030793 -0.017551 0.006520 + 1356 -0.001710 0.006198 0.003481 + 1357 -0.000575 0.000387 0.003498 + 1358 0.011844 0.006387 0.013823 + 1359 -0.004149 -0.001630 0.001064 + 1360 0.002966 -0.001211 -0.000529 + 1361 0.011026 0.001160 0.001568 + 1362 0.015143 -0.001234 0.000065 + 1363 0.000976 0.001952 -0.002769 + 1364 0.013527 0.011152 0.001594 + 1365 -0.000179 -0.000211 -0.002554 + 1366 -0.005351 -0.004969 -0.002979 + 1367 -0.006889 0.021662 -0.005435 + 1368 -0.002462 0.016113 0.008657 + 1369 -0.000975 0.000751 -0.000755 + 1370 -0.003243 0.006738 -0.001393 + 1371 -0.002267 -0.000779 0.003167 + 1372 0.001566 -0.003190 -0.000583 + 1373 -0.002018 -0.005136 0.012563 + 1374 -0.006828 0.007134 0.011132 + 1375 0.005244 -0.004715 -0.003319 + 1376 -0.010064 -0.001392 0.024842 + 1377 -0.003331 -0.012180 0.011450 + 1378 0.005044 -0.003538 0.000197 + 1379 0.014932 -0.005316 0.014871 + 1380 0.002959 -0.015155 -0.010790 + 1381 0.004288 0.003508 0.003045 + 1382 0.010516 0.006731 0.001181 + 1383 0.003157 0.002004 0.039661 + 1384 -0.003464 -0.000341 -0.002519 + 1385 0.000767 -0.010574 0.002375 + 1386 0.012132 0.009405 0.005728 + 1387 -0.002537 0.005096 -0.000141 + 1388 0.008455 -0.000335 0.003398 + 1389 0.000567 0.012932 0.006368 + 1390 0.007440 -0.002304 0.001444 + 1391 0.003946 0.007849 -0.005030 + 1392 0.012038 -0.016280 0.007159 + 1393 -0.001061 -0.002610 -0.000083 + 1394 0.010905 -0.006613 -0.001941 + 1395 -0.013885 -0.027620 0.005494 + 1396 0.013746 0.003525 0.007163 + 1397 0.003586 0.002644 -0.010792 + 1398 0.018544 0.013850 0.017322 + 1399 0.004571 0.000027 -0.001760 + 1400 0.012220 0.001858 -0.006751 + 1401 0.009850 -0.002003 0.019339 + 1402 -0.001383 0.002281 -0.007042 + 1403 -0.003363 0.001654 -0.017801 + 1404 0.011330 0.009635 0.005470 + 1405 0.000650 -0.001098 -0.005942 + 1406 0.005198 -0.008028 -0.003832 + 1407 0.017668 -0.005738 0.026099 + 1408 -0.001891 0.001162 0.003476 + 1409 -0.003537 0.018838 0.000972 + 1410 0.007980 0.016250 0.030292 + 1411 -0.001348 0.000197 0.004181 + 1412 -0.002255 -0.008393 -0.001355 + 1413 -0.008567 -0.008184 -0.000151 + 1414 -0.001145 0.001777 -0.004250 + 1415 -0.002565 -0.000609 -0.002622 + 1416 0.017182 0.009342 -0.008899 + 1417 -0.000336 -0.000833 -0.006619 + 1418 0.006594 -0.014023 -0.011705 + 1419 -0.010047 -0.002912 -0.003804 + 1420 0.005759 0.000406 0.005233 + 1421 -0.013174 -0.018780 -0.002966 + 1422 -0.003551 -0.005212 0.011087 + 1423 -0.001811 -0.005836 -0.002120 + 1424 -0.008296 0.022099 0.012646 + 1425 0.010130 0.006059 0.033707 + 1426 0.001039 -0.001025 -0.000459 + 1427 0.004468 0.000527 0.001539 + 1428 -0.001728 -0.005304 0.003140 + 1429 -0.000141 -0.003112 0.003400 + 1430 0.007530 -0.026022 0.005020 + 1431 -0.011982 0.032142 -0.001998 + 1432 -0.001642 0.003923 -0.003350 + 1433 0.016086 -0.002664 -0.005695 + 1434 -0.010354 0.000136 0.021071 + 1435 0.001502 -0.001507 0.005856 + 1436 -0.003359 -0.017617 -0.013060 + 1437 -0.001621 -0.013764 -0.008355 + 1438 -0.006074 0.001165 0.001910 + 1439 -0.004946 0.003618 0.011324 + 1440 -0.007761 0.002697 -0.006763 + 1441 -0.009332 0.000898 0.000750 + 1442 -0.017083 -0.010335 0.011191 + 1443 0.020780 0.013466 -0.015083 + 1444 -0.008140 -0.008032 -0.000180 + 1445 -0.001836 -0.008988 0.003973 + 1446 -0.008280 -0.004548 -0.003224 + 1447 0.000996 -0.002062 -0.001184 + 1448 -0.001863 -0.012096 0.003957 + 1449 -0.027050 0.007989 0.002157 + 1450 -0.001321 -0.000325 0.001355 + 1451 -0.006885 -0.000536 -0.022446 + 1452 0.008792 -0.007975 0.003329 + 1453 -0.003682 -0.004782 -0.002567 + 1454 -0.001180 -0.009011 0.018662 + 1455 -0.000958 -0.004899 0.013723 + 1456 0.000545 0.011919 -0.001753 + 1457 0.023799 0.010298 -0.002649 + 1458 0.014717 0.007757 -0.005400 + 1459 -0.004576 -0.007691 0.001365 + 1460 -0.006577 -0.016846 -0.022862 + 1461 -0.005206 0.003687 0.012428 + 1462 0.001923 -0.004758 -0.001993 + 1463 0.006600 0.017503 0.006935 + 1464 -0.006747 -0.003482 -0.000067 + 1465 0.000613 0.004580 0.004038 + 1466 -0.001945 0.022605 -0.000652 + 1467 0.017624 -0.001392 0.003829 + 1468 -0.003065 -0.003003 -0.000747 + 1469 -0.012664 -0.016566 -0.007030 + 1470 0.008660 -0.008358 0.004763 + 1471 -0.004008 0.000421 -0.006040 + 1472 0.003555 0.008566 -0.015842 + 1473 -0.001032 0.001700 -0.010204 + 1474 -0.000556 0.000599 0.003074 + 1475 0.001542 0.002939 0.005269 + 1476 -0.005281 -0.001944 0.003338 + 1477 -0.000195 -0.000293 -0.001004 + 1478 -0.009991 -0.005354 -0.013386 + 1479 -0.000476 -0.017594 0.007900 + 1480 0.000550 -0.000431 0.001422 + 1481 0.018094 -0.005183 0.016234 + 1482 0.010706 0.011668 -0.017772 + 1483 0.001291 0.006499 0.000951 + 1484 0.009985 -0.016962 0.009714 + 1485 0.020849 0.018365 -0.008351 + 1486 0.006940 0.004692 -0.002409 + 1487 0.022308 0.010182 -0.022897 + 1488 0.000269 0.008847 0.011834 + 1489 0.002051 0.007334 -0.000125 + 1490 -0.023048 0.013759 -0.030276 + 1491 0.023523 -0.005817 0.007754 + 1492 -0.001269 0.002979 0.001311 + 1493 -0.005596 0.006174 0.011007 + 1494 -0.009061 0.022719 0.002133 + 1495 -0.001128 0.004307 -0.002381 + 1496 -0.004340 0.013891 -0.003505 + 1497 0.001822 -0.005505 -0.001135 + 1498 -0.000910 0.001437 0.000165 + 1499 0.004510 -0.000360 -0.006425 + 1500 0.003993 0.000498 0.007321 + 1501 -0.002868 -0.000316 -0.000509 + 1502 0.000620 0.011286 0.008461 + 1503 -0.013079 -0.008157 0.007561 + 1504 -0.003002 0.003413 0.004968 + 1505 0.015262 -0.005133 0.012052 + 1506 -0.003968 -0.003643 0.003514 + 1507 0.005087 -0.001882 -0.000518 + 1508 0.000932 -0.002238 0.000800 + 1509 -0.008149 0.000695 -0.000827 + 1510 -0.001261 -0.003375 0.000333 + 1511 -0.001224 -0.004135 -0.003080 + 1512 0.009246 -0.010372 0.026354 + 1513 0.000697 -0.003200 0.001222 + 1514 -0.002319 0.003800 0.022860 + 1515 -0.018205 0.011600 -0.011416 + 1516 -0.001731 -0.001076 0.002612 + 1517 -0.004661 -0.010783 -0.001505 + 1518 0.016208 0.002810 0.004482 + 1519 0.003508 -0.001750 0.002537 + 1520 0.024576 -0.026041 -0.004083 + 1521 -0.019140 0.000844 0.001909 + 1522 -0.000341 0.001152 0.001967 + 1523 -0.020076 0.003364 0.001315 + 1524 -0.000942 0.000692 -0.003283 + 1525 -0.006519 -0.000419 0.000991 + 1526 -0.004033 0.006531 0.004791 + 1527 0.005626 0.012187 -0.014266 + 1528 0.001113 -0.004253 0.011930 + 1529 -0.010144 0.003567 0.009059 + 1530 -0.003464 0.001115 0.011591 + 1531 0.000006 0.000074 0.005751 + 1532 0.003604 0.008464 0.010627 + 1533 -0.004351 -0.009621 -0.000453 + 1534 -0.000196 -0.001160 0.002795 + 1535 -0.006855 0.001414 0.005552 + 1536 -0.000894 -0.002102 0.005053 + 1537 -0.002040 -0.005887 -0.003590 + 1538 -0.006852 -0.011947 -0.023080 + 1539 -0.016070 0.000160 0.010390 + 1540 0.004712 0.002848 -0.002998 + 1541 -0.004259 0.007840 0.008142 + 1542 -0.004861 0.004263 0.011728 + 1543 0.006968 -0.004871 0.004119 + 1544 -0.016558 -0.002046 -0.006090 + 1545 -0.006229 0.004475 0.001436 + 1546 -0.002341 -0.004733 -0.003946 + 1547 0.003563 0.004733 0.009615 + 1548 -0.013018 0.004747 -0.004733 + 1549 0.001703 -0.000331 0.003605 + 1550 0.005459 -0.002653 -0.012447 + 1551 0.013689 0.008625 -0.003301 + 1552 0.003195 0.001205 -0.000779 + 1553 -0.003336 -0.011439 -0.004979 + 1554 0.001015 0.018568 -0.007361 + 1555 -0.001647 -0.003759 0.001214 + 1556 0.015583 -0.016961 0.000384 + 1557 -0.011138 -0.013161 -0.015913 + 1558 0.005848 -0.002193 -0.007682 + 1559 0.009577 -0.005765 0.010025 + 1560 0.006984 0.005858 -0.020668 + 1561 -0.005040 0.001396 0.001932 + 1562 0.007071 0.009231 0.007700 + 1563 0.001743 0.005137 0.005850 + 1564 0.001857 0.002145 -0.004455 + 1565 -0.007462 0.014047 -0.012730 + 1566 0.013730 -0.006385 0.009586 + 1567 -0.002000 0.003453 -0.001882 + 1568 -0.009622 -0.007424 -0.003371 + 1569 -0.006993 -0.018224 -0.006858 + 1570 0.001461 0.001281 -0.002568 + 1571 0.018901 0.002357 0.001811 + 1572 -0.001592 0.019333 -0.002732 + 1573 -0.001308 -0.005730 -0.002519 + 1574 -0.014074 0.007287 0.021518 + 1575 -0.017324 -0.018775 -0.005647 + 1576 0.002340 -0.001593 0.004994 + 1577 -0.000516 0.003608 0.002676 + 1578 -0.014840 -0.017283 -0.001508 + 1579 -0.001557 -0.002471 -0.002555 + 1580 0.016654 -0.033672 0.006595 + 1581 0.013351 -0.030070 0.003443 + 1582 0.003752 0.001449 0.001862 + 1583 -0.011257 -0.002704 0.007355 + 1584 0.002139 0.006577 0.012771 + 1585 0.002251 0.002492 -0.002180 + 1586 0.010691 -0.005615 -0.001517 + 1587 -0.018738 0.016070 0.006914 + 1588 -0.001600 0.000180 0.001378 + 1589 0.004891 -0.007732 -0.013906 + 1590 -0.015149 0.011285 0.002913 + 1591 0.003944 -0.001162 -0.002407 + 1592 -0.013220 -0.006427 -0.006873 + 1593 -0.008388 0.022805 -0.011588 + 1594 0.000621 -0.004836 0.005509 + 1595 0.006148 -0.013451 0.002326 + 1596 -0.001161 -0.012639 -0.002024 + 1597 -0.005042 0.000613 0.003072 + 1598 -0.002560 -0.009516 -0.007164 + 1599 -0.007736 0.003315 0.007824 + 1600 -0.002409 -0.002549 -0.003082 + 1601 -0.002839 0.004415 -0.008830 + 1602 -0.006633 -0.001003 -0.004060 + 1603 -0.004810 -0.007495 -0.004047 + 1604 0.005200 -0.017270 0.009101 + 1605 0.000670 -0.009280 -0.012848 + 1606 -0.003830 0.001924 -0.002728 + 1607 -0.035525 0.007821 -0.020602 + 1608 0.016575 -0.019547 -0.006176 + 1609 0.003828 0.000099 -0.002605 + 1610 0.017387 0.007652 0.014875 + 1611 0.012190 0.014852 0.016071 + 1612 -0.003436 0.002187 -0.001035 + 1613 -0.005586 -0.003901 0.006033 + 1614 -0.005884 -0.005331 -0.011796 + 1615 -0.001799 -0.005019 0.004011 + 1616 0.002094 -0.028579 0.008471 + 1617 0.023334 0.020189 0.016696 + 1618 -0.000653 -0.003079 -0.001689 + 1619 -0.005925 -0.004542 -0.007489 + 1620 0.003980 0.000361 0.005598 + 1621 -0.000999 0.004025 -0.003724 + 1622 0.000058 0.024442 0.006515 + 1623 0.011473 -0.013431 0.004073 + 1624 0.002923 -0.003314 0.001931 + 1625 0.003377 -0.006029 -0.008704 + 1626 0.002413 0.015094 0.010447 + 1627 0.003654 -0.000619 -0.001261 + 1628 -0.004232 -0.000930 0.001384 + 1629 0.019160 0.000313 -0.006734 + 1630 0.003534 0.002394 -0.000501 + 1631 -0.008068 0.002953 0.008451 + 1632 0.014612 0.006975 -0.004278 + 1633 0.001620 0.003004 0.003226 + 1634 -0.007605 -0.007788 0.011245 + 1635 0.020296 -0.014907 -0.003043 + 1636 -0.002678 -0.006261 0.001869 + 1637 -0.007968 -0.013586 -0.003793 + 1638 -0.015202 -0.007224 -0.014352 + 1639 -0.005816 -0.003019 0.006480 + 1640 -0.001607 -0.004084 0.006246 + 1641 0.008520 -0.008049 0.002824 + 1642 -0.000658 -0.004008 -0.000300 + 1643 -0.000444 0.000650 -0.012168 + 1644 -0.006399 -0.006883 0.005254 + 1645 -0.001317 0.006093 0.001522 + 1646 -0.010770 -0.004270 -0.010989 + 1647 -0.005520 0.020979 0.012203 + 1648 -0.004763 0.001957 0.003649 + 1649 -0.010531 0.001095 0.022741 + 1650 0.001695 -0.009764 -0.029750 + 1651 0.000561 0.003660 0.004562 + 1652 0.004814 -0.011887 -0.011791 + 1653 0.015151 -0.017660 -0.020515 + 1654 -0.003720 -0.008154 0.002101 + 1655 -0.006836 0.005342 0.006830 + 1656 -0.008891 -0.005752 0.002656 + 1657 -0.004211 -0.006534 0.001470 + 1658 0.024344 -0.009232 0.001415 + 1659 -0.010793 -0.032076 -0.013330 + 1660 -0.000393 0.010082 -0.000260 + 1661 -0.003386 0.024037 -0.002341 + 1662 0.005231 -0.007154 0.002310 + 1663 0.004778 0.000685 -0.001247 + 1664 0.006845 -0.000146 -0.002439 + 1665 0.002831 0.001509 -0.001312 + 1666 -0.004575 0.002015 0.002231 + 1667 -0.008714 0.004773 0.019310 + 1668 -0.009036 0.006437 0.017025 + 1669 -0.001102 -0.003004 0.003294 + 1670 0.004690 0.016121 0.007181 + 1671 -0.000881 -0.003815 0.001639 + 1672 -0.000053 -0.001708 0.002633 + 1673 -0.004620 0.003536 0.000715 + 1674 -0.002636 -0.005429 0.007498 + 1675 0.002307 0.001406 0.002665 + 1676 -0.005270 -0.001969 0.007587 + 1677 0.001417 -0.009022 -0.021912 + 1678 0.000203 0.002930 -0.002177 + 1679 0.003819 0.012652 -0.002939 + 1680 -0.001040 0.005171 0.022221 + 1681 -0.001765 0.004140 -0.001020 + 1682 0.015888 -0.002384 -0.000464 + 1683 -0.019573 0.014814 -0.003047 + 1684 -0.002840 -0.000626 0.000097 + 1685 0.019011 -0.004434 -0.031132 + 1686 -0.011722 0.011711 0.019623 + 1687 -0.000720 0.008278 0.001232 + 1688 -0.000014 -0.005707 0.005722 + 1689 0.006445 -0.004607 0.004541 + 1690 -0.008451 -0.005406 -0.003097 + 1691 -0.025859 -0.004092 0.011942 + 1692 0.003198 0.017013 -0.015979 + 1693 0.001237 0.005482 0.001012 + 1694 -0.003233 0.012773 -0.012817 + 1695 -0.013658 -0.008102 0.007350 + 1696 0.004867 0.002547 -0.001769 + 1697 0.019074 -0.004173 0.005165 + 1698 0.008487 0.001064 0.000080 + 1699 0.002766 -0.001251 -0.001561 + 1700 -0.019200 0.027169 -0.007481 + 1701 0.006036 -0.028485 -0.009388 + 1702 -0.005460 0.002563 0.001784 + 1703 -0.017462 0.006398 0.005231 + 1704 -0.014453 0.005484 0.004388 + 1705 0.002956 -0.001348 0.006512 + 1706 0.009654 0.004653 0.025184 + 1707 0.006226 -0.001478 -0.018062 + 1708 0.003757 -0.000921 -0.000401 + 1709 0.004307 -0.009700 -0.007768 + 1710 0.003780 -0.012914 0.008582 + 1711 0.004846 -0.002032 -0.000808 + 1712 -0.000823 -0.002500 -0.004619 + 1713 0.014769 -0.010350 0.008970 + 1714 -0.001580 -0.000837 0.000021 + 1715 -0.002003 -0.002972 -0.000158 + 1716 -0.004469 -0.000404 0.001257 + 1717 -0.001782 0.001231 -0.003624 + 1718 -0.009550 0.008477 -0.006010 + 1719 -0.003240 -0.001801 -0.002707 + 1720 -0.003131 -0.002749 -0.002782 + 1721 -0.003319 -0.008008 -0.009572 + 1722 -0.003280 -0.008289 -0.009069 + 1723 -0.006776 0.001807 0.000809 + 1724 0.000630 0.005359 0.003033 + 1725 0.016012 0.013546 0.014364 + 1726 -0.005383 0.003683 -0.001052 + 1727 -0.000343 -0.021814 -0.000655 + 1728 0.015975 0.004809 -0.015863 + 1729 -0.002843 0.002136 0.000031 + 1730 0.008511 0.002265 -0.002748 + 1731 -0.026285 -0.002274 -0.004757 + 1732 0.005294 -0.003565 0.004694 + 1733 -0.002668 0.001103 -0.001112 + 1734 -0.009429 0.006969 -0.008965 + 1735 -0.001634 0.000110 0.001819 + 1736 -0.004942 0.001203 -0.007254 + 1737 -0.002655 0.002573 -0.003610 + 1738 -0.004831 0.005860 0.001407 + 1739 -0.014232 0.009476 0.016389 + 1740 -0.017895 0.005674 -0.009379 + 1741 0.003013 -0.002508 -0.001228 + 1742 0.000746 0.006449 -0.005992 + 1743 0.006650 -0.002762 0.000152 + 1744 0.002550 -0.008457 0.001324 + 1745 -0.001868 -0.010233 -0.023525 + 1746 0.003968 -0.007880 0.008439 + 1747 -0.000591 0.004322 -0.003592 + 1748 -0.014424 0.009132 0.003708 + 1749 0.012052 -0.004950 -0.011581 + 1750 0.001849 0.003842 -0.009164 + 1751 0.009453 -0.005684 -0.004817 + 1752 0.001564 0.018776 -0.004831 + 1753 0.000794 0.000968 -0.001710 + 1754 -0.003816 -0.004723 -0.000498 + 1755 -0.011972 0.005633 -0.006975 + 1756 -0.004635 0.005064 -0.004764 + 1757 -0.010722 0.012077 -0.027297 + 1758 -0.003376 0.000707 0.006078 + 1759 0.001092 0.005159 -0.000557 + 1760 0.014326 0.002844 -0.021424 + 1761 0.019579 -0.002405 -0.009532 + 1762 -0.000565 0.006632 0.002294 + 1763 -0.025047 0.006219 0.001583 + 1764 -0.004637 -0.007484 0.007079 + 1765 0.002563 -0.001616 -0.003316 + 1766 -0.001239 0.014897 -0.002355 + 1767 -0.001256 -0.009226 0.009450 + 1768 0.001056 0.005329 -0.003831 + 1769 -0.012555 0.037676 0.021233 + 1770 -0.005969 -0.003116 -0.014248 + 1771 0.000691 0.001302 0.002405 + 1772 -0.015733 0.001224 -0.004288 + 1773 0.006783 0.015986 -0.003342 + 1774 0.002355 0.002897 -0.002965 + 1775 -0.000435 0.005789 0.007980 + 1776 0.014211 0.000855 -0.014841 + 1777 -0.004596 -0.002169 0.000774 + 1778 0.002630 -0.027237 0.012553 + 1779 -0.000727 -0.003394 -0.009924 + 1780 0.001821 -0.001310 0.000540 + 1781 0.005476 -0.002057 0.001588 + 1782 0.008060 0.013457 -0.013767 + 1783 0.003078 -0.007047 0.009501 + 1784 -0.004392 -0.004982 0.015684 + 1785 -0.021173 -0.003917 -0.003013 + 1786 0.001492 -0.007162 -0.003460 + 1787 0.020179 0.025050 0.005018 + 1788 -0.018378 -0.021938 0.007656 + 1789 -0.000363 0.004076 -0.003991 + 1790 0.012179 0.023942 -0.003853 + 1791 0.002207 0.011773 0.006443 + 1792 0.001993 0.000538 0.002365 + 1793 0.008602 -0.013779 -0.007218 + 1794 0.007374 0.001122 0.001108 + 1795 0.003207 -0.011319 -0.004081 + 1796 0.010332 -0.007827 -0.001929 + 1797 0.001869 0.022609 0.012256 + 1798 0.001101 0.003835 0.002357 + 1799 -0.003624 0.011759 0.002745 + 1800 0.001557 -0.002337 -0.004179 + 1801 0.003327 -0.001910 -0.005250 + 1802 0.011996 0.003017 0.013309 + 1803 -0.013682 -0.002775 -0.008939 + 1804 -0.002064 -0.000934 0.000427 + 1805 -0.012146 0.024406 -0.015171 + 1806 0.005030 -0.019570 0.004311 + 1807 0.003003 0.004365 0.002257 + 1808 0.000823 0.000086 -0.005161 + 1809 -0.003001 0.001206 0.008241 + 1810 0.005602 -0.001423 0.002945 + 1811 0.000330 0.001483 -0.011075 + 1812 0.003652 0.009252 -0.000166 + 1813 0.004531 -0.000860 -0.000170 + 1814 0.018728 0.013621 0.031510 + 1815 0.011579 -0.009257 -0.004100 + 1816 0.002862 0.000330 -0.002342 + 1817 -0.003456 -0.001426 -0.004566 + 1818 -0.006589 0.018593 0.018322 + 1819 -0.001663 0.002113 0.003120 + 1820 0.002523 0.005185 0.010725 + 1821 -0.006456 -0.005159 0.018366 + 1822 -0.000677 -0.000638 0.005530 + 1823 0.006499 0.011396 0.003392 + 1824 0.000945 -0.008826 -0.007441 + 1825 -0.002582 0.001006 0.000170 + 1826 -0.000739 0.010378 -0.012944 + 1827 -0.004082 -0.009693 0.012271 + 1828 -0.002259 -0.002179 0.001812 + 1829 0.004365 0.028602 0.007523 + 1830 -0.001047 0.006781 -0.010318 + 1831 0.003053 0.002227 0.004523 + 1832 -0.004297 -0.007295 0.001900 + 1833 0.002925 0.002066 0.004473 + 1834 0.003171 0.000025 0.002189 + 1835 0.001188 0.002838 0.001014 + 1836 0.006142 0.003073 -0.003689 + 1837 0.009818 0.005253 0.006222 + 1838 0.013907 -0.003607 0.006764 + 1839 -0.000327 0.015573 -0.010930 + 1840 -0.003110 -0.005538 0.000400 + 1841 0.006244 -0.021206 -0.003853 + 1842 -0.010299 0.008474 0.021147 + 1843 -0.001053 -0.000598 0.004581 + 1844 -0.013621 0.002557 -0.003175 + 1845 -0.002495 0.000789 0.011106 + 1846 -0.000137 -0.004006 -0.000014 + 1847 -0.017819 -0.013981 0.011316 + 1848 -0.005844 -0.000863 -0.025248 + 1849 -0.002799 0.002996 -0.002499 + 1850 -0.012455 0.012490 -0.004469 + 1851 0.010514 0.009490 -0.009495 + 1852 -0.000560 -0.004144 -0.000656 + 1853 -0.007255 0.002559 0.003817 + 1854 0.004602 -0.007276 0.003469 + 1855 0.000128 0.001144 -0.008402 + 1856 0.008157 0.001721 -0.014464 + 1857 -0.004034 0.002739 -0.008982 + 1858 0.002856 0.004731 -0.003812 + 1859 0.008481 -0.004184 -0.015612 + 1860 -0.004966 0.006658 -0.006541 + 1861 0.005415 -0.007185 0.002622 + 1862 -0.000791 0.004294 0.012806 + 1863 0.006266 -0.008943 0.000048 + 1864 -0.004891 -0.000259 0.002435 + 1865 0.000775 -0.012600 0.009738 + 1866 -0.000239 0.020688 0.014963 + 1867 0.007752 0.006605 0.003522 + 1868 0.005559 0.005449 0.004823 + 1869 0.001382 0.020031 -0.009484 + 1870 0.000269 -0.000837 -0.001948 + 1871 -0.015324 0.006379 0.032972 + 1872 -0.010895 -0.006739 0.002233 + 1873 0.002406 -0.005817 -0.007929 + 1874 0.011974 0.013774 0.020789 + 1875 -0.005616 -0.012309 -0.023698 + 1876 -0.002712 -0.000118 0.000894 + 1877 -0.000559 -0.018665 -0.005699 + 1878 -0.022904 -0.016730 0.007620 + 1879 -0.006235 -0.000119 -0.005440 + 1880 -0.008616 0.001720 0.002602 + 1881 -0.019263 0.001295 0.018377 + 1882 -0.002493 0.002824 -0.002915 + 1883 0.007384 0.000692 0.003462 + 1884 -0.019228 -0.005451 0.005676 + 1885 0.002956 0.004628 -0.002177 + 1886 0.005617 0.021792 -0.005623 + 1887 -0.010771 -0.007154 -0.002600 + 1888 -0.006932 -0.006388 0.001795 + 1889 -0.026638 0.002211 0.017012 + 1890 -0.006429 -0.013703 0.021233 + 1891 0.004179 0.001508 -0.002942 + 1892 -0.015358 0.009799 -0.025507 + 1893 -0.009827 0.001263 -0.015038 + 1894 0.002515 0.004808 -0.006083 + 1895 -0.001395 -0.005178 0.010798 + 1896 0.005498 0.001296 -0.013456 + 1897 -0.006679 0.000004 0.000833 + 1898 -0.006339 0.003210 0.000555 + 1899 -0.007815 -0.000155 0.006317 + 1900 -0.003334 -0.000730 -0.000139 + 1901 -0.003197 -0.021225 -0.009098 + 1902 0.003310 -0.008203 -0.004863 + 1903 -0.007379 0.001152 -0.003847 + 1904 -0.008175 0.003836 -0.004939 + 1905 -0.007216 0.002039 -0.012076 + 1906 -0.002751 -0.006050 -0.001404 + 1907 -0.005827 0.008129 0.005351 + 1908 0.010377 0.010628 0.018761 + 1909 -0.002571 -0.007065 0.006215 + 1910 -0.004848 -0.014622 0.001577 + 1911 -0.004351 -0.002361 0.020679 + 1912 0.006139 0.001291 0.002464 + 1913 0.004939 0.003608 0.002097 + 1914 0.004274 0.000152 0.002451 + 1915 0.002989 0.000832 -0.000352 + 1916 -0.014159 -0.000914 0.002187 + 1917 0.012237 -0.003167 0.009134 + 1918 -0.004575 -0.001662 0.000082 + 1919 -0.007883 -0.002056 0.002571 + 1920 -0.003336 -0.001305 -0.000658 + 1921 0.004366 0.000439 0.001158 + 1922 -0.000155 0.003368 0.010592 + 1923 -0.014972 -0.009424 -0.018312 + 1924 -0.000613 -0.002374 0.000797 + 1925 0.007460 -0.016336 -0.000977 + 1926 -0.006787 0.004573 0.010255 + 1927 -0.002452 -0.000122 0.000124 + 1928 -0.015584 -0.009431 -0.007285 + 1929 -0.000101 0.008080 -0.015191 + 1930 0.002197 0.002310 -0.001612 + 1931 0.016237 -0.005090 0.018070 + 1932 0.001709 -0.003220 -0.011865 + 1933 -0.001150 0.000898 0.004173 + 1934 0.000323 -0.000312 -0.014495 + 1935 0.000516 -0.000491 -0.011422 + 1936 -0.005815 -0.002965 0.000187 + 1937 0.008195 0.018425 -0.027236 + 1938 -0.010921 -0.007575 -0.002217 + 1939 -0.004740 0.002745 0.006330 + 1940 0.002035 0.006523 0.010880 + 1941 -0.012191 0.004818 0.006605 + 1942 -0.003197 -0.004418 -0.003375 + 1943 0.003590 -0.017196 0.008070 + 1944 0.004548 0.006106 0.016045 + 1945 0.005444 0.002200 0.004561 + 1946 0.004448 0.009092 -0.001577 + 1947 -0.000522 0.006033 0.006559 + 1948 0.005450 0.001267 0.002269 + 1949 0.027952 -0.012604 0.001935 + 1950 -0.004826 -0.018174 0.014813 + 1951 0.005498 -0.000626 0.001156 + 1952 0.001428 -0.010472 0.000805 + 1953 -0.010198 -0.005573 -0.014564 + 1954 0.001605 -0.006572 0.005587 + 1955 -0.002403 -0.004981 0.000460 + 1956 0.010287 -0.003414 0.005774 + 1957 -0.005679 0.003540 -0.003175 + 1958 -0.005054 0.005203 -0.002733 + 1959 -0.006462 0.003843 0.002657 + 1960 -0.006606 -0.002499 -0.001538 + 1961 0.027567 -0.002565 0.034908 + 1962 0.001905 -0.003739 -0.001134 + 1963 -0.000871 0.002779 0.006534 + 1964 -0.013473 -0.002631 0.001200 + 1965 -0.008136 0.003625 0.001725 + 1966 0.002375 -0.002767 -0.000214 + 1967 0.015603 0.001192 0.006785 + 1968 -0.008229 0.002751 0.010337 + 1969 -0.002111 -0.006139 0.006236 + 1970 0.025783 -0.003684 0.015052 + 1971 -0.008026 -0.018580 0.028847 + 1972 -0.001966 -0.005103 0.002533 + 1973 0.025504 -0.012928 0.014439 + 1974 0.015919 0.008653 -0.013047 + 1975 -0.002145 -0.003853 -0.002353 + 1976 0.020573 0.023626 0.033600 + 1977 0.002418 -0.000127 0.000258 + 1978 -0.000168 -0.002747 0.002505 + 1979 0.011847 0.007945 0.003222 + 1980 0.002222 -0.001343 0.005437 + 1981 -0.004734 0.003071 -0.000955 + 1982 0.003752 -0.001882 -0.005052 + 1983 -0.008195 0.007844 0.004577 + 1984 0.007575 0.002209 -0.000466 + 1985 -0.005510 0.009650 -0.004399 + 1986 0.018263 0.019292 -0.008157 + 1987 -0.005098 -0.001581 -0.000328 + 1988 -0.004522 -0.021884 -0.005509 + 1989 -0.001598 -0.001668 0.002704 + 1990 -0.000494 0.002205 0.012458 + 1991 0.003153 0.001522 0.015672 + 1992 -0.000092 -0.002603 0.010098 + 1993 0.001919 -0.007389 0.001539 + 1994 -0.002690 -0.003376 -0.009963 + 1995 -0.005006 0.002932 -0.001670 + 1996 -0.003089 -0.005736 0.003689 + 1997 0.010713 -0.027613 -0.023000 + 1998 -0.006878 0.009457 0.006998 + 1999 -0.001817 0.000266 -0.004238 + 2000 -0.010974 0.005190 0.000117 + 2001 -0.008937 -0.003277 0.004337 + 2002 -0.000987 -0.001334 -0.004265 + 2003 -0.022280 -0.011677 -0.018343 + 2004 -0.010076 -0.005729 -0.026032 + +Bonds + + 1 3 1 7 + 2 2 1 3 + 3 1 1 2 + 4 4 2 5 + 5 4 2 6 + 6 4 2 4 + 7 6 7 19 + 8 5 7 8 + 9 1 8 9 + 10 7 8 11 + 11 8 8 20 + 12 3 9 28 + 13 2 9 10 + 14 10 11 21 + 15 9 11 12 + 16 10 11 22 + 17 11 12 14 + 18 11 12 13 + 19 12 13 23 + 20 11 13 15 + 21 12 14 24 + 22 11 14 16 + 23 11 15 17 + 24 12 15 25 + 25 11 16 17 + 26 12 16 26 + 27 13 17 18 + 28 14 18 27 + 29 5 28 29 + 30 6 28 32 + 31 1 29 30 + 32 8 29 33 + 33 8 29 34 + 34 3 30 35 + 35 2 30 31 + 36 5 35 36 + 37 6 35 39 + 38 1 36 37 + 39 8 36 40 + 40 8 36 41 + 41 2 37 38 + 42 3 37 42 + 43 6 42 53 + 44 5 42 43 + 45 1 43 44 + 46 7 43 46 + 47 8 43 54 + 48 3 44 62 + 49 2 44 45 + 50 10 46 56 + 51 10 46 55 + 52 9 46 47 + 53 11 47 48 + 54 11 47 49 + 55 11 48 50 + 56 12 48 57 + 57 11 49 51 + 58 12 49 58 + 59 11 50 52 + 60 12 50 59 + 61 11 51 52 + 62 12 51 60 + 63 12 52 61 + 64 6 62 70 + 65 5 62 63 + 66 7 63 66 + 67 1 63 64 + 68 8 63 71 + 69 2 64 65 + 70 3 64 79 + 71 15 66 67 + 72 10 66 73 + 73 10 66 72 + 74 10 67 75 + 75 10 67 74 + 76 16 67 68 + 77 17 68 69 + 78 4 69 76 + 79 4 69 78 + 80 4 69 77 + 81 5 79 80 + 82 6 79 81 + 83 4 80 84 + 84 4 80 83 + 85 4 80 82 + 86 18 85 86 + 87 18 85 87 + 88 18 88 90 + 89 18 88 89 + 90 18 91 93 + 91 18 91 92 + 92 18 94 96 + 93 18 94 95 + 94 18 97 98 + 95 18 97 99 + 96 18 100 101 + 97 18 100 102 + 98 18 103 104 + 99 18 103 105 + 100 18 106 107 + 101 18 106 108 + 102 18 109 111 + 103 18 109 110 + 104 18 112 114 + 105 18 112 113 + 106 18 115 116 + 107 18 115 117 + 108 18 118 120 + 109 18 118 119 + 110 18 121 123 + 111 18 121 122 + 112 18 124 126 + 113 18 124 125 + 114 18 127 128 + 115 18 127 129 + 116 18 130 132 + 117 18 130 131 + 118 18 133 134 + 119 18 133 135 + 120 18 136 137 + 121 18 136 138 + 122 18 139 140 + 123 18 139 141 + 124 18 142 144 + 125 18 142 143 + 126 18 145 147 + 127 18 145 146 + 128 18 148 150 + 129 18 148 149 + 130 18 151 152 + 131 18 151 153 + 132 18 154 156 + 133 18 154 155 + 134 18 157 159 + 135 18 157 158 + 136 18 160 162 + 137 18 160 161 + 138 18 163 164 + 139 18 163 165 + 140 18 166 168 + 141 18 166 167 + 142 18 169 171 + 143 18 169 170 + 144 18 172 174 + 145 18 172 173 + 146 18 175 177 + 147 18 175 176 + 148 18 178 180 + 149 18 178 179 + 150 18 181 182 + 151 18 181 183 + 152 18 184 186 + 153 18 184 185 + 154 18 187 188 + 155 18 187 189 + 156 18 190 191 + 157 18 190 192 + 158 18 193 194 + 159 18 193 195 + 160 18 196 197 + 161 18 196 198 + 162 18 199 201 + 163 18 199 200 + 164 18 202 204 + 165 18 202 203 + 166 18 205 206 + 167 18 205 207 + 168 18 208 210 + 169 18 208 209 + 170 18 211 212 + 171 18 211 213 + 172 18 214 215 + 173 18 214 216 + 174 18 217 219 + 175 18 217 218 + 176 18 220 222 + 177 18 220 221 + 178 18 223 224 + 179 18 223 225 + 180 18 226 228 + 181 18 226 227 + 182 18 229 231 + 183 18 229 230 + 184 18 232 233 + 185 18 232 234 + 186 18 235 236 + 187 18 235 237 + 188 18 238 240 + 189 18 238 239 + 190 18 241 242 + 191 18 241 243 + 192 18 244 246 + 193 18 244 245 + 194 18 247 248 + 195 18 247 249 + 196 18 250 251 + 197 18 250 252 + 198 18 253 254 + 199 18 253 255 + 200 18 256 257 + 201 18 256 258 + 202 18 259 261 + 203 18 259 260 + 204 18 262 264 + 205 18 262 263 + 206 18 265 266 + 207 18 265 267 + 208 18 268 269 + 209 18 268 270 + 210 18 271 272 + 211 18 271 273 + 212 18 274 275 + 213 18 274 276 + 214 18 277 279 + 215 18 277 278 + 216 18 280 282 + 217 18 280 281 + 218 18 283 284 + 219 18 283 285 + 220 18 286 287 + 221 18 286 288 + 222 18 289 290 + 223 18 289 291 + 224 18 292 294 + 225 18 292 293 + 226 18 295 296 + 227 18 295 297 + 228 18 298 299 + 229 18 298 300 + 230 18 301 303 + 231 18 301 302 + 232 18 304 305 + 233 18 304 306 + 234 18 307 309 + 235 18 307 308 + 236 18 310 311 + 237 18 310 312 + 238 18 313 314 + 239 18 313 315 + 240 18 316 317 + 241 18 316 318 + 242 18 319 321 + 243 18 319 320 + 244 18 322 323 + 245 18 322 324 + 246 18 325 327 + 247 18 325 326 + 248 18 328 329 + 249 18 328 330 + 250 18 331 332 + 251 18 331 333 + 252 18 334 335 + 253 18 334 336 + 254 18 337 339 + 255 18 337 338 + 256 18 340 341 + 257 18 340 342 + 258 18 343 344 + 259 18 343 345 + 260 18 346 347 + 261 18 346 348 + 262 18 349 350 + 263 18 349 351 + 264 18 352 353 + 265 18 352 354 + 266 18 355 356 + 267 18 355 357 + 268 18 358 359 + 269 18 358 360 + 270 18 361 362 + 271 18 361 363 + 272 18 364 365 + 273 18 364 366 + 274 18 367 369 + 275 18 367 368 + 276 18 370 372 + 277 18 370 371 + 278 18 373 374 + 279 18 373 375 + 280 18 376 378 + 281 18 376 377 + 282 18 379 381 + 283 18 379 380 + 284 18 382 383 + 285 18 382 384 + 286 18 385 386 + 287 18 385 387 + 288 18 388 390 + 289 18 388 389 + 290 18 391 393 + 291 18 391 392 + 292 18 394 395 + 293 18 394 396 + 294 18 397 399 + 295 18 397 398 + 296 18 400 402 + 297 18 400 401 + 298 18 403 405 + 299 18 403 404 + 300 18 406 407 + 301 18 406 408 + 302 18 409 411 + 303 18 409 410 + 304 18 412 413 + 305 18 412 414 + 306 18 415 417 + 307 18 415 416 + 308 18 418 420 + 309 18 418 419 + 310 18 421 422 + 311 18 421 423 + 312 18 424 425 + 313 18 424 426 + 314 18 427 428 + 315 18 427 429 + 316 18 430 432 + 317 18 430 431 + 318 18 433 435 + 319 18 433 434 + 320 18 436 437 + 321 18 436 438 + 322 18 439 440 + 323 18 439 441 + 324 18 442 443 + 325 18 442 444 + 326 18 445 447 + 327 18 445 446 + 328 18 448 449 + 329 18 448 450 + 330 18 451 453 + 331 18 451 452 + 332 18 454 456 + 333 18 454 455 + 334 18 457 458 + 335 18 457 459 + 336 18 460 462 + 337 18 460 461 + 338 18 463 465 + 339 18 463 464 + 340 18 466 467 + 341 18 466 468 + 342 18 469 470 + 343 18 469 471 + 344 18 472 473 + 345 18 472 474 + 346 18 475 476 + 347 18 475 477 + 348 18 478 479 + 349 18 478 480 + 350 18 481 482 + 351 18 481 483 + 352 18 484 485 + 353 18 484 486 + 354 18 487 489 + 355 18 487 488 + 356 18 490 492 + 357 18 490 491 + 358 18 493 495 + 359 18 493 494 + 360 18 496 497 + 361 18 496 498 + 362 18 499 501 + 363 18 499 500 + 364 18 502 503 + 365 18 502 504 + 366 18 505 507 + 367 18 505 506 + 368 18 508 509 + 369 18 508 510 + 370 18 511 513 + 371 18 511 512 + 372 18 514 516 + 373 18 514 515 + 374 18 517 518 + 375 18 517 519 + 376 18 520 521 + 377 18 520 522 + 378 18 523 525 + 379 18 523 524 + 380 18 526 528 + 381 18 526 527 + 382 18 529 530 + 383 18 529 531 + 384 18 532 533 + 385 18 532 534 + 386 18 535 536 + 387 18 535 537 + 388 18 538 540 + 389 18 538 539 + 390 18 541 542 + 391 18 541 543 + 392 18 544 546 + 393 18 544 545 + 394 18 547 549 + 395 18 547 548 + 396 18 550 551 + 397 18 550 552 + 398 18 553 555 + 399 18 553 554 + 400 18 556 557 + 401 18 556 558 + 402 18 559 561 + 403 18 559 560 + 404 18 562 563 + 405 18 562 564 + 406 18 565 567 + 407 18 565 566 + 408 18 568 570 + 409 18 568 569 + 410 18 571 573 + 411 18 571 572 + 412 18 574 575 + 413 18 574 576 + 414 18 577 579 + 415 18 577 578 + 416 18 580 581 + 417 18 580 582 + 418 18 583 585 + 419 18 583 584 + 420 18 586 588 + 421 18 586 587 + 422 18 589 590 + 423 18 589 591 + 424 18 592 594 + 425 18 592 593 + 426 18 595 597 + 427 18 595 596 + 428 18 598 600 + 429 18 598 599 + 430 18 601 602 + 431 18 601 603 + 432 18 604 606 + 433 18 604 605 + 434 18 607 609 + 435 18 607 608 + 436 18 610 611 + 437 18 610 612 + 438 18 613 615 + 439 18 613 614 + 440 18 616 618 + 441 18 616 617 + 442 18 619 620 + 443 18 619 621 + 444 18 622 623 + 445 18 622 624 + 446 18 625 627 + 447 18 625 626 + 448 18 628 629 + 449 18 628 630 + 450 18 631 632 + 451 18 631 633 + 452 18 634 635 + 453 18 634 636 + 454 18 637 639 + 455 18 637 638 + 456 18 640 642 + 457 18 640 641 + 458 18 643 644 + 459 18 643 645 + 460 18 646 647 + 461 18 646 648 + 462 18 649 650 + 463 18 649 651 + 464 18 652 653 + 465 18 652 654 + 466 18 655 657 + 467 18 655 656 + 468 18 658 660 + 469 18 658 659 + 470 18 661 663 + 471 18 661 662 + 472 18 664 665 + 473 18 664 666 + 474 18 667 669 + 475 18 667 668 + 476 18 670 672 + 477 18 670 671 + 478 18 673 674 + 479 18 673 675 + 480 18 676 677 + 481 18 676 678 + 482 18 679 681 + 483 18 679 680 + 484 18 682 684 + 485 18 682 683 + 486 18 685 686 + 487 18 685 687 + 488 18 688 690 + 489 18 688 689 + 490 18 691 693 + 491 18 691 692 + 492 18 694 695 + 493 18 694 696 + 494 18 697 698 + 495 18 697 699 + 496 18 700 701 + 497 18 700 702 + 498 18 703 704 + 499 18 703 705 + 500 18 706 707 + 501 18 706 708 + 502 18 709 710 + 503 18 709 711 + 504 18 712 714 + 505 18 712 713 + 506 18 715 716 + 507 18 715 717 + 508 18 718 719 + 509 18 718 720 + 510 18 721 722 + 511 18 721 723 + 512 18 724 726 + 513 18 724 725 + 514 18 727 728 + 515 18 727 729 + 516 18 730 731 + 517 18 730 732 + 518 18 733 735 + 519 18 733 734 + 520 18 736 737 + 521 18 736 738 + 522 18 739 741 + 523 18 739 740 + 524 18 742 743 + 525 18 742 744 + 526 18 745 746 + 527 18 745 747 + 528 18 748 750 + 529 18 748 749 + 530 18 751 753 + 531 18 751 752 + 532 18 754 756 + 533 18 754 755 + 534 18 757 758 + 535 18 757 759 + 536 18 760 762 + 537 18 760 761 + 538 18 763 764 + 539 18 763 765 + 540 18 766 767 + 541 18 766 768 + 542 18 769 770 + 543 18 769 771 + 544 18 772 774 + 545 18 772 773 + 546 18 775 777 + 547 18 775 776 + 548 18 778 780 + 549 18 778 779 + 550 18 781 783 + 551 18 781 782 + 552 18 784 786 + 553 18 784 785 + 554 18 787 789 + 555 18 787 788 + 556 18 790 791 + 557 18 790 792 + 558 18 793 795 + 559 18 793 794 + 560 18 796 797 + 561 18 796 798 + 562 18 799 801 + 563 18 799 800 + 564 18 802 803 + 565 18 802 804 + 566 18 805 806 + 567 18 805 807 + 568 18 808 809 + 569 18 808 810 + 570 18 811 813 + 571 18 811 812 + 572 18 814 815 + 573 18 814 816 + 574 18 817 818 + 575 18 817 819 + 576 18 820 821 + 577 18 820 822 + 578 18 823 824 + 579 18 823 825 + 580 18 826 828 + 581 18 826 827 + 582 18 829 830 + 583 18 829 831 + 584 18 832 834 + 585 18 832 833 + 586 18 835 837 + 587 18 835 836 + 588 18 838 839 + 589 18 838 840 + 590 18 841 842 + 591 18 841 843 + 592 18 844 845 + 593 18 844 846 + 594 18 847 848 + 595 18 847 849 + 596 18 850 852 + 597 18 850 851 + 598 18 853 854 + 599 18 853 855 + 600 18 856 858 + 601 18 856 857 + 602 18 859 861 + 603 18 859 860 + 604 18 862 863 + 605 18 862 864 + 606 18 865 866 + 607 18 865 867 + 608 18 868 869 + 609 18 868 870 + 610 18 871 873 + 611 18 871 872 + 612 18 874 875 + 613 18 874 876 + 614 18 877 878 + 615 18 877 879 + 616 18 880 882 + 617 18 880 881 + 618 18 883 884 + 619 18 883 885 + 620 18 886 887 + 621 18 886 888 + 622 18 889 891 + 623 18 889 890 + 624 18 892 894 + 625 18 892 893 + 626 18 895 896 + 627 18 895 897 + 628 18 898 899 + 629 18 898 900 + 630 18 901 903 + 631 18 901 902 + 632 18 904 905 + 633 18 904 906 + 634 18 907 908 + 635 18 907 909 + 636 18 910 911 + 637 18 910 912 + 638 18 913 915 + 639 18 913 914 + 640 18 916 917 + 641 18 916 918 + 642 18 919 920 + 643 18 919 921 + 644 18 922 924 + 645 18 922 923 + 646 18 925 927 + 647 18 925 926 + 648 18 928 930 + 649 18 928 929 + 650 18 931 932 + 651 18 931 933 + 652 18 934 935 + 653 18 934 936 + 654 18 937 939 + 655 18 937 938 + 656 18 940 942 + 657 18 940 941 + 658 18 943 945 + 659 18 943 944 + 660 18 946 948 + 661 18 946 947 + 662 18 949 950 + 663 18 949 951 + 664 18 952 953 + 665 18 952 954 + 666 18 955 956 + 667 18 955 957 + 668 18 958 960 + 669 18 958 959 + 670 18 961 963 + 671 18 961 962 + 672 18 964 965 + 673 18 964 966 + 674 18 967 969 + 675 18 967 968 + 676 18 970 972 + 677 18 970 971 + 678 18 973 975 + 679 18 973 974 + 680 18 976 978 + 681 18 976 977 + 682 18 979 981 + 683 18 979 980 + 684 18 982 983 + 685 18 982 984 + 686 18 985 987 + 687 18 985 986 + 688 18 988 989 + 689 18 988 990 + 690 18 991 993 + 691 18 991 992 + 692 18 994 996 + 693 18 994 995 + 694 18 997 998 + 695 18 997 999 + 696 18 1000 1001 + 697 18 1000 1002 + 698 18 1003 1005 + 699 18 1003 1004 + 700 18 1006 1007 + 701 18 1006 1008 + 702 18 1009 1011 + 703 18 1009 1010 + 704 18 1012 1013 + 705 18 1012 1014 + 706 18 1015 1017 + 707 18 1015 1016 + 708 18 1018 1020 + 709 18 1018 1019 + 710 18 1021 1023 + 711 18 1021 1022 + 712 18 1024 1025 + 713 18 1024 1026 + 714 18 1027 1028 + 715 18 1027 1029 + 716 18 1030 1032 + 717 18 1030 1031 + 718 18 1033 1034 + 719 18 1033 1035 + 720 18 1036 1037 + 721 18 1036 1038 + 722 18 1039 1041 + 723 18 1039 1040 + 724 18 1042 1043 + 725 18 1042 1044 + 726 18 1045 1046 + 727 18 1045 1047 + 728 18 1048 1050 + 729 18 1048 1049 + 730 18 1051 1053 + 731 18 1051 1052 + 732 18 1054 1056 + 733 18 1054 1055 + 734 18 1057 1058 + 735 18 1057 1059 + 736 18 1060 1062 + 737 18 1060 1061 + 738 18 1063 1064 + 739 18 1063 1065 + 740 18 1066 1068 + 741 18 1066 1067 + 742 18 1069 1071 + 743 18 1069 1070 + 744 18 1072 1074 + 745 18 1072 1073 + 746 18 1075 1077 + 747 18 1075 1076 + 748 18 1078 1079 + 749 18 1078 1080 + 750 18 1081 1082 + 751 18 1081 1083 + 752 18 1084 1085 + 753 18 1084 1086 + 754 18 1087 1089 + 755 18 1087 1088 + 756 18 1090 1092 + 757 18 1090 1091 + 758 18 1093 1095 + 759 18 1093 1094 + 760 18 1096 1097 + 761 18 1096 1098 + 762 18 1099 1100 + 763 18 1099 1101 + 764 18 1102 1103 + 765 18 1102 1104 + 766 18 1105 1107 + 767 18 1105 1106 + 768 18 1108 1110 + 769 18 1108 1109 + 770 18 1111 1112 + 771 18 1111 1113 + 772 18 1114 1116 + 773 18 1114 1115 + 774 18 1117 1119 + 775 18 1117 1118 + 776 18 1120 1121 + 777 18 1120 1122 + 778 18 1123 1124 + 779 18 1123 1125 + 780 18 1126 1128 + 781 18 1126 1127 + 782 18 1129 1130 + 783 18 1129 1131 + 784 18 1132 1133 + 785 18 1132 1134 + 786 18 1135 1137 + 787 18 1135 1136 + 788 18 1138 1140 + 789 18 1138 1139 + 790 18 1141 1142 + 791 18 1141 1143 + 792 18 1144 1146 + 793 18 1144 1145 + 794 18 1147 1149 + 795 18 1147 1148 + 796 18 1150 1152 + 797 18 1150 1151 + 798 18 1153 1155 + 799 18 1153 1154 + 800 18 1156 1158 + 801 18 1156 1157 + 802 18 1159 1160 + 803 18 1159 1161 + 804 18 1162 1164 + 805 18 1162 1163 + 806 18 1165 1166 + 807 18 1165 1167 + 808 18 1168 1170 + 809 18 1168 1169 + 810 18 1171 1172 + 811 18 1171 1173 + 812 18 1174 1175 + 813 18 1174 1176 + 814 18 1177 1179 + 815 18 1177 1178 + 816 18 1180 1182 + 817 18 1180 1181 + 818 18 1183 1185 + 819 18 1183 1184 + 820 18 1186 1187 + 821 18 1186 1188 + 822 18 1189 1190 + 823 18 1189 1191 + 824 18 1192 1194 + 825 18 1192 1193 + 826 18 1195 1196 + 827 18 1195 1197 + 828 18 1198 1199 + 829 18 1198 1200 + 830 18 1201 1202 + 831 18 1201 1203 + 832 18 1204 1205 + 833 18 1204 1206 + 834 18 1207 1209 + 835 18 1207 1208 + 836 18 1210 1212 + 837 18 1210 1211 + 838 18 1213 1214 + 839 18 1213 1215 + 840 18 1216 1218 + 841 18 1216 1217 + 842 18 1219 1221 + 843 18 1219 1220 + 844 18 1222 1224 + 845 18 1222 1223 + 846 18 1225 1226 + 847 18 1225 1227 + 848 18 1228 1229 + 849 18 1228 1230 + 850 18 1231 1232 + 851 18 1231 1233 + 852 18 1234 1236 + 853 18 1234 1235 + 854 18 1237 1239 + 855 18 1237 1238 + 856 18 1240 1242 + 857 18 1240 1241 + 858 18 1243 1244 + 859 18 1243 1245 + 860 18 1246 1248 + 861 18 1246 1247 + 862 18 1249 1250 + 863 18 1249 1251 + 864 18 1252 1254 + 865 18 1252 1253 + 866 18 1255 1256 + 867 18 1255 1257 + 868 18 1258 1259 + 869 18 1258 1260 + 870 18 1261 1263 + 871 18 1261 1262 + 872 18 1264 1265 + 873 18 1264 1266 + 874 18 1267 1268 + 875 18 1267 1269 + 876 18 1270 1271 + 877 18 1270 1272 + 878 18 1273 1274 + 879 18 1273 1275 + 880 18 1276 1277 + 881 18 1276 1278 + 882 18 1279 1280 + 883 18 1279 1281 + 884 18 1282 1283 + 885 18 1282 1284 + 886 18 1285 1286 + 887 18 1285 1287 + 888 18 1288 1289 + 889 18 1288 1290 + 890 18 1291 1293 + 891 18 1291 1292 + 892 18 1294 1295 + 893 18 1294 1296 + 894 18 1297 1299 + 895 18 1297 1298 + 896 18 1300 1302 + 897 18 1300 1301 + 898 18 1303 1304 + 899 18 1303 1305 + 900 18 1306 1308 + 901 18 1306 1307 + 902 18 1309 1311 + 903 18 1309 1310 + 904 18 1312 1314 + 905 18 1312 1313 + 906 18 1315 1317 + 907 18 1315 1316 + 908 18 1318 1320 + 909 18 1318 1319 + 910 18 1321 1323 + 911 18 1321 1322 + 912 18 1324 1325 + 913 18 1324 1326 + 914 18 1327 1329 + 915 18 1327 1328 + 916 18 1330 1332 + 917 18 1330 1331 + 918 18 1333 1334 + 919 18 1333 1335 + 920 18 1336 1337 + 921 18 1336 1338 + 922 18 1339 1340 + 923 18 1339 1341 + 924 18 1342 1344 + 925 18 1342 1343 + 926 18 1345 1347 + 927 18 1345 1346 + 928 18 1348 1350 + 929 18 1348 1349 + 930 18 1351 1352 + 931 18 1351 1353 + 932 18 1354 1355 + 933 18 1354 1356 + 934 18 1357 1358 + 935 18 1357 1359 + 936 18 1360 1362 + 937 18 1360 1361 + 938 18 1363 1365 + 939 18 1363 1364 + 940 18 1366 1368 + 941 18 1366 1367 + 942 18 1369 1370 + 943 18 1369 1371 + 944 18 1372 1373 + 945 18 1372 1374 + 946 18 1375 1377 + 947 18 1375 1376 + 948 18 1378 1379 + 949 18 1378 1380 + 950 18 1381 1382 + 951 18 1381 1383 + 952 18 1384 1385 + 953 18 1384 1386 + 954 18 1387 1388 + 955 18 1387 1389 + 956 18 1390 1392 + 957 18 1390 1391 + 958 18 1393 1395 + 959 18 1393 1394 + 960 18 1396 1397 + 961 18 1396 1398 + 962 18 1399 1401 + 963 18 1399 1400 + 964 18 1402 1403 + 965 18 1402 1404 + 966 18 1405 1406 + 967 18 1405 1407 + 968 18 1408 1409 + 969 18 1408 1410 + 970 18 1411 1412 + 971 18 1411 1413 + 972 18 1414 1416 + 973 18 1414 1415 + 974 18 1417 1419 + 975 18 1417 1418 + 976 18 1420 1422 + 977 18 1420 1421 + 978 18 1423 1425 + 979 18 1423 1424 + 980 18 1426 1428 + 981 18 1426 1427 + 982 18 1429 1430 + 983 18 1429 1431 + 984 18 1432 1434 + 985 18 1432 1433 + 986 18 1435 1436 + 987 18 1435 1437 + 988 18 1438 1439 + 989 18 1438 1440 + 990 18 1441 1442 + 991 18 1441 1443 + 992 18 1444 1445 + 993 18 1444 1446 + 994 18 1447 1448 + 995 18 1447 1449 + 996 18 1450 1451 + 997 18 1450 1452 + 998 18 1453 1455 + 999 18 1453 1454 + 1000 18 1456 1457 + 1001 18 1456 1458 + 1002 18 1459 1461 + 1003 18 1459 1460 + 1004 18 1462 1463 + 1005 18 1462 1464 + 1006 18 1465 1466 + 1007 18 1465 1467 + 1008 18 1468 1470 + 1009 18 1468 1469 + 1010 18 1471 1472 + 1011 18 1471 1473 + 1012 18 1474 1476 + 1013 18 1474 1475 + 1014 18 1477 1478 + 1015 18 1477 1479 + 1016 18 1480 1482 + 1017 18 1480 1481 + 1018 18 1483 1485 + 1019 18 1483 1484 + 1020 18 1486 1488 + 1021 18 1486 1487 + 1022 18 1489 1491 + 1023 18 1489 1490 + 1024 18 1492 1493 + 1025 18 1492 1494 + 1026 18 1495 1496 + 1027 18 1495 1497 + 1028 18 1498 1499 + 1029 18 1498 1500 + 1030 18 1501 1502 + 1031 18 1501 1503 + 1032 18 1504 1505 + 1033 18 1504 1506 + 1034 18 1507 1509 + 1035 18 1507 1508 + 1036 18 1510 1512 + 1037 18 1510 1511 + 1038 18 1513 1515 + 1039 18 1513 1514 + 1040 18 1516 1518 + 1041 18 1516 1517 + 1042 18 1519 1520 + 1043 18 1519 1521 + 1044 18 1522 1524 + 1045 18 1522 1523 + 1046 18 1525 1526 + 1047 18 1525 1527 + 1048 18 1528 1529 + 1049 18 1528 1530 + 1050 18 1531 1533 + 1051 18 1531 1532 + 1052 18 1534 1536 + 1053 18 1534 1535 + 1054 18 1537 1539 + 1055 18 1537 1538 + 1056 18 1540 1541 + 1057 18 1540 1542 + 1058 18 1543 1545 + 1059 18 1543 1544 + 1060 18 1546 1547 + 1061 18 1546 1548 + 1062 18 1549 1551 + 1063 18 1549 1550 + 1064 18 1552 1553 + 1065 18 1552 1554 + 1066 18 1555 1557 + 1067 18 1555 1556 + 1068 18 1558 1559 + 1069 18 1558 1560 + 1070 18 1561 1562 + 1071 18 1561 1563 + 1072 18 1564 1565 + 1073 18 1564 1566 + 1074 18 1567 1569 + 1075 18 1567 1568 + 1076 18 1570 1571 + 1077 18 1570 1572 + 1078 18 1573 1575 + 1079 18 1573 1574 + 1080 18 1576 1578 + 1081 18 1576 1577 + 1082 18 1579 1581 + 1083 18 1579 1580 + 1084 18 1582 1584 + 1085 18 1582 1583 + 1086 18 1585 1586 + 1087 18 1585 1587 + 1088 18 1588 1590 + 1089 18 1588 1589 + 1090 18 1591 1592 + 1091 18 1591 1593 + 1092 18 1594 1596 + 1093 18 1594 1595 + 1094 18 1597 1598 + 1095 18 1597 1599 + 1096 18 1600 1602 + 1097 18 1600 1601 + 1098 18 1603 1605 + 1099 18 1603 1604 + 1100 18 1606 1608 + 1101 18 1606 1607 + 1102 18 1609 1610 + 1103 18 1609 1611 + 1104 18 1612 1614 + 1105 18 1612 1613 + 1106 18 1615 1617 + 1107 18 1615 1616 + 1108 18 1618 1620 + 1109 18 1618 1619 + 1110 18 1621 1623 + 1111 18 1621 1622 + 1112 18 1624 1625 + 1113 18 1624 1626 + 1114 18 1627 1629 + 1115 18 1627 1628 + 1116 18 1630 1631 + 1117 18 1630 1632 + 1118 18 1633 1635 + 1119 18 1633 1634 + 1120 18 1636 1637 + 1121 18 1636 1638 + 1122 18 1639 1641 + 1123 18 1639 1640 + 1124 18 1642 1643 + 1125 18 1642 1644 + 1126 18 1645 1646 + 1127 18 1645 1647 + 1128 18 1648 1650 + 1129 18 1648 1649 + 1130 18 1651 1653 + 1131 18 1651 1652 + 1132 18 1654 1656 + 1133 18 1654 1655 + 1134 18 1657 1658 + 1135 18 1657 1659 + 1136 18 1660 1661 + 1137 18 1660 1662 + 1138 18 1663 1664 + 1139 18 1663 1665 + 1140 18 1666 1668 + 1141 18 1666 1667 + 1142 18 1669 1670 + 1143 18 1669 1671 + 1144 18 1672 1674 + 1145 18 1672 1673 + 1146 18 1675 1676 + 1147 18 1675 1677 + 1148 18 1678 1680 + 1149 18 1678 1679 + 1150 18 1681 1683 + 1151 18 1681 1682 + 1152 18 1684 1685 + 1153 18 1684 1686 + 1154 18 1687 1688 + 1155 18 1687 1689 + 1156 18 1690 1691 + 1157 18 1690 1692 + 1158 18 1693 1695 + 1159 18 1693 1694 + 1160 18 1696 1697 + 1161 18 1696 1698 + 1162 18 1699 1701 + 1163 18 1699 1700 + 1164 18 1702 1703 + 1165 18 1702 1704 + 1166 18 1705 1707 + 1167 18 1705 1706 + 1168 18 1708 1709 + 1169 18 1708 1710 + 1170 18 1711 1712 + 1171 18 1711 1713 + 1172 18 1714 1716 + 1173 18 1714 1715 + 1174 18 1717 1718 + 1175 18 1717 1719 + 1176 18 1720 1721 + 1177 18 1720 1722 + 1178 18 1723 1724 + 1179 18 1723 1725 + 1180 18 1726 1727 + 1181 18 1726 1728 + 1182 18 1729 1730 + 1183 18 1729 1731 + 1184 18 1732 1734 + 1185 18 1732 1733 + 1186 18 1735 1737 + 1187 18 1735 1736 + 1188 18 1738 1740 + 1189 18 1738 1739 + 1190 18 1741 1743 + 1191 18 1741 1742 + 1192 18 1744 1745 + 1193 18 1744 1746 + 1194 18 1747 1749 + 1195 18 1747 1748 + 1196 18 1750 1751 + 1197 18 1750 1752 + 1198 18 1753 1755 + 1199 18 1753 1754 + 1200 18 1756 1758 + 1201 18 1756 1757 + 1202 18 1759 1760 + 1203 18 1759 1761 + 1204 18 1762 1764 + 1205 18 1762 1763 + 1206 18 1765 1767 + 1207 18 1765 1766 + 1208 18 1768 1769 + 1209 18 1768 1770 + 1210 18 1771 1773 + 1211 18 1771 1772 + 1212 18 1774 1776 + 1213 18 1774 1775 + 1214 18 1777 1779 + 1215 18 1777 1778 + 1216 18 1780 1781 + 1217 18 1780 1782 + 1218 18 1783 1784 + 1219 18 1783 1785 + 1220 18 1786 1787 + 1221 18 1786 1788 + 1222 18 1789 1790 + 1223 18 1789 1791 + 1224 18 1792 1793 + 1225 18 1792 1794 + 1226 18 1795 1796 + 1227 18 1795 1797 + 1228 18 1798 1799 + 1229 18 1798 1800 + 1230 18 1801 1803 + 1231 18 1801 1802 + 1232 18 1804 1806 + 1233 18 1804 1805 + 1234 18 1807 1809 + 1235 18 1807 1808 + 1236 18 1810 1812 + 1237 18 1810 1811 + 1238 18 1813 1815 + 1239 18 1813 1814 + 1240 18 1816 1818 + 1241 18 1816 1817 + 1242 18 1819 1821 + 1243 18 1819 1820 + 1244 18 1822 1823 + 1245 18 1822 1824 + 1246 18 1825 1827 + 1247 18 1825 1826 + 1248 18 1828 1830 + 1249 18 1828 1829 + 1250 18 1831 1832 + 1251 18 1831 1833 + 1252 18 1834 1835 + 1253 18 1834 1836 + 1254 18 1837 1838 + 1255 18 1837 1839 + 1256 18 1840 1842 + 1257 18 1840 1841 + 1258 18 1843 1845 + 1259 18 1843 1844 + 1260 18 1846 1848 + 1261 18 1846 1847 + 1262 18 1849 1851 + 1263 18 1849 1850 + 1264 18 1852 1854 + 1265 18 1852 1853 + 1266 18 1855 1856 + 1267 18 1855 1857 + 1268 18 1858 1859 + 1269 18 1858 1860 + 1270 18 1861 1862 + 1271 18 1861 1863 + 1272 18 1864 1866 + 1273 18 1864 1865 + 1274 18 1867 1869 + 1275 18 1867 1868 + 1276 18 1870 1871 + 1277 18 1870 1872 + 1278 18 1873 1874 + 1279 18 1873 1875 + 1280 18 1876 1877 + 1281 18 1876 1878 + 1282 18 1879 1881 + 1283 18 1879 1880 + 1284 18 1882 1883 + 1285 18 1882 1884 + 1286 18 1885 1886 + 1287 18 1885 1887 + 1288 18 1888 1890 + 1289 18 1888 1889 + 1290 18 1891 1892 + 1291 18 1891 1893 + 1292 18 1894 1896 + 1293 18 1894 1895 + 1294 18 1897 1898 + 1295 18 1897 1899 + 1296 18 1900 1902 + 1297 18 1900 1901 + 1298 18 1903 1905 + 1299 18 1903 1904 + 1300 18 1906 1908 + 1301 18 1906 1907 + 1302 18 1909 1911 + 1303 18 1909 1910 + 1304 18 1912 1913 + 1305 18 1912 1914 + 1306 18 1915 1916 + 1307 18 1915 1917 + 1308 18 1918 1920 + 1309 18 1918 1919 + 1310 18 1921 1923 + 1311 18 1921 1922 + 1312 18 1924 1926 + 1313 18 1924 1925 + 1314 18 1927 1929 + 1315 18 1927 1928 + 1316 18 1930 1932 + 1317 18 1930 1931 + 1318 18 1933 1935 + 1319 18 1933 1934 + 1320 18 1936 1937 + 1321 18 1936 1938 + 1322 18 1939 1940 + 1323 18 1939 1941 + 1324 18 1942 1944 + 1325 18 1942 1943 + 1326 18 1945 1947 + 1327 18 1945 1946 + 1328 18 1948 1950 + 1329 18 1948 1949 + 1330 18 1951 1953 + 1331 18 1951 1952 + 1332 18 1954 1955 + 1333 18 1954 1956 + 1334 18 1957 1959 + 1335 18 1957 1958 + 1336 18 1960 1961 + 1337 18 1960 1962 + 1338 18 1963 1965 + 1339 18 1963 1964 + 1340 18 1966 1967 + 1341 18 1966 1968 + 1342 18 1969 1970 + 1343 18 1969 1971 + 1344 18 1972 1974 + 1345 18 1972 1973 + 1346 18 1975 1977 + 1347 18 1975 1976 + 1348 18 1978 1979 + 1349 18 1978 1980 + 1350 18 1981 1982 + 1351 18 1981 1983 + 1352 18 1984 1986 + 1353 18 1984 1985 + 1354 18 1987 1988 + 1355 18 1987 1989 + 1356 18 1990 1992 + 1357 18 1990 1991 + 1358 18 1993 1995 + 1359 18 1993 1994 + 1360 18 1996 1998 + 1361 18 1996 1997 + 1362 18 1999 2000 + 1363 18 1999 2001 + 1364 18 2002 2004 + 1365 18 2002 2003 + +Angles + + 1 5 2 1 7 + 2 4 2 1 3 + 3 6 3 1 7 + 4 7 4 2 5 + 5 7 5 2 6 + 6 1 1 2 5 + 7 1 1 2 6 + 8 1 1 2 4 + 9 7 4 2 6 + 10 2 1 7 8 + 11 3 1 7 19 + 12 11 8 7 19 + 13 9 7 8 11 + 14 8 7 8 9 + 15 16 11 8 20 + 16 15 9 8 20 + 17 14 9 8 11 + 18 10 7 8 20 + 19 5 8 9 28 + 20 4 8 9 10 + 21 6 10 9 28 + 22 18 12 11 22 + 23 23 21 11 22 + 24 12 8 11 12 + 25 13 8 11 21 + 26 18 12 11 21 + 27 13 8 11 22 + 28 19 13 12 14 + 29 17 11 12 14 + 30 17 11 12 13 + 31 20 15 13 23 + 32 20 12 13 23 + 33 19 12 13 15 + 34 20 12 14 24 + 35 20 16 14 24 + 36 19 12 14 16 + 37 20 13 15 25 + 38 20 17 15 25 + 39 19 13 15 17 + 40 20 14 16 26 + 41 19 14 16 17 + 42 20 17 16 26 + 43 21 15 17 18 + 44 19 15 17 16 + 45 21 16 17 18 + 46 22 17 18 27 + 47 2 9 28 29 + 48 3 9 28 32 + 49 11 29 28 32 + 50 15 30 29 34 + 51 10 28 29 33 + 52 10 28 29 34 + 53 15 30 29 33 + 54 24 33 29 34 + 55 8 28 29 30 + 56 6 31 30 35 + 57 5 29 30 35 + 58 4 29 30 31 + 59 2 30 35 36 + 60 3 30 35 39 + 61 11 36 35 39 + 62 8 35 36 37 + 63 10 35 36 41 + 64 10 35 36 40 + 65 24 40 36 41 + 66 15 37 36 40 + 67 15 37 36 41 + 68 6 38 37 42 + 69 5 36 37 42 + 70 4 36 37 38 + 71 11 43 42 53 + 72 2 37 42 43 + 73 3 37 42 53 + 74 10 42 43 54 + 75 16 46 43 54 + 76 14 44 43 46 + 77 9 42 43 46 + 78 8 42 43 44 + 79 15 44 43 54 + 80 5 43 44 62 + 81 6 45 44 62 + 82 4 43 44 45 + 83 13 43 46 55 + 84 13 43 46 56 + 85 12 43 46 47 + 86 23 55 46 56 + 87 18 47 46 56 + 88 18 47 46 55 + 89 17 46 47 49 + 90 17 46 47 48 + 91 19 48 47 49 + 92 20 50 48 57 + 93 19 47 48 50 + 94 20 47 48 57 + 95 20 51 49 58 + 96 19 47 49 51 + 97 20 47 49 58 + 98 20 48 50 59 + 99 19 48 50 52 + 100 20 52 50 59 + 101 20 52 51 60 + 102 20 49 51 60 + 103 19 49 51 52 + 104 20 50 52 61 + 105 19 50 52 51 + 106 20 51 52 61 + 107 2 44 62 63 + 108 3 44 62 70 + 109 11 63 62 70 + 110 16 66 63 71 + 111 15 64 63 71 + 112 14 64 63 66 + 113 10 62 63 71 + 114 9 62 63 66 + 115 8 62 63 64 + 116 4 63 64 65 + 117 6 65 64 79 + 118 5 63 64 79 + 119 23 72 66 73 + 120 27 67 66 73 + 121 27 67 66 72 + 122 25 63 66 67 + 123 13 63 66 73 + 124 13 63 66 72 + 125 29 68 67 75 + 126 23 74 67 75 + 127 29 68 67 74 + 128 26 66 67 68 + 129 27 66 67 74 + 130 27 66 67 75 + 131 28 67 68 69 + 132 29 68 69 76 + 133 29 68 69 77 + 134 29 68 69 78 + 135 7 76 69 78 + 136 7 76 69 77 + 137 7 77 69 78 + 138 3 64 79 81 + 139 2 64 79 80 + 140 11 80 79 81 + 141 7 83 80 84 + 142 30 79 80 84 + 143 7 82 80 83 + 144 30 79 80 83 + 145 30 79 80 82 + 146 7 82 80 84 + 147 31 86 85 87 + 148 31 89 88 90 + 149 31 92 91 93 + 150 31 95 94 96 + 151 31 98 97 99 + 152 31 101 100 102 + 153 31 104 103 105 + 154 31 107 106 108 + 155 31 110 109 111 + 156 31 113 112 114 + 157 31 116 115 117 + 158 31 119 118 120 + 159 31 122 121 123 + 160 31 125 124 126 + 161 31 128 127 129 + 162 31 131 130 132 + 163 31 134 133 135 + 164 31 137 136 138 + 165 31 140 139 141 + 166 31 143 142 144 + 167 31 146 145 147 + 168 31 149 148 150 + 169 31 152 151 153 + 170 31 155 154 156 + 171 31 158 157 159 + 172 31 161 160 162 + 173 31 164 163 165 + 174 31 167 166 168 + 175 31 170 169 171 + 176 31 173 172 174 + 177 31 176 175 177 + 178 31 179 178 180 + 179 31 182 181 183 + 180 31 185 184 186 + 181 31 188 187 189 + 182 31 191 190 192 + 183 31 194 193 195 + 184 31 197 196 198 + 185 31 200 199 201 + 186 31 203 202 204 + 187 31 206 205 207 + 188 31 209 208 210 + 189 31 212 211 213 + 190 31 215 214 216 + 191 31 218 217 219 + 192 31 221 220 222 + 193 31 224 223 225 + 194 31 227 226 228 + 195 31 230 229 231 + 196 31 233 232 234 + 197 31 236 235 237 + 198 31 239 238 240 + 199 31 242 241 243 + 200 31 245 244 246 + 201 31 248 247 249 + 202 31 251 250 252 + 203 31 254 253 255 + 204 31 257 256 258 + 205 31 260 259 261 + 206 31 263 262 264 + 207 31 266 265 267 + 208 31 269 268 270 + 209 31 272 271 273 + 210 31 275 274 276 + 211 31 278 277 279 + 212 31 281 280 282 + 213 31 284 283 285 + 214 31 287 286 288 + 215 31 290 289 291 + 216 31 293 292 294 + 217 31 296 295 297 + 218 31 299 298 300 + 219 31 302 301 303 + 220 31 305 304 306 + 221 31 308 307 309 + 222 31 311 310 312 + 223 31 314 313 315 + 224 31 317 316 318 + 225 31 320 319 321 + 226 31 323 322 324 + 227 31 326 325 327 + 228 31 329 328 330 + 229 31 332 331 333 + 230 31 335 334 336 + 231 31 338 337 339 + 232 31 341 340 342 + 233 31 344 343 345 + 234 31 347 346 348 + 235 31 350 349 351 + 236 31 353 352 354 + 237 31 356 355 357 + 238 31 359 358 360 + 239 31 362 361 363 + 240 31 365 364 366 + 241 31 368 367 369 + 242 31 371 370 372 + 243 31 374 373 375 + 244 31 377 376 378 + 245 31 380 379 381 + 246 31 383 382 384 + 247 31 386 385 387 + 248 31 389 388 390 + 249 31 392 391 393 + 250 31 395 394 396 + 251 31 398 397 399 + 252 31 401 400 402 + 253 31 404 403 405 + 254 31 407 406 408 + 255 31 410 409 411 + 256 31 413 412 414 + 257 31 416 415 417 + 258 31 419 418 420 + 259 31 422 421 423 + 260 31 425 424 426 + 261 31 428 427 429 + 262 31 431 430 432 + 263 31 434 433 435 + 264 31 437 436 438 + 265 31 440 439 441 + 266 31 443 442 444 + 267 31 446 445 447 + 268 31 449 448 450 + 269 31 452 451 453 + 270 31 455 454 456 + 271 31 458 457 459 + 272 31 461 460 462 + 273 31 464 463 465 + 274 31 467 466 468 + 275 31 470 469 471 + 276 31 473 472 474 + 277 31 476 475 477 + 278 31 479 478 480 + 279 31 482 481 483 + 280 31 485 484 486 + 281 31 488 487 489 + 282 31 491 490 492 + 283 31 494 493 495 + 284 31 497 496 498 + 285 31 500 499 501 + 286 31 503 502 504 + 287 31 506 505 507 + 288 31 509 508 510 + 289 31 512 511 513 + 290 31 515 514 516 + 291 31 518 517 519 + 292 31 521 520 522 + 293 31 524 523 525 + 294 31 527 526 528 + 295 31 530 529 531 + 296 31 533 532 534 + 297 31 536 535 537 + 298 31 539 538 540 + 299 31 542 541 543 + 300 31 545 544 546 + 301 31 548 547 549 + 302 31 551 550 552 + 303 31 554 553 555 + 304 31 557 556 558 + 305 31 560 559 561 + 306 31 563 562 564 + 307 31 566 565 567 + 308 31 569 568 570 + 309 31 572 571 573 + 310 31 575 574 576 + 311 31 578 577 579 + 312 31 581 580 582 + 313 31 584 583 585 + 314 31 587 586 588 + 315 31 590 589 591 + 316 31 593 592 594 + 317 31 596 595 597 + 318 31 599 598 600 + 319 31 602 601 603 + 320 31 605 604 606 + 321 31 608 607 609 + 322 31 611 610 612 + 323 31 614 613 615 + 324 31 617 616 618 + 325 31 620 619 621 + 326 31 623 622 624 + 327 31 626 625 627 + 328 31 629 628 630 + 329 31 632 631 633 + 330 31 635 634 636 + 331 31 638 637 639 + 332 31 641 640 642 + 333 31 644 643 645 + 334 31 647 646 648 + 335 31 650 649 651 + 336 31 653 652 654 + 337 31 656 655 657 + 338 31 659 658 660 + 339 31 662 661 663 + 340 31 665 664 666 + 341 31 668 667 669 + 342 31 671 670 672 + 343 31 674 673 675 + 344 31 677 676 678 + 345 31 680 679 681 + 346 31 683 682 684 + 347 31 686 685 687 + 348 31 689 688 690 + 349 31 692 691 693 + 350 31 695 694 696 + 351 31 698 697 699 + 352 31 701 700 702 + 353 31 704 703 705 + 354 31 707 706 708 + 355 31 710 709 711 + 356 31 713 712 714 + 357 31 716 715 717 + 358 31 719 718 720 + 359 31 722 721 723 + 360 31 725 724 726 + 361 31 728 727 729 + 362 31 731 730 732 + 363 31 734 733 735 + 364 31 737 736 738 + 365 31 740 739 741 + 366 31 743 742 744 + 367 31 746 745 747 + 368 31 749 748 750 + 369 31 752 751 753 + 370 31 755 754 756 + 371 31 758 757 759 + 372 31 761 760 762 + 373 31 764 763 765 + 374 31 767 766 768 + 375 31 770 769 771 + 376 31 773 772 774 + 377 31 776 775 777 + 378 31 779 778 780 + 379 31 782 781 783 + 380 31 785 784 786 + 381 31 788 787 789 + 382 31 791 790 792 + 383 31 794 793 795 + 384 31 797 796 798 + 385 31 800 799 801 + 386 31 803 802 804 + 387 31 806 805 807 + 388 31 809 808 810 + 389 31 812 811 813 + 390 31 815 814 816 + 391 31 818 817 819 + 392 31 821 820 822 + 393 31 824 823 825 + 394 31 827 826 828 + 395 31 830 829 831 + 396 31 833 832 834 + 397 31 836 835 837 + 398 31 839 838 840 + 399 31 842 841 843 + 400 31 845 844 846 + 401 31 848 847 849 + 402 31 851 850 852 + 403 31 854 853 855 + 404 31 857 856 858 + 405 31 860 859 861 + 406 31 863 862 864 + 407 31 866 865 867 + 408 31 869 868 870 + 409 31 872 871 873 + 410 31 875 874 876 + 411 31 878 877 879 + 412 31 881 880 882 + 413 31 884 883 885 + 414 31 887 886 888 + 415 31 890 889 891 + 416 31 893 892 894 + 417 31 896 895 897 + 418 31 899 898 900 + 419 31 902 901 903 + 420 31 905 904 906 + 421 31 908 907 909 + 422 31 911 910 912 + 423 31 914 913 915 + 424 31 917 916 918 + 425 31 920 919 921 + 426 31 923 922 924 + 427 31 926 925 927 + 428 31 929 928 930 + 429 31 932 931 933 + 430 31 935 934 936 + 431 31 938 937 939 + 432 31 941 940 942 + 433 31 944 943 945 + 434 31 947 946 948 + 435 31 950 949 951 + 436 31 953 952 954 + 437 31 956 955 957 + 438 31 959 958 960 + 439 31 962 961 963 + 440 31 965 964 966 + 441 31 968 967 969 + 442 31 971 970 972 + 443 31 974 973 975 + 444 31 977 976 978 + 445 31 980 979 981 + 446 31 983 982 984 + 447 31 986 985 987 + 448 31 989 988 990 + 449 31 992 991 993 + 450 31 995 994 996 + 451 31 998 997 999 + 452 31 1001 1000 1002 + 453 31 1004 1003 1005 + 454 31 1007 1006 1008 + 455 31 1010 1009 1011 + 456 31 1013 1012 1014 + 457 31 1016 1015 1017 + 458 31 1019 1018 1020 + 459 31 1022 1021 1023 + 460 31 1025 1024 1026 + 461 31 1028 1027 1029 + 462 31 1031 1030 1032 + 463 31 1034 1033 1035 + 464 31 1037 1036 1038 + 465 31 1040 1039 1041 + 466 31 1043 1042 1044 + 467 31 1046 1045 1047 + 468 31 1049 1048 1050 + 469 31 1052 1051 1053 + 470 31 1055 1054 1056 + 471 31 1058 1057 1059 + 472 31 1061 1060 1062 + 473 31 1064 1063 1065 + 474 31 1067 1066 1068 + 475 31 1070 1069 1071 + 476 31 1073 1072 1074 + 477 31 1076 1075 1077 + 478 31 1079 1078 1080 + 479 31 1082 1081 1083 + 480 31 1085 1084 1086 + 481 31 1088 1087 1089 + 482 31 1091 1090 1092 + 483 31 1094 1093 1095 + 484 31 1097 1096 1098 + 485 31 1100 1099 1101 + 486 31 1103 1102 1104 + 487 31 1106 1105 1107 + 488 31 1109 1108 1110 + 489 31 1112 1111 1113 + 490 31 1115 1114 1116 + 491 31 1118 1117 1119 + 492 31 1121 1120 1122 + 493 31 1124 1123 1125 + 494 31 1127 1126 1128 + 495 31 1130 1129 1131 + 496 31 1133 1132 1134 + 497 31 1136 1135 1137 + 498 31 1139 1138 1140 + 499 31 1142 1141 1143 + 500 31 1145 1144 1146 + 501 31 1148 1147 1149 + 502 31 1151 1150 1152 + 503 31 1154 1153 1155 + 504 31 1157 1156 1158 + 505 31 1160 1159 1161 + 506 31 1163 1162 1164 + 507 31 1166 1165 1167 + 508 31 1169 1168 1170 + 509 31 1172 1171 1173 + 510 31 1175 1174 1176 + 511 31 1178 1177 1179 + 512 31 1181 1180 1182 + 513 31 1184 1183 1185 + 514 31 1187 1186 1188 + 515 31 1190 1189 1191 + 516 31 1193 1192 1194 + 517 31 1196 1195 1197 + 518 31 1199 1198 1200 + 519 31 1202 1201 1203 + 520 31 1205 1204 1206 + 521 31 1208 1207 1209 + 522 31 1211 1210 1212 + 523 31 1214 1213 1215 + 524 31 1217 1216 1218 + 525 31 1220 1219 1221 + 526 31 1223 1222 1224 + 527 31 1226 1225 1227 + 528 31 1229 1228 1230 + 529 31 1232 1231 1233 + 530 31 1235 1234 1236 + 531 31 1238 1237 1239 + 532 31 1241 1240 1242 + 533 31 1244 1243 1245 + 534 31 1247 1246 1248 + 535 31 1250 1249 1251 + 536 31 1253 1252 1254 + 537 31 1256 1255 1257 + 538 31 1259 1258 1260 + 539 31 1262 1261 1263 + 540 31 1265 1264 1266 + 541 31 1268 1267 1269 + 542 31 1271 1270 1272 + 543 31 1274 1273 1275 + 544 31 1277 1276 1278 + 545 31 1280 1279 1281 + 546 31 1283 1282 1284 + 547 31 1286 1285 1287 + 548 31 1289 1288 1290 + 549 31 1292 1291 1293 + 550 31 1295 1294 1296 + 551 31 1298 1297 1299 + 552 31 1301 1300 1302 + 553 31 1304 1303 1305 + 554 31 1307 1306 1308 + 555 31 1310 1309 1311 + 556 31 1313 1312 1314 + 557 31 1316 1315 1317 + 558 31 1319 1318 1320 + 559 31 1322 1321 1323 + 560 31 1325 1324 1326 + 561 31 1328 1327 1329 + 562 31 1331 1330 1332 + 563 31 1334 1333 1335 + 564 31 1337 1336 1338 + 565 31 1340 1339 1341 + 566 31 1343 1342 1344 + 567 31 1346 1345 1347 + 568 31 1349 1348 1350 + 569 31 1352 1351 1353 + 570 31 1355 1354 1356 + 571 31 1358 1357 1359 + 572 31 1361 1360 1362 + 573 31 1364 1363 1365 + 574 31 1367 1366 1368 + 575 31 1370 1369 1371 + 576 31 1373 1372 1374 + 577 31 1376 1375 1377 + 578 31 1379 1378 1380 + 579 31 1382 1381 1383 + 580 31 1385 1384 1386 + 581 31 1388 1387 1389 + 582 31 1391 1390 1392 + 583 31 1394 1393 1395 + 584 31 1397 1396 1398 + 585 31 1400 1399 1401 + 586 31 1403 1402 1404 + 587 31 1406 1405 1407 + 588 31 1409 1408 1410 + 589 31 1412 1411 1413 + 590 31 1415 1414 1416 + 591 31 1418 1417 1419 + 592 31 1421 1420 1422 + 593 31 1424 1423 1425 + 594 31 1427 1426 1428 + 595 31 1430 1429 1431 + 596 31 1433 1432 1434 + 597 31 1436 1435 1437 + 598 31 1439 1438 1440 + 599 31 1442 1441 1443 + 600 31 1445 1444 1446 + 601 31 1448 1447 1449 + 602 31 1451 1450 1452 + 603 31 1454 1453 1455 + 604 31 1457 1456 1458 + 605 31 1460 1459 1461 + 606 31 1463 1462 1464 + 607 31 1466 1465 1467 + 608 31 1469 1468 1470 + 609 31 1472 1471 1473 + 610 31 1475 1474 1476 + 611 31 1478 1477 1479 + 612 31 1481 1480 1482 + 613 31 1484 1483 1485 + 614 31 1487 1486 1488 + 615 31 1490 1489 1491 + 616 31 1493 1492 1494 + 617 31 1496 1495 1497 + 618 31 1499 1498 1500 + 619 31 1502 1501 1503 + 620 31 1505 1504 1506 + 621 31 1508 1507 1509 + 622 31 1511 1510 1512 + 623 31 1514 1513 1515 + 624 31 1517 1516 1518 + 625 31 1520 1519 1521 + 626 31 1523 1522 1524 + 627 31 1526 1525 1527 + 628 31 1529 1528 1530 + 629 31 1532 1531 1533 + 630 31 1535 1534 1536 + 631 31 1538 1537 1539 + 632 31 1541 1540 1542 + 633 31 1544 1543 1545 + 634 31 1547 1546 1548 + 635 31 1550 1549 1551 + 636 31 1553 1552 1554 + 637 31 1556 1555 1557 + 638 31 1559 1558 1560 + 639 31 1562 1561 1563 + 640 31 1565 1564 1566 + 641 31 1568 1567 1569 + 642 31 1571 1570 1572 + 643 31 1574 1573 1575 + 644 31 1577 1576 1578 + 645 31 1580 1579 1581 + 646 31 1583 1582 1584 + 647 31 1586 1585 1587 + 648 31 1589 1588 1590 + 649 31 1592 1591 1593 + 650 31 1595 1594 1596 + 651 31 1598 1597 1599 + 652 31 1601 1600 1602 + 653 31 1604 1603 1605 + 654 31 1607 1606 1608 + 655 31 1610 1609 1611 + 656 31 1613 1612 1614 + 657 31 1616 1615 1617 + 658 31 1619 1618 1620 + 659 31 1622 1621 1623 + 660 31 1625 1624 1626 + 661 31 1628 1627 1629 + 662 31 1631 1630 1632 + 663 31 1634 1633 1635 + 664 31 1637 1636 1638 + 665 31 1640 1639 1641 + 666 31 1643 1642 1644 + 667 31 1646 1645 1647 + 668 31 1649 1648 1650 + 669 31 1652 1651 1653 + 670 31 1655 1654 1656 + 671 31 1658 1657 1659 + 672 31 1661 1660 1662 + 673 31 1664 1663 1665 + 674 31 1667 1666 1668 + 675 31 1670 1669 1671 + 676 31 1673 1672 1674 + 677 31 1676 1675 1677 + 678 31 1679 1678 1680 + 679 31 1682 1681 1683 + 680 31 1685 1684 1686 + 681 31 1688 1687 1689 + 682 31 1691 1690 1692 + 683 31 1694 1693 1695 + 684 31 1697 1696 1698 + 685 31 1700 1699 1701 + 686 31 1703 1702 1704 + 687 31 1706 1705 1707 + 688 31 1709 1708 1710 + 689 31 1712 1711 1713 + 690 31 1715 1714 1716 + 691 31 1718 1717 1719 + 692 31 1721 1720 1722 + 693 31 1724 1723 1725 + 694 31 1727 1726 1728 + 695 31 1730 1729 1731 + 696 31 1733 1732 1734 + 697 31 1736 1735 1737 + 698 31 1739 1738 1740 + 699 31 1742 1741 1743 + 700 31 1745 1744 1746 + 701 31 1748 1747 1749 + 702 31 1751 1750 1752 + 703 31 1754 1753 1755 + 704 31 1757 1756 1758 + 705 31 1760 1759 1761 + 706 31 1763 1762 1764 + 707 31 1766 1765 1767 + 708 31 1769 1768 1770 + 709 31 1772 1771 1773 + 710 31 1775 1774 1776 + 711 31 1778 1777 1779 + 712 31 1781 1780 1782 + 713 31 1784 1783 1785 + 714 31 1787 1786 1788 + 715 31 1790 1789 1791 + 716 31 1793 1792 1794 + 717 31 1796 1795 1797 + 718 31 1799 1798 1800 + 719 31 1802 1801 1803 + 720 31 1805 1804 1806 + 721 31 1808 1807 1809 + 722 31 1811 1810 1812 + 723 31 1814 1813 1815 + 724 31 1817 1816 1818 + 725 31 1820 1819 1821 + 726 31 1823 1822 1824 + 727 31 1826 1825 1827 + 728 31 1829 1828 1830 + 729 31 1832 1831 1833 + 730 31 1835 1834 1836 + 731 31 1838 1837 1839 + 732 31 1841 1840 1842 + 733 31 1844 1843 1845 + 734 31 1847 1846 1848 + 735 31 1850 1849 1851 + 736 31 1853 1852 1854 + 737 31 1856 1855 1857 + 738 31 1859 1858 1860 + 739 31 1862 1861 1863 + 740 31 1865 1864 1866 + 741 31 1868 1867 1869 + 742 31 1871 1870 1872 + 743 31 1874 1873 1875 + 744 31 1877 1876 1878 + 745 31 1880 1879 1881 + 746 31 1883 1882 1884 + 747 31 1886 1885 1887 + 748 31 1889 1888 1890 + 749 31 1892 1891 1893 + 750 31 1895 1894 1896 + 751 31 1898 1897 1899 + 752 31 1901 1900 1902 + 753 31 1904 1903 1905 + 754 31 1907 1906 1908 + 755 31 1910 1909 1911 + 756 31 1913 1912 1914 + 757 31 1916 1915 1917 + 758 31 1919 1918 1920 + 759 31 1922 1921 1923 + 760 31 1925 1924 1926 + 761 31 1928 1927 1929 + 762 31 1931 1930 1932 + 763 31 1934 1933 1935 + 764 31 1937 1936 1938 + 765 31 1940 1939 1941 + 766 31 1943 1942 1944 + 767 31 1946 1945 1947 + 768 31 1949 1948 1950 + 769 31 1952 1951 1953 + 770 31 1955 1954 1956 + 771 31 1958 1957 1959 + 772 31 1961 1960 1962 + 773 31 1964 1963 1965 + 774 31 1967 1966 1968 + 775 31 1970 1969 1971 + 776 31 1973 1972 1974 + 777 31 1976 1975 1977 + 778 31 1979 1978 1980 + 779 31 1982 1981 1983 + 780 31 1985 1984 1986 + 781 31 1988 1987 1989 + 782 31 1991 1990 1992 + 783 31 1994 1993 1995 + 784 31 1997 1996 1998 + 785 31 2000 1999 2001 + 786 31 2003 2002 2004 + +Dihedrals + + 1 6 3 1 7 8 + 2 6 2 1 7 19 + 3 4 2 1 7 8 + 4 5 2 1 7 8 + 5 6 3 1 7 19 + 6 3 3 1 2 4 + 7 3 3 1 2 6 + 8 3 3 1 2 5 + 9 3 5 2 1 7 + 10 3 4 2 1 7 + 11 3 6 2 1 7 + 12 3 19 7 8 20 + 13 1 1 7 8 9 + 14 3 1 7 8 20 + 15 2 1 7 8 11 + 16 8 9 8 11 22 + 17 3 7 8 9 10 + 18 7 7 8 9 28 + 19 8 7 8 11 21 + 20 8 7 8 11 12 + 21 3 9 8 7 19 + 22 3 11 8 9 28 + 23 8 7 8 11 22 + 24 3 11 8 7 19 + 25 10 9 8 11 12 + 26 3 20 8 9 28 + 27 8 9 8 11 21 + 28 8 20 8 11 22 + 29 8 20 8 11 21 + 30 4 8 9 28 29 + 31 5 8 9 28 29 + 32 6 10 9 28 29 + 33 11 10 9 8 11 + 34 6 10 9 28 32 + 35 3 10 9 8 20 + 36 6 8 9 28 32 + 37 9 8 11 12 13 + 38 8 12 11 8 20 + 39 9 8 11 12 14 + 40 14 14 12 13 15 + 41 13 13 12 14 24 + 42 3 13 12 11 22 + 43 14 13 12 14 16 + 44 3 14 12 11 22 + 45 3 13 12 11 21 + 46 13 11 12 14 24 + 47 12 11 12 14 16 + 48 3 14 12 11 21 + 49 13 11 12 13 23 + 50 13 14 12 13 23 + 51 12 11 12 13 15 + 52 16 23 13 15 25 + 53 13 12 13 15 25 + 54 14 12 13 15 17 + 55 14 12 14 16 17 + 56 13 12 14 16 26 + 57 16 24 14 16 26 + 58 12 13 15 17 18 + 59 13 17 15 13 23 + 60 14 13 15 17 16 + 61 12 14 16 17 18 + 62 13 17 16 14 24 + 63 14 14 16 17 15 + 64 15 16 17 18 27 + 65 13 15 17 16 26 + 66 13 18 17 15 25 + 67 15 15 17 18 27 + 68 13 16 17 15 25 + 69 13 18 17 16 26 + 70 1 9 28 29 30 + 71 3 32 28 29 33 + 72 3 9 28 29 33 + 73 3 9 28 29 34 + 74 3 32 28 29 34 + 75 3 33 29 30 35 + 76 3 30 29 28 32 + 77 3 34 29 30 35 + 78 7 28 29 30 35 + 79 3 28 29 30 31 + 80 6 29 30 35 39 + 81 4 29 30 35 36 + 82 5 29 30 35 36 + 83 3 31 30 29 34 + 84 3 31 30 29 33 + 85 6 31 30 35 39 + 86 6 31 30 35 36 + 87 1 30 35 36 37 + 88 3 39 35 36 41 + 89 3 30 35 36 40 + 90 3 30 35 36 41 + 91 3 39 35 36 40 + 92 3 40 36 37 42 + 93 3 41 36 37 42 + 94 7 35 36 37 42 + 95 3 35 36 37 38 + 96 3 37 36 35 39 + 97 6 38 37 42 53 + 98 3 38 37 36 40 + 99 6 38 37 42 43 + 100 4 36 37 42 43 + 101 6 36 37 42 53 + 102 5 36 37 42 43 + 103 3 38 37 36 41 + 104 3 37 42 43 54 + 105 1 37 42 43 44 + 106 3 53 42 43 54 + 107 2 37 42 43 46 + 108 10 44 43 46 47 + 109 3 44 43 42 53 + 110 8 42 43 46 56 + 111 8 42 43 46 55 + 112 8 42 43 46 47 + 113 3 46 43 42 53 + 114 8 44 43 46 55 + 115 8 54 43 46 56 + 116 7 42 43 44 62 + 117 3 42 43 44 45 + 118 3 46 43 44 62 + 119 3 54 43 44 62 + 120 8 54 43 46 55 + 121 8 44 43 46 56 + 122 5 43 44 62 63 + 123 6 45 44 62 70 + 124 6 43 44 62 70 + 125 4 43 44 62 63 + 126 11 45 44 43 46 + 127 3 45 44 43 54 + 128 6 45 44 62 63 + 129 9 43 46 47 48 + 130 8 47 46 43 54 + 131 9 43 46 47 49 + 132 3 49 47 46 55 + 133 13 46 47 48 57 + 134 14 49 47 48 50 + 135 3 49 47 46 56 + 136 12 46 47 48 50 + 137 12 46 47 49 51 + 138 14 48 47 49 51 + 139 13 46 47 49 58 + 140 3 48 47 46 55 + 141 3 48 47 46 56 + 142 13 48 47 49 58 + 143 13 49 47 48 57 + 144 14 47 48 50 52 + 145 16 57 48 50 59 + 146 13 47 48 50 59 + 147 16 58 49 51 60 + 148 13 47 49 51 60 + 149 14 47 49 51 52 + 150 13 48 50 52 61 + 151 14 48 50 52 51 + 152 16 59 50 52 61 + 153 13 52 50 48 57 + 154 14 49 51 52 50 + 155 13 49 51 52 61 + 156 13 52 51 49 58 + 157 16 60 51 52 61 + 158 13 51 52 50 59 + 159 13 50 52 51 60 + 160 3 70 62 63 71 + 161 2 44 62 63 66 + 162 1 44 62 63 64 + 163 3 44 62 63 71 + 164 8 62 63 66 72 + 165 8 62 63 66 67 + 166 3 71 63 64 79 + 167 3 62 63 64 65 + 168 3 64 63 62 70 + 169 8 62 63 66 73 + 170 7 62 63 64 79 + 171 8 64 63 66 67 + 172 3 66 63 64 79 + 173 8 64 63 66 72 + 174 3 66 63 62 70 + 175 8 71 63 66 73 + 176 8 64 63 66 73 + 177 8 71 63 66 72 + 178 6 63 64 79 81 + 179 6 65 64 79 80 + 180 3 65 64 63 71 + 181 4 63 64 79 80 + 182 6 65 64 79 81 + 183 5 63 64 79 80 + 184 11 65 64 63 66 + 185 8 67 66 63 71 + 186 17 63 66 67 74 + 187 17 72 66 67 75 + 188 17 63 66 67 75 + 189 17 63 66 67 68 + 190 17 73 66 67 74 + 191 17 73 66 67 75 + 192 17 72 66 67 74 + 193 19 66 67 68 69 + 194 21 68 67 66 72 + 195 18 66 67 68 69 + 196 21 68 67 66 73 + 197 20 69 68 67 74 + 198 20 69 68 67 75 + 199 20 67 68 69 77 + 200 20 67 68 69 76 + 201 20 67 68 69 78 + 202 3 81 79 80 83 + 203 3 81 79 80 84 + 204 3 64 79 80 84 + 205 3 81 79 80 82 + 206 3 64 79 80 83 + 207 3 64 79 80 82 + +Impropers + + 1 2 7 1 8 19 + 2 1 1 2 7 3 + 3 1 9 8 28 10 + 4 2 28 9 29 32 + 5 1 30 29 35 31 + 6 2 35 30 36 39 + 7 1 37 36 42 38 + 8 2 42 37 43 53 + 9 1 44 43 62 45 + 10 2 62 44 63 70 + 11 1 64 63 79 65 + 12 2 79 64 80 81 diff --git a/src/REPLICA/in.temper_npt b/src/REPLICA/in.temper_npt new file mode 100644 index 0000000000000000000000000000000000000000..40db3c9604d7dd670f54c6c8e8c8397c8d71b3b9 --- /dev/null +++ b/src/REPLICA/in.temper_npt @@ -0,0 +1,32 @@ +# Solvated 5-mer peptide +# Demonstrating temper_npt +units real +atom_style full + +pair_style lj/charmm/coul/long 8.0 10.0 10.0 +bond_style harmonic +angle_style charmm +dihedral_style charmm +improper_style harmonic +kspace_style pppm 0.0001 + +read_data data.peptide + +neighbor 2.0 bin +neigh_modify delay 5 + +timestep 2.0 + +thermo_style custom step temp epair emol etotal press density +thermo 50 + +variable temper_T world 275 280 285 290 295 300 305 310 +variable rep world 0 1 2 3 4 5 6 7 +fix myfix all npt temp ${temper_T} ${temper_T} 100.0 iso 1 1 1000 +run 500 +temper_npt 2000 100 ${temper_T} myfix 0 58728 1 +fix 2 all shake 0.0001 10 100 b 4 6 8 10 12 14 18 a 31 +group peptide type <= 12 + + + diff --git a/src/REPLICA/temper_npt.cpp b/src/REPLICA/temper_npt.cpp new file mode 100644 index 0000000000000000000000000000000000000000..a043c6140776900c0debff82a42261251c32ef42 --- /dev/null +++ b/src/REPLICA/temper_npt.cpp @@ -0,0 +1,381 @@ +/* ---------------------------------------------------------------------- + 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: Amulya K. Pervaje and Cody K. Addington + Contact Email: amulyapervaje@gmail.com + temper_npt is a modification of temper that is applicable to the NPT ensemble + uses the npt acceptance criteria for parallel tempering (replica exchange) as given in + Mori, Y .; Okamoto, Y . Generalized-Ensemble Algorithms for the Isobaric–Isothermal Ensemble. J. Phys. Soc. Japan 2010, 79, 74003. + + temper_npt N M temp fix-ID seed1 seed2 pressure index(optional) + refer to documentation for temper, only difference with temper_npt is that the pressure is specified as the 7th argument, the 8th argument is the same optional index argument used in temper +------------------------------------------------------------------------- */ + +#include +#include +#include +#include "temper_npt.h" +#include "universe.h" +#include "domain.h" +#include "atom.h" +#include "update.h" +#include "integrate.h" +#include "modify.h" +#include "compute.h" +#include "force.h" +#include "output.h" +#include "thermo.h" +#include "fix.h" +#include "random_park.h" +#include "finish.h" +#include "timer.h" +#include "memory.h" +#include "error.h" + +using namespace LAMMPS_NS; + +#define TEMPER_DEBUG 0 + +/* ---------------------------------------------------------------------- */ + +TemperNpt::TemperNpt(LAMMPS *lmp) : Pointers(lmp) {} + +/* ---------------------------------------------------------------------- */ + +TemperNpt::~TemperNpt() +{ + MPI_Comm_free(&roots); + if (ranswap) delete ranswap; + delete ranboltz; + delete [] set_temp; + delete [] temp2world; + delete [] world2temp; + delete [] world2root; +} + +/* ---------------------------------------------------------------------- + perform tempering with inter-world swaps +------------------------------------------------------------------------- */ + +void TemperNpt::command(int narg, char **arg) +{ + if (universe->nworlds == 1) + error->all(FLERR,"Must have more than one processor partition to temper"); + if (domain->box_exist == 0) + error->all(FLERR,"temper_npt command before simulation box is defined"); + if (narg != 7 && narg != 8) + error->universe_all(FLERR,"Illegal temper command"); + + int nsteps = force->inumeric(FLERR,arg[0]); + nevery = force->inumeric(FLERR,arg[1]); + double temp = force->numeric(FLERR,arg[2]); + double press_set = force->numeric(FLERR,arg[6]); + + for (whichfix = 0; whichfix < modify->nfix; whichfix++) + if (strcmp(arg[3],modify->fix[whichfix]->id) == 0) break; + if (whichfix == modify->nfix) + error->universe_all(FLERR,"Tempering fix ID is not defined"); + + seed_swap = force->inumeric(FLERR,arg[4]); + seed_boltz = force->inumeric(FLERR,arg[5]); + + my_set_temp = universe->iworld; + if (narg == 8) my_set_temp = force->inumeric(FLERR,arg[6]); + + // swap frequency must evenly divide total # of timesteps + + if (nevery <= 0) + error->universe_all(FLERR,"Invalid frequency in temper command"); + nswaps = nsteps/nevery; + if (nswaps*nevery != nsteps) + error->universe_all(FLERR,"Non integer # of swaps in temper command"); + + // fix style must be appropriate for temperature control, i.e. it needs + // to provide a working Fix::reset_target() and must not change the volume. + + if ((strcmp(modify->fix[whichfix]->style,"npt") != 0)) error->universe_all(FLERR,"Tempering temperature fix is not supported"); + + // setup for long tempering run + + update->whichflag = 1; + update->nsteps = nsteps; + update->beginstep = update->firststep = update->ntimestep; + update->endstep = update->laststep = update->firststep + nsteps; + if (update->laststep < 0) + error->all(FLERR,"Too many timesteps"); + + lmp->init(); + + // local storage + + me_universe = universe->me; + MPI_Comm_rank(world,&me); + nworlds = universe->nworlds; + iworld = universe->iworld; + boltz = force->boltz; + nktv2p = force->nktv2p; + + // pe_compute = ptr to thermo_pe compute + // notify compute it will be called at first swap + + int id = modify->find_compute("thermo_pe"); + 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); + + // create MPI communicator for root proc from each world + + int color; + if (me == 0) color = 0; + else color = 1; + MPI_Comm_split(universe->uworld,color,0,&roots); + + // RNGs for swaps and Boltzmann test + // warm up Boltzmann RNG + + if (seed_swap) ranswap = new RanPark(lmp,seed_swap); + else ranswap = NULL; + ranboltz = new RanPark(lmp,seed_boltz + me_universe); + for (int i = 0; i < 100; i++) ranboltz->uniform(); + + // world2root[i] = global proc that is root proc of world i + + world2root = new int[nworlds]; + if (me == 0) + MPI_Allgather(&me_universe,1,MPI_INT,world2root,1,MPI_INT,roots); + MPI_Bcast(world2root,nworlds,MPI_INT,0,world); + + // create static list of set temperatures + // allgather tempering arg "temp" across root procs + // bcast from each root to other procs in world + + set_temp = new double[nworlds]; + if (me == 0) MPI_Allgather(&temp,1,MPI_DOUBLE,set_temp,1,MPI_DOUBLE,roots); + MPI_Bcast(set_temp,nworlds,MPI_DOUBLE,0,world); + + // create world2temp only on root procs from my_set_temp + // create temp2world on root procs from world2temp, + // then bcast to all procs within world + + world2temp = new int[nworlds]; + temp2world = new int[nworlds]; + if (me == 0) { + MPI_Allgather(&my_set_temp,1,MPI_INT,world2temp,1,MPI_INT,roots); + for (int i = 0; i < nworlds; i++) temp2world[world2temp[i]] = i; + } + MPI_Bcast(temp2world,nworlds,MPI_INT,0,world); + + // if restarting tempering, reset temp target of Fix to current my_set_temp + + if (narg == 8) { + double new_temp = set_temp[my_set_temp]; + modify->fix[whichfix]->reset_target(new_temp); + } + + // setup tempering runs + + int i,which,partner,swap,partner_set_temp,partner_world; + double pe,pe_partner, delr,boltz_factor,new_temp, press_units; + + if (me_universe == 0 && universe->uscreen) + fprintf(universe->uscreen,"Setting up tempering ...\n"); + + update->integrate->setup(); + + if (me_universe == 0) { + if (universe->uscreen) { + fprintf(universe->uscreen,"Step"); + for (int i = 0; i < nworlds; i++) + fprintf(universe->uscreen," T%d",i); + fprintf(universe->uscreen,"\n"); + } + if (universe->ulogfile) { + fprintf(universe->ulogfile,"Step"); + for (int i = 0; i < nworlds; i++) + fprintf(universe->ulogfile," T%d",i); + fprintf(universe->ulogfile,"\n"); + } + print_status(); + } + + timer->init(); + timer->barrier_start(); + + for (int iswap = 0; iswap < nswaps; iswap++) { + + // run for nevery timesteps + + update->integrate->run(nevery); + + // compute PE + // notify compute it will be called at next swap + + pe = pe_compute->compute_scalar(); + pe_compute->addstep(update->ntimestep + nevery); + double boxlox=domain->boxlo[0]; + double boxhix=domain->boxhi[0]; + double boxloy=domain->boxlo[1]; + double boxhiy=domain->boxhi[1]; + double boxloz=domain->boxlo[2]; + double boxhiz=domain->boxhi[2]; + double vol = (boxhix - boxlox)*(boxhiy - boxloy)*(boxhiz - boxloz); + double vol_partner = vol; + // which = which of 2 kinds of swaps to do (0,1) + + if (!ranswap) which = iswap % 2; + else if (ranswap->uniform() < 0.5) which = 0; + else which = 1; + + // partner_set_temp = which set temp I am partnering with for this swap + + if (which == 0) { + if (my_set_temp % 2 == 0) partner_set_temp = my_set_temp + 1; + else partner_set_temp = my_set_temp - 1; + } else { + if (my_set_temp % 2 == 1) partner_set_temp = my_set_temp + 1; + else partner_set_temp = my_set_temp - 1; + } + + // partner = proc ID to swap with + // if partner = -1, then I am not a proc that swaps + + partner = -1; + if (me == 0 && partner_set_temp >= 0 && partner_set_temp < nworlds) { + partner_world = temp2world[partner_set_temp]; + partner = world2root[partner_world]; + } + + // swap with a partner, only root procs in each world participate + // hi proc sends PE to low proc + // lo proc make Boltzmann decision on whether to swap + // lo proc communicates decision back to hi proc + + swap = 0; + if (partner != -1) { + if (me_universe > partner) { + MPI_Send(&pe,1,MPI_DOUBLE,partner,0,universe->uworld); + } + else { + MPI_Recv(&pe_partner,1,MPI_DOUBLE,partner,0,universe->uworld,MPI_STATUS_IGNORE); + } + if (me_universe > partner) { + MPI_Send(&vol,1, MPI_DOUBLE,partner,0,universe->uworld); + } + else { + MPI_Recv(&vol_partner,1,MPI_DOUBLE,partner,0,universe->uworld,MPI_STATUS_IGNORE); + } + // Acceptance criteria changed for NPT ensemble + if (me_universe < partner) { + press_units = press_set/nktv2p; + delr = (pe_partner - pe)*(1.0/(boltz*set_temp[my_set_temp]) - 1.0/(boltz*set_temp[partner_set_temp])) + press_units*(1.0/(boltz*set_temp[my_set_temp]) - 1.0/(boltz*set_temp[partner_set_temp]))*(vol_partner - vol); + boltz_factor = -delr; + if (boltz_factor >= 0.0) swap = 1; + else if (ranboltz->uniform() < exp(boltz_factor)) swap = 1; + } + + if (me_universe < partner) + MPI_Send(&swap,1,MPI_INT,partner,0,universe->uworld); + else + MPI_Recv(&swap,1,MPI_INT,partner,0,universe->uworld,MPI_STATUS_IGNORE); +#ifdef TEMPER_DEBUG + if (me_universe < partner) + fprintf(universe->uscreen,"SWAP %d & %d: yes = %d,Ts = %d %d, PEs = %g %g, Bz = %g %g, vol = %g %g\n", + me_universe,partner,swap,my_set_temp,partner_set_temp, + pe,pe_partner,boltz_factor,exp(boltz_factor), vol, vol_partner); +#endif + + } + + // bcast swap result to other procs in my world + + MPI_Bcast(&swap,1,MPI_INT,0,world); + + // rescale kinetic energy via velocities if move is accepted + + if (swap) scale_velocities(partner_set_temp,my_set_temp); + + // if my world swapped, all procs in world reset temp target of Fix + + if (swap) { + new_temp = set_temp[partner_set_temp]; + modify->fix[whichfix]->reset_target(new_temp); + } + + // update my_set_temp and temp2world on every proc + // root procs update their value if swap took place + // allgather across root procs + // bcast within my world + + if (swap) my_set_temp = partner_set_temp; + if (me == 0) { + MPI_Allgather(&my_set_temp,1,MPI_INT,world2temp,1,MPI_INT,roots); + for (i = 0; i < nworlds; i++) temp2world[world2temp[i]] = i; + } + MPI_Bcast(temp2world,nworlds,MPI_INT,0,world); + + // print out current swap status + + if (me_universe == 0) print_status(); + } + + timer->barrier_stop(); + + update->integrate->cleanup(); + + Finish finish(lmp); + finish.end(1); + + update->whichflag = 0; + update->firststep = update->laststep = 0; + update->beginstep = update->endstep = 0; +} + +/* ---------------------------------------------------------------------- + scale kinetic energy via velocities a la Sugita +------------------------------------------------------------------------- */ + +void TemperNpt::scale_velocities(int t_partner, int t_me) +{ + double sfactor = sqrt(set_temp[t_partner]/set_temp[t_me]); + + double **v = atom->v; + int nlocal = atom->nlocal; + + for (int i = 0; i < nlocal; i++) { + v[i][0] = v[i][0]*sfactor; + v[i][1] = v[i][1]*sfactor; + v[i][2] = v[i][2]*sfactor; + } +} + +/* ---------------------------------------------------------------------- + proc 0 prints current tempering status +------------------------------------------------------------------------- */ + +void TemperNpt::print_status() +{ + if (universe->uscreen) { + fprintf(universe->uscreen,BIGINT_FORMAT,update->ntimestep); + for (int i = 0; i < nworlds; i++) + fprintf(universe->uscreen," %d",world2temp[i]); + fprintf(universe->uscreen,"\n"); + } + if (universe->ulogfile) { + fprintf(universe->ulogfile,BIGINT_FORMAT,update->ntimestep); + for (int i = 0; i < nworlds; i++) + fprintf(universe->ulogfile," %d",world2temp[i]); + fprintf(universe->ulogfile,"\n"); + fflush(universe->ulogfile); + } +} diff --git a/src/REPLICA/temper_npt.h b/src/REPLICA/temper_npt.h new file mode 100644 index 0000000000000000000000000000000000000000..984f2839b1849e5316808f573bb7e72a7ff29347 --- /dev/null +++ b/src/REPLICA/temper_npt.h @@ -0,0 +1,118 @@ +/* -*- 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 Authors: Amulya K. Pervaje and Cody K. Addington + Contact Email: amulyapervaje@gmail.com + temper_npt is a modification of temper that is applicable to the NPT ensemble + uses the npt acceptance criteria for parallel tempering (replica exchange) as given in + Mori, Y .; Okamoto, Y . Generalized-Ensemble Algorithms for the Isobaric–Isothermal Ensemble. J. Phys. Soc. Japan 2010, 79, 74003. + + temper_npt N M temp fix-ID seed1 seed2 pressure index(optional) + refer to documentation for temper, only difference with temper_npt is that the pressure is s +pecified as the 7th argument, the 8th argument is the same optional index argument used in temp +er +------------------------------------------------------------------------- */ + +#ifdef COMMAND_CLASS + +CommandStyle(temper_npt,TemperNpt) + +#else + +#ifndef LMP_TEMPERNPT_H +#define LMP_TEMPERNPT_H + +#include "pointers.h" + +namespace LAMMPS_NS { + +class TemperNpt : protected Pointers { + public: + TemperNpt(class LAMMPS *); + ~TemperNpt(); + void command(int, char **); + + private: + int me,me_universe; // my proc ID in world and universe + int iworld,nworlds; // world info + double boltz; // copy from output->boltz + double nktv2p; + MPI_Comm roots; // MPI comm with 1 root proc from each world + class RanPark *ranswap,*ranboltz; // RNGs for swapping and Boltz factor + int nevery; // # of timesteps between swaps + int nswaps; // # of tempering swaps to perform + int seed_swap; // 0 = toggle swaps, n = RNG for swap direction + int seed_boltz; // seed for Boltz factor comparison + int whichfix; // index of temperature fix to use + int fixstyle; // what kind of temperature fix is used + + int my_set_temp; // which set temp I am simulating + double *set_temp; // static list of replica set temperatures + int *temp2world; // temp2world[i] = world simulating set temp i + int *world2temp; // world2temp[i] = temp simulated by world i + int *world2root; // world2root[i] = root proc of world i + + void scale_velocities(int, int); + void print_status(); +}; + +} + +#endif +#endif + +/* ERROR/WARNING messages: + +E: Must have more than one processor partition to temper + +Cannot use the temper command with only one processor partition. Use +the -partition command-line option. + +E: TemperNpt command before simulation box is defined + +The temper command cannot be used before a read_data, read_restart, or +create_box command. + +E: Illegal ... command + +Self-explanatory. Check the input script syntax and compare to the +documentation for the command. You can use -echo screen as a +command-line option when running LAMMPS to see the offending line. + +E: Tempering fix ID is not defined + +The fix ID specified by the temper command does not exist. + +E: Invalid frequency in temper command + +Nevery must be > 0. + +E: Non integer # of swaps in temper command + +Swap frequency in temper command must evenly divide the total # of +timesteps. + +E: Tempering temperature fix is not valid + +The fix specified by the temper command is not one that controls +temperature (nvt or langevin). + +E: Too many timesteps + +The cummulative timesteps must fit in a 64-bit integer. + +E: Tempering could not find thermo_pe compute + +This compute is created by the thermo command. It must have been +explicitly deleted by a uncompute command. + +*/ diff --git a/src/USER-CGDNA/pair_oxdna_hbond.cpp b/src/USER-CGDNA/pair_oxdna_hbond.cpp index 96f86d605924f91b27f7c2aef837cc26234d5124..99f490f3fb10f293e9b36f3b11e1cf4a8297c077 100644 --- a/src/USER-CGDNA/pair_oxdna_hbond.cpp +++ b/src/USER-CGDNA/pair_oxdna_hbond.cpp @@ -38,6 +38,14 @@ using namespace LAMMPS_NS; using namespace MathConst; using namespace MFOxdna; +// sequence-specific base-pairing strength +// A:0 C:1 G:2 T:3, 5'- (i,j) -3' +static const double alpha[4][4] = +{{1.00000,1.00000,1.00000,0.82915}, + {1.00000,1.00000,1.15413,1.00000}, + {1.00000,1.15413,1.00000,1.00000}, + {0.82915,1.00000,1.00000,1.00000}}; + /* ---------------------------------------------------------------------- */ PairOxdnaHbond::PairOxdnaHbond(LAMMPS *lmp) : Pair(lmp) @@ -607,7 +615,7 @@ void PairOxdnaHbond::coeff(int narg, char **arg) { int count; - if (narg != 26) error->all(FLERR,"Incorrect args for pair coefficients in oxdna/hbond"); + if (narg != 27) error->all(FLERR,"Incorrect args for pair coefficients in oxdna/hbond"); if (!allocated) allocate(); int ilo,ihi,jlo,jhi; @@ -638,36 +646,42 @@ void PairOxdnaHbond::coeff(int narg, char **arg) double a_hb8_one, theta_hb8_0_one, dtheta_hb8_ast_one; double b_hb8_one, dtheta_hb8_c_one; - epsilon_hb_one = force->numeric(FLERR,arg[2]); - a_hb_one = force->numeric(FLERR,arg[3]); - cut_hb_0_one = force->numeric(FLERR,arg[4]); - cut_hb_c_one = force->numeric(FLERR,arg[5]); - cut_hb_lo_one = force->numeric(FLERR,arg[6]); - cut_hb_hi_one = force->numeric(FLERR,arg[7]); + if (strcmp(arg[2], "seqav") != 0 && strcmp(arg[2], "seqdep") != 0) { + error->all(FLERR,"Incorrect setting, select seqav or seqdep in oxdna/hbond"); + } + if (strcmp(arg[2],"seqav") == 0) seqdepflag = 0; + if (strcmp(arg[2],"seqdep") == 0) seqdepflag = 1; + + epsilon_hb_one = force->numeric(FLERR,arg[3]); + a_hb_one = force->numeric(FLERR,arg[4]); + cut_hb_0_one = force->numeric(FLERR,arg[5]); + cut_hb_c_one = force->numeric(FLERR,arg[6]); + cut_hb_lo_one = force->numeric(FLERR,arg[7]); + cut_hb_hi_one = force->numeric(FLERR,arg[8]); - a_hb1_one = force->numeric(FLERR,arg[8]); - theta_hb1_0_one = force->numeric(FLERR,arg[9]); - dtheta_hb1_ast_one = force->numeric(FLERR,arg[10]); + a_hb1_one = force->numeric(FLERR,arg[9]); + theta_hb1_0_one = force->numeric(FLERR,arg[10]); + dtheta_hb1_ast_one = force->numeric(FLERR,arg[11]); - a_hb2_one = force->numeric(FLERR,arg[11]); - theta_hb2_0_one = force->numeric(FLERR,arg[12]); - dtheta_hb2_ast_one = force->numeric(FLERR,arg[13]); + a_hb2_one = force->numeric(FLERR,arg[12]); + theta_hb2_0_one = force->numeric(FLERR,arg[13]); + dtheta_hb2_ast_one = force->numeric(FLERR,arg[14]); - a_hb3_one = force->numeric(FLERR,arg[14]); - theta_hb3_0_one = force->numeric(FLERR,arg[15]); - dtheta_hb3_ast_one = force->numeric(FLERR,arg[16]); + a_hb3_one = force->numeric(FLERR,arg[15]); + theta_hb3_0_one = force->numeric(FLERR,arg[16]); + dtheta_hb3_ast_one = force->numeric(FLERR,arg[17]); - a_hb4_one = force->numeric(FLERR,arg[17]); - theta_hb4_0_one = force->numeric(FLERR,arg[18]); - dtheta_hb4_ast_one = force->numeric(FLERR,arg[19]); + a_hb4_one = force->numeric(FLERR,arg[18]); + theta_hb4_0_one = force->numeric(FLERR,arg[19]); + dtheta_hb4_ast_one = force->numeric(FLERR,arg[20]); - a_hb7_one = force->numeric(FLERR,arg[20]); - theta_hb7_0_one = force->numeric(FLERR,arg[21]); - dtheta_hb7_ast_one = force->numeric(FLERR,arg[22]); + a_hb7_one = force->numeric(FLERR,arg[21]); + theta_hb7_0_one = force->numeric(FLERR,arg[22]); + dtheta_hb7_ast_one = force->numeric(FLERR,arg[23]); - a_hb8_one = force->numeric(FLERR,arg[23]); - theta_hb8_0_one = force->numeric(FLERR,arg[24]); - dtheta_hb8_ast_one = force->numeric(FLERR,arg[25]); + a_hb8_one = force->numeric(FLERR,arg[24]); + theta_hb8_0_one = force->numeric(FLERR,arg[25]); + dtheta_hb8_ast_one = force->numeric(FLERR,arg[26]); b_hb_lo_one = 2*a_hb_one*exp(-a_hb_one*(cut_hb_lo_one-cut_hb_0_one))* 2*a_hb_one*exp(-a_hb_one*(cut_hb_lo_one-cut_hb_0_one))* @@ -718,6 +732,7 @@ void PairOxdnaHbond::coeff(int narg, char **arg) for (int j = MAX(jlo,i); j <= jhi; j++) { epsilon_hb[i][j] = epsilon_hb_one; + if (seqdepflag) epsilon_hb[i][j] *= alpha[i-1][j-1]; a_hb[i][j] = a_hb_one; cut_hb_0[i][j] = cut_hb_0_one; cut_hb_c[i][j] = cut_hb_c_one; @@ -728,6 +743,7 @@ void PairOxdnaHbond::coeff(int narg, char **arg) b_hb_lo[i][j] = b_hb_lo_one; b_hb_hi[i][j] = b_hb_hi_one; shift_hb[i][j] = shift_hb_one; + if (seqdepflag) shift_hb[i][j] *= alpha[i-1][j-1]; a_hb1[i][j] = a_hb1_one; theta_hb1_0[i][j] = theta_hb1_0_one; @@ -814,7 +830,12 @@ double PairOxdnaHbond::init_one(int i, int j) error->all(FLERR,"Offset not supported in oxDNA"); } - epsilon_hb[j][i] = epsilon_hb[i][j]; + if (seqdepflag) { + epsilon_hb[j][i] = epsilon_hb[i][j] / alpha[i-1][j-1] * alpha[j-1][i-1]; + } + else { + epsilon_hb[j][i] = epsilon_hb[i][j]; + } a_hb[j][i] = a_hb[i][j]; cut_hb_0[j][i] = cut_hb_0[i][j]; cut_hb_c[j][i] = cut_hb_c[i][j]; @@ -824,7 +845,12 @@ double PairOxdnaHbond::init_one(int i, int j) b_hb_hi[j][i] = b_hb_hi[i][j]; cut_hb_lc[j][i] = cut_hb_lc[i][j]; cut_hb_hc[j][i] = cut_hb_hc[i][j]; - shift_hb[j][i] = shift_hb[i][j]; + if (seqdepflag) { + shift_hb[j][i] = shift_hb[i][j] / alpha[i-1][j-1] * alpha[j-1][i-1]; + } + else { + shift_hb[j][i] = shift_hb[i][j]; + } a_hb1[j][i] = a_hb1[i][j]; theta_hb1_0[j][i] = theta_hb1_0[i][j]; diff --git a/src/USER-CGDNA/pair_oxdna_hbond.h b/src/USER-CGDNA/pair_oxdna_hbond.h index 1c9f37bf50a1bc25a788ff0fb6989bb914b053ae..028853a0872fdbca9990b3a73aa4ff72e1813782 100644 --- a/src/USER-CGDNA/pair_oxdna_hbond.h +++ b/src/USER-CGDNA/pair_oxdna_hbond.h @@ -67,6 +67,8 @@ class PairOxdnaHbond : public Pair { double **a_hb8, **theta_hb8_0, **dtheta_hb8_ast; double **b_hb8, **dtheta_hb8_c; + int seqdepflag; + virtual void allocate(); }; diff --git a/src/USER-CGDNA/pair_oxdna_stk.cpp b/src/USER-CGDNA/pair_oxdna_stk.cpp index 9a5779afad6c6c13c8f56f6f60d675f53b6db326..9c3a11b9b712eef4dbaecf71c709fd0e9766d255 100644 --- a/src/USER-CGDNA/pair_oxdna_stk.cpp +++ b/src/USER-CGDNA/pair_oxdna_stk.cpp @@ -38,6 +38,14 @@ using namespace LAMMPS_NS; using namespace MathConst; using namespace MFOxdna; +// sequence-specific stacking strength +// A:0 C:1 G:2 T:3, 5'- (i,j) -3' +static const double alpha[4][4] = +{{1.11960,1.00852,0.96950,0.99632}, + {1.01889,0.97804,1.02681,0.96950}, + {0.98169,1.05913,0.97804,1.00852}, + {0.94694,0.98169,1.01889,0.96383}}; + /* ---------------------------------------------------------------------- */ PairOxdnaStk::PairOxdnaStk(LAMMPS *lmp) : Pair(lmp) @@ -194,6 +202,7 @@ void PairOxdnaStk::compute(int eflag, int vflag) } + // a now in 5' direction, b in 3' direction atype = type[a]; btype = type[b]; @@ -665,7 +674,7 @@ void PairOxdnaStk::coeff(int narg, char **arg) { int count; - if (narg != 21) error->all(FLERR,"Incorrect args for pair coefficients in oxdna/stk"); + if (narg != 22) error->all(FLERR,"Incorrect args for pair coefficients in oxdna/stk"); if (!allocated) allocate(); int ilo,ihi,jlo,jhi; @@ -691,28 +700,34 @@ void PairOxdnaStk::coeff(int narg, char **arg) double a_st1_one, cosphi_st1_ast_one, b_st1_one, cosphi_st1_c_one; double a_st2_one, cosphi_st2_ast_one, b_st2_one, cosphi_st2_c_one; - T = force->numeric(FLERR,arg[2]); + if (strcmp(arg[2], "seqav") != 0 && strcmp(arg[2], "seqdep") != 0) { + error->all(FLERR,"Incorrect setting, select seqav or seqdep in oxdna/stk"); + } + if (strcmp(arg[2],"seqav") == 0) seqdepflag = 0; + if (strcmp(arg[2],"seqdep") == 0) seqdepflag = 1; + + T = force->numeric(FLERR,arg[3]); epsilon_st_one = stacking_strength(T); - a_st_one = force->numeric(FLERR,arg[3]); - cut_st_0_one = force->numeric(FLERR,arg[4]); - cut_st_c_one = force->numeric(FLERR,arg[5]); - cut_st_lo_one = force->numeric(FLERR,arg[6]); - cut_st_hi_one = force->numeric(FLERR,arg[7]); - - a_st4_one = force->numeric(FLERR,arg[8]); - theta_st4_0_one = force->numeric(FLERR,arg[9]); - dtheta_st4_ast_one = force->numeric(FLERR,arg[10]); - a_st5_one = force->numeric(FLERR,arg[11]); - theta_st5_0_one = force->numeric(FLERR,arg[12]); - dtheta_st5_ast_one = force->numeric(FLERR,arg[13]); - a_st6_one = force->numeric(FLERR,arg[14]); - theta_st6_0_one = force->numeric(FLERR,arg[15]); - dtheta_st6_ast_one = force->numeric(FLERR,arg[16]); - a_st1_one = force->numeric(FLERR,arg[17]); - cosphi_st1_ast_one = force->numeric(FLERR,arg[18]); - a_st2_one = force->numeric(FLERR,arg[19]); - cosphi_st2_ast_one = force->numeric(FLERR,arg[20]); + a_st_one = force->numeric(FLERR,arg[4]); + cut_st_0_one = force->numeric(FLERR,arg[5]); + cut_st_c_one = force->numeric(FLERR,arg[6]); + cut_st_lo_one = force->numeric(FLERR,arg[7]); + cut_st_hi_one = force->numeric(FLERR,arg[8]); + + a_st4_one = force->numeric(FLERR,arg[9]); + theta_st4_0_one = force->numeric(FLERR,arg[10]); + dtheta_st4_ast_one = force->numeric(FLERR,arg[11]); + a_st5_one = force->numeric(FLERR,arg[12]); + theta_st5_0_one = force->numeric(FLERR,arg[13]); + dtheta_st5_ast_one = force->numeric(FLERR,arg[14]); + a_st6_one = force->numeric(FLERR,arg[15]); + theta_st6_0_one = force->numeric(FLERR,arg[16]); + dtheta_st6_ast_one = force->numeric(FLERR,arg[17]); + a_st1_one = force->numeric(FLERR,arg[18]); + cosphi_st1_ast_one = force->numeric(FLERR,arg[19]); + a_st2_one = force->numeric(FLERR,arg[20]); + cosphi_st2_ast_one = force->numeric(FLERR,arg[21]); b_st_lo_one = 2*a_st_one*exp(-a_st_one*(cut_st_lo_one-cut_st_0_one))* 2*a_st_one*exp(-a_st_one*(cut_st_lo_one-cut_st_0_one))* @@ -756,11 +771,11 @@ void PairOxdnaStk::coeff(int narg, char **arg) b_st2_one = a_st2_one*a_st2_one*cosphi_st2_ast_one*cosphi_st2_ast_one/(1-a_st2_one*cosphi_st2_ast_one*cosphi_st2_ast_one); cosphi_st2_c_one=1/(a_st2_one*cosphi_st2_ast_one); - for (int i = ilo; i <= ihi; i++) { for (int j = MAX(jlo,i); j <= jhi; j++) { epsilon_st[i][j] = epsilon_st_one; + if (seqdepflag) epsilon_st[i][j] *= alpha[i-1][j-1]; a_st[i][j] = a_st_one; cut_st_0[i][j] = cut_st_0_one; cut_st_c[i][j] = cut_st_c_one; @@ -771,6 +786,7 @@ void PairOxdnaStk::coeff(int narg, char **arg) b_st_lo[i][j] = b_st_lo_one; b_st_hi[i][j] = b_st_hi_one; shift_st[i][j] = shift_st_one; + if (seqdepflag) shift_st[i][j] *= alpha[i-1][j-1]; a_st4[i][j] = a_st4_one; theta_st4_0[i][j] = theta_st4_0_one; @@ -849,7 +865,12 @@ double PairOxdnaStk::init_one(int i, int j) error->all(FLERR,"Offset not supported in oxDNA"); } - epsilon_st[j][i] = epsilon_st[i][j]; + if (seqdepflag) { + epsilon_st[j][i] = epsilon_st[i][j] / alpha[i-1][j-1] * alpha[j-1][i-1]; + } + else { + epsilon_st[j][i] = epsilon_st[i][j]; + } a_st[j][i] = a_st[i][j]; b_st_lo[j][i] = b_st_lo[i][j]; b_st_hi[j][i] = b_st_hi[i][j]; @@ -859,7 +880,12 @@ double PairOxdnaStk::init_one(int i, int j) cut_st_hi[j][i] = cut_st_hi[i][j]; cut_st_lc[j][i] = cut_st_lc[i][j]; cut_st_hc[j][i] = cut_st_hc[i][j]; - shift_st[j][i] = shift_st[i][j]; + if (seqdepflag) { + shift_st[j][i] = shift_st[i][j] / alpha[i-1][j-1] * alpha[j-1][i-1]; + } + else { + shift_st[j][i] = shift_st[i][j]; + } a_st4[j][i] = a_st4[i][j]; theta_st4_0[j][i] = theta_st4_0[i][j]; diff --git a/src/USER-CGDNA/pair_oxdna_stk.h b/src/USER-CGDNA/pair_oxdna_stk.h index 950c2762289efc8b71848c398344e1b9fb240aea..74a9a6bf68cce6a4ab3f9241e3ca8535bf72af9b 100644 --- a/src/USER-CGDNA/pair_oxdna_stk.h +++ b/src/USER-CGDNA/pair_oxdna_stk.h @@ -58,6 +58,8 @@ class PairOxdnaStk : public Pair { double **a_st1, **cosphi_st1_ast, **b_st1, **cosphi_st1_c; double **a_st2, **cosphi_st2_ast, **b_st2, **cosphi_st2_c; + int seqdepflag; + virtual void allocate(); }; diff --git a/src/USER-DPD/fix_dpd_energy.cpp b/src/USER-DPD/fix_dpd_energy.cpp index 05907a5fcf064620bcd1a197a422059c0191af9d..475e12f02fb10a30acf23e5ed27ed4605b5995fc 100644 --- a/src/USER-DPD/fix_dpd_energy.cpp +++ b/src/USER-DPD/fix_dpd_energy.cpp @@ -34,6 +34,8 @@ FixDPDenergy::FixDPDenergy(LAMMPS *lmp, int narg, char **arg) : pairDPDE = NULL; pairDPDE = (PairDPDfdtEnergy *) force->pair_match("dpd/fdt/energy",1); + if (pairDPDE == NULL) + pairDPDE = (PairDPDfdtEnergy *) force->pair_match("dpd/fdt/energy/kk",1); if (pairDPDE == NULL) error->all(FLERR,"Must use pair_style dpd/fdt/energy with fix dpd/energy"); diff --git a/src/USER-DPD/fix_eos_table_rx.cpp b/src/USER-DPD/fix_eos_table_rx.cpp index b90c39ed4e8cfbf480d2064cb5058dd679cc7240..c9a705446a0f6b54d2870590366a350b1a70ed04 100644 --- a/src/USER-DPD/fix_eos_table_rx.cpp +++ b/src/USER-DPD/fix_eos_table_rx.cpp @@ -150,6 +150,8 @@ FixEOStableRX::FixEOStableRX(LAMMPS *lmp, int narg, char **arg) : FixEOStableRX::~FixEOStableRX() { + if (copymode) return; + for (int m = 0; m < ntables; m++) { free_table(&tables[m]); free_table(&tables2[m]); diff --git a/src/USER-DPD/fix_rx.cpp b/src/USER-DPD/fix_rx.cpp index 82bb44a24d12386f486fad077afaeced81f09761..0d0ec2a75b0ebba55b74162ac39fbcc71a517356 100644 --- a/src/USER-DPD/fix_rx.cpp +++ b/src/USER-DPD/fix_rx.cpp @@ -220,6 +220,9 @@ FixRX::FixRX(LAMMPS *lmp, int narg, char **arg) : FixRX::~FixRX() { + //printf("Inside FixRX::~FixRX copymode= %d\n", copymode); + if (copymode) return; + // De-Allocate memory to prevent memory leak for (int ii = 0; ii < nreactions; ii++){ delete [] stoich[ii]; @@ -370,11 +373,11 @@ void FixRX::post_constructor() newarg2[nspecies+3] = (char *) "ghost"; newarg2[nspecies+4] = (char *) "yes"; - modify->add_fix(nspecies+5,newarg); + modify->add_fix(nspecies+5,newarg,1); fix_species = (FixPropertyAtom *) modify->fix[modify->nfix-1]; restartFlag = modify->fix[modify->nfix-1]->restart_reset; - modify->add_fix(nspecies+5,newarg2); + modify->add_fix(nspecies+5,newarg2,1); fix_species_old = (FixPropertyAtom *) modify->fix[modify->nfix-1]; if(nspecies==0) error->all(FLERR,"There are no rx species specified."); @@ -634,6 +637,9 @@ int FixRX::setmask() void FixRX::init() { pairDPDE = (PairDPDfdtEnergy *) force->pair_match("dpd/fdt/energy",1); + if (pairDPDE == NULL) + pairDPDE = (PairDPDfdtEnergy *) force->pair_match("dpd/fdt/energy/kk",1); + if (pairDPDE == NULL) error->all(FLERR,"Must use pair_style dpd/fdt/energy with fix rx"); @@ -669,7 +675,17 @@ void FixRX::setup_pre_force(int vflag) if(restartFlag){ restartFlag = 0; - } else { + } + else + { + int ode_counter[4] = {0}; + + UserRHSData userData; + userData.kFor = new double[nreactions]; + userData.rxnRateLaw = new double[nreactions]; + + double *rwork = new double[8*nspecies]; + if(localTempFlag){ int count = nlocal + (newton_pair ? nghost : 0); dpdThetaLocal = new double[count]; @@ -682,22 +698,27 @@ void FixRX::setup_pre_force(int vflag) tmp = atom->dvector[ispecies][id]; atom->dvector[ispecies+nspecies][id] = tmp; } + for (int i = 0; i < nlocal; i++) if (mask[i] & groupbit){ // Set the reaction rate constants to zero: no reactions occur at step 0 for(int irxn=0;irxnforward_comm_fix(this); if(localTempFlag) delete [] dpdThetaLocal; + + delete [] userData.kFor; + delete [] userData.rxnRateLaw; + delete [] rwork; } } @@ -705,12 +726,13 @@ void FixRX::setup_pre_force(int vflag) void FixRX::pre_force(int vflag) { + TimerType timer_start = getTimeStamp(); + int nlocal = atom->nlocal; int nghost = atom->nghost; int *mask = atom->mask; double *dpdTheta = atom->dpdTheta; int newton_pair = force->newton_pair; - double theta; if(localTempFlag){ int count = nlocal + (newton_pair ? nghost : 0); @@ -722,7 +744,10 @@ void FixRX::pre_force(int vflag) TimerType timer_localTemperature = getTimeStamp(); // Zero the counters for the ODE solvers. - this->nSteps = this->nIters = this->nFuncs = this->nFails = 0; + int nSteps = 0; + int nIters = 0; + int nFuncs = 0; + int nFails = 0; if (odeIntegrationFlag == ODE_LAMMPS_RKF45 && diagnosticFrequency == 1) { @@ -730,35 +755,66 @@ void FixRX::pre_force(int vflag) memory->create( diagnosticCounterPerODE[FuncSum], nlocal, "FixRX::diagnosticCounterPerODE"); } - double *rwork = new double[8*nspecies + nreactions]; + //#pragma omp parallel \ + // reduction(+: nSteps, nIters, nFuncs, nFails ) + { + double *rwork = new double[8*nspecies]; - for (int i = 0; i < nlocal; i++) - if (mask[i] & groupbit){ - if (localTempFlag) - theta = dpdThetaLocal[i]; - else - theta = dpdTheta[i]; + UserRHSData userData; + userData.kFor = new double[nreactions]; + userData.rxnRateLaw = new double[nreactions]; - //Compute the reaction rate constants - for (int irxn = 0; irxn < nreactions; irxn++) - kR[irxn] = Arr[irxn]*pow(theta,nArr[irxn])*exp(-Ea[irxn]/force->boltz/theta); + int ode_counter[4] = { 0 }; + + //#pragma omp for schedule(runtime) + for (int i = 0; i < nlocal; i++) + { + if (mask[i] & groupbit) + { + double theta; + if (localTempFlag) + theta = dpdThetaLocal[i]; + else + theta = dpdTheta[i]; + + //Compute the reaction rate constants + for (int irxn = 0; irxn < nreactions; irxn++) + userData.kFor[irxn] = Arr[irxn]*pow(theta,nArr[irxn])*exp(-Ea[irxn]/force->boltz/theta); - if (odeIntegrationFlag == ODE_LAMMPS_RK4) - rk4(i,rwork); - else if (odeIntegrationFlag == ODE_LAMMPS_RKF45) - rkf45(i,rwork); + if (odeIntegrationFlag == ODE_LAMMPS_RK4) + rk4(i, rwork, &userData); + else if (odeIntegrationFlag == ODE_LAMMPS_RKF45) + rkf45(i, rwork, &userData, ode_counter); + } } - TimerType timer_ODE = getTimeStamp(); + nSteps += ode_counter[0]; + nIters += ode_counter[1]; + nFuncs += ode_counter[2]; + nFails += ode_counter[3]; + + delete [] rwork; + delete [] userData.kFor; + delete [] userData.rxnRateLaw; + + } // end parallel region - delete [] rwork; + TimerType timer_ODE = getTimeStamp(); // Communicate the updated momenta and velocities to all nodes comm->forward_comm_fix(this); if(localTempFlag) delete [] dpdThetaLocal; + TimerType timer_stop = getTimeStamp(); + double time_ODE = getElapsedTime(timer_localTemperature, timer_ODE); + //printf("me= %d total= %g temp= %g ode= %g comm= %g nlocal= %d nfc= %d %d\n", comm->me, + // getElapsedTime(timer_start, timer_stop), + // getElapsedTime(timer_start, timer_localTemperature), + // getElapsedTime(timer_localTemperature, timer_ODE), + // getElapsedTime(timer_ODE, timer_stop), nlocal, nFuncs, nSteps); + // Warn the user if a failure was detected in the ODE solver. if (nFails > 0){ char sbuf[128]; @@ -954,21 +1010,15 @@ void FixRX::setupParams() /* ---------------------------------------------------------------------- */ -void FixRX::rk4(int id, double *rwork) +void FixRX::rk4(int id, double *rwork, void* v_params) { - double *k1 = NULL; - if (rwork == NULL) - k1 = new double[6*nspecies + nreactions]; - else - k1 = rwork; + double *k1 = rwork; double *k2 = k1 + nspecies; double *k3 = k2 + nspecies; double *k4 = k3 + nspecies; double *y = k4 + nspecies; double *yp = y + nspecies; - double *dummyArray = yp + nspecies; // Passed to the rhs function. - const int numSteps = minSteps; const double h = update->dt / double(numSteps); @@ -985,25 +1035,25 @@ void FixRX::rk4(int id, double *rwork) for (int step = 0; step < numSteps; step++) { // k1 - rhs(0.0,y,k1,dummyArray); + rhs(0.0,y,k1,v_params); // k2 for (int ispecies = 0; ispecies < nspecies; ispecies++) yp[ispecies] = y[ispecies] + 0.5*h*k1[ispecies]; - rhs(0.0,yp,k2,dummyArray); + rhs(0.0,yp,k2,v_params); // k3 for (int ispecies = 0; ispecies < nspecies; ispecies++) yp[ispecies] = y[ispecies] + 0.5*h*k2[ispecies]; - rhs(0.0,yp,k3,dummyArray); + rhs(0.0,yp,k3,v_params); // k4 for (int ispecies = 0; ispecies < nspecies; ispecies++) yp[ispecies] = y[ispecies] + h*k3[ispecies]; - rhs(0.0,yp,k4,dummyArray); + rhs(0.0,yp,k4,v_params); for (int ispecies = 0; ispecies < nspecies; ispecies++) y[ispecies] += h*(k1[ispecies]/6.0 + k2[ispecies]/3.0 + k3[ispecies]/3.0 + k4[ispecies]/6.0); @@ -1018,9 +1068,6 @@ void FixRX::rk4(int id, double *rwork) y[ispecies] = 0.0; atom->dvector[ispecies][id] = y[ispecies]; } - - if (rwork == NULL) - delete [] k1; } /* ---------------------------------------------------------------------- */ @@ -1270,6 +1317,78 @@ void FixRX::odeDiagnostics(void) double max_per_proc[numCounters]; double min_per_proc[numCounters]; + if(1) + { + static bool firstStep = true; + + static TimerType oldTimeStamp (-1); + + TimerType now = getTimeStamp(); + + // Query the fix database and look for rx_weight for the balance fix. + int type_flag = -1; + int rx_weight_index = atom->find_custom( "rx_weight", /*0:int, 1:float*/ type_flag ); + + // Compute the average # of neighbors. + double averageNumNeighbors = 0; + { + const int inum = pairDPDE->list->inum; + const int* ilist = pairDPDE->list->ilist; + const int* numneigh = pairDPDE->list->numneigh; + + for (int ii = 0; ii < inum; ++ii) + { + const int i = ilist[ii]; + averageNumNeighbors += numneigh[i]; + } + + averageNumNeighbors /= inum; + } + + printf("me= %d nst= %g nfc= %g time= %g nlocal= %g lmpnst= %g weight_idx= %d 1st= %d aveNeigh= %g\n", comm->me, this->diagnosticCounter[0], this->diagnosticCounter[1], this->diagnosticCounter[2], this->diagnosticCounter[3], this->diagnosticCounter[4], rx_weight_index, firstStep, averageNumNeighbors); + + if (rx_weight_index != -1 && !firstStep && 0) + { + double *rx_weight = atom->dvector[rx_weight_index]; + + const int nlocal = atom->nlocal; + const int *mask = atom->mask; + + if (odeIntegrationFlag == ODE_LAMMPS_RKF45 && diagnosticFrequency == 1) + { + const double total_time = getElapsedTime( oldTimeStamp, now ); + const double fixrx_time = this->diagnosticCounter[TimeSum]; + const double time_ratio = fixrx_time / total_time; + + double tsum = 0.0; + double tmin = 100000, tmax = 0; + for (int i = 0; i < nlocal; ++i) + if (mask[i] & groupbit) + { + double nfunc_ratio = double( diagnosticCounterPerODE[FuncSum][i] ) / diagnosticCounter[FuncSum]; + rx_weight[i] = nfunc_ratio * fixrx_time + (total_time - fixrx_time) / nlocal; + tmin = fmin( tmin, rx_weight[i] ); + tmax = fmax( tmax, rx_weight[i] ); + tsum += rx_weight[i]; + //rx_weight[i] = (double) diagnosticCounterPerODE[FuncSum][i]; + } + + printf("me= %d total= %g fixrx= %g ratio= %g tsum= %g %g %g %g\n", comm->me, total_time, fixrx_time, time_ratio, tsum, (total_time - fixrx_time) / nlocal, tmin, tmax); + } + else + { + error->warning(FLERR, "Dynamic load balancing enabled but per-atom weights not available."); + + for (int i = 0; i < nlocal; ++i) + if (mask[i] & groupbit) + rx_weight[i] = 1.0; + } + } + + firstStep = false; + oldTimeStamp = now; + } + // Compute counters per dpd time-step. for (int i = 0; i < numCounters; ++i){ my_vals[i] = this->diagnosticCounter[i] / nTimes; @@ -1343,7 +1462,7 @@ void FixRX::odeDiagnostics(void) if (screen) fprintf(screen,"%s\n", smesg); \ if (logfile) fprintf(logfile,"%s\n", smesg); } - sprintf(smesg, "FixRX::ODE Diagnostics: # of steps |# of rhs evals| run-time (sec)"); + sprintf(smesg, "FixRX::ODE Diagnostics: # of iters |# of rhs evals| run-time (sec) | # atoms"); print_mesg(smesg); sprintf(smesg, " AVG per ODE : %-12.5g | %-12.5g | %-12.5g", avg_per_atom[0], avg_per_atom[1], avg_per_atom[2]); @@ -1365,7 +1484,7 @@ void FixRX::odeDiagnostics(void) print_mesg(smesg); } - sprintf(smesg, " AVG per Proc : %-12.5g | %-12.5g | %-12.5g", avg_per_proc[0], avg_per_proc[1], avg_per_proc[2]); + sprintf(smesg, " AVG per Proc : %-12.5g | %-12.5g | %-12.5g | %-12.5g", avg_per_proc[StepSum], avg_per_proc[FuncSum], avg_per_proc[TimeSum], avg_per_proc[AtomSum]); print_mesg(smesg); if (comm->nprocs > 1){ @@ -1373,13 +1492,13 @@ void FixRX::odeDiagnostics(void) for (int i = 0; i < numCounters; ++i) rms_per_proc[i] = sqrt( sum_sq[i] / comm->nprocs ); - sprintf(smesg, " RMS per Proc : %-12.5g | %-12.5g | %-12.5g", rms_per_proc[0], rms_per_proc[1], rms_per_proc[2]); + sprintf(smesg, " RMS per Proc : %-12.5g | %-12.5g | %-12.5g | %-12.5g", rms_per_proc[0], rms_per_proc[1], rms_per_proc[2], rms_per_proc[AtomSum]); print_mesg(smesg); - sprintf(smesg, " MAX per Proc : %-12.5g | %-12.5g | %-12.5g", max_per_proc[0], max_per_proc[1], max_per_proc[2]); + sprintf(smesg, " MAX per Proc : %-12.5g | %-12.5g | %-12.5g | %-12.5g", max_per_proc[0], max_per_proc[1], max_per_proc[2], max_per_proc[AtomSum]); print_mesg(smesg); - sprintf(smesg, " MIN per Proc : %-12.5g | %-12.5g | %-12.5g", min_per_proc[0], min_per_proc[1], min_per_proc[2]); + sprintf(smesg, " MIN per Proc : %-12.5g | %-12.5g | %-12.5g | %-12.5g", min_per_proc[0], min_per_proc[1], min_per_proc[2], min_per_proc[AtomSum]); print_mesg(smesg); } @@ -1399,7 +1518,7 @@ void FixRX::odeDiagnostics(void) return; } -void FixRX::rkf45(int id, double *rwork) +void FixRX::rkf45(int id, double *rwork, void *v_param, int ode_counter[]) { // Rounding coefficient. const double uround = DBL_EPSILON; @@ -1408,12 +1527,7 @@ void FixRX::rkf45(int id, double *rwork) const double adaption_limit = 4.0; //double *y = new double[8*nspecies + nreactions]; - double *y = NULL; - if (rwork == NULL) - y = new double[8*nspecies + nreactions]; - else - y = rwork; - double *rhstmp = y + 8*nspecies; + double *y = rwork; const int neq = nspecies; @@ -1450,7 +1564,7 @@ void FixRX::rkf45(int id, double *rwork) if (h < h_min){ //fprintf(stderr,"hin not implemented yet\n"); //exit(-1); - nfe = rkf45_h0 (neq, t, t_stop, h_min, h_max, h, y, y + neq, rhstmp); + nfe = rkf45_h0 (neq, t, t_stop, h_min, h_max, h, y, y + neq, v_param); } //printf("t= %e t_stop= %e h= %e\n", t, t_stop, h); @@ -1461,7 +1575,7 @@ void FixRX::rkf45(int id, double *rwork) double *eout = yout + neq; // Take a trial step. - rkf45_step (neq, h, y, yout, eout, rhstmp); + rkf45_step (neq, h, y, yout, eout, v_param); // Estimate the solution error. // ... weighted 2-norm of the error. @@ -1509,16 +1623,17 @@ void FixRX::rkf45(int id, double *rwork) if (maxIters && nit > maxIters){ //fprintf(stderr,"atom[%d] took too many iterations in rkf45 %d %e %e\n", id, nit, t, t_stop); - nFails ++; + //nFails ++; + ode_counter[3] ++; break; // We should set an error here so that the solution is not used! } } // end while - nSteps += nst; - nIters += nit; - nFuncs += nfe; + ode_counter[0] += nst; + ode_counter[1] += nit; + ode_counter[2] += nfe; //if (diagnosticFrequency == 1 && diagnosticCounterPerODE[StepSum] != NULL) if (diagnosticCounterPerODE[StepSum] != NULL){ @@ -1535,9 +1650,6 @@ void FixRX::rkf45(int id, double *rwork) y[ispecies] = 0.0; atom->dvector[ispecies][id] = y[ispecies]; } - - if (rwork == NULL) - delete [] y; } /* ---------------------------------------------------------------------- */ @@ -1555,21 +1667,23 @@ int FixRX::rhs(double t, const double *y, double *dydt, void *params) int FixRX::rhs_dense(double t, const double *y, double *dydt, void *params) { - double rxnRateLawForward; - double *rxnRateLaw = (double *) params; - double VDPD = domain->xprd * domain->yprd * domain->zprd / atom->natoms; - double concentration; - int nspecies = atom->nspecies_dpd; + UserRHSData *userData = (UserRHSData *) params; + + double *rxnRateLaw = userData->rxnRateLaw; + double *kFor = userData->kFor; + + const double VDPD = domain->xprd * domain->yprd * domain->zprd / atom->natoms; + const int nspecies = atom->nspecies_dpd; for(int ispecies=0; ispeciesxprd * domain->yprd * domain->zprd / atom->natoms; - #define kFor (this->kR) + #define kFor (userData->kFor) #define kRev (NULL) - #define rxnRateLaw (_rxnRateLaw) + #define rxnRateLaw (userData->rxnRateLaw) #define conc (dydt) #define maxReactants (this->sparseKinetics_maxReactants) #define maxSpecies (this->sparseKinetics_maxSpecies) diff --git a/src/USER-DPD/fix_rx.h b/src/USER-DPD/fix_rx.h index 35998963e2fbe1fd946d19a7f8d392cb30e4f971..ca87fc51fdef77c8a5c6197015aece6c59768428 100644 --- a/src/USER-DPD/fix_rx.h +++ b/src/USER-DPD/fix_rx.h @@ -66,19 +66,19 @@ class FixRX : public Fix { double *kR; //!< Classic Runge-Kutta 4th-order stepper. - void rk4(int,double*); + void rk4(int, double*, void*); //!< Runge-Kutta-Fehlberg ODE Solver. - void rkf45(int,double*); + void rkf45(int, double*, void*, int ode_counter[]); //!< Runge-Kutta-Fehlberg ODE stepper function. void rkf45_step (const int neq, const double h, double y[], double y_out[], - double rwk[], void* v_param); + double rwk[], void *); //!< Initial step size estimation for the Runge-Kutta-Fehlberg ODE solver. int rkf45_h0 (const int neq, const double t, const double t_stop, const double hmin, const double hmax, - double& h0, double y[], double rwk[], void* v_params); + double& h0, double y[], double rwk[], void *v_params); class PairDPDfdtEnergy *pairDPDE; double *dpdThetaLocal; @@ -90,6 +90,13 @@ class FixRX : public Fix { int rhs(double, const double *, double *, void *); int rhs_dense (double, const double *, double *, void *); + // User-defined data container needed in rhs. + struct UserRHSData + { + double *kFor; + double *rxnRateLaw; + }; + // Sparse stoichiometric matrix storage format and methods. bool useSparseKinetics; //SparseKinetics sparseKinetics; @@ -116,10 +123,10 @@ class FixRX : public Fix { double relTol, absTol; //!< Relative and absolute tolerances for the ODE solver(s). // ODE Diagnostics - int nSteps; //!< # of accepted steps taken over all atoms. - int nIters; //!< # of attemped steps for all atoms. - int nFuncs; //!< # of RHS evaluations for all atoms. - int nFails; //!< # of ODE systems that failed (for some reason). + //int nSteps; //!< # of accepted steps taken over all atoms. + //int nIters; //!< # of attemped steps for all atoms. + //int nFuncs; //!< # of RHS evaluations for all atoms. + //int nFails; //!< # of ODE systems that failed (for some reason). int diagnosticFrequency; //!< Frequency (LMP steps) that run-time diagnostics will be printed to the log. enum { numDiagnosticCounters = 5 }; diff --git a/src/USER-DPD/fix_shardlow.cpp b/src/USER-DPD/fix_shardlow.cpp index d14c1e0ddbdfe7eaf25548229e467550cc455f88..cec53ab15fcec09a05cadd48f9b8c2f1b4ebab7e 100644 --- a/src/USER-DPD/fix_shardlow.cpp +++ b/src/USER-DPD/fix_shardlow.cpp @@ -55,6 +55,7 @@ #include "pair_dpd_fdt.h" #include "pair_dpd_fdt_energy.h" #include "pair.h" +#include "npair_half_bin_newton_ssa.h" #include "citeme.h" using namespace LAMMPS_NS; @@ -95,6 +96,8 @@ FixShardlow::FixShardlow(LAMMPS *lmp, int narg, char **arg) : pairDPDE = NULL; pairDPD = (PairDPDfdt *) force->pair_match("dpd/fdt",1); pairDPDE = (PairDPDfdtEnergy *) force->pair_match("dpd/fdt/energy",1); + if (pairDPDE == NULL) + pairDPDE = (PairDPDfdtEnergy *) force->pair_match("dpd/fdt/energy/kk",1); if(pairDPDE){ comm_forward = 3; @@ -107,26 +110,12 @@ FixShardlow::FixShardlow(LAMMPS *lmp, int narg, char **arg) : if(pairDPD == NULL && pairDPDE == NULL) error->all(FLERR,"Must use pair_style dpd/fdt or dpd/fdt/energy with fix shardlow"); - // Setup the ssaAIR array - atom->ssaAIR = NULL; - grow_arrays(atom->nmax); - memset(atom->ssaAIR, 0, sizeof(int)*atom->nlocal); - - // Setup callbacks for maintaining atom->ssaAIR[] - atom->add_callback(0); // grow (aka exchange) - atom->add_callback(1); // restart - atom->add_callback(2); // border } /* ---------------------------------------------------------------------- */ FixShardlow::~FixShardlow() { - atom->delete_callback(id, 0); - atom->delete_callback(id, 1); - atom->delete_callback(id, 2); - - memory->destroy(atom->ssaAIR); } /* ---------------------------------------------------------------------- */ @@ -135,7 +124,6 @@ int FixShardlow::setmask() { int mask = 0; mask |= INITIAL_INTEGRATE; - mask |= PRE_EXCHANGE | MIN_PRE_EXCHANGE; return mask; } @@ -144,9 +132,11 @@ int FixShardlow::setmask() void FixShardlow::init() { int irequest = neighbor->request(this,instance_me); - neighbor->requests[irequest]->pair = 0; - neighbor->requests[irequest]->fix = 1; - neighbor->requests[irequest]->ssa = 1; + neighbor->requests[irequest]->pair = 0; + neighbor->requests[irequest]->fix = 1; + neighbor->requests[irequest]->ghost = 1; + neighbor->requests[irequest]->ssa = 1; + neighbor->requests[irequest]->newton = 1; // SSA requires newton on } /* ---------------------------------------------------------------------- */ @@ -158,27 +148,6 @@ void FixShardlow::init_list(int id, NeighList *ptr) /* ---------------------------------------------------------------------- */ -void FixShardlow::pre_exchange() -{ - memset(atom->ssaAIR, 0, sizeof(int)*atom->nlocal); -} - -/* ---------------------------------------------------------------------- */ - -void FixShardlow::setup_pre_exchange() -{ - memset(atom->ssaAIR, 0, sizeof(int)*atom->nlocal); -} - -/* ---------------------------------------------------------------------- */ - -void FixShardlow::min_pre_exchange() -{ - memset(atom->ssaAIR, 0, sizeof(int)*atom->nlocal); -} - -/* ---------------------------------------------------------------------- */ - void FixShardlow::setup(int vflag) { bool fixShardlow = false; @@ -243,6 +212,10 @@ void FixShardlow::ssa_update_dpd( const double mass_i = (rmass) ? rmass[i] : mass[itype]; const double massinv_i = 1.0 / mass_i; +#ifdef DEBUG_SSA_PAIR_CT + const int nlocal = atom->nlocal; +#endif + // Loop over Directional Neighbors only for (int jj = 0; jj < jlen; jj++) { int j = jlist[jj] & NEIGHMASK; @@ -252,9 +225,23 @@ void FixShardlow::ssa_update_dpd( double dely = ytmp - x[j][1]; double delz = ztmp - x[j][2]; double rsq = delx*delx + dely*dely + delz*delz; +#ifdef DEBUG_SSA_PAIR_CT + if ((i < nlocal) && (j < nlocal)) ++(counters[0][0]); + else ++(counters[0][1]); + ++(counters[0][2]); + int rsqi = rsq / 8; + if (rsqi < 0) rsqi = 0; + else if (rsqi > 31) rsqi = 31; + ++(hist[rsqi]); +#endif // NOTE: r can be 0.0 in DPD systems, so do EPSILON_SQUARED test if ((rsq < cut2_i[jtype]) && (rsq >= EPSILON_SQUARED)) { +#ifdef DEBUG_SSA_PAIR_CT + if ((i < nlocal) && (j < nlocal)) ++(counters[1][0]); + else ++(counters[1][1]); + ++(counters[1][2]); +#endif double r = sqrt(rsq); double rinv = 1.0/r; double delx_rinv = delx*rinv; @@ -382,6 +369,10 @@ void FixShardlow::ssa_update_dpde( const double massinv_i = 1.0 / mass_i; const double mass_i_div_neg4_ftm2v = mass_i*(-0.25)/ftm2v; +#ifdef DEBUG_SSA_PAIR_CT + const int nlocal = atom->nlocal; +#endif + // Loop over Directional Neighbors only for (int jj = 0; jj < jlen; jj++) { int j = jlist[jj] & NEIGHMASK; @@ -391,9 +382,23 @@ void FixShardlow::ssa_update_dpde( double dely = ytmp - x[j][1]; double delz = ztmp - x[j][2]; double rsq = delx*delx + dely*dely + delz*delz; +#ifdef DEBUG_SSA_PAIR_CT + if ((i < nlocal) && (j < nlocal)) ++(counters[0][0]); + else ++(counters[0][1]); + ++(counters[0][2]); + int rsqi = rsq / 8; + if (rsqi < 0) rsqi = 0; + else if (rsqi > 31) rsqi = 31; + ++(hist[rsqi]); +#endif // NOTE: r can be 0.0 in DPD systems, so do EPSILON_SQUARED test if ((rsq < cut2_i[jtype]) && (rsq >= EPSILON_SQUARED)) { +#ifdef DEBUG_SSA_PAIR_CT + if ((i < nlocal) && (j < nlocal)) ++(counters[1][0]); + else ++(counters[1][1]); + ++(counters[1][2]); +#endif double r = sqrt(rsq); double rinv = 1.0/r; double delx_rinv = delx*rinv; @@ -518,7 +523,19 @@ void FixShardlow::initial_integrate(int vflag) error->all(FLERR,"Fix shardlow does not yet support triclinic geometries"); if(rcut >= bbx || rcut >= bby || rcut>= bbz ) - error->all(FLERR,"Shardlow algorithm requires sub-domain length > 2*(rcut+skin). Either reduce the number of processors requested, or change the cutoff/skin\n"); + { + char fmt[] = {"Shardlow algorithm requires sub-domain length > 2*(rcut+skin). Either reduce the number of processors requested, or change the cutoff/skin: rcut= %e bbx= %e bby= %e bbz= %e\n"}; + char *msg = (char *) malloc(sizeof(fmt) + 4*15); + sprintf(msg, fmt, rcut, bbx, bby, bbz); + error->one(FLERR, msg); + } + +#ifdef DEBUG_SSA_PAIR_CT + for (int i = 0; i < 2; ++i) + for (int j = 0; j < 3; ++j) + counters[i][j] = 0; + for (int i = 0; i < 32; ++i) hist[i] = 0; +#endif // Allocate memory for v_t0 to hold the initial velocities for the ghosts v_t0 = (double (*)[3]) memory->smalloc(sizeof(double)*3*nghost, "FixShardlow:v_t0"); @@ -528,36 +545,69 @@ void FixShardlow::initial_integrate(int vflag) dtsqrt = sqrt(update->dt); - //Loop over all 14 directions (8 stages) - for (airnum = 1; airnum <=8; airnum++){ + NPairHalfBinNewtonSSA *np_ssa = dynamic_cast(list->np); + if (!np_ssa) error->one(FLERR, "NPair wasn't a NPairHalfBinNewtonSSA object"); + int ssa_phaseCt = np_ssa->ssa_phaseCt; + int *ssa_phaseLen = np_ssa->ssa_phaseLen; + int **ssa_itemLoc = np_ssa->ssa_itemLoc; + int **ssa_itemLen = np_ssa->ssa_itemLen; + + // process neighbors in the local AIR + for (int workPhase = 0; workPhase < ssa_phaseCt; ++workPhase) { + int workItemCt = ssa_phaseLen[workPhase]; + + for (int workItem = 0; workItem < workItemCt; ++workItem) { + int ct = ssa_itemLen[workPhase][workItem]; + ii = ssa_itemLoc[workPhase][workItem]; + + while (ct-- > 0) { + int len = list->numneigh[ii]; + if (len > 0) { + if (useDPDE) ssa_update_dpde(ilist[ii], list->firstneigh[ii], len); + else ssa_update_dpd(ilist[ii], list->firstneigh[ii], len); + } + ii++; + } + } + } - if (airnum > 1) { - // Communicate the updated velocities to all nodes - comm->forward_comm_fix(this); + ii = inum; + //Loop over all 13 outward directions (7 stages) + for (airnum = 1; airnum <=7; airnum++){ + int ct = list->AIRct_ssa[airnum]; - if(useDPDE){ - // Zero out the ghosts' uCond & uMech to be used as delta accumulators - memset(&(atom->uCond[nlocal]), 0, sizeof(double)*nghost); - memset(&(atom->uMech[nlocal]), 0, sizeof(double)*nghost); - } + // Communicate the updated velocities to all nodes + comm->forward_comm_fix(this); + + if(useDPDE){ + // Zero out the ghosts' uCond & uMech to be used as delta accumulators + memset(&(atom->uCond[nlocal]), 0, sizeof(double)*nghost); + memset(&(atom->uMech[nlocal]), 0, sizeof(double)*nghost); } - // Loop over neighbors of my atoms - for (ii = 0; ii < inum; ii++) { - i = ilist[ii]; - int start = (airnum < 2) ? 0 : list->ndxAIR_ssa[i][airnum - 2]; - int len = list->ndxAIR_ssa[i][airnum - 1] - start; - if (len > 0) { - if (useDPDE) ssa_update_dpde(i, &(list->firstneigh[i][start]), len); - else ssa_update_dpd(i, &(list->firstneigh[i][start]), len); - } + // process neighbors in this AIR + while (ct-- > 0) { + int len = list->numneigh[ii]; + if (useDPDE) ssa_update_dpde(ilist[ii], list->firstneigh[ii], len); + else ssa_update_dpd(ilist[ii], list->firstneigh[ii], len); + ii++; } // Communicate the ghost deltas to the atom owners - if (airnum > 1) comm->reverse_comm_fix(this); + comm->reverse_comm_fix(this); } //End Loop over all directions For airnum = Top, Top-Right, Right, Bottom-Right, Back +#ifdef DEBUG_SSA_PAIR_CT +for (int i = 0; i < 32; ++i) fprintf(stdout, "%8d", hist[i]); +fprintf(stdout, "\n%6d %6d,%6d %6d: " + ,counters[0][2] + ,counters[1][2] + ,counters[0][1] + ,counters[1][1] +); +#endif + memory->sfree(v_t0); v_t0 = NULL; } @@ -643,91 +693,11 @@ void FixShardlow::unpack_reverse_comm(int n, int *list, double *buf) } } -/* ---------------------------------------------------------------------- - convert atom coords into the ssa active interaction region number -------------------------------------------------------------------------- */ - -int FixShardlow::coord2ssaAIR(double *x) -{ - int ix, iy, iz; - - ix = iy = iz = 0; - if (x[2] < domain->sublo[2]) iz = -1; - if (x[2] >= domain->subhi[2]) iz = 1; - if (x[1] < domain->sublo[1]) iy = -1; - if (x[1] >= domain->subhi[1]) iy = 1; - if (x[0] < domain->sublo[0]) ix = -1; - if (x[0] >= domain->subhi[0]) ix = 1; - - if(iz < 0){ - return -1; - } else if(iz == 0){ - if( iy<0 ) return -1; // bottom left/middle/right - if( (iy==0) && (ix<0) ) return -1; // left atoms - if( (iy==0) && (ix==0) ) return 0; // Locally owned atoms - if( (iy==0) && (ix>0) ) return 3; // Right atoms - if( (iy>0) && (ix==0) ) return 2; // Top-middle atoms - if( (iy>0) && (ix!=0) ) return 4; // Top-right and top-left atoms - } else { // iz > 0 - if((ix==0) && (iy==0)) return 5; // Back atoms - if((ix==0) && (iy!=0)) return 6; // Top-back and bottom-back atoms - if((ix!=0) && (iy==0)) return 7; // Left-back and right-back atoms - if((ix!=0) && (iy!=0)) return 8; // Back corner atoms - } - - return -2; -} - /* ---------------------------------------------------------------------- */ -void FixShardlow::grow_arrays(int nmax) -{ - memory->grow(atom->ssaAIR,nmax,"fix_shardlow:ssaAIR"); -} - -void FixShardlow::copy_arrays(int i, int j, int delflag) -{ - atom->ssaAIR[j] = atom->ssaAIR[i]; -} - -void FixShardlow::set_arrays(int i) -{ - atom->ssaAIR[i] = 0; /* coord2ssaAIR(x[i]) */ -} - -int FixShardlow::pack_border(int n, int *list, double *buf) -{ - for (int i = 0; i < n; i++) { - int j = list[i]; - if (atom->ssaAIR[j] == 0) atom->ssaAIR[j] = 1; // not purely local anymore - } - return 0; -} - -int FixShardlow::unpack_border(int n, int first, double *buf) -{ - int i,last = first + n; - for (i = first; i < last; i++) { - atom->ssaAIR[i] = coord2ssaAIR(atom->x[i]); - } - return 0; -} - -int FixShardlow::unpack_exchange(int i, double *buf) -{ - atom->ssaAIR[i] = 0; /* coord2ssaAIR(x[i]) */ - return 0; -} - -void FixShardlow::unpack_restart(int i, int nth) -{ - atom->ssaAIR[i] = 0; /* coord2ssaAIR(x[i]) */ -} - double FixShardlow::memory_usage() { double bytes = 0.0; - bytes += memory->usage(atom->ssaAIR,atom->nmax); bytes += sizeof(double)*3*atom->nghost; // v_t0[] return bytes; } diff --git a/src/USER-DPD/fix_shardlow.h b/src/USER-DPD/fix_shardlow.h index 2ffb96ae7cac06bafbf7533a650ad462a03abc93..e8e5f484a0c7b1540cce855680d4459ffeeaad6c 100644 --- a/src/USER-DPD/fix_shardlow.h +++ b/src/USER-DPD/fix_shardlow.h @@ -35,21 +35,14 @@ class FixShardlow : public Fix { virtual void init_list(int, class NeighList *); virtual void setup(int); virtual void initial_integrate(int); - void setup_pre_exchange(); - void pre_exchange(); - void min_pre_exchange(); - - void grow_arrays(int); - void copy_arrays(int, int, int); - void set_arrays(int); - - int pack_border(int, int *, double *); - int unpack_border(int, int, double *); - int unpack_exchange(int, double *); - void unpack_restart(int, int); double memory_usage(); +#ifdef DEBUG_SSA_PAIR_CT + int counters[2][3]; + int hist[32]; +#endif + protected: int pack_reverse_comm(int, int, double *); void unpack_reverse_comm(int, int *, double *); @@ -63,7 +56,6 @@ class FixShardlow : public Fix { private: double dtsqrt; // = sqrt(update->dt); - int coord2ssaAIR(double *); // map atom coord to an AIR number void ssa_update_dpd(int, int *, int); // Constant Temperature void ssa_update_dpde(int, int *, int); // Constant Energy diff --git a/src/USER-DPD/nbin_ssa.cpp b/src/USER-DPD/nbin_ssa.cpp index f65a397e88d02e29fc81016733073dd8b0940db3..4c57a8e70ff95e0488afb55aafc38f4646696920 100644 --- a/src/USER-DPD/nbin_ssa.cpp +++ b/src/USER-DPD/nbin_ssa.cpp @@ -20,6 +20,7 @@ #include "atom.h" #include "update.h" #include "group.h" +#include "domain.h" #include "memory.h" #include "error.h" @@ -29,24 +30,19 @@ using namespace LAMMPS_NS; NBinSSA::NBinSSA(LAMMPS *lmp) : NBinStandard(lmp) { - maxbin_ssa = 0; - bins_ssa = NULL; - maxhead_ssa = 0; - binhead_ssa = NULL; - gbinhead_ssa = NULL; + for (int i = 0; i < 8; i++) { + gairhead_ssa[i] = -1; + } } NBinSSA::~NBinSSA() { - memory->destroy(bins_ssa); - memory->destroy(binhead_ssa); - memory->destroy(gbinhead_ssa); } /* ---------------------------------------------------------------------- bin owned and ghost atoms for the Shardlow Splitting Algorithm (SSA) - local atoms are in distinct bins (binhead_ssa) from the ghosts - ghost atoms are in distinct bins (gbinhead_ssa) from the locals + local atoms are in distinct bins (binhead[]) from the ghosts + ghost atoms are "binned" in gairhead_ssa[] instead ghosts which are not in an Active Interaction Region (AIR) are skipped ------------------------------------------------------------------------- */ @@ -58,13 +54,19 @@ void NBinSSA::bin_atoms() if (includegroup) nlocal = atom->nfirst; double **x = atom->x; int *mask = atom->mask; - int *ssaAIR = atom->ssaAIR; + int xbin,ybin,zbin; last_bin = update->ntimestep; + bboxlo_[0] = bboxlo[0]; bboxlo_[1] = bboxlo[1]; bboxlo_[2] = bboxlo[2]; + bboxhi_[0] = bboxhi[0]; bboxhi_[1] = bboxhi[1]; bboxhi_[2] = bboxhi[2]; + + for (i = 0; i < 8; i++) { + gairhead_ssa[i] = -1; + } + for (i = 0; i < mbins; i++) { - gbinhead_ssa[i] = -1; - binhead_ssa[i] = -1; + binhead[i] = -1; } // bin in reverse order so linked list will be in forward order @@ -73,29 +75,34 @@ void NBinSSA::bin_atoms() int bitmask = group->bitmask[includegroup]; int nowned = atom->nlocal; // NOTE: nlocal was set to atom->nfirst above for (i = nall-1; i >= nowned; i--) { - if (ssaAIR[i] < 2) continue; // skip ghost atoms not in AIR + ibin = coord2ssaAIR(x[i]); + if (ibin < 1) continue; // skip ghost atoms not in AIR if (mask[i] & bitmask) { - ibin = coord2bin(x[i]); - atom2bin[i] = ibin; - bins_ssa[i] = gbinhead_ssa[ibin]; - gbinhead_ssa[ibin] = i; + bins[i] = gairhead_ssa[ibin]; + gairhead_ssa[ibin] = i; } } } else { for (i = nall-1; i >= nlocal; i--) { - if (ssaAIR[i] < 2) continue; // skip ghost atoms not in AIR - ibin = coord2bin(x[i]); - atom2bin[i] = ibin; - bins_ssa[i] = gbinhead_ssa[ibin]; - gbinhead_ssa[ibin] = i; + ibin = coord2ssaAIR(x[i]); + if (ibin < 1) continue; // skip ghost atoms not in AIR + bins[i] = gairhead_ssa[ibin]; + gairhead_ssa[ibin] = i; } } for (i = nlocal-1; i >= 0; i--) { - ibin = coord2bin(x[i]); - atom2bin[i] = ibin; - bins_ssa[i] = binhead_ssa[ibin]; - binhead_ssa[ibin] = i; + ibin = coord2bin(x[i][0], x[i][1], x[i][2], xbin, ybin, zbin); + // Find the bounding box of the local atoms in the bins + if (xbin < lbinxlo) lbinxlo = xbin; + if (xbin >= lbinxhi) lbinxhi = xbin + 1; + if (ybin < lbinylo) lbinylo = ybin; + if (ybin >= lbinyhi) lbinyhi = ybin + 1; + if (zbin < lbinzlo) lbinzlo = zbin; + if (zbin >= lbinzhi) lbinzhi = zbin + 1; + bins[i] = binhead[ibin]; + binhead[ibin] = i; } + } /* ---------------------------------------------------------------------- */ @@ -104,19 +111,13 @@ void NBinSSA::bin_atoms_setup(int nall) { NBinStandard::bin_atoms_setup(nall); // Setup the parent class's data too - if (mbins > maxhead_ssa) { - maxhead_ssa = mbins; - memory->destroy(gbinhead_ssa); - memory->destroy(binhead_ssa); - memory->create(binhead_ssa,maxhead_ssa,"binhead_ssa"); - memory->create(gbinhead_ssa,maxhead_ssa,"gbinhead_ssa"); - } - - if (nall > maxbin_ssa) { - maxbin_ssa = nall; - memory->destroy(bins_ssa); - memory->create(bins_ssa,maxbin_ssa,"bins_ssa"); - } + // Clear the local bin extent bounding box. + lbinxlo = mbinx - 1; // Safe to = stencil->sx + 1 + lbinylo = mbiny - 1; // Safe to = stencil->sy + 1 + lbinzlo = mbinz - 1; // Safe to = stencil->sz + 1 + lbinxhi = 0; // Safe to = mbinx - stencil->sx - 1 + lbinyhi = 0; // Safe to = mbiny - stencil->sy - 1 + lbinzhi = 0; // Safe to = mbinz - stencil->sz - 1 } /* ---------------------------------------------------------------------- */ @@ -125,10 +126,39 @@ bigint NBinSSA::memory_usage() { bigint bytes = NBinStandard::memory_usage(); // Count the parent's usage too - if (maxbin_ssa) bytes += memory->usage(bins_ssa,maxbin_ssa); - if (maxhead_ssa) { - bytes += memory->usage(binhead_ssa,maxhead_ssa); - bytes += memory->usage(gbinhead_ssa,maxhead_ssa); - } return bytes; } + +/* ---------------------------------------------------------------------- + convert atom coords into the ssa active interaction region number +------------------------------------------------------------------------- */ +int NBinSSA::coord2ssaAIR(const double *x) +{ + int ix, iy, iz; + + ix = iy = iz = 0; + if (x[2] < domain->sublo[2]) iz = -1; + if (x[2] >= domain->subhi[2]) iz = 1; + if (x[1] < domain->sublo[1]) iy = -1; + if (x[1] >= domain->subhi[1]) iy = 1; + if (x[0] < domain->sublo[0]) ix = -1; + if (x[0] >= domain->subhi[0]) ix = 1; + + if(iz < 0){ + return -1; + } else if(iz == 0){ + if( iy<0 ) return -1; // bottom left/middle/right + if( (iy==0) && (ix<0) ) return -1; // left atoms + if( (iy==0) && (ix==0) ) return 0; // Locally owned atoms + if( (iy==0) && (ix>0) ) return 2; // Right atoms + if( (iy>0) && (ix==0) ) return 1; // Top-middle atoms + if( (iy>0) && (ix!=0) ) return 3; // Top-right and top-left atoms + } else { // iz > 0 + if((ix==0) && (iy==0)) return 4; // Back atoms + if((ix==0) && (iy!=0)) return 5; // Top-back and bottom-back atoms + if((ix!=0) && (iy==0)) return 6; // Left-back and right-back atoms + if((ix!=0) && (iy!=0)) return 7; // Back corner atoms + } + + return -2; +} diff --git a/src/USER-DPD/nbin_ssa.h b/src/USER-DPD/nbin_ssa.h index f0699b3a7ae2298204cacb769b9d9bb6d53e39cf..2a0175081ea02edab1647cdfaf210acc647300e0 100644 --- a/src/USER-DPD/nbin_ssa.h +++ b/src/USER-DPD/nbin_ssa.h @@ -29,11 +29,15 @@ namespace LAMMPS_NS { class NBinSSA : public NBinStandard { public: - int *bins_ssa; // index of next atom in each bin - int maxbin_ssa; // size of bins_ssa array - int *binhead_ssa; // index of 1st local atom in each bin - int *gbinhead_ssa; // index of 1st ghost atom in each bin - int maxhead_ssa; // size of binhead_ssa and gbinhead_ssa arrays + int gairhead_ssa[8]; // index of 1st ghost atom in each AIR + + // Bounds of the local atoms in the binhead array + int lbinxlo; // lowest local bin x-dim coordinate + int lbinylo; // lowest local bin y-dim coordinate + int lbinzlo; // lowest local bin z-dim coordinate + int lbinxhi; // highest local bin x-dim coordinate + int lbinyhi; // highest local bin y-dim coordinate + int lbinzhi; // highest local bin z-dim coordinate NBinSSA(class LAMMPS *); ~NBinSSA(); @@ -42,6 +46,115 @@ class NBinSSA : public NBinStandard { void bin_atoms(); bigint memory_usage(); + + inline + int coord2bin(const double & x,const double & y,const double & z) const + { + int ix,iy,iz; + + if (x >= bboxhi_[0]) + ix = static_cast ((x-bboxhi_[0])*bininvx) + nbinx; + else if (x >= bboxlo_[0]) { + ix = static_cast ((x-bboxlo_[0])*bininvx); + ix = MIN(ix,nbinx-1); + } else + ix = static_cast ((x-bboxlo_[0])*bininvx) - 1; + + if (y >= bboxhi_[1]) + iy = static_cast ((y-bboxhi_[1])*bininvy) + nbiny; + else if (y >= bboxlo_[1]) { + iy = static_cast ((y-bboxlo_[1])*bininvy); + iy = MIN(iy,nbiny-1); + } else + iy = static_cast ((y-bboxlo_[1])*bininvy) - 1; + + if (z >= bboxhi_[2]) + iz = static_cast ((z-bboxhi_[2])*bininvz) + nbinz; + else if (z >= bboxlo_[2]) { + iz = static_cast ((z-bboxlo_[2])*bininvz); + iz = MIN(iz,nbinz-1); + } else + iz = static_cast ((z-bboxlo_[2])*bininvz) - 1; + + return (iz-mbinzlo)*mbiny*mbinx + (iy-mbinylo)*mbinx + (ix-mbinxlo); + } + + inline + int coord2bin(const double & x,const double & y,const double & z, int* i) const + { + int ix,iy,iz; + + if (x >= bboxhi_[0]) + ix = static_cast ((x-bboxhi_[0])*bininvx) + nbinx; + else if (x >= bboxlo_[0]) { + ix = static_cast ((x-bboxlo_[0])*bininvx); + ix = MIN(ix,nbinx-1); + } else + ix = static_cast ((x-bboxlo_[0])*bininvx) - 1; + + if (y >= bboxhi_[1]) + iy = static_cast ((y-bboxhi_[1])*bininvy) + nbiny; + else if (y >= bboxlo_[1]) { + iy = static_cast ((y-bboxlo_[1])*bininvy); + iy = MIN(iy,nbiny-1); + } else + iy = static_cast ((y-bboxlo_[1])*bininvy) - 1; + + if (z >= bboxhi_[2]) + iz = static_cast ((z-bboxhi_[2])*bininvz) + nbinz; + else if (z >= bboxlo_[2]) { + iz = static_cast ((z-bboxlo_[2])*bininvz); + iz = MIN(iz,nbinz-1); + } else + iz = static_cast ((z-bboxlo_[2])*bininvz) - 1; + + i[0] = ix - mbinxlo; + i[1] = iy - mbinylo; + i[2] = iz - mbinzlo; + + return (iz-mbinzlo)*mbiny*mbinx + (iy-mbinylo)*mbinx + (ix-mbinxlo); + } + + inline + int coord2bin(const double & x,const double & y,const double & z, int &ixo, int &iyo, int &izo) const + { + int ix,iy,iz; + + if (x >= bboxhi_[0]) + ix = static_cast ((x-bboxhi_[0])*bininvx) + nbinx; + else if (x >= bboxlo_[0]) { + ix = static_cast ((x-bboxlo_[0])*bininvx); + ix = MIN(ix,nbinx-1); + } else + ix = static_cast ((x-bboxlo_[0])*bininvx) - 1; + + if (y >= bboxhi_[1]) + iy = static_cast ((y-bboxhi_[1])*bininvy) + nbiny; + else if (y >= bboxlo_[1]) { + iy = static_cast ((y-bboxlo_[1])*bininvy); + iy = MIN(iy,nbiny-1); + } else + iy = static_cast ((y-bboxlo_[1])*bininvy) - 1; + + if (z >= bboxhi_[2]) + iz = static_cast ((z-bboxhi_[2])*bininvz) + nbinz; + else if (z >= bboxlo_[2]) { + iz = static_cast ((z-bboxlo_[2])*bininvz); + iz = MIN(iz,nbinz-1); + } else + iz = static_cast ((z-bboxlo_[2])*bininvz) - 1; + + ixo = ix - mbinxlo; + iyo = iy - mbinylo; + izo = iz - mbinzlo; + + return (iz-mbinzlo)*mbiny*mbinx + (iy-mbinylo)*mbinx + (ix-mbinxlo); + } + + private: + int coord2ssaAIR(const double *); // map atom coord to an AIR number + double bboxlo_[3],bboxhi_[3]; + }; } diff --git a/src/USER-DPD/npair_half_bin_newton_ssa.cpp b/src/USER-DPD/npair_half_bin_newton_ssa.cpp index e8e4b20a0ab64a5063de016f1cbeb1644c04e522..a6479d4c4f9c2d225aae248fe82f08c6a7c42fd9 100644 --- a/src/USER-DPD/npair_half_bin_newton_ssa.cpp +++ b/src/USER-DPD/npair_half_bin_newton_ssa.cpp @@ -32,15 +32,29 @@ using namespace LAMMPS_NS; -// allocate space for static class variable -// prototype for non-class function +/* ---------------------------------------------------------------------- */ -static int *ssaAIRptr; -static int cmp_ssaAIR(const void *, const void *); +NPairHalfBinNewtonSSA::NPairHalfBinNewtonSSA(LAMMPS *lmp) : NPair(lmp) +{ + ssa_maxPhaseCt = 0; + ssa_maxPhaseLen = 0; + ssa_phaseCt = 0; + ssa_phaseLen = NULL; + ssa_itemLoc = NULL; + ssa_itemLen = NULL; +} /* ---------------------------------------------------------------------- */ -NPairHalfBinNewtonSSA::NPairHalfBinNewtonSSA(LAMMPS *lmp) : NPair(lmp) {} +NPairHalfBinNewtonSSA::~NPairHalfBinNewtonSSA() +{ + ssa_maxPhaseCt = 0; + ssa_maxPhaseLen = 0; + ssa_phaseCt = 0; + memory->destroy(ssa_phaseLen); + memory->destroy(ssa_itemLoc); + memory->destroy(ssa_itemLen); +} /* ---------------------------------------------------------------------- binned neighbor list construction with full Newton's 3rd law @@ -65,7 +79,6 @@ void NPairHalfBinNewtonSSA::build(NeighList *list) int **nspecial = atom->nspecial; int nlocal = atom->nlocal; if (includegroup) nlocal = atom->nfirst; - int *ssaAIR = atom->ssaAIR; int *molindex = atom->molindex; int *molatom = atom->molatom; @@ -81,179 +94,218 @@ void NPairHalfBinNewtonSSA::build(NeighList *list) NStencilSSA *ns_ssa = dynamic_cast(ns); if (!ns_ssa) error->one(FLERR, "NStencil wasn't a NStencilSSA object"); - int nstencil_half = ns_ssa->nstencil_half; + int *nstencil_ssa = &(ns_ssa->nstencil_ssa[0]); int nstencil_full = ns_ssa->nstencil; NBinSSA *nb_ssa = dynamic_cast(nb); if (!nb_ssa) error->one(FLERR, "NBin wasn't a NBinSSA object"); - int *bins_ssa = nb_ssa->bins_ssa; - int *binhead_ssa = nb_ssa->binhead_ssa; - int *gbinhead_ssa = nb_ssa->gbinhead_ssa; + int *bins = nb_ssa->bins; + int *binhead = nb_ssa->binhead; + int *gairhead_ssa = &(nb_ssa->gairhead_ssa[0]); int inum = 0; + int gnum = 0; + int xbin,ybin,zbin,xbin2,ybin2,zbin2; + int **stencilxyz = ns_ssa->stencilxyz; + int lbinxlo = nb_ssa->lbinxlo; + int lbinxhi = nb_ssa->lbinxhi; + int lbinylo = nb_ssa->lbinylo; + int lbinyhi = nb_ssa->lbinyhi; + int lbinzlo = nb_ssa->lbinzlo; + int lbinzhi = nb_ssa->lbinzhi; + + int sx1 = ns_ssa->sx + 1; + int sy1 = ns_ssa->sy + 1; + int sz1 = ns_ssa->sz + 1; + + ssa_phaseCt = sz1*sy1*sx1; + + xbin = (lbinxhi - lbinxlo + sx1 - 1) / sx1 + 1; + ybin = (lbinyhi - lbinylo + sy1 - 1) / sy1 + 1; + zbin = (lbinzhi - lbinzlo + sz1 - 1) / sz1 + 1; + + int phaseLenEstimate = xbin*ybin*zbin; + + if (ssa_phaseCt > ssa_maxPhaseCt) { + ssa_maxPhaseCt = ssa_phaseCt; + ssa_maxPhaseLen = 0; + memory->destroy(ssa_phaseLen); + memory->destroy(ssa_itemLoc); + memory->destroy(ssa_itemLen); + memory->create(ssa_phaseLen,ssa_maxPhaseCt,"NPairHalfBinNewtonSSA:ssa_phaseLen"); + } - ipage->reset(); - - // loop over owned atoms, storing half of the neighbors - - for (i = 0; i < nlocal; i++) { - int AIRct[8] = { 0 }; - n = 0; - neighptr = ipage->vget(); - - itype = type[i]; - xtmp = x[i][0]; - ytmp = x[i][1]; - ztmp = x[i][2]; - if (moltemplate) { - imol = molindex[i]; - iatom = molatom[i]; - tagprev = tag[i] - iatom - 1; - } + if (phaseLenEstimate > ssa_maxPhaseLen) { + ssa_maxPhaseLen = phaseLenEstimate; + memory->destroy(ssa_itemLoc); + memory->destroy(ssa_itemLen); + memory->create(ssa_itemLoc,ssa_maxPhaseCt,ssa_maxPhaseLen,"NPairHalfBinNewtonSSA:ssa_itemLoc"); + memory->create(ssa_itemLen,ssa_maxPhaseCt,ssa_maxPhaseLen,"NPairHalfBinNewtonSSA:ssa_itemLen"); + } - // loop over rest of local atoms in i's bin - // just store them, since j is beyond i in linked list - - for (j = bins_ssa[i]; j >= 0; j = bins_ssa[j]) { - - jtype = type[j]; - if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) 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 <= cutneighsq[itype][jtype]) { - if (molecular) { - if (!moltemplate) - which = find_special(special[i],nspecial[i],tag[j]); - else if (imol >= 0) - which = find_special(onemols[imol]->special[iatom], - onemols[imol]->nspecial[iatom], - tag[j]-tagprev); - else which = 0; - if (which == 0) neighptr[n++] = j; - else if (domain->minimum_image_check(delx,dely,delz)) - neighptr[n++] = j; - else if (which > 0) neighptr[n++] = j ^ (which << SBBITS); - } else neighptr[n++] = j; - } - } + ipage->reset(); - ibin = atom2bin[i]; - - // loop over all local atoms in other bins in "half" stencil - - for (k = 0; k < nstencil_half; k++) { - for (j = binhead_ssa[ibin+stencil[k]]; j >= 0; - j = bins_ssa[j]) { - - jtype = type[j]; - if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) 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 <= cutneighsq[itype][jtype]) { - if (molecular) { - if (!moltemplate) - which = find_special(special[i],nspecial[i],tag[j]); - else if (imol >= 0) - which = find_special(onemols[imol]->special[iatom], - onemols[imol]->nspecial[iatom], - tag[j]-tagprev); - else which = 0; - if (which == 0) neighptr[n++] = j; - else if (domain->minimum_image_check(delx,dely,delz)) - neighptr[n++] = j; - else if (which > 0) neighptr[n++] = j ^ (which << SBBITS); - } else neighptr[n++] = j; + int workPhase = 0; + // loop over bins with local atoms, storing half of the neighbors + for (int zoff = ns_ssa->sz; zoff >= 0; --zoff) { + for (int yoff = ns_ssa->sy; yoff >= 0; --yoff) { + for (int xoff = ns_ssa->sx; xoff >= 0; --xoff) { + int workItem = 0; + for (zbin = lbinzlo + zoff; zbin < lbinzhi; zbin += sz1) { + for (ybin = lbinylo + yoff - ns_ssa->sy; ybin < lbinyhi; ybin += sy1) { + for (xbin = lbinxlo + xoff - ns_ssa->sx; xbin < lbinxhi; xbin += sx1) { + if (workItem >= phaseLenEstimate) error->one(FLERR,"phaseLenEstimate was too small"); + ssa_itemLoc[workPhase][workItem] = inum; // record where workItem starts in ilist + + for (int subphase = 0; subphase < 4; subphase++) { + int s_ybin = ybin + ((subphase & 0x2) ? ns_ssa->sy : 0); + int s_xbin = xbin + ((subphase & 0x1) ? ns_ssa->sx : 0); + int ibin, ct; + + if ((s_ybin < lbinylo) || (s_ybin >= lbinyhi)) continue; + if ((s_xbin < lbinxlo) || (s_xbin >= lbinxhi)) continue; + ibin = zbin*nb_ssa->mbiny*nb_ssa->mbinx + + s_ybin*nb_ssa->mbinx + + s_xbin; + + for (i = binhead[ibin]; i >= 0; i = bins[i]) { + n = 0; + neighptr = ipage->vget(); + itype = type[i]; + xtmp = x[i][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + if (moltemplate) { + imol = molindex[i]; + iatom = molatom[i]; + tagprev = tag[i] - iatom - 1; } - } - } - AIRct[0] = n; - - // loop over AIR ghost atoms in all bins in "full" stencil - // Note: the non-AIR ghost atoms have already been filtered out - // That is a significant time savings because of the "full" stencil - // Note2: only non-pure locals can have ghosts as neighbors - - if (ssaAIR[i] == 1) for (k = 0; k < nstencil_full; k++) { - for (j = gbinhead_ssa[ibin+stencil[k]]; j >= 0; - j = bins_ssa[j]) { - - jtype = type[j]; - if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) 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 <= cutneighsq[itype][jtype]) { - if (molecular) { - if (!moltemplate) - which = find_special(special[i],nspecial[i],tag[j]); - else if (imol >= 0) - which = find_special(onemols[imol]->special[iatom], - onemols[imol]->nspecial[iatom], - tag[j]-tagprev); - else which = 0; - if (which == 0) { - neighptr[n++] = j; - ++(AIRct[ssaAIR[j] - 1]); - } else if (domain->minimum_image_check(delx,dely,delz)) { - neighptr[n++] = j; - ++(AIRct[ssaAIR[j] - 1]); - } else if (which > 0) { - neighptr[n++] = j ^ (which << SBBITS); - ++(AIRct[ssaAIR[j] - 1]); + + // loop over all local atoms in the current stencil "subphase" + for (k = nstencil_ssa[subphase]; k < nstencil_ssa[subphase+1]; k++) { + const int jbin = ibin+stencil[k]; + if (jbin != ibin) j = binhead[jbin]; + else j = bins[i]; // same bin as i, so start just past i in the bin + for (; j >= 0; j = bins[j]) { + jtype = type[j]; + if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) 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 <= cutneighsq[itype][jtype]) { + if (molecular) { + if (!moltemplate) + which = find_special(special[i],nspecial[i],tag[j]); + else if (imol >= 0) + which = find_special(onemols[imol]->special[iatom], + onemols[imol]->nspecial[iatom], + tag[j]-tagprev); + else which = 0; + if (which == 0) neighptr[n++] = j; + else if (domain->minimum_image_check(delx,dely,delz)) + neighptr[n++] = j; + else if (which > 0) neighptr[n++] = j ^ (which << SBBITS); + } else neighptr[n++] = j; } - } else { - neighptr[n++] = j; - ++(AIRct[ssaAIR[j] - 1]); } } + + if (n > 0) { + firstneigh[inum] = neighptr; + numneigh[inum] = n; + ilist[inum++] = i; + } + ipage->vgot(n); + if (ipage->status()) + error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); } } + // record where workItem ends in ilist + ssa_itemLen[workPhase][workItem] = inum - ssa_itemLoc[workPhase][workItem]; + if (ssa_itemLen[workPhase][workItem] > 0) workItem++; + } + } + } - ilist[inum++] = i; - firstneigh[i] = neighptr; - numneigh[i] = n; - ipage->vgot(n); - if (ipage->status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - - // sort the ghosts in the neighbor list by their ssaAIR number - - ssaAIRptr = atom->ssaAIR; - qsort(&(neighptr[AIRct[0]]), n - AIRct[0], sizeof(int), cmp_ssaAIR); + // record where workPhase ends + ssa_phaseLen[workPhase++] = workItem; + } + } + } - // do a prefix sum on the counts to turn them into indexes + if (ssa_phaseCt != workPhase) error->one(FLERR,"ssa_phaseCt was wrong"); + + list->AIRct_ssa[0] = list->inum = inum; + + // loop over AIR ghost atoms, storing their local neighbors + // since these are ghosts, must check if stencil bin is out of bounds + for (int airnum = 1; airnum <= 7; airnum++) { + int locAIRct = 0; + for (i = gairhead_ssa[airnum]; i >= 0; i = bins[i]) { + n = 0; + neighptr = ipage->vget(); + + itype = type[i]; + xtmp = x[i][0]; + ytmp = x[i][1]; + ztmp = x[i][2]; + + ibin = coord2bin(x[i],xbin,ybin,zbin); + + // loop over AIR ghost atoms in all bins in "full" stencil + // Note: the non-AIR ghost atoms have already been filtered out + for (k = 0; k < nstencil_full; k++) { + xbin2 = xbin + stencilxyz[k][0]; + ybin2 = ybin + stencilxyz[k][1]; + zbin2 = zbin + stencilxyz[k][2]; + // Skip it if this bin is outside the extent of local bins + if (xbin2 < lbinxlo || xbin2 >= lbinxhi || + ybin2 < lbinylo || ybin2 >= lbinyhi || + zbin2 < lbinzlo || zbin2 >= lbinzhi) continue; + for (j = binhead[ibin+stencil[k]]; j >= 0; j = bins[j]) { + + jtype = type[j]; + if (exclude && exclusion(i,j,itype,jtype,mask,molecule)) 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 <= cutneighsq[itype][jtype]) { + if (molecular) { + if (!moltemplate) + which = find_special(special[j],nspecial[j],tag[i]); + else { + int jmol = molindex[j]; + if (jmol >= 0) { + int jatom = molatom[j]; + which = find_special(onemols[jmol]->special[jatom], + onemols[jmol]->nspecial[jatom], + tag[i] - (tag[j] - jatom - 1)); + } else which = 0; + } + if (which == 0) neighptr[n++] = j; + else if (domain->minimum_image_check(delx,dely,delz)) + neighptr[n++] = j; + else if (which > 0) neighptr[n++] = j ^ (which << SBBITS); + } else neighptr[n++] = j; + } + } + } - list->ndxAIR_ssa[i][0] = AIRct[0]; - for (int ndx = 1; ndx < 8; ++ndx) { - list->ndxAIR_ssa[i][ndx] = AIRct[ndx] + list->ndxAIR_ssa[i][ndx - 1]; + if (n > 0) { + firstneigh[inum + gnum] = neighptr; + numneigh[inum + gnum] = n; + ilist[inum + (gnum++)] = i; + ++locAIRct; + } + ipage->vgot(n); + if (ipage->status()) + error->one(FLERR,"Neighbor (ghost) list overflow, boost neigh_modify one"); } + list->AIRct_ssa[airnum] = locAIRct; } - - list->inum = inum; + list->gnum = gnum; } - -/* ---------------------------------------------------------------------- - comparison function invoked by qsort() - accesses static class member ssaAIRptr, set before call to qsort() -------------------------------------------------------------------------- */ - -static int cmp_ssaAIR(const void *iptr, const void *jptr) -{ - int i = NEIGHMASK & *((int *) iptr); - int j = NEIGHMASK & *((int *) jptr); - if (ssaAIRptr[i] < ssaAIRptr[j]) return -1; - if (ssaAIRptr[i] > ssaAIRptr[j]) return 1; - return 0; -} - diff --git a/src/USER-DPD/npair_half_bin_newton_ssa.h b/src/USER-DPD/npair_half_bin_newton_ssa.h index 13347b33b0dddaea16c90f85b9d0936c323426e2..ea292316ca740608346ccc8b2c8be5fa09b51370 100644 --- a/src/USER-DPD/npair_half_bin_newton_ssa.h +++ b/src/USER-DPD/npair_half_bin_newton_ssa.h @@ -15,7 +15,7 @@ NPairStyle(half/bin/newton/ssa, NPairHalfBinNewtonSSA, - NP_HALF | NP_BIN | NP_NEWTON | NP_ORTHO | NP_SSA) + NP_HALF | NP_BIN | NP_NEWTON | NP_ORTHO | NP_SSA | NP_GHOST) #else @@ -28,9 +28,18 @@ namespace LAMMPS_NS { class NPairHalfBinNewtonSSA : public NPair { public: + // SSA Work plan data structures + int ssa_phaseCt; + int *ssa_phaseLen; + int **ssa_itemLoc; + int **ssa_itemLen; + NPairHalfBinNewtonSSA(class LAMMPS *); - ~NPairHalfBinNewtonSSA() {} + ~NPairHalfBinNewtonSSA(); void build(class NeighList *); + private: + int ssa_maxPhaseCt; + int ssa_maxPhaseLen; }; } diff --git a/src/USER-DPD/npair_halffull_newton_ssa.cpp b/src/USER-DPD/npair_halffull_newton_ssa.cpp deleted file mode 100644 index 2c9de3e50fad855d4e350580f6363543728de993..0000000000000000000000000000000000000000 --- a/src/USER-DPD/npair_halffull_newton_ssa.cpp +++ /dev/null @@ -1,132 +0,0 @@ -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - http://lammps.sandia.gov, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - Copyright (2003) Sandia Corporation. Under the terms of Contract - DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains - certain rights in this software. This software is distributed under - the GNU General Public License. - - See the README file in the top-level LAMMPS directory. -------------------------------------------------------------------------- */ - -/* ---------------------------------------------------------------------- - Contributing authors: - James Larentzos and Timothy I. Mattox (Engility Corporation) -------------------------------------------------------------------------- */ - -#include "npair_halffull_newton_ssa.h" -#include "neighbor.h" -#include "neigh_list.h" -#include "atom.h" -#include "atom_vec.h" -#include "molecule.h" -#include "domain.h" -#include "my_page.h" -#include "error.h" - -using namespace LAMMPS_NS; - -// allocate space for static class variable -// prototype for non-class function - -static int *ssaAIRptr; -static int cmp_ssaAIR(const void *, const void *); - -/* ---------------------------------------------------------------------- */ - -NPairHalffullNewtonSSA::NPairHalffullNewtonSSA(LAMMPS *lmp) : NPair(lmp) {} - -/* ---------------------------------------------------------------------- - build half list from full list for use by Shardlow Spliting Algorithm - pair stored once if i,j are both owned and i < j - if j is ghost, only store if j coords are "above and to the right" of i - works if full list is a skip list -------------------------------------------------------------------------- */ - -void NPairHalffullNewtonSSA::build(NeighList *list) -{ - int i,j,ii,jj,n,jnum,joriginal; - int *neighptr,*jlist; - - int nlocal = atom->nlocal; - int *ssaAIR = atom->ssaAIR; - - int *ilist = list->ilist; - int *numneigh = list->numneigh; - int **firstneigh = list->firstneigh; - MyPage *ipage = list->ipage; - - int *ilist_full = list->listfull->ilist; - int *numneigh_full = list->listfull->numneigh; - int **firstneigh_full = list->listfull->firstneigh; - int inum_full = list->listfull->inum; - - int inum = 0; - ipage->reset(); - - // loop over parent full list - - for (ii = 0; ii < inum_full; ii++) { - int AIRct[8] = { 0 }; - n = 0; - neighptr = ipage->vget(); - - i = ilist_full[ii]; - - // loop over full neighbor list - - jlist = firstneigh_full[i]; - jnum = numneigh_full[i]; - - for (jj = 0; jj < jnum; jj++) { - joriginal = jlist[jj]; - j = joriginal & NEIGHMASK; - if (j < nlocal) { - if (i > j) continue; - ++(AIRct[0]); - } else { - if (ssaAIR[j] < 2) continue; // skip ghost atoms not in AIR - ++(AIRct[ssaAIR[j] - 1]); - } - neighptr[n++] = joriginal; - } - - ilist[inum++] = i; - firstneigh[i] = neighptr; - numneigh[i] = n; - ipage->vgot(n); - if (ipage->status()) - error->one(FLERR,"Neighbor list overflow, boost neigh_modify one"); - - // sort the locals+ghosts in the neighbor list by their ssaAIR number - - ssaAIRptr = atom->ssaAIR; - qsort(&(neighptr[0]), n, sizeof(int), cmp_ssaAIR); - - // do a prefix sum on the counts to turn them into indexes - - list->ndxAIR_ssa[i][0] = AIRct[0]; - for (int ndx = 1; ndx < 8; ++ndx) { - list->ndxAIR_ssa[i][ndx] = AIRct[ndx] + list->ndxAIR_ssa[i][ndx - 1]; - } - } - - list->inum = inum; -} - -/* ---------------------------------------------------------------------- - comparison function invoked by qsort() - accesses static class member ssaAIRptr, set before call to qsort() -------------------------------------------------------------------------- */ - -static int cmp_ssaAIR(const void *iptr, const void *jptr) -{ - int i = NEIGHMASK & *((int *) iptr); - int j = NEIGHMASK & *((int *) jptr); - if (ssaAIRptr[i] < ssaAIRptr[j]) return -1; - if (ssaAIRptr[i] > ssaAIRptr[j]) return 1; - return 0; -} - diff --git a/src/USER-DPD/nstencil_half_bin_2d_newton_ssa.cpp b/src/USER-DPD/nstencil_half_bin_2d_newton_ssa.cpp index df379a109a6b29ae3c9612cc9d21f15ab75f3393..451381c1049242ac8cd3fe8efdb6599f71672897 100644 --- a/src/USER-DPD/nstencil_half_bin_2d_newton_ssa.cpp +++ b/src/USER-DPD/nstencil_half_bin_2d_newton_ssa.cpp @@ -42,23 +42,72 @@ NStencilHalfBin2dNewtonSSA::NStencilHalfBin2dNewtonSSA(LAMMPS *lmp) : void NStencilHalfBin2dNewtonSSA::create() { int i,j,pos = 0; + nstencil_ssa[0] = 0; // redundant info, but saves a conditional + // Include the centroid at the start. + // It will be handled as part of Subphase 0. + stencilxyz[pos][0] = 0; + stencilxyz[pos][1] = 0; + stencilxyz[pos][2] = 0; + stencil[pos++] = 0; + + // Subphase 0: upper right front bins (red) for (j = 0; j <= sy; j++) - for (i = -sx; i <= sx; i++) - if (j > 0 || (j == 0 && i > 0)) - if (bin_distance(i,j,0) < cutneighmaxsq) + for (i = 0; i <= sx; i++) + if (j > 0 || i > 0) // skip the centroid + if (bin_distance(i,j,0) < cutneighmaxsq) { + stencilxyz[pos][0] = i; + stencilxyz[pos][1] = j; + stencilxyz[pos][2] = 0; stencil[pos++] = j*mbinx + i; + } + + nstencil_ssa[1] = pos; + // Subphase 1: upper left front bins (light blue) + for (j = 1; j <= sy; j++) + for (i = -sx; i < 0; i++) + if (bin_distance(i,j,0) < cutneighmaxsq) { + stencilxyz[pos][0] = i; + stencilxyz[pos][1] = j; + stencilxyz[pos][2] = 0; + stencil[pos++] = j*mbinx + i; + } + + nstencil_ssa[2] = pos; + // Subphase 2: lower right front bins (yellow) - nstencil_half = pos; // record where normal half stencil ends + nstencil_ssa[3] = pos; + // Subphase 3: lower left front bins (blue) - // include additional bins for AIR ghosts only + nstencil_ssa[4] = pos; // record end of half stencil + // Now include additional bins for AIR ghosts, and impure-to-pure locals + // Subphase 4: upper right back bins (pink) + + // nstencil_ssa[5] = pos; + // Subphase 5: upper left back bins (light green) + + // nstencil_ssa[6] = pos; + // Subphase 6: lower right back bins (white) + for (j = -sy; j < 0; j++) + for (i = 0; i <= sx; i++) + if (bin_distance(i,j,0) < cutneighmaxsq) { + stencilxyz[pos][0] = i; + stencilxyz[pos][1] = j; + stencilxyz[pos][2] = 0; + stencil[pos++] = j*mbinx + i; + } + // nstencil_ssa[7] = pos; + // Subphase 7: lower left back bins (purple) for (j = -sy; j <= 0; j++) - for (i = -sx; i <= sx; i++) { - if (j == 0 && i > 0) continue; - if (bin_distance(i,j,0) < cutneighmaxsq) + for (i = -sx; i < 0; i++) + if (bin_distance(i,j,0) < cutneighmaxsq) { + stencilxyz[pos][0] = i; + stencilxyz[pos][1] = j; + stencilxyz[pos][2] = 0; stencil[pos++] = j*mbinx + i; - } + } + // nstencil_ssa[8] = pos; nstencil = pos; // record where full stencil ends } diff --git a/src/USER-DPD/nstencil_half_bin_2d_newton_ssa.h b/src/USER-DPD/nstencil_half_bin_2d_newton_ssa.h index 30901bb3e264870d60bd8557ffd21b27764d974c..1d5cc3f6b2dcb5bc53c858995ca7916c56d5387f 100644 --- a/src/USER-DPD/nstencil_half_bin_2d_newton_ssa.h +++ b/src/USER-DPD/nstencil_half_bin_2d_newton_ssa.h @@ -15,7 +15,7 @@ NStencilStyle(half/bin/2d/newton/ssa, NStencilHalfBin2dNewtonSSA, - NS_HALF | NS_BIN | NS_2D | NS_NEWTON | NS_SSA | NS_ORTHO) + NS_HALF | NS_BIN | NS_2D | NS_NEWTON | NS_SSA | NS_ORTHO | NS_GHOST) #else diff --git a/src/USER-DPD/nstencil_half_bin_3d_newton_ssa.cpp b/src/USER-DPD/nstencil_half_bin_3d_newton_ssa.cpp index 76c9931ab20d7eb8451473130837f5d6136f3e73..cdd3b8856f682ec9535a7c9e694dabe751b84ffa 100644 --- a/src/USER-DPD/nstencil_half_bin_3d_newton_ssa.cpp +++ b/src/USER-DPD/nstencil_half_bin_3d_newton_ssa.cpp @@ -42,33 +42,112 @@ NStencilHalfBin3dNewtonSSA::NStencilHalfBin3dNewtonSSA(LAMMPS *lmp) : void NStencilHalfBin3dNewtonSSA::create() { int i,j,k,pos = 0; + nstencil_ssa[0] = 0; // redundant info, but saves a conditional + // Include the centroid at the start. + // It will be handled as part of Subphase 0. + stencilxyz[pos][0] = 0; + stencilxyz[pos][1] = 0; + stencilxyz[pos][2] = 0; + stencil[pos++] = 0; + + // Subphase 0: upper right front bins (red) for (k = 0; k <= sz; k++) - for (j = -sy; j <= sy; j++) - for (i = -sx; i <= sx; i++) - if (k > 0 || j > 0 || (j == 0 && i > 0)) - if (bin_distance(i,j,k) < cutneighmaxsq) + for (j = 0; j <= sy; j++) + for (i = 0; i <= sx; i++) + if (k > 0 || j > 0 || i > 0) // skip the centroid + if (bin_distance(i,j,k) < cutneighmaxsq) { + stencilxyz[pos][0] = i; + stencilxyz[pos][1] = j; + stencilxyz[pos][2] = k; stencil[pos++] = k*mbiny*mbinx + j*mbinx + i; + } - nstencil_half = pos; // record where normal half stencil ends - - // include additional bins for AIR ghosts only + nstencil_ssa[1] = pos; + // Subphase 1: upper left front bins (light blue) + for (k = 0; k <= sz; k++) + for (j = 1; j <= sy; j++) + for (i = -sx; i < 0; i++) + if (bin_distance(i,j,k) < cutneighmaxsq) { + stencilxyz[pos][0] = i; + stencilxyz[pos][1] = j; + stencilxyz[pos][2] = k; + stencil[pos++] = k*mbiny*mbinx + j*mbinx + i; + } + + nstencil_ssa[2] = pos; + // Subphase 2: lower right front bins (yellow) + for (k = 1; k <= sz; k++) + for (j = -sy; j < 0; j++) + for (i = 0; i <= sx; i++) + if (bin_distance(i,j,k) < cutneighmaxsq) { + stencilxyz[pos][0] = i; + stencilxyz[pos][1] = j; + stencilxyz[pos][2] = k; + stencil[pos++] = k*mbiny*mbinx + j*mbinx + i; + } + + nstencil_ssa[3] = pos; + // Subphase 3: lower left front bins (blue) + for (k = 1; k <= sz; k++) + for (j = -sy; j <= 0; j++) + for (i = -sx; i < 0; i++) + if (bin_distance(i,j,k) < cutneighmaxsq) { + stencilxyz[pos][0] = i; + stencilxyz[pos][1] = j; + stencilxyz[pos][2] = k; + stencil[pos++] = k*mbiny*mbinx + j*mbinx + i; + } + nstencil_ssa[4] = pos; // record end of half stencil + // Now include additional bins for AIR ghosts, and impure-to-pure locals + // Subphase 4: upper right back bins (pink) for (k = -sz; k < 0; k++) - for (j = -sy; j <= sy; j++) - for (i = -sx; i <= sx; i++) - if (bin_distance(i,j,k) < cutneighmaxsq) + for (j = 0; j <= sy; j++) + for (i = 0; i <= sx; i++) + if (bin_distance(i,j,k) < cutneighmaxsq) { + stencilxyz[pos][0] = i; + stencilxyz[pos][1] = j; + stencilxyz[pos][2] = k; stencil[pos++] = k*mbiny*mbinx + j*mbinx + i; + } - // For k==0, make sure to skip already included bins - - k = 0; - for (j = -sy; j <= 0; j++) - for (i = -sx; i <= sx; i++) { - if (j == 0 && i > 0) continue; - if (bin_distance(i,j,k) < cutneighmaxsq) - stencil[pos++] = k*mbiny*mbinx + j*mbinx + i; - } + // nstencil_ssa[5] = pos; + // Subphase 5: upper left back bins (light green) + for (k = -sz; k < 0; k++) + for (j = 1; j <= sy; j++) + for (i = -sx; i < 0; i++) + if (bin_distance(i,j,k) < cutneighmaxsq) { + stencilxyz[pos][0] = i; + stencilxyz[pos][1] = j; + stencilxyz[pos][2] = k; + stencil[pos++] = k*mbiny*mbinx + j*mbinx + i; + } + + // nstencil_ssa[6] = pos; + // Subphase 6: lower right back bins (white) + for (k = -sz; k <= 0; k++) + for (j = -sy; j < 0; j++) + for (i = 0; i <= sx; i++) + if (bin_distance(i,j,k) < cutneighmaxsq) { + stencilxyz[pos][0] = i; + stencilxyz[pos][1] = j; + stencilxyz[pos][2] = k; + stencil[pos++] = k*mbiny*mbinx + j*mbinx + i; + } + + // nstencil_ssa[7] = pos; + // Subphase 7: lower left back bins (purple) + for (k = -sz; k <= 0; k++) + for (j = -sy; j <= 0; j++) + for (i = -sx; i < 0; i++) + if (bin_distance(i,j,k) < cutneighmaxsq) { + stencilxyz[pos][0] = i; + stencilxyz[pos][1] = j; + stencilxyz[pos][2] = k; + stencil[pos++] = k*mbiny*mbinx + j*mbinx + i; + } + //nstencil_ssa[8] = pos; nstencil = pos; // record where full stencil ends } diff --git a/src/USER-DPD/nstencil_half_bin_3d_newton_ssa.h b/src/USER-DPD/nstencil_half_bin_3d_newton_ssa.h index 7765b256d30d3a2dcfd27e3a3c8cfb5614a05e28..450a696e465abd56e3116419053ea5068d9c277e 100644 --- a/src/USER-DPD/nstencil_half_bin_3d_newton_ssa.h +++ b/src/USER-DPD/nstencil_half_bin_3d_newton_ssa.h @@ -15,7 +15,7 @@ NStencilStyle(half/bin/3d/newton/ssa, NStencilHalfBin3dNewtonSSA, - NS_HALF | NS_BIN | NS_3D | NS_NEWTON | NS_SSA | NS_ORTHO) + NS_HALF | NS_BIN | NS_3D | NS_NEWTON | NS_SSA | NS_ORTHO | NS_GHOST) #else diff --git a/src/USER-DPD/nstencil_ssa.h b/src/USER-DPD/nstencil_ssa.h index 9fcd19ee26d9f40abf3d53923af4de6e7082e3fa..f6f91fefde65a604719b4db07de707095835bd65 100644 --- a/src/USER-DPD/nstencil_ssa.h +++ b/src/USER-DPD/nstencil_ssa.h @@ -20,11 +20,12 @@ namespace LAMMPS_NS { class NStencilSSA : public NStencil { public: - NStencilSSA(class LAMMPS *lmp) : NStencil(lmp) { } + NStencilSSA(class LAMMPS *lmp) : NStencil(lmp) { xyzflag = 1; } ~NStencilSSA() {} virtual void create() = 0; - int nstencil_half; // where the half stencil ends + // first stencil index for each subphase, with last index at end + int nstencil_ssa[5]; }; } diff --git a/src/USER-DPD/pair_dpd_fdt.cpp b/src/USER-DPD/pair_dpd_fdt.cpp index 26f5806cf1331f1c57fc69300654b9e389da61ab..95908c556d12156e3e8e0d14e8f672be66655890 100644 --- a/src/USER-DPD/pair_dpd_fdt.cpp +++ b/src/USER-DPD/pair_dpd_fdt.cpp @@ -316,18 +316,17 @@ void PairDPDfdt::init_style() if (comm->ghost_velocity == 0) error->all(FLERR,"Pair dpd/fdt 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(FLERR, - "Pair dpd/fdt requires newton pair on"); - splitFDT_flag = false; int irequest = neighbor->request(this,instance_me); for (int i = 0; i < modify->nfix; i++) - if (strcmp(modify->fix[i]->style,"shardlow") == 0){ + if (strncmp(modify->fix[i]->style,"shardlow", 8) == 0){ splitFDT_flag = true; } + + // if newton off, forces between atoms ij will be double computed + // using different random numbers if splitFDT_flag is false + if (!splitFDT_flag && (force->newton_pair == 0) && (comm->me == 0)) error->warning(FLERR, + "Pair dpd/fdt requires newton pair on if not also using fix shardlow"); } /* ---------------------------------------------------------------------- diff --git a/src/USER-DPD/pair_dpd_fdt_energy.cpp b/src/USER-DPD/pair_dpd_fdt_energy.cpp index c3fc7fb3f510509e0a8736efe3081b5e6a59fd83..32ac456b0fffede0ea5b4551877f6d1e001bb511 100644 --- a/src/USER-DPD/pair_dpd_fdt_energy.cpp +++ b/src/USER-DPD/pair_dpd_fdt_energy.cpp @@ -55,6 +55,8 @@ PairDPDfdtEnergy::PairDPDfdtEnergy(LAMMPS *lmp) : Pair(lmp) PairDPDfdtEnergy::~PairDPDfdtEnergy() { + if (copymode) return; + if (allocated) { memory->destroy(setflag); memory->destroy(cutsq); @@ -403,19 +405,18 @@ void PairDPDfdtEnergy::init_style() if (comm->ghost_velocity == 0) error->all(FLERR,"Pair dpd/fdt/energy 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(FLERR, - "Pair dpd/fdt/energy requires newton pair on"); - splitFDT_flag = false; int irequest = neighbor->request(this,instance_me); for (int i = 0; i < modify->nfix; i++) - if (strcmp(modify->fix[i]->style,"shardlow") == 0){ + if (strncmp(modify->fix[i]->style,"shardlow", 8) == 0){ splitFDT_flag = true; } + // if newton off, forces between atoms ij will be double computed + // using different random numbers if splitFDT_flag is false + if (!splitFDT_flag && (force->newton_pair == 0) && (comm->me == 0)) error->warning(FLERR, + "Pair dpd/fdt/energy requires newton pair on if not also using fix shardlow"); + bool eos_flag = false; for (int i = 0; i < modify->nfix; i++) if (strncmp(modify->fix[i]->style,"eos",3) == 0) eos_flag = true; diff --git a/src/USER-DPD/pair_dpd_fdt_energy.h b/src/USER-DPD/pair_dpd_fdt_energy.h index 84ab28aca480ee2ed760729b89aa9f08bbfb21e6..dce39f83f071904a0e8d832095edc0f1a7d85a0a 100644 --- a/src/USER-DPD/pair_dpd_fdt_energy.h +++ b/src/USER-DPD/pair_dpd_fdt_energy.h @@ -31,8 +31,8 @@ class PairDPDfdtEnergy : public Pair { virtual void compute(int, int); virtual void settings(int, char **); virtual void coeff(int, char **); - void init_style(); - double init_one(int, int); + virtual void init_style(); + virtual double init_one(int, int); void write_restart(FILE *); void read_restart(FILE *); virtual void write_restart_settings(FILE *); @@ -46,15 +46,15 @@ class PairDPDfdtEnergy : public Pair { double **sigma,**kappa; double *duCond,*duMech; + int seed; class RanMars *random; protected: double cut_global; - int seed; bool splitFDT_flag; bool a0_is_zero; - void allocate(); + virtual void allocate(); }; diff --git a/src/USER-DPD/pair_exp6_rx.cpp b/src/USER-DPD/pair_exp6_rx.cpp index 61b62efc53595706d82ba2e02e3bb3ed1d36846b..8b6fc9beed8e65836bb26350d1ecf8c48c02ed1d 100644 --- a/src/USER-DPD/pair_exp6_rx.cpp +++ b/src/USER-DPD/pair_exp6_rx.cpp @@ -84,11 +84,15 @@ PairExp6rx::PairExp6rx(LAMMPS *lmp) : Pair(lmp) PairExp6rx::~PairExp6rx() { - for (int i=0; i < nparams; ++i) { - delete[] params[i].name; - delete[] params[i].potential; + if (copymode) return; + + if (params != NULL) { + for (int i=0; i < nparams; ++i) { + delete[] params[i].name; + delete[] params[i].potential; + } + memory->destroy(params); } - memory->destroy(params); memory->destroy(mol2param); if (allocated) { diff --git a/src/USER-DPD/pair_exp6_rx.h b/src/USER-DPD/pair_exp6_rx.h index 33bd6e6623880dba0ea280d9b976ed903ad2698e..45c046cc07b9ebe914961f1c62af052c2159913a 100644 --- a/src/USER-DPD/pair_exp6_rx.h +++ b/src/USER-DPD/pair_exp6_rx.h @@ -30,13 +30,21 @@ class PairExp6rx : public Pair { virtual ~PairExp6rx(); virtual void compute(int, int); void settings(int, char **); - void coeff(int, char **); + virtual 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 *); + struct Param { + double epsilon,rm,alpha; + int ispecies; + char *name, *potential; // names of unique molecules and interaction type + char *tablename; // name of interaction table + int potentialType; // enumerated interaction potential type. + }; + protected: enum{LINEAR}; enum{NONE,EXPONENT,POLYNOMIAL}; @@ -45,21 +53,14 @@ class PairExp6rx : public Pair { double **epsilon,**rm,**alpha; double **rminv,**buck1,**buck2,**offset; - void allocate(); + virtual void allocate(); int *mol2param; // mapping from molecule to parameters int nparams; // # of stored parameter sets int maxparam; // max # of parameter sets - struct Param { - double epsilon,rm,alpha; - int ispecies; - char *name, *potential; // names of unique molecules and interaction type - char *tablename; // name of interaction table - int potentialType; // enumerated interaction potential type. - }; Param *params; // parameter set for an I-J-K interaction int nspecies; - void read_file(char *); + virtual void read_file(char *); void read_file2(char *); void setup(); diff --git a/src/USER-DPD/pair_multi_lucy_rx.cpp b/src/USER-DPD/pair_multi_lucy_rx.cpp index 43d41147416bc6ffd28fcfea29d48b02cae0bb29..4628edbc127c41187ea750a5545b55f192c9592f 100644 --- a/src/USER-DPD/pair_multi_lucy_rx.cpp +++ b/src/USER-DPD/pair_multi_lucy_rx.cpp @@ -85,6 +85,8 @@ PairMultiLucyRX::PairMultiLucyRX(LAMMPS *lmp) : Pair(lmp), PairMultiLucyRX::~PairMultiLucyRX() { + if (copymode) return; + for (int m = 0; m < ntables; m++) free_table(&tables[m]); memory->sfree(tables); diff --git a/src/USER-DPD/pair_multi_lucy_rx.h b/src/USER-DPD/pair_multi_lucy_rx.h index 092f40f1d11fd7053c77465401d3cd1e9f21c19d..2bfa5d20e3cb90721249234eadfeeb0dc838df54 100644 --- a/src/USER-DPD/pair_multi_lucy_rx.h +++ b/src/USER-DPD/pair_multi_lucy_rx.h @@ -30,17 +30,17 @@ class PairMultiLucyRX : public Pair { virtual ~PairMultiLucyRX(); virtual void compute(int, int); - void settings(int, char **); + virtual 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 *); - int pack_forward_comm(int, int *, double *, int, int *); - void unpack_forward_comm(int, int, double *); - int pack_reverse_comm(int, int, double *); - void unpack_reverse_comm(int, int *, double *); + virtual int pack_forward_comm(int, int *, double *, int, int *); + virtual void unpack_forward_comm(int, int, double *); + virtual int pack_reverse_comm(int, int, double *); + virtual void unpack_reverse_comm(int, int *, double *); void computeLocalDensity(); double rho_0; @@ -64,7 +64,7 @@ class PairMultiLucyRX : public Pair { int **tabindex; - void allocate(); + virtual void allocate(); void read_table(Table *, char *, char *); void param_extract(Table *, char *); void bcast_table(Table *); diff --git a/src/USER-DPD/pair_table_rx.cpp b/src/USER-DPD/pair_table_rx.cpp index 2529d33f918629b606d11bc6e54e1dca85ec4fd4..89d09e73227bd3ed0c6d9f3e86714237fc98ae3d 100644 --- a/src/USER-DPD/pair_table_rx.cpp +++ b/src/USER-DPD/pair_table_rx.cpp @@ -33,8 +33,6 @@ using namespace LAMMPS_NS; enum{NONE,RLINEAR,RSQ,BMP}; -#define MAXLINE 1024 - #ifdef DBL_EPSILON #define MY_EPSILON (10.0*DBL_EPSILON) #else @@ -46,25 +44,19 @@ enum{NONE,RLINEAR,RSQ,BMP}; /* ---------------------------------------------------------------------- */ -PairTableRX::PairTableRX(LAMMPS *lmp) : Pair(lmp) +PairTableRX::PairTableRX(LAMMPS *lmp) : PairTable(lmp) { - ntables = 0; - tables = NULL; fractionalWeighting = true; + site1 = NULL; + site2 = NULL; } /* ---------------------------------------------------------------------- */ PairTableRX::~PairTableRX() { - for (int m = 0; m < ntables; m++) free_table(&tables[m]); - memory->sfree(tables); - - if (allocated) { - memory->destroy(setflag); - memory->destroy(cutsq); - memory->destroy(tabindex); - } + delete [] site1; + delete [] site2; } /* ---------------------------------------------------------------------- */ @@ -252,24 +244,6 @@ void PairTableRX::compute(int eflag, int vflag) memory->destroy(mixWtSite2); } -/* ---------------------------------------------------------------------- - allocate all arrays -------------------------------------------------------------------------- */ - -void PairTableRX::allocate() -{ - allocated = 1; - const int nt = atom->ntypes + 1; - - memory->create(setflag,nt,nt,"pair:setflag"); - memory->create(cutsq,nt,nt,"pair:cutsq"); - memory->create(tabindex,nt,nt,"pair:tabindex"); - - memset(&setflag[0][0],0,nt*nt*sizeof(int)); - memset(&cutsq[0][0],0,nt*nt*sizeof(double)); - memset(&tabindex[0][0],0,nt*nt*sizeof(int)); -} - /* ---------------------------------------------------------------------- global settings ------------------------------------------------------------------------- */ @@ -299,8 +273,8 @@ void PairTableRX::settings(int narg, char **arg) else if (strcmp(arg[iarg],"msm") == 0) msmflag = 1; else if (strcmp(arg[iarg],"dispersion") == 0) dispersionflag = 1; else if (strcmp(arg[iarg],"tip4p") == 0) tip4pflag = 1; - else if (strcmp(arg[iarg],"fractional") == 0) fractionalWeighting = true; - else if (strcmp(arg[iarg],"molecular") == 0) fractionalWeighting = false; + else if (strcmp(arg[iarg],"fractional") == 0) fractionalWeighting = true; + else if (strcmp(arg[iarg],"molecular") == 0) fractionalWeighting = false; else error->all(FLERR,"Illegal pair_style command"); iarg++; } @@ -462,602 +436,6 @@ void PairTableRX::coeff(int narg, char **arg) } -/* ---------------------------------------------------------------------- - init for one type pair i,j and corresponding j,i -------------------------------------------------------------------------- */ - -double PairTableRX::init_one(int i, int j) -{ - if (setflag[i][j] == 0) error->all(FLERR,"All pair coeffs are not set"); - - tabindex[j][i] = tabindex[i][j]; - - return tables[tabindex[i][j]].cut; -} - -/* ---------------------------------------------------------------------- - read a table section from a tabulated potential file - only called by proc 0 - this function sets these values in Table: - ninput,rfile,efile,ffile,rflag,rlo,rhi,fpflag,fplo,fphi,ntablebits -------------------------------------------------------------------------- */ - -void PairTableRX::read_table(Table *tb, char *file, char *keyword) -{ - char line[MAXLINE]; - - // open file - - FILE *fp = force->open_potential(file); - if (fp == NULL) { - char str[128]; - sprintf(str,"Cannot open file %s",file); - error->one(FLERR,str); - } - - // loop until section found with matching keyword - - while (1) { - if (fgets(line,MAXLINE,fp) == NULL) - 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 - char *word = strtok(line," \t\n\r"); - if (strcmp(word,keyword) == 0) break; // matching keyword - fgets(line,MAXLINE,fp); // no match, skip section - param_extract(tb,line); - fgets(line,MAXLINE,fp); - for (int i = 0; i < tb->ninput; i++) fgets(line,MAXLINE,fp); - } - - // read args on 2nd line of section - // allocate table arrays for file values - - fgets(line,MAXLINE,fp); - param_extract(tb,line); - memory->create(tb->rfile,tb->ninput,"pair:rfile"); - memory->create(tb->efile,tb->ninput,"pair:efile"); - memory->create(tb->ffile,tb->ninput,"pair:ffile"); - - // setup bitmap parameters for table to read in - - tb->ntablebits = 0; - int masklo,maskhi,nmask,nshiftbits; - if (tb->rflag == BMP) { - while (1 << tb->ntablebits < tb->ninput) tb->ntablebits++; - if (1 << tb->ntablebits != tb->ninput) - error->one(FLERR,"Bitmapped table is incorrect length in table file"); - init_bitmap(tb->rlo,tb->rhi,tb->ntablebits,masklo,maskhi,nmask,nshiftbits); - } - - // read r,e,f table values from file - // if rflag set, compute r - // if rflag not set, use r from file - - int itmp; - double rtmp; - union_int_float_t rsq_lookup; - - fgets(line,MAXLINE,fp); - for (int i = 0; i < tb->ninput; i++) { - fgets(line,MAXLINE,fp); - sscanf(line,"%d %lg %lg %lg",&itmp,&rtmp,&tb->efile[i],&tb->ffile[i]); - - if (tb->rflag == RLINEAR) - rtmp = tb->rlo + (tb->rhi - tb->rlo)*i/(tb->ninput-1); - else if (tb->rflag == RSQ) { - rtmp = tb->rlo*tb->rlo + - (tb->rhi*tb->rhi - tb->rlo*tb->rlo)*i/(tb->ninput-1); - rtmp = sqrt(rtmp); - } else if (tb->rflag == BMP) { - rsq_lookup.i = i << nshiftbits; - rsq_lookup.i |= masklo; - if (rsq_lookup.f < tb->rlo*tb->rlo) { - rsq_lookup.i = i << nshiftbits; - rsq_lookup.i |= maskhi; - } - rtmp = sqrtf(rsq_lookup.f); - } - - tb->rfile[i] = rtmp; - } - - // close file - - fclose(fp); -} - -/* ---------------------------------------------------------------------- - broadcast read-in table info from proc 0 to other procs - this function communicates these values in Table: - ninput,rfile,efile,ffile,rflag,rlo,rhi,fpflag,fplo,fphi -------------------------------------------------------------------------- */ - -void PairTableRX::bcast_table(Table *tb) -{ - MPI_Bcast(&tb->ninput,1,MPI_INT,0,world); - - int me; - MPI_Comm_rank(world,&me); - if (me > 0) { - memory->create(tb->rfile,tb->ninput,"pair:rfile"); - memory->create(tb->efile,tb->ninput,"pair:efile"); - memory->create(tb->ffile,tb->ninput,"pair:ffile"); - } - - MPI_Bcast(tb->rfile,tb->ninput,MPI_DOUBLE,0,world); - MPI_Bcast(tb->efile,tb->ninput,MPI_DOUBLE,0,world); - MPI_Bcast(tb->ffile,tb->ninput,MPI_DOUBLE,0,world); - - MPI_Bcast(&tb->rflag,1,MPI_INT,0,world); - if (tb->rflag) { - MPI_Bcast(&tb->rlo,1,MPI_DOUBLE,0,world); - MPI_Bcast(&tb->rhi,1,MPI_DOUBLE,0,world); - } - MPI_Bcast(&tb->fpflag,1,MPI_INT,0,world); - if (tb->fpflag) { - MPI_Bcast(&tb->fplo,1,MPI_DOUBLE,0,world); - MPI_Bcast(&tb->fphi,1,MPI_DOUBLE,0,world); - } -} - -/* ---------------------------------------------------------------------- - build spline representation of e,f over entire range of read-in table - this function sets these values in Table: e2file,f2file -------------------------------------------------------------------------- */ - -void PairTableRX::spline_table(Table *tb) -{ - memory->create(tb->e2file,tb->ninput,"pair:e2file"); - memory->create(tb->f2file,tb->ninput,"pair:f2file"); - - double ep0 = - tb->ffile[0]; - double epn = - tb->ffile[tb->ninput-1]; - spline(tb->rfile,tb->efile,tb->ninput,ep0,epn,tb->e2file); - - if (tb->fpflag == 0) { - tb->fplo = (tb->ffile[1] - tb->ffile[0]) / (tb->rfile[1] - tb->rfile[0]); - tb->fphi = (tb->ffile[tb->ninput-1] - tb->ffile[tb->ninput-2]) / - (tb->rfile[tb->ninput-1] - tb->rfile[tb->ninput-2]); - } - - double fp0 = tb->fplo; - double fpn = tb->fphi; - spline(tb->rfile,tb->ffile,tb->ninput,fp0,fpn,tb->f2file); -} - -/* ---------------------------------------------------------------------- - extract attributes from parameter line in table section - format of line: N value R/RSQ/BITMAP lo hi FP fplo fphi - N is required, other params are optional -------------------------------------------------------------------------- */ - -void PairTableRX::param_extract(Table *tb, char *line) -{ - tb->ninput = 0; - tb->rflag = NONE; - tb->fpflag = 0; - - char *word = strtok(line," \t\n\r\f"); - while (word) { - if (strcmp(word,"N") == 0) { - word = strtok(NULL," \t\n\r\f"); - tb->ninput = atoi(word); - } else if (strcmp(word,"R") == 0 || strcmp(word,"RSQ") == 0 || - strcmp(word,"BITMAP") == 0) { - if (strcmp(word,"R") == 0) tb->rflag = RLINEAR; - else if (strcmp(word,"RSQ") == 0) tb->rflag = RSQ; - else if (strcmp(word,"BITMAP") == 0) tb->rflag = BMP; - word = strtok(NULL," \t\n\r\f"); - tb->rlo = atof(word); - word = strtok(NULL," \t\n\r\f"); - tb->rhi = atof(word); - } else if (strcmp(word,"FP") == 0) { - tb->fpflag = 1; - word = strtok(NULL," \t\n\r\f"); - tb->fplo = atof(word); - word = strtok(NULL," \t\n\r\f"); - tb->fphi = atof(word); - } else { - printf("WORD: %s\n",word); - error->one(FLERR,"Invalid keyword in pair table parameters"); - } - word = strtok(NULL," \t\n\r\f"); - } - - if (tb->ninput == 0) error->one(FLERR,"Pair table parameters did not set N"); -} - -/* ---------------------------------------------------------------------- - compute r,e,f vectors from splined values -------------------------------------------------------------------------- */ - -void PairTableRX::compute_table(Table *tb) -{ - int tlm1 = tablength-1; - - // inner = inner table bound - // cut = outer table bound - // delta = table spacing in rsq for N-1 bins - - double inner; - if (tb->rflag) inner = tb->rlo; - else inner = tb->rfile[0]; - tb->innersq = double(inner)*double(inner); - tb->delta = double(tb->cut*tb->cut - double(tb->innersq)) / double(tlm1); - tb->invdelta = 1.0/double(tb->delta); - - // direct lookup tables - // N-1 evenly spaced bins in rsq from inner to cut - // e,f = value at midpt of bin - // e,f are N-1 in length since store 1 value at bin midpt - // f is converted to f/r when stored in f[i] - // e,f are never a match to read-in values, always computed via spline interp - - if (tabstyle == LOOKUP) { - memory->create(tb->e,tlm1,"pair:e"); - memory->create(tb->f,tlm1,"pair:f"); - - double r,rsq; - for (int i = 0; i < tlm1; i++) { - rsq = tb->innersq + (i+0.5)*tb->delta; - r = sqrt(rsq); - tb->e[i] = splint(tb->rfile,tb->efile,tb->e2file,tb->ninput,r); - tb->f[i] = splint(tb->rfile,tb->ffile,tb->f2file,tb->ninput,r)/r; - } - } - - // linear tables - // N-1 evenly spaced bins in rsq from inner to cut - // rsq,e,f = value at lower edge of bin - // de,df values = delta from lower edge to upper edge of bin - // rsq,e,f are N in length so de,df arrays can compute difference - // f is converted to f/r when stored in f[i] - // e,f can match read-in values, else compute via spline interp - - if (tabstyle == LINEAR) { - memory->create(tb->rsq,tablength,"pair:rsq"); - memory->create(tb->e,tablength,"pair:e"); - memory->create(tb->f,tablength,"pair:f"); - memory->create(tb->de,tlm1,"pair:de"); - memory->create(tb->df,tlm1,"pair:df"); - - double r,rsq; - for (int i = 0; i < tablength; i++) { - rsq = tb->innersq + i*tb->delta; - r = sqrt(rsq); - tb->rsq[i] = rsq; - if (tb->match) { - tb->e[i] = tb->efile[i]; - tb->f[i] = tb->ffile[i]/r; - } else { - tb->e[i] = splint(tb->rfile,tb->efile,tb->e2file,tb->ninput,r); - tb->f[i] = splint(tb->rfile,tb->ffile,tb->f2file,tb->ninput,r)/r; - } - } - - for (int i = 0; i < tlm1; i++) { - tb->de[i] = tb->e[i+1] - tb->e[i]; - tb->df[i] = tb->f[i+1] - tb->f[i]; - } - } - - // cubic spline tables - // N-1 evenly spaced bins in rsq from inner to cut - // rsq,e,f = value at lower edge of bin - // e2,f2 = spline coefficient for each bin - // rsq,e,f,e2,f2 are N in length so have N-1 spline bins - // f is converted to f/r after e is splined - // e,f can match read-in values, else compute via spline interp - - if (tabstyle == SPLINE) { - memory->create(tb->rsq,tablength,"pair:rsq"); - memory->create(tb->e,tablength,"pair:e"); - memory->create(tb->f,tablength,"pair:f"); - memory->create(tb->e2,tablength,"pair:e2"); - memory->create(tb->f2,tablength,"pair:f2"); - - tb->deltasq6 = tb->delta*tb->delta / 6.0; - - double r,rsq; - for (int i = 0; i < tablength; i++) { - rsq = tb->innersq + i*tb->delta; - r = sqrt(rsq); - tb->rsq[i] = rsq; - if (tb->match) { - tb->e[i] = tb->efile[i]; - tb->f[i] = tb->ffile[i]/r; - } else { - tb->e[i] = splint(tb->rfile,tb->efile,tb->e2file,tb->ninput,r); - tb->f[i] = splint(tb->rfile,tb->ffile,tb->f2file,tb->ninput,r); - } - } - - // ep0,epn = dh/dg at inner and at cut - // h(r) = e(r) and g(r) = r^2 - // dh/dg = (de/dr) / 2r = -f/2r - - double ep0 = - tb->f[0] / (2.0 * sqrt(tb->innersq)); - double epn = - tb->f[tlm1] / (2.0 * tb->cut); - spline(tb->rsq,tb->e,tablength,ep0,epn,tb->e2); - - // fp0,fpn = dh/dg at inner and at cut - // h(r) = f(r)/r and g(r) = r^2 - // dh/dg = (1/r df/dr - f/r^2) / 2r - // dh/dg in secant approx = (f(r2)/r2 - f(r1)/r1) / (g(r2) - g(r1)) - - double fp0,fpn; - double secant_factor = 0.1; - if (tb->fpflag) fp0 = (tb->fplo/sqrt(tb->innersq) - tb->f[0]/tb->innersq) / - (2.0 * sqrt(tb->innersq)); - else { - double rsq1 = tb->innersq; - double rsq2 = rsq1 + secant_factor*tb->delta; - fp0 = (splint(tb->rfile,tb->ffile,tb->f2file,tb->ninput,sqrt(rsq2)) / - sqrt(rsq2) - tb->f[0] / sqrt(rsq1)) / (secant_factor*tb->delta); - } - - if (tb->fpflag && tb->cut == tb->rfile[tb->ninput-1]) fpn = - (tb->fphi/tb->cut - tb->f[tlm1]/(tb->cut*tb->cut)) / (2.0 * tb->cut); - else { - double rsq2 = tb->cut * tb->cut; - double rsq1 = rsq2 - secant_factor*tb->delta; - fpn = (tb->f[tlm1] / sqrt(rsq2) - - splint(tb->rfile,tb->ffile,tb->f2file,tb->ninput,sqrt(rsq1)) / - sqrt(rsq1)) / (secant_factor*tb->delta); - } - - for (int i = 0; i < tablength; i++) tb->f[i] /= sqrt(tb->rsq[i]); - spline(tb->rsq,tb->f,tablength,fp0,fpn,tb->f2); - } - - // bitmapped linear tables - // 2^N bins from inner to cut, spaced in bitmapped manner - // f is converted to f/r when stored in f[i] - // e,f can match read-in values, else compute via spline interp - - if (tabstyle == BITMAP) { - double r; - union_int_float_t rsq_lookup; - int masklo,maskhi; - - // linear lookup tables of length ntable = 2^n - // stored value = value at lower edge of bin - - init_bitmap(inner,tb->cut,tablength,masklo,maskhi,tb->nmask,tb->nshiftbits); - int ntable = 1 << tablength; - int ntablem1 = ntable - 1; - - memory->create(tb->rsq,ntable,"pair:rsq"); - memory->create(tb->e,ntable,"pair:e"); - memory->create(tb->f,ntable,"pair:f"); - memory->create(tb->de,ntable,"pair:de"); - memory->create(tb->df,ntable,"pair:df"); - memory->create(tb->drsq,ntable,"pair:drsq"); - - union_int_float_t minrsq_lookup; - minrsq_lookup.i = 0 << tb->nshiftbits; - minrsq_lookup.i |= maskhi; - - for (int i = 0; i < ntable; i++) { - rsq_lookup.i = i << tb->nshiftbits; - rsq_lookup.i |= masklo; - if (rsq_lookup.f < tb->innersq) { - rsq_lookup.i = i << tb->nshiftbits; - rsq_lookup.i |= maskhi; - } - r = sqrtf(rsq_lookup.f); - tb->rsq[i] = rsq_lookup.f; - if (tb->match) { - tb->e[i] = tb->efile[i]; - tb->f[i] = tb->ffile[i]/r; - } else { - tb->e[i] = splint(tb->rfile,tb->efile,tb->e2file,tb->ninput,r); - tb->f[i] = splint(tb->rfile,tb->ffile,tb->f2file,tb->ninput,r)/r; - } - minrsq_lookup.f = MIN(minrsq_lookup.f,rsq_lookup.f); - } - - tb->innersq = minrsq_lookup.f; - - for (int i = 0; i < ntablem1; i++) { - tb->de[i] = tb->e[i+1] - tb->e[i]; - tb->df[i] = tb->f[i+1] - tb->f[i]; - tb->drsq[i] = 1.0/(tb->rsq[i+1] - tb->rsq[i]); - } - - // get the delta values for the last table entries - // tables are connected periodically between 0 and ntablem1 - - tb->de[ntablem1] = tb->e[0] - tb->e[ntablem1]; - tb->df[ntablem1] = tb->f[0] - tb->f[ntablem1]; - tb->drsq[ntablem1] = 1.0/(tb->rsq[0] - tb->rsq[ntablem1]); - - // get the correct delta values at itablemax - // smallest r is in bin itablemin - // largest r is in bin itablemax, which is itablemin-1, - // or ntablem1 if itablemin=0 - - // deltas at itablemax only needed if corresponding rsq < cut*cut - // if so, compute deltas between rsq and cut*cut - // if tb->match, data at cut*cut is unavailable, so we'll take - // deltas at itablemax-1 as a good approximation - - double e_tmp,f_tmp; - int itablemin = minrsq_lookup.i & tb->nmask; - itablemin >>= tb->nshiftbits; - int itablemax = itablemin - 1; - if (itablemin == 0) itablemax = ntablem1; - int itablemaxm1 = itablemax - 1; - if (itablemax == 0) itablemaxm1 = ntablem1; - rsq_lookup.i = itablemax << tb->nshiftbits; - rsq_lookup.i |= maskhi; - if (rsq_lookup.f < tb->cut*tb->cut) { - if (tb->match) { - tb->de[itablemax] = tb->de[itablemaxm1]; - tb->df[itablemax] = tb->df[itablemaxm1]; - tb->drsq[itablemax] = tb->drsq[itablemaxm1]; - } else { - rsq_lookup.f = tb->cut*tb->cut; - r = sqrtf(rsq_lookup.f); - e_tmp = splint(tb->rfile,tb->efile,tb->e2file,tb->ninput,r); - f_tmp = splint(tb->rfile,tb->ffile,tb->f2file,tb->ninput,r)/r; - tb->de[itablemax] = e_tmp - tb->e[itablemax]; - tb->df[itablemax] = f_tmp - tb->f[itablemax]; - tb->drsq[itablemax] = 1.0/(rsq_lookup.f - tb->rsq[itablemax]); - } - } - } -} - -/* ---------------------------------------------------------------------- - set all ptrs in a table to NULL, so can be freed safely -------------------------------------------------------------------------- */ - -void PairTableRX::null_table(Table *tb) -{ - tb->rfile = tb->efile = tb->ffile = NULL; - tb->e2file = tb->f2file = NULL; - tb->rsq = tb->drsq = tb->e = tb->de = NULL; - tb->f = tb->df = tb->e2 = tb->f2 = NULL; -} - -/* ---------------------------------------------------------------------- - free all arrays in a table -------------------------------------------------------------------------- */ - -void PairTableRX::free_table(Table *tb) -{ - memory->destroy(tb->rfile); - memory->destroy(tb->efile); - memory->destroy(tb->ffile); - memory->destroy(tb->e2file); - memory->destroy(tb->f2file); - - memory->destroy(tb->rsq); - memory->destroy(tb->drsq); - memory->destroy(tb->e); - memory->destroy(tb->de); - memory->destroy(tb->f); - memory->destroy(tb->df); - memory->destroy(tb->e2); - memory->destroy(tb->f2); -} - -/* ---------------------------------------------------------------------- - spline and splint routines modified from Numerical Recipes -------------------------------------------------------------------------- */ - -void PairTableRX::spline(double *x, double *y, int n, - double yp1, double ypn, double *y2) -{ - int i,k; - double p,qn,sig,un; - double *u = new double[n]; - - if (yp1 > 0.99e30) y2[0] = u[0] = 0.0; - else { - y2[0] = -0.5; - u[0] = (3.0/(x[1]-x[0])) * ((y[1]-y[0]) / (x[1]-x[0]) - yp1); - } - for (i = 1; i < n-1; i++) { - sig = (x[i]-x[i-1]) / (x[i+1]-x[i-1]); - p = sig*y2[i-1] + 2.0; - y2[i] = (sig-1.0) / p; - u[i] = (y[i+1]-y[i]) / (x[i+1]-x[i]) - (y[i]-y[i-1]) / (x[i]-x[i-1]); - u[i] = (6.0*u[i] / (x[i+1]-x[i-1]) - sig*u[i-1]) / p; - } - if (ypn > 0.99e30) qn = un = 0.0; - else { - qn = 0.5; - un = (3.0/(x[n-1]-x[n-2])) * (ypn - (y[n-1]-y[n-2]) / (x[n-1]-x[n-2])); - } - y2[n-1] = (un-qn*u[n-2]) / (qn*y2[n-2] + 1.0); - for (k = n-2; k >= 0; k--) y2[k] = y2[k]*y2[k+1] + u[k]; - - delete [] u; -} - -/* ---------------------------------------------------------------------- */ - -double PairTableRX::splint(double *xa, double *ya, double *y2a, int n, double x) -{ - int klo,khi,k; - double h,b,a,y; - - klo = 0; - khi = n-1; - while (khi-klo > 1) { - k = (khi+klo) >> 1; - if (xa[k] > x) khi = k; - else klo = k; - } - h = xa[khi]-xa[klo]; - a = (xa[khi]-x) / h; - b = (x-xa[klo]) / h; - y = a*ya[klo] + b*ya[khi] + - ((a*a*a-a)*y2a[klo] + (b*b*b-b)*y2a[khi]) * (h*h)/6.0; - return y; -} - -/* ---------------------------------------------------------------------- - proc 0 writes to restart file -------------------------------------------------------------------------- */ - -void PairTableRX::write_restart(FILE *fp) -{ - write_restart_settings(fp); -} - -/* ---------------------------------------------------------------------- - proc 0 reads from restart file, bcasts -------------------------------------------------------------------------- */ - -void PairTableRX::read_restart(FILE *fp) -{ - read_restart_settings(fp); - allocate(); -} - -/* ---------------------------------------------------------------------- - proc 0 writes to restart file -------------------------------------------------------------------------- */ - -void PairTableRX::write_restart_settings(FILE *fp) -{ - fwrite(&tabstyle,sizeof(int),1,fp); - fwrite(&tablength,sizeof(int),1,fp); - fwrite(&ewaldflag,sizeof(int),1,fp); - fwrite(&pppmflag,sizeof(int),1,fp); - fwrite(&msmflag,sizeof(int),1,fp); - fwrite(&dispersionflag,sizeof(int),1,fp); - fwrite(&tip4pflag,sizeof(int),1,fp); -} - -/* ---------------------------------------------------------------------- - proc 0 reads from restart file, bcasts -------------------------------------------------------------------------- */ - -void PairTableRX::read_restart_settings(FILE *fp) -{ - if (comm->me == 0) { - fread(&tabstyle,sizeof(int),1,fp); - fread(&tablength,sizeof(int),1,fp); - fread(&ewaldflag,sizeof(int),1,fp); - fread(&pppmflag,sizeof(int),1,fp); - fread(&msmflag,sizeof(int),1,fp); - fread(&dispersionflag,sizeof(int),1,fp); - fread(&tip4pflag,sizeof(int),1,fp); - } - MPI_Bcast(&tabstyle,1,MPI_INT,0,world); - MPI_Bcast(&tablength,1,MPI_INT,0,world); - MPI_Bcast(&ewaldflag,1,MPI_INT,0,world); - MPI_Bcast(&pppmflag,1,MPI_INT,0,world); - MPI_Bcast(&msmflag,1,MPI_INT,0,world); - MPI_Bcast(&dispersionflag,1,MPI_INT,0,world); - MPI_Bcast(&tip4pflag,1,MPI_INT,0,world); -} - /* ---------------------------------------------------------------------- */ double PairTableRX::single(int i, int j, int itype, int jtype, double rsq, @@ -1129,26 +507,6 @@ double PairTableRX::single(int i, int j, int itype, int jtype, double rsq, return factor_lj*phi; } -/* ---------------------------------------------------------------------- - return the Coulomb cutoff for tabled potentials - called by KSpace solvers which require that all pairwise cutoffs be the same - loop over all tables not just those indexed by tabindex[i][j] since - no way to know which tables are active since pair::init() not yet called -------------------------------------------------------------------------- */ - -void *PairTableRX::extract(const char *str, int &dim) -{ - if (strcmp(str,"cut_coul") != 0) return NULL; - 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(FLERR,"Pair table cutoffs must all be equal to use with KSpace"); - dim = 0; - return &tables[0].cut; -} - /* ---------------------------------------------------------------------- */ void PairTableRX::getMixingWeights(int id, double &mixWtSite1old, double &mixWtSite2old, double &mixWtSite1, double &mixWtSite2) diff --git a/src/USER-DPD/pair_table_rx.h b/src/USER-DPD/pair_table_rx.h index 34b9fd75ce739012053f2c63d70ce399db6e1785..da7889e99aa080eb1096d76912f445c19fa8292a 100644 --- a/src/USER-DPD/pair_table_rx.h +++ b/src/USER-DPD/pair_table_rx.h @@ -20,11 +20,11 @@ PairStyle(table/rx,PairTableRX) #ifndef LMP_PAIR_TABLE_RX_H #define LMP_PAIR_TABLE_RX_H -#include "pair.h" +#include "pair_table.h" namespace LAMMPS_NS { -class PairTableRX : public Pair { +class PairTableRX : public PairTable { public: PairTableRX(class LAMMPS *); virtual ~PairTableRX(); @@ -32,42 +32,9 @@ class PairTableRX : public Pair { 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 &); - void *extract(const char *, int &); + virtual double single(int, int, int, int, double, double, double, double &); protected: - enum{LOOKUP,LINEAR,SPLINE,BITMAP}; - - int tabstyle,tablength; - struct Table { - int ninput,rflag,fpflag,match,ntablebits; - int nshiftbits,nmask; - double rlo,rhi,fplo,fphi,cut; - double *rfile,*efile,*ffile; - double *e2file,*f2file; - double innersq,delta,invdelta,deltasq6; - double *rsq,*drsq,*e,*de,*f,*df,*e2,*f2; - }; - int ntables; - Table *tables; - - int **tabindex; - - void allocate(); - void read_table(Table *, char *, char *); - void param_extract(Table *, char *); - void bcast_table(Table *); - void spline_table(Table *); - void compute_table(Table *); - void null_table(Table *); - void free_table(Table *); - void spline(double *, double *, int, double, double, double *); - double splint(double *, double *, double *, int, double); int nspecies; char *site1, *site2; diff --git a/src/USER-DRUDE/README b/src/USER-DRUDE/README index e2d91a671e0ebd0fa21a38b8da3454d00a25135e..0b4913ca5db9cc1cff33f810ae5d5c7c35b45b4a 100644 --- a/src/USER-DRUDE/README +++ b/src/USER-DRUDE/README @@ -16,6 +16,6 @@ There are example scripts for using this package in examples/USER/drude. The person who created this package is Alain Dequidt at the Chemistry Institute of Clermont-Ferrand, Clermont University, France -(alain.dequidt at univ-bpclermont.fr). Contact him directly if you -have questions. Co-authors: Julien Devémy, Agilio Padua. +(alain.dequidt at uca.fr). Contact him directly if you have questions. +Co-authors: Julien Devémy, Agilio Padua. diff --git a/src/USER-DRUDE/fix_drude.cpp b/src/USER-DRUDE/fix_drude.cpp index 894757baa087e55c8eca84444ac17ea61478ae3b..a38f9f1e669716981174f6035089ff93eef571a5 100644 --- a/src/USER-DRUDE/fix_drude.cpp +++ b/src/USER-DRUDE/fix_drude.cpp @@ -355,7 +355,7 @@ void FixDrude::rebuild_special(){ } if (atom->maxspecial < nspecmax) { char str[1024]; - sprintf(str, "Not enough space in special: special_bonds extra should be at least %d", nspecmax - nspecmax_old); + sprintf(str, "Not enough space in special: extra/special/per/atom should be at least %d", nspecmax - nspecmax_old); error->all(FLERR, str); } diff --git a/src/USER-MESO/README b/src/USER-MESO/README new file mode 100644 index 0000000000000000000000000000000000000000..0119fdb9f8d35ece684d9cc7c714e949fb8b6d6d --- /dev/null +++ b/src/USER-MESO/README @@ -0,0 +1,50 @@ +This package implements three extensions of the dissipative particle +dynamics (DPD) method, i.e., energy-conserving DPD (eDPD) that can +model non-isothermal processes, many-body DPD (mDPD) for simulating +vapor-liquid coexistence, and transport DPD (tDPD) for modeling +advection-diffuion-reaction systems. The equations of motion of these +DPD extensions are integrated through the modified velocity-Verlet +(MVV) algorithm. + +Currently, the package has the following features: + +* Three new atom styles (eDPD, mDPD, tDPD) for tracking the particles + with internal temperature, local mass density, and chemical + concentration. + +* Three set commands (edpd/temp, edpd/cv, cc) for setting internal + temperature (edpd/temp) and heat capacity (edpd/cv) for eDPD + particles and for setting chemical concentration (cc) for tDPD + particles. + +* Two compute commands (edpd/temp/atom, tdpd/cc/atom) for accessing + the internal temperature of eDPD particles and the chemical + concentration of tDPD particles. + +* Three fix commands (mvv/dpd, mvv/edpd, mvv/tdpd) for integrating the + shochastic ODEs using the modified velocity-Verlet (MVV) algorithm. + +* Two fix commands (edpd/source, tdpd/source) for adding additional + heat source/sink or chemical concentration source/sink to eDPD and + tDPD particles. + +* One pair style (edpd) for modeling a eDPD fluid. + +* Two pair styles (mdpd/rhosum, mdpd) for modeling a mDPD fluid. + +* One pair style (tdpd) for modeling a tDPD fluid. + +See the doc pages for "atom style edpd", "atom style mdpd", "atom +style tdpd", "set edpd/temp", "set edpd/cv", "set tdpd/cc", "compute +edpd/temp/atom", "compute tdpd/cc/atom", "fix mvv/dpd", "fix +mvv/edpd", "fix mvv/tdpd", "fix edpd/source", "fix tdpd/source", "pair +edpd", "pair mdpd/rhosum", "pair mdpd", "pair tdpd" commands to get +started. At the bottom of the doc pages are many links to additional +documentation contained in the doc/USER/meso directory. + +There are example scripts for using this package in +examples/USER/meso. + +The person who created this package is Zhen Li (zhen_li at brown.edu) +at Division of Applied Mathematics, Brown University, USA. Contact him +directly if you have questions. diff --git a/src/USER-MESO/atom_vec_edpd.cpp b/src/USER-MESO/atom_vec_edpd.cpp new file mode 100644 index 0000000000000000000000000000000000000000..385e8fd426d36ccf183b56cb71fa0725cebb1a2a --- /dev/null +++ b/src/USER-MESO/atom_vec_edpd.cpp @@ -0,0 +1,844 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ +#include +#include +#include "atom_vec_edpd.h" +#include "atom.h" +#include "comm.h" +#include "domain.h" +#include "modify.h" +#include "fix.h" +#include "update.h" +#include "memory.h" +#include "error.h" + +using namespace LAMMPS_NS; + +/* ---------------------------------------------------------------------- */ + +AtomVecEDPD::AtomVecEDPD(LAMMPS *lmp) : AtomVec(lmp) +{ + if(strcmp(update->unit_style,"lj") != 0) + error->all(FLERR,"Atom style edpd requires lj units"); + + molecular = 0; + mass_type = 1; + forceclearflag = 1; + + comm_x_only = comm_f_only = 0; + comm->ghost_velocity = 1; + + size_forward = 3 + 5; // edpd_temp + vest[4] + size_reverse = 3 + 1; // edpd_flux + size_border = 6 + 6; // edpd_temp + edpd_cv + vest[4] + size_velocity = 3; + size_data_atom = 5 + 2; // we read id + type + edpd_temp + edpd_cv + xyz[3] + size_data_vel = 4; + xcol_data = 5; + + atom->edpd_flag = 1; + atom->vest_flag = 1; +} + +/* ---------------------------------------------------------------------- + grow atom arrays + n = 0 grows arrays by a chunk + n > 0 allocates arrays to size n +------------------------------------------------------------------------- */ + +void AtomVecEDPD::grow(int n) +{ + if (n == 0) grow_nmax(); + 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"); + edpd_cv= memory->grow(atom->edpd_cv, nmax, "atom:edpd_cv"); + edpd_temp = memory->grow(atom->edpd_temp, nmax, "atom:edpd_temp"); + edpd_flux = memory->grow(atom->edpd_flux, nmax*comm->nthreads,"atom:edpd_flux"); + vest = memory->grow(atom->vest, nmax, 4, "atom:vest"); + + 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 AtomVecEDPD::grow_reset() +{ + tag = atom->tag; type = atom->type; + mask = atom->mask; image = atom->image; + x = atom->x; v = atom->v; f = atom->f; + edpd_cv = atom->cv; edpd_temp = atom->edpd_temp; edpd_flux = atom->edpd_flux; + vest = atom->vest; +} + +/* ---------------------------------------------------------------------- + copy atom I info to atom J +------------------------------------------------------------------------- */ + +void AtomVecEDPD::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]; + + edpd_temp[j] = edpd_temp[i]; + edpd_flux[j] = edpd_flux[i]; + edpd_cv[j] = edpd_cv[i]; + vest[j][0] = vest[i][0]; + vest[j][1] = vest[i][1]; + vest[j][2] = vest[i][2]; + vest[j][3] = vest[i][3]; + + if (atom->nextra_grow) + for (int iextra = 0; iextra < atom->nextra_grow; iextra++) + modify->fix[atom->extra_grow[iextra]]->copy_arrays(i,j,delflag); +} + + +void AtomVecEDPD::force_clear(int n, size_t nbytes) +{ + memset(&edpd_flux[n],0,nbytes); +} + + +/* ---------------------------------------------------------------------- */ + +int AtomVecEDPD::pack_comm(int n, int *list, double *buf, + int pbc_flag, int *pbc) +{ + int i,j,m; + double dx,dy,dz; + + m = 0; + if (pbc_flag == 0) { + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = x[j][0]; + buf[m++] = x[j][1]; + buf[m++] = x[j][2]; + buf[m++] = edpd_temp[j]; + buf[m++] = vest[j][0]; + buf[m++] = vest[j][1]; + buf[m++] = vest[j][2]; + buf[m++] = vest[j][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; + buf[m++] = edpd_temp[j]; + buf[m++] = vest[j][0]; + buf[m++] = vest[j][1]; + buf[m++] = vest[j][2]; + buf[m++] = vest[j][3]; + } + } + return m; +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecEDPD::pack_comm_vel(int n, int *list, double *buf, + int pbc_flag, int *pbc) +{ + int i,j,m; + double dx,dy,dz,dvx,dvy,dvz; + + m = 0; + if (pbc_flag == 0) { + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = x[j][0]; + buf[m++] = x[j][1]; + buf[m++] = x[j][2]; + buf[m++] = v[j][0]; + buf[m++] = v[j][1]; + buf[m++] = v[j][2]; + buf[m++] = edpd_temp[j]; + buf[m++] = vest[j][0]; + buf[m++] = vest[j][1]; + buf[m++] = vest[j][2]; + buf[m++] = vest[j][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; + } + 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++] = v[j][0]; + buf[m++] = v[j][1]; + buf[m++] = v[j][2]; + buf[m++] = edpd_temp[j]; + buf[m++] = vest[j][0]; + buf[m++] = vest[j][1]; + buf[m++] = vest[j][2]; + buf[m++] = vest[j][3]; + } + } 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 (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++] = edpd_temp[j]; + buf[m++] = vest[j][0]; + buf[m++] = vest[j][1]; + buf[m++] = vest[j][2]; + buf[m++] = vest[j][3]; + } + } + } + return m; +} + +/* ---------------------------------------------------------------------- */ + +void AtomVecEDPD::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++]; + edpd_temp[i] = buf[m++]; + vest[i][0] = buf[m++]; + vest[i][1] = buf[m++]; + vest[i][2] = buf[m++]; + vest[i][3] = buf[m++]; + } +} + +/* ---------------------------------------------------------------------- */ + +void AtomVecEDPD::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++]; + v[i][0] = buf[m++]; + v[i][1] = buf[m++]; + v[i][2] = buf[m++]; + edpd_temp[i] = buf[m++]; + vest[i][0] = buf[m++]; + vest[i][1] = buf[m++]; + vest[i][2] = buf[m++]; + vest[i][3] = buf[m++]; + } +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecEDPD::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++] = edpd_flux[i]; + } + return m; +} + +/* ---------------------------------------------------------------------- */ + +void AtomVecEDPD::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++]; + edpd_flux[j] += buf[m++]; + } +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecEDPD::pack_border(int n, int *list, double *buf, + int pbc_flag, int *pbc) +{ + int i,j,m; + double dx,dy,dz; + + m = 0; + if (pbc_flag == 0) { + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = x[j][0]; + buf[m++] = x[j][1]; + buf[m++] = x[j][2]; + buf[m++] = ubuf(tag[j]).d; + buf[m++] = ubuf(type[j]).d; + buf[m++] = ubuf(mask[j]).d; + buf[m++] = edpd_temp[j]; + buf[m++] = edpd_cv[j]; + buf[m++] = vest[j][0]; + buf[m++] = vest[j][1]; + buf[m++] = vest[j][2]; + buf[m++] = vest[j][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]; + dy = pbc[1]; + dz = pbc[2]; + } + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = x[j][0] + dx; + buf[m++] = x[j][1] + dy; + buf[m++] = x[j][2] + dz; + buf[m++] = ubuf(tag[j]).d; + buf[m++] = ubuf(type[j]).d; + buf[m++] = ubuf(mask[j]).d; + buf[m++] = edpd_temp[j]; + buf[m++] = edpd_cv[j]; + buf[m++] = vest[j][0]; + buf[m++] = vest[j][1]; + buf[m++] = vest[j][2]; + buf[m++] = vest[j][3]; + } + } + + if (atom->nextra_border) + for (int iextra = 0; iextra < atom->nextra_border; iextra++) + m += modify->fix[atom->extra_border[iextra]]->pack_border(n,list,&buf[m]); + + return m; +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecEDPD::pack_border_vel(int n, int *list, double *buf, + int pbc_flag, int *pbc) +{ + int i,j,m; + double dx,dy,dz,dvx,dvy,dvz; + + m = 0; + if (pbc_flag == 0) { + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = x[j][0]; + buf[m++] = x[j][1]; + buf[m++] = x[j][2]; + buf[m++] = ubuf(tag[j]).d; + buf[m++] = ubuf(type[j]).d; + buf[m++] = ubuf(mask[j]).d; + buf[m++] = edpd_temp[j]; + buf[m++] = edpd_cv[j]; + buf[m++] = v[j][0]; + buf[m++] = v[j][1]; + buf[m++] = v[j][2]; + buf[m++] = vest[j][0]; + buf[m++] = vest[j][1]; + buf[m++] = vest[j][2]; + buf[m++] = vest[j][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]; + dy = pbc[1]; + dz = pbc[2]; + } + if (!deform_vremap) { + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = x[j][0] + dx; + buf[m++] = x[j][1] + dy; + buf[m++] = x[j][2] + dz; + buf[m++] = ubuf(tag[j]).d; + buf[m++] = ubuf(type[j]).d; + buf[m++] = ubuf(mask[j]).d; + buf[m++] = edpd_temp[j]; + buf[m++] = edpd_cv[j]; + buf[m++] = v[j][0]; + buf[m++] = v[j][1]; + buf[m++] = v[j][2]; + buf[m++] = vest[j][0]; + buf[m++] = vest[j][1]; + buf[m++] = vest[j][2]; + buf[m++] = vest[j][3]; + } + } else { + dvx = pbc[0]*h_rate[0] + pbc[5]*h_rate[5] + pbc[4]*h_rate[4]; + dvy = pbc[1]*h_rate[1] + pbc[3]*h_rate[3]; + dvz = pbc[2]*h_rate[2]; + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = x[j][0] + dx; + buf[m++] = x[j][1] + dy; + buf[m++] = x[j][2] + dz; + buf[m++] = ubuf(tag[j]).d; + buf[m++] = ubuf(type[j]).d; + buf[m++] = ubuf(mask[j]).d; + buf[m++] = edpd_temp[j]; + buf[m++] = edpd_cv[j]; + if (mask[i] & deform_groupbit) { + buf[m++] = v[j][0] + dvx; + buf[m++] = v[j][1] + dvy; + buf[m++] = v[j][2] + dvz; + buf[m++] = vest[j][0] + dvx; + buf[m++] = vest[j][1] + dvy; + buf[m++] = vest[j][2] + dvz; + buf[m++] = vest[j][3]; + } else { + buf[m++] = v[j][0]; + buf[m++] = v[j][1]; + buf[m++] = v[j][2]; + buf[m++] = vest[j][0]; + buf[m++] = vest[j][1]; + buf[m++] = vest[j][2]; + buf[m++] = vest[j][3]; + } + } + } + } + + if (atom->nextra_border) + for (int iextra = 0; iextra < atom->nextra_border; iextra++) + m += modify->fix[atom->extra_border[iextra]]->pack_border(n,list,&buf[m]); + + return m; +} + +/* ---------------------------------------------------------------------- */ + +void AtomVecEDPD::unpack_border(int n, int first, double *buf) +{ + int i,m,last; + + m = 0; + last = first + n; + for (i = first; i < last; i++) { + if (i == nmax) grow(0); + x[i][0] = buf[m++]; + x[i][1] = buf[m++]; + x[i][2] = buf[m++]; + tag[i] = (tagint) ubuf(buf[m++]).i; + type[i] = (int) ubuf(buf[m++]).i; + mask[i] = (int) ubuf(buf[m++]).i; + edpd_temp[i] = buf[m++]; + edpd_cv[i] = buf[m++]; + vest[i][0] = buf[m++]; + vest[i][1] = buf[m++]; + vest[i][2] = buf[m++]; + vest[i][3] = buf[m++]; + } + + if (atom->nextra_border) + for (int iextra = 0; iextra < atom->nextra_border; iextra++) + m += modify->fix[atom->extra_border[iextra]]-> + unpack_border(n,first,&buf[m]); +} + +/* ---------------------------------------------------------------------- */ + +void AtomVecEDPD::unpack_border_vel(int n, int first, double *buf) +{ + int i,m,last; + + m = 0; + last = first + n; + for (i = first; i < last; i++) { + if (i == nmax) grow(0); + x[i][0] = buf[m++]; + x[i][1] = buf[m++]; + x[i][2] = buf[m++]; + tag[i] = (tagint) ubuf(buf[m++]).i; + type[i] = (int) ubuf(buf[m++]).i; + mask[i] = (int) ubuf(buf[m++]).i; + edpd_temp[i] = buf[m++]; + edpd_cv[i] = buf[m++]; + v[i][0] = buf[m++]; + v[i][1] = buf[m++]; + v[i][2] = buf[m++]; + vest[i][0] = buf[m++]; + vest[i][1] = buf[m++]; + vest[i][2] = buf[m++]; + vest[i][3] = buf[m++]; + } + + if (atom->nextra_border) + for (int iextra = 0; iextra < atom->nextra_border; iextra++) + m += modify->fix[atom->extra_border[iextra]]-> + unpack_border(n,first,&buf[m]); +} + +/* ---------------------------------------------------------------------- + pack data for atom I for sending to another proc + xyz must be 1st 3 values, so comm::exchange() can test on them +------------------------------------------------------------------------- */ + +int AtomVecEDPD::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++] = ubuf(tag[i]).d; + buf[m++] = ubuf(type[i]).d; + buf[m++] = ubuf(mask[i]).d; + buf[m++] = ubuf(image[i]).d; + buf[m++] = edpd_temp[i]; + buf[m++] = edpd_cv[i]; + buf[m++] = vest[i][0]; + buf[m++] = vest[i][1]; + buf[m++] = vest[i][2]; + buf[m++] = vest[i][3]; + + 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 AtomVecEDPD::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] = (tagint) ubuf(buf[m++]).i; + type[nlocal] = (int) ubuf(buf[m++]).i; + mask[nlocal] = (int) ubuf(buf[m++]).i; + image[nlocal] = (imageint) ubuf(buf[m++]).i; + edpd_temp[nlocal] = buf[m++]; + edpd_cv[nlocal] = buf[m++]; + vest[nlocal][0] = buf[m++]; + vest[nlocal][1] = buf[m++]; + vest[nlocal][2] = buf[m++]; + vest[nlocal][3] = 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 AtomVecEDPD::size_restart() +{ + int i; + + int nlocal = atom->nlocal; + int n = (11 + 6) * nlocal; // 11 + edpd_temp + edpd_cv + vest[4] + + 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 AtomVecEDPD::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++] = ubuf(tag[i]).d; + buf[m++] = ubuf(type[i]).d; + buf[m++] = ubuf(mask[i]).d; + buf[m++] = ubuf(image[i]).d; + buf[m++] = v[i][0]; + buf[m++] = v[i][1]; + buf[m++] = v[i][2]; + buf[m++] = edpd_temp[i]; + buf[m++] = edpd_cv[i]; + buf[m++] = vest[i][0]; + buf[m++] = vest[i][1]; + buf[m++] = vest[i][2]; + buf[m++] = vest[i][3]; + + 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 AtomVecEDPD::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] = (tagint) ubuf(buf[m++]).i; + type[nlocal] = (int) ubuf(buf[m++]).i; + mask[nlocal] = (int) ubuf(buf[m++]).i; + image[nlocal] = (imageint) ubuf(buf[m++]).i; + v[nlocal][0] = buf[m++]; + v[nlocal][1] = buf[m++]; + v[nlocal][2] = buf[m++]; + + edpd_temp[nlocal] = buf[m++]; + edpd_cv[nlocal]= buf[m++]; + vest[nlocal][0] = buf[m++]; + vest[nlocal][1] = buf[m++]; + vest[nlocal][2] = buf[m++]; + vest[nlocal][3] = 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 AtomVecEDPD::create_atom(int itype, double *coord) +{ + int nlocal = atom->nlocal; + if (nlocal == nmax) grow(0); + + tag[nlocal] = 0; + type[nlocal] = itype; + x[nlocal][0] = coord[0]; + x[nlocal][1] = coord[1]; + x[nlocal][2] = coord[2]; + mask[nlocal] = 1; + image[nlocal] = ((imageint) IMGMAX << IMG2BITS) | + ((imageint) IMGMAX << IMGBITS) | IMGMAX; + v[nlocal][0] = 0.0; + v[nlocal][1] = 0.0; + v[nlocal][2] = 0.0; + + edpd_temp[nlocal] = 1.0; + edpd_flux[nlocal] = 0.0; + edpd_cv[nlocal]= 1.0E5; + vest[nlocal][0] = 0.0; + vest[nlocal][1] = 0.0; + vest[nlocal][2] = 0.0; + vest[nlocal][3] = edpd_temp[nlocal]; + + atom->nlocal++; +} + +/* ---------------------------------------------------------------------- + unpack one line from Atoms section of data file + initialize other atom quantities +------------------------------------------------------------------------- */ + +void AtomVecEDPD::data_atom(double *coord, imageint imagetmp, char **values) +{ + int nlocal = atom->nlocal; + if (nlocal == nmax) grow(0); + + tag[nlocal] = ATOTAGINT(values[0]); + 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"); + + edpd_temp[nlocal] = atof(values[2]); + edpd_cv[nlocal] = atof(values[3]); + + 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; + + vest[nlocal][0] = 0.0; + vest[nlocal][1] = 0.0; + vest[nlocal][2] = 0.0; + vest[nlocal][3] = edpd_temp[nlocal]; + edpd_flux[nlocal] = 0.0; + + atom->nlocal++; +} + +/* ---------------------------------------------------------------------- + pack atom info for data file including 3 image flags +------------------------------------------------------------------------- */ + +void AtomVecEDPD::pack_data(double **buf) +{ + int nlocal = atom->nlocal; + for (int i = 0; i < nlocal; i++) { + buf[i][0] = ubuf(tag[i]).d; + buf[i][1] = ubuf(type[i]).d; + buf[i][2] = edpd_temp[i]; + buf[i][3] = edpd_cv[i]; + buf[i][4] = x[i][0]; + buf[i][5] = x[i][1]; + buf[i][6] = x[i][2]; + buf[i][7] = ubuf((image[i] & IMGMASK) - IMGMAX).d; + buf[i][8] = ubuf((image[i] >> IMGBITS & IMGMASK) - IMGMAX).d; + buf[i][9] = ubuf((image[i] >> IMG2BITS) - IMGMAX).d; + } +} + +/* ---------------------------------------------------------------------- + write atom info to data file including 3 image flags +------------------------------------------------------------------------- */ + +void AtomVecEDPD::write_data(FILE *fp, int n, double **buf) +{ + for (int i = 0; i < n; i++) + fprintf(fp,TAGINT_FORMAT " %d %-1.16e %-1.16e %-1.16e %-1.16e %-1.16e %d %d %d\n", + (tagint) ubuf(buf[i][0]).i,(int) ubuf(buf[i][1]).i, + buf[i][2],buf[i][3],buf[i][4],buf[i][5],buf[i][6], + (int) ubuf(buf[i][7]).i,(int) ubuf(buf[i][8]).i,(int) ubuf(buf[i][9]).i); +} + +/* ---------------------------------------------------------------------- + return # of bytes of allocated memory +------------------------------------------------------------------------- */ + +bigint AtomVecEDPD::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("edpd_temp")) bytes += memory->usage(edpd_temp,nmax); + if (atom->memcheck("edpd_flux")) bytes += memory->usage(edpd_flux,nmax*comm->nthreads); + if (atom->memcheck("edpd_cv")) bytes += memory->usage(edpd_cv,nmax); + if (atom->memcheck("vest")) bytes += memory->usage(vest,nmax,4); + + return bytes; +} diff --git a/src/USER-MESO/atom_vec_edpd.h b/src/USER-MESO/atom_vec_edpd.h new file mode 100644 index 0000000000000000000000000000000000000000..36a4cae97b172ee99cf9c81ae6d30081e190bc92 --- /dev/null +++ b/src/USER-MESO/atom_vec_edpd.h @@ -0,0 +1,68 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#ifdef ATOM_CLASS + +AtomStyle(edpd,AtomVecEDPD) + +#else + +#ifndef LMP_ATOM_VEC_EDPD_H +#define LMP_ATOM_VEC_EDPD_H + +#include "atom_vec.h" + +namespace LAMMPS_NS { + +class AtomVecEDPD : public AtomVec { + public: + AtomVecEDPD(class LAMMPS *); + virtual ~AtomVecEDPD() {} + void grow(int); + void grow_reset(); + void copy(int, int, int); + void force_clear(int, size_t); + virtual int pack_comm(int, int *, double *, int, int *); + virtual int pack_comm_vel(int, int *, double *, int, int *); + virtual void unpack_comm(int, int, double *); + virtual void unpack_comm_vel(int, int, double *); + int pack_reverse(int, int, double *); + void unpack_reverse(int, int *, double *); + virtual int pack_border(int, int *, double *, int, int *); + virtual int pack_border_vel(int, int *, double *, int, int *); + virtual void unpack_border(int, int, double *); + virtual void unpack_border_vel(int, int, double *); + virtual int pack_exchange(int, double *); + virtual int unpack_exchange(double *); + int size_restart(); + int pack_restart(int, double *); + int unpack_restart(double *); + void create_atom(int, double *); + void data_atom(double *, imageint, char **); + void pack_data(double **); + void write_data(FILE *, int, double **); + bigint memory_usage(); + + protected: + tagint *tag; + int *type,*mask; + imageint *image; + double **x,**v,**f; + double **vest; // store intermediate velocity for using mvv integrator + double *edpd_temp,*edpd_flux,*edpd_cv; // temperature, heat flux, and heat capacity +}; + +} + +#endif +#endif diff --git a/src/USER-MESO/atom_vec_mdpd.cpp b/src/USER-MESO/atom_vec_mdpd.cpp new file mode 100644 index 0000000000000000000000000000000000000000..0a4d302c36f23f1eb95af141ec92f9a070f562d7 --- /dev/null +++ b/src/USER-MESO/atom_vec_mdpd.cpp @@ -0,0 +1,951 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. + ------------------------------------------------------------------------- */ + +#include +#include +#include "atom_vec_mdpd.h" +#include "atom.h" +#include "comm.h" +#include "domain.h" +#include "modify.h" +#include "fix.h" +#include "update.h" +#include "memory.h" +#include "error.h" + +using namespace LAMMPS_NS; + +/* ---------------------------------------------------------------------- */ + +AtomVecMDPD::AtomVecMDPD(LAMMPS *lmp) : AtomVec(lmp) +{ + if(strcmp(update->unit_style,"lj") != 0) + error->all(FLERR,"Atom style mdpd requires lj units"); + + molecular = 0; + mass_type = 1; + forceclearflag = 1; + + comm_x_only = comm_f_only = 0; + comm->ghost_velocity = 1; + + size_forward = 3 + 4; // 3 + rho + vest[3], that means we may only communicate 4 in hybrid + size_reverse = 3 + 1; // 3 + drho + size_border = 6 + 4; // 6 + rho + vest[3] + size_velocity = 3; + size_data_atom = 5; + size_data_vel = 4; + xcol_data = 3; + + atom->rho_flag = 1; + atom->vest_flag = 1; +} + +/* ---------------------------------------------------------------------- + grow atom arrays + n = 0 grows arrays by a chunk + n > 0 allocates arrays to size n + ------------------------------------------------------------------------- */ + +void AtomVecMDPD::grow(int n) +{ + if (n == 0) grow_nmax(); + 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"); + vest = memory->grow(atom->vest, nmax, 3, "atom:vest"); + + 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 AtomVecMDPD::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; + vest = atom->vest; +} + +/* ---------------------------------------------------------------------- */ + +void AtomVecMDPD::copy(int i, int j, int delflag) { + //printf("in AtomVecMDPD::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]; + 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,delflag); +} + +/* ---------------------------------------------------------------------- */ + +void AtomVecMDPD::force_clear(int n, size_t nbytes) +{ + memset(&drho[n],0,nbytes); +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecMDPD::pack_comm_hybrid(int n, int *list, double *buf) { + //printf("in AtomVecMDPD::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++] = vest[j][0]; + buf[m++] = vest[j][1]; + buf[m++] = vest[j][2]; + } + return m; +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecMDPD::unpack_comm_hybrid(int n, int first, double *buf) { + //printf("in AtomVecMDPD::unpack_comm_hybrid\n"); + int i, m, last; + + m = 0; + last = first + n; + for (i = first; i < last; i++) { + rho[i] = buf[m++]; + vest[i][0] = buf[m++]; + vest[i][1] = buf[m++]; + vest[i][2] = buf[m++]; + } + return m; +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecMDPD::pack_border_hybrid(int n, int *list, double *buf) { + //printf("in AtomVecMDPD::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++] = vest[j][0]; + buf[m++] = vest[j][1]; + buf[m++] = vest[j][2]; + } + return m; +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecMDPD::unpack_border_hybrid(int n, int first, double *buf) { + //printf("in AtomVecMDPD::unpack_border_hybrid\n"); + int i, m, last; + + m = 0; + last = first + n; + for (i = first; i < last; i++) { + rho[i] = buf[m++]; + vest[i][0] = buf[m++]; + vest[i][1] = buf[m++]; + vest[i][2] = buf[m++]; + } + return m; +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecMDPD::pack_reverse_hybrid(int n, int first, double *buf) { + //printf("in AtomVecMDPD::pack_reverse_hybrid\n"); + int i, m, last; + + m = 0; + last = first + n; + for (i = first; i < last; i++) { + buf[m++] = drho[i]; + } + return m; +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecMDPD::unpack_reverse_hybrid(int n, int *list, double *buf) { + //printf("in AtomVecMDPD::unpack_reverse_hybrid\n"); + int i, j, m; + + m = 0; + for (i = 0; i < n; i++) { + j = list[i]; + drho[j] += buf[m++]; + } + return m; +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecMDPD::pack_comm(int n, int *list, double *buf, int pbc_flag, + int *pbc) { + //printf("in AtomVecMDPD::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++] = 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++] = vest[j][0]; + buf[m++] = vest[j][1]; + buf[m++] = vest[j][2]; + } + } + return m; +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecMDPD::pack_comm_vel(int n, int *list, double *buf, int pbc_flag, + int *pbc) { + //printf("in AtomVecMDPD::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++] = 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++] = vest[j][0]; + buf[m++] = vest[j][1]; + buf[m++] = vest[j][2]; + } + } + return m; +} + +/* ---------------------------------------------------------------------- */ + +void AtomVecMDPD::unpack_comm(int n, int first, double *buf) { + //printf("in AtomVecMDPD::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++]; + vest[i][0] = buf[m++]; + vest[i][1] = buf[m++]; + vest[i][2] = buf[m++]; + } +} + +/* ---------------------------------------------------------------------- */ + +void AtomVecMDPD::unpack_comm_vel(int n, int first, double *buf) { + //printf("in AtomVecMDPD::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++]; + vest[i][0] = buf[m++]; + vest[i][1] = buf[m++]; + vest[i][2] = buf[m++]; + } +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecMDPD::pack_reverse(int n, int first, double *buf) { + //printf("in AtomVecMDPD::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]; + } + return m; +} + +/* ---------------------------------------------------------------------- */ + +void AtomVecMDPD::unpack_reverse(int n, int *list, double *buf) { + //printf("in AtomVecMDPD::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++]; + } +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecMDPD::pack_border(int n, int *list, double *buf, int pbc_flag, + int *pbc) { + //printf("in AtomVecMDPD::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++] = ubuf(tag[j]).d; + buf[m++] = ubuf(type[j]).d; + buf[m++] = ubuf(mask[j]).d; + buf[m++] = rho[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++] = ubuf(tag[j]).d; + buf[m++] = ubuf(type[j]).d; + buf[m++] = ubuf(mask[j]).d; + buf[m++] = rho[j]; + buf[m++] = vest[j][0]; + buf[m++] = vest[j][1]; + buf[m++] = vest[j][2]; + } + } + + if (atom->nextra_border) + for (int iextra = 0; iextra < atom->nextra_border; iextra++) + m += modify->fix[atom->extra_border[iextra]]->pack_border(n,list,&buf[m]); + + return m; +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecMDPD::pack_border_vel(int n, int *list, double *buf, int pbc_flag, + int *pbc) +{ + int i,j,m; + double dx,dy,dz,dvx,dvy,dvz; + + m = 0; + if (pbc_flag == 0) { + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = x[j][0]; + buf[m++] = x[j][1]; + buf[m++] = x[j][2]; + buf[m++] = ubuf(tag[j]).d; + buf[m++] = ubuf(type[j]).d; + buf[m++] = ubuf(mask[j]).d; + buf[m++] = v[j][0]; + buf[m++] = v[j][1]; + buf[m++] = v[j][2]; + buf[m++] = rho[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]; + } + if (!deform_vremap) { + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = x[j][0] + dx; + buf[m++] = x[j][1] + dy; + buf[m++] = x[j][2] + dz; + buf[m++] = ubuf(tag[j]).d; + buf[m++] = ubuf(type[j]).d; + buf[m++] = ubuf(mask[j]).d; + buf[m++] = v[j][0]; + buf[m++] = v[j][1]; + buf[m++] = v[j][2]; + buf[m++] = rho[j]; + buf[m++] = vest[j][0]; + buf[m++] = vest[j][1]; + buf[m++] = vest[j][2]; + } + } else { + dvx = pbc[0] * h_rate[0] + pbc[5] * h_rate[5] + pbc[4] * h_rate[4]; + dvy = pbc[1] * h_rate[1] + pbc[3] * h_rate[3]; + dvz = pbc[2] * h_rate[2]; + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = x[j][0] + dx; + buf[m++] = x[j][1] + dy; + buf[m++] = x[j][2] + dz; + buf[m++] = ubuf(tag[j]).d; + buf[m++] = ubuf(type[j]).d; + buf[m++] = ubuf(mask[j]).d; + if (mask[i] & deform_groupbit) { + buf[m++] = v[j][0] + dvx; + buf[m++] = v[j][1] + dvy; + buf[m++] = v[j][2] + dvz; + buf[m++] = rho[j]; + buf[m++] = vest[j][0] + dvx; + buf[m++] = vest[j][1] + dvy; + buf[m++] = vest[j][2] + dvz; + } else { + buf[m++] = v[j][0]; + buf[m++] = v[j][1]; + buf[m++] = v[j][2]; + buf[m++] = rho[j]; + buf[m++] = vest[j][0]; + buf[m++] = vest[j][1]; + buf[m++] = vest[j][2]; + } + } + } + } + + if (atom->nextra_border) + for (int iextra = 0; iextra < atom->nextra_border; iextra++) + m += modify->fix[atom->extra_border[iextra]]->pack_border(n,list,&buf[m]); + + return m; +} + +/* ---------------------------------------------------------------------- */ + +void AtomVecMDPD::unpack_border(int n, int first, double *buf) { + //printf("in AtomVecMDPD::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] = (tagint) ubuf(buf[m++]).i; + type[i] = (int) ubuf(buf[m++]).i; + mask[i] = (int) ubuf(buf[m++]).i; + rho[i] = buf[m++]; + vest[i][0] = buf[m++]; + vest[i][1] = buf[m++]; + vest[i][2] = buf[m++]; + } + + if (atom->nextra_border) + for (int iextra = 0; iextra < atom->nextra_border; iextra++) + m += modify->fix[atom->extra_border[iextra]]-> + unpack_border(n,first,&buf[m]); +} + +/* ---------------------------------------------------------------------- */ + +void AtomVecMDPD::unpack_border_vel(int n, int first, double *buf) { + //printf("in AtomVecMDPD::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] = (tagint) ubuf(buf[m++]).i; + type[i] = (int) ubuf(buf[m++]).i; + mask[i] = (int) ubuf(buf[m++]).i; + v[i][0] = buf[m++]; + v[i][1] = buf[m++]; + v[i][2] = buf[m++]; + rho[i] = buf[m++]; + vest[i][0] = buf[m++]; + vest[i][1] = buf[m++]; + vest[i][2] = buf[m++]; + } + + if (atom->nextra_border) + for (int iextra = 0; iextra < atom->nextra_border; iextra++) + m += modify->fix[atom->extra_border[iextra]]-> + unpack_border(n,first,&buf[m]); +} + +/* ---------------------------------------------------------------------- + pack data for atom I for sending to another proc + xyz must be 1st 3 values, so comm::exchange() can test on them + ------------------------------------------------------------------------- */ + +int AtomVecMDPD::pack_exchange(int i, double *buf) { + //printf("in AtomVecMDPD::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++] = ubuf(tag[i]).d; + buf[m++] = ubuf(type[i]).d; + buf[m++] = ubuf(mask[i]).d; + buf[m++] = ubuf(image[i]).d; + buf[m++] = rho[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 AtomVecMDPD::unpack_exchange(double *buf) { + //printf("in AtomVecMDPD::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] = (tagint) ubuf(buf[m++]).i; + type[nlocal] = (int) ubuf(buf[m++]).i; + mask[nlocal] = (int) ubuf(buf[m++]).i; + image[nlocal] = (imageint) ubuf(buf[m++]).i; + rho[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 AtomVecMDPD::size_restart() { + int i; + + int nlocal = atom->nlocal; + int n = 15 * nlocal; // 11 + rho + 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 AtomVecMDPD::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++] = ubuf(tag[i]).d; + buf[m++] = ubuf(type[i]).d; + buf[m++] = ubuf(mask[i]).d; + buf[m++] = ubuf(image[i]).d; + buf[m++] = v[i][0]; + buf[m++] = v[i][1]; + buf[m++] = v[i][2]; + buf[m++] = rho[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 AtomVecMDPD::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] = (tagint) ubuf(buf[m++]).i; + type[nlocal] = (int) ubuf(buf[m++]).i; + mask[nlocal] = (int) ubuf(buf[m++]).i; + image[nlocal] = (imageint) ubuf(buf[m++]).i; + v[nlocal][0] = buf[m++]; + v[nlocal][1] = buf[m++]; + v[nlocal][2] = buf[m++]; + rho[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 AtomVecMDPD::create_atom(int itype, double *coord) { + int nlocal = atom->nlocal; + if (nlocal == nmax) + grow(0); + + tag[nlocal] = 0; + type[nlocal] = itype; + x[nlocal][0] = coord[0]; + x[nlocal][1] = coord[1]; + x[nlocal][2] = coord[2]; + mask[nlocal] = 1; + image[nlocal] = ((imageint) IMGMAX << IMG2BITS) | + ((imageint) IMGMAX << IMGBITS) | IMGMAX; + v[nlocal][0] = 0.0; + v[nlocal][1] = 0.0; + v[nlocal][2] = 0.0; + rho[nlocal] = 0.0; + vest[nlocal][0] = 0.0; + vest[nlocal][1] = 0.0; + vest[nlocal][2] = 0.0; + drho[nlocal] = 0.0; + + atom->nlocal++; +} + +/* ---------------------------------------------------------------------- + unpack one line from Atoms section of data file + initialize other atom quantities + ------------------------------------------------------------------------- */ + +void AtomVecMDPD::data_atom(double *coord, imageint imagetmp, char **values) { + int nlocal = atom->nlocal; + if (nlocal == nmax) grow(0); + + tag[nlocal] = ATOTAGINT(values[0]); + 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"); + + 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; + + vest[nlocal][0] = 0.0; + vest[nlocal][1] = 0.0; + vest[nlocal][2] = 0.0; + + rho[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 AtomVecMDPD::data_atom_hybrid(int nlocal, char **values) +{ + rho[nlocal] = atof(values[0]); + return 3; +} + +/* ---------------------------------------------------------------------- + pack atom info for data file including 3 image flags +------------------------------------------------------------------------- */ + +void AtomVecMDPD::pack_data(double **buf) +{ + int nlocal = atom->nlocal; + for (int i = 0; i < nlocal; i++) { + buf[i][0] = ubuf(tag[i]).d; + buf[i][1] = ubuf(type[i]).d; + buf[i][2] = rho[i]; + buf[i][3] = x[i][0]; + buf[i][4] = x[i][1]; + buf[i][5] = x[i][2]; + buf[i][6] = ubuf((image[i] & IMGMASK) - IMGMAX).d; + buf[i][7] = ubuf((image[i] >> IMGBITS & IMGMASK) - IMGMAX).d; + buf[i][8] = ubuf((image[i] >> IMG2BITS) - IMGMAX).d; + } +} + +/* ---------------------------------------------------------------------- + pack hybrid atom info for data file +------------------------------------------------------------------------- */ + +int AtomVecMDPD::pack_data_hybrid(int i, double *buf) +{ + buf[0] = rho[i]; + return 3; +} + +/* ---------------------------------------------------------------------- + write atom info to data file including 3 image flags +------------------------------------------------------------------------- */ + +void AtomVecMDPD::write_data(FILE *fp, int n, double **buf) +{ + for (int i = 0; i < n; i++) + fprintf(fp,TAGINT_FORMAT + " %d %-1.16e %-1.16e %-1.16e %-1.16e " + "%d %d %d\n", + (tagint) ubuf(buf[i][0]).i,(int) ubuf(buf[i][1]).i, + buf[i][2],buf[i][3],buf[i][4],buf[i][5], + (int) ubuf(buf[i][6]).i,(int) ubuf(buf[i][7]).i, + (int) ubuf(buf[i][8]).i); +} + +/* ---------------------------------------------------------------------- + write hybrid atom info to data file +------------------------------------------------------------------------- */ + +int AtomVecMDPD::write_data_hybrid(FILE *fp, double *buf) +{ + fprintf(fp," %-1.16e",buf[0]); + return 3; +} + +/* ---------------------------------------------------------------------- + assign an index to named atom property and return index + return -1 if name is unknown to this atom style +------------------------------------------------------------------------- */ + +int AtomVecMDPD::property_atom(char *name) +{ + if (strcmp(name,"rho") == 0) return 0; + if (strcmp(name,"drho") == 0) return 1; + return -1; +} + +/* ---------------------------------------------------------------------- + pack per-atom data into buf for ComputePropertyAtom + index maps to data specific to this atom style +------------------------------------------------------------------------- */ + +void AtomVecMDPD::pack_property_atom(int index, double *buf, + int nvalues, int groupbit) +{ + int *mask = atom->mask; + int nlocal = atom->nlocal; + int n = 0; + + if (index == 0) { + for (int i = 0; i < nlocal; i++) { + if (mask[i] & groupbit) buf[n] = rho[i]; + else buf[n] = 0.0; + n += nvalues; + } + } else if (index == 1) { + for (int i = 0; i < nlocal; i++) { + if (mask[i] & groupbit) buf[n] = drho[i]; + else buf[n] = 0.0; + n += nvalues; + } + } +} + +/* ---------------------------------------------------------------------- + return # of bytes of allocated memory + ------------------------------------------------------------------------- */ + +bigint AtomVecMDPD::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("vest")) bytes += memory->usage(vest, nmax, 3); + + return bytes; +} diff --git a/src/USER-MESO/atom_vec_mdpd.h b/src/USER-MESO/atom_vec_mdpd.h new file mode 100644 index 0000000000000000000000000000000000000000..9e9ffcdcf2b88621802cc418cefa124735a90b99 --- /dev/null +++ b/src/USER-MESO/atom_vec_mdpd.h @@ -0,0 +1,79 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#ifdef ATOM_CLASS + +AtomStyle(mdpd,AtomVecMDPD) + +#else + +#ifndef LMP_ATOM_VEC_MDPD_H +#define LMP_ATOM_VEC_MDPD_H + +#include "atom_vec.h" + +namespace LAMMPS_NS { + +class AtomVecMDPD : public AtomVec { + public: + AtomVecMDPD(class LAMMPS *); + ~AtomVecMDPD() {} + void grow(int); + void grow_reset(); + void copy(int, int, int); + void force_clear(int, size_t); + 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 *, imageint, char **); + int data_atom_hybrid(int, char **); + void pack_data(double **); + int pack_data_hybrid(int, double *); + void write_data(FILE *, int, double **); + int write_data_hybrid(FILE *, double *); + int property_atom(char *); + void pack_property_atom(int, double *, int, int); + bigint memory_usage(); + + private: + tagint *tag; + int *type,*mask; + imageint *image; + double **x,**v,**f; + double *rho, *drho; + double **vest; // estimated velocity during force computation +}; + +} + +#endif +#endif diff --git a/src/USER-MESO/atom_vec_tdpd.cpp b/src/USER-MESO/atom_vec_tdpd.cpp new file mode 100644 index 0000000000000000000000000000000000000000..34f2b1a0310992142445a90f447b8155078a3427 --- /dev/null +++ b/src/USER-MESO/atom_vec_tdpd.cpp @@ -0,0 +1,879 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#include +#include +#include "atom_vec_tdpd.h" +#include "atom.h" +#include "comm.h" +#include "force.h" +#include "domain.h" +#include "modify.h" +#include "fix.h" +#include "update.h" +#include "memory.h" +#include "error.h" +#include "input.h" + +using namespace LAMMPS_NS; + +/* ---------------------------------------------------------------------- */ + +AtomVecTDPD::AtomVecTDPD(LAMMPS *lmp) : AtomVec(lmp) +{ + if(strcmp(update->unit_style,"lj") != 0) + error->all(FLERR,"Atom style edpd requires lj units"); + + molecular = 0; + mass_type = 1; + forceclearflag = 1; + + comm_x_only = comm_f_only = 0; + comm->ghost_velocity = 1; + + cc_species = 0; // for now, reset in process_args() + + size_forward = 3 + cc_species + 3; //vest[3] + size_reverse = 3 + cc_species; + size_border = 6 + cc_species + 3; //vest[3] + size_velocity = 3; + // for data_atom, we read id + type + xyz[3] + cc[i] where i=1,cc_species + size_data_atom = 5 + cc_species; + size_data_vel = 4; + xcol_data = 3; + + atom->tdpd_flag = 1; + atom->vest_flag = 1; +} + +/* ---------------------------------------------------------------------- + process additional args + single arg = number of cc_species +------------------------------------------------------------------------- */ + +void AtomVecTDPD::process_args(int narg, char **arg) +{ + if (narg < 1) error->all(FLERR,"Invalid atom_style tdpd command"); + + atom->cc_species = force->inumeric(FLERR,arg[0]); + cc_species = atom->cc_species; + + // reset sizes that depend on cc_species + + size_forward = 3 + cc_species + 3; + size_reverse = 3 + cc_species; + size_border = 6 + cc_species + 3; + size_data_atom = 5 + cc_species; +} + +/* ---------------------------------------------------------------------- + grow atom arrays + n = 0 grows arrays by a chunk + n > 0 allocates arrays to size n +------------------------------------------------------------------------- */ + +void AtomVecTDPD::grow(int n) +{ + if (n == 0) grow_nmax(); + 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"); + cc = memory->grow(atom->cc,nmax*comm->nthreads,cc_species,"atom:cc"); + cc_flux = memory->grow(atom->cc_flux,nmax*comm->nthreads,cc_species, + "atom:cc_flux"); + vest = memory->grow(atom->vest, nmax, 3, "atom:vest"); + + 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 AtomVecTDPD::grow_reset() +{ + tag = atom->tag; type = atom->type; + mask = atom->mask; image = atom->image; + x = atom->x; v = atom->v; f = atom->f; + cc = atom->cc; cc_flux = atom->cc_flux; + vest = atom->vest; +} + +/* ---------------------------------------------------------------------- + copy atom I info to atom J +------------------------------------------------------------------------- */ + +void AtomVecTDPD::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]; + + for(int k = 0; k < cc_species; k++) + cc[j][k] = cc[i][k]; + + 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,delflag); +} + + +void AtomVecTDPD::force_clear(int n, size_t nbytes) +{ + memset(&cc_flux[n][0],0,cc_species*nbytes); +} + + +/* ---------------------------------------------------------------------- */ + +int AtomVecTDPD::pack_comm(int n, int *list, double *buf, + int pbc_flag, int *pbc) +{ + int i,j,k,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]; + + for(k = 0; k < cc_species; k++) + buf[m++] = cc[j][k]; + + 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; + + for(k = 0; k < cc_species; k++) + buf[m++] = cc[j][k]; + + buf[m++] = vest[j][0]; + buf[m++] = vest[j][1]; + buf[m++] = vest[j][2]; + } + } + return m; +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecTDPD::pack_comm_vel(int n, int *list, double *buf, + int pbc_flag, int *pbc) +{ + int i,j,k,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++] = v[j][0]; + buf[m++] = v[j][1]; + buf[m++] = v[j][2]; + + for(k = 0; k < cc_species; k++) + buf[m++] = cc[j][k]; + + 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; + } + 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++] = v[j][0]; + buf[m++] = v[j][1]; + buf[m++] = v[j][2]; + + for(k = 0; k < cc_species; k++) + buf[m++] = cc[j][k]; + + buf[m++] = vest[j][0]; + buf[m++] = vest[j][1]; + buf[m++] = vest[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 (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]; + } + for(k = 0; k < cc_species; k++) + buf[m++] = cc[j][k]; + + buf[m++] = vest[j][0]; + buf[m++] = vest[j][1]; + buf[m++] = vest[j][2]; + } + } + } + return m; +} + +/* ---------------------------------------------------------------------- */ + +void AtomVecTDPD::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++]; + + for(int k = 0; k < cc_species; k++) + cc[i][k] = buf[m++]; + + vest[i][0] = buf[m++]; + vest[i][1] = buf[m++]; + vest[i][2] = buf[m++]; + } +} + +/* ---------------------------------------------------------------------- */ + +void AtomVecTDPD::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++]; + v[i][0] = buf[m++]; + v[i][1] = buf[m++]; + v[i][2] = buf[m++]; + for(int k = 0; k < cc_species; k++) + cc[i][k] = buf[m++]; + + vest[i][0] = buf[m++]; + vest[i][1] = buf[m++]; + vest[i][2] = buf[m++]; + } +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecTDPD::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]; + for(int k = 0; k < cc_species; k++) + buf[m++] = cc_flux[i][k]; + } + return m; +} + +/* ---------------------------------------------------------------------- */ + +void AtomVecTDPD::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++]; + for(int k = 0; k < cc_species; k++) + cc_flux[j][k] += buf[m++]; + } +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecTDPD::pack_border(int n, int *list, double *buf, + int pbc_flag, int *pbc) +{ + int i,j,m; + double dx,dy,dz; + + m = 0; + if (pbc_flag == 0) { + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = x[j][0]; + buf[m++] = x[j][1]; + buf[m++] = x[j][2]; + buf[m++] = ubuf(tag[j]).d; + buf[m++] = ubuf(type[j]).d; + buf[m++] = ubuf(mask[j]).d; + for(int k = 0; k < cc_species; k++) + buf[m++] = cc[j][k]; + + 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++] = ubuf(tag[j]).d; + buf[m++] = ubuf(type[j]).d; + buf[m++] = ubuf(mask[j]).d; + for(int k = 0; k < cc_species; k++) + buf[m++] = cc[j][k]; + + buf[m++] = vest[j][0]; + buf[m++] = vest[j][1]; + buf[m++] = vest[j][2]; + } + } + + if (atom->nextra_border) + for (int iextra = 0; iextra < atom->nextra_border; iextra++) + m += modify->fix[atom->extra_border[iextra]]->pack_border(n,list,&buf[m]); + + return m; +} + +/* ---------------------------------------------------------------------- */ + +int AtomVecTDPD::pack_border_vel(int n, int *list, double *buf, + int pbc_flag, int *pbc) +{ + int i,j,m; + double dx,dy,dz,dvx,dvy,dvz; + + m = 0; + if (pbc_flag == 0) { + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = x[j][0]; + buf[m++] = x[j][1]; + buf[m++] = x[j][2]; + buf[m++] = ubuf(tag[j]).d; + buf[m++] = ubuf(type[j]).d; + buf[m++] = ubuf(mask[j]).d; + buf[m++] = v[j][0]; + buf[m++] = v[j][1]; + buf[m++] = v[j][2]; + for(int k = 0; k < cc_species; k++) + buf[m++] = cc[j][k]; + + 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]; + } + if (!deform_vremap) { + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = x[j][0] + dx; + buf[m++] = x[j][1] + dy; + buf[m++] = x[j][2] + dz; + buf[m++] = ubuf(tag[j]).d; + buf[m++] = ubuf(type[j]).d; + buf[m++] = ubuf(mask[j]).d; + buf[m++] = v[j][0]; + buf[m++] = v[j][1]; + buf[m++] = v[j][2]; + for(int k = 0; k < cc_species; k++) + buf[m++] = cc[j][k]; + + buf[m++] = vest[j][0]; + buf[m++] = vest[j][1]; + buf[m++] = vest[j][2]; + } + } else { + dvx = pbc[0]*h_rate[0] + pbc[5]*h_rate[5] + pbc[4]*h_rate[4]; + dvy = pbc[1]*h_rate[1] + pbc[3]*h_rate[3]; + dvz = pbc[2]*h_rate[2]; + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = x[j][0] + dx; + buf[m++] = x[j][1] + dy; + buf[m++] = x[j][2] + dz; + buf[m++] = ubuf(tag[j]).d; + buf[m++] = ubuf(type[j]).d; + buf[m++] = ubuf(mask[j]).d; + 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]; + } + for(int k = 0; k < cc_species; k++) + buf[m++] = cc[j][k]; + + buf[m++] = vest[j][0]; + buf[m++] = vest[j][1]; + buf[m++] = vest[j][2]; + } + } + } + + if (atom->nextra_border) + for (int iextra = 0; iextra < atom->nextra_border; iextra++) + m += modify->fix[atom->extra_border[iextra]]->pack_border(n,list,&buf[m]); + + return m; +} + +/* ---------------------------------------------------------------------- */ + +void AtomVecTDPD::unpack_border(int n, int first, double *buf) +{ + int i,m,last; + + m = 0; + last = first + n; + for (i = first; i < last; i++) { + if (i == nmax) grow(0); + x[i][0] = buf[m++]; + x[i][1] = buf[m++]; + x[i][2] = buf[m++]; + tag[i] = (tagint) ubuf(buf[m++]).i; + type[i] = (int) ubuf(buf[m++]).i; + mask[i] = (int) ubuf(buf[m++]).i; + for(int k = 0; k < cc_species; k++) + cc[i][k] = buf[m++]; + + vest[i][0] = buf[m++]; + vest[i][1] = buf[m++]; + vest[i][2] = buf[m++]; + } + + if (atom->nextra_border) + for (int iextra = 0; iextra < atom->nextra_border; iextra++) + m += modify->fix[atom->extra_border[iextra]]-> + unpack_border(n,first,&buf[m]); +} + +/* ---------------------------------------------------------------------- */ + +void AtomVecTDPD::unpack_border_vel(int n, int first, double *buf) +{ + int i,m,last; + + m = 0; + last = first + n; + for (i = first; i < last; i++) { + if (i == nmax) grow(0); + x[i][0] = buf[m++]; + x[i][1] = buf[m++]; + x[i][2] = buf[m++]; + tag[i] = (tagint) ubuf(buf[m++]).i; + type[i] = (int) ubuf(buf[m++]).i; + mask[i] = (int) ubuf(buf[m++]).i; + v[i][0] = buf[m++]; + v[i][1] = buf[m++]; + v[i][2] = buf[m++]; + for(int k = 0; k < cc_species; k++) + cc[i][k] = buf[m++]; + + vest[i][0] = buf[m++]; + vest[i][1] = buf[m++]; + vest[i][2] = buf[m++]; + } + + if (atom->nextra_border) + for (int iextra = 0; iextra < atom->nextra_border; iextra++) + m += modify->fix[atom->extra_border[iextra]]-> + unpack_border(n,first,&buf[m]); +} + +/* ---------------------------------------------------------------------- + pack data for atom I for sending to another proc + xyz must be 1st 3 values, so comm::exchange() can test on them +------------------------------------------------------------------------- */ + +int AtomVecTDPD::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++] = ubuf(tag[i]).d; + buf[m++] = ubuf(type[i]).d; + buf[m++] = ubuf(mask[i]).d; + buf[m++] = ubuf(image[i]).d; + for(int k = 0; k < cc_species; k++) + buf[m++] = cc[i][k]; + + 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 AtomVecTDPD::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] = (tagint) ubuf(buf[m++]).i; + type[nlocal] = (int) ubuf(buf[m++]).i; + mask[nlocal] = (int) ubuf(buf[m++]).i; + image[nlocal] = (imageint) ubuf(buf[m++]).i; + for(int k = 0; k < cc_species; k++) + cc[nlocal][k] = 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 AtomVecTDPD::size_restart() +{ + int i; + + int nlocal = atom->nlocal; + int n = (11 + cc_species + 3) * nlocal; // 11 + cc[i] + 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 AtomVecTDPD::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++] = ubuf(tag[i]).d; + buf[m++] = ubuf(type[i]).d; + buf[m++] = ubuf(mask[i]).d; + buf[m++] = ubuf(image[i]).d; + buf[m++] = v[i][0]; + buf[m++] = v[i][1]; + buf[m++] = v[i][2]; + for(int k = 0; k < cc_species; k++) + buf[m++] = cc[i][k]; + + 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 AtomVecTDPD::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] = (tagint) ubuf(buf[m++]).i; + type[nlocal] = (int) ubuf(buf[m++]).i; + mask[nlocal] = (int) ubuf(buf[m++]).i; + image[nlocal] = (imageint) ubuf(buf[m++]).i; + v[nlocal][0] = buf[m++]; + v[nlocal][1] = buf[m++]; + v[nlocal][2] = buf[m++]; + for(int k = 0; k < cc_species; k++) + cc[nlocal][k] = 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 AtomVecTDPD::create_atom(int itype, double *coord) +{ + int nlocal = atom->nlocal; + if (nlocal == nmax) grow(0); + + tag[nlocal] = 0; + type[nlocal] = itype; + x[nlocal][0] = coord[0]; + x[nlocal][1] = coord[1]; + x[nlocal][2] = coord[2]; + mask[nlocal] = 1; + image[nlocal] = ((imageint) IMGMAX << IMG2BITS) | + ((imageint) IMGMAX << IMGBITS) | IMGMAX; + v[nlocal][0] = 0.0; + v[nlocal][1] = 0.0; + v[nlocal][2] = 0.0; + + for(int k = 0; k < cc_species; k++) + cc[nlocal][k] = 0.0; + + vest[nlocal][0] = 0.0; + vest[nlocal][1] = 0.0; + vest[nlocal][2] = 0.0; + + atom->nlocal++; +} + +/* ---------------------------------------------------------------------- + unpack one line from Atoms section of data file + initialize other atom quantities +------------------------------------------------------------------------- */ + +void AtomVecTDPD::data_atom(double *coord, imageint imagetmp, char **values) +{ + int nlocal = atom->nlocal; + if (nlocal == nmax) grow(0); + + tag[nlocal] = ATOTAGINT(values[0]); + 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"); + + x[nlocal][0] = coord[0]; + x[nlocal][1] = coord[1]; + x[nlocal][2] = coord[2]; + + for(int k = 0; k < cc_species; k++) + cc[nlocal][k] = atof( values[5+k] ); + + 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; + + atom->nlocal++; +} + +/* ---------------------------------------------------------------------- + pack atom info for data file including 3 image flags +------------------------------------------------------------------------- */ + +void AtomVecTDPD::pack_data(double **buf) +{ + int nlocal = atom->nlocal; + for (int i = 0; i < nlocal; i++) { + buf[i][0] = ubuf(tag[i]).d; + buf[i][1] = ubuf(type[i]).d; + buf[i][2] = x[i][0]; + buf[i][3] = x[i][1]; + buf[i][4] = x[i][2]; + buf[i][5] = ubuf((image[i] & IMGMASK) - IMGMAX).d; + buf[i][6] = ubuf((image[i] >> IMGBITS & IMGMASK) - IMGMAX).d; + buf[i][7] = ubuf((image[i] >> IMG2BITS) - IMGMAX).d; + for(int k = 0; k < cc_species; k++) + buf[i][8+k] = cc[i][k]; + } +} + +/* ---------------------------------------------------------------------- + write atom info to data file including 3 image flags +------------------------------------------------------------------------- */ + +void AtomVecTDPD::write_data(FILE *fp, int n, double **buf) +{ + for (int i = 0; i < n; i++){ + fprintf(fp,TAGINT_FORMAT " %d %-1.16e %-1.16e %-1.16e %d %d %d", + (tagint) ubuf(buf[i][0]).i,(int) ubuf(buf[i][1]).i, + buf[i][2],buf[i][3],buf[i][4], + (int) ubuf(buf[i][5]).i,(int) ubuf(buf[i][6]).i, + (int) ubuf(buf[i][7]).i); + for(int k = 0; k < cc_species; k++) + fprintf(fp," %-1.16e",buf[i][8+k]); + fprintf(fp,"\n"); + } +} + +/* ---------------------------------------------------------------------- + return # of bytes of allocated memory +------------------------------------------------------------------------- */ + +bigint AtomVecTDPD::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("cc")) bytes += memory->usage(cc,nmax*comm->nthreads,cc_species); + if (atom->memcheck("cc_flux")) bytes += memory->usage(cc_flux,nmax*comm->nthreads,cc_species); + if (atom->memcheck("vest")) bytes += memory->usage(vest, nmax); + + return bytes; +} diff --git a/src/USER-MESO/atom_vec_tdpd.h b/src/USER-MESO/atom_vec_tdpd.h new file mode 100644 index 0000000000000000000000000000000000000000..86e9ae4bb81931fefa851320a817fc5d6f89f347 --- /dev/null +++ b/src/USER-MESO/atom_vec_tdpd.h @@ -0,0 +1,83 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#ifdef ATOM_CLASS + +AtomStyle(tdpd,AtomVecTDPD) + +#else + +#ifndef LMP_ATOM_VEC_TDPD_H +#define LMP_ATOM_VEC_TDPD_H + +#include "atom_vec.h" + +namespace LAMMPS_NS { + +class AtomVecTDPD : public AtomVec { + public: + AtomVecTDPD(class LAMMPS *); + virtual ~AtomVecTDPD() {} + void process_args(int, char **); + void grow(int); + void grow_reset(); + void copy(int, int, int); + void force_clear(int, size_t); + virtual int pack_comm(int, int *, double *, int, int *); + virtual int pack_comm_vel(int, int *, double *, int, int *); + virtual void unpack_comm(int, int, double *); + virtual void unpack_comm_vel(int, int, double *); + int pack_reverse(int, int, double *); + void unpack_reverse(int, int *, double *); + virtual int pack_border(int, int *, double *, int, int *); + virtual int pack_border_vel(int, int *, double *, int, int *); + virtual void unpack_border(int, int, double *); + virtual void unpack_border_vel(int, int, double *); + virtual int pack_exchange(int, double *); + virtual int unpack_exchange(double *); + int size_restart(); + int pack_restart(int, double *); + int unpack_restart(double *); + void create_atom(int, double *); + void data_atom(double *, imageint, char **); + void pack_data(double **); + void write_data(FILE *, int, double **); + bigint memory_usage(); + + protected: + tagint *tag; + int *type,*mask; + imageint *image; + double **x,**v,**f; + double **vest; // store intermediate velocity for using mvv integrator + double **cc,**cc_flux; + int cc_species; +}; + +} + +#endif +#endif + +/* ERROR/WARNING messages: + +E: Per-processor system is too big + +The number of owned atoms plus ghost atoms on a single +processor must fit in 32-bit integer. + +E: Invalid atom type in Atoms section of data file + +Atom types must range from 1 to specified # of types. + +*/ diff --git a/src/USER-MESO/compute_edpd_temp_atom.cpp b/src/USER-MESO/compute_edpd_temp_atom.cpp new file mode 100644 index 0000000000000000000000000000000000000000..15fdab2a69720102075f0c0b13c7ae1e11bc0345 --- /dev/null +++ b/src/USER-MESO/compute_edpd_temp_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 +#include "compute_edpd_temp_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; + +/* ---------------------------------------------------------------------- */ + +ComputeEDPDTempAtom::ComputeEDPDTempAtom(LAMMPS *lmp, int narg, char **arg) : + Compute(lmp, narg, arg) +{ + if (narg != 3) error->all(FLERR,"Number of arguments for compute edpd/temp/atom command != 3"); + if (atom->edpd_flag != 1) error->all(FLERR,"compute edpd/temp/atom command requires atom_style with temperature (e.g. edpd)"); + + peratom_flag = 1; + size_peratom_cols = 0; + + nmax = 0; + temp_vector = NULL; +} + +/* ---------------------------------------------------------------------- */ + +ComputeEDPDTempAtom::~ComputeEDPDTempAtom() +{ + memory->sfree(temp_vector); +} + +/* ---------------------------------------------------------------------- */ + +void ComputeEDPDTempAtom::init() +{ + + int count = 0; + for (int i = 0; i < modify->ncompute; i++) + if (strcmp(modify->compute[i]->style,"temp_vector/atom") == 0) count++; + if (count > 1 && comm->me == 0) + error->warning(FLERR,"More than one compute temp_vector/atom"); +} + +/* ---------------------------------------------------------------------- */ + +void ComputeEDPDTempAtom::compute_peratom() +{ + invoked_peratom = update->ntimestep; + + // grow temp_vector array if necessary + + if (atom->nmax > nmax) { + memory->sfree(temp_vector); + nmax = atom->nmax; + temp_vector = (double *) memory->smalloc(nmax*sizeof(double),"temp_vector/atom:temp_vector"); + vector_atom = temp_vector; + } + + double *edpd_temp = atom->edpd_temp; + int *mask = atom->mask; + int nlocal = atom->nlocal; + + for (int i = 0; i < nlocal; i++) { + if (mask[i] & groupbit) { + temp_vector[i] = edpd_temp[i]; + } + else { + temp_vector[i] = 0.0; + } + } +} + +/* ---------------------------------------------------------------------- + memory usage of local atom-based array +------------------------------------------------------------------------- */ + +double ComputeEDPDTempAtom::memory_usage() +{ + double bytes = nmax * sizeof(double); + return bytes; +} diff --git a/src/USER-DPD/npair_halffull_newton_ssa.h b/src/USER-MESO/compute_edpd_temp_atom.h similarity index 59% rename from src/USER-DPD/npair_halffull_newton_ssa.h rename to src/USER-MESO/compute_edpd_temp_atom.h index 03903815b142820401c1e7846e82cbd98dabbce7..4c61b664ccd5f64d04d011c3e516b14b07e317a4 100644 --- a/src/USER-DPD/npair_halffull_newton_ssa.h +++ b/src/USER-MESO/compute_edpd_temp_atom.h @@ -11,34 +11,33 @@ See the README file in the top-level LAMMPS directory. ------------------------------------------------------------------------- */ -#ifdef NPAIR_CLASS +#ifdef COMPUTE_CLASS -NPairStyle(halffull/newton/ssa, - NPairHalffullNewtonSSA, - NP_HALF_FULL | NP_NSQ | NP_BIN | NP_MULTI | NP_NEWTON | - NP_ORTHO | NP_TRI | NP_SSA) +ComputeStyle(edpd/temp/atom,ComputeEDPDTempAtom) #else -#ifndef LMP_NPAIR_HALFFULL_NEWTON_SSA_H -#define LMP_NPAIR_HALFFULL_NEWTON_SSA_H +#ifndef LMP_COMPUTE_EDPD_TEMP_ATOM_H +#define LMP_COMPUTE_EDPD_TEMP_ATOM_H -#include "npair.h" +#include "compute.h" namespace LAMMPS_NS { -class NPairHalffullNewtonSSA : public NPair { +class ComputeEDPDTempAtom : public Compute { public: - NPairHalffullNewtonSSA(class LAMMPS *); - ~NPairHalffullNewtonSSA() {} - void build(class NeighList *); + ComputeEDPDTempAtom(class LAMMPS *, int, char **); + ~ComputeEDPDTempAtom(); + void init(); + void compute_peratom(); + double memory_usage(); + + private: + int nmax; + double *temp_vector; }; } #endif #endif - -/* ERROR/WARNING messages: - -*/ diff --git a/src/USER-MESO/compute_tdpd_cc_atom.cpp b/src/USER-MESO/compute_tdpd_cc_atom.cpp new file mode 100644 index 0000000000000000000000000000000000000000..b33550f5c164075a373fb1c4dce29de126d4da7d --- /dev/null +++ b/src/USER-MESO/compute_tdpd_cc_atom.cpp @@ -0,0 +1,98 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#include +#include "compute_tdpd_cc_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; + +/* ---------------------------------------------------------------------- */ + +ComputeTDPDCCAtom::ComputeTDPDCCAtom(LAMMPS *lmp, int narg, char **arg) : + Compute(lmp, narg, arg) +{ + if (narg != 4) error->all(FLERR,"Number of arguments for compute tdpd/cc/atom command != 4"); + if (atom->tdpd_flag != 1) error->all(FLERR,"compute tdpd/cc/atom command requires atom_style with concentration (e.g. tdpd)"); + + index = force->inumeric(FLERR,arg[3]); + + peratom_flag = 1; + size_peratom_cols = 0; + + nmax = 0; + cc_vector = NULL; +} + +/* ---------------------------------------------------------------------- */ + +ComputeTDPDCCAtom::~ComputeTDPDCCAtom() +{ + memory->sfree(cc_vector); +} + +/* ---------------------------------------------------------------------- */ + +void ComputeTDPDCCAtom::init() +{ + + int count = 0; + for (int i = 0; i < modify->ncompute; i++) + if (strcmp(modify->compute[i]->style,"cc_vector/atom") == 0) count++; + if (count > 1 && comm->me == 0) + error->warning(FLERR,"More than one compute cc_vector/atom"); +} + +/* ---------------------------------------------------------------------- */ + +void ComputeTDPDCCAtom::compute_peratom() +{ + invoked_peratom = update->ntimestep; + + // grow cc_vector array if necessary + + if (atom->nmax > nmax) { + memory->sfree(cc_vector); + nmax = atom->nmax; + cc_vector = (double *) memory->smalloc(nmax*sizeof(double),"cc_vector/atom:cc_vector"); + vector_atom = cc_vector; + } + + double **cc = atom->cc; + int *mask = atom->mask; + int nlocal = atom->nlocal; + + for (int i = 0; i < nlocal; i++) { + if (mask[i] & groupbit) { + cc_vector[i] = cc[i][index-1]; + } + else + cc_vector[i] = 0.0; + } +} + +/* ---------------------------------------------------------------------- + memory usage of local atom-based array +------------------------------------------------------------------------- */ + +double ComputeTDPDCCAtom::memory_usage() +{ + double bytes = nmax * sizeof(double); + return bytes; +} diff --git a/src/USER-MESO/compute_tdpd_cc_atom.h b/src/USER-MESO/compute_tdpd_cc_atom.h new file mode 100644 index 0000000000000000000000000000000000000000..324cb779a4cd7353d94b52da9c8c41955be70596 --- /dev/null +++ b/src/USER-MESO/compute_tdpd_cc_atom.h @@ -0,0 +1,44 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#ifdef COMPUTE_CLASS + +ComputeStyle(tdpd/cc/atom,ComputeTDPDCCAtom) + +#else + +#ifndef LMP_COMPUTE_TDPD_CC_ATOM_H +#define LMP_COMPUTE_TDPD_CC_ATOM_H + +#include "compute.h" + +namespace LAMMPS_NS { + +class ComputeTDPDCCAtom : public Compute { + public: + ComputeTDPDCCAtom(class LAMMPS *, int, char **); + ~ComputeTDPDCCAtom(); + void init(); + void compute_peratom(); + double memory_usage(); + + private: + int nmax; + int index; + double *cc_vector; +}; + +} + +#endif +#endif diff --git a/src/USER-MESO/fix_edpd_source.cpp b/src/USER-MESO/fix_edpd_source.cpp new file mode 100644 index 0000000000000000000000000000000000000000..3ee7e8e2911d92667ebc24ff475f5d6b3a976c22 --- /dev/null +++ b/src/USER-MESO/fix_edpd_source.cpp @@ -0,0 +1,120 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#include +#include +#include "fix_edpd_source.h" +#include "atom.h" +#include "comm.h" +#include "update.h" +#include "modify.h" +#include "domain.h" +#include "lattice.h" +#include "input.h" +#include "variable.h" +#include "error.h" +#include "force.h" + +using namespace LAMMPS_NS; +using namespace FixConst; + +/* ---------------------------------------------------------------------- */ + +FixEDPDSource::FixEDPDSource(LAMMPS *lmp, int narg, char **arg) : + Fix(lmp, narg, arg) +{ + if (strcmp(style,"edpd/source") != 0 && narg < 4) + error->all(FLERR,"Illegal fix edpd/source command"); + + int iarg = 3; + + if (strcmp(arg[iarg],"sphere") == 0) option = 0; + else if (strcmp(arg[iarg],"cuboid") == 0) option = 1; + else error->all(FLERR,"Illegal fix edpd/source command"); + iarg++; + + if(option == 0){ + if (narg != 9 ) error->all(FLERR,"Illegal fix edpd/source command (5 args for sphere)"); + center[0] = force->numeric(FLERR,arg[iarg++]); + center[1] = force->numeric(FLERR,arg[iarg++]); + center[2] = force->numeric(FLERR,arg[iarg++]); + radius = force->numeric(FLERR,arg[iarg++]); + value = force->numeric(FLERR,arg[iarg++]); + } + else if(option == 1){ + if (narg != 11 ) error->all(FLERR,"Illegal fix edpd/edpd command (7 args for cuboid)"); + center[0] = force->numeric(FLERR,arg[iarg++]); + center[1] = force->numeric(FLERR,arg[iarg++]); + center[2] = force->numeric(FLERR,arg[iarg++]); + dLx = force->numeric(FLERR,arg[iarg++]); + dLy = force->numeric(FLERR,arg[iarg++]); + dLz = force->numeric(FLERR,arg[iarg++]); + value = force->numeric(FLERR,arg[iarg++]); + } + else error->all(FLERR,"Illegal fix edpd/source command"); +} + +/* ---------------------------------------------------------------------- */ + +FixEDPDSource::~FixEDPDSource() +{ +} + +/* ---------------------------------------------------------------------- */ + +int FixEDPDSource::setmask() +{ + int mask = 0; + mask |= POST_FORCE; + return mask; +} + +/* ---------------------------------------------------------------------- */ + +void FixEDPDSource::init() +{ +} + +/* ---------------------------------------------------------------------- */ + +void FixEDPDSource::post_force(int vflag) +{ + double **x = atom->x; + double *edpd_flux = atom->edpd_flux; + double *edpd_cv = atom->edpd_cv; + int *mask = atom->mask; + int nlocal = atom->nlocal; + + double drx, dry, drz, rsq; + double radius_sq = radius*radius*radius; + + for (int i = 0; i < nlocal; i++) { + if (mask[i] & groupbit) { + if(option == 0){ + drx = x[i][0] - center[0]; + dry = x[i][1] - center[1]; + drz = x[i][2] - center[2]; + rsq = drx*drx + dry*dry + drz*drz; + if(rsq < radius_sq) + edpd_flux[i] += value*edpd_cv[i]; + } + else if(option == 1){ + drx = x[i][0] - center[0]; + dry = x[i][1] - center[1]; + drz = x[i][2] - center[2]; + if(abs(drx) <= 0.5*dLx && abs(dry) <= 0.5*dLy && abs(drz) <= 0.5*dLz) + edpd_flux[i] += value*edpd_cv[i]; + } + } + } +} diff --git a/src/USER-MESO/fix_edpd_source.h b/src/USER-MESO/fix_edpd_source.h new file mode 100644 index 0000000000000000000000000000000000000000..1ea8610ce90add53c71250072d4d350fed3dc58f --- /dev/null +++ b/src/USER-MESO/fix_edpd_source.h @@ -0,0 +1,44 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#ifdef FIX_CLASS + +FixStyle(edpd/source,FixEDPDSource) + +#else + +#ifndef LMP_FIX_EDPDSOURCE_H +#define LMP_FIX_EDPDSOURCE_H + +#include "fix.h" + +namespace LAMMPS_NS { + +class FixEDPDSource : public Fix { + public: + FixEDPDSource(class LAMMPS *, int, char **); + ~FixEDPDSource(); + int setmask(); + void init(); + void post_force(int); + + protected: + int option; + double center[3], radius, dLx, dLy, dLz; + double value; +}; + +} + +#endif +#endif diff --git a/src/USER-MESO/fix_mvv_dpd.cpp b/src/USER-MESO/fix_mvv_dpd.cpp new file mode 100644 index 0000000000000000000000000000000000000000..77a67273f6389c3a3a9e68220201223cff8dc925 --- /dev/null +++ b/src/USER-MESO/fix_mvv_dpd.cpp @@ -0,0 +1,136 @@ +/* ---------------------------------------------------------------------- + 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. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + This is a time integrator for position and velocity (x and v) using the + modified velocity-Verlet (MVV) algorithm. + Setting verlet = 0.5 recovers the standard velocity-Verlet algorithm. + + Contributing author: Zhen Li (Brown University) + Email: zhen_li@brown.edu +------------------------------------------------------------------------- */ + +#include +#include +#include "fix_mvv_dpd.h" +#include "atom.h" +#include "force.h" +#include "update.h" +#include "respa.h" +#include "error.h" + +using namespace LAMMPS_NS; +using namespace FixConst; + +/* ---------------------------------------------------------------------- */ + +FixMvvDPD::FixMvvDPD(LAMMPS *lmp, int narg, char **arg) : + Fix(lmp, narg, arg) +{ + if (strcmp(style,"mvv/dpd") != 0 && narg < 3) + error->all(FLERR,"Illegal fix mvv/dpd command"); + + verlet = 0.5; + if(narg > 3) verlet = force->numeric(FLERR,arg[3]); + + dynamic_group_allow = 1; + time_integrate = 1; +} + +/* ---------------------------------------------------------------------- */ + +int FixMvvDPD::setmask() +{ + int mask = 0; + mask |= INITIAL_INTEGRATE; + mask |= FINAL_INTEGRATE; + return mask; +} + +/* ---------------------------------------------------------------------- */ + +void FixMvvDPD::init() +{ + dtv = update->dt; + dtf = 0.5 * update->dt * force->ftm2v; +} + +/* ---------------------------------------------------------------------- + allow for both per-type and per-atom mass +------------------------------------------------------------------------- */ + +void FixMvvDPD::initial_integrate(int vflag) +{ + double dtfm; + double **x = atom->x; + double **v = atom->v; + double **f = atom->f; + double **vest = atom->vest; + double *rmass = atom->rmass; + double *mass = atom->mass; + int *type = atom->type; + int *mask = atom->mask; + int nlocal = atom->nlocal; + if (igroup == atom->firstgroup) nlocal = atom->nfirst; + + for (int i = 0; i < nlocal; i++) + if (mask[i] & groupbit) { + if (rmass) dtfm = dtf / rmass[i]; + else dtfm = dtf / mass[type[i]]; + + vest[i][0] = v[i][0] + dtfm * f[i][0]; + vest[i][1] = v[i][1] + dtfm * f[i][1]; + vest[i][2] = v[i][2] + dtfm * f[i][2]; + + x[i][0] += dtv * vest[i][0]; + x[i][1] += dtv * vest[i][1]; + x[i][2] += dtv * vest[i][2]; + v[i][0] += 2.0 * verlet * dtfm * f[i][0]; + v[i][1] += 2.0 * verlet * dtfm * f[i][1]; + v[i][2] += 2.0 * verlet * dtfm * f[i][2]; + } +} + +/* ---------------------------------------------------------------------- */ + +void FixMvvDPD::final_integrate() +{ + double dtfm; + double **v = atom->v; + double **f = atom->f; + double **vest = atom->vest; + double *rmass = atom->rmass; + double *mass = atom->mass; + int *type = atom->type; + int *mask = atom->mask; + int nlocal = atom->nlocal; + if (igroup == atom->firstgroup) nlocal = atom->nfirst; + + for (int i = 0; i < nlocal; i++) + if (mask[i] & groupbit) { + if (rmass) dtfm = dtf / rmass[i]; + else dtfm = dtf / mass[type[i]]; + + v[i][0] = vest[i][0] + dtfm * f[i][0]; + v[i][1] = vest[i][1] + dtfm * f[i][1]; + v[i][2] = vest[i][2] + dtfm * f[i][2]; + } +} + +/* ---------------------------------------------------------------------- */ + +void FixMvvDPD::reset_dt() +{ + dtv = update->dt; + dtf = 0.5 * update->dt * force->ftm2v; +} diff --git a/src/USER-MESO/fix_mvv_dpd.h b/src/USER-MESO/fix_mvv_dpd.h new file mode 100644 index 0000000000000000000000000000000000000000..86cc79485fa32e8c4c422a9d9df0cc57027973ae --- /dev/null +++ b/src/USER-MESO/fix_mvv_dpd.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 + + 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(mvv/dpd,FixMvvDPD) + +#else + +#ifndef LMP_FIX_MVV_DPD_H +#define LMP_FIX_MVV_DPD_H + +#include "fix.h" + +namespace LAMMPS_NS { + +class FixMvvDPD : public Fix { + public: + FixMvvDPD(class LAMMPS *, int, char **); + virtual ~FixMvvDPD() {} + int setmask(); + virtual void init(); + virtual void initial_integrate(int); + virtual void final_integrate(); + virtual void reset_dt(); + + protected: + double dtv, dtf; + double verlet; +}; + +} + +#endif +#endif diff --git a/src/USER-MESO/fix_mvv_edpd.cpp b/src/USER-MESO/fix_mvv_edpd.cpp new file mode 100644 index 0000000000000000000000000000000000000000..fe801d6d36cf80ae85ed71acee7f1940169f1c5b --- /dev/null +++ b/src/USER-MESO/fix_mvv_edpd.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 + + 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. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + This is a time integrator for position, velocity and temperature (x, + v and edpd_T) using the modified velocity-Verlet (MVV) algorithm. + Setting verlet = 0.5 recovers the standard velocity-Verlet algorithm. + + Contributing author: Zhen Li (Brown University) + Email: zhen_li@brown.edu + + Please cite the related publication: + Z. Li, Y.-H. Tang, H. Lei, B. Caswell and G.E. Karniadakis. "Energy- + conserving dissipative particle dynamics with temperature-dependent + properties". Journal of Computational Physics, 2014, 265: 113-127. + + Z. Li, Y.-H. Tang , X. Li and G.E. Karniadakis. "Mesoscale modeling of + phase transition dynamics of thermoresponsive polymers". Chemical + Communications, 2015, 51: 11038-11040. +------------------------------------------------------------------------- */ + +#include +#include +#include "fix_mvv_edpd.h" +#include "atom.h" +#include "force.h" +#include "update.h" +#include "respa.h" +#include "error.h" + +using namespace LAMMPS_NS; +using namespace FixConst; + +/* ---------------------------------------------------------------------- */ + +FixMvvEDPD::FixMvvEDPD(LAMMPS *lmp, int narg, char **arg) : + Fix(lmp, narg, arg) +{ + if (strcmp(style,"mvv/edpd") != 0 && narg < 3) + error->all(FLERR,"Illegal fix mvv/edpd command"); + + verlet = 0.5; + if(narg > 3) verlet = force->numeric(FLERR,arg[3]); + + dynamic_group_allow = 1; + time_integrate = 1; +} + +/* ---------------------------------------------------------------------- */ + +int FixMvvEDPD::setmask() +{ + int mask = 0; + mask |= INITIAL_INTEGRATE; + mask |= FINAL_INTEGRATE; + return mask; +} + +/* ---------------------------------------------------------------------- */ + +void FixMvvEDPD::init() +{ + dtv = update->dt; + dtf = 0.5 * update->dt * force->ftm2v; +} + +/* ---------------------------------------------------------------------- + allow for both per-type and per-atom mass +------------------------------------------------------------------------- */ + +void FixMvvEDPD::initial_integrate(int vflag) +{ + double dtfm,dtT; + // update v and x and cc of atoms in group + + double **x = atom->x; + double **v = atom->v; + double **f = atom->f; + double *edpd_temp = atom->edpd_temp; + double *edpd_flux = atom->edpd_flux; + double *edpd_cv = atom->edpd_cv; + double **vest = atom->vest; + double *rmass = atom->rmass; + double *mass = atom->mass; + int *type = atom->type; + int *mask = atom->mask; + int nlocal = atom->nlocal; + if (igroup == atom->firstgroup) nlocal = atom->nfirst; + + for (int i = 0; i < nlocal; i++) + if (mask[i] & groupbit) { + if (rmass) dtfm = dtf / rmass[i]; + else dtfm = dtf / mass[type[i]]; + + dtT = 0.5 * dtv / edpd_cv[i]; + + vest[i][0] = v[i][0] + dtfm * f[i][0]; + vest[i][1] = v[i][1] + dtfm * f[i][1]; + vest[i][2] = v[i][2] + dtfm * f[i][2]; + vest[i][3] = edpd_temp[i] + dtT * edpd_flux[i]; + + x[i][0] += dtv * vest[i][0]; + x[i][1] += dtv * vest[i][1]; + x[i][2] += dtv * vest[i][2]; + v[i][0] += 2.0 * verlet * dtfm * f[i][0]; + v[i][1] += 2.0 * verlet * dtfm * f[i][1]; + v[i][2] += 2.0 * verlet * dtfm * f[i][2]; + edpd_temp[i] += 2.0 * verlet * dtT * edpd_flux[i]; + } +} + +/* ---------------------------------------------------------------------- */ + +void FixMvvEDPD::final_integrate() +{ + double dtfm, dtT; + + // update v and edpd_temp of atoms in group + + double **v = atom->v; + double **f = atom->f; + double *edpd_temp = atom->edpd_temp; + double *edpd_flux = atom->edpd_flux; + double *edpd_cv = atom->edpd_cv; + double **vest = atom->vest; + double *rmass = atom->rmass; + double *mass = atom->mass; + int *type = atom->type; + int *mask = atom->mask; + int nlocal = atom->nlocal; + if (igroup == atom->firstgroup) nlocal = atom->nfirst; + + for (int i = 0; i < nlocal; i++) + if (mask[i] & groupbit) { + if (rmass) dtfm = dtf / rmass[i]; + else dtfm = dtf / mass[type[i]]; + + dtT = 0.5 * dtv / edpd_cv[i]; + + v[i][0] = vest[i][0] + dtfm * f[i][0]; + v[i][1] = vest[i][1] + dtfm * f[i][1]; + v[i][2] = vest[i][2] + dtfm * f[i][2]; + edpd_temp[i] = vest[i][3] + dtT * edpd_flux[i]; + } +} + +/* ---------------------------------------------------------------------- */ + +void FixMvvEDPD::reset_dt() +{ + dtv = update->dt; + dtf = 0.5 * update->dt * force->ftm2v; +} diff --git a/src/USER-MESO/fix_mvv_edpd.h b/src/USER-MESO/fix_mvv_edpd.h new file mode 100644 index 0000000000000000000000000000000000000000..0d9c5f195ac3a7290be2f349a188c0326972d5d2 --- /dev/null +++ b/src/USER-MESO/fix_mvv_edpd.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 + + 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(mvv/edpd,FixMvvEDPD) + +#else + +#ifndef LMP_FIX_MVV_EDPD_H +#define LMP_FIX_MVV_EDPD_H + +#include "fix.h" + +namespace LAMMPS_NS { + +class FixMvvEDPD : public Fix { + public: + FixMvvEDPD(class LAMMPS *, int, char **); + virtual ~FixMvvEDPD() {} + int setmask(); + virtual void init(); + virtual void initial_integrate(int); + virtual void final_integrate(); + virtual void reset_dt(); + + protected: + double dtv, dtf; + double verlet; +}; + +} + +#endif +#endif diff --git a/src/USER-MESO/fix_mvv_tdpd.cpp b/src/USER-MESO/fix_mvv_tdpd.cpp new file mode 100644 index 0000000000000000000000000000000000000000..382ce9033abee6be19caf3be59e4895d0c8ab61f --- /dev/null +++ b/src/USER-MESO/fix_mvv_tdpd.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. +------------------------------------------------------------------------- */ + +/* ---------------------------------------------------------------------- + This is a time integrator for position, velocity and concentration (x, + v and cc) using the modified velocity-Verlet (MVV) algorithm. + Setting verlet = 0.5 recovers the standard velocity-Verlet algorithm. + + Contributing author: Zhen Li (Brown University) + Email: zhen_li@brown.edu + + Please cite the related publication: + Z. Li, A. Yazdani, A. Tartakovsky and G.E. Karniadakis. "Transport + dissipative particle dynamics model for mesoscopic advection-diffusion + -reaction problems". The Journal of Chemical Physics, 2015, 143: 014101. +------------------------------------------------------------------------- */ + +#include +#include +#include "fix_mvv_tdpd.h" +#include "atom.h" +#include "force.h" +#include "update.h" +#include "respa.h" +#include "error.h" + +using namespace LAMMPS_NS; +using namespace FixConst; + +/* ---------------------------------------------------------------------- */ + +FixMvvTDPD::FixMvvTDPD(LAMMPS *lmp, int narg, char **arg) : + Fix(lmp, narg, arg) +{ + if (strcmp(style,"tdpd/verlet") != 0 && narg < 3) + error->all(FLERR,"Illegal fix mvv/tdpd command"); + + verlet = 0.5; + if(narg > 3) verlet = force->numeric(FLERR,arg[3]); + + cc_species = atom->cc_species; + + dynamic_group_allow = 1; + time_integrate = 1; +} + +/* ---------------------------------------------------------------------- */ + +int FixMvvTDPD::setmask() +{ + int mask = 0; + mask |= INITIAL_INTEGRATE; + mask |= FINAL_INTEGRATE; + return mask; +} + +/* ---------------------------------------------------------------------- */ + +void FixMvvTDPD::init() +{ + dtv = update->dt; + dtf = 0.5 * update->dt * force->ftm2v; +} + +/* ---------------------------------------------------------------------- + allow for both per-type and per-atom mass +------------------------------------------------------------------------- */ + +void FixMvvTDPD::initial_integrate(int vflag) +{ + double dtfm; + // update v and x and cc of atoms in group + + double **x = atom->x; + double **v = atom->v; + double **f = atom->f; + double **cc = atom->cc; + double **cc_flux = atom->cc_flux; + double **vest = atom->vest; + double *rmass = atom->rmass; + double *mass = atom->mass; + int *type = atom->type; + int *mask = atom->mask; + int nlocal = atom->nlocal; + if (igroup == atom->firstgroup) nlocal = atom->nfirst; + + for (int i = 0; i < nlocal; i++) + if (mask[i] & groupbit) { + if (rmass) dtfm = dtf / rmass[i]; + else dtfm = dtf / mass[type[i]]; + + vest[i][0] = v[i][0] + dtfm * f[i][0]; + vest[i][1] = v[i][1] + dtfm * f[i][1]; + vest[i][2] = v[i][2] + dtfm * f[i][2]; + + x[i][0] += dtv * vest[i][0]; + x[i][1] += dtv * vest[i][1]; + x[i][2] += dtv * vest[i][2]; + v[i][0] += 2.0 * verlet * dtfm * f[i][0]; + v[i][1] += 2.0 * verlet * dtfm * f[i][1]; + v[i][2] += 2.0 * verlet * dtfm * f[i][2]; + for(int k = 0; k < cc_species; k++) + cc[i][k] += 0.5 * dtv * cc_flux[i][k]; + } +} + +/* ---------------------------------------------------------------------- */ + +void FixMvvTDPD::final_integrate() +{ + double dtfm; + + // update v of atoms in group + + double **v = atom->v; + double **f = atom->f; + double **cc = atom->cc; + double **cc_flux = atom->cc_flux; + double **vest = atom->vest; + double *rmass = atom->rmass; + double *mass = atom->mass; + int *type = atom->type; + int *mask = atom->mask; + int nlocal = atom->nlocal; + if (igroup == atom->firstgroup) nlocal = atom->nfirst; + + for (int i = 0; i < nlocal; i++) + if (mask[i] & groupbit) { + if (rmass) dtfm = dtf / rmass[i]; + else dtfm = dtf / mass[type[i]]; + + v[i][0] = vest[i][0] + dtfm * f[i][0]; + v[i][1] = vest[i][1] + dtfm * f[i][1]; + v[i][2] = vest[i][2] + dtfm * f[i][2]; + for(int k = 0; k < cc_species; k++) + cc[i][k] += 0.5 * dtv * cc_flux[i][k]; + } +} + +/* ---------------------------------------------------------------------- */ + +void FixMvvTDPD::reset_dt() +{ + dtv = update->dt; + dtf = 0.5 * update->dt * force->ftm2v; +} diff --git a/src/USER-MESO/fix_mvv_tdpd.h b/src/USER-MESO/fix_mvv_tdpd.h new file mode 100644 index 0000000000000000000000000000000000000000..7adb23af694e423e7dcdddc8c64b296513f7819c --- /dev/null +++ b/src/USER-MESO/fix_mvv_tdpd.h @@ -0,0 +1,46 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#ifdef FIX_CLASS + +FixStyle(mvv/tdpd,FixMvvTDPD) + +#else + +#ifndef LMP_FIX_MVV_TDPD_H +#define LMP_FIX_MVV_TDPD_H + +#include "fix.h" + +namespace LAMMPS_NS { + +class FixMvvTDPD : public Fix { + public: + FixMvvTDPD(class LAMMPS *, int, char **); + virtual ~FixMvvTDPD() {} + int setmask(); + virtual void init(); + virtual void initial_integrate(int); + virtual void final_integrate(); + virtual void reset_dt(); + + protected: + double dtv, dtf; + double verlet; + int cc_species; +}; + +} + +#endif +#endif diff --git a/src/USER-MESO/fix_tdpd_source.cpp b/src/USER-MESO/fix_tdpd_source.cpp new file mode 100644 index 0000000000000000000000000000000000000000..3dfeba47878ca7c9afbc26df1f5f5ab68d73b3df --- /dev/null +++ b/src/USER-MESO/fix_tdpd_source.cpp @@ -0,0 +1,120 @@ +/* ---------------------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#include +#include +#include "fix_tdpd_source.h" +#include "atom.h" +#include "comm.h" +#include "update.h" +#include "modify.h" +#include "domain.h" +#include "lattice.h" +#include "input.h" +#include "variable.h" +#include "error.h" +#include "force.h" + +using namespace LAMMPS_NS; +using namespace FixConst; + +/* ---------------------------------------------------------------------- */ + +FixTDPDSource::FixTDPDSource(LAMMPS *lmp, int narg, char **arg) : + Fix(lmp, narg, arg) +{ + if (strcmp(style,"tdpd/source") != 0 && narg < 4) + error->all(FLERR,"Illegal fix tdpd/source command"); + + int iarg = 3; + cc_index = force->inumeric(FLERR,arg[iarg++]); + + if (strcmp(arg[iarg],"sphere") == 0) option = 0; + else if (strcmp(arg[iarg],"cuboid") == 0) option = 1; + else error->all(FLERR,"Illegal fix tdpd/source command"); + iarg++; + + if(option == 0){ + if (narg != 10 ) error->all(FLERR,"Illegal fix tdpd/source command (5 args for sphere)"); + center[0] = force->numeric(FLERR,arg[iarg++]); + center[1] = force->numeric(FLERR,arg[iarg++]); + center[2] = force->numeric(FLERR,arg[iarg++]); + radius = force->numeric(FLERR,arg[iarg++]); + value = force->numeric(FLERR,arg[iarg++]); + } + else if(option == 1){ + if (narg != 12 ) error->all(FLERR,"Illegal fix tdpd/edpd command (7 args for cuboid)"); + center[0] = force->numeric(FLERR,arg[iarg++]); + center[1] = force->numeric(FLERR,arg[iarg++]); + center[2] = force->numeric(FLERR,arg[iarg++]); + dLx = force->numeric(FLERR,arg[iarg++]); + dLy = force->numeric(FLERR,arg[iarg++]); + dLz = force->numeric(FLERR,arg[iarg++]); + value = force->numeric(FLERR,arg[iarg++]); + } + else error->all(FLERR,"Illegal fix tdpd/source command"); +} + +/* ---------------------------------------------------------------------- */ + +FixTDPDSource::~FixTDPDSource() +{ +} + +/* ---------------------------------------------------------------------- */ + +int FixTDPDSource::setmask() +{ + int mask = 0; + mask |= POST_FORCE; + return mask; +} + +/* ---------------------------------------------------------------------- */ + +void FixTDPDSource::init() +{ +} + +/* ---------------------------------------------------------------------- */ + +void FixTDPDSource::post_force(int vflag) +{ + double **x = atom->x; + double **cc_flux = atom->cc_flux; + int *mask = atom->mask; + int nlocal = atom->nlocal; + + double drx, dry, drz, rsq; + double radius_sq = radius*radius*radius; + + for (int i = 0; i < nlocal; i++) { + if (mask[i] & groupbit) { + if(option == 0){ + drx = x[i][0] - center[0]; + dry = x[i][1] - center[1]; + drz = x[i][2] - center[2]; + rsq = drx*drx + dry*dry + drz*drz; + if(rsq < radius_sq) + cc_flux[i][cc_index-1] += value; + } + else if(option == 1){ + drx = x[i][0] - center[0]; + dry = x[i][1] - center[1]; + drz = x[i][2] - center[2]; + if(abs(drx) <= 0.5*dLx && abs(dry) <= 0.5*dLy && abs(drz) <= 0.5*dLz) + cc_flux[i][cc_index-1] += value; + } + } + } +} diff --git a/src/USER-MESO/fix_tdpd_source.h b/src/USER-MESO/fix_tdpd_source.h new file mode 100644 index 0000000000000000000000000000000000000000..302fe820900371fab5c50d8ac42c7cd0b59ef4ce --- /dev/null +++ b/src/USER-MESO/fix_tdpd_source.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 + + 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(tdpd/source,FixTDPDSource) + +#else + +#ifndef LMP_FIX_TDPDSOURCE_H +#define LMP_FIX_TDPDSOURCE_H + +#include "fix.h" + +namespace LAMMPS_NS { + +class FixTDPDSource : public Fix { + public: + FixTDPDSource(class LAMMPS *, int, char **); + ~FixTDPDSource(); + int setmask(); + void init(); + void post_force(int); + + protected: + int option; + int cc_index; + double center[3], radius, dLx, dLy, dLz; + double value; +}; + +} + +#endif +#endif diff --git a/src/USER-MESO/pair_edpd.cpp b/src/USER-MESO/pair_edpd.cpp new file mode 100644 index 0000000000000000000000000000000000000000..c1c100db43ce71395c5cc5cea16fc5b93acc979d --- /dev/null +++ b/src/USER-MESO/pair_edpd.cpp @@ -0,0 +1,551 @@ +/* ---------------------------------------------------------------------- + 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: Zhen Li (Brown University) + Email: zhen_li@brown.edu +------------------------------------------------------------------------- */ + +#include +#include +#include +#include "pair_edpd.h" +#include "atom.h" +#include "atom_vec.h" +#include "comm.h" +#include "update.h" +#include "force.h" +#include "neighbor.h" +#include "neigh_list.h" +#include "random_mars.h" +#include "citeme.h" +#include "memory.h" +#include "error.h" +#include +#include + +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 + +static const char cite_pair_edpd[] = + "pair edpd command:\n\n" + "@Article{ZLi2014_JCP,\n" + " author = {Li, Z. and Tang, Y.-H. and Lei, H. and Caswell, B. and Karniadakis, G.E.},\n" + " title = {Energy-conserving dissipative particle dynamics with temperature-dependent properties},\n" + " journal = {Journal of Computational Physics},\n" + " year = {2014},\n" + " volume = {265},\n" + " pages = {113--127}\n" + "}\n\n" + "@Article{ZLi2015_CC,\n" + " author = {Li, Z. and Tang, Y.-H. and Li, X. and Karniadakis, G.E.},\n" + " title = {Mesoscale modeling of phase transition dynamics of thermoresponsive polymers},\n" + " journal = {Chemical Communications},\n" + " year = {2015},\n" + " volume = {51},\n" + " pages = {11038--11040}\n" + "}\n\n"; +; + +/* ---------------------------------------------------------------------- */ + +PairEDPD::PairEDPD(LAMMPS *lmp) : Pair(lmp) +{ + if (lmp->citeme) lmp->citeme->add(cite_pair_edpd); + writedata = 1; + random = NULL; + randomT = NULL; +} + +/* ---------------------------------------------------------------------- */ + +PairEDPD::~PairEDPD() +{ + if (allocated) { + memory->destroy(setflag); + memory->destroy(cutsq); + + memory->destroy(cut); + memory->destroy(cutT); + + memory->destroy(a0); + memory->destroy(gamma); + memory->destroy(power); + memory->destroy(kappa); + memory->destroy(powerT); + } + if (power_flag) memory->destroy(sc); + if (kappa_flag) memory->destroy(kc); + + if (random) delete random; + if (randomT) delete randomT; +} + +/* ---------------------------------------------------------------------- */ + +void PairEDPD::compute(int eflag, int vflag) +{ + double evdwl = 0.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 *T = atom->edpd_temp; + double *Q = atom->edpd_flux; + double *cv = atom->edpd_cv; + int *type = atom->type; + double *mass = atom->mass; + int nlocal = atom->nlocal; + double *special_lj = force->special_lj; + int newton_pair = force->newton_pair; + double dtinvsqrt = 1.0/sqrt(update->dt); + double kboltz = 1.0; + + int inum = list->inum; + int *ilist = list->ilist; + int *numneigh = list->numneigh; + int **firstneigh = list->firstneigh; + + // loop over neighbors of my atoms + for (int ii = 0; ii < inum; ii++) { + int i = ilist[ii]; + double xtmp = x[i][0]; + double ytmp = x[i][1]; + double ztmp = x[i][2]; + double vxtmp = v[i][0]; + double vytmp = v[i][1]; + double vztmp = v[i][2]; + int itype = type[i]; + int *jlist = firstneigh[i]; + int jnum = numneigh[i]; + + for (int jj = 0; jj < jnum; jj++) { + int j = jlist[jj]; + double factor_dpd = special_lj[sbmask(j)]; + j &= NEIGHMASK; + + double delx = xtmp - x[j][0]; + double dely = ytmp - x[j][1]; + double delz = ztmp - x[j][2]; + double rsq = delx*delx + dely*dely + delz*delz; + int jtype = type[j]; + + if (rsq < cutsq[itype][jtype]) { + double r = sqrt(rsq); + if (r < EPSILON) continue; + double rinv = 1.0/r; + double delvx = vxtmp - v[j][0]; + double delvy = vytmp - v[j][1]; + double delvz = vztmp - v[j][2]; + double dot = delx*delvx + dely*delvy + delz*delvz; + double vijeij = dot*rinv; + double randnum = random->gaussian(); + + double T_ij=0.5*(T[i]+T[j]); + double T_pow[4]; + T_pow[0] = T_ij - 1.0; + T_pow[1] = T_pow[0]*T_pow[0]; + T_pow[2] = T_pow[0]*T_pow[1]; + T_pow[3] = T_pow[0]*T_pow[2]; + + double power_d = power[itype][jtype]; + if(power_flag){ + double factor = 1.0; + for(int k = 0; k < 4; k++) + factor += sc[itype][jtype][k]*T_pow[k]; + power_d *= factor; + } + + power_d = MAX(0.01,power_d); + double wc = 1.0 - r/cut[itype][jtype]; + wc = MAX(0.0,MIN(1.0,wc)); + double wr = pow(wc, 0.5*power_d); + + double GammaIJ = gamma[itype][jtype]; + double SigmaIJ = 4.0*GammaIJ*kboltz*T[i]*T[j]/(T[i]+T[j]); + SigmaIJ = sqrt(SigmaIJ); + + double fpair = a0[itype][jtype]*T_ij*wc; + fpair -= GammaIJ *wr*wr *dot*rinv; + fpair += SigmaIJ * wr *randnum * dtinvsqrt; + fpair *= factor_dpd*rinv; + + f[i][0] += delx*fpair; + f[i][1] += dely*fpair; + f[i][2] += delz*fpair; + + // heat transfer + double dQc,dQd,dQr; + if( r < cutT[itype][jtype]) { + double wrT = 1.0 - r/cutT[itype][jtype]; + wrT = MAX(0.0,MIN(1.0,wrT)); + wrT = pow(wrT, 0.5*powerT[itype][jtype]); + double randnumT = randomT->gaussian(); + randnumT = MAX(-5.0,MIN(randnum,5.0)); + + double kappaT = kappa[itype][jtype]; + if(kappa_flag) { + double factor = 1.0; + for(int k = 0; k < 4; k++) + factor += kc[itype][jtype][k]*T_pow[k]; + kappaT *= factor; + } + + double kij = cv[i]*cv[j]*kappaT * T_ij*T_ij; + double alphaij = sqrt(2.0*kboltz*kij); + + dQc = kij * wrT*wrT * ( T[j] - T[i] )/(T[i]*T[j]); + dQd = wr*wr*( GammaIJ * vijeij*vijeij - SigmaIJ*SigmaIJ/mass[itype] ) - SigmaIJ * wr *vijeij *randnum; + dQd /= (cv[i]+cv[j]); + dQr = alphaij * wrT * dtinvsqrt * randnumT; + Q[i] += (dQc + dQd + dQr ); + } + //----------------------------------------------------------- + + if (newton_pair || j < nlocal) { + f[j][0] -= delx*fpair; + f[j][1] -= dely*fpair; + f[j][2] -= delz*fpair; + Q[j] -= ( dQc - dQd + dQr ); + } + + if (eflag) { + evdwl = 0.5*a0[itype][jtype]*T_ij*cut[itype][jtype] * wc*wc; + evdwl *= factor_dpd; + } + + 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 PairEDPD::allocate() +{ + int i,j; + allocated = 1; + int n = atom->ntypes; + + memory->create(setflag,n+1,n+1,"pair:setflag"); + for (i = 1; i <= n; i++) + for (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(cutT,n+1,n+1,"pair:cutT"); + memory->create(a0,n+1,n+1,"pair:a0"); + memory->create(gamma,n+1,n+1,"pair:gamma"); + memory->create(power,n+1,n+1,"pair:power"); + memory->create(kappa,n+1,n+1,"pair:kappa"); + memory->create(powerT,n+1,n+1,"pair:powerT"); + +} + +/* ---------------------------------------------------------------------- + global settings +------------------------------------------------------------------------- */ + +void PairEDPD::settings(int narg, char **arg) +{ + if (narg != 2) error->all(FLERR,"Illegal pair_style command"); + + cut_global = force->numeric(FLERR,arg[0]); + seed = force->inumeric(FLERR,arg[1]); + + // initialize Marsaglia RNG with processor-unique seed + + if (seed <= 0 ) { + struct timespec time; + clock_gettime( CLOCK_REALTIME, &time ); + seed = time.tv_nsec; // if seed is non-positive, get the current time as the seed + } + delete random; + random = new RanMars(lmp,(seed + comm->me) % 900000000); + randomT = new RanMars(lmp,(2*seed + comm->me) % 900000000); + + // 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 PairEDPD::coeff(int narg, char **arg) +{ + if (narg < 9) + error->all(FLERR,"Incorrect args for pair edpd coefficients"); + if (!allocated) allocate(); + + int ilo,ihi,jlo,jhi; + force->bounds(FLERR,arg[0],atom->ntypes,ilo,ihi); + force->bounds(FLERR,arg[1],atom->ntypes,jlo,jhi); + + double a0_one = force->numeric(FLERR,arg[2]); + double gamma_one = force->numeric(FLERR,arg[3]); + double power_one = force->numeric(FLERR,arg[4]); + double cut_one = force->numeric(FLERR,arg[5]); + double kappa_one = force->numeric(FLERR,arg[6]); + double powerT_one= force->numeric(FLERR,arg[7]); + double cutT_one = force->numeric(FLERR,arg[8]); + + int iarg = 9; + power_flag = kappa_flag = 0; + double sc_one[4], kc_one[4]; + int n = atom->ntypes; + while (iarg < narg) { + if (strcmp(arg[iarg],"power") == 0) { + if (iarg+5 > narg) error->all(FLERR,"Illegal pair edpd coefficients"); + for (int i = 0; i < 4; i++) + sc_one[i] = force->numeric(FLERR,arg[iarg+i+1]); + iarg += 5; + power_flag = 1; + memory->create(sc,n+1,n+1,4,"pair:sc"); + } else if (strcmp(arg[iarg],"kappa") == 0) { + if (iarg+5 > narg) error->all(FLERR,"Illegal pair edpd coefficients"); + for (int i = 0; i < 4; i++) + kc_one[i] = force->numeric(FLERR,arg[iarg+i+1]); + iarg += 5; + kappa_flag = 1; + memory->create(kc,n+1,n+1,4,"pair:kc"); + } else error->all(FLERR,"Illegal pair edpd coefficients"); + } + + int count = 0; + for (int i = ilo; i <= ihi; i++) + for (int j = MAX(jlo,i); j <= jhi; j++) { + a0[i][j] = a0_one; + gamma[i][j] = gamma_one; + power[i][j] = power_one; + cut[i][j] = cut_one; + kappa[i][j] = kappa_one; + powerT[i][j]= powerT_one; + cutT[i][j] = cutT_one; + + if(power_flag) + for (int k = 0; k < 4; k++) + sc[i][j][k] = sc_one[k]; + + if(kappa_flag) + for (int k = 0; k < 4; k++) + kc[i][j][k] = kc_one[k]; + + setflag[i][j] = 1; + count++; + } + + if (count == 0) error->all(FLERR,"Incorrect args for pair coefficients"); +} + +/* ---------------------------------------------------------------------- + init specific to this pair style +------------------------------------------------------------------------- */ + +void PairEDPD::init_style() +{ + if (comm->ghost_velocity == 0) + error->all(FLERR,"Pair edpd 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(FLERR, + "Pair tdpd needs newton pair on for momentum conservation"); + + neighbor->request(this,instance_me); +} + +/* ---------------------------------------------------------------------- + init for one type pair i,j and corresponding j,i +------------------------------------------------------------------------- */ + +double PairEDPD::init_one(int i, int j) +{ + if (setflag[i][j] == 0) error->all(FLERR,"All pair coeffs are not set"); + + cut[j][i] = cut[i][j]; + cutT[j][i] = cutT[i][j]; + a0[j][i] = a0[i][j]; + gamma[j][i] = gamma[i][j]; + power[j][i] = power[i][j]; + kappa[j][i] = kappa[i][j]; + powerT[j][i]= powerT[i][j]; + + if(power_flag) + for (int k = 0; k < 4; k++) + sc[j][i][k] = sc[i][j][k]; + + if(kappa_flag) + for (int k = 0; k < 4; k++) + kc[j][i][k] = kc[i][j][k]; + + return cut[i][j]; +} + +/* ---------------------------------------------------------------------- + proc 0 writes to restart file +------------------------------------------------------------------------- */ + +void PairEDPD::write_restart(FILE *fp) +{ + write_restart_settings(fp); + + for (int i = 1; i <= atom->ntypes; i++) + for (int j = i; j <= atom->ntypes; j++) { + fwrite(&setflag[i][j],sizeof(int),1,fp); + if (setflag[i][j]) { + fwrite(&a0[i][j],sizeof(double),1,fp); + fwrite(&gamma[i][j],sizeof(double),1,fp); + fwrite(&power[i][j],sizeof(double),1,fp); + fwrite(&cut[i][j],sizeof(double),1,fp); + fwrite(&kappa[i][j],sizeof(double),1,fp); + fwrite(&powerT[i][j],sizeof(double),1,fp); + fwrite(&cutT[i][j],sizeof(double),1,fp); + if(power_flag) + for (int k = 0; k < 4; k++) + fwrite(&sc[i][j][k],sizeof(double),1,fp); + + if(kappa_flag) + for (int k = 0; k < 4; k++) + fwrite(&kc[i][j][k],sizeof(double),1,fp); + } + } +} + +/* ---------------------------------------------------------------------- + proc 0 reads from restart file, bcasts +------------------------------------------------------------------------- */ + +void PairEDPD::read_restart(FILE *fp) +{ + read_restart_settings(fp); + + allocate(); + + int me = comm->me; + for (int i = 1; i <= atom->ntypes; i++) + for (int 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(&a0[i][j],sizeof(double),1,fp); + fread(&gamma[i][j],sizeof(double),1,fp); + fread(&power[i][j],sizeof(double),1,fp); + fread(&cut[i][j],sizeof(double),1,fp); + fread(&kappa[i][j],sizeof(double),1,fp); + fread(&powerT[i][j],sizeof(double),1,fp); + fread(&cutT[i][j],sizeof(double),1,fp); + if(power_flag) + for (int k = 0; k < 4; k++) + fread(&sc[i][j][k],sizeof(double),1,fp); + + if(kappa_flag) + for (int k = 0; k < 4; k++) + fread(&kc[i][j][k],sizeof(double),1,fp); + } + MPI_Bcast(&a0[i][j],1,MPI_DOUBLE,0,world); + MPI_Bcast(&gamma[i][j],1,MPI_DOUBLE,0,world); + MPI_Bcast(&power[i][j],1,MPI_DOUBLE,0,world); + MPI_Bcast(&cut[i][j],1,MPI_DOUBLE,0,world); + MPI_Bcast(&kappa[i][j],1,MPI_DOUBLE,0,world); + MPI_Bcast(&powerT[i][j],1,MPI_DOUBLE,0,world); + MPI_Bcast(&cutT[i][j],1,MPI_DOUBLE,0,world); + if(power_flag) + for (int k = 0; k < 4; k++) + MPI_Bcast(&sc[i][j][k],1,MPI_DOUBLE,0,world); + + if(kappa_flag) + for (int k = 0; k < 4; k++) + MPI_Bcast(&kc[i][j][k],1,MPI_DOUBLE,0,world); + } + } +} + +/* ---------------------------------------------------------------------- + proc 0 writes to restart file +------------------------------------------------------------------------- */ + +void PairEDPD::write_restart_settings(FILE *fp) +{ + fwrite(&cut_global,sizeof(double),1,fp); + fwrite(&seed,sizeof(int),1,fp); + fwrite(&mix_flag,sizeof(int),1,fp); +} + +/* ---------------------------------------------------------------------- + proc 0 reads from restart file, bcasts +------------------------------------------------------------------------- */ + +void PairEDPD::read_restart_settings(FILE *fp) +{ + if (comm->me == 0) { + fread(&cut_global,sizeof(double),1,fp); + fread(&seed,sizeof(int),1,fp); + fread(&mix_flag,sizeof(int),1,fp); + } + MPI_Bcast(&cut_global,1,MPI_DOUBLE,0,world); + MPI_Bcast(&seed,1,MPI_INT,0,world); + MPI_Bcast(&mix_flag,1,MPI_INT,0,world); + + // initialize Marsaglia RNG with processor-unique seed + // same seed that pair_style command initially specified + + if (random) delete random; + random = new RanMars(lmp,seed + comm->me); + if (randomT) delete randomT; + randomT = new RanMars(lmp,seed + comm->me); +} + +/* ---------------------------------------------------------------------- */ + +double PairEDPD::single(int i, int j, int itype, int jtype, double rsq, + double factor_coul, double factor_dpd, double &fforce) +{ + double r,rinv,wc,phi; + double *T = atom->edpd_temp; + + r = sqrt(rsq); + if (r < EPSILON) { + fforce = 0.0; + return 0.0; + } + double T_ij = 0.5*(T[i]+T[j]); + rinv = 1.0/r; + wc = 1.0 - r/cut[itype][jtype]; + fforce = a0[itype][jtype]*T_ij*wc*factor_dpd*rinv; + + phi = 0.5*a0[itype][jtype]*T_ij*cut[itype][jtype]*wc*wc; + return factor_dpd*phi; +} diff --git a/src/USER-MESO/pair_edpd.h b/src/USER-MESO/pair_edpd.h new file mode 100644 index 0000000000000000000000000000000000000000..9ab0ad9670c4024841d506b0903f863e5795240e --- /dev/null +++ b/src/USER-MESO/pair_edpd.h @@ -0,0 +1,85 @@ +/* -*- 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(edpd,PairEDPD) + +#else + +#ifndef LMP_PAIR_EDPD_H +#define LMP_PAIR_EDPD_H + +#include "pair.h" + +namespace LAMMPS_NS { + +class PairEDPD : public Pair { + public: + PairEDPD(class LAMMPS *); + virtual ~PairEDPD(); + virtual void compute(int, int); + virtual void settings(int, char **); + virtual void coeff(int, char **); + void init_style(); + double init_one(int, int); + virtual void write_restart(FILE *); + virtual void read_restart(FILE *); + virtual void write_restart_settings(FILE *); + virtual void read_restart_settings(FILE *); + double single(int, int, int, int, double, double, double, double &); + + protected: + double cut_global; + int seed; + double **cut,**cutT; + double **a0,**gamma; + double **power; + double **slope; + double **kappa; + double **powerT; + int power_flag, kappa_flag; + double ***sc,***kc; + class RanMars *random; + class RanMars *randomT; + + void allocate(); +}; + +} + +#endif +#endif + +/* ERROR/WARNING messages: + +E: Illegal ... command + +Self-explanatory. Check the input script syntax and compare to the +documentation for the command. You can use -echo screen as a +command-line option when running LAMMPS to see the offending line. + +E: Incorrect args for pair coefficients + +Self-explanatory. Check the input script or data file. + +W: Pair tdpd needs newton pair on for momentum conservation + +Self-explanatory. + +E: All pair coeffs are not set + +All pair coefficients must be set in the data file or by the +pair_coeff command before running a simulation. + +*/ diff --git a/src/USER-MESO/pair_mdpd.cpp b/src/USER-MESO/pair_mdpd.cpp new file mode 100644 index 0000000000000000000000000000000000000000..bf78ea5af705745e59e61c429c50253efd94e871 --- /dev/null +++ b/src/USER-MESO/pair_mdpd.cpp @@ -0,0 +1,425 @@ +/* ---------------------------------------------------------------------- + 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: Zhen Li (Brown University) + Email: zhen_li@brown.edu +------------------------------------------------------------------------- */ + +#include +#include +#include +#include "pair_mdpd.h" +#include "atom.h" +#include "atom_vec.h" +#include "comm.h" +#include "update.h" +#include "force.h" +#include "neighbor.h" +#include "neigh_list.h" +#include "random_mars.h" +#include "citeme.h" +#include "memory.h" +#include "error.h" +#include + +using namespace LAMMPS_NS; + +#define EPSILON 1.0e-10 + +static const char cite_pair_mdpd[] = + "pair mdpd command:\n\n" + "@Article{ZLi2013_POF,\n" + " author = {Li, Z. and Hu, G.H. and Wang, Z.L. and Ma Y.B. and Zhou, Z.W.},\n" + " title = {Three dimensional flow structures in a moving droplet on substrate: a dissipative particle dynamics study},\n" + " journal = {Physics of Fluids},\n" + " year = {2013},\n" + " volume = {25},\n" + " pages = {072103}\n" + "}\n\n"; + +/* ---------------------------------------------------------------------- */ + +PairMDPD::PairMDPD(LAMMPS *lmp) : Pair(lmp) +{ + if (lmp->citeme) lmp->citeme->add(cite_pair_mdpd); + + writedata = 1; + random = NULL; +} + +/* ---------------------------------------------------------------------- */ + +PairMDPD::~PairMDPD() +{ + if (allocated) { + memory->destroy(setflag); + memory->destroy(cutsq); + + memory->destroy(cut); + memory->destroy(cut_r); + memory->destroy(A_att); + memory->destroy(B_rep); + memory->destroy(gamma); + memory->destroy(sigma); + } + if (random) delete random; +} + +/* ---------------------------------------------------------------------- */ + +void PairMDPD::compute(int eflag, int vflag) +{ + int i,j,ii,jj,inum,jnum,itype,jtype; + double xtmp,ytmp,ztmp,delx,dely,delz,evdwl,fpair; + double vxtmp,vytmp,vztmp,delvx,delvy,delvz; + double rsq,r,rinv,dot,wc,wc_r, wr,randnum,factor_dpd; + int *ilist,*jlist,*numneigh,**firstneigh; + double rhoi, rhoj; + + evdwl = 0.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 *rho= atom->rho; + int *type = atom->type; + int nlocal = atom->nlocal; + double *special_lj = force->special_lj; + int newton_pair = force->newton_pair; + double dtinvsqrt = 1.0/sqrt(update->dt); + + 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]; + rhoi = rho[i]; + 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 MDPD 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; + + wc = 1.0 - r/cut[itype][jtype]; + wc_r = 1.0 - r/cut_r[itype][jtype]; + wc_r = MAX(wc_r,0.0); + wr = wc; + + rhoj = rho[j]; + randnum = random->gaussian(); + + // conservative force = A_att * wc + B_rep*(rhoi+rhoj)*wc_r + // drag force = -gamma * wr^2 * (delx dot delv) / r + // random force = sigma * wr * rnd * dtinvsqrt; + + fpair = A_att[itype][jtype]*wc + B_rep[itype][jtype]*(rhoi+rhoj)*wc_r; + fpair -= gamma[itype][jtype]*wr*wr*dot*rinv; + fpair += sigma[itype][jtype]*wr*randnum*dtinvsqrt; + fpair *= factor_dpd*rinv; + + 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) { + // unshifted eng of conservative term: + // eng shifted to 0.0 at cutoff + evdwl = 0.5*A_att[itype][jtype]*cut[itype][jtype] * wr*wr + 0.5*B_rep[itype][jtype]*cut_r[itype][jtype]*(rhoi+rhoj)*wc_r*wc_r; + evdwl *= factor_dpd; + } + + 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 PairMDPD::allocate() +{ + int i,j; + allocated = 1; + int n = atom->ntypes; + + memory->create(setflag,n+1,n+1,"pair:setflag"); + for (i = 1; i <= n; i++) + for (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_r,n+1,n+1,"pair:cut_r"); + memory->create(A_att,n+1,n+1,"pair:A_att"); + memory->create(B_rep,n+1,n+1,"pair:B_rep"); + memory->create(gamma,n+1,n+1,"pair:gamma"); + memory->create(sigma,n+1,n+1,"pair:sigma"); +} + +/* ---------------------------------------------------------------------- + global settings +------------------------------------------------------------------------- */ + +void PairMDPD::settings(int narg, char **arg) +{ + if (narg != 3) error->all(FLERR,"Illegal pair_style command"); + + temperature = force->numeric(FLERR,arg[0]); + cut_global = force->numeric(FLERR,arg[1]); + seed = force->inumeric(FLERR,arg[2]); + + // initialize Marsaglia RNG with processor-unique seed + + if (seed <= 0 ) { + struct timespec time; + clock_gettime( CLOCK_REALTIME, &time ); + seed = time.tv_nsec; // if seed is non-positive, get the current time as the seed + } + delete random; + random = new RanMars(lmp,(seed + comm->me) % 900000000); + + // 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 PairMDPD::coeff(int narg, char **arg) +{ + if(narg != 7 ) error->all(FLERR,"Incorrect args for pair coefficients\n itype jtype A B gamma cutA cutB"); + if (!allocated) allocate(); + + int ilo,ihi,jlo,jhi; + force->bounds(FLERR,arg[0],atom->ntypes,ilo,ihi); + force->bounds(FLERR,arg[1],atom->ntypes,jlo,jhi); + + double A_one = force->numeric(FLERR,arg[2]); + double B_one = force->numeric(FLERR,arg[3]); + double gamma_one = force->numeric(FLERR,arg[4]); + double cut_one = force->numeric(FLERR,arg[5]); + double cut_two = force->numeric(FLERR,arg[6]); + + if(cut_one < cut_two) error->all(FLERR,"Incorrect args for pair coefficients\n cutA should be larger than cutB."); + + int count = 0; + for (int i = ilo; i <= ihi; i++) { + for (int j = MAX(jlo,i); j <= jhi; j++) { + A_att[i][j] = A_one; + B_rep[i][j] = B_one; + gamma[i][j] = gamma_one; + cut[i][j] = cut_one; + cut_r[i][j] = cut_two; + setflag[i][j] = 1; + count++; + } + } + if (count == 0) error->all(FLERR,"Incorrect args for pair coefficients"); +} + +/* ---------------------------------------------------------------------- + init specific to this pair style +------------------------------------------------------------------------- */ + +void PairMDPD::init_style() +{ + if (comm->ghost_velocity == 0) + error->all(FLERR,"Pair mdpd 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(FLERR, + "Pair mdpd needs newton pair on for momentum conservation"); + + neighbor->request(this,instance_me); +} + +/* ---------------------------------------------------------------------- + init for one type pair i,j and corresponding j,i +------------------------------------------------------------------------- */ + +double PairMDPD::init_one(int i, int j) +{ + 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]); + + cut[j][i] = cut[i][j]; + cut_r[j][i] = cut_r[i][j]; + A_att[j][i] = A_att[i][j]; + B_rep[j][i] = B_rep[i][j]; + gamma[j][i] = gamma[i][j]; + sigma[j][i] = sigma[i][j]; + + return cut[i][j]; +} + +/* ---------------------------------------------------------------------- + proc 0 writes to restart file +------------------------------------------------------------------------- */ + +void PairMDPD::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(&A_att[i][j],sizeof(double),1,fp); + fwrite(&B_rep[i][j],sizeof(double),1,fp); + fwrite(&gamma[i][j],sizeof(double),1,fp); + fwrite(&cut[i][j],sizeof(double),1,fp); + fwrite(&cut_r[i][j],sizeof(double),1,fp); + } + } +} + +/* ---------------------------------------------------------------------- + proc 0 reads from restart file, bcasts +------------------------------------------------------------------------- */ + +void PairMDPD::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(&A_att[i][j],sizeof(double),1,fp); + fread(&B_rep[i][j],sizeof(double),1,fp); + fread(&gamma[i][j],sizeof(double),1,fp); + fread(&cut[i][j],sizeof(double),1,fp); + fread(&cut_r[i][j],sizeof(double),1,fp); + } + MPI_Bcast(&A_att[i][j],1,MPI_DOUBLE,0,world); + MPI_Bcast(&B_rep[i][j],1,MPI_DOUBLE,0,world); + MPI_Bcast(&gamma[i][j],1,MPI_DOUBLE,0,world); + MPI_Bcast(&cut[i][j],1,MPI_DOUBLE,0,world); + MPI_Bcast(&cut_r[i][j],1,MPI_DOUBLE,0,world); + } + } +} + +/* ---------------------------------------------------------------------- + proc 0 writes to restart file +------------------------------------------------------------------------- */ + +void PairMDPD::write_restart_settings(FILE *fp) +{ + fwrite(&temperature,sizeof(double),1,fp); + fwrite(&cut_global,sizeof(double),1,fp); + fwrite(&seed,sizeof(int),1,fp); + fwrite(&mix_flag,sizeof(int),1,fp); +} + +/* ---------------------------------------------------------------------- + proc 0 reads from restart file, bcasts +------------------------------------------------------------------------- */ + +void PairMDPD::read_restart_settings(FILE *fp) +{ + if (comm->me == 0) { + fread(&temperature,sizeof(double),1,fp); + fread(&cut_global,sizeof(double),1,fp); + fread(&seed,sizeof(int),1,fp); + fread(&mix_flag,sizeof(int),1,fp); + } + MPI_Bcast(&temperature,1,MPI_DOUBLE,0,world); + MPI_Bcast(&cut_global,1,MPI_DOUBLE,0,world); + MPI_Bcast(&seed,1,MPI_INT,0,world); + MPI_Bcast(&mix_flag,1,MPI_INT,0,world); + + // initialize Marsaglia RNG with processor-unique seed + // same seed that pair_style command initially specified + + if (random) delete random; + random = new RanMars(lmp,seed + comm->me); +} + +/* ---------------------------------------------------------------------- + proc 0 writes to data file +------------------------------------------------------------------------- */ + +void PairMDPD::write_data(FILE *fp) +{ + for (int i = 1; i <= atom->ntypes; i++) + fprintf(fp,"%d %g %g %g\n",i,A_att[i][i],B_rep[i][i],gamma[i][i]); +} + +/* ---------------------------------------------------------------------- + proc 0 writes all pairs to data file +------------------------------------------------------------------------- */ + +void PairMDPD::write_data_all(FILE *fp) +{ + for (int i = 1; i <= atom->ntypes; i++) + for (int j = i; j <= atom->ntypes; j++) + fprintf(fp,"%d %d %g %g %g %g %g\n",i,j,A_att[i][j],B_rep[i][j],gamma[i][j],cut[i][j],cut_r[i][j]); +} + diff --git a/src/USER-MESO/pair_mdpd.h b/src/USER-MESO/pair_mdpd.h new file mode 100644 index 0000000000000000000000000000000000000000..ea0389c7fe54660e2b4ce2840435bd47b485e240 --- /dev/null +++ b/src/USER-MESO/pair_mdpd.h @@ -0,0 +1,84 @@ +/* -*- 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(mdpd,PairMDPD) + +#else + +#ifndef LMP_PAIR_MDPD_H +#define LMP_PAIR_MDPD_H + +#include "pair.h" + +namespace LAMMPS_NS { + +class PairMDPD : public Pair { + public: + PairMDPD(class LAMMPS *); + virtual ~PairMDPD(); + virtual void compute(int, int); + virtual void settings(int, char **); + virtual void coeff(int, char **); + void init_style(); + double init_one(int, int); + virtual void write_restart(FILE *); + virtual void read_restart(FILE *); + virtual void write_restart_settings(FILE *); + virtual void read_restart_settings(FILE *); + virtual void write_data(FILE *); + virtual void write_data_all(FILE *); + + protected: + double cut_global,temperature; + int seed; + double **cut, **cut_r; + double **A_att,**B_rep; + double **gamma,**sigma; + class RanMars *random; + + void allocate(); +}; + +} + +#endif +#endif + +/* ERROR/WARNING messages: + +E: Illegal ... command + +Self-explanatory. Check the input script syntax and compare to the +documentation for the command. You can use -echo screen as a +command-line option when running LAMMPS to see the offending line. + +E: Incorrect args for pair coefficients + +Self-explanatory. Check the input script or data file. + +E: Pair dpd requires ghost atoms store velocity + +Use the comm_modify vel yes command to enable this. + +W: Pair dpd needs newton pair on for momentum conservation + +Self-explanatory. + +E: All pair coeffs are not set + +All pair coefficients must be set in the data file or by the +pair_coeff command before running a simulation. + +*/ diff --git a/src/USER-MESO/pair_mdpd_rhosum.cpp b/src/USER-MESO/pair_mdpd_rhosum.cpp new file mode 100644 index 0000000000000000000000000000000000000000..9c4d6f804f8df883ebbf13c8a7c2c5903e11119d --- /dev/null +++ b/src/USER-MESO/pair_mdpd_rhosum.cpp @@ -0,0 +1,267 @@ +/* ---------------------------------------------------------------------- + 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. + ------------------------------------------------------------------------- */ + +/*----------------------------------------------------------------------- + This is a Child Class PairMDPD for taking care of density summation + before the force calculation. + The code uses 3D Lucy kernel, it can be modified for other kernels. + + Contributing author: Zhen Li (Brown University) +------------------------------------------------------------------------- */ + +#include +#include +#include "pair_mdpd_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; + +/* ---------------------------------------------------------------------- */ + +PairMDPDRhoSum::PairMDPDRhoSum(LAMMPS *lmp) : Pair(lmp) +{ + restartinfo = 0; + + // set comm size needed by this Pair + + comm_forward = 1; + first = 1; +} + +/* ---------------------------------------------------------------------- */ + +PairMDPDRhoSum::~PairMDPDRhoSum() { + if (allocated) { + memory->destroy(setflag); + memory->destroy(cutsq); + + memory->destroy(cut); + } +} + +/* ---------------------------------------------------------------------- + init specific to this pair style + ------------------------------------------------------------------------- */ + +void PairMDPDRhoSum::init_style() { + // need a full neighbor list + int irequest = neighbor->request(this,instance_me); + neighbor->requests[irequest]->half = 0; + neighbor->requests[irequest]->full = 1; +} + +/* ---------------------------------------------------------------------- */ + +void PairMDPDRhoSum::compute(int eflag, int vflag) { + int i, j, ii, jj, jnum, itype, jtype; + double xtmp, ytmp, ztmp, delx, dely, delz; + double r, rsq, 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("mDPD 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 + + // initialize density with zero self-contribution, + for (ii = 0; ii < inum; ii++) { + i = ilist[ii]; + itype = type[i]; + + h = cut[itype][itype]; + // Lucy kernel, 3d + wf = 2.0889086280811262819e0 / (h * h * h); + rho[i] = 0; + } + + // 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; + + // Lucy kernel, 3d + r = sqrt(rsq); + wf = (h - r) * ihsq; + wf = 2.0889086280811262819e0 * (h + 3. * r) * wf * wf * wf * ih; + rho[i] += mass[jtype]*wf; + } + } + } + + // communicate densities + comm->forward_comm_pair(this); +} + +/* ---------------------------------------------------------------------- + allocate all arrays + ------------------------------------------------------------------------- */ + +void PairMDPDRhoSum::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 PairMDPDRhoSum::settings(int narg, char **arg) { + if (narg != 0) + error->all(FLERR,"Illegal number of setting arguments for pair_style mdpd/rhosum"); +} + +/* ---------------------------------------------------------------------- + set coeffs for one or more type pairs + ------------------------------------------------------------------------- */ + +void PairMDPDRhoSum::coeff(int narg, char **arg) { + if (narg != 3) + error->all(FLERR,"Incorrect number of args for mdpd/rhosum coefficients"); + if (!allocated) + allocate(); + + int ilo, ihi, jlo, jhi; + force->bounds(FLERR,arg[0], atom->ntypes, ilo, ihi); + force->bounds(FLERR,arg[1], atom->ntypes, jlo, jhi); + + double cut_one = force->numeric(FLERR,arg[2]); + + int count = 0; + for (int i = ilo; i <= ihi; i++) { + for (int j = MAX(jlo,i); j <= jhi; j++) { + 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 PairMDPDRhoSum::init_one(int i, int j) { + if (setflag[i][j] == 0) { + error->all(FLERR,"All pair mdpd/rhosum coeffs are not set"); + } + + cut[j][i] = cut[i][j]; + + return cut[i][j]; +} + +/* ---------------------------------------------------------------------- */ + +double PairMDPDRhoSum::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 PairMDPDRhoSum::pack_forward_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 m; +} + +/* ---------------------------------------------------------------------- */ + +void PairMDPDRhoSum::unpack_forward_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/USER-MESO/pair_mdpd_rhosum.h b/src/USER-MESO/pair_mdpd_rhosum.h new file mode 100644 index 0000000000000000000000000000000000000000..a972ec7ccf3a2c14888cf8a609a423bc5634e777 --- /dev/null +++ b/src/USER-MESO/pair_mdpd_rhosum.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(mdpd/rhosum,PairMDPDRhoSum) + +#else + +#ifndef LMP_PAIR_MDPD_RHOSUM_H +#define LMP_PAIR_MDPD_RHOSUM_H + +#include "pair.h" + +namespace LAMMPS_NS { + +class PairMDPDRhoSum : public Pair { + public: + PairMDPDRhoSum(class LAMMPS *); + virtual ~PairMDPDRhoSum(); + void init_style(); + 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 &); + int pack_forward_comm(int, int *, double *, int, int *); + void unpack_forward_comm(int, int, double *); + + protected: + double **cut; + int first; + + void allocate(); +}; + +} + +#endif +#endif diff --git a/src/USER-MESO/pair_tdpd.cpp b/src/USER-MESO/pair_tdpd.cpp new file mode 100644 index 0000000000000000000000000000000000000000..1f2bd4eb6c7cdd9bde32707523ed80ebc5656af2 --- /dev/null +++ b/src/USER-MESO/pair_tdpd.cpp @@ -0,0 +1,476 @@ +/* ---------------------------------------------------------------------- + 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: Zhen Li (Brown University) + Email: zhen_li@brown.edu +------------------------------------------------------------------------- */ + +#include +#include +#include +#include "pair_tdpd.h" +#include "atom.h" +#include "atom_vec.h" +#include "comm.h" +#include "update.h" +#include "force.h" +#include "neighbor.h" +#include "neigh_list.h" +#include "random_mars.h" +#include "citeme.h" +#include "memory.h" +#include "error.h" +#include + +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 + +static const char cite_pair_tdpd[] = + "pair tdpd command:\n\n" + "@Article{ZLi2015_JCP,\n" + " author = {Li, Z. and Yazdani, A. and Tartakovsky, A. and Karniadakis, G.E.},\n" + " title = {Transport dissipative particle dynamics model for mesoscopic advection-diffusion-reaction problems},\n" + " journal = {The Journal of Chemical Physics},\n" + " year = {2015},\n" + " volume = {143},\n" + " pages = {014101}\n" + "}\n\n"; + +/* ---------------------------------------------------------------------- */ + +PairTDPD::PairTDPD(LAMMPS *lmp) : Pair(lmp) +{ + if (lmp->citeme) lmp->citeme->add(cite_pair_tdpd); + cc_species = atom->cc_species; + + writedata = 1; + random = NULL; +} + +/* ---------------------------------------------------------------------- */ + +PairTDPD::~PairTDPD() +{ + if (allocated) { + memory->destroy(setflag); + memory->destroy(cutsq); + + memory->destroy(cut); + memory->destroy(cutcc); + + memory->destroy(a0); + memory->destroy(gamma); + memory->destroy(sigma); + + memory->destroy(power); + memory->destroy(kappa); + memory->destroy(epsilon); + memory->destroy(powercc); + } + + if (random) delete random; +} + +/* ---------------------------------------------------------------------- */ + +void PairTDPD::compute(int eflag, int vflag) +{ + double evdwl = 0.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 **cc = atom->cc; + double **cc_flux = atom->cc_flux; + int *type = atom->type; + int nlocal = atom->nlocal; + double *special_lj = force->special_lj; + int newton_pair = force->newton_pair; + double dtinvsqrt = 1.0/sqrt(update->dt); + + int inum = list->inum; + int *ilist = list->ilist; + int *numneigh = list->numneigh; + int **firstneigh = list->firstneigh; + + // loop over neighbors of my atoms + for (int ii = 0; ii < inum; ii++) { + int i = ilist[ii]; + double xtmp = x[i][0]; + double ytmp = x[i][1]; + double ztmp = x[i][2]; + double vxtmp = v[i][0]; + double vytmp = v[i][1]; + double vztmp = v[i][2]; + int itype = type[i]; + int *jlist = firstneigh[i]; + int jnum = numneigh[i]; + + for (int jj = 0; jj < jnum; jj++) { + int j = jlist[jj]; + double factor_dpd = special_lj[sbmask(j)]; + j &= NEIGHMASK; + + double delx = xtmp - x[j][0]; + double dely = ytmp - x[j][1]; + double delz = ztmp - x[j][2]; + double rsq = delx*delx + dely*dely + delz*delz; + int jtype = type[j]; + + if (rsq < cutsq[itype][jtype]) { + double r = sqrt(rsq); + if (r < EPSILON) continue; // r can be 0.0 in DPD systems + double rinv = 1.0/r; + double delvx = vxtmp - v[j][0]; + double delvy = vytmp - v[j][1]; + double delvz = vztmp - v[j][2]; + double dot = delx*delvx + dely*delvy + delz*delvz; + double wc = 1.0 - r/cut[itype][jtype]; + wc = MAX(0,MIN(1.0,wc)); + double wr = pow(wc, 0.5*power[itype][jtype]); + double randnum = random->gaussian(); + + // conservative force = a0 * wc + // drag force = -gamma * wr^2 * (delx dot delv) / r + // random force = sigma * wr^(power/2) * rnd * dtinvsqrt; + + double fpair = a0[itype][jtype]*wc; + fpair -= gamma[itype][jtype]*wr*wr*dot*rinv; + fpair += sigma[itype][jtype]*wr*randnum*dtinvsqrt; + fpair *= factor_dpd*rinv; + + f[i][0] += delx*fpair; + f[i][1] += dely*fpair; + f[i][2] += delz*fpair; + + // chemical concentration transport + if( r < cutcc[itype][jtype]) { + for(int k=0; kgaussian(); + randnum = MAX(-5.0,MIN(randnum,5.0)); + double dQc = -kappa[itype][jtype][k] * wcr*wcr *(cc[i][k]-cc[j][k]); + double dQr = epsilon[itype][jtype][k] *wcr* (cc[i][k]+cc[j][k]) *randnum*dtinvsqrt; + cc_flux[i][k] += (dQc + dQr); + if (newton_pair || j < nlocal) + cc_flux[j][k] -= ( dQc + dQr ); + } + } + //----------------------------------------------------------- + + 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*a0[itype][jtype]*cut[itype][jtype] * wc*wc; + evdwl *= factor_dpd; + } + + 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 PairTDPD::allocate() +{ + int i,j; + allocated = 1; + int n = atom->ntypes; + + memory->create(setflag,n+1,n+1,"pair:setflag"); + for (i = 1; i <= n; i++) + for (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(cutcc,n+1,n+1,"pair:cutcc"); + memory->create(a0,n+1,n+1,"pair:a0"); + memory->create(gamma,n+1,n+1,"pair:gamma"); + memory->create(sigma,n+1,n+1,"pair:sigma"); + memory->create(power,n+1,n+1,"pair:power"); + memory->create(kappa,n+1,n+1,cc_species,"pair:kappa"); + memory->create(epsilon,n+1,n+1,cc_species,"pair:epsilon"); + memory->create(powercc,n+1,n+1,cc_species,"pair:powercc"); + + for (i = 0; i <= atom->ntypes; i++) + for (j = 0; j <= atom->ntypes; j++) + sigma[i][j] = gamma[i][j] = 0.0; +} + +/* ---------------------------------------------------------------------- + global settings +------------------------------------------------------------------------- */ + +void PairTDPD::settings(int narg, char **arg) +{ + if (narg != 3) error->all(FLERR,"Illegal pair_style command"); + + temperature = force->numeric(FLERR,arg[0]); + cut_global = force->numeric(FLERR,arg[1]); + seed = force->inumeric(FLERR,arg[2]); + + // initialize Marsaglia RNG with processor-unique seed + + if (seed <= 0 ) { + struct timespec time; + clock_gettime( CLOCK_REALTIME, &time ); + seed = time.tv_nsec; // if seed is non-positive, get the current time as the seed + } + delete random; + random = new RanMars(lmp,(seed + comm->me) % 900000000); + + // 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 PairTDPD::coeff(int narg, char **arg) +{ + if (narg != 7 + 3*cc_species) + error->all(FLERR,"Incorrect args for pair tdpd coefficients"); + if (!allocated) allocate(); + + int ilo,ihi,jlo,jhi; + force->bounds(FLERR,arg[0],atom->ntypes,ilo,ihi); + force->bounds(FLERR,arg[1],atom->ntypes,jlo,jhi); + + double a0_one = force->numeric(FLERR,arg[2]); + double gamma_one = force->numeric(FLERR,arg[3]); + double power_one = force->numeric(FLERR,arg[4]); + double cut_one = force->numeric(FLERR,arg[5]); + double cutcc_one = force->numeric(FLERR,arg[6]); + double kappa_one[cc_species],epsilon_one[cc_species],powercc_one[cc_species]; + for(int k=0; knumeric(FLERR,arg[7+3*k]); + epsilon_one[k] = force->numeric(FLERR,arg[8+3*k]); + powercc_one[k] = force->numeric(FLERR,arg[9+3*k]); + } + + int count = 0; + for (int i = ilo; i <= ihi; i++) + for (int j = MAX(jlo,i); j <= jhi; j++) { + a0[i][j] = a0_one; + gamma[i][j] = gamma_one; + power[i][j] = power_one; + cut[i][j] = cut_one; + cutcc[i][j] = cutcc_one; + for(int k=0; kall(FLERR,"Incorrect args for pair coefficients"); +} + +/* ---------------------------------------------------------------------- + init specific to this pair style +------------------------------------------------------------------------- */ + +void PairTDPD::init_style() +{ + if (comm->ghost_velocity == 0) + error->all(FLERR,"Pair tdpd 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(FLERR, + "Pair tdpd needs newton pair on for momentum conservation"); + + neighbor->request(this,instance_me); +} + +/* ---------------------------------------------------------------------- + init for one type pair i,j and corresponding j,i +------------------------------------------------------------------------- */ + +double PairTDPD::init_one(int i, int j) +{ + 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]); + + cut[j][i] = cut[i][j]; + cutcc[j][i] = cutcc[i][j]; + a0[j][i] = a0[i][j]; + gamma[j][i] = gamma[i][j]; + sigma[j][i] = sigma[i][j]; + power[j][i] = power[i][j]; + for(int k=0; kntypes; i++) + for (int j = i; j <= atom->ntypes; j++) { + fwrite(&setflag[i][j],sizeof(int),1,fp); + if (setflag[i][j]) { + fwrite(&a0[i][j],sizeof(double),1,fp); + fwrite(&gamma[i][j],sizeof(double),1,fp); + fwrite(&power[i][j],sizeof(double),1,fp); + fwrite(&cut[i][j],sizeof(double),1,fp); + fwrite(&cutcc[i][j],sizeof(double),1,fp); + for(int k=0; kme; + for (int i = 1; i <= atom->ntypes; i++) + for (int 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(&a0[i][j],sizeof(double),1,fp); + fread(&gamma[i][j],sizeof(double),1,fp); + fread(&power[i][j],sizeof(double),1,fp); + fread(&cut[i][j],sizeof(double),1,fp); + fread(&cutcc[i][j],sizeof(double),1,fp); + for(int k=0; kme == 0) { + fread(&temperature,sizeof(double),1,fp); + fread(&cut_global,sizeof(double),1,fp); + fread(&seed,sizeof(int),1,fp); + fread(&mix_flag,sizeof(int),1,fp); + } + MPI_Bcast(&temperature,1,MPI_DOUBLE,0,world); + MPI_Bcast(&cut_global,1,MPI_DOUBLE,0,world); + MPI_Bcast(&seed,1,MPI_INT,0,world); + MPI_Bcast(&mix_flag,1,MPI_INT,0,world); + + // initialize Marsaglia RNG with processor-unique seed + // same seed that pair_style command initially specified + + if (random) delete random; + random = new RanMars(lmp,seed + comm->me); +} + +/* ---------------------------------------------------------------------- */ + +double PairTDPD::single(int i, int j, int itype, int jtype, double rsq, + double factor_coul, double factor_dpd, double &fforce) +{ + double r,rinv,wc,phi; + + r = sqrt(rsq); + if (r < EPSILON) { + fforce = 0.0; + return 0.0; + } + + rinv = 1.0/r; + wc = 1.0 - r/cut[itype][jtype]; + fforce = a0[itype][jtype]*wc*factor_dpd*rinv; + + phi = 0.5*a0[itype][jtype]*cut[itype][jtype]*wc*wc; + return factor_dpd*phi; +} diff --git a/src/USER-MESO/pair_tdpd.h b/src/USER-MESO/pair_tdpd.h new file mode 100644 index 0000000000000000000000000000000000000000..9245308d3823bfdb2b3362b9ca8196300bef47a1 --- /dev/null +++ b/src/USER-MESO/pair_tdpd.h @@ -0,0 +1,81 @@ +/* -*- 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(tdpd,PairTDPD) + +#else + +#ifndef LMP_PAIR_TDPD_H +#define LMP_PAIR_TDPD_H + +#include "pair.h" + +namespace LAMMPS_NS { + +class PairTDPD : public Pair { + public: + PairTDPD(class LAMMPS *); + virtual ~PairTDPD(); + virtual void compute(int, int); + virtual void settings(int, char **); + virtual void coeff(int, char **); + void init_style(); + double init_one(int, int); + virtual void write_restart(FILE *); + virtual void read_restart(FILE *); + virtual void write_restart_settings(FILE *); + virtual void read_restart_settings(FILE *); + double single(int, int, int, int, double, double, double, double &); + + protected: + double cut_global,temperature; + int seed,cc_species; + double **cut,**cutcc; + double **a0,**gamma,**sigma; + double **power; + double ***kappa,***epsilon; + double ***powercc; + class RanMars *random; + + void allocate(); +}; + +} + +#endif +#endif + +/* ERROR/WARNING messages: + +E: Illegal ... command + +Self-explanatory. Check the input script syntax and compare to the +documentation for the command. You can use -echo screen as a +command-line option when running LAMMPS to see the offending line. + +E: Incorrect args for pair coefficients + +Self-explanatory. Check the input script or data file. + +W: Pair tdpd needs newton pair on for momentum conservation + +Self-explanatory. + +E: All pair coeffs are not set + +All pair coefficients must be set in the data file or by the +pair_coeff command before running a simulation. + +*/ diff --git a/src/USER-MISC/README b/src/USER-MISC/README index 2fd25df9be33fae8b4519f33b5c9b2f735f59076..65146abd5436cd2b0e7ddc2afc66ebfdfa36d463 100644 --- a/src/USER-MISC/README +++ b/src/USER-MISC/README @@ -74,3 +74,4 @@ pair_style srp, Tim Sirk, tim.sirk at us.army.mil, 21 Nov 14 pair_style tersoff/table, Luca Ferraro, luca.ferraro@caspur.it, 1 Dec 11 pair_style momb, Kristen Fichthorn, Tonnam Balankura, Ya Zhou, fichthorn@psu.edu, 18 Mar 17 temper/grem, David Stelter, dstelter@bu.edu, 22 Nov 16 +temper/npt, Amulya K. Pervaje, Cody K. Addington, amulyapervaje@gmail.com , 31 Aug 17 diff --git a/src/USER-MISC/fix_ttm_mod.cpp b/src/USER-MISC/fix_ttm_mod.cpp index 4bf90fdca3205c9dee06020390879b83311e2b02..d2fc6ac9012bdcc3b02b29d9e1d03e7e4775e509 100644 --- a/src/USER-MISC/fix_ttm_mod.cpp +++ b/src/USER-MISC/fix_ttm_mod.cpp @@ -628,99 +628,99 @@ void FixTTMMod::end_of_step() T_electron[ixnode][iynode][iznode] = T_electron_first[ixnode][iynode][iznode]; - stability_criterion = 1.0 - - 2.0*inner_dt/el_specific_heat * + stability_criterion = 1.0 - + 2.0*inner_dt/el_specific_heat * + (el_thermal_conductivity*(1.0/dx/dx + 1.0/dy/dy + 1.0/dz/dz)); + if (stability_criterion < 0.0) { + inner_dt = 0.25*el_specific_heat / (el_thermal_conductivity*(1.0/dx/dx + 1.0/dy/dy + 1.0/dz/dz)); - if (stability_criterion < 0.0) { - inner_dt = 0.25*el_specific_heat / - (el_thermal_conductivity*(1.0/dx/dx + 1.0/dy/dy + 1.0/dz/dz)); - } - 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(FLERR,"Too many inner timesteps in fix ttm/mod",0); - for (int ith_inner_timestep = 0; ith_inner_timestep < num_inner_timesteps; - ith_inner_timestep++) { - for (int ixnode = 0; ixnode < nxnodes; ixnode++) - for (int iynode = 0; iynode < nynodes; iynode++) - for (int iznode = 0; iznode < nznodes; iznode++) - T_electron_old[ixnode][iynode][iznode] = - T_electron[ixnode][iynode][iznode]; - // compute new electron T profile - duration = duration + inner_dt; - for (int ixnode = 0; ixnode < nxnodes; ixnode++) - for (int iynode = 0; iynode < nynodes; iynode++) - for (int iznode = 0; iznode < nznodes; iznode++) { - int right_xnode = ixnode + 1; - int right_ynode = iynode + 1; - int right_znode = iznode + 1; - if (right_xnode == nxnodes) right_xnode = 0; - if (right_ynode == nynodes) right_ynode = 0; - if (right_znode == nznodes) right_znode = 0; - int left_xnode = ixnode - 1; - int left_ynode = iynode - 1; - int left_znode = iznode - 1; - if (left_xnode == -1) left_xnode = nxnodes - 1; - if (left_ynode == -1) left_ynode = nynodes - 1; - if (left_znode == -1) left_znode = nznodes - 1; - double skin_layer_d = double(skin_layer); - double ixnode_d = double(ixnode); - double surface_d = double(t_surface_l); - mult_factor = 0.0; - if (duration < width){ - if (ixnode >= t_surface_l) mult_factor = (intensity/(dx*skin_layer_d))*exp((-1.0)*(ixnode_d - surface_d)/skin_layer_d); - } - if (ixnode < t_surface_l) net_energy_transfer_all[ixnode][iynode][iznode] = 0.0; - double cr_vac = 1; - if (T_electron_old[ixnode][iynode][iznode] == 0) cr_vac = 0; - double cr_v_l_x = 1; - if (T_electron_old[left_xnode][iynode][iznode] == 0) cr_v_l_x = 0; - double cr_v_r_x = 1; - if (T_electron_old[right_xnode][iynode][iznode] == 0) cr_v_r_x = 0; - double cr_v_l_y = 1; - if (T_electron_old[ixnode][left_ynode][iznode] == 0) cr_v_l_y = 0; - double cr_v_r_y = 1; - if (T_electron_old[ixnode][right_ynode][iznode] == 0) cr_v_r_y = 0; - double cr_v_l_z = 1; - if (T_electron_old[ixnode][iynode][left_znode] == 0) cr_v_l_z = 0; - double cr_v_r_z = 1; - if (T_electron_old[ixnode][iynode][right_znode] == 0) cr_v_r_z = 0; - if (cr_vac != 0) { - T_electron[ixnode][iynode][iznode] = - T_electron_old[ixnode][iynode][iznode] + - inner_dt/el_properties(T_electron_old[ixnode][iynode][iznode]).el_heat_capacity * - ((cr_v_r_x*el_properties(T_electron_old[ixnode][iynode][iznode]/2.0+T_electron_old[right_xnode][iynode][iznode]/2.0).el_thermal_conductivity* - (T_electron_old[right_xnode][iynode][iznode]-T_electron_old[ixnode][iynode][iznode])/dx - - cr_v_l_x*el_properties(T_electron_old[ixnode][iynode][iznode]/2.0+T_electron_old[left_xnode][iynode][iznode]/2.0).el_thermal_conductivity* - (T_electron_old[ixnode][iynode][iznode]-T_electron_old[left_xnode][iynode][iznode])/dx)/dx + - (cr_v_r_y*el_properties(T_electron_old[ixnode][iynode][iznode]/2.0+T_electron_old[ixnode][right_ynode][iznode]/2.0).el_thermal_conductivity* - (T_electron_old[ixnode][right_ynode][iznode]-T_electron_old[ixnode][iynode][iznode])/dy - - cr_v_l_y*el_properties(T_electron_old[ixnode][iynode][iznode]/2.0+T_electron_old[ixnode][left_ynode][iznode]/2.0).el_thermal_conductivity* - (T_electron_old[ixnode][iynode][iznode]-T_electron_old[ixnode][left_ynode][iznode])/dy)/dy + - (cr_v_r_z*el_properties(T_electron_old[ixnode][iynode][iznode]/2.0+T_electron_old[ixnode][iynode][right_znode]/2.0).el_thermal_conductivity* - (T_electron_old[ixnode][iynode][right_znode]-T_electron_old[ixnode][iynode][iznode])/dz - - cr_v_l_z*el_properties(T_electron_old[ixnode][iynode][iznode]/2.0+T_electron_old[ixnode][iynode][left_znode]/2.0).el_thermal_conductivity* - (T_electron_old[ixnode][iynode][iznode]-T_electron_old[ixnode][iynode][left_znode])/dz)/dz); - T_electron[ixnode][iynode][iznode]+=inner_dt/el_properties(T_electron[ixnode][iynode][iznode]).el_heat_capacity* - (mult_factor - - net_energy_transfer_all[ixnode][iynode][iznode]/del_vol); - } - else T_electron[ixnode][iynode][iznode] = - T_electron_old[ixnode][iynode][iznode]; - if ((T_electron[ixnode][iynode][iznode] > 0.0) && (T_electron[ixnode][iynode][iznode] < electron_temperature_min)) - T_electron[ixnode][iynode][iznode] = T_electron[ixnode][iynode][iznode] + 0.5*(electron_temperature_min - T_electron[ixnode][iynode][iznode]); - - if (el_properties(T_electron[ixnode][iynode][iznode]).el_thermal_conductivity > el_thermal_conductivity) - el_thermal_conductivity = el_properties(T_electron[ixnode][iynode][iznode]).el_thermal_conductivity; - if ((T_electron[ixnode][iynode][iznode] > 0.0) && (el_properties(T_electron[ixnode][iynode][iznode]).el_heat_capacity < el_specific_heat)) - el_specific_heat = el_properties(T_electron[ixnode][iynode][iznode]).el_heat_capacity; + } + 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(FLERR,"Too many inner timesteps in fix ttm/mod",0); + for (int ith_inner_timestep = 0; ith_inner_timestep < num_inner_timesteps; + ith_inner_timestep++) { + for (int ixnode = 0; ixnode < nxnodes; ixnode++) + for (int iynode = 0; iynode < nynodes; iynode++) + for (int iznode = 0; iznode < nznodes; iznode++) + T_electron_old[ixnode][iynode][iznode] = + T_electron[ixnode][iynode][iznode]; + // compute new electron T profile + duration = duration + inner_dt; + for (int ixnode = 0; ixnode < nxnodes; ixnode++) + for (int iynode = 0; iynode < nynodes; iynode++) + for (int iznode = 0; iznode < nznodes; iznode++) { + int right_xnode = ixnode + 1; + int right_ynode = iynode + 1; + int right_znode = iznode + 1; + if (right_xnode == nxnodes) right_xnode = 0; + if (right_ynode == nynodes) right_ynode = 0; + if (right_znode == nznodes) right_znode = 0; + int left_xnode = ixnode - 1; + int left_ynode = iynode - 1; + int left_znode = iznode - 1; + if (left_xnode == -1) left_xnode = nxnodes - 1; + if (left_ynode == -1) left_ynode = nynodes - 1; + if (left_znode == -1) left_znode = nznodes - 1; + double skin_layer_d = double(skin_layer); + double ixnode_d = double(ixnode); + double surface_d = double(t_surface_l); + mult_factor = 0.0; + if (duration < width){ + if (ixnode >= t_surface_l) mult_factor = (intensity/(dx*skin_layer_d))*exp((-1.0)*(ixnode_d - surface_d)/skin_layer_d); } - } - stability_criterion = 1.0 - - 2.0*inner_dt/el_specific_heat * - (el_thermal_conductivity*(1.0/dx/dx + 1.0/dy/dy + 1.0/dz/dz)); + if (ixnode < t_surface_l) net_energy_transfer_all[ixnode][iynode][iznode] = 0.0; + double cr_vac = 1; + if (T_electron_old[ixnode][iynode][iznode] == 0) cr_vac = 0; + double cr_v_l_x = 1; + if (T_electron_old[left_xnode][iynode][iznode] == 0) cr_v_l_x = 0; + double cr_v_r_x = 1; + if (T_electron_old[right_xnode][iynode][iznode] == 0) cr_v_r_x = 0; + double cr_v_l_y = 1; + if (T_electron_old[ixnode][left_ynode][iznode] == 0) cr_v_l_y = 0; + double cr_v_r_y = 1; + if (T_electron_old[ixnode][right_ynode][iznode] == 0) cr_v_r_y = 0; + double cr_v_l_z = 1; + if (T_electron_old[ixnode][iynode][left_znode] == 0) cr_v_l_z = 0; + double cr_v_r_z = 1; + if (T_electron_old[ixnode][iynode][right_znode] == 0) cr_v_r_z = 0; + if (cr_vac != 0) { + T_electron[ixnode][iynode][iznode] = + T_electron_old[ixnode][iynode][iznode] + + inner_dt/el_properties(T_electron_old[ixnode][iynode][iznode]).el_heat_capacity * + ((cr_v_r_x*el_properties(T_electron_old[ixnode][iynode][iznode]/2.0+T_electron_old[right_xnode][iynode][iznode]/2.0).el_thermal_conductivity* + (T_electron_old[right_xnode][iynode][iznode]-T_electron_old[ixnode][iynode][iznode])/dx - + cr_v_l_x*el_properties(T_electron_old[ixnode][iynode][iznode]/2.0+T_electron_old[left_xnode][iynode][iznode]/2.0).el_thermal_conductivity* + (T_electron_old[ixnode][iynode][iznode]-T_electron_old[left_xnode][iynode][iznode])/dx)/dx + + (cr_v_r_y*el_properties(T_electron_old[ixnode][iynode][iznode]/2.0+T_electron_old[ixnode][right_ynode][iznode]/2.0).el_thermal_conductivity* + (T_electron_old[ixnode][right_ynode][iznode]-T_electron_old[ixnode][iynode][iznode])/dy - + cr_v_l_y*el_properties(T_electron_old[ixnode][iynode][iznode]/2.0+T_electron_old[ixnode][left_ynode][iznode]/2.0).el_thermal_conductivity* + (T_electron_old[ixnode][iynode][iznode]-T_electron_old[ixnode][left_ynode][iznode])/dy)/dy + + (cr_v_r_z*el_properties(T_electron_old[ixnode][iynode][iznode]/2.0+T_electron_old[ixnode][iynode][right_znode]/2.0).el_thermal_conductivity* + (T_electron_old[ixnode][iynode][right_znode]-T_electron_old[ixnode][iynode][iznode])/dz - + cr_v_l_z*el_properties(T_electron_old[ixnode][iynode][iznode]/2.0+T_electron_old[ixnode][iynode][left_znode]/2.0).el_thermal_conductivity* + (T_electron_old[ixnode][iynode][iznode]-T_electron_old[ixnode][iynode][left_znode])/dz)/dz); + T_electron[ixnode][iynode][iznode]+=inner_dt/el_properties(T_electron[ixnode][iynode][iznode]).el_heat_capacity* + (mult_factor - + net_energy_transfer_all[ixnode][iynode][iznode]/del_vol); + } + else T_electron[ixnode][iynode][iznode] = + T_electron_old[ixnode][iynode][iznode]; + if ((T_electron[ixnode][iynode][iznode] > 0.0) && (T_electron[ixnode][iynode][iznode] < electron_temperature_min)) + T_electron[ixnode][iynode][iznode] = T_electron[ixnode][iynode][iznode] + 0.5*(electron_temperature_min - T_electron[ixnode][iynode][iznode]); + + if (el_properties(T_electron[ixnode][iynode][iznode]).el_thermal_conductivity > el_thermal_conductivity) + el_thermal_conductivity = el_properties(T_electron[ixnode][iynode][iznode]).el_thermal_conductivity; + if ((T_electron[ixnode][iynode][iznode] > 0.0) && (el_properties(T_electron[ixnode][iynode][iznode]).el_heat_capacity < el_specific_heat)) + el_specific_heat = el_properties(T_electron[ixnode][iynode][iznode]).el_heat_capacity; + } + } + stability_criterion = 1.0 - + 2.0*inner_dt/el_specific_heat * + (el_thermal_conductivity*(1.0/dx/dx + 1.0/dy/dy + 1.0/dz/dz)); - } while (stability_criterion < 0.0); + } while (stability_criterion < 0.0); // output nodal temperatures for current timestep if ((nfileevery) && !(update->ntimestep % nfileevery)) { // compute atomic Ta for each grid point diff --git a/src/USER-MISC/temper_npt.cpp b/src/USER-MISC/temper_npt.cpp new file mode 100644 index 0000000000000000000000000000000000000000..572a52b1a921c347d4d70469f9664d7831ed404f --- /dev/null +++ b/src/USER-MISC/temper_npt.cpp @@ -0,0 +1,380 @@ +/* ---------------------------------------------------------------------- + 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: Amulya K. Pervaje and Cody K. Addington, + (North Carolina State University) + Contact Email: amulyapervaje@gmail.com +------------------------------------------------------------------------- */ + +#include +#include +#include +#include "temper_npt.h" +#include "universe.h" +#include "domain.h" +#include "atom.h" +#include "update.h" +#include "integrate.h" +#include "modify.h" +#include "compute.h" +#include "force.h" +#include "output.h" +#include "thermo.h" +#include "fix.h" +#include "random_park.h" +#include "finish.h" +#include "timer.h" +#include "memory.h" +#include "error.h" + +using namespace LAMMPS_NS; + +#define TEMPER_DEBUG 0 + +/* ---------------------------------------------------------------------- */ + +TemperNPT::TemperNPT(LAMMPS *lmp) : Pointers(lmp) {} + +/* ---------------------------------------------------------------------- */ + +TemperNPT::~TemperNPT() +{ + MPI_Comm_free(&roots); + if (ranswap) delete ranswap; + delete ranboltz; + delete [] set_temp; + delete [] temp2world; + delete [] world2temp; + delete [] world2root; +} + +/* ---------------------------------------------------------------------- + perform tempering with inter-world swaps +------------------------------------------------------------------------- */ + +void TemperNPT::command(int narg, char **arg) +{ + if (universe->nworlds == 1) + error->all(FLERR,"Must have more than one processor partition to temper"); + if (domain->box_exist == 0) + error->all(FLERR,"temper/npt command before simulation box is defined"); + if (narg != 7 && narg != 8) + error->universe_all(FLERR,"Illegal temper/npt command"); + + int nsteps = force->inumeric(FLERR,arg[0]); + nevery = force->inumeric(FLERR,arg[1]); + double temp = force->numeric(FLERR,arg[2]); + double press_set = force->numeric(FLERR,arg[6]); + + for (whichfix = 0; whichfix < modify->nfix; whichfix++) + if (strcmp(arg[3],modify->fix[whichfix]->id) == 0) break; + if (whichfix == modify->nfix) + error->universe_all(FLERR,"Tempering fix ID is not defined"); + + seed_swap = force->inumeric(FLERR,arg[4]); + seed_boltz = force->inumeric(FLERR,arg[5]); + + my_set_temp = universe->iworld; + if (narg == 8) my_set_temp = force->inumeric(FLERR,arg[6]); + + // swap frequency must evenly divide total # of timesteps + + if (nevery <= 0) + error->universe_all(FLERR,"Invalid frequency in temper/npt command"); + nswaps = nsteps/nevery; + if (nswaps*nevery != nsteps) + error->universe_all(FLERR,"Non integer # of swaps in temper/npt command"); + + // fix style must be appropriate for temperature and pressure control, + // i.e. it needs to provide a working Fix::reset_target() and must also + // change the volume. This currently only applies to fix npt and + // fix rigid/npt variants + + if ((strncmp(modify->fix[whichfix]->style,"npt",3) == 0) + || (strncmp(modify->fix[whichfix]->style,"rigid/npt",9) == 0)) + error->universe_all(FLERR,"Tempering temperature fix is not supported"); + + // setup for long tempering run + + update->whichflag = 1; + update->nsteps = nsteps; + update->beginstep = update->firststep = update->ntimestep; + update->endstep = update->laststep = update->firststep + nsteps; + if (update->laststep < 0) + error->all(FLERR,"Too many timesteps"); + + lmp->init(); + + // local storage + + me_universe = universe->me; + MPI_Comm_rank(world,&me); + nworlds = universe->nworlds; + iworld = universe->iworld; + boltz = force->boltz; + nktv2p = force->nktv2p; + + // pe_compute = ptr to thermo_pe compute + // notify compute it will be called at first swap + + int id = modify->find_compute("thermo_pe"); + 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); + + // create MPI communicator for root proc from each world + + int color; + if (me == 0) color = 0; + else color = 1; + MPI_Comm_split(universe->uworld,color,0,&roots); + + // RNGs for swaps and Boltzmann test + // warm up Boltzmann RNG + + if (seed_swap) ranswap = new RanPark(lmp,seed_swap); + else ranswap = NULL; + ranboltz = new RanPark(lmp,seed_boltz + me_universe); + for (int i = 0; i < 100; i++) ranboltz->uniform(); + + // world2root[i] = global proc that is root proc of world i + + world2root = new int[nworlds]; + if (me == 0) + MPI_Allgather(&me_universe,1,MPI_INT,world2root,1,MPI_INT,roots); + MPI_Bcast(world2root,nworlds,MPI_INT,0,world); + + // create static list of set temperatures + // allgather tempering arg "temp" across root procs + // bcast from each root to other procs in world + + set_temp = new double[nworlds]; + if (me == 0) MPI_Allgather(&temp,1,MPI_DOUBLE,set_temp,1,MPI_DOUBLE,roots); + MPI_Bcast(set_temp,nworlds,MPI_DOUBLE,0,world); + + // create world2temp only on root procs from my_set_temp + // create temp2world on root procs from world2temp, + // then bcast to all procs within world + + world2temp = new int[nworlds]; + temp2world = new int[nworlds]; + if (me == 0) { + MPI_Allgather(&my_set_temp,1,MPI_INT,world2temp,1,MPI_INT,roots); + for (int i = 0; i < nworlds; i++) temp2world[world2temp[i]] = i; + } + MPI_Bcast(temp2world,nworlds,MPI_INT,0,world); + + // if restarting tempering, reset temp target of Fix to current my_set_temp + + if (narg == 8) { + double new_temp = set_temp[my_set_temp]; + modify->fix[whichfix]->reset_target(new_temp); + } + + // setup tempering runs + + int i,which,partner,swap,partner_set_temp,partner_world; + double pe,pe_partner, delr,boltz_factor,new_temp, press_units; + + if (me_universe == 0 && universe->uscreen) + fprintf(universe->uscreen,"Setting up tempering ...\n"); + + update->integrate->setup(); + + if (me_universe == 0) { + if (universe->uscreen) { + fprintf(universe->uscreen,"Step"); + for (int i = 0; i < nworlds; i++) + fprintf(universe->uscreen," T%d",i); + fprintf(universe->uscreen,"\n"); + } + if (universe->ulogfile) { + fprintf(universe->ulogfile,"Step"); + for (int i = 0; i < nworlds; i++) + fprintf(universe->ulogfile," T%d",i); + fprintf(universe->ulogfile,"\n"); + } + print_status(); + } + + timer->init(); + timer->barrier_start(); + + for (int iswap = 0; iswap < nswaps; iswap++) { + + // run for nevery timesteps + + update->integrate->run(nevery); + + // compute PE + // notify compute it will be called at next swap + + pe = pe_compute->compute_scalar(); + pe_compute->addstep(update->ntimestep + nevery); + double boxlox=domain->boxlo[0]; + double boxhix=domain->boxhi[0]; + double boxloy=domain->boxlo[1]; + double boxhiy=domain->boxhi[1]; + double boxloz=domain->boxlo[2]; + double boxhiz=domain->boxhi[2]; + double vol = (boxhix - boxlox)*(boxhiy - boxloy)*(boxhiz - boxloz); + double vol_partner = vol; + // which = which of 2 kinds of swaps to do (0,1) + + if (!ranswap) which = iswap % 2; + else if (ranswap->uniform() < 0.5) which = 0; + else which = 1; + + // partner_set_temp = which set temp I am partnering with for this swap + + if (which == 0) { + if (my_set_temp % 2 == 0) partner_set_temp = my_set_temp + 1; + else partner_set_temp = my_set_temp - 1; + } else { + if (my_set_temp % 2 == 1) partner_set_temp = my_set_temp + 1; + else partner_set_temp = my_set_temp - 1; + } + + // partner = proc ID to swap with + // if partner = -1, then I am not a proc that swaps + + partner = -1; + if (me == 0 && partner_set_temp >= 0 && partner_set_temp < nworlds) { + partner_world = temp2world[partner_set_temp]; + partner = world2root[partner_world]; + } + + // swap with a partner, only root procs in each world participate + // hi proc sends PE to low proc + // lo proc make Boltzmann decision on whether to swap + // lo proc communicates decision back to hi proc + + swap = 0; + if (partner != -1) { + if (me_universe > partner) { + MPI_Send(&pe,1,MPI_DOUBLE,partner,0,universe->uworld); + } + else { + MPI_Recv(&pe_partner,1,MPI_DOUBLE,partner,0,universe->uworld,MPI_STATUS_IGNORE); + } + if (me_universe > partner) { + MPI_Send(&vol,1, MPI_DOUBLE,partner,0,universe->uworld); + } + else { + MPI_Recv(&vol_partner,1,MPI_DOUBLE,partner,0,universe->uworld,MPI_STATUS_IGNORE); + } + // Acceptance criteria changed for NPT ensemble + if (me_universe < partner) { + press_units = press_set/nktv2p; + delr = (pe_partner - pe)*(1.0/(boltz*set_temp[my_set_temp]) - 1.0/(boltz*set_temp[partner_set_temp])) + press_units*(1.0/(boltz*set_temp[my_set_temp]) - 1.0/(boltz*set_temp[partner_set_temp]))*(vol_partner - vol); + boltz_factor = -delr; + if (boltz_factor >= 0.0) swap = 1; + else if (ranboltz->uniform() < exp(boltz_factor)) swap = 1; + } + + if (me_universe < partner) + MPI_Send(&swap,1,MPI_INT,partner,0,universe->uworld); + else + MPI_Recv(&swap,1,MPI_INT,partner,0,universe->uworld,MPI_STATUS_IGNORE); +#ifdef TEMPER_DEBUG + if (me_universe < partner) + fprintf(universe->uscreen,"SWAP %d & %d: yes = %d,Ts = %d %d, PEs = %g %g, Bz = %g %g, vol = %g %g\n", + me_universe,partner,swap,my_set_temp,partner_set_temp, + pe,pe_partner,boltz_factor,exp(boltz_factor), vol, vol_partner); +#endif + + } + + // bcast swap result to other procs in my world + + MPI_Bcast(&swap,1,MPI_INT,0,world); + + // rescale kinetic energy via velocities if move is accepted + + if (swap) scale_velocities(partner_set_temp,my_set_temp); + + // if my world swapped, all procs in world reset temp target of Fix + + if (swap) { + new_temp = set_temp[partner_set_temp]; + modify->fix[whichfix]->reset_target(new_temp); + } + + // update my_set_temp and temp2world on every proc + // root procs update their value if swap took place + // allgather across root procs + // bcast within my world + + if (swap) my_set_temp = partner_set_temp; + if (me == 0) { + MPI_Allgather(&my_set_temp,1,MPI_INT,world2temp,1,MPI_INT,roots); + for (i = 0; i < nworlds; i++) temp2world[world2temp[i]] = i; + } + MPI_Bcast(temp2world,nworlds,MPI_INT,0,world); + + // print out current swap status + + if (me_universe == 0) print_status(); + } + + timer->barrier_stop(); + + update->integrate->cleanup(); + + Finish finish(lmp); + finish.end(1); + + update->whichflag = 0; + update->firststep = update->laststep = 0; + update->beginstep = update->endstep = 0; +} + +/* ---------------------------------------------------------------------- + scale kinetic energy via velocities a la Sugita +------------------------------------------------------------------------- */ + +void TemperNPT::scale_velocities(int t_partner, int t_me) +{ + double sfactor = sqrt(set_temp[t_partner]/set_temp[t_me]); + + double **v = atom->v; + int nlocal = atom->nlocal; + + for (int i = 0; i < nlocal; i++) { + v[i][0] = v[i][0]*sfactor; + v[i][1] = v[i][1]*sfactor; + v[i][2] = v[i][2]*sfactor; + } +} + +/* ---------------------------------------------------------------------- + proc 0 prints current tempering status +------------------------------------------------------------------------- */ + +void TemperNPT::print_status() +{ + if (universe->uscreen) { + fprintf(universe->uscreen,BIGINT_FORMAT,update->ntimestep); + for (int i = 0; i < nworlds; i++) + fprintf(universe->uscreen," %d",world2temp[i]); + fprintf(universe->uscreen,"\n"); + } + if (universe->ulogfile) { + fprintf(universe->ulogfile,BIGINT_FORMAT,update->ntimestep); + for (int i = 0; i < nworlds; i++) + fprintf(universe->ulogfile," %d",world2temp[i]); + fprintf(universe->ulogfile,"\n"); + fflush(universe->ulogfile); + } +} diff --git a/src/USER-MISC/temper_npt.h b/src/USER-MISC/temper_npt.h new file mode 100644 index 0000000000000000000000000000000000000000..cbc4345995d3b4c1a7412673f83e3b1aeffbfc54 --- /dev/null +++ b/src/USER-MISC/temper_npt.h @@ -0,0 +1,108 @@ +/* -*- 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 COMMAND_CLASS + +CommandStyle(temper/npt,TemperNPT) + +#else + +#ifndef LMP_TEMPERNPT_H +#define LMP_TEMPERNPT_H + +#include "pointers.h" + +namespace LAMMPS_NS { + +class TemperNPT : protected Pointers { + public: + TemperNPT(class LAMMPS *); + ~TemperNPT(); + void command(int, char **); + + private: + int me,me_universe; // my proc ID in world and universe + int iworld,nworlds; // world info + double boltz; // copy from output->boltz + double nktv2p; + MPI_Comm roots; // MPI comm with 1 root proc from each world + class RanPark *ranswap,*ranboltz; // RNGs for swapping and Boltz factor + int nevery; // # of timesteps between swaps + int nswaps; // # of tempering swaps to perform + int seed_swap; // 0 = toggle swaps, n = RNG for swap direction + int seed_boltz; // seed for Boltz factor comparison + int whichfix; // index of temperature fix to use + int fixstyle; // what kind of temperature fix is used + + int my_set_temp; // which set temp I am simulating + double *set_temp; // static list of replica set temperatures + int *temp2world; // temp2world[i] = world simulating set temp i + int *world2temp; // world2temp[i] = temp simulated by world i + int *world2root; // world2root[i] = root proc of world i + + void scale_velocities(int, int); + void print_status(); +}; + +} + +#endif +#endif + +/* ERROR/WARNING messages: + +E: Must have more than one processor partition to temper + +Cannot use the temper command with only one processor partition. Use +the -partition command-line option. + +E: temper/npt command before simulation box is defined + +The temper/npt command cannot be used before a read_data, read_restart, +or create_box command. + +E: Illegal ... command + +Self-explanatory. Check the input script syntax and compare to the +documentation for the command. You can use -echo screen as a +command-line option when running LAMMPS to see the offending line. + +E: Tempering fix ID is not defined + +The fix ID specified by the temper/npt command does not exist. + +E: Invalid frequency in temper/npt command + +Nevery must be > 0. + +E: Non integer # of swaps in temper/npt command + +Swap frequency in temper/npt command must evenly divide the total +# of timesteps. + +E: Tempering temperature fix is not valid + +The fix specified by the temper command is not one that controls +temperature and pressure (npt). + +E: Too many timesteps + +The cummulative timesteps must fit in a 64-bit integer. + +E: Tempering could not find thermo_pe compute + +This compute is created by the thermo command. It must have been +explicitly deleted by a uncompute command. + +*/ diff --git a/src/USER-NETCDF/dump_netcdf.cpp b/src/USER-NETCDF/dump_netcdf.cpp index b45794126d8175e876d9764738f2d582bd0f3ae0..971f69f7ccdf8000d4b39e78107fa4c058536387 100644 --- a/src/USER-NETCDF/dump_netcdf.cpp +++ b/src/USER-NETCDF/dump_netcdf.cpp @@ -70,6 +70,9 @@ const int THIS_IS_A_BIGINT = -4; #define NCERR(x) ncerr(x, NULL, __LINE__) #define NCERRX(x, descr) ncerr(x, descr, __LINE__) +#if !defined(NC_64BIT_DATA) +#define NC_64BIT_DATA NC_64BIT_OFFSET +#endif /* ---------------------------------------------------------------------- */ diff --git a/src/USER-NETCDF/dump_netcdf_mpiio.cpp b/src/USER-NETCDF/dump_netcdf_mpiio.cpp index c5b87b178e2a58bf2b195a81365ec4352f168613..3b753b1b0453963fc7002e7f6bbfbd690b1178aa 100644 --- a/src/USER-NETCDF/dump_netcdf_mpiio.cpp +++ b/src/USER-NETCDF/dump_netcdf_mpiio.cpp @@ -70,6 +70,9 @@ const int THIS_IS_A_BIGINT = -4; #define NCERR(x) ncerr(x, NULL, __LINE__) #define NCERRX(x, descr) ncerr(x, descr, __LINE__) +#if !defined(NC_64BIT_DATA) +#define NC_64BIT_DATA NC_64BIT_OFFSET +#endif /* ---------------------------------------------------------------------- */ diff --git a/src/accelerator_kokkos.h b/src/accelerator_kokkos.h index d9794023b0d7172f5e73716bf0a19e6193f2aa2f..8ea5b9d4d2dd93dd4f85147035bfc5be1633024a 100644 --- a/src/accelerator_kokkos.h +++ b/src/accelerator_kokkos.h @@ -99,7 +99,7 @@ class DAT { public: typedef double tdual_xfloat_1d; typedef double tdual_FFT_SCALAR_1d; - typedef int t_int_1d; + typedef int tdual_int_1d; typedef int tdual_int_2d; }; diff --git a/src/atom.cpp b/src/atom.cpp index e46b1a72426bf8b9db25d9dd8487c49f4826f8df..1191f0f2b557ca769c07cb7971712b2ec33dba3b 100644 --- a/src/atom.cpp +++ b/src/atom.cpp @@ -103,7 +103,11 @@ Atom::Atom(LAMMPS *lmp) : Pointers(lmp) uCond = uMech = uChem = uCG = uCGnew = NULL; duChem = NULL; dpdTheta = NULL; - ssaAIR = NULL; + + // USER-MESO + + cc = cc_flux = NULL; + edpd_temp = edpd_flux = edpd_cv = NULL; // USER-SMD @@ -169,7 +173,7 @@ Atom::Atom(LAMMPS *lmp) : Pointers(lmp) cs_flag = csforce_flag = vforce_flag = etag_flag = 0; rho_flag = e_flag = cv_flag = vest_flag = 0; - dpd_flag = 0; + dpd_flag = edpd_flag = tdpd_flag = 0; // USER-SMD @@ -300,7 +304,12 @@ Atom::~Atom() memory->destroy(uCG); memory->destroy(uCGnew); memory->destroy(duChem); - memory->destroy(ssaAIR); + + memory->destroy(cc); + memory->destroy(cc_flux); + memory->destroy(edpd_temp); + memory->destroy(edpd_flux); + memory->destroy(edpd_cv); memory->destroy(nspecial); memory->destroy(special); @@ -335,9 +344,11 @@ Atom::~Atom() delete [] iname[i]; memory->destroy(ivector[i]); } - for (int i = 0; i < ndvector; i++) { - delete [] dname[i]; - memory->destroy(dvector[i]); + if (dvector != NULL) { + for (int i = 0; i < ndvector; i++) { + delete [] dname[i]; + memory->destroy(dvector[i]); + } } memory->sfree(iname); @@ -2194,6 +2205,7 @@ void *Atom::extract(char *name) if (strcmp(name, "damage") == 0) return (void *) damage; if (strcmp(name,"dpdTheta") == 0) return (void *) dpdTheta; + if (strcmp(name,"edpd_temp") == 0) return (void *) edpd_temp; return NULL; } diff --git a/src/atom.h b/src/atom.h index 0f84c8242fb86ece27b4abe2f6722ab667e1315d..007142a1c045f90f24981b1facbf92e3c10cc20b 100644 --- a/src/atom.h +++ b/src/atom.h @@ -93,7 +93,13 @@ class Atom : protected Pointers { double *duChem; double *dpdTheta; int nspecies_dpd; - int *ssaAIR; // Shardlow Splitting Algorithm Active Interaction Region number + + // USER-MESO package + + double **cc, **cc_flux; // cc = chemical concentration + double *edpd_temp,*edpd_flux; // temperature and heat flux + double *edpd_cv; // heat capacity + int cc_species; // molecular info @@ -138,7 +144,7 @@ class Atom : protected Pointers { 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; - int dpd_flag; + int dpd_flag,edpd_flag,tdpd_flag; // USER-SMD package @@ -255,8 +261,8 @@ class Atom : protected Pointers { void update_callback(int); int find_custom(const char *, int &); - int add_custom(const char *, int); - void remove_custom(int, int); + virtual int add_custom(const char *, int); + virtual void remove_custom(int, int); virtual void sync_modify(ExecutionSpace, unsigned int, unsigned int) {} diff --git a/src/atom_masks.h b/src/atom_masks.h index 119f09f273bfe9bdaab723f9435d1ed4e8ee172f..8e29448488df89760010312a15fa8e9f36a40496 100644 --- a/src/atom_masks.h +++ b/src/atom_masks.h @@ -42,6 +42,18 @@ #define ENERGY_MASK 0x00010000 #define VIRIAL_MASK 0x00020000 +// DPD + +#define DPDRHO_MASK 0x00040000 +#define DPDTHETA_MASK 0x00080000 +#define UCOND_MASK 0x00100000 +#define UMECH_MASK 0x00200000 +#define UCHEM_MASK 0x00400000 +#define UCG_MASK 0x00800000 +#define UCGNEW_MASK 0x01000000 +#define DUCHEM_MASK 0x02000000 +#define DVECTOR_MASK 0x04000000 + // granular #define RADIUS_MASK 0x00100000 diff --git a/src/compute_aggregate_atom.cpp b/src/compute_aggregate_atom.cpp new file mode 100644 index 0000000000000000000000000000000000000000..1155ac437adfb439cda2813ea0b8d4f4a850afed --- /dev/null +++ b/src/compute_aggregate_atom.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 +#include "compute_aggregate_atom.h" +#include "atom.h" +#include "atom_vec.h" +#include "update.h" +#include "modify.h" +#include "neighbor.h" +#include "neigh_list.h" +#include "neigh_request.h" +#include "pair.h" +#include "force.h" +#include "comm.h" +#include "memory.h" +#include "error.h" + +#include "group.h" + +using namespace LAMMPS_NS; + +/* ---------------------------------------------------------------------- */ + +ComputeAggregateAtom::ComputeAggregateAtom(LAMMPS *lmp, int narg, char **arg) : + Compute(lmp, narg, arg), + aggregateID(NULL) +{ + if (narg != 4) error->all(FLERR,"Illegal compute aggregate/atom command"); + + double cutoff = force->numeric(FLERR,arg[3]); + cutsq = cutoff*cutoff; + + if (atom->avec->bonds_allow == 0) + error->all(FLERR,"Compute aggregate/atom used when bonds are not allowed"); + + peratom_flag = 1; + size_peratom_cols = 0; + comm_forward = 1; + + nmax = 0; +} + +/* ---------------------------------------------------------------------- */ + +ComputeAggregateAtom::~ComputeAggregateAtom() +{ + memory->destroy(aggregateID); +} + +/* ---------------------------------------------------------------------- */ + +void ComputeAggregateAtom::init() +{ + if (atom->tag_enable == 0) + error->all(FLERR,"Cannot use compute aggregate/atom unless atoms have IDs"); + if (force->bond == NULL) + error->all(FLERR,"Compute aggregate/atom requires a bond style to be defined"); + + if (force->pair == NULL) + error->all(FLERR,"Compute cluster/atom requires a pair style to be defined"); + if (sqrt(cutsq) > force->pair->cutforce) + 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 + + int irequest = neighbor->request(this,instance_me); + neighbor->requests[irequest]->pair = 0; + neighbor->requests[irequest]->compute = 1; + neighbor->requests[irequest]->half = 0; + neighbor->requests[irequest]->full = 1; + neighbor->requests[irequest]->occasional = 1; + + int count = 0; + for (int i = 0; i < modify->ncompute; i++) + if (strcmp(modify->compute[i]->style,"aggregate/atom") == 0) count++; + if (count > 1 && comm->me == 0) + error->warning(FLERR,"More than one compute aggregate/atom"); +} + +/* ---------------------------------------------------------------------- */ + +void ComputeAggregateAtom::init_list(int id, NeighList *ptr) +{ + list = ptr; +} + +/* ---------------------------------------------------------------------- */ + +void ComputeAggregateAtom::compute_peratom() +{ + int i,j,k; + + invoked_peratom = update->ntimestep; + + // grow aggregateID array if necessary + + if (atom->nmax > nmax) { + memory->destroy(aggregateID); + nmax = atom->nmax; + memory->create(aggregateID,nmax,"aggregate/atom:aggregateID"); + vector_atom = aggregateID; + } + + // invoke full neighbor list (will copy or build if necessary) + + neighbor->build_one(list); + + // if group is dynamic, insure ghost atom masks are current + + if (group->dynamic[igroup]) { + commflag = 0; + comm->forward_comm_compute(this); + } + + // each atom starts in its own aggregate, + + int nlocal = atom->nlocal; + int inum = list->inum; + tagint *tag = atom->tag; + int *mask = atom->mask; + int *num_bond = atom->num_bond; + int **bond_type = atom->bond_type; + tagint **bond_atom = atom->bond_atom; + int *ilist = list->ilist; + int *numneigh = list->numneigh; + int **firstneigh = list->firstneigh; + double **x = atom->x; + + for (i = 0; i < nlocal + atom->nghost; i++) + if (mask[i] & groupbit) aggregateID[i] = tag[i]; + else aggregateID[i] = 0; + + // loop until no more changes on any proc: + // acquire aggregateIDs of ghost atoms + // loop over my atoms, and check atoms bound to it + // if both atoms are in aggregate, assign lowest aggregateID to both + // then loop over my atoms, checking distance to neighbors + // if both atoms are in cluster, assign lowest clusterID to both + // iterate until no changes in my atoms + // then check if any proc made changes + + commflag = 1; + + int change,done,anychange; + + while (1) { + comm->forward_comm_compute(this); + + change = 0; + while (1) { + done = 1; + for (i = 0; i < nlocal; i++) { + if (!(mask[i] & groupbit)) continue; + + for (j = 0; j < num_bond[i]; j++) { + if (bond_type[i][j] == 0) continue; + k = atom->map(bond_atom[i][j]); + if (k < 0) continue; + if (!(mask[k] & groupbit)) continue; + if (aggregateID[i] == aggregateID[k]) continue; + + aggregateID[i] = aggregateID[k] = MIN(aggregateID[i],aggregateID[k]); + done = 0; + } + } + + for (int ii = 0; ii < inum; ii++) { + i = ilist[ii]; + if (!(mask[i] & groupbit)) continue; + + const double xtmp = x[i][0]; + const double ytmp = x[i][1]; + const double ztmp = x[i][2]; + int *jlist = firstneigh[i]; + const int jnum = numneigh[i]; + + for (int jj = 0; jj < jnum; jj++) { + j = jlist[jj]; + j &= NEIGHMASK; + if (!(mask[j] & groupbit)) continue; + if (aggregateID[i] == aggregateID[j]) continue; + + const double delx = xtmp - x[j][0]; + const double dely = ytmp - x[j][1]; + const double delz = ztmp - x[j][2]; + const double rsq = delx*delx + dely*dely + delz*delz; + if (rsq < cutsq) { + aggregateID[i] = aggregateID[j] + = MIN(aggregateID[i],aggregateID[j]); + done = 0; + } + } + } + if (!done) change = 1; + if (done) break; + } + + // stop if all procs are done + + MPI_Allreduce(&change,&anychange,1,MPI_INT,MPI_MAX,world); + if (!anychange) break; + } +} + +/* ---------------------------------------------------------------------- */ + +int ComputeAggregateAtom::pack_forward_comm(int n, int *list, double *buf, + int pbc_flag, int *pbc) +{ + int i,j,m; + + m = 0; + if (commflag) { + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = aggregateID[j]; + } + } else { + int *mask = atom->mask; + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = ubuf(mask[j]).d; + } + } + + return m; +} + +/* ---------------------------------------------------------------------- */ + +void ComputeAggregateAtom::unpack_forward_comm(int n, int first, double *buf) +{ + int i,m,last; + + m = 0; + last = first + n; + if (commflag) + for (i = first; i < last; i++) aggregateID[i] = buf[m++]; + else { + int *mask = atom->mask; + for (i = first; i < last; i++) mask[i] = (int) ubuf(buf[m++]).i; + } +} + +/* ---------------------------------------------------------------------- + memory usage of local atom-based array +------------------------------------------------------------------------- */ + +double ComputeAggregateAtom::memory_usage() +{ + double bytes = nmax * sizeof(double); + return bytes; +} diff --git a/src/compute_aggregate_atom.h b/src/compute_aggregate_atom.h new file mode 100644 index 0000000000000000000000000000000000000000..8170aabc7f47cb0cc4330d36cc9305138cdd53a1 --- /dev/null +++ b/src/compute_aggregate_atom.h @@ -0,0 +1,70 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#ifdef COMPUTE_CLASS + +ComputeStyle(aggregate/atom,ComputeAggregateAtom) + +#else + +#ifndef LMP_COMPUTE_AGGREGATE_ATOM_H +#define LMP_COMPUTE_AGGREGATE_ATOM_H + +#include "compute.h" + +namespace LAMMPS_NS { + +class ComputeAggregateAtom : public Compute { + public: + ComputeAggregateAtom(class LAMMPS *, int, char **); + ~ComputeAggregateAtom(); + void init(); + void init_list(int, class NeighList *); + void compute_peratom(); + int pack_forward_comm(int, int *, double *, int, int *); + void unpack_forward_comm(int, int, double *); + double memory_usage(); + + private: + int nmax,commflag; + double cutsq; + class NeighList *list; + double *aggregateID; +}; + +} + +#endif +#endif + +/* ERROR/WARNING messages: + +E: Illegal ... command + +Self-explanatory. Check the input script syntax and compare to the +documentation for the command. You can use -echo screen as a +command-line option when running LAMMPS to see the offending line. + +E: Cannot use compute aggregate/atom unless atoms have IDs + +Atom IDs are used to identify aggregates. + +E: Compute aggregate/atom requires a bond style to be defined + +This is so that a bond list is generated which is used to find aggregates. + +W: More than one compute aggregate/atom + +It is not efficient to use compute aggregate/atom more than once. + +*/ diff --git a/src/compute_cluster_atom.cpp b/src/compute_cluster_atom.cpp index 80c002d39fe418d099445ebd6944c6f702285805..5ee636850444962dadbd4c276186d49ae0aacd83 100644 --- a/src/compute_cluster_atom.cpp +++ b/src/compute_cluster_atom.cpp @@ -63,7 +63,7 @@ void ComputeClusterAtom::init() if (atom->tag_enable == 0) error->all(FLERR,"Cannot use compute cluster/atom unless atoms have IDs"); if (force->pair == NULL) - error->all(FLERR,"Compute cluster/atom requires a pair style be defined"); + error->all(FLERR,"Compute cluster/atom requires a pair style to be defined"); if (sqrt(cutsq) > force->pair->cutforce) error->all(FLERR, "Compute cluster/atom cutoff is longer than pairwise cutoff"); diff --git a/src/compute_cluster_atom.h b/src/compute_cluster_atom.h index aae47477810a320b58e60d827c9f3c4af4f5667e..253396b40e5221f8c73184dc42d6162236721884 100644 --- a/src/compute_cluster_atom.h +++ b/src/compute_cluster_atom.h @@ -59,7 +59,7 @@ E: Cannot use compute cluster/atom unless atoms have IDs Atom IDs are used to identify clusters. -E: Compute cluster/atom requires a pair style be defined +E: Compute cluster/atom requires a pair style to be defined This is so that the pair style defines a cutoff distance which is used to find clusters. diff --git a/src/compute_fragment_atom.cpp b/src/compute_fragment_atom.cpp new file mode 100644 index 0000000000000000000000000000000000000000..2dfb20a5703c1246fb69cd89445e8c2edbe45b60 --- /dev/null +++ b/src/compute_fragment_atom.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 + + 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 +#include "compute_fragment_atom.h" +#include "atom.h" +#include "atom_vec.h" +#include "update.h" +#include "modify.h" +#include "force.h" +#include "comm.h" +#include "memory.h" +#include "error.h" + +#include "group.h" + +using namespace LAMMPS_NS; + +/* ---------------------------------------------------------------------- */ + +ComputeFragmentAtom::ComputeFragmentAtom(LAMMPS *lmp, int narg, char **arg) : + Compute(lmp, narg, arg), + fragmentID(NULL) +{ + if (narg != 3) error->all(FLERR,"Illegal compute fragment/atom command"); + + if (atom->avec->bonds_allow == 0) + error->all(FLERR,"Compute fragment/atom used when bonds are not allowed"); + + peratom_flag = 1; + size_peratom_cols = 0; + comm_forward = 1; + + nmax = 0; +} + +/* ---------------------------------------------------------------------- */ + +ComputeFragmentAtom::~ComputeFragmentAtom() +{ + memory->destroy(fragmentID); +} + +/* ---------------------------------------------------------------------- */ + +void ComputeFragmentAtom::init() +{ + if (atom->tag_enable == 0) + error->all(FLERR,"Cannot use compute fragment/atom unless atoms have IDs"); + if (force->bond == NULL) + error->all(FLERR,"Compute fragment/atom requires a bond style to be defined"); + + int count = 0; + for (int i = 0; i < modify->ncompute; i++) + if (strcmp(modify->compute[i]->style,"fragment/atom") == 0) count++; + if (count > 1 && comm->me == 0) + error->warning(FLERR,"More than one compute fragment/atom"); +} + +/* ---------------------------------------------------------------------- */ + +void ComputeFragmentAtom::compute_peratom() +{ + int i,j,k; + + invoked_peratom = update->ntimestep; + + // grow fragmentID array if necessary + + if (atom->nmax > nmax) { + memory->destroy(fragmentID); + nmax = atom->nmax; + memory->create(fragmentID,nmax,"fragment/atom:fragmentID"); + vector_atom = fragmentID; + } + + // if group is dynamic, insure ghost atom masks are current + + if (group->dynamic[igroup]) { + commflag = 0; + comm->forward_comm_compute(this); + } + + // each atom starts in its own fragment, + + int nlocal = atom->nlocal; + tagint *tag = atom->tag; + int *mask = atom->mask; + int *num_bond = atom->num_bond; + int **bond_type = atom->bond_type; + tagint **bond_atom = atom->bond_atom; + + for (i = 0; i < nlocal + atom->nghost; i++) + if (mask[i] & groupbit) fragmentID[i] = tag[i]; + else fragmentID[i] = 0; + + // loop until no more changes on any proc: + // acquire fragmentIDs of ghost atoms + // loop over my atoms, and check atoms bound to it + // if both atoms are in fragment, assign lowest fragmentID to both + // iterate until no changes in my atoms + // then check if any proc made changes + + commflag = 1; + + int change,done,anychange; + + while (1) { + comm->forward_comm_compute(this); + + change = 0; + while (1) { + done = 1; + for (i = 0; i < nlocal; i++) { + if (!(mask[i] & groupbit)) continue; + + for (j = 0; j < num_bond[i]; j++) { + if (bond_type[i][j] == 0) continue; + k = atom->map(bond_atom[i][j]); + if (k < 0) continue; + if (!(mask[k] & groupbit)) continue; + if (fragmentID[i] == fragmentID[k]) continue; + + fragmentID[i] = fragmentID[k] = MIN(fragmentID[i],fragmentID[k]); + done = 0; + } + } + if (!done) change = 1; + if (done) break; + } + + // stop if all procs are done + + MPI_Allreduce(&change,&anychange,1,MPI_INT,MPI_MAX,world); + if (!anychange) break; + } +} + +/* ---------------------------------------------------------------------- */ + +int ComputeFragmentAtom::pack_forward_comm(int n, int *list, double *buf, + int pbc_flag, int *pbc) +{ + int i,j,m; + + m = 0; + if (commflag) { + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = fragmentID[j]; + } + } else { + int *mask = atom->mask; + for (i = 0; i < n; i++) { + j = list[i]; + buf[m++] = ubuf(mask[j]).d; + } + } + + return m; +} + +/* ---------------------------------------------------------------------- */ + +void ComputeFragmentAtom::unpack_forward_comm(int n, int first, double *buf) +{ + int i,m,last; + + m = 0; + last = first + n; + if (commflag) + for (i = first; i < last; i++) fragmentID[i] = buf[m++]; + else { + int *mask = atom->mask; + for (i = first; i < last; i++) mask[i] = (int) ubuf(buf[m++]).i; + } +} + +/* ---------------------------------------------------------------------- + memory usage of local atom-based array +------------------------------------------------------------------------- */ + +double ComputeFragmentAtom::memory_usage() +{ + double bytes = nmax * sizeof(double); + return bytes; +} diff --git a/src/compute_fragment_atom.h b/src/compute_fragment_atom.h new file mode 100644 index 0000000000000000000000000000000000000000..a56239dbda6005684628b5b949277bdcc8e87ab4 --- /dev/null +++ b/src/compute_fragment_atom.h @@ -0,0 +1,67 @@ +/* -*- c++ -*- ---------------------------------------------------------- + LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator + http://lammps.sandia.gov, Sandia National Laboratories + Steve Plimpton, sjplimp@sandia.gov + + Copyright (2003) Sandia Corporation. Under the terms of Contract + DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains + certain rights in this software. This software is distributed under + the GNU General Public License. + + See the README file in the top-level LAMMPS directory. +------------------------------------------------------------------------- */ + +#ifdef COMPUTE_CLASS + +ComputeStyle(fragment/atom,ComputeFragmentAtom) + +#else + +#ifndef LMP_COMPUTE_FRAGMENT_ATOM_H +#define LMP_COMPUTE_FRAGMENT_ATOM_H + +#include "compute.h" + +namespace LAMMPS_NS { + +class ComputeFragmentAtom : public Compute { + public: + ComputeFragmentAtom(class LAMMPS *, int, char **); + ~ComputeFragmentAtom(); + void init(); + void compute_peratom(); + int pack_forward_comm(int, int *, double *, int, int *); + void unpack_forward_comm(int, int, double *); + double memory_usage(); + + private: + int nmax,commflag; + double *fragmentID; +}; + +} + +#endif +#endif + +/* ERROR/WARNING messages: + +E: Illegal ... command + +Self-explanatory. Check the input script syntax and compare to the +documentation for the command. You can use -echo screen as a +command-line option when running LAMMPS to see the offending line. + +E: Cannot use compute fragment/atom unless atoms have IDs + +Atom IDs are used to identify fragments. + +E: Compute fragment/atom requires a bond style to be defined + +This is so that a bond list is generated which is used to find fragments. + +W: More than one compute fragment/atom + +It is not efficient to use compute fragment/atom more than once. + +*/ diff --git a/src/fix_property_atom.cpp b/src/fix_property_atom.cpp index b83aadc95d8d01c3a35e327d6ce0351bc310c0a0..002260d8f08bbe089a3ec37bfa3a6888983b3a51 100644 --- a/src/fix_property_atom.cpp +++ b/src/fix_property_atom.cpp @@ -134,7 +134,6 @@ FixPropertyAtom::FixPropertyAtom(LAMMPS *lmp, int narg, char **arg) : // register with Atom class nmax_old = 0; - grow_arrays(atom->nmax); atom->add_callback(0); atom->add_callback(1); if (border) atom->add_callback(2); @@ -190,6 +189,8 @@ int FixPropertyAtom::setmask() void FixPropertyAtom::init() { + grow_arrays(atom->nmax); + // error if atom style has changed since fix was defined // don't allow this b/c user could change to style that defines molecule,q diff --git a/src/fix_property_atom.h b/src/fix_property_atom.h index 77a41f393adb185dcc7222ee537d6812da49138c..d923d76cac292842ebd937bef182ee507c71d091 100644 --- a/src/fix_property_atom.h +++ b/src/fix_property_atom.h @@ -27,7 +27,7 @@ namespace LAMMPS_NS { class FixPropertyAtom : public Fix { public: FixPropertyAtom(class LAMMPS *, int, char **); - ~FixPropertyAtom(); + virtual ~FixPropertyAtom(); int setmask(); void init(); @@ -38,7 +38,7 @@ class FixPropertyAtom : public Fix { void write_data_section_keyword(int, FILE *); void write_data_section(int, FILE *, int, double **, int); - void grow_arrays(int); + virtual void grow_arrays(int); void copy_arrays(int, int, int); int pack_border(int, int *, double *); int unpack_border(int, int, double *); @@ -50,7 +50,7 @@ class FixPropertyAtom : public Fix { int maxsize_restart(); double memory_usage(); - private: + protected: int nvalue,border; int molecule_flag,q_flag,rmass_flag; int *style,*index; diff --git a/src/fix_wall.cpp b/src/fix_wall.cpp index 503b87f4a7e5b5e8621c7d51b47fbd4cc909221a..8b569cafc690d890715ce7c8a594aaedb98d9465 100644 --- a/src/fix_wall.cpp +++ b/src/fix_wall.cpp @@ -201,6 +201,8 @@ FixWall::FixWall(LAMMPS *lmp, int narg, char **arg) : FixWall::~FixWall() { + if (copymode) return; + for (int m = 0; m < nwall; m++) { delete [] xstr[m]; delete [] estr[m]; diff --git a/src/fix_wall_lj93.h b/src/fix_wall_lj93.h index 40337a51768c2fac7d8a383f80b29101f6137ea5..3763a02910db8f3b1e40da805c250c1e3c3cd37c 100644 --- a/src/fix_wall_lj93.h +++ b/src/fix_wall_lj93.h @@ -28,9 +28,9 @@ class FixWallLJ93 : public FixWall { public: FixWallLJ93(class LAMMPS *, int, char **); void precompute(int); - void wall_particle(int, int, double); + virtual void wall_particle(int, int, double); - private: + protected: double coeff1[6],coeff2[6],coeff3[6],coeff4[6],offset[6]; }; diff --git a/src/library.cpp b/src/library.cpp index 22b54f73a10196436c8a2ee8495f739818190d3c..8f87d6fab240944bd523b5891b3279d41e204646 100644 --- a/src/library.cpp +++ b/src/library.cpp @@ -37,6 +37,7 @@ #include "comm.h" #include "memory.h" #include "error.h" +#include "force.h" using namespace LAMMPS_NS; @@ -370,6 +371,7 @@ void *lammps_extract_global(void *ptr, char *name) if (strcmp(name,"nlocal") == 0) return (void *) &lmp->atom->nlocal; if (strcmp(name,"nghost") == 0) return (void *) &lmp->atom->nghost; if (strcmp(name,"nmax") == 0) return (void *) &lmp->atom->nmax; + if (strcmp(name,"ntypes") == 0) return (void *) &lmp->atom->ntypes; if (strcmp(name,"ntimestep") == 0) return (void *) &lmp->update->ntimestep; if (strcmp(name,"units") == 0) return (void *) lmp->update->unit_style; @@ -384,6 +386,28 @@ void *lammps_extract_global(void *ptr, char *name) if (strcmp(name,"atime") == 0) return (void *) &lmp->update->atime; if (strcmp(name,"atimestep") == 0) return (void *) &lmp->update->atimestep; + // global constants defined by units + + if (strcmp(name,"boltz") == 0) return (void *) &lmp->force->boltz; + if (strcmp(name,"hplanck") == 0) return (void *) &lmp->force->hplanck; + if (strcmp(name,"mvv2e") == 0) return (void *) &lmp->force->mvv2e; + if (strcmp(name,"ftm2v") == 0) return (void *) &lmp->force->ftm2v; + if (strcmp(name,"mv2d") == 0) return (void *) &lmp->force->mv2d; + if (strcmp(name,"nktv2p") == 0) return (void *) &lmp->force->nktv2p; + if (strcmp(name,"qqr2e") == 0) return (void *) &lmp->force->qqr2e; + if (strcmp(name,"qe2f") == 0) return (void *) &lmp->force->qe2f; + if (strcmp(name,"vxmu2f") == 0) return (void *) &lmp->force->vxmu2f; + if (strcmp(name,"xxt2kmu") == 0) return (void *) &lmp->force->xxt2kmu; + if (strcmp(name,"dielectric") == 0) return (void *) &lmp->force->dielectric; + if (strcmp(name,"qqrd2e") == 0) return (void *) &lmp->force->qqrd2e; + if (strcmp(name,"e_mass") == 0) return (void *) &lmp->force->e_mass; + if (strcmp(name,"hhmrr2e") == 0) return (void *) &lmp->force->hhmrr2e; + if (strcmp(name,"mvh2r") == 0) return (void *) &lmp->force->mvh2r; + + if (strcmp(name,"angstrom") == 0) return (void *) &lmp->force->angstrom; + if (strcmp(name,"femtosecond") == 0) return (void *) &lmp->force->femtosecond; + if (strcmp(name,"qelectron") == 0) return (void *) &lmp->force->qelectron; + return NULL; } diff --git a/src/molecule.cpp b/src/molecule.cpp index b0fec4bcbccdf828f223b0fdb1008c40034ef1e4..b93cf24e7efaa74bb0d84fc00c730dbba63c7e59 100644 --- a/src/molecule.cpp +++ b/src/molecule.cpp @@ -173,7 +173,7 @@ Molecule::~Molecule() compute center = geometric center of molecule also compute: dx = displacement of each atom from center - molradius = radius of molecule from center + molradius = radius of molecule from center including finite-size particles or body particles ------------------------------------------------------------------------- */ @@ -474,7 +474,7 @@ void Molecule::read(int flag) } else if (strstr(line,"body")) { bodyflag = 1; avec_body = (AtomVecBody *) atom->style_match("body"); - if (!avec_body) + if (!avec_body) error->all(FLERR,"Molecule file requires atom style body"); nmatch = sscanf(line,"%d %d",&nibody,&ndbody); nwant = 2; @@ -486,7 +486,7 @@ void Molecule::read(int flag) // error checks - if (natoms < 1) + if (natoms < 1) error->all(FLERR,"No count or invalid atom count in molecule file"); if (nbonds < 0) error->all(FLERR,"Invalid bond count in molecule file"); if (nangles < 0) error->all(FLERR,"Invalid angle count in molecule file"); @@ -615,14 +615,12 @@ void Molecule::read(int flag) } // auto-generate special bonds if needed and not in file - // set maxspecial on first pass, so allocate() has a size if (bondflag && specialflag == 0) { if (domain->box_exist == 0) error->all(FLERR,"Cannot auto-generate special bonds before " "simulation box is defined"); - maxspecial = atom->maxspecial; if (flag) { special_generate(); specialflag = 1; @@ -635,7 +633,7 @@ void Molecule::read(int flag) if (bodyflag) { radiusflag = 1; - if (natoms != 1) + if (natoms != 1) error->all(FLERR,"Molecule natoms must be 1 for body particle"); if (sizescale != 1.0) error->all(FLERR,"Molecule sizescale must be 1.0 for body particle"); @@ -1115,6 +1113,12 @@ void Molecule::special_generate() tagint atom1,atom2; int count[natoms]; + // temporary array for special atoms + + tagint **tmpspecial; + memory->create(tmpspecial,natoms,atom->maxspecial,"molecule:tmpspecial"); + memset(&tmpspecial[0][0],0,sizeof(tagint)*natoms*atom->maxspecial); + for (int i = 0; i < natoms; i++) count[i] = 0; // 1-2 neighbors @@ -1126,10 +1130,10 @@ void Molecule::special_generate() atom2 = bond_atom[i][j]-1; nspecial[i][0]++; nspecial[atom2][0]++; - if (count[i] >= maxspecial || count[atom2] >= maxspecial) + if (count[i] >= atom->maxspecial || count[atom2] >= atom->maxspecial) error->one(FLERR,"Molecule auto special bond generation overflow"); - special[i][count[i]++] = atom2 + 1; - special[atom2][count[atom2]++] = i + 1; + tmpspecial[i][count[i]++] = atom2 + 1; + tmpspecial[atom2][count[atom2]++] = i + 1; } } } else { @@ -1138,9 +1142,9 @@ void Molecule::special_generate() for (int j = 0; j < num_bond[i]; j++) { atom1 = i; atom2 = bond_atom[i][j]; - if (count[atom1] >= maxspecial) + if (count[atom1] >= atom->maxspecial) error->one(FLERR,"Molecule auto special bond generation overflow"); - special[i][count[atom1]++] = atom2; + tmpspecial[i][count[atom1]++] = atom2; } } } @@ -1152,18 +1156,18 @@ void Molecule::special_generate() int dedup; for (int i = 0; i < natoms; i++) { for (int m = 0; m < nspecial[i][0]; m++) { - for (int j = 0; j < nspecial[special[i][m]-1][0]; j++) { + for (int j = 0; j < nspecial[tmpspecial[i][m]-1][0]; j++) { dedup = 0; for (int k =0; k < count[i]; k++) { - if (special[special[i][m]-1][j] == special[i][k] || - special[special[i][m]-1][j] == i+1) { + if (tmpspecial[tmpspecial[i][m]-1][j] == tmpspecial[i][k] || + tmpspecial[tmpspecial[i][m]-1][j] == i+1) { dedup = 1; } } if (!dedup) { - if (count[i] >= maxspecial) + if (count[i] >= atom->maxspecial) error->one(FLERR,"Molecule auto special bond generation overflow"); - special[i][count[i]++] = special[special[i][m]-1][j]; + tmpspecial[i][count[i]++] = tmpspecial[tmpspecial[i][m]-1][j]; nspecial[i][1]++; } } @@ -1176,23 +1180,34 @@ void Molecule::special_generate() for (int i = 0; i < natoms; i++) { for (int m = nspecial[i][0]; m < nspecial[i][1]; m++) { - for (int j = 0; j < nspecial[special[i][m]-1][0]; j++) { + for (int j = 0; j < nspecial[tmpspecial[i][m]-1][0]; j++) { dedup = 0; for (int k =0; k < count[i]; k++) { - if (special[special[i][m]-1][j] == special[i][k] || - special[special[i][m]-1][j] == i+1) { + if (tmpspecial[tmpspecial[i][m]-1][j] == tmpspecial[i][k] || + tmpspecial[tmpspecial[i][m]-1][j] == i+1) { dedup = 1; } } if (!dedup) { - if (count[i] >= maxspecial) + if (count[i] >= atom->maxspecial) error->one(FLERR,"Molecule auto special bond generation overflow"); - special[i][count[i]++] = special[special[i][m]-1][j]; + tmpspecial[i][count[i]++] = tmpspecial[tmpspecial[i][m]-1][j]; nspecial[i][2]++; } } } } + + maxspecial = 0; + for (int i = 0; i < natoms; i++) + maxspecial = MAX(maxspecial,nspecial[i][2]); + + memory->create(special,natoms,maxspecial,"molecule:special"); + for (int i = 0; i < natoms; i++) + for (int j = 0; j < nspecial[i][2]; j++) + special[i][j] = tmpspecial[i][j]; + + memory->destroy(tmpspecial); } /* ---------------------------------------------------------------------- @@ -1219,7 +1234,7 @@ void Molecule::shakeflag_read(char *line) void Molecule::shakeatom_read(char *line) { - int tmp, nmatch, nwant; + int tmp, nmatch=0, nwant=0; for (int i = 0; i < natoms; i++) { readline(line); if (shake_flag[i] == 1) { @@ -1262,7 +1277,7 @@ void Molecule::shakeatom_read(char *line) void Molecule::shaketype_read(char *line) { - int tmp,nmatch,nwant; + int tmp, nmatch=0, nwant=0; for (int i = 0; i < natoms; i++) { readline(line); if (shake_flag[i] == 1) { @@ -1316,19 +1331,19 @@ void Molecule::body(int flag, int pflag, char *line) ncount = atom->count_words(line); if (ncount == 0) error->one(FLERR,"Too few values in body section of molecule file"); - if (nword+ncount > nparam) + if (nword+ncount > nparam) error->all(FLERR,"Too many values in body section of molecule file"); - + if (flag) { if (pflag == 0) { ibodyparams[nword++] = force->inumeric(FLERR,strtok(line," \t\n\r\f")); for (i = 1; i < ncount; i++) - ibodyparams[nword++] = + ibodyparams[nword++] = force->inumeric(FLERR,strtok(NULL," \t\n\r\f")); } else { dbodyparams[nword++] = force->numeric(FLERR,strtok(line," \t\n\r\f")); for (i = 1; i < ncount; i++) - dbodyparams[nword++] = + dbodyparams[nword++] = force->numeric(FLERR,strtok(NULL," \t\n\r\f")); } } else nword += ncount; @@ -1473,7 +1488,7 @@ void Molecule::allocate() if (radiusflag) memory->create(radius,natoms,"molecule:radius"); if (rmassflag) memory->create(rmass,natoms,"molecule:rmass"); - // always allocate num_bond,num_angle,etc and special+nspecial + // always allocate num_bond,num_angle,etc and nspecial // even if not in molecule file, initialize to 0 // this is so methods that use these arrays don't have to check they exist @@ -1485,13 +1500,13 @@ void Molecule::allocate() for (int i = 0; i < natoms; i++) num_dihedral[i] = 0; memory->create(num_improper,natoms,"molecule:num_improper"); for (int i = 0; i < natoms; i++) num_improper[i] = 0; - - memory->create(special,natoms,maxspecial,"molecule:special"); - memory->create(nspecial,natoms,3,"molecule:nspecial"); for (int i = 0; i < natoms; i++) nspecial[i][0] = nspecial[i][1] = nspecial[i][2] = 0; + if (specialflag) + memory->create(special,natoms,maxspecial,"molecule:special"); + if (bondflag) { memory->create(bond_type,natoms,bond_per_atom, "molecule:bond_type"); diff --git a/src/neigh_list.cpp b/src/neigh_list.cpp index a5ca7a5366c017b71ef52e908bf55fc03d0a73d3..dde544a69f181e669ca349e79b08e3ef101103d7 100644 --- a/src/neigh_list.cpp +++ b/src/neigh_list.cpp @@ -79,7 +79,8 @@ NeighList::NeighList(LAMMPS *lmp) : Pointers(lmp) // USER-DPD package - ndxAIR_ssa = NULL; + for (int i = 0; i < 8; i++) AIRct_ssa[i] = 0; + np = NULL; } /* ---------------------------------------------------------------------- */ @@ -99,10 +100,6 @@ NeighList::~NeighList() delete [] iskip; memory->destroy(ijskip); - - if (ssa) { - memory->sfree(ndxAIR_ssa); - } } /* ---------------------------------------------------------------------- @@ -203,14 +200,16 @@ void NeighList::grow(int nlocal, int nall) if (listmiddle) listmiddle->grow(nlocal,nall); // skip if data structs are already big enough - - if (ghost) { + if (ssa) { + if ((nlocal * 3) + nall <= maxatom) return; + } else if (ghost) { if (nall <= maxatom) return; } else { if (nlocal <= maxatom) return; } - maxatom = atom->nmax; + if (ssa) maxatom = (nlocal * 3) + nall; + else maxatom = atom->nmax; memory->destroy(ilist); memory->destroy(numneigh); @@ -224,12 +223,6 @@ void NeighList::grow(int nlocal, int nall) firstdouble = (double **) memory->smalloc(maxatom*sizeof(double *), "neighlist:firstdouble"); } - - if (ssa) { - if (ndxAIR_ssa) memory->sfree(ndxAIR_ssa); - ndxAIR_ssa = (uint16_t (*)[8]) memory->smalloc(sizeof(uint16_t)*8*maxatom, - "neighlist:ndxAIR_ssa"); - } } /* ---------------------------------------------------------------------- @@ -306,7 +299,5 @@ bigint NeighList::memory_usage() } } - if (ndxAIR_ssa) bytes += sizeof(uint16_t) * 8 * maxatom; - return bytes; } diff --git a/src/neigh_list.h b/src/neigh_list.h index 3fb38681148fdc54e7ed0586eb5b83d639697717..4010a68857f3e9557c16224dc6e444cc652b8d79 100644 --- a/src/neigh_list.h +++ b/src/neigh_list.h @@ -81,7 +81,8 @@ class NeighList : protected Pointers { // USER-DPD package and Shardlow Splitting Algorithm (SSA) support - uint16_t (*ndxAIR_ssa)[8]; // for each atom, last neighbor index of each AIR + int AIRct_ssa[8]; // count of how many atoms in each AIR + class NPair *np; // ptr to NPair instance I depend on // methods diff --git a/src/neighbor.cpp b/src/neighbor.cpp index ef150902e3d136a364f2fde8237a869f42d31305..a460be0065de2b042280618032ec5b0cb776f8b6 100644 --- a/src/neighbor.cpp +++ b/src/neighbor.cpp @@ -22,6 +22,10 @@ #include "neighbor.h" #include "neigh_list.h" #include "neigh_request.h" +#include "nbin.h" +#include "nstencil.h" +#include "npair.h" +#include "ntopo.h" #include "style_nbin.h" #include "style_nstencil.h" #include "style_npair.h" @@ -804,7 +808,7 @@ int Neighbor::init_pair() } PairCreator pair_creator = pairclass[flag-1]; - neigh_pair[i] = pair_creator(lmp); + lists[i]->np = neigh_pair[i] = pair_creator(lmp); neigh_pair[i]->post_constructor(requests[i]); neigh_pair[i]->istyle = flag; diff --git a/src/nstencil.h b/src/nstencil.h index 7985d232029e6df3ce0403cf63cf1dcef38a8608..a4c6a4af6688c3f8f31d487f61b5b8b5f48cde25 100644 --- a/src/nstencil.h +++ b/src/nstencil.h @@ -30,6 +30,7 @@ class NStencil : protected Pointers { int *nstencil_multi; // # bins in each type-based multi stencil int **stencil_multi; // list of bin offsets in each stencil double **distsq_multi; // sq distances to bins in each stencil + int sx,sy,sz; // extent of stencil in each dim double cutoff_custom; // cutoff set by requestor @@ -64,7 +65,6 @@ class NStencil : protected Pointers { int xyzflag; // 1 if stencilxyz is allocated int maxstencil; // max size of stencil int maxstencil_multi; // max sizes of stencils - int sx,sy,sz; // extent of stencil in each dim int dimension; diff --git a/src/pair.h b/src/pair.h index b57004d965c535b7583597b04b01fd6c22e7a61d..0f7b0f85b62dbf6684304c78fe2e257c2bf659f4 100644 --- a/src/pair.h +++ b/src/pair.h @@ -211,10 +211,12 @@ class Pair : protected Pointers { double tabinner; // inner cutoff for Coulomb table double tabinner_disp; // inner cutoff for dispersion table + public: // custom data type for accessing Coulomb tables typedef union {int i; float f;} union_int_float_t; + protected: int vflag_fdotr; int maxeatom,maxvatom; diff --git a/src/pair_hybrid.cpp b/src/pair_hybrid.cpp index 31360d13ff131f7c874d1164e74d61dc59031ef8..751560deffd56355b97cf7d4f5e63c7b044c880e 100644 --- a/src/pair_hybrid.cpp +++ b/src/pair_hybrid.cpp @@ -39,9 +39,6 @@ PairHybrid::PairHybrid(LAMMPS *lmp) : Pair(lmp), outerflag = 0; respaflag = 0; - - if (lmp->kokkos) - error->all(FLERR,"Cannot yet use pair hybrid with Kokkos"); } /* ---------------------------------------------------------------------- */ @@ -382,6 +379,9 @@ void PairHybrid::coeff(int narg, char **arg) if (narg < 3) error->all(FLERR,"Incorrect args for pair coefficients"); if (!allocated) allocate(); + if (lmp->kokkos) + error->all(FLERR,"Cannot yet use pair hybrid with Kokkos"); + int ilo,ihi,jlo,jhi; force->bounds(FLERR,arg[0],atom->ntypes,ilo,ihi); force->bounds(FLERR,arg[1],atom->ntypes,jlo,jhi); diff --git a/src/pair_hybrid.h b/src/pair_hybrid.h index b8b9af5f405c7819fa72ae0434bfbfa55ddaef48..463ae00eca5c78e8381a3252b8bd151668e127b4 100644 --- a/src/pair_hybrid.h +++ b/src/pair_hybrid.h @@ -35,7 +35,7 @@ class PairHybrid : public Pair { public: PairHybrid(class LAMMPS *); virtual ~PairHybrid(); - 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/pair_hybrid_overlay.h b/src/pair_hybrid_overlay.h index 7fd0e3347f5d0c73facc0c1909939464d29c48c5..934be05365d53da75e91470ebe7a12309bee385d 100644 --- a/src/pair_hybrid_overlay.h +++ b/src/pair_hybrid_overlay.h @@ -27,7 +27,7 @@ namespace LAMMPS_NS { class PairHybridOverlay : public PairHybrid { public: PairHybridOverlay(class LAMMPS *); - ~PairHybridOverlay() {} + virtual ~PairHybridOverlay() {} void coeff(int, char **); }; diff --git a/src/pair_table.h b/src/pair_table.h index 2de4b6ea99fdfabc45e9dd4001e6fa6febce941e..b723fd2d98f50602a32f2ee0b4045f6dbc621d31 100644 --- a/src/pair_table.h +++ b/src/pair_table.h @@ -30,19 +30,19 @@ class PairTable : public Pair { virtual ~PairTable(); virtual void compute(int, int); - void settings(int, char **); + virtual void settings(int, char **); void coeff(int, char **); - double init_one(int, int); + virtual 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 &); + virtual double single(int, int, int, int, double, double, double, double &); void *extract(const char *, int &); - protected: enum{LOOKUP,LINEAR,SPLINE,BITMAP}; + protected: int tabstyle,tablength; struct Table { int ninput,rflag,fpflag,match,ntablebits; @@ -66,8 +66,8 @@ class PairTable : public Pair { virtual void compute_table(Table *); void null_table(Table *); void free_table(Table *); - void spline(double *, double *, int, double, double, double *); - double splint(double *, double *, double *, int, double); + static void spline(double *, double *, int, double, double, double *); + static double splint(double *, double *, double *, int, double); }; } diff --git a/src/read_restart.cpp b/src/read_restart.cpp index 6a950353eff85be071bf8cd36a8ffeaa9fe82ddb..82583bfe013190cef84b301bfabe3cfdd16fcc92 100644 --- a/src/read_restart.cpp +++ b/src/read_restart.cpp @@ -207,7 +207,13 @@ void ReadRestart::command(int narg, char **arg) memory->create(buf,assignedChunkSize,"read_restart:buf"); mpiio->read((headerOffset+assignedChunkOffset),assignedChunkSize,buf); mpiio->close(); - + if (!nextra) { // We can actually calculate number of atoms from assignedChunkSize + atom->nlocal = 1; // temporarily claim there is one atom... + int perAtomSize = avec->size_restart(); // ...so we can get its size + atom->nlocal = 0; // restore nlocal to zero atoms + int atomCt = (int) (assignedChunkSize / perAtomSize); + if (atomCt > atom->nmax) avec->grow(atomCt); + } m = 0; while (m < assignedChunkSize) m += avec->unpack_restart(&buf[m]); } @@ -1010,6 +1016,7 @@ void ReadRestart::file_layout() // if the number of ranks that did the writing is different if (me == 0) { + int ndx; int *all_written_send_sizes; memory->create(all_written_send_sizes,nprocs_file, "write_restart:all_written_send_sizes"); @@ -1019,30 +1026,61 @@ void ReadRestart::file_layout() fread(all_written_send_sizes,sizeof(int),nprocs_file,fp); - int init_chunk_number = nprocs_file/nprocs; - int num_extra_chunks = nprocs_file - (nprocs*init_chunk_number); + if ((nprocs != nprocs_file) && !(atom->nextra_store)) { + // nprocs differ, but atom sizes are fixed length, yeah! + atom->nlocal = 1; // temporarily claim there is one atom... + int perAtomSize = atom->avec->size_restart(); // ...so we can get its size + atom->nlocal = 0; // restore nlocal to zero atoms - for (int i = 0; i < nprocs; i++) { - if (i < num_extra_chunks) - nproc_chunk_number[i] = init_chunk_number+1; - else - nproc_chunk_number[i] = init_chunk_number; - } - - int all_written_send_sizes_index = 0; - bigint current_offset = 0; - for (int i=0;idestroy(all_written_send_sizes); memory->destroy(nproc_chunk_number); diff --git a/src/region.cpp b/src/region.cpp index e69fdc79d5f5ca8b0d1416e3eede76c560eda0b4..d2ef481cb79595ec51d22380cff51b95f12c4d77 100644 --- a/src/region.cpp +++ b/src/region.cpp @@ -146,7 +146,7 @@ int Region::match(double x, double y, double z) generate error if Kokkos function defaults to base class ------------------------------------------------------------------------- */ -void Region::match_all_kokkos(int, DAT::t_int_1d) +void Region::match_all_kokkos(int, DAT::tdual_int_1d) { error->all(FLERR,"Can only use Kokkos supported regions with Kokkos package"); } diff --git a/src/region.h b/src/region.h index 9c693bfcd5cc954ef2d5276c8b6fe9324284931d..5b4238acb4b071e10de309f04c6d3af2083a4e0e 100644 --- a/src/region.h +++ b/src/region.h @@ -99,7 +99,7 @@ class Region : protected Pointers { // Kokkos function, implemented by each Kokkos region - virtual void match_all_kokkos(int, DAT::t_int_1d); + virtual void match_all_kokkos(int, DAT::tdual_int_1d); protected: void add_contact(int, double *, double, double, double); diff --git a/src/set.cpp b/src/set.cpp index 59625b7e6cb086c47c1d5d48d124457cd1e30d5b..2b1c0edee2da90faaf506c9ce6976ab3f49a325f 100644 --- a/src/set.cpp +++ b/src/set.cpp @@ -41,11 +41,12 @@ 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,LENGTH,TRI, DIPOLE,DIPOLE_RANDOM,QUAT,QUAT_RANDOM,THETA,THETA_RANDOM,ANGMOM,OMEGA, DIAMETER,DENSITY,VOLUME,IMAGE,BOND,ANGLE,DIHEDRAL,IMPROPER, - MESO_E,MESO_CV,MESO_RHO,SMD_MASS_DENSITY,SMD_CONTACT_RADIUS,DPDTHETA, - INAME,DNAME}; + MESO_E,MESO_CV,MESO_RHO,EDPD_TEMP,EDPD_CV,CC,SMD_MASS_DENSITY, + SMD_CONTACT_RADIUS,DPDTHETA,INAME,DNAME}; #define BIG INT_MAX @@ -419,6 +420,46 @@ void Set::command(int narg, char **arg) set(MESO_RHO); iarg += 2; + } else if (strcmp(arg[iarg],"edpd/temp") == 0) { + if (iarg+2 > narg) error->all(FLERR,"Illegal set command"); + if (strcmp(arg[iarg+1],"NULL") == 0) dvalue = -1.0; + else if (strstr(arg[iarg+1],"v_") == arg[iarg+1]) varparse(arg[iarg+1],1); + else { + dvalue = force->numeric(FLERR,arg[iarg+1]); + if (dvalue < 0.0) error->all(FLERR,"Illegal set command"); + } + if (!atom->edpd_flag) + error->all(FLERR,"Cannot set edpd/temp for this atom style"); + set(EDPD_TEMP); + iarg += 2; + + } else if (strcmp(arg[iarg],"edpd/cv") == 0) { + if (iarg+2 > narg) error->all(FLERR,"Illegal set command"); + if (strcmp(arg[iarg+1],"NULL") == 0) dvalue = -1.0; + else if (strstr(arg[iarg+1],"v_") == arg[iarg+1]) varparse(arg[iarg+1],1); + else { + dvalue = force->numeric(FLERR,arg[iarg+1]); + if (dvalue < 0.0) error->all(FLERR,"Illegal set command"); + } + if (!atom->edpd_flag) + error->all(FLERR,"Cannot set edpd/cv for this atom style"); + set(EDPD_CV); + iarg += 2; + + } else if (strcmp(arg[iarg],"cc") == 0) { + if (iarg+3 > narg) error->all(FLERR,"Illegal set command"); + if (strcmp(arg[iarg+1],"NULL") == 0) dvalue = -1.0; + else if (strstr(arg[iarg+1],"v_") == arg[iarg+1]) varparse(arg[iarg+1],1); + else { + cc_index = force->inumeric(FLERR,arg[iarg+1]); + dvalue = force->numeric(FLERR,arg[iarg+2]); + if (cc_index < 1) error->all(FLERR,"Illegal set command"); + } + if (!atom->tdpd_flag) + error->all(FLERR,"Cannot set cc for this atom style"); + set(CC); + iarg += 3; + } else if (strcmp(arg[iarg],"smd/mass/density") == 0) { if (iarg+2 > narg) error->all(FLERR,"Illegal set command"); if (strstr(arg[iarg+1],"v_") == arg[iarg+1]) varparse(arg[iarg+1],1); @@ -476,14 +517,28 @@ void Set::command(int narg, char **arg) } else error->all(FLERR,"Illegal set command"); // statistics + // for CC option, include species index MPI_Allreduce(&count,&allcount,1,MPI_INT,MPI_SUM,world); if (comm->me == 0) { - if (screen) fprintf(screen," %d settings made for %s\n", - allcount,arg[origarg]); - if (logfile) fprintf(logfile," %d settings made for %s\n", - allcount,arg[origarg]); + + if (screen) { + if (strcmp(arg[origarg],"cc") == 0) + fprintf(screen," %d settings made for %s index %s\n", + allcount,arg[origarg],arg[origarg+1]); + else + fprintf(screen," %d settings made for %s\n", + allcount,arg[origarg]); + } + if (logfile) { + if (strcmp(arg[origarg],"cc") == 0) + fprintf(logfile," %d settings made for %s index %s\n", + allcount,arg[origarg],arg[origarg+1]); + else + fprintf(logfile," %d settings made for %s\n", + allcount,arg[origarg]); + } } } @@ -663,6 +718,11 @@ void Set::set(int keyword) 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; + + else if (keyword == EDPD_TEMP) atom->edpd_temp[i] = dvalue; + else if (keyword == EDPD_CV) atom->edpd_cv[i] = dvalue; + else if (keyword == CC) atom->cc[i][cc_index-1] = dvalue; + else if (keyword == SMD_MASS_DENSITY) { // set mass from volume and supplied mass density atom->rmass[i] = atom->vfrac[i] * dvalue; diff --git a/src/set.h b/src/set.h index dfb06a2e12c5820174866194198bad1fe571e049..5584e228ba0a276650892edef0f2f7c9a6d69ea0 100644 --- a/src/set.h +++ b/src/set.h @@ -35,7 +35,8 @@ class Set : protected Pointers { int style,ivalue,newtype,count,index_custom; int ximage,yimage,zimage,ximageflag,yimageflag,zimageflag; double dvalue,xvalue,yvalue,zvalue,wvalue,fraction; - + int cc_index; + int varflag,varflag1,varflag2,varflag3,varflag4; int ivar1,ivar2,ivar3,ivar4; double *vec1,*vec2,*vec3,*vec4; diff --git a/src/version.h b/src/version.h index ff33fa3b0688b6431dabf32829b1031ad32531cd..eaf67c28f019e07ba9cf1cfd62138fc211ff1524 100644 --- a/src/version.h +++ b/src/version.h @@ -1 +1 @@ -#define LAMMPS_VERSION "17 Aug 2017" +#define LAMMPS_VERSION "1 Sep 2017" diff --git a/src/write_dump.cpp b/src/write_dump.cpp index 31fca773eb4ae5232d8467873f02e4f1e09e5288..dcf6c05a14db5629dd01a157756d40cce194f550 100644 --- a/src/write_dump.cpp +++ b/src/write_dump.cpp @@ -21,6 +21,7 @@ #include "dump.h" #include "dump_image.h" #include "atom.h" +#include "comm.h" #include "group.h" #include "input.h" #include "update.h" @@ -76,7 +77,7 @@ void WriteDump::command(int narg, char **arg) if (strcmp(arg[1],"cfg") == 0) ((DumpCFG *) dump)->multifile_override = 1; - if (update->first_update == 0) + if ((update->first_update == 0) && (comm->me == 0)) error->warning(FLERR,"Calling write_dump before a full system init."); dump->init(); diff --git a/tools/drude/polarizer.py b/tools/drude/polarizer.py index 2976146f663edb67a854dcfd43d9047579f9a1c3..d28f2843899d916b3553b1e81076615bb7406f53 100755 --- a/tools/drude/polarizer.py +++ b/tools/drude/polarizer.py @@ -2,7 +2,7 @@ # polarizer.py - add Drude oscillators to LAMMPS data file. # Agilio Padua # Alain Dequidt -# version 2017/02/03 +# version 2017/02/08 import sys import argparse @@ -38,9 +38,9 @@ identification of the atom types within the force field database: This script will add new atom types, new bond types, new atoms and new bonds to the data file. -It will also print some commands to be included in the LAMMPS input script, +It will also generate some commands to be included in the LAMMPS input script, which are related to the topology and force field, namely fix drude, -pair_style and pair coeff_commands. For information on thermostating please +pair_style and pair_coeff commands. For information on thermostating please read the documentation of the USER-DRUDE package. This tool can also be used to revert a Drude-polarized data file to a @@ -549,6 +549,8 @@ class Data(object): def lmpscript(self, drude, outfile, thole = 2.6, cutoff = 12.0): """print lines for input script, including pair_style thole""" + pairfile = "pair-drude.lmp" + dfound = False for att in self.atomtypes: if att['dflag'] == 'd': @@ -564,49 +566,54 @@ class Data(object): print("pair_style hybrid/overlay ... coul/long/cs {0:.1f} "\ "thole {1:.3f} {0:.1f}\n".format(cutoff, thole)) + print("# data file with Drude oscillators added") print("read_data {0}\n".format(outfile)) - print("# add interactions between atoms and Drude particles") - print("pair_coeff * {0:3d}* coul/long/cs".format(att['id'])) + print("# pair interactions with Drude particles written to file") + print("# Thole damping recommended if more than 1 Drude per molecule") + print("include {0}\n".format(pairfile)) - # Thole parameters for I,J pairs - print("# add Thole damping if more than 1 Drude per molecule") - ifound = False - for atti in self.atomtypes: - itype = atti['type'].split()[0] - for ddt in drude.types: - dtype = ddt['type'].split()[0] - if dtype == itype: - alphai = ddt['alpha'] - tholei = ddt['thole'] - ifound = True - break - jfound = False - for attj in self.atomtypes: - if attj['id'] < atti['id']: - continue - jtype = attj['type'].split()[0] + with open(pairfile, "w") as f: + f.write("# interactions involving Drude particles\n") + f.write("pair_coeff * {0:3d}* coul/long/cs\n".format(att['id'])) + + f.write("# Thole damping if more than 1 Drude per molecule\n") + # Thole parameters for I,J pairs + ifound = False + for atti in self.atomtypes: + itype = atti['type'].split()[0] for ddt in drude.types: dtype = ddt['type'].split()[0] - if dtype == jtype: - alphaj = ddt['alpha'] - tholej = ddt['thole'] - jfound = True + if dtype == itype: + alphai = ddt['alpha'] + tholei = ddt['thole'] + ifound = True break - if ifound and jfound: - alphaij = (alphai * alphaj)**0.5 - tholeij = (tholei + tholej) / 2.0 - if tholeij == thole: - print("pair_coeff {0:4} {1:4} thole {2:7.3f}".format( - atti['id'], attj['id'], alphaij)) - else: - print("pair_coeff {0:4} {1:4} thole {2:7.3f} "\ - "{3:7.3f}".format(atti['id'],attj['id'], - alphaij, tholeij)) - jfound = False - ifound = False - print("") + for attj in self.atomtypes: + if attj['id'] < atti['id']: + continue + jtype = attj['type'].split()[0] + for ddt in drude.types: + dtype = ddt['type'].split()[0] + if dtype == jtype: + alphaj = ddt['alpha'] + tholej = ddt['thole'] + jfound = True + break + if ifound and jfound: + alphaij = (alphai * alphaj)**0.5 + tholeij = (tholei + tholej) / 2.0 + if tholeij == thole: + f.write("pair_coeff {0:4} {1:4} thole "\ + "{2:7.3f}\n".format(atti['id'], attj['id'], + alphaij)) + else: + f.write("pair_coeff {0:4} {1:4} thole {2:7.3f} "\ + "{3:7.3f}\n".format(atti['id'],attj['id'], + alphaij, tholeij)) + jfound = False + ifound = False print("# atom groups convenient for thermostats (see package " "documentation), etc.") @@ -631,8 +638,8 @@ class Data(object): print("") print("# ATTENTION!") - print("# * special_bonds may need 'extra' keyword, LAMMPS will exit " - "with a message.") + print("# * read_data may need 'extra/special/per/atom' keyword, " + "LAMMPS will exit with a message.") print("# * If using fix shake the group-ID must not include " "Drude particles.") print("# Use group ATOMS for example.") diff --git a/tools/moltemplate/LICENSE.TXT b/tools/moltemplate/LICENSE.TXT deleted file mode 100644 index 73eec323802ead7eaf23eae07de7ead3ed4504f6..0000000000000000000000000000000000000000 --- a/tools/moltemplate/LICENSE.TXT +++ /dev/null @@ -1,28 +0,0 @@ - -Author: Andrew Jewett, Shea Group, http://www.chem.ucsb.edu/~sheagroup/ -Copyright (c) 2014, Regents of the University of California -All rights reserved. -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - * Neither the name of the University of California, Santa Barbara nor the - names of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE -LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF -THE POSSIBILITY OF SUCH DAMAGE. - diff --git a/tools/moltemplate/LICENSE.md b/tools/moltemplate/LICENSE.md new file mode 100644 index 0000000000000000000000000000000000000000..d04220dc5f64326a6dc1cec2af90c5553bfc6079 --- /dev/null +++ b/tools/moltemplate/LICENSE.md @@ -0,0 +1,29 @@ +Modified BSD License (BSD-3-Clause) +==================== + +_Copyright © `2012`, `University of California, Santa Barbara`_ +_All rights reserved._ + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. Neither the name of the copyright holders nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS “AS IS” +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF +THE POSSIBILITY OF SUCH DAMAGE. diff --git a/tools/moltemplate/README.TXT b/tools/moltemplate/README.TXT deleted file mode 100644 index 773464d01b4d1b3c00c4e0649f6c9dc3c062853a..0000000000000000000000000000000000000000 --- a/tools/moltemplate/README.TXT +++ /dev/null @@ -1,61 +0,0 @@ - -- Description: -- - -Moltemplate is a cross-platform text-based molecule builder for LAMMPS. - - -- Typical usage: -- - -moltemplate.sh [-atomstyle style] [-pdb/-xyz coord_file] [-vmd] system.lt - - -- Web page: -- - -Documentation, examples, and supporting code can be downloaded at: - - http://www.moltemplate.org -The most up-to-date version of moltemplate can be downloaded here. -(After download, you can unpack the archive using: - tar xzf moltemplate_2012-3-31.tar.gz -The date will vary from version to version.) - ----------------------------------------------------- ----------- INSTALLATION INSTRUCTIONS: ------------ ----------------------------------------------------- - -This directory should contain two folders: - src/ <-- location of all python and bash scripts - common/ <-- location of shared force fields and molecules - -The ``moltemplate.sh'' script and the python scripts that it invokes are -located in the ``src/'' subdirectory. You should update your PATH environment -variable to include this directory. - -If you do not know what a PATH environment variable is, read: - http://www.linfo.org/path_env_var.html -(I receive this question often.) - -It is also a good idea to set your MOLTEMPLATE_PATH environment variable to -point to the ``common/'' subdirectory. -(Force fields and commonly used molecules will eventually be located here.) - - -- Installation example --- - -Suppose the directory with this README.TXT file is located at ~/moltemplate. - -If you use the bash shell, typically you would edit your -~/.profile, ~/.bash_profile or ~/.bashrc files to contain the following lines: - export PATH="$PATH:$HOME/moltemplate/src" - export MOLTEMPLATE_PATH="$HOME/moltemplate/common" -If you use the tcsh shell, typically you would edit your -~/.login, ~/.cshrc, or ~/.tcshrc files to contain the following lines: - setenv PATH "$PATH:$HOME/moltemplate/src" - setenv MOLTEMPLATE_PATH "$HOME/moltemplate/common" - - -- Requirements: -- - -Moltemplate requires the Bourne-shell, and a recent version of python -(2.7, 3.0 or higher), and can run on OS X, linux, or windows (if a -suitable shell environment has been installed). - - -- License: -- - -Moltemplate is available under the terms of the open-source 3-clause BSD -license. (See LICENSE.TXT.) diff --git a/tools/moltemplate/README.md b/tools/moltemplate/README.md new file mode 100644 index 0000000000000000000000000000000000000000..dc63a6bf4a5342c54630923f4d91659c0ff8ea1b --- /dev/null +++ b/tools/moltemplate/README.md @@ -0,0 +1,100 @@ +Moltemplate +=========== + +## Description + +Moltemplate is a cross-platform text-based molecule builder for LAMMPS. + +## Typical usage + + moltemplate.sh [-atomstyle style] [-pdb/-xyz coord_file] [-vmd] system.lt + +## Web page + +Documentation, examples, and supporting code can be downloaded at: + +http://www.moltemplate.org + +## Requirements + +Moltemplate requires the Bourne-shell, and a recent version of python +(2.7, 3.0 or higher), and can run on OS X, linux, or windows. (...if a +suitable shell environment has been installed. See below.) + + +## INSTALLATION INSTRUCTIONS + +This directory should contain 3 folders: + + moltemplate/ <-- source code and force fields + doc/ <-- the moltemplate reference manual + examples/ <-- examples built with moltemplate + +There are two ways to install moltemplate: + +## Installation using pip +If you are familiar with pip, then run the following command from within the directory where this README file is located: + + pip install . + +If you receive an error regarding permissions, then run pip with the "--user" argument: + + pip install . --user + +Make sure that your default pip install bin directory is in your PATH. (This is usually something like ~/.local/bin/ or ~/anaconda3/bin/. If you have installed anaconda, this will be done for you automatically.) Later, you can uninstall moltemplate using: + + pip uninstall moltemplate + +If you continue to run into difficulty, try installing moltemplate into a temporary virtual environment by installing "virtualenv", downloading moltemplate (to "~/moltemplate" in the example below), and running these commands: + + cd ~/moltemplate + virtualenv venv + source venv/bin/activate + pip install . + #(now do something useful with moltemplate...) + +(You will have to "run source ~/moltemplate/venv/bin/activate" beforehand every time you want to run moltemplate.) If all this fails, then try installing moltemplate by manually updating your \$PATH environment variable. Instructions for doing that are included below. + +## Manual installation: + +Alternatively, you can edit your $PATH environment variable manually to +include the subdirectory where the "moltemplate.sh" script is located, +as well as the subdirectory where most of the python scripts are located. +Suppose the directory with this README file is named "moltemplate" +and is located in your home directory: + +If you use the bash shell, typically you would edit your +`~/.profile`, `~/.bash_profile` or `~/.bashrc` files +to contain the following lines: + + export PATH="$PATH:$HOME/moltemplate/moltemplate" + export PATH="$PATH:$HOME/moltemplate/moltemplate/scripts" + +If you use the tcsh shell, typically you would edit your +`~/.login`, `~/.cshrc`, or `~/.tcshrc` files to contain the following lines: + + setenv PATH "$PATH:$HOME/moltemplate/moltemplate" + setenv PATH "$PATH:$HOME/moltemplate/moltemplate/scripts" + +After making these changes, you may need to start a new terminal (shell) for the changes to take effect. If you do not know what a `PATH` environment variable is and are curious, read: + http://www.linfo.org/path_env_var.html +(I receive this question often.) + + +### WINDOWS installation suggestions + +You can install both moltemplate and LAMMPS in windows, but you will first need to install the BASH shell environment on your computer. If you are using Windows 10 or later, try installing the "Windows Subsystem for Linux (WSL)" + +https://solarianprogrammer.com/2017/04/15/install-wsl-windows-subsystem-for-linux/ +https://msdn.microsoft.com/en-us/commandline/wsl/faq + +If you are using an older version of windows, try following the tutorial written by Yanqing Fu instead: + +https://sourceforge.net/p/lammps/mailman/message/32599824/ + +To use LAMMPS and moltemplate, You will also need to install (and learn how to use) a text editor. (Word, Wordpad, and Notepad will not work.) Popular free text editors which you can safely install and run from within the WSL terminal include: **nano**, **ne**, **emacs**, **vim**, and **jove**. (Unfortunately, as of 2017-5-17, [graphical unix-friendly text editors such as Atom, VSCode, Notepad++, and sublime won't work with WSL, and may cause file system corruption. Avoid these editors for now.](https://www.reddit.com/r/bashonubuntuonwindows/comments/6bu1d1/since_we_shouldnt_edit_files_stored_in_wsl_with/)) + +## License + +Moltemplate is available under the terms of the open-source 3-clause BSD +license. (See `LICENSE.md`.) diff --git a/tools/moltemplate/moltemplate_manual.pdf b/tools/moltemplate/doc/moltemplate_manual.pdf similarity index 51% rename from tools/moltemplate/moltemplate_manual.pdf rename to tools/moltemplate/doc/moltemplate_manual.pdf index 14246f1559ec6088013e94c4bed4f9040bdc66b5..b0122a3fd875a12c698a128a9646c50eae7a4351 100644 Binary files a/tools/moltemplate/moltemplate_manual.pdf and b/tools/moltemplate/doc/moltemplate_manual.pdf differ diff --git a/tools/moltemplate/doc/moltemplate_manual_src/2bead_peptide.jpg b/tools/moltemplate/doc/moltemplate_manual_src/2bead_peptide.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e73c51d0ae6e29ce66a7ea5fd67e35d62e1c81a4 Binary files /dev/null and b/tools/moltemplate/doc/moltemplate_manual_src/2bead_peptide.jpg differ diff --git a/tools/moltemplate/doc/moltemplate_manual_src/2bead_peptides_nopbc_t=0_LR.jpg b/tools/moltemplate/doc/moltemplate_manual_src/2bead_peptides_nopbc_t=0_LR.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a5fb40ae7c2b07655ce5548838dcef2ff4a1e183 Binary files /dev/null and b/tools/moltemplate/doc/moltemplate_manual_src/2bead_peptides_nopbc_t=0_LR.jpg differ diff --git a/tools/moltemplate/doc/moltemplate_manual_src/2bead_peptides_t=100ps_LR.jpg b/tools/moltemplate/doc/moltemplate_manual_src/2bead_peptides_t=100ps_LR.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b978b76d408e76f414bb189f08753803e740aa93 Binary files /dev/null and b/tools/moltemplate/doc/moltemplate_manual_src/2bead_peptides_t=100ps_LR.jpg differ diff --git a/tools/moltemplate/doc/moltemplate_manual_src/2bead_residue.jpg b/tools/moltemplate/doc/moltemplate_manual_src/2bead_residue.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7666e22bf7a9daca45b2f48e4657793f341daeef Binary files /dev/null and b/tools/moltemplate/doc/moltemplate_manual_src/2bead_residue.jpg differ diff --git a/tools/moltemplate/doc/moltemplate_manual_src/README.txt b/tools/moltemplate/doc/moltemplate_manual_src/README.txt new file mode 100644 index 0000000000000000000000000000000000000000..a54c345630764ea80f51db3f27a3c6b494f797bd --- /dev/null +++ b/tools/moltemplate/doc/moltemplate_manual_src/README.txt @@ -0,0 +1,10 @@ +To create the file "moltemplate_manual.pdf", install pdflatex and run +these commands: + +pdflatex moltemplate_manual +pdflatex moltemplate_manual +bibtex moltemplate_manual +bibtex moltemplate_manual +pdflatex moltemplate_manual +pdflatex moltemplate_manual + diff --git a/tools/moltemplate/doc/moltemplate_manual_src/author_email.png b/tools/moltemplate/doc/moltemplate_manual_src/author_email.png new file mode 100644 index 0000000000000000000000000000000000000000..a09b3df6dc30c1c6cc911f8ad74f6557e8b8af4b Binary files /dev/null and b/tools/moltemplate/doc/moltemplate_manual_src/author_email.png differ diff --git a/tools/moltemplate/examples/coarse_grained_examples/abstract_translocation/images/solvent_LR.jpg b/tools/moltemplate/doc/moltemplate_manual_src/delete_holes1.jpg similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/abstract_translocation/images/solvent_LR.jpg rename to tools/moltemplate/doc/moltemplate_manual_src/delete_holes1.jpg diff --git a/tools/moltemplate/doc/moltemplate_manual_src/dimer+dimer0_transparent_LR.jpg b/tools/moltemplate/doc/moltemplate_manual_src/dimer+dimer0_transparent_LR.jpg new file mode 100644 index 0000000000000000000000000000000000000000..2369e2de13196329f7958c78a03a75cf46ccc918 Binary files /dev/null and b/tools/moltemplate/doc/moltemplate_manual_src/dimer+dimer0_transparent_LR.jpg differ diff --git a/tools/moltemplate/doc/moltemplate_manual_src/dimer_LR.jpg b/tools/moltemplate/doc/moltemplate_manual_src/dimer_LR.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c4aa70ce162d72e388a2d4ab795d023743535040 Binary files /dev/null and b/tools/moltemplate/doc/moltemplate_manual_src/dimer_LR.jpg differ diff --git a/tools/moltemplate/doc/moltemplate_manual_src/lipid_bilayer_mixture.jpg b/tools/moltemplate/doc/moltemplate_manual_src/lipid_bilayer_mixture.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e6f7e96e9a03ef8b237281d3574e1500677883d1 Binary files /dev/null and b/tools/moltemplate/doc/moltemplate_manual_src/lipid_bilayer_mixture.jpg differ diff --git a/tools/moltemplate/doc/moltemplate_manual_src/lipid_bilayer_vacancies.jpg b/tools/moltemplate/doc/moltemplate_manual_src/lipid_bilayer_vacancies.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f7bfbebe9e164d541318963de6f0c32e5c505893 Binary files /dev/null and b/tools/moltemplate/doc/moltemplate_manual_src/lipid_bilayer_vacancies.jpg differ diff --git a/tools/moltemplate/doc/moltemplate_manual_src/moltemplate_manual.tex b/tools/moltemplate/doc/moltemplate_manual_src/moltemplate_manual.tex new file mode 100644 index 0000000000000000000000000000000000000000..10a3d4fd38e096b174b1258c22e14d72c2a8fe83 --- /dev/null +++ b/tools/moltemplate/doc/moltemplate_manual_src/moltemplate_manual.tex @@ -0,0 +1,5523 @@ +\documentclass[11pt]{article} +%\documentclass[11pt,twocolumn,letterpaper]{article} +\setlength{\columnwidth}{8.6cm} +\setlength{\textheight}{23cm} +\setlength{\topmargin}{-0.8cm} +%\documentclass[11pt]{article} +\usepackage{textcomp} +\newcommand{\textapprox}{\raisebox{0.5ex}{\texttildelow}} +\usepackage{graphicx} +\usepackage{verbatim} +\usepackage{color} +\usepackage{url} +\usepackage{longtable} +\usepackage{hyperref} +%\usepackage{booktabs} +%\usepackage{amssymb,amsmath} +%\usepackage[dvips]{color, graphics, epsfig, graphicx} +\bibliographystyle{unsrt} +%\bibliographystyle{apsrev.bst} +%\topmargin 0mm +%\textheight 220mm +%\textwidth 160mm +%\oddsidemargin 5mm +%\mathsurround 2pt + +%\renewcommand{\textfraction}{0.10} +%\renewcommand{\topfraction}{0.85} +%\renewcommand{\bottomfraction}{0.65} +%\renewcommand{\floatpagefraction}{0.60} +%\renewcommand{\thetable}{\Roman{table}} + +%\setcounter{figure}{7} +%\setcounter{table}{8} + +\begin{document} + +\author{ + Andrew Jewett, \\ + Jensen Lab (Caltech), Shea Lab (UCSB) \\ +\includegraphics[height=0.3cm]{author_email.png} +} +\date \today + + +\title{Moltemplate Manual} + + + +\maketitle + + %This manual (like moltemplate) is under development. + +\tableofcontents + + %Additionally, several working examples of molecules created + %with moltemplate can be found in the ``examples/'' subdirectory + %(which is distributed with moltemplate). + %These were created to supplement the moltemplate documentation. + +\section{Introduction} + +Moltemplate is a general molecule builder and force-field database system for LAMMPS. A simple file format has been created to store molecule definitions and force-fields (the LAMMPS-template format, “LT”). +LT files are templates containing \textit{all} of the text relevant to a particular molecule (including coordinates, bond-topology, angles, force-field parameters, constraints, groups and fixes). Moltemplate can then duplicate the molecule, customize it, and use it as a building-block for constructing larger, more complex molecules. (These molecules can be used to build even larger molecules.) Once built, individual molecules and subunits can be customized (atoms and bonds, and subunits can be inserted, moved, deleted and/or replaced). + +Popular force-fields such as AMBER GAFF and OPLS-AA have been converted into LT format, allowing users to quickly create molecules using moltemplate. (With help, more popular force-fields can be converted.) This way moltemplate users can build a molecule by specifying only a list of atoms in the molecule and the bonds connecting them. End-users are not required to manually specify all of the force-field parameters. However they still have the freedom to easily customize individual interactions when needed. + %or generate all of its angle, dihedral, improper interactions manually. + +Moltemplate is extremely flexible. It supports all LAMMPS force-field styles and nearly all atom-styles (now and in the future). + + % OLD VERSION + %Moltemplate is a cross-platform text-based molecule builder for LAMMPS. It is typically used for building coarse-grained toy molecular models. Moltemplate users have access to (nearly) all of the standard and non-standard (custom, user-created) force-field and features available in LAMMPS. + % + %\textit{(Although optimized for LAMMPS, moltemplate is a general text manipulation tool which, in principle, could be used to generate topology and force-field files for other simulation programs. Please email \includegraphics[height=0.3cm]{author_email.png} if you want to attempt this.)} + % + %A file format has been created to store molecule definitions (the LAMMPS-template format, ``LT''). Typical ``.LT'' files contain atom coordinates, topology data (bonds), LAMMPS force-field data, and other LAMMPS settings (such as group definitions, fixes, and user-defined input files) for a type of molecule (or a molecular subunit). Molecules can be copied, combined, and linked together to define new molecules. (These can be used to define larger molecules.) + %%Unlimited levels of object composition, nesting, and inheritance are supported.) + %Once built, individual molecules and subunits can be customized (atoms and bonds, and subunits can be moved, deleted and replaced). + + +Moltemplate requires the Bourne-shell, and a recent version of python (2.7 or 3.0 or higher), and can run on OS X, linux, or windows (if a suitable shell environment has been installed). +\textbf{A substantial amount of memory is needed} to run moltemplate. +For example, building a system of 1000000 atoms typically requires +between 3 and 12 GB of \textit{available} memory. +(This depends on the number of bonds, molecules, and angular interactions. + See section \ref{sec:limitations} for details.) +%Memory requirements are discussed in section \ref{sec:limitations}. + + %Moltemplate is a text-manipulation tool for generating + %input files for molecular dynamics simulation programs. + %Moltemplate has been optimized for constructing input files for LAMMPS. + %from constituent parts. + %Molecules are stored in a hierarchical, + %object-oriented, + %template-based file format (``.LT''). + % %using an object-oriented style + % %which can mimic many popular molecular file formats. + % %such as PDB, amber TOP, Gromacs TOP, + % %PSF files, and some limited xplor parameter files. + % %existing LAMMPS file formats. + %Typical ``.LT'' files contains LAMMPS force-field data, + %topology data, and other settings (such as fixes and groups) + %for any molecule or repeating subunit. + %These subunits can be combined together + %to build larger, more complicated systems. + %With unlimited levels of nesting, object composition, and inheritance, + %these objects can be combined to build + %elaborate heterogeneous molecular assemblies. + + +% %%Moltemplate can also be used to automatically detect +% %%topological relationships between bonded atoms and determine +% %%(the parameters of) the forces between them accordingly. +% %Moltemplate also extends basic LAMMPS functionality. +% %It can also be used to automatically detect +% %bonded many-body interactions (such as dihedrals), +% %and programmed to determine (the parameters of) +% %the forces between them according to atom and bond type. +% %This makes the LT-file format useful in general +% %for storing force-field parameters. +% +%LT files can also be used for storing force-fields +%for molecules whose topology has not yet been determined. +%Moltemplate automatically detects +% % topological relationships between bonded atoms and +%bonded many-body interactions (such as dihedrals), +%and can determine (the parameters of) +%the forces between them according to atom and bond type. +%Once a system's geometry and bonds have been specified, +%a user can apply completely different force fields to the existing system +%by loading a different LT file containing force-field parameters. +% + +\subsection{Converting \textit{LT files} to LAMMPS input/data files} +The moltemplate.sh program converts LT-files (which contain +molecule definitions) into complete LAMMPS input-scripts and data-files: +\begin{verbatim} +moltemplate.sh -atomstyle "full" system.lt +\end{verbatim} + or +\begin{verbatim} +moltemplate.sh -xyz coords.xyz -atomstyle "full" -vmd system.lt +\end{verbatim} +In the first example, the coordinates of the atoms in the +system are built from commands inside the "system.lt" file. +In the second example coordinates for the atoms are read from an XYZ-file, +and then invokes VMD to visualize the system just created. +(PDB-files and other coordinate formats are also supported. +Note: The "full" atom style was used in this example, but other +LAMMPS atom styles are supported, including hybrid styles.) + +Either of these commands will construct a LAMMPS data file and a +LAMMPS input script (and possibly one or more auxiliary input files), +which can be directly run in LAMMPS with minimal editing. + + +\subsection{Converting LAMMPS input/data files to \textit{LT files}} +Existing LAMMPS input/data files can be converted into + %lammps-template +``.LT'' files using the ``ltemplify.py'' utility. +(\textit{Some additional manual editing may be required. + See appendix \ref{sec:ltemplify}.}) + % Some manual editing of the resulting LT files may be required, + % especially when exotic or many-body pair\_styles are used.) + + +%\subsection*{Strengths} +%Moltemplate is especially useful for defining new, exotic +%coarse-grained molecular models natively from scratch. +%Molecules defined this way have access to (nearly) +%\textit{all} of the +% %extraordinary +% bewildering +%menu of features and force-fields +%available in LAMMPS. This includes custom LAMMPS features +%created by end-users (now and probably in the future). +% +% %The ``.LT'' file format is \textit{not} specific to LAMMPS and +% %can also be useful for generating other files which store molecular data. +% %LT files are text templates. +%LT files are very flexible and can mimic almost any text file format +%which uses simple numerical counters. +%End users can accommodate gradual changes in the LAMMPS input and data file +%formats by altering their own molecule templates +%as LAMMPS independently grows and evolves. + +%\subsection*{Limitations} +% %Little effort has yet been made to allow moltemplate.sh to read and write +% %simulation files from other programs. +%Moltemplate.sh was \textit{not} designed to work seamlessly with +%files from other simulation or visualization programs +%(although such functionality could be added). +%Moltemplate.sh does not provide a quick or convenient way to perform an +%all-atom simulation of proteins or nucleic-acids in an box of water +%(for example). +%Moltemplate has only limited support for generating molecular geometry +%and it does not have a graphical interface. +%For these tasks, external utilities are very helpful. + +\subsection*{Additional tools} +The VMD topotools plugin \cite{topotools} is useful for +converting PDB files into LAMMPS format. These files can then +be converted to ``LT'' format using the ``ltemplify.py'' utility. +VMD \cite{VMD} and topotools are also useful for visualizing +the data files created by moltemplate.sh +(See section \ref{sec:vmd_topotools}.) + %Documentation for doing this is included + %in the \textit{online examples} discussed below. + + %Pizza.py \cite{pizzapy}, has a utility for building 1-bead polymer melts. + +The PACKMOL \cite{packmol} program is useful for generating +coordinates of dense heterogeneous mixtures of molecules, +which can be read by moltemplate. +(The VMD ``solvate'' plugin may also be helpful.) + %There are many other utilities, + %graphical modeling programs, + %and numerous scripts (which are in various stages of maintenance) + %which may be useful for file format conversion, and + %pre-and-post processing and analysis. + %Many other tools exist (not covered here) which can convert file formats + %used by other molecular dynamics software programs into LAMMPS format. + +\subsection*{Examples} + + %When using ``moltemplate.sh'' it does not hurt to have + %a modest familiarity LAMMPS and it's file formats, + %because this mirrors the ``.LT'' file format described here. + +%This manual assumes users have some basic familiarity with LAMMPS. +%This manual explains in detail how to use moltemplate.sh to build LAMMPS +%files from scratch, +%but it does not discuss how to run LAMMPS +%or how to visualize the results. +%provides only a very brief overview +%of how to run simple simulations in LAMMPS +%(see sections \ref{sec:spce_example} and \ref{sec:run}), +%and it does not discuss how to visualize or analyze LAMMPS +%simulation trajectories. + + +This manual explains in detail how to use moltemplate.sh to build LAMMPS +files from scratch. +You will also need to learn how to \textit{run} +LAMMPS and visualize your results. +%(see sections \ref{sec:spce_example} and \ref{sec:run}), +%It is not a comprehensive reference for using LAMMPS. +%For users who are not familiar with LAMMPS, +Section \ref{sec:tutorial} contains a brief tutorial +which explains how to build a box of water using moltemplate and +visualize initial conformation, run LAMMPS, and then visualize the trajectory. +Several complete working examples (with images and readme files) +which can be downloaded and modified are available online at: +\url{http://moltemplate.org/visual_examples.html} +A more comprehensive list of examples is included in +the ``examples/'' subdirectory distributed with moltemplate. +%The official LAMMPS examples and user manual +%are also a valuable reference. +These examples are a good starting point for learning LAMMPS and moltemplate. + + +\subsection*{License} +Moltemplate.sh is publicly available at \url{http://moltemplate.org} +under the terms of the open-source 3-clause BSD license. +\url{http://www.opensource.org/licenses/BSD-3-Clause} + + + + + + + +% \subsubsection*{Using ``lttree.py'' instead of ``moltemplate.sh''} +% The format of an ``.LT'' file closely mimics the syntax in +% current LAMMPS data and input script files (as of early 2013). +% However LAMMPS file formats are constantly changing +% as users add their own custom features to LAMMPS. +% (In addition, there are some currently known limitations of +% moltemplate.sh, which are discussed in section \ref{sec:limitations}.) +% %However this file format must be flexible enough +% %to handle potentially radical syntax changes in the future. +% %End users who add new features to LAMMPS may also modify the syntax +% %of these input files, and will likely introduce new file formats. +% Consequently, we also provide several simple python scripts: +% %(which should remain useful when/if moltemplate.sh breaks) +% ``ttree.py'', ``lttree.py'', and ``nbody\_by\_type.py''. +% %\begin{list} +% %\item +% %``ttree.py'', is a general text manipulation +% %tool which prints out the text contained in the +% %``write()'' and ``write\_once()'', commands in an LT file, +% %and substitutes numerical values into the \$ and \@ variables +% %contained inside. +% %\item +% %``lttree.py'' is a variant of ``ttree.py'' +% % %understand LAMMPS atom\_style syntax and +% %which also generates atomic coordinates. +% %(It process the ``.move()'' and ``.rot()'' commands.) +% %\item +% %``nbody\_by\_type.py'' is a utility which generates +% %many-body bonded interactions between atoms automatically, +% %according to the atom and bond type. +% %(It processes the ``Data Angles By Type'', +% %``Data Dihedrals By Type'', and ``Data Impropers By Type'' sections.) +% %\end{list} +% The ``ttree.py'' program is a general text manipulation tool which +% should continue to work in the distant future, +% even if the LAMMPS syntax changes radically, and ``moltemplate.sh'' breaks. +% (``ttree.py'' is nearly identical to and supports all the +% command line options used by ``moltemplate.sh'', +% with the exception of ``-pdb'', ``-xyz'', and ``-raw''.) +% %However this tool is intentionally simple and ignorant about LAMMPS. +% %This allows programmers to add features to LAMMPS without ever +% %breaking the ``.LT'' file format. +% %(although you may have to sacrifice some convenience +% %that using moltemplate.sh provides). +% A tutorial for using these programs +% is provided in appendix \ref{sec:ttree}. + + + + +\section{Installation} + +\subsection*{Obtaining Moltemplate} +\textit{If you don't already have moltemplate}, +the most up-to-date version can be downloaded at +\url{http://www.moltemplate.org} +If you obtained moltemplate as a .tar.gz file, +(as opposed to github or pip), you can unpack it using: +\begin{verbatim} +tar -xzvf moltemplate_2017-8-22.tar.gz +\end{verbatim} +(The date will vary from version to version.) +Alternately, if you obtained moltemplate bundled with LAMMPS, +then the \textit{``moltemplate''} directory will probably be located +in the \textit{``tools''} subdirectory of your lammps installation. + +There are two ways to install moltemplate: + +\subsubsection*{Installation Method 1 (pip)} + +\textit{If you are familiar with pip}, then run the following command from within outermost directory: +\begin{verbatim} +pip install . +\end{verbatim} +\textit{In order for this to work, this directory should contain a file named ``\textbf{setup.py}''.} (If no such file exists, then either proceed to ``Installation Method 2'' below, or download a newer version of moltemplate.) If you receive an error regarding permissions, then run pip this way instead: +\begin{verbatim} +pip install . --user +\end{verbatim} +Make sure that your default pip install bin directory is in your PATH. (This is usually something like \textapprox/.local/bin/ or \textapprox/anaconda3/bin/. If you have installed anaconda, your PATH should have been updated for you automatically.) Later, you can uninstall moltemplate using: +\begin{verbatim} +pip uninstall moltemplate +\end{verbatim} + +\textit{If you continue to run into difficulty}, try installing moltemplate into a temporary virtual environment by installing ``virtualenv'', downloading moltemplate (to ``\textapprox/moltemplate'' in the example below), and running these commands: +\begin{verbatim} +cd ~/moltemplate +virtualenv venv +source venv/bin/activate +pip install . + #(now do something useful with moltemplate...) +\end{verbatim} +You will have to ``run source \textapprox/moltemplate/venv/bin/activate'' beforehand whenver you want to run moltemplate. If all this fails, then try installing moltemplate by manually updating your \$PATH environment variable. Instructions for doing that are included below. + + +\subsubsection*{Installation Method 2} + +Alternatively, you can edit your PATH variable manually to include +the subdirectory where the moltemplate.sh script is located +(typically ``\textapprox/moltemplate/moltemplate/scripts/''), as well as +the directory containing the most of the python scripts (``\textapprox/moltemplate/moltemplate/''). +Suppose the directory where with the README file is named ``moltemplate'' +and it is located in your home directory: + +If you use the \textbf{bash} shell, typically you would edit your +\mbox{$\sim$/.bash\_profile}, +\mbox{$\sim$/.bashrc}, or +\mbox{$\sim$/.profile} files +and append the following lines: +\begin{verbatim} +export PATH="$PATH:$HOME/moltemplate/moltemplate" +export PATH="$PATH:$HOME/moltemplate/moltemplate/scripts" +\end{verbatim} +If instead you use the \textbf{tcsh} shell, typically you would edit your +\mbox{$\sim$/.login}, +\mbox{$\sim$/.cshrc}, or +\mbox{$\sim$/.tcshrc} files +and append the following lines: +\begin{verbatim} +setenv PATH "$PATH:$HOME/moltemplate/moltemplate" +setenv PATH "$PATH:$HOME/moltemplate/moltemplate/scripts" +\end{verbatim} + + + +\textit{Note: You may need to log out and then +log back in again for the changes to take effect.} + + +\subsubsection*{WINDOWS installation suggestions} + +You can install both moltemplate and LAMMPS in windows, but you will first need to install the BASH shell environment on your computer. If you are using Windows 10 or later, try installing the "Windows Subsystem for Linux (WSL)" +\url{https://solarianprogrammer.com/2017/04/15/install-wsl-windows-subsystem-for-linux/} +For more details, see the WSL FAQ: +\url{https://msdn.microsoft.com/en-us/commandline/wsl/faq} +If you are using an older version of windows, try following the tutorial written by Yanqing Fu instead: +\url{https://sourceforge.net/p/lammps/mailman/message/32599824/} + +To use LAMMPS and moltemplate, You will also need to install (and learn how to use) a text editor. (Word, Wordpad, and Notepad will not work.) Popular free text editors which you can safely install and run from within the WSL terminal include: nano, ne, emacs, vim, and jove. (Unfortunately, as of 2017-5-17, graphical unix-friendly text editors such as Atom, VSCode, Notepad++, and sublime won't work with WSL, and may cause file system corruption. Avoid these editors for now. (\url{https://www.reddit.com/r/bashonubuntuonwindows/comments/6bu1d1/since_we_shouldnt_edit_files_stored_in_wsl_with/}) + + +%\pagebreak +\section{Quick reference \textit{(skip on first reading)}} + +\section*{ +\textit{Note: New users should skip to section \ref{sec:tutorial}} +} + + +\subsection{Moltemplate commands} + +%\begin{table} +\begin{longtable}[h]{l|p{9cm}} +\textbf{command} & \textbf{meaning} +\\ +\hline +\hline +\begin{tabular}[t]{l} +\\ +\textit{MolType} \textbf{\{} \\ +\\ +\hspace{0.35cm} \textit{content} ... \\ +\\ +\textbf{\}} \\ +\end{tabular} +& +Define a new type of molecule (or namespace) named \textit{MolType}. +The text enclosed in curly brackets (\textit{content}) +typically contains multiple write(), write\_once() +commands to define Atoms, Bonds, Angles, Coeffs, etc... +\textit{(If that molecule type exists already, +then this will append additional \textbf{content} to its definition.)} +\textbf{new} and \textbf{delete} commands can be used +to create or delete molecular subunits \textit{within} this molecule. +(See the \textit{SPCE}, \textit{Monomer}, and \textit{Butane} + molecules, and the \textit{TraPPE} namespace + defined in sections \ref{sec:spce_example}, \ref{sec:2bead}, + \ref{sec:inheritance}, \& \ref{sec:trappe}. +\\ +\hline +\textit{mol\_name} = \textbf{new} \textit{MolType} & +Create (instantiate) a copy of a molecule of type \textit{MolType} +and name it \textit{mol\_name}. +(See section \ref{sec:spce_example}.) +\\ +\hline +\textit{mol\_name} = \textbf{new} \textit{MolType}.\textit{xform()} & +Create a copy of a molecule and +apply coordinate transformation \textit{xform()} to its coordinates. +(See sections \ref{sec:coords_intro} and \ref{sec:xforms_table}.) +\\ +\hline +\textit{molecules} = + \textbf{new} \textit{MolType} [\textit{N}].\textit{xform()}& +Create \textit{N} copies of a molecule of type \textit{MolType} +and name them +\textit{molecules[0]}, \textit{molecules[1]}, \textit{molecules[2]}... +Coordinates in each successive copy are cumulatively transformed +according to \textit{xform()}. +(See sections \ref{sec:coords_intro}, \ref{sec:arrays+xform} +and \ref{sec:xforms_table}.) +Multidimensional arrays are also allowed. +(See section \ref{sec:multidimensional_arrays}.) +\\ +\hline +\begin{tabular}[t]{l} +\textit{molecules} = \textbf{new} \textit{MolType.xform1()} +\\ +\hspace{3.7cm} \textbf{[\textit{N}]}.\textit{xform2()} +\\ +\end{tabular} +& +Apply coordinate transformations (\mbox{\textit{xform1()}} +to \mbox{\textit{MolType}}, before making \textit{N} copies +of it while cumulatively applying \mbox{\textit{xform2()}}. +(See section \ref{sec:xform+arrays+xform} and \ref{sec:xform_order}.) +\\ +\hline +\begin{tabular}[t]{l} +\textit{molecules} = \textbf{new} +\\ + \hspace{0.6cm} \textbf{random}([\textit{M1.xf1()}, +\\ + \hspace{2.3cm} \textit{M2.xf2()}, +\\ + \hspace{2.3cm} \textit{M3.xf2()},...], +\\ + \hspace{2.25cm} [$p_1$, $p_2$, $p_3$,...], +\\ + \hspace{2.25cm} \textit{seed}) +\\ + \hspace{0.6cm} \textbf{[\textit{N}]}.\textit{xform()} +\end{tabular} +& +Generate an array of \textit{N} molecules randomly selected from +\mbox{\textit{M1,M2,M3,...}} +with probabilities \mbox{$p_1, p_2, p_3$...}, +using (optional) initial coordinate transformations +\textit{xf1(), xf2(), xf3, ...}, and applying transformation \textit{xform()} +cumulatively thereafter. +This also works with multidimensional arrays. +\textbf{You can directly specify the number of each type of molecule} +by replacing the list of probabilities \mbox{$[p_1, p_2, p_3\ldots]$}, +with a list of integers \mbox{$[n_1, n_2, n_3\ldots]$}. +(See sections \ref{sec:random_arrays} and \ref{sec:random_advanced}.) +\\ +\hline +\textit{NewMol} = \textit{OldMol} & +Create a new molecule \textbf{type} based on an existing molecule type. +Additional atoms (or bonds, etc...) can be added later to the new molecule +using \mbox{NewMol \{\textit{more\ content}...\}}. +(See section \ref{sec:molecule_customization}.) +\\ +\hline +\textit{NewMol} = \textit{OldMol}.\textit{xform()} +& +Create a new molecule \textbf{type} based on an existing molecule type, +and apply coordinate transformation \textit{xform()} to it. +(See section \ref{sec:molecule_customization}.) + % \textit{This feature is experimental as of 2012-9-28}.) +\\ +\hline + %\textit{NewMol} \textbf{inherits} \textit{Mol1} \textit{Mol2} \mbox{\{...\}} & +\begin{tabular}[t]{l} +\textit{NewMol} \textbf{inherits} \textit{Mol1} \textit{Mol2} ... \{ \\ +\\ +\hspace{0.35cm} \textit{additional content} ... \\ +\\ +\} \\ +\end{tabular} +& +Create a new molecule \textbf{type} based on multiple existing molecule types. +Atom types, bond types, angle types (etc) which are defined in +\textit{Mol1}, or \textit{Mol2}, ... are available inside the +new molecule. +\textit{Additional content} +(including more \textit{write()} or \textit{write\_once()} +or \textit{new} commands) +follows within the curly brackets. +(See sections \ref{sec:inheritance_intro}, +\ref{sec:inheritance}, and \ref{sec:multiple_inheritance}) +\\ +\hline +\textit{MolType}.\textit{xform()} +& +Apply the coordinate transform \textit{xform()} to the coordinates +of the atoms in all molecules of type \textit{MolType}. +(See section \ref{sec:molecule_customization}.) + % \textit{This feature is experimental as of 2012-9-28}.) +\\ +\hline +\textit{molecule}.\textit{xform()} +& +Apply the coordinate transform \textit{xform()} +to the coordinates in \textit{molecule}. +(Here \textit{molecule} refers to a specific instance or copy of + a particular molecule type. +See sections \ref{sec:custom_xform} and \ref{sec:coords_intro}.) +\\ +\hline +\textit{molecules}[\textit{range}].\textit{xform()} +& +Apply the coordinate transform \textit{xform()} +to the coordinates of molecules specified by +\mbox{\textit{molecule}[\textit{range}]}. +(This also works for multidimensional arrays. +See sections \ref{sec:array_wildcards_intro} and \ref{sec:custom_xform}.) +\\ +\hline +\textbf{delete} \textit{molecule} +& +Delete the \textit{molecule} instance. +(This command can appear inside a molecule's definition + to delete a specific molecular subunit within a molecule. In that case, + it will be carried out in every copy of that molecule type. + \textbf{delete} can also be used to delete specific + atoms, bonds, angles, dihedrals, and improper interactions.) +See section \ref{sec:delete}. +\\ +\hline +\textbf{delete} \textit{molecules}[\textit{range}] +& +Delete a range of molecules specified by +\mbox{\textit{molecule}[\textit{range}]}. +(This also works for multidimensional arrays. + See sections \ref{sec:delete} and \ref{sec:delete_holes}.) +\\ +\hline + %\mbox{write\_once}('\textit{file}') \mbox{$\{$\textit{text}\ldots$\}$} & +\begin{tabular}[t]{l} +\textbf{write\_once}('\textit{file}') \{ \\ +\hspace{0.35cm} \textit{text} ... \\ +\} \\ +\end{tabular} & +Write the text enclosed in curly brackets \mbox{$\{\ldots\}$} +to file \mbox{$file$}. +The \textit{text} can contain @variables which are replaced by integers. +(See sections \ref{sec:write} and \ref{sec:variables}.) +\\ +\hline + %\textit{write}('file') \mbox{$\{text\ldots{}\}$} & +\begin{tabular}[t]{l} +\textbf{write}('\textit{file}') $\{$ \\ +\hspace{0.35cm} \textit{text} ... \\ +$\}$ \\ +\end{tabular} & +Write the text enclosed in curly brackets \mbox{$\{\ldots\}$} +to file \textit{file}. +\textit{This is done every time a new copy of this molecule is +created using the ``new'' command.} +The \textit{text} can contain either @variables or \$variables +which will be replaced by integers. +(See sections \ref{sec:write} and \ref{sec:variables}.) +\\ +\hline +\multicolumn{2}{p{16.5cm}} { +Note: \textit{file} names beginning with ``Data '' or ``In '' +(such as ``Data Atoms'' or ``In Settings'') are inserted +into the relevant section of the LAMMPS data file or input script. +(See section \ref{sec:DataIn}.) +} +\\ +\hline +\textbf{include} \textit{file} +& +Insert the contents of file \textit{file} here. (Quotes optional.) +\\ +\hline +\textbf{import} \textit{file} +& +Insert the contents of file \textit{file} here, +preventing circular inclusions. +\textit{(recommended)} +\\ +\hline +\textbf{using namespace} \textit{X} +& +This enables you to refer to any of the molecule types, +defined within a \textbf{namespace} object (\textit{X} in this example), +\textit{without} needing to refer to these objects by their full path. + %(Unfortunately, atom types, or bond, angle, dihedral, or improper types + %must still be referred to explicitly, by their full path.) + %%(``Namespace objects'' are moltemplate objects containing + %% only molecule definitions.) +(This does not work for atom types. +See section \ref{sec:using_namespaces}.) +\\ +\hline +\begin{tabular}[t]{l} +\textbf{category} \textit{\$catname}($i_0$, $\Delta$) +\\ +or \\ +\textbf{category} \textit{@catname}($i_0$, $\Delta$) +\\ +\end{tabular} +& +Create a new variable category. +See section \ref{sec:custom_categories} for details. + %(Note: The round parenthesis containing the starting value, $i_0$, + % and the counter increment, $\Delta$, can be omitted.) +\\ +\hline +create\_var \{ \textit{variable} \} & +Create a variable specific to this molecule object. +(Typically this is used to create molecule-ID numbers, +for a molecule built from smaller components. +See section \ref{sec:2beadPeptide}.) +\\ +\hline +replace \{ \textit{oldvariable} \textit{newvariable} \} & +Allow alternate names for the same variable. This replaces all instances of \textit{oldvariable} with \textit{newvariable}. Both variable names must have a ``@'' prefix. This is typically used to reduce the length of long variables, for example to allow the shorthand ``@atom:C2'' to refer to ``@atom:C2\_bC2\_aC\_dC\_iC'' +\\ +\hline + \textbf{\#}\textit{commented text} & +All text following a ``\#'' character is treated as a comment and ignored. +\end{longtable} + +%\caption{List of moltemplate commands} +%\label{tab:commands} +%\end{table} + + + +%\pagebreak +\subsection{Common \$ and @ variables} + +(See section \ref{sec:variables} for details.) \\ +\begin{tabular}[h]{l|p{11cm}} +\textbf{variable type} & \textbf{meaning} +\\ +\hline +\hline +\$atom:\textit{name} & +A unique ID number assigned to atom \textit{name} in this molecule. +(Note: The \textit{:name} suffix can be omitted if the molecule +in which this variable appears only contains a single atom.) +%(This number is unique even if there are multiple copies of this molecule.) +\\ +\hline +@atom:\textit{type} & +A number which indicates an atom's \textit{type} + (typically used to lookup pair interactions.) +\\ +\hline +\$bond:\textit{name} & +A unique ID number assigned to bond \textit{name} +(Note: The \textit{:name} suffix can be omitted if the molecule +in which this variable appears only contains a single bond.) +\\ +\hline +@bond:\textit{type} & +A number which indicates a bond's \textit{type} +\\ +\hline +\$angle:\textit{name} & +A unique ID number assigned to angle \textit{name} +(Note: The \textit{:name} suffix can be omitted if the molecule +in which this variable appears only contains a single angle interaction.) +\\ +\hline +@angle:\textit{type} & +A number which indicates an angle's \textit{type} +\\ +\hline +\$dihedral:\textit{name} & +A unique ID number assigned to dihedral \textit{name} +(Note: The \textit{:name} suffix can be omitted if the molecule in which +this variable appears only contains a single dihedral-angle interaction.) +\\ +\hline +@dihedral:\textit{type} & +A number which indicates a dihedral's \textit{type} +\\ +\hline +\$improper:\textit{name} & +A unique ID number assigned to improper \textit{name} +(Note: The \textit{:name} suffix can be omitted if the molecule in which +this variable appears only contains a single improper interaction.) +\\ +\hline +@improper:\textit{type} & +A number which indicates an improper's \textit{type} +\\ +\hline +\$\textit{mol} \hspace{0.2cm} or \hspace{0.2cm} \$\textit{mol:.} & +This variable refers to the ID number of \textit{this} molecule object. +(See section \ref{sec:spce_example}. +Note: \mbox{\textit{``\$mol''}} is shorthand for \mbox{\textit{``\$mol:.''}}) +\\ +\hline +\$\textit{mol:}... & +The ID number assigned to the molecule to which this object belongs +(if applicable). +See sections \ref{sec:2beadPeptide}, +\ref{sec:ellipsis_mol}, +%\ref{sec:paths}, +and appendix \ref{sec:adv_variable_syntax}. +\\ +\hline +\hline +\multicolumn{2}{p{16.5cm}} { +%Variable operations +\textit{The numbers assigned to each variable are saved in the \textbf{output\_ttree/ttree\_assignments.txt} file} +%See section \ref{sec:output_ttree}. +} +\\ +\hline +\hline +\multicolumn{2}{l} { +%Variable operations +\quad \textit{\textbf{Advanced variable usage}} +} +\\ +\hline +\textit{\$category}:\textbf{query}() +& +Query the current value of the counter in this \textit{\$category} +without incrementing it. +(The ``\textit{\$category}'' is usually either \textit{\$atom}, \textit{\$bond}, \textit{\$angle}, \textit{\$dihedral}, \textit{\$improper}, or \textit{\$mol}.) +This is useful for counting the number of +atoms, bonds, angles, molecules, etc... created so far. +\\ +\hline +\textit{@category}:\textbf{query}() +& +Query the current value of the counter in this \textit{@category} +without incrementing it. +(The ``\textit{@category}'' is usually either \textit{@atom}, \textit{@bond}, \textit{@angle}, \textit{@dihedral}, or \textit{@improper}.) +This is useful for counting the number of +atom types, bond types, angle types, etc... declared so far.) +\\ +\hline +\begin{tabular}[t]{l} +\textit{@\textbf{\{}category:variable\textbf{\}}} \ or \\ +\textit{\$\textbf{\{}category:variable\textbf{\}}} \\ +\end{tabular} +& +%Counter variables in a template need not be separated by whitespace, +%%and variable names may also contain spaces and other non-standard characters. +%In these cases, variables can be enclosed +%in curly-brackets \textit{\textbf{\{\}}}. +Curly-brackets, \textit{\textbf{\{\}}}, are used to refer to variables +with non-standard delimiters or whitespace characters. +(See section \ref{sec:vardetails}.) +\\ +\hline +\begin{tabular}[t]{l} +@\{category:\textit{type}.rjust(n)\} \ or \\ +@\{category:\textit{type}.ljust(n)\} \ or \\ +\$\{category:\textit{name}.rjust(n)\} \ or \\ +\$\{category:\textit{name}.ljust(n)\} +\end{tabular} +& +Print the counter variable in a right-justified or a left-justified text-field +of fixed width $n$ characters. +(This is useful for generating text files which require fixed-width columns.) +\\ +\hline +\end{tabular} + +%\vspace{0.5cm} + + + + + +\subsection{Coordinate transformations} +\label{sec:xforms_table} + +(See sections \ref{sec:coords_intro}) and \ref{sec:arrays+xform}) for details.) +\\ +\\ +%\begin{table} +\begin{tabular}[h]{l|p{10cm}} +\textbf{suffix} & \textbf{meaning} +\\ +\hline +\hline +\textit{.move(x,y,z)} & + Add numbers \mbox{\textit{(x,y,z)}} to the coordinates of every atom +\\ +\hline + \textit{.rot($\theta,x,y,z$)} & + Rotate atom coordinates + by angle $\theta$ around axis \mbox{\textit{(x,y,z)}} + passing through the origin. + (Dipole directions are also rotated.) +\\ +\hline +\textit{.rot($\theta,x,y,z,x_0,y_0,z_0$)} & + Rotate atom coordinates + by angle $\theta$ around axis pointing in the direction + \mbox{\textit{(x,y,z)}}, + passing through the point \mbox{$(x_0,y_0,z_0)$}. + (This point will be a \textit{fixed point}.) +\\ +\hline + \textit{.rotvv($v_{1x},v_{1y},v_{1z},v_{2x},v_{2y},v_{2z}$)} & + Rotate atom coordinates + with an angle which rotates the vector $\mathbf{v}_1$ to $\mathbf{v}_2$ + (around an axis perpendicular to both $\mathbf{v}_1$ and $\mathbf{v}_2$). + %$(v_{1x},v_{1y},v_{1z})$ to $(v_{2x},v_{2y},v_{2z})$ + If you supply 3 additional numbers $x_0,y_0,z_0$, the axis of rotation + will pass through this location. +\\ +\hline +\textit{.scale(ratio)} & +Multiply all atomic coordinates by \textit{ratio}. +\textit{(\textbf{Important:} The scale() command does not update force-field +parameters such as atomic radii or bond-lengths. Dipole magnitudes are affected.)} +\\ +\hline +\textit{.scale($x_r,y_r,z_r$)} & +Multiply \mbox{\textit{x, y, z}} coordinates by +\mbox{$x_r, y_r, z_r$}, respectively +\\ +\hline +\begin{tabular}[t]{l} +\textit{.scale(ratio,$x_0,y_0,z_0$)} \ or \\ +\textit{.scale($x_r,y_r,z_r,x_0,y_0,z_0$)} \\ +\end{tabular} +& +You can supply 3 optional additional arguments +\mbox{$x_0,y_0,z_0$} which specify the point around which +you want the scaling to occur. +(This point will be a \textit{fixed point}. + Of omitted, the origin is used.) +\\ +\hline +\multicolumn{2}{c} { +\textbf{ +\textit{Note:} +Multiple transformations can be chained together into a compound operation.} +} +\\ +\multicolumn{2}{c} { +(For example: \mbox{``$.scale(2.0).rotate(45.2,1,0,0).move(25.0,0,0)$''}) +} +\\ +\multicolumn{2}{c} { +These are evaluated from left-to-right. +(See section \ref{sec:arrays+xform}.) +} +\\ +\hline +\begin{tabular}[t]{l} + \\ +\textit{push}(rot(152.3,0.79,0.43,-0.52)) \\ +% \textit{push}(move(0.0,34.1,-8.7)) \\ +monomer1 = new Monomer \\ +% pop() +% \textit{push}(rotvv(-0.01,0.96,-0.3,0,0.2,-0.98)) \\ +\textit{push}(move(0.01,35.3,-10.1)) \\ +monomer2 = new Monomer \\ +% \textit{pop } \\ +\textit{pop}() \\ +\textit{pop}() \\ +\end{tabular} +& +Coordinate transformations introduced using the \textit{push()} command are applied to molecules instantiated later (using the \textit{new}) command, and remain in effect until they are removed using the \textit{pop()} command. (And transformations appearing in arrays accumulate as well, but do not need to be removed with \textit{pop()}.) +%The \textit{push()} and \textit{pop()} commands allow the user to control exactly how coordinate transformations accumulate. The \textit{pop()} command undoes the transformations introduced in the most recent \textit{push()} command. +In this example, the first transformation, ``rot()'', is applied to both ``monomer1'' and ``monomer2''. The last transformation, ``move()'', is applied after ``rot()'' and only acts on ``monomer2''. +\\ +\hline +\end{tabular} +%\caption{Coordinate Transformation Commands} +%\label{tab:transformation_commands} +%\end{table} + + + + + +\subsection{moltemplate.sh command line arguments:} +\label{sec:args_table} +%\begin{table} +\begin{tabular}[h]{l|p{10cm}} +\textbf{argument} & \textbf{meaning} +\\ +\hline +\hline +-atomstyle \textit{style} +& +Inform moltemplate which atom\_style you are using. +(\textit{style} is "full" by default). +Other styles like "molecular" or "hybrid full dipole" are supported. +For custom atom styles, you can also specify the list of column +names manually. For example: +\textbf{-atomstyle "molid x y z atomid atomtype mux muy muz"} +Atom styles should be enclosed in quotes ("). +\\ +\hline +-raw coords.raw +& +Read all of the atomic coordinates from an external RAW file. +(RAW files are simple 3-column ASCII files contain X Y Z coordinates + for every atom, separated by spaces.) +\\ +\hline +-xyz coords.xyz +& +Read all of the atomic coordinates from an external XYZ file +(XYZ files are 4-column ascii files in ATOMTYPE X Y Z format. + The first column, ATOMTYPE, is skipped. + The first line should contain the number of atoms. + The second line is skipped. See section \ref{sec:coords_intro}.) +\\ +\hline +-pdb coords.pdb +& +Read all of the atomic coordinates from an external PDB file +(Periodic boundary conditions are also read, if present. + Atoms are sorted by the chainID, resID, insertCode, and atomID + fields on every line beginning with ``ATOM'' or ``HETATM''. + This order must match the order that the atoms appear in the data file. + See section \ref{sec:coords_intro}.) +\\ +\hline +-a '\textit{variable} \textit{value}' +& +Assign \textit{variable} to \textit{value}. +(The \textit{variable} should begin with either a @ character + or a \$ character. + Single-quotes and a space separator are required. + See appendix \ref{sec:manual_assignment}.) +\\ +\hline +-a bindings\_file' +& +The variables in column 1 of +\textit{bindings\_file} +(which is a text file) +will be assigned to +the values in column 2 of that file. +(This is useful when there are many variable assignments to make. +See appendix \ref{sec:manual_assignment}.) +% \$-variables should \textit{not} be preceded by \textbackslash\ in this case.) +\\ +\hline +\begin{tabular}[t]{l} +-b '\textit{variable} \textit{value}' +\\ +\hspace{0.35cm} \textit{or} \\ +-b \textit{bindings\_file} +\\ +\end{tabular} +& +Assign variables to values. +Unlike assignments made with ``-a'', +assignments made using ``-b'' +are non-exclusive. +(They may overlap with other variables in the same category. + See appendix \ref{sec:manual_assignment}.) +\\ +\hline + +\begin{tabular}[t]{l} +-overlay-bonds +\\ +-overlay-angles +\\ +-overlay-dihedrals +\\ +-overlay-impropers +\\ +\end{tabular} +& +By default moltemplate overwrites +duplicate bonded interactions which +involve the same set of atoms. +These flags disable that behavior. +This can be useful when you want to superimpose +multiple angular or dihedral forces on the same set of atoms +(eg. to enable more complex force fields). +\\ +\hline +-nocheck & +Do \textit{not} check for common LAMMPS/moltemplate syntax errors. +(This might be useful when using moltemplate + with simulation software other than LAMMPS, + \textit{or} to build systems which need new non-standard LAMMPS features.) +\\ +\hline +-checkff & +This forces moltemplate.sh to check that there +are valid angle and dihedral interactions defined for every +3 or 4 consecutively bonded atoms in the system +(defined in "Data Angles By Type'' and ``Data Dihedrals By Type" sections). +\\ +\hline +-vmd & +Invoke VMD after running moltemplate to view the system you have just created. +(VMD must be installed. + %This feature uses Axel Kohlmeyer's topotools plugin. + See sections \ref{sec:vmd_topotools}, \ref{sec:vmd_advanced} for details.) +\\ +\hline +%-import-path LOCATION +%& +%When a user imports an .LT file, moltemplate first looks in the directory +%where it was run, and then in the ``force\_fields'' subdirectory in the +%moltemplate installation. Additional directories can be appended using +%this command. (Multiple directories must be separated by ':' characters) +%This allows moltemplate to look for .LT files +%in other directories when using ``import''. +%(Multiple directories must be separated by ':' characters.) +%\\ +%\hline +\end{tabular} + +\begin{tabular}[h]{l|p{10cm}} +\hline +\begin{tabular}[t]{l} +-dihedral-sym file.py +\\ +-improper-sym file.py +\\ +-bond-symmetry file.py +\\ +-angle-symmetry file.py +\\ +\end{tabular} +& +Normally moltemplate.sh reorders the atoms in each bond, angle, dihedral, and improper interaction before writing them to the DATA file in order to help avoid duplicate interactions between the same atoms if listed in different but equivalent orders. Sometimes this is undesirable. \textit{\textbf{To disable this behavior, set ``file.py'' to ``None''.}} You can also manually choose alternate symmetry rules for unusual force fields. (Such as class2 force fields, dihedral\_style spherical, etc... For an example of the file format for ``file.py'', see the ``nbody\_Impropers.py'' file.) +\\ +\hline +\end{tabular} + + +%\pagebreak + + + + +\section{Introductory tutorial} +\label{sec:tutorial} +\subsection*{\textit{Summary}} +\textit{Moltemplate is based on a very simple text generator (wrapper) which +repetitively copies short text fragments into one (or more) files +and keeps track of various kinds of counters.} + +LAMMPS is a powerful but complex program with many contributors. +Moltemplate is a front-end for LAMMPS. +Moltemplate users will have to tackle the same steep learning-curve +(and occasional bugs) that other LAMMPS users must face. + %Moltemplate is (intentionally) ignorant about LAMMPS + %and molecular dynamics in general. + %Gradually other features have been added to moltemplate.sh which make + %it somewhat more convenient for generating LAMMPS simulation files. +Moltemplate files (LT files) share the same file format and +syntax structure as LAMMPS DATA files and INPUT scripts. +%Moltemplate can understand some simple LAMMPS commands, +%and it will attempt to correct user mistakes. +Moltemplate will attempt to correct user mistakes, +however users must still learn +LAMMPS syntax and write LT files which obey it. +For users who are new to LAMMPS, the easiest way +to do this is to modify an existing example +(such as the water box example in this section). +(The official LAMMPS documentation +\url{http://lammps.sandia.gov/doc/Manual.html} +is an excellent reference to look up LAMMPS commands +you see in these examples that you are not familiar with.) + +%In addition to the examples here, there are more complex examples +%distributed with the moltemplate source code.} + + +\subsection{Simulating a box of water using moltemplate and LAMMPS} +\label{sec:spce_example} + +\begin{figure}[htbp] +\centering +\includegraphics[width=2.4cm]{single_water_LR.jpg} +\caption{ +\label{fig:single_water} +Coordinates of a single water molecule in our example. +(Atomic radii not to scale.) +} +\end{figure} + + Here we show an example of a lammps-template file for water. + %``.lt'' files can store topology and force-field settings in raw LAMMPS format. +(The settings shown here are borrowed from the simple-point-charge + \cite{Berendsen++StraatsmaJPhysChem1987} SPC/E model.) + %and can be overridden or modified by + %combining this LT file with other LT files.) +In addition to coordinates, topology and force-field settings, +``LT'' files can optionally include any other kind of LAMMPS settings +including SHAKE constraints, k-space settings, and even group definitions. + %\pagebreak +\begin{verbatim} +# (NOTE: Text following '#' characters are comments) +# +# file "spce_simple.lt" +# +# H1 H2 +# \ / +# O +# + +SPCE { + + ## Atom properties and molecular topology go in the various "Data ..." sections + + # We selected "atom_style full". That means we use this column format: + # atomID molID atomType charge coordX coordY coordZ + + write("Data Atoms") { + $atom:o $mol:. @atom:O -0.8476 0.0000000 0.000000 0.00000 + $atom:h1 $mol:. @atom:H 0.4238 0.8164904 0.5773590 0.00000 + $atom:h2 $mol:. @atom:H 0.4238 -0.8164904 0.5773590 0.00000 + } + + # Variables beginning with $ or @ will be replaced by numbers LAMMPS will + # eventually read. Each of the three atoms" will be assigned unique + # atomIDs (denoted here by "$atom:o", "$atom:h1", "$atom:h2"), even if + # they belong to different molecules. However, the atom types + # (denoted "@atom:O", "@atom:H") are shared for atoms in all molecules. + # All 3 atoms share same molID number (represeted here by "$mol:.") + # however that number is different for different water molecules. + + write_once("Data Masses") { + # atomType mass + @atom:O 15.9994 + @atom:H 1.008 + } + + write("Data Bonds") { + # bondID bondType atomID1 atomID2 + $bond:oh1 @bond:OH $atom:o $atom:h1 + $bond:oh2 @bond:OH $atom:o $atom:h2 + } + + write("Data Angles") { + # angleID angleType atomID1 atomID2 atomID3 + $angle:hoh @angle:HOH $atom:h1 $atom:o $atom:h2 + } + + # --- Force-field parameters go in the "In Settings" section: --- + + write_once("In Settings") { + # -- Non-bonded (Pair) interactions -- + # atomType1 atomType2 parameter-list (epsilon, sigma) + pair_coeff @atom:O @atom:O 0.1553 3.166 + pair_coeff @atom:H @atom:H 0.0 2.058 + # (mixing rules determine interactions between types @atom:O and @atom:H) + + # -- Bonded interactions -- + # bondType parameter list (k_bond, r0) + bond_coeff @bond:OH 1000.00 1.0 + # angleType parameter-list (k_theta, theta0) + angle_coeff @angle:HOH 1000.0 109.47 + + # Group definitions and constraints can also go in the "In Settings" section + group spce type @atom:O @atom:H + fix fSHAKE spce shake 0.0001 10 100 b @bond:OH a @angle:HOH + # (lammps quirk: Remember to "unfix fSHAKE" during minimization.) + } + + # LAMMPS supports a large number of force-field styles. We must select + # which ones we need. This information belongs in the "In Init" section. + + write_once("In Init") { + units real # angstroms, kCal/mole, Daltons, Kelvin + atom_style full # select column format for Atoms section + pair_style lj/charmm/coul/long 9.0 10.0 10 # params needed: epsilon sigma + bond_style harmonic # parameters needed: k_bond, r0 + angle_style harmonic # parameters needed: k_theta, theta0 + kspace_style pppm 0.0001 # long-range electrostatics sum method + pair_modify mix arithmetic # using Lorenz-Berthelot mixing rules + } + +} # SPCE +\end{verbatim} +Words which are preceded by ``\$'' or ``@'' characters +are counter variables and will be replaced by integers. +(See section \ref{sec:variables} for details.) +Users can include SPCE water in their simulations using commands like these: +\begin{verbatim} +# -- file "system.lt" -- +import "spce_simple.lt" +wat = new SPCE [1000] +\end{verbatim} +You can now use ``moltemplate.sh'' to create simulation input files for LAMMPS +\begin{verbatim} +moltemplate.sh -pdb coords.pdb -atomstyle "full" system.lt +\end{verbatim} +This command will create lammps input files +for the molecular system described in ``system.lt'', +using the desired atom style (``full'' by default). +In this example, moltemplate is relying on an external file (``coords.pdb'') +to supply the atomic coordinates of the water molecules, as well as +the periodic boundary conditions. +Coordinates in XYZ format are also supported using ``-xyz coords.xyz''. + +\subsubsection*{\textit{Details}} +\textit{Note that since XYZ files lack boundary information, you must also + include a ``Boundary'' section in your ``.lt'' file, as demonstrated + in section \ref{sec:pbc}. + In both cases, the order of the atom types in a PDB or XYZ file + (after sorting) should match the order they are created by moltemplate + (which is determined by the order of the ``new'' commands + in the LT file). + Unfortunately this may require careful manual editing of the PDB or XYZ file.} + %(See appendix \ref{sec:order_customization} for instructions + % how to customize the order of moltemplate counting). + +\subsection{Coordinate generation} +\label{sec:coords_intro} +It is not necessary to provide a separate file with atomic coordinates. +It is more common to manually specify the location +(and orientation) of the molecules in your system using the + ``.move()'' and ``.rot()'' commands %for rigid-body movement +in the LT file itself +(discussed in section \ref{sec:coordinates}). +For example you can replace the line: +\begin{verbatim} +wat = new SPCE [1000] +\end{verbatim} +from the example above with 1000 lines: +\begin{verbatim} +wat1 = new SPCE +wat2 = new SPCE.move(3.450, 0.0, 0.0) +wat3 = new SPCE.move(6.900, 0.0, 0.0) +wat4 = new SPCE.move(10.35, 0.0, 0.0) + : : +wat1000 = new SPCE.move(34.50, 34.50, 34.50) +\end{verbatim} +Specifying geometry this way is tedious. +Alternatively, moltemplate has simple commands for arranging multiple +copies of a molecule in periodic, crystalline, toroidal, and helical +1-D, 2-D, and 3-D lattices. +For example, you can generate a simple cubic lattice of +10$\times$10$\times$10 water molecules +(with a 3.45 Angstrom spacing) +using a single command +(which in this example we split into multiple lines) +\begin{verbatim} +wat = new SPCE [10].move(0,0,3.45) + [10].move(0,3.45,0) + [10].move(3.45,0,0) +\end{verbatim} +(See section \ref{sec:coordinates} for more details and examples.) +This will create 1000 molecules with names like +``wat[0][0][0]'', ``wat[0][0][1]'',$\ldots$, ``wat[9][9][9]''. +You can always access individual atomIDs, molIDs, bondIDs, angleIDs, +and dihedralIDs (if present), for any molecule +elsewhere in your LT files using this notation: +``\$atom:wat[2][3][4]/h1'', +``\$bond:wat[0][5][1]/oh1'', +``\$angle:wat[2][8][3]/hoh'', +``\$mol:wat[0][1][2]''. +This allows you to define interactions which link +different molecules together (see section \ref{sec:coordinates}). + +A list of available coordinate transformations +is provided in section \ref{sec:xforms_table}. + +%\subsubsection*{Defining the simulation boundary} +\subsubsection*{Boundary Conditions:} +\label{sec:pbc} +LAMMPS simulations have finite volume and are usually periodic. +We must specify the dimensions of the simulation boundary +using the ``write\_once(``Data Boundary'')'' command. +\begin{verbatim} +write_once("Data Boundary") { + 0.0 34.5 xlo xhi + 0.0 34.5 ylo yhi + 0.0 34.5 zlo zhi +} +\end{verbatim} +This is usually specified in the outermost LT file +(``system.lt'' in this example). +\textit{(Note: Boundary conditions do not have to be rectangular +or even periodic. For triclinic cells, additional +``xy'', ``xz'', and ``yz'' tilt parameters can be added. + %The ``write\_once("In Init") { boundary p p f }'' command + %can be used to turn off periodicity in the Z-direction, for example. +For details, lookup the ``read\_data'' and ``boundary'' +commands in the official LAMMPS documentation.)} + +This system is shown in figure \ref{fig:spce_x_1000}a). +After you have specified the geometry, +then you can run moltemplate.sh this way: +\begin{verbatim} +moltemplate.sh -atomstyle "full" system.lt +\end{verbatim} + +\begin{figure}[htbp] +\centering +\textbf{a)} +\includegraphics[width=5cm]{waterSPCEx1000_LR.jpg} +\textbf{b)} +\includegraphics[width=5cm]{waterSPCEx1000_t=25_LR.jpg} +\caption{ +\label{fig:spce_x_1000} +A box of 1000 water molecules (before and after pressure equilibration), +generated by moltemplate and visualized by VMD with the topotools plugin. +(The VMD console commands used for visualization were: +``topo readlammpsdata system.data full'', +``animate write psf system.psf'', +``pbc wrap -compound res -all'', and +``pbc box''. +See sections \ref{sec:vmd_topotools}, and \ref{sec:vmd_advanced} +for details. +} +\end{figure} + + %\subsubsection*{\textit{Non-periodic simulations}} + %The use of periodic boundary conditions in LAMMPS is optional. + %For example the ``boundary p p f'' command turns off + %periodic boundary conditions in the Z-direction. + % %When using LAMMPS, commands like this belong + % %near the beginning of a LAMMPS input script. + %In moltemplate.sh, these kinds of commands go in the ``In Init'' section: + %\begin{verbatim} + %write_once("In Init") { + % boundary p p f + %} + %\end{verbatim} + %Note that the simulation volume is still finite. + %(Currently, as of 2012-5-28, + % atoms which escape the simulation boundary are lost/destroyed.) + % %(Of course, you can always manually edit the LAMMPS input script + % % file that was generated by moltemplate.sh before running LAMMPS. + % % These files are explained below.) + +\subsection{Visualization using VMD \& topotools} +\label{sec:vmd_topotools} + +When you run moltemplate, it generates a LAMMPS \textit{data} file. +This file is usually called ``system.data''. +Geometric information, and bonded topology are stored in this file. +After you have run moltemplate, you should look at your system +to check it for mistakes. +Problems can easily occur with overlapping atoms (missing molecules), +periodic boundaries, incorrectly bonded atoms, incorrect rotation and movement. +Sometimes many iterations of running moltemplate and +visualization are necessary. + +\textit{Optional:} +If you have VMD installed, you can automatically visualize the system +you have just created automatically by invoking moltemplate with +the \textit{\textbf{-vmd}} command line argument. +(In other words invoke moltemplate.sh using \textit{moltemplate.sh -vmd} + instead of \textit{moltemplate.sh}. VMD must be installed.) +If you don't use the -vmd command line argument, you can always view the +system in VMD later manually. For instructions how to do that, +keep reading... + +Some very basic instructions how to use VMD are provided below: +\textit{(Note: These instructions were written for VMD 1.9 and topotools 1.2)} + %See appendix \ref{sec:vmd_advanced} for more details.) + +To view a \textit{data} file: +\begin{list}{} +\item a) start VMD +\item b) from the menu, select + \textbf{Extensions}$\rightarrow$\mbox{\textbf{Tk Console}} +\item c) enter: +\end{list} +\begin{verbatim} + topo readlammpsdata system.data full + animate write psf system.psf +\end{verbatim} +\begin{list}{} +\item The first command will display all of the atoms and bonds in your system +in VMD's 3-D window. (We use ``\textbf{full}'' because we are using the +``full'' atom\_style in this particular example. If you are using a different +atom\_style, then change the command above accordingly.) +\item The second command +%\begin{verbatim} +% \textit{``animate write psf system.psf''}, +%\end{verbatim} +will create a PSF file (``system.psf'') which will +be useful later for viewing a trajectory file created +during a LAMMPS simulation. +(See section \ref{sec:vmd_trajectory}.) +\end{list} + +Most likely, atoms and bonds will be represented by +ugly dots and lines by default. +To change the way molecules are displayed, control their color, +display periodic boundaries, and wrap atomic coordinates, +read the short VMD tutorial in appendix \ref{sec:vmd_advanced}. + +\textit{(Note: +As of 2012-12-18, +VMD does not have built-in support for exotic atom\_styles +such as ellipsoids and dipoles, but their are 3rd-party scripts, plugins +and settings you can use. Search the VMD and LAMMPS mailing lists +for help.}) + + + +\subsection{Running a LAMMPS simulation (after using moltemplate)} +\label{sec:run} +To run a simulation of one or more molecules, +LAMMPS requires an \textit{input script} and a \textit{data file}. +Input scripts typically contain +force field styles, parameters and run settings. +(They sometimes also contain atom coordinates.) +Data files typically contain atom coordinates and bonded topology data. +(They sometimes also contain force-field parameters.) + %LAMMPS does strictly not require users to supply a data file, but they + %are required for systems with nontrivial bonded molecular topology. + +Moltemplate will create the following files: +``system.data'', +``system.in'', +``system.in.init'', +``system.in.settings'', +(and possibly other files including ``system.in.coords''). +These are LAMMPS input/data files, and they can be run in LAMMPS +with minimal modification (see below). +The main input script file is named ``system.in'', and it usually contains +just three lines: +\begin{verbatim} +include "system.in.init" +read_data "system.data" +include "system.in.settings" +\end{verbatim} + +To \textit{run} a simulation, you will have to +edit this file in order to add a couple of run commands. +These commands tell LAMMPS about the simulation conditions +you want to use (temperature, pressure), +how long to run the simulation, +how to integrate the equations of motion, +and how to write the results to a file (file format, frequency, etc). +Moltemplate.sh can not do this for you. +Some simple examples (which you can paste into your input script) +are provided in the +\textit{online examples} +which can be downloaded from \url{http://moltemplate.org}. + %directories which are bundled with moltemplate. +(These example input scripts + typically have names like ``run.in.nvt'' and ``run.in.npt''.) +%below: + + In addition to the examples, an introduction to LAMMP +input scripts is provided at these links: +\url{http://lammps.sandia.gov/doc/Section_commands.html#cmd_1}. +\url{http://lammps.sandia.gov/doc/Section_howto.html} and +\url{http://lammps.sandia.gov/doc/Section_howto.html#howto_15} + + +Here is a list of basic input script commands +used in the moltemplate examples +(and links to their documentation): +\begin{list}{} +\item \textbf{run} \ +\url{http://lammps.sandia.gov/doc/run.html} +\item \textbf{timestep} \ +\url{http://lammps.sandia.gov/doc/timestep.html} +\item \textbf{thermo} \ \url{http://lammps.sandia.gov/doc/thermo.html} +\item \textbf{dump} \ \url{http://lammps.sandia.gov/doc/dump.html} +\item \textbf{read\_data} \ \url{http://lammps.sandia.gov/doc/read_data.html} +\item \textbf{restart} \ \url{http://lammps.sandia.gov/doc/restart.html} +\item \textbf{include} \ \url{http://lammps.sandia.gov/doc/include.html} +\item \textbf{fix nve} \ \url{http://lammps.sandia.gov/doc/fix_nve.html} +\item \textbf{fix nvt} \ \url{http://lammps.sandia.gov/doc/fix_nh.html} +\item \textbf{fix npt} \ \url{http://lammps.sandia.gov/doc/fix_nh.html} +\item \textbf{fix langevin} \ \url{http://lammps.sandia.gov/doc/fix_langevin.html} +\item \textbf{fix} \ \url{http://lammps.sandia.gov/doc/fix.html} +\item \textbf{group} \ \url{http://lammps.sandia.gov/doc/group.html} +\item \textbf{compute} \ \url{http://lammps.sandia.gov/doc/compute.html} +\item \textbf{print} \ \url{http://lammps.sandia.gov/doc/print.html} +\item \textbf{variable} \ \url{http://lammps.sandia.gov/doc/variable.html} +\item \textbf{rerun} \ \url{http://lammps.sandia.gov/doc/rerun.html} +\item \textbf{fix shake} \ \url{http://lammps.sandia.gov/doc/fix_shake.html} +\item \textbf{fix rigid} \ \url{http://lammps.sandia.gov/doc/fix_rigid.html} +\end{list} +In addition, all users should be familiar with the following commands: +(These appear in the ``In Init'' section of most LT files.) +\begin{list}{} +\item \textbf{atom\_style} \ \url{http://lammps.sandia.gov/doc/atom_style.html} +\item \textbf{pair\_style} \ \url{http://lammps.sandia.gov/doc/pair_style.html} +\item \textbf{bond\_style} \ \url{http://lammps.sandia.gov/doc/bond_style.html} +\item \textbf{angle\_style} \ \url{http://lammps.sandia.gov/doc/angle_style.html} +\end{list} + + +%\subsubsection{An overview of popular LAMMPS run settings} +% %Alternately you can +% %import or include this LT file +% %inside another LT file which has these run commands already. +% % containing the needed run settings. +% % to the end of this input script file, +% %OR include this file in a different input script file which has them. +%\begin{verbatim} +%# -- declare time step for numerical integration -- +%timestep 1.0 +%\end{verbatim} +%The Nose-Hoover thermostat \& barostat are popular for dense systems +%(typically liquids, solids, or liquid/solute mixtures). Choose between: +%\begin{verbatim} +%# -- run at constant temperature and pressure (Nose Hoover) -- +%fix fxnpt all npt temp 300.0 300.0 100.0 iso 1.0 1.0 1000.0 +%\end{verbatim} +%and +%\begin{verbatim} +%# -- ALTERNATELY run at constant temperature and volume (Nose Hoover) -- +%fix fxnvt all nvt temp 300.0 300.0 500.0 tchain 1 +%\end{verbatim} +%The user must also specify what kind of data they want to save, and how +%frequently they want to save it. Here are some simple examples: +%\begin{verbatim} +%thermo_style custom step temp pe etotal press vol epair ebond eangle edihed +%thermo 500 # time interval for printing out "thermo" data +%dump 1 all custom 2000 traj.lammpstrj id mol type x y z ix iy iz +%\end{verbatim} +%Finally, you must specify the simulation duration. +%\begin{verbatim} +%run 200000 +%\end{verbatim} +% %A detailed description of these steps are not covered in this manual. +%If the starting geometry of your system is unfavorable (high energy) +%then numerical explosions may result (causing the infamous +%``Bond/Angle/Dihedral atoms missing on proc'' errors). +%To avoid this, you may want to insert a ``minimize'' command +%into your input script before the run command. +%\begin{verbatim} +%# -- minimize -- +%minimize 1.0e-5 1.0e-7 1000 10000 +%# (Note: Some fixes, for example "shake", interfere with the minimize command. +%# You can use the "unfix" command to disable them before minimization.) +%\end{verbatim} +%After these modifications, LAMMPS can then be run using: +%\begin{verbatim} +%lmp_linux -i system.in +%\end{verbatim} +%(Here we are assuming ``lmp\_linux'' is the name of your LAMMPS executable.) +%A detailed explanation of these commands +%can be found in the LAMMPS Users Manual. +% %\textit{(Simple examples of LAMMPS script commands may be found in +% %comments that appear at the end of ``system.in'' +% %files created by moltemplate.sh.)} +% %(More detailed explanation of these commands +% %can be found in the LAMMPS Users Manual.) +% +%Several examples of complete input scripts exist in the +%``examples'' section of the moltemplate web site at moltemplate.org. +% +%\subsubsection{Recommendations for dilute coarse-grained systems} +%\label{sec:runcg} +%The Nose-Hoover thermostats are a poor choice for +%dilute systems with a relatively small number of atoms +%(such as coarse-grained molecules in implicit solvent). +% %Note: Special care is required for \textit{coarse-grained} systems. +%(The Berendsen thermostat is also not recommended.) +%The Langevin thermostat is available in LAMMPS, +%however it (currently as of 2012-5) requires +%two ``fix'' commands, as shown below: +%\begin{verbatim} +%# -- run at constant volume using Langevin dynamics. -- +%fix fxlan all langevin 300.0 300.0 5000 48279 +%fix fxnve all nve # (needed by langevin) +%\end{verbatim} +%You may need to adjust the damping parameter (the 3rd numerical argument) +%to achieve efficient and physically reasonable dynamics +%\cite{Klimov+ThirumalaiPRL1997}. + + + + %More detailed instructions for running ``moltemplate.sh'' are provided + %in appendix \ref{sec:ttree_man_page}. + + %%%%%%% This comment is interesting (?), but no longer relevant: %%%%%% + %SPCE { + %# Note: This extra bracketed text augments (not overwrites) + %# the contents of "SPCE {}" defined in "spce_simple.lt". + %# Note: Here "@atom:O" and "@atom:H" refer to variables which were + %# originally defined in "spce_simple.lt". These variables will be + %# numbered consistently as if they belong to the same file + %} + %%%%%%%%%%%%%%%%%%%%% --Please Ignore -- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%Later on when we build the final LAMMPS input and data files, +%data from the different files (``Data Atoms'', ``Data Bonds'', +%``In Init'', ``In Settings'', etc...) +%must be pasted together in the correct order according to LAMMPS conventions. +%This is a simple task that can be performed by the ``moltemplate'' script +%(included with ttree), +%or manually by the user, depending on their familiarity with LAMMPS. +%LAMMPS has a complex and diverse syntax because +%it supports a wide variety of force-field types. +%The commands above are \textit{raw} LAMMPS commands, +%augmented by ttree variables +%(like ``@atom:O'' and ``\$atom:o''), which are explained below. + + + %and/or CHARMM27 parameter files. + %We hope ttree is flexible enough that it should remain useful in the future, + %even if the LAMMPS input syntax changes radically. + + %\subsection{Before ttree} + %The ability to load and combine data from multiple different types of + %molecules together is missing from LAMMPS. + %\textit{Normally} LAMMPS users are required to manually assign unique + %id numbers to \textit{every} atom, bonded, 3-body, and 4-body interaction + %in the entire simulation. + %Each molecule is assigned a unique id number as well. + %For a system with 6000 water molecules, a user would be required to + %specify 18000 atom ids, 12000 bond ids, 6000 3-body angle ids + %and 6000 molecule ids. + %(This should not be done by hand.) + + +\subsection{Visualizing Trajectories} +\label{sec:vmd_trajectory} +After you have run a simulation in LAMMPS, there are several programs which +can visualize the system. +If you have saved your trajectory in LAMMPS ``dump'' format, +later you can view it in VMD \cite{VMD}. +For the purpose of viewing trajectories in LAMMPS, +I recommend using the following style of ``dump'' commands in the LAMMPS +input-script that you use when you run LAMMPS: +\begin{verbatim} +dump 1 all custom 1000 DUMP_FILE.lammpstrj id mol type x y z ix iy iz +\end{verbatim} +(The ``all'' and ``1000'', refer to the atom selection and save interval, which may differ depending on the kind of simulation you are running. See \url{http://lammps.sandia.gov/doc/dump.html} for details.) + + +Once you have a dump file, you can view it in VMD using: +\begin{list}{} +\item a) Start VMD + From the menu in the upper-left, select + \textbf{File}$\rightarrow$\mbox{\textbf{New Molecule}} +\item b) Browse to select the PSF file you created above, and load it. + (Don't close the window yet.) +\item c) Browse to select the trajectory file. + If necessary, for "file type" select: "LAMMPS Trajectory". + Click on \textbf{OK}. +\item d) Click on the \textbf{Load} button. +\end{list} + + +Again, to customize molecule appearance, +display periodic boundary conditions and wrap molecule coordinates, +see the commands discussed in appendix \ref{sec:vmd_advanced}. + +\textit{(Note: VMD may not be able to correctly visualize simulations which do +not preserve the number of atoms and bonds over time, such as those run using +\textbf{fix bond/create}, +\textbf{fix bond/break}, or +\textbf{fix gcmc}.)} + +%\textit{(A note on trajectory format: +%It's a good idea to use an atom\_style which supports molecule-ID numbers +%(to make it easy to wrap atom coordinates without breaking molecules in half). +%I've been using this command in my LAMMPS scripts to create the trajectories: +%``dump 1 all custom 5000 DUMP\_FILE.lammpstrj id mol type x y z ix iy iz'')} + + + %Of course, you don't have to save your trajectories in DUMP format, + %(other formats like DCD work fine) I just mention dump files + %because these are the files I'm familiar with. + +\section{Overview} + %This paragraph below is an excellent + %summary/explanation of what moltemplate.sh does. + +\subsection{Basics: The \textit{write()} and \textit{write\_once()} commands} +\label{sec:write} +Each LT file typically contains one or more +``write'' or ``write\_once'' commands. +These commands have the following syntax +\begin{verbatim} +write_once(filename) {text_block} +\end{verbatim} +This creates a new file with the desired file name +and fills it with the text enclosed in curly brackets \{\}. + %(after any necessary variable substitutions have been made). +Text blocks usually span multiple lines and contain counter variables +(beginning with ``@'' or ``\$''). +which are replaced with numbers. +However the ``write()'' command will repeatedly append the +same block of text to the file every time the molecule +(in which the write command appears) is generated or copied +(using the ``new'' command, +after incrementing the appropriate counters, +as explained in \ref{sec:instance_variables}). + %incrementing any counter + %variables beginning with \$). + %When this happens, any counter variables beginning + %with \$ will be incremented.) +%On the other hand, ``write\_once()'' commands print their text only once. +%This is useful in certain cases. For example, there is no need to redundantly +%specify the mass of the ``O'' and ``H'' atoms every time you create another copy +%of the same molecule. This kind of data should be written only once using the +%``write\_once(``Data Masses'')'' command. + %However, new atoms are generated every time a new copy of a previously + %defined molecule is created. This kind of data should be written using the + %``write(``Data Atoms'')'' command. + + +\subsection{Basics: counter variables} +\label{sec:variables} + +Words following a ``@'' or a ``\$'' character +are \textit{counter variables}. +(These are not to be confused with \textit{LAMMPS variables} + \url{http://lammps.sandia.gov/doc/variable.html}). +By default, +\textit{all counter variables are substituted with a numeric counter} +before they are written to a file. + %(or to a section of a LAMMPS DATA file as + %explained in section \ref{sec:write}). +These counters begin at 1 (by default), and +are incremented as the system size and complexity grows (see below). + +These words typically contain a colon (:) followed by more text. +The text preceding this colon is the \textit{category name}. +(For example: ``\$atom:'', ``\$bond:'', ``\$angle:'', + ``@atom:'', ``@bond:'', ``@angle:'') +Variables belonging to different categories +are counted independently. + +Users can override these assignment rules and create custom categories. +(See appendices \ref{sec:manual_assignment} and \ref{sec:custom_categories} +for details.) + +\subsubsection{Static counters begin with ``@''} +\label{sec:static_variables} + +``@'' variables generally correspond to \textit{types}: +such as atom types, bond types, angle types, dihedral types, improper types. +These are simple variables and they assigned to unique integers in the +order they are read from your LT files. +Each uniquely named variable in each category is assigned to a different +integer. For example, ``@bond:'' type variables are numbered from ``1'' +to the number of \textit{bond types}. +(Pairs of bonded atoms are assigned a \textit{bond type}. +Later, LAMMPS will use this integer to lookup the bond-length and Hooke's-law +elastic constant describing the force between these two atoms.) + +%These numbers do not change if the number of molecule copies +%increases. + +\subsubsection{Instance counters begin with ``\$''} +\label{sec:instance_variables} + +On the other hand, ``\$'' variables correspond +to unique ID numbers: atom-IDs, bond-IDs, +angle-IDs, dihedral-IDs, improper-IDs, and molecule-IDs. These +variables are created whenever a copy of a molecule is created (using +the ``new'' command). +If you create 1000 copies of a water molecule using a command like +\begin{verbatim} +wat = new SPCE[10][10][10] +\end{verbatim} +then moltemplate creates 3000 ``\$atom'' variables with names like +\begin{verbatim} +$atom:wat[0][0][0]/o +$atom:wat[0][0][0]/h1 +$atom:wat[0][0][0]/h2 +$atom:wat[0][0][1]/o +$atom:wat[0][0][1]/h1 +$atom:wat[0][0][1]/h2 +\end{verbatim} +$\quad \vdots $ +\begin{verbatim} +$atom:wat[9][9][9]/o +$atom:wat[9][9][9]/h1 +$atom:wat[9][9][9]/h2 +\end{verbatim} + +\subsubsection{Variable names: short-names \textit{vs.} full-names} +\label{sec:full_names} + +In the example above, the \$ variables have full-names like +``\$atom:wat[8][3][7]/h1'', not ``\$atom:h1''. However inside the +definition of the water molecule, you don't specify the full name. +You can refer to this atom as ``\$atom:h1''. +Likewise, the full-name for the @atom variables is actually +``@atom:SPCE/H'', not ``@atom:H''. However inside the definition of the water +molecule, you typically use the shorthand notation ``@atom:H''. + +\subsubsection{Numeric substitution} +Before being written to a file, every variable (either \$ or @) +with a unique \textit{full-name} will be assigned to a unique integer, +starting at 1 by default. + %(You can override this choice if you want to using the "-a" flag.) + +The various \$atom variables in the water example will be substituted +with integers from 1 to 3000 (assuming no other molecules are present). +But the ``@atom:O'' and ``@atom:H'' variables +(which are shorthand for ``@atom:SPCE/O'' and ``@atom:SPCE/H'') +will be assigned to to ``1'' and ``2'' +(again, assuming no other molecule types are present). + +So, in summary, @ variables increase with the \textit{complexity} +of your system +(IE the number of molecule types or force-field parameters), +but \$ variables increase with the \textit{size} of your system. + +\subsubsection{Variable scope} +\label{sec:variable_scope} +This effectively means that all variables are specific to +local molecules they were defined in. +In other words, an atom type named ``@atom:H'' inside +the ``SPCE'' molecule, will be assigned to a different number +than an atom named ``@atom:H'' in an ``Arginine'' molecule. +This is because the two variables will have different \textit{full} names +(``@atom:SPCE/H'', and ``@atom:Arginine/H''). + + + + + + + +\subsubsection*{Sharing atom types or other variables between molecules} +There are several ways to share atom types between two molecules. +The \textit{recommended way} is to define them in a separate +file and refer to them when needed. +This approach is demonstrated in section \ref{sec:2bead}. + +\textit{(Alternately, you can define them outside the current molecule definition, +and use file-system-path-like syntax +(``../'', or ``../../'' or ``/'') +to access atoms (or molecules) outside of the current molecule. + %(or nested within the definition of another molecule). +For example, two different molecule types can share the same type of +hydrogen atom by referring to it using this syntax: ``@atom:../H''. + %(Two molecules could share the same atom-id in a similar way, + % using ``\$atom:../h1''. This is not recommended) +For details, see +section \ref{sec:paths}. +and appendix \ref{sec:adv_variable_syntax}.) + %To be on the safe side, if you want to define a single + %hydrogen atom type named ``H'' globally, for example, + %then you would refer to this atom everywhere using ``@atom:/H''. + %(A more portable alternative would be to use the ``@atom:.../H'' + % syntax explained in appendix \ref{sec:adv_variable_syntax}. + % This is similar to ``@atom:/H'', + % however using the ellipsis syntax ``@atom:.../H'' allows you to + % share your molecule definitions (ET files) with others + % who may have a different notion of what the ``H'' atom is.) +} + + + + + +\subsection{Troubleshooting using the \textit{output\_ttree} directory} +\label{sec:output_ttree} +Users can see what numbers were assigned to each variable +by inspecting the contents of the ``output\_ttree'' subdirectory +created by moltemplate. +Unfortunately, it not unusual for LAMMPS to crash the first time you +attempt to run it on a DATA file created by moltemplate. This often occurs +if you failed to spell atom types and other variables consistently. +The LAMMPS error message (located at the end of the ``log.lammps'' +file created by LAMMPS) will help you determine what type of mistake you made. +(For example, what type of variable was misspelled or placed in the wrong place?) + + +To help you, the ``output\_ttree'' directory contains a file named +``ttree\_assignments.txt''. +This is a simple 2-column text file containing a list of \textit{all} +of the variables you have created in one column, and the numbers they +were assigned to in the second column. +(There is also a comment on each line beginning with a ``\#'' character which +indicates the file and line number where this variable is first used.) + +The ``output\_ttree'' directory also contains all of the files that you created. +The versions with a ``.template'' extension contain text +interspersed with \textit{full} variable names (before numeric substitution). +(A spelling mistake, like using ``\$atom:h'' when you meant to say ``\$atom:h1'' +or ``@atom:H'' will show up in these files if you inspect them carefully.) +This can help you identify where the mistake occurred +in your LT files. + +Once a molecular system is debugged and working, users +can ignore or discard the contents of this directory. + + +\subsection{``Data'' and ``In''} +\label{sec:DataIn} +Again, LAMMPS requires an \textit{input script} and a \textit{data file} +to run. +\textit{Moltemplate's job is to generate these files.} +\textit{Input scripts} typically contain +force-field styles, parameters and run settings + %Moltemplate users control what goes in the input script + %by writing to files with names beginning with \mbox{``In ''}. +\textit{Data files} typically contain atom +coordinates and bonded topology data. + %Moltemplate users control what goes in the data file + %by writing to files with names beginning with \mbox{``Data ''}. + +If you are familiar with LAMMPS, +you may have noticed the file names above +(in the example from section \ref{sec:spce_example}) +sound suspiciously like sections from LAMMPS data files or input scripts, +such as ``Data Boundary'', ``Data Atoms'', ``Data Bonds'', ``Data Masses'', ``Data Angles'', ``Data Dihedrals'', ``Data Impropers'', ``In Init'', ``In Settings''). +All files whose names begin with ``In '' or ``Data '' are special. +For the user's convenience, +the moltemplate.sh script copies the contents +of these files into the corresponding section +(``Atoms'', ``Bonds'', ``Angles'', etc.) +of the +DATA file or INPUT scripts generated by moltemplate +(``system.data'', ``system.in.settings'', etc). +(Then the original files are moved to the ``output\_ttree/'' directory, + in an effort to clean things up and hide them from view.) +Users can create their own custom sections to a LAMMPS data file. +(See section \ref{sec:custom_data}. + %(Note: It is unwise to explicitly add blank lines to a data file section. + %because LAMMPS may interpret them as section breaks. + %Moltemplate will add the section headers + %and blank lines needed to keep LAMMPS happy.) + +More generally, the ``write()'' and ``write\_once()'' commands can be used to +create any other files you may need to run your simulations, +which refer to the same \textit{@atom} and \textit{@bond} types. + %Files whose names do not begin with ``In '' or ``Data '' can have any format + %(and are not moved or cleaned up). + %(These files are not removed or hidden later.) +(See section \ref{sec:aux_files} + % and \ref{sec:output_ttree} for examples +for an example.) + + +\subsection{\textit{(Advanced)} + Using moltemplate to generate auxiliary files} +\label{sec:aux_files} +The following excerpt from an LT file +creates a file named ``system.in.sw''. +(It contains parameters for the ``sw'' pair style. + This exotic many-body pair style requires a large number + of parameters, which are read from a separate file.) +This ``system.in.sw'' file file will be read later when you run the simulation. +(The pair\_coeff command below tells LAMPS to read that file.) +\begin{verbatim} +write_once("system.in.sw") { + mW mW mW 6.189 2.3925 1.8 23.15 1.2 -0.33333 7.04956 0.602224 4 0 0 +} +write_once("In Settings") { + pair_coeff * * sw system.in.sw mW NULL NULL NULL +} +\end{verbatim} +As new force-field styles and/or fixes are added to LAMMPS, +the files they depend on can be embedded in an LT file in this way. + + +\subsection{\textit{(Advanced)} Making custom DATA sections} +\label{sec:custom_data} +Suppose that in the future, the format of the LAMMPS DATA file changes +so that it now becomes necessary to supply a new section named ``Foo Fee Fum'', +for example. You could do that using this command: +\begin{verbatim} +write_once("Data Foo Fee Fum") { + File contents goes here. (These files can contain + atom counters and/or other counter variables). +} +\end{verbatim} +This way moltemplate copy this text into the ``Foo Fee Fum'' section at +the end of the DATA file it is constructing. +This allows users to adapt to future changes in the LAMMPS data file format. + + + +\subsubsection*{Does ``@atom:H'' conflict with ``\$atom:H''?} +\label{sec:vardetails} +No. It is okay for static(@) and instance(\$) variables to share the same names. +(Moltemplate considers them distinct variables and they will be assigned independently.) + + +\subsubsection*{Addional Details} +Variable and molecule names can include unicode characters. +They can also include some whitespace characters and other special characters +by using backslashes and curly-brackets, for example: +``@\{atom: CA \}'' and ``@atom:\textbackslash\ CA\textbackslash\ ''. +Curly-brackets are useful to clarify when a variable name begins and ends, +such as in this example: ``@\{atom:C\}*@\{atom:H\}''. +This prevents the ``*'' character from being appended to the end of the +``C'' variable name. +(Note that using the ``*'' character in any of the \textit{coeff} commands +within moltemplate is discouraged. See section \ref{sec:wildcard_bug}.) + +\textit{(Unicode is supported.)} + + +\pagebreak +\section{ Object composition and coordinate generation } +\label{sec:coordinates} + +Objects can be connected together to form larger molecule objects. +These objects can be used to form still larger objects. +As an example, we define a small 2-atom molecule named ``Monomer'', +and use it to construct a short polymer (``Peptide''). + +\begin{figure}[htbp] +\centering +\textbf{a)} +\includegraphics[height=3cm]{2bead_residue.jpg} +\quad \quad \quad \quad \quad +\textbf{b)} +\includegraphics[height=3cm]{2bead_peptide.jpg} +\newline +\vspace{10 mm} +\newline +\textbf{c)} +\includegraphics[width=4cm]{2bead_peptides_nopbc_t=0_LR.jpg} +\textbf{d)} +\includegraphics[width=4cm]{2bead_peptides_t=100ps_LR.jpg} +\caption{ +\label{fig:2bead_peptide} +\textbf{a)-b)} +\textit{Building a complex system from small pieces:} +Construction of a polymer (\textbf{b}) +out of smaller (2-atom) subunits (\textbf{a}) +using composition and rigid-body transformations. +Bonds connecting different residues together (blue) +must be declared explicitly, +but angle and dihedral interactions will be generated automatically. +See section \ref{sec:2bead} for details. +\textbf{c)} +An irregular lattice of short polymers. +(See section \ref{sec:multidimensional_arrays}.) +\textbf{d)} +The same system after 100000 time steps using Langevin dynamics. + %the Langevin dynamics settings from section \ref{sec:runcg}. +(The VMD console commands used for visualization were: +``topo readlammpsdata system.data full'', +``animate write psf system.psf'', +``pbc wrap -compound res -all'', and +``pbc box''. +See sections \ref{sec:vmd_topotools}, and \ref{sec:vmd_advanced} +for details.} +\end{figure} + + + +\pagebreak + +\subsection{Building a large molecule from smaller pieces} +\label{sec:2bead} +Consider the following simple 2-atom dumbell-shaped molelule (``Monomer'') +\begin{verbatim} +# -- file "monomer.lt" -- + +import "forcefield.lt" # contains force-field parameters + +Monomer inherits ForceField { + + write("Data Atoms") { + # atomId molId atomType charge x y z + $atom:ca $mol:... @atom:CA 0.0 0.000 1.0000 0.0000000 + $atom:r $mol:... @atom:R 0.0 0.000 4.4000 0.0000000 + } + write("Data Bonds") { + # bond-id bond-type atom-id1 atom-id2 + $bond:cr @bond:Sidechain $atom:ca $atom:r + } +} +\end{verbatim} + + +Soon will use it to construct a polymer (``Peptide'') +\textit{Note: The ellipsis notation used here ``\$mol:...''. +warns moltemplate that the ``Monomer'' molecule may be part of a larger +molecule. +(This is explained in more detail in section \ref{sec:ellipsis_mol}.) +} + +In this example we will define two kinds of molecule objects: +``Monomer'', and ``Peptide'' (\textit{defined later}). +It is often convenient to store atom types, masses, and force-field +parameters in a separate file so that they +can be shared between these different molecules. +We do that in the ``forcefield.lt'' file below: + + +\begin{verbatim} +# -- file "forcefield.lt" -- + +ForceField { + + # There are 2 atom types: "CA" and "R" + write_once("Data Masses") { + @atom:CA 13.0 + @atom:R 50.0 + } + + # Force-field parameters ("coeffs") go in the "In Settings" section: + + write_once("In Settings") { + # Pairwise (non-bonded) interactions: + # atomType1 atomType2 epsilon sigma + pair_coeff @atom:CA @atom:CA 0.10 2.0 + pair_coeff @atom:R @atom:R 0.50 3.6 + # (Interactions between different atoms are determined by mixing rules.) + } + + # 2-body (bonded) interactions: + # + # Ubond(r) = k*(r-r0)^2 + # + write_once("In Settings") { + # bond-type k r0 + bond_coeff @bond:Sidechain 15.0 3.4 + bond_coeff @bond:Backbone 15.0 3.7 + } + + # Although the simple "Monomer" object we defined above has only + # two atoms, later on, we will create molecules with many bonds. + # By convention, in this file we keep track of all of the possible + # interactions which could exist between these atoms: + + # Rules for determining 3-body (angle) interactions by atom & bond type: + # angle-type atomType1 atomType2 atomType3 bondType1 bondType2 + + write_once("Data Angles By Type") { + @angle:Backbone @atom:CA @atom:CA @atom:CA @bond:* @bond:* + @angle:Sidechain @atom:CA @atom:CA @atom:R @bond:* @bond:* + } + + # Force-field parameters for 3-body (angle) interactions: + # + # Uangle(theta) = k*(theta-theta0)^2 + # + write_once("In Settings") { + # angle-type k theta0 + angle_coeff @angle:Backbone 30.00 114 + angle_coeff @angle:Sidechain 30.00 132 + } + + # Rules for determining 4-body (dihedral) interactions by atom & bond type: + write_once("Data Dihedrals By Type") { + # dihedralType atmType1 atmType2 atmType3 atmType4 bondType1 bnd2 bnd3 + @dihedral:CCCC @atom:CA @atom:CA @atom:CA @atom:CA @bond:* @bond:* @bond:* + @dihedral:RCCR @atom:R @atom:CA @atom:CA @atom:R @bond:* @bond:* @bond:* + } + + # 4-body interactions in this example are listed by atomType + # The forumula used is: + # + # Udihedral(phi) = K * (1 + cos(n*phi - d)) + # + # The d parameter is in degrees, K is in kcal/mol/rad^2. + # + # The corresponding command is + # dihedral_coeff dihedralType K n d w(ignored) + + write_once("In Settings") { + dihedral_coeff @dihedral:CCCC -0.5 1 -180 0.0 + dihedral_coeff @dihedral:RCCR -1.5 1 -180 0.0 + } + + write_once("In Init") { + # -- Styles used in "ForceField" -- + # -- (Changing these styles will change the formulas above) -- + units real + atom_style full + bond_style harmonic + angle_style harmonic + dihedral_style charmm + pair_style lj/cut/coul/debye 0.1 11.0 + pair_modify mix arithmetic + dielectric 80.0 + special_bonds lj 0.0 0.0 0.0 + } +} +\end{verbatim} + + + +\subsubsection{Building a simple polymer} +We construct a short polymer by making 7 copies of ``Monomer'', +rotating and moving each copy: +\label{sec:2beadPeptide} +\begin{verbatim} +# -- file "peptide.lt" -- + +import "monomer.lt" + +Peptide inherits ForceField { + + create_var {$mol} # optional:force all monomers to share the same molecule-ID + # (The "Data Atoms" in Monomer must use the "$mol:..." notation.) + + res1 = new Monomer + res2 = new Monomer.rot(180.0, 1,0,0).move(3.2,0,0) + res3 = new Monomer.rot(360.0, 1,0,0).move(6.4,0,0) + res4 = new Monomer.rot(540.0, 1,0,0).move(9.6,0,0) + res5 = new Monomer.rot(720.0, 1,0,0).move(12.8,0,0) + res6 = new Monomer.rot(900.0, 1,0,0).move(16.0,0,0) + res7 = new Monomer.rot(1080.0, 1,0,0).move(19.2,0,0) + + # Now, link the residues together this way: + write("Data Bonds") { + $bond:backbone1 @bond:Backbone $atom:res1/ca $atom:res2/ca + $bond:backbone2 @bond:Backbone $atom:res2/ca $atom:res3/ca + $bond:backbone3 @bond:Backbone $atom:res3/ca $atom:res4/ca + $bond:backbone4 @bond:Backbone $atom:res4/ca $atom:res5/ca + $bond:backbone5 @bond:Backbone $atom:res5/ca $atom:res6/ca + $bond:backbone6 @bond:Backbone $atom:res6/ca $atom:res7/ca + } +} +\end{verbatim} +The position and orientation of each copy of ``Monomer'' +is specified after the ``new'' statement. +Each ``new'' statement is typically followed by a chain of +move/rotate/scale functions separated by dots, evaluated left-to-right +(optionally followed by square brackets and then more dots). +For example, ``res2'' is a copy of ``Monomer'' which is first rotated +180 degrees around the X axis (denoted by ``1,0,0''), +and \textbf{then} moved in the (3.2,0,0) direction. +(The last three arguments to the ``rot()'' command + denote the axis of rotation, which does not have to be normalized.) +(A list of available coordinate transformations +is provided in section \ref{sec:xforms_table}.) + +\textit{(Note: Although we did not do this here, +it is sometimes convenient to represent polymers as 1-dimensional arrays. +See sections \ref{sec:arrays} and \ref{sec:random_arrays} for examples.)} + +To bond atoms in different molecules or molecular subunits together, we used +the write(``Data Bonds'') command to append additional bonds to the system. + +%\subsubsection{Sharing atom, bond and angle types} +%Normally you must separately define the parameters for all of the atoms types, +%and bond types, angle types etc... in every type of molecule. +%However different kinds of monomers in a heteropolymer typically will +%share some common backbone atom types and other properties. +%You must be careful to indicate which atom and bond types are shared between +%different monomers by referring them using a ``../'' prefix. +%(See sections \ref{sec:variable_scope}, +%\ref{sec:paths}, and +%\ref{sec:butane} for details and examples.) +%\textit{Note: There is a heteropolymer example in the the +%``2bead\_heteropolymer/'' directory in the online examples. +%This example demonstrates how to share backbone atoms, bonds, and angles. +%You can also define specific angle or dihedral interactions which are +%specific to the atom types in different residues.} + + +\subsection{Bonded interactions \textit{by type}} +\label{sec:nbody_by_type_intro} + +In this example we did \textit{not} provide a list of all 3-body +and 4-body forces between bonded atoms in the polymer. +(for example using the ``write\_once("Data Angles")'' command +from section \ref{sec:spce_example}, +\textit{or} +the ``write\_once("Data Dihedrals")'', +or ``write\_once("Data Impropers")'' commands.) +Instead we provided moltemplate.sh with instructions to help it figure out +which atoms participate in 3-body and 4-body bonded interactions. +Moltemplate can detect consecutively bonded atoms and +determine the forces between them based on atom type. +(Bond type can also be used as a criteria.) +We did this in ``forcefield.lt'' using the +\mbox{``write\_once("Data Angles By Type")''} and +\mbox{``write\_once("Data Dihedrals By Type")''} +commands. +You can also generate improper interactions +between any 4-atoms bonded together in a T-shaped topology +using the ``write\_once("Impropers By Type")'' command. +See appendix \ref{sec:nbody_by_type} for more details. +\textit{(More general interactions are possible. + See appendix \ref{sec:nbody_by_type_custom}.)} + + %\subsubsection*{\textit{(Advanced)} Order matters when sets overlap} + %Bonded-interactions are generated in the order they appear in the LT file. + %Interactions which are declared later may override the settings of + %interactions which appear earlier, such as in this example: + %\begin{verbatim} + % write_once("Data Angles By Type") { + % @angle:Backbone @atom:C* @atom:C* @atom:* @bond:* @bond:* + % @angle:Sidechain @atom:CA @atom:CA @atom:R @bond:* @bond:* + % } + %\end{verbatim} + % %Here the first line of this file creates a 3-body angle interaction + % %of type ``@angle:Backbone'' between \textit{every} triplet of bonded atoms + % %in the molecule whose first two atom types begin with the letter ``C''. + %The second line creates 3body interactions (of type ``@angle:Sidechain'') + %specifically between atoms of type ``@atom:CA'', ``@atom:CA'', and + %``@atom:R'', overriding any triplets of this type which appeared earlier. + + + +%\subsection*{\textit{(Advanced)} Mixing regular and ``By Type'' interactions} + +%If an LT file contains both ``Data Angles'' and ``Data Angles By Type'', +%then the interactions explicitly defined in the ``Angles'' section will +%always override the assignments made in ``Data Angles By Type''. +%The also applies to Dihedrals and Impropers. + + %\begin{verbatim} + %write("Data Angles") { + % $angle:1 @angle:CCCgeneral $atom:c1 $atom:c2 $atom:c3 + % $angle:2 @angle:CCCgeneral $atom:c1 $atom:c3 $atom:c4 + %} + %\end{verbatim} + + +\section{Arrays, slices, and coordinate transformations} +\label{sec:arrays} +Moltemplate supports 1-dimensional, and multi-dimensional arrays. +These can be used to create straight (or helical) polymers +sheets, tubes, tori. +They are also to fill solid 3-dimensional volumes +with molecules or atoms. +(See sections \ref{sec:coords_intro} and \ref{sec:multidimensional_arrays}.) + +Here we show an easier way to create the short polymer +shown in section \ref{sec:2beadPeptide}. +You can make 7 copies of the \textit{Monomer} molecule this way: +\begin{verbatim} + res = new Monomer[7] +\end{verbatim} +This creates 7 new \textit{Monomer} molecules (named +\mbox{\textit{res[0]}}, +\mbox{\textit{res[1]}}, +\mbox{\textit{res[2]}}, +\mbox{\textit{res[3]}}, ... +\mbox{\textit{res[6]}}). +Unfortunately, by default, the coordinates of each molecule are identical. +To prevent the atom coordinates from overlapping, you have several choices: + +\subsection{Transformations following brackets [] in a new statement} +\label{sec:arrays+xform} + After every square-bracket [] in a new command, +you can specify a list of transformations to apply. +For example, we could have generated atomic coordinates for the +the short polymer in section \ref{sec:2beadPeptide} +using this command: +\begin{verbatim} + res = new Monomer [7].rot(180, 1,0,0).move(3.2,0,0) +\end{verbatim} +This will create 7 molecules. +The coordinates of the first molecule \textit{res[0]} are will be unmodified. +However each successive molecule will have its coordinates cumulatively +modified by the commands ``rot(180, 1,0,0)'' followed by ``move(3.2,0,0)''. +\subsubsection*{optional: initial customizations (preceding [] brackets)} +\label{sec:xform+arrays+xform} +You can also make adjustments to the initial coordinates of the molecule +before it is copied, and before any of the array transformations are applied. +For example: +\begin{verbatim} + res = new Monomer.scale(1.5) [7].rot(180, 1,0,0).move(3.2,0,0) +\end{verbatim} +In this example, the ``scale(1.5)'' transformation is applied once to +enlarge every \textit{Monomer} object initially. +This will happen before any of the rotation and move commands +are applied to build the polymer +(so the 3.2 Angstrom spacings between each monomer will not be effected). + +\subsection{Transformations following instantiation} +\label{sec:xform_after_instance} +Alternately you apply transformations to a molecule +after they have been created (even if they are part of an array). +\begin{verbatim} + res = new Monomer [7] + + # Again, the first line creates the molecules named + # "res[0]", "res[1]", "res[2]", "res[3]", ... "res[6]". + # The following lines move them into position. + res[1].rot(180.0, 1,0,0).move(3.2,0,0) + res[2].rot(360.0, 1,0,0).move(6.4,0,0) + res[3].rot(540.0, 1,0,0).move(9.6,0,0) + res[4].rot(720.0, 1,0,0).move(12.8,0,0) + res[5].rot(900.0, 1,0,0).move(16.0,0,0) + res[6].rot(1080.0, 1,0,0).move(19.2,0,0) +\end{verbatim} + +\subsection{Transformation order (general case)} +\label{sec:xform_order} +A typical array of molecules might be instantiated this way: +\begin{verbatim} +mols = new Molecule.XFORMS1() [N].XFORMS2() +mols[*].XFORMS3() +\end{verbatim} +The list of transformations denoted by ``XFORMS1'' in this example +are applied to the molecule first. +Then the transformations in ``XFORMS2'' are then applied to each +copy of the molecule multiple times. +(For the molecule with index ``$i$'', named ``Molecule[$i$]'', +XFORMS2 will be applied $i$ times.) +Finally after all the molecules have been created, the list +of transformations in XFORMS3 will be applied. +For example, to create a ring of 10 peptides of radius 30.0, +centered at position (0,25,0), use this notation: +\begin{verbatim} +peptide_ring = new Peptide.move(0,30,0) [10].rot(36,1,0,0) + # After creating it, we can move the entire ring + # (These commands are applied last.) +peptide_ring[*].move(0,25,0) +\end{verbatim} + + +\subsection{Random arrays} +\label{sec:random_arrays} + +\begin{figure}[htbp] +\centering +\textbf{a)} +\includegraphics[height=1.2cm]{random_2bead.jpg} +\hspace{0.2cm} +\textbf{b)} +\includegraphics[height=0.75cm]{random_3bead.jpg} +\hspace{0.2cm} +\textbf{c)} +\includegraphics[width=8cm]{random_heteropolymer.jpg} +%\newline +%\vspace{10 mm} +%\newline +\caption{ +\label{fig:random_heteropolymer} +A random heteropolymer (\textbf{c}), +composed of of \textit{Monomer} and \textit{Monomer3} monomer subunits +(\textbf{a} and \textbf{b}) with (target) probabilities 0.6 and 0.4. +(However, due to random fluctuations, the actual ratio + in this case was 68\% and 32\%. + To avoid this problem, see section \ref{sec:random_exact}.) +} +\end{figure} +Arrays of random molecules can be generated using the +\mbox{\textit{new random() []}} syntax. For example, +below we define a random polymer composed of 50 +\textit{Monomer} and \textit{Monomer3} monomer subunits. +(See figure \ref{fig:random_heteropolymer}.) +\begin{verbatim} +RandPoly50 inherits ForceField { + # Make a chain of randomly chosen monomers: + + monomers = new random([Monomer, Monomer3], [0.6, 0.4], 123456) + [50].rot(180,1,0,0).move(2.95, 0, 0) + + # Now, link the monomers together this way: + write("Data Bonds") { + $bond:bb1 @bond:Backbone $atom:monomers[0]/ca $atom:monomers[1]/ca + $bond:bb2 @bond:Backbone $atom:monomers[1]/ca $atom:monomers[2]/ca + $bond:bb3 @bond:Backbone $atom:monomers[2]/ca $atom:monomers[3]/ca + $bond:bb4 @bond:Backbone $atom:monomers[3]/ca $atom:monomers[4]/ca +\end{verbatim} +$\quad \quad \quad \vdots $ +% : : : : +\begin{verbatim} + $bond:bb50 @bond:Backbone $atom:monomers[48]/ca $atom:monomers[49]/ca + } + #(Note: Both the "Monomer" and "Monomer3" subunits contain atoms + # named "$atom:ca". +} #RandPoly50 +\end{verbatim} +It is also possible to fill a 2 or 3-dimensional volume with +molecules randomly. This is discussed in section +\ref{sec:random_advanced}. + +%\textit{Note: To specify the exactly number of molecules of each type, +%you can also use this notation (discussed below).} +%\begin{verbatim} +% monomers = new random([Monomer, Monomer3], [30, 20], 123456) +% [50].rot(180,1,0,0).move(2.95, 0, 0) +%\end{verbatim} + + +The \mbox{\textit{new random()}} function takes 2 or 3 arguments: +a list of molecule types +(\mbox{\textit{Monomer}} and \mbox{\textit{Monomer3}} in this example), +and a list of probabilities (\textit{0.6} and \textit{0.4}) +both enclosed in square-brackets []. + +\subsubsection{Random arrays with exact molecule type counts} +\label{sec:random_exact} +Recall that we requested that 60\% of the molecules be of type +``Monomer'' and 40\% type ``Monomer3'' (corresponding to 30 and 20, respectively). +However, the resulting polymer (shown in figure \ref{fig:random_heteropolymer}) +contains 34 ``Monomer'' and 16 ``Monomer3'' monomers (68\% and 34\%, respectively). +This is because each time a monomer is created, a random number is generated +to decide which type of monomer will be created. +There is no guarantee that the total final fraction of monomers will +match the target probabilities exactly (60\% and 40\%, respectively). +To specify the number of molecule types precisely, you can replace +the list of probabilities ``[0.6,0.4]'' +with a list of integers ``[30,20]''. +\begin{verbatim} + monomers = new random([Monomer, Monomer3], [30, 20], 123456) + [50].rot(180,1,0,0).move(2.95, 0, 0) +\end{verbatim} +This will create exactly 30 ``Monomer'' and 20 ``Monomer3'' monomers. +(You can do this with multidimensional arrays as well. +See section \ref{sec:random_multidim_exact}.) +%(In both case, the sum of the molecule type counts (30,20) must match the +%number of molecules in the array being created.) + + +\subsubsection*{Details regarding the \textit{new random} command:} + +\textit{Note:} You can tell moltemplate to customize the bond-types and + angles, depending on the (types of) monomers are connected + by each bond. The ``random\_heteropolymer'' example + downloadable at \url{www.moltemplate.org} demonstrates + how to do this. + +\textit{Note:} +Although this example, there are only two monomer types +(``Monomer'' and ``Monomer3''), there is no limit to the number +of molecule types which appear in these lists (eg ``[Monomer, Monomer3, 4bead],[0.2,0.3,0.2]'') + +\textit{Note:} +An optional random-seed argument can also be included. +(For example the \mbox{\textit{``123456''}} shown above. + If you omit this number, then you will get different + results each time you run moltemplate.) + +\textit{Note:} +These lists can also contain vacancies/blanks. +See section \ref{sec:random_vacancies}.) + +\textit{Note:} +Once a molecule containing random monomers is defined, +(\mbox{\textit{``RandPoly50''}} in this example), each copy of that molecule +(created using the \textit{new} command) is identical. + +\subsubsection*{Optional: Customizing molecule positions + in a \textit{random()} array} +You can customize the position of each type of molecule in the array, +before the array is constructed. +To do this, you can add additional movement commands after +each molecule's type name in the list (eg ``Monomer'' and ``Monomer3''): +\begin{verbatim} + monomers = new random([Monomer.move(0,0.01,0), + Monomer3.move(0,-0.01,0)], + [30,20], + 123456) + [50].rot(180,1,0,0).move(2.95, 0, 0) +\end{verbatim} +The \mbox{\textit{.move(0,0.01,0)}} and \mbox{\textit{.move(0,-0.01,0)}} +suffixes moves these monomers closer or further away from the +polymer axis (the x axis in this example). +This is not restricted to \mbox{\textit{.move()}} commands. +(You can also use \mbox{\textit{.rot()}}, and \mbox{\textit{.scale()}} +commands as well.) +These moves will be applied (in order from left to right), \textit{before} +any of the \mbox{\textit{.move()}} and \mbox{\textit{.rot()}} +commands appearing later (following ``[50]'') are carried out. + + + + +\subsection{[*] and [i-j] slice notation} +\label{sec:array_wildcards_intro} +You can move the entire array of molecules using ``[*]'' notation: +\begin{verbatim} + res[*].move(0,0,40) +\end{verbatim} +(Note that ``res.move(0,0,40)'' does not work. + You must include the ``[*]''.) +You can also use range limits to move only some of the residues: +\begin{verbatim} + res[2-4].move(0,0,40) +\end{verbatim} +This will move only the third, fourth, and fifth residues. +If you are more familiar with python's slice notation, you can +accomplish the same thing using: +\begin{verbatim} + res[2:5].move(0,0,40) +\end{verbatim} +(In this case, the second integer (eg ``5'') is interpreted as a + strict upper bound.) + +(If these customizations + are not enough for your needs, you can also always load atom +coordinates from an external PDB or XYZ file. +Such files can be generated by PACKMOL, +or a variety of advanced graphical molecular modeling programs. +For complex systems, this may be the best choice.) + + + + +\subsubsection{Building arrays one interval at a time (using slice notation)} + +For a more complicated example, you can build polymers using slice notation. +The example below demonstrates how to build a polymer, +specifying which part is random, and and which part is not: + +\begin{verbatim} + monomers[0] = new Monomer3 + monomers[1-48] = new random([Monomer, Monomer3], [30, 18], 123456) + [48].rot(180,1,0,0).move(2.95, 0, 0) + monomers[49] = new Monomer3 + # It's a good idea to move these monomers to keep them from overlapping + monomers[0].rotate(180,1,0,0) + monomers[1-48].move(2.95,0,0) + monomers[49].move(144.55,0,0) #(note: 144.55=49*2.95) +\end{verbatim} +In this example, we insure that monomers[0] and monomers[49] are both +of type ``Monomer3'' +(while keeping the total number of ``Monomer'' and ``Monomer3'' monomers at + 30 and 20, respectively). + +\textit{(Note: You can replace ``monomers[1-48]'' with +``monomers[1:49]'', or ``monomers[1*48]'', if you prefer that syntax style. +You can build multidimensional arrays using slice notation as well, for example +``molecules[3][10-19][4-6] = new Molecule[10][3]'')} + + + +\subsection{Multidimensional arrays} +\label{sec:multidimensional_arrays} +The same techniques work with multidimensional arrays. +Coordinate transformations can be applied to each layer +in a multi-dimensional array. +For example, to create a cubic lattice of 3x3x3 peptides: +you would use this syntax: +\begin{verbatim} +molecules = new Peptide [3].move(30.0, 0, 0) + [3].move(0, 30.0, 0) + [3].move(0, 0, 30.0) +\end{verbatim} +(Similar commands can be used with rotations to generate objects +with cylindrical, helical, conical, or toroidal symmetry.) + +\subsection{Customizing individual rows, columns, or layers} +Similarly, you can customize the position of individual peptides, +or layers or columns using the methods above: +\begin{verbatim} +molecules[1][*][*].move(0,20,0) +molecules[*][1][*].move(0,0,20) +molecules[*][*][1].move(20,0,0) +\end{verbatim} +See figure \ref{fig:2bead_peptide}c) +\textit{(You can also use slice notation, + eg ``molecules[1][0-2][0-1].move(20,0,0)'')} + +You can delete part of an array and replace it with something else +(eg \textit{``Lipid''}) +using slice notation: +\begin{verbatim} +delete molecules[0-1][1][1-2] # (shorthand for delete molecules[0][1][1] + # delete molecules[0][1][2] + # delete molecules[1][1][1] + # delete molecules[1][1][2]) + +# Now replace the array elements we deleted: +molecules[0-1][1][1-2] = new Lipid [2].move(30, 0.0, 0.0) + [2].move(0.0, 0.0, 30.0) + +# ...and move them back to the location of the vacancies we created +molecules[0-1][1][1-2].move(0, 30.0, 30.0) +\end{verbatim} +\textit{The word ``Lipid'' in this example is not important. + It is the name of some other molecule type.} + + +\subsection{Creating random mixtures using multidimensional arrays} +\label{sec:random_advanced} +You can use \mbox{\textit{``new random()''}} to fill space with +a random mixture of molecules. The following 2-dimensional example +creates a lipid bilayer (shown in figure \ref{fig:random_bilayer}) +composed of an equal mixture of +DPPC and DLPC lipids. (...Whose definition we omit here. +See the online examples for details.) +\begin{verbatim} +import "lipids" # define DPPC & DLPC +lipids = new random([DPPC,DLPC], [0.5,0.5], 123) # "123"=random_seed + [19].move(7.5, 0, 0) # lattice spacing 7.5 + [22].move(3.75, 6.49519, 0) # hexagonal lattice + [2].rot(180, 1, 0, 0) # 2 monolayers +\end{verbatim} +\begin{figure}[htbp] +\centering +\textbf{a)} +\includegraphics[width=5cm]{lipid_bilayer_mixture.jpg} +\hspace{0.5cm} +\textbf{b)} +\includegraphics[width=5cm]{lipid_bilayer_vacancies.jpg} +%\newline +%\vspace{10 mm} +%\newline +\caption{ +\label{fig:random_bilayer} +A lipid bilayer membrane composed of a random equal mixture of +two different lipid types in a 1:1 ratio. +(See section \ref{sec:random_advanced}.) +In \textbf{b)} one of the molecule types was left blank +leaving vacancies behind. +(See section \ref{sec:random_vacancies}.) +} +\end{figure} +\subsection{Inserting random vacancies} +\label{sec:random_vacancies} +The list of molecule types passed to the \mbox{\textit{random()}} function +may contain blanks. In the next example, 30\% of the lipids are missing: +\begin{verbatim} +lipids = new random([DPPC, ,DLPC], [0.35,0.3,0.35], 123) # 2nd element is blank + [19].move(7.5, 0, 0) + [22].move(3.75, 6.49519, 0) + [2].rot(180, 1, 0, 0) +\end{verbatim} +The results are shown in figure \ref{fig:random_bilayer}b). +\textit{(Note: When this happens, the array will contain missing elements. + Any attempt to access the atoms inside these missing molecules will + generate an error message, + however moving or deleting array entries + using [*] or [i-j] notation should be safe.)} + +\subsubsection{Random multidimensional arrays with exact type counts} +\label{sec:random_multidim_exact} +Due to random fluctuations the number of DPPC and DLPC lipids created +may not equal exactly 0.35 $\times$ of the number of entries in the array, + +Alternately, you can specify the exact number of DPPC and DLPC molecules +you desire (as opposed to a list of probabilities). +To do this, replace the list of probabilities with integers: +\begin{verbatim} +lipids = new random([DPPC, ,DLPC], [293,250,293], 123) + [19].move(7.5, 0, 0) + [22].move(3.75, 6.49519, 0) + [2].rot(180, 1, 0, 0) +\end{verbatim} +This will generate exactly 293 DPPC and DLPC molecules +(and 250 \textit{blank} entries, +since the second molecule type was unspecified). +The sum (ie 293+250+293) must equal the number of entries in the +array you are creating (ie 19x22x2). + +\subsection{Cutting rectangular holes using \textbf{delete}} +\label{sec:delete_holes} +The delete command can be used to cut large holes in +1, 2, and 3-dimensional objects. +For example, consider a simple 3-dimensional 12x12x12 cube of molecules. +(For simplicity, each ``molecule'' in this example contains only one atom. + These atoms appear as blue spheres in figure \ref{fig:delete_holes}.) +\begin{verbatim} +molecules = new OneAtomMolecule [12].move(3.0,0,0) + [12].move(0,3.0,0) + [12].move(0,0,3.0) +\end{verbatim} +Then, we cut out some rectangular vacancies: + %The first two commands below delete two layers of molecules + %near the top and bottom of the cube. + %The last command deletes a rectangular box of molecules near the center. +\begin{verbatim} +delete molecules[*][*][2] +delete molecules[*][*][8] +delete molecules[6-7][0-8][5-6] +\end{verbatim} +The result of these operations is shown in figure +\ref{fig:delete_holes}. +\textit{(Note: You may move or delete previously deleted array elements + more than once, and/or deleting overlapping rectangular regions + without error.)} + +\begin{figure}[htbp] +\centering +\includegraphics[width=4.0cm]{delete_holes1.jpg} +\caption{ +\label{fig:delete_holes} +Rectangular holes can be carved out of an array of molecules +(represented here by blue spheres) +using the ``delete'' command. Three delete commands were used to +remove the two planar regions and the rectangular hole in the center. +} +\end{figure} + + + + + + +\section{Customizing molecule position and topology} +\label{sec:custom_xform} +By default, each copy of a molecule created using the \textit{new} +command is identical. This need not be the case. + +As discussed in section \ref{sec:xform_after_instance}, +individual molecules which were recently created +can be moved, rotated, and scaled. +You can also overwrite or delete individual atoms, +bonds, and other interactions within a molecule, or their subunits. +(See sections +\ref{sec:delete_atoms_bonds}, +\ref{sec:custom_atom}, and \ref{sec:adding_atoms_bonds}.) +You make any of these modifications to \textit{some} copies +of the molecule without effecting other copies. +Furthermore, if those molecules are compound objects +(if they contain individual molecular subunits within them), +then you can rearrange the positions of their subunits as well. +And all of this can be done from anywhere else in the LT file. + %\textit{(The notation in section \ref{sec:paths} explains + % how to navigate the object hierarchy.)} + +For example, suppose we used the ``Peptide'' molecule we defined above +to create a larger, more complex ``Dimer'' molecule. +\begin{verbatim} +Dimer { + peptides[0] = new Peptide + peptides[1] = new Peptide.rot(180,1,0,0).move(0, 12.4, 0) +} +dimer = new Dimer +\end{verbatim} +The \textit{Dimer} molecule is shown in figure \ref{fig:dimers}a). +\textit{Optional: If you want all the atoms in a ``Dimer'' to share the same molecule-ID, +then define ``Dimer'' this way:} +\begin{verbatim} +Dimer inherits ForceField { + create_var { $mol } + peptides[0] = new Peptide + peptides[1] = new Peptide.rot(180,1,0,0).move(0, 12.4, 0) +} +\end{verbatim} +\textit{For this to work, you must also delete the + \mbox{\textit{``create\_var \{\$mol:.\}''}} line from + the definition of the Peptide molecule. See section \ref{sec:2bead}.} + + +We can subsquently customize the position of the 3rd residue +of the second peptide this way: +\begin{verbatim} +dimer/peptides[1]/res[2].move(0,0.2,0.6) +\end{verbatim} + +This does not effect the position of \textit{res[2]} in \textit{peptides[0]}. +(or in any other \textit{``Peptide''} or \textit{``Dimer''} molecule.) +If you want to move both residues, you could use a wildcard character ``*'' +\begin{verbatim} +dimer/peptides[*]/res[2].move(0,0.2,0.6) +\end{verbatim} +(You can also use ranged (slice) notation, such as ``peptides[0-1]'', + as an alternative to ``peptides[*]''. +See section \ref{sec:array_wildcards_intro}. + +To make changes that apply to every subsequently created \textit{``Peptide''} or +\textit{``Dimer''} molecule, see section \ref{sec:molecule_customization}.) + + +\subsection{Customizing individual atom locations} +\label{sec:custom_atom} +The ``move'' or ``rot'' commands can not be used to control the positions +of \textit{individual atoms}. +Instead simply overwrite their coordinates this way: +%$atom:dimer/peptides[0]/res[2]/CA $mol:dimer/peptides[1] @atom:R 0 6.4 8.0 0 +\begin{verbatim} +write("Data Atoms") { + $atom:dimer/peptides[0]/res[2]/ca $mol:... @atom:R 0 6.4 8.2 0.6 +} +\end{verbatim} + +\subsection{Adding bonds and angles to individual molecules} +\label{sec:adding_atoms_bonds} +Adding additional bonds within a molecule can be accomplished +by writing additional lines of text to the ``Data Bonds'' section. +(This is what we did when we added bonds between residues to create a polymer + in section \ref{sec:2beadPeptide}.) +Again, bonds and atom names must be referred to by their \textit{full} names. +Bonds and bonded interactions can be deleted using the ``delete'' command. +(See section \ref{sec:delete}.) + + +\subsection{The \textbf{delete} command} +\label{sec:delete} + +\subsubsection{Deleting molecules or molecular subunits} +Molecules can be further customized by deleting +individual atoms, bonds, bonded-interactions, and entire subunits. +We can \textbf{delete} the 3rd residue of the second peptide, +use the ``delete'' command: +\begin{verbatim} +delete dimer/peptides[1]/res[2] +\end{verbatim} + +\subsubsection{Deleting atoms, bonds, angles, dihedrals, and impropers} +\label{sec:delete_atoms_bonds} +Individual atoms or bonds can be deleted in a similar way: +\begin{verbatim} +delete dimer/peptides[1]/res[3]/ca #<-- deletes the "ca" atom +delete dimer/peptides[1]/res[4]/cr #<-- deletes the "cr" bond +\end{verbatim} +Whenever an atom or a molecule is deleted, the bonds, angles, dihedrals, +and improper interactions involving those atoms are deleted as well. +\textit{Note: You must omit the ``\$'' character when deleting atoms, +bonds, or angles, as we did in the two lines above).} + + + %\textit{(In fact, any lines of text in any ``write()'' statement + %containing references to deleted atoms are omitted. + +When a bond is deleted, any angular, dihedral, or improper +interactions which were \textit{automatically} +generated by moltemplate are removed as well. +(However other bonded interactions explicitly listed by the user in their +``Data Angles'', ``Data Dihedrals'', or ``Data Impropers'' sections +are not removed. These need to be deleted manually.) + +Multiple molecules can moved or deleted in a single command. For example, +the following command deletes the third, fourth, and fifth residues from +both peptides[0] and peptides[1]: +\begin{verbatim} +delete dimer/peptides[*]/res[2-4] +\end{verbatim} +See section \ref{sec:array_wildcards_intro} for an +explanation of ranged (``[2-4]'') array notation, +and wildcard characters (``*''). + +\textit{Minor bug notice: +Deleting atoms or molecules may cause +inaccuracies in the \$atoms, \$bonds, \$angles, \$dihedrals, and \$impropers +sections of the ``ttree\_assignments.txt'' file. +(If this is a problem, please email me. -Andrew 2014-12-09.) +Fortunately, this should not harm the resulting LAMMPS data files or input +scripts generated by moltemplate. They should still work with LAMMPS.} + +\textit{WARNING: The \textbf{delete} feature is experimental. +There have been a few bugs in the \textbf{delete} command, but by 2014-12-09 +these should be fixed. Please report any problems you find. +As always, be sure to visualize your structures +to make sure they look reasonable. +(...by running moltemplate.sh using the + ``-vmd'' command line option, for example. + See sections \ref{sec:vmd_topotools}, \ref{sec:vmd_advanced} for details.)} +%\textit{\textbf{BUG Warning:} +%As of 2014-4-02, delete does not always work +%when the deleted molecule is both bonded to other molecules, +%and when it contains sub-molecules of it's own. +%The temporary work-around is simply to avoid connecting bonds to any molecule +%which you plan to delete later. I plan to fix this bug eventually. +%} + + + + %\subsubsection*{The context() modifier.} + %\textit{THIS FEATURE DOES NOT WORK YET AS OF 2012-5} + %By default, this transformations is applied relative + %to the coordinate system in which the command was given. + %In other words, this command will move the third + %residue of peptides[1] in the +Y direction + %regardless of the direction that the molecule ``res[2]'' is facing. + %Alternately, if we want to apply this transformation + %in peptides[1]'s local coordinate system, + %we would use the context(peptides[1]) command: + %\begin{verbatim} + %dimer2/peptides[1]/res[2].context(peptides[1]).move(0,1,0) + %\end{verbatim} + + +%\subsubsection*{Examples using center-of-mass coordinate transformations} +%\textit{WARNING: experimental feature 2012-3-31} +% +%You can also center a molecule around it's center-of-mass using ``movecm()'', +%rotate it, and then move it this way: +%\begin{verbatim} +%re6s = new Monomer.movecm(0,0,0).rot(180.0, 1,0,0).move(14.2, 0, 0) +%\end{verbatim} +%By default all rotations are about the origin, not the center-of-mass. +%You can also rotate a molecule around it's center-of-mass using ``rotcm()'' +%(without centering it first), and them move the molecule this way: +%\begin{verbatim} +%res6 = new Monomer.rotcm(180.0, 1,0,0).move(14.2, 0, 0) +%\end{verbatim} + + +\subsection{Customizing molecule \textit{types}} +\label{sec:molecule_customization} +You can create modified versions of existing molecule \textit{types}, +without having to redefine the entire molecule. For example: +\begin{verbatim} +Dimer0 = Dimer.move(-9.6,-6.2, 0).scale(0.3125) +\end{verbatim} +or equivalently: +\begin{verbatim} +Dimer0 = Dimer +Dimer0.move(-9.6,-6.2, 0).scale(0.3125) +\end{verbatim} +This creates a new type of molecule named ``Dimer0'' whose +coordinates have been centered and rescaled. +(Note that the ``scale()'' command only effects the atomic coordinates. +(You will have to override earlier force field settings, +such as atomic radii and bond-lengths in order for this to work properly.) +If we want to make additional customizations +(such as adding atoms, bonds, or molecular subunits), we could use this syntax: +\begin{verbatim} +Dimer0 = Dimer + +# Add some new atoms connecting the two peptides in the dimer + +Dimer0 inherits ForceField { + write("Data Atoms") { + $atom:t1 $mol:. @atom:CA 0.0 23.0 0.0 0.0 + $atom:t2 $mol:. @atom:CA 0.0 24.7 4.0 0.0 + $atom:t3 $mol:. @atom:CA 0.0 24.7 8.4 0.0 + $atom:t4 $mol:. @atom:CA 0.0 23.0 12.4 0.0 + } + write("Data Bonds") { + $bond:b1 @bond:Backbone $atom:peptides[0]/res7/CA $atom:t1 + $bond:b2 @bond:Backbone $atom:t1 $atom:t2 + $bond:b3 @bond:Backbone $atom:t2 $atom:t3 + $bond:b4 @bond:Backbone $atom:t3 $atom:t4 + $bond:b5 @bond:Backbone $atom:t4 $atom:peptides[1]/res7/ca + } +} + +# Center and rescale the atoms in all "Dimer0" +Dimer0.move(-9.6,-6.2, 0).scale(0.3125) +\end{verbatim} +The result of these modifications is shown in figure \ref{fig:dimers}b). +\begin{figure}[htbp] +\centering +\textbf{a)} +\includegraphics[height=3cm]{dimer_LR.jpg} +\hspace{1cm} +\textbf{b)} +\includegraphics[height=3cm]{dimer+dimer0_transparent_LR.jpg} +%\newline +%\vspace{10 mm} +%\newline +\caption{ +\label{fig:dimers} +\textbf{a)} +The ``Dimer'' molecule. This is a contrived example consisting of +two ``Peptides''. See section \ref{sec:2beadPeptide} +\textbf{b)} +A customized version of the ``Dimer'' molecule. +(The original ``Dimer'' is shown faded in the background for comparison.) +} +\end{figure} + + %\textit{Note1: Coordinate transformations applied to entire + %molecule types are an experimental feature as of 2013-4-07.) + %SINCE THEN THIS FEATURE HAS BEEN TESTED. IT SEEMS TO WORK. + + +\textit{Note: These coordinate transformations will be +applied \textbf{after} the molecule is constructed. +(If you add atoms to the molecule, these will be added before +the coordinate transformations are applied, +even if you issue the command later.) +Consequently, to make things clear, +I recommend placing the coordinate transforms applied to +an entire molecule type \textbf{after} all of its internal details +(bonds, atoms, subunits) have been declared, as we did here.} + +\subsubsection*{\textit{(Advanced)} Inheritance} +\label{sec:inheritance_intro} +The \textit{Dimer0} molecule is a type of \textit{Dimer} molecule. +For those who are familiar with programming, +relationships like this are analogous to the relationship +between parent and child objects in an object-oriented programming language. + %What we have done is equivalent to saying that + %\textit{Dimer0} inherits from \textit{Dimer}. +More general kinds of inheritance are supported by moltemplate +and are discussed in section \ref{sec:inheritance}. + +\subsubsection*{\textit{(Advanced)} Multiple Inheritance} +If we wanted, we could have created a new molecule type +(like \textit{``Dimer0''}) +which includes atom types and features from +\textit{multiple} different types of molecules. +Section \ref{sec:inheritance} mentions one way to do this +and section \ref{sec:inheritance_vs_object_composition} +discusses alternate approaches. + + + + + + + + +\section*{Advanced moltemplate usage} + + + +\section{Portability: Using \textit{LT files} for force-field storage} +\label{sec:spce_example_robust} +The ``.LT'' format is a flexible file format +for storing force field parameters in LAMMPS. +If you want to share your ``.LT'' file with others, it's +not safe to assume that all interactions use the same standard formula. + +\subsection{Mixing molecule types} +LAMMPS has the ability to combine molecules using multiple different +force-field styles together using. + %Atoms of one type may interact with + %each other using inexpensive Lennard-Jones potentials. + %Other atoms in the same simulation + %may interact using tabulated potentials, + %orientation-dependent ellipsoidal potentials, + %or even more complex 3-body forces (for example). + %Each of these different force-fields is calculated + %using code from different source files. + %LAMMPS is popular among users who add + %their own custom source files. +In section \ref{sec:spce_example}, +we provided an example of an SPCE water molecule model. +This example was simple to understand. +However, as written, it would be impossible to combine this definition of water +with other molecules which don't share the same simple bond or angle styles. +For example, we used harmonic restoring forces to preserve the water angle +at $109.47^\circ$, but other users may want to mix this SPCE water with a small +number of molecules which use a more complicated angular potential formula, +or tabular angle potentials. +Using the ``hybrid'' keyword, you can avoid this limitation. + %being limited to one particular + %formula to describe all of the bonds, angles, dihedrals + %(and pair and improper) interactions. +A more robust example is included below. + +\begin{verbatim} +# file "spce.lt" +# +# H1 H2 +# \ / +# O + +SPCE { + + write_once("In Init") { + # -- Default styles (for solo "SPCE" water) -- + units real + atom_style full + pair_style hybrid lj/charmm/coul/long 9.0 10.0 10.0 + bond_style hybrid harmonic + angle_style hybrid harmonic + kspace_style pppm 0.0001 + pair_modify mix arithmetic + } + + # AtomID MolID("."=this) AtomType charge coordX coordY coordZ + write("Data Atoms") { + $atom:O $mol:. @atom:O -0.8476 0.0000000 0.00000 0.000000 + $atom:H1 $mol:. @atom:H 0.4238 0.8164904 0.00000 0.5773590 + $atom:H2 $mol:. @atom:H 0.4238 -0.8164904 0.00000 0.5773590 + } + + # atom-type Mass + write_once("Data Masses") { + @atom:O 15.9994 + @atom:H 1.008 + } + + # -- Forces between atoms (non-bonded) -- + + # atomTypeI atomTypeJ pair-style-name parameter-list + write("In Settings") { + pair_coeff @atom:O @atom:O lj/charmm/coul/long 0.1553 3.166 + pair_coeff @atom:H @atom:H lj/charmm/coul/long 0.0 2.058 + } + + # -- Forces between atoms (bonded) -- + + # bond-id bond-type atom-id1 atom-id2 + write("Data Bonds") { + $bond:oh1 @bond:OH $atom:O $atom:H1 + $bond:oh2 @bond:OH $atom:O $atom:H2 + } + + # bond-type bond-style-name parameter-list + write("In Settings") { + bond_coeff @bond:OH harmonic 200.0 1.0 + } + + # angle-id angle-type atom-id1 atom-id2 atom-id3 + write("Data Angles") { + $angle:hoh @angle:HOH $atom:H1 $atom:O $atom:H2 + } + + # angle-type angle-style-name parameter-list + write("In Settings) { + angle_coeff @angle:HOH harmonic 200.0 109.47 + } + + # miscellaneous + write_once("In Settings") { + group spce type @atom:O @atom:H + fix fSHAKE spce shake 0.0001 10 100 b @bond:OH a @angle:HOH + # (Remember to "unfix" fSHAKE during minimization.) + } + +} # SPCE +\end{verbatim} +There are two differences between this molecule definition +and the ``spce\_simple.lt'' example from section +\ref{sec:spce_example}: + +\subsubsection*{Hybrid force field styles} + %Each one of these ``\_style'' commands above contains the + %``hybrid'' keyword, and followed by a single force-field style + %(such as ``harmonic'', or ``lj/charmm/coul/long''). +To experienced LAMMPS users, it may seem strange +that in this example that we have chosen ``hybrid'' +styles followed by only one force-field style (``harmonic''). + %This is due to a quirk in the way LAMMPS reads input script files: + %We do this so that we later have the option to customize + %the force field style for every + %pair\_coeff, + %bond\_coeff, + %angle\_coeff, + %dihedral\_coeff, + %and improper\_coeff command. + %This syntax is only allowed when using ``hybrid'' styles. + %It's nice to have the option to be able to + %customize force-field style after every interaction. + %Again, we don't need to do that if we are only simulating water, + %it might be necessary if we are combining SPCE water with other + %molecule types which use different styles. +However this will make your molecule easier to share with others. +When other people use your LT file, they can override these +styles as explained in section \ref{sec:overriding_styles}. + +%\subsection{Include a default style:} +%LAMMPS requires users to include +%``atom\_style'',``bond\_style'', ``angle\_style'' +%commands in the ``Init'' section +%(which is part of the LAMMPS input script). +%We did this at the beginning of the definition of the ``SPCE'' molecule. +%The bond and angle styles may clash with the force-field styles +%used by other molecules we might want to interact with. +%Presumably the final list of styles will be specified later on by the users +%who include our ``spce.lt'' molecular file into their simulations, +%overriding our settings. +%However it's always a good idea to provide a list of \textit{default styles} +%just in case they don't. + +%\subsubsection*{Splitting molecule definitions into multiple files.} +%Alternately, we could eliminate the ``In Init'' section from our +%``spce.lt'' file and create another LT file containing the following +%additional text: +% %# -- All settings below are optional and can be overridden later.-- +%\begin{verbatim} +%# file "spce_defaultstyles.lt" +%SPCE { # <-- Append additional content to the "SPCE" molecule +% write_once("In Init") { +% # -- Default styles (for solo "SPCE" water) -- +% units real +% atom_style full +% pair_style hybrid lj/charmm/coul/long 9.0 10.0 10.0 +% bond_style hybrid harmonic +% angle_style hybrid harmonic +% kspace_style pppm 0.0001 +% pair_modify mix arithmetic +% } +%} +%\end{verbatim} +%\textit{ +%(Note that additional ``SPCE \{...\}'' wrapper +%merely appends additional content +%to the ``SPCE'' molecule defined in ``spce.lt''. +%This does not overwrite SPCE.) +%} +%Splitting up a molecule into multiple files is usually +%not necessary, especially for small molecules. + + + %(We note that it is necessary to include the ``hybrid'' keyword in the + %``pair\_style'' and ``bond\_style'' commands because this changes the syntax + %of the ``pair\_coeffs'', ``bond\_coeffs'', and other ``coeffs'' commands.) + + + +\subsection{Combining molecules with different force field styles} +\label{sec:overriding_styles} +\textit{Later on}, if a user wants to combine the SPCE water molecule +with another molecule which uses a tabular pair\_style (for example), +they would have to specify the complete hybrid pair\_style in the +``Init'' section of their LT file. For example: +\begin{verbatim} +import "spce.lt" +import "other_molecule.lt" + +write_once("In Init") { + pair_style hybrid lj/charmm/coul/long 9 10 10 table spline 1000 +} +\end{verbatim} +Note: By placing the ``write\_once("In Init")\{ \}'' statement +\textit{after} ``import "spce.lt"'', this insures that +the pair\_style commands issued here will override the +pair\_style commands issued earlier ``spce.lt''. +% bond_style hybrid harmonic nonlinear +% angle_style hybrid harmonic cosine/periodic +This allows moltemplate users users to combine their molecules +``spce.lt'' file shown here +with other template files without modification +(assuming the atom styles match). + + +\subsubsection*{Warning: Force-field parameters belong in ``In Settings'', not ``Data''} + +LAMMPS allows users to store force-field parameters (``Coeffs'') in two places: +a DATA file, \textit{or} an INPUT script. +Similarly, moltemplate technicaly allows you to store these parameters in +in the ``Data'' sections of your .LT file: +\begin{list}{} +\item write\_once("Data Pair Coeffs") +\item write\_once("Data Bond Coeffs") +\item write\_once("Data Angle Coeffs") +\item write\_once("Data Dihedral Coeffs") +\item write\_once("Data Improper Coeffs") +\item +\end{list} + +\textit{However, for portability reasons, this is discouraged.} +Instead, declare your force field parameters +as we do in this manual, +using the corresponding input script commands. +(For example, ``pair\_coeff'', ``bond\_coeff'', ``angle\_coeff'', + ``dihedral\_coeff'', and ``improper\_coeff''. +As in the examples, all of these commands belong in the +``write\_once("In Settings")'' sections of your .LT files.) + + +\subsection{Nesting} +\label{sec:nesting} +Molecule names such as ``Solvent'' (or even ``Water'') +are short and easy to type, but are vague and are not portable. +If you use common, generic molecule names, you will not be able +to combine your molecule templates with templates written +by others (without carefully checking for naming conflicts). +LT files were meant to be used for storing +and exchanging libraries of different molecule types. + +Suppose, for example, that you want to run a simulation consisting of +different molecule types, each of which belong to different LT files. +Suppose two of the LT files both happen to contain definitions for +``Water''. +Moltemplate does not detect these name clashes automatically +and instead attempts to merge the two versions of ``Water'' together, +(most likely creating a molecule with 6 atoms instead of 3). +This is presumably not what you want. + +As the number of molecule types grows, +the possibility of naming clashes increases. +As the behavior of the same molecule can be approximated +using many different force fields, +one has to be careful to avoid clashing molecule names. + +To alleviate the problem, you can ``nest'' your +molecules inside the definition of other molecules or +namespace objects. +This reduces the scope in which your molecule is defined. +See section \ref{sec:butane} for an example. + + +\subsection{A simple force-field example} +Force-field parameters can be shared by groups of related molecules. +In the example below, we create an object named ``TraPPE''. +Later we use it to define a new molecule named ``Cyclopentane''. + +The following example defines a coarse-grained (united-atom) +version of a ``cyclopentane'' molecule. (Hydrogen atoms have been omitted.) +In this example, only the atom types (and positions) and the bonds +connecting them need to be specified. +The interactions between them are determined automatically +by the settings in the force-field file ``trappe1998.lt''. +\begin{verbatim} +import "trappe1998.lt" + +cyclopentane { + + # AtomID MolID('.'=this) AtomType charge coordX coordY coordZ + write("Data Atoms") { + $atom:c1 $mol:. @atom:TraPPE/CH2 0.0 0.0000 0.000000000 1.0000000 + $atom:c2 $mol:. @atom:TraPPE/CH2 0.0 0.0000 0.951056516 0.3090170 + $atom:c3 $mol:. @atom:TraPPE/CH2 0.0 0.0000 0.587785252 -0.809017 + $atom:c4 $mol:. @atom:TraPPE/CH2 0.0 0.0000 -0.587785252 -0.809017 + $atom:c5 $mol:. @atom:TraPPE/CH2 0.0 0.0000 -0.951056516 0.3090170 + } + + write("Data Bonds") { + $bond:bond1 @bond:TraPPE/CC $atom:c1 $atom:c2 + $bond:bond2 @bond:TraPPE/CC $atom:c2 $atom:c3 + $bond:bond3 @bond:TraPPE/CC $atom:c3 $atom:c4 + $bond:bond4 @bond:TraPPE/CC $atom:c4 $atom:c5 + $bond:bond5 @bond:TraPPE/CC $atom:c5 $atom:c1 + } +} +\end{verbatim} +(The ``TraPPE/'' is explained below.) +We can create copies of this molecule in the same way we did with SPCE: +\begin{verbatim} +# A cubic lattice of 125 cyclopentane molecules (12-angstrom spacing) +mols = new Cyclopentane [5].move(0,0,12) [5].move(0,12,0) [5].move(12,0,0) +\end{verbatim} +Unlike the SPCE example, we don't have to specify all of the interactions +between these atoms because the atom and bond types (CH2, CC). +match the type-names defined in the ``trappe1998.lt'' file. +This file contains a collection of atom types and +force-field parameters for coarse-grained hydrocarbon chains. +(See \cite{TraPPE} for details.) +This way, the ``CH2'' atoms in cyclopentane will interact with, +and behave identically to any ``CH2'' atom from any other molecule +which uses the TraPPE force field. +(The same is true for other atom types, and interaction-types + which are specific to ``TraPPE'', such as +``@atom:TraPPE/CH3'', ``@bond:TraPPE/CC'', etc... + %\textit{Note:} By default, all variables are \textit{local} variables. +Another molecule which uses the TraPPE force field is discussed +later in section \ref{sec:butane}.) +The important parts of the ``trappe1998.lt'' file are shown below: +\subsubsection{Namespace example} +\label{sec:trappe} +\begin{verbatim} +# -- file "trappe1998.lt" -- + +TraPPE { + write_once("Data Masses") { + @atom:CH2 14.1707 + @atom:CH3 15.2507 + } + write_once("In Settings") { + bond_coeff @bond:CC harmonic 120.0 1.54 + angle_coeff @angle:CCC harmonic 62.0022 114 + dihedral_coeff @dihedral:CCCC opls 1.411036 -0.271016 3.145034 0.0 + pair_coeff @atom:CH2 @atom:CH2 lj/charmm/coul/charmm 0.091411522 3.95 + pair_coeff @atom:CH3 @atom:CH3 lj/charmm/coul/charmm 0.194746286 3.75 + # (Interactions between different atom types use mixing rules.) + # (Hybrid styles were used for portability.) + } + write_once("Data Angles By Type") { + @angle:CCC @atom:C* @atom:C* @atom:C* @bond:CC @bond:CC + } + write_once("Data Dihedrals By Type") { + @dihedral:CCCC @atom:C* @atom:C* @atom:C* @atom:C* @bond:CC @bond:CC @bond:CC + } +} +\end{verbatim} +In addition to the atom-type names and masses, +this file stores the force-field parameters (coeffs) for the +interactions between them. + +\subsubsection*{Bonded interactions \textit{by type}} +Again, the ``Data Angles By Type'' and ``Data Dihedrals By Type'' sections +tell moltemplate.sh that bonded 3-body and 4-body interactions exist between +any 3 or 4 consecutively bonded carbon atoms (of type CH2, CH3, or CH4) +assuming they are bonded using ``CC'' (saturated) bonds. +The ``*'' character is a wild-card. +``C*'' matches ``CH2'', ``CH3'', and ``CH4''. +(Bond-types can be omitted or replaced with wild-cards ``@bond:*''.) + +%(moltemplate.sh can automatically generate bonded angle, dihedral, and improper +%interactions between bonded atoms according to their \textit{type} +%as well as bond type connecting them. +%Note: The syntax used in the ``Data Angles By Type'' and ``Data Dihedrals By Type'' +%sections is explained in more detail in appendix \ref{sec:nbody_by_type}. +% +%The ability to specify interactions by atom type instead of atom ID hardly +%matters for the simple water molecule example above but it is useful for +%large molecules. However it makes the LT file format useful for storing +%force-field parameters. It allows local interactions to be specified between +%atoms in complicated molecules which have not been defined yet, (based on +%their local connectivity and atom type). + + + +\subsubsection*{Namespaces and nesting:} +Names like ``CH2'' and ``CC'' are extremely common. +To avoid confusing them with similarly named atoms and bonds +in other molecules, we enclose them (``nest'' them) within a +\textit{namespace} (``TraPPE'', in this example). +Unlike ``SPCE'' and ``Cyclopentane'', ``TraPPE'' is not a molecule. +It is just a container of atom types, bond-types and +force-field parameters shared by other molecules. +We do this to distinguish them from other atoms and bonds +which have the same name, but mean something else. +Elsewhere we can refer to these atom/bond types as +``@atom:TraPPE/CH2'' and ``@bond:TraPPE/CC''. +(You can also avoid repeating the cumbersome ``TraPPE/'' prefix + for molecules defined within the TraPPE namespace. + For example, see section \ref{sec:butane}.) + + + + + +\subsection{Nested molecules} +\label{sec:butane} +Earlier in section \ref{sec:trappe}, we created an object named ``TraPPE'' +and used it to create a molecule named ``Cyclopentane''. +Here we use it to demonstrate nesting. +Suppose we define a new molecule ``Butane'' consisting of 4 coarse-grained +(united-atom) carbon-like beads, whose types are named ``CH2'' and ``CH3''. +\begin{verbatim} +# -- file "trappe_butane.lt" -- + +import "trappe1998.lt" + +Butane { + write("Data Atoms"){ + $atom:c1 $mol:. @atom:TraPPE/CH3 0.0 0.419372 0.000 -1.937329 + $atom:c2 $mol:. @atom:TraPPE/CH2 0.0 -0.419372 0.000 -0.645776 + $atom:c3 $mol:. @atom:TraPPE/CH2 0.0 0.419372 0.000 0.645776 + $atom:c4 $mol:. @atom:TraPPE/CH3 0.0 -0.419372 0.0000 1.937329 + } + write("Data Bonds"){ + $bond:b1 @bond:TraPPE/CC $atom:c1 $atom:c2 + $bond:b2 @bond:TraPPE/CC $atom:c2 $atom:c3 + $bond:b3 @bond:TraPPE/CC $atom:c3 $atom:c4 + } +} +\end{verbatim} + %Note that we inserted ``../TraPPE/'' prefix before ``CH2'', for example, + %to inform moltemplate/ttree that we want to use the ``CH2'' + %atom that defined inside ``../TraPPE''. + %(This is the same thing we did in section \ref{sec:trappe}.) + %The ``../'' before ``TraPPE'' is optional. + + %It informs moltemplate.sh that ``TraPPE'' was defined + %in the parent's environment (IE, one level up). + %(Note: If you omit the ``../'', moltemplate will automatically + %look for it there in any case, so this is optional.) + +Alternately, as mentioned above, it may be simpler to nest our ``Butane'' +within ``TraPPE'', so that so that it does not get confused with other +(perhaps all-atom) representations of butane. In that case, we would use: +\begin{verbatim} +# -- file "trappe_butane.lt" -- + +import "trappe1998.lt" + +TraPPE { + Butane { + write("Data Atoms"){ + $atom:c1 $mol:. @atom:../CH3 0.0 0.419372 0.000 -1.937329 + $atom:c2 $mol:. @atom:../CH2 0.0 -0.419372 0.000 -0.645776 + $atom:c3 $mol:. @atom:../CH2 0.0 0.419372 0.000 0.645776 + $atom:c4 $mol:. @atom:../CH3 0.0 -0.419372 0.0000 1.937329 + } + write("Data Bonds"){ + $bond:b1 @bond:../CC $atom:c1 $atom:c2 + $bond:b2 @bond:../CC $atom:c2 $atom:c3 + $bond:b3 @bond:../CC $atom:c3 $atom:c4 + } + } +} +\end{verbatim} +Note: Wrapping Butane within ``TraPPE\{ \}'' clause merely appends +additional content to be added to the ``TraPPE'' object defined +in the ``trappe1998.lt'' file (which was included earlier). +It does not overwrite it. +Again ``../'' tells moltemplate use the ``CH2'' atom +defined in the context of the TraPPE environment (IE. one level up). +This insures that moltemplate does not create a new ``CH2'' atom type +which is local to the Butane molecule. +(Again, by default all atom types and other variables are local. +See section \ref{sec:variable_scope}.) + % However moltemplate.sh does check the parent/ancestor environments + % before creating a new variable, so ``../'' is not strictly necessary + % in this example.) + +To use this butane molecule in a simulation, +you would import the file containing the butane definition, +and use a ``new'' command to create one or more butane molecules. +\begin{verbatim} +import "trappe_butane.lt" +new butane = TraPPE/Butane +\end{verbatim} +(You don't need to import ``trappe1998.lt'' in this example because +it was imported within ``trappe\_butane.lt''.) +The ``TraPPE/'' prefix before ``Butane'' lets moltemplate/ttree +know that butane was defined \textit{locally} within TraPPE. + + %Of course, additional molecules can be added to + %the existing TraPPE namespace by enclosing them within ``TraPPE\{ \}'', + %brackets, in addition to ``Butane''. + + +\textit{Note: An alternative procedure using \textbf{inheritance} +exists which may be a cleaner way to handle these kinds of relationships. +See sections \ref{sec:inheritance} and \ref{sec:multiple_inheritance}.} + +\subsection{Path syntax: ``../'', ``.../'', and ``\$mol:.''} +\label{sec:paths} +Generally, multiple slashes (``/'') as well as (``../'') can be +used build a path that indicates the (relative) location +of any other molecule in the object hierarchy. +(The ``.'', ``/'' and ``..'' symbols are used here in the same way +they are used to specify a path in a unix-like file-system. +For example, the ``.'' in ``\$mol:.'' refers to the +current molecule (instance), in the same way that +``./'' refers to the current directory. +(Note: \mbox{\textit{``\$mol''}} is shorthand for \mbox{\textit{``\$mol:.''}}) + +A slash by itself, ``/'', refers to the \textit{global environment}. +This is the outermost environment in which all molecules are defined/created. + %\textit{ + %(Details: These symbols can be used to navigate + %both the hierarchy of defined molecule \textbf{types}, + %(when preceded by @), + %or the hierarchy of \textbf{instantiated} molecules, + %(when preceded by \$).) + %} + + +\subsubsection{\textit{(Advanced)} Ellipsis notation ``.../''} +\label{sec:ellipsis_type} +If you are using multiple levels of nesting, +and if you don't know (or if you don't want to specify) where +a particular molecule type or atom type (such as ``CH2'') was defined, +you can refer to it using ``.../CH2'' +instead of ``../CH2''. +The ``...'' ellipsis syntax searches up the tree of nested +molecules to find the target (the text following the ``/'' slash). + +\subsubsection{\textit{(Advanced)} \$mol:... notation} +\label{sec:ellipsis_mol} +Recall that LAMMPS allows users the option to assign +\textit{molecule-IDs} to each atom. +(In the water example (section \ref{sec:spce_example}), atoms in +each water molecule is assigned to a molecule-ID, denoted ``\$mol:.''. +In that example, the ``.'' was the name of that molecule's ID.) + +If you want to build large molecules using smaller pieces as building-blocks +moltemplate has a way to allow all the the atoms to share the same molecule-ID. +To refer to the ID of the molecule to which you belong, +use ``\$mol:...''. (If none of the molecule-objects which +instantiate the current molecule-object define a variable in the \$mol category, +then a new local \$mol variable will be created automatically.) +This means that the second column of each line of the ``Data Atoms'' section +should contain ``\$mol:...'' +(assuming ``atom\_style full'' or ``molecular'' is used). + +The ``...'' syntax is explained more formally +in appendix \ref{sec:adv_variable_syntax}.) + + + + +\subsection{\textit{using namespace} syntax} +\label{sec:using_namespaces} + +Because the \textit{Butane} molecule was defined within the \textit{TraPPE} +environment, you normally have to indicate this when you refer to it later. +For example, to create a copy of a \textit{Butane} molecule, +you would normally use: +\begin{verbatim} +import "trappe_butane.lt" + +butane = new TraPPE/Butane +\end{verbatim} + +However for convenience, you can use the +\mbox{``\textbf{using namespace}''} declaration +so that, in the future, you can quickly refer to any +of the molecule types defined within \textit{TraPPE} directly, +without having to specify their path. +\begin{verbatim} +import "trappe_butane.lt" + +using namespace TraPPE + +butane = new Butane +\end{verbatim} +\subsubsection*{This only works for molecule types, not atom types} +Unfortunately, you still \textit{must} always +\textbf{refer to} atom types, bond types, and any other +\textbf{primitive types explicitly} (by their full path). +For example, the second line in the \textit{``Data Atoms''} in the example +below does not refer to the \textit{CH2} atom type defined in \textit{TraPPE}. +(Instead it creates a \textit{new} atom type, +which is probably not what you want.) +\begin{verbatim} +import "trappe_butane.lt" +using namespace TraPPE +butane = new Butane +write("Data Atoms") { + $atom:c1 $mol @atom:TraPPE/CH2 0.0 0.41937 0.00 1.9373 # <-- yes + $atom:c2 $mol @atom:CH2 0.0 -0.41937 0.00 -0.6457 # new atom type? +} +\end{verbatim} +If, for example, you want to leave out the ``TraPPE/'' prefix +when accessing the atom, bond, and angle types defined in TraPPE, +then instead you can define a new molecule which +\textit{inherits} from TraPPE. (See section \ref{sec:inheritance}.) + +\subsection{Inheritance} +\label{sec:inheritance} +We could have defined \textit{Butane} this way: +\begin{verbatim} +import "trappe1998.lt" + +Butane inherits TraPPE { + write("Data Atoms"){ + $atom:c1 $mol:. @atom:CH3 0.0 0.419372 0.000 -1.937329 + $atom:c2 $mol:. @atom:CH2 0.0 -0.419372 0.000 -0.645776 + $atom:c3 $mol:. @atom:CH2 0.0 0.419372 0.000 0.645776 + $atom:c4 $mol:. @atom:CH3 0.0 -0.419372 0.0000 1.937329 + } + write("Data Bonds"){ + $bond:b1 @bond:CC $atom:c1 $atom:c2 + $bond:b2 @bond:CC $atom:c2 $atom:c3 + $bond:b3 @bond:CC $atom:c3 $atom:c4 + } +} +\end{verbatim} +A molecule which \textit{inherits} from another molecule (or namespace) +\textit{is} a particular type of that molecule (or namespace). +Defining \textit{Butane} this way allows it to +access all of molecule types, atom types, and bond types, etc... +defined within \textit{TraPPE} as if they were defined locally. +(I did not have to refer to the CH3 atom types as ``@atom:TraPPE/CH3'', + for example.) + +\subsubsection{Multiple inheritance:} +\label{sec:multiple_inheritance} +A molecule can inherit from multiple parents. +This is one way you can allow the \textit{Butane} molecule +to borrow atom, bond, angle, dihedral, and improper types from +\textit{multiple} different force-field parents: +\begin{verbatim} +import "trappe1998.lt" +import "oplsaa.lt" + +Butane inherits TraPPE OPLSAA { + ... +} +\end{verbatim} +\textit{Details:Moltemplate attempts to resolve duplicate atom types or +molecule types if they are found in both parents, giving priority to the +first parent in the list of parents following the ``inherits'' keyword. +(``TraPPE'' in this example.) + %Note: This feature has not been rigorously tested as of 2013-4-07.) +} + +\subsubsection{Inheritance \textit{vs.} Nesting} +\label{sec:inheritance_vs_nesting} +If two molecules are related to each other this way: +\mbox{\textit{``A \textbf{is a} particular type of B''}}, +then consider using inheritance instead of nesting +(or object composition). +In this example (with \textit{Butane} and \textit{TraPPE}) +either nesting or inheritance would work. + + Again, one very minor advantage to nesting +\textit{Butane} inside \textit{TraPPE}, is that it prevents the name +\textit{Butane} from being confused with or conflicting with any other +versions of the \textit{Butane} molecule defined elsewhere. +(Usually this is not a consideration.) + +\subsubsection{Inheritance \textit{vs.} Object Composition} +\label{sec:inheritance_vs_object_composition} +On the other hand, if two molecules are related to each other this way: +\mbox{\textit{``A is \textbf{comprised of} B and C''}}, +then you might consider using object composition instead of inheritance. +For example: +\begin{verbatim} +import "B.lt" # <-- defines the molecule type "B" + +import "C.lt" # <-- defines the molecule type "C" + +A { + b = new B + c = new C +} +\end{verbatim} + + + + + + %\section{Inheritance} + %\label{sec:inheritance} + %\textit{New (experimental) feature as of 2012-3-31:} + % + %In this section we show a simple example of inheritance and nesting. + % + %\textit{INCOMPLETE DOCUMENTATION} + %\textit{I will finish this example later...} + % + %% \ref{fig:LPN} + %There's no need to define the tail twice. + %Instead use inheritance + %\begin{verbatim} + %CGLipid { + % # Both DOTAP and DOPC lipids share the same tail. + % # In the CGLipid model, the tail is represented by + % # a single linear chain. + % write("Data Atoms"){ + % $atom:c1 $mol:. @atom:C 0.0 0.419372 0.00000 -1.481799 + % $atom:c2 $mol:. @atom:C 0.0 -0.419372 0.00000 -2.773352 + % $atom:c3 $mol:. @atom:C 0.0 0.419372 0.00000 -4.064904 + % $atom:c4 $mol:. @atom:C 0.0 -0.419372 0.00000 -5.356457 + % $atom:c5 $mol:. @atom:C 0.0 0.419372 0.00000 -6.648010 + % } + % write("Data Bonds"){ + % $bond:c12 @bond:Tail $atom:c1 $atom:c2 + % $bond:c23 @bond:Tail $atom:c2 $atom:c3 + % $bond:c34 @bond:Tail $atom:c3 $atom:c4 + % $bond:c45 @bond:Tail $atom:c4 $atom:c5 + % } + % write("Data Angles"){ + % : + %} + %\end{verbatim} + %DOPC and DOTP differ only in the head group (which + %has only 1 atom in this coarse-grained version). + %\begin{verbatim} + %DOPC inherits CGLipid { + % write("Data Atoms"){ + % $atom:head $mol:. @atom:head 0.0 0.000 0.000 0.000 + % } + % write_once("Data Masses"){ + % @atom:. 245.0 + % } + % # Now connect the head to the tail + % write("Data Bonds"){ + % $bond:head-tail @bond:Head-Tail $atom:head $atom:c1 + % } + % : + %} + + %DOTAP inherits CGLipid { + % write("Data Atoms"){ + % $atom:head $mol:. @atom:head 0.0 0.000 0.000 0.000 + % } + % write_once("Data Masses") { + % @atom:. 122.0 + % } + % write("Data Bonds"){ + % $bond:head-tail @bond:Head-Tail $atom:head $atom:c1 + % } + % : + %} + %\end{verbatim} + % + %\textit{INCOMPLETE DOCUMENTATION} + %\textit{I will finish this example later...} + % + % + %\begin{verbatim} + %TubulinA { + % ... + %} + %TubulinB { + % ... + %} + %TubulinDimer { + % a = new A + % b = new B + %} + %\end{verbatim} + %\begin{verbatim} + %Tubulin { + % A { + % ... + % } + % B { + % ... + % } + % Dimer { + % a = new A + % b = new B + % } + %} + %\end{verbatim} + % + %\textit{INCOMPLETE DOCUMENTATION} + %\textit{I will finish this example later...} + + + +\section{Known bugs and limitations} +\label{sec:limitations} + +Please report any bugs you find by email to +\includegraphics[height=0.3cm]{author_email.png}, +or to the lammps-users mailing list. + +\textbf{1)} LAMMPS-style molecule-templates are \textit{not} supported. +The DATA files created by moltemplate are not +in the correct format to be read by the LAMMPS \textit{molecule} command. +(This is because this command was added after moltemplate was written.) +However the formats are similar, and the relevant information can be extracted +using a text-editor and converted to the other format. +(Using a text-editor and awk, or a spreadsheet program. +For more information on these file formats, +\url{http://lammps.sandia.gov/doc/read_data.html} +\url{http://lammps.sandia.gov/doc/molecule.html}.) +Again, feel free to contact \includegraphics[height=0.3cm]{author_email.png} +to request support for LAMMPS-style molecule templates. + + +\textbf{2)} \textbf{Moltemplate consumes a large amount of memory (RAM)} + +Memory use grows proportional to system size. +As of 2014-12-09, setting up a system of 1000000 atoms using moltemplate +currently requires between 2.7 and 12 GB of \textit{available} memory. +(Systems with many bonds and angles consume more memory, + as well as systems with a high molecule count.) + %(This is due to python's excessive memory usage.) +Unfortunately this code was not carefully written to minimize memory usage. +(In addition, python programs can require more than 10 +times as much memory as similar programs written in C/C++.) + %\textit{(I wish I had known this earlier.)} + +This problem might be alleviated by using other +python interpreters with a lower memory footprint. +Alternately, it may be necessary to split a large system into pieces, +run moltemplate on each piece, and combine the resulting data files +into one large data file later. + %(Each time, you can use the ``category()'' command to force the + % \$atom, \$bond, \$angle, \$dihedral, \$improper, and \$mol counters + % to begin at a number larger than 1, so that the values do not overlap.) + %A strategy for combining data files together is discussed + %in appendix \ref{sec:combining_data_files}. + +Also, computers with a moderate amount of RAM can be rented very cheaply. +(For example, see \url{https://cloud.google.com/compute/}.) + +\textit{When setting up large simulations with moltemplate, +consider using the \mbox{``ulimit''} command} +to prevent system crashes. +(If you are on a shared computer, ask an administrator to do this.) +If these options are not available, +you can always run a resource monitor (like ``top'') before +starting moltemplate and kill the process if it's memory usage exceeds 80\%. + + +\textbf{3)} Limited support for non-point-like atoms: + +As of 2014-12-09, only the ``full'', ``angle'', ``atomic'', ``charge'', +and ``molecular'' styles have been tested. +The ``dipole'' atom style \textit{is} fully supported +but it has not been tested. +Non-point-like atoms like ``ellipsoid'', ``tri'', ``line'' +\textit{should} also work with moltemplate. +However these objects +are \textit{not rotated correctly} +by the ``.rot()'' command +(or scaled correctly by the ``.scale()'' command). +More exotic exotic atom styles, such as +``wavepacket'', ``electron'', ``sphere'' and ``peri'' +have not been tested. +In addition, atom\_style \textbf{body} and +atom\_style \textbf{template} are \textit{not} +supported. +Feel free to contact \includegraphics[height=0.3cm]{author_email.png} +to request support for exotic atom styles. + + +\textbf{4)} +When placed at the end of a line, LAMMPS interprets +\textbf{the ``\&'' character} as a +request to merge two lines together. +\textit{It is usually safe to use this character inside +moltemplate write() or write\_once() commands.} +However in some rare cases, joining two lines together using +the ``\&'' character can confuse moltemplate. +For example, in a lammps input script command, +(like ``pair\_coeff'' or ``dihedral\_coeff''), +\textbf{the ``\&'' character should not appear before +the last ``@'' or ``\$'' variable is referenced.} +Also avoid using the ``\&'' character anywhere in the +``Data Atoms'', ``Data Bonds'', ``Data Angles'', ``Data Dihedrals'', ``Data Impropers'', ``Data Angles By Type'', ``Data Dihedrals By Type'', and ``Data Impropers By Type'' +sections. + +\textbf{5)} Triclinic boundary conditions have not been tested: + +As of 2014-12-09, support for PDB files with triclinic cells is experimental. +Please let me know if it is not working. + +\textbf{6)} Inconsistent support for wildcard characters (``*'' and ``?'') +\label{sec:wildcard_bug} + As of 2014-1-28, + the wildcard character ``*'' + is interpreted differently in different parts of an LT file. + Wildcard characters work reliably and are used for \textit{string} + pattern matching when inside any of the \textit{``By Type''} sections + in an LT file (such as + \textit{``Data Angles By Type''}, + \textit{``Data Dihedrals By Type''}, and + \textit{``Data Impropers By Type''}). + However these characters are interpreted differently when they appear + in \textit{pair\_coeff}, \textit{bond\_coeff}, \textit{angle\_coeff} + \textit{dihedral\_coeff}, and \textit{improper\_coeff} commands + (and their corresponding \textit{``Coeff''} sections of a data file). + LAMMPS interprets ``*'' characters appearing in any of the + \textit{coeff} commands as \textit{numeric} wildcard characters. + This can lead to unintended side-effects and is discouraged. + So please avoid ``*'' characters in any of the + \textit{``coeff''} commands + (eg \textit{pair\_coeff, bond\_coeff, angle\_coeff, + dihedral\_coeff, improper\_coeff}). + The ``*'' character can be safely used in array brackets, \textit{[*]}, + or in the \textit{``By Type''} sections. + (See section \ref{sec:array_wildcards_intro} + and appendix \ref{sec:nbody_by_type}.) + +\pagebreak + + + +\appendix +\section*{Appendices} + +\section{Bonded interactions ``By Type''} +\label{sec:nbody_by_type} + +Interactions between atoms in LAMMPS which are not bonded together +(ie ``non-bonded'' or ``pair'' interactions) +are specified \textit{by atom type}. +\textit{Bonded interactions} in LAMMPS, +(including 3-body angle, and 4-body dihedral and improper interactions), +are specified by unique \textit{atom ID number}. +(There are typically a large number of angles and bonds in +a typical molecule, and this information occupies the +majority of in a typical LAMMPS data file.) + +This has changed in moltemplate.sh. moltemplate.sh contains a +utility which can generate angles, dihedrals, and impropers +automatically by atom and bond \textit{type}. +(This utility is described in section \ref{sec:nbody_by_type_utility}.) +moltemplate.sh will inspect the network of bonds present in your system, +detect all 3-body, and 4-body interactions, and determine their type. +(Higher n-body interactions can also be defined by the user.) +Specifying interactions this way can eliminate significant redundancy +since many atoms share the same type. + +To make use of this feature, you would create a new section named +\mbox{``Data Angles By Type''}, \mbox{``Data Dihedrals By Type''}, +or \mbox{``Data Impropers By Type''} +whose syntax mimics the +\mbox{``Angles''}, \mbox{``Dihedrals''}, and \mbox{``Impropers''} +sections of a LAMMPS data file. +The syntax is best explained by example: + +\begin{verbatim} +write("Data Angles By Type") { + @angle:XCXgeneral * *C* * + @angle:CCCgeneral @atom:C @atom:C @atom:C * * + @angle:CCCsaturated @atom:C @atom:C @atom:C @bond:SAT @bond:SAT +} +\end{verbatim} + +%\begin{list}{} +%\item +The first line will generate a 3-body angle interaction +(of type \mbox{``@angle:XCXgeneral''}) +between any 3 consecutively bonded atoms +as long as the second atom's type-name contains the letter ``C''. +(Atom and bond type-names can contain wildcard characters *) + +%\item +The second line will generate a 3-body interaction +of type \mbox{``@angle:CCCgeneral''} +between any 3 atoms of type \mbox{``@atom:C''}, +regardless of the type of bonds connecting them. +(The last two columns, which are both wildcard characters, *, + tell moltemplate.sh to ignore the two bond types. + Since this is the default behavior + these two columns are optional and can be omitted.) + +%\item +The third line will generate a 3-body interaction of +type \mbox{``@angle:CCCsaturated''} +between any 3 atoms of type \mbox{``@atom:C''}, +if they are connected by bonds of type \mbox{``@bond:SAT''}. +%\end{list} + +Note: The 2nd and 3rd lines in this example will generate new interactions +which may override any angle interactions assigned earlier. + +\subsection*{Regular expressions} +Regular-expressions can also be used to match potential atom and bond types. +(To use regular expressions, surround the atom and +bond types on either side by slashes. +For example: \mbox{@atom:C[1-5]/}, should match +\mbox{@atom:C1} through \mbox{@atom:C6}.) +\textit{Note: This feature has not been tested as of 2014-12-09.} + +In a similar way, one can define ``Dihedrals By Type'' and +``Impropers By Type''. + + + % I THINK I FIXED THIS LIMITATION + % SO I COMMENTED OUT THIS NEXT SECTION: + % IGNORE ALL COMMENTED OUT TEXT IN THE PARAGRAPHS BELOW + %In all of these examples, the slash ``/'' following the + %@ character is explained below. + % + %\subsection*{Nesting: ``By Type'' interactions \textit{require full-path} variable syntax} + % + %Consider again the atom type named ``CH2'' defined within the ``trappe1998.lt'' + %example from section \ref{sec:nesting}. + %Every atom and bond type defined in that file was defined + %inside the ``TraPPE'' namespace. + %(That file contains a ``TraPPE {...}'' clause.) + %Consequently any atom types like ``CH2'' are \textit{nested variables}. + %It's \textit{full name} is ``@/atom:TraPPE/CH2'', not ``@atom:CH2''. + %However usually you don't have to refer to it this way. + %When you are inside the ``TraPPE{...}'' clause, it is sufficient + %to refer to this atom using ``@atom:CH2''. + % + %However moltemplate.sh uses an external program to automatically generate + %interactions by type. + %This program is not smart enough to understand nested variable syntax. + %So whenever ``write("Data Angles by Type") {...}'' is nested within + %a molecule definition, you must refer to the atom types using the + %\textit{full-path} syntax + %(for example: ``@/atom:TraPPE/CH2'', not ``@atom:CH2''). + + + + + + +\section{Using ltemplify.py to create an \textit{LT file}} +\label{sec:ltemplify} + +The ``ltemplify.py'' script can be used to convert existing simple LAMMPS +input script and data files into a single ``\textbf{.LT}'' file. +Users can pass one or more LAMMPS input scripts followed by a LAMMPS data file +to the ``ltemplify.py'' script as arguments. +(The data file must appear last in this list. See examples below.) +All atoms, bonds, angles, dihedrals, and impropers and their associated types +will be converted to moltemplate ``\$'' or ``@'' counter variables, +(and the relevant portion of each file will be moved to sections with the +correct header names). Coefficients, atom styles, and +most force-field styles and settings \textit{should} also +be included in the resulting .LT file. +ltemplify.py also understands simple group commands +(using ``id'', ``molecule'', or ``type'' styles) +and ``fix shake'' and ``fix rigid'' (untested 2015-1-04). +However most other fixes, and complex group commands are not understood. +Those commands must be added to the resulting .LT file manually. +(See section \ref{sec:ltemplify_limitations}.) + +\subsubsection*{Disclaimer} + +\textit{ltemplify.py is experimental software.} +The lemplify.py script has limited understanding of all of the features +available in LAMMPS. +Please look over the resulting ``.LT'' file and check for errors. +(If necessary, convert any remaining +atom, bond, angle, dihedral, or improper id or type numbers to the +corresponding \$ or @ variables.) +Some exotic pair styles which have their own special syntax +are not understood. +%(See section \ref{sec:ltemplify_limitations_pair}.) +These coeffs must be converted manually. +Support for ``group'' and ``fix'' commands is also limited. +(See section \ref{sec:ltemplify_fix_group}.) +Please report errors in the behavior of ltemplify.py. + +\subsubsection*{Reassigning variable names} + +Unfortunately, ltemplify.py does not attempt to pick \textit{good} +names for your atoms, bonds, or angles. +Currently, ltemplify.py generates type names and id names automatically, + %the numbers used in the original LAMMPS data file and input script(s), +resulting in atoms with names like ``\$atom:id1753'', +and types like ``@atom:type7''. +(Furthermore, if the user + %used the ``-atomtype'' or ``-mol'' or ``-atomid'' flags to extract +extracted only \textit{part} of the data file, then these +numbers probably do not begin at ``1''.) + %For example the first atom may be + %named and have atom-type ``@atom:type7''. + +Moltemplate will assign all of these variables to new numbers +when you run it on your LT file later (so the names and numbers do not matter). +Still, you may wish to use a text-editor (or \textit{sed}) to replace all +instances of ``@atom:type7'' with something more meaningful, like ``@atom:CG1'', +and ``@bond:Type3'' with ``@bond:C=C''. + + +\subsection{Examples} +\subsubsection*{Example 1} + +\begin{verbatim} +ltemplify.py -name Mol file.in file.data > mol.lt +\end{verbatim} + +This creates a template for a new type of molecule (named ``Mol''), +consisting of all the atoms in the lammps files you included, +and saves this data in a single LT file (``mol.lt''). +This file can be used with moltemplate.sh (and/or ttree.py) to +define large systems containing this molecule. + +Note: The input script (``file.in'' in this example) should appear + before the data file (``file.data'') in the argument list. + +In many cases, a LAMMPS data file may contain many copies of the same +molecule. In order to select one of these molecules you must manually +indicate the atoms which belong to that molecule. +To do that, use the following syntax: + +\subsubsection*{Example 2} + +\begin{verbatim} +ltemplify.py -name Mol -molid "1" file.in file.data > mol.lt +\end{verbatim} + + In this example, only atoms belonging to molecule 1 are extracted. + +This only works if you are using one of the ``molecular'' atom\_styles. +If you are using a different atom\_style, you can select the atoms you want +either by type or by id number. To do that use the following syntax: +\subsubsection*{Example 3} + +\begin{verbatim} +ltemplify.py -name Mol -atomtype "1 2 3" lammpsfile.in lammpsfile.data > mol.lt +\end{verbatim} + + In this example, only atoms whose type is 1, 2, or 3 are included. + +\subsubsection*{Example 4} + +\begin{verbatim} +ltemplify.py -name Mol -atomid "13 14 15 61*69" \ + lammpsfile.in lammpsfile.data > mol.lt +\end{verbatim} + + In this example, only atoms whose ids are + 13, 14, 15, and 61 through 69 are included. + + + +\subsubsection{ Fixes and Groups } +\label{sec:ltemplify_fix_group} + +ltemplify.py has \textit{limited} support for ``fix'' and ``group'' commands, +including ``fix shake'', ``fix rigid'', and ``fix poems''. +Other fixes must be added manually to the file generated by ltemplify.py. +(Such as fix ``restrain'', ``bond/create'', ``bond/break'', ``ttm'', etc...) + +ltemplify.py can understand simple (static) ``group'' commands, and will include them in the output file, if it can determine that they contain any relevant atoms. (Fixes depending on irrelevant groups are also deleted.) + + +\textit{Note: This feature has not been tested carefully. So please review all of the group and fix commands generated by ltemplify.py to make sure they refer to the correct atoms. And please report any bugs you find. (-Andrew 2014-10-29)} + + + + + +\subsection{Known bugs and limitations (ltemplify.py):} +\label{sec:ltemplify_limitations} +%\subsubsection*{Wildcard characters ``*''} +%Support for wildcards is not consistent throughout an LT file. +% +%Wildcard characters like ``*'' currently mean different things +%in different places. +%In the \textit{write\_once(``Data Angles By Type'') \{...\}} section, +%for example, the ``*'' and ``?'' wildcard characters are interpreted +%as \textit{string wildcards}. +%This means that ``@atom:C?'' will match ``@atom:C1'', ``@atom:C2'', and +%``@atom:CA'', but \textit{not} ``@atom:CA2''. +%However ``@atom:CH*'' will match all of these examples. +%(See appendix \ref{sec:nbody_by_type}.) +%Moltemplate ignores ``*'' characters elsewhere in an LT file, +%and leaves it up to LAMMPS. +% +% +%This means that a ``*'' character appearing in a +%\textit{pair\_coeff}, +%\textit{bond\_coeff}, +%\textit{angle\_coeff}, +%\textit{dihedral\_coeff}, +%\textit{improper\_coeff}, +%or +%\textit{group} +%command, for example, +%is interpreted (by LAMMPS) as a \textit{numeric wildcard}. +%A command like: +% %\mbox{``\textit{pair\_coeff @\{atom:B\}*@\{atom:D\} * lj/cut 0.15 3.6}''} +%\begin{verbatim} +%pair_coeff @{atom:B}*@{atom:D} * lj/cut 0.15 3.6 +%\end{verbatim} +%appearing in an LT file will be substituted with to a numeric equivalent: +% %\mbox{``\textit{pair\_coeff 2*4 * lj/cut 0.15 3.6}''}. +%\begin{verbatim} +%pair_coeff 2*4 * lj/cut 0.15 3.6 +%\end{verbatim} +%LAMMPS will then interpret the result according to its own rules. +%In this example, we have specified the pairwise interaction parameters +%between atom types 2,3,4 and all other atoms. (Subject to the constraint +%that the second atom type must be greater than the first atom type. +%This is a quirk in the way that LAMMPS interprets pair\_coeff commands.) +%For this reason, use of ``*'' characters in LT files is +%currently discouraged (unless part of a ``By Type'' section). + + +\subsubsection*{Exotic styles are not supported} +\label{sec:ltemplify_limitations_pair} +ltemplify.py does \textbf{not} understand the syntax of +exotic many-body pair\_styles such as tersoff, sw, meam, reax, dpd, edip, +dipole, lubricate, hbond/dreiding +(even though these styles are supported by moltemplate). +After running ltemplify.py, the user must manually edit the resulting ``.lt'' +files. For example: ltemplify.py will not understand wildcard characters +(``*'' characters) +which appear in the ``pair\_coeff'' commands or ``Pair Coeffs'' section. +You will have to remove the extra lines generated by ltemplify.py and +put the wildcard characters back (eg ``pair\_coeff * * ...'') manually. +(Later the user may need to run moltemplate using the appropriate ``-a'' + command line args to make sure the various atom types are assigned + to the correct numbers. This is usually needed in order to keep them + consistent with the order of parameters in the corresponding pair style's + input files. See section \ref{sec:manual_assignment}.) +In addition, auxiliary atom types (such as the ``hydrogen'' atom type +required by hbond/dreiding) +If you are using the ``hbond/dreiding'' pair style, you will +have to manually specify the atom type for the hydrogen-atom mediator +in every ``pair\_coeff'' command. + + +\subsubsection*{Wildcard characters (``*'') expansion} +As explained in section \ref{sec:limitations}, +moltemplate is often confused whenever wildcard characters (``*'' characters) +appear inside any of the the ``coeff'' commands +(or ``Coeff'' sections of the data file). +So ltemplify.py attempts to remove these characters and expand these commands, +generating multiple lines of output, and listing each atom type explicitly. +(This is also done for bond types, angle types, dihedral types, + and improper types.) +This may not be what you want. +(For example, this can be a problem if you are using a pair style +which requires you to specify ``* *'' for the atom types, such as +\textit{tersoff}, \textit{eam}, or \textit{sw}.) + + +\section{Visualization in VMD} +\label{sec:vmd_advanced} + +This appendix is only intended to give you a quick, +minimal list of features you need to know to +display your molecules using VMD. +These instructions were written for VMD 1.9 +and topotools 1.2. + %(See \cite{VMD} and \cite{topotools}). +For advanced VMD features, analysis, and rendering options, +consult the official VMD documentation at +\url{http://www.ks.uiuc.edu/Research/vmd/current/docs.html} + +\subsection{Customizing the appearance in VMD} +\label{sec:vmd_representation} +By default, VMD is likely to display your molecules with +points and lines, which can be ugly and difficult to see. +To alter the appearance of your molecules, select the +\textbf{Graphics}$\rightarrow$\textbf{Representations...} menu, +and then select an option from the +\mbox{\textbf{Drawing Method}} pull-down menu. +Atoms are colored by atom-type by default. +You can customize the color of each atom type by +\mbox{\textbf{Graphics}}$\rightarrow$\mbox{\textbf{Colors...}} +As of 2012-11-18, VMD arbitrarily allows you to +assign colors to \textit{only} the first 9 atom types. +However you can get around this limitation +using multiple \textit{representations} +customize the appearance of the +remaining atom types (as explained below). + +You may wish to use different representations for different molecules +or atom types. To do this, select the +\textbf{Graphics}$\rightarrow$\textbf{Representations...} menu +and click on then \mbox{\textbf{Selections}} tab. +Then click on the \mbox{\textbf{Create Rep}} +button to create multiple ``\textit{representations}'' of your system. +For each \textit{representation}, you can select different sets atoms, +and use different draw-styles, for those atoms. +For example, you can customize the color of these atoms manually +by choosing \textbf{ColorID} from the + %For each \textit{representation}, + %you can use different drawing and coloring + %methods, and change the atom and bond radii. + %To control the color manually, + %choose \textbf{ColorID} from the +\mbox{\textbf{Coloring Method}} pull-down menu. +Then, to the right of this menu, you can select the color +(which is represented by a number). +This will effect all of atoms in the current \textit{representation}. +You can also select a different \mbox{\textbf{Draw Style}} and +alter the atom and bond radii. + +You can select from the the list of \textit{representations} you have +already created +by clicking on the list under the \mbox{\textbf{Create Rep}} button. +(Double-clicking temporarily hides a \textit{representation} from view.) + %(You can also temporarily hide \textit{representations} by double-clicking + % on them in the list of selections below the \mbox{\textbf{Create Rep}} + % button.) + +Again, each \textit{representation} is usually assigned to +a different subset of atoms from the system. +To specify the atoms in each \textit{representation}, +click on the \mbox{\textbf{Selections}} tab. +By default ``all'' +atoms are selected, however you can select atoms according to atom +\textbf{type}, \textbf{index}, \textbf{resid}, +\textbf{charge}, \textbf{mass}, \textbf{x}, \textbf{y}, \textbf{z}. +This will limit the current display settings to a +subset of the atoms/bonds present in your system. +When selecting atoms, you can use complex boolean expressions +(containing one or more \textit{and} and \textit{or} operators +and parenthesis). +For more information and some examples, +see \url{http://www.ks.uiuc.edu/Research/vmd/vmd-1.9/ug/node19.html} +and +\url{http://www.ks.uiuc.edu/Research/vmd/vmd-1.9/ug/node87.html#ug:topic:selections}. + + %You can select from the list of \textit{representations} you have created + %You can selecting different atoms in each \textit{representation} + %as explained below. + +\textit{\textbf{Note:}} +In VMD/topotools, +the \textbf{type}, \textbf{index}, and \textbf{resid} +properties of each atom correspond +to the \textit{@atom}, \textit{\$atom}, and \textit{\$mol} +variables for each atom in moltemplate. + %associated with each atom in the ``Data Atoms'' section of your LT files. +Unfortunately, VMD does not understand moltemplate variable naming syntax +(discussed in section \ref{sec:variables}). +Instead, in VMD, variables must be +specified by their numeric equivalents. +You can determine these numbers by reading the +\textit{output\_ttree/ttree\_assignments.txt} file. +(See section \ref{sec:ttree_assignments} for details.) +That file contains a table containing a list of the +numbers assigned to each \textit{@atom} (type), \textit{\$atom} (id), +and \textit{\$mol} (molecule-id) variable. + + + + + +\subsection{Visualizing periodic boundaries} +\label{sec:vmd_pbc} +To view the periodic box boundaries, +select the \textbf{Extensions}$\rightarrow$\mbox{\textbf{Tk Console}} menu, +and in the \textit{Tk Console} window, enter: +\begin{verbatim} +pbc box +\end{verbatim} +Note that the molecules in your system might not lie inside this box. +You can \textit{wrap} them inside the box using this command: +\begin{verbatim} +pbc wrap -compound res -all +\end{verbatim} +You may wish to center the box around a molecule. There are several ways to +do this. You can move the box manually this way: +\begin{verbatim} +pbc wrap -compound res -all -shiftcenterrel {0.0 0.15 0.0} +pbc box -shiftcenterrel {0.0 0.15 0.0} +\end{verbatim} +This will shift the position of the box by 15\% in the Y direction. +(Distances are measured in units of box-length fractions, not Angstroms.) + +\textit{(Advanced usage: if you have a solute whose atoms are all +of type ``1'', surrounded by a solvent of atoms of type ``2'' +then you can also try this to center the box around it using: +``pbc wrap -sel type=1 -all -centersel type=2 -center com''. +The ``1'' and ``2'' are the @atom type numbers assigned by moltemplate. +This can be found in the output\_ttree/ttree\_assignments.txt file. +If you are viewing a trajectory, then this will modify the appearance +of every step in the trajectory, centering the box around the solute atoms.)} + +For more details visualizing periodic-boundaries, visit: +\url{http://www.ks.uiuc.edu/Research/vmd/plugins/pbctools} + +To prevent atom overlap, you should also check if your periodic boundary +conditions are too small. +To do that: +\begin{list}{} +\item a) select \mbox{\textit{Graphics}$\rightarrow$\textit{Representations}} +menu option +\item b) click on the "Periodic" tab, and +\item c) click on the + \textbf{+x}, \textbf{-x}, + \textbf{+y}, \textbf{-y}, + \textbf{+z}, \textbf{-z}, + and \textbf{self} checkboxes. +\end{list} + +When doing so, inspect the system to make sure the atoms which appear +occupy non-overlapping volumes in space. + + + +\section{Advanced moltemplate.sh Usage} +\label{sec:ttree_man_page} + + +moltemplate.sh has several optional command line arguments. +These are explained in below: + +\begin{verbatim} +Usage: + +moltemplate.sh [-atomstyle style] \ + [-pdb/-xyz/-raw coord_file] \ + [-a assignments.txt] file.lt + +Optional arguments: + +-atomstyle style By default, moltemplate.sh assumes you are using the "full" + atom style in LAMMPS. You can change the atom style to "dipole" + using -atomstyle dipole. If you are using a hybrid style, + you must enclose the list of styles in quotes. For example: + -atomstyle "hybrid full dipole" + For custom atom styles, you can also specify the + list of column names manually (enclosed in quotes): + -atomstyle "molid x y z atomid atomtype mux muy muz" + Be careful to enclose the entire list in quotes("). + +-raw raw_file The raw_file file should contain the atomic coordinates in RAW format. + RAW files are simple 3-column ASCII files containin the coordinates + for the atoms in the system. (One line per atom, 3 numbers per line. + The atoms must appear in the same order in the data file.) +-xyz xyz_file An xyz_file argument should be supplied as an argument + following "-xyz". + This file should contain the atomic coordinates in xyz format. + (The atoms must appear in the same order in the data file.) + +-pdb pdb_file The pdb_file file should contain the atomic coordinates in PDB format. + + This file should contain one ATOM or HETATM record per atom. Atoms + + are sorted by chainID, resID, insertCode, atomID (in that order). + This order must match the order the atoms appear in the data file. + + If the PDB file contains periodic boundary box information + (IE., a "CRYST1" record), this information is also copied + to the LAMMPS data file. + (Support for triclinic cells is experimental as of 2014-12-09. + Other molecular structure formats may be supported later. +-a "@atom:x 1" +-a assignments.txt + The user can customize the numbers assigned to atom, bond, + angle, dihedral, and improper types or id numbers by using + -a "VARIABLE_NAME VALUE" + for each variable you want to modify. If there are many + variables you want to modify, you can save them in a file + (one variable per line). For an example of the file format + run moltemplate.sh once and search for a file named + "ttree_assignments.txt". (This file is often located in + the "output_ttree/" directory.) Once assigned, the remaining + variables in the same category will be automatically assigned + to values which do not overlap with your chosen values. +-b assignments.txt + "-b" is similar to "-a". However, in this case, no attempt + is made to assign exclusive (unique) values to each variable. +-nocheck + Normally moltemplate.sh checks for common errors and typos and + halts if it thinks it has found one. This forces the variables + and categories as well as write(file) and write_once(file) + commands to obey standard naming conventions. The "-nocheck" + argument bypasses these checks and eliminates these restrictions. +-checkff + This cause moltemplate.sh to check to make sure that there + are valid angle and dihedral interactions defined for every + 3 or 4 consecutively bonded atoms in the system + (defined in "Angles/Dihedrals By Type"). +\end{verbatim} + +\subsection{Manual variables assignment (``-a'' or ``-b'')} +\label{sec:manual_assignment} + +It is possible to manually customize the values assigned +to the atom types (or to any other ttree-style variables). + %Create a new file ("new\_assignments.txt" in the example below) + %containing the list of atom types you want to modify, + %and the numbers you want to assign them. + %(This is a two-column file which mimics the contents + %of the ``ttree\_assignments.txt'' file explained below.) +For example, consider the the ``spce.lt'' file shown earlier. +This file defines a single water molecule with two atom types +(hydrogen and oxygen). +Typically the ``O'' atom type is normally assigned to the integer ``1'', +and ``H'' would be assigned to ``2''. +This is because ``O'' appears before ``H'' in that file. +If you wanted to swap the order, you could swap the order +in which they first appear. + +Alternately you can specify the atom assignments directly +using one or more ``-a'' flags followed by a quoted assignment string: +\begin{verbatim} +moltemplate.sh -a '@atom:SPCE/O 2' system.lt +\end{verbatim} +This assigns the oxygen atom type to ``2''. +Note that quotes are necessary around the '@atom:SPCE/O 2' string, +which is a single argument. +(Also note that it is necessary to include SPCE/ before + %the ``H'' and + the O, + because in that example, + %these atoms + this atom + appeared (and + %were + was + thus defined) inside the SPCE molecule's environment. + Alternately, if + %they + it + had been defined outside, globally, + then you could refer to + %them + it + using + %``@atom:H'', or + ``@atom:O'') + +Variables need not be assigned to numbers. +If for some reason, you want to substitute ``a string'' everywhere +this atom type appears, you would do it this way: +\begin{verbatim} +moltemplate.sh -a '@atom:SPCE/O "a string"' system.lt +\end{verbatim} + +Multiple assignments can be made by using multiple ``-a'' flags: +\begin{verbatim} +moltemplate.sh -a '@atom:SPCE/O 2' -a '@atom:SPCE/H 1' system.lt +\end{verbatim} +However if you have a large number of assignments to make, +it may be more convenient to store them in a file. +You can create a two-column text file (for example ``new\_assignments.txt'') +and run moltemplate this way: +\begin{verbatim} +moltemplate.sh -a new_assignments.txt system.lt +\end{verbatim} +The contents of the ``new\_assignments.txt'' file in this example would be: +\begin{verbatim} +@atom:SPCE/O 2 +@atom:SPCE/H 1 +\end{verbatim} +The order of lines in this file does not matter. + + + %\subsubsection*{Using ``-pdb'' and ``-a'' together} + %If you are using the ``-pdb'', ``-xyz'', or ``-raw'' flags, + %these must appear first. + %The the ``-a'' (and ``-b'') flags must appear + %\textit{at the end} of the argument list + %(but before the ``.lt'' file). + %For example: + %\begin{verbatim} + %moltemplate.sh -pdb file.pdb -a '@atom:SPCE/O 2' system.lt + %\end{verbatim} + +\subsubsection*{Assigning \$angle, \$dihedral, \$improper variables} +In general any kind of variable can be assigned this way (not only atom types), +including \$mol, \$bond, @bond, @angle, \$angle, ... +as well as user-defined variable type. +\textit{Caveat: The only occasional exceptions are the +\$angle, \$dihedral, \$improper variables.} +(When ``Angles By Type'' interactions are selected by the user, +and mixed with regular ``Angles'', +all of the \$angle variables are automatically generated. + %The user does not have the freedom to assign any \$angle variables. +The same is true for ``Dihedrals By Type'' and ``Impropers By Type''. +See section \ref{sec:nbody_by_type_utility} for an explanation of +``By Type'' interactions.) + + +Angles, dihedrals, and impropers interactions are automatically generated, and +in this case the user does not have the freedom to assign these variables. + %``write('Data Angles By Types')'', + %``write('Data Dihedrals By Types')'', or + %``write('Data Angles By Types')'' + +\subsubsection*{The ``-b'' flag} +Note that when using the ``-a'' flag above, care will be taken to +insure that the assignment(s) are exclusive. +None of the atom types (other than @atom:SPCE/O) will be assigned ``2''. +(For this reason, using the ``-a'' flag to change the atom type + assignments can, in principle, alter the numbers assigned + other atom types, or variables.) + %in the same category.) +This usually the desired behavior. +However suppose, for some reason, that you wanted to +force a variable assignment, so that other +variables in the same category are not effected. +In that case, you can use the ``-b'' flag: +\begin{verbatim} +moltemplate.sh -b '@atom:SPCE/O 2' system.lt +\end{verbatim} +Keep in mind, that in this example, this could cause other atom-types +(for example ``@atom:SPCE/H'') to be assigned to overlapping numbers. + %For this reason, the ``-b'' flag is usually used only for + %custom user-defined variable categories + %(such as the ``\$resid'' counter example described + %in section \ref{sec:custom_categories}). + + +\subsubsection*{The ``ttree\_assignments.txt'' file} +\label{sec:ttree_assignments} +Generally, after running moltemplate.sh, a ``ttree\_assignments.txt'' +file will be created (or updated if it is already present) +to reflect any changes you made. +(This file is usually located in the ``output\_ttree/'' directory. + It can also be located the current directory ``./''.) +You can always check this to make sure that the atom types +(or any other ttree variables) were assigned correctly. + +The ``ttree\_assignments.txt'' file has the same format +as the ``new\_assignments.txt'' file example above. + +\textit{Note:} In both files, an optional slash, ``/'', + may follow the ``@'' or ``\$'' characters, + as in ``@/atom:SPCE/O''. +(This slash is optional and indicates +the environment in which the counter is defined. +The ``@atom'' counter is defined globally. +The ``\$resid'' counter example described +in section \ref{sec:custom_categories} is not.) + +\textit{Bug-warning: Using the ``delete'' command +may cause some of the instance variables +(specifically the \$atom, \$mol, \$bond, \$angle, \$dihedral, +and \$improper variables) +to be numbered incorrectly. +However static variables (beginning with @) should always be accurate. +-Andrew 2013-4-07.} + + +\subsubsection*{lttree.py and ttree.py also accept ``-a'' and ``-b'' flags} +If for some reason, you are using ``lttree.py'' or ``ttree.py'' +instead of ``moltemplate.sh'', then the ``-a'' and ``-b'' flags explained +here also work with these scripts. They are not specific to moltemplate.sh. + + + + +\subsection{Customizing the counting method using \textit{category}} +\label{sec:custom_categories} +Variables in ``.lt'' files are assigned to integers by default, +starting with 1, and incrementing by 1. +This can be overridden using the ``category'' command. +For example, to create a new variable category named ``distance'' +which starts at $0$ and increments by $0.5$, +you would include this command in your LT file: +\begin{verbatim} +category $distance(0.0, 0.5) +\end{verbatim} +(This command should \textit{not} be used with traditional counter categories + like +\textit{\$atom, \$bond, \$angle, \$dihedral, \$improper, \$mol, +@atom, @bond, @angle, @dihedral,} and \textit{@improper}.) + + %\subsection{Combining files together} + %\label{sec:combining_data_files} + %This is useful if you are combining data files from two systems together. + %For example if a previous system contains + %317982 atoms, 292106 bonds, 275790 angles, + %259474 dihedrals, and 7520 impropers, + %then the next time you run moltemplate, you would insert the following text + %at the beginning of your LT file (system.lt) + %\begin{verbatim} + %category $atom(317983, 1) + %category $bond(292107, 1) + %category $angle(275791, 1) + %category $dihedral(259475, 1) + %category $improper(7521, 1) + %\end{verbatim} + %This will avoid overwriting the settings for these + %atoms, bonds, angles, dihedrals, and impropers in the previous system. + %The corresponding ``Atoms'', ``Bonds'', ``Angles'', ``Dihedrals'', + %and ``Impropers'' from the new DATA file can be directly appended to + %same sections from the old DATA file. + %(Note that the temporary files in the ``output\_ttree/'' + %with names like ``Data Atoms'', ``Data Bonds'', ``Data Angles'', ..., + %contain only the text from these sections and should make this task easier. + %See section \ref{sec:output_ttree}. + %If you need help to combine a large number of systems together, + %contact \includegraphics[height=0.3cm]{author_email.png} + %and we can work on an automated solution. + %I would like to eventually see moltemplate be used for large systems.) + +\subsection{Creating local independent counters} +\label{sec:cpath_simple} +By default variables in a given category are always assigned +to unique integers. +This can be overridden using the ``category'' command. +For example, you might have a variable that keeps track of +the position index of each residue in each protein chain. +The first residue in a protein (N-terminus) is assigned ``1'', +the second residue, ``2'', etc, +\textit{regardless} of the number of protein chains in your system. + +To do this, we can create a new variable category named ``resid'' which +is defined within the scope of each instance of the ``Protein'' molecule: +\begin{verbatim} +Residue { + write("Data Atoms") { + $atom:ca @atom:CA $resid:. 0.0 0.0 0.0 0.0 + $atom:cb @atom:CB $resid:. 0.0 1.53 0.0 0.0 + } +} + +Protein { + category $resid(1,1) + residues = Residue[100] +} + +proteins = Protein[10] +\end{verbatim} +In this example, there are 10 proteins containing 100 residues each. +The ``\$resid'' counters will be replaced with integers in the range +$1\ldots 100$, +(not $1\ldots 1000$, as you might expect). +Because the ``\$resid'' counter is local to the +protein it is defined within, +``\$resid'' variables in other proteins do not share the same counter, +and can overlap. + +\subsection{Counting order} +\label{sec:order} +Most variables are assigned automatically. +By default static variables (@) are assigned in the order +they appear in the file (or files, if multiple LT files are included). +Subsequently, instance variables (\$) +are assigned in the order they are created during instantiation. +However you can customize the order in which they are assigned. + +\subsubsection*{Ordering} + +LT files are parsed by moltemplate.sh/lttree.py +in multiple stages. +The ``write\_once()'' and ``write()'' commands are carried out +in the static and instance phases respectively, as explained below. + +\subsubsection*{The \textit{static} phase} + +In the ``static'' phase, +``write\_once()'' statements are carried out in the order they are read +from the user's input file(s) +(regardless of whether or not they appear in nested classes). +Any ``include'' commands will effect this order. +After processing the class definitions, and carrying out +the ``write\_once()'' commands, +lttree.py begins the instantiation phase. + +\subsubsection*{The \textit{instantiation} phase} + +During this phase, lttree.py makes copies of (instantiates) classes +which were requested by the user using the ``new'' command. +During this stage, lttree.py also appends data +to files using the ``write'' command. +(In this manual, the ``write()'' and ``new'' are called instance commands.) +The sequence of alternating ``write()'' and ``new'' commands in the +order that they appear in the user's input file(s). +``new'' commands recursively invoke any instance commands for each +copy of the class they create. + %Instantiation proceeds recursively, creating new copies of classes + %which appear in ``new'' statements defined within a class. + + %\subsubsection{Instance variables ordering (\$)} + %\label{sec:order_customization} + %By default, variables with a \$ prefix + %are assigned in exactly the same order + %that the ``write()'' commands are carried out + %(as described above). + % + %\subsubsection*{The ``-order-dfs'' command} + %\textit{(This is an experimental feature as of 2012-2-13.)} + %However, if the ``-order-dfs'' command line option is selected, + %then instance variables (\$) are counted in the order they appear + %in the tree of instantiated classes (IE. the ``instance tree''), with only + %secondary regard to the order of the ``write'' commands that created them. + %Specifically, this means that the lowest numbers are assigned + %to ordinary variables defined outside any class definitions + %(a.k.a. ``global instance frame''). + %Attention is then turned to the variables belonging to + %the first class which is instantiated, + % %(IE. using the ``new'' command). + %and numbers are then assigned to these variables. + %Whenever a class contains any sub-instances, + %the variables in that sub-instance are assigned to numbers, recursively. + %(In other words, when deciding variable order, + % the tree of instantiated classes is traversed + % with a depth-first-search order.) + %Static variables (@) are effected in a similar way (see below). + % %This method of ordering pays no attention to the the order that + % %``write()'' commands would be executed, and the counting order is different. + %(For reference, this is also the order that variables are + % listed in the ``ttree\_assignments.txt'' file.) + + %\subsubsection*{The ``-order-file'' command} + %\textit{(This is an experimental feature as of 2012-2-13.)} + %If ``-order-file'' command line option is selected, + %then instance variables (\$) are primarily sorted + %according to the position that the variable first + %appears in the user input files. + %Position in the instance tree (as described above) + %is used as a secondary sorting criteria. + %After sorting, variables are then assigned + %to numbers in the order they have been sorted. + %This will not match the order that the + %``write()'' commands are carried out by lttree.py. + + +%\subsubsection*{Static variable ordering (@)} +% +%By default, static @ variables are assigned in the order that +%they appear in the user's input file +%(after any ``include'' commands have been carried out). +%This is true regardless of whether they appear in +%``write()'' or ``write\_once()'' commands, +%and whether they appear in nested classes. +%If ``-order-dfs'' is selected, then static @ variables are defined +%in the order they appear in the tree, +%with variables defined in the outermost nested class, +%(the global class named ``/'') define first. +%If this option is selected then static variables defined in +%``write\_once()'' commands are assigned to numbers first +%before any variables in ``write()'' command are processed. +%(Position in the input file is used as a secondary sort criteria.) +%On the other hand, the ``-order-file'' command line option +%(described above) does not modify the numeric ordering of static variables +%(because they are ordered according to file position by default). + +Again, the counting of instance variables (prefixed by ``\$'') +does not interfere with static variable assignment. +For example ``@atom:x'' and ``\$atom:x'' +correspond to different variables and +belong to different variable categories +(``@atom'' and ``\$atom'') +and they are assigned to numerical values independently. + + + +\section{Using \textit{lttree.py} or \textit{ttree.py} directly} +\subsection*{(bypassing moltemplate.sh)} +\label{sec:ttree} + +``moltemplate.sh'' is only a simple script which invokes ``lttree.py'', +and then combines the various output files generated by lttree.py into a +single LAMMPS input script and a data file, along with coordinate data. +``lttree.py'' then invokes ``ttree.py''. +``ttree.py'' lacks the ability to read or generate coordinates, but +is otherwise nearly identical to ``lttree.py'' and ``moltemplate.sh''. + +If in the future moltemplate.sh no longer works with some new, recently added +LAMMPS feature, you can bypass moltemplate.sh and run lttree.py +or ttree.py directly. +Everything moltemplate.sh does can essentially be done by hand with +a unix shell and a text editor. This procedure is outlined below. + + +\subsection{First run ttree.py} + +The syntax for running ``ttree.py'' is identical to the syntax for running +moltemplate.sh. The moltemplate.sh syntax is explained above. + +Unfortunately, ttree.py does not understand the -pdb, -xyz, or -raw arguments +for processing coordinate data. If you run ``ttree.py'' directly, then you +must extract the coordinate data from these files yourself and insert it into +your lammps input files manually. This is explained below. + +Example: +Go to the examples/waterSPCE/ directory and run: + +ttree.py system.lt + +This will prepare LAMMPS input files for a system of 32 water molecules. +(In this example, we are using the ``SPCE'' water model.) + +Running the command above will probably create the following files: +``Data Atoms'' (The ``Atoms'' section of a LAMMPS data file, w/o coordinates) +``Data Bonds'' (The ``Bonds'' section of a LAMMPS data file) +``Data Angles'' (The ``Angles'' section of a LAMMPS data file) +``Data Masses'' (The ``Masses'' section of a LAMMPS data file) +``In Init'' (The ``Initialization'' section of a LAMMPS input script.) +``In Settings'' (The ``Settings'' section of a LAMMPS input script, which typically + contains force-field parameters, group defs, and constraints) +``Data Boundary'' (The ``Periodic Boundary Conditions'' section of a LAMMPS data file.) +``ttree\_assignments.txt'' (Variable assignments. See ``customization'' section.) + + +This data can be easily combined into a single LAMMPS data file and a +single lammps input script later on, using a text editor, or the unix +``cat'' and ``paste'' commands. + +It may also create these files: +``Data Angles By Type'', +``Data Dihedrals By Type'', +``Data Impropers By Type''. +These files tell moltemplate how to automatically generate bonded-interactions +by atom and bond type. They must be converted to lists of +angles, dihedrals, and impropers, using the ``nbody\_by\_type.py'' utility + %(and stored in files named + % ``Data Angles'' ``Data Dihedrals'' and ``Data Impropers''), +(as explained in appendix \ref{sec:nbody_by_type}). + + +\subsection{Then create a LAMMPS data file} + +Create a new file (``system.data'' in this example), +and paste the following text into it: + +\subsubsection*{Create the ``header'' section} +Example: +\begin{verbatim} +LAMMPS Description + + 96 atoms + 64 bonds + 32 angles + 0 dihedrals + + 2 atom types + 1 bond types + 1 angle types + 0 dihedral types + + 0.000000 9.043 xlo xhi + 0.000000 15.663 ylo yhi + 0.000000 7.361 zlo zhi +\end{verbatim} +If you use ttree.py, will have to count the number of +atoms, bonds, and atom types, bond types etc. yourself. + +Note: the numbers in the ``xlo xhi'' ``ylo yhi'' ``zlo zhi'' lines determine the +simulation box size, and will vary from system to system. +If ttree created a file named ``Data Boundary'', you can copy this information from there. +(Triclinic cells have a fourth line containing the ``xy xz yz'' parameters.) +(If you have a .PDB file, these boundary box numbers are in the ``CRYST1'' +line near the beginning of the file.) + + +Once you've created the ``header'' section of the data file, +paste the other sections to the end of your LAMMPS data file +(with the appropriate section headings and blank lines). +\begin{verbatim} +echo "" >> system.data +echo "Atoms" >> system.data +echo "" >> system.data +cat "Data Atoms" >> system.data +echo "" >> system.data +echo "Bonds" >> system.data +echo "" >> system.data +cat "Data Bonds" >> system.data +echo "" >> system.data +echo "Angles" >> system.data +echo "" >> system.data +cat "Data Angles" >> system.data +echo "" >> system.data +echo "Masses" >> system.data +echo "" >> system.data +cat "Data Masses" >> system.data +echo "" >> system.data +\end{verbatim} + +Depending on your system, you may also have these files as well: +``Data Dihedrals'' +``Data Impropers'' +``Data Bond Coeffs'' +``Data Angle Coeffs'' +``Data Dihedral Coeffs'' +``Data Improper Coeffs''. +If so, then then append them to the end of your data file as well. +(There are numerous other optional sections for ``class2'' force-fields. + Exotic atom styles also require their own sections + such as ``lines'' ``ellipsoids'' and ``triangles''. + Consult the LAMMPS documentation for details on these as well.) + + +\subsection{Now create the LAMMPS input script} + +\begin{verbatim} +echo "include \"In Init\"" > system.in +echo "read_data system.data" >> system.in +echo "include \"In Settings\"" >> system.in +\end{verbatim} +Lastly, you have to worry about supplying the atomic coordinates. +(Unlike moltemplate, ttree.py does not handle atom coordinates.) + +The following commands are useful for extracting coordinates from PDB or XYZ +files and converting them to LAMMPS input script commands: + +\subsection{Extract coordinates} +To extract coordinates from a .PDB file (``file.pdb''), use: + +\begin{verbatim} +awk '/^ATOM |^HETATM/{print substr($0,31,8) \ + " "substr($0,39,8) \ + " "substr($0,47,8)}' \ + < file.pdb \ + > tmp_atom_coords.dat +\end{verbatim} +\textit{(Note: There should be two spaces following the word ``ATOM'' above.)} +%between ``ATOM'' and ``$|$\textasciicircum{}HETATOM'' above.)} + + +To extract coordinates from an XYZ file (``file.xyz''), use: +\begin{verbatim} +awk 'function isnum(x){return(x==x+0)} \ + BEGIN{targetframe=1;framecount=0} \ + {if (isnum($0)) {framecount++} else \ + {if (framecount==targetframe) { \ + if (NF>0) { \ + if ((NF==3) && isnum($1)) { \ + print $1" "$2" "$3} \ + else if ((NF==4) && isnum($2)) { \ + print $2" "$3" "$4} }}}}' \ + < file.xyz \ + > tmp_atom_coords.dat +\end{verbatim} + +\subsection{Convert the coordinate file to LAMMPS input script format} + +\begin{verbatim} +awk '{if (NF>=3) { \ + natom++; print "set atom "natom" x "$1" y "$2" z "$3" "}}' \ + < tmp_atom_coords.dat \ + >> system.in.coords +\end{verbatim} +Finally import ``system.in.coords'' in your lammps input script using: +\begin{verbatim} +echo "include \"system.in.coords\"" >> system.in +\end{verbatim} + + +\section{Using the \textit{nbody\_by\_type.py} utility} +\subsection*{(bypassing moltemplate.sh)} +\label{sec:nbody_by_type_utility} + +moltemplate.sh uses the ``nbody\_by\_type.py'' utility +to generate many-body interactions between bonded atoms +by atom type. +In the event that moltemplate.sh crashes or is not up-to-date with LAMMPS, +you can assign interactions by type by manually invoking nbody\_by\_type.py +yourself. + + +As an example, the following command will generate a file ``Angles'' +containing lines of text which should eventually be pasted into the ``Angles'' +section of a LAMMPS data file: +\begin{verbatim} +nbody_by_type Angles \ + -atoms "Data Atoms" \ + -bonds "Data Bonds" \ + -subgraph "nbody_Angles.py" \ + -nbodybytype "Data Angles By Type" \ + > "Data Angles" +\end{verbatim} + +For dihedral or improper interactions, repeat the command above, and +replace ``Angles'' with ``Dihedrals'', or ``Impropers'' everywhere. + +\textit{Note: +The above instructions work assuming that you do not use any +wildcard characters (``*'' or ``?'') +or regular expressions +in your ``Angles By Type'' section. +If you use wildcards or regular expressions, +then you must run the program this way: +} +\begin{verbatim} +nbody_by_type Angles \ + -atoms "Data Atoms.template" \ + -bonds "Data Bonds.template" \ + -subgraph "nbody_Angles.py" \ + -nbodybytype "Data Angles By Type.template" \ + > "Data Angles.template" +\end{verbatim} +\textit{ +Afterwards, you must then replace each variable in the +``Angles.template'' file with the appropriate integer +before you copy the contents into the LAMMPS data file. +(The ttree\_render.py program may be useful for this. + Open the moltemplate.sh file with a text editor to + see how this was done.) +} + +Note that ``Data Atoms'', and ``Data Bonds'' refer to files which are normally +created by ``ttree.py'' or ``lttree.py'' which +contain atom and bond data in LAMMPS data file format, respectively. +Similarly ``Data Angles By Type'' refers to a file +containing instructions for how to automatically generate angles by atom type. +(Again, this would typically be generated by running ``ttree.py'' or + ``lttree.py'' on an LT file containing a block of text wrapped + inside a ``write\_once('Data Angles By Type')'' command.) + +Note: if you already have existing ``Data Angles'', you can add them to +the list of angle interactions created by nbody\_by\_type.py. + +\begin{verbatim} +nbody_by_type Angles \ + -atoms "Data Atoms" \ + -bonds "Data Bonds" \ + -subgraph "nbody_Angles.py" \ + -nbodyfile "Data Angles" \ + -nbodybytype "Data Angles By Type" \ + > extra_Angles.tmp +cat extra_Angles.tmp "Data Angles" > new_Angles +mv -f new_Angles "Data Angles" +rm -f extra_Angles.tmp +\end{verbatim} + + +\subsection{Usage} +For reference, the complete man page for the ``nbody\_by\_type.py'' +command is included below. +\begin{verbatim} + nbody_by_type.py reads a LAMMPS data file (or an excerpt of a LAMMPS) + data file containing bonded many-body interactions by atom type + (and bond type), and generates a list of additional interactions + in LAMMPS format consistent with those type (to the standard out). + + Typical Usage: + + nbody_by_type.py X < old.data > new.data + + --or-- + + nbody_by_type.py X \ + -atoms atoms.data \ + -bonds bonds.data \ + -subgraph "nbody_X.py" \ + -nbody X.data \ + -nbodybytype X_by_type.data + > new_X.data + + In both cases "X" denotes the interaction type, which + is either "Angles", "Dihedrals", or "Impropers". + Support for other interaction types can be added by the user. See below. + + Note: The optional "-subgraph" argument allows you to customize the + rules used to match and generate interactions of that type. + It is optional, and is only useful for forcefields which + use non-standard dihedral or improper atom-order convetions.) + + -------- Example 1 ------- + + nbody_by_type.py X < old.data > new.data + + In this example, nbody_by_type.py reads a LAMMPS data file + "orig.data", and extracts the relevant section ("Angles", + "Dihedrals", or "Impropers"). It also looks a section named "X By Type", + (eg. "Angles By type", "Impropers By type", "Impropers By type") + which contains a list of criteria for automatically defining additional + interactions of that type. For example, this file might contain: + + Angle By Type + + 7 1 2 1 * * + 8 2 2 * * * + 9 3 4 3 * * + + The first column is an interaction type ID. + The next 3 columns are atom type identifiers. + The final 2 columns are bond type identifiers. + The * is a wildcard symbol indicating there is no preference for bond types + in this example. (Optionally, regular expressions can also be used to + define a type match, by enclosing the atom or bond type in / slashes.) + + The first line tells us to that there should be a 3-body "Angle" + interaction of type "7" whenever an atom of type 1 is bonded to an atom + of type "2", which is bonded to another atom of type "1" again. + The second line tells us that an angle is defined whenever three atoms + are bonded together and the first two are of type "2". + (Redundant angle interactions are filtered.) + + New interactions are created for every group of bonded + atoms which match these criteria if they are bonded together + in the relevant way for that interaction type (as determined by + nbody_X.py), and printed to the standard output. For example, + suppose you are automatically generating 3-body "Angle" interactions using: + + nbody_by_type Angles < old.data > new.data + + The file "new.data" will be identical to "old.data", however the + "Angles By Type" section will be deleted, and the following lines of + text will be added to the "Angles" section: + + 394 7 5983 5894 5895 + 395 7 5984 5895 5896 + 396 7 5985 5896 5897 + : : : : : + 847 9 14827 14848 14849 + + The numbers in the first column are counters which assign a ID to + every interaction of that type, and start where the original "Angles" + data left off (New angle ID numbers do not overlap with old ID numbers). + The text in the second column ("7", "9", ...) matches the text from the + first column of the "Angle By Type" section of the input file. + + -------- Example 2 ------- + + nbody_by_type.py X \ + -atoms atoms.data \ + -bonds bonds.data \ + -subgraph "nbody_X.py" \ + -nbody X.data \ + -nbodybytype X_by_type.data \ + > new_X.data + + In particular, for Angle interactions: + + nbody_by_type.py Angles \ + -atoms atoms.data \ + -bonds bonds.data \ + -subgraph "nbody_Angles.py" \ + -nbody angles.data \ + -nbodybytype angles_by_type.data \ + > new_Angles.data + + When run this way, nbody_by_type.py behaves exactly the same way + as in Example 1, however only the lines of text corresponding to + the new generated interactions are printed, (not the entire data file). + Also note, that when run this way, nbody_by_type.py does not read the + LAMMPS data from the standard input. Instead, it reads each section of + the data file from a different file indicated by the arguments following + the "-atoms", "-bonds", "-nbody", and "-nbodybytype" flags. + + "Angles" is a 3-body interaction style. So when run this way, + nbody_by_type.py will create a 5 (=3+2) column file (new_Angles.data). + +Note: the atom, bond and other IDs/types in need not be integers. + +Note: This program must be distributed with several python modules, including: + nbody_Angles.py, nbody_Dihedrals.py, and nbody_Impropers.py. These + contain bond definitions for angular, dihedral, and improper interactions. +\end{verbatim} + +\subsection{Custom bond topologies} +\label{sec:nbody_by_type_custom} + Currently nbody\_by\_type.py can detect and generate ``Angle'' +and ``Dihedral'' interactions between 3 and 4 consecutively bonded atoms. +It can also generate ``Improper'' interactions between 4 atoms bonded +with a T-shaped topology (one central atom with 3 branches). +The nbody\_by\_type.py script imports external modules named +``nbody\_Angles.py'', ``nbody\_Dihedrals.py'', and ``nbody\_Impropers.py'' +to help it detect angles, dihedrals, and improper interactions automatically. +In case any new interaction types are ever added to LAMMPS, +it is easy to define new bonded interaction types by supplying +a new ``nbody\_X.py'' python modules. +These python files are usually only a few lines long. +Copy one of the existing modules +``nbody\_Angles.py'', ``nbody\_Dihedrals.py'', or ``nbody\_Impropers.py'') +and modify it to the subgraph inside to match the bonded network +that you want to search for. + + + + + +\section{Variable syntax details} +\label{sec:adv_variable_syntax} + +Counter variables have names like: + +\$\textit{\textbf{cpath}}/\textit{\textbf{catname}}:\textit{\textbf{lpath}} + +or + +@\textit{\textbf{cpath}}/\textit{\textbf{catname}}:\textit{\textbf{lpath}} + +(Note: All of the variable examples in this appendix can refer to either +static @ variables or instance \$ variables. Both variable types obey the +same syntax rules. For brevity, only the instance \$ variables are shown.) + +All counter variables have 3 parts: + +\begin{list}{} +\item +\textit{\textbf{cpath}}, the category scope object (which is usually omitted) +\item +\textit{\textbf{catname}}, the category name +\item +\textit{\textbf{lpath}}, the ``leaf path''. + This includes the variable's name and (optionally) + the location of that variable in the object tree relative + to the object in which the variable is referenced + (the current-context object) +\item +\end{list} + +Typically the \textit{\textbf{cpath}} is omitted, +in which case it means that the category has global scope. +\textit{(This is true for all of the standard counter variable types: +``@atom'', ``\$atom'', ``\$mol'', +``@bond'', ``\$bond'', +``@angle'', ``\$angle'', +``@dihedral'', ``\$dihedral'', +``@improper'', and ``\$improper''.)} +However the \textit{\textbf{cpath}} can be specified +explicitly, as in this example: ``\$/atom:'' +(``/'' denotes explicitly that the counter has global scope). +Another example with an explicit \textit{\textbf{cpath}} is +the custom local counter variable named ``\$/proteins[5]/resid:.'' +(See section \ref{sec:cpath_simple}.) +In this example, the \textit{\textbf{cpath}} is ``\$/proteins[5]'', the +\textit{\textbf{catname}} is ``resid'', +and the \textit{\textbf{lpath}} is ``.''. +(In section +\ref{sec:cpath_simple}, +we never explicitly specified the \textit{\textbf{cpath}}. +This is a source of confusion. +When \textit{\textbf{cpath}} is omitted, +then the program searches up the tree for an ancestor node +containing a category with a matching \textit{\textbf{catname}}. Consequently +the \textit{\textbf{cpath}} rarely ever needs to be stated explicitly. +See section \ref{sec:variables_shorthand} for more details.) + + +\subsection{General variable syntax} +The ellipsis (``...'') commonly appears in counter variables +(or it is implied). The most complex and general variable syntax is: + +\$\textit{\textbf{cpath}}/.../\textit{\textbf{catname}}:\textit{\textbf{lpath}} + +This means: find the closest ancestor of the \textit{\textbf{cpath}} object containing a category named ``\textit{\textbf{catname}}''. This ancestor determines the category's scope. Counter variables in this category are local to ancestors of that object. In this usage example, \textit{\textbf{lpath}} identifies the location of the variable's corresponding ``leaf'' object +relative to the category scope object (\textit{\textbf{cpath}}). +On the other hand, if the the category's scope (\textit{\textbf{cpath}}) +was not explicitly stated by the user (which is typical), +then the \textit{\textbf{lpath}} identifies the location of the leaf object relative to +the object in which the variable was referenced +(the current-context ``.''). + +\subsection{Variable shorthand equivalents} +\label{sec:variables_shorthand} + +\subsubsection*{\$\textit{\textbf{catname}}:\textit{\textbf{lpath}} is equivalent to ``\$.../\textit{\textbf{catname}}:\textit{\textbf{lpath}}''} + %\label{sec:variables_shorthand_catname:lpath} +This means: find the closest direct ancestor of the current object containing a category whose name matches \textit{\textbf{catname}}. If not found, create a new category (at the global level). \textit{This is the syntax used most frequently in LT files.} + +If the colon is omitted, as in \$\textit{\textbf{lpath}}/\textit{\textbf{catname}}, +then it is equivalent to: \$\textit{\textbf{catname}}:\textit{\textbf{lpath}}. +Again, in these cases, \textit{\textbf{lpath}} is a path which is relative to the object +in which the variable was referenced. + +If \$\textit{\textbf{lpath}} is omitted, then this is equivalent to \$\textit{\textbf{catname}}:. In other words, the the leaf node is the current node, ``.''. (This syntax is often used to count keep track of molecule ID numbers. You can use the counter variable ``\$mol'' to keep track of the current molecule id number, because it counts the molecular objects in which this variable was defined. In this case the name of the category is ``mol''. As in most examples, the category object, \textit{\textbf{cpath}}, is not specified. This means the category object is automatically global. A global category object means that every molecule object is given a unique ID number which is unique for the entire system, not just unique within some local molecule. As a counter-example, consider amino acid residue counters. Each amino acid in a protein can be assigned a residue ID number which identifies it within a single protein chain. However because their category was defined locally at the protein level, these residue ID numbers are not global, and are not uniquely defined if there are multiple protein chains present.) + + + +\subsubsection*{\$\textit{\textbf{cpath}}/\textit{\textbf{catname}}:\textit{\textbf{lpath}}/...} +\textit{(SHORTHAND equivalent)} + %\label{sec:variables_shorthand_catname:lpath_ellipsis} + +Find the category name and object corresponding to ``\$\textit{\textbf{cpath}}/\textit{\textbf{catname}}:'' +(see above) +If \$\textit{\textbf{cpath}}/ is blank, then search for an ancestor with a category whose name matches \textit{\textbf{catname}}, as described above. +To find the variable's corresponding ``leaf object'', start from the CURRENT object (not the category object). If \textit{\textbf{lpath}} is not empty, follow \textit{\textbf{lpath}} to a new position in the tree. Otherwise, start at the current object. (An empty \textit{\textbf{lpath}} corresponds to the current object.) From this position in the object tree search for a direct ancestor which happens to also be ``leaf object'' for some other variable which belongs to the desired category. If no such variable is found, then ttree creates a new variable whose leaf object is the object at the \textit{\textbf{lpath}} position, and put it in the desired category. + +\subsubsection*{\$\textit{\textbf{lpath}}/.../\textit{\textbf{catname}} is equivalent to \$\textit{\textbf{catname}}:\textit{\textbf{lpath}}/...} +\textit{(SHORTHAND equivalent)} + %\label{sec:variables_shorthand_lpathSellipsisScatname} + +If \textit{\textbf{lpath}} is omitted, then start from the current node. +(In the molecular examples, ``\$.../mol'' is a variable whose category name is ``mol''. The ``leaf object'' for the variable is either the current object in which this variable was defined, OR a direct ancestor of this object which has been assigned to a variable belonging to the category named ``mol''. In this way large objects (large molecules) can be comprised of smaller objects, without corrupting the ``mol'' counter which keeps track of which molecule we belong to. In other words, ``\$.../mol'' unambiguously refers to the ID\# of the large molecule to which this sub-molecule belongs (regardless of however many layers up that may be).) + +\subsubsection*{\$\textit{\textbf{cpath}}/\textit{\textbf{catname}}:\textit{\textbf{lpath}}} + %\label{sec:variables_shorthand_cpathScatname:lpath} +\textit{Variables in the output\_ttree/ttree\_assignments.txt file + use the this syntax.} + +If the user explicitly specifies the path leading up to the cat node, and avoids using ``...'', then \textit{\textbf{lpath}} is interpreted relative to the category object, not the current object (however \textit{\textbf{cpath}} is interpreted relative to the current object). This happens to be the format used in the ``ttree\_assignments.txt'' file (although you can use it anywhere else in an ``.LT'' file). In ``ttree\_assignments.txt'' file, \textit{\textbf{cpath}} is defined relative to the global object. The variables in that file always begin with ``\$/'' or ``@/''. The slash at the beginning takes us to the global environment object (to which all the other objects belong). (Since the variables in the ``ttree\_assignments.txt'' always begin with ``\$/'' or ``@/'', this distinction is usually not important because the category object for most variables usually is the ``global'' root object.) + + + +\bibliography{refs.bib} + +\end{document} + diff --git a/tools/moltemplate/examples/coarse_grained_examples/abstract_random_heteropolymer/images/2bead.jpg b/tools/moltemplate/doc/moltemplate_manual_src/random_2bead.jpg similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/abstract_random_heteropolymer/images/2bead.jpg rename to tools/moltemplate/doc/moltemplate_manual_src/random_2bead.jpg diff --git a/tools/moltemplate/examples/coarse_grained_examples/abstract_random_heteropolymer/images/3bead.jpg b/tools/moltemplate/doc/moltemplate_manual_src/random_3bead.jpg similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/abstract_random_heteropolymer/images/3bead.jpg rename to tools/moltemplate/doc/moltemplate_manual_src/random_3bead.jpg diff --git a/tools/moltemplate/doc/moltemplate_manual_src/random_heteropolymer.jpg b/tools/moltemplate/doc/moltemplate_manual_src/random_heteropolymer.jpg new file mode 100644 index 0000000000000000000000000000000000000000..cc6822e7b3eb15dffb75d1ce8fc2c32e4f2befd0 Binary files /dev/null and b/tools/moltemplate/doc/moltemplate_manual_src/random_heteropolymer.jpg differ diff --git a/tools/moltemplate/doc/moltemplate_manual_src/refs.bib b/tools/moltemplate/doc/moltemplate_manual_src/refs.bib new file mode 100644 index 0000000000000000000000000000000000000000..fd5276aaff6927a5e264ad601e2f0111093595a4 --- /dev/null +++ b/tools/moltemplate/doc/moltemplate_manual_src/refs.bib @@ -0,0 +1,161 @@ +@STRING{CELL="Cell"} +@STRING{JMB="J. Mol. Biol."} +@STRING{BIOCHEMISTRY="Biochemistry"} +@STRING{BIOPHYSICALCHEMISTRY="Biophys. Chem."} +@STRING{JCP="J. Chem. Phys."} +@STRING{PNAS="Proc. Natl. Acad. Sci. USA"} +@STRING{BIOPOLYMERS="Biopolymers"} +@STRING{SCIENCE="Science"} +@STRING{MMBR="Microbiol. Mol. Biol. R."} +@STRING{NATURE="Nature"} +@STRING{NATSTRUCTBIOL="Nat. Struct. Biol."} +@STRING{NATBIOTECHNOL="Nat. Biotechnol."} +@STRING{JBIOLCHEM="J. Biol. Chem."} +@STRING{JSTRUCTBIOL="J. Struct. Biol."} +@STRING{FOLDINGANDDESIGN="Folding and Design"} +%@STRING{PROTSTRFUNCGEN="Prot. Str. Func. Gen."} +@STRING{PROTSTRFUNCGEN="Proteins"} +@STRING{PRL="Phys. Rev. Lett."} +@STRING{TIBS="Trends in Biochem. Sci."} +@STRING{EMBOJ="EMBO J."} +@STRING{FEBS="FEBS Letters"} +@STRING{FASEB="FASEB"} +@STRING{JBIOCHEMTOXICOL="J. Biochem. Toxicol."} +@STRING{CRBMB="Crit. Rev. Biochem. Mol. Biol."} +@STRING{CHEMREV="Chem. Rev."} +@STRING{ANNUREVBIOCHEM="Annu. Rev. Biochem."} +% ------------------ books ---------------------- + + +@INBOOK{vanKampenBook, + AUTHOR="van Kampen, N. G.", + TITLE="Stochastic Processes in Physics and Chemistry, 2nd Edition", + PUBLISHER="North Holland", + PAGES={96--127}, + MONTH="July", + DAY="1", + YEAR=2001 +} + + +@ARTICLE{LAMMPS, + AUTHOR="S. Plimpton", + TITLE="Fast Parallel Algorithms for Short-Range Molecular Dynamics", + JOURNAL="J. Comp. Phys.", + VOLUME=117, + PAGES={1--19}, + YEAR="1995", + NOTE={\url{http://lammps.sandia.gov/}} +} + + +@ARTICLE{packmol, + AUTHOR="Martínez, L. and Andrade, R. and Brigin, E. G. and Martínez, J. M.", + TITLE="Packmol: A package for building initial configurations for molecular dynamics simulations.", + JOURNAL="J. Comp. Chem.", + VOLUME=30, + NUMBER=13, + PAGES={2157--2164}, + YEAR=2009, + NOTE={\url{http://www.ime.unicamp.br/~martinez/packmol/}} +} + + +%% The primary VMD citation, should be used by all publications using VMD +@article{VMD, + author={William Humphrey and Andrew Dalke and Klaus Schulten}, + title={{VMD} -- {V}isual {M}olecular {D}ynamics}, + journal={Journal of Molecular Graphics}, + year=1996, + volume=14, + pages={33-38}, + tbstatus={Published.}, + techrep={}, + tbreference={222}, + NOTE={\url{http://www.ks.uiuc.edu/Research/vmd}} +} + +%% Interactive Molecular Dynamics, cited by papers doing IMD simulations +@inproceedings{VMDIMD, + author={John Stone and Justin Gullingsrud and Paul Grayson and Klaus Schulten}, + title={A System for Interactive Molecular Dynamics Simulation}, + booktitle={2001 ACM Symposium on Interactive 3D Graphics}, + publisher={ACM SIGGRAPH}, + address={New York}, + editor={John F. Hughes and Carlo H. S\'equin}, + pages={191-194}, + year={2001}, + note={}, + tbreference={304}, + tbstatus={Published.}, + annote={This symposium took place between March 19-21, 2001. {ISBN} 1-58113-292-1.} +} + +@MISC{topotools, + AUTHOR="Axel Kohlmeyer", + TITLE="{The TopoTools VMD plugin}", + HOWPUBLISHED={\url{http://sites.google.com/site/akohlmey/software/topotools/}} +} + + +@MISC{pizzapy, + AUTHOR="Steve Plimpton", + TITLE="{The Pizza.py toolkit}", + HOWPUBLISHED={\url{http://www.cs.sandia.gov/~sjplimp/pizza.html}} +} + + +@ARTICLE{TraPPE, + AUTHOR="Marcus G. Martin and J. Ilja Siepmann", + TITLE="Transferable Potentials for Phase Equilibria. 1. United-Atom Description of n-Alkanes", + JOURNAL="J. Phys. Chem. B", + VOLUME=102, + NUMBER=14, + PAGES={2569--2577}, + YEAR=1998 +} + + +@ARTICLE{Raviv++SafinyaBiophysJ2007, + AUTHOR="Uri Raviv and Toan Nguyen and Rouzbeh Ghafouri and Daniel J. Needleman and Youli Li and Herbert P. Miller and Leslie Wilson and Robijn F. Bruinsma and Cyrus R. Safinya", + TITLE="Microtubule Protofilament Number Is Modulated in a Stepwise Fashion by the Charge Density of an Enveloping Layer", + JOURNAL="Biophys. J.", + VOLUME=92, + NUMBER=1, + PAGES={278--287}, + YEAR="2007", + MONTH={January}, + DAY={1} +} + + +@ARTICLE{Raviv++SafinyaPNAS2005, + AUTHOR="Uri Raviv and Daniel J. Needleman and Youli Li and Herbert P. Miller and Leslie Wilson and Cyrus R. Safinya", + TITLE="Cationic liposome-microtubule complexes: Pathways to the formation of two-state lipid-protein nanotubes with open or closed ends", + JOURNAL="Proc. Natl. Acad. Sci. USA", + VOLUME=102, + NUMBER=32, + PAGES={11167--11172}, + YEAR="2005", + MONTH={August}, + DAY={9} +} + +@ARTICLE{Berendsen++StraatsmaJPhysChem1987, + AUTHOR="H. J. C. Berendsen and J. R. Grigera and T. P. Straatsma", + TITLE="The Missing Term in Effective Pair Potentials", + JOURNAL="J. Phys. Chem.", + VOLUME=91, + NUMBER=24, + PAGES={6269--6271}, + YEAR="1987", +} + + +@ARTICLE{Klimov+ThirumalaiPRL1997, + AUTHOR="Klimov, D. K. and Thirumalai, D.", + JOURNAL="Phys. Rev. Lett.", + VOLUME=79, + PAGES={317--320}, + YEAR="1997" +} diff --git a/tools/moltemplate/doc/moltemplate_manual_src/single_water_LR.jpg b/tools/moltemplate/doc/moltemplate_manual_src/single_water_LR.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7961fa3b53894eafc1917d406e5c797615f9f237 Binary files /dev/null and b/tools/moltemplate/doc/moltemplate_manual_src/single_water_LR.jpg differ diff --git a/tools/moltemplate/doc/moltemplate_manual_src/tether.jpg b/tools/moltemplate/doc/moltemplate_manual_src/tether.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c7673b2cc8776d0a44eb9a12c7206c9e1d700793 Binary files /dev/null and b/tools/moltemplate/doc/moltemplate_manual_src/tether.jpg differ diff --git a/tools/moltemplate/doc/moltemplate_manual_src/waterSPCEx1000_LR.jpg b/tools/moltemplate/doc/moltemplate_manual_src/waterSPCEx1000_LR.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b3d6f05d51adcc227138a66865b30b5159ae3c34 Binary files /dev/null and b/tools/moltemplate/doc/moltemplate_manual_src/waterSPCEx1000_LR.jpg differ diff --git a/tools/moltemplate/doc/moltemplate_manual_src/waterSPCEx1000_t=25_LR.jpg b/tools/moltemplate/doc/moltemplate_manual_src/waterSPCEx1000_t=25_LR.jpg new file mode 100644 index 0000000000000000000000000000000000000000..56344f957338a8b5f8fa0991dc4ee26cf40881d9 Binary files /dev/null and b/tools/moltemplate/doc/moltemplate_manual_src/waterSPCEx1000_t=25_LR.jpg differ diff --git a/tools/moltemplate/src/moltemplate_docs_useful_scripts/docs_dump2data.txt b/tools/moltemplate/doc/utils/docs_dump2data.txt similarity index 100% rename from tools/moltemplate/src/moltemplate_docs_useful_scripts/docs_dump2data.txt rename to tools/moltemplate/doc/utils/docs_dump2data.txt diff --git a/tools/moltemplate/src/moltemplate_docs_useful_scripts/docs_extract_lammps_data.txt b/tools/moltemplate/doc/utils/docs_extract_lammps_data.txt similarity index 93% rename from tools/moltemplate/src/moltemplate_docs_useful_scripts/docs_extract_lammps_data.txt rename to tools/moltemplate/doc/utils/docs_extract_lammps_data.txt index 2b591d0fa3892c2b5caedb30da2863bbf64cc3e2..0e1bf1ae267e53ea02d4970d78b51f7dafeaedaa 100644 --- a/tools/moltemplate/src/moltemplate_docs_useful_scripts/docs_extract_lammps_data.txt +++ b/tools/moltemplate/doc/utils/docs_extract_lammps_data.txt @@ -1,7 +1,6 @@ extract_lammps_data.py is a simple script which extracts sections of text from a LAMMPS data file. (Of coarse, you can accomplish the same thing with a text -editor, but this script performs the task automatically.) - +editor, but this script turns it into a one-line command.) Typical usage: @@ -36,7 +35,7 @@ extract_lammps_data.py "Pair Coeffs" "Bond Coeffs" "Angle Coeffs" \ The following section names are allowed: -"Header" # The header section at the beginning of the file. +"Header" # The header section at the beginning of the file. "Atoms" "Masses" "Bonds" diff --git a/tools/moltemplate/doc/utils/docs_genpoly_lt.txt b/tools/moltemplate/doc/utils/docs_genpoly_lt.txt new file mode 100644 index 0000000000000000000000000000000000000000..dbc751176da0a1eb5b3c82f713d0c7b169d03766 --- /dev/null +++ b/tools/moltemplate/doc/utils/docs_genpoly_lt.txt @@ -0,0 +1,206 @@ +Explanation: + + Generate a moltemplate file containing a definition of a Polymer + molecule containing monomers located at the positions specified in + "coords.raw" (a 3-column text file). Monomers will be rotated so + that they point along the polymer axis direction (see "-dir-indices") + with an optional helical twist added (see "-helix"). Users can + specify one or more bonds connecting each monomer to the next monomer + (see "-bond"). Similarly, 3-body and 4-body angular interactions between + atoms in different monomers can either be generated automatically + (using the standard moltemplate "Angle By Type" rules) + OR generated manually (using "-angle", "-dihedral", "-improper" arguments). + +Usage: + + genpoly_lt.py \\ + [-bond btype a1 a2] \\ + [-helix deltaphi] \\ + [-axis x,y,z] \\ + [-circular yes/no/connected] \\ + [-dir-indices ia ib] \ + [-angle atype a1 a2 a3 i1 i2 i3] \\ + [-dihedral dtype a1 a2 a3 a4 i1 i2 i3 i4] \\ + [-improper itype a1 a2 a3 a4 i1 i2 i3 i4] \\ + [-monomer-name mname] \\ + [-sequence sequence.txt] \\ + [-polymer-name pname] \\ + [-inherits ForceFieldObject] \\ + [-header "import \"monomer.lt\""] \\ + [-cuts cuts.txt] \\ + [-box paddingX,paddingY,paddingZ] \\ + < coords.raw > polymer.lt + +Arguments (optional): + + -axis x,y,z direction of the polymer axis in the original monomer object. + These three numbers (separated by commas with no spaces) + define the direction that the monomer subunit is pointing in. + By default, the three numbers are 1 0 0 (ie, the X axis) + + -helix deltaphi = Optionally, rotate each monomer around it's axis by + angle deltaphi (in degrees) beforehand + + -circular keyword + keyword must be one of these: + "no" The polymer is a linear chain with the two ends + not connected. + "yes" The polymer is a circular loop with the two ends + connected pointing in similar directions. + "connected" Connect the two ends together with bonds (and angles, + and dihedrals, if applicable) to make a closed loop. + But do not adjust the orientation of the first and + last monomers so that they point towards eachother. + (Use this if you plan to simulate an "infinitely" + long polymer using periodic boundary conditions, + with the two ends are connected on opposite sides.) + + -dir-indices ia ib + The program attempts to orient each monomer in a direction that + the polymer is pointing. By default, the program will + orient monomer i in the direction connecting the monomers before + and after it (monomers i-1 and i+1). The user can override this + using the -dir-indices command line argument. The ia and ib + arguments are integer offsets. To point monomer i in the direction + connecting it to the following monomer (i+1), use -dir-indices 0 1 + (For circular polymers, the indices will be wrapped appropriately.) + + -bond btype a1 a2 + Add a bond between successive monomers of type btype. + between atoms named a1 and a2 (all three arguments are strings and + omit the @bond: and $atom: prefixes in moltemplate variables) + Multiple bonds between successive monomers can be added by having + "-bond bt a1 a2" appear several times in the argument list. + For example, double-stranded DNA can be implemented as a polymer + with 2 bonds connecting separate monomers (if each "monomer + corresponds to a base pair). + + -angle atype a1 a2 a3 i1 i2 i3 + Add a 3-body angle interaction between atoms a1 a2 a3 in monomers + i1 i2 and i3. (The aname atype a1, a2, a3 arguments are strings + containing moltemplate variable names. The standard moltemplate + prefixes "$angle:", "@angle:", and "$atom:" should be omitted. + The i1, i2, i3 arguments are integer indices indicating the monomer + that each atom belongs to. + 0 corresponds to the current monomer + 1 corresponds to the next monomer + 2 corresponds to the following monomer, etc... + (For circular polymers, the indices will be wrapped appropriately.) + Multiple angles per monomer can be added by having: + "-angle aname atype a1 a2 a3 i1 i2 i3" + appear several times in the argument list. + + + -dihedral dtype a1 a2 a3 a4 i1 i2 i3 i4 + Add a 4-body dihedral interaction between atoms a1 a2 a3 a4 in + monomers i1 i2 and i3. (The dname dtype a1, a2, a3, a4, arguments + are strings containing moltemplate variable names. The moltemplate + prefixes "$dihedral:", "@dihedral:", and "$atom:" should be omitted + The i1, i2, i3, i4 arguments are integer indices indicating the + monomer that each atom belongs to. (See explanation above.) + Multiple dihedrals per monomer can be added by having: + "-dihedral dname dtype a1 a2 a3 a4 i1 i2 i3 i4" + appear several times in the argument list. + + -improper itype a1 a2 a3 a4 i1 i2 i3 i4 + Add a 4-body improper interaction between atoms a1 a2 a3 a4 in + monomers i1 i2 and i3. (The iname itype a1, a2, a3, a4, arguments + are strings containing moltemplate variable names. The moltemplate + prefixes "$improper:", "@improper:", and "$atom:" should be omitted + The i1, i2, i3, i4 arguments are integer indices indicating the + that each atom belongs to. (See explanation above.) + Multiple impropers per monomer can be added by having: + "-improper iname itype a1 a2 a3 a4 i1 i2 i3 i4" + appear several times in the argument list. + + -monomer-name name + Name of the moltemplate object that will be created. + (By default "Monomer") Note: You can include 1 or more + coordinate transformations added to the monomer subunit + before it is moved into position. For example, it is + often useful to to use a modified version of the monomer + whose initial coordinates are compressed to avoid collisions + with other monomers. To do this, use something like + "Monomer.scale(0.5,0.7,0.7)" instead of "Monomer". + This typically would compress each monomer lengthwise by 0.5 + and 0.7 laterally. (After minimization, each monomer should + expand back to its ordinary size and shape.) + + -header 'some text' + This is a way to add text at the beginning of the file. + It was intended to be used to define the force fields and + the monomer subunits you are using. For example: + -header 'import "FILE_WHICH_DEFINES_Monomer.lt"' + + -sequence sequence.txt + If you are building a heteropolymer this argument allows + you to specify the sequence of monomers in the polymer. + Here "sequence.txt" file contains the sequence of monomers + you want in your polymer. Each line of this file should + be the name of a moltemplate object for the monomer subunit + you want at that location. The number of lines in this file + should match the number of lines in the coordinate file. + As before, you can include coordinate transforms in each + monomer's name. + + -polymer-name name + Name of the moltemplate object that will be created. + (By default "Polymer") + + -inherits ForceFieldObject + "ForceFieldObject" is the name of a moltemplate object which + defines any rules for creating angles, dihedrals, impropers + which you want to be generated automatically. Hopefully + this is object was defined somewhere in the file that + you imported using the "-header" argument. + + -cuts cut_locations.txt + Cut the polymer in several places along its length. + This can be useful if your goal is to create many + polymers of different lenthgs. Rather than being forced + to define a new Polymer object for each polymer, simply + cut the polymer N times along its length. The file + "cut_locations.txt" is a text file containing a list of + positive integers (one per line) indicating where you would + like the polymer to be cut. For each integer, i, which + appears in this file, a cut is made between monomers + i-1 and i (Indexing begins at 0, so a value of 1 + corresonds to a cut between the first and second monomers.) + A separate polymer object will be created for each polymer, + and an integer suffix will be added to the name, to + distinguish them from eachother. (Each of these + polymers will be part of a larger object defined by this + program. Instantiating that object will create all of the + individual polymers.) + + -box paddingX,paddingY,paddingZ + This will cause the program to attempt to estimate the size + of the smallest rectangular box which encloses all of the + coordinates in the coordinate file. The user must supply + 3 comma-separated numbers (no spaces) which indicate how much + extra room is needed in the x,y,z directions, at both ends. + + +Examples: + + 1) Make a simple polymer, adding "@bond:Backbone" type bonds between + "$atom:c2" from each monomer with "$atom:c1" from the next monomer. + + genpoly_lt.py -bond Backbone c2 c1 < crds.raw > poly.lt + + 2) Make a circular twisted double-stranded DNA model, treating each base-pair + as a monomer, and connecting each base-pair monomer with 2 bonds + with the next base-pair. This is done using 2 "-bond" + commands connecting the "O3p_a" atom with the "P_a" atom (in strand A), + and the "P_b" atom with the "O3p_b" atom (from the opposite strand, B). + + genpoly_lt.py -circular yes -helix 34.2857 \ + -header 'import "basepair.lt" #<--defines "BasePair"' \ + -monomer-name "BasePair" \ + -polymer-name "Plasmid" \ + -bond Backbone O3p_a P_a \ + -bond Backbone P_b O3p_b \ + < dna_basepair_CM_coords.raw \ + > chromosome.lt + If you want to control the sequence of the polymer, replace the + "-monomer-name" argument with "-sequence sequence.txt". diff --git a/tools/moltemplate/src/moltemplate_docs_useful_scripts/docs_raw2data.txt b/tools/moltemplate/doc/utils/docs_raw2data.txt similarity index 100% rename from tools/moltemplate/src/moltemplate_docs_useful_scripts/docs_raw2data.txt rename to tools/moltemplate/doc/utils/docs_raw2data.txt diff --git a/tools/moltemplate/examples/README.TXT b/tools/moltemplate/examples/README.txt similarity index 94% rename from tools/moltemplate/examples/README.TXT rename to tools/moltemplate/examples/README.txt index e3602541c76e03ed62a455c5cf75caf8cc62584a..e024bffcdc3e90df6115c7d25af01929536e6061 100644 --- a/tools/moltemplate/examples/README.TXT +++ b/tools/moltemplate/examples/README.txt @@ -14,11 +14,11 @@ Each example directory contains: run.in.min run.in.npt - run.in.nvt - + run.in.nvt + You can run these scripts using lmp_linux -i run.in.npt -(The name of your lammps binary, "lmp_linux" in this example, may vary. +(The name of your lammps binary, "lmp_linux" in this example, may vary. Sometimes, these scripts must be run in a certain order. For example it may be necessary to run run.in.min to minimize the system before you can use run.in.npt, and later run.in.nvt. The README_run.sh file in each subdirectory specifies indicates the order. These files have not been optimized.) diff --git a/tools/moltemplate/examples/force_field_AMBER/WARNING.TXT b/tools/moltemplate/examples/all_atom/force_field_AMBER/WARNING.txt similarity index 98% rename from tools/moltemplate/examples/force_field_AMBER/WARNING.TXT rename to tools/moltemplate/examples/all_atom/force_field_AMBER/WARNING.txt index 9d6d0e1b356bbf2eb6a0aa9d23bbea89f69d7e20..f7e65cf482cb4982d973f1504eda2f8adfd5a94e 100644 --- a/tools/moltemplate/examples/force_field_AMBER/WARNING.TXT +++ b/tools/moltemplate/examples/all_atom/force_field_AMBER/WARNING.txt @@ -39,13 +39,13 @@ http://dasher.wustl.edu/tinker/distribution/params/oplsaa.prm) --- Improper angles --- -I am also uncertain whether the improper angle interactions generated by +I am also uncertain whether the improper angle interactions generated by moltemplate are equivalent to those generated by AmberTools. (I think they are, but I am worried that I might have listed the atom types in the wrong order.) --- Bloated lammps input scripts --- -LAMMPS input scripts prepared using moltemplate contain the entire contents +LAMMPS input scripts prepared using moltemplate contain the entire contents of the GAFF force-field, even when simulating small systems with just a few atom types. diff --git a/tools/moltemplate/examples/force_field_AMBER/benzene/README.TXT b/tools/moltemplate/examples/all_atom/force_field_AMBER/benzene/README.txt similarity index 100% rename from tools/moltemplate/examples/force_field_AMBER/benzene/README.TXT rename to tools/moltemplate/examples/all_atom/force_field_AMBER/benzene/README.txt diff --git a/tools/moltemplate/examples/all_atom/force_field_AMBER/benzene/README_remove_irrelevant_info.sh b/tools/moltemplate/examples/all_atom/force_field_AMBER/benzene/README_remove_irrelevant_info.sh new file mode 100755 index 0000000000000000000000000000000000000000..67528d426ea4f4ea3dbbde4eaa7d2c1f8627eee1 --- /dev/null +++ b/tools/moltemplate/examples/all_atom/force_field_AMBER/benzene/README_remove_irrelevant_info.sh @@ -0,0 +1,8 @@ + +# Note: By default, the system.data and system.in.settings files contain +# extra information for atoms defined in AMGER/GAFF ("gaff.lt") which you +# are not using in this simulation. +# This is harmless, but if you to delete this information from your +# system.in.settings and system.in.data files, run this script: + +cleanup_moltemplate.sh diff --git a/tools/moltemplate/examples/force_field_AMBER/waterTIP3P+isobutane/README_run.sh b/tools/moltemplate/examples/all_atom/force_field_AMBER/benzene/README_run.sh similarity index 96% rename from tools/moltemplate/examples/force_field_AMBER/waterTIP3P+isobutane/README_run.sh rename to tools/moltemplate/examples/all_atom/force_field_AMBER/benzene/README_run.sh index 9f923a6c7e7a6b524ecb1b96a28975fd24a49502..ac39fa950c038fa8a29074a444cddd2d50c8f6f7 100755 --- a/tools/moltemplate/examples/force_field_AMBER/waterTIP3P+isobutane/README_run.sh +++ b/tools/moltemplate/examples/all_atom/force_field_AMBER/benzene/README_run.sh @@ -5,7 +5,7 @@ # To do this, type "make yes-user-misc" before compiling LAMMPS. # http://lammps.sandia.gov/doc/Section_start.html#start_3 # -------- PREREQUISITES: -------- -# The 2 files "run.in.npt", and "run.in.nvt" are LAMMPS +# The 2 files "run.in.npt", and "run.in.nvt" are LAMMPS # input scripts which link to the input scripts and data files # you hopefully have created earlier with moltemplate.sh: # system.in.init, system.in.settings, system.data @@ -21,7 +21,7 @@ lmp_mpi -i run.in.nvt # minimization and simulation at constant volume #(Note: The constant volume simulation lacks pressure equilibration. These are # completely separate simulations. The results of the constant pressure -# simulation might be ignored when beginning the simulation at constant +# simulation might be ignored when beginning the simulation at constant # volume. (This is because restart files in LAMMPS don't always work, # and I was spending a lot of time trying to convince people it was a # LAMMPS bug, instead of a moltemplate bug, so I disabled restart files.) diff --git a/tools/moltemplate/examples/all_atom/force_field_AMBER/benzene/README_setup.sh b/tools/moltemplate/examples/all_atom/force_field_AMBER/benzene/README_setup.sh new file mode 100755 index 0000000000000000000000000000000000000000..e8d8be3f50675dc5434b239d33c280adb04df5ba --- /dev/null +++ b/tools/moltemplate/examples/all_atom/force_field_AMBER/benzene/README_setup.sh @@ -0,0 +1,35 @@ + +# Create LAMMPS input files this way: +cd moltemplate_files + + # run moltemplate + + moltemplate.sh system.lt + + # Optional: + # To check for missing angle,dihedral params run moltemplate this way instead: + # moltemplate.sh -checkff system.lt + + + # Moltemplate generates various files with names ending in *.in* and *.data. + # Move them to the directory where you plan to run LAMMPS (in this case "../") + mv -f system.data system.in* ../ + + + # Optional: + # The "./output_ttree/" directory is full of temporary files generated by + # moltemplate. They can be useful for debugging, but are usually thrown away. + #rm -rf output_ttree/ + +cd ../ + + + + +# Optional: +# Note: The system.data and system.in.settings files contain extra information +# for atoms defined in OPLSAA which you are not using in this simulation. +# This is harmless, but if you to delete this information from your +# system.in.settings and system.in.data files, run this script: +# +# cleanup_moltemplate.sh diff --git a/tools/moltemplate/examples/coarse_grained_examples/membrane+protein/README_visualize.txt b/tools/moltemplate/examples/all_atom/force_field_AMBER/benzene/README_visualize.txt similarity index 92% rename from tools/moltemplate/examples/coarse_grained_examples/membrane+protein/README_visualize.txt rename to tools/moltemplate/examples/all_atom/force_field_AMBER/benzene/README_visualize.txt index 019afc1444a48409143b5c170318479ceb27a391..a3e3ed620ec8b32fb6da484368dc3fc299bad6de 100644 --- a/tools/moltemplate/examples/coarse_grained_examples/membrane+protein/README_visualize.txt +++ b/tools/moltemplate/examples/all_atom/force_field_AMBER/benzene/README_visualize.txt @@ -4,7 +4,7 @@ 1) Build a PSF file for use in viewing with VMD. -This step works with VMD 1.9 and topotools 1.2. +This step works with VMD 1.9 and topotools 1.2. (Older versions, like VMD 1.8.6, don't support this.) @@ -17,7 +17,7 @@ c) Enter: topo readlammpsdata system.data full animate write psf system.psf -2) +2) Later, to Load a trajectory in VMD: @@ -31,17 +31,17 @@ Later, to Load a trajectory in VMD: ---- A note on trajectory format: ----- If the trajectory is a DUMP file, then make sure the it contains the -information you need for pbctools (see below. I've been using this +information you need for pbctools (see below. I've been using this command in my LAMMPS scripts to create the trajectories: dump 1 all custom 5000 DUMP_FILE.lammpstrj id mol type x y z ix iy iz -It's a good idea to use an atom_style which supports molecule-ID numbers -so that you can assign a molecule-ID number to each atom. (I think this +It's a good idea to use an atom_style which supports molecule-ID numbers +so that you can assign a molecule-ID number to each atom. (I think this is needed to wrap atom coordinates without breaking molecules in half.) -Of course, you don't have to save your trajectories in DUMP format, -(other formats like DCD work fine) I just mention dump files +Of course, you don't have to save your trajectories in DUMP format, +(other formats like DCD work fine) I just mention dump files because these are the files I'm familiar with. 3) ----- Wrap the coordinates to the unit cell @@ -57,7 +57,7 @@ d) Try entering these commands: ----- Optional ---- Sometimes the solvent or membrane obscures the view of the solute. - It can help to shift the location of the periodic boundary box + It can help to shift the location of the periodic boundary box To shift the box in the y direction (for example) do this: pbc wrap -compound res -all -shiftcenterrel {0.0 0.15 0.0} @@ -65,19 +65,19 @@ d) Try entering these commands: Distances are measured in units of box-length fractions, not Angstroms. - Alternately if you have a solute whose atoms are all of type 1, + Alternately if you have a solute whose atoms are all of type 1, then you can also try this to center the box around it: pbc wrap -sel type=1 -all -centersel type=2 -center com -4) +4) You should check if your periodic boundary conditions are too small. To do that: select Graphics->Representations menu option - click on the "Periodic" tab, and + click on the "Periodic" tab, and click on the "+x", "-x", "+y", "-y", "+z", "-z" checkboxes. -5) Optional: If you like, change the atom types in the PSF file so +5) Optional: If you like, change the atom types in the PSF file so that VMD recognizes the atom types, use something like: sed -e 's/ 1 1 / C C /g' < system.psf > temp1.psf diff --git a/tools/moltemplate/examples/force_field_AMBER/benzene/moltemplate_files/benzene.lt b/tools/moltemplate/examples/all_atom/force_field_AMBER/benzene/moltemplate_files/benzene.lt similarity index 94% rename from tools/moltemplate/examples/force_field_AMBER/benzene/moltemplate_files/benzene.lt rename to tools/moltemplate/examples/all_atom/force_field_AMBER/benzene/moltemplate_files/benzene.lt index 26ef1d5358ff178c213b27d630f701bf5462e675..05c55482d3b39477ee65e0b531e5e4c3a20e8c99 100644 --- a/tools/moltemplate/examples/force_field_AMBER/benzene/moltemplate_files/benzene.lt +++ b/tools/moltemplate/examples/all_atom/force_field_AMBER/benzene/moltemplate_files/benzene.lt @@ -1,7 +1,8 @@ import "gaff.lt" -# The "gaff.lt" file is usually located in "src/moltemplate_force_fields". +# The "gaff.lt" file is usually located in the "force_fields" +# subdirectory distributed with moltemplate. # Excerpt: # # @atom:ca # Sp2 C in pure aromatic systems diff --git a/tools/moltemplate/examples/force_field_AMBER/benzene/moltemplate_files/system.lt b/tools/moltemplate/examples/all_atom/force_field_AMBER/benzene/moltemplate_files/system.lt similarity index 100% rename from tools/moltemplate/examples/force_field_AMBER/benzene/moltemplate_files/system.lt rename to tools/moltemplate/examples/all_atom/force_field_AMBER/benzene/moltemplate_files/system.lt diff --git a/tools/moltemplate/examples/force_field_AMBER/benzene/run.in.npt b/tools/moltemplate/examples/all_atom/force_field_AMBER/benzene/run.in.npt similarity index 100% rename from tools/moltemplate/examples/force_field_AMBER/benzene/run.in.npt rename to tools/moltemplate/examples/all_atom/force_field_AMBER/benzene/run.in.npt diff --git a/tools/moltemplate/examples/force_field_AMBER/benzene/run.in.nvt b/tools/moltemplate/examples/all_atom/force_field_AMBER/benzene/run.in.nvt similarity index 100% rename from tools/moltemplate/examples/force_field_AMBER/benzene/run.in.nvt rename to tools/moltemplate/examples/all_atom/force_field_AMBER/benzene/run.in.nvt diff --git a/tools/moltemplate/examples/force_field_AMBER/ethylene+benzene/README.TXT b/tools/moltemplate/examples/all_atom/force_field_AMBER/ethylene+benzene/README.txt similarity index 100% rename from tools/moltemplate/examples/force_field_AMBER/ethylene+benzene/README.TXT rename to tools/moltemplate/examples/all_atom/force_field_AMBER/ethylene+benzene/README.txt diff --git a/tools/moltemplate/examples/all_atom/force_field_AMBER/ethylene+benzene/README_remove_irrelevant_info.sh b/tools/moltemplate/examples/all_atom/force_field_AMBER/ethylene+benzene/README_remove_irrelevant_info.sh new file mode 100755 index 0000000000000000000000000000000000000000..67528d426ea4f4ea3dbbde4eaa7d2c1f8627eee1 --- /dev/null +++ b/tools/moltemplate/examples/all_atom/force_field_AMBER/ethylene+benzene/README_remove_irrelevant_info.sh @@ -0,0 +1,8 @@ + +# Note: By default, the system.data and system.in.settings files contain +# extra information for atoms defined in AMGER/GAFF ("gaff.lt") which you +# are not using in this simulation. +# This is harmless, but if you to delete this information from your +# system.in.settings and system.in.data files, run this script: + +cleanup_moltemplate.sh diff --git a/tools/moltemplate/examples/force_field_AMBER/benzene/README_run.sh b/tools/moltemplate/examples/all_atom/force_field_AMBER/ethylene+benzene/README_run.sh similarity index 96% rename from tools/moltemplate/examples/force_field_AMBER/benzene/README_run.sh rename to tools/moltemplate/examples/all_atom/force_field_AMBER/ethylene+benzene/README_run.sh index 9f923a6c7e7a6b524ecb1b96a28975fd24a49502..ac39fa950c038fa8a29074a444cddd2d50c8f6f7 100755 --- a/tools/moltemplate/examples/force_field_AMBER/benzene/README_run.sh +++ b/tools/moltemplate/examples/all_atom/force_field_AMBER/ethylene+benzene/README_run.sh @@ -5,7 +5,7 @@ # To do this, type "make yes-user-misc" before compiling LAMMPS. # http://lammps.sandia.gov/doc/Section_start.html#start_3 # -------- PREREQUISITES: -------- -# The 2 files "run.in.npt", and "run.in.nvt" are LAMMPS +# The 2 files "run.in.npt", and "run.in.nvt" are LAMMPS # input scripts which link to the input scripts and data files # you hopefully have created earlier with moltemplate.sh: # system.in.init, system.in.settings, system.data @@ -21,7 +21,7 @@ lmp_mpi -i run.in.nvt # minimization and simulation at constant volume #(Note: The constant volume simulation lacks pressure equilibration. These are # completely separate simulations. The results of the constant pressure -# simulation might be ignored when beginning the simulation at constant +# simulation might be ignored when beginning the simulation at constant # volume. (This is because restart files in LAMMPS don't always work, # and I was spending a lot of time trying to convince people it was a # LAMMPS bug, instead of a moltemplate bug, so I disabled restart files.) diff --git a/tools/moltemplate/examples/all_atom/force_field_AMBER/ethylene+benzene/README_setup.sh b/tools/moltemplate/examples/all_atom/force_field_AMBER/ethylene+benzene/README_setup.sh new file mode 100755 index 0000000000000000000000000000000000000000..dda26cd444e09b04cf493b10d0d9ad7b8052ec62 --- /dev/null +++ b/tools/moltemplate/examples/all_atom/force_field_AMBER/ethylene+benzene/README_setup.sh @@ -0,0 +1,34 @@ +# Create LAMMPS input files this way: +cd moltemplate_files + + # run moltemplate + + moltemplate.sh system.lt + + # Optional: + # To check for missing angle,dihedral params run moltemplate this way instead: + # moltemplate.sh -checkff system.lt + + + # Moltemplate generates various files with names ending in *.in* and *.data. + # Move them to the directory where you plan to run LAMMPS (in this case "../") + mv -f system.data system.in* ../ + + + # Optional: + # The "./output_ttree/" directory is full of temporary files generated by + # moltemplate. They can be useful for debugging, but are usually thrown away. + #rm -rf output_ttree/ + +cd ../ + + + + +# Optional: +# Note: The system.data and system.in.settings files contain extra information +# for atoms defined in OPLSAA which you are not using in this simulation. +# This is harmless, but if you to delete this information from your +# system.in.settings and system.in.data files, run this script: +# +# cleanup_moltemplate.sh diff --git a/tools/moltemplate/examples/coarse_grained_examples/3bodyWater+hydrocarbons_MW+TraPPE/README_visualize.txt b/tools/moltemplate/examples/all_atom/force_field_AMBER/ethylene+benzene/README_visualize.txt similarity index 92% rename from tools/moltemplate/examples/coarse_grained_examples/3bodyWater+hydrocarbons_MW+TraPPE/README_visualize.txt rename to tools/moltemplate/examples/all_atom/force_field_AMBER/ethylene+benzene/README_visualize.txt index 019afc1444a48409143b5c170318479ceb27a391..a3e3ed620ec8b32fb6da484368dc3fc299bad6de 100644 --- a/tools/moltemplate/examples/coarse_grained_examples/3bodyWater+hydrocarbons_MW+TraPPE/README_visualize.txt +++ b/tools/moltemplate/examples/all_atom/force_field_AMBER/ethylene+benzene/README_visualize.txt @@ -4,7 +4,7 @@ 1) Build a PSF file for use in viewing with VMD. -This step works with VMD 1.9 and topotools 1.2. +This step works with VMD 1.9 and topotools 1.2. (Older versions, like VMD 1.8.6, don't support this.) @@ -17,7 +17,7 @@ c) Enter: topo readlammpsdata system.data full animate write psf system.psf -2) +2) Later, to Load a trajectory in VMD: @@ -31,17 +31,17 @@ Later, to Load a trajectory in VMD: ---- A note on trajectory format: ----- If the trajectory is a DUMP file, then make sure the it contains the -information you need for pbctools (see below. I've been using this +information you need for pbctools (see below. I've been using this command in my LAMMPS scripts to create the trajectories: dump 1 all custom 5000 DUMP_FILE.lammpstrj id mol type x y z ix iy iz -It's a good idea to use an atom_style which supports molecule-ID numbers -so that you can assign a molecule-ID number to each atom. (I think this +It's a good idea to use an atom_style which supports molecule-ID numbers +so that you can assign a molecule-ID number to each atom. (I think this is needed to wrap atom coordinates without breaking molecules in half.) -Of course, you don't have to save your trajectories in DUMP format, -(other formats like DCD work fine) I just mention dump files +Of course, you don't have to save your trajectories in DUMP format, +(other formats like DCD work fine) I just mention dump files because these are the files I'm familiar with. 3) ----- Wrap the coordinates to the unit cell @@ -57,7 +57,7 @@ d) Try entering these commands: ----- Optional ---- Sometimes the solvent or membrane obscures the view of the solute. - It can help to shift the location of the periodic boundary box + It can help to shift the location of the periodic boundary box To shift the box in the y direction (for example) do this: pbc wrap -compound res -all -shiftcenterrel {0.0 0.15 0.0} @@ -65,19 +65,19 @@ d) Try entering these commands: Distances are measured in units of box-length fractions, not Angstroms. - Alternately if you have a solute whose atoms are all of type 1, + Alternately if you have a solute whose atoms are all of type 1, then you can also try this to center the box around it: pbc wrap -sel type=1 -all -centersel type=2 -center com -4) +4) You should check if your periodic boundary conditions are too small. To do that: select Graphics->Representations menu option - click on the "Periodic" tab, and + click on the "Periodic" tab, and click on the "+x", "-x", "+y", "-y", "+z", "-z" checkboxes. -5) Optional: If you like, change the atom types in the PSF file so +5) Optional: If you like, change the atom types in the PSF file so that VMD recognizes the atom types, use something like: sed -e 's/ 1 1 / C C /g' < system.psf > temp1.psf diff --git a/tools/moltemplate/examples/force_field_AMBER/ethylene+benzene/images/benzene.jpg b/tools/moltemplate/examples/all_atom/force_field_AMBER/ethylene+benzene/images/benzene.jpg similarity index 100% rename from tools/moltemplate/examples/force_field_AMBER/ethylene+benzene/images/benzene.jpg rename to tools/moltemplate/examples/all_atom/force_field_AMBER/ethylene+benzene/images/benzene.jpg diff --git a/tools/moltemplate/examples/force_field_AMBER/ethylene+benzene/images/ethylene+benzene_box80x80x80_LR.jpg b/tools/moltemplate/examples/all_atom/force_field_AMBER/ethylene+benzene/images/ethylene+benzene_box80x80x80_LR.jpg similarity index 100% rename from tools/moltemplate/examples/force_field_AMBER/ethylene+benzene/images/ethylene+benzene_box80x80x80_LR.jpg rename to tools/moltemplate/examples/all_atom/force_field_AMBER/ethylene+benzene/images/ethylene+benzene_box80x80x80_LR.jpg diff --git a/tools/moltemplate/examples/force_field_AMBER/ethylene+benzene/images/ethylene.jpg b/tools/moltemplate/examples/all_atom/force_field_AMBER/ethylene+benzene/images/ethylene.jpg similarity index 100% rename from tools/moltemplate/examples/force_field_AMBER/ethylene+benzene/images/ethylene.jpg rename to tools/moltemplate/examples/all_atom/force_field_AMBER/ethylene+benzene/images/ethylene.jpg diff --git a/tools/moltemplate/examples/force_field_AMBER/ethylene+benzene/moltemplate_files/benzene.lt b/tools/moltemplate/examples/all_atom/force_field_AMBER/ethylene+benzene/moltemplate_files/benzene.lt similarity index 94% rename from tools/moltemplate/examples/force_field_AMBER/ethylene+benzene/moltemplate_files/benzene.lt rename to tools/moltemplate/examples/all_atom/force_field_AMBER/ethylene+benzene/moltemplate_files/benzene.lt index 47b1505c58e4a98b93c1ab3436deee46185537d4..008391688eb5b9f4f588140423e2849aa153c289 100644 --- a/tools/moltemplate/examples/force_field_AMBER/ethylene+benzene/moltemplate_files/benzene.lt +++ b/tools/moltemplate/examples/all_atom/force_field_AMBER/ethylene+benzene/moltemplate_files/benzene.lt @@ -1,7 +1,8 @@ import "gaff.lt" -# The "gaff.lt" file is usually located in "src/moltemplate_force_fields". +# The "gaff.lt" file is usually located in "force_fields" subdirectory +# of the moltemplate distribution. # It contains definitions of the atoms "ca", "ha", as well as the bonded # and non-bonded interactions between them (and many other atoms). # diff --git a/tools/moltemplate/examples/force_field_AMBER/ethylene+benzene/moltemplate_files/charges_come_from_OPLSAA/oplsaa_subset.prm b/tools/moltemplate/examples/all_atom/force_field_AMBER/ethylene+benzene/moltemplate_files/charges_come_from_OPLSAA/oplsaa_subset.prm similarity index 100% rename from tools/moltemplate/examples/force_field_AMBER/ethylene+benzene/moltemplate_files/charges_come_from_OPLSAA/oplsaa_subset.prm rename to tools/moltemplate/examples/all_atom/force_field_AMBER/ethylene+benzene/moltemplate_files/charges_come_from_OPLSAA/oplsaa_subset.prm diff --git a/tools/moltemplate/examples/force_field_AMBER/ethylene+benzene/moltemplate_files/ethylene.lt b/tools/moltemplate/examples/all_atom/force_field_AMBER/ethylene+benzene/moltemplate_files/ethylene.lt similarity index 92% rename from tools/moltemplate/examples/force_field_AMBER/ethylene+benzene/moltemplate_files/ethylene.lt rename to tools/moltemplate/examples/all_atom/force_field_AMBER/ethylene+benzene/moltemplate_files/ethylene.lt index cad6ea4a8de9ac19dee1b6b60a0ee30a2bc2e352..e4b72922fb8b480ead945b17b08853e7804a1c17 100644 --- a/tools/moltemplate/examples/force_field_AMBER/ethylene+benzene/moltemplate_files/ethylene.lt +++ b/tools/moltemplate/examples/all_atom/force_field_AMBER/ethylene+benzene/moltemplate_files/ethylene.lt @@ -1,7 +1,8 @@ import "gaff.lt" -# The "gaff.lt" file is usually located in "src/moltemplate_force_fields". +# The "gaff.lt" file is usually located in "force_fields" subdirectory +# of the moltemplate distribution. # It contains definitions of the atoms "c2", "hc", as well as the bonded # and non-bonded interactions between them (and many other atoms). # diff --git a/tools/moltemplate/examples/force_field_AMBER/ethylene+benzene/moltemplate_files/system.lt b/tools/moltemplate/examples/all_atom/force_field_AMBER/ethylene+benzene/moltemplate_files/system.lt similarity index 100% rename from tools/moltemplate/examples/force_field_AMBER/ethylene+benzene/moltemplate_files/system.lt rename to tools/moltemplate/examples/all_atom/force_field_AMBER/ethylene+benzene/moltemplate_files/system.lt diff --git a/tools/moltemplate/examples/force_field_AMBER/ethylene+benzene/run.in.npt b/tools/moltemplate/examples/all_atom/force_field_AMBER/ethylene+benzene/run.in.npt similarity index 100% rename from tools/moltemplate/examples/force_field_AMBER/ethylene+benzene/run.in.npt rename to tools/moltemplate/examples/all_atom/force_field_AMBER/ethylene+benzene/run.in.npt diff --git a/tools/moltemplate/examples/force_field_AMBER/ethylene+benzene/run.in.nvt b/tools/moltemplate/examples/all_atom/force_field_AMBER/ethylene+benzene/run.in.nvt similarity index 100% rename from tools/moltemplate/examples/force_field_AMBER/ethylene+benzene/run.in.nvt rename to tools/moltemplate/examples/all_atom/force_field_AMBER/ethylene+benzene/run.in.nvt diff --git a/tools/moltemplate/examples/force_field_AMBER/hexadecane/README.TXT b/tools/moltemplate/examples/all_atom/force_field_AMBER/hexadecane/README.txt similarity index 94% rename from tools/moltemplate/examples/force_field_AMBER/hexadecane/README.TXT rename to tools/moltemplate/examples/all_atom/force_field_AMBER/hexadecane/README.txt index a3f011167d05fc6c68417c5ce6108ffc02111873..8289270f04ba3f859217b571130c0845a417248c 100644 --- a/tools/moltemplate/examples/force_field_AMBER/hexadecane/README.TXT +++ b/tools/moltemplate/examples/all_atom/force_field_AMBER/hexadecane/README.txt @@ -7,7 +7,7 @@ This example requires building LAMMPS with the "USER-MISC" package. To do this, type "make yes-user-misc" before compiling LAMMPS. http://lammps.sandia.gov/doc/Section_start.html#start_3 -More detailed instructions on how to build LAMMPS input files and +More detailed instructions on how to build LAMMPS input files and run a short simulation are provided in other README files: step 1) to setup the LAMMPS input files, run this file: @@ -25,7 +25,7 @@ Both examples use the same force-field parameters. 1) In this version, the force-field parameters are loaded from the "gaff.lt" file -(located in the "src/moltemplate_force_fields/" subdirectory). +(located in the "force_fields" subdirectory of the moltemplate distribution). This frees the user from the drudgery of manually specifying all of these force-field details for every molecule. (However, the user must be careful to choose @atom-type names which match AMBER GAFF conventions, @@ -34,11 +34,11 @@ such as the "c3" and "h1" atoms, in this example.) 2) Alternately, there is another "hexadecane" example in the "all_atom_examples" directory. In that example, force-field parameters are loaded from a file -named "alkanes.lt" (instead of "gaff.lt"). The "alkanes.lt" file contains +named "alkanes.lt" (instead of "gaff.lt"). The "alkanes.lt" file contains only the excerpts from "gaff.lt" which are relevant to the hydrocarbon molcules used in that example. ("gaff.lt" contains parameters for most small organic molecules, not just hydrocarbons.) In this way, by editing "alkanes.lt", the user can manually control all of the -force-field details in the simulation. (Without feeling as though they are +force-field details in the simulation. (Without feeling as though they are relying on some kind of mysterious "black box" to do it for them.) diff --git a/tools/moltemplate/examples/all_atom/force_field_AMBER/hexadecane/README_remove_irrelevant_info.sh b/tools/moltemplate/examples/all_atom/force_field_AMBER/hexadecane/README_remove_irrelevant_info.sh new file mode 100755 index 0000000000000000000000000000000000000000..67528d426ea4f4ea3dbbde4eaa7d2c1f8627eee1 --- /dev/null +++ b/tools/moltemplate/examples/all_atom/force_field_AMBER/hexadecane/README_remove_irrelevant_info.sh @@ -0,0 +1,8 @@ + +# Note: By default, the system.data and system.in.settings files contain +# extra information for atoms defined in AMGER/GAFF ("gaff.lt") which you +# are not using in this simulation. +# This is harmless, but if you to delete this information from your +# system.in.settings and system.in.data files, run this script: + +cleanup_moltemplate.sh diff --git a/tools/moltemplate/examples/force_field_AMBER/ethylene+benzene/README_run.sh b/tools/moltemplate/examples/all_atom/force_field_AMBER/hexadecane/README_run.sh similarity index 96% rename from tools/moltemplate/examples/force_field_AMBER/ethylene+benzene/README_run.sh rename to tools/moltemplate/examples/all_atom/force_field_AMBER/hexadecane/README_run.sh index 9f923a6c7e7a6b524ecb1b96a28975fd24a49502..ac39fa950c038fa8a29074a444cddd2d50c8f6f7 100755 --- a/tools/moltemplate/examples/force_field_AMBER/ethylene+benzene/README_run.sh +++ b/tools/moltemplate/examples/all_atom/force_field_AMBER/hexadecane/README_run.sh @@ -5,7 +5,7 @@ # To do this, type "make yes-user-misc" before compiling LAMMPS. # http://lammps.sandia.gov/doc/Section_start.html#start_3 # -------- PREREQUISITES: -------- -# The 2 files "run.in.npt", and "run.in.nvt" are LAMMPS +# The 2 files "run.in.npt", and "run.in.nvt" are LAMMPS # input scripts which link to the input scripts and data files # you hopefully have created earlier with moltemplate.sh: # system.in.init, system.in.settings, system.data @@ -21,7 +21,7 @@ lmp_mpi -i run.in.nvt # minimization and simulation at constant volume #(Note: The constant volume simulation lacks pressure equilibration. These are # completely separate simulations. The results of the constant pressure -# simulation might be ignored when beginning the simulation at constant +# simulation might be ignored when beginning the simulation at constant # volume. (This is because restart files in LAMMPS don't always work, # and I was spending a lot of time trying to convince people it was a # LAMMPS bug, instead of a moltemplate bug, so I disabled restart files.) diff --git a/tools/moltemplate/examples/all_atom/force_field_AMBER/hexadecane/README_setup.sh b/tools/moltemplate/examples/all_atom/force_field_AMBER/hexadecane/README_setup.sh new file mode 100755 index 0000000000000000000000000000000000000000..e8d8be3f50675dc5434b239d33c280adb04df5ba --- /dev/null +++ b/tools/moltemplate/examples/all_atom/force_field_AMBER/hexadecane/README_setup.sh @@ -0,0 +1,35 @@ + +# Create LAMMPS input files this way: +cd moltemplate_files + + # run moltemplate + + moltemplate.sh system.lt + + # Optional: + # To check for missing angle,dihedral params run moltemplate this way instead: + # moltemplate.sh -checkff system.lt + + + # Moltemplate generates various files with names ending in *.in* and *.data. + # Move them to the directory where you plan to run LAMMPS (in this case "../") + mv -f system.data system.in* ../ + + + # Optional: + # The "./output_ttree/" directory is full of temporary files generated by + # moltemplate. They can be useful for debugging, but are usually thrown away. + #rm -rf output_ttree/ + +cd ../ + + + + +# Optional: +# Note: The system.data and system.in.settings files contain extra information +# for atoms defined in OPLSAA which you are not using in this simulation. +# This is harmless, but if you to delete this information from your +# system.in.settings and system.in.data files, run this script: +# +# cleanup_moltemplate.sh diff --git a/tools/moltemplate/examples/coarse_grained_examples/abstract_random_heteropolymer/README_visualize.txt b/tools/moltemplate/examples/all_atom/force_field_AMBER/hexadecane/README_visualize.txt similarity index 92% rename from tools/moltemplate/examples/coarse_grained_examples/abstract_random_heteropolymer/README_visualize.txt rename to tools/moltemplate/examples/all_atom/force_field_AMBER/hexadecane/README_visualize.txt index 019afc1444a48409143b5c170318479ceb27a391..a3e3ed620ec8b32fb6da484368dc3fc299bad6de 100644 --- a/tools/moltemplate/examples/coarse_grained_examples/abstract_random_heteropolymer/README_visualize.txt +++ b/tools/moltemplate/examples/all_atom/force_field_AMBER/hexadecane/README_visualize.txt @@ -4,7 +4,7 @@ 1) Build a PSF file for use in viewing with VMD. -This step works with VMD 1.9 and topotools 1.2. +This step works with VMD 1.9 and topotools 1.2. (Older versions, like VMD 1.8.6, don't support this.) @@ -17,7 +17,7 @@ c) Enter: topo readlammpsdata system.data full animate write psf system.psf -2) +2) Later, to Load a trajectory in VMD: @@ -31,17 +31,17 @@ Later, to Load a trajectory in VMD: ---- A note on trajectory format: ----- If the trajectory is a DUMP file, then make sure the it contains the -information you need for pbctools (see below. I've been using this +information you need for pbctools (see below. I've been using this command in my LAMMPS scripts to create the trajectories: dump 1 all custom 5000 DUMP_FILE.lammpstrj id mol type x y z ix iy iz -It's a good idea to use an atom_style which supports molecule-ID numbers -so that you can assign a molecule-ID number to each atom. (I think this +It's a good idea to use an atom_style which supports molecule-ID numbers +so that you can assign a molecule-ID number to each atom. (I think this is needed to wrap atom coordinates without breaking molecules in half.) -Of course, you don't have to save your trajectories in DUMP format, -(other formats like DCD work fine) I just mention dump files +Of course, you don't have to save your trajectories in DUMP format, +(other formats like DCD work fine) I just mention dump files because these are the files I'm familiar with. 3) ----- Wrap the coordinates to the unit cell @@ -57,7 +57,7 @@ d) Try entering these commands: ----- Optional ---- Sometimes the solvent or membrane obscures the view of the solute. - It can help to shift the location of the periodic boundary box + It can help to shift the location of the periodic boundary box To shift the box in the y direction (for example) do this: pbc wrap -compound res -all -shiftcenterrel {0.0 0.15 0.0} @@ -65,19 +65,19 @@ d) Try entering these commands: Distances are measured in units of box-length fractions, not Angstroms. - Alternately if you have a solute whose atoms are all of type 1, + Alternately if you have a solute whose atoms are all of type 1, then you can also try this to center the box around it: pbc wrap -sel type=1 -all -centersel type=2 -center com -4) +4) You should check if your periodic boundary conditions are too small. To do that: select Graphics->Representations menu option - click on the "Periodic" tab, and + click on the "Periodic" tab, and click on the "+x", "-x", "+y", "-y", "+z", "-z" checkboxes. -5) Optional: If you like, change the atom types in the PSF file so +5) Optional: If you like, change the atom types in the PSF file so that VMD recognizes the atom types, use something like: sed -e 's/ 1 1 / C C /g' < system.psf > temp1.psf diff --git a/tools/moltemplate/examples/force_field_AMBER/hexadecane/WARNING.TXT b/tools/moltemplate/examples/all_atom/force_field_AMBER/hexadecane/WARNING.txt similarity index 91% rename from tools/moltemplate/examples/force_field_AMBER/hexadecane/WARNING.TXT rename to tools/moltemplate/examples/all_atom/force_field_AMBER/hexadecane/WARNING.txt index def26ba765d6604002efa347ef98765e26a0a9ed..81183f92708420116c87789f265890dc047cbb97 100644 --- a/tools/moltemplate/examples/force_field_AMBER/hexadecane/WARNING.TXT +++ b/tools/moltemplate/examples/all_atom/force_field_AMBER/hexadecane/WARNING.txt @@ -2,7 +2,7 @@ This software is experimental, and the force-fields and equilbration protocols have not been tested carefully by me. There is no gaurantee that the simulation -will reproduce the behavior of real hexadecane molecules, +will reproduce the behavior of real hexadecane molecules, (or even of hexadecane molecules simulated using AMBER, which should be using the same force-field). diff --git a/tools/moltemplate/examples/force_field_AMBER/hexadecane/images/hexadecane_12x12x2_t=0_LR.jpg b/tools/moltemplate/examples/all_atom/force_field_AMBER/hexadecane/images/hexadecane_12x12x2_t=0_LR.jpg similarity index 100% rename from tools/moltemplate/examples/force_field_AMBER/hexadecane/images/hexadecane_12x12x2_t=0_LR.jpg rename to tools/moltemplate/examples/all_atom/force_field_AMBER/hexadecane/images/hexadecane_12x12x2_t=0_LR.jpg diff --git a/tools/moltemplate/examples/force_field_AMBER/hexadecane/images/hexadecane_12x12x2_t=10ps_npt_LR.jpg b/tools/moltemplate/examples/all_atom/force_field_AMBER/hexadecane/images/hexadecane_12x12x2_t=10ps_npt_LR.jpg similarity index 100% rename from tools/moltemplate/examples/force_field_AMBER/hexadecane/images/hexadecane_12x12x2_t=10ps_npt_LR.jpg rename to tools/moltemplate/examples/all_atom/force_field_AMBER/hexadecane/images/hexadecane_12x12x2_t=10ps_npt_LR.jpg diff --git a/tools/moltemplate/examples/force_field_AMBER/hexadecane/images/hexadecane_LR.jpg b/tools/moltemplate/examples/all_atom/force_field_AMBER/hexadecane/images/hexadecane_LR.jpg similarity index 100% rename from tools/moltemplate/examples/force_field_AMBER/hexadecane/images/hexadecane_LR.jpg rename to tools/moltemplate/examples/all_atom/force_field_AMBER/hexadecane/images/hexadecane_LR.jpg diff --git a/tools/moltemplate/examples/force_field_AMBER/hexadecane/moltemplate_files/ch2group.lt b/tools/moltemplate/examples/all_atom/force_field_AMBER/hexadecane/moltemplate_files/ch2group.lt similarity index 100% rename from tools/moltemplate/examples/force_field_AMBER/hexadecane/moltemplate_files/ch2group.lt rename to tools/moltemplate/examples/all_atom/force_field_AMBER/hexadecane/moltemplate_files/ch2group.lt diff --git a/tools/moltemplate/examples/force_field_AMBER/hexadecane/moltemplate_files/ch3group.lt b/tools/moltemplate/examples/all_atom/force_field_AMBER/hexadecane/moltemplate_files/ch3group.lt similarity index 100% rename from tools/moltemplate/examples/force_field_AMBER/hexadecane/moltemplate_files/ch3group.lt rename to tools/moltemplate/examples/all_atom/force_field_AMBER/hexadecane/moltemplate_files/ch3group.lt diff --git a/tools/moltemplate/examples/force_field_AMBER/hexadecane/moltemplate_files/hexadecane.lt b/tools/moltemplate/examples/all_atom/force_field_AMBER/hexadecane/moltemplate_files/hexadecane.lt similarity index 100% rename from tools/moltemplate/examples/force_field_AMBER/hexadecane/moltemplate_files/hexadecane.lt rename to tools/moltemplate/examples/all_atom/force_field_AMBER/hexadecane/moltemplate_files/hexadecane.lt diff --git a/tools/moltemplate/examples/force_field_AMBER/hexadecane/moltemplate_files/system.lt b/tools/moltemplate/examples/all_atom/force_field_AMBER/hexadecane/moltemplate_files/system.lt similarity index 100% rename from tools/moltemplate/examples/force_field_AMBER/hexadecane/moltemplate_files/system.lt rename to tools/moltemplate/examples/all_atom/force_field_AMBER/hexadecane/moltemplate_files/system.lt diff --git a/tools/moltemplate/examples/force_field_AMBER/hexadecane/run.in.npt b/tools/moltemplate/examples/all_atom/force_field_AMBER/hexadecane/run.in.npt similarity index 100% rename from tools/moltemplate/examples/force_field_AMBER/hexadecane/run.in.npt rename to tools/moltemplate/examples/all_atom/force_field_AMBER/hexadecane/run.in.npt diff --git a/tools/moltemplate/examples/force_field_AMBER/hexadecane/run.in.nvt b/tools/moltemplate/examples/all_atom/force_field_AMBER/hexadecane/run.in.nvt similarity index 100% rename from tools/moltemplate/examples/force_field_AMBER/hexadecane/run.in.nvt rename to tools/moltemplate/examples/all_atom/force_field_AMBER/hexadecane/run.in.nvt diff --git a/tools/moltemplate/examples/force_field_AMBER/waterTIP3P+isobutane/README.TXT b/tools/moltemplate/examples/all_atom/force_field_AMBER/waterTIP3P+isobutane/README.txt similarity index 70% rename from tools/moltemplate/examples/force_field_AMBER/waterTIP3P+isobutane/README.TXT rename to tools/moltemplate/examples/all_atom/force_field_AMBER/waterTIP3P+isobutane/README.txt index 6ec463efab12ac8e4da7b3a1f991e4ffba475e16..605ea7d6a19f7580fc5ce1753d98be4163a4f62b 100644 --- a/tools/moltemplate/examples/force_field_AMBER/waterTIP3P+isobutane/README.TXT +++ b/tools/moltemplate/examples/all_atom/force_field_AMBER/waterTIP3P+isobutane/README.txt @@ -2,15 +2,11 @@ The simulation consists of a mixture of isobutane and water. Over time (less than 1 ns), the two molecules phase-separate. The GAFF parameters are applied only to the isobutane molecule. -(The water molecule parameters are defined explicitly in - src/moltemplate_force_fields/tip3p_2004.lt) +(The water molecule paramters are defined explicitly in the + "force_fields/tip3p_2004.lt" file distributed with moltemplate.) -WARNING: THIS IS A PRELIMINARY EXAMPLE WHICH USES AMBER'S GAFF FORCE FIELD. - AS OF 2014-4-19, these features have not been tested. - THE ABILITY TO DETECT AND ASSIGN GAFF FORCE FIELD PARAMETERS - MOLECULES ACCORDING TO ATOM TYPE IS AN EXPERIMENTAL FEATURE - AND CURRENTLY PROBABLY HAS BUGS (IN THE DIHEDRALS AND IMPROPERS). - PLEASE REPORT BUGS AND/OR SEND CORRECTIONS. -A 2014-4-19 +WARNING: THIS EXAMPLE HAS NOT BEEN CAREFULLY TESTED. + PLEASE REPORT BUGS AND/OR SEND CORRECTIONS. -A 2016-12-16 ----------------- CHARGE ---------------------- @@ -31,7 +27,7 @@ NOTE: The GAFF force-field DOES NOT ASSIGN ATOM CHARGE. To do this, type "make yes-user-misc" before compiling LAMMPS. http://lammps.sandia.gov/doc/Section_start.html#start_3 -More detailed instructions on how to build LAMMPS input files and +More detailed instructions on how to build LAMMPS input files and run a short simulation are provided in other README files. step 1) diff --git a/tools/moltemplate/examples/all_atom/force_field_AMBER/waterTIP3P+isobutane/README_remove_irrelevant_info.sh b/tools/moltemplate/examples/all_atom/force_field_AMBER/waterTIP3P+isobutane/README_remove_irrelevant_info.sh new file mode 100755 index 0000000000000000000000000000000000000000..67528d426ea4f4ea3dbbde4eaa7d2c1f8627eee1 --- /dev/null +++ b/tools/moltemplate/examples/all_atom/force_field_AMBER/waterTIP3P+isobutane/README_remove_irrelevant_info.sh @@ -0,0 +1,8 @@ + +# Note: By default, the system.data and system.in.settings files contain +# extra information for atoms defined in AMGER/GAFF ("gaff.lt") which you +# are not using in this simulation. +# This is harmless, but if you to delete this information from your +# system.in.settings and system.in.data files, run this script: + +cleanup_moltemplate.sh diff --git a/tools/moltemplate/examples/force_field_AMBER/hexadecane/README_run.sh b/tools/moltemplate/examples/all_atom/force_field_AMBER/waterTIP3P+isobutane/README_run.sh similarity index 96% rename from tools/moltemplate/examples/force_field_AMBER/hexadecane/README_run.sh rename to tools/moltemplate/examples/all_atom/force_field_AMBER/waterTIP3P+isobutane/README_run.sh index 9f923a6c7e7a6b524ecb1b96a28975fd24a49502..ac39fa950c038fa8a29074a444cddd2d50c8f6f7 100755 --- a/tools/moltemplate/examples/force_field_AMBER/hexadecane/README_run.sh +++ b/tools/moltemplate/examples/all_atom/force_field_AMBER/waterTIP3P+isobutane/README_run.sh @@ -5,7 +5,7 @@ # To do this, type "make yes-user-misc" before compiling LAMMPS. # http://lammps.sandia.gov/doc/Section_start.html#start_3 # -------- PREREQUISITES: -------- -# The 2 files "run.in.npt", and "run.in.nvt" are LAMMPS +# The 2 files "run.in.npt", and "run.in.nvt" are LAMMPS # input scripts which link to the input scripts and data files # you hopefully have created earlier with moltemplate.sh: # system.in.init, system.in.settings, system.data @@ -21,7 +21,7 @@ lmp_mpi -i run.in.nvt # minimization and simulation at constant volume #(Note: The constant volume simulation lacks pressure equilibration. These are # completely separate simulations. The results of the constant pressure -# simulation might be ignored when beginning the simulation at constant +# simulation might be ignored when beginning the simulation at constant # volume. (This is because restart files in LAMMPS don't always work, # and I was spending a lot of time trying to convince people it was a # LAMMPS bug, instead of a moltemplate bug, so I disabled restart files.) diff --git a/tools/moltemplate/examples/force_field_OPLSAA/waterSPC_using_OPLSAA/README_setup.sh b/tools/moltemplate/examples/all_atom/force_field_AMBER/waterTIP3P+isobutane/README_setup.sh similarity index 62% rename from tools/moltemplate/examples/force_field_OPLSAA/waterSPC_using_OPLSAA/README_setup.sh rename to tools/moltemplate/examples/all_atom/force_field_AMBER/waterTIP3P+isobutane/README_setup.sh index 6aa6c06f4cf9e16c1fc205e381bf3aff35d79a0a..eb9df9e4483728a1844861383adf95592cc2d1fa 100755 --- a/tools/moltemplate/examples/force_field_OPLSAA/waterSPC_using_OPLSAA/README_setup.sh +++ b/tools/moltemplate/examples/all_atom/force_field_AMBER/waterTIP3P+isobutane/README_setup.sh @@ -6,14 +6,14 @@ cd moltemplate_files moltemplate.sh system.lt - # This will generate various files with names ending in *.in* and *.data. + # Moltemplate generates various files with names ending in *.in* and *.data. # Move them to the directory where you plan to run LAMMPS (in this case "../") mv -f system.data system.in* ../ # Optional: - # The "./output_ttree/" directory is full of temporary files generated by + # The "./output_ttree/" directory is full of temporary files generated by # moltemplate. They can be useful for debugging, but are usually thrown away. - rm -rf output_ttree/ + #rm -rf output_ttree/ cd ../ @@ -22,7 +22,8 @@ cd ../ # Optional: # Note: The system.data and system.in.settings files contain extra information -# for atoms defined in OPLSAA which you are not using in this simulation. This -# is harmless, but if you to delete this information from your -# system.in.settings and system.in.data files, follow the instructions in -# this script: "optional_cleanup/README_remove_irrelevant_info.sh" +# for atoms defined in OPLSAA which you are not using in this simulation. +# This is harmless, but if you to delete this information from your +# system.in.settings and system.in.data files, run this script: +# +# cleanup_moltemplate.sh diff --git a/tools/moltemplate/examples/coarse_grained_examples/abstract_translocation/README_visualize.txt b/tools/moltemplate/examples/all_atom/force_field_AMBER/waterTIP3P+isobutane/README_visualize.txt similarity index 92% rename from tools/moltemplate/examples/coarse_grained_examples/abstract_translocation/README_visualize.txt rename to tools/moltemplate/examples/all_atom/force_field_AMBER/waterTIP3P+isobutane/README_visualize.txt index 019afc1444a48409143b5c170318479ceb27a391..a3e3ed620ec8b32fb6da484368dc3fc299bad6de 100644 --- a/tools/moltemplate/examples/coarse_grained_examples/abstract_translocation/README_visualize.txt +++ b/tools/moltemplate/examples/all_atom/force_field_AMBER/waterTIP3P+isobutane/README_visualize.txt @@ -4,7 +4,7 @@ 1) Build a PSF file for use in viewing with VMD. -This step works with VMD 1.9 and topotools 1.2. +This step works with VMD 1.9 and topotools 1.2. (Older versions, like VMD 1.8.6, don't support this.) @@ -17,7 +17,7 @@ c) Enter: topo readlammpsdata system.data full animate write psf system.psf -2) +2) Later, to Load a trajectory in VMD: @@ -31,17 +31,17 @@ Later, to Load a trajectory in VMD: ---- A note on trajectory format: ----- If the trajectory is a DUMP file, then make sure the it contains the -information you need for pbctools (see below. I've been using this +information you need for pbctools (see below. I've been using this command in my LAMMPS scripts to create the trajectories: dump 1 all custom 5000 DUMP_FILE.lammpstrj id mol type x y z ix iy iz -It's a good idea to use an atom_style which supports molecule-ID numbers -so that you can assign a molecule-ID number to each atom. (I think this +It's a good idea to use an atom_style which supports molecule-ID numbers +so that you can assign a molecule-ID number to each atom. (I think this is needed to wrap atom coordinates without breaking molecules in half.) -Of course, you don't have to save your trajectories in DUMP format, -(other formats like DCD work fine) I just mention dump files +Of course, you don't have to save your trajectories in DUMP format, +(other formats like DCD work fine) I just mention dump files because these are the files I'm familiar with. 3) ----- Wrap the coordinates to the unit cell @@ -57,7 +57,7 @@ d) Try entering these commands: ----- Optional ---- Sometimes the solvent or membrane obscures the view of the solute. - It can help to shift the location of the periodic boundary box + It can help to shift the location of the periodic boundary box To shift the box in the y direction (for example) do this: pbc wrap -compound res -all -shiftcenterrel {0.0 0.15 0.0} @@ -65,19 +65,19 @@ d) Try entering these commands: Distances are measured in units of box-length fractions, not Angstroms. - Alternately if you have a solute whose atoms are all of type 1, + Alternately if you have a solute whose atoms are all of type 1, then you can also try this to center the box around it: pbc wrap -sel type=1 -all -centersel type=2 -center com -4) +4) You should check if your periodic boundary conditions are too small. To do that: select Graphics->Representations menu option - click on the "Periodic" tab, and + click on the "Periodic" tab, and click on the "+x", "-x", "+y", "-y", "+z", "-z" checkboxes. -5) Optional: If you like, change the atom types in the PSF file so +5) Optional: If you like, change the atom types in the PSF file so that VMD recognizes the atom types, use something like: sed -e 's/ 1 1 / C C /g' < system.psf > temp1.psf diff --git a/tools/moltemplate/examples/force_field_AMBER/waterTIP3P+isobutane/images/isobutane.jpg b/tools/moltemplate/examples/all_atom/force_field_AMBER/waterTIP3P+isobutane/images/isobutane.jpg similarity index 100% rename from tools/moltemplate/examples/force_field_AMBER/waterTIP3P+isobutane/images/isobutane.jpg rename to tools/moltemplate/examples/all_atom/force_field_AMBER/waterTIP3P+isobutane/images/isobutane.jpg diff --git a/tools/moltemplate/examples/force_field_AMBER/waterTIP3P+isobutane/images/water+isobutane_t=0_LR.jpg b/tools/moltemplate/examples/all_atom/force_field_AMBER/waterTIP3P+isobutane/images/water+isobutane_t=0_LR.jpg similarity index 100% rename from tools/moltemplate/examples/force_field_AMBER/waterTIP3P+isobutane/images/water+isobutane_t=0_LR.jpg rename to tools/moltemplate/examples/all_atom/force_field_AMBER/waterTIP3P+isobutane/images/water+isobutane_t=0_LR.jpg diff --git a/tools/moltemplate/examples/force_field_AMBER/waterTIP3P+isobutane/images/water+isobutane_t=840ps_LR.jpg b/tools/moltemplate/examples/all_atom/force_field_AMBER/waterTIP3P+isobutane/images/water+isobutane_t=840ps_LR.jpg similarity index 100% rename from tools/moltemplate/examples/force_field_AMBER/waterTIP3P+isobutane/images/water+isobutane_t=840ps_LR.jpg rename to tools/moltemplate/examples/all_atom/force_field_AMBER/waterTIP3P+isobutane/images/water+isobutane_t=840ps_LR.jpg diff --git a/tools/moltemplate/examples/force_field_AMBER/waterTIP3P+isobutane/images/water.jpg b/tools/moltemplate/examples/all_atom/force_field_AMBER/waterTIP3P+isobutane/images/water.jpg similarity index 100% rename from tools/moltemplate/examples/force_field_AMBER/waterTIP3P+isobutane/images/water.jpg rename to tools/moltemplate/examples/all_atom/force_field_AMBER/waterTIP3P+isobutane/images/water.jpg diff --git a/tools/moltemplate/examples/force_field_AMBER/waterTIP3P+isobutane/moltemplate_files/isobutane.lt b/tools/moltemplate/examples/all_atom/force_field_AMBER/waterTIP3P+isobutane/moltemplate_files/isobutane.lt similarity index 95% rename from tools/moltemplate/examples/force_field_AMBER/waterTIP3P+isobutane/moltemplate_files/isobutane.lt rename to tools/moltemplate/examples/all_atom/force_field_AMBER/waterTIP3P+isobutane/moltemplate_files/isobutane.lt index e244d4427993bd8710eee8e3a674fca105c12044..9acd858b953ebcae5dd029f32e15b7ab925b47db 100644 --- a/tools/moltemplate/examples/force_field_AMBER/waterTIP3P+isobutane/moltemplate_files/isobutane.lt +++ b/tools/moltemplate/examples/all_atom/force_field_AMBER/waterTIP3P+isobutane/moltemplate_files/isobutane.lt @@ -1,7 +1,8 @@ import "gaff.lt" -# The "gaff.lt" file is usually located in "src/moltemplate_force_fields". +# The "gaff.lt" file is usually located in "force_fields" subdirectory +# of the moltemplate distribution. # It contains definitions of the atoms "c3", "h1", as well as the bonded # and non-bonded interactions between them (and many other atoms). # diff --git a/tools/moltemplate/examples/force_field_AMBER/waterTIP3P+isobutane/moltemplate_files/system.lt b/tools/moltemplate/examples/all_atom/force_field_AMBER/waterTIP3P+isobutane/moltemplate_files/system.lt similarity index 77% rename from tools/moltemplate/examples/force_field_AMBER/waterTIP3P+isobutane/moltemplate_files/system.lt rename to tools/moltemplate/examples/all_atom/force_field_AMBER/waterTIP3P+isobutane/moltemplate_files/system.lt index e10f0bcec5b770209b6ba8910afc2f8b7330bdec..ac9965e5882b021707ad757e0841b2a343af3ac7 100644 --- a/tools/moltemplate/examples/force_field_AMBER/waterTIP3P+isobutane/moltemplate_files/system.lt +++ b/tools/moltemplate/examples/all_atom/force_field_AMBER/waterTIP3P+isobutane/moltemplate_files/system.lt @@ -1,6 +1,7 @@ -import "tip3p_2004.lt" - # <- This defines the TIP3P water molecule. This file is - # located in the "src/moltemplate_force_fields" directory. + +import "tip3p_2004.lt" # <-- This defines the TIP3P water molecule. This file + # is located in the "force_fields" subdirectory + # of the moltemplate distribution. import "isobutane.lt" # <- defines the "Isobutane" molecule type. diff --git a/tools/moltemplate/examples/force_field_AMBER/waterTIP3P+isobutane/run.in.npt b/tools/moltemplate/examples/all_atom/force_field_AMBER/waterTIP3P+isobutane/run.in.npt similarity index 100% rename from tools/moltemplate/examples/force_field_AMBER/waterTIP3P+isobutane/run.in.npt rename to tools/moltemplate/examples/all_atom/force_field_AMBER/waterTIP3P+isobutane/run.in.npt diff --git a/tools/moltemplate/examples/force_field_AMBER/waterTIP3P+isobutane/run.in.nvt b/tools/moltemplate/examples/all_atom/force_field_AMBER/waterTIP3P+isobutane/run.in.nvt similarity index 100% rename from tools/moltemplate/examples/force_field_AMBER/waterTIP3P+isobutane/run.in.nvt rename to tools/moltemplate/examples/all_atom/force_field_AMBER/waterTIP3P+isobutane/run.in.nvt diff --git a/tools/moltemplate/examples/force_field_OPLSAA/WARNING.TXT b/tools/moltemplate/examples/all_atom/force_field_OPLSAA/WARNING.txt similarity index 99% rename from tools/moltemplate/examples/force_field_OPLSAA/WARNING.TXT rename to tools/moltemplate/examples/all_atom/force_field_OPLSAA/WARNING.txt index 0d8c8e0308829acb69db231ba21feb827b46e120..99b50a744e04b123e3803993cd1b4898833aec9d 100644 --- a/tools/moltemplate/examples/force_field_OPLSAA/WARNING.TXT +++ b/tools/moltemplate/examples/all_atom/force_field_OPLSAA/WARNING.txt @@ -17,7 +17,7 @@ Other suggestions are also welcome! --- Improper angles --- -I am also uncertain whether the improper angle interactions generated by +I am also uncertain whether the improper angle interactions generated by moltemplate are equivalent to those generated by BOSS or other molecule builders. (I think they are, but I am worried that we might have listed the atom types in the wrong order. Let us know if you see discrepancies diff --git a/tools/moltemplate/examples/force_field_OPLSAA/alkane_chain_single/README.TXT b/tools/moltemplate/examples/all_atom/force_field_OPLSAA/alkane_chain_single/README.txt similarity index 79% rename from tools/moltemplate/examples/force_field_OPLSAA/alkane_chain_single/README.TXT rename to tools/moltemplate/examples/all_atom/force_field_OPLSAA/alkane_chain_single/README.txt index abef639d466be05b0eac68511277af34a9a408c2..5ddb4ae8f6f2812fccc8568b5ff2da66d2e87692 100644 --- a/tools/moltemplate/examples/force_field_OPLSAA/alkane_chain_single/README.TXT +++ b/tools/moltemplate/examples/all_atom/force_field_OPLSAA/alkane_chain_single/README.txt @@ -1,8 +1,5 @@ This example is a simple simulation of a long alkane chain, -in a vacuum at room temperature using the OPLSAA force field. - -NOTE: This particular example uses the OPLSAA force-field - However, moltemplate is not limited to OPLSAA. +in a vacuum at room temperature using the OPLSAA force field. 1) Create the "system.data", "system.in.init", and "system.in.settings" files which LAMMPS will read by running: @@ -20,18 +17,18 @@ lmp_mpi -i run.in.nvt # running the simulation at constant temperature ---- Details ---- The "Alkane50" molecule, as well as the "CH2", and "CH3" monomers it contains -use the OPLSAA force-field. This means that when we define these molecules, -we only specify the atom names, bond list, and coordinates. +use the OPLSAA force-field. This means that when we define these molecules, +we only specify the atom names, bond list, and coordinates. We do not have to list the atom charges, angles, dihedrals, or impropers. The rules for creating atomic charge and angle topology are contained in -the "loplsaa.lt" file created by step 3) above. The "ch2group.lt", -"ch3group.lt", and "alkane50.lt" files all refer to "loplsaa.lt", +the "loplsaa.lt" file created by step 3) above. The "ch2group.lt", +"ch3group.lt", and "alkane50.lt" files all refer to "loplsaa.lt", (as well as the "OPLSAA" force-field object which it defines). Excerpt: import "loplsaa.lt" -CH2 inherits OPLSAA { ... -CH3 inherits OPLSAA { ... -Alkane50 inherits OPLSAA { ... +CH2 inherits OPLSAA { ... +CH3 inherits OPLSAA { ... +Alkane50 inherits OPLSAA { ... Alternatively, you can manually define a list of angles, dihedrals, and improper interactions in these files, instead of asking the force-field diff --git a/tools/moltemplate/examples/all_atom/force_field_OPLSAA/alkane_chain_single/README_remove_irrelevant_info.sh b/tools/moltemplate/examples/all_atom/force_field_OPLSAA/alkane_chain_single/README_remove_irrelevant_info.sh new file mode 100755 index 0000000000000000000000000000000000000000..5957289da9592f8a25e6796ea16ceb5e7abde043 --- /dev/null +++ b/tools/moltemplate/examples/all_atom/force_field_OPLSAA/alkane_chain_single/README_remove_irrelevant_info.sh @@ -0,0 +1,8 @@ + +# Note: By default, the system.data and system.in.settings files contain +# extra information for atoms defined in OPLSAA which you are not using +# in this simulation. +# This is harmless, but if you to delete this information from your +# system.in.settings and system.in.data files, run this script: + +cleanup_moltemplate.sh diff --git a/tools/moltemplate/examples/force_field_OPLSAA/alkane_chain_single/README_run.sh b/tools/moltemplate/examples/all_atom/force_field_OPLSAA/alkane_chain_single/README_run.sh similarity index 95% rename from tools/moltemplate/examples/force_field_OPLSAA/alkane_chain_single/README_run.sh rename to tools/moltemplate/examples/all_atom/force_field_OPLSAA/alkane_chain_single/README_run.sh index b31401f135b47f33c9ef8666de3d23e0e94c13b6..94d6de972c4b228f570c2f203a03b08ef46cc024 100755 --- a/tools/moltemplate/examples/force_field_OPLSAA/alkane_chain_single/README_run.sh +++ b/tools/moltemplate/examples/all_atom/force_field_OPLSAA/alkane_chain_single/README_run.sh @@ -1,6 +1,6 @@ # --- Running LAMMPS --- # -# The 2 files "run.in.npt", and "run.in.nvt" are LAMMPS +# The 2 files "run.in.npt", and "run.in.nvt" are LAMMPS # input scripts which link to the input scripts and data files # you hopefully have created earlier with moltemplate.sh: # system.in.init, system.in.settings, system.data @@ -16,7 +16,7 @@ lmp_mpi -i run.in.nvt # minimization and simulation at constant volume #(Note: The constant volume simulation lacks pressure equilibration. These are # completely separate simulations. The results of the constant pressure -# simulation might be ignored when beginning the simulation at constant +# simulation might be ignored when beginning the simulation at constant # volume. (This is because restart files in LAMMPS don't always work, # and I was spending a lot of time trying to convince people it was a # LAMMPS bug, instead of a moltemplate bug, so I disabled restart files.) diff --git a/tools/moltemplate/examples/force_field_OPLSAA/methane/README_setup.sh b/tools/moltemplate/examples/all_atom/force_field_OPLSAA/alkane_chain_single/README_setup.sh similarity index 59% rename from tools/moltemplate/examples/force_field_OPLSAA/methane/README_setup.sh rename to tools/moltemplate/examples/all_atom/force_field_OPLSAA/alkane_chain_single/README_setup.sh index 6aa6c06f4cf9e16c1fc205e381bf3aff35d79a0a..5cd2142a4128c41eb75945198e3fcdb8cf9e52b3 100755 --- a/tools/moltemplate/examples/force_field_OPLSAA/methane/README_setup.sh +++ b/tools/moltemplate/examples/all_atom/force_field_OPLSAA/alkane_chain_single/README_setup.sh @@ -6,12 +6,17 @@ cd moltemplate_files moltemplate.sh system.lt - # This will generate various files with names ending in *.in* and *.data. + # Optional: + # To check for missing angle,dihedral params run moltemplate this way instead: + # moltemplate.sh -checkff system.lt + + + # Moltemplate generates various files with names ending in *.in* and *.data. # Move them to the directory where you plan to run LAMMPS (in this case "../") mv -f system.data system.in* ../ # Optional: - # The "./output_ttree/" directory is full of temporary files generated by + # The "./output_ttree/" directory is full of temporary files generated by # moltemplate. They can be useful for debugging, but are usually thrown away. rm -rf output_ttree/ @@ -22,7 +27,8 @@ cd ../ # Optional: # Note: The system.data and system.in.settings files contain extra information -# for atoms defined in OPLSAA which you are not using in this simulation. This -# is harmless, but if you to delete this information from your -# system.in.settings and system.in.data files, follow the instructions in -# this script: "optional_cleanup/README_remove_irrelevant_info.sh" +# for atoms defined in OPLSAA which you are not using in this simulation. +# This is harmless, but if you to delete this information from your +# system.in.settings and system.in.data files, run this script: +# +# cleanup_moltemplate.sh diff --git a/tools/moltemplate/examples/all_atom/force_field_OPLSAA/alkane_chain_single/README_visualize.txt b/tools/moltemplate/examples/all_atom/force_field_OPLSAA/alkane_chain_single/README_visualize.txt new file mode 100644 index 0000000000000000000000000000000000000000..a3e3ed620ec8b32fb6da484368dc3fc299bad6de --- /dev/null +++ b/tools/moltemplate/examples/all_atom/force_field_OPLSAA/alkane_chain_single/README_visualize.txt @@ -0,0 +1,87 @@ + + ------- To view a lammps trajectory in VMD -------- + + +1) Build a PSF file for use in viewing with VMD. + +This step works with VMD 1.9 and topotools 1.2. +(Older versions, like VMD 1.8.6, don't support this.) + + +a) Start VMD +b) Menu Extensions->Tk Console +c) Enter: + +(I assume that the the DATA file is called "system.data") + + topo readlammpsdata system.data full + animate write psf system.psf + +2) + +Later, to Load a trajectory in VMD: + + Start VMD + Select menu: File->New Molecule + -Browse to select the PSF file you created above, and load it. + (Don't close the window yet.) + -Browse to select the trajectory file. + If necessary, for "file type" select: "LAMMPS Trajectory" + Load it. + + ---- A note on trajectory format: ----- +If the trajectory is a DUMP file, then make sure the it contains the +information you need for pbctools (see below. I've been using this +command in my LAMMPS scripts to create the trajectories: + + dump 1 all custom 5000 DUMP_FILE.lammpstrj id mol type x y z ix iy iz + +It's a good idea to use an atom_style which supports molecule-ID numbers +so that you can assign a molecule-ID number to each atom. (I think this +is needed to wrap atom coordinates without breaking molecules in half.) + +Of course, you don't have to save your trajectories in DUMP format, +(other formats like DCD work fine) I just mention dump files +because these are the files I'm familiar with. + +3) ----- Wrap the coordinates to the unit cell + (without cutting the molecules in half) + +a) Start VMD +b) Load the trajectory in VMD (see above) +c) Menu Extensions->Tk Console +d) Try entering these commands: + + pbc wrap -compound res -all + pbc box + + ----- Optional ---- + Sometimes the solvent or membrane obscures the view of the solute. + It can help to shift the location of the periodic boundary box + To shift the box in the y direction (for example) do this: + + pbc wrap -compound res -all -shiftcenterrel {0.0 0.15 0.0} + pbc box -shiftcenterrel {0.0 0.15 0.0} + + Distances are measured in units of box-length fractions, not Angstroms. + + Alternately if you have a solute whose atoms are all of type 1, + then you can also try this to center the box around it: + + pbc wrap -sel type=1 -all -centersel type=2 -center com + +4) + You should check if your periodic boundary conditions are too small. + To do that: + select Graphics->Representations menu option + click on the "Periodic" tab, and + click on the "+x", "-x", "+y", "-y", "+z", "-z" checkboxes. + +5) Optional: If you like, change the atom types in the PSF file so + that VMD recognizes the atom types, use something like: + +sed -e 's/ 1 1 / C C /g' < system.psf > temp1.psf +sed -e 's/ 2 2 / H H /g' < temp1.psf > temp2.psf +sed -e 's/ 3 3 / P P /g' < temp2.psf > system.psf + +(If you do this, it might effect step 2 above.) diff --git a/tools/moltemplate/examples/force_field_OPLSAA/alkane_chain_single/images/ch2_ry90.jpg b/tools/moltemplate/examples/all_atom/force_field_OPLSAA/alkane_chain_single/images/ch2_ry90.jpg similarity index 100% rename from tools/moltemplate/examples/force_field_OPLSAA/alkane_chain_single/images/ch2_ry90.jpg rename to tools/moltemplate/examples/all_atom/force_field_OPLSAA/alkane_chain_single/images/ch2_ry90.jpg diff --git a/tools/moltemplate/examples/force_field_OPLSAA/alkane_chain_single/images/ch3_ry60.jpg b/tools/moltemplate/examples/all_atom/force_field_OPLSAA/alkane_chain_single/images/ch3_ry60.jpg similarity index 100% rename from tools/moltemplate/examples/force_field_OPLSAA/alkane_chain_single/images/ch3_ry60.jpg rename to tools/moltemplate/examples/all_atom/force_field_OPLSAA/alkane_chain_single/images/ch3_ry60.jpg diff --git a/tools/moltemplate/examples/force_field_OPLSAA/alkane_chain_single/images/t=0.jpg b/tools/moltemplate/examples/all_atom/force_field_OPLSAA/alkane_chain_single/images/t=0.jpg similarity index 100% rename from tools/moltemplate/examples/force_field_OPLSAA/alkane_chain_single/images/t=0.jpg rename to tools/moltemplate/examples/all_atom/force_field_OPLSAA/alkane_chain_single/images/t=0.jpg diff --git a/tools/moltemplate/examples/force_field_OPLSAA/alkane_chain_single/images/t=1ns.jpg b/tools/moltemplate/examples/all_atom/force_field_OPLSAA/alkane_chain_single/images/t=1ns.jpg similarity index 100% rename from tools/moltemplate/examples/force_field_OPLSAA/alkane_chain_single/images/t=1ns.jpg rename to tools/moltemplate/examples/all_atom/force_field_OPLSAA/alkane_chain_single/images/t=1ns.jpg diff --git a/tools/moltemplate/examples/force_field_OPLSAA/alkane_chain_single/moltemplate_files/alkane50.lt b/tools/moltemplate/examples/all_atom/force_field_OPLSAA/alkane_chain_single/moltemplate_files/alkane50.lt similarity index 98% rename from tools/moltemplate/examples/force_field_OPLSAA/alkane_chain_single/moltemplate_files/alkane50.lt rename to tools/moltemplate/examples/all_atom/force_field_OPLSAA/alkane_chain_single/moltemplate_files/alkane50.lt index f4a21ebe4efd6a4c7377eb578ed5f56629bd072f..b15ef139fd53387019779153d72df7a9cdffdf7f 100644 --- a/tools/moltemplate/examples/force_field_OPLSAA/alkane_chain_single/moltemplate_files/alkane50.lt +++ b/tools/moltemplate/examples/all_atom/force_field_OPLSAA/alkane_chain_single/moltemplate_files/alkane50.lt @@ -5,7 +5,6 @@ # it to change the length of the alkane chain. -import "oplsaa.lt" # load the "OPLSAA" force-field information import "ch2group.lt" # load the definition of the "CH2" object import "ch3group.lt" # load the definition of the "CH3" object diff --git a/tools/moltemplate/examples/force_field_OPLSAA/hexadecane/moltemplate_files/ch2group.lt b/tools/moltemplate/examples/all_atom/force_field_OPLSAA/alkane_chain_single/moltemplate_files/ch2group.lt similarity index 93% rename from tools/moltemplate/examples/force_field_OPLSAA/hexadecane/moltemplate_files/ch2group.lt rename to tools/moltemplate/examples/all_atom/force_field_OPLSAA/alkane_chain_single/moltemplate_files/ch2group.lt index 510b7e111a104f14d969cd051cb7f2827c8b12f1..c800d56679dcd07557883078c334077cb550fdaa 100644 --- a/tools/moltemplate/examples/force_field_OPLSAA/hexadecane/moltemplate_files/ch2group.lt +++ b/tools/moltemplate/examples/all_atom/force_field_OPLSAA/alkane_chain_single/moltemplate_files/ch2group.lt @@ -1,7 +1,8 @@ # This file contains a definition for the "CH2" molecular subunit. # First, load the OPLS force field parameters we will need. -# These 2 files are located in the "src/moltemplate_force_fields/" subdirectory: +# These 2 files are located in the "force_fields" subdirectory +# distributed with moltemplate. import "oplsaa.lt" # <-- defines the standard "OPLSAA" force field import "loplsaa.lt" # <-- custom parameters for long alkane chains taken from @@ -31,8 +32,7 @@ CH2 inherits OPLSAA { $bond:CH2 $atom:C $atom:H2 } - # Atom type numbers (@atom:80L,@atom:85LCH3) are defined in "loplsaa.lt", - # which is usually located in the "src/moltemplate_force_fields/" subdirectory + # Atom type numbers (@atom:80L,@atom:85LCH3) are defined in "loplsaa.lt": # @atom:80L "Alkane CH3- (LOPLS CT_CH3)" # @atom:81L "Alkane -CH2- (LOPLS CT_CH2)" # @atom:85LCH3 "Alkane H-C CH3 (LOPLS HC_CH3)" diff --git a/tools/moltemplate/examples/force_field_OPLSAA/alkane_chain_single/moltemplate_files/ch3group.lt b/tools/moltemplate/examples/all_atom/force_field_OPLSAA/alkane_chain_single/moltemplate_files/ch3group.lt similarity index 96% rename from tools/moltemplate/examples/force_field_OPLSAA/alkane_chain_single/moltemplate_files/ch3group.lt rename to tools/moltemplate/examples/all_atom/force_field_OPLSAA/alkane_chain_single/moltemplate_files/ch3group.lt index b01c8c0cd2363b2df6f0d7aea872e3b60948186e..95d48d8530a9c9d319bddfe474b0e69137282463 100644 --- a/tools/moltemplate/examples/force_field_OPLSAA/alkane_chain_single/moltemplate_files/ch3group.lt +++ b/tools/moltemplate/examples/all_atom/force_field_OPLSAA/alkane_chain_single/moltemplate_files/ch3group.lt @@ -1,7 +1,8 @@ # This file contains a definition for the "CH3" molecular subunit. # First, load the OPLS force field parameters we will need. -# These 2 files are located in the "src/moltemplate_force_fields/" subdirectory: +# These 2 files are located in the "force_fields" subdirectory +# of the moltemplate distribution. import "oplsaa.lt" # <-- defines the standard "OPLSAA" force field import "loplsaa.lt" # <-- custom parameters for long alkane chains taken from diff --git a/tools/moltemplate/examples/force_field_OPLSAA/alkane_chain_single/moltemplate_files/system.lt b/tools/moltemplate/examples/all_atom/force_field_OPLSAA/alkane_chain_single/moltemplate_files/system.lt similarity index 100% rename from tools/moltemplate/examples/force_field_OPLSAA/alkane_chain_single/moltemplate_files/system.lt rename to tools/moltemplate/examples/all_atom/force_field_OPLSAA/alkane_chain_single/moltemplate_files/system.lt diff --git a/tools/moltemplate/examples/force_field_OPLSAA/alkane_chain_single/run.in.min b/tools/moltemplate/examples/all_atom/force_field_OPLSAA/alkane_chain_single/run.in.min similarity index 100% rename from tools/moltemplate/examples/force_field_OPLSAA/alkane_chain_single/run.in.min rename to tools/moltemplate/examples/all_atom/force_field_OPLSAA/alkane_chain_single/run.in.min diff --git a/tools/moltemplate/examples/force_field_OPLSAA/alkane_chain_single/run.in.nvt b/tools/moltemplate/examples/all_atom/force_field_OPLSAA/alkane_chain_single/run.in.nvt similarity index 100% rename from tools/moltemplate/examples/force_field_OPLSAA/alkane_chain_single/run.in.nvt rename to tools/moltemplate/examples/all_atom/force_field_OPLSAA/alkane_chain_single/run.in.nvt diff --git a/tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene/README.TXT b/tools/moltemplate/examples/all_atom/force_field_OPLSAA/ethylene+benzene/README.txt similarity index 100% rename from tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene/README.TXT rename to tools/moltemplate/examples/all_atom/force_field_OPLSAA/ethylene+benzene/README.txt diff --git a/tools/moltemplate/examples/all_atom/force_field_OPLSAA/ethylene+benzene/README_remove_irrelevant_info.sh b/tools/moltemplate/examples/all_atom/force_field_OPLSAA/ethylene+benzene/README_remove_irrelevant_info.sh new file mode 100755 index 0000000000000000000000000000000000000000..5957289da9592f8a25e6796ea16ceb5e7abde043 --- /dev/null +++ b/tools/moltemplate/examples/all_atom/force_field_OPLSAA/ethylene+benzene/README_remove_irrelevant_info.sh @@ -0,0 +1,8 @@ + +# Note: By default, the system.data and system.in.settings files contain +# extra information for atoms defined in OPLSAA which you are not using +# in this simulation. +# This is harmless, but if you to delete this information from your +# system.in.settings and system.in.data files, run this script: + +cleanup_moltemplate.sh diff --git a/tools/moltemplate/examples/force_field_OPLSAA/methane/README_run.sh b/tools/moltemplate/examples/all_atom/force_field_OPLSAA/ethylene+benzene/README_run.sh similarity index 95% rename from tools/moltemplate/examples/force_field_OPLSAA/methane/README_run.sh rename to tools/moltemplate/examples/all_atom/force_field_OPLSAA/ethylene+benzene/README_run.sh index 5f8286664451cb48a67c8d6ba855727ec8de1735..c27520076e4d22f4bedb385b0a6d21a747bbff53 100755 --- a/tools/moltemplate/examples/force_field_OPLSAA/methane/README_run.sh +++ b/tools/moltemplate/examples/all_atom/force_field_OPLSAA/ethylene+benzene/README_run.sh @@ -1,6 +1,6 @@ # --- Running LAMMPS --- # -# The 2 files "run.in.npt", and "run.in.nvt" are LAMMPS +# The 2 files "run.in.npt", and "run.in.nvt" are LAMMPS # input scripts which link to the input scripts and data files # you hopefully have created earlier with moltemplate.sh: # system.in.init, system.in.settings, system.data @@ -16,7 +16,7 @@ lmp_mpi -i run.in.nvt # minimization and simulation at constant volume #(Note: The constant volume simulation lacks pressure equilibration. These are # completely separate simulations. The results of the constant pressure -# simulation might be ignored when beginning the simulation at constant +# simulation might be ignored when beginning the simulation at constant # volume. (This is because restart files in LAMMPS don't always work, # and I was spending a lot of time trying to convince people it was a # LAMMPS bug, instead of a moltemplate bug, so I disabled restart files.) diff --git a/tools/moltemplate/examples/all_atom/force_field_OPLSAA/ethylene+benzene/README_setup.sh b/tools/moltemplate/examples/all_atom/force_field_OPLSAA/ethylene+benzene/README_setup.sh new file mode 100755 index 0000000000000000000000000000000000000000..0869d7b783ce30c7ef06dcad5a8b75b7c2ada479 --- /dev/null +++ b/tools/moltemplate/examples/all_atom/force_field_OPLSAA/ethylene+benzene/README_setup.sh @@ -0,0 +1,35 @@ + +# Create LAMMPS input files this way: +cd moltemplate_files + + # run moltemplate + + moltemplate.sh system.lt + + # Optional: + # To check for missing angle,dihedral params run moltemplate this way instead: + # moltemplate.sh -checkff system.lt + + + # Moltemplate generates various files with names ending in *.in* and *.data. + # Move them to the directory where you plan to run LAMMPS (in this case "../") + mv -f system.data system.in* ../ + + + # Optional: + # The "./output_ttree/" directory is full of temporary files generated by + # moltemplate. They can be useful for debugging, but are usually thrown away. + rm -rf output_ttree/ + +cd ../ + + + + +# Optional: +# Note: The system.data and system.in.settings files contain extra information +# for atoms defined in OPLSAA which you are not using in this simulation. +# This is harmless, but if you to delete this information from your +# system.in.settings and system.in.data files, run this script: +# +# cleanup_moltemplate.sh diff --git a/tools/moltemplate/examples/all_atom/force_field_OPLSAA/ethylene+benzene/README_visualize.txt b/tools/moltemplate/examples/all_atom/force_field_OPLSAA/ethylene+benzene/README_visualize.txt new file mode 100644 index 0000000000000000000000000000000000000000..a3e3ed620ec8b32fb6da484368dc3fc299bad6de --- /dev/null +++ b/tools/moltemplate/examples/all_atom/force_field_OPLSAA/ethylene+benzene/README_visualize.txt @@ -0,0 +1,87 @@ + + ------- To view a lammps trajectory in VMD -------- + + +1) Build a PSF file for use in viewing with VMD. + +This step works with VMD 1.9 and topotools 1.2. +(Older versions, like VMD 1.8.6, don't support this.) + + +a) Start VMD +b) Menu Extensions->Tk Console +c) Enter: + +(I assume that the the DATA file is called "system.data") + + topo readlammpsdata system.data full + animate write psf system.psf + +2) + +Later, to Load a trajectory in VMD: + + Start VMD + Select menu: File->New Molecule + -Browse to select the PSF file you created above, and load it. + (Don't close the window yet.) + -Browse to select the trajectory file. + If necessary, for "file type" select: "LAMMPS Trajectory" + Load it. + + ---- A note on trajectory format: ----- +If the trajectory is a DUMP file, then make sure the it contains the +information you need for pbctools (see below. I've been using this +command in my LAMMPS scripts to create the trajectories: + + dump 1 all custom 5000 DUMP_FILE.lammpstrj id mol type x y z ix iy iz + +It's a good idea to use an atom_style which supports molecule-ID numbers +so that you can assign a molecule-ID number to each atom. (I think this +is needed to wrap atom coordinates without breaking molecules in half.) + +Of course, you don't have to save your trajectories in DUMP format, +(other formats like DCD work fine) I just mention dump files +because these are the files I'm familiar with. + +3) ----- Wrap the coordinates to the unit cell + (without cutting the molecules in half) + +a) Start VMD +b) Load the trajectory in VMD (see above) +c) Menu Extensions->Tk Console +d) Try entering these commands: + + pbc wrap -compound res -all + pbc box + + ----- Optional ---- + Sometimes the solvent or membrane obscures the view of the solute. + It can help to shift the location of the periodic boundary box + To shift the box in the y direction (for example) do this: + + pbc wrap -compound res -all -shiftcenterrel {0.0 0.15 0.0} + pbc box -shiftcenterrel {0.0 0.15 0.0} + + Distances are measured in units of box-length fractions, not Angstroms. + + Alternately if you have a solute whose atoms are all of type 1, + then you can also try this to center the box around it: + + pbc wrap -sel type=1 -all -centersel type=2 -center com + +4) + You should check if your periodic boundary conditions are too small. + To do that: + select Graphics->Representations menu option + click on the "Periodic" tab, and + click on the "+x", "-x", "+y", "-y", "+z", "-z" checkboxes. + +5) Optional: If you like, change the atom types in the PSF file so + that VMD recognizes the atom types, use something like: + +sed -e 's/ 1 1 / C C /g' < system.psf > temp1.psf +sed -e 's/ 2 2 / H H /g' < temp1.psf > temp2.psf +sed -e 's/ 3 3 / P P /g' < temp2.psf > system.psf + +(If you do this, it might effect step 2 above.) diff --git a/tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene/images/benzene.jpg b/tools/moltemplate/examples/all_atom/force_field_OPLSAA/ethylene+benzene/images/benzene.jpg similarity index 100% rename from tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene/images/benzene.jpg rename to tools/moltemplate/examples/all_atom/force_field_OPLSAA/ethylene+benzene/images/benzene.jpg diff --git a/tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene/images/ethylene+benzene_box80x80x80_LR.jpg b/tools/moltemplate/examples/all_atom/force_field_OPLSAA/ethylene+benzene/images/ethylene+benzene_box80x80x80_LR.jpg similarity index 100% rename from tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene/images/ethylene+benzene_box80x80x80_LR.jpg rename to tools/moltemplate/examples/all_atom/force_field_OPLSAA/ethylene+benzene/images/ethylene+benzene_box80x80x80_LR.jpg diff --git a/tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene/images/ethylene.jpg b/tools/moltemplate/examples/all_atom/force_field_OPLSAA/ethylene+benzene/images/ethylene.jpg similarity index 100% rename from tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene/images/ethylene.jpg rename to tools/moltemplate/examples/all_atom/force_field_OPLSAA/ethylene+benzene/images/ethylene.jpg diff --git a/tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene/moltemplate_files/benzene.lt b/tools/moltemplate/examples/all_atom/force_field_OPLSAA/ethylene+benzene/moltemplate_files/benzene.lt similarity index 100% rename from tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene/moltemplate_files/benzene.lt rename to tools/moltemplate/examples/all_atom/force_field_OPLSAA/ethylene+benzene/moltemplate_files/benzene.lt diff --git a/tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene/moltemplate_files/ethylene.lt b/tools/moltemplate/examples/all_atom/force_field_OPLSAA/ethylene+benzene/moltemplate_files/ethylene.lt similarity index 100% rename from tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene/moltemplate_files/ethylene.lt rename to tools/moltemplate/examples/all_atom/force_field_OPLSAA/ethylene+benzene/moltemplate_files/ethylene.lt diff --git a/tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene/moltemplate_files/system.lt b/tools/moltemplate/examples/all_atom/force_field_OPLSAA/ethylene+benzene/moltemplate_files/system.lt similarity index 100% rename from tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene/moltemplate_files/system.lt rename to tools/moltemplate/examples/all_atom/force_field_OPLSAA/ethylene+benzene/moltemplate_files/system.lt diff --git a/tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene/run.in.npt b/tools/moltemplate/examples/all_atom/force_field_OPLSAA/ethylene+benzene/run.in.npt similarity index 100% rename from tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene/run.in.npt rename to tools/moltemplate/examples/all_atom/force_field_OPLSAA/ethylene+benzene/run.in.npt diff --git a/tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene/run.in.nvt b/tools/moltemplate/examples/all_atom/force_field_OPLSAA/ethylene+benzene/run.in.nvt similarity index 100% rename from tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene/run.in.nvt rename to tools/moltemplate/examples/all_atom/force_field_OPLSAA/ethylene+benzene/run.in.nvt diff --git a/tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/README.TXT b/tools/moltemplate/examples/all_atom/force_field_OPLSAA/ethylene+benzene_PACKMOL/README.txt similarity index 98% rename from tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/README.TXT rename to tools/moltemplate/examples/all_atom/force_field_OPLSAA/ethylene+benzene_PACKMOL/README.txt index af95dca522244f29c0016d9ff03933aa6a79545b..1ba9acc21965923cc1f6ba008783947c515bb974 100644 --- a/tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/README.TXT +++ b/tools/moltemplate/examples/all_atom/force_field_OPLSAA/ethylene+benzene_PACKMOL/README.txt @@ -6,7 +6,7 @@ This example also shows how to use moltemplate in combination with PACKMOL. moltemplate.sh is only used to create the topology, force-field and charges, and PACKMOL generates the coordinates, which moltemplate reads (in "step 1"). Moltemplate can also be used for generating atomic coordinates, especially - for mixing many small molecules together, as we do in this example. However + for mixing many small molecules together, as we do in this example. However I wanted to demonstrate how to combine PACKMOL with moltemplate.sh. In some other scenarios, such as protein solvation, PACKMOL does a much better job than moltemplate.) diff --git a/tools/moltemplate/examples/all_atom/force_field_OPLSAA/ethylene+benzene_PACKMOL/README_remove_irrelevant_info.sh b/tools/moltemplate/examples/all_atom/force_field_OPLSAA/ethylene+benzene_PACKMOL/README_remove_irrelevant_info.sh new file mode 100755 index 0000000000000000000000000000000000000000..5957289da9592f8a25e6796ea16ceb5e7abde043 --- /dev/null +++ b/tools/moltemplate/examples/all_atom/force_field_OPLSAA/ethylene+benzene_PACKMOL/README_remove_irrelevant_info.sh @@ -0,0 +1,8 @@ + +# Note: By default, the system.data and system.in.settings files contain +# extra information for atoms defined in OPLSAA which you are not using +# in this simulation. +# This is harmless, but if you to delete this information from your +# system.in.settings and system.in.data files, run this script: + +cleanup_moltemplate.sh diff --git a/tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene/README_run.sh b/tools/moltemplate/examples/all_atom/force_field_OPLSAA/ethylene+benzene_PACKMOL/README_run.sh similarity index 95% rename from tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene/README_run.sh rename to tools/moltemplate/examples/all_atom/force_field_OPLSAA/ethylene+benzene_PACKMOL/README_run.sh index 5f8286664451cb48a67c8d6ba855727ec8de1735..c27520076e4d22f4bedb385b0a6d21a747bbff53 100755 --- a/tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene/README_run.sh +++ b/tools/moltemplate/examples/all_atom/force_field_OPLSAA/ethylene+benzene_PACKMOL/README_run.sh @@ -1,6 +1,6 @@ # --- Running LAMMPS --- # -# The 2 files "run.in.npt", and "run.in.nvt" are LAMMPS +# The 2 files "run.in.npt", and "run.in.nvt" are LAMMPS # input scripts which link to the input scripts and data files # you hopefully have created earlier with moltemplate.sh: # system.in.init, system.in.settings, system.data @@ -16,7 +16,7 @@ lmp_mpi -i run.in.nvt # minimization and simulation at constant volume #(Note: The constant volume simulation lacks pressure equilibration. These are # completely separate simulations. The results of the constant pressure -# simulation might be ignored when beginning the simulation at constant +# simulation might be ignored when beginning the simulation at constant # volume. (This is because restart files in LAMMPS don't always work, # and I was spending a lot of time trying to convince people it was a # LAMMPS bug, instead of a moltemplate bug, so I disabled restart files.) diff --git a/tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/README_setup.sh b/tools/moltemplate/examples/all_atom/force_field_OPLSAA/ethylene+benzene_PACKMOL/README_setup.sh similarity index 70% rename from tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/README_setup.sh rename to tools/moltemplate/examples/all_atom/force_field_OPLSAA/ethylene+benzene_PACKMOL/README_setup.sh index 60daffc2bf98266457e6078f41b1edfe51da860f..c4550c60d2b308087d18e15cd43505b901edb1ef 100755 --- a/tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/README_setup.sh +++ b/tools/moltemplate/examples/all_atom/force_field_OPLSAA/ethylene+benzene_PACKMOL/README_setup.sh @@ -16,12 +16,16 @@ cd moltemplate_files moltemplate.sh -xyz system.xyz system.lt - # This will generate various files with names ending in *.in* and *.data. + # Optional: + # To check for missing angle,dihedral params run moltemplate this way instead: + # moltemplate.sh -xyz system.xyz -checkff system.lt + + # This will generate various files with names ending in *.in* and *.data. # Move them to the directory where you plan to run LAMMPS (in this case "../") mv -f system.data system.in* ../ # Optional: - # The "./output_ttree/" directory is full of temporary files generated by + # The "./output_ttree/" directory is full of temporary files generated by # moltemplate. They can be useful for debugging, but are usually thrown away. rm -rf output_ttree/ @@ -29,9 +33,11 @@ cd ../ + # Optional: # Note: The system.data and system.in.settings files contain extra information -# for atoms defined in OPLSAA which you are not using in this simulation. This -# is harmless, but if you to delete this information from your -# system.in.settings and system.in.data files, follow the instructions in -# this script: "optional_cleanup/README_remove_irrelevant_info.sh" +# for atoms defined in OPLSAA which you are not using in this simulation. +# This is harmless, but if you to delete this information from your +# system.in.settings and system.in.data files, run this script: +# +# cleanup_moltemplate.sh diff --git a/tools/moltemplate/examples/all_atom/force_field_OPLSAA/ethylene+benzene_PACKMOL/README_visualize.txt b/tools/moltemplate/examples/all_atom/force_field_OPLSAA/ethylene+benzene_PACKMOL/README_visualize.txt new file mode 100644 index 0000000000000000000000000000000000000000..a3e3ed620ec8b32fb6da484368dc3fc299bad6de --- /dev/null +++ b/tools/moltemplate/examples/all_atom/force_field_OPLSAA/ethylene+benzene_PACKMOL/README_visualize.txt @@ -0,0 +1,87 @@ + + ------- To view a lammps trajectory in VMD -------- + + +1) Build a PSF file for use in viewing with VMD. + +This step works with VMD 1.9 and topotools 1.2. +(Older versions, like VMD 1.8.6, don't support this.) + + +a) Start VMD +b) Menu Extensions->Tk Console +c) Enter: + +(I assume that the the DATA file is called "system.data") + + topo readlammpsdata system.data full + animate write psf system.psf + +2) + +Later, to Load a trajectory in VMD: + + Start VMD + Select menu: File->New Molecule + -Browse to select the PSF file you created above, and load it. + (Don't close the window yet.) + -Browse to select the trajectory file. + If necessary, for "file type" select: "LAMMPS Trajectory" + Load it. + + ---- A note on trajectory format: ----- +If the trajectory is a DUMP file, then make sure the it contains the +information you need for pbctools (see below. I've been using this +command in my LAMMPS scripts to create the trajectories: + + dump 1 all custom 5000 DUMP_FILE.lammpstrj id mol type x y z ix iy iz + +It's a good idea to use an atom_style which supports molecule-ID numbers +so that you can assign a molecule-ID number to each atom. (I think this +is needed to wrap atom coordinates without breaking molecules in half.) + +Of course, you don't have to save your trajectories in DUMP format, +(other formats like DCD work fine) I just mention dump files +because these are the files I'm familiar with. + +3) ----- Wrap the coordinates to the unit cell + (without cutting the molecules in half) + +a) Start VMD +b) Load the trajectory in VMD (see above) +c) Menu Extensions->Tk Console +d) Try entering these commands: + + pbc wrap -compound res -all + pbc box + + ----- Optional ---- + Sometimes the solvent or membrane obscures the view of the solute. + It can help to shift the location of the periodic boundary box + To shift the box in the y direction (for example) do this: + + pbc wrap -compound res -all -shiftcenterrel {0.0 0.15 0.0} + pbc box -shiftcenterrel {0.0 0.15 0.0} + + Distances are measured in units of box-length fractions, not Angstroms. + + Alternately if you have a solute whose atoms are all of type 1, + then you can also try this to center the box around it: + + pbc wrap -sel type=1 -all -centersel type=2 -center com + +4) + You should check if your periodic boundary conditions are too small. + To do that: + select Graphics->Representations menu option + click on the "Periodic" tab, and + click on the "+x", "-x", "+y", "-y", "+z", "-z" checkboxes. + +5) Optional: If you like, change the atom types in the PSF file so + that VMD recognizes the atom types, use something like: + +sed -e 's/ 1 1 / C C /g' < system.psf > temp1.psf +sed -e 's/ 2 2 / H H /g' < temp1.psf > temp2.psf +sed -e 's/ 3 3 / P P /g' < temp2.psf > system.psf + +(If you do this, it might effect step 2 above.) diff --git a/tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/images/benzene.jpg b/tools/moltemplate/examples/all_atom/force_field_OPLSAA/ethylene+benzene_PACKMOL/images/benzene.jpg similarity index 100% rename from tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/images/benzene.jpg rename to tools/moltemplate/examples/all_atom/force_field_OPLSAA/ethylene+benzene_PACKMOL/images/benzene.jpg diff --git a/tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/images/ethylene+benzene_box80x80x80_LR.jpg b/tools/moltemplate/examples/all_atom/force_field_OPLSAA/ethylene+benzene_PACKMOL/images/ethylene+benzene_box80x80x80_LR.jpg similarity index 100% rename from tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/images/ethylene+benzene_box80x80x80_LR.jpg rename to tools/moltemplate/examples/all_atom/force_field_OPLSAA/ethylene+benzene_PACKMOL/images/ethylene+benzene_box80x80x80_LR.jpg diff --git a/tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/images/ethylene.jpg b/tools/moltemplate/examples/all_atom/force_field_OPLSAA/ethylene+benzene_PACKMOL/images/ethylene.jpg similarity index 100% rename from tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/images/ethylene.jpg rename to tools/moltemplate/examples/all_atom/force_field_OPLSAA/ethylene+benzene_PACKMOL/images/ethylene.jpg diff --git a/tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/moltemplate_files/benzene.lt b/tools/moltemplate/examples/all_atom/force_field_OPLSAA/ethylene+benzene_PACKMOL/moltemplate_files/benzene.lt similarity index 100% rename from tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/moltemplate_files/benzene.lt rename to tools/moltemplate/examples/all_atom/force_field_OPLSAA/ethylene+benzene_PACKMOL/moltemplate_files/benzene.lt diff --git a/tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/moltemplate_files/ethylene.lt b/tools/moltemplate/examples/all_atom/force_field_OPLSAA/ethylene+benzene_PACKMOL/moltemplate_files/ethylene.lt similarity index 100% rename from tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/moltemplate_files/ethylene.lt rename to tools/moltemplate/examples/all_atom/force_field_OPLSAA/ethylene+benzene_PACKMOL/moltemplate_files/ethylene.lt diff --git a/tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/moltemplate_files/system.lt b/tools/moltemplate/examples/all_atom/force_field_OPLSAA/ethylene+benzene_PACKMOL/moltemplate_files/system.lt similarity index 100% rename from tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/moltemplate_files/system.lt rename to tools/moltemplate/examples/all_atom/force_field_OPLSAA/ethylene+benzene_PACKMOL/moltemplate_files/system.lt diff --git a/tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/packmol_files/README.TXT b/tools/moltemplate/examples/all_atom/force_field_OPLSAA/ethylene+benzene_PACKMOL/packmol_files/README.txt similarity index 100% rename from tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/packmol_files/README.TXT rename to tools/moltemplate/examples/all_atom/force_field_OPLSAA/ethylene+benzene_PACKMOL/packmol_files/README.txt diff --git a/tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/packmol_files/benzene.xyz b/tools/moltemplate/examples/all_atom/force_field_OPLSAA/ethylene+benzene_PACKMOL/packmol_files/benzene.xyz similarity index 100% rename from tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/packmol_files/benzene.xyz rename to tools/moltemplate/examples/all_atom/force_field_OPLSAA/ethylene+benzene_PACKMOL/packmol_files/benzene.xyz diff --git a/tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/packmol_files/ethylene.xyz b/tools/moltemplate/examples/all_atom/force_field_OPLSAA/ethylene+benzene_PACKMOL/packmol_files/ethylene.xyz similarity index 100% rename from tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/packmol_files/ethylene.xyz rename to tools/moltemplate/examples/all_atom/force_field_OPLSAA/ethylene+benzene_PACKMOL/packmol_files/ethylene.xyz diff --git a/tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/packmol_files/mix_ethylene+benzene.inp b/tools/moltemplate/examples/all_atom/force_field_OPLSAA/ethylene+benzene_PACKMOL/packmol_files/mix_ethylene+benzene.inp similarity index 100% rename from tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/packmol_files/mix_ethylene+benzene.inp rename to tools/moltemplate/examples/all_atom/force_field_OPLSAA/ethylene+benzene_PACKMOL/packmol_files/mix_ethylene+benzene.inp diff --git a/tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/run.in.npt b/tools/moltemplate/examples/all_atom/force_field_OPLSAA/ethylene+benzene_PACKMOL/run.in.npt similarity index 100% rename from tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/run.in.npt rename to tools/moltemplate/examples/all_atom/force_field_OPLSAA/ethylene+benzene_PACKMOL/run.in.npt diff --git a/tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/run.in.nvt b/tools/moltemplate/examples/all_atom/force_field_OPLSAA/ethylene+benzene_PACKMOL/run.in.nvt similarity index 100% rename from tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/run.in.nvt rename to tools/moltemplate/examples/all_atom/force_field_OPLSAA/ethylene+benzene_PACKMOL/run.in.nvt diff --git a/tools/moltemplate/examples/force_field_OPLSAA/hexadecane/README.TXT b/tools/moltemplate/examples/all_atom/force_field_OPLSAA/hexadecane/README.txt similarity index 90% rename from tools/moltemplate/examples/force_field_OPLSAA/hexadecane/README.TXT rename to tools/moltemplate/examples/all_atom/force_field_OPLSAA/hexadecane/README.txt index eceba67ef68fdc8144fe814ccccd4b3edf590e43..1450f1dd59d42494f2cbedc0a516bb79ec282dc3 100644 --- a/tools/moltemplate/examples/force_field_OPLSAA/hexadecane/README.TXT +++ b/tools/moltemplate/examples/all_atom/force_field_OPLSAA/hexadecane/README.txt @@ -21,18 +21,18 @@ lmp_mpi -i run.in.nvt # running the simulation at constant temperature ---- Details ---- The "Hexadecane" molecule, as well as the "CH2", and "CH3" monomers it contains -use the OPLSAA force-field. This means that when we define these molecules, -we only specify the atom names, bond list, and coordinates. +use the OPLSAA force-field. This means that when we define these molecules, +we only specify the atom names, bond list, and coordinates. We do not have to list the atom charges, angles, dihedrals, or impropers. The rules for creating atomic charge and angle topology are contained in -the "loplsaa.lt" file created by step 3) above. The "ch2group.lt", -"ch3group.lt", and "hexadecane.lt" files all refer to "loplsaa.lt", +the "loplsaa.lt" file created by step 3) above. The "ch2group.lt", +"ch3group.lt", and "hexadecane.lt" files all refer to "loplsaa.lt", (as well as the "OPLSAA" force-field object which it defines). Excerpt: import "loplsaa.lt" -CH2 inherits OPLSAA { ... -CH3 inherits OPLSAA { ... -Hexadecane inherits OPLSAA { ... +CH2 inherits OPLSAA { ... +CH3 inherits OPLSAA { ... +Hexadecane inherits OPLSAA { ... Alternatively, you can manually define a list of angles, dihedrals, and improper interactions in these files, instead of asking the force-field diff --git a/tools/moltemplate/examples/all_atom/force_field_OPLSAA/hexadecane/README_remove_irrelevant_info.sh b/tools/moltemplate/examples/all_atom/force_field_OPLSAA/hexadecane/README_remove_irrelevant_info.sh new file mode 100755 index 0000000000000000000000000000000000000000..5957289da9592f8a25e6796ea16ceb5e7abde043 --- /dev/null +++ b/tools/moltemplate/examples/all_atom/force_field_OPLSAA/hexadecane/README_remove_irrelevant_info.sh @@ -0,0 +1,8 @@ + +# Note: By default, the system.data and system.in.settings files contain +# extra information for atoms defined in OPLSAA which you are not using +# in this simulation. +# This is harmless, but if you to delete this information from your +# system.in.settings and system.in.data files, run this script: + +cleanup_moltemplate.sh diff --git a/tools/moltemplate/examples/all_atom/force_field_OPLSAA/hexadecane/README_run.sh b/tools/moltemplate/examples/all_atom/force_field_OPLSAA/hexadecane/README_run.sh new file mode 100755 index 0000000000000000000000000000000000000000..4871a06495cd92b8c5dd6a9d6397c2a2740fb983 --- /dev/null +++ b/tools/moltemplate/examples/all_atom/force_field_OPLSAA/hexadecane/README_run.sh @@ -0,0 +1,21 @@ +# --- Running LAMMPS --- +# +# The 2 files "run.in.npt", and "run.in.nvt" are LAMMPS +# input scripts which link to the input scripts and data files +# you hopefully have created earlier with moltemplate.sh: +# system.in.init, system.in.settings, system.data +# If not, carry out the instructions in "README_setup.sh". +# +# -- Instructions: -- +# If "lmp_mpi" is the name of the command you use to invoke lammps, +# then you would run lammps on these files this way: + + +lmp_mpi -i run.in.npt # minimization and simulation at constant pressure +lmp_mpi -i run.in.nvt # simulation at constant volume + + +# If you have compiled the MPI version of lammps, you can run lammps in parallel +#mpirun -np 4 lmp_mpi -i run.in.npt +#mpirun -np 4 lmp_mpi -i run.in.nvt +# (assuming you have 4 processors available) diff --git a/tools/moltemplate/examples/all_atom/force_field_OPLSAA/hexadecane/README_setup.sh b/tools/moltemplate/examples/all_atom/force_field_OPLSAA/hexadecane/README_setup.sh new file mode 100755 index 0000000000000000000000000000000000000000..15a3a963c860bbb7f0ca70c7ad13a16c5bc551aa --- /dev/null +++ b/tools/moltemplate/examples/all_atom/force_field_OPLSAA/hexadecane/README_setup.sh @@ -0,0 +1,34 @@ + +# Create LAMMPS input files this way: +cd moltemplate_files + + # run moltemplate + + moltemplate.sh system.lt + + # Optional: + # To check for missing angle,dihedral params run moltemplate this way instead: + # moltemplate.sh -checkff system.lt + + + # Moltemplate generates various files with names ending in *.in* and *.data. + # Move them to the directory where you plan to run LAMMPS (in this case "../") + mv -f system.data system.in* ../ + + # Optional: + # The "./output_ttree/" directory is full of temporary files generated by + # moltemplate. They can be useful for debugging, but are usually thrown away. + rm -rf output_ttree/ + +cd ../ + + + + +# Optional: +# Note: The system.data and system.in.settings files contain extra information +# for atoms defined in OPLSAA which you are not using in this simulation. +# This is harmless, but if you to delete this information from your +# system.in.settings and system.in.data files, run this script: +# +# cleanup_moltemplate.sh diff --git a/tools/moltemplate/examples/all_atom/force_field_OPLSAA/hexadecane/README_visualize.txt b/tools/moltemplate/examples/all_atom/force_field_OPLSAA/hexadecane/README_visualize.txt new file mode 100644 index 0000000000000000000000000000000000000000..a3e3ed620ec8b32fb6da484368dc3fc299bad6de --- /dev/null +++ b/tools/moltemplate/examples/all_atom/force_field_OPLSAA/hexadecane/README_visualize.txt @@ -0,0 +1,87 @@ + + ------- To view a lammps trajectory in VMD -------- + + +1) Build a PSF file for use in viewing with VMD. + +This step works with VMD 1.9 and topotools 1.2. +(Older versions, like VMD 1.8.6, don't support this.) + + +a) Start VMD +b) Menu Extensions->Tk Console +c) Enter: + +(I assume that the the DATA file is called "system.data") + + topo readlammpsdata system.data full + animate write psf system.psf + +2) + +Later, to Load a trajectory in VMD: + + Start VMD + Select menu: File->New Molecule + -Browse to select the PSF file you created above, and load it. + (Don't close the window yet.) + -Browse to select the trajectory file. + If necessary, for "file type" select: "LAMMPS Trajectory" + Load it. + + ---- A note on trajectory format: ----- +If the trajectory is a DUMP file, then make sure the it contains the +information you need for pbctools (see below. I've been using this +command in my LAMMPS scripts to create the trajectories: + + dump 1 all custom 5000 DUMP_FILE.lammpstrj id mol type x y z ix iy iz + +It's a good idea to use an atom_style which supports molecule-ID numbers +so that you can assign a molecule-ID number to each atom. (I think this +is needed to wrap atom coordinates without breaking molecules in half.) + +Of course, you don't have to save your trajectories in DUMP format, +(other formats like DCD work fine) I just mention dump files +because these are the files I'm familiar with. + +3) ----- Wrap the coordinates to the unit cell + (without cutting the molecules in half) + +a) Start VMD +b) Load the trajectory in VMD (see above) +c) Menu Extensions->Tk Console +d) Try entering these commands: + + pbc wrap -compound res -all + pbc box + + ----- Optional ---- + Sometimes the solvent or membrane obscures the view of the solute. + It can help to shift the location of the periodic boundary box + To shift the box in the y direction (for example) do this: + + pbc wrap -compound res -all -shiftcenterrel {0.0 0.15 0.0} + pbc box -shiftcenterrel {0.0 0.15 0.0} + + Distances are measured in units of box-length fractions, not Angstroms. + + Alternately if you have a solute whose atoms are all of type 1, + then you can also try this to center the box around it: + + pbc wrap -sel type=1 -all -centersel type=2 -center com + +4) + You should check if your periodic boundary conditions are too small. + To do that: + select Graphics->Representations menu option + click on the "Periodic" tab, and + click on the "+x", "-x", "+y", "-y", "+z", "-z" checkboxes. + +5) Optional: If you like, change the atom types in the PSF file so + that VMD recognizes the atom types, use something like: + +sed -e 's/ 1 1 / C C /g' < system.psf > temp1.psf +sed -e 's/ 2 2 / H H /g' < temp1.psf > temp2.psf +sed -e 's/ 3 3 / P P /g' < temp2.psf > system.psf + +(If you do this, it might effect step 2 above.) diff --git a/tools/moltemplate/examples/force_field_OPLSAA/hexadecane/WARNING.TXT b/tools/moltemplate/examples/all_atom/force_field_OPLSAA/hexadecane/WARNING.txt similarity index 90% rename from tools/moltemplate/examples/force_field_OPLSAA/hexadecane/WARNING.TXT rename to tools/moltemplate/examples/all_atom/force_field_OPLSAA/hexadecane/WARNING.txt index c92b2592a6e7d98105e3ad7f657ec8247d722b24..e06bf0caa1402ceaba9bbfb628452be8025d8c39 100644 --- a/tools/moltemplate/examples/force_field_OPLSAA/hexadecane/WARNING.TXT +++ b/tools/moltemplate/examples/all_atom/force_field_OPLSAA/hexadecane/WARNING.txt @@ -2,7 +2,7 @@ This software is experimental, and the force-fields and equilbration protocols have not been tested carefully by me. There is no gaurantee that the simulation -will reproduce the behavior of real hexadecane molecules, +will reproduce the behavior of real hexadecane molecules, (or even of hexadecane molecules simulated using AMBER, which should be using the same force-field). diff --git a/tools/moltemplate/examples/force_field_OPLSAA/hexadecane/images/hexadecane_12x12x2_t=0_LR.jpg b/tools/moltemplate/examples/all_atom/force_field_OPLSAA/hexadecane/images/hexadecane_12x12x2_t=0_LR.jpg similarity index 100% rename from tools/moltemplate/examples/force_field_OPLSAA/hexadecane/images/hexadecane_12x12x2_t=0_LR.jpg rename to tools/moltemplate/examples/all_atom/force_field_OPLSAA/hexadecane/images/hexadecane_12x12x2_t=0_LR.jpg diff --git a/tools/moltemplate/examples/force_field_OPLSAA/hexadecane/images/hexadecane_12x12x2_t=10ps_npt_LR.jpg b/tools/moltemplate/examples/all_atom/force_field_OPLSAA/hexadecane/images/hexadecane_12x12x2_t=10ps_npt_LR.jpg similarity index 100% rename from tools/moltemplate/examples/force_field_OPLSAA/hexadecane/images/hexadecane_12x12x2_t=10ps_npt_LR.jpg rename to tools/moltemplate/examples/all_atom/force_field_OPLSAA/hexadecane/images/hexadecane_12x12x2_t=10ps_npt_LR.jpg diff --git a/tools/moltemplate/examples/force_field_OPLSAA/hexadecane/images/hexadecane_LR.jpg b/tools/moltemplate/examples/all_atom/force_field_OPLSAA/hexadecane/images/hexadecane_LR.jpg similarity index 100% rename from tools/moltemplate/examples/force_field_OPLSAA/hexadecane/images/hexadecane_LR.jpg rename to tools/moltemplate/examples/all_atom/force_field_OPLSAA/hexadecane/images/hexadecane_LR.jpg diff --git a/tools/moltemplate/examples/force_field_OPLSAA/alkane_chain_single/moltemplate_files/ch2group.lt b/tools/moltemplate/examples/all_atom/force_field_OPLSAA/hexadecane/moltemplate_files/ch2group.lt similarity index 93% rename from tools/moltemplate/examples/force_field_OPLSAA/alkane_chain_single/moltemplate_files/ch2group.lt rename to tools/moltemplate/examples/all_atom/force_field_OPLSAA/hexadecane/moltemplate_files/ch2group.lt index 510b7e111a104f14d969cd051cb7f2827c8b12f1..05091ba39c8bb1d27bd3c8e050d4a8f6cbc91380 100644 --- a/tools/moltemplate/examples/force_field_OPLSAA/alkane_chain_single/moltemplate_files/ch2group.lt +++ b/tools/moltemplate/examples/all_atom/force_field_OPLSAA/hexadecane/moltemplate_files/ch2group.lt @@ -1,7 +1,8 @@ # This file contains a definition for the "CH2" molecular subunit. # First, load the OPLS force field parameters we will need. -# These 2 files are located in the "src/moltemplate_force_fields/" subdirectory: +# These 2 files are located in the "force_fields" subdirectory +# of the moltemplate distribution. import "oplsaa.lt" # <-- defines the standard "OPLSAA" force field import "loplsaa.lt" # <-- custom parameters for long alkane chains taken from @@ -31,8 +32,7 @@ CH2 inherits OPLSAA { $bond:CH2 $atom:C $atom:H2 } - # Atom type numbers (@atom:80L,@atom:85LCH3) are defined in "loplsaa.lt", - # which is usually located in the "src/moltemplate_force_fields/" subdirectory + # Atom type numbers (@atom:80L,@atom:85LCH3) are defined in "loplsaa.lt": # @atom:80L "Alkane CH3- (LOPLS CT_CH3)" # @atom:81L "Alkane -CH2- (LOPLS CT_CH2)" # @atom:85LCH3 "Alkane H-C CH3 (LOPLS HC_CH3)" diff --git a/tools/moltemplate/examples/force_field_OPLSAA/hexadecane/moltemplate_files/ch3group.lt b/tools/moltemplate/examples/all_atom/force_field_OPLSAA/hexadecane/moltemplate_files/ch3group.lt similarity index 96% rename from tools/moltemplate/examples/force_field_OPLSAA/hexadecane/moltemplate_files/ch3group.lt rename to tools/moltemplate/examples/all_atom/force_field_OPLSAA/hexadecane/moltemplate_files/ch3group.lt index b01c8c0cd2363b2df6f0d7aea872e3b60948186e..95d48d8530a9c9d319bddfe474b0e69137282463 100644 --- a/tools/moltemplate/examples/force_field_OPLSAA/hexadecane/moltemplate_files/ch3group.lt +++ b/tools/moltemplate/examples/all_atom/force_field_OPLSAA/hexadecane/moltemplate_files/ch3group.lt @@ -1,7 +1,8 @@ # This file contains a definition for the "CH3" molecular subunit. # First, load the OPLS force field parameters we will need. -# These 2 files are located in the "src/moltemplate_force_fields/" subdirectory: +# These 2 files are located in the "force_fields" subdirectory +# of the moltemplate distribution. import "oplsaa.lt" # <-- defines the standard "OPLSAA" force field import "loplsaa.lt" # <-- custom parameters for long alkane chains taken from diff --git a/tools/moltemplate/examples/force_field_OPLSAA/hexadecane/moltemplate_files/hexadecane.lt b/tools/moltemplate/examples/all_atom/force_field_OPLSAA/hexadecane/moltemplate_files/hexadecane.lt similarity index 100% rename from tools/moltemplate/examples/force_field_OPLSAA/hexadecane/moltemplate_files/hexadecane.lt rename to tools/moltemplate/examples/all_atom/force_field_OPLSAA/hexadecane/moltemplate_files/hexadecane.lt diff --git a/tools/moltemplate/examples/force_field_OPLSAA/hexadecane/moltemplate_files/system.lt b/tools/moltemplate/examples/all_atom/force_field_OPLSAA/hexadecane/moltemplate_files/system.lt similarity index 100% rename from tools/moltemplate/examples/force_field_OPLSAA/hexadecane/moltemplate_files/system.lt rename to tools/moltemplate/examples/all_atom/force_field_OPLSAA/hexadecane/moltemplate_files/system.lt diff --git a/tools/moltemplate/examples/force_field_OPLSAA/hexadecane/run.in.npt b/tools/moltemplate/examples/all_atom/force_field_OPLSAA/hexadecane/run.in.npt similarity index 100% rename from tools/moltemplate/examples/force_field_OPLSAA/hexadecane/run.in.npt rename to tools/moltemplate/examples/all_atom/force_field_OPLSAA/hexadecane/run.in.npt diff --git a/tools/moltemplate/examples/force_field_OPLSAA/hexadecane/run.in.nvt b/tools/moltemplate/examples/all_atom/force_field_OPLSAA/hexadecane/run.in.nvt similarity index 100% rename from tools/moltemplate/examples/force_field_OPLSAA/hexadecane/run.in.nvt rename to tools/moltemplate/examples/all_atom/force_field_OPLSAA/hexadecane/run.in.nvt diff --git a/tools/moltemplate/examples/force_field_OPLSAA/methane/README.TXT b/tools/moltemplate/examples/all_atom/force_field_OPLSAA/methane/README.txt similarity index 93% rename from tools/moltemplate/examples/force_field_OPLSAA/methane/README.TXT rename to tools/moltemplate/examples/all_atom/force_field_OPLSAA/methane/README.txt index 9f9e9d0994b7904946b213a89628773929d517b5..9114c637a86b9472564432fca50aa06f5c6ee174 100644 --- a/tools/moltemplate/examples/force_field_OPLSAA/methane/README.TXT +++ b/tools/moltemplate/examples/all_atom/force_field_OPLSAA/methane/README.txt @@ -6,7 +6,7 @@ This example demonstrates how to build a simulation containing a box of methane. The methane molecules in this example use the OPLSAA force-field. This means that the database of force-field parameters in "oplsaa.lt" will be used to generate angles, dihedrals, and impropers. -The "moltemplate_files/methane.lt" file +The "moltemplate_files/methane.lt" file contains these lines which refer to OPLSAA: import "oplsaa.lt" @@ -14,7 +14,7 @@ Methane inherits OPLSAA { ... -------- Instructions: --------- -More detailed instructions on how to build LAMMPS input files and +More detailed instructions on how to build LAMMPS input files and run a short simulation are provided in other README files. step 1) diff --git a/tools/moltemplate/examples/all_atom/force_field_OPLSAA/methane/README_remove_irrelevant_info.sh b/tools/moltemplate/examples/all_atom/force_field_OPLSAA/methane/README_remove_irrelevant_info.sh new file mode 100755 index 0000000000000000000000000000000000000000..5957289da9592f8a25e6796ea16ceb5e7abde043 --- /dev/null +++ b/tools/moltemplate/examples/all_atom/force_field_OPLSAA/methane/README_remove_irrelevant_info.sh @@ -0,0 +1,8 @@ + +# Note: By default, the system.data and system.in.settings files contain +# extra information for atoms defined in OPLSAA which you are not using +# in this simulation. +# This is harmless, but if you to delete this information from your +# system.in.settings and system.in.data files, run this script: + +cleanup_moltemplate.sh diff --git a/tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/README_run.sh b/tools/moltemplate/examples/all_atom/force_field_OPLSAA/methane/README_run.sh similarity index 95% rename from tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/README_run.sh rename to tools/moltemplate/examples/all_atom/force_field_OPLSAA/methane/README_run.sh index 5f8286664451cb48a67c8d6ba855727ec8de1735..c27520076e4d22f4bedb385b0a6d21a747bbff53 100755 --- a/tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/README_run.sh +++ b/tools/moltemplate/examples/all_atom/force_field_OPLSAA/methane/README_run.sh @@ -1,6 +1,6 @@ # --- Running LAMMPS --- # -# The 2 files "run.in.npt", and "run.in.nvt" are LAMMPS +# The 2 files "run.in.npt", and "run.in.nvt" are LAMMPS # input scripts which link to the input scripts and data files # you hopefully have created earlier with moltemplate.sh: # system.in.init, system.in.settings, system.data @@ -16,7 +16,7 @@ lmp_mpi -i run.in.nvt # minimization and simulation at constant volume #(Note: The constant volume simulation lacks pressure equilibration. These are # completely separate simulations. The results of the constant pressure -# simulation might be ignored when beginning the simulation at constant +# simulation might be ignored when beginning the simulation at constant # volume. (This is because restart files in LAMMPS don't always work, # and I was spending a lot of time trying to convince people it was a # LAMMPS bug, instead of a moltemplate bug, so I disabled restart files.) diff --git a/tools/moltemplate/examples/all_atom/force_field_OPLSAA/methane/README_setup.sh b/tools/moltemplate/examples/all_atom/force_field_OPLSAA/methane/README_setup.sh new file mode 100755 index 0000000000000000000000000000000000000000..5cd2142a4128c41eb75945198e3fcdb8cf9e52b3 --- /dev/null +++ b/tools/moltemplate/examples/all_atom/force_field_OPLSAA/methane/README_setup.sh @@ -0,0 +1,34 @@ + +# Create LAMMPS input files this way: +cd moltemplate_files + + # run moltemplate + + moltemplate.sh system.lt + + # Optional: + # To check for missing angle,dihedral params run moltemplate this way instead: + # moltemplate.sh -checkff system.lt + + + # Moltemplate generates various files with names ending in *.in* and *.data. + # Move them to the directory where you plan to run LAMMPS (in this case "../") + mv -f system.data system.in* ../ + + # Optional: + # The "./output_ttree/" directory is full of temporary files generated by + # moltemplate. They can be useful for debugging, but are usually thrown away. + rm -rf output_ttree/ + +cd ../ + + + + +# Optional: +# Note: The system.data and system.in.settings files contain extra information +# for atoms defined in OPLSAA which you are not using in this simulation. +# This is harmless, but if you to delete this information from your +# system.in.settings and system.in.data files, run this script: +# +# cleanup_moltemplate.sh diff --git a/tools/moltemplate/examples/all_atom/force_field_OPLSAA/methane/README_visualize.txt b/tools/moltemplate/examples/all_atom/force_field_OPLSAA/methane/README_visualize.txt new file mode 100644 index 0000000000000000000000000000000000000000..a3e3ed620ec8b32fb6da484368dc3fc299bad6de --- /dev/null +++ b/tools/moltemplate/examples/all_atom/force_field_OPLSAA/methane/README_visualize.txt @@ -0,0 +1,87 @@ + + ------- To view a lammps trajectory in VMD -------- + + +1) Build a PSF file for use in viewing with VMD. + +This step works with VMD 1.9 and topotools 1.2. +(Older versions, like VMD 1.8.6, don't support this.) + + +a) Start VMD +b) Menu Extensions->Tk Console +c) Enter: + +(I assume that the the DATA file is called "system.data") + + topo readlammpsdata system.data full + animate write psf system.psf + +2) + +Later, to Load a trajectory in VMD: + + Start VMD + Select menu: File->New Molecule + -Browse to select the PSF file you created above, and load it. + (Don't close the window yet.) + -Browse to select the trajectory file. + If necessary, for "file type" select: "LAMMPS Trajectory" + Load it. + + ---- A note on trajectory format: ----- +If the trajectory is a DUMP file, then make sure the it contains the +information you need for pbctools (see below. I've been using this +command in my LAMMPS scripts to create the trajectories: + + dump 1 all custom 5000 DUMP_FILE.lammpstrj id mol type x y z ix iy iz + +It's a good idea to use an atom_style which supports molecule-ID numbers +so that you can assign a molecule-ID number to each atom. (I think this +is needed to wrap atom coordinates without breaking molecules in half.) + +Of course, you don't have to save your trajectories in DUMP format, +(other formats like DCD work fine) I just mention dump files +because these are the files I'm familiar with. + +3) ----- Wrap the coordinates to the unit cell + (without cutting the molecules in half) + +a) Start VMD +b) Load the trajectory in VMD (see above) +c) Menu Extensions->Tk Console +d) Try entering these commands: + + pbc wrap -compound res -all + pbc box + + ----- Optional ---- + Sometimes the solvent or membrane obscures the view of the solute. + It can help to shift the location of the periodic boundary box + To shift the box in the y direction (for example) do this: + + pbc wrap -compound res -all -shiftcenterrel {0.0 0.15 0.0} + pbc box -shiftcenterrel {0.0 0.15 0.0} + + Distances are measured in units of box-length fractions, not Angstroms. + + Alternately if you have a solute whose atoms are all of type 1, + then you can also try this to center the box around it: + + pbc wrap -sel type=1 -all -centersel type=2 -center com + +4) + You should check if your periodic boundary conditions are too small. + To do that: + select Graphics->Representations menu option + click on the "Periodic" tab, and + click on the "+x", "-x", "+y", "-y", "+z", "-z" checkboxes. + +5) Optional: If you like, change the atom types in the PSF file so + that VMD recognizes the atom types, use something like: + +sed -e 's/ 1 1 / C C /g' < system.psf > temp1.psf +sed -e 's/ 2 2 / H H /g' < temp1.psf > temp2.psf +sed -e 's/ 3 3 / P P /g' < temp2.psf > system.psf + +(If you do this, it might effect step 2 above.) diff --git a/tools/moltemplate/examples/force_field_OPLSAA/methane/moltemplate_files/methane.lt b/tools/moltemplate/examples/all_atom/force_field_OPLSAA/methane/moltemplate_files/methane.lt similarity index 100% rename from tools/moltemplate/examples/force_field_OPLSAA/methane/moltemplate_files/methane.lt rename to tools/moltemplate/examples/all_atom/force_field_OPLSAA/methane/moltemplate_files/methane.lt diff --git a/tools/moltemplate/examples/force_field_OPLSAA/methane/moltemplate_files/system.lt b/tools/moltemplate/examples/all_atom/force_field_OPLSAA/methane/moltemplate_files/system.lt similarity index 100% rename from tools/moltemplate/examples/force_field_OPLSAA/methane/moltemplate_files/system.lt rename to tools/moltemplate/examples/all_atom/force_field_OPLSAA/methane/moltemplate_files/system.lt diff --git a/tools/moltemplate/examples/force_field_OPLSAA/methane/run.in.npt b/tools/moltemplate/examples/all_atom/force_field_OPLSAA/methane/run.in.npt similarity index 100% rename from tools/moltemplate/examples/force_field_OPLSAA/methane/run.in.npt rename to tools/moltemplate/examples/all_atom/force_field_OPLSAA/methane/run.in.npt diff --git a/tools/moltemplate/examples/force_field_OPLSAA/methane/run.in.nvt b/tools/moltemplate/examples/all_atom/force_field_OPLSAA/methane/run.in.nvt similarity index 100% rename from tools/moltemplate/examples/force_field_OPLSAA/methane/run.in.nvt rename to tools/moltemplate/examples/all_atom/force_field_OPLSAA/methane/run.in.nvt diff --git a/tools/moltemplate/examples/force_field_OPLSAA/waterSPCE+methane/README.TXT b/tools/moltemplate/examples/all_atom/force_field_OPLSAA/waterSPCE+methane/README.txt similarity index 95% rename from tools/moltemplate/examples/force_field_OPLSAA/waterSPCE+methane/README.TXT rename to tools/moltemplate/examples/all_atom/force_field_OPLSAA/waterSPCE+methane/README.txt index 5ad3a04b508af6bb234c3202d428bd2f0a773069..9c318e6654731a8aa128906702d9217a829b841f 100644 --- a/tools/moltemplate/examples/force_field_OPLSAA/waterSPCE+methane/README.TXT +++ b/tools/moltemplate/examples/all_atom/force_field_OPLSAA/waterSPCE+methane/README.txt @@ -6,7 +6,7 @@ The methane molecules use OPLSAA force-field, but the water molecules do not. The methane molecules in this example use the OPLSAA force-field. This means that the database of force-field parameters in "oplsaa.lt" will be used to generate angles, dihedrals, and impropers. -The "moltemplate_files/methane.lt" file +The "moltemplate_files/methane.lt" file contains these lines which refer to OPLSAA: import "oplsaa.lt" @@ -20,7 +20,7 @@ interactions, atom properties and force-field parameters for water explicitly. -------- Instructions: --------- -More detailed instructions on how to build LAMMPS input files and +More detailed instructions on how to build LAMMPS input files and run a short simulation are provided in other README files. step 1) diff --git a/tools/moltemplate/examples/all_atom/force_field_OPLSAA/waterSPCE+methane/README_remove_irrelevant_info.sh b/tools/moltemplate/examples/all_atom/force_field_OPLSAA/waterSPCE+methane/README_remove_irrelevant_info.sh new file mode 100755 index 0000000000000000000000000000000000000000..5957289da9592f8a25e6796ea16ceb5e7abde043 --- /dev/null +++ b/tools/moltemplate/examples/all_atom/force_field_OPLSAA/waterSPCE+methane/README_remove_irrelevant_info.sh @@ -0,0 +1,8 @@ + +# Note: By default, the system.data and system.in.settings files contain +# extra information for atoms defined in OPLSAA which you are not using +# in this simulation. +# This is harmless, but if you to delete this information from your +# system.in.settings and system.in.data files, run this script: + +cleanup_moltemplate.sh diff --git a/tools/moltemplate/examples/force_field_OPLSAA/hexadecane/README_run.sh b/tools/moltemplate/examples/all_atom/force_field_OPLSAA/waterSPCE+methane/README_run.sh similarity index 95% rename from tools/moltemplate/examples/force_field_OPLSAA/hexadecane/README_run.sh rename to tools/moltemplate/examples/all_atom/force_field_OPLSAA/waterSPCE+methane/README_run.sh index 5f8286664451cb48a67c8d6ba855727ec8de1735..c27520076e4d22f4bedb385b0a6d21a747bbff53 100755 --- a/tools/moltemplate/examples/force_field_OPLSAA/hexadecane/README_run.sh +++ b/tools/moltemplate/examples/all_atom/force_field_OPLSAA/waterSPCE+methane/README_run.sh @@ -1,6 +1,6 @@ # --- Running LAMMPS --- # -# The 2 files "run.in.npt", and "run.in.nvt" are LAMMPS +# The 2 files "run.in.npt", and "run.in.nvt" are LAMMPS # input scripts which link to the input scripts and data files # you hopefully have created earlier with moltemplate.sh: # system.in.init, system.in.settings, system.data @@ -16,7 +16,7 @@ lmp_mpi -i run.in.nvt # minimization and simulation at constant volume #(Note: The constant volume simulation lacks pressure equilibration. These are # completely separate simulations. The results of the constant pressure -# simulation might be ignored when beginning the simulation at constant +# simulation might be ignored when beginning the simulation at constant # volume. (This is because restart files in LAMMPS don't always work, # and I was spending a lot of time trying to convince people it was a # LAMMPS bug, instead of a moltemplate bug, so I disabled restart files.) diff --git a/tools/moltemplate/examples/force_field_OPLSAA/waterSPCE+methane/README_setup.sh b/tools/moltemplate/examples/all_atom/force_field_OPLSAA/waterSPCE+methane/README_setup.sh similarity index 64% rename from tools/moltemplate/examples/force_field_OPLSAA/waterSPCE+methane/README_setup.sh rename to tools/moltemplate/examples/all_atom/force_field_OPLSAA/waterSPCE+methane/README_setup.sh index 6aa6c06f4cf9e16c1fc205e381bf3aff35d79a0a..4fc8dda6d52e833753dd5d1bc7395e556c0caeb9 100755 --- a/tools/moltemplate/examples/force_field_OPLSAA/waterSPCE+methane/README_setup.sh +++ b/tools/moltemplate/examples/all_atom/force_field_OPLSAA/waterSPCE+methane/README_setup.sh @@ -6,12 +6,12 @@ cd moltemplate_files moltemplate.sh system.lt - # This will generate various files with names ending in *.in* and *.data. + # Moltemplate generates various files with names ending in *.in* and *.data. # Move them to the directory where you plan to run LAMMPS (in this case "../") mv -f system.data system.in* ../ # Optional: - # The "./output_ttree/" directory is full of temporary files generated by + # The "./output_ttree/" directory is full of temporary files generated by # moltemplate. They can be useful for debugging, but are usually thrown away. rm -rf output_ttree/ @@ -22,7 +22,8 @@ cd ../ # Optional: # Note: The system.data and system.in.settings files contain extra information -# for atoms defined in OPLSAA which you are not using in this simulation. This -# is harmless, but if you to delete this information from your -# system.in.settings and system.in.data files, follow the instructions in -# this script: "optional_cleanup/README_remove_irrelevant_info.sh" +# for atoms defined in OPLSAA which you are not using in this simulation. +# This is harmless, but if you to delete this information from your +# system.in.settings and system.in.data files, run this script: +# +# cleanup_moltemplate.sh diff --git a/tools/moltemplate/examples/all_atom/force_field_OPLSAA/waterSPCE+methane/README_visualize.txt b/tools/moltemplate/examples/all_atom/force_field_OPLSAA/waterSPCE+methane/README_visualize.txt new file mode 100644 index 0000000000000000000000000000000000000000..a3e3ed620ec8b32fb6da484368dc3fc299bad6de --- /dev/null +++ b/tools/moltemplate/examples/all_atom/force_field_OPLSAA/waterSPCE+methane/README_visualize.txt @@ -0,0 +1,87 @@ + + ------- To view a lammps trajectory in VMD -------- + + +1) Build a PSF file for use in viewing with VMD. + +This step works with VMD 1.9 and topotools 1.2. +(Older versions, like VMD 1.8.6, don't support this.) + + +a) Start VMD +b) Menu Extensions->Tk Console +c) Enter: + +(I assume that the the DATA file is called "system.data") + + topo readlammpsdata system.data full + animate write psf system.psf + +2) + +Later, to Load a trajectory in VMD: + + Start VMD + Select menu: File->New Molecule + -Browse to select the PSF file you created above, and load it. + (Don't close the window yet.) + -Browse to select the trajectory file. + If necessary, for "file type" select: "LAMMPS Trajectory" + Load it. + + ---- A note on trajectory format: ----- +If the trajectory is a DUMP file, then make sure the it contains the +information you need for pbctools (see below. I've been using this +command in my LAMMPS scripts to create the trajectories: + + dump 1 all custom 5000 DUMP_FILE.lammpstrj id mol type x y z ix iy iz + +It's a good idea to use an atom_style which supports molecule-ID numbers +so that you can assign a molecule-ID number to each atom. (I think this +is needed to wrap atom coordinates without breaking molecules in half.) + +Of course, you don't have to save your trajectories in DUMP format, +(other formats like DCD work fine) I just mention dump files +because these are the files I'm familiar with. + +3) ----- Wrap the coordinates to the unit cell + (without cutting the molecules in half) + +a) Start VMD +b) Load the trajectory in VMD (see above) +c) Menu Extensions->Tk Console +d) Try entering these commands: + + pbc wrap -compound res -all + pbc box + + ----- Optional ---- + Sometimes the solvent or membrane obscures the view of the solute. + It can help to shift the location of the periodic boundary box + To shift the box in the y direction (for example) do this: + + pbc wrap -compound res -all -shiftcenterrel {0.0 0.15 0.0} + pbc box -shiftcenterrel {0.0 0.15 0.0} + + Distances are measured in units of box-length fractions, not Angstroms. + + Alternately if you have a solute whose atoms are all of type 1, + then you can also try this to center the box around it: + + pbc wrap -sel type=1 -all -centersel type=2 -center com + +4) + You should check if your periodic boundary conditions are too small. + To do that: + select Graphics->Representations menu option + click on the "Periodic" tab, and + click on the "+x", "-x", "+y", "-y", "+z", "-z" checkboxes. + +5) Optional: If you like, change the atom types in the PSF file so + that VMD recognizes the atom types, use something like: + +sed -e 's/ 1 1 / C C /g' < system.psf > temp1.psf +sed -e 's/ 2 2 / H H /g' < temp1.psf > temp2.psf +sed -e 's/ 3 3 / P P /g' < temp2.psf > system.psf + +(If you do this, it might effect step 2 above.) diff --git a/tools/moltemplate/examples/force_field_OPLSAA/waterSPCE+methane/moltemplate_files/methane.lt b/tools/moltemplate/examples/all_atom/force_field_OPLSAA/waterSPCE+methane/moltemplate_files/methane.lt similarity index 100% rename from tools/moltemplate/examples/force_field_OPLSAA/waterSPCE+methane/moltemplate_files/methane.lt rename to tools/moltemplate/examples/all_atom/force_field_OPLSAA/waterSPCE+methane/moltemplate_files/methane.lt diff --git a/tools/moltemplate/examples/force_field_OPLSAA/waterSPCE+methane/moltemplate_files/spce.lt b/tools/moltemplate/examples/all_atom/force_field_OPLSAA/waterSPCE+methane/moltemplate_files/spce.lt similarity index 100% rename from tools/moltemplate/examples/force_field_OPLSAA/waterSPCE+methane/moltemplate_files/spce.lt rename to tools/moltemplate/examples/all_atom/force_field_OPLSAA/waterSPCE+methane/moltemplate_files/spce.lt diff --git a/tools/moltemplate/examples/force_field_OPLSAA/waterSPCE+methane/moltemplate_files/system.lt b/tools/moltemplate/examples/all_atom/force_field_OPLSAA/waterSPCE+methane/moltemplate_files/system.lt similarity index 100% rename from tools/moltemplate/examples/force_field_OPLSAA/waterSPCE+methane/moltemplate_files/system.lt rename to tools/moltemplate/examples/all_atom/force_field_OPLSAA/waterSPCE+methane/moltemplate_files/system.lt diff --git a/tools/moltemplate/examples/force_field_OPLSAA/waterSPCE+methane/run.in.npt b/tools/moltemplate/examples/all_atom/force_field_OPLSAA/waterSPCE+methane/run.in.npt similarity index 100% rename from tools/moltemplate/examples/force_field_OPLSAA/waterSPCE+methane/run.in.npt rename to tools/moltemplate/examples/all_atom/force_field_OPLSAA/waterSPCE+methane/run.in.npt diff --git a/tools/moltemplate/examples/force_field_OPLSAA/waterSPCE+methane/run.in.nvt b/tools/moltemplate/examples/all_atom/force_field_OPLSAA/waterSPCE+methane/run.in.nvt similarity index 100% rename from tools/moltemplate/examples/force_field_OPLSAA/waterSPCE+methane/run.in.nvt rename to tools/moltemplate/examples/all_atom/force_field_OPLSAA/waterSPCE+methane/run.in.nvt diff --git a/tools/moltemplate/examples/force_field_OPLSAA/waterSPC_using_OPLSAA/README.TXT b/tools/moltemplate/examples/all_atom/force_field_OPLSAA/waterSPC_using_OPLSAA/README.txt similarity index 88% rename from tools/moltemplate/examples/force_field_OPLSAA/waterSPC_using_OPLSAA/README.TXT rename to tools/moltemplate/examples/all_atom/force_field_OPLSAA/waterSPC_using_OPLSAA/README.txt index 292d9d0ec04dfcb58ff83c75aeee24e3848f41af..8c00fe07fba259731a1c6ddf5cfa73277f8c0596 100644 --- a/tools/moltemplate/examples/force_field_OPLSAA/waterSPC_using_OPLSAA/README.TXT +++ b/tools/moltemplate/examples/all_atom/force_field_OPLSAA/waterSPC_using_OPLSAA/README.txt @@ -1,4 +1,4 @@ -The purpose of this example is to test the density of water +The purpose of this example is to test the density of water constructed using the OPLSAA force-field. (I think this is SPC water, not SPCE) I just wanted some kind of sanity check to make sure we are converting @@ -8,7 +8,7 @@ The "TEST_density_estimate.txt" contains the results of that test. -------- Instructions: --------- -More detailed instructions on how to build LAMMPS input files and +More detailed instructions on how to build LAMMPS input files and run a short simulation are provided in other README files. step 1) diff --git a/tools/moltemplate/examples/all_atom/force_field_OPLSAA/waterSPC_using_OPLSAA/README_remove_irrelevant_info.sh b/tools/moltemplate/examples/all_atom/force_field_OPLSAA/waterSPC_using_OPLSAA/README_remove_irrelevant_info.sh new file mode 100755 index 0000000000000000000000000000000000000000..049a1eac486dc5f903beb4be8ad851b129913424 --- /dev/null +++ b/tools/moltemplate/examples/all_atom/force_field_OPLSAA/waterSPC_using_OPLSAA/README_remove_irrelevant_info.sh @@ -0,0 +1,9 @@ + +# Note: By default, the system.data and system.in.settings files contain +# extra information for atoms defined in OPLSAA which you are not using +# in this simulation. +# This is harmless, but if you to delete this information from your +# system.in.settings and system.in.data files, run this script: + +cleanup_moltemplate.sh + diff --git a/tools/moltemplate/examples/force_field_OPLSAA/waterSPC_using_OPLSAA/README_run.sh b/tools/moltemplate/examples/all_atom/force_field_OPLSAA/waterSPC_using_OPLSAA/README_run.sh similarity index 92% rename from tools/moltemplate/examples/force_field_OPLSAA/waterSPC_using_OPLSAA/README_run.sh rename to tools/moltemplate/examples/all_atom/force_field_OPLSAA/waterSPC_using_OPLSAA/README_run.sh index 71a18b0ab2c79908e0914694c0934e73928ce489..1c46d9d416c7a3be846d12ff1fbbaedb3f685d5c 100755 --- a/tools/moltemplate/examples/force_field_OPLSAA/waterSPC_using_OPLSAA/README_run.sh +++ b/tools/moltemplate/examples/all_atom/force_field_OPLSAA/waterSPC_using_OPLSAA/README_run.sh @@ -1,5 +1,5 @@ # --- Running LAMMPS --- -# The 2 files "run.in.npt", and "run.in.nvt" are LAMMPS +# The 2 files "run.in.npt", and "run.in.nvt" are LAMMPS # input scripts which link to the input scripts and data files # you hopefully have created earlier with moltemplate.sh: # system.in.init, system.in.settings, system.data diff --git a/tools/moltemplate/examples/force_field_OPLSAA/hexadecane/README_setup.sh b/tools/moltemplate/examples/all_atom/force_field_OPLSAA/waterSPC_using_OPLSAA/README_setup.sh similarity index 66% rename from tools/moltemplate/examples/force_field_OPLSAA/hexadecane/README_setup.sh rename to tools/moltemplate/examples/all_atom/force_field_OPLSAA/waterSPC_using_OPLSAA/README_setup.sh index 33b505dbb95b78d6632a0045d4b4e667072b9de9..ed4ac6f041e64497a155012058324a5314ab1c7a 100755 --- a/tools/moltemplate/examples/force_field_OPLSAA/hexadecane/README_setup.sh +++ b/tools/moltemplate/examples/all_atom/force_field_OPLSAA/waterSPC_using_OPLSAA/README_setup.sh @@ -6,12 +6,17 @@ cd moltemplate_files moltemplate.sh system.lt - # This will generate various files with names ending in *.in* and *.data. + # Optional: + # To check for missing angle,dihedral params run moltemplate this way instead: + # moltemplate.sh -checkff system.lt + + + # This will generate various files with names ending in *.in* and *.data. # Move them to the directory where you plan to run LAMMPS (in this case "../") mv -f system.data system.in* ../ # Optional: - # The "./output_ttree/" directory is full of temporary files generated by + # The "./output_ttree/" directory is full of temporary files generated by # moltemplate. They can be useful for debugging, but are usually thrown away. rm -rf output_ttree/ @@ -20,10 +25,10 @@ cd ../ - # Optional: # Note: The system.data and system.in.settings files contain extra information -# for atoms defined in OPLSAA which you are not using in this simulation. This -# is harmless, but if you to delete this information from your -# system.in.settings and system.in.data files, follow the instructions in -# this script: "optional_cleanup/README_remove_irrelevant_info.sh" +# for atoms defined in OPLSAA which you are not using in this simulation. +# This is harmless, but if you to delete this information from your +# system.in.settings and system.in.data files, run this script: +# +# cleanup_moltemplate.sh diff --git a/tools/moltemplate/examples/all_atom/force_field_OPLSAA/waterSPC_using_OPLSAA/README_visualize.txt b/tools/moltemplate/examples/all_atom/force_field_OPLSAA/waterSPC_using_OPLSAA/README_visualize.txt new file mode 100644 index 0000000000000000000000000000000000000000..a3e3ed620ec8b32fb6da484368dc3fc299bad6de --- /dev/null +++ b/tools/moltemplate/examples/all_atom/force_field_OPLSAA/waterSPC_using_OPLSAA/README_visualize.txt @@ -0,0 +1,87 @@ + + ------- To view a lammps trajectory in VMD -------- + + +1) Build a PSF file for use in viewing with VMD. + +This step works with VMD 1.9 and topotools 1.2. +(Older versions, like VMD 1.8.6, don't support this.) + + +a) Start VMD +b) Menu Extensions->Tk Console +c) Enter: + +(I assume that the the DATA file is called "system.data") + + topo readlammpsdata system.data full + animate write psf system.psf + +2) + +Later, to Load a trajectory in VMD: + + Start VMD + Select menu: File->New Molecule + -Browse to select the PSF file you created above, and load it. + (Don't close the window yet.) + -Browse to select the trajectory file. + If necessary, for "file type" select: "LAMMPS Trajectory" + Load it. + + ---- A note on trajectory format: ----- +If the trajectory is a DUMP file, then make sure the it contains the +information you need for pbctools (see below. I've been using this +command in my LAMMPS scripts to create the trajectories: + + dump 1 all custom 5000 DUMP_FILE.lammpstrj id mol type x y z ix iy iz + +It's a good idea to use an atom_style which supports molecule-ID numbers +so that you can assign a molecule-ID number to each atom. (I think this +is needed to wrap atom coordinates without breaking molecules in half.) + +Of course, you don't have to save your trajectories in DUMP format, +(other formats like DCD work fine) I just mention dump files +because these are the files I'm familiar with. + +3) ----- Wrap the coordinates to the unit cell + (without cutting the molecules in half) + +a) Start VMD +b) Load the trajectory in VMD (see above) +c) Menu Extensions->Tk Console +d) Try entering these commands: + + pbc wrap -compound res -all + pbc box + + ----- Optional ---- + Sometimes the solvent or membrane obscures the view of the solute. + It can help to shift the location of the periodic boundary box + To shift the box in the y direction (for example) do this: + + pbc wrap -compound res -all -shiftcenterrel {0.0 0.15 0.0} + pbc box -shiftcenterrel {0.0 0.15 0.0} + + Distances are measured in units of box-length fractions, not Angstroms. + + Alternately if you have a solute whose atoms are all of type 1, + then you can also try this to center the box around it: + + pbc wrap -sel type=1 -all -centersel type=2 -center com + +4) + You should check if your periodic boundary conditions are too small. + To do that: + select Graphics->Representations menu option + click on the "Periodic" tab, and + click on the "+x", "-x", "+y", "-y", "+z", "-z" checkboxes. + +5) Optional: If you like, change the atom types in the PSF file so + that VMD recognizes the atom types, use something like: + +sed -e 's/ 1 1 / C C /g' < system.psf > temp1.psf +sed -e 's/ 2 2 / H H /g' < temp1.psf > temp2.psf +sed -e 's/ 3 3 / P P /g' < temp2.psf > system.psf + +(If you do this, it might effect step 2 above.) diff --git a/tools/moltemplate/examples/force_field_OPLSAA/waterSPC_using_OPLSAA/TEST_density_estimate.txt b/tools/moltemplate/examples/all_atom/force_field_OPLSAA/waterSPC_using_OPLSAA/TEST_density_estimate.txt similarity index 100% rename from tools/moltemplate/examples/force_field_OPLSAA/waterSPC_using_OPLSAA/TEST_density_estimate.txt rename to tools/moltemplate/examples/all_atom/force_field_OPLSAA/waterSPC_using_OPLSAA/TEST_density_estimate.txt diff --git a/tools/moltemplate/examples/force_field_OPLSAA/waterSPC_using_OPLSAA/moltemplate_files/spc.lt b/tools/moltemplate/examples/all_atom/force_field_OPLSAA/waterSPC_using_OPLSAA/moltemplate_files/spc.lt similarity index 100% rename from tools/moltemplate/examples/force_field_OPLSAA/waterSPC_using_OPLSAA/moltemplate_files/spc.lt rename to tools/moltemplate/examples/all_atom/force_field_OPLSAA/waterSPC_using_OPLSAA/moltemplate_files/spc.lt diff --git a/tools/moltemplate/examples/force_field_OPLSAA/waterSPC_using_OPLSAA/moltemplate_files/system.lt b/tools/moltemplate/examples/all_atom/force_field_OPLSAA/waterSPC_using_OPLSAA/moltemplate_files/system.lt similarity index 100% rename from tools/moltemplate/examples/force_field_OPLSAA/waterSPC_using_OPLSAA/moltemplate_files/system.lt rename to tools/moltemplate/examples/all_atom/force_field_OPLSAA/waterSPC_using_OPLSAA/moltemplate_files/system.lt diff --git a/tools/moltemplate/examples/force_field_OPLSAA/waterSPC_using_OPLSAA/run.in.npt b/tools/moltemplate/examples/all_atom/force_field_OPLSAA/waterSPC_using_OPLSAA/run.in.npt similarity index 100% rename from tools/moltemplate/examples/force_field_OPLSAA/waterSPC_using_OPLSAA/run.in.npt rename to tools/moltemplate/examples/all_atom/force_field_OPLSAA/waterSPC_using_OPLSAA/run.in.npt diff --git a/tools/moltemplate/examples/force_field_OPLSAA/waterSPC_using_OPLSAA/run.in.nvt b/tools/moltemplate/examples/all_atom/force_field_OPLSAA/waterSPC_using_OPLSAA/run.in.nvt similarity index 100% rename from tools/moltemplate/examples/force_field_OPLSAA/waterSPC_using_OPLSAA/run.in.nvt rename to tools/moltemplate/examples/all_atom/force_field_OPLSAA/waterSPC_using_OPLSAA/run.in.nvt diff --git a/tools/moltemplate/examples/force_field_OPLSUA_united_atom/propane/README.TXT b/tools/moltemplate/examples/all_atom/force_field_OPLSUA_united_atom/propane/README.txt similarity index 99% rename from tools/moltemplate/examples/force_field_OPLSUA_united_atom/propane/README.TXT rename to tools/moltemplate/examples/all_atom/force_field_OPLSUA_united_atom/propane/README.txt index 036c6e756940745ad12fc1a741602e88d8bd6530..f3ccf3b0844b74e1ba14646bd75a0dd90f5046bc 100644 --- a/tools/moltemplate/examples/force_field_OPLSUA_united_atom/propane/README.TXT +++ b/tools/moltemplate/examples/all_atom/force_field_OPLSUA_united_atom/propane/README.txt @@ -11,7 +11,7 @@ IMPORTANT: This is NOT an all-atom simulation. -------- Instructions: --------- -More detailed instructions on how to build LAMMPS input files and +More detailed instructions on how to build LAMMPS input files and run a short simulation are provided in other README files. step 1) diff --git a/tools/moltemplate/examples/all_atom/force_field_OPLSUA_united_atom/propane/README_remove_irrelevant_info.sh b/tools/moltemplate/examples/all_atom/force_field_OPLSUA_united_atom/propane/README_remove_irrelevant_info.sh new file mode 100755 index 0000000000000000000000000000000000000000..5957289da9592f8a25e6796ea16ceb5e7abde043 --- /dev/null +++ b/tools/moltemplate/examples/all_atom/force_field_OPLSUA_united_atom/propane/README_remove_irrelevant_info.sh @@ -0,0 +1,8 @@ + +# Note: By default, the system.data and system.in.settings files contain +# extra information for atoms defined in OPLSAA which you are not using +# in this simulation. +# This is harmless, but if you to delete this information from your +# system.in.settings and system.in.data files, run this script: + +cleanup_moltemplate.sh diff --git a/tools/moltemplate/examples/all_atom/force_field_OPLSUA_united_atom/propane/README_run.sh b/tools/moltemplate/examples/all_atom/force_field_OPLSUA_united_atom/propane/README_run.sh new file mode 100755 index 0000000000000000000000000000000000000000..c27520076e4d22f4bedb385b0a6d21a747bbff53 --- /dev/null +++ b/tools/moltemplate/examples/all_atom/force_field_OPLSUA_united_atom/propane/README_run.sh @@ -0,0 +1,34 @@ +# --- Running LAMMPS --- +# +# The 2 files "run.in.npt", and "run.in.nvt" are LAMMPS +# input scripts which link to the input scripts and data files +# you hopefully have created earlier with moltemplate.sh: +# system.in.init, system.in.settings, system.data +# If not, carry out the instructions in "README_setup.sh". +# +# -- Instructions: -- +# If "lmp_mpi" is the name of the command you use to invoke lammps, +# then you would run lammps on these files this way: + + +lmp_mpi -i run.in.npt # minimization and simulation at constant pressure +lmp_mpi -i run.in.nvt # minimization and simulation at constant volume + +#(Note: The constant volume simulation lacks pressure equilibration. These are +# completely separate simulations. The results of the constant pressure +# simulation might be ignored when beginning the simulation at constant +# volume. (This is because restart files in LAMMPS don't always work, +# and I was spending a lot of time trying to convince people it was a +# LAMMPS bug, instead of a moltemplate bug, so I disabled restart files.) +# Read the "run.in.nvt" file to find out how to use the "read_restart" +# command to load the results of the pressure-equilibration simulation, +# before beginning a constant-volume run. + + + + + +# If you have compiled the MPI version of lammps, you can run lammps in parallel +#mpirun -np 4 lmp_mpi -i run.in.npt +#mpirun -np 4 lmp_mpi -i run.in.nvt +# (assuming you have 4 processors available) diff --git a/tools/moltemplate/examples/force_field_OPLSUA_united_atom/propane/README_setup.sh b/tools/moltemplate/examples/all_atom/force_field_OPLSUA_united_atom/propane/README_setup.sh similarity index 66% rename from tools/moltemplate/examples/force_field_OPLSUA_united_atom/propane/README_setup.sh rename to tools/moltemplate/examples/all_atom/force_field_OPLSUA_united_atom/propane/README_setup.sh index 412634dfe2fef31006ba3830f1da44e997889be3..38a79dbf19ce84926285ff96a4f369ecb3edfe2d 100755 --- a/tools/moltemplate/examples/force_field_OPLSUA_united_atom/propane/README_setup.sh +++ b/tools/moltemplate/examples/all_atom/force_field_OPLSUA_united_atom/propane/README_setup.sh @@ -11,23 +11,37 @@ cd moltemplate_files # (This does not happen very often.) # Since you don't need long-range coulombics in this example, LAMMPS will # print out an error message and tell you to use a more efficient pair_style. - # To get around this AFTER RUNNING MOLTEMPLATE, run these commands in the + # To get around this AFTER RUNNING MOLTEMPLATE, run these commands in the # shell: echo "pair_style hybrid lj/cut 10.0" >> system.in.init - sed -i 's/lj\/cut\/coul\/long/lj\/cut/g' system.in.settings - sed -i 's/kspace_style/#kspace_style/g' system.in.init + sed 's/lj\/cut\/coul\/long/lj\/cut/g' system.in.settings > system.in.settings_ + sed 's/kspace_style/#kspace_style/g' system.in.init > system.in.init_ + mv system.in.settings_ system.in.settings + mv system.in.init_ system.in.init # This will override the pair_style and pair_coeff commands in the # system.in.init and system.in.settings files (created by moltemplate): - # Moltemplate generates various files with names ending in *.in* and *.data. + # Moltemplate generates various files with names ending in *.in* and *.data. # Move them to the directory where you plan to run LAMMPS (in this case "../") mv -f system.data system.in* ../ # Optional: - # The "./output_ttree/" directory is full of temporary files generated by + # The "./output_ttree/" directory is full of temporary files generated by # moltemplate. They can be useful for debugging, but are usually thrown away. rm -rf output_ttree/ cd ../ + + + + + +# Optional: +# Note: The system.data and system.in.settings files contain extra information +# for atoms defined in OPLSAA which you are not using in this simulation. +# This is harmless, but if you to delete this information from your +# system.in.settings and system.in.data files, run this script: +# +# cleanup_moltemplate.sh diff --git a/tools/moltemplate/examples/all_atom/force_field_OPLSUA_united_atom/propane/README_visualize.txt b/tools/moltemplate/examples/all_atom/force_field_OPLSUA_united_atom/propane/README_visualize.txt new file mode 100644 index 0000000000000000000000000000000000000000..a3e3ed620ec8b32fb6da484368dc3fc299bad6de --- /dev/null +++ b/tools/moltemplate/examples/all_atom/force_field_OPLSUA_united_atom/propane/README_visualize.txt @@ -0,0 +1,87 @@ + + ------- To view a lammps trajectory in VMD -------- + + +1) Build a PSF file for use in viewing with VMD. + +This step works with VMD 1.9 and topotools 1.2. +(Older versions, like VMD 1.8.6, don't support this.) + + +a) Start VMD +b) Menu Extensions->Tk Console +c) Enter: + +(I assume that the the DATA file is called "system.data") + + topo readlammpsdata system.data full + animate write psf system.psf + +2) + +Later, to Load a trajectory in VMD: + + Start VMD + Select menu: File->New Molecule + -Browse to select the PSF file you created above, and load it. + (Don't close the window yet.) + -Browse to select the trajectory file. + If necessary, for "file type" select: "LAMMPS Trajectory" + Load it. + + ---- A note on trajectory format: ----- +If the trajectory is a DUMP file, then make sure the it contains the +information you need for pbctools (see below. I've been using this +command in my LAMMPS scripts to create the trajectories: + + dump 1 all custom 5000 DUMP_FILE.lammpstrj id mol type x y z ix iy iz + +It's a good idea to use an atom_style which supports molecule-ID numbers +so that you can assign a molecule-ID number to each atom. (I think this +is needed to wrap atom coordinates without breaking molecules in half.) + +Of course, you don't have to save your trajectories in DUMP format, +(other formats like DCD work fine) I just mention dump files +because these are the files I'm familiar with. + +3) ----- Wrap the coordinates to the unit cell + (without cutting the molecules in half) + +a) Start VMD +b) Load the trajectory in VMD (see above) +c) Menu Extensions->Tk Console +d) Try entering these commands: + + pbc wrap -compound res -all + pbc box + + ----- Optional ---- + Sometimes the solvent or membrane obscures the view of the solute. + It can help to shift the location of the periodic boundary box + To shift the box in the y direction (for example) do this: + + pbc wrap -compound res -all -shiftcenterrel {0.0 0.15 0.0} + pbc box -shiftcenterrel {0.0 0.15 0.0} + + Distances are measured in units of box-length fractions, not Angstroms. + + Alternately if you have a solute whose atoms are all of type 1, + then you can also try this to center the box around it: + + pbc wrap -sel type=1 -all -centersel type=2 -center com + +4) + You should check if your periodic boundary conditions are too small. + To do that: + select Graphics->Representations menu option + click on the "Periodic" tab, and + click on the "+x", "-x", "+y", "-y", "+z", "-z" checkboxes. + +5) Optional: If you like, change the atom types in the PSF file so + that VMD recognizes the atom types, use something like: + +sed -e 's/ 1 1 / C C /g' < system.psf > temp1.psf +sed -e 's/ 2 2 / H H /g' < temp1.psf > temp2.psf +sed -e 's/ 3 3 / P P /g' < temp2.psf > system.psf + +(If you do this, it might effect step 2 above.) diff --git a/tools/moltemplate/examples/force_field_OPLSUA_united_atom/propane/moltemplate_files/propane.lt b/tools/moltemplate/examples/all_atom/force_field_OPLSUA_united_atom/propane/moltemplate_files/propane.lt similarity index 85% rename from tools/moltemplate/examples/force_field_OPLSUA_united_atom/propane/moltemplate_files/propane.lt rename to tools/moltemplate/examples/all_atom/force_field_OPLSUA_united_atom/propane/moltemplate_files/propane.lt index d82d8cfd9b5168312520eb74eb942ec32b41b425..d147a6d4c48f0ba0069cbe885e579dd233f1c7b4 100644 --- a/tools/moltemplate/examples/force_field_OPLSUA_united_atom/propane/moltemplate_files/propane.lt +++ b/tools/moltemplate/examples/all_atom/force_field_OPLSUA_united_atom/propane/moltemplate_files/propane.lt @@ -15,8 +15,8 @@ Propane inherits OPLSAA { $bond:CC2 $atom:CH2 $atom:CH3b } - # These atom types are defined in the "oplsaa.lt" file - # (usually located in the "src/moltemplate_force_fields/" subdirectory) + # These atom types are defined in the "oplsaa.lt" file (usually located + # in the "force_fields" subdirectory of the moltemplate distribution). # @atom:10 "N-Alkane CH3- (UA)" # @atom:13 "Alkanes -CH2- (UA)" # diff --git a/tools/moltemplate/examples/force_field_OPLSUA_united_atom/propane/moltemplate_files/system.lt b/tools/moltemplate/examples/all_atom/force_field_OPLSUA_united_atom/propane/moltemplate_files/system.lt similarity index 100% rename from tools/moltemplate/examples/force_field_OPLSUA_united_atom/propane/moltemplate_files/system.lt rename to tools/moltemplate/examples/all_atom/force_field_OPLSUA_united_atom/propane/moltemplate_files/system.lt diff --git a/tools/moltemplate/examples/force_field_OPLSUA_united_atom/propane/run.in.npt b/tools/moltemplate/examples/all_atom/force_field_OPLSUA_united_atom/propane/run.in.npt similarity index 100% rename from tools/moltemplate/examples/force_field_OPLSUA_united_atom/propane/run.in.npt rename to tools/moltemplate/examples/all_atom/force_field_OPLSUA_united_atom/propane/run.in.npt diff --git a/tools/moltemplate/examples/force_field_OPLSUA_united_atom/propane/run.in.nvt b/tools/moltemplate/examples/all_atom/force_field_OPLSUA_united_atom/propane/run.in.nvt similarity index 100% rename from tools/moltemplate/examples/force_field_OPLSUA_united_atom/propane/run.in.nvt rename to tools/moltemplate/examples/all_atom/force_field_OPLSUA_united_atom/propane/run.in.nvt diff --git a/tools/moltemplate/examples/force_field_explicit_parameters/aluminum_crystal_strain/README.TXT b/tools/moltemplate/examples/all_atom/force_field_explicit_parameters/aluminum_crystal_strain/README.txt similarity index 97% rename from tools/moltemplate/examples/force_field_explicit_parameters/aluminum_crystal_strain/README.TXT rename to tools/moltemplate/examples/all_atom/force_field_explicit_parameters/aluminum_crystal_strain/README.txt index 115c1fab35542c7583e6267de9013e2ec7a4116a..1303acbcacdeeca19aa18e9dd86fc6aabf6cc6a1 100644 --- a/tools/moltemplate/examples/force_field_explicit_parameters/aluminum_crystal_strain/README.TXT +++ b/tools/moltemplate/examples/all_atom/force_field_explicit_parameters/aluminum_crystal_strain/README.txt @@ -12,7 +12,7 @@ For additional backgroumd information, please consult that web page. In this example, I use moltemplate to build a "DATA" file for this system. (I can't think of a compelling reason to do this for simple simulations like -this. But this approach might be useful if you want to artificially create +this. But this approach might be useful if you want to artificially create unusual structures out of aluminum crystals, or mix them with other molecules. I created this example in response to a user request.) @@ -42,7 +42,7 @@ dump.comp_500.cfg dump.comp_20000.cfg Al_comp_100.def1.txt -The dump.comp_*.cfg files can be visualized using +The dump.comp_*.cfg files can be visualized using AtomEye if you have AtomEye and ImageJ installed. The procedure for doing this is explained in the original tutorial at: http://icme.hpc.msstate.edu/mediawiki/index.php/Uniaxial_Compression diff --git a/tools/moltemplate/examples/force_field_explicit_parameters/aluminum_crystal_strain/README_setup.sh b/tools/moltemplate/examples/all_atom/force_field_explicit_parameters/aluminum_crystal_strain/README_setup.sh similarity index 95% rename from tools/moltemplate/examples/force_field_explicit_parameters/aluminum_crystal_strain/README_setup.sh rename to tools/moltemplate/examples/all_atom/force_field_explicit_parameters/aluminum_crystal_strain/README_setup.sh index 22eb8c4357ee54f07c7ca306ef385a92d7f4ff07..74e00f2510305b63ca9dfb37318c821499522f2b 100755 --- a/tools/moltemplate/examples/force_field_explicit_parameters/aluminum_crystal_strain/README_setup.sh +++ b/tools/moltemplate/examples/all_atom/force_field_explicit_parameters/aluminum_crystal_strain/README_setup.sh @@ -9,8 +9,8 @@ cd moltemplate_files moltemplate.sh -atomstyle full system.lt - # This will generate various files with names ending in *.in* and *.data. - # These files are the input files directly read by LAMMPS. Move them to + # This will generate various files with names ending in *.in* and *.data. + # These files are the input files directly read by LAMMPS. Move them to # the parent directory (or wherever you plan to run the simulation). mv -f system.in* system.data ../ @@ -22,7 +22,7 @@ cd moltemplate_files # Optional: - # The "./output_ttree/" directory is full of temporary files generated by + # The "./output_ttree/" directory is full of temporary files generated by # moltemplate. They can be useful for debugging, but are usually thrown away. rm -rf output_ttree/ diff --git a/tools/moltemplate/examples/all_atom/force_field_explicit_parameters/aluminum_crystal_strain/README_visualize.txt b/tools/moltemplate/examples/all_atom/force_field_explicit_parameters/aluminum_crystal_strain/README_visualize.txt new file mode 100644 index 0000000000000000000000000000000000000000..a3e3ed620ec8b32fb6da484368dc3fc299bad6de --- /dev/null +++ b/tools/moltemplate/examples/all_atom/force_field_explicit_parameters/aluminum_crystal_strain/README_visualize.txt @@ -0,0 +1,87 @@ + + ------- To view a lammps trajectory in VMD -------- + + +1) Build a PSF file for use in viewing with VMD. + +This step works with VMD 1.9 and topotools 1.2. +(Older versions, like VMD 1.8.6, don't support this.) + + +a) Start VMD +b) Menu Extensions->Tk Console +c) Enter: + +(I assume that the the DATA file is called "system.data") + + topo readlammpsdata system.data full + animate write psf system.psf + +2) + +Later, to Load a trajectory in VMD: + + Start VMD + Select menu: File->New Molecule + -Browse to select the PSF file you created above, and load it. + (Don't close the window yet.) + -Browse to select the trajectory file. + If necessary, for "file type" select: "LAMMPS Trajectory" + Load it. + + ---- A note on trajectory format: ----- +If the trajectory is a DUMP file, then make sure the it contains the +information you need for pbctools (see below. I've been using this +command in my LAMMPS scripts to create the trajectories: + + dump 1 all custom 5000 DUMP_FILE.lammpstrj id mol type x y z ix iy iz + +It's a good idea to use an atom_style which supports molecule-ID numbers +so that you can assign a molecule-ID number to each atom. (I think this +is needed to wrap atom coordinates without breaking molecules in half.) + +Of course, you don't have to save your trajectories in DUMP format, +(other formats like DCD work fine) I just mention dump files +because these are the files I'm familiar with. + +3) ----- Wrap the coordinates to the unit cell + (without cutting the molecules in half) + +a) Start VMD +b) Load the trajectory in VMD (see above) +c) Menu Extensions->Tk Console +d) Try entering these commands: + + pbc wrap -compound res -all + pbc box + + ----- Optional ---- + Sometimes the solvent or membrane obscures the view of the solute. + It can help to shift the location of the periodic boundary box + To shift the box in the y direction (for example) do this: + + pbc wrap -compound res -all -shiftcenterrel {0.0 0.15 0.0} + pbc box -shiftcenterrel {0.0 0.15 0.0} + + Distances are measured in units of box-length fractions, not Angstroms. + + Alternately if you have a solute whose atoms are all of type 1, + then you can also try this to center the box around it: + + pbc wrap -sel type=1 -all -centersel type=2 -center com + +4) + You should check if your periodic boundary conditions are too small. + To do that: + select Graphics->Representations menu option + click on the "Periodic" tab, and + click on the "+x", "-x", "+y", "-y", "+z", "-z" checkboxes. + +5) Optional: If you like, change the atom types in the PSF file so + that VMD recognizes the atom types, use something like: + +sed -e 's/ 1 1 / C C /g' < system.psf > temp1.psf +sed -e 's/ 2 2 / H H /g' < temp1.psf > temp2.psf +sed -e 's/ 3 3 / P P /g' < temp2.psf > system.psf + +(If you do this, it might effect step 2 above.) diff --git a/tools/moltemplate/examples/force_field_explicit_parameters/aluminum_crystal_strain/images/AlCell_LR.jpg b/tools/moltemplate/examples/all_atom/force_field_explicit_parameters/aluminum_crystal_strain/images/AlCell_LR.jpg similarity index 100% rename from tools/moltemplate/examples/force_field_explicit_parameters/aluminum_crystal_strain/images/AlCell_LR.jpg rename to tools/moltemplate/examples/all_atom/force_field_explicit_parameters/aluminum_crystal_strain/images/AlCell_LR.jpg diff --git a/tools/moltemplate/examples/force_field_explicit_parameters/aluminum_crystal_strain/images/AlCrystal10x10x10_t=0steps_LR.jpg b/tools/moltemplate/examples/all_atom/force_field_explicit_parameters/aluminum_crystal_strain/images/AlCrystal10x10x10_t=0steps_LR.jpg similarity index 100% rename from tools/moltemplate/examples/force_field_explicit_parameters/aluminum_crystal_strain/images/AlCrystal10x10x10_t=0steps_LR.jpg rename to tools/moltemplate/examples/all_atom/force_field_explicit_parameters/aluminum_crystal_strain/images/AlCrystal10x10x10_t=0steps_LR.jpg diff --git a/tools/moltemplate/examples/force_field_explicit_parameters/aluminum_crystal_strain/images/AlCrystal10x10x10_t=20000steps_LR.jpg b/tools/moltemplate/examples/all_atom/force_field_explicit_parameters/aluminum_crystal_strain/images/AlCrystal10x10x10_t=20000steps_LR.jpg similarity index 100% rename from tools/moltemplate/examples/force_field_explicit_parameters/aluminum_crystal_strain/images/AlCrystal10x10x10_t=20000steps_LR.jpg rename to tools/moltemplate/examples/all_atom/force_field_explicit_parameters/aluminum_crystal_strain/images/AlCrystal10x10x10_t=20000steps_LR.jpg diff --git a/tools/moltemplate/examples/force_field_explicit_parameters/aluminum_crystal_strain/moltemplate_files/README.sh b/tools/moltemplate/examples/all_atom/force_field_explicit_parameters/aluminum_crystal_strain/moltemplate_files/README.sh similarity index 98% rename from tools/moltemplate/examples/force_field_explicit_parameters/aluminum_crystal_strain/moltemplate_files/README.sh rename to tools/moltemplate/examples/all_atom/force_field_explicit_parameters/aluminum_crystal_strain/moltemplate_files/README.sh index 64f350f641de039ce4846a03028b3d089cde64b4..393ceb8d86b62b253cd65f6ab6f619a71c9465d7 100755 --- a/tools/moltemplate/examples/force_field_explicit_parameters/aluminum_crystal_strain/moltemplate_files/README.sh +++ b/tools/moltemplate/examples/all_atom/force_field_explicit_parameters/aluminum_crystal_strain/moltemplate_files/README.sh @@ -6,7 +6,7 @@ # # In this example, I use moltemplate to build a "DATA" file for this system. # (I can't think of a compelling reason to do this for simple simulations like -# this. But this approach might be useful if you want to artificially create +# this. But this approach might be useful if you want to artificially create # unusual structures out of aluminum crystals, or mix them with other molecules. # I created this example in response to a user request.) # diff --git a/tools/moltemplate/examples/force_field_explicit_parameters/aluminum_crystal_strain/moltemplate_files/al_cell.lt b/tools/moltemplate/examples/all_atom/force_field_explicit_parameters/aluminum_crystal_strain/moltemplate_files/al_cell.lt similarity index 100% rename from tools/moltemplate/examples/force_field_explicit_parameters/aluminum_crystal_strain/moltemplate_files/al_cell.lt rename to tools/moltemplate/examples/all_atom/force_field_explicit_parameters/aluminum_crystal_strain/moltemplate_files/al_cell.lt diff --git a/tools/moltemplate/examples/force_field_explicit_parameters/aluminum_crystal_strain/moltemplate_files/system.lt b/tools/moltemplate/examples/all_atom/force_field_explicit_parameters/aluminum_crystal_strain/moltemplate_files/system.lt similarity index 100% rename from tools/moltemplate/examples/force_field_explicit_parameters/aluminum_crystal_strain/moltemplate_files/system.lt rename to tools/moltemplate/examples/all_atom/force_field_explicit_parameters/aluminum_crystal_strain/moltemplate_files/system.lt diff --git a/tools/moltemplate/examples/force_field_explicit_parameters/aluminum_crystal_strain/run.in b/tools/moltemplate/examples/all_atom/force_field_explicit_parameters/aluminum_crystal_strain/run.in similarity index 100% rename from tools/moltemplate/examples/force_field_explicit_parameters/aluminum_crystal_strain/run.in rename to tools/moltemplate/examples/all_atom/force_field_explicit_parameters/aluminum_crystal_strain/run.in diff --git a/tools/moltemplate/examples/force_field_explicit_parameters/ice_crystal/README_run.sh b/tools/moltemplate/examples/all_atom/force_field_explicit_parameters/ice_crystal/README_run.sh similarity index 95% rename from tools/moltemplate/examples/force_field_explicit_parameters/ice_crystal/README_run.sh rename to tools/moltemplate/examples/all_atom/force_field_explicit_parameters/ice_crystal/README_run.sh index 4a1e13064289cfbbefcb9fdcb4083380f3546114..c041ccb9f93287c1c85bd464ffc2b765c285e934 100755 --- a/tools/moltemplate/examples/force_field_explicit_parameters/ice_crystal/README_run.sh +++ b/tools/moltemplate/examples/all_atom/force_field_explicit_parameters/ice_crystal/README_run.sh @@ -1,6 +1,6 @@ # --- Running LAMMPS --- # -- Prerequisites: -- -# The 2 files "run.in.npt", and "run.in.nvt" are LAMMPS +# The 2 files "run.in.npt", and "run.in.nvt" are LAMMPS # input scripts which link to the input scripts and data files # you hopefully have created earlier with moltemplate.sh: # system.in.init, system.in.settings, system.data diff --git a/tools/moltemplate/examples/force_field_explicit_parameters/ice_crystal/README_setup.sh b/tools/moltemplate/examples/all_atom/force_field_explicit_parameters/ice_crystal/README_setup.sh similarity index 94% rename from tools/moltemplate/examples/force_field_explicit_parameters/ice_crystal/README_setup.sh rename to tools/moltemplate/examples/all_atom/force_field_explicit_parameters/ice_crystal/README_setup.sh index 3a0821269225bb7d10f1c9a08a5097b6da9a9f1b..68cad16a79619679a141292bbfe7852d6417d332 100755 --- a/tools/moltemplate/examples/force_field_explicit_parameters/ice_crystal/README_setup.sh +++ b/tools/moltemplate/examples/all_atom/force_field_explicit_parameters/ice_crystal/README_setup.sh @@ -9,14 +9,14 @@ cd moltemplate_files moltemplate.sh -atomstyle full system.lt - # This will generate various files with names ending in *.in* and *.data. - # These files are the input files directly read by LAMMPS. Move them to + # This will generate various files with names ending in *.in* and *.data. + # These files are the input files directly read by LAMMPS. Move them to # the parent directory (or wherever you plan to run the simulation). mv -f system.in* system.data ../ # Optional: - # The "./output_ttree/" directory is full of temporary files generated by + # The "./output_ttree/" directory is full of temporary files generated by # moltemplate. They can be useful for debugging, but are usually thrown away. rm -rf output_ttree/ diff --git a/tools/moltemplate/examples/force_field_explicit_parameters/ice_crystal/README_visualize.txt b/tools/moltemplate/examples/all_atom/force_field_explicit_parameters/ice_crystal/README_visualize.txt similarity index 92% rename from tools/moltemplate/examples/force_field_explicit_parameters/ice_crystal/README_visualize.txt rename to tools/moltemplate/examples/all_atom/force_field_explicit_parameters/ice_crystal/README_visualize.txt index 73358e55dcb8b52b4e3532b3cdf5187c0beb77d3..88d0e22c41a90011740e83d9f41822b8b30b0d43 100644 --- a/tools/moltemplate/examples/force_field_explicit_parameters/ice_crystal/README_visualize.txt +++ b/tools/moltemplate/examples/all_atom/force_field_explicit_parameters/ice_crystal/README_visualize.txt @@ -4,7 +4,7 @@ 1) Build a PSF file for use in viewing with VMD. -This step works with VMD 1.9 and topotools 1.2. +This step works with VMD 1.9 and topotools 1.2. (Older versions, like VMD 1.8.6, don't support this.) @@ -17,7 +17,7 @@ c) Enter: topo readlammpsdata system.data full animate write psf system.psf -2) +2) Later, to Load a trajectory in VMD: @@ -31,17 +31,17 @@ Later, to Load a trajectory in VMD: ---- A note on trajectory format: ----- If the trajectory is a DUMP file, then make sure the it contains the -information you need for pbctools (see below. I've been using this +information you need for pbctools (see below. I've been using this command in my LAMMPS scripts to create the trajectories: dump 1 all custom 500 DUMP_FILE.lammpstrj id mol type x y z ix iy iz -It's a good idea to use an atom_style which supports molecule-ID numbers -so that you can assign a molecule-ID number to each atom. (I think this +It's a good idea to use an atom_style which supports molecule-ID numbers +so that you can assign a molecule-ID number to each atom. (I think this is needed to wrap atom coordinates without breaking molecules in half.) -Of course, you don't have to save your trajectories in DUMP format, -(other formats like DCD work fine) I just mention dump files +Of course, you don't have to save your trajectories in DUMP format, +(other formats like DCD work fine) I just mention dump files because these are the files I'm familiar with. 3) ----- Wrap the coordinates to the unit cell @@ -57,7 +57,7 @@ d) Try entering these commands: ----- Optional ---- Sometimes the solvent or membrane obscures the view of the solute. - It can help to shift the location of the periodic boundary box + It can help to shift the location of the periodic boundary box To shift the box in the y direction (for example) do this: pbc wrap -compound res -all -shiftcenterrel {0.0 0.15 0.0} @@ -65,19 +65,19 @@ d) Try entering these commands: Distances are measured in units of box-length fractions, not Angstroms. - Alternately if you have a solute whose atoms are all of type 1, + Alternately if you have a solute whose atoms are all of type 1, then you can also try this to center the box around it: pbc wrap -sel type=1 -all -centersel type=2 -center com -4) +4) You should check if your periodic boundary conditions are too small. To do that: select Graphics->Representations menu option - click on the "Periodic" tab, and + click on the "Periodic" tab, and click on the "+x", "-x", "+y", "-y", "+z", "-z" checkboxes. -5) Optional: If you like, change the atom types in the PSF file so +5) Optional: If you like, change the atom types in the PSF file so that VMD recognizes the atom types, use something like: sed -e 's/ 1 1 / C C /g' < system.psf > temp1.psf diff --git a/tools/moltemplate/examples/force_field_explicit_parameters/ice_crystal/images/ice_rect8_crystal_3x2x2_LR.jpg b/tools/moltemplate/examples/all_atom/force_field_explicit_parameters/ice_crystal/images/ice_rect8_crystal_3x2x2_LR.jpg similarity index 100% rename from tools/moltemplate/examples/force_field_explicit_parameters/ice_crystal/images/ice_rect8_crystal_3x2x2_LR.jpg rename to tools/moltemplate/examples/all_atom/force_field_explicit_parameters/ice_crystal/images/ice_rect8_crystal_3x2x2_LR.jpg diff --git a/tools/moltemplate/examples/force_field_explicit_parameters/ice_crystal/images/ice_rect8_unitcell.png b/tools/moltemplate/examples/all_atom/force_field_explicit_parameters/ice_crystal/images/ice_rect8_unitcell.png similarity index 100% rename from tools/moltemplate/examples/force_field_explicit_parameters/ice_crystal/images/ice_rect8_unitcell.png rename to tools/moltemplate/examples/all_atom/force_field_explicit_parameters/ice_crystal/images/ice_rect8_unitcell.png diff --git a/tools/moltemplate/examples/force_field_explicit_parameters/ice_crystal/moltemplate_files/spce.lt b/tools/moltemplate/examples/all_atom/force_field_explicit_parameters/ice_crystal/moltemplate_files/spce.lt similarity index 100% rename from tools/moltemplate/examples/force_field_explicit_parameters/ice_crystal/moltemplate_files/spce.lt rename to tools/moltemplate/examples/all_atom/force_field_explicit_parameters/ice_crystal/moltemplate_files/spce.lt diff --git a/tools/moltemplate/examples/force_field_explicit_parameters/ice_crystal/moltemplate_files/spce_ice_rect16.lt b/tools/moltemplate/examples/all_atom/force_field_explicit_parameters/ice_crystal/moltemplate_files/spce_ice_rect16.lt similarity index 98% rename from tools/moltemplate/examples/force_field_explicit_parameters/ice_crystal/moltemplate_files/spce_ice_rect16.lt rename to tools/moltemplate/examples/all_atom/force_field_explicit_parameters/ice_crystal/moltemplate_files/spce_ice_rect16.lt index fb431cedeeeca69aafde9d60b20f8bc8f960d7d1..e67b228e9e873e6392c4e845b1d0ed570233cda6 100644 --- a/tools/moltemplate/examples/force_field_explicit_parameters/ice_crystal/moltemplate_files/spce_ice_rect16.lt +++ b/tools/moltemplate/examples/all_atom/force_field_explicit_parameters/ice_crystal/moltemplate_files/spce_ice_rect16.lt @@ -1,81 +1,81 @@ -# This ice (1h) unit cell is rectangular and contains 16 water molecules. -# (Coordinates and cell dimensions converted were from a PDB file.) -# The dimensions of the unit cell (in Angstroms) are: 9.043 7.832 7.361 - - -import "spce.lt" # <-- define the "SPCE" molecule - -SpceIceRect16 { - - # Create a 3-dimensional array of 16 water molecules - - wat = new SPCE[4][2][2] - - # Array indices will be correlated with position [xindex][yindex][zindex] - - # You can overwrite coordinates of atoms after they were created this way: - # (Order is not important) - # atom-ID molecule-ID atomType charge newX newY newZ - - write("Data Atoms") { - $atom:wat[0][0][0]/O $mol:wat[0][0][0] @atom:SPCE/O -0.8476 1.131 2.611 2.300 - $atom:wat[0][0][0]/H1 $mol:wat[0][0][0] @atom:SPCE/H 0.4238 0.322 2.144 1.970 - $atom:wat[0][0][0]/H2 $mol:wat[0][0][0] @atom:SPCE/H 0.4238 1.131 3.545 1.970 - $atom:wat[1][0][0]/O $mol:wat[1][0][0] @atom:SPCE/O -0.8476 3.391 1.305 1.381 - $atom:wat[1][0][0]/H1 $mol:wat[1][0][0] @atom:SPCE/H 0.4238 2.582 1.772 1.711 - $atom:wat[1][0][0]/H2 $mol:wat[1][0][0] @atom:SPCE/H 0.4238 3.391 0.371 1.711 - $atom:wat[2][0][0]/O $mol:wat[2][0][0] @atom:SPCE/O -0.8476 5.652 2.611 2.300 - $atom:wat[2][0][0]/H1 $mol:wat[2][0][0] @atom:SPCE/H 0.4238 4.843 2.144 1.970 - $atom:wat[2][0][0]/H2 $mol:wat[2][0][0] @atom:SPCE/H 0.4238 5.652 2.611 3.291 - $atom:wat[3][0][0]/O $mol:wat[3][0][0] @atom:SPCE/O -0.8476 7.912 1.305 1.381 - $atom:wat[3][0][0]/H1 $mol:wat[3][0][0] @atom:SPCE/H 0.4238 7.103 1.772 1.711 - $atom:wat[3][0][0]/H2 $mol:wat[3][0][0] @atom:SPCE/H 0.4238 7.912 1.305 0.390 - $atom:wat[0][1][0]/O $mol:wat[0][1][0] @atom:SPCE/O -0.8476 1.131 5.221 1.381 - $atom:wat[0][1][0]/H1 $mol:wat[0][1][0] @atom:SPCE/H 0.4238 1.940 5.688 1.711 - $atom:wat[0][1][0]/H2 $mol:wat[0][1][0] @atom:SPCE/H 0.4238 1.131 5.221 0.390 - $atom:wat[1][1][0]/O $mol:wat[1][1][0] @atom:SPCE/O -0.8476 3.391 6.526 2.300 - $atom:wat[1][1][0]/H1 $mol:wat[1][1][0] @atom:SPCE/H 0.4238 4.200 6.059 1.970 - $atom:wat[1][1][0]/H2 $mol:wat[1][1][0] @atom:SPCE/H 0.4238 3.391 6.526 3.291 - $atom:wat[2][1][0]/O $mol:wat[2][1][0] @atom:SPCE/O -0.8476 5.652 5.221 1.381 - $atom:wat[2][1][0]/H1 $mol:wat[2][1][0] @atom:SPCE/H 0.4238 6.461 5.688 1.711 - $atom:wat[2][1][0]/H2 $mol:wat[2][1][0] @atom:SPCE/H 0.4238 5.652 4.287 1.711 - $atom:wat[3][1][0]/O $mol:wat[3][1][0] @atom:SPCE/O -0.8476 7.912 6.526 2.300 - $atom:wat[3][1][0]/H1 $mol:wat[3][1][0] @atom:SPCE/H 0.4238 8.721 6.059 1.970 - $atom:wat[3][1][0]/H2 $mol:wat[3][1][0] @atom:SPCE/H 0.4238 7.912 7.460 1.970 - $atom:wat[0][0][1]/O $mol:wat[0][0][1] @atom:SPCE/O -0.8476 1.131 2.611 5.061 - $atom:wat[0][0][1]/H1 $mol:wat[0][0][1] @atom:SPCE/H 0.4238 1.940 2.144 5.391 - $atom:wat[0][0][1]/H2 $mol:wat[0][0][1] @atom:SPCE/H 0.4238 1.131 2.611 4.070 - $atom:wat[1][0][1]/O $mol:wat[1][0][1] @atom:SPCE/O -0.8476 3.391 1.305 5.981 - $atom:wat[1][0][1]/H1 $mol:wat[1][0][1] @atom:SPCE/H 0.4238 4.200 1.772 5.651 - $atom:wat[1][0][1]/H2 $mol:wat[1][0][1] @atom:SPCE/H 0.4238 3.391 1.305 6.972 - $atom:wat[2][0][1]/O $mol:wat[2][0][1] @atom:SPCE/O -0.8476 5.652 2.611 5.061 - $atom:wat[2][0][1]/H1 $mol:wat[2][0][1] @atom:SPCE/H 0.4238 6.461 2.144 5.391 - $atom:wat[2][0][1]/H2 $mol:wat[2][0][1] @atom:SPCE/H 0.4238 5.652 3.545 5.391 - $atom:wat[3][0][1]/O $mol:wat[3][0][1] @atom:SPCE/O -0.8476 7.912 1.305 5.981 - $atom:wat[3][0][1]/H1 $mol:wat[3][0][1] @atom:SPCE/H 0.4238 8.721 1.772 5.651 - $atom:wat[3][0][1]/H2 $mol:wat[3][0][1] @atom:SPCE/H 0.4238 7.912 0.371 5.651 - $atom:wat[0][1][1]/O $mol:wat[0][1][1] @atom:SPCE/O -0.8476 1.131 5.221 5.981 - $atom:wat[0][1][1]/H1 $mol:wat[0][1][1] @atom:SPCE/H 0.4238 0.322 5.688 5.651 - $atom:wat[0][1][1]/H2 $mol:wat[0][1][1] @atom:SPCE/H 0.4238 1.131 4.287 5.651 - $atom:wat[1][1][1]/O $mol:wat[1][1][1] @atom:SPCE/O -0.8476 3.391 6.526 5.061 - $atom:wat[1][1][1]/H1 $mol:wat[1][1][1] @atom:SPCE/H 0.4238 2.582 6.059 5.391 - $atom:wat[1][1][1]/H2 $mol:wat[1][1][1] @atom:SPCE/H 0.4238 3.391 7.460 5.391 - $atom:wat[2][1][1]/O $mol:wat[2][1][1] @atom:SPCE/O -0.8476 5.652 5.221 5.981 - $atom:wat[2][1][1]/H1 $mol:wat[2][1][1] @atom:SPCE/H 0.4238 4.843 5.688 5.651 - $atom:wat[2][1][1]/H2 $mol:wat[2][1][1] @atom:SPCE/H 0.4238 5.652 5.221 6.972 - $atom:wat[3][1][1]/O $mol:wat[3][1][1] @atom:SPCE/O -0.8476 7.912 6.526 5.061 - $atom:wat[3][1][1]/H1 $mol:wat[3][1][1] @atom:SPCE/H 0.4238 7.103 6.059 5.391 - $atom:wat[3][1][1]/H2 $mol:wat[3][1][1] @atom:SPCE/H 0.4238 7.912 6.526 4.070 - } -} # SpceIceRect16 - -# Credit goes to Martin Chaplin. -# These coordinates were orignally downloaded from Martin Chaplin's -# website: http://www.btinternet.com/~martin.chaplin/ice1h.html -# ... and then they were stretched independently in the xy and z -# directions in order to match the lattice parameters measured by -# Rottger et al., -# "Lattice constants and thermal expansion of H2O and D2O ice Ih" -# between 10 and 265K", Acta Crystallogr. B, 50 (1994) 644-648 -# I am using the lattice constants measured at temperature 265K -# (and pressure=100Torr). +# This ice (1h) unit cell is rectangular and contains 16 water molecules. +# (Coordinates and cell dimensions converted were from a PDB file.) +# The dimensions of the unit cell (in Angstroms) are: 9.043 7.832 7.361 + + +import "spce.lt" # <-- define the "SPCE" molecule + +SpceIceRect16 { + + # Create a 3-dimensional array of 16 water molecules + + wat = new SPCE[4][2][2] + + # Array indices will be correlated with position [xindex][yindex][zindex] + + # You can overwrite coordinates of atoms after they were created this way: + # (Order is not important) + # atom-ID molecule-ID atomType charge newX newY newZ + + write("Data Atoms") { + $atom:wat[0][0][0]/O $mol:wat[0][0][0] @atom:SPCE/O -0.8476 1.131 2.611 2.300 + $atom:wat[0][0][0]/H1 $mol:wat[0][0][0] @atom:SPCE/H 0.4238 0.322 2.144 1.970 + $atom:wat[0][0][0]/H2 $mol:wat[0][0][0] @atom:SPCE/H 0.4238 1.131 3.545 1.970 + $atom:wat[1][0][0]/O $mol:wat[1][0][0] @atom:SPCE/O -0.8476 3.391 1.305 1.381 + $atom:wat[1][0][0]/H1 $mol:wat[1][0][0] @atom:SPCE/H 0.4238 2.582 1.772 1.711 + $atom:wat[1][0][0]/H2 $mol:wat[1][0][0] @atom:SPCE/H 0.4238 3.391 0.371 1.711 + $atom:wat[2][0][0]/O $mol:wat[2][0][0] @atom:SPCE/O -0.8476 5.652 2.611 2.300 + $atom:wat[2][0][0]/H1 $mol:wat[2][0][0] @atom:SPCE/H 0.4238 4.843 2.144 1.970 + $atom:wat[2][0][0]/H2 $mol:wat[2][0][0] @atom:SPCE/H 0.4238 5.652 2.611 3.291 + $atom:wat[3][0][0]/O $mol:wat[3][0][0] @atom:SPCE/O -0.8476 7.912 1.305 1.381 + $atom:wat[3][0][0]/H1 $mol:wat[3][0][0] @atom:SPCE/H 0.4238 7.103 1.772 1.711 + $atom:wat[3][0][0]/H2 $mol:wat[3][0][0] @atom:SPCE/H 0.4238 7.912 1.305 0.390 + $atom:wat[0][1][0]/O $mol:wat[0][1][0] @atom:SPCE/O -0.8476 1.131 5.221 1.381 + $atom:wat[0][1][0]/H1 $mol:wat[0][1][0] @atom:SPCE/H 0.4238 1.940 5.688 1.711 + $atom:wat[0][1][0]/H2 $mol:wat[0][1][0] @atom:SPCE/H 0.4238 1.131 5.221 0.390 + $atom:wat[1][1][0]/O $mol:wat[1][1][0] @atom:SPCE/O -0.8476 3.391 6.526 2.300 + $atom:wat[1][1][0]/H1 $mol:wat[1][1][0] @atom:SPCE/H 0.4238 4.200 6.059 1.970 + $atom:wat[1][1][0]/H2 $mol:wat[1][1][0] @atom:SPCE/H 0.4238 3.391 6.526 3.291 + $atom:wat[2][1][0]/O $mol:wat[2][1][0] @atom:SPCE/O -0.8476 5.652 5.221 1.381 + $atom:wat[2][1][0]/H1 $mol:wat[2][1][0] @atom:SPCE/H 0.4238 6.461 5.688 1.711 + $atom:wat[2][1][0]/H2 $mol:wat[2][1][0] @atom:SPCE/H 0.4238 5.652 4.287 1.711 + $atom:wat[3][1][0]/O $mol:wat[3][1][0] @atom:SPCE/O -0.8476 7.912 6.526 2.300 + $atom:wat[3][1][0]/H1 $mol:wat[3][1][0] @atom:SPCE/H 0.4238 8.721 6.059 1.970 + $atom:wat[3][1][0]/H2 $mol:wat[3][1][0] @atom:SPCE/H 0.4238 7.912 7.460 1.970 + $atom:wat[0][0][1]/O $mol:wat[0][0][1] @atom:SPCE/O -0.8476 1.131 2.611 5.061 + $atom:wat[0][0][1]/H1 $mol:wat[0][0][1] @atom:SPCE/H 0.4238 1.940 2.144 5.391 + $atom:wat[0][0][1]/H2 $mol:wat[0][0][1] @atom:SPCE/H 0.4238 1.131 2.611 4.070 + $atom:wat[1][0][1]/O $mol:wat[1][0][1] @atom:SPCE/O -0.8476 3.391 1.305 5.981 + $atom:wat[1][0][1]/H1 $mol:wat[1][0][1] @atom:SPCE/H 0.4238 4.200 1.772 5.651 + $atom:wat[1][0][1]/H2 $mol:wat[1][0][1] @atom:SPCE/H 0.4238 3.391 1.305 6.972 + $atom:wat[2][0][1]/O $mol:wat[2][0][1] @atom:SPCE/O -0.8476 5.652 2.611 5.061 + $atom:wat[2][0][1]/H1 $mol:wat[2][0][1] @atom:SPCE/H 0.4238 6.461 2.144 5.391 + $atom:wat[2][0][1]/H2 $mol:wat[2][0][1] @atom:SPCE/H 0.4238 5.652 3.545 5.391 + $atom:wat[3][0][1]/O $mol:wat[3][0][1] @atom:SPCE/O -0.8476 7.912 1.305 5.981 + $atom:wat[3][0][1]/H1 $mol:wat[3][0][1] @atom:SPCE/H 0.4238 8.721 1.772 5.651 + $atom:wat[3][0][1]/H2 $mol:wat[3][0][1] @atom:SPCE/H 0.4238 7.912 0.371 5.651 + $atom:wat[0][1][1]/O $mol:wat[0][1][1] @atom:SPCE/O -0.8476 1.131 5.221 5.981 + $atom:wat[0][1][1]/H1 $mol:wat[0][1][1] @atom:SPCE/H 0.4238 0.322 5.688 5.651 + $atom:wat[0][1][1]/H2 $mol:wat[0][1][1] @atom:SPCE/H 0.4238 1.131 4.287 5.651 + $atom:wat[1][1][1]/O $mol:wat[1][1][1] @atom:SPCE/O -0.8476 3.391 6.526 5.061 + $atom:wat[1][1][1]/H1 $mol:wat[1][1][1] @atom:SPCE/H 0.4238 2.582 6.059 5.391 + $atom:wat[1][1][1]/H2 $mol:wat[1][1][1] @atom:SPCE/H 0.4238 3.391 7.460 5.391 + $atom:wat[2][1][1]/O $mol:wat[2][1][1] @atom:SPCE/O -0.8476 5.652 5.221 5.981 + $atom:wat[2][1][1]/H1 $mol:wat[2][1][1] @atom:SPCE/H 0.4238 4.843 5.688 5.651 + $atom:wat[2][1][1]/H2 $mol:wat[2][1][1] @atom:SPCE/H 0.4238 5.652 5.221 6.972 + $atom:wat[3][1][1]/O $mol:wat[3][1][1] @atom:SPCE/O -0.8476 7.912 6.526 5.061 + $atom:wat[3][1][1]/H1 $mol:wat[3][1][1] @atom:SPCE/H 0.4238 7.103 6.059 5.391 + $atom:wat[3][1][1]/H2 $mol:wat[3][1][1] @atom:SPCE/H 0.4238 7.912 6.526 4.070 + } +} # SpceIceRect16 + +# Credit goes to Martin Chaplin. +# These coordinates were orignally downloaded from Martin Chaplin's +# website: http://www.btinternet.com/~martin.chaplin/ice1h.html +# ... and then they were stretched independently in the xy and z +# directions in order to match the lattice parameters measured by +# Rottger et al., +# "Lattice constants and thermal expansion of H2O and D2O ice Ih" +# between 10 and 265K", Acta Crystallogr. B, 50 (1994) 644-648 +# I am using the lattice constants measured at temperature 265K +# (and pressure=100Torr). diff --git a/tools/moltemplate/examples/force_field_explicit_parameters/ice_crystal/moltemplate_files/spce_ice_rect32.lt b/tools/moltemplate/examples/all_atom/force_field_explicit_parameters/ice_crystal/moltemplate_files/spce_ice_rect32.lt similarity index 98% rename from tools/moltemplate/examples/force_field_explicit_parameters/ice_crystal/moltemplate_files/spce_ice_rect32.lt rename to tools/moltemplate/examples/all_atom/force_field_explicit_parameters/ice_crystal/moltemplate_files/spce_ice_rect32.lt index 7ddcb0adfe00469ffced7b613f9f8236a82ff6be..0a52d82981d0e55bb0172c41039aee688f790a5a 100644 --- a/tools/moltemplate/examples/force_field_explicit_parameters/ice_crystal/moltemplate_files/spce_ice_rect32.lt +++ b/tools/moltemplate/examples/all_atom/force_field_explicit_parameters/ice_crystal/moltemplate_files/spce_ice_rect32.lt @@ -1,129 +1,129 @@ -# This ice (1h) unit cell is rectangular and contains 32 water molecules. -# (Coordinates and cell dimensions converted were from a PDB file.) -# The dimensions of the unit cell (in Angstroms) are: 9.043 15.663 7.361 - - -import "spce.lt" # <-- define the "SPCE" molecule - -SpceIceRect32 { - - # Create a 3-dimensional array of 32 water molecules - - wat = new SPCE[4][4][2] - - # Array indices will be correlated with position [xindex][yindex][zindex] - - # You can overwrite coordinates of atoms after they were created this way: - # (Order is not important) - # atom-ID molecule-ID atomType charge newX newY newZ - - write("Data Atoms") { - $atom:wat[0][0][0]/O $mol:wat[0][0][0] @atom:SPCE/O -0.8476 1.131 2.611 2.300 - $atom:wat[0][0][0]/H1 $mol:wat[0][0][0] @atom:SPCE/H 0.4238 0.322 2.144 1.970 - $atom:wat[0][0][0]/H2 $mol:wat[0][0][0] @atom:SPCE/H 0.4238 1.131 2.611 3.291 - $atom:wat[1][0][0]/O $mol:wat[1][0][0] @atom:SPCE/O -0.8476 3.391 1.305 1.381 - $atom:wat[1][0][0]/H1 $mol:wat[1][0][0] @atom:SPCE/H 0.4238 2.582 1.772 1.711 - $atom:wat[1][0][0]/H2 $mol:wat[1][0][0] @atom:SPCE/H 0.4238 3.391 1.305 0.390 - $atom:wat[2][0][0]/O $mol:wat[2][0][0] @atom:SPCE/O -0.8476 5.652 2.611 2.300 - $atom:wat[2][0][0]/H1 $mol:wat[2][0][0] @atom:SPCE/H 0.4238 4.843 2.144 1.970 - $atom:wat[2][0][0]/H2 $mol:wat[2][0][0] @atom:SPCE/H 0.4238 5.652 3.545 1.970 - $atom:wat[3][0][0]/O $mol:wat[3][0][0] @atom:SPCE/O -0.8476 7.912 1.305 1.381 - $atom:wat[3][0][0]/H1 $mol:wat[3][0][0] @atom:SPCE/H 0.4238 7.103 1.772 1.711 - $atom:wat[3][0][0]/H2 $mol:wat[3][0][0] @atom:SPCE/H 0.4238 7.912 0.371 1.711 - $atom:wat[0][1][0]/O $mol:wat[0][1][0] @atom:SPCE/O -0.8476 1.131 5.221 1.381 - $atom:wat[0][1][0]/H1 $mol:wat[0][1][0] @atom:SPCE/H 0.4238 1.940 5.688 1.711 - $atom:wat[0][1][0]/H2 $mol:wat[0][1][0] @atom:SPCE/H 0.4238 1.131 4.287 1.711 - $atom:wat[1][1][0]/O $mol:wat[1][1][0] @atom:SPCE/O -0.8476 3.391 6.526 2.300 - $atom:wat[1][1][0]/H1 $mol:wat[1][1][0] @atom:SPCE/H 0.4238 4.200 6.059 1.970 - $atom:wat[1][1][0]/H2 $mol:wat[1][1][0] @atom:SPCE/H 0.4238 3.391 6.526 3.291 - $atom:wat[2][1][0]/O $mol:wat[2][1][0] @atom:SPCE/O -0.8476 5.652 5.221 1.381 - $atom:wat[2][1][0]/H1 $mol:wat[2][1][0] @atom:SPCE/H 0.4238 6.461 5.688 1.711 - $atom:wat[2][1][0]/H2 $mol:wat[2][1][0] @atom:SPCE/H 0.4238 5.652 5.221 0.390 - $atom:wat[3][1][0]/O $mol:wat[3][1][0] @atom:SPCE/O -0.8476 7.912 6.526 2.300 - $atom:wat[3][1][0]/H1 $mol:wat[3][1][0] @atom:SPCE/H 0.4238 8.721 6.059 1.970 - $atom:wat[3][1][0]/H2 $mol:wat[3][1][0] @atom:SPCE/H 0.4238 7.912 7.460 1.970 - $atom:wat[0][2][0]/O $mol:wat[0][2][0] @atom:SPCE/O -0.8476 1.131 10.443 2.300 - $atom:wat[0][2][0]/H1 $mol:wat[0][2][0] @atom:SPCE/H 0.4238 0.322 9.976 1.970 - $atom:wat[0][2][0]/H2 $mol:wat[0][2][0] @atom:SPCE/H 0.4238 1.131 11.377 1.970 - $atom:wat[1][2][0]/O $mol:wat[1][2][0] @atom:SPCE/O -0.8476 3.391 9.137 1.381 - $atom:wat[1][2][0]/H1 $mol:wat[1][2][0] @atom:SPCE/H 0.4238 2.582 9.604 1.711 - $atom:wat[1][2][0]/H2 $mol:wat[1][2][0] @atom:SPCE/H 0.4238 3.391 8.203 1.711 - $atom:wat[2][2][0]/O $mol:wat[2][2][0] @atom:SPCE/O -0.8476 5.652 10.443 2.300 - $atom:wat[2][2][0]/H1 $mol:wat[2][2][0] @atom:SPCE/H 0.4238 4.843 9.976 1.970 - $atom:wat[2][2][0]/H2 $mol:wat[2][2][0] @atom:SPCE/H 0.4238 5.652 10.443 3.291 - $atom:wat[3][2][0]/O $mol:wat[3][2][0] @atom:SPCE/O -0.8476 7.912 9.137 1.381 - $atom:wat[3][2][0]/H1 $mol:wat[3][2][0] @atom:SPCE/H 0.4238 7.103 9.604 1.711 - $atom:wat[3][2][0]/H2 $mol:wat[3][2][0] @atom:SPCE/H 0.4238 7.912 9.137 0.390 - $atom:wat[0][3][0]/O $mol:wat[0][3][0] @atom:SPCE/O -0.8476 1.131 13.053 1.381 - $atom:wat[0][3][0]/H1 $mol:wat[0][3][0] @atom:SPCE/H 0.4238 1.940 13.520 1.711 - $atom:wat[0][3][0]/H2 $mol:wat[0][3][0] @atom:SPCE/H 0.4238 1.131 13.053 0.390 - $atom:wat[1][3][0]/O $mol:wat[1][3][0] @atom:SPCE/O -0.8476 3.391 14.358 2.300 - $atom:wat[1][3][0]/H1 $mol:wat[1][3][0] @atom:SPCE/H 0.4238 4.200 13.891 1.970 - $atom:wat[1][3][0]/H2 $mol:wat[1][3][0] @atom:SPCE/H 0.4238 3.391 15.292 1.970 - $atom:wat[2][3][0]/O $mol:wat[2][3][0] @atom:SPCE/O -0.8476 5.652 13.053 1.381 - $atom:wat[2][3][0]/H1 $mol:wat[2][3][0] @atom:SPCE/H 0.4238 6.461 13.520 1.711 - $atom:wat[2][3][0]/H2 $mol:wat[2][3][0] @atom:SPCE/H 0.4238 5.652 12.119 1.711 - $atom:wat[3][3][0]/O $mol:wat[3][3][0] @atom:SPCE/O -0.8476 7.912 14.358 2.300 - $atom:wat[3][3][0]/H1 $mol:wat[3][3][0] @atom:SPCE/H 0.4238 8.721 13.891 1.970 - $atom:wat[3][3][0]/H2 $mol:wat[3][3][0] @atom:SPCE/H 0.4238 7.912 14.358 3.291 - $atom:wat[0][0][1]/O $mol:wat[0][0][1] @atom:SPCE/O -0.8476 1.131 2.611 5.061 - $atom:wat[0][0][1]/H1 $mol:wat[0][0][1] @atom:SPCE/H 0.4238 1.940 2.144 5.391 - $atom:wat[0][0][1]/H2 $mol:wat[0][0][1] @atom:SPCE/H 0.4238 1.131 3.545 5.391 - $atom:wat[1][0][1]/O $mol:wat[1][0][1] @atom:SPCE/O -0.8476 3.391 1.305 5.981 - $atom:wat[1][0][1]/H1 $mol:wat[1][0][1] @atom:SPCE/H 0.4238 4.200 1.772 5.651 - $atom:wat[1][0][1]/H2 $mol:wat[1][0][1] @atom:SPCE/H 0.4238 3.391 0.371 5.651 - $atom:wat[2][0][1]/O $mol:wat[2][0][1] @atom:SPCE/O -0.8476 5.652 2.611 5.061 - $atom:wat[2][0][1]/H1 $mol:wat[2][0][1] @atom:SPCE/H 0.4238 6.461 2.144 5.391 - $atom:wat[2][0][1]/H2 $mol:wat[2][0][1] @atom:SPCE/H 0.4238 5.652 2.611 4.070 - $atom:wat[3][0][1]/O $mol:wat[3][0][1] @atom:SPCE/O -0.8476 7.912 1.305 5.981 - $atom:wat[3][0][1]/H1 $mol:wat[3][0][1] @atom:SPCE/H 0.4238 8.721 1.772 5.651 - $atom:wat[3][0][1]/H2 $mol:wat[3][0][1] @atom:SPCE/H 0.4238 7.912 1.305 6.972 - $atom:wat[0][1][1]/O $mol:wat[0][1][1] @atom:SPCE/O -0.8476 1.131 5.221 5.981 - $atom:wat[0][1][1]/H1 $mol:wat[0][1][1] @atom:SPCE/H 0.4238 0.322 5.688 5.651 - $atom:wat[0][1][1]/H2 $mol:wat[0][1][1] @atom:SPCE/H 0.4238 1.131 5.221 6.972 - $atom:wat[1][1][1]/O $mol:wat[1][1][1] @atom:SPCE/O -0.8476 3.391 6.526 5.061 - $atom:wat[1][1][1]/H1 $mol:wat[1][1][1] @atom:SPCE/H 0.4238 2.582 6.059 5.391 - $atom:wat[1][1][1]/H2 $mol:wat[1][1][1] @atom:SPCE/H 0.4238 3.391 7.460 5.391 - $atom:wat[2][1][1]/O $mol:wat[2][1][1] @atom:SPCE/O -0.8476 5.652 5.221 5.981 - $atom:wat[2][1][1]/H1 $mol:wat[2][1][1] @atom:SPCE/H 0.4238 4.843 5.688 5.651 - $atom:wat[2][1][1]/H2 $mol:wat[2][1][1] @atom:SPCE/H 0.4238 5.652 4.287 5.651 - $atom:wat[3][1][1]/O $mol:wat[3][1][1] @atom:SPCE/O -0.8476 7.912 6.526 5.061 - $atom:wat[3][1][1]/H1 $mol:wat[3][1][1] @atom:SPCE/H 0.4238 7.103 6.059 5.391 - $atom:wat[3][1][1]/H2 $mol:wat[3][1][1] @atom:SPCE/H 0.4238 7.912 6.526 4.070 - $atom:wat[0][2][1]/O $mol:wat[0][2][1] @atom:SPCE/O -0.8476 1.131 10.443 5.061 - $atom:wat[0][2][1]/H1 $mol:wat[0][2][1] @atom:SPCE/H 0.4238 1.940 9.976 5.391 - $atom:wat[0][2][1]/H2 $mol:wat[0][2][1] @atom:SPCE/H 0.4238 1.131 10.443 4.070 - $atom:wat[1][2][1]/O $mol:wat[1][2][1] @atom:SPCE/O -0.8476 3.391 9.137 5.981 - $atom:wat[1][2][1]/H1 $mol:wat[1][2][1] @atom:SPCE/H 0.4238 4.200 9.604 5.651 - $atom:wat[1][2][1]/H2 $mol:wat[1][2][1] @atom:SPCE/H 0.4238 3.391 9.137 6.972 - $atom:wat[2][2][1]/O $mol:wat[2][2][1] @atom:SPCE/O -0.8476 5.652 10.443 5.061 - $atom:wat[2][2][1]/H1 $mol:wat[2][2][1] @atom:SPCE/H 0.4238 6.461 9.976 5.391 - $atom:wat[2][2][1]/H2 $mol:wat[2][2][1] @atom:SPCE/H 0.4238 5.652 11.377 5.391 - $atom:wat[3][2][1]/O $mol:wat[3][2][1] @atom:SPCE/O -0.8476 7.912 9.137 5.981 - $atom:wat[3][2][1]/H1 $mol:wat[3][2][1] @atom:SPCE/H 0.4238 8.721 9.604 5.651 - $atom:wat[3][2][1]/H2 $mol:wat[3][2][1] @atom:SPCE/H 0.4238 7.912 8.203 5.651 - $atom:wat[0][3][1]/O $mol:wat[0][3][1] @atom:SPCE/O -0.8476 1.131 13.053 5.981 - $atom:wat[0][3][1]/H1 $mol:wat[0][3][1] @atom:SPCE/H 0.4238 0.322 13.520 5.651 - $atom:wat[0][3][1]/H2 $mol:wat[0][3][1] @atom:SPCE/H 0.4238 1.131 12.119 5.651 - $atom:wat[1][3][1]/O $mol:wat[1][3][1] @atom:SPCE/O -0.8476 3.391 14.358 5.061 - $atom:wat[1][3][1]/H1 $mol:wat[1][3][1] @atom:SPCE/H 0.4238 2.582 13.891 5.391 - $atom:wat[1][3][1]/H2 $mol:wat[1][3][1] @atom:SPCE/H 0.4238 3.391 14.358 4.070 - $atom:wat[2][3][1]/O $mol:wat[2][3][1] @atom:SPCE/O -0.8476 5.652 13.053 5.981 - $atom:wat[2][3][1]/H1 $mol:wat[2][3][1] @atom:SPCE/H 0.4238 4.843 13.520 5.651 - $atom:wat[2][3][1]/H2 $mol:wat[2][3][1] @atom:SPCE/H 0.4238 5.652 13.053 6.972 - $atom:wat[3][3][1]/O $mol:wat[3][3][1] @atom:SPCE/O -0.8476 7.912 14.358 5.061 - $atom:wat[3][3][1]/H1 $mol:wat[3][3][1] @atom:SPCE/H 0.4238 7.103 13.891 5.391 - $atom:wat[3][3][1]/H2 $mol:wat[3][3][1] @atom:SPCE/H 0.4238 7.912 15.292 5.391 - } -} # SpceIceRect32 - -# Credit goes to Martin Chaplin. -# These coordinates were orignally downloaded from Martin Chaplin's -# website: http://www.btinternet.com/~martin.chaplin/ice1h.html -# ... and then they were stretched independently in the xy and z -# directions in order to match the lattice parameters measured by -# Rottger et al., -# "Lattice constants and thermal expansion of H2O and D2O ice Ih" -# between 10 and 265K", Acta Crystallogr. B, 50 (1994) 644-648 -# I am using the lattice constants measured at temperature 265K -# (and pressure=100Torr). +# This ice (1h) unit cell is rectangular and contains 32 water molecules. +# (Coordinates and cell dimensions converted were from a PDB file.) +# The dimensions of the unit cell (in Angstroms) are: 9.043 15.663 7.361 + + +import "spce.lt" # <-- define the "SPCE" molecule + +SpceIceRect32 { + + # Create a 3-dimensional array of 32 water molecules + + wat = new SPCE[4][4][2] + + # Array indices will be correlated with position [xindex][yindex][zindex] + + # You can overwrite coordinates of atoms after they were created this way: + # (Order is not important) + # atom-ID molecule-ID atomType charge newX newY newZ + + write("Data Atoms") { + $atom:wat[0][0][0]/O $mol:wat[0][0][0] @atom:SPCE/O -0.8476 1.131 2.611 2.300 + $atom:wat[0][0][0]/H1 $mol:wat[0][0][0] @atom:SPCE/H 0.4238 0.322 2.144 1.970 + $atom:wat[0][0][0]/H2 $mol:wat[0][0][0] @atom:SPCE/H 0.4238 1.131 2.611 3.291 + $atom:wat[1][0][0]/O $mol:wat[1][0][0] @atom:SPCE/O -0.8476 3.391 1.305 1.381 + $atom:wat[1][0][0]/H1 $mol:wat[1][0][0] @atom:SPCE/H 0.4238 2.582 1.772 1.711 + $atom:wat[1][0][0]/H2 $mol:wat[1][0][0] @atom:SPCE/H 0.4238 3.391 1.305 0.390 + $atom:wat[2][0][0]/O $mol:wat[2][0][0] @atom:SPCE/O -0.8476 5.652 2.611 2.300 + $atom:wat[2][0][0]/H1 $mol:wat[2][0][0] @atom:SPCE/H 0.4238 4.843 2.144 1.970 + $atom:wat[2][0][0]/H2 $mol:wat[2][0][0] @atom:SPCE/H 0.4238 5.652 3.545 1.970 + $atom:wat[3][0][0]/O $mol:wat[3][0][0] @atom:SPCE/O -0.8476 7.912 1.305 1.381 + $atom:wat[3][0][0]/H1 $mol:wat[3][0][0] @atom:SPCE/H 0.4238 7.103 1.772 1.711 + $atom:wat[3][0][0]/H2 $mol:wat[3][0][0] @atom:SPCE/H 0.4238 7.912 0.371 1.711 + $atom:wat[0][1][0]/O $mol:wat[0][1][0] @atom:SPCE/O -0.8476 1.131 5.221 1.381 + $atom:wat[0][1][0]/H1 $mol:wat[0][1][0] @atom:SPCE/H 0.4238 1.940 5.688 1.711 + $atom:wat[0][1][0]/H2 $mol:wat[0][1][0] @atom:SPCE/H 0.4238 1.131 4.287 1.711 + $atom:wat[1][1][0]/O $mol:wat[1][1][0] @atom:SPCE/O -0.8476 3.391 6.526 2.300 + $atom:wat[1][1][0]/H1 $mol:wat[1][1][0] @atom:SPCE/H 0.4238 4.200 6.059 1.970 + $atom:wat[1][1][0]/H2 $mol:wat[1][1][0] @atom:SPCE/H 0.4238 3.391 6.526 3.291 + $atom:wat[2][1][0]/O $mol:wat[2][1][0] @atom:SPCE/O -0.8476 5.652 5.221 1.381 + $atom:wat[2][1][0]/H1 $mol:wat[2][1][0] @atom:SPCE/H 0.4238 6.461 5.688 1.711 + $atom:wat[2][1][0]/H2 $mol:wat[2][1][0] @atom:SPCE/H 0.4238 5.652 5.221 0.390 + $atom:wat[3][1][0]/O $mol:wat[3][1][0] @atom:SPCE/O -0.8476 7.912 6.526 2.300 + $atom:wat[3][1][0]/H1 $mol:wat[3][1][0] @atom:SPCE/H 0.4238 8.721 6.059 1.970 + $atom:wat[3][1][0]/H2 $mol:wat[3][1][0] @atom:SPCE/H 0.4238 7.912 7.460 1.970 + $atom:wat[0][2][0]/O $mol:wat[0][2][0] @atom:SPCE/O -0.8476 1.131 10.443 2.300 + $atom:wat[0][2][0]/H1 $mol:wat[0][2][0] @atom:SPCE/H 0.4238 0.322 9.976 1.970 + $atom:wat[0][2][0]/H2 $mol:wat[0][2][0] @atom:SPCE/H 0.4238 1.131 11.377 1.970 + $atom:wat[1][2][0]/O $mol:wat[1][2][0] @atom:SPCE/O -0.8476 3.391 9.137 1.381 + $atom:wat[1][2][0]/H1 $mol:wat[1][2][0] @atom:SPCE/H 0.4238 2.582 9.604 1.711 + $atom:wat[1][2][0]/H2 $mol:wat[1][2][0] @atom:SPCE/H 0.4238 3.391 8.203 1.711 + $atom:wat[2][2][0]/O $mol:wat[2][2][0] @atom:SPCE/O -0.8476 5.652 10.443 2.300 + $atom:wat[2][2][0]/H1 $mol:wat[2][2][0] @atom:SPCE/H 0.4238 4.843 9.976 1.970 + $atom:wat[2][2][0]/H2 $mol:wat[2][2][0] @atom:SPCE/H 0.4238 5.652 10.443 3.291 + $atom:wat[3][2][0]/O $mol:wat[3][2][0] @atom:SPCE/O -0.8476 7.912 9.137 1.381 + $atom:wat[3][2][0]/H1 $mol:wat[3][2][0] @atom:SPCE/H 0.4238 7.103 9.604 1.711 + $atom:wat[3][2][0]/H2 $mol:wat[3][2][0] @atom:SPCE/H 0.4238 7.912 9.137 0.390 + $atom:wat[0][3][0]/O $mol:wat[0][3][0] @atom:SPCE/O -0.8476 1.131 13.053 1.381 + $atom:wat[0][3][0]/H1 $mol:wat[0][3][0] @atom:SPCE/H 0.4238 1.940 13.520 1.711 + $atom:wat[0][3][0]/H2 $mol:wat[0][3][0] @atom:SPCE/H 0.4238 1.131 13.053 0.390 + $atom:wat[1][3][0]/O $mol:wat[1][3][0] @atom:SPCE/O -0.8476 3.391 14.358 2.300 + $atom:wat[1][3][0]/H1 $mol:wat[1][3][0] @atom:SPCE/H 0.4238 4.200 13.891 1.970 + $atom:wat[1][3][0]/H2 $mol:wat[1][3][0] @atom:SPCE/H 0.4238 3.391 15.292 1.970 + $atom:wat[2][3][0]/O $mol:wat[2][3][0] @atom:SPCE/O -0.8476 5.652 13.053 1.381 + $atom:wat[2][3][0]/H1 $mol:wat[2][3][0] @atom:SPCE/H 0.4238 6.461 13.520 1.711 + $atom:wat[2][3][0]/H2 $mol:wat[2][3][0] @atom:SPCE/H 0.4238 5.652 12.119 1.711 + $atom:wat[3][3][0]/O $mol:wat[3][3][0] @atom:SPCE/O -0.8476 7.912 14.358 2.300 + $atom:wat[3][3][0]/H1 $mol:wat[3][3][0] @atom:SPCE/H 0.4238 8.721 13.891 1.970 + $atom:wat[3][3][0]/H2 $mol:wat[3][3][0] @atom:SPCE/H 0.4238 7.912 14.358 3.291 + $atom:wat[0][0][1]/O $mol:wat[0][0][1] @atom:SPCE/O -0.8476 1.131 2.611 5.061 + $atom:wat[0][0][1]/H1 $mol:wat[0][0][1] @atom:SPCE/H 0.4238 1.940 2.144 5.391 + $atom:wat[0][0][1]/H2 $mol:wat[0][0][1] @atom:SPCE/H 0.4238 1.131 3.545 5.391 + $atom:wat[1][0][1]/O $mol:wat[1][0][1] @atom:SPCE/O -0.8476 3.391 1.305 5.981 + $atom:wat[1][0][1]/H1 $mol:wat[1][0][1] @atom:SPCE/H 0.4238 4.200 1.772 5.651 + $atom:wat[1][0][1]/H2 $mol:wat[1][0][1] @atom:SPCE/H 0.4238 3.391 0.371 5.651 + $atom:wat[2][0][1]/O $mol:wat[2][0][1] @atom:SPCE/O -0.8476 5.652 2.611 5.061 + $atom:wat[2][0][1]/H1 $mol:wat[2][0][1] @atom:SPCE/H 0.4238 6.461 2.144 5.391 + $atom:wat[2][0][1]/H2 $mol:wat[2][0][1] @atom:SPCE/H 0.4238 5.652 2.611 4.070 + $atom:wat[3][0][1]/O $mol:wat[3][0][1] @atom:SPCE/O -0.8476 7.912 1.305 5.981 + $atom:wat[3][0][1]/H1 $mol:wat[3][0][1] @atom:SPCE/H 0.4238 8.721 1.772 5.651 + $atom:wat[3][0][1]/H2 $mol:wat[3][0][1] @atom:SPCE/H 0.4238 7.912 1.305 6.972 + $atom:wat[0][1][1]/O $mol:wat[0][1][1] @atom:SPCE/O -0.8476 1.131 5.221 5.981 + $atom:wat[0][1][1]/H1 $mol:wat[0][1][1] @atom:SPCE/H 0.4238 0.322 5.688 5.651 + $atom:wat[0][1][1]/H2 $mol:wat[0][1][1] @atom:SPCE/H 0.4238 1.131 5.221 6.972 + $atom:wat[1][1][1]/O $mol:wat[1][1][1] @atom:SPCE/O -0.8476 3.391 6.526 5.061 + $atom:wat[1][1][1]/H1 $mol:wat[1][1][1] @atom:SPCE/H 0.4238 2.582 6.059 5.391 + $atom:wat[1][1][1]/H2 $mol:wat[1][1][1] @atom:SPCE/H 0.4238 3.391 7.460 5.391 + $atom:wat[2][1][1]/O $mol:wat[2][1][1] @atom:SPCE/O -0.8476 5.652 5.221 5.981 + $atom:wat[2][1][1]/H1 $mol:wat[2][1][1] @atom:SPCE/H 0.4238 4.843 5.688 5.651 + $atom:wat[2][1][1]/H2 $mol:wat[2][1][1] @atom:SPCE/H 0.4238 5.652 4.287 5.651 + $atom:wat[3][1][1]/O $mol:wat[3][1][1] @atom:SPCE/O -0.8476 7.912 6.526 5.061 + $atom:wat[3][1][1]/H1 $mol:wat[3][1][1] @atom:SPCE/H 0.4238 7.103 6.059 5.391 + $atom:wat[3][1][1]/H2 $mol:wat[3][1][1] @atom:SPCE/H 0.4238 7.912 6.526 4.070 + $atom:wat[0][2][1]/O $mol:wat[0][2][1] @atom:SPCE/O -0.8476 1.131 10.443 5.061 + $atom:wat[0][2][1]/H1 $mol:wat[0][2][1] @atom:SPCE/H 0.4238 1.940 9.976 5.391 + $atom:wat[0][2][1]/H2 $mol:wat[0][2][1] @atom:SPCE/H 0.4238 1.131 10.443 4.070 + $atom:wat[1][2][1]/O $mol:wat[1][2][1] @atom:SPCE/O -0.8476 3.391 9.137 5.981 + $atom:wat[1][2][1]/H1 $mol:wat[1][2][1] @atom:SPCE/H 0.4238 4.200 9.604 5.651 + $atom:wat[1][2][1]/H2 $mol:wat[1][2][1] @atom:SPCE/H 0.4238 3.391 9.137 6.972 + $atom:wat[2][2][1]/O $mol:wat[2][2][1] @atom:SPCE/O -0.8476 5.652 10.443 5.061 + $atom:wat[2][2][1]/H1 $mol:wat[2][2][1] @atom:SPCE/H 0.4238 6.461 9.976 5.391 + $atom:wat[2][2][1]/H2 $mol:wat[2][2][1] @atom:SPCE/H 0.4238 5.652 11.377 5.391 + $atom:wat[3][2][1]/O $mol:wat[3][2][1] @atom:SPCE/O -0.8476 7.912 9.137 5.981 + $atom:wat[3][2][1]/H1 $mol:wat[3][2][1] @atom:SPCE/H 0.4238 8.721 9.604 5.651 + $atom:wat[3][2][1]/H2 $mol:wat[3][2][1] @atom:SPCE/H 0.4238 7.912 8.203 5.651 + $atom:wat[0][3][1]/O $mol:wat[0][3][1] @atom:SPCE/O -0.8476 1.131 13.053 5.981 + $atom:wat[0][3][1]/H1 $mol:wat[0][3][1] @atom:SPCE/H 0.4238 0.322 13.520 5.651 + $atom:wat[0][3][1]/H2 $mol:wat[0][3][1] @atom:SPCE/H 0.4238 1.131 12.119 5.651 + $atom:wat[1][3][1]/O $mol:wat[1][3][1] @atom:SPCE/O -0.8476 3.391 14.358 5.061 + $atom:wat[1][3][1]/H1 $mol:wat[1][3][1] @atom:SPCE/H 0.4238 2.582 13.891 5.391 + $atom:wat[1][3][1]/H2 $mol:wat[1][3][1] @atom:SPCE/H 0.4238 3.391 14.358 4.070 + $atom:wat[2][3][1]/O $mol:wat[2][3][1] @atom:SPCE/O -0.8476 5.652 13.053 5.981 + $atom:wat[2][3][1]/H1 $mol:wat[2][3][1] @atom:SPCE/H 0.4238 4.843 13.520 5.651 + $atom:wat[2][3][1]/H2 $mol:wat[2][3][1] @atom:SPCE/H 0.4238 5.652 13.053 6.972 + $atom:wat[3][3][1]/O $mol:wat[3][3][1] @atom:SPCE/O -0.8476 7.912 14.358 5.061 + $atom:wat[3][3][1]/H1 $mol:wat[3][3][1] @atom:SPCE/H 0.4238 7.103 13.891 5.391 + $atom:wat[3][3][1]/H2 $mol:wat[3][3][1] @atom:SPCE/H 0.4238 7.912 15.292 5.391 + } +} # SpceIceRect32 + +# Credit goes to Martin Chaplin. +# These coordinates were orignally downloaded from Martin Chaplin's +# website: http://www.btinternet.com/~martin.chaplin/ice1h.html +# ... and then they were stretched independently in the xy and z +# directions in order to match the lattice parameters measured by +# Rottger et al., +# "Lattice constants and thermal expansion of H2O and D2O ice Ih" +# between 10 and 265K", Acta Crystallogr. B, 50 (1994) 644-648 +# I am using the lattice constants measured at temperature 265K +# (and pressure=100Torr). diff --git a/tools/moltemplate/examples/force_field_explicit_parameters/ice_crystal/moltemplate_files/spce_ice_rect8.lt b/tools/moltemplate/examples/all_atom/force_field_explicit_parameters/ice_crystal/moltemplate_files/spce_ice_rect8.lt similarity index 98% rename from tools/moltemplate/examples/force_field_explicit_parameters/ice_crystal/moltemplate_files/spce_ice_rect8.lt rename to tools/moltemplate/examples/all_atom/force_field_explicit_parameters/ice_crystal/moltemplate_files/spce_ice_rect8.lt index 2d716540a803183b4c3c86c0abfbaa93f6f46bb2..f887c6efd13bb4c0212e5ec878fa53acd9f94fdc 100644 --- a/tools/moltemplate/examples/force_field_explicit_parameters/ice_crystal/moltemplate_files/spce_ice_rect8.lt +++ b/tools/moltemplate/examples/all_atom/force_field_explicit_parameters/ice_crystal/moltemplate_files/spce_ice_rect8.lt @@ -1,57 +1,57 @@ -# This ice (1h) unit cell is rectangular and contains 8 water molecules. -# (Coordinates and cell dimensions converted were from a PDB file.) -# The dimensions of the unit cell (in Angstroms) are: 4.521 7.832 7.362 - - -import "spce.lt" # <-- define the "SPCE" molecule - -SpceIceRect8 { - - # Create a 3-dimensional array of 8 water molecules - - wat = new SPCE[2][2][2] - - # Array indices will be correlated with position [xindex][yindex][zindex] - - # You can overwrite coordinates of atoms after they were created this way: - # (Order is not important) - # atom-ID molecule-ID atomType charge newX newY newZ - - write("Data Atoms") { - $atom:wat[0][0][0]/O $mol:wat[0][0][0] @atom:SPCE/O -0.8476 1.131 2.611 2.300 - $atom:wat[0][0][0]/H1 $mol:wat[0][0][0] @atom:SPCE/H 0.4238 1.131 2.611 3.289 - $atom:wat[0][0][0]/H2 $mol:wat[0][0][0] @atom:SPCE/H 0.4238 0.320 2.143 1.971 - $atom:wat[1][0][0]/O $mol:wat[1][0][0] @atom:SPCE/O -0.8476 3.391 1.305 1.381 - $atom:wat[1][0][0]/H1 $mol:wat[1][0][0] @atom:SPCE/H 0.4238 3.391 0.370 1.710 - $atom:wat[1][0][0]/H2 $mol:wat[1][0][0] @atom:SPCE/H 0.4238 2.582 1.772 1.710 - $atom:wat[0][1][0]/O $mol:wat[0][1][0] @atom:SPCE/O -0.8476 1.131 5.221 1.381 - $atom:wat[0][1][0]/H1 $mol:wat[0][1][0] @atom:SPCE/H 0.4238 1.131 4.286 1.710 - $atom:wat[0][1][0]/H2 $mol:wat[0][1][0] @atom:SPCE/H 0.4238 0.320 5.688 1.710 - $atom:wat[1][1][0]/O $mol:wat[1][1][0] @atom:SPCE/O -0.8476 3.391 6.526 2.300 - $atom:wat[1][1][0]/H1 $mol:wat[1][1][0] @atom:SPCE/H 0.4238 3.391 6.526 3.289 - $atom:wat[1][1][0]/H2 $mol:wat[1][1][0] @atom:SPCE/H 0.4238 2.582 6.058 1.971 - $atom:wat[0][0][1]/O $mol:wat[0][0][1] @atom:SPCE/O -0.8476 1.131 2.611 5.061 - $atom:wat[0][0][1]/H1 $mol:wat[0][0][1] @atom:SPCE/H 0.4238 1.940 2.143 5.391 - $atom:wat[0][0][1]/H2 $mol:wat[0][0][1] @atom:SPCE/H 0.4238 1.131 3.546 5.391 - $atom:wat[1][0][1]/O $mol:wat[1][0][1] @atom:SPCE/O -0.8476 3.391 1.305 5.981 - $atom:wat[1][0][1]/H1 $mol:wat[1][0][1] @atom:SPCE/H 0.4238 3.391 1.305 6.970 - $atom:wat[1][0][1]/H2 $mol:wat[1][0][1] @atom:SPCE/H 0.4238 4.200 1.772 5.652 - $atom:wat[0][1][1]/O $mol:wat[0][1][1] @atom:SPCE/O -0.8476 1.131 5.221 5.981 - $atom:wat[0][1][1]/H1 $mol:wat[0][1][1] @atom:SPCE/H 0.4238 1.131 5.221 6.970 - $atom:wat[0][1][1]/H2 $mol:wat[0][1][1] @atom:SPCE/H 0.4238 1.940 5.688 5.652 - $atom:wat[1][1][1]/O $mol:wat[1][1][1] @atom:SPCE/O -0.8476 3.391 6.526 5.061 - $atom:wat[1][1][1]/H1 $mol:wat[1][1][1] @atom:SPCE/H 0.4238 4.200 6.058 5.391 - $atom:wat[1][1][1]/H2 $mol:wat[1][1][1] @atom:SPCE/H 0.4238 3.391 7.462 5.391 - } -} # SpceIceRect8 - -# Credit goes to Martin Chaplin. -# These coordinates were orignally downloaded from Martin Chaplin's -# website: http://www.btinternet.com/~martin.chaplin/ice1h.html -# ... and then they were stretched independently in the xy and z -# directions in order to match the lattice parameters measured by -# Rottger et al., -# "Lattice constants and thermal expansion of H2O and D2O ice Ih" -# between 10 and 265K", Acta Crystallogr. B, 50 (1994) 644-648 -# I am using the lattice constants measured at temperature 265K -# (and pressure=100Torr). +# This ice (1h) unit cell is rectangular and contains 8 water molecules. +# (Coordinates and cell dimensions converted were from a PDB file.) +# The dimensions of the unit cell (in Angstroms) are: 4.521 7.832 7.362 + + +import "spce.lt" # <-- define the "SPCE" molecule + +SpceIceRect8 { + + # Create a 3-dimensional array of 8 water molecules + + wat = new SPCE[2][2][2] + + # Array indices will be correlated with position [xindex][yindex][zindex] + + # You can overwrite coordinates of atoms after they were created this way: + # (Order is not important) + # atom-ID molecule-ID atomType charge newX newY newZ + + write("Data Atoms") { + $atom:wat[0][0][0]/O $mol:wat[0][0][0] @atom:SPCE/O -0.8476 1.131 2.611 2.300 + $atom:wat[0][0][0]/H1 $mol:wat[0][0][0] @atom:SPCE/H 0.4238 1.131 2.611 3.289 + $atom:wat[0][0][0]/H2 $mol:wat[0][0][0] @atom:SPCE/H 0.4238 0.320 2.143 1.971 + $atom:wat[1][0][0]/O $mol:wat[1][0][0] @atom:SPCE/O -0.8476 3.391 1.305 1.381 + $atom:wat[1][0][0]/H1 $mol:wat[1][0][0] @atom:SPCE/H 0.4238 3.391 0.370 1.710 + $atom:wat[1][0][0]/H2 $mol:wat[1][0][0] @atom:SPCE/H 0.4238 2.582 1.772 1.710 + $atom:wat[0][1][0]/O $mol:wat[0][1][0] @atom:SPCE/O -0.8476 1.131 5.221 1.381 + $atom:wat[0][1][0]/H1 $mol:wat[0][1][0] @atom:SPCE/H 0.4238 1.131 4.286 1.710 + $atom:wat[0][1][0]/H2 $mol:wat[0][1][0] @atom:SPCE/H 0.4238 0.320 5.688 1.710 + $atom:wat[1][1][0]/O $mol:wat[1][1][0] @atom:SPCE/O -0.8476 3.391 6.526 2.300 + $atom:wat[1][1][0]/H1 $mol:wat[1][1][0] @atom:SPCE/H 0.4238 3.391 6.526 3.289 + $atom:wat[1][1][0]/H2 $mol:wat[1][1][0] @atom:SPCE/H 0.4238 2.582 6.058 1.971 + $atom:wat[0][0][1]/O $mol:wat[0][0][1] @atom:SPCE/O -0.8476 1.131 2.611 5.061 + $atom:wat[0][0][1]/H1 $mol:wat[0][0][1] @atom:SPCE/H 0.4238 1.940 2.143 5.391 + $atom:wat[0][0][1]/H2 $mol:wat[0][0][1] @atom:SPCE/H 0.4238 1.131 3.546 5.391 + $atom:wat[1][0][1]/O $mol:wat[1][0][1] @atom:SPCE/O -0.8476 3.391 1.305 5.981 + $atom:wat[1][0][1]/H1 $mol:wat[1][0][1] @atom:SPCE/H 0.4238 3.391 1.305 6.970 + $atom:wat[1][0][1]/H2 $mol:wat[1][0][1] @atom:SPCE/H 0.4238 4.200 1.772 5.652 + $atom:wat[0][1][1]/O $mol:wat[0][1][1] @atom:SPCE/O -0.8476 1.131 5.221 5.981 + $atom:wat[0][1][1]/H1 $mol:wat[0][1][1] @atom:SPCE/H 0.4238 1.131 5.221 6.970 + $atom:wat[0][1][1]/H2 $mol:wat[0][1][1] @atom:SPCE/H 0.4238 1.940 5.688 5.652 + $atom:wat[1][1][1]/O $mol:wat[1][1][1] @atom:SPCE/O -0.8476 3.391 6.526 5.061 + $atom:wat[1][1][1]/H1 $mol:wat[1][1][1] @atom:SPCE/H 0.4238 4.200 6.058 5.391 + $atom:wat[1][1][1]/H2 $mol:wat[1][1][1] @atom:SPCE/H 0.4238 3.391 7.462 5.391 + } +} # SpceIceRect8 + +# Credit goes to Martin Chaplin. +# These coordinates were orignally downloaded from Martin Chaplin's +# website: http://www.btinternet.com/~martin.chaplin/ice1h.html +# ... and then they were stretched independently in the xy and z +# directions in order to match the lattice parameters measured by +# Rottger et al., +# "Lattice constants and thermal expansion of H2O and D2O ice Ih" +# between 10 and 265K", Acta Crystallogr. B, 50 (1994) 644-648 +# I am using the lattice constants measured at temperature 265K +# (and pressure=100Torr). diff --git a/tools/moltemplate/examples/force_field_explicit_parameters/ice_crystal/moltemplate_files/system.lt b/tools/moltemplate/examples/all_atom/force_field_explicit_parameters/ice_crystal/moltemplate_files/system.lt similarity index 100% rename from tools/moltemplate/examples/force_field_explicit_parameters/ice_crystal/moltemplate_files/system.lt rename to tools/moltemplate/examples/all_atom/force_field_explicit_parameters/ice_crystal/moltemplate_files/system.lt diff --git a/tools/moltemplate/examples/force_field_explicit_parameters/ice_crystal/run.in.npt b/tools/moltemplate/examples/all_atom/force_field_explicit_parameters/ice_crystal/run.in.npt similarity index 100% rename from tools/moltemplate/examples/force_field_explicit_parameters/ice_crystal/run.in.npt rename to tools/moltemplate/examples/all_atom/force_field_explicit_parameters/ice_crystal/run.in.npt diff --git a/tools/moltemplate/examples/force_field_explicit_parameters/ice_crystal/run.in.nvt b/tools/moltemplate/examples/all_atom/force_field_explicit_parameters/ice_crystal/run.in.nvt similarity index 100% rename from tools/moltemplate/examples/force_field_explicit_parameters/ice_crystal/run.in.nvt rename to tools/moltemplate/examples/all_atom/force_field_explicit_parameters/ice_crystal/run.in.nvt diff --git a/tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/README.TXT b/tools/moltemplate/examples/all_atom/force_field_explicit_parameters/nanotube+water/README.txt similarity index 92% rename from tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/README.TXT rename to tools/moltemplate/examples/all_atom/force_field_explicit_parameters/nanotube+water/README.txt index 83b4ad80bf2c5a4ef40d930a3041e7d791f68416..3c58fd009edca4619f80e8ae780603acef8bffb8 100644 --- a/tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/README.TXT +++ b/tools/moltemplate/examples/all_atom/force_field_explicit_parameters/nanotube+water/README.txt @@ -4,7 +4,7 @@ It was inspired by this paper: Laurent Joly, J. Chem. Phys. 135(21):214705 (2011) -------- Requirements: ------- -To run this system at constant pressure, it might help to compile LAMMPS +To run this system at constant pressure, it might help to compile LAMMPS with the optional RIGID package, and use "fix rigid" on the carbon. (The use of fix rigid is controversial.) Running at NVT does not require this. ------------------------------ @@ -14,13 +14,13 @@ Note: To investigate the behavior from that paper, it might be a good the walls, and the size of the system in the X and Y directions. Note: Explicit carbon-carbon bonds: - In the graphene and nanotube structures, I did not try to connect the + In the graphene and nanotube structures, I did not try to connect the carbon atoms together with bonds. Instead we will hold these structures - rigid by not integrating their equations of motion. - (If you want to simulate movement of the carbon atoms at high - temperatures or tension, LAMMPS has 3-body/many-body LAMMPS force-fields - available for simulating the behaviour of carbon in graphite. I know - that you don't need to specify bonds to use these force fields. I do + rigid by not integrating their equations of motion. + (If you want to simulate movement of the carbon atoms at high + temperatures or tension, LAMMPS has 3-body/many-body LAMMPS force-fields + available for simulating the behaviour of carbon in graphite. I know + that you don't need to specify bonds to use these force fields. I do not know know if these force fields work for nanotubes or graphene.) Note: Other modeling tools: @@ -29,7 +29,7 @@ Note: Other modeling tools: not generate bonds automatically. The "Nanotube Builder" and "topotools" plugins for for VMD can generate a nanotube with bonds in LAMMPS data format. You can then convert this data file to .LT format using the - ltemplify.py utility and then import it into another .LT file and play + ltemplify.py utility and then import it into another .LT file and play with it later. (In the "cnad-cnt" example, the carbon nanotube was built using "Nanotube Builder" and topotools, and processed with ltemplify.py) @@ -42,10 +42,10 @@ Note: Other modeling tools: # real graphene or nanotube junctions, you must be more careful. # To solve this problem: # Moltemplate allows you to move, customize or delete individual -# atoms near the boundary. You can move atoms by overwriting their +# atoms near the boundary. You can move atoms by overwriting their # coordinates using additional write("Data Atoms") statements (after # the walls and tube are created). You can also change their charge. -# Alternately, you could start with the structure provided here, and +# Alternately, you could start with the structure provided here, and # relax/minimize the coordinates of the carbon atoms using LAMMPS -# before using it in other simulations. +# before using it in other simulations. # Or you could do both (customization & minimization). diff --git a/tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/README_run.sh b/tools/moltemplate/examples/all_atom/force_field_explicit_parameters/nanotube+water/README_run.sh similarity index 92% rename from tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/README_run.sh rename to tools/moltemplate/examples/all_atom/force_field_explicit_parameters/nanotube+water/README_run.sh index ee5e5665aafcb74ec9b79f51b038ac76032615ab..98054c55512f83948bd48cbc5ed9e190918678bf 100755 --- a/tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/README_run.sh +++ b/tools/moltemplate/examples/all_atom/force_field_explicit_parameters/nanotube+water/README_run.sh @@ -1,6 +1,6 @@ # --- Running LAMMPS --- # -- Prerequisites: -- -# The 2 files "run.in.npt", and "run.in.nvt" are LAMMPS +# The 2 files "run.in.npt", and "run.in.nvt" are LAMMPS # input scripts which link to the input scripts and data files # you hopefully have created earlier with moltemplate.sh: # system.in.init, system.in.settings, system.data @@ -13,7 +13,7 @@ lmp_mpi -i run.in.nvt # minimization and simulation at constant volume lmp_mpi -i run.in.npt # minimization and simulation at constant pressure - # (WARNING: The "run.in.npt" example has not been + # (WARNING: The "run.in.npt" example has not been # rigorously tested and may fail.) diff --git a/tools/moltemplate/examples/coarse_grained_examples/abstract_random_heteropolymer/README_setup.sh b/tools/moltemplate/examples/all_atom/force_field_explicit_parameters/nanotube+water/README_setup.sh similarity index 94% rename from tools/moltemplate/examples/coarse_grained_examples/abstract_random_heteropolymer/README_setup.sh rename to tools/moltemplate/examples/all_atom/force_field_explicit_parameters/nanotube+water/README_setup.sh index acc5fbbaad49b3a92ac95ce1afd7eab2b952c70b..cf22ee0fa1868664c5f3cc786d382d1b511097d5 100755 --- a/tools/moltemplate/examples/coarse_grained_examples/abstract_random_heteropolymer/README_setup.sh +++ b/tools/moltemplate/examples/all_atom/force_field_explicit_parameters/nanotube+water/README_setup.sh @@ -9,14 +9,14 @@ cd moltemplate_files moltemplate.sh system.lt - # This will generate various files with names ending in *.in* and *.data. - # These files are the input files directly read by LAMMPS. Move them to + # This will generate various files with names ending in *.in* and *.data. + # These files are the input files directly read by LAMMPS. Move them to # the parent directory (or wherever you plan to run the simulation). mv -f system.in* system.data ../ # Optional: - # The "./output_ttree/" directory is full of temporary files generated by + # The "./output_ttree/" directory is full of temporary files generated by # moltemplate. They can be useful for debugging, but are usually thrown away. rm -rf output_ttree/ diff --git a/tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/README_visualize.txt b/tools/moltemplate/examples/all_atom/force_field_explicit_parameters/nanotube+water/README_visualize.txt similarity index 93% rename from tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/README_visualize.txt rename to tools/moltemplate/examples/all_atom/force_field_explicit_parameters/nanotube+water/README_visualize.txt index 206db9903844083dbdd72265a74722765d9f3d7d..04ff1f2e75f665f5aa22749b815c7dd2971f78f7 100644 --- a/tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/README_visualize.txt +++ b/tools/moltemplate/examples/all_atom/force_field_explicit_parameters/nanotube+water/README_visualize.txt @@ -4,7 +4,7 @@ 1) Build a PSF file for use in viewing with VMD. -This step works with VMD 1.9 and topotools 1.2. +This step works with VMD 1.9 and topotools 1.2. (Older versions, like VMD 1.8.6, don't support this.) @@ -17,7 +17,7 @@ c) Enter: topo readlammpsdata system.data full animate write psf system.psf -2) +2) Later, to Load a trajectory in VMD: @@ -31,17 +31,17 @@ Later, to Load a trajectory in VMD: ---- A note on trajectory format: ----- If the trajectory is a DUMP file, then make sure the it contains the -information you need for pbctools (see below. I've been using this +information you need for pbctools (see below. I've been using this command in my LAMMPS scripts to create the trajectories: dump 1 all custom 5000 DUMP_FILE.lammpstrj id mol type x y z ix iy iz -It's a good idea to use an atom_style which supports molecule-ID numbers -so that you can assign a molecule-ID number to each atom. (I think this +It's a good idea to use an atom_style which supports molecule-ID numbers +so that you can assign a molecule-ID number to each atom. (I think this is needed to wrap atom coordinates without breaking molecules in half.) -Of course, you don't have to save your trajectories in DUMP format, -(other formats like DCD work fine) I just mention dump files +Of course, you don't have to save your trajectories in DUMP format, +(other formats like DCD work fine) I just mention dump files because these are the files I'm familiar with. 3) ----- Wrap the coordinates to the unit cell @@ -62,12 +62,12 @@ d) Try entering these commands: pbc wrap -compound res -all -shiftcenterrel {-0.50 -0.52 0.0 } pbc box -shiftcenterrel {-0.50 -0.52 0.0 } - # Alternately if you have a solute whose atoms are all of type 1, + # Alternately if you have a solute whose atoms are all of type 1, # then you can also try this to center the box around it: pbc wrap -sel type=1 -all -centersel type=2 -center com -4) Optional: If you like, change the atom types in the PSF file so +4) Optional: If you like, change the atom types in the PSF file so that VMD recognizes the atom types, use something like: sed -e 's/ 1 1 / C C /g' < system.psf > temp1.psf diff --git a/tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/images/graphene_unit_cell.jpg b/tools/moltemplate/examples/all_atom/force_field_explicit_parameters/nanotube+water/images/graphene_unit_cell.jpg similarity index 100% rename from tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/images/graphene_unit_cell.jpg rename to tools/moltemplate/examples/all_atom/force_field_explicit_parameters/nanotube+water/images/graphene_unit_cell.jpg diff --git a/tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/images/nanotube+walls+water_side_pbc_t=0ps_LR.jpg b/tools/moltemplate/examples/all_atom/force_field_explicit_parameters/nanotube+water/images/nanotube+walls+water_side_pbc_t=0ps_LR.jpg similarity index 100% rename from tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/images/nanotube+walls+water_side_pbc_t=0ps_LR.jpg rename to tools/moltemplate/examples/all_atom/force_field_explicit_parameters/nanotube+water/images/nanotube+walls+water_side_pbc_t=0ps_LR.jpg diff --git a/tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/images/nanotube+walls+water_side_pbc_t=108ps_LR.jpg b/tools/moltemplate/examples/all_atom/force_field_explicit_parameters/nanotube+water/images/nanotube+walls+water_side_pbc_t=108ps_LR.jpg similarity index 100% rename from tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/images/nanotube+walls+water_side_pbc_t=108ps_LR.jpg rename to tools/moltemplate/examples/all_atom/force_field_explicit_parameters/nanotube+water/images/nanotube+walls+water_side_pbc_t=108ps_LR.jpg diff --git a/tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/images/nanotube+walls+water_side_pbc_t=305ps_LR.jpg b/tools/moltemplate/examples/all_atom/force_field_explicit_parameters/nanotube+water/images/nanotube+walls+water_side_pbc_t=305ps_LR.jpg similarity index 100% rename from tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/images/nanotube+walls+water_side_pbc_t=305ps_LR.jpg rename to tools/moltemplate/examples/all_atom/force_field_explicit_parameters/nanotube+water/images/nanotube+walls+water_side_pbc_t=305ps_LR.jpg diff --git a/tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/images/nanotube+walls+water_top_nopbc_t=0_LR.jpg b/tools/moltemplate/examples/all_atom/force_field_explicit_parameters/nanotube+water/images/nanotube+walls+water_top_nopbc_t=0_LR.jpg similarity index 100% rename from tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/images/nanotube+walls+water_top_nopbc_t=0_LR.jpg rename to tools/moltemplate/examples/all_atom/force_field_explicit_parameters/nanotube+water/images/nanotube+walls+water_top_nopbc_t=0_LR.jpg diff --git a/tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/images/nanotube+walls_side_nopbc_LR.jpg b/tools/moltemplate/examples/all_atom/force_field_explicit_parameters/nanotube+water/images/nanotube+walls_side_nopbc_LR.jpg similarity index 100% rename from tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/images/nanotube+walls_side_nopbc_LR.jpg rename to tools/moltemplate/examples/all_atom/force_field_explicit_parameters/nanotube+water/images/nanotube+walls_side_nopbc_LR.jpg diff --git a/tools/moltemplate/examples/all_atom/force_field_explicit_parameters/nanotube+water/images/nanotube_capillary_bbk_LR.jpg b/tools/moltemplate/examples/all_atom/force_field_explicit_parameters/nanotube+water/images/nanotube_capillary_bbk_LR.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9cba533530b7028661b9e0b699257038cc08a577 Binary files /dev/null and b/tools/moltemplate/examples/all_atom/force_field_explicit_parameters/nanotube+water/images/nanotube_capillary_bbk_LR.jpg differ diff --git a/tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/images/water_side_nopbc_LR.jpg b/tools/moltemplate/examples/all_atom/force_field_explicit_parameters/nanotube+water/images/water_side_nopbc_LR.jpg similarity index 100% rename from tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/images/water_side_nopbc_LR.jpg rename to tools/moltemplate/examples/all_atom/force_field_explicit_parameters/nanotube+water/images/water_side_nopbc_LR.jpg diff --git a/tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/moltemplate_files/README.sh b/tools/moltemplate/examples/all_atom/force_field_explicit_parameters/nanotube+water/moltemplate_files/README.sh similarity index 81% rename from tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/moltemplate_files/README.sh rename to tools/moltemplate/examples/all_atom/force_field_explicit_parameters/nanotube+water/moltemplate_files/README.sh index 1cc480669d620e04289409869bcee88f69310f9d..15fe07133f124a6a983158da60bd8fcb74d76789 100755 --- a/tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/moltemplate_files/README.sh +++ b/tools/moltemplate/examples/all_atom/force_field_explicit_parameters/nanotube+water/moltemplate_files/README.sh @@ -3,20 +3,20 @@ # # Laurent Joly, J. Chem. Phys. 135(21):214705 (2011) # -# Note: To investigate the behavior from that paper, you would have to increase +# Note: To investigate the behavior from that paper, you would have to increase # the spacing between the two graphene sheets to prevent the water from -# making contact with the lower graphene wall. +# making contact with the lower graphene wall. # # Requirements: 1) Set your $MOLTEMPLATE_PATH variable # 2) The "RIGID" LAMMPS package may be needed later # To run this system at constant pressure, it might help to compile LAMMPS with # the optional RIGID package, and use "fix rigid" on the carbon. (Optional.) # -# Also, if you have not yet done this set your MOLTEMPLATE_PATH environment -# variable to access it. (See installation instructions.) +# Also, if you have not yet done this set your MOLTEMPLATE_PATH environment +# variable to access it. (See installation instructions.) # Most likely some of the files in this example (like graphene.lt, tip3p2004.lt) -# are not in this directory, but are in the "src/moltemplate_force_fields/" -# subdirectory. +# are not in this directory, but are in the "force_fields" subdirectory +# distributed with moltemplate. # # ----------------------------------------------------------- # diff --git a/tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/moltemplate_files/graphene.lt b/tools/moltemplate/examples/all_atom/force_field_explicit_parameters/nanotube+water/moltemplate_files/graphene.lt similarity index 78% rename from tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/moltemplate_files/graphene.lt rename to tools/moltemplate/examples/all_atom/force_field_explicit_parameters/nanotube+water/moltemplate_files/graphene.lt index c54a380f62ec40951e3be65d4bcf9371b72b0841..3bc476c3ab06b27c2f3bd31b0716873755165485 100644 --- a/tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/moltemplate_files/graphene.lt +++ b/tools/moltemplate/examples/all_atom/force_field_explicit_parameters/nanotube+water/moltemplate_files/graphene.lt @@ -17,9 +17,15 @@ Graphene { # i j epsilon sigma pair_coeff @atom:C @atom:C lj/cut/coul/long 0.068443 3.407 - # These Lennard-Jones parameters come from + # The Lennard-Jones parameters above were chosen to realistically model + # the interaction between graphene and water # R. Saito, R. Matsuo, T. Kimura, G. Dresselhaus, M.S. Dresselhaus, # Chem Phys Lett, 348:187 (2001) + # NOTE: If you want to simulate movement of the carbon atoms, then you must + # choose a more appropriate force field for the carbon atoms, such as + # AIREBO or Tersoff. You can do this by editing the "pair_coeff" above. + # (The paper by C.F. Cornwell, C.R. Welch, J. Chem. Phys. (2011), Vol 134, + # demonstrates how to use the AIREBO potential in LAMMPS.) # Define a group consisting of only carbon atoms in graphene molecules group Cgraphene type @atom:C diff --git a/tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/moltemplate_files/graphene_walls.lt b/tools/moltemplate/examples/all_atom/force_field_explicit_parameters/nanotube+water/moltemplate_files/graphene_walls.lt similarity index 100% rename from tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/moltemplate_files/graphene_walls.lt rename to tools/moltemplate/examples/all_atom/force_field_explicit_parameters/nanotube+water/moltemplate_files/graphene_walls.lt diff --git a/tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/moltemplate_files/graphite.lt b/tools/moltemplate/examples/all_atom/force_field_explicit_parameters/nanotube+water/moltemplate_files/graphite.lt similarity index 100% rename from tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/moltemplate_files/graphite.lt rename to tools/moltemplate/examples/all_atom/force_field_explicit_parameters/nanotube+water/moltemplate_files/graphite.lt diff --git a/tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/moltemplate_files/nanotube.lt b/tools/moltemplate/examples/all_atom/force_field_explicit_parameters/nanotube+water/moltemplate_files/nanotube.lt similarity index 100% rename from tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/moltemplate_files/nanotube.lt rename to tools/moltemplate/examples/all_atom/force_field_explicit_parameters/nanotube+water/moltemplate_files/nanotube.lt diff --git a/tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/moltemplate_files/spce.lt b/tools/moltemplate/examples/all_atom/force_field_explicit_parameters/nanotube+water/moltemplate_files/spce.lt similarity index 100% rename from tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/moltemplate_files/spce.lt rename to tools/moltemplate/examples/all_atom/force_field_explicit_parameters/nanotube+water/moltemplate_files/spce.lt diff --git a/tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/moltemplate_files/system.lt b/tools/moltemplate/examples/all_atom/force_field_explicit_parameters/nanotube+water/moltemplate_files/system.lt similarity index 100% rename from tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/moltemplate_files/system.lt rename to tools/moltemplate/examples/all_atom/force_field_explicit_parameters/nanotube+water/moltemplate_files/system.lt diff --git a/tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/moltemplate_files/water_box.lt b/tools/moltemplate/examples/all_atom/force_field_explicit_parameters/nanotube+water/moltemplate_files/water_box.lt similarity index 100% rename from tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/moltemplate_files/water_box.lt rename to tools/moltemplate/examples/all_atom/force_field_explicit_parameters/nanotube+water/moltemplate_files/water_box.lt diff --git a/tools/moltemplate/examples/coarse_grained_examples/3bodyWater+hydrocarbons_MW+TraPPE/moltemplate_files/watmw.lt b/tools/moltemplate/examples/all_atom/force_field_explicit_parameters/nanotube+water/moltemplate_files/watmw.lt similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/3bodyWater+hydrocarbons_MW+TraPPE/moltemplate_files/watmw.lt rename to tools/moltemplate/examples/all_atom/force_field_explicit_parameters/nanotube+water/moltemplate_files/watmw.lt diff --git a/tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/run.in.npt b/tools/moltemplate/examples/all_atom/force_field_explicit_parameters/nanotube+water/run.in.npt similarity index 100% rename from tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/run.in.npt rename to tools/moltemplate/examples/all_atom/force_field_explicit_parameters/nanotube+water/run.in.npt diff --git a/tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/run.in.nvt b/tools/moltemplate/examples/all_atom/force_field_explicit_parameters/nanotube+water/run.in.nvt similarity index 100% rename from tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/run.in.nvt rename to tools/moltemplate/examples/all_atom/force_field_explicit_parameters/nanotube+water/run.in.nvt diff --git a/tools/moltemplate/examples/force_field_explicit_parameters/waterSPCE+Na+Cl/README_run.sh b/tools/moltemplate/examples/all_atom/force_field_explicit_parameters/waterSPCE+Na+Cl/README_run.sh similarity index 95% rename from tools/moltemplate/examples/force_field_explicit_parameters/waterSPCE+Na+Cl/README_run.sh rename to tools/moltemplate/examples/all_atom/force_field_explicit_parameters/waterSPCE+Na+Cl/README_run.sh index 70c34bd6f460a331f252799dec6ed6e496abe3bc..6f66c68f1a45e62c4a24130d03ce53f153317ed3 100755 --- a/tools/moltemplate/examples/force_field_explicit_parameters/waterSPCE+Na+Cl/README_run.sh +++ b/tools/moltemplate/examples/all_atom/force_field_explicit_parameters/waterSPCE+Na+Cl/README_run.sh @@ -1,6 +1,6 @@ # --- Running LAMMPS --- # -- Prerequisites: -- -# The 2 files "run.in.npt", and "run.in.nvt" are LAMMPS +# The 2 files "run.in.npt", and "run.in.nvt" are LAMMPS # input scripts which link to the input scripts and data files # you hopefully have created earlier with moltemplate.sh: # system.in.init, system.in.settings, system.data diff --git a/tools/moltemplate/examples/force_field_explicit_parameters/waterSPCE+Na+Cl/README_setup.sh b/tools/moltemplate/examples/all_atom/force_field_explicit_parameters/waterSPCE+Na+Cl/README_setup.sh similarity index 94% rename from tools/moltemplate/examples/force_field_explicit_parameters/waterSPCE+Na+Cl/README_setup.sh rename to tools/moltemplate/examples/all_atom/force_field_explicit_parameters/waterSPCE+Na+Cl/README_setup.sh index 3a0821269225bb7d10f1c9a08a5097b6da9a9f1b..68cad16a79619679a141292bbfe7852d6417d332 100755 --- a/tools/moltemplate/examples/force_field_explicit_parameters/waterSPCE+Na+Cl/README_setup.sh +++ b/tools/moltemplate/examples/all_atom/force_field_explicit_parameters/waterSPCE+Na+Cl/README_setup.sh @@ -9,14 +9,14 @@ cd moltemplate_files moltemplate.sh -atomstyle full system.lt - # This will generate various files with names ending in *.in* and *.data. - # These files are the input files directly read by LAMMPS. Move them to + # This will generate various files with names ending in *.in* and *.data. + # These files are the input files directly read by LAMMPS. Move them to # the parent directory (or wherever you plan to run the simulation). mv -f system.in* system.data ../ # Optional: - # The "./output_ttree/" directory is full of temporary files generated by + # The "./output_ttree/" directory is full of temporary files generated by # moltemplate. They can be useful for debugging, but are usually thrown away. rm -rf output_ttree/ diff --git a/tools/moltemplate/examples/all_atom/force_field_explicit_parameters/waterSPCE+Na+Cl/README_visualize.txt b/tools/moltemplate/examples/all_atom/force_field_explicit_parameters/waterSPCE+Na+Cl/README_visualize.txt new file mode 100644 index 0000000000000000000000000000000000000000..a3e3ed620ec8b32fb6da484368dc3fc299bad6de --- /dev/null +++ b/tools/moltemplate/examples/all_atom/force_field_explicit_parameters/waterSPCE+Na+Cl/README_visualize.txt @@ -0,0 +1,87 @@ + + ------- To view a lammps trajectory in VMD -------- + + +1) Build a PSF file for use in viewing with VMD. + +This step works with VMD 1.9 and topotools 1.2. +(Older versions, like VMD 1.8.6, don't support this.) + + +a) Start VMD +b) Menu Extensions->Tk Console +c) Enter: + +(I assume that the the DATA file is called "system.data") + + topo readlammpsdata system.data full + animate write psf system.psf + +2) + +Later, to Load a trajectory in VMD: + + Start VMD + Select menu: File->New Molecule + -Browse to select the PSF file you created above, and load it. + (Don't close the window yet.) + -Browse to select the trajectory file. + If necessary, for "file type" select: "LAMMPS Trajectory" + Load it. + + ---- A note on trajectory format: ----- +If the trajectory is a DUMP file, then make sure the it contains the +information you need for pbctools (see below. I've been using this +command in my LAMMPS scripts to create the trajectories: + + dump 1 all custom 5000 DUMP_FILE.lammpstrj id mol type x y z ix iy iz + +It's a good idea to use an atom_style which supports molecule-ID numbers +so that you can assign a molecule-ID number to each atom. (I think this +is needed to wrap atom coordinates without breaking molecules in half.) + +Of course, you don't have to save your trajectories in DUMP format, +(other formats like DCD work fine) I just mention dump files +because these are the files I'm familiar with. + +3) ----- Wrap the coordinates to the unit cell + (without cutting the molecules in half) + +a) Start VMD +b) Load the trajectory in VMD (see above) +c) Menu Extensions->Tk Console +d) Try entering these commands: + + pbc wrap -compound res -all + pbc box + + ----- Optional ---- + Sometimes the solvent or membrane obscures the view of the solute. + It can help to shift the location of the periodic boundary box + To shift the box in the y direction (for example) do this: + + pbc wrap -compound res -all -shiftcenterrel {0.0 0.15 0.0} + pbc box -shiftcenterrel {0.0 0.15 0.0} + + Distances are measured in units of box-length fractions, not Angstroms. + + Alternately if you have a solute whose atoms are all of type 1, + then you can also try this to center the box around it: + + pbc wrap -sel type=1 -all -centersel type=2 -center com + +4) + You should check if your periodic boundary conditions are too small. + To do that: + select Graphics->Representations menu option + click on the "Periodic" tab, and + click on the "+x", "-x", "+y", "-y", "+z", "-z" checkboxes. + +5) Optional: If you like, change the atom types in the PSF file so + that VMD recognizes the atom types, use something like: + +sed -e 's/ 1 1 / C C /g' < system.psf > temp1.psf +sed -e 's/ 2 2 / H H /g' < temp1.psf > temp2.psf +sed -e 's/ 3 3 / P P /g' < temp2.psf > system.psf + +(If you do this, it might effect step 2 above.) diff --git a/tools/moltemplate/examples/force_field_explicit_parameters/waterSPCE+Na+Cl/images/Cl.jpg b/tools/moltemplate/examples/all_atom/force_field_explicit_parameters/waterSPCE+Na+Cl/images/Cl.jpg similarity index 100% rename from tools/moltemplate/examples/force_field_explicit_parameters/waterSPCE+Na+Cl/images/Cl.jpg rename to tools/moltemplate/examples/all_atom/force_field_explicit_parameters/waterSPCE+Na+Cl/images/Cl.jpg diff --git a/tools/moltemplate/examples/force_field_explicit_parameters/waterSPCE+Na+Cl/images/Na.jpg b/tools/moltemplate/examples/all_atom/force_field_explicit_parameters/waterSPCE+Na+Cl/images/Na.jpg similarity index 100% rename from tools/moltemplate/examples/force_field_explicit_parameters/waterSPCE+Na+Cl/images/Na.jpg rename to tools/moltemplate/examples/all_atom/force_field_explicit_parameters/waterSPCE+Na+Cl/images/Na.jpg diff --git a/tools/moltemplate/examples/force_field_explicit_parameters/waterSPCE+Na+Cl/images/wat.jpg b/tools/moltemplate/examples/all_atom/force_field_explicit_parameters/waterSPCE+Na+Cl/images/wat.jpg similarity index 100% rename from tools/moltemplate/examples/force_field_explicit_parameters/waterSPCE+Na+Cl/images/wat.jpg rename to tools/moltemplate/examples/all_atom/force_field_explicit_parameters/waterSPCE+Na+Cl/images/wat.jpg diff --git a/tools/moltemplate/examples/force_field_explicit_parameters/waterSPCE+Na+Cl/images/waterSPCE+Na+Cl_t=0.jpg b/tools/moltemplate/examples/all_atom/force_field_explicit_parameters/waterSPCE+Na+Cl/images/waterSPCE+Na+Cl_t=0.jpg similarity index 100% rename from tools/moltemplate/examples/force_field_explicit_parameters/waterSPCE+Na+Cl/images/waterSPCE+Na+Cl_t=0.jpg rename to tools/moltemplate/examples/all_atom/force_field_explicit_parameters/waterSPCE+Na+Cl/images/waterSPCE+Na+Cl_t=0.jpg diff --git a/tools/moltemplate/examples/force_field_explicit_parameters/waterSPCE+Na+Cl/images/waterSPCE+Na+Cl_t=100ps.jpg b/tools/moltemplate/examples/all_atom/force_field_explicit_parameters/waterSPCE+Na+Cl/images/waterSPCE+Na+Cl_t=100ps.jpg similarity index 100% rename from tools/moltemplate/examples/force_field_explicit_parameters/waterSPCE+Na+Cl/images/waterSPCE+Na+Cl_t=100ps.jpg rename to tools/moltemplate/examples/all_atom/force_field_explicit_parameters/waterSPCE+Na+Cl/images/waterSPCE+Na+Cl_t=100ps.jpg diff --git a/tools/moltemplate/examples/force_field_explicit_parameters/waterSPCE+Na+Cl/moltemplate_files/ions.lt b/tools/moltemplate/examples/all_atom/force_field_explicit_parameters/waterSPCE+Na+Cl/moltemplate_files/ions.lt similarity index 100% rename from tools/moltemplate/examples/force_field_explicit_parameters/waterSPCE+Na+Cl/moltemplate_files/ions.lt rename to tools/moltemplate/examples/all_atom/force_field_explicit_parameters/waterSPCE+Na+Cl/moltemplate_files/ions.lt diff --git a/tools/moltemplate/examples/force_field_explicit_parameters/waterSPCE+Na+Cl/moltemplate_files/spce.lt b/tools/moltemplate/examples/all_atom/force_field_explicit_parameters/waterSPCE+Na+Cl/moltemplate_files/spce.lt similarity index 100% rename from tools/moltemplate/examples/force_field_explicit_parameters/waterSPCE+Na+Cl/moltemplate_files/spce.lt rename to tools/moltemplate/examples/all_atom/force_field_explicit_parameters/waterSPCE+Na+Cl/moltemplate_files/spce.lt diff --git a/tools/moltemplate/examples/force_field_explicit_parameters/waterSPCE+Na+Cl/moltemplate_files/system.lt b/tools/moltemplate/examples/all_atom/force_field_explicit_parameters/waterSPCE+Na+Cl/moltemplate_files/system.lt similarity index 92% rename from tools/moltemplate/examples/force_field_explicit_parameters/waterSPCE+Na+Cl/moltemplate_files/system.lt rename to tools/moltemplate/examples/all_atom/force_field_explicit_parameters/waterSPCE+Na+Cl/moltemplate_files/system.lt index 639222d182418fc1141749d11532cacb09d99e23..af38795022a227f5ea7dd50c143595c8eb744b19 100644 --- a/tools/moltemplate/examples/force_field_explicit_parameters/waterSPCE+Na+Cl/moltemplate_files/system.lt +++ b/tools/moltemplate/examples/all_atom/force_field_explicit_parameters/waterSPCE+Na+Cl/moltemplate_files/system.lt @@ -1,5 +1,6 @@ import "spce.lt" # <- This defines the SPCE water molecule. This file is - # located in the "src/moltemplate_force_fields" directory. + # located in the "force_fields" subdirectory + # distributed with moltemplate import "ions.lt" # <- This defines the ions "NaIon" and "ClIon". diff --git a/tools/moltemplate/examples/force_field_explicit_parameters/waterSPCE+Na+Cl/run.in.npt b/tools/moltemplate/examples/all_atom/force_field_explicit_parameters/waterSPCE+Na+Cl/run.in.npt similarity index 100% rename from tools/moltemplate/examples/force_field_explicit_parameters/waterSPCE+Na+Cl/run.in.npt rename to tools/moltemplate/examples/all_atom/force_field_explicit_parameters/waterSPCE+Na+Cl/run.in.npt diff --git a/tools/moltemplate/examples/force_field_explicit_parameters/waterSPCE+Na+Cl/run.in.nvt b/tools/moltemplate/examples/all_atom/force_field_explicit_parameters/waterSPCE+Na+Cl/run.in.nvt similarity index 100% rename from tools/moltemplate/examples/force_field_explicit_parameters/waterSPCE+Na+Cl/run.in.nvt rename to tools/moltemplate/examples/all_atom/force_field_explicit_parameters/waterSPCE+Na+Cl/run.in.nvt diff --git a/tools/moltemplate/examples/coarse_grained/3bodyWater+hydrocarbons_MW+TraPPE/README.txt b/tools/moltemplate/examples/coarse_grained/3bodyWater+hydrocarbons_MW+TraPPE/README.txt new file mode 100644 index 0000000000000000000000000000000000000000..6b8cc5a172bb46253365282c76d6699324c911d1 --- /dev/null +++ b/tools/moltemplate/examples/coarse_grained/3bodyWater+hydrocarbons_MW+TraPPE/README.txt @@ -0,0 +1,30 @@ +This example was intended to demonstrate the flexibility of LAMMPS and +moltemplate. + +This is a relatively complex example containing two different types of +coarse-grained (united-atom) molecules. This simulation uses the 3-body +(non-pairwise-additive) coarse-grained "mW" water model: +Molinero, V. and Moore, E.B., J. Phys. Chem. B 2009, 113, 4008-4016 +Simulations using the "mW" water model can be several orders of magnitude +faster than simulations using simple all-atom models such as SPCE or TIP3P. + +The united-atom TraPPE force field was used for the cyclododecane molecules. + +Any force-field available in LAMMPS can be used with moltemplate. New force-fields are added by end users regularly. For a current list, see: +http://lammps.sandia.gov/doc/Section_commands.html#pair-style-potentials + +More detailed instructions on how to build LAMMPS input files and +run a short simulation are provided in other README files. + +step 1) +README_setup.sh + +step 2) +README_run.sh + + +-------- REQUIREMENTS: --------- + This example requires the "MANYBODY" package. + If lammps complains of a missing pair style enter "make yes-MANYBODY" + into the shell before compiling lammps. For details see: + http://lammps.sandia.gov/doc/Section_start.html#start_3 diff --git a/tools/moltemplate/examples/coarse_grained_examples/3bodyWater+hydrocarbons_MW+TraPPE/README_run.sh b/tools/moltemplate/examples/coarse_grained/3bodyWater+hydrocarbons_MW+TraPPE/README_run.sh similarity index 95% rename from tools/moltemplate/examples/coarse_grained_examples/3bodyWater+hydrocarbons_MW+TraPPE/README_run.sh rename to tools/moltemplate/examples/coarse_grained/3bodyWater+hydrocarbons_MW+TraPPE/README_run.sh index 68acee49b942c7a7660fcbdfd02983964a6717ac..c2e6bae3ba0230e7f07d3da3104e2b86c4cf42ed 100755 --- a/tools/moltemplate/examples/coarse_grained_examples/3bodyWater+hydrocarbons_MW+TraPPE/README_run.sh +++ b/tools/moltemplate/examples/coarse_grained/3bodyWater+hydrocarbons_MW+TraPPE/README_run.sh @@ -1,6 +1,6 @@ # --- Running LAMMPS --- # -- Prerequisites: -- -# The 2 files "run.in.npt", and "run.in.nvt" are LAMMPS +# The 2 files "run.in.npt", and "run.in.nvt" are LAMMPS # input scripts which link to the input scripts and data files # you hopefully have created earlier with moltemplate.sh: # system.in.init, system.in.settings, system.data, system.in.sw diff --git a/tools/moltemplate/examples/coarse_grained/3bodyWater+hydrocarbons_MW+TraPPE/README_setup.sh b/tools/moltemplate/examples/coarse_grained/3bodyWater+hydrocarbons_MW+TraPPE/README_setup.sh new file mode 100755 index 0000000000000000000000000000000000000000..55d633894e8b2af1a6fc7286779ad47245e5f43a --- /dev/null +++ b/tools/moltemplate/examples/coarse_grained/3bodyWater+hydrocarbons_MW+TraPPE/README_setup.sh @@ -0,0 +1,30 @@ + + +# Create LAMMPS input files this way: +cd moltemplate_files + + # run moltemplate + + moltemplate.sh -a "@atom:WatMW/mW 1" system.lt + + # Each atom type (eg "mW") must be assigned to an integer (because LAMMPS + # does not understand descriptive names). Normally LAMMPS does not care what + # these numbers are, however many-body force-fields (used in this example) + # are an exception. Here we just want to make sure that the "mW" atom + # type is assigned to number "1" so we use -a "@atom:WatMW/mW 1" + # (The full-name of the atom is "WatMW/mW", not "mW", because it is part + # of the "WatMW" molecule-object. See "watmw.lt" for details.) + + + # This will generate various files with names ending in *.in* and *.data. + # These files are the input files directly read by LAMMPS. Move them to + # the parent directory (or wherever you plan to run the simulation). + + mv -f system.in* system.data ../ + + # Optional: + # The "./output_ttree/" directory is full of temporary files generated by + # moltemplate. They can be useful for debugging, but are usually thrown away. + rm -rf output_ttree/ + +cd ../ diff --git a/tools/moltemplate/examples/coarse_grained/3bodyWater+hydrocarbons_MW+TraPPE/README_visualize.txt b/tools/moltemplate/examples/coarse_grained/3bodyWater+hydrocarbons_MW+TraPPE/README_visualize.txt new file mode 100644 index 0000000000000000000000000000000000000000..a3e3ed620ec8b32fb6da484368dc3fc299bad6de --- /dev/null +++ b/tools/moltemplate/examples/coarse_grained/3bodyWater+hydrocarbons_MW+TraPPE/README_visualize.txt @@ -0,0 +1,87 @@ + + ------- To view a lammps trajectory in VMD -------- + + +1) Build a PSF file for use in viewing with VMD. + +This step works with VMD 1.9 and topotools 1.2. +(Older versions, like VMD 1.8.6, don't support this.) + + +a) Start VMD +b) Menu Extensions->Tk Console +c) Enter: + +(I assume that the the DATA file is called "system.data") + + topo readlammpsdata system.data full + animate write psf system.psf + +2) + +Later, to Load a trajectory in VMD: + + Start VMD + Select menu: File->New Molecule + -Browse to select the PSF file you created above, and load it. + (Don't close the window yet.) + -Browse to select the trajectory file. + If necessary, for "file type" select: "LAMMPS Trajectory" + Load it. + + ---- A note on trajectory format: ----- +If the trajectory is a DUMP file, then make sure the it contains the +information you need for pbctools (see below. I've been using this +command in my LAMMPS scripts to create the trajectories: + + dump 1 all custom 5000 DUMP_FILE.lammpstrj id mol type x y z ix iy iz + +It's a good idea to use an atom_style which supports molecule-ID numbers +so that you can assign a molecule-ID number to each atom. (I think this +is needed to wrap atom coordinates without breaking molecules in half.) + +Of course, you don't have to save your trajectories in DUMP format, +(other formats like DCD work fine) I just mention dump files +because these are the files I'm familiar with. + +3) ----- Wrap the coordinates to the unit cell + (without cutting the molecules in half) + +a) Start VMD +b) Load the trajectory in VMD (see above) +c) Menu Extensions->Tk Console +d) Try entering these commands: + + pbc wrap -compound res -all + pbc box + + ----- Optional ---- + Sometimes the solvent or membrane obscures the view of the solute. + It can help to shift the location of the periodic boundary box + To shift the box in the y direction (for example) do this: + + pbc wrap -compound res -all -shiftcenterrel {0.0 0.15 0.0} + pbc box -shiftcenterrel {0.0 0.15 0.0} + + Distances are measured in units of box-length fractions, not Angstroms. + + Alternately if you have a solute whose atoms are all of type 1, + then you can also try this to center the box around it: + + pbc wrap -sel type=1 -all -centersel type=2 -center com + +4) + You should check if your periodic boundary conditions are too small. + To do that: + select Graphics->Representations menu option + click on the "Periodic" tab, and + click on the "+x", "-x", "+y", "-y", "+z", "-z" checkboxes. + +5) Optional: If you like, change the atom types in the PSF file so + that VMD recognizes the atom types, use something like: + +sed -e 's/ 1 1 / C C /g' < system.psf > temp1.psf +sed -e 's/ 2 2 / H H /g' < temp1.psf > temp2.psf +sed -e 's/ 3 3 / P P /g' < temp2.psf > system.psf + +(If you do this, it might effect step 2 above.) diff --git a/tools/moltemplate/examples/coarse_grained_examples/3bodyWater+hydrocarbons_MW+TraPPE/images/cyclododecane+watMW_t=0ps_LR.jpg b/tools/moltemplate/examples/coarse_grained/3bodyWater+hydrocarbons_MW+TraPPE/images/cyclododecane+watMW_t=0ps_LR.jpg similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/3bodyWater+hydrocarbons_MW+TraPPE/images/cyclododecane+watMW_t=0ps_LR.jpg rename to tools/moltemplate/examples/coarse_grained/3bodyWater+hydrocarbons_MW+TraPPE/images/cyclododecane+watMW_t=0ps_LR.jpg diff --git a/tools/moltemplate/examples/coarse_grained_examples/3bodyWater+hydrocarbons_MW+TraPPE/images/cyclododecane+watMW_t=400ps_LR.jpg b/tools/moltemplate/examples/coarse_grained/3bodyWater+hydrocarbons_MW+TraPPE/images/cyclododecane+watMW_t=400ps_LR.jpg similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/3bodyWater+hydrocarbons_MW+TraPPE/images/cyclododecane+watMW_t=400ps_LR.jpg rename to tools/moltemplate/examples/coarse_grained/3bodyWater+hydrocarbons_MW+TraPPE/images/cyclododecane+watMW_t=400ps_LR.jpg diff --git a/tools/moltemplate/examples/coarse_grained_examples/3bodyWater+hydrocarbons_MW+TraPPE/images/cyclododecane+watMW_t=50ps_LR.jpg b/tools/moltemplate/examples/coarse_grained/3bodyWater+hydrocarbons_MW+TraPPE/images/cyclododecane+watMW_t=50ps_LR.jpg similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/3bodyWater+hydrocarbons_MW+TraPPE/images/cyclododecane+watMW_t=50ps_LR.jpg rename to tools/moltemplate/examples/coarse_grained/3bodyWater+hydrocarbons_MW+TraPPE/images/cyclododecane+watMW_t=50ps_LR.jpg diff --git a/tools/moltemplate/examples/coarse_grained_examples/3bodyWater+hydrocarbons_MW+TraPPE/images/cyclopentane.jpg b/tools/moltemplate/examples/coarse_grained/3bodyWater+hydrocarbons_MW+TraPPE/images/cyclopentane.jpg similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/3bodyWater+hydrocarbons_MW+TraPPE/images/cyclopentane.jpg rename to tools/moltemplate/examples/coarse_grained/3bodyWater+hydrocarbons_MW+TraPPE/images/cyclopentane.jpg diff --git a/tools/moltemplate/examples/coarse_grained_examples/3bodyWater+hydrocarbons_MW+TraPPE/images/cyclopentane_unrelaxed.jpg b/tools/moltemplate/examples/coarse_grained/3bodyWater+hydrocarbons_MW+TraPPE/images/cyclopentane_unrelaxed.jpg similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/3bodyWater+hydrocarbons_MW+TraPPE/images/cyclopentane_unrelaxed.jpg rename to tools/moltemplate/examples/coarse_grained/3bodyWater+hydrocarbons_MW+TraPPE/images/cyclopentane_unrelaxed.jpg diff --git a/tools/moltemplate/examples/coarse_grained_examples/3bodyWater+hydrocarbons_MW+TraPPE/images/watMW.jpg b/tools/moltemplate/examples/coarse_grained/3bodyWater+hydrocarbons_MW+TraPPE/images/watMW.jpg similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/3bodyWater+hydrocarbons_MW+TraPPE/images/watMW.jpg rename to tools/moltemplate/examples/coarse_grained/3bodyWater+hydrocarbons_MW+TraPPE/images/watMW.jpg diff --git a/tools/moltemplate/examples/coarse_grained_examples/3bodyWater+hydrocarbons_MW+TraPPE/moltemplate_files/README.sh b/tools/moltemplate/examples/coarse_grained/3bodyWater+hydrocarbons_MW+TraPPE/moltemplate_files/README.sh similarity index 98% rename from tools/moltemplate/examples/coarse_grained_examples/3bodyWater+hydrocarbons_MW+TraPPE/moltemplate_files/README.sh rename to tools/moltemplate/examples/coarse_grained/3bodyWater+hydrocarbons_MW+TraPPE/moltemplate_files/README.sh index 97b9f577d9740e04fa735c78d920cb8f1a247236..1e16d360e0e97ae4dab65d53c4e2e5d33b13ad23 100755 --- a/tools/moltemplate/examples/coarse_grained_examples/3bodyWater+hydrocarbons_MW+TraPPE/moltemplate_files/README.sh +++ b/tools/moltemplate/examples/coarse_grained/3bodyWater+hydrocarbons_MW+TraPPE/moltemplate_files/README.sh @@ -6,6 +6,6 @@ moltemplate.sh -a "@atom:/WatMW/mW 1" system.lt # (This is necessary for the pair_coeff command to work. # See system.lt for details.) -# Note: To get rid of the annoying "atom_style unspecified warnings, +# Note: To get rid of the annoying "atom_style unspecified warnings, # use the "-atomstyle" command line argument, as in: # moltemplate.sh -atomstyle full -a "@atom:/WatMW/mW 1" system.lt diff --git a/tools/moltemplate/examples/coarse_grained/3bodyWater+hydrocarbons_MW+TraPPE/moltemplate_files/cyclododecane.lt b/tools/moltemplate/examples/coarse_grained/3bodyWater+hydrocarbons_MW+TraPPE/moltemplate_files/cyclododecane.lt new file mode 100644 index 0000000000000000000000000000000000000000..5c06c60c6cccc6804aac92c1b41aec8b05a2ab34 --- /dev/null +++ b/tools/moltemplate/examples/coarse_grained/3bodyWater+hydrocarbons_MW+TraPPE/moltemplate_files/cyclododecane.lt @@ -0,0 +1,55 @@ +import "trappe1998.lt" + +# The "trappe1998.lt" file is usually located in $MOLTEMPLATE_PATH (and is +# distributed with moltemplate. See the "Installation" section in the manual.) +# It contains definitions of the atoms "CH2", "CH3", and "CH4", as well +# as "saturated" bonds, and the parameters for (bonded/nonbonded) +# interactions between these atoms (all enclosed within the "TraPPE" namespace). + + +Cyclododecane inherits TraPPE { + + write('Data Atoms') { + $atom:C1 $mol:. @atom:CH2 0.0 0.00000 2.94118 0.0 + $atom:C2 $mol:. @atom:CH2 0.0 0.00000 2.54714 1.47059 + $atom:C3 $mol:. @atom:CH2 0.0 0.00000 1.47059 2.54714 + $atom:C4 $mol:. @atom:CH2 0.0 0.00000 0.0 2.94118 + $atom:C5 $mol:. @atom:CH2 0.0 0.00000 -1.47059 2.54714 + $atom:C6 $mol:. @atom:CH2 0.0 0.00000 -2.54714 1.47059 + $atom:C7 $mol:. @atom:CH2 0.0 0.00000 -2.94118 0.0 + $atom:C8 $mol:. @atom:CH2 0.0 0.00000 -2.54714 -1.47059 + $atom:C9 $mol:. @atom:CH2 0.0 0.00000 -1.47059 -2.54714 + $atom:C10 $mol:. @atom:CH2 0.0 0.00000 -0.0 -2.94118 + $atom:C11 $mol:. @atom:CH2 0.0 0.00000 1.47059 -2.54714 + $atom:C12 $mol:. @atom:CH2 0.0 0.00000 2.54714 -1.47059 + } + + # The "." in "$mol:." refers to the current object's molecule ID, + # and "@atom:CH2" refers to the "CH2" atom-type defined in "trappe1998.lt" + + write('Data Bonds') { + $bond:bond1 @bond:saturated $atom:C1 $atom:C2 + $bond:bond2 @bond:saturated $atom:C2 $atom:C3 + $bond:bond3 @bond:saturated $atom:C3 $atom:C4 + $bond:bond4 @bond:saturated $atom:C4 $atom:C5 + $bond:bond5 @bond:saturated $atom:C5 $atom:C6 + $bond:bond6 @bond:saturated $atom:C6 $atom:C7 + $bond:bond7 @bond:saturated $atom:C7 $atom:C8 + $bond:bond8 @bond:saturated $atom:C8 $atom:C9 + $bond:bond9 @bond:saturated $atom:C9 $atom:C10 + $bond:bond10 @bond:saturated $atom:C10 $atom:C11 + $bond:bond11 @bond:saturated $atom:C11 $atom:C12 + $bond:bond12 @bond:saturated $atom:C12 $atom:C1 + } + +} # Cyclododecane + + +# coordinates in the "Data Atoms" section generated by this python code: +# from math import * +# bond_length=1.54 +# N=12 +# R=(N*bond_length)/(2*pi) +# for i in range(0,N): +# print('$atom:C'+str(i+1)+' $mol:... @atom:CH2 0.0 0.00000 '+ +# str(round(R*cos(i*2*pi/N),5))+' '+str(round(R*sin(i*2*pi/N),5))) diff --git a/tools/moltemplate/examples/coarse_grained_examples/3bodyWater+hydrocarbons_MW+TraPPE/moltemplate_files/system.lt b/tools/moltemplate/examples/coarse_grained/3bodyWater+hydrocarbons_MW+TraPPE/moltemplate_files/system.lt similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/3bodyWater+hydrocarbons_MW+TraPPE/moltemplate_files/system.lt rename to tools/moltemplate/examples/coarse_grained/3bodyWater+hydrocarbons_MW+TraPPE/moltemplate_files/system.lt diff --git a/tools/moltemplate/examples/coarse_grained_examples/3bodyWater+hydrocarbons_MW+TraPPE/moltemplate_files/trappe1998.lt b/tools/moltemplate/examples/coarse_grained/3bodyWater+hydrocarbons_MW+TraPPE/moltemplate_files/trappe1998.lt similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/3bodyWater+hydrocarbons_MW+TraPPE/moltemplate_files/trappe1998.lt rename to tools/moltemplate/examples/coarse_grained/3bodyWater+hydrocarbons_MW+TraPPE/moltemplate_files/trappe1998.lt diff --git a/tools/moltemplate/examples/coarse_grained_examples/3bodyWater+hydrocarbons_MW+TraPPE/moltemplate_files/version_more_comments/system.lt b/tools/moltemplate/examples/coarse_grained/3bodyWater+hydrocarbons_MW+TraPPE/moltemplate_files/version_more_comments/system.lt similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/3bodyWater+hydrocarbons_MW+TraPPE/moltemplate_files/version_more_comments/system.lt rename to tools/moltemplate/examples/coarse_grained/3bodyWater+hydrocarbons_MW+TraPPE/moltemplate_files/version_more_comments/system.lt diff --git a/tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/moltemplate_files/watmw.lt b/tools/moltemplate/examples/coarse_grained/3bodyWater+hydrocarbons_MW+TraPPE/moltemplate_files/watmw.lt similarity index 100% rename from tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/moltemplate_files/watmw.lt rename to tools/moltemplate/examples/coarse_grained/3bodyWater+hydrocarbons_MW+TraPPE/moltemplate_files/watmw.lt diff --git a/tools/moltemplate/examples/coarse_grained_examples/3bodyWater+hydrocarbons_MW+TraPPE/run.in.npt b/tools/moltemplate/examples/coarse_grained/3bodyWater+hydrocarbons_MW+TraPPE/run.in.npt similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/3bodyWater+hydrocarbons_MW+TraPPE/run.in.npt rename to tools/moltemplate/examples/coarse_grained/3bodyWater+hydrocarbons_MW+TraPPE/run.in.npt diff --git a/tools/moltemplate/examples/coarse_grained_examples/3bodyWater+hydrocarbons_MW+TraPPE/run.in.nvt b/tools/moltemplate/examples/coarse_grained/3bodyWater+hydrocarbons_MW+TraPPE/run.in.nvt similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/3bodyWater+hydrocarbons_MW+TraPPE/run.in.nvt rename to tools/moltemplate/examples/coarse_grained/3bodyWater+hydrocarbons_MW+TraPPE/run.in.nvt diff --git a/tools/moltemplate/examples/coarse_grained/MARTINI_examples/DOPC_bilayer_example/README.txt b/tools/moltemplate/examples/coarse_grained/MARTINI_examples/DOPC_bilayer_example/README.txt new file mode 100644 index 0000000000000000000000000000000000000000..fe92ffeaf325d70181a7ed3f88767096e5b812c9 --- /dev/null +++ b/tools/moltemplate/examples/coarse_grained/MARTINI_examples/DOPC_bilayer_example/README.txt @@ -0,0 +1,18 @@ + +This example of the formation of a coarse-grained DOPC lipid-bilayer uses the +Martini force-field v2.0 (2013-10), was provided by Saeed Momeni Bashusqeh. +It's probably a good idea to run the simulation for a few ns to allow the +lipids to reorient themselves. + +step 1) +To build the files which LAMMPS needs, follow the instructions in: +README_setup.sh + +step 2) +To run LAMMPS with these files, follow these instructions: +README_run.sh + +------- CITE ----------------------------- +NOTE: We extracted the parameters in the MARTINI force field from the files +distributed with the "EMC" tool. If you use these .lt files, please also cite: +P. J. in ‘t Veld and G. C. Rutledge, Macromolecules 2003, 36, 7358. diff --git a/tools/moltemplate/examples/coarse_grained/MARTINI_examples/DOPC_bilayer_example/README_remove_irrelevant_info.sh b/tools/moltemplate/examples/coarse_grained/MARTINI_examples/DOPC_bilayer_example/README_remove_irrelevant_info.sh new file mode 100755 index 0000000000000000000000000000000000000000..5957289da9592f8a25e6796ea16ceb5e7abde043 --- /dev/null +++ b/tools/moltemplate/examples/coarse_grained/MARTINI_examples/DOPC_bilayer_example/README_remove_irrelevant_info.sh @@ -0,0 +1,8 @@ + +# Note: By default, the system.data and system.in.settings files contain +# extra information for atoms defined in OPLSAA which you are not using +# in this simulation. +# This is harmless, but if you to delete this information from your +# system.in.settings and system.in.data files, run this script: + +cleanup_moltemplate.sh diff --git a/tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_preformed/README_run.sh b/tools/moltemplate/examples/coarse_grained/MARTINI_examples/DOPC_bilayer_example/README_run.sh similarity index 99% rename from tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_preformed/README_run.sh rename to tools/moltemplate/examples/coarse_grained/MARTINI_examples/DOPC_bilayer_example/README_run.sh index 8cc857a5b4042b7e962ba20a7871050080bda519..65213b0963e23de372a82cee3b59ed9ae6762b07 100755 --- a/tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_preformed/README_run.sh +++ b/tools/moltemplate/examples/coarse_grained/MARTINI_examples/DOPC_bilayer_example/README_run.sh @@ -1,6 +1,6 @@ # --- Running LAMMPS --- # -------- PREREQUISITES: -------- -# The 2 files "run.in.min", "run.in.npt", and "run.in.nvt" are LAMMPS +# The 2 files "run.in.min", "run.in.npt", and "run.in.nvt" are LAMMPS # input scripts which link to the input scripts and data files # you hopefully have created earlier with moltemplate.sh: # system.in.init, system.in.settings, system.data diff --git a/tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_preformed/README_setup.sh b/tools/moltemplate/examples/coarse_grained/MARTINI_examples/DOPC_bilayer_example/README_setup.sh similarity index 94% rename from tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_preformed/README_setup.sh rename to tools/moltemplate/examples/coarse_grained/MARTINI_examples/DOPC_bilayer_example/README_setup.sh index acc5fbbaad49b3a92ac95ce1afd7eab2b952c70b..cf22ee0fa1868664c5f3cc786d382d1b511097d5 100755 --- a/tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_preformed/README_setup.sh +++ b/tools/moltemplate/examples/coarse_grained/MARTINI_examples/DOPC_bilayer_example/README_setup.sh @@ -9,14 +9,14 @@ cd moltemplate_files moltemplate.sh system.lt - # This will generate various files with names ending in *.in* and *.data. - # These files are the input files directly read by LAMMPS. Move them to + # This will generate various files with names ending in *.in* and *.data. + # These files are the input files directly read by LAMMPS. Move them to # the parent directory (or wherever you plan to run the simulation). mv -f system.in* system.data ../ # Optional: - # The "./output_ttree/" directory is full of temporary files generated by + # The "./output_ttree/" directory is full of temporary files generated by # moltemplate. They can be useful for debugging, but are usually thrown away. rm -rf output_ttree/ diff --git a/tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_formation_PACKMOL/README_visualize.txt b/tools/moltemplate/examples/coarse_grained/MARTINI_examples/DOPC_bilayer_example/README_visualize.txt similarity index 93% rename from tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_formation_PACKMOL/README_visualize.txt rename to tools/moltemplate/examples/coarse_grained/MARTINI_examples/DOPC_bilayer_example/README_visualize.txt index 587b800448a8e8c206ed08b637d351f1fbf3ea92..e8ad744015d4aea7bdf99e4ca0c177c542f6dab5 100644 --- a/tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_formation_PACKMOL/README_visualize.txt +++ b/tools/moltemplate/examples/coarse_grained/MARTINI_examples/DOPC_bilayer_example/README_visualize.txt @@ -4,7 +4,7 @@ 1) Build a PSF file for use in viewing with VMD. -This step works with VMD 1.9 and topotools 1.2. +This step works with VMD 1.9 and topotools 1.2. (Older versions, like VMD 1.8.6, don't support this.) @@ -17,7 +17,7 @@ c) Enter: topo readlammpsdata system.data full animate write psf system.psf -2) +2) Later, to Load a trajectory in VMD: @@ -31,17 +31,17 @@ Later, to Load a trajectory in VMD: ---- A note on trajectory format: ----- If the trajectory is a DUMP file, then make sure the it contains the -information you need for pbctools (see below. I've been using this +information you need for pbctools (see below. I've been using this command in my LAMMPS scripts to create the trajectories: dump 1 all custom 5000 DUMP_FILE.lammpstrj id mol type x y z ix iy iz -It's a good idea to use an atom_style which supports molecule-ID numbers -so that you can assign a molecule-ID number to each atom. (I think this +It's a good idea to use an atom_style which supports molecule-ID numbers +so that you can assign a molecule-ID number to each atom. (I think this is needed to wrap atom coordinates without breaking molecules in half.) -Of course, you don't have to save your trajectories in DUMP format, -(other formats like DCD work fine) I just mention dump files +Of course, you don't have to save your trajectories in DUMP format, +(other formats like DCD work fine) I just mention dump files because these are the files I'm familiar with. 3) ----- Wrap the coordinates to the unit cell @@ -57,7 +57,7 @@ d) Try entering these commands: ----- Optional ---- Sometimes the solvent or membrane obscures the view of the solute. - It can help to shift the location of the periodic boundary box + It can help to shift the location of the periodic boundary box To shift the box in the y direction (for example) do this: pbc wrap -compound res -all -shiftcenterrel {0.0 0.0 -0.5} @@ -65,19 +65,19 @@ d) Try entering these commands: Distances are measured in units of box-length fractions, not Angstroms. - Alternately if you have a solute whose atoms are all of type 1, + Alternately if you have a solute whose atoms are all of type 1, then you can also try this to center the box around it: pbc wrap -sel type=1 -all -centersel type=2 -center com -4) +4) You should check if your periodic boundary conditions are too small. To do that: select Graphics->Representations menu option - click on the "Periodic" tab, and + click on the "Periodic" tab, and click on the "+x", "-x", "+y", "-y", "+z", "-z" checkboxes. -5) Optional: If you like, change the atom types in the PSF file so +5) Optional: If you like, change the atom types in the PSF file so that VMD recognizes the atom types, use something like: sed -e 's/ 1 1 / C C /g' < system.psf > temp1.psf diff --git a/tools/moltemplate/examples/coarse_grained/MARTINI_examples/DOPC_bilayer_example/moltemplate_files/DOPC.lt b/tools/moltemplate/examples/coarse_grained/MARTINI_examples/DOPC_bilayer_example/moltemplate_files/DOPC.lt new file mode 100644 index 0000000000000000000000000000000000000000..00a4ed7e7cc2f1245879e0a908279b1e6aeae640 --- /dev/null +++ b/tools/moltemplate/examples/coarse_grained/MARTINI_examples/DOPC_bilayer_example/moltemplate_files/DOPC.lt @@ -0,0 +1,39 @@ +import "martini.lt" #(This file is located in moltemplate/force_fields/) + +DOPC inherits MARTINI { + + # atomID molID atomTyle charge X Y Z + write('Data Atoms') { + $atom:NC3 $mol:. @atom:Q0 1.0 0.596 0.518 2.453 + $atom:PO4 $mol:. @atom:Qa -1.0 0.413 0.591 2.167 + $atom:GL1 $mol:. @atom:Na 0.0 0.525 0.626 1.829 + $atom:GL2 $mol:. @atom:Na 0.0 0.749 0.434 1.795 + $atom:C1A $mol:. @atom:C1 0.0 0.428 0.686 1.448 + $atom:D2A $mol:. @atom:C3 0.0 0.395 0.491 1.197 + $atom:C3A $mol:. @atom:C1 0.0 0.389 0.575 0.899 + $atom:C4A $mol:. @atom:C1 0.0 0.423 0.497 0.555 + $atom:C1B $mol:. @atom:C1 0.0 0.944 0.505 1.503 + $atom:D2B $mol:. @atom:C3 0.0 0.906 0.476 1.192 + $atom:C3B $mol:. @atom:C1 0.0 0.899 0.567 0.905 + $atom:C4B $mol:. @atom:C1 0.0 0.921 0.637 0.557 + } + + write('Data Bond List') { + $bond:b1 $atom:NC3 $atom:PO4 + $bond:b2 $atom:PO4 $atom:GL1 + $bond:b3 $atom:GL1 $atom:GL2 + $bond:b4 $atom:GL1 $atom:C1A + $bond:b5 $atom:C1A $atom:D2A + $bond:b6 $atom:D2A $atom:C3A + $bond:b9 $atom:C3A $atom:C4A + $bond:b10 $atom:GL2 $atom:C1B + $bond:b11 $atom:C1B $atom:D2B + $bond:b12 $atom:D2B $atom:C3B + $bond:b13 $atom:C3B $atom:C4B + } +} +DOPC.scale(10) + +# Optional: Move the molecule to a convenient location for buildling a bilayer: +# Center the molecule in the X,Y directions and set the min Z value. +DOPC.move(-6.32333,-5.5025,-3.2) diff --git a/tools/moltemplate/examples/coarse_grained/MARTINI_examples/DOPC_bilayer_example/moltemplate_files/system.lt b/tools/moltemplate/examples/coarse_grained/MARTINI_examples/DOPC_bilayer_example/moltemplate_files/system.lt new file mode 100644 index 0000000000000000000000000000000000000000..4e164078214d7d1179f2a70e5f717ea710d863ea --- /dev/null +++ b/tools/moltemplate/examples/coarse_grained/MARTINI_examples/DOPC_bilayer_example/moltemplate_files/system.lt @@ -0,0 +1,21 @@ +import "martini.lt" #(This file is located in moltemplate/force_fields/) +import "water.lt" +import "DOPC.lt" + +lipids = new DOPC [12].move(8.333, 0, 0) + [12].move(0, 8.333, 0) + [2].rot(180, 1, 0, 0) + +waters = new MW [24].move(4.1667, 0, 0) + [24].move(0, 4.1667, 0) + [10].move(0, 0, 4.54) + +# Move the waters upwards so that they don't overlap with the lipids. + +waters[*][*][*].move(0, 0, 28.5) + +write_once("Data Boundary") { + 0.0 100 xlo xhi + 0.0 100 ylo yhi + -50 50 zlo zhi +} diff --git a/tools/moltemplate/examples/coarse_grained/MARTINI_examples/DOPC_bilayer_example/moltemplate_files/water.lt b/tools/moltemplate/examples/coarse_grained/MARTINI_examples/DOPC_bilayer_example/moltemplate_files/water.lt new file mode 100644 index 0000000000000000000000000000000000000000..6513d834136a1b7e50cc003c3b7a3edd72d0c426 --- /dev/null +++ b/tools/moltemplate/examples/coarse_grained/MARTINI_examples/DOPC_bilayer_example/moltemplate_files/water.lt @@ -0,0 +1,10 @@ +import "martini.lt" + +#water molecules in MARTINI contain only one particle + +MW inherits MARTINI { + #AtomID MolID AtomType Charge x y z + write("Data Atoms") { + $atom $mol @atom:P4 0 0 0 0 + } +} diff --git a/tools/moltemplate/examples/coarse_grained/MARTINI_examples/DOPC_bilayer_example/run.in.min b/tools/moltemplate/examples/coarse_grained/MARTINI_examples/DOPC_bilayer_example/run.in.min new file mode 100644 index 0000000000000000000000000000000000000000..360ded23732971aafe6d3e141a009db72970a914 --- /dev/null +++ b/tools/moltemplate/examples/coarse_grained/MARTINI_examples/DOPC_bilayer_example/run.in.min @@ -0,0 +1,30 @@ +# PREREQUISITES: +# +# You must use moltemplate.sh to create 3 files: +# system.data system.in.init system.in.settings +# (See README_setup.sh for details.) + +# ------------------------------- Initialization Section -------------------- + +include "system.in.init" + +# ------------------------------- Atom Definition Section ------------------- + +read_data "system.data" + +# ------------------------------- Settings Section -------------------------- + +include system.in.settings + +# ------------------------------- Run Section ------------------------------- + +# -- simulation protocol -- + +thermo 5 +thermo_style custom step temp pe etotal epair ebond eangle +dump 1 all custom 1000 traj_min.lammpstrj id mol type x y z ix iy iz +min_style sd +min_modify dmax 0.1 +minimize 1.0e-4 1.0e-6 100000 400000 + +write_data system_after_min.data diff --git a/tools/moltemplate/examples/coarse_grained/MARTINI_examples/DOPC_bilayer_example/run.in.npt b/tools/moltemplate/examples/coarse_grained/MARTINI_examples/DOPC_bilayer_example/run.in.npt new file mode 100644 index 0000000000000000000000000000000000000000..0967272ffeba3bb8bb6450cbac90053cdd9de3f1 --- /dev/null +++ b/tools/moltemplate/examples/coarse_grained/MARTINI_examples/DOPC_bilayer_example/run.in.npt @@ -0,0 +1,80 @@ +# PREREQUISITES: +# +# 1) You must use moltemplate.sh to create 3 files: +# system.data system.in.init system.in.settings +# (See README_setup.sh for details.) +# 2) You must minimize the coordinates using by running lammps witn +# run.in.min +# + +# ------------------------------- Initialization Section -------------------- + +include "system.in.init" + +# ------------------------------- Atom Definition Section ------------------- + +#read_data "system.data" +read_data "system_after_min.data" + +# ------------------------------- Settings Section -------------------------- + +include "system.in.settings" + +# ------------------------------- Run Section ------------------------------- + +# -- simulation protocol -- + +print "---------------------------------------------------------------------------" +print "I often use Langevin dynamics initially at high temperatures and small" +print "timesteps to relax the system. It seems more stable than Nose-Hoover." +print "(This is probably not necessary.)" +print "---------------------------------------------------------------------------" + +#(first, a short run at NVT conditions, to randomize the waters) + +fix fxlan all langevin 450.0 450.0 100 12345 # temp: 450 K +fix fxnve all nve +thermo 100 +thermo_style custom step temp pe press vol etotal epair ebond eangle +dump dmNPTall all custom 5000 traj_npt_step1.lammpstrj id mol type x y z ix iy iz + +timestep 1.0 # (safer to use a small timestep initially) +run 1000 +timestep 3.0 +run 1000 +timestep 10.0 +run 1000 +timestep 30.0 # (40.0 should be possible for lipid systems) +run 20000 + +unfix fxnve +fix fxnph all nph aniso 200.0 200.0 1000.0 couple xy drag 1.0 #pressure:200barr +timestep 1.0 # (safer to use a small timestep initially) +run 1000 +timestep 3.0 +run 1000 +timestep 10.0 +run 1000 +timestep 30.0 # (40.0 should be possible for lipid systems) +run 100000 + +unfix fxlan +unfix fxnph +undump dmNPTall + +print "---------------------------------------------------------------------------" +print "--- Now continue the simulation using a Nose-Hoover Thermostat/Barostat ---" +print "---------------------------------------------------------------------------" + +velocity all zero linear # <- eliminate drift due to non-zero total momentum + #fix 1 all momentum 1000 linear 1 1 1 # also works + +# temperature: 300 K, pressure: 1 barr +fix fxnpt all npt temp 300.0 300.0 100.0 aniso 1.0 1.0 1000.0 drag 1.0 couple xy +thermo 100 +#thermo_modify flush yes +dump dmNPTall all custom 10000 traj_npt_step2.lammpstrj id mol type x y z ix iy iz + +run 100000 + +write_data system_after_npt.data diff --git a/tools/moltemplate/examples/coarse_grained/MARTINI_examples/DOPC_bilayer_example/run.in.nvt b/tools/moltemplate/examples/coarse_grained/MARTINI_examples/DOPC_bilayer_example/run.in.nvt new file mode 100644 index 0000000000000000000000000000000000000000..4653fefe67f7a4e4c6d2f5ed23aef0f398a2c4fc --- /dev/null +++ b/tools/moltemplate/examples/coarse_grained/MARTINI_examples/DOPC_bilayer_example/run.in.nvt @@ -0,0 +1,48 @@ +# PREREQUISITES: +# +# 1) You must use moltemplate.sh to create 3 files: +# system.data system.in.init system.in.settings +# (See README_setup.sh for details.) +# 2) You must minimize the coordinates using by running lammps witn +# run.in.min +# 3) You must equilibrate the system beforehand using "run.in.npt". +# This will create the file "system_after_npt.data" which this file reads. +# (Note: I have not verified that this equilibration protocol works well.) + +# ------------------------------- Initialization Section -------------------- + +include "system.in.init" + +# ------------------------------- Atom Definition Section ------------------- + +# Read the coordinates generated by an earlier simulation + +#read_data "system.data" +#read_data "system_after_min.data" +read_data "system_after_npt.data" + +# ------------------------------- Settings Section -------------------------- + +include "system.in.settings" + +# ------------------------------- Settings Section -------------------------- + +include system.in.settings + +# ------------------------------- Run Section ------------------------------- + +# -- simulation protocol -- + +velocity all zero linear # <- eliminate drift due to non-zero total momentum + #fix 1 all momentum 1000 linear 1 1 1 # also works + +timestep 30.0 # (40.0 should be possible for lipid systems) +dump 1 all custom 20000 traj_nvt.lammpstrj id mol type x y z ix iy iz +fix fxnvt all nvt temp 300.0 300.0 500.0 tchain 1 +thermo 100 +thermo_style custom step temp pe etotal epair ebond eangle +#thermo_modify flush yes + +run 10000000 + +write_data system_after_nvt.data diff --git a/tools/moltemplate/examples/coarse_grained/MARTINI_examples/MARTINI_lipid_files/BOLA.lt b/tools/moltemplate/examples/coarse_grained/MARTINI_examples/MARTINI_lipid_files/BOLA.lt new file mode 100644 index 0000000000000000000000000000000000000000..46e8bd572e99de7d68e1b44cfee95a39cf4618e3 --- /dev/null +++ b/tools/moltemplate/examples/coarse_grained/MARTINI_examples/MARTINI_lipid_files/BOLA.lt @@ -0,0 +1,67 @@ +import "martini.lt" + +BOLA inherits MARTINI { + + # atomID molID atomTyle charge X Y Z + # (guessing the coordinates, and scaling them manually) + write('Data Atoms') { + $atom:NC1 $mol:. @atom:Q0 1.0 0.000000 0.000000 6.000000 + $atom:PO1 $mol:. @atom:Qa -1.0 0.000000 0.000000 5.000000 + $atom:GL1 $mol:. @atom:Na 0.0 0.000000 0.000000 4.000000 + $atom:GL2 $mol:. @atom:Na 0.0 0.000000 1.000000 4.000000 + $atom:C1A $mol:. @atom:C1 0.0 0.000000 -1.000000 4.000000 + $atom:C2A $mol:. @atom:C1 0.0 0.000000 -1.000000 3.000000 + $atom:C3A $mol:. @atom:C1 0.0 0.000000 -1.000000 2.000000 + $atom:C4A $mol:. @atom:C1 0.0 0.000000 -1.000000 1.000000 + $atom:C1B $mol:. @atom:C1 0.0 0.000000 1.000000 3.000000 + $atom:C2B $mol:. @atom:C1 0.0 0.000000 1.000000 2.000000 + $atom:C3B $mol:. @atom:C1 0.0 0.000000 1.000000 1.000000 + $atom:C4B $mol:. @atom:C1 0.0 0.000000 1.000000 0.000000 + $atom:NC2 $mol:. @atom:Q0 1.0 1.000000 0.000000 6.000000 + $atom:PO2 $mol:. @atom:Qa -1.0 1.000000 0.000000 5.000000 + $atom:GL3 $mol:. @atom:Na 0.0 1.000000 0.000000 4.000000 + $atom:GL4 $mol:. @atom:Na 0.0 1.000000 1.000000 4.000000 + $atom:C1C $mol:. @atom:C1 0.0 1.000000 -1.000000 4.000000 + $atom:C2C $mol:. @atom:C1 0.0 1.000000 -1.000000 3.000000 + $atom:C3C $mol:. @atom:C1 0.0 1.000000 -1.000000 2.000000 + $atom:C4C $mol:. @atom:C1 0.0 1.000000 -1.000000 1.000000 + $atom:C1D $mol:. @atom:C1 0.0 1.000000 1.000000 3.000000 + $atom:C2D $mol:. @atom:C1 0.0 1.000000 1.000000 2.000000 + $atom:C3D $mol:. @atom:C1 0.0 1.000000 1.000000 1.000000 + $atom:C4D $mol:. @atom:C1 0.0 1.000000 1.000000 0.000000 + + } + + write('Data Bond List') { + $bond:b1 $atom:NC1 $atom:PO1 + $bond:b2 $atom:PO1 $atom:GL1 + $bond:b3 $atom:GL1 $atom:GL2 + $bond:b4 $atom:GL1 $atom:C1A + $bond:b5 $atom:C1A $atom:C2A + $bond:b6 $atom:C2A $atom:C3A + $bond:b7 $atom:C3A $atom:C4A + $bond:b8 $atom:GL2 $atom:C1B + $bond:b9 $atom:C1B $atom:C2B + $bond:b10 $atom:C2B $atom:C3B + $bond:b11 $atom:C3B $atom:C4B + $bond:b12 $atom:NC2 $atom:PO2 + $bond:b13 $atom:PO2 $atom:GL3 + $bond:b14 $atom:GL3 $atom:GL4 + $bond:b15 $atom:GL3 $atom:C1C + $bond:b16 $atom:C1C $atom:C2C + $bond:b17 $atom:C2C $atom:C3C + $bond:b18 $atom:C3C $atom:C4C + $bond:b19 $atom:GL4 $atom:C1D + $bond:b20 $atom:C1D $atom:C2D + $bond:b21 $atom:C2D $atom:C3D + $bond:b22 $atom:C3D $atom:C4D + $bond:b23 $atom:C4A $atom:C4C + $bond:b24 $atom:C4B $atom:C4D + } + +} +BOLA.scale(4.7) + +# Optional: Move the molecule to a convenient location for buildling a bilayer: +# Center the molecule in the X,Y directions and set the min Z value. +BOLA.move(-5,-0.833333,2.35).rot(-45.0,0,0,1) diff --git a/tools/moltemplate/examples/coarse_grained/MARTINI_examples/MARTINI_lipid_files/BOLB.lt b/tools/moltemplate/examples/coarse_grained/MARTINI_examples/MARTINI_lipid_files/BOLB.lt new file mode 100644 index 0000000000000000000000000000000000000000..8d4fbc3ac734bbfdbd8c9bb7b14e83d5b2afc5e4 --- /dev/null +++ b/tools/moltemplate/examples/coarse_grained/MARTINI_examples/MARTINI_lipid_files/BOLB.lt @@ -0,0 +1,66 @@ +import "martini.lt" + +BOLB inherits MARTINI { + + # atomID molID atomTyle charge X Y Z + # (guessing the coordinates, and scaling them manually) + write('Data Atoms') { + $atom:NC1 $mol:. @atom:Q0 1.0 0.000000 0.000000 6.000000 + $atom:PO1 $mol:. @atom:Qa -1.0 0.000000 0.000000 5.000000 + $atom:GL1 $mol:. @atom:Na 0.0 0.000000 0.000000 4.000000 + $atom:GL2 $mol:. @atom:Na 0.0 0.000000 1.000000 4.000000 + $atom:C1A $mol:. @atom:C1 0.0 0.000000 -1.000000 4.000000 + $atom:C2A $mol:. @atom:C1 0.0 0.000000 -1.000000 3.000000 + $atom:C3A $mol:. @atom:C1 0.0 0.000000 -1.000000 2.000000 + $atom:C4A $mol:. @atom:C1 0.0 0.000000 -1.000000 1.000000 + $atom:C1B $mol:. @atom:C1 0.0 0.000000 1.000000 3.000000 + $atom:C2B $mol:. @atom:C1 0.0 0.000000 1.000000 2.000000 + $atom:C3B $mol:. @atom:C1 0.0 0.000000 1.000000 1.000000 + $atom:C4B $mol:. @atom:C1 0.0 0.000000 1.000000 0.000000 + $atom:NC2 $mol:. @atom:Q0 1.0 1.000000 0.000000 6.000000 + $atom:PO2 $mol:. @atom:Qa -1.0 1.000000 0.000000 5.000000 + $atom:GL3 $mol:. @atom:Na 0.0 1.000000 0.000000 4.000000 + $atom:GL4 $mol:. @atom:Na 0.0 1.000000 1.000000 4.000000 + $atom:C1C $mol:. @atom:C1 0.0 1.000000 -1.000000 4.000000 + $atom:C2C $mol:. @atom:C1 0.0 1.000000 -1.000000 3.000000 + $atom:C3C $mol:. @atom:C1 0.0 1.000000 -1.000000 2.000000 + $atom:C4C $mol:. @atom:C1 0.0 1.000000 -1.000000 1.000000 + $atom:C1D $mol:. @atom:C1 0.0 1.000000 1.000000 3.000000 + $atom:C2D $mol:. @atom:C1 0.0 1.000000 1.000000 2.000000 + $atom:C3D $mol:. @atom:C1 0.0 1.000000 1.000000 1.000000 + $atom:C4D $mol:. @atom:C1 0.0 1.000000 1.000000 0.000000 + + } + + write('Data Bond List') { + $bond:b1 $atom:NC1 $atom:PO1 + $bond:b2 $atom:PO1 $atom:GL1 + $bond:b3 $atom:GL1 $atom:GL2 + $bond:b4 $atom:GL1 $atom:C1A + $bond:b5 $atom:C1A $atom:C2A + $bond:b6 $atom:C2A $atom:C3A + $bond:b7 $atom:C3A $atom:C4A + $bond:b8 $atom:GL2 $atom:C1B + $bond:b9 $atom:C1B $atom:C2B + $bond:b10 $atom:C2B $atom:C3B + $bond:b11 $atom:C3B $atom:C4B + $bond:b12 $atom:NC2 $atom:PO2 + $bond:b13 $atom:PO2 $atom:GL3 + $bond:b14 $atom:GL3 $atom:GL4 + $bond:b15 $atom:GL3 $atom:C1C + $bond:b16 $atom:C1C $atom:C2C + $bond:b17 $atom:C2C $atom:C3C + $bond:b18 $atom:C3C $atom:C4C + $bond:b19 $atom:GL4 $atom:C1D + $bond:b20 $atom:C1D $atom:C2D + $bond:b21 $atom:C2D $atom:C3D + $bond:b22 $atom:C3D $atom:C4D + $bond:b23 $atom:C4A $atom:C4C + } + +} +BOLB.scale(4.7) + +# Optional: Move the molecule to a convenient location for buildling a bilayer: +# Center the molecule in the X,Y directions and set the min Z value. +BOLB.move(-2.35,-0.391667,2.35).rot(-45.0,0,0,1) diff --git a/tools/moltemplate/examples/coarse_grained/MARTINI_examples/MARTINI_lipid_files/DAPC.lt b/tools/moltemplate/examples/coarse_grained/MARTINI_examples/MARTINI_lipid_files/DAPC.lt new file mode 100644 index 0000000000000000000000000000000000000000..d5f73707560c21100db53903cf12903bf7b03570 --- /dev/null +++ b/tools/moltemplate/examples/coarse_grained/MARTINI_examples/MARTINI_lipid_files/DAPC.lt @@ -0,0 +1,44 @@ +import "martini.lt" + +DAPC inherits MARTINI { + + # atomID molID atomTyle charge X Y Z + write('Data Atoms') { + $atom:NC3 $mol:. @atom:Q0 1.0 0.566 0.559 2.614 + $atom:PO4 $mol:. @atom:Qa -1.0 0.464 0.444 2.297 + $atom:GL1 $mol:. @atom:Na 0.0 0.486 0.539 1.967 + $atom:GL2 $mol:. @atom:Na 0.0 0.766 0.678 1.938 + $atom:D1A $mol:. @atom:C4 0.0 0.360 0.508 1.627 + $atom:D2A $mol:. @atom:C4 0.0 0.446 0.509 1.339 + $atom:D3A $mol:. @atom:C4 0.0 0.422 0.485 1.047 + $atom:D4A $mol:. @atom:C4 0.0 0.474 0.570 0.752 + $atom:C5A $mol:. @atom:C1 0.0 0.390 0.478 0.404 + $atom:D1B $mol:. @atom:C4 0.0 0.917 0.470 1.666 + $atom:D2B $mol:. @atom:C4 0.0 0.937 0.498 1.346 + $atom:D3B $mol:. @atom:C4 0.0 0.920 0.584 1.055 + $atom:D4B $mol:. @atom:C4 0.0 0.975 0.647 0.749 + $atom:C5B $mol:. @atom:C1 0.0 0.898 0.557 0.399 + } + + write('Data Bond List') { + $bond:b1 $atom:NC3 $atom:PO4 + $bond:b2 $atom:PO4 $atom:GL1 + $bond:b3 $atom:GL1 $atom:GL2 + $bond:b4 $atom:GL1 $atom:D1A + $bond:b5 $atom:D1A $atom:D2A + $bond:b6 $atom:D2A $atom:D3A + $bond:b7 $atom:D3A $atom:D4A + $bond:b8 $atom:D4A $atom:C5A + $bond:b9 $atom:GL2 $atom:D1B + $bond:b10 $atom:D1B $atom:D2B + $bond:b11 $atom:D2B $atom:D3B + $bond:b12 $atom:D3B $atom:D4B + $bond:b13 $atom:D4B $atom:C5B + } + +} +DAPC.scale(10) + +# Optional: Move the molecule to a convenient location for buildling a bilayer: +# Center the molecule in the X,Y directions and set the min Z value. +DAPC.move(-6.44357,-5.37571,-1.64) diff --git a/tools/moltemplate/examples/coarse_grained/MARTINI_examples/MARTINI_lipid_files/DHPC.lt b/tools/moltemplate/examples/coarse_grained/MARTINI_examples/MARTINI_lipid_files/DHPC.lt new file mode 100644 index 0000000000000000000000000000000000000000..75b77b17e8b947389899b1b94345683001855798 --- /dev/null +++ b/tools/moltemplate/examples/coarse_grained/MARTINI_examples/MARTINI_lipid_files/DHPC.lt @@ -0,0 +1,32 @@ +import "martini.lt" + +DHPC inherits MARTINI { + + # atomID molID atomTyle charge X Y Z + write('Data Atoms') { + $atom:NC3 $mol:. @atom:Q0 1.0 0.000000 0.000000 6.000000 + $atom:PO4 $mol:. @atom:Qa -1.0 0.000000 0.000000 5.000000 + $atom:GL1 $mol:. @atom:Na 0.0 0.000000 0.000000 4.000000 + $atom:GL2 $mol:. @atom:Na 0.0 0.000000 1.000000 4.000000 + $atom:C1A $mol:. @atom:C1 0.0 0.000000 -1.000000 4.000000 + $atom:C2A $mol:. @atom:C1 0.0 0.000000 -1.000000 3.000000 + $atom:C1B $mol:. @atom:C1 0.0 0.000000 1.000000 3.000000 + $atom:C2B $mol:. @atom:C1 0.0 0.000000 1.000000 2.000000 + } + + write('Data Bond List') { + $bond:b1 $atom:NC3 $atom:PO4 + $bond:b2 $atom:PO4 $atom:GL1 + $bond:b3 $atom:GL1 $atom:GL2 + $bond:b4 $atom:GL1 $atom:C1A + $bond:b5 $atom:C1A $atom:C2A + $bond:b6 $atom:GL2 $atom:C1B + $bond:b7 $atom:C1B $atom:C2B + } + +} +DHPC.scale(4.7) + +# Optional: Move the molecule to a convenient location for buildling a bilayer: +# Center the molecule in the X,Y directions and set the min Z value. +DHPC.move(-0,-0.5875,-7.65).rot(-30.0,0,0,1) \ No newline at end of file diff --git a/tools/moltemplate/examples/coarse_grained/MARTINI_examples/MARTINI_lipid_files/DHPE.lt b/tools/moltemplate/examples/coarse_grained/MARTINI_examples/MARTINI_lipid_files/DHPE.lt new file mode 100644 index 0000000000000000000000000000000000000000..a27af13a44f518d3b2512f50b9c36ab99fabfc9a --- /dev/null +++ b/tools/moltemplate/examples/coarse_grained/MARTINI_examples/MARTINI_lipid_files/DHPE.lt @@ -0,0 +1,33 @@ +import "martini.lt" + +DHPE inherits MARTINI { + + # atomID molID atomTyle charge X Y Z + # (guessing the coordinates, and scaling them manually) + write('Data Atoms') { + $atom:NH3 $mol:. @atom:Qd 1.0 0.000000 0.000000 6.000000 + $atom:PO4 $mol:. @atom:Qa -1.0 0.000000 0.000000 5.000000 + $atom:GL1 $mol:. @atom:Na 0.0 0.000000 0.000000 4.000000 + $atom:GL2 $mol:. @atom:Na 0.0 0.000000 1.000000 4.000000 + $atom:C1A $mol:. @atom:C1 0.0 0.000000 -1.000000 4.000000 + $atom:C2A $mol:. @atom:C1 0.0 0.000000 -1.000000 3.000000 + $atom:C1B $mol:. @atom:C1 0.0 0.000000 1.000000 3.000000 + $atom:C2B $mol:. @atom:C1 0.0 0.000000 1.000000 2.000000 + } + + write('Data Bond List') { + $bond:b1 $atom:NH3 $atom:PO4 + $bond:b2 $atom:PO4 $atom:GL1 + $bond:b3 $atom:GL1 $atom:GL2 + $bond:b4 $atom:GL1 $atom:C1A + $bond:b5 $atom:C1A $atom:C2A + $bond:b6 $atom:GL2 $atom:C1B + $bond:b7 $atom:C1B $atom:C2B + } + +} +DHPE.scale(4.7) + +# Optional: Move the molecule to a convenient location for buildling a bilayer: +# Center the molecule in the X,Y directions and set the min Z value. +DHPE.move(-0,-0.5875,-7.15).rot(-30.0,0,0,1) diff --git a/tools/moltemplate/examples/coarse_grained/MARTINI_examples/MARTINI_lipid_files/DLPC.lt b/tools/moltemplate/examples/coarse_grained/MARTINI_examples/MARTINI_lipid_files/DLPC.lt new file mode 100644 index 0000000000000000000000000000000000000000..be3f26141695e889c5e338729f42470411988c92 --- /dev/null +++ b/tools/moltemplate/examples/coarse_grained/MARTINI_examples/MARTINI_lipid_files/DLPC.lt @@ -0,0 +1,36 @@ +import "martini.lt" + +DLPC inherits MARTINI { + + # atomID molID atomTyle charge X Y Z + write('Data Atoms') { + $atom:NC3 $mol:. @atom:Q0 1.0 0.556 0.486 2.340 + $atom:PO4 $mol:. @atom:Qa -1.0 0.522 0.626 2.022 + $atom:GL1 $mol:. @atom:Na 0.0 0.484 0.520 1.678 + $atom:GL2 $mol:. @atom:Na 0.0 0.793 0.572 1.640 + $atom:C1A $mol:. @atom:C1 0.0 0.415 0.488 1.322 + $atom:C2A $mol:. @atom:C1 0.0 0.388 0.510 1.025 + $atom:C3A $mol:. @atom:C1 0.0 0.395 0.529 0.684 + $atom:C1B $mol:. @atom:C1 0.0 0.959 0.570 1.354 + $atom:C2B $mol:. @atom:C1 0.0 0.885 0.638 1.043 + $atom:C3B $mol:. @atom:C1 0.0 0.911 0.531 0.691 + } + + write('Data Bond List') { + $bond:b1 $atom:NC3 $atom:PO4 + $bond:b2 $atom:PO4 $atom:GL1 + $bond:b3 $atom:GL1 $atom:GL2 + $bond:b4 $atom:GL1 $atom:C1A + $bond:b5 $atom:C1A $atom:C2A + $bond:b6 $atom:C2A $atom:C3A + $bond:b9 $atom:GL2 $atom:C1B + $bond:b10 $atom:C1B $atom:C2B + $bond:b11 $atom:C2B $atom:C3B + } + +} +DLPC.scale(10) + +# Optional: Move the molecule to a convenient location for buildling a bilayer: +# Center the molecule in the X,Y directions and set the min Z value. +DLPC.move(-6.308,-5.47,-4.49) diff --git a/tools/moltemplate/examples/coarse_grained/MARTINI_examples/MARTINI_lipid_files/DLPE.lt b/tools/moltemplate/examples/coarse_grained/MARTINI_examples/MARTINI_lipid_files/DLPE.lt new file mode 100644 index 0000000000000000000000000000000000000000..08ce4b1d64c52047df89eee5d124abc939c941aa --- /dev/null +++ b/tools/moltemplate/examples/coarse_grained/MARTINI_examples/MARTINI_lipid_files/DLPE.lt @@ -0,0 +1,36 @@ +import "martini.lt" + +DLPE inherits MARTINI { + + # atomID molID atomTyle charge X Y Z + write('Data Atoms') { + $atom:NH3 $mol:. @atom:Qd 1.0 0.523 0.508 2.312 + $atom:PO4 $mol:. @atom:Qa -1.0 0.457 0.463 2.011 + $atom:GL1 $mol:. @atom:Na 0.0 0.535 0.471 1.678 + $atom:GL2 $mol:. @atom:Na 0.0 0.755 0.669 1.650 + $atom:C1A $mol:. @atom:C1 0.0 0.393 0.605 1.310 + $atom:C2A $mol:. @atom:C1 0.0 0.413 0.565 1.032 + $atom:C3A $mol:. @atom:C1 0.0 0.436 0.548 0.704 + $atom:C1B $mol:. @atom:C1 0.0 0.933 0.534 1.346 + $atom:C2B $mol:. @atom:C1 0.0 0.917 0.629 1.043 + $atom:C3B $mol:. @atom:C1 0.0 0.945 0.494 0.714 + } + + write('Data Bond List') { + $bond:b1 $atom:NH3 $atom:PO4 + $bond:b2 $atom:PO4 $atom:GL1 + $bond:b3 $atom:GL1 $atom:GL2 + $bond:b4 $atom:GL1 $atom:C1A + $bond:b5 $atom:C1A $atom:C2A + $bond:b6 $atom:C2A $atom:C3A + $bond:b9 $atom:GL2 $atom:C1B + $bond:b10 $atom:C1B $atom:C2B + $bond:b11 $atom:C2B $atom:C3B + } + +} +DLPE.scale(10) + +# Optional: Move the molecule to a convenient location for buildling a bilayer: +# Center the molecule in the X,Y directions and set the min Z value. +DLPE.move(-6.307,-5.486,-4.69) diff --git a/tools/moltemplate/examples/coarse_grained/MARTINI_examples/MARTINI_lipid_files/DOPC.lt b/tools/moltemplate/examples/coarse_grained/MARTINI_examples/MARTINI_lipid_files/DOPC.lt new file mode 100644 index 0000000000000000000000000000000000000000..fdc5af63c1e9b3db5c8ee10ad7d37152b8e6d86c --- /dev/null +++ b/tools/moltemplate/examples/coarse_grained/MARTINI_examples/MARTINI_lipid_files/DOPC.lt @@ -0,0 +1,39 @@ +import "martini.lt" + +DOPC inherits MARTINI { + + # atomID molID atomTyle charge X Y Z + write('Data Atoms') { + $atom:NC3 $mol:. @atom:Q0 1.0 0.596 0.518 2.453 + $atom:PO4 $mol:. @atom:Qa -1.0 0.413 0.591 2.167 + $atom:GL1 $mol:. @atom:Na 0.0 0.525 0.626 1.829 + $atom:GL2 $mol:. @atom:Na 0.0 0.749 0.434 1.795 + $atom:C1A $mol:. @atom:C1 0.0 0.428 0.686 1.448 + $atom:D2A $mol:. @atom:C3 0.0 0.395 0.491 1.197 + $atom:C3A $mol:. @atom:C1 0.0 0.389 0.575 0.899 + $atom:C4A $mol:. @atom:C1 0.0 0.423 0.497 0.555 + $atom:C1B $mol:. @atom:C1 0.0 0.944 0.505 1.503 + $atom:D2B $mol:. @atom:C3 0.0 0.906 0.476 1.192 + $atom:C3B $mol:. @atom:C1 0.0 0.899 0.567 0.905 + $atom:C4B $mol:. @atom:C1 0.0 0.921 0.637 0.557 + } + + write('Data Bond List') { + $bond:b1 $atom:NC3 $atom:PO4 + $bond:b2 $atom:PO4 $atom:GL1 + $bond:b3 $atom:GL1 $atom:GL2 + $bond:b4 $atom:GL1 $atom:C1A + $bond:b5 $atom:C1A $atom:D2A + $bond:b6 $atom:D2A $atom:C3A + $bond:b9 $atom:C3A $atom:C4A + $bond:b10 $atom:GL2 $atom:C1B + $bond:b11 $atom:C1B $atom:D2B + $bond:b12 $atom:D2B $atom:C3B + $bond:b13 $atom:C3B $atom:C4B + } +} +DOPC.scale(10) + +# Optional: Move the molecule to a convenient location for buildling a bilayer: +# Center the molecule in the X,Y directions and set the min Z value. +DOPC.move(-6.32333,-5.5025,-3.2) diff --git a/tools/moltemplate/examples/coarse_grained/MARTINI_examples/MARTINI_lipid_files/DOPE.lt b/tools/moltemplate/examples/coarse_grained/MARTINI_examples/MARTINI_lipid_files/DOPE.lt new file mode 100644 index 0000000000000000000000000000000000000000..1c30e3271c172f0d5df04102bbd907eee2a07c5c --- /dev/null +++ b/tools/moltemplate/examples/coarse_grained/MARTINI_examples/MARTINI_lipid_files/DOPE.lt @@ -0,0 +1,36 @@ +import "martini.lt" + +DOPE inherits MARTINI { + + # atomID molID atomTyle charge X Y Z + write('Data Atoms') { + $atom:NH3 $mol:. @atom:Qd 1.0 0.551 0.470 2.458 + $atom:PO4 $mol:. @atom:Qa -1.0 0.546 0.626 2.182 + $atom:GL1 $mol:. @atom:Na 0.0 0.528 0.592 1.831 + $atom:GL2 $mol:. @atom:Na 0.0 0.808 0.524 1.774 + $atom:C1A $mol:. @atom:C1 0.0 0.397 0.568 1.465 + $atom:D2A $mol:. @atom:C3 0.0 0.436 0.417 1.187 + $atom:C3A $mol:. @atom:C1 0.0 0.438 0.544 0.903 + $atom:C4A $mol:. @atom:C1 0.0 0.452 0.543 0.554 + $atom:C1B $mol:. @atom:C1 0.0 0.955 0.563 1.486 + $atom:D2B $mol:. @atom:C3 0.0 0.889 0.663 1.193 + $atom:C3B $mol:. @atom:C1 0.0 0.951 0.528 0.911 + $atom:C4B $mol:. @atom:C1 0.0 0.963 0.530 0.556 + } + + write('Data Bond List') { + $bond:b1 $atom:NC3 $atom:PO4 + $bond:b2 $atom:PO4 $atom:GL1 + $bond:b3 $atom:GL1 $atom:GL2 + $bond:b4 $atom:GL1 $atom:C1A + $bond:b5 $atom:C1A $atom:D2A + $bond:b6 $atom:D2A $atom:C3A + $bond:b9 $atom:C3A $atom:C4A + $bond:b10 $atom:GL2 $atom:C1B + $bond:b11 $atom:C1B $atom:D2B + $bond:b12 $atom:D2B $atom:C3B + $bond:b13 $atom:C3B $atom:C4B + } + +} +DOPE.scale(10) diff --git a/tools/moltemplate/examples/coarse_grained/MARTINI_examples/MARTINI_lipid_files/DOPG.lt b/tools/moltemplate/examples/coarse_grained/MARTINI_examples/MARTINI_lipid_files/DOPG.lt new file mode 100644 index 0000000000000000000000000000000000000000..bee0ae972b5f7dc244d73331dbfc0b07f5f63ab4 --- /dev/null +++ b/tools/moltemplate/examples/coarse_grained/MARTINI_examples/MARTINI_lipid_files/DOPG.lt @@ -0,0 +1,40 @@ +import "martini.lt" + +DOPG inherits MARTINI { + + # atomID molID atomTyle charge X Y Z + write('Data Atoms') { + $atom:GL0 $mol:. @atom:P4 0.0 0.510 0.547 2.484 + $atom:PO4 $mol:. @atom:Qa -1.0 0.557 0.450 2.156 + $atom:GL1 $mol:. @atom:Na 0.0 0.475 0.603 1.834 + $atom:GL2 $mol:. @atom:Na 0.0 0.774 0.662 1.768 + $atom:C1A $mol:. @atom:C1 0.0 0.337 0.509 1.478 + $atom:D2A $mol:. @atom:C3 0.0 0.482 0.634 1.190 + $atom:C3A $mol:. @atom:C1 0.0 0.401 0.486 0.902 + $atom:C4A $mol:. @atom:C1 0.0 0.468 0.569 0.543 + $atom:C1B $mol:. @atom:C1 0.0 0.893 0.507 1.499 + $atom:D2B $mol:. @atom:C3 0.0 0.985 0.539 1.202 + $atom:C3B $mol:. @atom:C1 0.0 0.905 0.527 0.896 + $atom:C4B $mol:. @atom:C1 0.0 0.980 0.627 0.549 + } + + write('Data Bond List') { + $bond:b1 $atom:GL0 $atom:PO4 + $bond:b2 $atom:PO4 $atom:GL1 + $bond:b3 $atom:GL1 $atom:GL2 + $bond:b4 $atom:GL1 $atom:C1A + $bond:b5 $atom:C1A $atom:D2A + $bond:b6 $atom:D2A $atom:C3A + $bond:b9 $atom:C3A $atom:C4A + $bond:b10 $atom:GL2 $atom:C1B + $bond:b11 $atom:C1B $atom:D2B + $bond:b12 $atom:D2B $atom:C3B + $bond:b13 $atom:C3B $atom:C4B + } + +} +DOPG.scale(10) + +# Optional: Move the molecule to a convenient location for buildling a bilayer: +# Center the molecule in the X,Y directions and set the min Z value. +DOPG.move(-6.4725,-5.55,-3.08) diff --git a/tools/moltemplate/examples/coarse_grained/MARTINI_examples/MARTINI_lipid_files/DOPS.lt b/tools/moltemplate/examples/coarse_grained/MARTINI_examples/MARTINI_lipid_files/DOPS.lt new file mode 100644 index 0000000000000000000000000000000000000000..92300373694090eae6e93953421558bbd810ae18 --- /dev/null +++ b/tools/moltemplate/examples/coarse_grained/MARTINI_examples/MARTINI_lipid_files/DOPS.lt @@ -0,0 +1,40 @@ +import "martini.lt" + +DOPS inherits MARTINI { + + # atomID molID atomTyle charge X Y Z + write('Data Atoms') { + $atom:CNO $mol:. @atom:P5 0.0 0.529 0.555 2.503 + $atom:PO4 $mol:. @atom:Qa -1.0 0.488 0.431 2.145 + $atom:GL1 $mol:. @atom:Na 0.0 0.540 0.568 1.828 + $atom:GL2 $mol:. @atom:Na 0.0 0.855 0.628 1.813 + $atom:C1A $mol:. @atom:C1 0.0 0.411 0.565 1.495 + $atom:D2A $mol:. @atom:C3 0.0 0.370 0.690 1.155 + $atom:C3A $mol:. @atom:C1 0.0 0.451 0.410 0.923 + $atom:C4A $mol:. @atom:C1 0.0 0.477 0.460 0.523 + $atom:C1B $mol:. @atom:C1 0.0 0.951 0.445 1.499 + $atom:D2B $mol:. @atom:C3 0.0 0.858 0.501 1.182 + $atom:C3B $mol:. @atom:C1 0.0 0.905 0.701 0.911 + $atom:C4B $mol:. @atom:C1 0.0 0.960 0.639 0.524 + } + + write('Data Bond List') { + $bond:b1 $atom:CNO $atom:PO4 + $bond:b2 $atom:PO4 $atom:GL1 + $bond:b3 $atom:GL1 $atom:GL2 + $bond:b4 $atom:GL1 $atom:C1A + $bond:b5 $atom:C1A $atom:D2A + $bond:b6 $atom:D2A $atom:C3A + $bond:b9 $atom:C3A $atom:C4A + $bond:b10 $atom:GL2 $atom:C1B + $bond:b11 $atom:C1B $atom:D2B + $bond:b12 $atom:D2B $atom:C3B + $bond:b13 $atom:C3B $atom:C4B + } + +} +DOPS.scale(10) + +# Optional: Move the molecule to a convenient location for buildling a bilayer: +# Center the molecule in the X,Y directions and set the min Z value. +DOPS.move(-6.49583,-5.49417,-2.88) diff --git a/tools/moltemplate/examples/coarse_grained/MARTINI_examples/MARTINI_lipid_files/DPPC.lt b/tools/moltemplate/examples/coarse_grained/MARTINI_examples/MARTINI_lipid_files/DPPC.lt new file mode 100644 index 0000000000000000000000000000000000000000..0f7641dd5eebe422901c70502edd8dc571877692 --- /dev/null +++ b/tools/moltemplate/examples/coarse_grained/MARTINI_examples/MARTINI_lipid_files/DPPC.lt @@ -0,0 +1,40 @@ +import "martini.lt" + +DPPC inherits MARTINI { + + # atomID molID atomTyle charge X Y Z + write('Data Atoms') { + $atom:NC3 $mol:. @atom:Q0 1.0 0.485 0.515 2.472 + $atom:PO4 $mol:. @atom:Qa -1.0 0.589 0.568 2.201 + $atom:GL1 $mol:. @atom:Na 0.0 0.509 0.536 1.838 + $atom:GL2 $mol:. @atom:Na 0.0 0.772 0.531 1.760 + $atom:C1A $mol:. @atom:C1 0.0 0.396 0.476 1.453 + $atom:C2A $mol:. @atom:C1 0.0 0.446 0.522 1.174 + $atom:C3A $mol:. @atom:C1 0.0 0.421 0.596 0.897 + $atom:C4A $mol:. @atom:C1 0.0 0.434 0.607 0.553 + $atom:C1B $mol:. @atom:C1 0.0 0.922 0.644 1.490 + $atom:C2B $mol:. @atom:C1 0.0 0.943 0.481 1.201 + $atom:C3B $mol:. @atom:C1 0.0 0.926 0.607 0.904 + $atom:C4B $mol:. @atom:C1 0.0 0.936 0.514 0.557 + } + + write('Data Bond List') { + $bond:b1 $atom:NC3 $atom:PO4 + $bond:b2 $atom:PO4 $atom:GL1 + $bond:b3 $atom:GL1 $atom:GL2 + $bond:b4 $atom:GL1 $atom:C1A + $bond:b5 $atom:C1A $atom:C2A + $bond:b6 $atom:C2A $atom:C3A + $bond:b9 $atom:C3A $atom:C4A + $bond:b10 $atom:GL2 $atom:C1B + $bond:b11 $atom:C1B $atom:C2B + $bond:b12 $atom:C2B $atom:C3B + $bond:b12 $atom:C3B $atom:C4B + } + +} +DPPC.scale(10) + +# Optional: Move the molecule to a convenient location for buildling a bilayer: +# Center the molecule in the X,Y directions and set the min Z value. +DPPC.move(-6.4825,-5.4975,-3.18) diff --git a/tools/moltemplate/examples/coarse_grained/MARTINI_examples/MARTINI_lipid_files/DPPE.lt b/tools/moltemplate/examples/coarse_grained/MARTINI_examples/MARTINI_lipid_files/DPPE.lt new file mode 100644 index 0000000000000000000000000000000000000000..ee311335668f70277bf1207a16a71eb3b22b8985 --- /dev/null +++ b/tools/moltemplate/examples/coarse_grained/MARTINI_examples/MARTINI_lipid_files/DPPE.lt @@ -0,0 +1,40 @@ +import "martini.lt" + +DPPE inherits MARTINI { + + # atomID molID atomTyle charge X Y Z + write('Data Atoms') { + $atom:NH3 $mol:. @atom:Qd 1.0 0.661 0.516 2.470 + $atom:PO4 $mol:. @atom:Qa -1.0 0.366 0.541 2.169 + $atom:GL1 $mol:. @atom:Na 0.0 0.474 0.578 1.822 + $atom:GL2 $mol:. @atom:Na 0.0 0.782 0.642 1.834 + $atom:C1A $mol:. @atom:C1 0.0 0.359 0.556 1.498 + $atom:C2A $mol:. @atom:C1 0.0 0.419 0.532 1.179 + $atom:C3A $mol:. @atom:C1 0.0 0.471 0.476 0.877 + $atom:C4A $mol:. @atom:C1 0.0 0.461 0.629 0.523 + $atom:C1B $mol:. @atom:C1 0.0 0.916 0.482 1.520 + $atom:C2B $mol:. @atom:C1 0.0 0.911 0.555 1.202 + $atom:C3B $mol:. @atom:C1 0.0 0.977 0.547 0.890 + $atom:C4B $mol:. @atom:C1 0.0 0.953 0.463 0.517 + } + + write('Data Bond List') { + $bond:b1 $atom:NH3 $atom:PO4 + $bond:b2 $atom:PO4 $atom:GL1 + $bond:b3 $atom:GL1 $atom:GL2 + $bond:b4 $atom:GL1 $atom:C1A + $bond:b5 $atom:C1A $atom:C2A + $bond:b6 $atom:C2A $atom:C3A + $bond:b9 $atom:C3A $atom:C4A + $bond:b10 $atom:GL2 $atom:C1B + $bond:b11 $atom:C1B $atom:C2B + $bond:b12 $atom:C2B $atom:C3B + $bond:b13 $atom:C3B $atom:C4B + } + +} +DPPE.scale(10) + +# Optional: Move the molecule to a convenient location for buildling a bilayer: +# Center the molecule in the X,Y directions and set the min Z value. +DPPE.move(-6.45833,-5.43083,-2.82) diff --git a/tools/moltemplate/examples/coarse_grained/MARTINI_examples/MARTINI_lipid_files/DSPC.lt b/tools/moltemplate/examples/coarse_grained/MARTINI_examples/MARTINI_lipid_files/DSPC.lt new file mode 100644 index 0000000000000000000000000000000000000000..d68a26650690838c5b221c1a23e369fcc1fca01a --- /dev/null +++ b/tools/moltemplate/examples/coarse_grained/MARTINI_examples/MARTINI_lipid_files/DSPC.lt @@ -0,0 +1,45 @@ +import "martini.lt" + +DSPC inherits MARTINI { + + # atomID molID atomTyle charge X Y Z + # (guessing the coordinates, and scaling them manually) + write('Data Atoms') { + $atom:NC3 $mol:. @atom:Q0 1.0 0.000000 0.000000 6.000000 + $atom:PO4 $mol:. @atom:Qa -1.0 0.000000 0.000000 5.000000 + $atom:GL1 $mol:. @atom:Na 0.0 0.000000 0.000000 4.000000 + $atom:GL2 $mol:. @atom:Na 0.0 0.000000 1.000000 4.000000 + $atom:C1A $mol:. @atom:C1 0.0 0.000000 -1.000000 4.000000 + $atom:C2A $mol:. @atom:C1 0.0 0.000000 -1.000000 3.000000 + $atom:C3A $mol:. @atom:C1 0.0 0.000000 -1.000000 2.000000 + $atom:C4A $mol:. @atom:C1 0.0 0.000000 -1.000000 1.000000 + $atom:C5A $mol:. @atom:C1 0.0 0.000000 -1.000000 0.000000 + $atom:C1B $mol:. @atom:C1 0.0 0.000000 1.000000 3.000000 + $atom:C2B $mol:. @atom:C1 0.0 0.000000 1.000000 2.000000 + $atom:C3B $mol:. @atom:C1 0.0 0.000000 1.000000 1.000000 + $atom:C4B $mol:. @atom:C1 0.0 0.000000 1.000000 0.000000 + $atom:C5B $mol:. @atom:C1 0.0 0.000000 1.000000 -1.000000 + } + + write('Data Bond List') { + $bond:b1 $atom:NC3 $atom:PO4 + $bond:b2 $atom:PO4 $atom:GL1 + $bond:b3 $atom:GL1 $atom:GL2 + $bond:b4 $atom:GL1 $atom:C1A + $bond:b5 $atom:C1A $atom:C2A + $bond:b6 $atom:C2A $atom:C3A + $bond:b9 $atom:C3A $atom:C4A + $bond:b10 $atom:C4A $atom:C5A + $bond:b11 $atom:GL2 $atom:C1B + $bond:b12 $atom:C1B $atom:C2B + $bond:b13 $atom:C2B $atom:C3B + $bond:b14 $atom:C3B $atom:C4B + $bond:b15 $atom:C4B $atom:C5B + } + +} +DSPC.scale(4.7) + +# Optional: Move the molecule to a convenient location for buildling a bilayer: +# Center the molecule in the X,Y directions and set the min Z value. +DSPC.move(-0,-0.335714,7.05).rot(-30.0,0,0,1) diff --git a/tools/moltemplate/examples/coarse_grained/MARTINI_examples/MARTINI_lipid_files/DSPE.lt b/tools/moltemplate/examples/coarse_grained/MARTINI_examples/MARTINI_lipid_files/DSPE.lt new file mode 100644 index 0000000000000000000000000000000000000000..2e10ed6629991cb3b087e11cdcd36468f5afacf6 --- /dev/null +++ b/tools/moltemplate/examples/coarse_grained/MARTINI_examples/MARTINI_lipid_files/DSPE.lt @@ -0,0 +1,40 @@ +import "martini.lt" + +DSPE inherits MARTINI { + + # atomID molID atomTyle charge X Y Z + write('Data Atoms') { + $atom:NH3 $mol:. @atom:Qd 1.0 0.000000 0.000000 6.000000 + $atom:PO4 $mol:. @atom:Qa -1.0 0.000000 0.000000 5.000000 + $atom:GL1 $mol:. @atom:Na 0.0 0.000000 0.000000 4.000000 + $atom:GL2 $mol:. @atom:Na 0.0 0.000000 1.000000 4.000000 + $atom:C1A $mol:. @atom:C1 0.0 0.000000 -1.000000 4.000000 + $atom:C2A $mol:. @atom:C1 0.0 0.000000 -1.000000 3.000000 + $atom:C3A $mol:. @atom:C1 0.0 0.000000 -1.000000 2.000000 + $atom:C4A $mol:. @atom:C1 0.0 0.000000 -1.000000 1.000000 + $atom:C5A $mol:. @atom:C1 0.0 0.000000 -1.000000 0.000000 + $atom:C1B $mol:. @atom:C1 0.0 0.000000 1.000000 3.000000 + $atom:C2B $mol:. @atom:C1 0.0 0.000000 1.000000 2.000000 + $atom:C3B $mol:. @atom:C1 0.0 0.000000 1.000000 1.000000 + $atom:C4B $mol:. @atom:C1 0.0 0.000000 1.000000 0.000000 + $atom:C5B $mol:. @atom:C1 0.0 0.000000 1.000000 -1.000000 + } + + write('Data Bond List') { + $bond:b1 $atom:NH3 $atom:PO4 + $bond:b2 $atom:PO4 $atom:GL1 + $bond:b3 $atom:GL1 $atom:GL2 + $bond:b4 $atom:GL1 $atom:C1A + $bond:b5 $atom:C1A $atom:C2A + $bond:b6 $atom:C2A $atom:C3A + $bond:b9 $atom:C3A $atom:C4A + $bond:b10 $atom:C4A $atom:C5A + $bond:b11 $atom:GL2 $atom:C1B + $bond:b12 $atom:C1B $atom:C2B + $bond:b13 $atom:C2B $atom:C3B + $bond:b14 $atom:C3B $atom:C4B + $bond:b15 $atom:C4B $atom:C5B + } + +} +DSPE.scale(4.7) diff --git a/tools/moltemplate/examples/coarse_grained/MARTINI_examples/MARTINI_lipid_files/DUPC.lt b/tools/moltemplate/examples/coarse_grained/MARTINI_examples/MARTINI_lipid_files/DUPC.lt new file mode 100644 index 0000000000000000000000000000000000000000..89144c3d23ae15a27e510e3c2241c2a4a925fe37 --- /dev/null +++ b/tools/moltemplate/examples/coarse_grained/MARTINI_examples/MARTINI_lipid_files/DUPC.lt @@ -0,0 +1,41 @@ +import "martini.lt" + +DUPC inherits MARTINI { + + # atomID molID atomTyle charge X Y Z + # (guessing the coordinates, and scaling them manually) + write('Data Atoms') { + $atom:NC3 $mol:. @atom:Q0 1.0 0.000000 0.000000 6.000000 + $atom:PO4 $mol:. @atom:Qa -1.0 0.000000 0.000000 5.000000 + $atom:GL1 $mol:. @atom:Na 0.0 0.000000 0.000000 4.000000 + $atom:GL2 $mol:. @atom:Na 0.0 0.000000 1.000000 4.000000 + $atom:C1A $mol:. @atom:C1 0.0 0.000000 -1.000000 4.000000 + $atom:E2A $mol:. @atom:C41 0.0 0.000000 -1.000000 3.000000 + $atom:D3A $mol:. @atom:C4 0.0 0.000000 -1.000000 2.000000 + $atom:C4A $mol:. @atom:C1 0.0 0.000000 -1.000000 1.000000 + $atom:C1B $mol:. @atom:C1 0.0 0.000000 1.000000 3.000000 + $atom:F2B $mol:. @atom:C42 0.0 0.000000 1.000000 2.000000 + $atom:D3B $mol:. @atom:C4 0.0 0.000000 1.000000 1.000000 + $atom:C4B $mol:. @atom:C1 0.0 0.000000 1.000000 0.000000 + } + + write('Data Bond List') { + $bond:b1 $atom:NC3 $atom:PO4 + $bond:b2 $atom:PO4 $atom:GL1 + $bond:b3 $atom:GL1 $atom:GL2 + $bond:b4 $atom:GL1 $atom:C1A + $bond:b5 $atom:C1A $atom:E2A + $bond:b6 $atom:E2A $atom:D3A + $bond:b9 $atom:D3A $atom:C4A + $bond:b10 $atom:GL2 $atom:C1B + $bond:b11 $atom:C1B $atom:F2B + $bond:b12 $atom:F2B $atom:D3B + $bond:b13 $atom:D3B $atom:C4B + } + +} +DUPC.scale(4.7) + +# Optional: Move the molecule to a convenient location for buildling a bilayer: +# Center the molecule in the X,Y directions and set the min Z value. +DUPC.move(-0,-0.391667,2.35) diff --git a/tools/moltemplate/examples/coarse_grained/MARTINI_examples/MARTINI_lipid_files/POPC.lt b/tools/moltemplate/examples/coarse_grained/MARTINI_examples/MARTINI_lipid_files/POPC.lt new file mode 100644 index 0000000000000000000000000000000000000000..2fef27f876c136c7c99655a593753992f995d015 --- /dev/null +++ b/tools/moltemplate/examples/coarse_grained/MARTINI_examples/MARTINI_lipid_files/POPC.lt @@ -0,0 +1,40 @@ +import "martini.lt" + +POPC inherits MARTINI { + + # atomID molID atomTyle charge X Y Z + write('Data Atoms') { + $atom:NC3 $mol:. @atom:Q0 1.0 0.561 0.534 2.457 + $atom:PO4 $mol:. @atom:Qa -1.0 0.435 0.553 2.166 + $atom:GL1 $mol:. @atom:Na 0.0 0.478 0.512 1.813 + $atom:GL2 $mol:. @atom:Na 0.0 0.778 0.470 1.805 + $atom:C1A $mol:. @atom:C1 0.0 0.415 0.469 1.422 + $atom:D2A $mol:. @atom:C3 0.0 0.451 0.703 1.201 + $atom:C3A $mol:. @atom:C1 0.0 0.412 0.577 0.903 + $atom:C4A $mol:. @atom:C1 0.0 0.415 0.606 0.559 + $atom:C1B $mol:. @atom:C1 0.0 0.938 0.611 1.512 + $atom:C2B $mol:. @atom:C1 0.0 0.919 0.457 1.196 + $atom:C3B $mol:. @atom:C1 0.0 0.924 0.591 0.907 + $atom:C4B $mol:. @atom:C1 0.0 0.927 0.557 0.559 + } + + write('Data Bond List') { + $bond:b1 $atom:NC3 $atom:PO4 + $bond:b2 $atom:PO4 $atom:GL1 + $bond:b3 $atom:GL1 $atom:GL2 + $bond:b4 $atom:GL1 $atom:C1A + $bond:b5 $atom:C1A $atom:D2A + $bond:b6 $atom:D2A $atom:C3A + $bond:b9 $atom:C3A $atom:C4A + $bond:b10 $atom:GL2 $atom:C1B + $bond:b11 $atom:C1B $atom:C2B + $bond:b12 $atom:C2B $atom:C3B + $bond:b13 $atom:C3B $atom:C4B + } + +} +POPC.scale(10) + +# Optional: Move the molecule to a convenient location for buildling a bilayer: +# Center the molecule in the X,Y directions and set the min Z value. +POPC.move(-6.3775,-5.53333,-3.24) diff --git a/tools/moltemplate/examples/coarse_grained/MARTINI_examples/MARTINI_lipid_files/POPE.lt b/tools/moltemplate/examples/coarse_grained/MARTINI_examples/MARTINI_lipid_files/POPE.lt new file mode 100644 index 0000000000000000000000000000000000000000..4781cbf04a9a6c9429fdd762cced43099c02e484 --- /dev/null +++ b/tools/moltemplate/examples/coarse_grained/MARTINI_examples/MARTINI_lipid_files/POPE.lt @@ -0,0 +1,36 @@ +import "martini.lt" + +POPE inherits MARTINI { + + # atomID molID atomTyle charge X Y Z + write('Data Atoms') { + $atom:NH3 $mol:. @atom:Qd 1.0 0.641 0.577 2.464 + $atom:PO4 $mol:. @atom:Qa -1.0 0.418 0.543 2.154 + $atom:GL1 $mol:. @atom:Na 0.0 0.500 0.593 1.818 + $atom:GL2 $mol:. @atom:Na 0.0 0.804 0.535 1.822 + $atom:C1A $mol:. @atom:C1 0.0 0.377 0.595 1.479 + $atom:D2A $mol:. @atom:C3 0.0 0.495 0.498 1.182 + $atom:C3A $mol:. @atom:C1 0.0 0.418 0.660 0.899 + $atom:C4A $mol:. @atom:C1 0.0 0.448 0.518 0.542 + $atom:C1B $mol:. @atom:C1 0.0 0.925 0.442 1.498 + $atom:C2B $mol:. @atom:C1 0.0 0.985 0.564 1.204 + $atom:C3B $mol:. @atom:C1 0.0 0.907 0.473 0.900 + $atom:C4B $mol:. @atom:C1 0.0 0.968 0.530 0.537 + } + + write('Data Bond List') { + $bond:b1 $atom:NH3 $atom:PO4 + $bond:b2 $atom:PO4 $atom:GL1 + $bond:b3 $atom:GL1 $atom:GL2 + $bond:b4 $atom:GL1 $atom:C1A + $bond:b5 $atom:C1A $atom:D2A + $bond:b6 $atom:D2A $atom:C3A + $bond:b9 $atom:C3A $atom:C4A + $bond:b10 $atom:GL2 $atom:C1B + $bond:b11 $atom:C1B $atom:C2B + $bond:b12 $atom:C2B $atom:C3B + $bond:b13 $atom:C3B $atom:C4B + } + +} +POPE.scale(10) diff --git a/tools/moltemplate/examples/coarse_grained/MARTINI_examples/MARTINI_lipid_files/POPG.lt b/tools/moltemplate/examples/coarse_grained/MARTINI_examples/MARTINI_lipid_files/POPG.lt new file mode 100644 index 0000000000000000000000000000000000000000..a6f47af165ecb6264a8d29df7649ae3982d33ae3 --- /dev/null +++ b/tools/moltemplate/examples/coarse_grained/MARTINI_examples/MARTINI_lipid_files/POPG.lt @@ -0,0 +1,40 @@ +import "martini.lt" + +POPG inherits MARTINI { + + # atomID molID atomTyle charge X Y Z + write('Data Atoms') { + $atom:GL0 $mol:. @atom:P4 0.0 0.601 0.560 2.480 + $atom:PO4 $mol:. @atom:Qa -1.0 0.501 0.608 2.161 + $atom:GL1 $mol:. @atom:Na 0.0 0.534 0.516 1.827 + $atom:GL2 $mol:. @atom:Na 0.0 0.813 0.629 1.783 + $atom:C1A $mol:. @atom:C1 0.0 0.381 0.522 1.477 + $atom:D2A $mol:. @atom:C3 0.0 0.502 0.645 1.187 + $atom:C3A $mol:. @atom:C1 0.0 0.442 0.489 0.901 + $atom:C4A $mol:. @atom:C1 0.0 0.397 0.635 0.555 + $atom:C1B $mol:. @atom:C1 0.0 0.948 0.614 1.482 + $atom:C2B $mol:. @atom:C1 0.0 0.968 0.454 1.207 + $atom:C3B $mol:. @atom:C1 0.0 0.958 0.520 0.898 + $atom:C4B $mol:. @atom:C1 0.0 0.896 0.515 0.542 + } + + write('Data Bond List') { + $bond:b1 $atom:GL0 $atom:PO4 + $bond:b2 $atom:PO4 $atom:GL1 + $bond:b3 $atom:GL1 $atom:GL2 + $bond:b4 $atom:GL1 $atom:C1A + $bond:b5 $atom:C1A $atom:D2A + $bond:b6 $atom:D2A $atom:C3A + $bond:b9 $atom:C3A $atom:C4A + $bond:b10 $atom:GL2 $atom:C1B + $bond:b11 $atom:C1B $atom:C2B + $bond:b12 $atom:C2B $atom:C3B + $bond:b13 $atom:C3B $atom:C4B + } + +} +POPG.scale(10) + +# Optional: Move the molecule to a convenient location for buildling a bilayer: +# Center the molecule in the X,Y directions and set the min Z value. +POPG.move(-6.6175,-5.58917,-3.07) diff --git a/tools/moltemplate/examples/coarse_grained/MARTINI_examples/MARTINI_lipid_files/POPS.lt b/tools/moltemplate/examples/coarse_grained/MARTINI_examples/MARTINI_lipid_files/POPS.lt new file mode 100644 index 0000000000000000000000000000000000000000..158f19db80e2ca4e83d93225401aefe7b3845580 --- /dev/null +++ b/tools/moltemplate/examples/coarse_grained/MARTINI_examples/MARTINI_lipid_files/POPS.lt @@ -0,0 +1,40 @@ +import "martini.lt" + +POPS inherits MARTINI { + + # atomID molID atomTyle charge X Y Z + write('Data Atoms') { + $atom:CNO $mol:. @atom:P5 0.0 0.612 0.590 2.506 + $atom:PO4 $mol:. @atom:Qa -1.0 0.497 0.582 2.177 + $atom:GL1 $mol:. @atom:Na 0.0 0.517 0.589 1.823 + $atom:GL2 $mol:. @atom:Na 0.0 0.843 0.573 1.782 + $atom:C1A $mol:. @atom:C1 0.0 0.383 0.633 1.484 + $atom:D2A $mol:. @atom:C3 0.0 0.419 0.429 1.206 + $atom:C3A $mol:. @atom:C1 0.0 0.440 0.530 0.892 + $atom:C4A $mol:. @atom:C1 0.0 0.441 0.611 0.527 + $atom:C1B $mol:. @atom:C1 0.0 0.937 0.511 1.490 + $atom:C2B $mol:. @atom:C1 0.0 0.917 0.474 1.186 + $atom:C3B $mol:. @atom:C1 0.0 0.938 0.627 0.897 + $atom:C4B $mol:. @atom:C1 0.0 0.947 0.502 0.530 + } + + write('Data Bond List') { + $bond:b1 $atom:CNO $atom:PO4 + $bond:b2 $atom:PO4 $atom:GL1 + $bond:b3 $atom:GL1 $atom:GL2 + $bond:b4 $atom:GL1 $atom:C1A + $bond:b5 $atom:C1A $atom:D2A + $bond:b6 $atom:D2A $atom:C3A + $bond:b9 $atom:C3A $atom:C4A + $bond:b10 $atom:GL2 $atom:C1B + $bond:b11 $atom:C1B $atom:C2B + $bond:b12 $atom:C2B $atom:C3B + $bond:b13 $atom:C3B $atom:C4B + } + +} +POPS.scale(10) + +# Optional: Move the molecule to a convenient location for buildling a bilayer: +# Center the molecule in the X,Y directions and set the min Z value. +POPS.move(-6.57583,-5.5425,-2.92) diff --git a/tools/moltemplate/examples/coarse_grained/MARTINI_examples/MARTINI_lipid_files/PPCS.lt b/tools/moltemplate/examples/coarse_grained/MARTINI_examples/MARTINI_lipid_files/PPCS.lt new file mode 100644 index 0000000000000000000000000000000000000000..09a5ff8781f0fb59de60a0369d6640a93f4d9759 --- /dev/null +++ b/tools/moltemplate/examples/coarse_grained/MARTINI_examples/MARTINI_lipid_files/PPCS.lt @@ -0,0 +1,41 @@ +import "martini.lt" + +PPCS inherits MARTINI { + + # atomID molID atomTyle charge X Y Z + # (guessing the coordinates, and scaling them manually) + write('Data Atoms') { + $atom:NC3 $mol:. @atom:Q0 1.0 0.000000 0.000000 6.000000 + $atom:PO4 $mol:. @atom:Qa -1.0 0.000000 0.000000 5.000000 + $atom:CNO $mol:. @atom:P5 0.0 0.000000 0.000000 4.000000 + $atom:CN1 $mol:. @atom:P1 0.0 0.000000 1.000000 4.000000 + $atom:C1A $mol:. @atom:C1 0.0 0.000000 -1.000000 4.000000 + $atom:C2A $mol:. @atom:C1 0.0 0.000000 -1.000000 3.000000 + $atom:C3A $mol:. @atom:C1 0.0 0.000000 -1.000000 2.000000 + $atom:C4A $mol:. @atom:C1 0.0 0.000000 -1.000000 1.000000 + $atom:D1B $mol:. @atom:C3 0.0 0.000000 1.000000 3.000000 + $atom:C2B $mol:. @atom:C1 0.0 0.000000 1.000000 2.000000 + $atom:C3B $mol:. @atom:C1 0.0 0.000000 1.000000 1.000000 + $atom:C4B $mol:. @atom:C1 0.0 0.000000 1.000000 0.000000 + } + + write('Data Bond List') { + $bond:b1 $atom:NC3 $atom:PO4 + $bond:b2 $atom:PO4 $atom:CNO + $bond:b3 $atom:CNO $atom:CN1 + $bond:b4 $atom:CNO $atom:C1A + $bond:b5 $atom:C1A $atom:C2A + $bond:b6 $atom:C2A $atom:C3A + $bond:b9 $atom:C3A $atom:C4A + $bond:b10 $atom:CN1 $atom:D1B + $bond:b11 $atom:D1B $atom:C2B + $bond:b12 $atom:C2B $atom:C3B + $bond:b13 $atom:C3B $atom:C4B + } + +} +PPCS.scale(4.7) + +# Optional: Move the molecule to a convenient location for buildling a bilayer: +# Center the molecule in the X,Y directions and set the min Z value. +PPCS.move(-0,-0.391667,2.35).rot(-30.0,0,0,1) diff --git a/tools/moltemplate/examples/coarse_grained/MARTINI_examples/MARTINI_lipid_files/README.txt b/tools/moltemplate/examples/coarse_grained/MARTINI_examples/MARTINI_lipid_files/README.txt new file mode 100644 index 0000000000000000000000000000000000000000..c498fbe4d554649c2b238ec97bbb64fd64c28976 --- /dev/null +++ b/tools/moltemplate/examples/coarse_grained/MARTINI_examples/MARTINI_lipid_files/README.txt @@ -0,0 +1,74 @@ +This directory contains many .LT files molecules +which have been parameterized with the MARTINI force field +and converted into moltemplate format. + +------- CITE ----------------------------- +NOTE: We extracted the parameters in the MARTINI force field from the files +distributed with the "EMC" tool. If you use these .lt files, please also cite: +P. J. in ‘t Veld and G. C. Rutledge, Macromolecules 2003, 36, 7358. +--------------------------------------------- +THESE FILES HAVE NOT BEEN CAREFULLY TESTED. PLEASE REPORT BROKEN EXAMPLES TO: +jewett.aij -at- gmail.com, or report issues at github.com/jewettaij/moltemplate +--------------------------------------------- +PLEASE SHARE ANY NEW EXAMPLES YOU CREATE WITH THE COMMUNITY, either by emailing: +jewett.aij -at- gmail.com, or a pull request at github.com/jewettaij/moltemplate +--------------------------------------------- + +How to use these files: + +Look at the "DOPC_bilayer_preformed" example. +In particular, look at the "moltemplate_files/system.lt" file. + +This example contains only one kind of lipid, but you can create a mixture +by replacing the "lipids = new DPPC" command with a command like: +lipids = new random([DPPC, DSPC], [195,195], 1234) + +----- comments ----- + +Several of the examples in the "MARTINI_examples" directory are limited to +only one kind of lipid. In these examples, the force field parameters were +hard coded inside the definition of the lipid molecule +(specifically, the DPPC.lt file). +This makes the examples slightly easier to read and understand because +everything is contained in the same file, but not useful for general use. + +This directory, on the other hand, contains more general .LT files useful +for building multi-component membranes with multiple types of lipids and +sterols. Because most of these molecules share many of the the same atom +types and force field parameters, all of this information has been saved +in a separate file, "martini.lt", which is located in the +"moltemplate/force_fields" subdirectory (distributed with moltemplate). + +The conversion to MOLTEMPLATE (.LT) format was done by +David Stelter and Saeed Momeni Bashusqeh, converting the +EMC files distributed by Pieter J. in 't Veld. + +--- Generalizing to other Lipids --- + +More Lipids and Sterols can be downloaded at: +http://cgmartini.nl/index.php/force-field-parameters/lipids +(http://cgmartini.nl) +in gromacs .itp and .GRO formats and converted into moltemplate format. + +For inspiration how this should be done, download the DPPC molecule files from +http://cgmartini.nl/index.php/force-field-parameters/lipids2/351-lipid.html?dir=PC&lipid=DOPC +and compare these files with the DOPC.lt file in this directory. + +We copied the coordinates from the DOPC.gro file into the DOPC.lt file, +and (attempted to) make sure that the atom types matched the atom types +in the "martini.lt" file (which should also match the names in the .ITP files). + +--- Generalizing to other kinds of molecules (eg. amino acids --- + +The "martini.lt" file currently only contains the definitions of atoms +used to simulate lipids and sterols. +To simulate other molecules such as proteins using the MARTINI force field, +you will need to create a more comprehensive "martini.lt" file which includes +these new particle types. One way to do that is to download the .PRM files +(EMC format) for the molecule types you are interested in, and include them +in the list of .PRM files when you run the "emcprm2lt.py" conversion script. + +For more details how this can be done, go to the "force_field" subdirectory +and look for the "martini.lt" file. Additional .PRM files are located in +the "martini" subdirectory in that folder. + diff --git a/tools/moltemplate/examples/coarse_grained/MARTINI_examples/MARTINI_lipid_files/water.lt b/tools/moltemplate/examples/coarse_grained/MARTINI_examples/MARTINI_lipid_files/water.lt new file mode 100644 index 0000000000000000000000000000000000000000..6513d834136a1b7e50cc003c3b7a3edd72d0c426 --- /dev/null +++ b/tools/moltemplate/examples/coarse_grained/MARTINI_examples/MARTINI_lipid_files/water.lt @@ -0,0 +1,10 @@ +import "martini.lt" + +#water molecules in MARTINI contain only one particle + +MW inherits MARTINI { + #AtomID MolID AtomType Charge x y z + write("Data Atoms") { + $atom $mol @atom:P4 0 0 0 0 + } +} diff --git a/tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_formation_PACKMOL/README.TXT b/tools/moltemplate/examples/coarse_grained/MARTINI_examples/force_field_explicit/DPPC_bilayer_formation_PACKMOL/README.txt similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_formation_PACKMOL/README.TXT rename to tools/moltemplate/examples/coarse_grained/MARTINI_examples/force_field_explicit/DPPC_bilayer_formation_PACKMOL/README.txt diff --git a/tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_formation_PACKMOL/README_run.sh b/tools/moltemplate/examples/coarse_grained/MARTINI_examples/force_field_explicit/DPPC_bilayer_formation_PACKMOL/README_run.sh similarity index 99% rename from tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_formation_PACKMOL/README_run.sh rename to tools/moltemplate/examples/coarse_grained/MARTINI_examples/force_field_explicit/DPPC_bilayer_formation_PACKMOL/README_run.sh index 9d2b0fbc5ae62cb2d3df5f6ce49eedd230409506..905a9f7b0e687e5d0d405f3b17abcd0c1705e305 100755 --- a/tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_formation_PACKMOL/README_run.sh +++ b/tools/moltemplate/examples/coarse_grained/MARTINI_examples/force_field_explicit/DPPC_bilayer_formation_PACKMOL/README_run.sh @@ -1,6 +1,6 @@ # --- Running LAMMPS --- # -------- PREREQUISITES: -------- -# The 2 files "run.in.min", "run.in.npt", and "run.in.nvt" are LAMMPS +# The 2 files "run.in.min", "run.in.npt", and "run.in.nvt" are LAMMPS # input scripts which link to the input scripts and data files # you hopefully have created earlier with moltemplate.sh: # system.in.init, system.in.settings, system.data diff --git a/tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_formation_PACKMOL/README_setup.sh b/tools/moltemplate/examples/coarse_grained/MARTINI_examples/force_field_explicit/DPPC_bilayer_formation_PACKMOL/README_setup.sh similarity index 96% rename from tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_formation_PACKMOL/README_setup.sh rename to tools/moltemplate/examples/coarse_grained/MARTINI_examples/force_field_explicit/DPPC_bilayer_formation_PACKMOL/README_setup.sh index 1e6630a94dcdb4af072bb0f14cd0f857fff1cca4..964f151f4e98ec58c3707e9009a44a1a4c1f1b14 100755 --- a/tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_formation_PACKMOL/README_setup.sh +++ b/tools/moltemplate/examples/coarse_grained/MARTINI_examples/force_field_explicit/DPPC_bilayer_formation_PACKMOL/README_setup.sh @@ -16,12 +16,12 @@ cd moltemplate_files moltemplate.sh -xyz system.xyz system.lt - # This will generate various files with names ending in *.in* and *.data. + # This will generate various files with names ending in *.in* and *.data. # Move them to the directory where you plan to run LAMMPS (in this case "../") mv -f system.data system.in* ../ # Optional: - # The "./output_ttree/" directory is full of temporary files generated by + # The "./output_ttree/" directory is full of temporary files generated by # moltemplate. They can be useful for debugging, but are usually thrown away. rm -rf output_ttree/ diff --git a/tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_preformed/README_visualize.txt b/tools/moltemplate/examples/coarse_grained/MARTINI_examples/force_field_explicit/DPPC_bilayer_formation_PACKMOL/README_visualize.txt similarity index 93% rename from tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_preformed/README_visualize.txt rename to tools/moltemplate/examples/coarse_grained/MARTINI_examples/force_field_explicit/DPPC_bilayer_formation_PACKMOL/README_visualize.txt index 587b800448a8e8c206ed08b637d351f1fbf3ea92..e8ad744015d4aea7bdf99e4ca0c177c542f6dab5 100644 --- a/tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_preformed/README_visualize.txt +++ b/tools/moltemplate/examples/coarse_grained/MARTINI_examples/force_field_explicit/DPPC_bilayer_formation_PACKMOL/README_visualize.txt @@ -4,7 +4,7 @@ 1) Build a PSF file for use in viewing with VMD. -This step works with VMD 1.9 and topotools 1.2. +This step works with VMD 1.9 and topotools 1.2. (Older versions, like VMD 1.8.6, don't support this.) @@ -17,7 +17,7 @@ c) Enter: topo readlammpsdata system.data full animate write psf system.psf -2) +2) Later, to Load a trajectory in VMD: @@ -31,17 +31,17 @@ Later, to Load a trajectory in VMD: ---- A note on trajectory format: ----- If the trajectory is a DUMP file, then make sure the it contains the -information you need for pbctools (see below. I've been using this +information you need for pbctools (see below. I've been using this command in my LAMMPS scripts to create the trajectories: dump 1 all custom 5000 DUMP_FILE.lammpstrj id mol type x y z ix iy iz -It's a good idea to use an atom_style which supports molecule-ID numbers -so that you can assign a molecule-ID number to each atom. (I think this +It's a good idea to use an atom_style which supports molecule-ID numbers +so that you can assign a molecule-ID number to each atom. (I think this is needed to wrap atom coordinates without breaking molecules in half.) -Of course, you don't have to save your trajectories in DUMP format, -(other formats like DCD work fine) I just mention dump files +Of course, you don't have to save your trajectories in DUMP format, +(other formats like DCD work fine) I just mention dump files because these are the files I'm familiar with. 3) ----- Wrap the coordinates to the unit cell @@ -57,7 +57,7 @@ d) Try entering these commands: ----- Optional ---- Sometimes the solvent or membrane obscures the view of the solute. - It can help to shift the location of the periodic boundary box + It can help to shift the location of the periodic boundary box To shift the box in the y direction (for example) do this: pbc wrap -compound res -all -shiftcenterrel {0.0 0.0 -0.5} @@ -65,19 +65,19 @@ d) Try entering these commands: Distances are measured in units of box-length fractions, not Angstroms. - Alternately if you have a solute whose atoms are all of type 1, + Alternately if you have a solute whose atoms are all of type 1, then you can also try this to center the box around it: pbc wrap -sel type=1 -all -centersel type=2 -center com -4) +4) You should check if your periodic boundary conditions are too small. To do that: select Graphics->Representations menu option - click on the "Periodic" tab, and + click on the "Periodic" tab, and click on the "+x", "-x", "+y", "-y", "+z", "-z" checkboxes. -5) Optional: If you like, change the atom types in the PSF file so +5) Optional: If you like, change the atom types in the PSF file so that VMD recognizes the atom types, use something like: sed -e 's/ 1 1 / C C /g' < system.psf > temp1.psf diff --git a/tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_formation_PACKMOL/images/DPPC_martini_LR.jpg b/tools/moltemplate/examples/coarse_grained/MARTINI_examples/force_field_explicit/DPPC_bilayer_formation_PACKMOL/images/DPPC_martini_LR.jpg similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_formation_PACKMOL/images/DPPC_martini_LR.jpg rename to tools/moltemplate/examples/coarse_grained/MARTINI_examples/force_field_explicit/DPPC_bilayer_formation_PACKMOL/images/DPPC_martini_LR.jpg diff --git a/tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_formation_PACKMOL/images/t=0_after_minimization_LR.jpg b/tools/moltemplate/examples/coarse_grained/MARTINI_examples/force_field_explicit/DPPC_bilayer_formation_PACKMOL/images/t=0_after_minimization_LR.jpg similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_formation_PACKMOL/images/t=0_after_minimization_LR.jpg rename to tools/moltemplate/examples/coarse_grained/MARTINI_examples/force_field_explicit/DPPC_bilayer_formation_PACKMOL/images/t=0_after_minimization_LR.jpg diff --git a/tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_formation_PACKMOL/images/t=13ns_450K_NVT_LR.jpg b/tools/moltemplate/examples/coarse_grained/MARTINI_examples/force_field_explicit/DPPC_bilayer_formation_PACKMOL/images/t=13ns_450K_NVT_LR.jpg similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_formation_PACKMOL/images/t=13ns_450K_NVT_LR.jpg rename to tools/moltemplate/examples/coarse_grained/MARTINI_examples/force_field_explicit/DPPC_bilayer_formation_PACKMOL/images/t=13ns_450K_NVT_LR.jpg diff --git a/tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_formation_PACKMOL/images/t=26ns_300K_NPT_LR.jpg b/tools/moltemplate/examples/coarse_grained/MARTINI_examples/force_field_explicit/DPPC_bilayer_formation_PACKMOL/images/t=26ns_300K_NPT_LR.jpg similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_formation_PACKMOL/images/t=26ns_300K_NPT_LR.jpg rename to tools/moltemplate/examples/coarse_grained/MARTINI_examples/force_field_explicit/DPPC_bilayer_formation_PACKMOL/images/t=26ns_300K_NPT_LR.jpg diff --git a/tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_formation_PACKMOL/images/t=6ns_300K_NPT_LR.jpg b/tools/moltemplate/examples/coarse_grained/MARTINI_examples/force_field_explicit/DPPC_bilayer_formation_PACKMOL/images/t=6ns_300K_NPT_LR.jpg similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_formation_PACKMOL/images/t=6ns_300K_NPT_LR.jpg rename to tools/moltemplate/examples/coarse_grained/MARTINI_examples/force_field_explicit/DPPC_bilayer_formation_PACKMOL/images/t=6ns_300K_NPT_LR.jpg diff --git a/tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_formation_PACKMOL/images/water_martini_LR.jpg b/tools/moltemplate/examples/coarse_grained/MARTINI_examples/force_field_explicit/DPPC_bilayer_formation_PACKMOL/images/water_martini_LR.jpg similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_formation_PACKMOL/images/water_martini_LR.jpg rename to tools/moltemplate/examples/coarse_grained/MARTINI_examples/force_field_explicit/DPPC_bilayer_formation_PACKMOL/images/water_martini_LR.jpg diff --git a/tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_formation_PACKMOL/moltemplate_files/lipid.lt b/tools/moltemplate/examples/coarse_grained/MARTINI_examples/force_field_explicit/DPPC_bilayer_formation_PACKMOL/moltemplate_files/lipid.lt similarity index 97% rename from tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_formation_PACKMOL/moltemplate_files/lipid.lt rename to tools/moltemplate/examples/coarse_grained/MARTINI_examples/force_field_explicit/DPPC_bilayer_formation_PACKMOL/moltemplate_files/lipid.lt index 3fe1b5530560fc044b0b0ec1ffa7937798e91629..2ffc3887aad435844af8d36bff7afedec0312d5c 100644 --- a/tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_formation_PACKMOL/moltemplate_files/lipid.lt +++ b/tools/moltemplate/examples/coarse_grained/MARTINI_examples/force_field_explicit/DPPC_bilayer_formation_PACKMOL/moltemplate_files/lipid.lt @@ -1,78 +1,78 @@ -DPPC { - - write_once("In Init") { - units real - atom_style full - bond_style hybrid harmonic - angle_style hybrid cosine/squared - dihedral_style none - improper_style none - pair_style hybrid lj/gromacs/coul/gromacs 9 12 0.000001 12 - special_bonds lj/coul 0 1 1 - dielectric 15 - neigh_modify every 10 - } - - write("Data Atoms") { - $atom:1 $mol:. @atom:Q0 1.0 9.09 9.83 0.75 - $atom:2 $mol:. @atom:Qa -1.0 5.68 7.31 0.00 - $atom:3 $mol:. @atom:Na 0.0 5.50 5.61 3.28 - $atom:4 $mol:. @atom:Na 0.0 6.65 2.22 3.04 - $atom:5 $mol:. @atom:C1 0.0 5.15 7.65 7.06 - $atom:6 $mol:. @atom:C1 0.0 7.91 7.17 10.54 - $atom:7 $mol:. @atom:C1 0.0 9.24 8.25 14.96 - $atom:8 $mol:. @atom:C1 0.0 12.19 11.75 16.38 - $atom:9 $mol:. @atom:C1 0.0 5.52 1.61 7.40 - $atom:10 $mol:. @atom:C1 0.0 6.53 2.26 12.25 - $atom:11 $mol:. @atom:C1 0.0 3.51 1.81 16.01 - $atom:12 $mol:. @atom:C1 0.0 0.00 0.00 18.19 - } - write("Data Bonds") { - $bond:b1 @bond:Bo $atom:1 $atom:2 - $bond:b2 @bond:Bo $atom:2 $atom:3 - $bond:b3 @bond:Short $atom:3 $atom:4 - $bond:b4 @bond:Bo $atom:3 $atom:5 - $bond:b5 @bond:Bo $atom:5 $atom:6 - $bond:b6 @bond:Bo $atom:6 $atom:7 - $bond:b7 @bond:Bo $atom:7 $atom:8 - $bond:b8 @bond:Bo $atom:4 $atom:9 - $bond:b9 @bond:Bo $atom:9 $atom:10 - $bond:b10 @bond:Bo $atom:10 $atom:11 - $bond:b11 @bond:Bo $atom:11 $atom:12 - } - write("Data Angles") { - $angle:a1 @angle:An1 $atom:1 $atom:2 $atom:3 - $angle:a2 @angle:An2 $atom:2 $atom:3 $atom:5 - $angle:a3 @angle:An2 $atom:2 $atom:3 $atom:4 - $angle:a4 @angle:An2 $atom:4 $atom:3 $atom:5 - $angle:a5 @angle:An1 $atom:3 $atom:4 $atom:9 - $angle:a6 @angle:An1 $atom:3 $atom:5 $atom:6 - $angle:a7 @angle:An1 $atom:5 $atom:6 $atom:7 - $angle:a8 @angle:An1 $atom:6 $atom:7 $atom:8 - $angle:a9 @angle:An1 $atom:4 $atom:9 $atom:10 - $angle:a10 @angle:An1 $atom:9 $atom:10 $atom:11 - $angle:a11 @angle:An1 $atom:10 $atom:11 $atom:12 - } - write_once("Data Masses") { - @atom:Q0 72.0 - @atom:Qa 72.0 - @atom:Na 72.0 - @atom:C1 72.0 - } - write_once("In Settings") { - pair_coeff @atom:Q0 @atom:Q0 lj/gromacs/coul/gromacs 0.8365200764818 4.7 - pair_coeff @atom:Q0 @atom:Qa lj/gromacs/coul/gromacs 1.0755258126195 4.7 - pair_coeff @atom:Q0 @atom:Na lj/gromacs/coul/gromacs 0.9560229445507 4.7 - pair_coeff @atom:Q0 @atom:C1 lj/gromacs/coul/gromacs 0.4780114722753 6.2 - pair_coeff @atom:Qa @atom:Qa lj/gromacs/coul/gromacs 1.1950286806883 4.7 - pair_coeff @atom:Qa @atom:Na lj/gromacs/coul/gromacs 0.9560229445507 4.7 - pair_coeff @atom:Qa @atom:C1 lj/gromacs/coul/gromacs 0.4780114722753 6.2 - pair_coeff @atom:Na @atom:Na lj/gromacs/coul/gromacs 0.9560229445507 4.7 - pair_coeff @atom:Na @atom:C1 lj/gromacs/coul/gromacs 0.6453154875717 4.7 - pair_coeff @atom:C1 @atom:C1 lj/gromacs/coul/gromacs 0.8365200764818 4.7 - bond_coeff @bond:Bo harmonic 1.4937858508604 4.7 - bond_coeff @bond:Short harmonic 1.4937858508604 3.7 - angle_coeff @angle:An1 cosine/squared 2.9875717017208 180 - angle_coeff @angle:An2 cosine/squared 2.9875717017208 120 - } -} #DPPC +DPPC { + + write_once("In Init") { + units real + atom_style full + bond_style hybrid harmonic + angle_style hybrid cosine/squared + dihedral_style none + improper_style none + pair_style hybrid lj/gromacs/coul/gromacs 9 12 0.000001 12 + special_bonds lj/coul 0 1 1 + dielectric 15 + neigh_modify every 10 + } + + write("Data Atoms") { + $atom:1 $mol:. @atom:Q0 1.0 9.09 9.83 0.75 + $atom:2 $mol:. @atom:Qa -1.0 5.68 7.31 0.00 + $atom:3 $mol:. @atom:Na 0.0 5.50 5.61 3.28 + $atom:4 $mol:. @atom:Na 0.0 6.65 2.22 3.04 + $atom:5 $mol:. @atom:C1 0.0 5.15 7.65 7.06 + $atom:6 $mol:. @atom:C1 0.0 7.91 7.17 10.54 + $atom:7 $mol:. @atom:C1 0.0 9.24 8.25 14.96 + $atom:8 $mol:. @atom:C1 0.0 12.19 11.75 16.38 + $atom:9 $mol:. @atom:C1 0.0 5.52 1.61 7.40 + $atom:10 $mol:. @atom:C1 0.0 6.53 2.26 12.25 + $atom:11 $mol:. @atom:C1 0.0 3.51 1.81 16.01 + $atom:12 $mol:. @atom:C1 0.0 0.00 0.00 18.19 + } + write("Data Bonds") { + $bond:b1 @bond:Bo $atom:1 $atom:2 + $bond:b2 @bond:Bo $atom:2 $atom:3 + $bond:b3 @bond:Short $atom:3 $atom:4 + $bond:b4 @bond:Bo $atom:3 $atom:5 + $bond:b5 @bond:Bo $atom:5 $atom:6 + $bond:b6 @bond:Bo $atom:6 $atom:7 + $bond:b7 @bond:Bo $atom:7 $atom:8 + $bond:b8 @bond:Bo $atom:4 $atom:9 + $bond:b9 @bond:Bo $atom:9 $atom:10 + $bond:b10 @bond:Bo $atom:10 $atom:11 + $bond:b11 @bond:Bo $atom:11 $atom:12 + } + write("Data Angles") { + $angle:a1 @angle:An1 $atom:1 $atom:2 $atom:3 + $angle:a2 @angle:An2 $atom:2 $atom:3 $atom:5 + $angle:a3 @angle:An2 $atom:2 $atom:3 $atom:4 + $angle:a4 @angle:An2 $atom:4 $atom:3 $atom:5 + $angle:a5 @angle:An1 $atom:3 $atom:4 $atom:9 + $angle:a6 @angle:An1 $atom:3 $atom:5 $atom:6 + $angle:a7 @angle:An1 $atom:5 $atom:6 $atom:7 + $angle:a8 @angle:An1 $atom:6 $atom:7 $atom:8 + $angle:a9 @angle:An1 $atom:4 $atom:9 $atom:10 + $angle:a10 @angle:An1 $atom:9 $atom:10 $atom:11 + $angle:a11 @angle:An1 $atom:10 $atom:11 $atom:12 + } + write_once("Data Masses") { + @atom:Q0 72.0 + @atom:Qa 72.0 + @atom:Na 72.0 + @atom:C1 72.0 + } + write_once("In Settings") { + pair_coeff @atom:Q0 @atom:Q0 lj/gromacs/coul/gromacs 0.8365200764818 4.7 + pair_coeff @atom:Q0 @atom:Qa lj/gromacs/coul/gromacs 1.0755258126195 4.7 + pair_coeff @atom:Q0 @atom:Na lj/gromacs/coul/gromacs 0.9560229445507 4.7 + pair_coeff @atom:Q0 @atom:C1 lj/gromacs/coul/gromacs 0.4780114722753 6.2 + pair_coeff @atom:Qa @atom:Qa lj/gromacs/coul/gromacs 1.1950286806883 4.7 + pair_coeff @atom:Qa @atom:Na lj/gromacs/coul/gromacs 0.9560229445507 4.7 + pair_coeff @atom:Qa @atom:C1 lj/gromacs/coul/gromacs 0.4780114722753 6.2 + pair_coeff @atom:Na @atom:Na lj/gromacs/coul/gromacs 0.9560229445507 4.7 + pair_coeff @atom:Na @atom:C1 lj/gromacs/coul/gromacs 0.6453154875717 4.7 + pair_coeff @atom:C1 @atom:C1 lj/gromacs/coul/gromacs 0.8365200764818 4.7 + bond_coeff @bond:Bo harmonic 1.4937858508604 4.7 + bond_coeff @bond:Short harmonic 1.4937858508604 3.7 + angle_coeff @angle:An1 cosine/squared 2.9875717017208 180 + angle_coeff @angle:An2 cosine/squared 2.9875717017208 120 + } +} #DPPC diff --git a/tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_formation_PACKMOL/moltemplate_files/system.lt b/tools/moltemplate/examples/coarse_grained/MARTINI_examples/force_field_explicit/DPPC_bilayer_formation_PACKMOL/moltemplate_files/system.lt similarity index 96% rename from tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_formation_PACKMOL/moltemplate_files/system.lt rename to tools/moltemplate/examples/coarse_grained/MARTINI_examples/force_field_explicit/DPPC_bilayer_formation_PACKMOL/moltemplate_files/system.lt index 3339e2738b108e40dc4e20b5e022312db834d7c7..1879e6845f1e8454830c7ec5e6d6cc2c0bac7a83 100644 --- a/tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_formation_PACKMOL/moltemplate_files/system.lt +++ b/tools/moltemplate/examples/coarse_grained/MARTINI_examples/force_field_explicit/DPPC_bilayer_formation_PACKMOL/moltemplate_files/system.lt @@ -1,24 +1,24 @@ -import "water.lt" -import "lipid.lt" - -# The lipids and water must be listed instantiated in the same order -# they appear in the packmol_files/mix_lipids+water.inp file: - -lipids = new DPPC[300] - -waters = new MW[6000] - - -write_once("Data Boundary") { - 0 100.0 xlo xhi - 0 100.0 ylo yhi - 0 100.0 zlo zhi -} - - -write_once("In Settings") { -pair_coeff @atom:MW/P4 @atom:DPPC/Q0 lj/gromacs/coul/gromacs 1.3384321223709 4.7 -pair_coeff @atom:MW/P4 @atom:DPPC/Qa lj/gromacs/coul/gromacs 1.3384321223709 4.7 -pair_coeff @atom:MW/P4 @atom:DPPC/Na lj/gromacs/coul/gromacs 0.9560229445507 4.7 -pair_coeff @atom:MW/P4 @atom:DPPC/C1 lj/gromacs/coul/gromacs 0.4780114722753 4.7 -} +import "water.lt" +import "lipid.lt" + +# The lipids and water must be listed instantiated in the same order +# they appear in the packmol_files/mix_lipids+water.inp file: + +lipids = new DPPC[300] + +waters = new MW[6000] + + +write_once("Data Boundary") { + 0 100.0 xlo xhi + 0 100.0 ylo yhi + 0 100.0 zlo zhi +} + + +write_once("In Settings") { +pair_coeff @atom:MW/P4 @atom:DPPC/Q0 lj/gromacs/coul/gromacs 1.3384321223709 4.7 +pair_coeff @atom:MW/P4 @atom:DPPC/Qa lj/gromacs/coul/gromacs 1.3384321223709 4.7 +pair_coeff @atom:MW/P4 @atom:DPPC/Na lj/gromacs/coul/gromacs 0.9560229445507 4.7 +pair_coeff @atom:MW/P4 @atom:DPPC/C1 lj/gromacs/coul/gromacs 0.4780114722753 4.7 +} diff --git a/tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_formation_PACKMOL/moltemplate_files/water.lt b/tools/moltemplate/examples/coarse_grained/MARTINI_examples/force_field_explicit/DPPC_bilayer_formation_PACKMOL/moltemplate_files/water.lt similarity index 95% rename from tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_formation_PACKMOL/moltemplate_files/water.lt rename to tools/moltemplate/examples/coarse_grained/MARTINI_examples/force_field_explicit/DPPC_bilayer_formation_PACKMOL/moltemplate_files/water.lt index c8d850f9cfb8e53c0bb06e1215106a5bda6ee934..c58c897082dda0836220e8063b6f6cba1a1003f1 100644 --- a/tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_formation_PACKMOL/moltemplate_files/water.lt +++ b/tools/moltemplate/examples/coarse_grained/MARTINI_examples/force_field_explicit/DPPC_bilayer_formation_PACKMOL/moltemplate_files/water.lt @@ -1,17 +1,17 @@ -MW { - write_once("In Init") { - units real - atom_style full - pair_style hybrid lj/gromacs/coul/gromacs 9 12 0.000001 12 - } - - write("Data Atoms") { - $atom:1 $mol:. @atom:P4 0 0 0 0 - } - write_once("Data Masses") { - @atom:P4 72.0 - } - write_once("In Settings") { - pair_coeff @atom:P4 @atom:P4 lj/gromacs/coul/gromacs 1.1950286806883 4.7 - } -} #MW +MW { + write_once("In Init") { + units real + atom_style full + pair_style hybrid lj/gromacs/coul/gromacs 9 12 0.000001 12 + } + + write("Data Atoms") { + $atom:1 $mol:. @atom:P4 0 0 0 0 + } + write_once("Data Masses") { + @atom:P4 72.0 + } + write_once("In Settings") { + pair_coeff @atom:P4 @atom:P4 lj/gromacs/coul/gromacs 1.1950286806883 4.7 + } +} #MW diff --git a/tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_formation_PACKMOL/packmol_files/README.TXT b/tools/moltemplate/examples/coarse_grained/MARTINI_examples/force_field_explicit/DPPC_bilayer_formation_PACKMOL/packmol_files/README.txt similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_formation_PACKMOL/packmol_files/README.TXT rename to tools/moltemplate/examples/coarse_grained/MARTINI_examples/force_field_explicit/DPPC_bilayer_formation_PACKMOL/packmol_files/README.txt diff --git a/tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_formation_PACKMOL/packmol_files/lipid.xyz b/tools/moltemplate/examples/coarse_grained/MARTINI_examples/force_field_explicit/DPPC_bilayer_formation_PACKMOL/packmol_files/lipid.xyz similarity index 95% rename from tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_formation_PACKMOL/packmol_files/lipid.xyz rename to tools/moltemplate/examples/coarse_grained/MARTINI_examples/force_field_explicit/DPPC_bilayer_formation_PACKMOL/packmol_files/lipid.xyz index a576a09f6ab4ca4438d5d35a98d7ee6cea0793f2..673f5e8afee9d68aecd93197aefc49b6ce42cd6f 100644 --- a/tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_formation_PACKMOL/packmol_files/lipid.xyz +++ b/tools/moltemplate/examples/coarse_grained/MARTINI_examples/force_field_explicit/DPPC_bilayer_formation_PACKMOL/packmol_files/lipid.xyz @@ -1,14 +1,14 @@ -12 - DPPC -Q0 9.09 9.83 0.75 -Qa 5.68 7.31 0.00 -Na 5.50 5.61 3.28 -Na 6.65 2.22 3.04 -C1 5.15 7.65 7.06 -C1 7.91 7.17 10.54 -C1 9.24 8.25 14.96 -C1 12.19 11.75 16.38 -C1 5.52 1.61 7.40 -C1 6.53 2.26 12.25 -C1 3.51 1.81 16.01 -C1 0.00 0.00 18.19 +12 + DPPC +Q0 9.09 9.83 0.75 +Qa 5.68 7.31 0.00 +Na 5.50 5.61 3.28 +Na 6.65 2.22 3.04 +C1 5.15 7.65 7.06 +C1 7.91 7.17 10.54 +C1 9.24 8.25 14.96 +C1 12.19 11.75 16.38 +C1 5.52 1.61 7.40 +C1 6.53 2.26 12.25 +C1 3.51 1.81 16.01 +C1 0.00 0.00 18.19 diff --git a/tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_formation_PACKMOL/packmol_files/mix_lipids+water.inp b/tools/moltemplate/examples/coarse_grained/MARTINI_examples/force_field_explicit/DPPC_bilayer_formation_PACKMOL/packmol_files/mix_lipids+water.inp similarity index 94% rename from tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_formation_PACKMOL/packmol_files/mix_lipids+water.inp rename to tools/moltemplate/examples/coarse_grained/MARTINI_examples/force_field_explicit/DPPC_bilayer_formation_PACKMOL/packmol_files/mix_lipids+water.inp index 1bc8a2a9dff11f2ef45e7023769930afdcba9272..6273cea506d04e476138ac58e76fdf03785ac755 100644 --- a/tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_formation_PACKMOL/packmol_files/mix_lipids+water.inp +++ b/tools/moltemplate/examples/coarse_grained/MARTINI_examples/force_field_explicit/DPPC_bilayer_formation_PACKMOL/packmol_files/mix_lipids+water.inp @@ -8,7 +8,8 @@ tolerance 3.0 # minimal distance between atoms in different molecules # (you should also consider changing the "discale" # parameter. I think discale=1.0 by default.) -seed 123 # seed for random number generator + +seed 12345 # seed for random number generator # The file type of input and output files is XYZ diff --git a/tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_formation_PACKMOL/packmol_files/water.xyz b/tools/moltemplate/examples/coarse_grained/MARTINI_examples/force_field_explicit/DPPC_bilayer_formation_PACKMOL/packmol_files/water.xyz similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_formation_PACKMOL/packmol_files/water.xyz rename to tools/moltemplate/examples/coarse_grained/MARTINI_examples/force_field_explicit/DPPC_bilayer_formation_PACKMOL/packmol_files/water.xyz diff --git a/tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_formation_PACKMOL/run.in.min b/tools/moltemplate/examples/coarse_grained/MARTINI_examples/force_field_explicit/DPPC_bilayer_formation_PACKMOL/run.in.min similarity index 95% rename from tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_formation_PACKMOL/run.in.min rename to tools/moltemplate/examples/coarse_grained/MARTINI_examples/force_field_explicit/DPPC_bilayer_formation_PACKMOL/run.in.min index fc9aa8fbd6720f115301fd4d227faacdd6137621..b08497f633bac109c88c36466491830176659555 100644 --- a/tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_formation_PACKMOL/run.in.min +++ b/tools/moltemplate/examples/coarse_grained/MARTINI_examples/force_field_explicit/DPPC_bilayer_formation_PACKMOL/run.in.min @@ -2,7 +2,6 @@ # # You must use moltemplate.sh to create 3 files: # system.data system.in.init system.in.settings -# (See README_setup.sh for details.) # ------------------------------- Initialization Section -------------------- @@ -26,6 +25,8 @@ include system.in.settings thermo 5 dump 1 all custom 100 traj_equib0_min.lammpstrj id mol type x y z ix iy iz +min_style sd +min_modify dmax 0.01 minimize 1.0e-4 1.0e-6 100000 400000 write_data system_after_min.data diff --git a/tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_formation_PACKMOL/run.in.npt b/tools/moltemplate/examples/coarse_grained/MARTINI_examples/force_field_explicit/DPPC_bilayer_formation_PACKMOL/run.in.npt similarity index 95% rename from tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_formation_PACKMOL/run.in.npt rename to tools/moltemplate/examples/coarse_grained/MARTINI_examples/force_field_explicit/DPPC_bilayer_formation_PACKMOL/run.in.npt index bbb0da392eaada1908258fbf825184d52603b095..a6a6143b3ad3c7a904c0e151e0047f3f5e623d1d 100644 --- a/tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_formation_PACKMOL/run.in.npt +++ b/tools/moltemplate/examples/coarse_grained/MARTINI_examples/force_field_explicit/DPPC_bilayer_formation_PACKMOL/run.in.npt @@ -1,10 +1,9 @@ # PREREQUISITES: # -# 1) You must use moltemplate.sh to create 3 files: +# 1) You must use moltemplate.sh to create 3 files: # system.data system.in.init system.in.settings -# (See README_setup.sh for details.) -# 2) You must minimize the coordinates using by running lammps witn -# run.in.min +# 2) You must minimize the coordinates using by running lammps using: +# lmp_mpi -i run.in.min (the name of your binary "lmp_mpi" may vary) # # ------------------------------- Initialization Section -------------------- diff --git a/tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_formation_PACKMOL/run.in.nvt b/tools/moltemplate/examples/coarse_grained/MARTINI_examples/force_field_explicit/DPPC_bilayer_formation_PACKMOL/run.in.nvt similarity index 93% rename from tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_formation_PACKMOL/run.in.nvt rename to tools/moltemplate/examples/coarse_grained/MARTINI_examples/force_field_explicit/DPPC_bilayer_formation_PACKMOL/run.in.nvt index 1f38df275aa1149ef7e5ef11061aad59c200605b..cd33289198007da2da8af1ce21d4782479b04944 100644 --- a/tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_formation_PACKMOL/run.in.nvt +++ b/tools/moltemplate/examples/coarse_grained/MARTINI_examples/force_field_explicit/DPPC_bilayer_formation_PACKMOL/run.in.nvt @@ -2,10 +2,10 @@ # # 1) You must use moltemplate.sh to create 3 files: # system.data system.in.init system.in.settings -# (See README_setup.sh for details.) -# 2) You must minimize the coordinates using by running lammps witn -# run.in.min +# 2) You must minimize the coordinates using by running lammps: +# lmp_mpi -i run.in.min (the name of your binary "lmp_mpi" may vary) # 3) You must equilibrate the system beforehand using "run.in.npt". +# lmp_mpi -i run.in.npt # This will create the file "system_after_npt.data" which this file reads. # (Note: I have not verified that this equilibration protocol works well.) diff --git a/tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_preformed/README.TXT b/tools/moltemplate/examples/coarse_grained/MARTINI_examples/force_field_explicit/DPPC_bilayer_preformed/README.txt similarity index 97% rename from tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_preformed/README.TXT rename to tools/moltemplate/examples/coarse_grained/MARTINI_examples/force_field_explicit/DPPC_bilayer_preformed/README.txt index c290e3db3c0c4e8394a8746c8339713d70c86e1c..8f875b400d7c70c1d0d1997ef7dd23e5e2a700b8 100644 --- a/tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_preformed/README.TXT +++ b/tools/moltemplate/examples/coarse_grained/MARTINI_examples/force_field_explicit/DPPC_bilayer_preformed/README.txt @@ -1,7 +1,7 @@ This example of the formation of a coarse-grained DPPC lipid-bilayer uses the Martini force-field v2.0 (2013-10), was provided by Saeed Momeni Bashusqeh. -It's probably a good idea to run the simulation for a few ns to allow the +It's probably a good idea to run the simulation for a few ns to allow the lipids to reorient themselves. step 1) diff --git a/tools/moltemplate/examples/coarse_grained/MARTINI_examples/force_field_explicit/DPPC_bilayer_preformed/README_run.sh b/tools/moltemplate/examples/coarse_grained/MARTINI_examples/force_field_explicit/DPPC_bilayer_preformed/README_run.sh new file mode 100755 index 0000000000000000000000000000000000000000..65213b0963e23de372a82cee3b59ed9ae6762b07 --- /dev/null +++ b/tools/moltemplate/examples/coarse_grained/MARTINI_examples/force_field_explicit/DPPC_bilayer_preformed/README_run.sh @@ -0,0 +1,21 @@ +# --- Running LAMMPS --- +# -------- PREREQUISITES: -------- +# The 2 files "run.in.min", "run.in.npt", and "run.in.nvt" are LAMMPS +# input scripts which link to the input scripts and data files +# you hopefully have created earlier with moltemplate.sh: +# system.in.init, system.in.settings, system.data +# If not, carry out the instructions in "README_setup.sh". +# +# -- Instructions: -- +# If "lmp_mpi" is the name of the command you use to invoke lammps, +# then you would run lammps on these files this way: + + +lmp_mpi -i run.in.min # minimization +lmp_mpi -i run.in.npt # simulation at constant pressure +lmp_mpi -i run.in.nvt # simulation at constant volume + +# If you have compiled the MPI version of lammps, you can run lammps in parallel +#mpirun -np 4 lmp_mpi -i run.in.npt +#mpirun -np 4 lmp_mpi -i run.in.nvt +# (assuming you have 4 processors available) diff --git a/tools/moltemplate/examples/coarse_grained_examples/abstract_translocation/README_setup.sh b/tools/moltemplate/examples/coarse_grained/MARTINI_examples/force_field_explicit/DPPC_bilayer_preformed/README_setup.sh similarity index 94% rename from tools/moltemplate/examples/coarse_grained_examples/abstract_translocation/README_setup.sh rename to tools/moltemplate/examples/coarse_grained/MARTINI_examples/force_field_explicit/DPPC_bilayer_preformed/README_setup.sh index acc5fbbaad49b3a92ac95ce1afd7eab2b952c70b..cf22ee0fa1868664c5f3cc786d382d1b511097d5 100755 --- a/tools/moltemplate/examples/coarse_grained_examples/abstract_translocation/README_setup.sh +++ b/tools/moltemplate/examples/coarse_grained/MARTINI_examples/force_field_explicit/DPPC_bilayer_preformed/README_setup.sh @@ -9,14 +9,14 @@ cd moltemplate_files moltemplate.sh system.lt - # This will generate various files with names ending in *.in* and *.data. - # These files are the input files directly read by LAMMPS. Move them to + # This will generate various files with names ending in *.in* and *.data. + # These files are the input files directly read by LAMMPS. Move them to # the parent directory (or wherever you plan to run the simulation). mv -f system.in* system.data ../ # Optional: - # The "./output_ttree/" directory is full of temporary files generated by + # The "./output_ttree/" directory is full of temporary files generated by # moltemplate. They can be useful for debugging, but are usually thrown away. rm -rf output_ttree/ diff --git a/tools/moltemplate/examples/coarse_grained/MARTINI_examples/force_field_explicit/DPPC_bilayer_preformed/README_visualize.txt b/tools/moltemplate/examples/coarse_grained/MARTINI_examples/force_field_explicit/DPPC_bilayer_preformed/README_visualize.txt new file mode 100644 index 0000000000000000000000000000000000000000..e8ad744015d4aea7bdf99e4ca0c177c542f6dab5 --- /dev/null +++ b/tools/moltemplate/examples/coarse_grained/MARTINI_examples/force_field_explicit/DPPC_bilayer_preformed/README_visualize.txt @@ -0,0 +1,87 @@ + + ------- To view a lammps trajectory in VMD -------- + + +1) Build a PSF file for use in viewing with VMD. + +This step works with VMD 1.9 and topotools 1.2. +(Older versions, like VMD 1.8.6, don't support this.) + + +a) Start VMD +b) Menu Extensions->Tk Console +c) Enter: + +(I assume that the the DATA file is called "system.data") + + topo readlammpsdata system.data full + animate write psf system.psf + +2) + +Later, to Load a trajectory in VMD: + + Start VMD + Select menu: File->New Molecule + -Browse to select the PSF file you created above, and load it. + (Don't close the window yet.) + -Browse to select the trajectory file. + If necessary, for "file type" select: "LAMMPS Trajectory" + Load it. + + ---- A note on trajectory format: ----- +If the trajectory is a DUMP file, then make sure the it contains the +information you need for pbctools (see below. I've been using this +command in my LAMMPS scripts to create the trajectories: + + dump 1 all custom 5000 DUMP_FILE.lammpstrj id mol type x y z ix iy iz + +It's a good idea to use an atom_style which supports molecule-ID numbers +so that you can assign a molecule-ID number to each atom. (I think this +is needed to wrap atom coordinates without breaking molecules in half.) + +Of course, you don't have to save your trajectories in DUMP format, +(other formats like DCD work fine) I just mention dump files +because these are the files I'm familiar with. + +3) ----- Wrap the coordinates to the unit cell + (without cutting the molecules in half) + +a) Start VMD +b) Load the trajectory in VMD (see above) +c) Menu Extensions->Tk Console +d) Try entering these commands: + + pbc wrap -compound res -all + pbc box + + ----- Optional ---- + Sometimes the solvent or membrane obscures the view of the solute. + It can help to shift the location of the periodic boundary box + To shift the box in the y direction (for example) do this: + + pbc wrap -compound res -all -shiftcenterrel {0.0 0.0 -0.5} + pbc box -shiftcenterrel {0.0 0.0 -0.5} -style tubes -width 0.75 + + Distances are measured in units of box-length fractions, not Angstroms. + + Alternately if you have a solute whose atoms are all of type 1, + then you can also try this to center the box around it: + + pbc wrap -sel type=1 -all -centersel type=2 -center com + +4) + You should check if your periodic boundary conditions are too small. + To do that: + select Graphics->Representations menu option + click on the "Periodic" tab, and + click on the "+x", "-x", "+y", "-y", "+z", "-z" checkboxes. + +5) Optional: If you like, change the atom types in the PSF file so + that VMD recognizes the atom types, use something like: + +sed -e 's/ 1 1 / C C /g' < system.psf > temp1.psf +sed -e 's/ 2 2 / H H /g' < temp1.psf > temp2.psf +sed -e 's/ 3 3 / P P /g' < temp2.psf > system.psf + +(If you do this, it might effect step 2 above.) diff --git a/tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_preformed/images/DPPC_martini_LR.jpg b/tools/moltemplate/examples/coarse_grained/MARTINI_examples/force_field_explicit/DPPC_bilayer_preformed/images/DPPC_martini_LR.jpg similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_preformed/images/DPPC_martini_LR.jpg rename to tools/moltemplate/examples/coarse_grained/MARTINI_examples/force_field_explicit/DPPC_bilayer_preformed/images/DPPC_martini_LR.jpg diff --git a/tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_preformed/images/t=0_bilayer_preformed_GL_LR.jpg b/tools/moltemplate/examples/coarse_grained/MARTINI_examples/force_field_explicit/DPPC_bilayer_preformed/images/t=0_bilayer_preformed_GL_LR.jpg similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_preformed/images/t=0_bilayer_preformed_GL_LR.jpg rename to tools/moltemplate/examples/coarse_grained/MARTINI_examples/force_field_explicit/DPPC_bilayer_preformed/images/t=0_bilayer_preformed_GL_LR.jpg diff --git a/tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_preformed/images/t=4ns_bilayer_preformed_GL_LR.jpg b/tools/moltemplate/examples/coarse_grained/MARTINI_examples/force_field_explicit/DPPC_bilayer_preformed/images/t=4ns_bilayer_preformed_GL_LR.jpg similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_preformed/images/t=4ns_bilayer_preformed_GL_LR.jpg rename to tools/moltemplate/examples/coarse_grained/MARTINI_examples/force_field_explicit/DPPC_bilayer_preformed/images/t=4ns_bilayer_preformed_GL_LR.jpg diff --git a/tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_preformed/images/water_martini_LR.jpg b/tools/moltemplate/examples/coarse_grained/MARTINI_examples/force_field_explicit/DPPC_bilayer_preformed/images/water_martini_LR.jpg similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_preformed/images/water_martini_LR.jpg rename to tools/moltemplate/examples/coarse_grained/MARTINI_examples/force_field_explicit/DPPC_bilayer_preformed/images/water_martini_LR.jpg diff --git a/tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_preformed/moltemplate_files/lipid.lt b/tools/moltemplate/examples/coarse_grained/MARTINI_examples/force_field_explicit/DPPC_bilayer_preformed/moltemplate_files/lipid.lt similarity index 97% rename from tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_preformed/moltemplate_files/lipid.lt rename to tools/moltemplate/examples/coarse_grained/MARTINI_examples/force_field_explicit/DPPC_bilayer_preformed/moltemplate_files/lipid.lt index df92940b1816291c5d206692d43f8b03a24168dd..402dbae49cbcdbbc7095a0eab233626d16cf4483 100644 --- a/tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_preformed/moltemplate_files/lipid.lt +++ b/tools/moltemplate/examples/coarse_grained/MARTINI_examples/force_field_explicit/DPPC_bilayer_preformed/moltemplate_files/lipid.lt @@ -1,78 +1,78 @@ -DPPC { - - write_once("In Init") { - units real - atom_style full - bond_style hybrid harmonic - angle_style hybrid cosine/squared - dihedral_style none - improper_style none - pair_style hybrid lj/gromacs/coul/gromacs 9 12 0.000001 12 - special_bonds lj/coul 0 1 1 - dielectric 15 - neigh_modify every 10 - } - - write("Data Atoms") { - $atom:1 $mol:. @atom:Q0 1.0 2.67583 4.37417 19.25 - $atom:2 $mol:. @atom:Qa -1.0 -0.73417 1.85417 20.00 - $atom:3 $mol:. @atom:Na 0.0 -0.91417 0.15417 16.72 - $atom:4 $mol:. @atom:Na 0.0 0.23583 -3.23583 16.96 - $atom:5 $mol:. @atom:C1 0.0 -1.26417 2.19417 12.94 - $atom:6 $mol:. @atom:C1 0.0 1.49583 1.71417 9.46 - $atom:7 $mol:. @atom:C1 0.0 2.82583 2.79417 5.04 - $atom:8 $mol:. @atom:C1 0.0 5.77583 6.29417 3.62 - $atom:9 $mol:. @atom:C1 0.0 -0.89417 -3.84583 12.6 - $atom:10 $mol:. @atom:C1 0.0 0.11583 -3.19583 7.75 - $atom:11 $mol:. @atom:C1 0.0 -2.90417 -3.64583 3.99 - $atom:12 $mol:. @atom:C1 0.0 -6.41417 -5.45583 1.81 - } - write("Data Bonds") { - $bond:b1 @bond:Bo $atom:1 $atom:2 - $bond:b2 @bond:Bo $atom:2 $atom:3 - $bond:b3 @bond:Short $atom:3 $atom:4 - $bond:b4 @bond:Bo $atom:3 $atom:5 - $bond:b5 @bond:Bo $atom:5 $atom:6 - $bond:b6 @bond:Bo $atom:6 $atom:7 - $bond:b7 @bond:Bo $atom:7 $atom:8 - $bond:b8 @bond:Bo $atom:4 $atom:9 - $bond:b9 @bond:Bo $atom:9 $atom:10 - $bond:b10 @bond:Bo $atom:10 $atom:11 - $bond:b11 @bond:Bo $atom:11 $atom:12 - } - write("Data Angles") { - $angle:a1 @angle:An1 $atom:1 $atom:2 $atom:3 - $angle:a2 @angle:An2 $atom:2 $atom:3 $atom:5 - $angle:a3 @angle:An2 $atom:2 $atom:3 $atom:4 - $angle:a4 @angle:An2 $atom:4 $atom:3 $atom:5 - $angle:a5 @angle:An1 $atom:3 $atom:4 $atom:9 - $angle:a6 @angle:An1 $atom:3 $atom:5 $atom:6 - $angle:a7 @angle:An1 $atom:5 $atom:6 $atom:7 - $angle:a8 @angle:An1 $atom:6 $atom:7 $atom:8 - $angle:a9 @angle:An1 $atom:4 $atom:9 $atom:10 - $angle:a10 @angle:An1 $atom:9 $atom:10 $atom:11 - $angle:a11 @angle:An1 $atom:10 $atom:11 $atom:12 - } - write_once("Data Masses") { - @atom:Q0 72.0 - @atom:Qa 72.0 - @atom:Na 72.0 - @atom:C1 72.0 - } - write_once("In Settings") { - pair_coeff @atom:Q0 @atom:Q0 lj/gromacs/coul/gromacs 0.8365200764818 4.7 - pair_coeff @atom:Q0 @atom:Qa lj/gromacs/coul/gromacs 1.0755258126195 4.7 - pair_coeff @atom:Q0 @atom:Na lj/gromacs/coul/gromacs 0.9560229445507 4.7 - pair_coeff @atom:Q0 @atom:C1 lj/gromacs/coul/gromacs 0.4780114722753 6.2 - pair_coeff @atom:Qa @atom:Qa lj/gromacs/coul/gromacs 1.1950286806883 4.7 - pair_coeff @atom:Qa @atom:Na lj/gromacs/coul/gromacs 0.9560229445507 4.7 - pair_coeff @atom:Qa @atom:C1 lj/gromacs/coul/gromacs 0.4780114722753 6.2 - pair_coeff @atom:Na @atom:Na lj/gromacs/coul/gromacs 0.9560229445507 4.7 - pair_coeff @atom:Na @atom:C1 lj/gromacs/coul/gromacs 0.6453154875717 4.7 - pair_coeff @atom:C1 @atom:C1 lj/gromacs/coul/gromacs 0.8365200764818 4.7 - bond_coeff @bond:Bo harmonic 1.4937858508604 4.7 - bond_coeff @bond:Short harmonic 1.4937858508604 3.7 - angle_coeff @angle:An1 cosine/squared 2.9875717017208 180 - angle_coeff @angle:An2 cosine/squared 2.9875717017208 120 - } -} #DPPC +DPPC { + + write_once("In Init") { + units real + atom_style full + bond_style hybrid harmonic + angle_style hybrid cosine/squared + dihedral_style none + improper_style none + pair_style hybrid lj/gromacs/coul/gromacs 9 12 0.000001 12 + special_bonds lj/coul 0 1 1 + dielectric 15 + neigh_modify every 10 + } + + write("Data Atoms") { + $atom:1 $mol:. @atom:Q0 1.0 2.67583 4.37417 19.25 + $atom:2 $mol:. @atom:Qa -1.0 -0.73417 1.85417 20.00 + $atom:3 $mol:. @atom:Na 0.0 -0.91417 0.15417 16.72 + $atom:4 $mol:. @atom:Na 0.0 0.23583 -3.23583 16.96 + $atom:5 $mol:. @atom:C1 0.0 -1.26417 2.19417 12.94 + $atom:6 $mol:. @atom:C1 0.0 1.49583 1.71417 9.46 + $atom:7 $mol:. @atom:C1 0.0 2.82583 2.79417 5.04 + $atom:8 $mol:. @atom:C1 0.0 5.77583 6.29417 3.62 + $atom:9 $mol:. @atom:C1 0.0 -0.89417 -3.84583 12.6 + $atom:10 $mol:. @atom:C1 0.0 0.11583 -3.19583 7.75 + $atom:11 $mol:. @atom:C1 0.0 -2.90417 -3.64583 3.99 + $atom:12 $mol:. @atom:C1 0.0 -6.41417 -5.45583 1.81 + } + write("Data Bonds") { + $bond:b1 @bond:Bo $atom:1 $atom:2 + $bond:b2 @bond:Bo $atom:2 $atom:3 + $bond:b3 @bond:Short $atom:3 $atom:4 + $bond:b4 @bond:Bo $atom:3 $atom:5 + $bond:b5 @bond:Bo $atom:5 $atom:6 + $bond:b6 @bond:Bo $atom:6 $atom:7 + $bond:b7 @bond:Bo $atom:7 $atom:8 + $bond:b8 @bond:Bo $atom:4 $atom:9 + $bond:b9 @bond:Bo $atom:9 $atom:10 + $bond:b10 @bond:Bo $atom:10 $atom:11 + $bond:b11 @bond:Bo $atom:11 $atom:12 + } + write("Data Angles") { + $angle:a1 @angle:An1 $atom:1 $atom:2 $atom:3 + $angle:a2 @angle:An2 $atom:2 $atom:3 $atom:5 + $angle:a3 @angle:An2 $atom:2 $atom:3 $atom:4 + $angle:a4 @angle:An2 $atom:4 $atom:3 $atom:5 + $angle:a5 @angle:An1 $atom:3 $atom:4 $atom:9 + $angle:a6 @angle:An1 $atom:3 $atom:5 $atom:6 + $angle:a7 @angle:An1 $atom:5 $atom:6 $atom:7 + $angle:a8 @angle:An1 $atom:6 $atom:7 $atom:8 + $angle:a9 @angle:An1 $atom:4 $atom:9 $atom:10 + $angle:a10 @angle:An1 $atom:9 $atom:10 $atom:11 + $angle:a11 @angle:An1 $atom:10 $atom:11 $atom:12 + } + write_once("Data Masses") { + @atom:Q0 72.0 + @atom:Qa 72.0 + @atom:Na 72.0 + @atom:C1 72.0 + } + write_once("In Settings") { + pair_coeff @atom:Q0 @atom:Q0 lj/gromacs/coul/gromacs 0.8365200764818 4.7 + pair_coeff @atom:Q0 @atom:Qa lj/gromacs/coul/gromacs 1.0755258126195 4.7 + pair_coeff @atom:Q0 @atom:Na lj/gromacs/coul/gromacs 0.9560229445507 4.7 + pair_coeff @atom:Q0 @atom:C1 lj/gromacs/coul/gromacs 0.4780114722753 6.2 + pair_coeff @atom:Qa @atom:Qa lj/gromacs/coul/gromacs 1.1950286806883 4.7 + pair_coeff @atom:Qa @atom:Na lj/gromacs/coul/gromacs 0.9560229445507 4.7 + pair_coeff @atom:Qa @atom:C1 lj/gromacs/coul/gromacs 0.4780114722753 6.2 + pair_coeff @atom:Na @atom:Na lj/gromacs/coul/gromacs 0.9560229445507 4.7 + pair_coeff @atom:Na @atom:C1 lj/gromacs/coul/gromacs 0.6453154875717 4.7 + pair_coeff @atom:C1 @atom:C1 lj/gromacs/coul/gromacs 0.8365200764818 4.7 + bond_coeff @bond:Bo harmonic 1.4937858508604 4.7 + bond_coeff @bond:Short harmonic 1.4937858508604 3.7 + angle_coeff @angle:An1 cosine/squared 2.9875717017208 180 + angle_coeff @angle:An2 cosine/squared 2.9875717017208 120 + } +} #DPPC diff --git a/tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_preformed/moltemplate_files/system.lt b/tools/moltemplate/examples/coarse_grained/MARTINI_examples/force_field_explicit/DPPC_bilayer_preformed/moltemplate_files/system.lt similarity index 96% rename from tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_preformed/moltemplate_files/system.lt rename to tools/moltemplate/examples/coarse_grained/MARTINI_examples/force_field_explicit/DPPC_bilayer_preformed/moltemplate_files/system.lt index 696adaf8640f0ab404bfeb69d87767d5beff2fd1..d42749daf9ca9a9dd9448a903736b5a048249cc5 100644 --- a/tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_preformed/moltemplate_files/system.lt +++ b/tools/moltemplate/examples/coarse_grained/MARTINI_examples/force_field_explicit/DPPC_bilayer_preformed/moltemplate_files/system.lt @@ -1,27 +1,27 @@ -import "water.lt" -import "lipid.lt" - -write_once("Data Boundary") { - 0.0 100.0 xlo xhi - 0.0 100.0 ylo yhi - -50.0 50.0 zlo zhi -} - -lipids = new DPPC [13].move(7.6923, 0, 0) - [13].move(0, 7.6923, 0) - [2].rot(180, 1, 0, 0) - -waters = new MW [25].move(4.0, 0, 0) - [25].move(0, 4.0, 0) - [13].move(0, 0, 4.23) - -# Move the waters upwards so that they don't overlap with the lipids. - -waters[*][*][*].move(0, 0, 22.4) - -write_once("In Settings") { -pair_coeff @atom:MW/P4 @atom:DPPC/Q0 lj/gromacs/coul/gromacs 1.3384321223709 4.7 -pair_coeff @atom:MW/P4 @atom:DPPC/Qa lj/gromacs/coul/gromacs 1.3384321223709 4.7 -pair_coeff @atom:MW/P4 @atom:DPPC/Na lj/gromacs/coul/gromacs 0.9560229445507 4.7 -pair_coeff @atom:MW/P4 @atom:DPPC/C1 lj/gromacs/coul/gromacs 0.4780114722753 4.7 -} +import "water.lt" +import "lipid.lt" + +write_once("Data Boundary") { + 0.0 100.0 xlo xhi + 0.0 100.0 ylo yhi + -50.0 50.0 zlo zhi +} + +lipids = new DPPC [13].move(7.6923, 0, 0) + [13].move(0, 7.6923, 0) + [2].rot(180, 1, 0, 0) + +waters = new MW [25].move(4.0, 0, 0) + [25].move(0, 4.0, 0) + [13].move(0, 0, 4.23) + +# Move the waters upwards so that they don't overlap with the lipids. + +waters[*][*][*].move(0, 0, 22.4) + +write_once("In Settings") { +pair_coeff @atom:MW/P4 @atom:DPPC/Q0 lj/gromacs/coul/gromacs 1.3384321223709 4.7 +pair_coeff @atom:MW/P4 @atom:DPPC/Qa lj/gromacs/coul/gromacs 1.3384321223709 4.7 +pair_coeff @atom:MW/P4 @atom:DPPC/Na lj/gromacs/coul/gromacs 0.9560229445507 4.7 +pair_coeff @atom:MW/P4 @atom:DPPC/C1 lj/gromacs/coul/gromacs 0.4780114722753 4.7 +} diff --git a/tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_preformed/moltemplate_files/water.lt b/tools/moltemplate/examples/coarse_grained/MARTINI_examples/force_field_explicit/DPPC_bilayer_preformed/moltemplate_files/water.lt similarity index 95% rename from tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_preformed/moltemplate_files/water.lt rename to tools/moltemplate/examples/coarse_grained/MARTINI_examples/force_field_explicit/DPPC_bilayer_preformed/moltemplate_files/water.lt index ab7f06890b5a0355ad9a42592da7473745ce1b9e..49ce589b955289cc724e49fca805438c75b9d95b 100644 --- a/tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_preformed/moltemplate_files/water.lt +++ b/tools/moltemplate/examples/coarse_grained/MARTINI_examples/force_field_explicit/DPPC_bilayer_preformed/moltemplate_files/water.lt @@ -1,17 +1,17 @@ -MW { - write_once("In Init") { - units real - atom_style full - pair_style hybrid lj/gromacs/coul/gromacs 9 12 0.000001 12 - } - - write("Data Atoms") { - $atom:1 $mol:. @atom:P4 0 0 0 0 - } - write_once("Data Masses") { - @atom:P4 72.0 - } - write_once("In Settings") { - pair_coeff @atom:P4 @atom:P4 lj/gromacs/coul/gromacs 1.1950286806883 4.7 - } -} #MW +MW { + write_once("In Init") { + units real + atom_style full + pair_style hybrid lj/gromacs/coul/gromacs 9 12 0.000001 12 + } + + write("Data Atoms") { + $atom:1 $mol:. @atom:P4 0 0 0 0 + } + write_once("Data Masses") { + @atom:P4 72.0 + } + write_once("In Settings") { + pair_coeff @atom:P4 @atom:P4 lj/gromacs/coul/gromacs 1.1950286806883 4.7 + } +} #MW diff --git a/tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_preformed/run.in.min b/tools/moltemplate/examples/coarse_grained/MARTINI_examples/force_field_explicit/DPPC_bilayer_preformed/run.in.min similarity index 96% rename from tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_preformed/run.in.min rename to tools/moltemplate/examples/coarse_grained/MARTINI_examples/force_field_explicit/DPPC_bilayer_preformed/run.in.min index 5cdf2f419c2258bc99663c160070f1d227a3c469..6a17d2073416d69ae429779d7dedcc671ea119b0 100644 --- a/tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_preformed/run.in.min +++ b/tools/moltemplate/examples/coarse_grained/MARTINI_examples/force_field_explicit/DPPC_bilayer_preformed/run.in.min @@ -26,6 +26,8 @@ include system.in.settings thermo 5 dump 1 all custom 100 traj_min.lammpstrj id mol type x y z ix iy iz +min_style fire +min_modify dmax 0.01 minimize 1.0e-4 1.0e-6 100000 400000 write_data system_after_min.data diff --git a/tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_preformed/run.in.npt b/tools/moltemplate/examples/coarse_grained/MARTINI_examples/force_field_explicit/DPPC_bilayer_preformed/run.in.npt similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_preformed/run.in.npt rename to tools/moltemplate/examples/coarse_grained/MARTINI_examples/force_field_explicit/DPPC_bilayer_preformed/run.in.npt diff --git a/tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_preformed/run.in.nvt b/tools/moltemplate/examples/coarse_grained/MARTINI_examples/force_field_explicit/DPPC_bilayer_preformed/run.in.nvt similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/MARTINI_examples/DPPC_bilayer_preformed/run.in.nvt rename to tools/moltemplate/examples/coarse_grained/MARTINI_examples/force_field_explicit/DPPC_bilayer_preformed/run.in.nvt diff --git a/tools/moltemplate/examples/coarse_grained_examples/abstract_2bead_heteropolymer/README.TXT b/tools/moltemplate/examples/coarse_grained/abstract_2bead_heteropolymer/README.txt similarity index 88% rename from tools/moltemplate/examples/coarse_grained_examples/abstract_2bead_heteropolymer/README.TXT rename to tools/moltemplate/examples/coarse_grained/abstract_2bead_heteropolymer/README.txt index c3173a1e19113849f183492c523b15b697281b74..eca0a1b7f41944910a01eb84dd046b3773a0d5cd 100644 --- a/tools/moltemplate/examples/coarse_grained_examples/abstract_2bead_heteropolymer/README.TXT +++ b/tools/moltemplate/examples/coarse_grained/abstract_2bead_heteropolymer/README.txt @@ -7,7 +7,7 @@ There are two types of residues, H and P. The R-atom for the H residue are attracted to eachother. All other atoms are repulsive. -Instructions on how to build LAMMPS input files and +Instructions on how to build LAMMPS input files and run a short simulation are provided in other README files. step 1) diff --git a/tools/moltemplate/examples/coarse_grained_examples/abstract_2bead_heteropolymer/README_run.sh b/tools/moltemplate/examples/coarse_grained/abstract_2bead_heteropolymer/README_run.sh similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/abstract_2bead_heteropolymer/README_run.sh rename to tools/moltemplate/examples/coarse_grained/abstract_2bead_heteropolymer/README_run.sh diff --git a/tools/moltemplate/examples/coarse_grained_examples/abstract_2bead_heteropolymer/README_setup.sh b/tools/moltemplate/examples/coarse_grained/abstract_2bead_heteropolymer/README_setup.sh similarity index 94% rename from tools/moltemplate/examples/coarse_grained_examples/abstract_2bead_heteropolymer/README_setup.sh rename to tools/moltemplate/examples/coarse_grained/abstract_2bead_heteropolymer/README_setup.sh index acc5fbbaad49b3a92ac95ce1afd7eab2b952c70b..cf22ee0fa1868664c5f3cc786d382d1b511097d5 100755 --- a/tools/moltemplate/examples/coarse_grained_examples/abstract_2bead_heteropolymer/README_setup.sh +++ b/tools/moltemplate/examples/coarse_grained/abstract_2bead_heteropolymer/README_setup.sh @@ -9,14 +9,14 @@ cd moltemplate_files moltemplate.sh system.lt - # This will generate various files with names ending in *.in* and *.data. - # These files are the input files directly read by LAMMPS. Move them to + # This will generate various files with names ending in *.in* and *.data. + # These files are the input files directly read by LAMMPS. Move them to # the parent directory (or wherever you plan to run the simulation). mv -f system.in* system.data ../ # Optional: - # The "./output_ttree/" directory is full of temporary files generated by + # The "./output_ttree/" directory is full of temporary files generated by # moltemplate. They can be useful for debugging, but are usually thrown away. rm -rf output_ttree/ diff --git a/tools/moltemplate/examples/coarse_grained_examples/abstract_2bead_heteropolymer/README_visualize.txt b/tools/moltemplate/examples/coarse_grained/abstract_2bead_heteropolymer/README_visualize.txt similarity index 92% rename from tools/moltemplate/examples/coarse_grained_examples/abstract_2bead_heteropolymer/README_visualize.txt rename to tools/moltemplate/examples/coarse_grained/abstract_2bead_heteropolymer/README_visualize.txt index 5d97ea56adc5b661738333e7cf424a38b7a5f58f..90b102a080583cfc9c0d836ecf833f4dbe0e931e 100644 --- a/tools/moltemplate/examples/coarse_grained_examples/abstract_2bead_heteropolymer/README_visualize.txt +++ b/tools/moltemplate/examples/coarse_grained/abstract_2bead_heteropolymer/README_visualize.txt @@ -4,7 +4,7 @@ 1) Build a PSF file for use in viewing with VMD. -This step works with VMD 1.9 and topotools 1.2. +This step works with VMD 1.9 and topotools 1.2. (Older versions, like VMD 1.8.6, don't support this.) @@ -17,7 +17,7 @@ c) Enter: topo readlammpsdata system.data full animate write psf system.psf -2) +2) Later, to Load a trajectory in VMD: @@ -31,17 +31,17 @@ Later, to Load a trajectory in VMD: ---- A note on trajectory format: ----- If the trajectory is a DUMP file, then make sure the it contains the -information you need for pbctools (see below. I've been using this +information you need for pbctools (see below. I've been using this command in my LAMMPS scripts to create the trajectories: dump 1 all custom 5000 DUMP_FILE.lammpstrj id mol type x y z ix iy iz -It's a good idea to use an atom_style which supports molecule-ID numbers -so that you can assign a molecule-ID number to each atom. (I think this +It's a good idea to use an atom_style which supports molecule-ID numbers +so that you can assign a molecule-ID number to each atom. (I think this is needed to wrap atom coordinates without breaking molecules in half.) -Of course, you don't have to save your trajectories in DUMP format, -(other formats like DCD work fine) I just mention dump files +Of course, you don't have to save your trajectories in DUMP format, +(other formats like DCD work fine) I just mention dump files because these are the files I'm familiar with. 3) ----- Wrap the coordinates to the unit cell @@ -56,7 +56,7 @@ d) Try entering these commands: pbc box ----- Optional ---- - It can help to shift the location of the periodic boundary box + It can help to shift the location of the periodic boundary box To shift the box in the y direction (for example) do this: pbc wrap -compound res -all -shiftcenterrel {0.0 0.15 0.0} @@ -64,19 +64,19 @@ d) Try entering these commands: Distances are measured in units of box-length fractions, not Angstroms. - Alternately if you have a solute whose atoms are all of type 1, + Alternately if you have a solute whose atoms are all of type 1, then you can also try this to center the box around it: pbc wrap -sel type=1 -all -centersel type=2 -center com -4) +4) You should check if your periodic boundary conditions are too small. To do that: select Graphics->Representations menu option - click on the "Periodic" tab, and + click on the "Periodic" tab, and click on the "+x", "-x", "+y", "-y", "+z", "-z" checkboxes. -5) Optional: If you like, change the atom types in the PSF file so +5) Optional: If you like, change the atom types in the PSF file so that VMD recognizes the atom types, use something like: sed -e 's/ 1 1 / C C /g' < system.psf > temp1.psf diff --git a/tools/moltemplate/examples/coarse_grained/abstract_2bead_heteropolymer/images/monomer_H.png b/tools/moltemplate/examples/coarse_grained/abstract_2bead_heteropolymer/images/monomer_H.png new file mode 100644 index 0000000000000000000000000000000000000000..efd7022e7f9f416e9fdfb87d4ecabe7d9dd8d1df Binary files /dev/null and b/tools/moltemplate/examples/coarse_grained/abstract_2bead_heteropolymer/images/monomer_H.png differ diff --git a/tools/moltemplate/examples/coarse_grained/abstract_2bead_heteropolymer/images/monomer_P.png b/tools/moltemplate/examples/coarse_grained/abstract_2bead_heteropolymer/images/monomer_P.png new file mode 100644 index 0000000000000000000000000000000000000000..70dd7ce6017063a7868d52b472eba93e5d43d8b9 Binary files /dev/null and b/tools/moltemplate/examples/coarse_grained/abstract_2bead_heteropolymer/images/monomer_P.png differ diff --git a/tools/moltemplate/examples/coarse_grained/abstract_2bead_heteropolymer/images/polymer_LR.png b/tools/moltemplate/examples/coarse_grained/abstract_2bead_heteropolymer/images/polymer_LR.png new file mode 100644 index 0000000000000000000000000000000000000000..b239cef972dad0ed6de1b252e4f7ceef8468ba08 Binary files /dev/null and b/tools/moltemplate/examples/coarse_grained/abstract_2bead_heteropolymer/images/polymer_LR.png differ diff --git a/tools/moltemplate/examples/coarse_grained/abstract_2bead_heteropolymer/images/trajectory.png b/tools/moltemplate/examples/coarse_grained/abstract_2bead_heteropolymer/images/trajectory.png new file mode 100644 index 0000000000000000000000000000000000000000..dc4d6ccdfd81b28df2141d449737ad239fef3dc2 Binary files /dev/null and b/tools/moltemplate/examples/coarse_grained/abstract_2bead_heteropolymer/images/trajectory.png differ diff --git a/tools/moltemplate/examples/coarse_grained_examples/abstract_2bead_heteropolymer/moltemplate_files/README.sh b/tools/moltemplate/examples/coarse_grained/abstract_2bead_heteropolymer/moltemplate_files/README.sh similarity index 94% rename from tools/moltemplate/examples/coarse_grained_examples/abstract_2bead_heteropolymer/moltemplate_files/README.sh rename to tools/moltemplate/examples/coarse_grained/abstract_2bead_heteropolymer/moltemplate_files/README.sh index a5157b71062665b01bc15c0578d93ec3fbabf211..bcc5947b1fa03f5c5baa8423fef0d1a2eca76d0d 100755 --- a/tools/moltemplate/examples/coarse_grained_examples/abstract_2bead_heteropolymer/moltemplate_files/README.sh +++ b/tools/moltemplate/examples/coarse_grained/abstract_2bead_heteropolymer/moltemplate_files/README.sh @@ -2,5 +2,5 @@ # (and other auxilliary files): moltemplate.sh system.lt -# This will generate various files with names ending in *.in* and *.data. +# This will generate various files with names ending in *.in* and *.data. diff --git a/tools/moltemplate/examples/coarse_grained/abstract_2bead_heteropolymer/moltemplate_files/README.txt b/tools/moltemplate/examples/coarse_grained/abstract_2bead_heteropolymer/moltemplate_files/README.txt new file mode 100644 index 0000000000000000000000000000000000000000..d06b4356c22f5d1ff2ac4c176e35312beeedaa8f --- /dev/null +++ b/tools/moltemplate/examples/coarse_grained/abstract_2bead_heteropolymer/moltemplate_files/README.txt @@ -0,0 +1,26 @@ +# In this example, we define two types of molecules: "H" and "P", +# both containing two atoms, whose ids (names) are "ca" and "r", +# and whose atom-types vary. +# +# "H" molecules: "P" molecules: +# ("hydrophobic") ("polar"/"hydrophilic") +# +# @HR @PR +# | | +# @CA @CA +# +# Eventually, we will connect multiple "H" and "P" molecules +# together to form a polymer, as shown below: +# +# @HR @HR +# | | +# _@CA_ _@CA_ +# ... -.@CA-' `-@CA-' ` ... +# | | +# @PR @PR +# +# The "H" and "P" molecules both share the same type of +# backbone atom ("CA"), but have their own custom "r" +# sidechain atoms with different properties: +# The "HR" atoms belonging to "H" molecules are attracted to each other. +# The "PR" atoms in "P" molecules are not. diff --git a/tools/moltemplate/examples/coarse_grained_examples/abstract_2bead_heteropolymer/moltemplate_files/forcefield.lt b/tools/moltemplate/examples/coarse_grained/abstract_2bead_heteropolymer/moltemplate_files/forcefield.lt similarity index 97% rename from tools/moltemplate/examples/coarse_grained_examples/abstract_2bead_heteropolymer/moltemplate_files/forcefield.lt rename to tools/moltemplate/examples/coarse_grained/abstract_2bead_heteropolymer/moltemplate_files/forcefield.lt index c2c01a8eee78ae28e47b7d9bd97a9739fe035b60..aad330df20b50a9de3ebe889d8281378e8c8dfea 100644 --- a/tools/moltemplate/examples/coarse_grained_examples/abstract_2bead_heteropolymer/moltemplate_files/forcefield.lt +++ b/tools/moltemplate/examples/coarse_grained/abstract_2bead_heteropolymer/moltemplate_files/forcefield.lt @@ -1,4 +1,4 @@ -# The "2beadFF" is a force-field environment object containing +# The "HPForceField" is a force-field environment object containing # force-field data, atomic masses, and bond rules. # Later, when we define molecules (such as "H" and "P"), we can inherit # atom types and bond-rules from this force-field. This will automatically @@ -9,7 +9,7 @@ -2beadFF { +HPForceField { # There are 3 atom types: @@ -135,5 +135,5 @@ } -} # 2beadFF +} # HPForceField diff --git a/tools/moltemplate/examples/coarse_grained/abstract_2bead_heteropolymer/moltemplate_files/monomer_H.lt b/tools/moltemplate/examples/coarse_grained/abstract_2bead_heteropolymer/moltemplate_files/monomer_H.lt new file mode 100644 index 0000000000000000000000000000000000000000..8a2bf4de8ae4535afa2248d721a8fd2e5bc01d3b --- /dev/null +++ b/tools/moltemplate/examples/coarse_grained/abstract_2bead_heteropolymer/moltemplate_files/monomer_H.lt @@ -0,0 +1,22 @@ +# Define the "H" monomer type ("H" <--> "hydrophobic") + +import "forcefield.lt" # defines "HPForceField" + +H inherits HPForceField { + + # atom-id(name) mol-id atom-type charge x y z + write("Data Atoms") { + $atom:ca $mol:... @atom:CA 0.0 0.000 1.0000 0.0000000 + $atom:r $mol:... @atom:HR 0.0 0.000 4.4000 0.0000000 + } + + write("Data Bond List") { + $bond:cr $atom:ca $atom:r + } + +} + + +# Note: The "..." in "$mol:..." tells moltemplate that this molecule may +# be a part of a larger molecule, and (if so) to use the larger +# molecule's id number as it's own. diff --git a/tools/moltemplate/examples/coarse_grained/abstract_2bead_heteropolymer/moltemplate_files/monomer_P.lt b/tools/moltemplate/examples/coarse_grained/abstract_2bead_heteropolymer/moltemplate_files/monomer_P.lt new file mode 100644 index 0000000000000000000000000000000000000000..2e89e31f83fa2d5b897d80ad0a6e6aaf1b5621a4 --- /dev/null +++ b/tools/moltemplate/examples/coarse_grained/abstract_2bead_heteropolymer/moltemplate_files/monomer_P.lt @@ -0,0 +1,22 @@ +# Define the "P" monomer type ("P" <--> "polar") + +import "forcefield.lt" # defines "HPForceField" + +P inherits HPForceField { + + # atom-id(name) mol-id atom-type charge x y z + write("Data Atoms") { + $atom:ca $mol:... @atom:CA 0.0 0.000 1.0000 0.0000000 + $atom:r $mol:... @atom:PR 0.0 0.000 4.4000 0.0000000 + } + + write("Data Bond List") { + $bond:cr $atom:ca $atom:r + } + +} + + +# Note: The "..." in "$mol:..." tells moltemplate that this molecule may +# be a part of a larger molecule, and (if so) to use the larger +# molecule's id number as it's own. diff --git a/tools/moltemplate/examples/coarse_grained_examples/abstract_2bead_heteropolymer/moltemplate_files/polymer.lt b/tools/moltemplate/examples/coarse_grained/abstract_2bead_heteropolymer/moltemplate_files/polymer.lt similarity index 85% rename from tools/moltemplate/examples/coarse_grained_examples/abstract_2bead_heteropolymer/moltemplate_files/polymer.lt rename to tools/moltemplate/examples/coarse_grained/abstract_2bead_heteropolymer/moltemplate_files/polymer.lt index 5be93322d817c1cd95c5972f21f318282a9ee22d..0b07e1471980b3061d32a6af0399e87699b723d5 100644 --- a/tools/moltemplate/examples/coarse_grained_examples/abstract_2bead_heteropolymer/moltemplate_files/polymer.lt +++ b/tools/moltemplate/examples/coarse_grained/abstract_2bead_heteropolymer/moltemplate_files/polymer.lt @@ -1,5 +1,5 @@ - -import "monomers.lt" # This defines the monomer types named "H" and "P" +import "monomer_H.lt" # defines the "H" molecular subunit +import "monomer_P.lt" # defines the "P" molecular subunit @@ -9,8 +9,8 @@ Polymer { # (The "Data Atoms" in H and P must use "$mol:..." notation.) # This causes mon1,mon2,mon3,...,mon14 to share the same molecule counter - # because in the 2bead.lt file, the "..." in "$mol:..." preferentially looks - # for a counter of that type in a parent molecule or earlier ancestor. + # because in the forcefield.lt file, the "..." in "$mol:..." preferentially + # looks for a counter of that type in a parent molecule or earlier ancestor. # A polymer of alternating "H" and "P" monomers: @@ -61,4 +61,4 @@ Polymer { # Angle, dihedral and improper interactions between monomers will be generated -# automatically according to the instructions in the "force_field.lt" file. +# automatically according to the instructions in the "forcefield.lt" file. diff --git a/tools/moltemplate/examples/coarse_grained_examples/abstract_2bead_heteropolymer/moltemplate_files/system.lt b/tools/moltemplate/examples/coarse_grained/abstract_2bead_heteropolymer/moltemplate_files/system.lt similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/abstract_2bead_heteropolymer/moltemplate_files/system.lt rename to tools/moltemplate/examples/coarse_grained/abstract_2bead_heteropolymer/moltemplate_files/system.lt diff --git a/tools/moltemplate/examples/coarse_grained_examples/abstract_2bead_heteropolymer/run.in.nvt b/tools/moltemplate/examples/coarse_grained/abstract_2bead_heteropolymer/run.in.nvt similarity index 79% rename from tools/moltemplate/examples/coarse_grained_examples/abstract_2bead_heteropolymer/run.in.nvt rename to tools/moltemplate/examples/coarse_grained/abstract_2bead_heteropolymer/run.in.nvt index 35488d6590b2bb343f5239b99a176fe69556167f..e9fdbf41fd08f63d90ee4bba4eb5d5ec11ffbde7 100644 --- a/tools/moltemplate/examples/coarse_grained_examples/abstract_2bead_heteropolymer/run.in.nvt +++ b/tools/moltemplate/examples/coarse_grained/abstract_2bead_heteropolymer/run.in.nvt @@ -14,7 +14,7 @@ include system.in.settings timestep 2.0 -dump 1 all custom 2500 traj_nvt.lammpstrj id mol type x y z ix iy iz +dump 1 all custom 5000 traj_nvt.lammpstrj id mol type x y z ix iy iz # To use Langevin dynamics in LAMMPS you need both "fix langevin" and "fix nve". # (See http://lammps.sandia.gov/doc/fix_langevin.html for details.) @@ -24,9 +24,9 @@ fix fxnve all nve thermo_style custom step temp pe etotal press vol epair ebond eangle edihed -thermo 2500 # time interval for printing out "thermo" data +thermo 1000 # time interval for printing out "thermo" data -run 20000000 +run 40000000 write_data system_after_nvt.data diff --git a/tools/moltemplate/examples/coarse_grained/abstract_lennard_jones_tube/README.txt b/tools/moltemplate/examples/coarse_grained/abstract_lennard_jones_tube/README.txt new file mode 100644 index 0000000000000000000000000000000000000000..01f2353d2f445e4ee1e7302a36460480c84c074a --- /dev/null +++ b/tools/moltemplate/examples/coarse_grained/abstract_lennard_jones_tube/README.txt @@ -0,0 +1,14 @@ + +This example demonstrates how to build a simple system +containing mobile and immobile atoms using moltemplate. +An immobile tube is constructed of Lennard Jones particles (see "system.lt") +interacting with a fluid composed of (similar sized) Lennard Jones particles. + +Instructions on how to build LAMMPS input files and +run a short simulation are provided in other README files. + +step 1) +README_setup.sh + +step2) +README_run.sh diff --git a/tools/moltemplate/examples/coarse_grained/abstract_lennard_jones_tube/README_run.sh b/tools/moltemplate/examples/coarse_grained/abstract_lennard_jones_tube/README_run.sh new file mode 100755 index 0000000000000000000000000000000000000000..cb2307f525b3ff5ff84a8676f0587a066bc07491 --- /dev/null +++ b/tools/moltemplate/examples/coarse_grained/abstract_lennard_jones_tube/README_run.sh @@ -0,0 +1,23 @@ +# --- Running LAMMPS --- +# -- Prerequisites: -- +# The "run.in.nvt" file is a LAMMPS input script containing +# references to the input scripts and data files +# you hopefully have created earlier with moltemplate.sh: +# system.in.init, system.in.settings, system.data +# If not, carry out the instructions in "README_setup.sh". +# +# -- Instructions: -- +# If "lmp_mpi" is the name of the command you use to invoke lammps, +# then you would run lammps on these files this way: + + +lmp_mpi -i run.in.nvt # Run a simulation at constant volume + + + +# If you have compiled the MPI version of lammps, you can run lammps in parallel +# (But for a system of this small size, it should not be necessary.) +#mpirun -np 4 lmp_mpi -i run.in.nvt +#or +#mpirun -np 4 lmp_mpi -i run.in.npt +# (assuming you have 4 processors available) diff --git a/tools/moltemplate/examples/coarse_grained/abstract_lennard_jones_tube/README_setup.sh b/tools/moltemplate/examples/coarse_grained/abstract_lennard_jones_tube/README_setup.sh new file mode 100755 index 0000000000000000000000000000000000000000..cf22ee0fa1868664c5f3cc786d382d1b511097d5 --- /dev/null +++ b/tools/moltemplate/examples/coarse_grained/abstract_lennard_jones_tube/README_setup.sh @@ -0,0 +1,23 @@ +# Use these commands to generate the LAMMPS input script and data file +# (and other auxilliary files): + + +# Create LAMMPS input files this way: +cd moltemplate_files + + # run moltemplate + + moltemplate.sh system.lt + + # This will generate various files with names ending in *.in* and *.data. + # These files are the input files directly read by LAMMPS. Move them to + # the parent directory (or wherever you plan to run the simulation). + + mv -f system.in* system.data ../ + + # Optional: + # The "./output_ttree/" directory is full of temporary files generated by + # moltemplate. They can be useful for debugging, but are usually thrown away. + rm -rf output_ttree/ + +cd ../ diff --git a/tools/moltemplate/examples/coarse_grained/abstract_lennard_jones_tube/README_visualize.txt b/tools/moltemplate/examples/coarse_grained/abstract_lennard_jones_tube/README_visualize.txt new file mode 100644 index 0000000000000000000000000000000000000000..3bb7f5ff47eeb2ff8d76438ad1e0c63b0000b283 --- /dev/null +++ b/tools/moltemplate/examples/coarse_grained/abstract_lennard_jones_tube/README_visualize.txt @@ -0,0 +1,87 @@ + + ------- To view a lammps trajectory in VMD -------- + + +1) Build a PSF file for use in viewing with VMD. + +This step works with VMD 1.9 and topotools 1.2. +(Older versions, like VMD 1.8.6, don't support this.) + + +a) Start VMD +b) Menu Extensions->Tk Console +c) Enter: + +(I assume that the the DATA file is called "system.data") + + topo readlammpsdata system.data full + animate write psf system.psf + +2) + +Later, to Load a trajectory in VMD: + + Start VMD + Select menu: File->New Molecule + -Browse to select the PSF file you created above, and load it. + (Don't close the window yet.) + -Browse to select the trajectory file. + If necessary, for "file type" select: "LAMMPS Trajectory" + Load it. + + ---- A note on trajectory format: ----- +If the trajectory is a DUMP file, then make sure the it contains the +information you need for pbctools (see below. I've been using this +command in my LAMMPS scripts to create the trajectories: + + dump 1 all custom 5000 DUMP_FILE.lammpstrj id mol type x y z ix iy iz + +It's a good idea to use an atom_style which supports molecule-ID numbers +so that you can assign a molecule-ID number to each atom. (I think this +is needed to wrap atom coordinates without breaking molecules in half.) + +Of course, you don't have to save your trajectories in DUMP format, +(other formats like DCD work fine) I just mention dump files +because these are the files I'm familiar with. + +3) ----- Wrap the coordinates to the unit cell + (without cutting the molecules in half) + +a) Start VMD +b) Load the trajectory in VMD (see above) +c) Menu Extensions->Tk Console +d) Try entering these commands: + + pbc wrap -compound res -all + pbc box + + ----- Optional ---- + Sometimes the solvent or membrane obscures the view of the solute. + It can help to shift the location of the periodic boundary box + To shift the box in the y direction (for example) do this: + + pbc wrap -compound res -all -shiftcenterrel {0.0 -0.5 -0.5} + pbc box -shiftcenterrel {0.0 -0.5 -0.5} + + Distances are measured in units of box-length fractions, not Angstroms. + + Alternately if you have a solute whose atoms are all of type 1, + then you can also try this to center the box around it: + + pbc wrap -sel type=1 -all -centersel type=2 -center com + +4) + You should check if your periodic boundary conditions are too small. + To do that: + select Graphics->Representations menu option + click on the "Periodic" tab, and + click on the "+x", "-x", "+y", "-y", "+z", "-z" checkboxes. + +5) Optional: If you like, change the atom types in the PSF file so + that VMD recognizes the atom types, use something like: + +sed -e 's/ 1 1 / C C /g' < system.psf > temp1.psf +sed -e 's/ 2 2 / H H /g' < temp1.psf > temp2.psf +sed -e 's/ 3 3 / P P /g' < temp2.psf > system.psf + +(If you do this, it might effect step 2 above.) diff --git a/tools/moltemplate/examples/coarse_grained/abstract_lennard_jones_tube/images/tubewall+solvent_t=0steps.jpg b/tools/moltemplate/examples/coarse_grained/abstract_lennard_jones_tube/images/tubewall+solvent_t=0steps.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8c5df6540ccfde6e8c6f877de399a4dbfb18db4f Binary files /dev/null and b/tools/moltemplate/examples/coarse_grained/abstract_lennard_jones_tube/images/tubewall+solvent_t=0steps.jpg differ diff --git a/tools/moltemplate/examples/coarse_grained/abstract_lennard_jones_tube/images/tubewall+solvent_t=3000steps.png b/tools/moltemplate/examples/coarse_grained/abstract_lennard_jones_tube/images/tubewall+solvent_t=3000steps.png new file mode 100644 index 0000000000000000000000000000000000000000..f2f29ec4e87cae286a555dd4f261f9b218ec6ae1 Binary files /dev/null and b/tools/moltemplate/examples/coarse_grained/abstract_lennard_jones_tube/images/tubewall+solvent_t=3000steps.png differ diff --git a/tools/moltemplate/examples/coarse_grained/abstract_lennard_jones_tube/moltemplate_files/solvent_particle.lt b/tools/moltemplate/examples/coarse_grained/abstract_lennard_jones_tube/moltemplate_files/solvent_particle.lt new file mode 100644 index 0000000000000000000000000000000000000000..ebf5eeaf0df1cf7dd983a42cdbc8b3af82883e46 --- /dev/null +++ b/tools/moltemplate/examples/coarse_grained/abstract_lennard_jones_tube/moltemplate_files/solvent_particle.lt @@ -0,0 +1,21 @@ +# The two files "wall_particle.lt" and "solvent_particle.lt" +# define two very simple molecules containing one atom each. +# Both atoms have the same size (the have the same LJ sigma parameter). + +SolventParticle { + + # atomID molID atomType charge x y z + write("Data Atoms") { + $atom:s $mol:. @atom:s 0.0 0.0 0.0 0.0 + } + write_once("Data Masses") { + @atom:s 10.0 + } + write_once("In Settings") { + # i j epsilon sigma cutoff + pair_coeff @atom:s @atom:s 0.60 3.0 7.5 #<--attractive + group groupS type @atom:s #(Atoms of this type belong to the "S" group) + } + +} + diff --git a/tools/moltemplate/examples/coarse_grained/abstract_lennard_jones_tube/moltemplate_files/system.lt b/tools/moltemplate/examples/coarse_grained/abstract_lennard_jones_tube/moltemplate_files/system.lt new file mode 100644 index 0000000000000000000000000000000000000000..c68d8a650e2324d4e3e4abfec81f232ef674c15c --- /dev/null +++ b/tools/moltemplate/examples/coarse_grained/abstract_lennard_jones_tube/moltemplate_files/system.lt @@ -0,0 +1,53 @@ +import "wall_particle.lt" + +# Create an immobile "wall" out of "WallParticle"s +# arranged in the shape of a tube with radius 9.6 + +tube = new WallParticle.move(0,9.6,0) [20].rot(18,3.0,0,0) + [20].move(3.0,0,0) + + +# Add some "SolventParticle"s to the center of the tube: + +import "solvent_particle.lt" +solvent = new SolventParticle [20].move(3.0,0,0) + [3].move(0,3.0,0) + [3].move(0,0,3.0) + +# These "solvent" particles currently occupy a rectangular region from +# 0 to 6.0 in the y and z directions. Center them all using .move(): + +solvent[*][*][*].move(0,-3.0,-3.0) + + +# Define the periodic boundary conditions for our system + +write_once("Data Boundary") { + 0.0 60.0 xlo xhi + -20.0 20.0 ylo yhi + -20.0 20.0 zlo zhi +} + + + + +# LAMMPS supports a large number of force-field styles. We must select +# which ones we need. This information belongs in the "In Init" section (and +# (you can specify it anywhere in your LT files, multiple times if you like). +# If different molecules use different force-field styles, you can use hybrid +# styles. (In this example the molecules share the same pair_style.) + +write_once("In Init") { + units real + atom_style full + pair_style lj/cut 9.0 + # If you have charged molecules immersed in a salty implicit + # solvent, you might try something like this this instead: + # pair_style lj/cut/coul/debye 0.1 9.0 + pair_modify mix arithmetic + dielectric 80.0 + special_bonds lj 0.0 0.0 0.0 +} + + + diff --git a/tools/moltemplate/examples/coarse_grained/abstract_lennard_jones_tube/moltemplate_files/wall_particle.lt b/tools/moltemplate/examples/coarse_grained/abstract_lennard_jones_tube/moltemplate_files/wall_particle.lt new file mode 100644 index 0000000000000000000000000000000000000000..434a318655fe162ec184cb5a8a0f42179ca8620e --- /dev/null +++ b/tools/moltemplate/examples/coarse_grained/abstract_lennard_jones_tube/moltemplate_files/wall_particle.lt @@ -0,0 +1,21 @@ +# The two files "wall_particle.lt" and "solvent_particle.lt" +# define two very simple molecules containing one atom each. +# Both atoms have the same size (the have the same LJ sigma parameter). + +WallParticle { + + # atomID molID atomType charge x y z + write("Data Atoms") { + $atom:w $mol:. @atom:w 0.0 0.0 0.0 0.0 + } + write_once("Data Masses") { + @atom:w 10.0 + } + write_once("In Settings") { + # i j epsilon sigma cutoff + pair_coeff @atom:w @atom:w 0.05 3.0 7.5 #<--repulsive (approximately) + group groupW type @atom:w #(Atoms of this type belong to the "W" group) + } + +} + diff --git a/tools/moltemplate/examples/coarse_grained/abstract_lennard_jones_tube/run.in.nvt b/tools/moltemplate/examples/coarse_grained/abstract_lennard_jones_tube/run.in.nvt new file mode 100644 index 0000000000000000000000000000000000000000..16fdffb05ac5bb3c52fc1e6bd1dc94cf22f9c13b --- /dev/null +++ b/tools/moltemplate/examples/coarse_grained/abstract_lennard_jones_tube/run.in.nvt @@ -0,0 +1,53 @@ +# PREREQUISITES: +# +# You must use moltemplate.sh to create 3 files: +# system.data system.in.init system.in.settings +# (See README_setup.sh for details) + +# -- Init Section -- + +include system.in.init + +# -- Atom Definition Section -- + +read_data system.data + +# -- Settings Section -- + +include system.in.settings + +# Use "neigh_modify" to turn off calculation of interactions between immobilized +# atoms. (Note: The "groupW" group was defined in the file "system.in.settings") +neigh_modify exclude group groupW groupW + +# -- Run Section -- + + +timestep 1.0 +dump 1 all custom 500 traj_nvt.lammpstrj id mol type x y z ix iy iz + +thermo_style custom step temp pe etotal vol epair ebond eangle edihed +thermo 500 # time interval for printing out "thermo" data + + +# Optional: Improve efficiency by omitting the calcuation of interactions +# between immobile atoms. (Note: This is not optional under NPT conditions.) +neigh_modify exclude group groupW groupW + +# Only the groupW atoms are immobile. +group mobile subtract all groupW + +# The next two lines recalculate the temperature +# using only the mobile degrees of freedom: + +compute tempMobile mobile temp + +# Integrate the equations of motion: +fix fMoveStuff mobile nvt temp 300.0 300.0 100.0 +fix_modify fMoveStuff temp tempMobile + + +run 100000 + +write_data system_after_nvt.data + diff --git a/tools/moltemplate/examples/coarse_grained_examples/abstract_random_heteropolymer/README.TXT b/tools/moltemplate/examples/coarse_grained/abstract_random_heteropolymer/README.txt similarity index 81% rename from tools/moltemplate/examples/coarse_grained_examples/abstract_random_heteropolymer/README.TXT rename to tools/moltemplate/examples/coarse_grained/abstract_random_heteropolymer/README.txt index 15638c15361a914432ea705a5a858beacfe51659..8c6ca7947f7b995c2977d19389f08f05c44c6868 100644 --- a/tools/moltemplate/examples/coarse_grained_examples/abstract_random_heteropolymer/README.TXT +++ b/tools/moltemplate/examples/coarse_grained/abstract_random_heteropolymer/README.txt @@ -1,15 +1,15 @@ This is an example of how to build a polymer out of randomly-chosen monomers. -In this case, monomers will be chosen at random from two types +In this case, monomers will be chosen at random from two types (denoted "2bead" and "3bead", although you can have as many types as you like). You can also constrain the end-caps to be a particular type (eg "3bead"). The properties of the bonds connecting monomers (ie length, rigidity) will be automatically determined, depending on the type of monomers at that location -in the polymer. The same is true for the 3-body angle, and 4-body dihedral +in the polymer. The same is true for the 3-body angle, and 4-body dihedral interactions. -Instructions on how to build LAMMPS input files and +Instructions on how to build LAMMPS input files and run a short simulation are provided in other README files. step 1) diff --git a/tools/moltemplate/examples/coarse_grained_examples/abstract_random_heteropolymer/README_run.sh b/tools/moltemplate/examples/coarse_grained/abstract_random_heteropolymer/README_run.sh similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/abstract_random_heteropolymer/README_run.sh rename to tools/moltemplate/examples/coarse_grained/abstract_random_heteropolymer/README_run.sh diff --git a/tools/moltemplate/examples/coarse_grained/abstract_random_heteropolymer/README_setup.sh b/tools/moltemplate/examples/coarse_grained/abstract_random_heteropolymer/README_setup.sh new file mode 100755 index 0000000000000000000000000000000000000000..cf22ee0fa1868664c5f3cc786d382d1b511097d5 --- /dev/null +++ b/tools/moltemplate/examples/coarse_grained/abstract_random_heteropolymer/README_setup.sh @@ -0,0 +1,23 @@ +# Use these commands to generate the LAMMPS input script and data file +# (and other auxilliary files): + + +# Create LAMMPS input files this way: +cd moltemplate_files + + # run moltemplate + + moltemplate.sh system.lt + + # This will generate various files with names ending in *.in* and *.data. + # These files are the input files directly read by LAMMPS. Move them to + # the parent directory (or wherever you plan to run the simulation). + + mv -f system.in* system.data ../ + + # Optional: + # The "./output_ttree/" directory is full of temporary files generated by + # moltemplate. They can be useful for debugging, but are usually thrown away. + rm -rf output_ttree/ + +cd ../ diff --git a/tools/moltemplate/examples/coarse_grained/abstract_random_heteropolymer/README_visualize.txt b/tools/moltemplate/examples/coarse_grained/abstract_random_heteropolymer/README_visualize.txt new file mode 100644 index 0000000000000000000000000000000000000000..a3e3ed620ec8b32fb6da484368dc3fc299bad6de --- /dev/null +++ b/tools/moltemplate/examples/coarse_grained/abstract_random_heteropolymer/README_visualize.txt @@ -0,0 +1,87 @@ + + ------- To view a lammps trajectory in VMD -------- + + +1) Build a PSF file for use in viewing with VMD. + +This step works with VMD 1.9 and topotools 1.2. +(Older versions, like VMD 1.8.6, don't support this.) + + +a) Start VMD +b) Menu Extensions->Tk Console +c) Enter: + +(I assume that the the DATA file is called "system.data") + + topo readlammpsdata system.data full + animate write psf system.psf + +2) + +Later, to Load a trajectory in VMD: + + Start VMD + Select menu: File->New Molecule + -Browse to select the PSF file you created above, and load it. + (Don't close the window yet.) + -Browse to select the trajectory file. + If necessary, for "file type" select: "LAMMPS Trajectory" + Load it. + + ---- A note on trajectory format: ----- +If the trajectory is a DUMP file, then make sure the it contains the +information you need for pbctools (see below. I've been using this +command in my LAMMPS scripts to create the trajectories: + + dump 1 all custom 5000 DUMP_FILE.lammpstrj id mol type x y z ix iy iz + +It's a good idea to use an atom_style which supports molecule-ID numbers +so that you can assign a molecule-ID number to each atom. (I think this +is needed to wrap atom coordinates without breaking molecules in half.) + +Of course, you don't have to save your trajectories in DUMP format, +(other formats like DCD work fine) I just mention dump files +because these are the files I'm familiar with. + +3) ----- Wrap the coordinates to the unit cell + (without cutting the molecules in half) + +a) Start VMD +b) Load the trajectory in VMD (see above) +c) Menu Extensions->Tk Console +d) Try entering these commands: + + pbc wrap -compound res -all + pbc box + + ----- Optional ---- + Sometimes the solvent or membrane obscures the view of the solute. + It can help to shift the location of the periodic boundary box + To shift the box in the y direction (for example) do this: + + pbc wrap -compound res -all -shiftcenterrel {0.0 0.15 0.0} + pbc box -shiftcenterrel {0.0 0.15 0.0} + + Distances are measured in units of box-length fractions, not Angstroms. + + Alternately if you have a solute whose atoms are all of type 1, + then you can also try this to center the box around it: + + pbc wrap -sel type=1 -all -centersel type=2 -center com + +4) + You should check if your periodic boundary conditions are too small. + To do that: + select Graphics->Representations menu option + click on the "Periodic" tab, and + click on the "+x", "-x", "+y", "-y", "+z", "-z" checkboxes. + +5) Optional: If you like, change the atom types in the PSF file so + that VMD recognizes the atom types, use something like: + +sed -e 's/ 1 1 / C C /g' < system.psf > temp1.psf +sed -e 's/ 2 2 / H H /g' < temp1.psf > temp2.psf +sed -e 's/ 3 3 / P P /g' < temp2.psf > system.psf + +(If you do this, it might effect step 2 above.) diff --git a/tools/moltemplate/examples/coarse_grained/abstract_random_heteropolymer/images/2bead.jpg b/tools/moltemplate/examples/coarse_grained/abstract_random_heteropolymer/images/2bead.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f67da797f1f677383bad0885cc112812ddcbc182 Binary files /dev/null and b/tools/moltemplate/examples/coarse_grained/abstract_random_heteropolymer/images/2bead.jpg differ diff --git a/tools/moltemplate/examples/coarse_grained/abstract_random_heteropolymer/images/3bead.jpg b/tools/moltemplate/examples/coarse_grained/abstract_random_heteropolymer/images/3bead.jpg new file mode 100644 index 0000000000000000000000000000000000000000..15d7b296766de835005aa76d132274cb812628d3 Binary files /dev/null and b/tools/moltemplate/examples/coarse_grained/abstract_random_heteropolymer/images/3bead.jpg differ diff --git a/tools/moltemplate/examples/coarse_grained_examples/abstract_random_heteropolymer/images/random_heteropolymer_30_20_t=0.jpg b/tools/moltemplate/examples/coarse_grained/abstract_random_heteropolymer/images/random_heteropolymer_30_20_t=0.jpg similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/abstract_random_heteropolymer/images/random_heteropolymer_30_20_t=0.jpg rename to tools/moltemplate/examples/coarse_grained/abstract_random_heteropolymer/images/random_heteropolymer_30_20_t=0.jpg diff --git a/tools/moltemplate/examples/coarse_grained_examples/abstract_random_heteropolymer/images/random_heteropolymer_30_20_t=700ps.jpg b/tools/moltemplate/examples/coarse_grained/abstract_random_heteropolymer/images/random_heteropolymer_30_20_t=700ps.jpg similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/abstract_random_heteropolymer/images/random_heteropolymer_30_20_t=700ps.jpg rename to tools/moltemplate/examples/coarse_grained/abstract_random_heteropolymer/images/random_heteropolymer_30_20_t=700ps.jpg diff --git a/tools/moltemplate/examples/coarse_grained_examples/abstract_random_heteropolymer/moltemplate_files/forcefield.lt b/tools/moltemplate/examples/coarse_grained/abstract_random_heteropolymer/moltemplate_files/forcefield.lt similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/abstract_random_heteropolymer/moltemplate_files/forcefield.lt rename to tools/moltemplate/examples/coarse_grained/abstract_random_heteropolymer/moltemplate_files/forcefield.lt diff --git a/tools/moltemplate/examples/coarse_grained_examples/abstract_random_heteropolymer/moltemplate_files/monomers.lt b/tools/moltemplate/examples/coarse_grained/abstract_random_heteropolymer/moltemplate_files/monomers.lt similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/abstract_random_heteropolymer/moltemplate_files/monomers.lt rename to tools/moltemplate/examples/coarse_grained/abstract_random_heteropolymer/moltemplate_files/monomers.lt diff --git a/tools/moltemplate/examples/coarse_grained_examples/abstract_random_heteropolymer/moltemplate_files/polymer.lt b/tools/moltemplate/examples/coarse_grained/abstract_random_heteropolymer/moltemplate_files/polymer.lt similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/abstract_random_heteropolymer/moltemplate_files/polymer.lt rename to tools/moltemplate/examples/coarse_grained/abstract_random_heteropolymer/moltemplate_files/polymer.lt diff --git a/tools/moltemplate/examples/coarse_grained_examples/abstract_random_heteropolymer/moltemplate_files/system.lt b/tools/moltemplate/examples/coarse_grained/abstract_random_heteropolymer/moltemplate_files/system.lt similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/abstract_random_heteropolymer/moltemplate_files/system.lt rename to tools/moltemplate/examples/coarse_grained/abstract_random_heteropolymer/moltemplate_files/system.lt diff --git a/tools/moltemplate/examples/coarse_grained_examples/abstract_random_heteropolymer/run.in.nvt b/tools/moltemplate/examples/coarse_grained/abstract_random_heteropolymer/run.in.nvt similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/abstract_random_heteropolymer/run.in.nvt rename to tools/moltemplate/examples/coarse_grained/abstract_random_heteropolymer/run.in.nvt diff --git a/tools/moltemplate/examples/coarse_grained_examples/abstract_translocation/README.TXT b/tools/moltemplate/examples/coarse_grained/abstract_translocation/README.txt similarity index 83% rename from tools/moltemplate/examples/coarse_grained_examples/abstract_translocation/README.TXT rename to tools/moltemplate/examples/coarse_grained/abstract_translocation/README.txt index b9bac96d50db63b18b9bf616ff893ff06d9b9761..ed9de408f290e7439871009b9ff3af48f8133cdb 100644 --- a/tools/moltemplate/examples/coarse_grained_examples/abstract_translocation/README.TXT +++ b/tools/moltemplate/examples/coarse_grained/abstract_translocation/README.txt @@ -1,6 +1,6 @@ -This example contains a (crude and somewhat simple) example of -the translocation of a (rather short) polymer through a hole in a wall, +This example contains a (crude and somewhat simple) example of +the translocation of a (rather short) polymer through a hole in a wall, surrounded by an explicit LJ solvent. (I used a short polymer because a longer polymer would require a larger box. @@ -13,7 +13,7 @@ Note: You must compile LAMMPS with the optional "RIGID" package installed. To make NAME_OF_TARGET #<--("make ubuntu", "make g++", "make linux".) ---- -Instructions on how to build LAMMPS input files and +Instructions on how to build LAMMPS input files and run a short simulation are provided in other README files. step 1) diff --git a/tools/moltemplate/examples/coarse_grained_examples/abstract_translocation/README_run.sh b/tools/moltemplate/examples/coarse_grained/abstract_translocation/README_run.sh similarity index 98% rename from tools/moltemplate/examples/coarse_grained_examples/abstract_translocation/README_run.sh rename to tools/moltemplate/examples/coarse_grained/abstract_translocation/README_run.sh index 0828a7f0984fd89a7ad71e32124dde4869e75be3..f402d7b7c445bb0081baec511235faf64d3da1a8 100755 --- a/tools/moltemplate/examples/coarse_grained_examples/abstract_translocation/README_run.sh +++ b/tools/moltemplate/examples/coarse_grained/abstract_translocation/README_run.sh @@ -13,10 +13,10 @@ lmp_mpi -i run.in.nvt # Run a simulation at constant volume -#or +#or lmp_mpi -i run.in.npt # Run a simulation at constant pressure - # (Note: Constant pressure conditions have not been + # (Note: Constant pressure conditions have not been # well tested. The "run.in.npt" script may fail.) diff --git a/tools/moltemplate/examples/coarse_grained/abstract_translocation/README_setup.sh b/tools/moltemplate/examples/coarse_grained/abstract_translocation/README_setup.sh new file mode 100755 index 0000000000000000000000000000000000000000..cf22ee0fa1868664c5f3cc786d382d1b511097d5 --- /dev/null +++ b/tools/moltemplate/examples/coarse_grained/abstract_translocation/README_setup.sh @@ -0,0 +1,23 @@ +# Use these commands to generate the LAMMPS input script and data file +# (and other auxilliary files): + + +# Create LAMMPS input files this way: +cd moltemplate_files + + # run moltemplate + + moltemplate.sh system.lt + + # This will generate various files with names ending in *.in* and *.data. + # These files are the input files directly read by LAMMPS. Move them to + # the parent directory (or wherever you plan to run the simulation). + + mv -f system.in* system.data ../ + + # Optional: + # The "./output_ttree/" directory is full of temporary files generated by + # moltemplate. They can be useful for debugging, but are usually thrown away. + rm -rf output_ttree/ + +cd ../ diff --git a/tools/moltemplate/examples/coarse_grained/abstract_translocation/README_visualize.txt b/tools/moltemplate/examples/coarse_grained/abstract_translocation/README_visualize.txt new file mode 100644 index 0000000000000000000000000000000000000000..a3e3ed620ec8b32fb6da484368dc3fc299bad6de --- /dev/null +++ b/tools/moltemplate/examples/coarse_grained/abstract_translocation/README_visualize.txt @@ -0,0 +1,87 @@ + + ------- To view a lammps trajectory in VMD -------- + + +1) Build a PSF file for use in viewing with VMD. + +This step works with VMD 1.9 and topotools 1.2. +(Older versions, like VMD 1.8.6, don't support this.) + + +a) Start VMD +b) Menu Extensions->Tk Console +c) Enter: + +(I assume that the the DATA file is called "system.data") + + topo readlammpsdata system.data full + animate write psf system.psf + +2) + +Later, to Load a trajectory in VMD: + + Start VMD + Select menu: File->New Molecule + -Browse to select the PSF file you created above, and load it. + (Don't close the window yet.) + -Browse to select the trajectory file. + If necessary, for "file type" select: "LAMMPS Trajectory" + Load it. + + ---- A note on trajectory format: ----- +If the trajectory is a DUMP file, then make sure the it contains the +information you need for pbctools (see below. I've been using this +command in my LAMMPS scripts to create the trajectories: + + dump 1 all custom 5000 DUMP_FILE.lammpstrj id mol type x y z ix iy iz + +It's a good idea to use an atom_style which supports molecule-ID numbers +so that you can assign a molecule-ID number to each atom. (I think this +is needed to wrap atom coordinates without breaking molecules in half.) + +Of course, you don't have to save your trajectories in DUMP format, +(other formats like DCD work fine) I just mention dump files +because these are the files I'm familiar with. + +3) ----- Wrap the coordinates to the unit cell + (without cutting the molecules in half) + +a) Start VMD +b) Load the trajectory in VMD (see above) +c) Menu Extensions->Tk Console +d) Try entering these commands: + + pbc wrap -compound res -all + pbc box + + ----- Optional ---- + Sometimes the solvent or membrane obscures the view of the solute. + It can help to shift the location of the periodic boundary box + To shift the box in the y direction (for example) do this: + + pbc wrap -compound res -all -shiftcenterrel {0.0 0.15 0.0} + pbc box -shiftcenterrel {0.0 0.15 0.0} + + Distances are measured in units of box-length fractions, not Angstroms. + + Alternately if you have a solute whose atoms are all of type 1, + then you can also try this to center the box around it: + + pbc wrap -sel type=1 -all -centersel type=2 -center com + +4) + You should check if your periodic boundary conditions are too small. + To do that: + select Graphics->Representations menu option + click on the "Periodic" tab, and + click on the "+x", "-x", "+y", "-y", "+z", "-z" checkboxes. + +5) Optional: If you like, change the atom types in the PSF file so + that VMD recognizes the atom types, use something like: + +sed -e 's/ 1 1 / C C /g' < system.psf > temp1.psf +sed -e 's/ 2 2 / H H /g' < temp1.psf > temp2.psf +sed -e 's/ 3 3 / P P /g' < temp2.psf > system.psf + +(If you do this, it might effect step 2 above.) diff --git a/tools/moltemplate/examples/coarse_grained_examples/abstract_translocation/images/polymer_LR.jpg b/tools/moltemplate/examples/coarse_grained/abstract_translocation/images/polymer_LR.jpg similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/abstract_translocation/images/polymer_LR.jpg rename to tools/moltemplate/examples/coarse_grained/abstract_translocation/images/polymer_LR.jpg diff --git a/tools/moltemplate/examples/coarse_grained/abstract_translocation/images/solvent_LR.jpg b/tools/moltemplate/examples/coarse_grained/abstract_translocation/images/solvent_LR.jpg new file mode 100644 index 0000000000000000000000000000000000000000..304693e2acffe71b3c020b8a90f45ea58a59c22a Binary files /dev/null and b/tools/moltemplate/examples/coarse_grained/abstract_translocation/images/solvent_LR.jpg differ diff --git a/tools/moltemplate/examples/coarse_grained_examples/abstract_translocation/images/walls+solvent+polymer_t=0.jpg b/tools/moltemplate/examples/coarse_grained/abstract_translocation/images/walls+solvent+polymer_t=0.jpg similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/abstract_translocation/images/walls+solvent+polymer_t=0.jpg rename to tools/moltemplate/examples/coarse_grained/abstract_translocation/images/walls+solvent+polymer_t=0.jpg diff --git a/tools/moltemplate/examples/coarse_grained_examples/abstract_translocation/images/walls_LR.jpg b/tools/moltemplate/examples/coarse_grained/abstract_translocation/images/walls_LR.jpg similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/abstract_translocation/images/walls_LR.jpg rename to tools/moltemplate/examples/coarse_grained/abstract_translocation/images/walls_LR.jpg diff --git a/tools/moltemplate/examples/coarse_grained_examples/abstract_translocation/moltemplate_files/monomer.lt b/tools/moltemplate/examples/coarse_grained/abstract_translocation/moltemplate_files/monomer.lt similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/abstract_translocation/moltemplate_files/monomer.lt rename to tools/moltemplate/examples/coarse_grained/abstract_translocation/moltemplate_files/monomer.lt diff --git a/tools/moltemplate/examples/coarse_grained_examples/abstract_translocation/moltemplate_files/polymer.lt b/tools/moltemplate/examples/coarse_grained/abstract_translocation/moltemplate_files/polymer.lt similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/abstract_translocation/moltemplate_files/polymer.lt rename to tools/moltemplate/examples/coarse_grained/abstract_translocation/moltemplate_files/polymer.lt diff --git a/tools/moltemplate/examples/coarse_grained_examples/abstract_translocation/moltemplate_files/solvent.lt b/tools/moltemplate/examples/coarse_grained/abstract_translocation/moltemplate_files/solvent.lt similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/abstract_translocation/moltemplate_files/solvent.lt rename to tools/moltemplate/examples/coarse_grained/abstract_translocation/moltemplate_files/solvent.lt diff --git a/tools/moltemplate/examples/coarse_grained_examples/abstract_translocation/moltemplate_files/solvent_single.lt b/tools/moltemplate/examples/coarse_grained/abstract_translocation/moltemplate_files/solvent_single.lt similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/abstract_translocation/moltemplate_files/solvent_single.lt rename to tools/moltemplate/examples/coarse_grained/abstract_translocation/moltemplate_files/solvent_single.lt diff --git a/tools/moltemplate/examples/coarse_grained_examples/abstract_translocation/moltemplate_files/system.lt b/tools/moltemplate/examples/coarse_grained/abstract_translocation/moltemplate_files/system.lt similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/abstract_translocation/moltemplate_files/system.lt rename to tools/moltemplate/examples/coarse_grained/abstract_translocation/moltemplate_files/system.lt diff --git a/tools/moltemplate/examples/coarse_grained_examples/abstract_translocation/moltemplate_files/wall_single.lt b/tools/moltemplate/examples/coarse_grained/abstract_translocation/moltemplate_files/wall_single.lt similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/abstract_translocation/moltemplate_files/wall_single.lt rename to tools/moltemplate/examples/coarse_grained/abstract_translocation/moltemplate_files/wall_single.lt diff --git a/tools/moltemplate/examples/coarse_grained_examples/abstract_translocation/moltemplate_files/walls.lt b/tools/moltemplate/examples/coarse_grained/abstract_translocation/moltemplate_files/walls.lt similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/abstract_translocation/moltemplate_files/walls.lt rename to tools/moltemplate/examples/coarse_grained/abstract_translocation/moltemplate_files/walls.lt diff --git a/tools/moltemplate/examples/coarse_grained_examples/abstract_translocation/run.in.npt b/tools/moltemplate/examples/coarse_grained/abstract_translocation/run.in.npt similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/abstract_translocation/run.in.npt rename to tools/moltemplate/examples/coarse_grained/abstract_translocation/run.in.npt diff --git a/tools/moltemplate/examples/coarse_grained_examples/abstract_translocation/run.in.nvt b/tools/moltemplate/examples/coarse_grained/abstract_translocation/run.in.nvt similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/abstract_translocation/run.in.nvt rename to tools/moltemplate/examples/coarse_grained/abstract_translocation/run.in.nvt diff --git a/tools/moltemplate/examples/coarse_grained_examples/chromosome_metaphase_Naumova2013/README_FIRST.txt b/tools/moltemplate/examples/coarse_grained/chromosome_metaphase_Naumova2013/README_FIRST.txt similarity index 92% rename from tools/moltemplate/examples/coarse_grained_examples/chromosome_metaphase_Naumova2013/README_FIRST.txt rename to tools/moltemplate/examples/coarse_grained/chromosome_metaphase_Naumova2013/README_FIRST.txt index 03fb40b1672c9e821775c9306ab604d3457dad30..5420d95da3de00d13a61b2fc1ac41551ca05b7c1 100644 --- a/tools/moltemplate/examples/coarse_grained_examples/chromosome_metaphase_Naumova2013/README_FIRST.txt +++ b/tools/moltemplate/examples/coarse_grained/chromosome_metaphase_Naumova2013/README_FIRST.txt @@ -13,7 +13,7 @@ Unlike that study, I did not use "softened" Lennard-Jones potentials Honestly, you don't need to use moltemplate to build this polymer. It is almost counter-productive to use moltemplate to build this kind of polymer because it is so simple. (The polymer has only 1 bead per atom. -It just makes it more complicated to introduce all these extra +It just makes it more complicated to introduce all these extra files including monomer.lt, condensin.lt and system.lt, especially considering that system.lt is a complex file which is generated by a separate script.) @@ -26,9 +26,9 @@ Anyway, the two-stage model at the end of Naumova et al Science 2013 uses the "3 ---- 10-nm fiber model: ---- -For the 10nm model, - n=128000, - L=200, +For the 10nm model, + n=128000, + L=200, U(alpha)=5*(1 - cos(alpha)) bond_length=1.0 (=10nm) sigma=1.0 (particle radius = 10nm) @@ -37,12 +37,12 @@ For the 10nm model, "The 30nm-like fiber was modeled by increasing the volume of each monomer and the amount of DNA represented by each monomer by a factor of 4.25, while keeping other parameters the same at the monomer level." -I interpret this to mean that, for the 30nm model, +I interpret this to mean that, for the 30nm model, n=128000/4.25~=30117 (however I rounded up to 32768=2^15) L=200/4.25~=47 (however I rounded up to 51) U(alpha)=1.17647*(1 - cos(alpha)) (5/4.25=1.17647) To increase the volume by a factor o 4.25, I increase both the diameter of each -bead (the "sigma" parameter), and the bond-lengths connecting them from +bead (the "sigma" parameter), and the bond-lengths connecting them from 1.0 (corresponding to 10nm) to 4.25^(1/3)~=1.6198 (corresponding to 16.198nm). diff --git a/tools/moltemplate/examples/coarse_grained_examples/chromosome_metaphase_Naumova2013/README_NUCLEAR_VOLUME_FRACTION_ESTIMATE.txt b/tools/moltemplate/examples/coarse_grained/chromosome_metaphase_Naumova2013/README_NUCLEAR_VOLUME_FRACTION_ESTIMATE.txt similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/chromosome_metaphase_Naumova2013/README_NUCLEAR_VOLUME_FRACTION_ESTIMATE.txt rename to tools/moltemplate/examples/coarse_grained/chromosome_metaphase_Naumova2013/README_NUCLEAR_VOLUME_FRACTION_ESTIMATE.txt diff --git a/tools/moltemplate/examples/coarse_grained_examples/chromosome_metaphase_Naumova2013/README_run.sh b/tools/moltemplate/examples/coarse_grained/chromosome_metaphase_Naumova2013/README_run.sh similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/chromosome_metaphase_Naumova2013/README_run.sh rename to tools/moltemplate/examples/coarse_grained/chromosome_metaphase_Naumova2013/README_run.sh diff --git a/tools/moltemplate/examples/coarse_grained_examples/chromosome_metaphase_Naumova2013/README_setup.sh b/tools/moltemplate/examples/coarse_grained/chromosome_metaphase_Naumova2013/README_setup.sh similarity index 95% rename from tools/moltemplate/examples/coarse_grained_examples/chromosome_metaphase_Naumova2013/README_setup.sh rename to tools/moltemplate/examples/coarse_grained/chromosome_metaphase_Naumova2013/README_setup.sh index 14700a29cd3e1c6ad8b0708bb6d5abd3177bb2d8..3f261528b4a0673c14848c491f980921bcd9e236 100755 --- a/tools/moltemplate/examples/coarse_grained_examples/chromosome_metaphase_Naumova2013/README_setup.sh +++ b/tools/moltemplate/examples/coarse_grained/chromosome_metaphase_Naumova2013/README_setup.sh @@ -17,7 +17,7 @@ cd moltemplate_files # 32768 is the number of monomers in the polymer # (which may be different from the number of coordinates - # in the "coords_orig.raw" file) This number will vary + # in the "coords_orig.raw" file) This number will vary # depending on how long you want the polymer to be. # The second argument "51" is the average interval between # condensin anchors (IE the "loop size" in monomers.) @@ -29,10 +29,10 @@ cd moltemplate_files -a "@bond:stage2 2" \ -a "@atom:Monomer/A 1" - # This will generate various files with names ending in *.in* and *.data. - # These files are the input files directly read by LAMMPS. Move them to + # This will generate various files with names ending in *.in* and *.data. + # These files are the input files directly read by LAMMPS. Move them to # the parent directory (or wherever you plan to run the simulation). - # + # # We used the "-a" command to set the variable @bond:condensin to "2" # because we will refer to it later in the "run.in" LAMMPS input script. # (Of coarse, LAMMPS knows nothing about moltemplate variables, @@ -46,7 +46,7 @@ cd moltemplate_files cp -f table_bonds_stage2.dat ../ # Optional: - # The "./output_ttree/" directory is full of temporary files generated by + # The "./output_ttree/" directory is full of temporary files generated by # moltemplate. They can be useful for debugging, but are usually thrown away. rm -rf output_ttree/ diff --git a/tools/moltemplate/examples/coarse_grained_examples/chromosome_metaphase_Naumova2013/README_visualize.txt b/tools/moltemplate/examples/coarse_grained/chromosome_metaphase_Naumova2013/README_visualize.txt similarity index 92% rename from tools/moltemplate/examples/coarse_grained_examples/chromosome_metaphase_Naumova2013/README_visualize.txt rename to tools/moltemplate/examples/coarse_grained/chromosome_metaphase_Naumova2013/README_visualize.txt index a5b46dc8a5de727724eb4523f1ab3554979cb559..31abe1e1ecc75c37e6bcd8cf6bc4ff5f6ba9eb0f 100644 --- a/tools/moltemplate/examples/coarse_grained_examples/chromosome_metaphase_Naumova2013/README_visualize.txt +++ b/tools/moltemplate/examples/coarse_grained/chromosome_metaphase_Naumova2013/README_visualize.txt @@ -4,16 +4,16 @@ NOTE: VMD DOES NOT ALLOW YOU TO VISUALIZE SYSTEMS WITH MANY BONDS ATTACHED HOWEVER THIS MODEL ATTACHES APPROXIMATELY 60 BONDS TO EACH CONDENSIN ATOM. IN ORDER TO PULL THE CONDENSIN MONOMERS TOGETHER. YOU MUST DELETE THOSE BONDS (of type "1" or "2") FROM THE "system.data" FILE BEFORE YOU CARRY -OUT THE COMMANDS BELOW. (...And backup your "system.data" file. You'll need +OUT THE COMMANDS BELOW. (...And backup your "system.data" file. You'll need all the bonds when you run the simulations.) -------------- COLORS --------------- In order to show how the polymer is distributed along the length of the cylinder, I recommend to select the -Graphics->Graphical Representations +Graphics->Graphical Representations menu option, and select "Index" from the "Coloring Method" pull-down menu. -After doing this, you can switch from a red-white-blue scheme, to a +After doing this, you can switch from a red-white-blue scheme, to a rainbow ("jet") scheme, by selecting the Extensions->Tk Console menu option and loading the "vmd_colorscale_jet.tcl" file located in the "images" directory. ------------------------------------------- @@ -31,10 +31,10 @@ The system coordinates are initialy stored in a LAMMPS' ".data" file. The first step is to view that file. Then you should create a ".psf" file -(The .psf file is necessary after you run the simulation +(The .psf file is necessary after you run the simulation for viewing trajectories.) -1) Build a PSF file for use in viewing with VMD +1) Build a PSF file for use in viewing with VMD a) Start VMD b) Menu Extensions->Tk Console @@ -48,9 +48,9 @@ c) Enter: You will see a snapshot of the system on the screen. (presumably the initial conformation at t=0) -2) +2) -Later once you have run a simulation, +Later once you have run a simulation, to Load a trajectory in VMD: Start VMD @@ -68,21 +68,21 @@ to Load a trajectory in VMD: ##################### PERIODIC BOUNDARY CONDITIONS ##################### - If you are only simulating a single molecule and you are not + If you are only simulating a single molecule and you are not using periodic boundary conditions, then ignore everything below. ######################################################################## ---- A note on trajectory format: ----- -If the trajectory is the standard LAMMPS format, (aka a "DUMP" file with +If the trajectory is the standard LAMMPS format, (aka a "DUMP" file with a ".lammpstrj" extension), then it's a good idea when you run the simulation to tell LAMMPS you want to store the information needed for showing periodic -boundary conditions. (Even if you are not using periodic boundaries. +boundary conditions. (Even if you are not using periodic boundaries. It never hurts to include a tiny bit of extra information.) To do that, I've been using this command in my LAMMPS scripts to create the trajectories: dump 1 all custom 5000 traj.lammpstrj id mol type x y z ix iy iz -(Also: it's a good idea to use an atom_style which supports molecule-ID numbers +(Also: it's a good idea to use an atom_style which supports molecule-ID numbers so that you can assign a molecule-ID number to each atom. I think this is needed to wrap atom coordinates visually without breaking molecules in half. Again you don't need to worry about this if you are not using periodic boundaries.) @@ -101,7 +101,7 @@ d) Try entering these commands: ----- Optional ---- Sometimes the solvent or membrane obscures the view of the solute. - It can help to shift the location of the periodic boundary box + It can help to shift the location of the periodic boundary box To shift the box in the y direction (for example) do this: pbc wrap -compound res -all -shiftcenterrel {-0.5 -0.5 -0.5} @@ -109,19 +109,19 @@ d) Try entering these commands: Distances are measured in units of box-length fractions, not Angstroms. - Alternately if you have a solute whose atoms are all of type 1, + Alternately if you have a solute whose atoms are all of type 1, then you can also try this to center the box around it: pbc wrap -sel type=1 -all -centersel type=2 -center com -4) +4) You should check if your periodic boundary conditions are too small. To do that: select Graphics->Representations menu option - click on the "Periodic" tab, and + click on the "Periodic" tab, and click on the "+x", "-x", "+y", "-y", "+z", "-z" checkboxes. -5) Optional: If you like, change the atom types in the PSF file so +5) Optional: If you like, change the atom types in the PSF file so that VMD recognizes the atom types, use something like: sed -e 's/ 1 1 / C C /g' < system.psf > temp1.psf diff --git a/tools/moltemplate/examples/coarse_grained_examples/chromosome_metaphase_Naumova2013/images/stage2_interior.jpg b/tools/moltemplate/examples/coarse_grained/chromosome_metaphase_Naumova2013/images/stage2_interior.jpg similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/chromosome_metaphase_Naumova2013/images/stage2_interior.jpg rename to tools/moltemplate/examples/coarse_grained/chromosome_metaphase_Naumova2013/images/stage2_interior.jpg diff --git a/tools/moltemplate/examples/coarse_grained_examples/chromosome_metaphase_Naumova2013/images/stage2_interior_rotated.jpg b/tools/moltemplate/examples/coarse_grained/chromosome_metaphase_Naumova2013/images/stage2_interior_rotated.jpg similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/chromosome_metaphase_Naumova2013/images/stage2_interior_rotated.jpg rename to tools/moltemplate/examples/coarse_grained/chromosome_metaphase_Naumova2013/images/stage2_interior_rotated.jpg diff --git a/tools/moltemplate/examples/coarse_grained_examples/chromosome_metaphase_Naumova2013/images/t=0_before_minimizaion.jpg b/tools/moltemplate/examples/coarse_grained/chromosome_metaphase_Naumova2013/images/t=0_before_minimizaion.jpg similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/chromosome_metaphase_Naumova2013/images/t=0_before_minimizaion.jpg rename to tools/moltemplate/examples/coarse_grained/chromosome_metaphase_Naumova2013/images/t=0_before_minimizaion.jpg diff --git a/tools/moltemplate/examples/coarse_grained_examples/chromosome_metaphase_Naumova2013/images/vmd_colorscale_jet.tcl b/tools/moltemplate/examples/coarse_grained/chromosome_metaphase_Naumova2013/images/vmd_colorscale_jet.tcl similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/chromosome_metaphase_Naumova2013/images/vmd_colorscale_jet.tcl rename to tools/moltemplate/examples/coarse_grained/chromosome_metaphase_Naumova2013/images/vmd_colorscale_jet.tcl diff --git a/tools/moltemplate/examples/coarse_grained_examples/chromosome_metaphase_Naumova2013/moltemplate_files/README_how_to_generate_system_lt.sh b/tools/moltemplate/examples/coarse_grained/chromosome_metaphase_Naumova2013/moltemplate_files/README_how_to_generate_system_lt.sh similarity index 93% rename from tools/moltemplate/examples/coarse_grained_examples/chromosome_metaphase_Naumova2013/moltemplate_files/README_how_to_generate_system_lt.sh rename to tools/moltemplate/examples/coarse_grained/chromosome_metaphase_Naumova2013/moltemplate_files/README_how_to_generate_system_lt.sh index c23b222fa1e0b6d7d8f7d6d072738949daf555ae..829b4c6be04d352530ea95b442bab086e026cdc2 100755 --- a/tools/moltemplate/examples/coarse_grained_examples/chromosome_metaphase_Naumova2013/moltemplate_files/README_how_to_generate_system_lt.sh +++ b/tools/moltemplate/examples/coarse_grained/chromosome_metaphase_Naumova2013/moltemplate_files/README_how_to_generate_system_lt.sh @@ -13,7 +13,7 @@ # 32768 is the number of monomers in the polymer # (which may be different from the number of coordinates - # in the "coords_orig.raw" file) This number will vary + # in the "coords_orig.raw" file) This number will vary # depending on how long you want the polymer to be. # The second argument "51" is the average interval between # condensin anchors (IE the "loop size" in monomers.) diff --git a/tools/moltemplate/examples/coarse_grained_examples/chromosome_metaphase_Naumova2013/moltemplate_files/README_length_flexibility_details.txt b/tools/moltemplate/examples/coarse_grained/chromosome_metaphase_Naumova2013/moltemplate_files/README_length_flexibility_details.txt similarity index 99% rename from tools/moltemplate/examples/coarse_grained_examples/chromosome_metaphase_Naumova2013/moltemplate_files/README_length_flexibility_details.txt rename to tools/moltemplate/examples/coarse_grained/chromosome_metaphase_Naumova2013/moltemplate_files/README_length_flexibility_details.txt index 1d30ceb17097dd73a2fb7d7fdc1fb9e757330876..f2cd91c0b49ba6bcb53919d07a689f4dc600ea89 100644 --- a/tools/moltemplate/examples/coarse_grained_examples/chromosome_metaphase_Naumova2013/moltemplate_files/README_length_flexibility_details.txt +++ b/tools/moltemplate/examples/coarse_grained/chromosome_metaphase_Naumova2013/moltemplate_files/README_length_flexibility_details.txt @@ -2,9 +2,9 @@ The two-stage model at the end of Naumova et al Science 2013 uses the "30nm-fiber" model, whose details are (somewhat vaguely) described in the supplemental materials section. -For the 10nm model, - n=128000, - L=200, +For the 10nm model, + n=128000, + L=200, U(alpha)=5*(1 - cos(alpha)) bond_length=1.0 (=10nm) sigma=1.0 (particle radius = 10nm) @@ -12,7 +12,7 @@ For the 10nm model, 30nm-fiber model details: "The 30nm-like fiber was modeled by increasing the volume of each monomer and the amount of DNA represented by each monomer by a factor of 4.25, while keeping other parameters the same at the monomer level." -I interpret this to mean that, for the 30nm model, +I interpret this to mean that, for the 30nm model, n=128000/4.25~=30117 L=200/4.25~=47 U(alpha)=1.17647*(1 - cos(alpha)) (5/4.25=1.17647) diff --git a/tools/moltemplate/examples/coarse_grained_examples/chromosome_metaphase_Naumova2013/moltemplate_files/calc_table.sh b/tools/moltemplate/examples/coarse_grained/chromosome_metaphase_Naumova2013/moltemplate_files/calc_table.sh similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/chromosome_metaphase_Naumova2013/moltemplate_files/calc_table.sh rename to tools/moltemplate/examples/coarse_grained/chromosome_metaphase_Naumova2013/moltemplate_files/calc_table.sh diff --git a/tools/moltemplate/examples/coarse_grained_examples/chromosome_metaphase_Naumova2013/moltemplate_files/condensin.lt b/tools/moltemplate/examples/coarse_grained/chromosome_metaphase_Naumova2013/moltemplate_files/condensin.lt similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/chromosome_metaphase_Naumova2013/moltemplate_files/condensin.lt rename to tools/moltemplate/examples/coarse_grained/chromosome_metaphase_Naumova2013/moltemplate_files/condensin.lt diff --git a/tools/moltemplate/examples/coarse_grained_examples/chromosome_metaphase_Naumova2013/moltemplate_files/coords_orig.raw b/tools/moltemplate/examples/coarse_grained/chromosome_metaphase_Naumova2013/moltemplate_files/coords_orig.raw similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/chromosome_metaphase_Naumova2013/moltemplate_files/coords_orig.raw rename to tools/moltemplate/examples/coarse_grained/chromosome_metaphase_Naumova2013/moltemplate_files/coords_orig.raw diff --git a/tools/moltemplate/examples/coarse_grained_examples/chromosome_metaphase_Naumova2013/moltemplate_files/generate_system_lt.py b/tools/moltemplate/examples/coarse_grained/chromosome_metaphase_Naumova2013/moltemplate_files/generate_system_lt.py similarity index 98% rename from tools/moltemplate/examples/coarse_grained_examples/chromosome_metaphase_Naumova2013/moltemplate_files/generate_system_lt.py rename to tools/moltemplate/examples/coarse_grained/chromosome_metaphase_Naumova2013/moltemplate_files/generate_system_lt.py index 796347bb0bc384fa3b98aa35787dd8f12822f2a1..21f263d382af9ceab283fedb0bccc1b7489c2b33 100755 --- a/tools/moltemplate/examples/coarse_grained_examples/chromosome_metaphase_Naumova2013/moltemplate_files/generate_system_lt.py +++ b/tools/moltemplate/examples/coarse_grained/chromosome_metaphase_Naumova2013/moltemplate_files/generate_system_lt.py @@ -50,7 +50,7 @@ if len(lines) != N: " does not match first argument ("+str(N)+")\n") exit(1) for i in range(0, N): - coords[i] = map(float, lines[i].split()) + coords[i] = list(map(float, lines[i].split())) # Now calculate the box_boundaries: box_bounds_min = [0.0, 0.0, 0.0] @@ -105,7 +105,7 @@ import "condensin.lt" # <-- defines "CondensinMonomer" -# Figure out which monomers are "Monomers" and which monomers are +# Figure out which monomers are "Monomers" and which monomers are # "CondensinMonomers" ic = 0 # count the number of condensins added so far @@ -207,7 +207,7 @@ ic = 0 for i in range(0, N-1): #sys.stderr.write("i="+str(i)+", ic="+str(ic)+", Nc="+str(Nc)+"\n") - # Figure out if the first atom in the bond pair + # Figure out if the first atom in the bond pair # belongs to a regular Monomer or a CondensinMonomer if condensin_is_here[i]: sys.stdout.write(" $bond:b"+str(i+1)+" @bond:backbone $atom:condensins["+str(ic)+"]/a") @@ -232,7 +232,7 @@ write_once("Data Angles By Type") { } write_once("In Settings") { - # Most parameters here were taken from the supplemental material of + # Most parameters here were taken from the supplemental material of # Naumova et al. Science 2013 (simulations by Maxim Imakaev, see Supp Mat) #angle_coeff @angle:backbone cosine 5.0 #<-10nm fiber angle_coeff @angle:backbone cosine 1.1764705882352942 #<-30nm fiber diff --git a/tools/moltemplate/examples/coarse_grained_examples/chromosome_metaphase_Naumova2013/moltemplate_files/interpolate_coords.py b/tools/moltemplate/examples/coarse_grained/chromosome_metaphase_Naumova2013/moltemplate_files/interpolate_coords.py similarity index 96% rename from tools/moltemplate/examples/coarse_grained_examples/chromosome_metaphase_Naumova2013/moltemplate_files/interpolate_coords.py rename to tools/moltemplate/examples/coarse_grained/chromosome_metaphase_Naumova2013/moltemplate_files/interpolate_coords.py index 06f995931dc99620e9d35f1e0950500dd6bce5a7..8ae294c9d1111aba4771c99795b1596e69b3f1e4 100755 --- a/tools/moltemplate/examples/coarse_grained_examples/chromosome_metaphase_Naumova2013/moltemplate_files/interpolate_coords.py +++ b/tools/moltemplate/examples/coarse_grained/chromosome_metaphase_Naumova2013/moltemplate_files/interpolate_coords.py @@ -17,7 +17,7 @@ Example: import sys -from math import * +from math import floor # Parse the argument list: if len(sys.argv) <= 1: @@ -38,7 +38,7 @@ lines = sys.stdin.readlines() for line in lines: tokens = line.split() if (len(tokens) > 0): - coords_orig.append(map(float, tokens)) + coords_orig.append(list(map(float, tokens))) g_dim = len(tokens) n_orig = len(coords_orig) diff --git a/tools/moltemplate/examples/coarse_grained_examples/chromosome_metaphase_Naumova2013/moltemplate_files/monomer.lt b/tools/moltemplate/examples/coarse_grained/chromosome_metaphase_Naumova2013/moltemplate_files/monomer.lt similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/chromosome_metaphase_Naumova2013/moltemplate_files/monomer.lt rename to tools/moltemplate/examples/coarse_grained/chromosome_metaphase_Naumova2013/moltemplate_files/monomer.lt diff --git a/tools/moltemplate/examples/coarse_grained_examples/chromosome_metaphase_Naumova2013/moltemplate_files/table_bonds_stage2.dat b/tools/moltemplate/examples/coarse_grained/chromosome_metaphase_Naumova2013/moltemplate_files/table_bonds_stage2.dat similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/chromosome_metaphase_Naumova2013/moltemplate_files/table_bonds_stage2.dat rename to tools/moltemplate/examples/coarse_grained/chromosome_metaphase_Naumova2013/moltemplate_files/table_bonds_stage2.dat diff --git a/tools/moltemplate/examples/coarse_grained_examples/chromosome_metaphase_Naumova2013/run.in.min b/tools/moltemplate/examples/coarse_grained/chromosome_metaphase_Naumova2013/run.in.min similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/chromosome_metaphase_Naumova2013/run.in.min rename to tools/moltemplate/examples/coarse_grained/chromosome_metaphase_Naumova2013/run.in.min diff --git a/tools/moltemplate/examples/coarse_grained_examples/chromosome_metaphase_Naumova2013/run.in.stage1 b/tools/moltemplate/examples/coarse_grained/chromosome_metaphase_Naumova2013/run.in.stage1 similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/chromosome_metaphase_Naumova2013/run.in.stage1 rename to tools/moltemplate/examples/coarse_grained/chromosome_metaphase_Naumova2013/run.in.stage1 diff --git a/tools/moltemplate/examples/coarse_grained_examples/chromosome_metaphase_Naumova2013/run.in.stage2 b/tools/moltemplate/examples/coarse_grained/chromosome_metaphase_Naumova2013/run.in.stage2 similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/chromosome_metaphase_Naumova2013/run.in.stage2 rename to tools/moltemplate/examples/coarse_grained/chromosome_metaphase_Naumova2013/run.in.stage2 diff --git a/tools/moltemplate/examples/coarse_grained_examples/membrane+protein/README.TXT b/tools/moltemplate/examples/coarse_grained/membrane+protein/README.txt similarity index 84% rename from tools/moltemplate/examples/coarse_grained_examples/membrane+protein/README.TXT rename to tools/moltemplate/examples/coarse_grained/membrane+protein/README.txt index 09abbc4b2adecf940d293cf7eedb20233d40b85b..a2b9dc91eb507ae03c172becaabe64bb600f86b3 100644 --- a/tools/moltemplate/examples/coarse_grained_examples/membrane+protein/README.TXT +++ b/tools/moltemplate/examples/coarse_grained/membrane+protein/README.txt @@ -1,24 +1,24 @@ - This example shows how to put a protein (inclusion) in a + This example shows how to put a protein (inclusion) in a lipid bilayer mixture composed of two different lipids (DPPC and DLPC). The DPPC lipid model is described here: G. Brannigan, P.F. Philips, and F.L.H. Brown, Physical Review E, Vol 72, 011915 (2005) (The DLPC model is a truncated version of DPPC. Modifications discussed below.) The protein model is described here: - G. Bellesia, AI Jewett, and J-E Shea, + G. Bellesia, AI Jewett, and J-E Shea, Protein Science, Vol19 141-154 (2010) --- PREREQUISITES: --- -1) This example requires the "dihedral_style fourier", which is currently +1) This example requires the "dihedral_style fourier", which is currently in the USER-MISC package. Build LAMMPS with this package enabled using make yes-user-misc -before compiling LAMMPS. +before compiling LAMMPS. (See http://lammps.sandia.gov/doc/Section_start.html#start_3 for details.) 2) This example may require additional features to be added to LAMMPS. If LAMMPS complains about an "Invalid pair_style", then - a) download the "additional_lammps_code" from + a) download the "additional_lammps_code" from http://moltemplate.org (upper-left corner menu) b) unpack it c) copy the .cpp and .h files to the src folding of your lammps installation. @@ -46,21 +46,21 @@ and: M.C. Watson, E.S. Penev, P.M. Welch, and F.L.H. Brown J. Chem. Phys. 135, 244701 (2011) -As in Watson(JCP 2011), rigid bond-length constraints -have been replaced by harmonic bonds. +As in Watson(JCP 2011), rigid bond-length constraints +have been replaced by harmonic bonds. -A truncated version of this lipid (named "DLPC") has also been added. -The bending stiffness of each lipid has been increased to compensate -for the additional disorder resulting from mixing two different types +A truncated version of this lipid (named "DLPC") has also been added. +The bending stiffness of each lipid has been increased to compensate +for the additional disorder resulting from mixing two different types of lipids together. (Otherwise pores appear.) -Unlike the original "DPPC" molecule model, the new "DPPC" and "DLPC" models -have not been carefully parameterized to reproduce the correct behavior in +Unlike the original "DPPC" molecule model, the new "DPPC" and "DLPC" models +have not been carefully parameterized to reproduce the correct behavior in a lipid bilayer mixture. ------------- -Instructions on how to build LAMMPS input files and +Instructions on how to build LAMMPS input files and run a short simulation are provided in other README files. step 1) diff --git a/tools/moltemplate/examples/coarse_grained_examples/membrane+protein/README_WARNING.TXT b/tools/moltemplate/examples/coarse_grained/membrane+protein/README_WARNING.txt similarity index 87% rename from tools/moltemplate/examples/coarse_grained_examples/membrane+protein/README_WARNING.TXT rename to tools/moltemplate/examples/coarse_grained/membrane+protein/README_WARNING.txt index 8864c3e047c897ecfc0feae2b233e71e03edb916..f4b6763524d700f06a955971df90898209b192ab 100644 --- a/tools/moltemplate/examples/coarse_grained_examples/membrane+protein/README_WARNING.TXT +++ b/tools/moltemplate/examples/coarse_grained/membrane+protein/README_WARNING.txt @@ -1,10 +1,10 @@ WARNING: - This is not a realistic simulation of proteins in a lipid membrane. This -example was only intented to be a technical demonstration to show how to -combine totally different kinds of coarse-grained molecules (with different -kinds of force-fields) together in the same simulation in LAMMPS. Tuning the + This is not a realistic simulation of proteins in a lipid membrane. This +example was only intented to be a technical demonstration to show how to +combine totally different kinds of coarse-grained molecules (with different +kinds of force-fields) together in the same simulation in LAMMPS. Tuning the force-field parameters to get realistic results was not the goal. I did -not take the extra time to do this. If you have suggestions for changes, +not take the extra time to do this. If you have suggestions for changes, please email me (jewett.aij at gmail dot com). diff --git a/tools/moltemplate/examples/coarse_grained_examples/membrane+protein/README_run.sh b/tools/moltemplate/examples/coarse_grained/membrane+protein/README_run.sh similarity index 99% rename from tools/moltemplate/examples/coarse_grained_examples/membrane+protein/README_run.sh rename to tools/moltemplate/examples/coarse_grained/membrane+protein/README_run.sh index d7ea305695b91a1faea3aac937988289fb54af1f..29958f73a3aba4d39e214964f3bff155e4563011 100755 --- a/tools/moltemplate/examples/coarse_grained_examples/membrane+protein/README_run.sh +++ b/tools/moltemplate/examples/coarse_grained/membrane+protein/README_run.sh @@ -13,7 +13,7 @@ lmp_mpi -i run.in.npt # Run a simulation at constant pressure (tension) -#or +#or lmp_mpi -i run.in.nvt # Run a simulation at constant volume diff --git a/tools/moltemplate/examples/coarse_grained_examples/membrane+protein/README_setup.sh b/tools/moltemplate/examples/coarse_grained/membrane+protein/README_setup.sh similarity index 94% rename from tools/moltemplate/examples/coarse_grained_examples/membrane+protein/README_setup.sh rename to tools/moltemplate/examples/coarse_grained/membrane+protein/README_setup.sh index abf2fce64be9f5d657021b3c5d58dd6c0827b56b..ee7d9efdd7a8a9aefa08ed692fbb923a1c4440b4 100755 --- a/tools/moltemplate/examples/coarse_grained_examples/membrane+protein/README_setup.sh +++ b/tools/moltemplate/examples/coarse_grained/membrane+protein/README_setup.sh @@ -9,19 +9,19 @@ cd moltemplate_files moltemplate.sh system.lt - # This will generate various files with names ending in *.in* and *.data. - # These files are the input files directly read by LAMMPS. Move them to + # This will generate various files with names ending in *.in* and *.data. + # These files are the input files directly read by LAMMPS. Move them to # the parent directory (or wherever you plan to run the simulation). mv -f system.in* system.data ../ - # The "table_int.dat" file contains tabular data for the lipid INT-INT atom + # The "table_int.dat" file contains tabular data for the lipid INT-INT atom # 1/r^2 interaction. We need it too. (This slows down the simulation by x2, # so I might look for a way to get rid of it later.) cp -f table_int.dat ../ # Optional: - # The "./output_ttree/" directory is full of temporary files generated by + # The "./output_ttree/" directory is full of temporary files generated by # moltemplate. They can be useful for debugging, but are usually thrown away. rm -rf output_ttree/ diff --git a/tools/moltemplate/examples/coarse_grained/membrane+protein/README_visualize.txt b/tools/moltemplate/examples/coarse_grained/membrane+protein/README_visualize.txt new file mode 100644 index 0000000000000000000000000000000000000000..a3e3ed620ec8b32fb6da484368dc3fc299bad6de --- /dev/null +++ b/tools/moltemplate/examples/coarse_grained/membrane+protein/README_visualize.txt @@ -0,0 +1,87 @@ + + ------- To view a lammps trajectory in VMD -------- + + +1) Build a PSF file for use in viewing with VMD. + +This step works with VMD 1.9 and topotools 1.2. +(Older versions, like VMD 1.8.6, don't support this.) + + +a) Start VMD +b) Menu Extensions->Tk Console +c) Enter: + +(I assume that the the DATA file is called "system.data") + + topo readlammpsdata system.data full + animate write psf system.psf + +2) + +Later, to Load a trajectory in VMD: + + Start VMD + Select menu: File->New Molecule + -Browse to select the PSF file you created above, and load it. + (Don't close the window yet.) + -Browse to select the trajectory file. + If necessary, for "file type" select: "LAMMPS Trajectory" + Load it. + + ---- A note on trajectory format: ----- +If the trajectory is a DUMP file, then make sure the it contains the +information you need for pbctools (see below. I've been using this +command in my LAMMPS scripts to create the trajectories: + + dump 1 all custom 5000 DUMP_FILE.lammpstrj id mol type x y z ix iy iz + +It's a good idea to use an atom_style which supports molecule-ID numbers +so that you can assign a molecule-ID number to each atom. (I think this +is needed to wrap atom coordinates without breaking molecules in half.) + +Of course, you don't have to save your trajectories in DUMP format, +(other formats like DCD work fine) I just mention dump files +because these are the files I'm familiar with. + +3) ----- Wrap the coordinates to the unit cell + (without cutting the molecules in half) + +a) Start VMD +b) Load the trajectory in VMD (see above) +c) Menu Extensions->Tk Console +d) Try entering these commands: + + pbc wrap -compound res -all + pbc box + + ----- Optional ---- + Sometimes the solvent or membrane obscures the view of the solute. + It can help to shift the location of the periodic boundary box + To shift the box in the y direction (for example) do this: + + pbc wrap -compound res -all -shiftcenterrel {0.0 0.15 0.0} + pbc box -shiftcenterrel {0.0 0.15 0.0} + + Distances are measured in units of box-length fractions, not Angstroms. + + Alternately if you have a solute whose atoms are all of type 1, + then you can also try this to center the box around it: + + pbc wrap -sel type=1 -all -centersel type=2 -center com + +4) + You should check if your periodic boundary conditions are too small. + To do that: + select Graphics->Representations menu option + click on the "Periodic" tab, and + click on the "+x", "-x", "+y", "-y", "+z", "-z" checkboxes. + +5) Optional: If you like, change the atom types in the PSF file so + that VMD recognizes the atom types, use something like: + +sed -e 's/ 1 1 / C C /g' < system.psf > temp1.psf +sed -e 's/ 2 2 / H H /g' < temp1.psf > temp2.psf +sed -e 's/ 3 3 / P P /g' < temp2.psf > system.psf + +(If you do this, it might effect step 2 above.) diff --git a/tools/moltemplate/examples/coarse_grained_examples/membrane+protein/images/4HelixOrig+Lipid2005_t=1290ps_LR.jpg b/tools/moltemplate/examples/coarse_grained/membrane+protein/images/4HelixOrig+Lipid2005_t=1290ps_LR.jpg similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/membrane+protein/images/4HelixOrig+Lipid2005_t=1290ps_LR.jpg rename to tools/moltemplate/examples/coarse_grained/membrane+protein/images/4HelixOrig+Lipid2005_t=1290ps_LR.jpg diff --git a/tools/moltemplate/examples/coarse_grained_examples/membrane+protein/images/membrane+protein_t=0ps_LR.jpg b/tools/moltemplate/examples/coarse_grained/membrane+protein/images/membrane+protein_t=0ps_LR.jpg similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/membrane+protein/images/membrane+protein_t=0ps_LR.jpg rename to tools/moltemplate/examples/coarse_grained/membrane+protein/images/membrane+protein_t=0ps_LR.jpg diff --git a/tools/moltemplate/examples/coarse_grained_examples/membrane+protein/images/membrane+protein_t=0ps_no_pbc_LR.jpg b/tools/moltemplate/examples/coarse_grained/membrane+protein/images/membrane+protein_t=0ps_no_pbc_LR.jpg similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/membrane+protein/images/membrane+protein_t=0ps_no_pbc_LR.jpg rename to tools/moltemplate/examples/coarse_grained/membrane+protein/images/membrane+protein_t=0ps_no_pbc_LR.jpg diff --git a/tools/moltemplate/examples/coarse_grained_examples/membrane+protein/images/membrane+protein_t=0ps_top_LR.jpg b/tools/moltemplate/examples/coarse_grained/membrane+protein/images/membrane+protein_t=0ps_top_LR.jpg similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/membrane+protein/images/membrane+protein_t=0ps_top_LR.jpg rename to tools/moltemplate/examples/coarse_grained/membrane+protein/images/membrane+protein_t=0ps_top_LR.jpg diff --git a/tools/moltemplate/examples/coarse_grained_examples/membrane+protein/images/membrane+protein_t=5000ps_LR.jpg b/tools/moltemplate/examples/coarse_grained/membrane+protein/images/membrane+protein_t=5000ps_LR.jpg similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/membrane+protein/images/membrane+protein_t=5000ps_LR.jpg rename to tools/moltemplate/examples/coarse_grained/membrane+protein/images/membrane+protein_t=5000ps_LR.jpg diff --git a/tools/moltemplate/examples/coarse_grained_examples/membrane+protein/moltemplate_files/1beadProtSci2010.lt b/tools/moltemplate/examples/coarse_grained/membrane+protein/moltemplate_files/1beadProtSci2010.lt similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/membrane+protein/moltemplate_files/1beadProtSci2010.lt rename to tools/moltemplate/examples/coarse_grained/membrane+protein/moltemplate_files/1beadProtSci2010.lt diff --git a/tools/moltemplate/examples/coarse_grained_examples/membrane+protein/moltemplate_files/1beadProtSci2010_variations.lt b/tools/moltemplate/examples/coarse_grained/membrane+protein/moltemplate_files/1beadProtSci2010_variations.lt similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/membrane+protein/moltemplate_files/1beadProtSci2010_variations.lt rename to tools/moltemplate/examples/coarse_grained/membrane+protein/moltemplate_files/1beadProtSci2010_variations.lt diff --git a/tools/moltemplate/examples/coarse_grained_examples/membrane+protein/moltemplate_files/CGLipidBr2005.lt b/tools/moltemplate/examples/coarse_grained/membrane+protein/moltemplate_files/CGLipidBr2005.lt similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/membrane+protein/moltemplate_files/CGLipidBr2005.lt rename to tools/moltemplate/examples/coarse_grained/membrane+protein/moltemplate_files/CGLipidBr2005.lt diff --git a/tools/moltemplate/examples/coarse_grained_examples/membrane+protein/moltemplate_files/calc_table/calc_CGLipidTableINTvsINT.py b/tools/moltemplate/examples/coarse_grained/membrane+protein/moltemplate_files/calc_table/calc_CGLipidTableINTvsINT.py similarity index 95% rename from tools/moltemplate/examples/coarse_grained_examples/membrane+protein/moltemplate_files/calc_table/calc_CGLipidTableINTvsINT.py rename to tools/moltemplate/examples/coarse_grained/membrane+protein/moltemplate_files/calc_table/calc_CGLipidTableINTvsINT.py index 0d09e4d02e90bb16b4955cdcda45a6509e7da025..1158a9cf753c01cf9e925412f97dfdc55033697d 100755 --- a/tools/moltemplate/examples/coarse_grained_examples/membrane+protein/moltemplate_files/calc_table/calc_CGLipidTableINTvsINT.py +++ b/tools/moltemplate/examples/coarse_grained/membrane+protein/moltemplate_files/calc_table/calc_CGLipidTableINTvsINT.py @@ -1,7 +1,7 @@ #!/usr/bin/env python # Calculate a table of pairwise energies and forces between "INT" atoms -# in the lipid membrane model described in +# in the lipid membrane model described in # Brannigan et al, Phys Rev E, 72, 011915 (2005) # The energy of this interaction U(r) = eps*(0.4*(sigma/r)^12 - 3.0*(sigma/r)^2) # However it is truncated at rc2 = 22.5 (shifted upwards to maintain continuity) diff --git a/tools/moltemplate/examples/coarse_grained_examples/membrane+protein/moltemplate_files/calc_table/version_charmm_cutoff/calc_table.py b/tools/moltemplate/examples/coarse_grained/membrane+protein/moltemplate_files/calc_table/version_charmm_cutoff/calc_table.py similarity index 97% rename from tools/moltemplate/examples/coarse_grained_examples/membrane+protein/moltemplate_files/calc_table/version_charmm_cutoff/calc_table.py rename to tools/moltemplate/examples/coarse_grained/membrane+protein/moltemplate_files/calc_table/version_charmm_cutoff/calc_table.py index 32147e444a67c4ad5604e7bd134e11b438fed524..e7f0fe462e1ad095f5d918d9a3a35dfbf5c5a011 100755 --- a/tools/moltemplate/examples/coarse_grained_examples/membrane+protein/moltemplate_files/calc_table/version_charmm_cutoff/calc_table.py +++ b/tools/moltemplate/examples/coarse_grained/membrane+protein/moltemplate_files/calc_table/version_charmm_cutoff/calc_table.py @@ -1,7 +1,7 @@ #!/usr/bin/env python # Calculate a table of pairwise energies and forces between "INT" atoms -# in the lipid membrane model described in +# in the lipid membrane model described in # Brannigan et al, Phys Rev E, 72, 011915 (2005) # The energy of this interaction U(r) = eps*(0.4*(sigma/r)^12 - 3.0*(sigma/r)^2) # I realized later this is not what we want because although energy is conserved @@ -12,12 +12,12 @@ # Calculate and print a def S(r, rc1, rc2, derivative=False): - """ + """ Calculate the switching function S(r) which decays continuously between 1 and 0 in the range from rc1 to rc2 (rc2>rc1): S(r) = (rc2^2 - r^2)^2 * (rc2^2 + 2*r^2 - 3*rc1^2) / (rc2^2-rc1^2)^3 I'm using the same smoothing/switching cutoff function used by the CHARMM - force-fields. (I'm even using the same code to implement it, taken + force-fields. (I'm even using the same code to implement it, taken from lammps charmm/coul/charmm pair style, rewritten in python.) """ diff --git a/tools/moltemplate/examples/coarse_grained_examples/membrane+protein/moltemplate_files/system.lt b/tools/moltemplate/examples/coarse_grained/membrane+protein/moltemplate_files/system.lt similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/membrane+protein/moltemplate_files/system.lt rename to tools/moltemplate/examples/coarse_grained/membrane+protein/moltemplate_files/system.lt diff --git a/tools/moltemplate/examples/coarse_grained_examples/membrane+protein/moltemplate_files/table_int.dat b/tools/moltemplate/examples/coarse_grained/membrane+protein/moltemplate_files/table_int.dat similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/membrane+protein/moltemplate_files/table_int.dat rename to tools/moltemplate/examples/coarse_grained/membrane+protein/moltemplate_files/table_int.dat diff --git a/tools/moltemplate/examples/coarse_grained_examples/membrane+protein/run.in.min b/tools/moltemplate/examples/coarse_grained/membrane+protein/run.in.min similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/membrane+protein/run.in.min rename to tools/moltemplate/examples/coarse_grained/membrane+protein/run.in.min diff --git a/tools/moltemplate/examples/coarse_grained_examples/membrane+protein/run.in.npt b/tools/moltemplate/examples/coarse_grained/membrane+protein/run.in.npt similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/membrane+protein/run.in.npt rename to tools/moltemplate/examples/coarse_grained/membrane+protein/run.in.npt diff --git a/tools/moltemplate/examples/coarse_grained_examples/membrane+protein/run.in.nvt b/tools/moltemplate/examples/coarse_grained/membrane+protein/run.in.nvt similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/membrane+protein/run.in.nvt rename to tools/moltemplate/examples/coarse_grained/membrane+protein/run.in.nvt diff --git a/tools/moltemplate/examples/coarse_grained_examples/membrane_BranniganPRE2005/README.TXT b/tools/moltemplate/examples/coarse_grained/membrane_BranniganPRE2005/README.txt similarity index 85% rename from tools/moltemplate/examples/coarse_grained_examples/membrane_BranniganPRE2005/README.TXT rename to tools/moltemplate/examples/coarse_grained/membrane_BranniganPRE2005/README.txt index 1bf9d00b99fcd3a138e812cb45e81e39b1b741be..f8f542e77e7509d8007bd5896b740a6101b83dec 100644 --- a/tools/moltemplate/examples/coarse_grained_examples/membrane_BranniganPRE2005/README.TXT +++ b/tools/moltemplate/examples/coarse_grained/membrane_BranniganPRE2005/README.txt @@ -13,8 +13,8 @@ and: M.C. Watson, E.S. Penev, P.M. Welch, and F.L.H. Brown J. Chem. Phys. 135, 244701 (2011) -As in Watson(JCP 2011), rigid bond-length constraints -have been replaced by harmonic bonds. +As in Watson(JCP 2011), rigid bond-length constraints +have been replaced by harmonic bonds. A truncated version of this lipid (named "DLPC") has also been added. Unlike the original "DPPC" molecule model, "DLPC" has not been carefully @@ -23,7 +23,7 @@ parameterized to reproduce the correct behavior in a lipid bilayer. ------------- -Instructions on how to build LAMMPS input files and +Instructions on how to build LAMMPS input files and run a short simulation are provided in other README files. step 1) diff --git a/tools/moltemplate/examples/coarse_grained_examples/membrane_BranniganPRE2005/README_run.sh b/tools/moltemplate/examples/coarse_grained/membrane_BranniganPRE2005/README_run.sh similarity index 99% rename from tools/moltemplate/examples/coarse_grained_examples/membrane_BranniganPRE2005/README_run.sh rename to tools/moltemplate/examples/coarse_grained/membrane_BranniganPRE2005/README_run.sh index d7ea305695b91a1faea3aac937988289fb54af1f..29958f73a3aba4d39e214964f3bff155e4563011 100755 --- a/tools/moltemplate/examples/coarse_grained_examples/membrane_BranniganPRE2005/README_run.sh +++ b/tools/moltemplate/examples/coarse_grained/membrane_BranniganPRE2005/README_run.sh @@ -13,7 +13,7 @@ lmp_mpi -i run.in.npt # Run a simulation at constant pressure (tension) -#or +#or lmp_mpi -i run.in.nvt # Run a simulation at constant volume diff --git a/tools/moltemplate/examples/coarse_grained_examples/membrane_BranniganPRE2005/README_setup.sh b/tools/moltemplate/examples/coarse_grained/membrane_BranniganPRE2005/README_setup.sh similarity index 94% rename from tools/moltemplate/examples/coarse_grained_examples/membrane_BranniganPRE2005/README_setup.sh rename to tools/moltemplate/examples/coarse_grained/membrane_BranniganPRE2005/README_setup.sh index abf2fce64be9f5d657021b3c5d58dd6c0827b56b..ee7d9efdd7a8a9aefa08ed692fbb923a1c4440b4 100755 --- a/tools/moltemplate/examples/coarse_grained_examples/membrane_BranniganPRE2005/README_setup.sh +++ b/tools/moltemplate/examples/coarse_grained/membrane_BranniganPRE2005/README_setup.sh @@ -9,19 +9,19 @@ cd moltemplate_files moltemplate.sh system.lt - # This will generate various files with names ending in *.in* and *.data. - # These files are the input files directly read by LAMMPS. Move them to + # This will generate various files with names ending in *.in* and *.data. + # These files are the input files directly read by LAMMPS. Move them to # the parent directory (or wherever you plan to run the simulation). mv -f system.in* system.data ../ - # The "table_int.dat" file contains tabular data for the lipid INT-INT atom + # The "table_int.dat" file contains tabular data for the lipid INT-INT atom # 1/r^2 interaction. We need it too. (This slows down the simulation by x2, # so I might look for a way to get rid of it later.) cp -f table_int.dat ../ # Optional: - # The "./output_ttree/" directory is full of temporary files generated by + # The "./output_ttree/" directory is full of temporary files generated by # moltemplate. They can be useful for debugging, but are usually thrown away. rm -rf output_ttree/ diff --git a/tools/moltemplate/examples/coarse_grained/membrane_BranniganPRE2005/README_visualize.txt b/tools/moltemplate/examples/coarse_grained/membrane_BranniganPRE2005/README_visualize.txt new file mode 100644 index 0000000000000000000000000000000000000000..a3e3ed620ec8b32fb6da484368dc3fc299bad6de --- /dev/null +++ b/tools/moltemplate/examples/coarse_grained/membrane_BranniganPRE2005/README_visualize.txt @@ -0,0 +1,87 @@ + + ------- To view a lammps trajectory in VMD -------- + + +1) Build a PSF file for use in viewing with VMD. + +This step works with VMD 1.9 and topotools 1.2. +(Older versions, like VMD 1.8.6, don't support this.) + + +a) Start VMD +b) Menu Extensions->Tk Console +c) Enter: + +(I assume that the the DATA file is called "system.data") + + topo readlammpsdata system.data full + animate write psf system.psf + +2) + +Later, to Load a trajectory in VMD: + + Start VMD + Select menu: File->New Molecule + -Browse to select the PSF file you created above, and load it. + (Don't close the window yet.) + -Browse to select the trajectory file. + If necessary, for "file type" select: "LAMMPS Trajectory" + Load it. + + ---- A note on trajectory format: ----- +If the trajectory is a DUMP file, then make sure the it contains the +information you need for pbctools (see below. I've been using this +command in my LAMMPS scripts to create the trajectories: + + dump 1 all custom 5000 DUMP_FILE.lammpstrj id mol type x y z ix iy iz + +It's a good idea to use an atom_style which supports molecule-ID numbers +so that you can assign a molecule-ID number to each atom. (I think this +is needed to wrap atom coordinates without breaking molecules in half.) + +Of course, you don't have to save your trajectories in DUMP format, +(other formats like DCD work fine) I just mention dump files +because these are the files I'm familiar with. + +3) ----- Wrap the coordinates to the unit cell + (without cutting the molecules in half) + +a) Start VMD +b) Load the trajectory in VMD (see above) +c) Menu Extensions->Tk Console +d) Try entering these commands: + + pbc wrap -compound res -all + pbc box + + ----- Optional ---- + Sometimes the solvent or membrane obscures the view of the solute. + It can help to shift the location of the periodic boundary box + To shift the box in the y direction (for example) do this: + + pbc wrap -compound res -all -shiftcenterrel {0.0 0.15 0.0} + pbc box -shiftcenterrel {0.0 0.15 0.0} + + Distances are measured in units of box-length fractions, not Angstroms. + + Alternately if you have a solute whose atoms are all of type 1, + then you can also try this to center the box around it: + + pbc wrap -sel type=1 -all -centersel type=2 -center com + +4) + You should check if your periodic boundary conditions are too small. + To do that: + select Graphics->Representations menu option + click on the "Periodic" tab, and + click on the "+x", "-x", "+y", "-y", "+z", "-z" checkboxes. + +5) Optional: If you like, change the atom types in the PSF file so + that VMD recognizes the atom types, use something like: + +sed -e 's/ 1 1 / C C /g' < system.psf > temp1.psf +sed -e 's/ 2 2 / H H /g' < temp1.psf > temp2.psf +sed -e 's/ 3 3 / P P /g' < temp2.psf > system.psf + +(If you do this, it might effect step 2 above.) diff --git a/tools/moltemplate/examples/coarse_grained_examples/membrane_BranniganPRE2005/images/DLPC.jpg b/tools/moltemplate/examples/coarse_grained/membrane_BranniganPRE2005/images/DLPC.jpg similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/membrane_BranniganPRE2005/images/DLPC.jpg rename to tools/moltemplate/examples/coarse_grained/membrane_BranniganPRE2005/images/DLPC.jpg diff --git a/tools/moltemplate/examples/coarse_grained_examples/membrane_BranniganPRE2005/images/DPPC+DLPC_bilayer32x37_t=0ps_LR.jpg b/tools/moltemplate/examples/coarse_grained/membrane_BranniganPRE2005/images/DPPC+DLPC_bilayer32x37_t=0ps_LR.jpg similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/membrane_BranniganPRE2005/images/DPPC+DLPC_bilayer32x37_t=0ps_LR.jpg rename to tools/moltemplate/examples/coarse_grained/membrane_BranniganPRE2005/images/DPPC+DLPC_bilayer32x37_t=0ps_LR.jpg diff --git a/tools/moltemplate/examples/coarse_grained_examples/membrane_BranniganPRE2005/images/DPPC+DLPC_bilayer32x37_t=0ps_no_pbc_LR.jpg b/tools/moltemplate/examples/coarse_grained/membrane_BranniganPRE2005/images/DPPC+DLPC_bilayer32x37_t=0ps_no_pbc_LR.jpg similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/membrane_BranniganPRE2005/images/DPPC+DLPC_bilayer32x37_t=0ps_no_pbc_LR.jpg rename to tools/moltemplate/examples/coarse_grained/membrane_BranniganPRE2005/images/DPPC+DLPC_bilayer32x37_t=0ps_no_pbc_LR.jpg diff --git a/tools/moltemplate/examples/coarse_grained_examples/membrane_BranniganPRE2005/images/DPPC+DLPC_bilayer32x37_t=500ps_LR.jpg b/tools/moltemplate/examples/coarse_grained/membrane_BranniganPRE2005/images/DPPC+DLPC_bilayer32x37_t=500ps_LR.jpg similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/membrane_BranniganPRE2005/images/DPPC+DLPC_bilayer32x37_t=500ps_LR.jpg rename to tools/moltemplate/examples/coarse_grained/membrane_BranniganPRE2005/images/DPPC+DLPC_bilayer32x37_t=500ps_LR.jpg diff --git a/tools/moltemplate/examples/coarse_grained_examples/membrane_BranniganPRE2005/images/DPPC.jpg b/tools/moltemplate/examples/coarse_grained/membrane_BranniganPRE2005/images/DPPC.jpg similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/membrane_BranniganPRE2005/images/DPPC.jpg rename to tools/moltemplate/examples/coarse_grained/membrane_BranniganPRE2005/images/DPPC.jpg diff --git a/tools/moltemplate/examples/coarse_grained_examples/membrane_BranniganPRE2005/moltemplate_files/CGLipidBr2005Orig.lt b/tools/moltemplate/examples/coarse_grained/membrane_BranniganPRE2005/moltemplate_files/CGLipidBr2005Orig.lt similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/membrane_BranniganPRE2005/moltemplate_files/CGLipidBr2005Orig.lt rename to tools/moltemplate/examples/coarse_grained/membrane_BranniganPRE2005/moltemplate_files/CGLipidBr2005Orig.lt diff --git a/tools/moltemplate/examples/coarse_grained_examples/membrane_BranniganPRE2005/moltemplate_files/calc_table/calc_table.py b/tools/moltemplate/examples/coarse_grained/membrane_BranniganPRE2005/moltemplate_files/calc_table/calc_table.py similarity index 95% rename from tools/moltemplate/examples/coarse_grained_examples/membrane_BranniganPRE2005/moltemplate_files/calc_table/calc_table.py rename to tools/moltemplate/examples/coarse_grained/membrane_BranniganPRE2005/moltemplate_files/calc_table/calc_table.py index 0d09e4d02e90bb16b4955cdcda45a6509e7da025..1158a9cf753c01cf9e925412f97dfdc55033697d 100755 --- a/tools/moltemplate/examples/coarse_grained_examples/membrane_BranniganPRE2005/moltemplate_files/calc_table/calc_table.py +++ b/tools/moltemplate/examples/coarse_grained/membrane_BranniganPRE2005/moltemplate_files/calc_table/calc_table.py @@ -1,7 +1,7 @@ #!/usr/bin/env python # Calculate a table of pairwise energies and forces between "INT" atoms -# in the lipid membrane model described in +# in the lipid membrane model described in # Brannigan et al, Phys Rev E, 72, 011915 (2005) # The energy of this interaction U(r) = eps*(0.4*(sigma/r)^12 - 3.0*(sigma/r)^2) # However it is truncated at rc2 = 22.5 (shifted upwards to maintain continuity) diff --git a/tools/moltemplate/examples/coarse_grained_examples/membrane_BranniganPRE2005/moltemplate_files/calc_table/version_charmm_cutoff/calc_table.py b/tools/moltemplate/examples/coarse_grained/membrane_BranniganPRE2005/moltemplate_files/calc_table/version_charmm_cutoff/calc_table.py similarity index 97% rename from tools/moltemplate/examples/coarse_grained_examples/membrane_BranniganPRE2005/moltemplate_files/calc_table/version_charmm_cutoff/calc_table.py rename to tools/moltemplate/examples/coarse_grained/membrane_BranniganPRE2005/moltemplate_files/calc_table/version_charmm_cutoff/calc_table.py index 32147e444a67c4ad5604e7bd134e11b438fed524..e7f0fe462e1ad095f5d918d9a3a35dfbf5c5a011 100755 --- a/tools/moltemplate/examples/coarse_grained_examples/membrane_BranniganPRE2005/moltemplate_files/calc_table/version_charmm_cutoff/calc_table.py +++ b/tools/moltemplate/examples/coarse_grained/membrane_BranniganPRE2005/moltemplate_files/calc_table/version_charmm_cutoff/calc_table.py @@ -1,7 +1,7 @@ #!/usr/bin/env python # Calculate a table of pairwise energies and forces between "INT" atoms -# in the lipid membrane model described in +# in the lipid membrane model described in # Brannigan et al, Phys Rev E, 72, 011915 (2005) # The energy of this interaction U(r) = eps*(0.4*(sigma/r)^12 - 3.0*(sigma/r)^2) # I realized later this is not what we want because although energy is conserved @@ -12,12 +12,12 @@ # Calculate and print a def S(r, rc1, rc2, derivative=False): - """ + """ Calculate the switching function S(r) which decays continuously between 1 and 0 in the range from rc1 to rc2 (rc2>rc1): S(r) = (rc2^2 - r^2)^2 * (rc2^2 + 2*r^2 - 3*rc1^2) / (rc2^2-rc1^2)^3 I'm using the same smoothing/switching cutoff function used by the CHARMM - force-fields. (I'm even using the same code to implement it, taken + force-fields. (I'm even using the same code to implement it, taken from lammps charmm/coul/charmm pair style, rewritten in python.) """ diff --git a/tools/moltemplate/examples/coarse_grained_examples/membrane_BranniganPRE2005/moltemplate_files/system.lt b/tools/moltemplate/examples/coarse_grained/membrane_BranniganPRE2005/moltemplate_files/system.lt similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/membrane_BranniganPRE2005/moltemplate_files/system.lt rename to tools/moltemplate/examples/coarse_grained/membrane_BranniganPRE2005/moltemplate_files/system.lt diff --git a/tools/moltemplate/examples/coarse_grained_examples/membrane_BranniganPRE2005/moltemplate_files/table_int.dat b/tools/moltemplate/examples/coarse_grained/membrane_BranniganPRE2005/moltemplate_files/table_int.dat similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/membrane_BranniganPRE2005/moltemplate_files/table_int.dat rename to tools/moltemplate/examples/coarse_grained/membrane_BranniganPRE2005/moltemplate_files/table_int.dat diff --git a/tools/moltemplate/examples/coarse_grained_examples/membrane_BranniganPRE2005/run.in.min b/tools/moltemplate/examples/coarse_grained/membrane_BranniganPRE2005/run.in.min similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/membrane_BranniganPRE2005/run.in.min rename to tools/moltemplate/examples/coarse_grained/membrane_BranniganPRE2005/run.in.min diff --git a/tools/moltemplate/examples/coarse_grained_examples/membrane_BranniganPRE2005/run.in.npt b/tools/moltemplate/examples/coarse_grained/membrane_BranniganPRE2005/run.in.npt similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/membrane_BranniganPRE2005/run.in.npt rename to tools/moltemplate/examples/coarse_grained/membrane_BranniganPRE2005/run.in.npt diff --git a/tools/moltemplate/examples/coarse_grained_examples/membrane_BranniganPRE2005/run.in.nvt b/tools/moltemplate/examples/coarse_grained/membrane_BranniganPRE2005/run.in.nvt similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/membrane_BranniganPRE2005/run.in.nvt rename to tools/moltemplate/examples/coarse_grained/membrane_BranniganPRE2005/run.in.nvt diff --git a/tools/moltemplate/examples/coarse_grained/membrane_Cooke_Kremer_DesernoPRE2005/README.txt b/tools/moltemplate/examples/coarse_grained/membrane_Cooke_Kremer_DesernoPRE2005/README.txt new file mode 100644 index 0000000000000000000000000000000000000000..c0fc605b6f14627fe38a042774731b50b0309561 --- /dev/null +++ b/tools/moltemplate/examples/coarse_grained/membrane_Cooke_Kremer_DesernoPRE2005/README.txt @@ -0,0 +1,16 @@ +----- Description -------- + +This example contains an implementation of the DPPC lipid bilayer described in: +"Tunable generic model for fluid bilayer membranes" +Cooke IR, Kremer K, Deserno M, Physical Review E, 2005 + +------------- + +Instructions on how to build LAMMPS input files and +run a short simulation are provided in other README files. + +step 1) +README_setup.sh + +step2) +README_run.sh diff --git a/tools/moltemplate/examples/coarse_grained/membrane_Cooke_Kremer_DesernoPRE2005/README_run.sh b/tools/moltemplate/examples/coarse_grained/membrane_Cooke_Kremer_DesernoPRE2005/README_run.sh new file mode 100755 index 0000000000000000000000000000000000000000..940205ff474606ff048c8e0caffc4e59f2b18497 --- /dev/null +++ b/tools/moltemplate/examples/coarse_grained/membrane_Cooke_Kremer_DesernoPRE2005/README_run.sh @@ -0,0 +1,27 @@ +# --- Running LAMMPS --- +# -- Prerequisites: -- +# The "run.in.nvt" file is a LAMMPS input script containing +# references to the input scripts and data files +# you hopefully have created earlier with moltemplate.sh: +# system.in.init, system.in.settings, system.data, and table_int.dat +# If not, carry out the instructions in "README_setup.sh". +# +# -- Instructions: -- +# If "lmp_mpi" is the name of the command you use to invoke lammps, +# then you would run lammps on these files this way: + + +lmp_mpi -i run.in.npt # Run a simulation at constant pressure (tension) + +# and, after that: + +lmp_mpi -i run.in.nvt # Run a simulation at constant volume + + + + +# If you have compiled the MPI version of lammps, you can run lammps in parallel +#mpiexec -np 4 lmp_mpi -i run.in.npt +#or +#mpiexec -np 4 lmp_mpi -i run.in.nvt +# (assuming you have 4 processors available) diff --git a/tools/moltemplate/examples/coarse_grained/membrane_Cooke_Kremer_DesernoPRE2005/README_setup.sh b/tools/moltemplate/examples/coarse_grained/membrane_Cooke_Kremer_DesernoPRE2005/README_setup.sh new file mode 100755 index 0000000000000000000000000000000000000000..0d1c3fd00e4a24724d76be3eeeb499a0e88286b1 --- /dev/null +++ b/tools/moltemplate/examples/coarse_grained/membrane_Cooke_Kremer_DesernoPRE2005/README_setup.sh @@ -0,0 +1,28 @@ +# Use these commands to generate the LAMMPS input script and data file +# (and other auxilliary files): + + +# Create LAMMPS input files this way: +cd moltemplate_files + + # run moltemplate + + moltemplate.sh system.lt + + # This will generate various files with names ending in *.in* and *.data. + # These files are the input files directly read by LAMMPS. Move them to + # the parent directory (or wherever you plan to run the simulation). + + mv -f system.in* system.data ../ + + # The "table_int.dat" file contains tabular data for the lipid INT-INT atom + # 1/r^2 interaction. We need it too. (This slows down the simulation by x2, + # so I might look for a way to get rid of it later.) + cp -f tabulated_potential.dat ../ + + # Optional: + # The "./output_ttree/" directory is full of temporary files generated by + # moltemplate. They can be useful for debugging, but are usually thrown away. + rm -rf output_ttree/ + +cd ../ diff --git a/tools/moltemplate/examples/coarse_grained/membrane_Cooke_Kremer_DesernoPRE2005/README_visualize.txt b/tools/moltemplate/examples/coarse_grained/membrane_Cooke_Kremer_DesernoPRE2005/README_visualize.txt new file mode 100644 index 0000000000000000000000000000000000000000..f70bc3b75308523ce1887d29e8e57836b55abb97 --- /dev/null +++ b/tools/moltemplate/examples/coarse_grained/membrane_Cooke_Kremer_DesernoPRE2005/README_visualize.txt @@ -0,0 +1,87 @@ + + ------- To view a lammps trajectory in VMD -------- + + +1) Build a PSF file for use in viewing with VMD. + +This step works with VMD 1.9 and topotools 1.2. +(Older versions, like VMD 1.8.6, don't support this.) + + +a) Start VMD +b) Menu Extensions->Tk Console +c) Enter: + +(I assume that the the DATA file is called "system.data") + + topo readlammpsdata system.data full + animate write psf system.psf + +2) + +Later, to Load a trajectory in VMD: + + Start VMD + Select menu: File->New Molecule + -Browse to select the PSF file you created above, and load it. + (Don't close the window yet.) + -Browse to select the trajectory file. + If necessary, for "file type" select: "LAMMPS Trajectory" + Load it. + + ---- A note on trajectory format: ----- +If the trajectory is a DUMP file, then make sure the it contains the +information you need for pbctools (see below. I've been using this +command in my LAMMPS scripts to create the trajectories: + + dump 1 all custom 5000 DUMP_FILE.lammpstrj id mol type x y z ix iy iz + +It's a good idea to use an atom_style which supports molecule-ID numbers +so that you can assign a molecule-ID number to each atom. (I think this +is needed to wrap atom coordinates without breaking molecules in half.) + +Of course, you don't have to save your trajectories in DUMP format, +(other formats like DCD work fine) I just mention dump files +because these are the files I'm familiar with. + +3) ----- Wrap the coordinates to the unit cell + (without cutting the molecules in half) + +a) Start VMD +b) Load the trajectory in VMD (see above) +c) Menu Extensions->Tk Console +d) Try entering these commands: + + pbc wrap -compound res -all + pbc box + + ----- Optional ---- + Sometimes the solvent or membrane obscures the view of the solute. + It can help to shift the location of the periodic boundary box + To shift the box in the y direction (for example) do this: + + pbc wrap -compound res -all -shiftcenterrel {0.0 0.0 0.0} + pbc box -shiftcenterrel {0.0 0.0 0.0} -width 0.5 + + Distances are measured in units of box-length fractions, not Angstroms. + + Alternately if you have a solute whose atoms are all of type 1, + then you can also try this to center the box around it: + + pbc wrap -sel type=1 -all -centersel type=2 -center com + +4) + You should check if your periodic boundary conditions are too small. + To do that: + select Graphics->Representations menu option + click on the "Periodic" tab, and + click on the "+x", "-x", "+y", "-y", "+z", "-z" checkboxes. + +5) Optional: If you like, change the atom types in the PSF file so + that VMD recognizes the atom types, use something like: + +sed -e 's/ 1 1 / C C /g' < system.psf > temp1.psf +sed -e 's/ 2 2 / H H /g' < temp1.psf > temp2.psf +sed -e 's/ 3 3 / P P /g' < temp2.psf > system.psf + +(If you do this, it might effect step 2 above.) diff --git a/tools/moltemplate/examples/coarse_grained/membrane_Cooke_Kremer_DesernoPRE2005/images/CDlipid.jpg b/tools/moltemplate/examples/coarse_grained/membrane_Cooke_Kremer_DesernoPRE2005/images/CDlipid.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f3445b18e6948ce900404faf9e3c9ecd711e2c5b Binary files /dev/null and b/tools/moltemplate/examples/coarse_grained/membrane_Cooke_Kremer_DesernoPRE2005/images/CDlipid.jpg differ diff --git a/tools/moltemplate/examples/coarse_grained/membrane_Cooke_Kremer_DesernoPRE2005/images/CDlipid_bilayer_t=0_nopbc_occ.jpg b/tools/moltemplate/examples/coarse_grained/membrane_Cooke_Kremer_DesernoPRE2005/images/CDlipid_bilayer_t=0_nopbc_occ.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e4f7ae0c9fef7cf8d30a2e334d5e4810dd0ba55c Binary files /dev/null and b/tools/moltemplate/examples/coarse_grained/membrane_Cooke_Kremer_DesernoPRE2005/images/CDlipid_bilayer_t=0_nopbc_occ.jpg differ diff --git a/tools/moltemplate/examples/coarse_grained/membrane_Cooke_Kremer_DesernoPRE2005/images/CDlipid_bilayer_t=0_occ.jpg b/tools/moltemplate/examples/coarse_grained/membrane_Cooke_Kremer_DesernoPRE2005/images/CDlipid_bilayer_t=0_occ.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8e125da5c102edc6414a6bf5cc92e70e6d86ce86 Binary files /dev/null and b/tools/moltemplate/examples/coarse_grained/membrane_Cooke_Kremer_DesernoPRE2005/images/CDlipid_bilayer_t=0_occ.jpg differ diff --git a/tools/moltemplate/examples/coarse_grained/membrane_Cooke_Kremer_DesernoPRE2005/images/CDlipid_bilayer_t=600000steps_npt_occ.jpg b/tools/moltemplate/examples/coarse_grained/membrane_Cooke_Kremer_DesernoPRE2005/images/CDlipid_bilayer_t=600000steps_npt_occ.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0e0d09531838537b2cec3d8a48538b34727780ee Binary files /dev/null and b/tools/moltemplate/examples/coarse_grained/membrane_Cooke_Kremer_DesernoPRE2005/images/CDlipid_bilayer_t=600000steps_npt_occ.jpg differ diff --git a/tools/moltemplate/examples/coarse_grained/membrane_Cooke_Kremer_DesernoPRE2005/moltemplate_files/calc_table/gen_potential-cooke.py b/tools/moltemplate/examples/coarse_grained/membrane_Cooke_Kremer_DesernoPRE2005/moltemplate_files/calc_table/gen_potential-cooke.py new file mode 100755 index 0000000000000000000000000000000000000000..7240296584d1efda2c0937c92658df11b17c5134 --- /dev/null +++ b/tools/moltemplate/examples/coarse_grained/membrane_Cooke_Kremer_DesernoPRE2005/moltemplate_files/calc_table/gen_potential-cooke.py @@ -0,0 +1,144 @@ +#!/usr/bin/python2.7 + +import os,sys +from fractions import Fraction +from numpy import * + +### PARAMETERS ### +sigma = 1.00 +epsilon = 1.00 + +b_hh = 0.95 * sigma +b_ht = 0.95 * sigma +b_tt = 1.00 * sigma + +r_init = 0.000001 +r_max = sigma * 3. +r_space = 0.01 +################## + +### INPUTS ### +if len(sys.argv) == 2: + w_cut = float(sys.argv[1]) +else: + w_cut = 1.6 +# 1.6 seems to be 'good' for vesicles, bilayers 1.4 +############## + +def WCA_energy(b, r): +# Calculate WCA energy + E_pot = 0 + val1 = math.pow((b / r), 12) + val2 = -math.pow((b / r), 6) + E_pot = 4 * epsilon * (val1 + val2 + 0.25) + return E_pot + +def WCA_forces(b, r): +# Calculate WCA forces + Force = 0 + val1 = 24 * math.pow(b, 6) / math.pow(r, 7) + val2 = -48 * math.pow(b, 12) / math.pow(r, 13) + Force = -(val1 + val2) + return Force + +def Tail_energy(b, r, r_cut): +# Calculate extra Tail energy + E_pot = 0 + if (r < r_cut): + E_pot = -1 * epsilon + else: + val1 = math.cos((math.pi * (r - r_cut)) / (2 * w_cut)) + E_pot = -1 * epsilon * math.pow(val1, 2) + return E_pot + +def Tail_forces(b, r, r_cut): + Force = 0 + if (r < r_cut): + Force = 0; + else: + val1 = math.sin((math.pi * (r - r_cut)) / w_cut) + Force = -math.pi * val1 / (2 * w_cut) + return Force + + +############## +ofile = open('tabulated_potential.dat', 'w') +tot_potential_hh = zeros((int(r_max / r_space) + 1, 4)) +tot_potential_ht = zeros((int(r_max / r_space) + 1, 4)) +tot_potential_tt = zeros((int(r_max / r_space) + 1, 4)) + +# Setup up formatting & distances in all arrays +for i in range(int(r_max / r_space)+1): + tot_potential_hh[:,0][i] = i+1 + tot_potential_ht[:,0][i] = i+1 + tot_potential_tt[:,0][i] = i+1 +for i in range(1, int(r_max / r_space)+1): + tot_potential_hh[:,1][i] = tot_potential_hh[:,1][i-1] + r_space + tot_potential_ht[:,1][i] = tot_potential_ht[:,1][i-1] + r_space + tot_potential_tt[:,1][i] = tot_potential_tt[:,1][i-1] + r_space +tot_potential_hh[:,1][0] = r_init +tot_potential_ht[:,1][0] = r_init +tot_potential_tt[:,1][0] = r_init + + + +ofile.write("# Tabulated potential for Cooke 3-bead lipid model, Wc = %f\n\n" % w_cut) +num = len(tot_potential_hh[:,0]) + +### Calcaulte first potential, H-H +ofile.write("HEAD_HEAD\n") +r_cut = 2**Fraction('1/6') * b_hh +rmax = int(r_cut / r_space) +ofile.write("N %d R %f %f\n\n" % (num, r_init, r_max)) +ofile.write("1 %f %f %f\n" % (tot_potential_hh[:,1][0], tot_potential_hh[:,2][0], tot_potential_hh[:,3][0])) + +for i in range(1, rmax+1): + tot_potential_hh[:,2][i] = WCA_energy(b_hh, tot_potential_hh[:,1][i]) + tot_potential_hh[:,3][i] = WCA_forces(b_hh, tot_potential_hh[:,1][i]) + +for i in range(1, int(r_max / r_space)+1): + ofile.write("%d %f %f %f\n" % (i+1, tot_potential_hh[:,1][i], tot_potential_hh[:,2][i], tot_potential_hh[:,3][i])) +ofile.write("\n") + + + +### Calcaulte second potential, H-T +ofile.write("HEAD_TAIL\n") +r_cut = 2**Fraction('1/6') * b_ht +rmax = int(r_cut / r_space) +ofile.write("N %d R %f %f\n\n" % (num, r_init, r_max)) +ofile.write("1 %f %f %f\n" % (tot_potential_ht[:,1][0], tot_potential_ht[:,2][0], tot_potential_ht[:,3][0])) + +for i in range(1, rmax+1): + tot_potential_ht[:,2][i] = WCA_energy(b_ht, tot_potential_ht[:,1][i]) + tot_potential_ht[:,3][i] = WCA_forces(b_ht, tot_potential_ht[:,1][i]) + +for i in range(1, int(r_max / r_space)+1): + ofile.write("%d %f %f %f\n" % (i+1, tot_potential_ht[:,1][i], tot_potential_ht[:,2][i], tot_potential_ht[:,3][i])) +ofile.write("\n") + + + +### Calcaulte third potential, T-T +# Also include extra tail-tail attraction term +ofile.write("TAIL_TAIL\n") +r_cut = 2**Fraction('1/6') * b_tt +rmax = int(r_cut / r_space) +ofile.write("N %d R %f %f\n\n" % (num, r_init, r_max)) +ofile.write("1 %f %f %f\n" % (tot_potential_tt[:,1][0], tot_potential_tt[:,2][0], tot_potential_tt[:,3][0])) + +for i in range(1, rmax+1): + tot_potential_tt[:,2][i] = WCA_energy(b_tt, tot_potential_tt[:,1][i]) + tot_potential_tt[:,3][i] = WCA_forces(b_tt, tot_potential_tt[:,1][i]) + +max2 = int( (r_cut + w_cut) / r_space) +for i in range(1, max2+1): + tot_potential_tt[:,2][i] = tot_potential_tt[:,2][i] + Tail_energy(b_tt, tot_potential_tt[:,1][i], r_cut) + tot_potential_tt[:,3][i] = tot_potential_tt[:,3][i] + Tail_forces(b_tt, tot_potential_tt[:,1][i], r_cut) + +for i in range(1, int(r_max / r_space)+1): + ofile.write("%d %f %f %f\n" % (i+1, tot_potential_tt[:,1][i], tot_potential_tt[:,2][i], tot_potential_tt[:,3][i])) +ofile.write("\n") + + +sys.exit() diff --git a/tools/moltemplate/examples/coarse_grained/membrane_Cooke_Kremer_DesernoPRE2005/moltemplate_files/cooke_deserno_lipid.lt b/tools/moltemplate/examples/coarse_grained/membrane_Cooke_Kremer_DesernoPRE2005/moltemplate_files/cooke_deserno_lipid.lt new file mode 100644 index 0000000000000000000000000000000000000000..64ea1785f3273ae0294a57838570f3c5f49dc33d --- /dev/null +++ b/tools/moltemplate/examples/coarse_grained/membrane_Cooke_Kremer_DesernoPRE2005/moltemplate_files/cooke_deserno_lipid.lt @@ -0,0 +1,46 @@ +# CDlipid is a lipid model from: +# "Tunable generic model for fluid bilayer membranes" +# Cooke IR, Kremer K, Deserno M, Physical Review E, 2005 +# (Author: David Stelter, BU) + +CDlipid { + # 3-bead model of COOKE, KREMER, DESERNO + write_once("In Init") { + units lj + atom_style full + + bond_style hybrid fene + angle_style hybrid harmonic + pair_style hybrid table linear 600 + pair_modify shift yes + special_bonds lj 0.0 1.0 1.0 + + neigh_modify every 1 delay 1 + neighbor 0.3 bin + } + write_once("In Settings") { + pair_coeff @atom:H @atom:H table tabulated_potential.dat HEAD_HEAD + pair_coeff @atom:H @atom:T table tabulated_potential.dat HEAD_TAIL + # (Note: The "HEAD_TAIL" table is the same as the "HEAD_HEAD" table.) + pair_coeff @atom:T @atom:T table tabulated_potential.dat TAIL_TAIL_Wc_1.5 + bond_coeff @bond:B fene 30.0 1.5 1.0 1.0 + angle_coeff @angle:An harmonic 10.0 180 + } + write("Data Atoms") { + $atom:1 $mol:. @atom:H 0.0 0.00 0.00 2.46 + $atom:2 $mol:. @atom:T 0.0 0.00 0.00 1.51 + $atom:3 $mol:. @atom:T 0.0 0.00 0.00 0.56 + } + write("Data Bonds") { + $bond:b1 @bond:B $atom:1 $atom:2 + $bond:b2 @bond:B $atom:2 $atom:3 + } + write("Data Angles") { + $angle:a1 @angle:An $atom:1 $atom:2 $atom:3 + } + write_once("Data Masses") { + @atom:H 1.0 ## Head Bead + @atom:T 1.0 ## Tail Bead + } +} # CDlipid + diff --git a/tools/moltemplate/examples/coarse_grained/membrane_Cooke_Kremer_DesernoPRE2005/moltemplate_files/system.lt b/tools/moltemplate/examples/coarse_grained/membrane_Cooke_Kremer_DesernoPRE2005/moltemplate_files/system.lt new file mode 100644 index 0000000000000000000000000000000000000000..59e08aeb2bb3df8252f8c3a17b9ae5d50281cca8 --- /dev/null +++ b/tools/moltemplate/examples/coarse_grained/membrane_Cooke_Kremer_DesernoPRE2005/moltemplate_files/system.lt @@ -0,0 +1,74 @@ +# Description: + +# This constructs a bilayer constructed from coarse-grained lipids +# (implicit solvent). "Tunable generic model for fluid bilayer membranes" +# Cooke IR, Kremer K, Deserno M, Physical Review E, 2005 + + + +import "cooke_deserno_lipid.lt" + +lipids = new CDlipid [32].move(1.178585, 0, 0) + [37].move(0.589293, 1.02068, 0) + [2].rot(180, 1, 0, 0) + + +# Move the lipds up to the center of the box +lipids[*][*][*].move(0,0,10.0) + + +# Although this patch of lipids is not square or rectangular, (it looks +# like a parallelogram), this is no longer the case after rectangular +# periodic boundary conditions are applied. We apply them below: +# width: 37.71472 = 32 * 1.05 * 2^(1/6) +# height: 37.76516 = 37 * 1.05 * 2^(1/6) * sqrt(3)/2 + +write_once("Data Boundary") { + 0 37.71472 xlo xhi + 0 37.76516 ylo yhi + 0 20.0 zlo zhi +} + + + + + + + + +# -------------- File ends here. Only comments below.------------------- + +# ------------------------------------ +# ------------- COMMENTS: ------------ +# ------------------------------------ +# +# A note on geometry: +# We want to create a bilayer arranged in a hexagonal lattice consisting of +# 32 rows (each row is aligned with the x-axis) +# 37 columns (aligned at a 60 degree angle from the x axis) +# When wrapped onto a rectangular box, the dimensions of the system are: +# 32 * 2^(1/6) σ units in the X direction +# 37 * 2^(1/6) * sqrt(3)/2 σ units in the Y direction +# ------------------------------------ +# +# Below I show simple ways to create a lipid bilayer: +# +# 1) If you just want to make lipid bilayer out of lipids, +# without specifying the location of each lipid, you could use this syntax: +# lipids = new CDlipid [32][37][2] # 3-D array +# Later you can load in the coordinates of the lipds from a PDB file. +# Alternately you could also use a 1-dimensional array: +# lipids = new CDlipid [2368] # 1-D array. Note: 2368 = 32x37x2 +# It does not matter as long as the number of lipids is correct. +# Multidimensional arrays are only useful if you plan to apply independent +# coordinate transformations to each row and column and monolayer as above. +# +# 2) If you want to create a bilayer from a mixture of two lipids (named +# "lipidA", "lipidB"), you must replace "CDlipid" in the command above with +# random([lipidA,lipidB],[710,1658],12345) +# Here "710,1658" are the number of each molecule type (must sum to 32*37*2), +# and "12345" is an optional random seed: +# lipids = new random([lipidA,lipidB], [710,1658], 12345) +# [32].move(1.178585, 0, 0) +# [37].move(0.589293, 1.02068, 0) +# [2].rot(180, 1, 0, 0) diff --git a/tools/moltemplate/examples/coarse_grained/membrane_Cooke_Kremer_DesernoPRE2005/moltemplate_files/tabulated_potential.dat b/tools/moltemplate/examples/coarse_grained/membrane_Cooke_Kremer_DesernoPRE2005/moltemplate_files/tabulated_potential.dat new file mode 100644 index 0000000000000000000000000000000000000000..cd8dd4db7d6a0ce874229eb3787d6fe4827bf5ac --- /dev/null +++ b/tools/moltemplate/examples/coarse_grained/membrane_Cooke_Kremer_DesernoPRE2005/moltemplate_files/tabulated_potential.dat @@ -0,0 +1,4589 @@ +# Tabulated potential for Cooke 3-bead lipid model, with various values of Wc + +HEAD_HEAD +N 301 R 0.000001 3.000000 + +1 0.000001 0.000000 0.000000 +2 0.010000 2161440350647607518822400.000000 2593728420778890895481110528.000000 +3 0.020000 527695398062100709376.000000 316617238851043104653312.000000 +4 0.030000 4067131343850062336.000000 1626852538346708926464.000000 +5 0.040000 128831883585858496.000000 38649565183436988416.000000 +6 0.050000 8853259488081101.000000 2124782299721489152.000000 +7 0.060000 992951926207085.500000 198590391543644928.000000 +8 0.070000 156158887055179.062500 26770097065977256.000000 +9 0.080000 31453085537227.195312 4717963671829832.000000 +10 0.090000 7653019634383.599609 1020402986772367.875000 +11 0.100000 2161437410283.985352 259372665656012.125000 +12 0.110000 688699846600.110840 75130982888675.812500 +13 0.120000 242418934523.303925 24241942688387.753906 +14 0.130000 92772695554.949768 8563661551482.013672 +15 0.140000 38124343876.568542 3267817639811.164551 +16 0.150000 16658711862.666004 1332707274503.870850 +17 0.160000 7678803441.103481 575916830241.413208 +18 0.170000 3709726886.129636 261867373669.903687 +19 0.180000 1868327898.144181 124558074820.194244 +20 0.190000 976500000.999998 61675657894.736687 +21 0.200000 527649455.864879 31660345589.187614 +22 0.210000 293806260.511241 16789908645.082933 +23 0.220000 168114083.438129 9170566326.526011 +24 0.230000 98610181.495127 5145397135.359623 +25 0.240000 59169165.297856 2958842872.372237 +26 0.250000 36250908.888444 1740332628.538169 +27 0.260000 22640215.252607 1045152619.667436 +28 0.270000 14392928.420337 639854320.962319 +29 0.280000 9301695.744822 398774811.984595 +30 0.290000 6104017.717125 252682276.475626 +31 0.300000 4063098.921872 162604585.395105 +32 0.310000 2740806.847436 106159834.284035 +33 0.320000 1872013.228410 70251804.140783 +34 0.330000 1293637.623279 47082727.461649 +35 0.340000 903822.389327 31933167.708250 +36 0.350000 638028.370186 21902644.696022 +37 0.360000 454806.060338 15182681.781435 +38 0.370000 327194.054124 10630250.689058 +39 0.380000 237443.016602 7513588.353207 +40 0.390000 173734.710287 5358508.469115 +41 0.400000 128115.021129 3854188.581495 +42 0.410000 95175.694590 2794659.517251 +43 0.420000 71203.733281 2042016.387369 +44 0.430000 53626.450912 1503014.644703 +45 0.440000 40645.593596 1114014.575978 +46 0.450000 30993.690585 831193.088925 +47 0.460000 23770.248288 624115.416996 +48 0.470000 18330.617960 471472.559289 +49 0.480000 14209.942248 358228.692769 +50 0.490000 11070.674537 273695.309628 +51 0.500000 8666.076152 210220.029942 +52 0.510000 6814.633252 162286.683398 +53 0.520000 5381.995700 125892.872001 +54 0.530000 4268.136868 98116.253151 +55 0.540000 3398.163685 76810.165684 +56 0.550000 2715.696677 60388.560510 +57 0.560000 2178.071621 47673.030759 +58 0.570000 1752.840750 37783.319810 +59 0.580000 1415.206838 30058.470465 +60 0.590000 1146.130977 23999.705760 +61 0.600000 930.929708 19228.816970 +62 0.610000 758.229563 15457.682582 +63 0.620000 619.184089 12465.822566 +64 0.630000 506.884625 10083.785213 +65 0.640000 415.914818 8180.790148 +66 0.650000 342.012307 6655.493196 +67 0.660000 281.810669 5429.052488 +68 0.670000 232.641766 4439.899069 +69 0.680000 192.383722 3639.775908 +70 0.690000 159.343555 2990.725059 +71 0.700000 132.166200 2462.786676 +72 0.710000 109.763738 2032.234764 +73 0.720000 91.260139 1680.219270 +74 0.730000 75.947974 1391.717054 +75 0.740000 63.254382 1154.718549 +76 0.750000 52.714228 959.594954 +77 0.760000 43.948872 798.604206 +78 0.770000 36.649308 665.504021 +79 0.780000 30.562750 555.247832 +80 0.790000 25.481924 463.745109 +81 0.800000 21.236485 387.671861 +82 0.810000 17.686136 324.320364 +83 0.820000 14.715086 271.479665 +84 0.830000 12.227574 227.340274 +85 0.840000 10.144253 190.417955 +86 0.850000 8.399249 159.492629 +87 0.860000 6.937780 133.559247 +88 0.870000 5.714205 111.788215 +89 0.880000 4.690441 93.493410 +90 0.890000 3.834655 78.106288 +91 0.900000 3.120205 65.154867 +92 0.910000 2.524755 54.246625 +93 0.920000 2.029558 45.054564 +94 0.930000 1.618857 37.305814 +95 0.940000 1.279395 30.772315 +96 0.950000 1.000000 25.263158 +97 0.960000 0.771253 20.618297 +98 0.970000 0.585203 16.703371 +99 0.980000 0.435131 13.405424 +100 0.990000 0.315357 10.629373 +101 1.000000 0.221073 8.295079 +102 1.010000 0.148209 6.334918 +103 1.020000 0.093319 4.691763 +104 1.030000 0.053479 3.317301 +105 1.040000 0.026214 2.170635 +106 1.050000 0.009423 1.217110 +107 1.060000 0.001327 0.427337 +108 1.070000 0.000000 0.000000 +109 1.080000 0.000000 0.000000 +110 1.090000 0.000000 0.000000 +111 1.100000 0.000000 0.000000 +112 1.110000 0.000000 0.000000 +113 1.120000 0.000000 0.000000 +114 1.130000 0.000000 0.000000 +115 1.140000 0.000000 0.000000 +116 1.150000 0.000000 0.000000 +117 1.160000 0.000000 0.000000 +118 1.170000 0.000000 0.000000 +119 1.180000 0.000000 0.000000 +120 1.190000 0.000000 0.000000 +121 1.200000 0.000000 0.000000 +122 1.210000 0.000000 0.000000 +123 1.220000 0.000000 0.000000 +124 1.230000 0.000000 0.000000 +125 1.240000 0.000000 0.000000 +126 1.250000 0.000000 0.000000 +127 1.260000 0.000000 0.000000 +128 1.270000 0.000000 0.000000 +129 1.280000 0.000000 0.000000 +130 1.290000 0.000000 0.000000 +131 1.300000 0.000000 0.000000 +132 1.310000 0.000000 0.000000 +133 1.320000 0.000000 0.000000 +134 1.330000 0.000000 0.000000 +135 1.340000 0.000000 0.000000 +136 1.350000 0.000000 0.000000 +137 1.360000 0.000000 0.000000 +138 1.370000 0.000000 0.000000 +139 1.380000 0.000000 0.000000 +140 1.390000 0.000000 0.000000 +141 1.400000 0.000000 0.000000 +142 1.410000 0.000000 0.000000 +143 1.420000 0.000000 0.000000 +144 1.430000 0.000000 0.000000 +145 1.440000 0.000000 0.000000 +146 1.450000 0.000000 0.000000 +147 1.460000 0.000000 0.000000 +148 1.470000 0.000000 0.000000 +149 1.480000 0.000000 0.000000 +150 1.490000 0.000000 0.000000 +151 1.500000 0.000000 0.000000 +152 1.510000 0.000000 0.000000 +153 1.520000 0.000000 0.000000 +154 1.530000 0.000000 0.000000 +155 1.540000 0.000000 0.000000 +156 1.550000 0.000000 0.000000 +157 1.560000 0.000000 0.000000 +158 1.570000 0.000000 0.000000 +159 1.580000 0.000000 0.000000 +160 1.590000 0.000000 0.000000 +161 1.600000 0.000000 0.000000 +162 1.610000 0.000000 0.000000 +163 1.620000 0.000000 0.000000 +164 1.630000 0.000000 0.000000 +165 1.640000 0.000000 0.000000 +166 1.650000 0.000000 0.000000 +167 1.660000 0.000000 0.000000 +168 1.670000 0.000000 0.000000 +169 1.680000 0.000000 0.000000 +170 1.690000 0.000000 0.000000 +171 1.700000 0.000000 0.000000 +172 1.710000 0.000000 0.000000 +173 1.720000 0.000000 0.000000 +174 1.730000 0.000000 0.000000 +175 1.740000 0.000000 0.000000 +176 1.750000 0.000000 0.000000 +177 1.760000 0.000000 0.000000 +178 1.770000 0.000000 0.000000 +179 1.780000 0.000000 0.000000 +180 1.790000 0.000000 0.000000 +181 1.800000 0.000000 0.000000 +182 1.810000 0.000000 0.000000 +183 1.820000 0.000000 0.000000 +184 1.830000 0.000000 0.000000 +185 1.840000 0.000000 0.000000 +186 1.850000 0.000000 0.000000 +187 1.860000 0.000000 0.000000 +188 1.870000 0.000000 0.000000 +189 1.880000 0.000000 0.000000 +190 1.890000 0.000000 0.000000 +191 1.900000 0.000000 0.000000 +192 1.910000 0.000000 0.000000 +193 1.920000 0.000000 0.000000 +194 1.930000 0.000000 0.000000 +195 1.940000 0.000000 0.000000 +196 1.950000 0.000000 0.000000 +197 1.960000 0.000000 0.000000 +198 1.970000 0.000000 0.000000 +199 1.980000 0.000000 0.000000 +200 1.990000 0.000000 0.000000 +201 2.000000 0.000000 0.000000 +202 2.010000 0.000000 0.000000 +203 2.020000 0.000000 0.000000 +204 2.030000 0.000000 0.000000 +205 2.040000 0.000000 0.000000 +206 2.050000 0.000000 0.000000 +207 2.060000 0.000000 0.000000 +208 2.070000 0.000000 0.000000 +209 2.080000 0.000000 0.000000 +210 2.090000 0.000000 0.000000 +211 2.100000 0.000000 0.000000 +212 2.110000 0.000000 0.000000 +213 2.120000 0.000000 0.000000 +214 2.130000 0.000000 0.000000 +215 2.140000 0.000000 0.000000 +216 2.150000 0.000000 0.000000 +217 2.160000 0.000000 0.000000 +218 2.170000 0.000000 0.000000 +219 2.180000 0.000000 0.000000 +220 2.190000 0.000000 0.000000 +221 2.200000 0.000000 0.000000 +222 2.210000 0.000000 0.000000 +223 2.220000 0.000000 0.000000 +224 2.230000 0.000000 0.000000 +225 2.240000 0.000000 0.000000 +226 2.250000 0.000000 0.000000 +227 2.260000 0.000000 0.000000 +228 2.270000 0.000000 0.000000 +229 2.280000 0.000000 0.000000 +230 2.290000 0.000000 0.000000 +231 2.300000 0.000000 0.000000 +232 2.310000 0.000000 0.000000 +233 2.320000 0.000000 0.000000 +234 2.330000 0.000000 0.000000 +235 2.340000 0.000000 0.000000 +236 2.350000 0.000000 0.000000 +237 2.360000 0.000000 0.000000 +238 2.370000 0.000000 0.000000 +239 2.380000 0.000000 0.000000 +240 2.390000 0.000000 0.000000 +241 2.400000 0.000000 0.000000 +242 2.410000 0.000000 0.000000 +243 2.420000 0.000000 0.000000 +244 2.430000 0.000000 0.000000 +245 2.440000 0.000000 0.000000 +246 2.450000 0.000000 0.000000 +247 2.460000 0.000000 0.000000 +248 2.470000 0.000000 0.000000 +249 2.480000 0.000000 0.000000 +250 2.490000 0.000000 0.000000 +251 2.500000 0.000000 0.000000 +252 2.510000 0.000000 0.000000 +253 2.520000 0.000000 0.000000 +254 2.530000 0.000000 0.000000 +255 2.540000 0.000000 0.000000 +256 2.550000 0.000000 0.000000 +257 2.560000 0.000000 0.000000 +258 2.570000 0.000000 0.000000 +259 2.580000 0.000000 0.000000 +260 2.590000 0.000000 0.000000 +261 2.600000 0.000000 0.000000 +262 2.610000 0.000000 0.000000 +263 2.620000 0.000000 0.000000 +264 2.630000 0.000000 0.000000 +265 2.640000 0.000000 0.000000 +266 2.650000 0.000000 0.000000 +267 2.660000 0.000000 0.000000 +268 2.670000 0.000000 0.000000 +269 2.680000 0.000000 0.000000 +270 2.690000 0.000000 0.000000 +271 2.700000 0.000000 0.000000 +272 2.710000 0.000000 0.000000 +273 2.720000 0.000000 0.000000 +274 2.730000 0.000000 0.000000 +275 2.740000 0.000000 0.000000 +276 2.750000 0.000000 0.000000 +277 2.760000 0.000000 0.000000 +278 2.770000 0.000000 0.000000 +279 2.780000 0.000000 0.000000 +280 2.790000 0.000000 0.000000 +281 2.800000 0.000000 0.000000 +282 2.810000 0.000000 0.000000 +283 2.820000 0.000000 0.000000 +284 2.830000 0.000000 0.000000 +285 2.840000 0.000000 0.000000 +286 2.850000 0.000000 0.000000 +287 2.860000 0.000000 0.000000 +288 2.870000 0.000000 0.000000 +289 2.880000 0.000000 0.000000 +290 2.890000 0.000000 0.000000 +291 2.900000 0.000000 0.000000 +292 2.910000 0.000000 0.000000 +293 2.920000 0.000000 0.000000 +294 2.930000 0.000000 0.000000 +295 2.940000 0.000000 0.000000 +296 2.950000 0.000000 0.000000 +297 2.960000 0.000000 0.000000 +298 2.970000 0.000000 0.000000 +299 2.980000 0.000000 0.000000 +300 2.990000 0.000000 0.000000 +301 3.000000 0.000000 0.000000 + +HEAD_TAIL +N 301 R 0.000001 3.000000 + +1 0.000001 0.000000 0.000000 +2 0.010000 2161440350647607518822400.000000 2593728420778890895481110528.000000 +3 0.020000 527695398062100709376.000000 316617238851043104653312.000000 +4 0.030000 4067131343850062336.000000 1626852538346708926464.000000 +5 0.040000 128831883585858496.000000 38649565183436988416.000000 +6 0.050000 8853259488081101.000000 2124782299721489152.000000 +7 0.060000 992951926207085.500000 198590391543644928.000000 +8 0.070000 156158887055179.062500 26770097065977256.000000 +9 0.080000 31453085537227.195312 4717963671829832.000000 +10 0.090000 7653019634383.599609 1020402986772367.875000 +11 0.100000 2161437410283.985352 259372665656012.125000 +12 0.110000 688699846600.110840 75130982888675.812500 +13 0.120000 242418934523.303925 24241942688387.753906 +14 0.130000 92772695554.949768 8563661551482.013672 +15 0.140000 38124343876.568542 3267817639811.164551 +16 0.150000 16658711862.666004 1332707274503.870850 +17 0.160000 7678803441.103481 575916830241.413208 +18 0.170000 3709726886.129636 261867373669.903687 +19 0.180000 1868327898.144181 124558074820.194244 +20 0.190000 976500000.999998 61675657894.736687 +21 0.200000 527649455.864879 31660345589.187614 +22 0.210000 293806260.511241 16789908645.082933 +23 0.220000 168114083.438129 9170566326.526011 +24 0.230000 98610181.495127 5145397135.359623 +25 0.240000 59169165.297856 2958842872.372237 +26 0.250000 36250908.888444 1740332628.538169 +27 0.260000 22640215.252607 1045152619.667436 +28 0.270000 14392928.420337 639854320.962319 +29 0.280000 9301695.744822 398774811.984595 +30 0.290000 6104017.717125 252682276.475626 +31 0.300000 4063098.921872 162604585.395105 +32 0.310000 2740806.847436 106159834.284035 +33 0.320000 1872013.228410 70251804.140783 +34 0.330000 1293637.623279 47082727.461649 +35 0.340000 903822.389327 31933167.708250 +36 0.350000 638028.370186 21902644.696022 +37 0.360000 454806.060338 15182681.781435 +38 0.370000 327194.054124 10630250.689058 +39 0.380000 237443.016602 7513588.353207 +40 0.390000 173734.710287 5358508.469115 +41 0.400000 128115.021129 3854188.581495 +42 0.410000 95175.694590 2794659.517251 +43 0.420000 71203.733281 2042016.387369 +44 0.430000 53626.450912 1503014.644703 +45 0.440000 40645.593596 1114014.575978 +46 0.450000 30993.690585 831193.088925 +47 0.460000 23770.248288 624115.416996 +48 0.470000 18330.617960 471472.559289 +49 0.480000 14209.942248 358228.692769 +50 0.490000 11070.674537 273695.309628 +51 0.500000 8666.076152 210220.029942 +52 0.510000 6814.633252 162286.683398 +53 0.520000 5381.995700 125892.872001 +54 0.530000 4268.136868 98116.253151 +55 0.540000 3398.163685 76810.165684 +56 0.550000 2715.696677 60388.560510 +57 0.560000 2178.071621 47673.030759 +58 0.570000 1752.840750 37783.319810 +59 0.580000 1415.206838 30058.470465 +60 0.590000 1146.130977 23999.705760 +61 0.600000 930.929708 19228.816970 +62 0.610000 758.229563 15457.682582 +63 0.620000 619.184089 12465.822566 +64 0.630000 506.884625 10083.785213 +65 0.640000 415.914818 8180.790148 +66 0.650000 342.012307 6655.493196 +67 0.660000 281.810669 5429.052488 +68 0.670000 232.641766 4439.899069 +69 0.680000 192.383722 3639.775908 +70 0.690000 159.343555 2990.725059 +71 0.700000 132.166200 2462.786676 +72 0.710000 109.763738 2032.234764 +73 0.720000 91.260139 1680.219270 +74 0.730000 75.947974 1391.717054 +75 0.740000 63.254382 1154.718549 +76 0.750000 52.714228 959.594954 +77 0.760000 43.948872 798.604206 +78 0.770000 36.649308 665.504021 +79 0.780000 30.562750 555.247832 +80 0.790000 25.481924 463.745109 +81 0.800000 21.236485 387.671861 +82 0.810000 17.686136 324.320364 +83 0.820000 14.715086 271.479665 +84 0.830000 12.227574 227.340274 +85 0.840000 10.144253 190.417955 +86 0.850000 8.399249 159.492629 +87 0.860000 6.937780 133.559247 +88 0.870000 5.714205 111.788215 +89 0.880000 4.690441 93.493410 +90 0.890000 3.834655 78.106288 +91 0.900000 3.120205 65.154867 +92 0.910000 2.524755 54.246625 +93 0.920000 2.029558 45.054564 +94 0.930000 1.618857 37.305814 +95 0.940000 1.279395 30.772315 +96 0.950000 1.000000 25.263158 +97 0.960000 0.771253 20.618297 +98 0.970000 0.585203 16.703371 +99 0.980000 0.435131 13.405424 +100 0.990000 0.315357 10.629373 +101 1.000000 0.221073 8.295079 +102 1.010000 0.148209 6.334918 +103 1.020000 0.093319 4.691763 +104 1.030000 0.053479 3.317301 +105 1.040000 0.026214 2.170635 +106 1.050000 0.009423 1.217110 +107 1.060000 0.001327 0.427337 +108 1.070000 0.000000 0.000000 +109 1.080000 0.000000 0.000000 +110 1.090000 0.000000 0.000000 +111 1.100000 0.000000 0.000000 +112 1.110000 0.000000 0.000000 +113 1.120000 0.000000 0.000000 +114 1.130000 0.000000 0.000000 +115 1.140000 0.000000 0.000000 +116 1.150000 0.000000 0.000000 +117 1.160000 0.000000 0.000000 +118 1.170000 0.000000 0.000000 +119 1.180000 0.000000 0.000000 +120 1.190000 0.000000 0.000000 +121 1.200000 0.000000 0.000000 +122 1.210000 0.000000 0.000000 +123 1.220000 0.000000 0.000000 +124 1.230000 0.000000 0.000000 +125 1.240000 0.000000 0.000000 +126 1.250000 0.000000 0.000000 +127 1.260000 0.000000 0.000000 +128 1.270000 0.000000 0.000000 +129 1.280000 0.000000 0.000000 +130 1.290000 0.000000 0.000000 +131 1.300000 0.000000 0.000000 +132 1.310000 0.000000 0.000000 +133 1.320000 0.000000 0.000000 +134 1.330000 0.000000 0.000000 +135 1.340000 0.000000 0.000000 +136 1.350000 0.000000 0.000000 +137 1.360000 0.000000 0.000000 +138 1.370000 0.000000 0.000000 +139 1.380000 0.000000 0.000000 +140 1.390000 0.000000 0.000000 +141 1.400000 0.000000 0.000000 +142 1.410000 0.000000 0.000000 +143 1.420000 0.000000 0.000000 +144 1.430000 0.000000 0.000000 +145 1.440000 0.000000 0.000000 +146 1.450000 0.000000 0.000000 +147 1.460000 0.000000 0.000000 +148 1.470000 0.000000 0.000000 +149 1.480000 0.000000 0.000000 +150 1.490000 0.000000 0.000000 +151 1.500000 0.000000 0.000000 +152 1.510000 0.000000 0.000000 +153 1.520000 0.000000 0.000000 +154 1.530000 0.000000 0.000000 +155 1.540000 0.000000 0.000000 +156 1.550000 0.000000 0.000000 +157 1.560000 0.000000 0.000000 +158 1.570000 0.000000 0.000000 +159 1.580000 0.000000 0.000000 +160 1.590000 0.000000 0.000000 +161 1.600000 0.000000 0.000000 +162 1.610000 0.000000 0.000000 +163 1.620000 0.000000 0.000000 +164 1.630000 0.000000 0.000000 +165 1.640000 0.000000 0.000000 +166 1.650000 0.000000 0.000000 +167 1.660000 0.000000 0.000000 +168 1.670000 0.000000 0.000000 +169 1.680000 0.000000 0.000000 +170 1.690000 0.000000 0.000000 +171 1.700000 0.000000 0.000000 +172 1.710000 0.000000 0.000000 +173 1.720000 0.000000 0.000000 +174 1.730000 0.000000 0.000000 +175 1.740000 0.000000 0.000000 +176 1.750000 0.000000 0.000000 +177 1.760000 0.000000 0.000000 +178 1.770000 0.000000 0.000000 +179 1.780000 0.000000 0.000000 +180 1.790000 0.000000 0.000000 +181 1.800000 0.000000 0.000000 +182 1.810000 0.000000 0.000000 +183 1.820000 0.000000 0.000000 +184 1.830000 0.000000 0.000000 +185 1.840000 0.000000 0.000000 +186 1.850000 0.000000 0.000000 +187 1.860000 0.000000 0.000000 +188 1.870000 0.000000 0.000000 +189 1.880000 0.000000 0.000000 +190 1.890000 0.000000 0.000000 +191 1.900000 0.000000 0.000000 +192 1.910000 0.000000 0.000000 +193 1.920000 0.000000 0.000000 +194 1.930000 0.000000 0.000000 +195 1.940000 0.000000 0.000000 +196 1.950000 0.000000 0.000000 +197 1.960000 0.000000 0.000000 +198 1.970000 0.000000 0.000000 +199 1.980000 0.000000 0.000000 +200 1.990000 0.000000 0.000000 +201 2.000000 0.000000 0.000000 +202 2.010000 0.000000 0.000000 +203 2.020000 0.000000 0.000000 +204 2.030000 0.000000 0.000000 +205 2.040000 0.000000 0.000000 +206 2.050000 0.000000 0.000000 +207 2.060000 0.000000 0.000000 +208 2.070000 0.000000 0.000000 +209 2.080000 0.000000 0.000000 +210 2.090000 0.000000 0.000000 +211 2.100000 0.000000 0.000000 +212 2.110000 0.000000 0.000000 +213 2.120000 0.000000 0.000000 +214 2.130000 0.000000 0.000000 +215 2.140000 0.000000 0.000000 +216 2.150000 0.000000 0.000000 +217 2.160000 0.000000 0.000000 +218 2.170000 0.000000 0.000000 +219 2.180000 0.000000 0.000000 +220 2.190000 0.000000 0.000000 +221 2.200000 0.000000 0.000000 +222 2.210000 0.000000 0.000000 +223 2.220000 0.000000 0.000000 +224 2.230000 0.000000 0.000000 +225 2.240000 0.000000 0.000000 +226 2.250000 0.000000 0.000000 +227 2.260000 0.000000 0.000000 +228 2.270000 0.000000 0.000000 +229 2.280000 0.000000 0.000000 +230 2.290000 0.000000 0.000000 +231 2.300000 0.000000 0.000000 +232 2.310000 0.000000 0.000000 +233 2.320000 0.000000 0.000000 +234 2.330000 0.000000 0.000000 +235 2.340000 0.000000 0.000000 +236 2.350000 0.000000 0.000000 +237 2.360000 0.000000 0.000000 +238 2.370000 0.000000 0.000000 +239 2.380000 0.000000 0.000000 +240 2.390000 0.000000 0.000000 +241 2.400000 0.000000 0.000000 +242 2.410000 0.000000 0.000000 +243 2.420000 0.000000 0.000000 +244 2.430000 0.000000 0.000000 +245 2.440000 0.000000 0.000000 +246 2.450000 0.000000 0.000000 +247 2.460000 0.000000 0.000000 +248 2.470000 0.000000 0.000000 +249 2.480000 0.000000 0.000000 +250 2.490000 0.000000 0.000000 +251 2.500000 0.000000 0.000000 +252 2.510000 0.000000 0.000000 +253 2.520000 0.000000 0.000000 +254 2.530000 0.000000 0.000000 +255 2.540000 0.000000 0.000000 +256 2.550000 0.000000 0.000000 +257 2.560000 0.000000 0.000000 +258 2.570000 0.000000 0.000000 +259 2.580000 0.000000 0.000000 +260 2.590000 0.000000 0.000000 +261 2.600000 0.000000 0.000000 +262 2.610000 0.000000 0.000000 +263 2.620000 0.000000 0.000000 +264 2.630000 0.000000 0.000000 +265 2.640000 0.000000 0.000000 +266 2.650000 0.000000 0.000000 +267 2.660000 0.000000 0.000000 +268 2.670000 0.000000 0.000000 +269 2.680000 0.000000 0.000000 +270 2.690000 0.000000 0.000000 +271 2.700000 0.000000 0.000000 +272 2.710000 0.000000 0.000000 +273 2.720000 0.000000 0.000000 +274 2.730000 0.000000 0.000000 +275 2.740000 0.000000 0.000000 +276 2.750000 0.000000 0.000000 +277 2.760000 0.000000 0.000000 +278 2.770000 0.000000 0.000000 +279 2.780000 0.000000 0.000000 +280 2.790000 0.000000 0.000000 +281 2.800000 0.000000 0.000000 +282 2.810000 0.000000 0.000000 +283 2.820000 0.000000 0.000000 +284 2.830000 0.000000 0.000000 +285 2.840000 0.000000 0.000000 +286 2.850000 0.000000 0.000000 +287 2.860000 0.000000 0.000000 +288 2.870000 0.000000 0.000000 +289 2.880000 0.000000 0.000000 +290 2.890000 0.000000 0.000000 +291 2.900000 0.000000 0.000000 +292 2.910000 0.000000 0.000000 +293 2.920000 0.000000 0.000000 +294 2.930000 0.000000 0.000000 +295 2.940000 0.000000 0.000000 +296 2.950000 0.000000 0.000000 +297 2.960000 0.000000 0.000000 +298 2.970000 0.000000 0.000000 +299 2.980000 0.000000 0.000000 +300 2.990000 0.000000 0.000000 +301 3.000000 0.000000 0.000000 + +TAIL_TAIL_Wc_0.6 +N 301 R 0.000001 3.000000 + +1 0.000001 0.000000 0.000000 +2 0.010000 3999999999995999707725824.000000 4799999999997598070678224896.000000 +3 0.020000 976562499937500004352.000000 585937499981249777762304.000000 +4 0.030000 7526705687148720128.000000 3010682275956881096704.000000 +5 0.040000 238418578125000000.000000 71525573583984353280.000000 +6 0.050000 16383999744000000.000000 3932159969279997440.000000 +7 0.060000 1837574546257248.500000 367514917824838144.000000 +8 0.070000 288990429236596.312500 49541219354796968.000000 +9 0.080000 58207645654678.343750 8731147992610928.000000 +10 0.090000 14162817119182.900391 1888376117671434.750000 +11 0.100000 3999996000000.000000 479999760000000.500000 +12 0.110000 1274521012945.708496 139038779115662.093750 +13 0.120000 448625279546.553955 44862594934250.781250 +14 0.130000 171687100967.122345 15848078337188.726562 +15 0.140000 70553781072.250778 6047489716531.549805 +16 0.150000 30829035351.054977 2466336874723.629883 +17 0.160000 14210616296.622902 1065805162943.433594 +18 0.170000 6865346349.879549 484618532348.129211 +19 0.180000 3457603256.036191 230510803894.961182 +20 0.190000 1807158928.004511 114139038296.617722 +21 0.200000 976499999.999998 58591874999.999847 +22 0.210000 543739902.726732 31072184111.878654 +23 0.220000 311127628.299641 16971560078.724821 +24 0.230000 182499493.379421 9522417580.006592 +25 0.240000 109507052.064558 5475875881.316449 +26 0.250000 67092480.000000 3220832255.999991 +27 0.260000 41903049.941880 1934285732.237306 +28 0.270000 26639528.522336 1184208483.196407 +29 0.280000 17216873.260370 738043867.822060 +30 0.290000 11298625.429098 467668459.533016 +31 0.300000 7521218.724186 300958488.336427 +32 0.310000 5073808.319410 196492716.046068 +33 0.320000 3465721.661655 130034411.505164 +34 0.330000 2395143.138865 87152427.788625 +35 0.340000 1673561.082347 59112555.692539 +36 0.350000 1181528.973318 40546867.041137 +37 0.360000 842332.557402 28108378.157278 +38 0.370000 606071.119890 19681641.931764 +39 0.380000 439893.177446 13912339.662092 +40 0.390000 321924.360071 9922853.684245 +41 0.400000 237442.016602 7137908.935547 +42 0.410000 176435.450812 5176287.635225 +43 0.420000 132031.660059 3782743.515595 +44 0.430000 99468.250044 2784687.558254 +45 0.440000 75416.262744 2064324.130372 +46 0.450000 57529.220585 1540535.337797 +47 0.460000 44139.942254 1156983.644674 +48 0.470000 34054.846645 874222.695500 +49 0.480000 26413.181465 664417.646696 +50 0.490000 20589.881497 507780.654581 +51 0.500000 16128.000000 390144.000000 +52 0.510000 12691.351515 301294.396513 +53 0.520000 10031.077542 233820.872331 +54 0.530000 7961.876154 182311.949517 +55 0.540000 6344.988397 142792.224654 +56 0.550000 5075.941991 112324.247003 +57 0.560000 4075.667156 88725.341557 +58 0.570000 3284.018178 70364.910655 +59 0.580000 2655.022026 56018.454503 +60 0.590000 2153.374227 44761.819610 +61 0.600000 1751.840750 35894.153820 +62 0.610000 1429.321668 28881.467437 +63 0.620000 1169.400839 23315.070198 +64 0.630000 959.254371 18880.806522 +65 0.640000 788.825286 15336.170940 +66 0.650000 650.196650 12493.203783 +67 0.660000 537.113366 10205.647944 +68 0.670000 444.615844 8359.261950 +69 0.680000 368.758212 6864.481939 +70 0.690000 306.390715 5650.839586 +71 0.700000 254.991024 4662.698464 +72 0.710000 212.532986 3855.984565 +73 0.720000 177.384120 3195.669530 +74 0.730000 148.225307 2653.826099 +75 0.740000 123.987627 2208.120224 +76 0.750000 103.802544 1840.637693 +77 0.760000 86.962472 1536.967937 +78 0.770000 72.889471 1285.486272 +79 0.780000 61.110325 1076.789779 +80 0.790000 51.236635 903.252555 +81 0.800000 42.948872 758.673996 +82 0.810000 35.983576 637.999825 +83 0.820000 30.123043 537.100183 +84 0.830000 25.186999 452.592612 +85 0.840000 21.025860 381.700456 +86 0.850000 17.515264 322.139305 +87 0.860000 14.551619 272.025666 +88 0.870000 12.048476 229.803356 +89 0.880000 9.933566 194.184004 +90 0.890000 8.146368 164.098852 +91 0.900000 6.636119 138.659624 +92 0.910000 5.360169 117.126674 +93 0.920000 4.282632 98.883003 +94 0.930000 3.373272 83.413022 +95 0.940000 2.606573 70.285155 +96 0.950000 1.960975 59.137553 +97 0.960000 1.418239 49.666347 +98 0.970000 0.962916 41.615965 +99 0.980000 0.581905 34.771137 +100 0.990000 0.264083 28.950277 +101 1.000000 -0.000000 24.000000 +102 1.010000 -0.218384 19.790571 +103 1.020000 -0.397913 16.212117 +104 1.030000 -0.544418 13.171468 +105 1.040000 -0.662870 10.589529 +106 1.050000 -0.757512 8.399073 +107 1.060000 -0.831965 6.542902 +108 1.070000 -0.889321 4.972300 +109 1.080000 -0.932223 3.645731 +110 1.090000 -0.962930 2.527753 +111 1.100000 -0.983372 1.588095 +112 1.110000 -0.995200 0.800882 +113 1.120000 -0.999824 0.143980 +114 1.130000 -0.999611 -0.103302 +115 1.140000 -0.997893 -0.240069 +116 1.150000 -0.994811 -0.376178 +117 1.160000 -0.990373 -0.511255 +118 1.170000 -0.984591 -0.644932 +119 1.180000 -0.977480 -0.776841 +120 1.190000 -0.969061 -0.906620 +121 1.200000 -0.959356 -1.033915 +122 1.210000 -0.948392 -1.158376 +123 1.220000 -0.936199 -1.279661 +124 1.230000 -0.922811 -1.397439 +125 1.240000 -0.908263 -1.511387 +126 1.250000 -0.892597 -1.621193 +127 1.260000 -0.875854 -1.726554 +128 1.270000 -0.858082 -1.827184 +129 1.280000 -0.839327 -1.922805 +130 1.290000 -0.819643 -2.013156 +131 1.300000 -0.799083 -2.097989 +132 1.310000 -0.777702 -2.177071 +133 1.320000 -0.755561 -2.250187 +134 1.330000 -0.732719 -2.317134 +135 1.340000 -0.709240 -2.377731 +136 1.350000 -0.685186 -2.431810 +137 1.360000 -0.660626 -2.479224 +138 1.370000 -0.635625 -2.519843 +139 1.380000 -0.610252 -2.553555 +140 1.390000 -0.584577 -2.580268 +141 1.400000 -0.558670 -2.599908 +142 1.410000 -0.532602 -2.612423 +143 1.420000 -0.506445 -2.617776 +144 1.430000 -0.480271 -2.615955 +145 1.440000 -0.454150 -2.606964 +146 1.450000 -0.428155 -2.590827 +147 1.460000 -0.402357 -2.567588 +148 1.470000 -0.376827 -2.537312 +149 1.480000 -0.351634 -2.500082 +150 1.490000 -0.326848 -2.455999 +151 1.500000 -0.302537 -2.405184 +152 1.510000 -0.278767 -2.347777 +153 1.520000 -0.255603 -2.283935 +154 1.530000 -0.233109 -2.213833 +155 1.540000 -0.211346 -2.137662 +156 1.550000 -0.190375 -2.055633 +157 1.560000 -0.170252 -1.967969 +158 1.570000 -0.151034 -1.874911 +159 1.580000 -0.132771 -1.776714 +160 1.590000 -0.115516 -1.673647 +161 1.600000 -0.099314 -1.565993 +162 1.610000 -0.084210 -1.454047 +163 1.620000 -0.070246 -1.338115 +164 1.630000 -0.057460 -1.218516 +165 1.640000 -0.045887 -1.095576 +166 1.650000 -0.035558 -0.969634 +167 1.660000 -0.026503 -0.841034 +168 1.670000 -0.018745 -0.710129 +169 1.680000 -0.012307 -0.577277 +170 1.690000 -0.007205 -0.442843 +171 1.700000 -0.003454 -0.307196 +172 1.710000 -0.001064 -0.170706 +173 1.720000 -0.000042 -0.033748 +174 1.730000 0.000000 0.000000 +175 1.740000 0.000000 0.000000 +176 1.750000 0.000000 0.000000 +177 1.760000 0.000000 0.000000 +178 1.770000 0.000000 0.000000 +179 1.780000 0.000000 0.000000 +180 1.790000 0.000000 0.000000 +181 1.800000 0.000000 0.000000 +182 1.810000 0.000000 0.000000 +183 1.820000 0.000000 0.000000 +184 1.830000 0.000000 0.000000 +185 1.840000 0.000000 0.000000 +186 1.850000 0.000000 0.000000 +187 1.860000 0.000000 0.000000 +188 1.870000 0.000000 0.000000 +189 1.880000 0.000000 0.000000 +190 1.890000 0.000000 0.000000 +191 1.900000 0.000000 0.000000 +192 1.910000 0.000000 0.000000 +193 1.920000 0.000000 0.000000 +194 1.930000 0.000000 0.000000 +195 1.940000 0.000000 0.000000 +196 1.950000 0.000000 0.000000 +197 1.960000 0.000000 0.000000 +198 1.970000 0.000000 0.000000 +199 1.980000 0.000000 0.000000 +200 1.990000 0.000000 0.000000 +201 2.000000 0.000000 0.000000 +202 2.010000 0.000000 0.000000 +203 2.020000 0.000000 0.000000 +204 2.030000 0.000000 0.000000 +205 2.040000 0.000000 0.000000 +206 2.050000 0.000000 0.000000 +207 2.060000 0.000000 0.000000 +208 2.070000 0.000000 0.000000 +209 2.080000 0.000000 0.000000 +210 2.090000 0.000000 0.000000 +211 2.100000 0.000000 0.000000 +212 2.110000 0.000000 0.000000 +213 2.120000 0.000000 0.000000 +214 2.130000 0.000000 0.000000 +215 2.140000 0.000000 0.000000 +216 2.150000 0.000000 0.000000 +217 2.160000 0.000000 0.000000 +218 2.170000 0.000000 0.000000 +219 2.180000 0.000000 0.000000 +220 2.190000 0.000000 0.000000 +221 2.200000 0.000000 0.000000 +222 2.210000 0.000000 0.000000 +223 2.220000 0.000000 0.000000 +224 2.230000 0.000000 0.000000 +225 2.240000 0.000000 0.000000 +226 2.250000 0.000000 0.000000 +227 2.260000 0.000000 0.000000 +228 2.270000 0.000000 0.000000 +229 2.280000 0.000000 0.000000 +230 2.290000 0.000000 0.000000 +231 2.300000 0.000000 0.000000 +232 2.310000 0.000000 0.000000 +233 2.320000 0.000000 0.000000 +234 2.330000 0.000000 0.000000 +235 2.340000 0.000000 0.000000 +236 2.350000 0.000000 0.000000 +237 2.360000 0.000000 0.000000 +238 2.370000 0.000000 0.000000 +239 2.380000 0.000000 0.000000 +240 2.390000 0.000000 0.000000 +241 2.400000 0.000000 0.000000 +242 2.410000 0.000000 0.000000 +243 2.420000 0.000000 0.000000 +244 2.430000 0.000000 0.000000 +245 2.440000 0.000000 0.000000 +246 2.450000 0.000000 0.000000 +247 2.460000 0.000000 0.000000 +248 2.470000 0.000000 0.000000 +249 2.480000 0.000000 0.000000 +250 2.490000 0.000000 0.000000 +251 2.500000 0.000000 0.000000 +252 2.510000 0.000000 0.000000 +253 2.520000 0.000000 0.000000 +254 2.530000 0.000000 0.000000 +255 2.540000 0.000000 0.000000 +256 2.550000 0.000000 0.000000 +257 2.560000 0.000000 0.000000 +258 2.570000 0.000000 0.000000 +259 2.580000 0.000000 0.000000 +260 2.590000 0.000000 0.000000 +261 2.600000 0.000000 0.000000 +262 2.610000 0.000000 0.000000 +263 2.620000 0.000000 0.000000 +264 2.630000 0.000000 0.000000 +265 2.640000 0.000000 0.000000 +266 2.650000 0.000000 0.000000 +267 2.660000 0.000000 0.000000 +268 2.670000 0.000000 0.000000 +269 2.680000 0.000000 0.000000 +270 2.690000 0.000000 0.000000 +271 2.700000 0.000000 0.000000 +272 2.710000 0.000000 0.000000 +273 2.720000 0.000000 0.000000 +274 2.730000 0.000000 0.000000 +275 2.740000 0.000000 0.000000 +276 2.750000 0.000000 0.000000 +277 2.760000 0.000000 0.000000 +278 2.770000 0.000000 0.000000 +279 2.780000 0.000000 0.000000 +280 2.790000 0.000000 0.000000 +281 2.800000 0.000000 0.000000 +282 2.810000 0.000000 0.000000 +283 2.820000 0.000000 0.000000 +284 2.830000 0.000000 0.000000 +285 2.840000 0.000000 0.000000 +286 2.850000 0.000000 0.000000 +287 2.860000 0.000000 0.000000 +288 2.870000 0.000000 0.000000 +289 2.880000 0.000000 0.000000 +290 2.890000 0.000000 0.000000 +291 2.900000 0.000000 0.000000 +292 2.910000 0.000000 0.000000 +293 2.920000 0.000000 0.000000 +294 2.930000 0.000000 0.000000 +295 2.940000 0.000000 0.000000 +296 2.950000 0.000000 0.000000 +297 2.960000 0.000000 0.000000 +298 2.970000 0.000000 0.000000 +299 2.980000 0.000000 0.000000 +300 2.990000 0.000000 0.000000 +301 3.000000 0.000000 0.000000 + + +TAIL_TAIL_Wc_0.7 +N 301 R 0.000001 3.000000 + +1 0.000001 0.000000 0.000000 +2 0.010000 3999999999995999707725824.000000 4799999999997598070678224896.000000 +3 0.020000 976562499937500004352.000000 585937499981249777762304.000000 +4 0.030000 7526705687148720128.000000 3010682275956881096704.000000 +5 0.040000 238418578125000000.000000 71525573583984353280.000000 +6 0.050000 16383999744000000.000000 3932159969279997440.000000 +7 0.060000 1837574546257248.500000 367514917824838144.000000 +8 0.070000 288990429236596.312500 49541219354796968.000000 +9 0.080000 58207645654678.343750 8731147992610928.000000 +10 0.090000 14162817119182.900391 1888376117671434.750000 +11 0.100000 3999996000000.000000 479999760000000.500000 +12 0.110000 1274521012945.708496 139038779115662.093750 +13 0.120000 448625279546.553955 44862594934250.781250 +14 0.130000 171687100967.122345 15848078337188.726562 +15 0.140000 70553781072.250778 6047489716531.549805 +16 0.150000 30829035351.054977 2466336874723.629883 +17 0.160000 14210616296.622902 1065805162943.433594 +18 0.170000 6865346349.879549 484618532348.129211 +19 0.180000 3457603256.036191 230510803894.961182 +20 0.190000 1807158928.004511 114139038296.617722 +21 0.200000 976499999.999998 58591874999.999847 +22 0.210000 543739902.726732 31072184111.878654 +23 0.220000 311127628.299641 16971560078.724821 +24 0.230000 182499493.379421 9522417580.006592 +25 0.240000 109507052.064558 5475875881.316449 +26 0.250000 67092480.000000 3220832255.999991 +27 0.260000 41903049.941880 1934285732.237306 +28 0.270000 26639528.522336 1184208483.196407 +29 0.280000 17216873.260370 738043867.822060 +30 0.290000 11298625.429098 467668459.533016 +31 0.300000 7521218.724186 300958488.336427 +32 0.310000 5073808.319410 196492716.046068 +33 0.320000 3465721.661655 130034411.505164 +34 0.330000 2395143.138865 87152427.788625 +35 0.340000 1673561.082347 59112555.692539 +36 0.350000 1181528.973318 40546867.041137 +37 0.360000 842332.557402 28108378.157278 +38 0.370000 606071.119890 19681641.931764 +39 0.380000 439893.177446 13912339.662092 +40 0.390000 321924.360071 9922853.684245 +41 0.400000 237442.016602 7137908.935547 +42 0.410000 176435.450812 5176287.635225 +43 0.420000 132031.660059 3782743.515595 +44 0.430000 99468.250044 2784687.558254 +45 0.440000 75416.262744 2064324.130372 +46 0.450000 57529.220585 1540535.337797 +47 0.460000 44139.942254 1156983.644674 +48 0.470000 34054.846645 874222.695500 +49 0.480000 26413.181465 664417.646696 +50 0.490000 20589.881497 507780.654581 +51 0.500000 16128.000000 390144.000000 +52 0.510000 12691.351515 301294.396513 +53 0.520000 10031.077542 233820.872331 +54 0.530000 7961.876154 182311.949517 +55 0.540000 6344.988397 142792.224654 +56 0.550000 5075.941991 112324.247003 +57 0.560000 4075.667156 88725.341557 +58 0.570000 3284.018178 70364.910655 +59 0.580000 2655.022026 56018.454503 +60 0.590000 2153.374227 44761.819610 +61 0.600000 1751.840750 35894.153820 +62 0.610000 1429.321668 28881.467437 +63 0.620000 1169.400839 23315.070198 +64 0.630000 959.254371 18880.806522 +65 0.640000 788.825286 15336.170940 +66 0.650000 650.196650 12493.203783 +67 0.660000 537.113366 10205.647944 +68 0.670000 444.615844 8359.261950 +69 0.680000 368.758212 6864.481939 +70 0.690000 306.390715 5650.839586 +71 0.700000 254.991024 4662.698464 +72 0.710000 212.532986 3855.984565 +73 0.720000 177.384120 3195.669530 +74 0.730000 148.225307 2653.826099 +75 0.740000 123.987627 2208.120224 +76 0.750000 103.802544 1840.637693 +77 0.760000 86.962472 1536.967937 +78 0.770000 72.889471 1285.486272 +79 0.780000 61.110325 1076.789779 +80 0.790000 51.236635 903.252555 +81 0.800000 42.948872 758.673996 +82 0.810000 35.983576 637.999825 +83 0.820000 30.123043 537.100183 +84 0.830000 25.186999 452.592612 +85 0.840000 21.025860 381.700456 +86 0.850000 17.515264 322.139305 +87 0.860000 14.551619 272.025666 +88 0.870000 12.048476 229.803356 +89 0.880000 9.933566 194.184004 +90 0.890000 8.146368 164.098852 +91 0.900000 6.636119 138.659624 +92 0.910000 5.360169 117.126674 +93 0.920000 4.282632 98.883003 +94 0.930000 3.373272 83.413022 +95 0.940000 2.606573 70.285155 +96 0.950000 1.960975 59.137553 +97 0.960000 1.418239 49.666347 +98 0.970000 0.962916 41.615965 +99 0.980000 0.581905 34.771137 +100 0.990000 0.264083 28.950277 +101 1.000000 -0.000000 24.000000 +102 1.010000 -0.218384 19.790571 +103 1.020000 -0.397913 16.212117 +104 1.030000 -0.544418 13.171468 +105 1.040000 -0.662870 10.589529 +106 1.050000 -0.757512 8.399073 +107 1.060000 -0.831965 6.542902 +108 1.070000 -0.889321 4.972300 +109 1.080000 -0.932223 3.645731 +110 1.090000 -0.962930 2.527753 +111 1.100000 -0.983372 1.588095 +112 1.110000 -0.995200 0.800882 +113 1.120000 -0.999824 0.143980 +114 1.130000 -0.999714 -0.075900 +115 1.140000 -0.998452 -0.176443 +116 1.150000 -0.996186 -0.276630 +117 1.160000 -0.992921 -0.376260 +118 1.170000 -0.988664 -0.475132 +119 1.180000 -0.983422 -0.573048 +120 1.190000 -0.977206 -0.669809 +121 1.200000 -0.970030 -0.765221 +122 1.210000 -0.961907 -0.859093 +123 1.220000 -0.952854 -0.951234 +124 1.230000 -0.942889 -1.041460 +125 1.240000 -0.932032 -1.129588 +126 1.250000 -0.920305 -1.215441 +127 1.260000 -0.907731 -1.298847 +128 1.270000 -0.894336 -1.379637 +129 1.280000 -0.880148 -1.457649 +130 1.290000 -0.865193 -1.532725 +131 1.300000 -0.849503 -1.604714 +132 1.310000 -0.833110 -1.673472 +133 1.320000 -0.816045 -1.738859 +134 1.330000 -0.798344 -1.800745 +135 1.340000 -0.780042 -1.859004 +136 1.350000 -0.761177 -1.913520 +137 1.360000 -0.741785 -1.964182 +138 1.370000 -0.721906 -2.010888 +139 1.380000 -0.701581 -2.053545 +140 1.390000 -0.680849 -2.092066 +141 1.400000 -0.659753 -2.126374 +142 1.410000 -0.638336 -2.156399 +143 1.420000 -0.616640 -2.182082 +144 1.430000 -0.594709 -2.203371 +145 1.440000 -0.572587 -2.220222 +146 1.450000 -0.550319 -2.232602 +147 1.460000 -0.527950 -2.240486 +148 1.470000 -0.505525 -2.243858 +149 1.480000 -0.483088 -2.242711 +150 1.490000 -0.460686 -2.237047 +151 1.500000 -0.438362 -2.226879 +152 1.510000 -0.416163 -2.212225 +153 1.520000 -0.394133 -2.193117 +154 1.530000 -0.372315 -2.169592 +155 1.540000 -0.350755 -2.141698 +156 1.550000 -0.329496 -2.109490 +157 1.560000 -0.308580 -2.073035 +158 1.570000 -0.288049 -2.032404 +159 1.580000 -0.267945 -1.987681 +160 1.590000 -0.248309 -1.938954 +161 1.600000 -0.229179 -1.886323 +162 1.610000 -0.210595 -1.829893 +163 1.620000 -0.192594 -1.769778 +164 1.630000 -0.175211 -1.706099 +165 1.640000 -0.158483 -1.638984 +166 1.650000 -0.142443 -1.568568 +167 1.660000 -0.127122 -1.494993 +168 1.670000 -0.112553 -1.418408 +169 1.680000 -0.098764 -1.338966 +170 1.690000 -0.085782 -1.256828 +171 1.700000 -0.073635 -1.172158 +172 1.710000 -0.062347 -1.085128 +173 1.720000 -0.051940 -0.995913 +174 1.730000 -0.042436 -0.904692 +175 1.740000 -0.033852 -0.811649 +176 1.750000 -0.026208 -0.716971 +177 1.760000 -0.019518 -0.620850 +178 1.770000 -0.013795 -0.523479 +179 1.780000 -0.009052 -0.425053 +180 1.790000 -0.005297 -0.325771 +181 1.800000 -0.002538 -0.225833 +182 1.810000 -0.000782 -0.125440 +183 1.820000 -0.000031 -0.024795 +184 1.830000 0.000000 0.000000 +185 1.840000 0.000000 0.000000 +186 1.850000 0.000000 0.000000 +187 1.860000 0.000000 0.000000 +188 1.870000 0.000000 0.000000 +189 1.880000 0.000000 0.000000 +190 1.890000 0.000000 0.000000 +191 1.900000 0.000000 0.000000 +192 1.910000 0.000000 0.000000 +193 1.920000 0.000000 0.000000 +194 1.930000 0.000000 0.000000 +195 1.940000 0.000000 0.000000 +196 1.950000 0.000000 0.000000 +197 1.960000 0.000000 0.000000 +198 1.970000 0.000000 0.000000 +199 1.980000 0.000000 0.000000 +200 1.990000 0.000000 0.000000 +201 2.000000 0.000000 0.000000 +202 2.010000 0.000000 0.000000 +203 2.020000 0.000000 0.000000 +204 2.030000 0.000000 0.000000 +205 2.040000 0.000000 0.000000 +206 2.050000 0.000000 0.000000 +207 2.060000 0.000000 0.000000 +208 2.070000 0.000000 0.000000 +209 2.080000 0.000000 0.000000 +210 2.090000 0.000000 0.000000 +211 2.100000 0.000000 0.000000 +212 2.110000 0.000000 0.000000 +213 2.120000 0.000000 0.000000 +214 2.130000 0.000000 0.000000 +215 2.140000 0.000000 0.000000 +216 2.150000 0.000000 0.000000 +217 2.160000 0.000000 0.000000 +218 2.170000 0.000000 0.000000 +219 2.180000 0.000000 0.000000 +220 2.190000 0.000000 0.000000 +221 2.200000 0.000000 0.000000 +222 2.210000 0.000000 0.000000 +223 2.220000 0.000000 0.000000 +224 2.230000 0.000000 0.000000 +225 2.240000 0.000000 0.000000 +226 2.250000 0.000000 0.000000 +227 2.260000 0.000000 0.000000 +228 2.270000 0.000000 0.000000 +229 2.280000 0.000000 0.000000 +230 2.290000 0.000000 0.000000 +231 2.300000 0.000000 0.000000 +232 2.310000 0.000000 0.000000 +233 2.320000 0.000000 0.000000 +234 2.330000 0.000000 0.000000 +235 2.340000 0.000000 0.000000 +236 2.350000 0.000000 0.000000 +237 2.360000 0.000000 0.000000 +238 2.370000 0.000000 0.000000 +239 2.380000 0.000000 0.000000 +240 2.390000 0.000000 0.000000 +241 2.400000 0.000000 0.000000 +242 2.410000 0.000000 0.000000 +243 2.420000 0.000000 0.000000 +244 2.430000 0.000000 0.000000 +245 2.440000 0.000000 0.000000 +246 2.450000 0.000000 0.000000 +247 2.460000 0.000000 0.000000 +248 2.470000 0.000000 0.000000 +249 2.480000 0.000000 0.000000 +250 2.490000 0.000000 0.000000 +251 2.500000 0.000000 0.000000 +252 2.510000 0.000000 0.000000 +253 2.520000 0.000000 0.000000 +254 2.530000 0.000000 0.000000 +255 2.540000 0.000000 0.000000 +256 2.550000 0.000000 0.000000 +257 2.560000 0.000000 0.000000 +258 2.570000 0.000000 0.000000 +259 2.580000 0.000000 0.000000 +260 2.590000 0.000000 0.000000 +261 2.600000 0.000000 0.000000 +262 2.610000 0.000000 0.000000 +263 2.620000 0.000000 0.000000 +264 2.630000 0.000000 0.000000 +265 2.640000 0.000000 0.000000 +266 2.650000 0.000000 0.000000 +267 2.660000 0.000000 0.000000 +268 2.670000 0.000000 0.000000 +269 2.680000 0.000000 0.000000 +270 2.690000 0.000000 0.000000 +271 2.700000 0.000000 0.000000 +272 2.710000 0.000000 0.000000 +273 2.720000 0.000000 0.000000 +274 2.730000 0.000000 0.000000 +275 2.740000 0.000000 0.000000 +276 2.750000 0.000000 0.000000 +277 2.760000 0.000000 0.000000 +278 2.770000 0.000000 0.000000 +279 2.780000 0.000000 0.000000 +280 2.790000 0.000000 0.000000 +281 2.800000 0.000000 0.000000 +282 2.810000 0.000000 0.000000 +283 2.820000 0.000000 0.000000 +284 2.830000 0.000000 0.000000 +285 2.840000 0.000000 0.000000 +286 2.850000 0.000000 0.000000 +287 2.860000 0.000000 0.000000 +288 2.870000 0.000000 0.000000 +289 2.880000 0.000000 0.000000 +290 2.890000 0.000000 0.000000 +291 2.900000 0.000000 0.000000 +292 2.910000 0.000000 0.000000 +293 2.920000 0.000000 0.000000 +294 2.930000 0.000000 0.000000 +295 2.940000 0.000000 0.000000 +296 2.950000 0.000000 0.000000 +297 2.960000 0.000000 0.000000 +298 2.970000 0.000000 0.000000 +299 2.980000 0.000000 0.000000 +300 2.990000 0.000000 0.000000 +301 3.000000 0.000000 0.000000 + + +TAIL_TAIL_Wc_0.8 +N 301 R 0.000001 3.000000 + +1 0.000001 0.000000 0.000000 +2 0.010000 3999999999995999707725824.000000 4799999999997598070678224896.000000 +3 0.020000 976562499937500004352.000000 585937499981249777762304.000000 +4 0.030000 7526705687148720128.000000 3010682275956881096704.000000 +5 0.040000 238418578125000000.000000 71525573583984353280.000000 +6 0.050000 16383999744000000.000000 3932159969279997440.000000 +7 0.060000 1837574546257248.500000 367514917824838144.000000 +8 0.070000 288990429236596.312500 49541219354796968.000000 +9 0.080000 58207645654678.343750 8731147992610928.000000 +10 0.090000 14162817119182.900391 1888376117671434.750000 +11 0.100000 3999996000000.000000 479999760000000.500000 +12 0.110000 1274521012945.708496 139038779115662.093750 +13 0.120000 448625279546.553955 44862594934250.781250 +14 0.130000 171687100967.122345 15848078337188.726562 +15 0.140000 70553781072.250778 6047489716531.549805 +16 0.150000 30829035351.054977 2466336874723.629883 +17 0.160000 14210616296.622902 1065805162943.433594 +18 0.170000 6865346349.879549 484618532348.129211 +19 0.180000 3457603256.036191 230510803894.961182 +20 0.190000 1807158928.004511 114139038296.617722 +21 0.200000 976499999.999998 58591874999.999847 +22 0.210000 543739902.726732 31072184111.878654 +23 0.220000 311127628.299641 16971560078.724821 +24 0.230000 182499493.379421 9522417580.006592 +25 0.240000 109507052.064558 5475875881.316449 +26 0.250000 67092480.000000 3220832255.999991 +27 0.260000 41903049.941880 1934285732.237306 +28 0.270000 26639528.522336 1184208483.196407 +29 0.280000 17216873.260370 738043867.822060 +30 0.290000 11298625.429098 467668459.533016 +31 0.300000 7521218.724186 300958488.336427 +32 0.310000 5073808.319410 196492716.046068 +33 0.320000 3465721.661655 130034411.505164 +34 0.330000 2395143.138865 87152427.788625 +35 0.340000 1673561.082347 59112555.692539 +36 0.350000 1181528.973318 40546867.041137 +37 0.360000 842332.557402 28108378.157278 +38 0.370000 606071.119890 19681641.931764 +39 0.380000 439893.177446 13912339.662092 +40 0.390000 321924.360071 9922853.684245 +41 0.400000 237442.016602 7137908.935547 +42 0.410000 176435.450812 5176287.635225 +43 0.420000 132031.660059 3782743.515595 +44 0.430000 99468.250044 2784687.558254 +45 0.440000 75416.262744 2064324.130372 +46 0.450000 57529.220585 1540535.337797 +47 0.460000 44139.942254 1156983.644674 +48 0.470000 34054.846645 874222.695500 +49 0.480000 26413.181465 664417.646696 +50 0.490000 20589.881497 507780.654581 +51 0.500000 16128.000000 390144.000000 +52 0.510000 12691.351515 301294.396513 +53 0.520000 10031.077542 233820.872331 +54 0.530000 7961.876154 182311.949517 +55 0.540000 6344.988397 142792.224654 +56 0.550000 5075.941991 112324.247003 +57 0.560000 4075.667156 88725.341557 +58 0.570000 3284.018178 70364.910655 +59 0.580000 2655.022026 56018.454503 +60 0.590000 2153.374227 44761.819610 +61 0.600000 1751.840750 35894.153820 +62 0.610000 1429.321668 28881.467437 +63 0.620000 1169.400839 23315.070198 +64 0.630000 959.254371 18880.806522 +65 0.640000 788.825286 15336.170940 +66 0.650000 650.196650 12493.203783 +67 0.660000 537.113366 10205.647944 +68 0.670000 444.615844 8359.261950 +69 0.680000 368.758212 6864.481939 +70 0.690000 306.390715 5650.839586 +71 0.700000 254.991024 4662.698464 +72 0.710000 212.532986 3855.984565 +73 0.720000 177.384120 3195.669530 +74 0.730000 148.225307 2653.826099 +75 0.740000 123.987627 2208.120224 +76 0.750000 103.802544 1840.637693 +77 0.760000 86.962472 1536.967937 +78 0.770000 72.889471 1285.486272 +79 0.780000 61.110325 1076.789779 +80 0.790000 51.236635 903.252555 +81 0.800000 42.948872 758.673996 +82 0.810000 35.983576 637.999825 +83 0.820000 30.123043 537.100183 +84 0.830000 25.186999 452.592612 +85 0.840000 21.025860 381.700456 +86 0.850000 17.515264 322.139305 +87 0.860000 14.551619 272.025666 +88 0.870000 12.048476 229.803356 +89 0.880000 9.933566 194.184004 +90 0.890000 8.146368 164.098852 +91 0.900000 6.636119 138.659624 +92 0.910000 5.360169 117.126674 +93 0.920000 4.282632 98.883003 +94 0.930000 3.373272 83.413022 +95 0.940000 2.606573 70.285155 +96 0.950000 1.960975 59.137553 +97 0.960000 1.418239 49.666347 +98 0.970000 0.962916 41.615965 +99 0.980000 0.581905 34.771137 +100 0.990000 0.264083 28.950277 +101 1.000000 -0.000000 24.000000 +102 1.010000 -0.218384 19.790571 +103 1.020000 -0.397913 16.212117 +104 1.030000 -0.544418 13.171468 +105 1.040000 -0.662870 10.589529 +106 1.050000 -0.757512 8.399073 +107 1.060000 -0.831965 6.542902 +108 1.070000 -0.889321 4.972300 +109 1.080000 -0.932223 3.645731 +110 1.090000 -0.962930 2.527753 +111 1.100000 -0.983372 1.588095 +112 1.110000 -0.995200 0.800882 +113 1.120000 -0.999824 0.143980 +114 1.130000 -0.999781 -0.058114 +115 1.140000 -0.998815 -0.135122 +116 1.150000 -0.997079 -0.211921 +117 1.160000 -0.994577 -0.288394 +118 1.170000 -0.991313 -0.364422 +119 1.180000 -0.987291 -0.439888 +120 1.190000 -0.982517 -0.514676 +121 1.200000 -0.977000 -0.588671 +122 1.210000 -0.970747 -0.661757 +123 1.220000 -0.963768 -0.733823 +124 1.230000 -0.956074 -0.804758 +125 1.240000 -0.947677 -0.874452 +126 1.250000 -0.938590 -0.942798 +127 1.260000 -0.928826 -1.009689 +128 1.270000 -0.918401 -1.075024 +129 1.280000 -0.907331 -1.138702 +130 1.290000 -0.895633 -1.200623 +131 1.300000 -0.883325 -1.260693 +132 1.310000 -0.870426 -1.318820 +133 1.320000 -0.856955 -1.374913 +134 1.330000 -0.842934 -1.428885 +135 1.340000 -0.828385 -1.480655 +136 1.350000 -0.813329 -1.530141 +137 1.360000 -0.797790 -1.577269 +138 1.370000 -0.781792 -1.621964 +139 1.380000 -0.765359 -1.664158 +140 1.390000 -0.748517 -1.703786 +141 1.400000 -0.731292 -1.740787 +142 1.410000 -0.713710 -1.775104 +143 1.420000 -0.695799 -1.806684 +144 1.430000 -0.677586 -1.835478 +145 1.440000 -0.659099 -1.861442 +146 1.450000 -0.640367 -1.884535 +147 1.460000 -0.621418 -1.904723 +148 1.470000 -0.602282 -1.921974 +149 1.480000 -0.582988 -1.936261 +150 1.490000 -0.563567 -1.947563 +151 1.500000 -0.544047 -1.955862 +152 1.510000 -0.524459 -1.961145 +153 1.520000 -0.504834 -1.963404 +154 1.530000 -0.485201 -1.962635 +155 1.540000 -0.465592 -1.958841 +156 1.550000 -0.446035 -1.952026 +157 1.560000 -0.426561 -1.942201 +158 1.570000 -0.407201 -1.929381 +159 1.580000 -0.387983 -1.913586 +160 1.590000 -0.368939 -1.894841 +161 1.600000 -0.350096 -1.873174 +162 1.610000 -0.331485 -1.848619 +163 1.620000 -0.313133 -1.821213 +164 1.630000 -0.295070 -1.790999 +165 1.640000 -0.277323 -1.758024 +166 1.650000 -0.259919 -1.722338 +167 1.660000 -0.242885 -1.683996 +168 1.670000 -0.226247 -1.643057 +169 1.680000 -0.210032 -1.599585 +170 1.690000 -0.194264 -1.553647 +171 1.700000 -0.178967 -1.505313 +172 1.710000 -0.164165 -1.454658 +173 1.720000 -0.149881 -1.401759 +174 1.730000 -0.136137 -1.346700 +175 1.740000 -0.122954 -1.289564 +176 1.750000 -0.110353 -1.230439 +177 1.760000 -0.098352 -1.169418 +178 1.770000 -0.086970 -1.106593 +179 1.780000 -0.076226 -1.042062 +180 1.790000 -0.066134 -0.975924 +181 1.800000 -0.056712 -0.908281 +182 1.810000 -0.047973 -0.839238 +183 1.820000 -0.039932 -0.768901 +184 1.830000 -0.032599 -0.697378 +185 1.840000 -0.025988 -0.624780 +186 1.850000 -0.020107 -0.551218 +187 1.860000 -0.014966 -0.476807 +188 1.870000 -0.010573 -0.401660 +189 1.880000 -0.006935 -0.325894 +190 1.890000 -0.004057 -0.249625 +191 1.900000 -0.001944 -0.172972 +192 1.910000 -0.000599 -0.096052 +193 1.920000 -0.000023 -0.018984 +194 1.930000 0.000000 0.000000 +195 1.940000 0.000000 0.000000 +196 1.950000 0.000000 0.000000 +197 1.960000 0.000000 0.000000 +198 1.970000 0.000000 0.000000 +199 1.980000 0.000000 0.000000 +200 1.990000 0.000000 0.000000 +201 2.000000 0.000000 0.000000 +202 2.010000 0.000000 0.000000 +203 2.020000 0.000000 0.000000 +204 2.030000 0.000000 0.000000 +205 2.040000 0.000000 0.000000 +206 2.050000 0.000000 0.000000 +207 2.060000 0.000000 0.000000 +208 2.070000 0.000000 0.000000 +209 2.080000 0.000000 0.000000 +210 2.090000 0.000000 0.000000 +211 2.100000 0.000000 0.000000 +212 2.110000 0.000000 0.000000 +213 2.120000 0.000000 0.000000 +214 2.130000 0.000000 0.000000 +215 2.140000 0.000000 0.000000 +216 2.150000 0.000000 0.000000 +217 2.160000 0.000000 0.000000 +218 2.170000 0.000000 0.000000 +219 2.180000 0.000000 0.000000 +220 2.190000 0.000000 0.000000 +221 2.200000 0.000000 0.000000 +222 2.210000 0.000000 0.000000 +223 2.220000 0.000000 0.000000 +224 2.230000 0.000000 0.000000 +225 2.240000 0.000000 0.000000 +226 2.250000 0.000000 0.000000 +227 2.260000 0.000000 0.000000 +228 2.270000 0.000000 0.000000 +229 2.280000 0.000000 0.000000 +230 2.290000 0.000000 0.000000 +231 2.300000 0.000000 0.000000 +232 2.310000 0.000000 0.000000 +233 2.320000 0.000000 0.000000 +234 2.330000 0.000000 0.000000 +235 2.340000 0.000000 0.000000 +236 2.350000 0.000000 0.000000 +237 2.360000 0.000000 0.000000 +238 2.370000 0.000000 0.000000 +239 2.380000 0.000000 0.000000 +240 2.390000 0.000000 0.000000 +241 2.400000 0.000000 0.000000 +242 2.410000 0.000000 0.000000 +243 2.420000 0.000000 0.000000 +244 2.430000 0.000000 0.000000 +245 2.440000 0.000000 0.000000 +246 2.450000 0.000000 0.000000 +247 2.460000 0.000000 0.000000 +248 2.470000 0.000000 0.000000 +249 2.480000 0.000000 0.000000 +250 2.490000 0.000000 0.000000 +251 2.500000 0.000000 0.000000 +252 2.510000 0.000000 0.000000 +253 2.520000 0.000000 0.000000 +254 2.530000 0.000000 0.000000 +255 2.540000 0.000000 0.000000 +256 2.550000 0.000000 0.000000 +257 2.560000 0.000000 0.000000 +258 2.570000 0.000000 0.000000 +259 2.580000 0.000000 0.000000 +260 2.590000 0.000000 0.000000 +261 2.600000 0.000000 0.000000 +262 2.610000 0.000000 0.000000 +263 2.620000 0.000000 0.000000 +264 2.630000 0.000000 0.000000 +265 2.640000 0.000000 0.000000 +266 2.650000 0.000000 0.000000 +267 2.660000 0.000000 0.000000 +268 2.670000 0.000000 0.000000 +269 2.680000 0.000000 0.000000 +270 2.690000 0.000000 0.000000 +271 2.700000 0.000000 0.000000 +272 2.710000 0.000000 0.000000 +273 2.720000 0.000000 0.000000 +274 2.730000 0.000000 0.000000 +275 2.740000 0.000000 0.000000 +276 2.750000 0.000000 0.000000 +277 2.760000 0.000000 0.000000 +278 2.770000 0.000000 0.000000 +279 2.780000 0.000000 0.000000 +280 2.790000 0.000000 0.000000 +281 2.800000 0.000000 0.000000 +282 2.810000 0.000000 0.000000 +283 2.820000 0.000000 0.000000 +284 2.830000 0.000000 0.000000 +285 2.840000 0.000000 0.000000 +286 2.850000 0.000000 0.000000 +287 2.860000 0.000000 0.000000 +288 2.870000 0.000000 0.000000 +289 2.880000 0.000000 0.000000 +290 2.890000 0.000000 0.000000 +291 2.900000 0.000000 0.000000 +292 2.910000 0.000000 0.000000 +293 2.920000 0.000000 0.000000 +294 2.930000 0.000000 0.000000 +295 2.940000 0.000000 0.000000 +296 2.950000 0.000000 0.000000 +297 2.960000 0.000000 0.000000 +298 2.970000 0.000000 0.000000 +299 2.980000 0.000000 0.000000 +300 2.990000 0.000000 0.000000 +301 3.000000 0.000000 0.000000 + + +TAIL_TAIL_Wc_0.9 +N 301 R 0.000001 3.000000 + +1 0.000001 0.000000 0.000000 +2 0.010000 3999999999995999707725824.000000 4799999999997598070678224896.000000 +3 0.020000 976562499937500004352.000000 585937499981249777762304.000000 +4 0.030000 7526705687148720128.000000 3010682275956881096704.000000 +5 0.040000 238418578125000000.000000 71525573583984353280.000000 +6 0.050000 16383999744000000.000000 3932159969279997440.000000 +7 0.060000 1837574546257248.500000 367514917824838144.000000 +8 0.070000 288990429236596.312500 49541219354796968.000000 +9 0.080000 58207645654678.343750 8731147992610928.000000 +10 0.090000 14162817119182.900391 1888376117671434.750000 +11 0.100000 3999996000000.000000 479999760000000.500000 +12 0.110000 1274521012945.708496 139038779115662.093750 +13 0.120000 448625279546.553955 44862594934250.781250 +14 0.130000 171687100967.122345 15848078337188.726562 +15 0.140000 70553781072.250778 6047489716531.549805 +16 0.150000 30829035351.054977 2466336874723.629883 +17 0.160000 14210616296.622902 1065805162943.433594 +18 0.170000 6865346349.879549 484618532348.129211 +19 0.180000 3457603256.036191 230510803894.961182 +20 0.190000 1807158928.004511 114139038296.617722 +21 0.200000 976499999.999998 58591874999.999847 +22 0.210000 543739902.726732 31072184111.878654 +23 0.220000 311127628.299641 16971560078.724821 +24 0.230000 182499493.379421 9522417580.006592 +25 0.240000 109507052.064558 5475875881.316449 +26 0.250000 67092480.000000 3220832255.999991 +27 0.260000 41903049.941880 1934285732.237306 +28 0.270000 26639528.522336 1184208483.196407 +29 0.280000 17216873.260370 738043867.822060 +30 0.290000 11298625.429098 467668459.533016 +31 0.300000 7521218.724186 300958488.336427 +32 0.310000 5073808.319410 196492716.046068 +33 0.320000 3465721.661655 130034411.505164 +34 0.330000 2395143.138865 87152427.788625 +35 0.340000 1673561.082347 59112555.692539 +36 0.350000 1181528.973318 40546867.041137 +37 0.360000 842332.557402 28108378.157278 +38 0.370000 606071.119890 19681641.931764 +39 0.380000 439893.177446 13912339.662092 +40 0.390000 321924.360071 9922853.684245 +41 0.400000 237442.016602 7137908.935547 +42 0.410000 176435.450812 5176287.635225 +43 0.420000 132031.660059 3782743.515595 +44 0.430000 99468.250044 2784687.558254 +45 0.440000 75416.262744 2064324.130372 +46 0.450000 57529.220585 1540535.337797 +47 0.460000 44139.942254 1156983.644674 +48 0.470000 34054.846645 874222.695500 +49 0.480000 26413.181465 664417.646696 +50 0.490000 20589.881497 507780.654581 +51 0.500000 16128.000000 390144.000000 +52 0.510000 12691.351515 301294.396513 +53 0.520000 10031.077542 233820.872331 +54 0.530000 7961.876154 182311.949517 +55 0.540000 6344.988397 142792.224654 +56 0.550000 5075.941991 112324.247003 +57 0.560000 4075.667156 88725.341557 +58 0.570000 3284.018178 70364.910655 +59 0.580000 2655.022026 56018.454503 +60 0.590000 2153.374227 44761.819610 +61 0.600000 1751.840750 35894.153820 +62 0.610000 1429.321668 28881.467437 +63 0.620000 1169.400839 23315.070198 +64 0.630000 959.254371 18880.806522 +65 0.640000 788.825286 15336.170940 +66 0.650000 650.196650 12493.203783 +67 0.660000 537.113366 10205.647944 +68 0.670000 444.615844 8359.261950 +69 0.680000 368.758212 6864.481939 +70 0.690000 306.390715 5650.839586 +71 0.700000 254.991024 4662.698464 +72 0.710000 212.532986 3855.984565 +73 0.720000 177.384120 3195.669530 +74 0.730000 148.225307 2653.826099 +75 0.740000 123.987627 2208.120224 +76 0.750000 103.802544 1840.637693 +77 0.760000 86.962472 1536.967937 +78 0.770000 72.889471 1285.486272 +79 0.780000 61.110325 1076.789779 +80 0.790000 51.236635 903.252555 +81 0.800000 42.948872 758.673996 +82 0.810000 35.983576 637.999825 +83 0.820000 30.123043 537.100183 +84 0.830000 25.186999 452.592612 +85 0.840000 21.025860 381.700456 +86 0.850000 17.515264 322.139305 +87 0.860000 14.551619 272.025666 +88 0.870000 12.048476 229.803356 +89 0.880000 9.933566 194.184004 +90 0.890000 8.146368 164.098852 +91 0.900000 6.636119 138.659624 +92 0.910000 5.360169 117.126674 +93 0.920000 4.282632 98.883003 +94 0.930000 3.373272 83.413022 +95 0.940000 2.606573 70.285155 +96 0.950000 1.960975 59.137553 +97 0.960000 1.418239 49.666347 +98 0.970000 0.962916 41.615965 +99 0.980000 0.581905 34.771137 +100 0.990000 0.264083 28.950277 +101 1.000000 -0.000000 24.000000 +102 1.010000 -0.218384 19.790571 +103 1.020000 -0.397913 16.212117 +104 1.030000 -0.544418 13.171468 +105 1.040000 -0.662870 10.589529 +106 1.050000 -0.757512 8.399073 +107 1.060000 -0.831965 6.542902 +108 1.070000 -0.889321 4.972300 +109 1.080000 -0.932223 3.645731 +110 1.090000 -0.962930 2.527753 +111 1.100000 -0.983372 1.588095 +112 1.110000 -0.995200 0.800882 +113 1.120000 -0.999824 0.143980 +114 1.130000 -0.999827 -0.045919 +115 1.140000 -0.999063 -0.106781 +116 1.150000 -0.997692 -0.167513 +117 1.160000 -0.995714 -0.228040 +118 1.170000 -0.993132 -0.288290 +119 1.180000 -0.989949 -0.348189 +120 1.190000 -0.986169 -0.407664 +121 1.200000 -0.981798 -0.466642 +122 1.210000 -0.976839 -0.525051 +123 1.220000 -0.971299 -0.582821 +124 1.230000 -0.965185 -0.639880 +125 1.240000 -0.958504 -0.696160 +126 1.250000 -0.951264 -0.751592 +127 1.260000 -0.943475 -0.806108 +128 1.270000 -0.935145 -0.859642 +129 1.280000 -0.926285 -0.912129 +130 1.290000 -0.916906 -0.963505 +131 1.300000 -0.907019 -1.013706 +132 1.310000 -0.896636 -1.062673 +133 1.320000 -0.885770 -1.110344 +134 1.330000 -0.874434 -1.156663 +135 1.340000 -0.862642 -1.201573 +136 1.350000 -0.850407 -1.245019 +137 1.360000 -0.837746 -1.286948 +138 1.370000 -0.824674 -1.327309 +139 1.380000 -0.811205 -1.366053 +140 1.390000 -0.797358 -1.403132 +141 1.400000 -0.783149 -1.438502 +142 1.410000 -0.768594 -1.472120 +143 1.420000 -0.753712 -1.503944 +144 1.430000 -0.738521 -1.533936 +145 1.440000 -0.723040 -1.562058 +146 1.450000 -0.707286 -1.588278 +147 1.460000 -0.691281 -1.612562 +148 1.470000 -0.675042 -1.634882 +149 1.480000 -0.658590 -1.655210 +150 1.490000 -0.641944 -1.673522 +151 1.500000 -0.625126 -1.689794 +152 1.510000 -0.608155 -1.704008 +153 1.520000 -0.591053 -1.716146 +154 1.530000 -0.573839 -1.726192 +155 1.540000 -0.556536 -1.734136 +156 1.550000 -0.539164 -1.739967 +157 1.560000 -0.521744 -1.743678 +158 1.570000 -0.504297 -1.745265 +159 1.580000 -0.486845 -1.744725 +160 1.590000 -0.469410 -1.742060 +161 1.600000 -0.452011 -1.737272 +162 1.610000 -0.434671 -1.730368 +163 1.620000 -0.417411 -1.721355 +164 1.630000 -0.400251 -1.710245 +165 1.640000 -0.383213 -1.697052 +166 1.650000 -0.366317 -1.681791 +167 1.660000 -0.349584 -1.664481 +168 1.670000 -0.333034 -1.645143 +169 1.680000 -0.316688 -1.623800 +170 1.690000 -0.300565 -1.600480 +171 1.700000 -0.284685 -1.575209 +172 1.710000 -0.269067 -1.548019 +173 1.720000 -0.253731 -1.518943 +174 1.730000 -0.238694 -1.488017 +175 1.740000 -0.223976 -1.455278 +176 1.750000 -0.209595 -1.420765 +177 1.760000 -0.195567 -1.384522 +178 1.770000 -0.181910 -1.346592 +179 1.780000 -0.168640 -1.307021 +180 1.790000 -0.155775 -1.265858 +181 1.800000 -0.143328 -1.223153 +182 1.810000 -0.131317 -1.178957 +183 1.820000 -0.119754 -1.133325 +184 1.830000 -0.108655 -1.086312 +185 1.840000 -0.098032 -1.037976 +186 1.850000 -0.087899 -0.988375 +187 1.860000 -0.078269 -0.937570 +188 1.870000 -0.069152 -0.885622 +189 1.880000 -0.060560 -0.832596 +190 1.890000 -0.052503 -0.778555 +191 1.900000 -0.044992 -0.723566 +192 1.910000 -0.038035 -0.667695 +193 1.920000 -0.031641 -0.611011 +194 1.930000 -0.025817 -0.553582 +195 1.940000 -0.020571 -0.495479 +196 1.950000 -0.015910 -0.436772 +197 1.960000 -0.011838 -0.377533 +198 1.970000 -0.008360 -0.317834 +199 1.980000 -0.005482 -0.257747 +200 1.990000 -0.003207 -0.197347 +201 2.000000 -0.001536 -0.136706 +202 2.010000 -0.000473 -0.075899 +203 2.020000 -0.000018 -0.014999 +204 2.030000 0.000000 0.000000 +205 2.040000 0.000000 0.000000 +206 2.050000 0.000000 0.000000 +207 2.060000 0.000000 0.000000 +208 2.070000 0.000000 0.000000 +209 2.080000 0.000000 0.000000 +210 2.090000 0.000000 0.000000 +211 2.100000 0.000000 0.000000 +212 2.110000 0.000000 0.000000 +213 2.120000 0.000000 0.000000 +214 2.130000 0.000000 0.000000 +215 2.140000 0.000000 0.000000 +216 2.150000 0.000000 0.000000 +217 2.160000 0.000000 0.000000 +218 2.170000 0.000000 0.000000 +219 2.180000 0.000000 0.000000 +220 2.190000 0.000000 0.000000 +221 2.200000 0.000000 0.000000 +222 2.210000 0.000000 0.000000 +223 2.220000 0.000000 0.000000 +224 2.230000 0.000000 0.000000 +225 2.240000 0.000000 0.000000 +226 2.250000 0.000000 0.000000 +227 2.260000 0.000000 0.000000 +228 2.270000 0.000000 0.000000 +229 2.280000 0.000000 0.000000 +230 2.290000 0.000000 0.000000 +231 2.300000 0.000000 0.000000 +232 2.310000 0.000000 0.000000 +233 2.320000 0.000000 0.000000 +234 2.330000 0.000000 0.000000 +235 2.340000 0.000000 0.000000 +236 2.350000 0.000000 0.000000 +237 2.360000 0.000000 0.000000 +238 2.370000 0.000000 0.000000 +239 2.380000 0.000000 0.000000 +240 2.390000 0.000000 0.000000 +241 2.400000 0.000000 0.000000 +242 2.410000 0.000000 0.000000 +243 2.420000 0.000000 0.000000 +244 2.430000 0.000000 0.000000 +245 2.440000 0.000000 0.000000 +246 2.450000 0.000000 0.000000 +247 2.460000 0.000000 0.000000 +248 2.470000 0.000000 0.000000 +249 2.480000 0.000000 0.000000 +250 2.490000 0.000000 0.000000 +251 2.500000 0.000000 0.000000 +252 2.510000 0.000000 0.000000 +253 2.520000 0.000000 0.000000 +254 2.530000 0.000000 0.000000 +255 2.540000 0.000000 0.000000 +256 2.550000 0.000000 0.000000 +257 2.560000 0.000000 0.000000 +258 2.570000 0.000000 0.000000 +259 2.580000 0.000000 0.000000 +260 2.590000 0.000000 0.000000 +261 2.600000 0.000000 0.000000 +262 2.610000 0.000000 0.000000 +263 2.620000 0.000000 0.000000 +264 2.630000 0.000000 0.000000 +265 2.640000 0.000000 0.000000 +266 2.650000 0.000000 0.000000 +267 2.660000 0.000000 0.000000 +268 2.670000 0.000000 0.000000 +269 2.680000 0.000000 0.000000 +270 2.690000 0.000000 0.000000 +271 2.700000 0.000000 0.000000 +272 2.710000 0.000000 0.000000 +273 2.720000 0.000000 0.000000 +274 2.730000 0.000000 0.000000 +275 2.740000 0.000000 0.000000 +276 2.750000 0.000000 0.000000 +277 2.760000 0.000000 0.000000 +278 2.770000 0.000000 0.000000 +279 2.780000 0.000000 0.000000 +280 2.790000 0.000000 0.000000 +281 2.800000 0.000000 0.000000 +282 2.810000 0.000000 0.000000 +283 2.820000 0.000000 0.000000 +284 2.830000 0.000000 0.000000 +285 2.840000 0.000000 0.000000 +286 2.850000 0.000000 0.000000 +287 2.860000 0.000000 0.000000 +288 2.870000 0.000000 0.000000 +289 2.880000 0.000000 0.000000 +290 2.890000 0.000000 0.000000 +291 2.900000 0.000000 0.000000 +292 2.910000 0.000000 0.000000 +293 2.920000 0.000000 0.000000 +294 2.930000 0.000000 0.000000 +295 2.940000 0.000000 0.000000 +296 2.950000 0.000000 0.000000 +297 2.960000 0.000000 0.000000 +298 2.970000 0.000000 0.000000 +299 2.980000 0.000000 0.000000 +300 2.990000 0.000000 0.000000 +301 3.000000 0.000000 0.000000 + + +TAIL_TAIL_Wc_1.0 +N 301 R 0.000001 3.000000 + +1 0.000001 0.000000 0.000000 +2 0.010000 3999999999995999707725824.000000 4799999999997598070678224896.000000 +3 0.020000 976562499937500004352.000000 585937499981249777762304.000000 +4 0.030000 7526705687148720128.000000 3010682275956881096704.000000 +5 0.040000 238418578125000000.000000 71525573583984353280.000000 +6 0.050000 16383999744000000.000000 3932159969279997440.000000 +7 0.060000 1837574546257248.500000 367514917824838144.000000 +8 0.070000 288990429236596.312500 49541219354796968.000000 +9 0.080000 58207645654678.343750 8731147992610928.000000 +10 0.090000 14162817119182.900391 1888376117671434.750000 +11 0.100000 3999996000000.000000 479999760000000.500000 +12 0.110000 1274521012945.708496 139038779115662.093750 +13 0.120000 448625279546.553955 44862594934250.781250 +14 0.130000 171687100967.122345 15848078337188.726562 +15 0.140000 70553781072.250778 6047489716531.549805 +16 0.150000 30829035351.054977 2466336874723.629883 +17 0.160000 14210616296.622902 1065805162943.433594 +18 0.170000 6865346349.879549 484618532348.129211 +19 0.180000 3457603256.036191 230510803894.961182 +20 0.190000 1807158928.004511 114139038296.617722 +21 0.200000 976499999.999998 58591874999.999847 +22 0.210000 543739902.726732 31072184111.878654 +23 0.220000 311127628.299641 16971560078.724821 +24 0.230000 182499493.379421 9522417580.006592 +25 0.240000 109507052.064558 5475875881.316449 +26 0.250000 67092480.000000 3220832255.999991 +27 0.260000 41903049.941880 1934285732.237306 +28 0.270000 26639528.522336 1184208483.196407 +29 0.280000 17216873.260370 738043867.822060 +30 0.290000 11298625.429098 467668459.533016 +31 0.300000 7521218.724186 300958488.336427 +32 0.310000 5073808.319410 196492716.046068 +33 0.320000 3465721.661655 130034411.505164 +34 0.330000 2395143.138865 87152427.788625 +35 0.340000 1673561.082347 59112555.692539 +36 0.350000 1181528.973318 40546867.041137 +37 0.360000 842332.557402 28108378.157278 +38 0.370000 606071.119890 19681641.931764 +39 0.380000 439893.177446 13912339.662092 +40 0.390000 321924.360071 9922853.684245 +41 0.400000 237442.016602 7137908.935547 +42 0.410000 176435.450812 5176287.635225 +43 0.420000 132031.660059 3782743.515595 +44 0.430000 99468.250044 2784687.558254 +45 0.440000 75416.262744 2064324.130372 +46 0.450000 57529.220585 1540535.337797 +47 0.460000 44139.942254 1156983.644674 +48 0.470000 34054.846645 874222.695500 +49 0.480000 26413.181465 664417.646696 +50 0.490000 20589.881497 507780.654581 +51 0.500000 16128.000000 390144.000000 +52 0.510000 12691.351515 301294.396513 +53 0.520000 10031.077542 233820.872331 +54 0.530000 7961.876154 182311.949517 +55 0.540000 6344.988397 142792.224654 +56 0.550000 5075.941991 112324.247003 +57 0.560000 4075.667156 88725.341557 +58 0.570000 3284.018178 70364.910655 +59 0.580000 2655.022026 56018.454503 +60 0.590000 2153.374227 44761.819610 +61 0.600000 1751.840750 35894.153820 +62 0.610000 1429.321668 28881.467437 +63 0.620000 1169.400839 23315.070198 +64 0.630000 959.254371 18880.806522 +65 0.640000 788.825286 15336.170940 +66 0.650000 650.196650 12493.203783 +67 0.660000 537.113366 10205.647944 +68 0.670000 444.615844 8359.261950 +69 0.680000 368.758212 6864.481939 +70 0.690000 306.390715 5650.839586 +71 0.700000 254.991024 4662.698464 +72 0.710000 212.532986 3855.984565 +73 0.720000 177.384120 3195.669530 +74 0.730000 148.225307 2653.826099 +75 0.740000 123.987627 2208.120224 +76 0.750000 103.802544 1840.637693 +77 0.760000 86.962472 1536.967937 +78 0.770000 72.889471 1285.486272 +79 0.780000 61.110325 1076.789779 +80 0.790000 51.236635 903.252555 +81 0.800000 42.948872 758.673996 +82 0.810000 35.983576 637.999825 +83 0.820000 30.123043 537.100183 +84 0.830000 25.186999 452.592612 +85 0.840000 21.025860 381.700456 +86 0.850000 17.515264 322.139305 +87 0.860000 14.551619 272.025666 +88 0.870000 12.048476 229.803356 +89 0.880000 9.933566 194.184004 +90 0.890000 8.146368 164.098852 +91 0.900000 6.636119 138.659624 +92 0.910000 5.360169 117.126674 +93 0.920000 4.282632 98.883003 +94 0.930000 3.373272 83.413022 +95 0.940000 2.606573 70.285155 +96 0.950000 1.960975 59.137553 +97 0.960000 1.418239 49.666347 +98 0.970000 0.962916 41.615965 +99 0.980000 0.581905 34.771137 +100 0.990000 0.264083 28.950277 +101 1.000000 -0.000000 24.000000 +102 1.010000 -0.218384 19.790571 +103 1.020000 -0.397913 16.212117 +104 1.030000 -0.544418 13.171468 +105 1.040000 -0.662870 10.589529 +106 1.050000 -0.757512 8.399073 +107 1.060000 -0.831965 6.542902 +108 1.070000 -0.889321 4.972300 +109 1.080000 -0.932223 3.645731 +110 1.090000 -0.962930 2.527753 +111 1.100000 -0.983372 1.588095 +112 1.110000 -0.995200 0.800882 +113 1.120000 -0.999824 0.143980 +114 1.130000 -0.999860 -0.037195 +115 1.140000 -0.999241 -0.086503 +116 1.150000 -0.998130 -0.135725 +117 1.160000 -0.996527 -0.184813 +118 1.170000 -0.994434 -0.233719 +119 1.180000 -0.991854 -0.282395 +120 1.190000 -0.988787 -0.330791 +121 1.200000 -0.985239 -0.378862 +122 1.210000 -0.981211 -0.426558 +123 1.220000 -0.976709 -0.473833 +124 1.230000 -0.971736 -0.520641 +125 1.240000 -0.966298 -0.566935 +126 1.250000 -0.960399 -0.612669 +127 1.260000 -0.954047 -0.657799 +128 1.270000 -0.947246 -0.702280 +129 1.280000 -0.940003 -0.746067 +130 1.290000 -0.932327 -0.789119 +131 1.300000 -0.924224 -0.831391 +132 1.310000 -0.915702 -0.872843 +133 1.320000 -0.906770 -0.913434 +134 1.330000 -0.897436 -0.953123 +135 1.340000 -0.887710 -0.991872 +136 1.350000 -0.877602 -1.029642 +137 1.360000 -0.867121 -1.066395 +138 1.370000 -0.856277 -1.102096 +139 1.380000 -0.845082 -1.136710 +140 1.390000 -0.833547 -1.170202 +141 1.400000 -0.821682 -1.202539 +142 1.410000 -0.809500 -1.233689 +143 1.420000 -0.797013 -1.263622 +144 1.430000 -0.784232 -1.292307 +145 1.440000 -0.771171 -1.319717 +146 1.450000 -0.757842 -1.345825 +147 1.460000 -0.744259 -1.370605 +148 1.470000 -0.730434 -1.394032 +149 1.480000 -0.716383 -1.416083 +150 1.490000 -0.702117 -1.436737 +151 1.500000 -0.687653 -1.455973 +152 1.510000 -0.673003 -1.473772 +153 1.520000 -0.658182 -1.490117 +154 1.530000 -0.643205 -1.504991 +155 1.540000 -0.628087 -1.518380 +156 1.550000 -0.612843 -1.530270 +157 1.560000 -0.597487 -1.540650 +158 1.570000 -0.582035 -1.549510 +159 1.580000 -0.566502 -1.556841 +160 1.590000 -0.550903 -1.562635 +161 1.600000 -0.535254 -1.566887 +162 1.610000 -0.519570 -1.569593 +163 1.620000 -0.503867 -1.570749 +164 1.630000 -0.488161 -1.570356 +165 1.640000 -0.472465 -1.568413 +166 1.650000 -0.456797 -1.564922 +167 1.660000 -0.441172 -1.559886 +168 1.670000 -0.425605 -1.553311 +169 1.680000 -0.410111 -1.545204 +170 1.690000 -0.394706 -1.535571 +171 1.700000 -0.379405 -1.524423 +172 1.710000 -0.364222 -1.511770 +173 1.720000 -0.349174 -1.497626 +174 1.730000 -0.334275 -1.482003 +175 1.740000 -0.319539 -1.464918 +176 1.750000 -0.304981 -1.446388 +177 1.760000 -0.290616 -1.426430 +178 1.770000 -0.276457 -1.405064 +179 1.780000 -0.262519 -1.382311 +180 1.790000 -0.248816 -1.358195 +181 1.800000 -0.235360 -1.332738 +182 1.810000 -0.222165 -1.305965 +183 1.820000 -0.209245 -1.277904 +184 1.830000 -0.196611 -1.248582 +185 1.840000 -0.184277 -1.218028 +186 1.850000 -0.172255 -1.186271 +187 1.860000 -0.160556 -1.153344 +188 1.870000 -0.149192 -1.119279 +189 1.880000 -0.138174 -1.084109 +190 1.890000 -0.127513 -1.047869 +191 1.900000 -0.117220 -1.010595 +192 1.910000 -0.107305 -0.972323 +193 1.920000 -0.097777 -0.933093 +194 1.930000 -0.088646 -0.892941 +195 1.940000 -0.079921 -0.851908 +196 1.950000 -0.071610 -0.810034 +197 1.960000 -0.063723 -0.767361 +198 1.970000 -0.056266 -0.723931 +199 1.980000 -0.049247 -0.679786 +200 1.990000 -0.042672 -0.634970 +201 2.000000 -0.036549 -0.589528 +202 2.010000 -0.030884 -0.543504 +203 2.020000 -0.025681 -0.496943 +204 2.030000 -0.020946 -0.449892 +205 2.040000 -0.016685 -0.402397 +206 2.050000 -0.012900 -0.354505 +207 2.060000 -0.009596 -0.306263 +208 2.070000 -0.006776 -0.257719 +209 2.080000 -0.004442 -0.208921 +210 2.090000 -0.002598 -0.159916 +211 2.100000 -0.001244 -0.110754 +212 2.110000 -0.000383 -0.061482 +213 2.120000 -0.000015 -0.012150 +214 2.130000 0.000000 0.000000 +215 2.140000 0.000000 0.000000 +216 2.150000 0.000000 0.000000 +217 2.160000 0.000000 0.000000 +218 2.170000 0.000000 0.000000 +219 2.180000 0.000000 0.000000 +220 2.190000 0.000000 0.000000 +221 2.200000 0.000000 0.000000 +222 2.210000 0.000000 0.000000 +223 2.220000 0.000000 0.000000 +224 2.230000 0.000000 0.000000 +225 2.240000 0.000000 0.000000 +226 2.250000 0.000000 0.000000 +227 2.260000 0.000000 0.000000 +228 2.270000 0.000000 0.000000 +229 2.280000 0.000000 0.000000 +230 2.290000 0.000000 0.000000 +231 2.300000 0.000000 0.000000 +232 2.310000 0.000000 0.000000 +233 2.320000 0.000000 0.000000 +234 2.330000 0.000000 0.000000 +235 2.340000 0.000000 0.000000 +236 2.350000 0.000000 0.000000 +237 2.360000 0.000000 0.000000 +238 2.370000 0.000000 0.000000 +239 2.380000 0.000000 0.000000 +240 2.390000 0.000000 0.000000 +241 2.400000 0.000000 0.000000 +242 2.410000 0.000000 0.000000 +243 2.420000 0.000000 0.000000 +244 2.430000 0.000000 0.000000 +245 2.440000 0.000000 0.000000 +246 2.450000 0.000000 0.000000 +247 2.460000 0.000000 0.000000 +248 2.470000 0.000000 0.000000 +249 2.480000 0.000000 0.000000 +250 2.490000 0.000000 0.000000 +251 2.500000 0.000000 0.000000 +252 2.510000 0.000000 0.000000 +253 2.520000 0.000000 0.000000 +254 2.530000 0.000000 0.000000 +255 2.540000 0.000000 0.000000 +256 2.550000 0.000000 0.000000 +257 2.560000 0.000000 0.000000 +258 2.570000 0.000000 0.000000 +259 2.580000 0.000000 0.000000 +260 2.590000 0.000000 0.000000 +261 2.600000 0.000000 0.000000 +262 2.610000 0.000000 0.000000 +263 2.620000 0.000000 0.000000 +264 2.630000 0.000000 0.000000 +265 2.640000 0.000000 0.000000 +266 2.650000 0.000000 0.000000 +267 2.660000 0.000000 0.000000 +268 2.670000 0.000000 0.000000 +269 2.680000 0.000000 0.000000 +270 2.690000 0.000000 0.000000 +271 2.700000 0.000000 0.000000 +272 2.710000 0.000000 0.000000 +273 2.720000 0.000000 0.000000 +274 2.730000 0.000000 0.000000 +275 2.740000 0.000000 0.000000 +276 2.750000 0.000000 0.000000 +277 2.760000 0.000000 0.000000 +278 2.770000 0.000000 0.000000 +279 2.780000 0.000000 0.000000 +280 2.790000 0.000000 0.000000 +281 2.800000 0.000000 0.000000 +282 2.810000 0.000000 0.000000 +283 2.820000 0.000000 0.000000 +284 2.830000 0.000000 0.000000 +285 2.840000 0.000000 0.000000 +286 2.850000 0.000000 0.000000 +287 2.860000 0.000000 0.000000 +288 2.870000 0.000000 0.000000 +289 2.880000 0.000000 0.000000 +290 2.890000 0.000000 0.000000 +291 2.900000 0.000000 0.000000 +292 2.910000 0.000000 0.000000 +293 2.920000 0.000000 0.000000 +294 2.930000 0.000000 0.000000 +295 2.940000 0.000000 0.000000 +296 2.950000 0.000000 0.000000 +297 2.960000 0.000000 0.000000 +298 2.970000 0.000000 0.000000 +299 2.980000 0.000000 0.000000 +300 2.990000 0.000000 0.000000 +301 3.000000 0.000000 0.000000 + + +TAIL_TAIL_Wc_1.1 +N 301 R 0.000001 3.000000 + +1 0.000001 0.000000 0.000000 +2 0.010000 3999999999995999707725824.000000 4799999999997598070678224896.000000 +3 0.020000 976562499937500004352.000000 585937499981249777762304.000000 +4 0.030000 7526705687148720128.000000 3010682275956881096704.000000 +5 0.040000 238418578125000000.000000 71525573583984353280.000000 +6 0.050000 16383999744000000.000000 3932159969279997440.000000 +7 0.060000 1837574546257248.500000 367514917824838144.000000 +8 0.070000 288990429236596.312500 49541219354796968.000000 +9 0.080000 58207645654678.343750 8731147992610928.000000 +10 0.090000 14162817119182.900391 1888376117671434.750000 +11 0.100000 3999996000000.000000 479999760000000.500000 +12 0.110000 1274521012945.708496 139038779115662.093750 +13 0.120000 448625279546.553955 44862594934250.781250 +14 0.130000 171687100967.122345 15848078337188.726562 +15 0.140000 70553781072.250778 6047489716531.549805 +16 0.150000 30829035351.054977 2466336874723.629883 +17 0.160000 14210616296.622902 1065805162943.433594 +18 0.170000 6865346349.879549 484618532348.129211 +19 0.180000 3457603256.036191 230510803894.961182 +20 0.190000 1807158928.004511 114139038296.617722 +21 0.200000 976499999.999998 58591874999.999847 +22 0.210000 543739902.726732 31072184111.878654 +23 0.220000 311127628.299641 16971560078.724821 +24 0.230000 182499493.379421 9522417580.006592 +25 0.240000 109507052.064558 5475875881.316449 +26 0.250000 67092480.000000 3220832255.999991 +27 0.260000 41903049.941880 1934285732.237306 +28 0.270000 26639528.522336 1184208483.196407 +29 0.280000 17216873.260370 738043867.822060 +30 0.290000 11298625.429098 467668459.533016 +31 0.300000 7521218.724186 300958488.336427 +32 0.310000 5073808.319410 196492716.046068 +33 0.320000 3465721.661655 130034411.505164 +34 0.330000 2395143.138865 87152427.788625 +35 0.340000 1673561.082347 59112555.692539 +36 0.350000 1181528.973318 40546867.041137 +37 0.360000 842332.557402 28108378.157278 +38 0.370000 606071.119890 19681641.931764 +39 0.380000 439893.177446 13912339.662092 +40 0.390000 321924.360071 9922853.684245 +41 0.400000 237442.016602 7137908.935547 +42 0.410000 176435.450812 5176287.635225 +43 0.420000 132031.660059 3782743.515595 +44 0.430000 99468.250044 2784687.558254 +45 0.440000 75416.262744 2064324.130372 +46 0.450000 57529.220585 1540535.337797 +47 0.460000 44139.942254 1156983.644674 +48 0.470000 34054.846645 874222.695500 +49 0.480000 26413.181465 664417.646696 +50 0.490000 20589.881497 507780.654581 +51 0.500000 16128.000000 390144.000000 +52 0.510000 12691.351515 301294.396513 +53 0.520000 10031.077542 233820.872331 +54 0.530000 7961.876154 182311.949517 +55 0.540000 6344.988397 142792.224654 +56 0.550000 5075.941991 112324.247003 +57 0.560000 4075.667156 88725.341557 +58 0.570000 3284.018178 70364.910655 +59 0.580000 2655.022026 56018.454503 +60 0.590000 2153.374227 44761.819610 +61 0.600000 1751.840750 35894.153820 +62 0.610000 1429.321668 28881.467437 +63 0.620000 1169.400839 23315.070198 +64 0.630000 959.254371 18880.806522 +65 0.640000 788.825286 15336.170940 +66 0.650000 650.196650 12493.203783 +67 0.660000 537.113366 10205.647944 +68 0.670000 444.615844 8359.261950 +69 0.680000 368.758212 6864.481939 +70 0.690000 306.390715 5650.839586 +71 0.700000 254.991024 4662.698464 +72 0.710000 212.532986 3855.984565 +73 0.720000 177.384120 3195.669530 +74 0.730000 148.225307 2653.826099 +75 0.740000 123.987627 2208.120224 +76 0.750000 103.802544 1840.637693 +77 0.760000 86.962472 1536.967937 +78 0.770000 72.889471 1285.486272 +79 0.780000 61.110325 1076.789779 +80 0.790000 51.236635 903.252555 +81 0.800000 42.948872 758.673996 +82 0.810000 35.983576 637.999825 +83 0.820000 30.123043 537.100183 +84 0.830000 25.186999 452.592612 +85 0.840000 21.025860 381.700456 +86 0.850000 17.515264 322.139305 +87 0.860000 14.551619 272.025666 +88 0.870000 12.048476 229.803356 +89 0.880000 9.933566 194.184004 +90 0.890000 8.146368 164.098852 +91 0.900000 6.636119 138.659624 +92 0.910000 5.360169 117.126674 +93 0.920000 4.282632 98.883003 +94 0.930000 3.373272 83.413022 +95 0.940000 2.606573 70.285155 +96 0.950000 1.960975 59.137553 +97 0.960000 1.418239 49.666347 +98 0.970000 0.962916 41.615965 +99 0.980000 0.581905 34.771137 +100 0.990000 0.264083 28.950277 +101 1.000000 -0.000000 24.000000 +102 1.010000 -0.218384 19.790571 +103 1.020000 -0.397913 16.212117 +104 1.030000 -0.544418 13.171468 +105 1.040000 -0.662870 10.589529 +106 1.050000 -0.757512 8.399073 +107 1.060000 -0.831965 6.542902 +108 1.070000 -0.889321 4.972300 +109 1.080000 -0.932223 3.645731 +110 1.090000 -0.962930 2.527753 +111 1.100000 -0.983372 1.588095 +112 1.110000 -0.995200 0.800882 +113 1.120000 -0.999824 0.143980 +114 1.130000 -0.999884 -0.030740 +115 1.140000 -0.999373 -0.071496 +116 1.150000 -0.998454 -0.112194 +117 1.160000 -0.997129 -0.152800 +118 1.170000 -0.995399 -0.193281 +119 1.180000 -0.993264 -0.233605 +120 1.190000 -0.990727 -0.273738 +121 1.200000 -0.987790 -0.313649 +122 1.210000 -0.984455 -0.353303 +123 1.220000 -0.980725 -0.392669 +124 1.230000 -0.976603 -0.431715 +125 1.240000 -0.972092 -0.470408 +126 1.250000 -0.967196 -0.508719 +127 1.260000 -0.961919 -0.546614 +128 1.270000 -0.956265 -0.584063 +129 1.280000 -0.950239 -0.621036 +130 1.290000 -0.943846 -0.657502 +131 1.300000 -0.937091 -0.693432 +132 1.310000 -0.929979 -0.728797 +133 1.320000 -0.922517 -0.763567 +134 1.330000 -0.914710 -0.797715 +135 1.340000 -0.906565 -0.831211 +136 1.350000 -0.898088 -0.864030 +137 1.360000 -0.889287 -0.896144 +138 1.370000 -0.880168 -0.927527 +139 1.380000 -0.870739 -0.958154 +140 1.390000 -0.861007 -0.987999 +141 1.400000 -0.850981 -1.017039 +142 1.410000 -0.840669 -1.045248 +143 1.420000 -0.830079 -1.072606 +144 1.430000 -0.819220 -1.099088 +145 1.440000 -0.808101 -1.124674 +146 1.450000 -0.796730 -1.149343 +147 1.460000 -0.785117 -1.173074 +148 1.470000 -0.773271 -1.195849 +149 1.480000 -0.761203 -1.217648 +150 1.490000 -0.748922 -1.238454 +151 1.500000 -0.736437 -1.258250 +152 1.510000 -0.723760 -1.277020 +153 1.520000 -0.710900 -1.294748 +154 1.530000 -0.697869 -1.311420 +155 1.540000 -0.684676 -1.327023 +156 1.550000 -0.671332 -1.341543 +157 1.560000 -0.657848 -1.354969 +158 1.570000 -0.644236 -1.367290 +159 1.580000 -0.630506 -1.378496 +160 1.590000 -0.616670 -1.388577 +161 1.600000 -0.602739 -1.397526 +162 1.610000 -0.588723 -1.405335 +163 1.620000 -0.574636 -1.411998 +164 1.630000 -0.560487 -1.417509 +165 1.640000 -0.546289 -1.421864 +166 1.650000 -0.532054 -1.425059 +167 1.660000 -0.517792 -1.427092 +168 1.670000 -0.503516 -1.427961 +169 1.680000 -0.489237 -1.427666 +170 1.690000 -0.474966 -1.426206 +171 1.700000 -0.460716 -1.423582 +172 1.710000 -0.446499 -1.419798 +173 1.720000 -0.432324 -1.414856 +174 1.730000 -0.418205 -1.408759 +175 1.740000 -0.404153 -1.401514 +176 1.750000 -0.390179 -1.393126 +177 1.760000 -0.376294 -1.383601 +178 1.770000 -0.362511 -1.372948 +179 1.780000 -0.348839 -1.361175 +180 1.790000 -0.335291 -1.348292 +181 1.800000 -0.321877 -1.334309 +182 1.810000 -0.308608 -1.319238 +183 1.820000 -0.295496 -1.303091 +184 1.830000 -0.282550 -1.285881 +185 1.840000 -0.269782 -1.267622 +186 1.850000 -0.257201 -1.248329 +187 1.860000 -0.244818 -1.228018 +188 1.870000 -0.232644 -1.206706 +189 1.880000 -0.220688 -1.184410 +190 1.890000 -0.208959 -1.161147 +191 1.900000 -0.197468 -1.136937 +192 1.910000 -0.186223 -1.111800 +193 1.920000 -0.175235 -1.085757 +194 1.930000 -0.164511 -1.058827 +195 1.940000 -0.154061 -1.031034 +196 1.950000 -0.143893 -1.002401 +197 1.960000 -0.134016 -0.972949 +198 1.970000 -0.124437 -0.942704 +199 1.980000 -0.115164 -0.911690 +200 1.990000 -0.106206 -0.879933 +201 2.000000 -0.097568 -0.847458 +202 2.010000 -0.089259 -0.814292 +203 2.020000 -0.081284 -0.780461 +204 2.030000 -0.073652 -0.745994 +205 2.040000 -0.066367 -0.710919 +206 2.050000 -0.059435 -0.675264 +207 2.060000 -0.052863 -0.639057 +208 2.070000 -0.046656 -0.602330 +209 2.080000 -0.040818 -0.565112 +210 2.090000 -0.035355 -0.527432 +211 2.100000 -0.030271 -0.489323 +212 2.110000 -0.025570 -0.450814 +213 2.120000 -0.021256 -0.411937 +214 2.130000 -0.017332 -0.372725 +215 2.140000 -0.013802 -0.333209 +216 2.150000 -0.010669 -0.293421 +217 2.160000 -0.007935 -0.253393 +218 2.170000 -0.005602 -0.213159 +219 2.180000 -0.003672 -0.172751 +220 2.190000 -0.002147 -0.132202 +221 2.200000 -0.001028 -0.091545 +222 2.210000 -0.000317 -0.050814 +223 2.220000 -0.000012 -0.010041 +224 2.230000 0.000000 0.000000 +225 2.240000 0.000000 0.000000 +226 2.250000 0.000000 0.000000 +227 2.260000 0.000000 0.000000 +228 2.270000 0.000000 0.000000 +229 2.280000 0.000000 0.000000 +230 2.290000 0.000000 0.000000 +231 2.300000 0.000000 0.000000 +232 2.310000 0.000000 0.000000 +233 2.320000 0.000000 0.000000 +234 2.330000 0.000000 0.000000 +235 2.340000 0.000000 0.000000 +236 2.350000 0.000000 0.000000 +237 2.360000 0.000000 0.000000 +238 2.370000 0.000000 0.000000 +239 2.380000 0.000000 0.000000 +240 2.390000 0.000000 0.000000 +241 2.400000 0.000000 0.000000 +242 2.410000 0.000000 0.000000 +243 2.420000 0.000000 0.000000 +244 2.430000 0.000000 0.000000 +245 2.440000 0.000000 0.000000 +246 2.450000 0.000000 0.000000 +247 2.460000 0.000000 0.000000 +248 2.470000 0.000000 0.000000 +249 2.480000 0.000000 0.000000 +250 2.490000 0.000000 0.000000 +251 2.500000 0.000000 0.000000 +252 2.510000 0.000000 0.000000 +253 2.520000 0.000000 0.000000 +254 2.530000 0.000000 0.000000 +255 2.540000 0.000000 0.000000 +256 2.550000 0.000000 0.000000 +257 2.560000 0.000000 0.000000 +258 2.570000 0.000000 0.000000 +259 2.580000 0.000000 0.000000 +260 2.590000 0.000000 0.000000 +261 2.600000 0.000000 0.000000 +262 2.610000 0.000000 0.000000 +263 2.620000 0.000000 0.000000 +264 2.630000 0.000000 0.000000 +265 2.640000 0.000000 0.000000 +266 2.650000 0.000000 0.000000 +267 2.660000 0.000000 0.000000 +268 2.670000 0.000000 0.000000 +269 2.680000 0.000000 0.000000 +270 2.690000 0.000000 0.000000 +271 2.700000 0.000000 0.000000 +272 2.710000 0.000000 0.000000 +273 2.720000 0.000000 0.000000 +274 2.730000 0.000000 0.000000 +275 2.740000 0.000000 0.000000 +276 2.750000 0.000000 0.000000 +277 2.760000 0.000000 0.000000 +278 2.770000 0.000000 0.000000 +279 2.780000 0.000000 0.000000 +280 2.790000 0.000000 0.000000 +281 2.800000 0.000000 0.000000 +282 2.810000 0.000000 0.000000 +283 2.820000 0.000000 0.000000 +284 2.830000 0.000000 0.000000 +285 2.840000 0.000000 0.000000 +286 2.850000 0.000000 0.000000 +287 2.860000 0.000000 0.000000 +288 2.870000 0.000000 0.000000 +289 2.880000 0.000000 0.000000 +290 2.890000 0.000000 0.000000 +291 2.900000 0.000000 0.000000 +292 2.910000 0.000000 0.000000 +293 2.920000 0.000000 0.000000 +294 2.930000 0.000000 0.000000 +295 2.940000 0.000000 0.000000 +296 2.950000 0.000000 0.000000 +297 2.960000 0.000000 0.000000 +298 2.970000 0.000000 0.000000 +299 2.980000 0.000000 0.000000 +300 2.990000 0.000000 0.000000 +301 3.000000 0.000000 0.000000 + + +TAIL_TAIL_Wc_1.2 +N 301 R 0.000001 3.000000 + +1 0.000001 0.000000 0.000000 +2 0.010000 3999999999995999707725824.000000 4799999999997598070678224896.000000 +3 0.020000 976562499937500004352.000000 585937499981249777762304.000000 +4 0.030000 7526705687148720128.000000 3010682275956881096704.000000 +5 0.040000 238418578125000000.000000 71525573583984353280.000000 +6 0.050000 16383999744000000.000000 3932159969279997440.000000 +7 0.060000 1837574546257248.500000 367514917824838144.000000 +8 0.070000 288990429236596.312500 49541219354796968.000000 +9 0.080000 58207645654678.343750 8731147992610928.000000 +10 0.090000 14162817119182.900391 1888376117671434.750000 +11 0.100000 3999996000000.000000 479999760000000.500000 +12 0.110000 1274521012945.708496 139038779115662.093750 +13 0.120000 448625279546.553955 44862594934250.781250 +14 0.130000 171687100967.122345 15848078337188.726562 +15 0.140000 70553781072.250778 6047489716531.549805 +16 0.150000 30829035351.054977 2466336874723.629883 +17 0.160000 14210616296.622902 1065805162943.433594 +18 0.170000 6865346349.879549 484618532348.129211 +19 0.180000 3457603256.036191 230510803894.961182 +20 0.190000 1807158928.004511 114139038296.617722 +21 0.200000 976499999.999998 58591874999.999847 +22 0.210000 543739902.726732 31072184111.878654 +23 0.220000 311127628.299641 16971560078.724821 +24 0.230000 182499493.379421 9522417580.006592 +25 0.240000 109507052.064558 5475875881.316449 +26 0.250000 67092480.000000 3220832255.999991 +27 0.260000 41903049.941880 1934285732.237306 +28 0.270000 26639528.522336 1184208483.196407 +29 0.280000 17216873.260370 738043867.822060 +30 0.290000 11298625.429098 467668459.533016 +31 0.300000 7521218.724186 300958488.336427 +32 0.310000 5073808.319410 196492716.046068 +33 0.320000 3465721.661655 130034411.505164 +34 0.330000 2395143.138865 87152427.788625 +35 0.340000 1673561.082347 59112555.692539 +36 0.350000 1181528.973318 40546867.041137 +37 0.360000 842332.557402 28108378.157278 +38 0.370000 606071.119890 19681641.931764 +39 0.380000 439893.177446 13912339.662092 +40 0.390000 321924.360071 9922853.684245 +41 0.400000 237442.016602 7137908.935547 +42 0.410000 176435.450812 5176287.635225 +43 0.420000 132031.660059 3782743.515595 +44 0.430000 99468.250044 2784687.558254 +45 0.440000 75416.262744 2064324.130372 +46 0.450000 57529.220585 1540535.337797 +47 0.460000 44139.942254 1156983.644674 +48 0.470000 34054.846645 874222.695500 +49 0.480000 26413.181465 664417.646696 +50 0.490000 20589.881497 507780.654581 +51 0.500000 16128.000000 390144.000000 +52 0.510000 12691.351515 301294.396513 +53 0.520000 10031.077542 233820.872331 +54 0.530000 7961.876154 182311.949517 +55 0.540000 6344.988397 142792.224654 +56 0.550000 5075.941991 112324.247003 +57 0.560000 4075.667156 88725.341557 +58 0.570000 3284.018178 70364.910655 +59 0.580000 2655.022026 56018.454503 +60 0.590000 2153.374227 44761.819610 +61 0.600000 1751.840750 35894.153820 +62 0.610000 1429.321668 28881.467437 +63 0.620000 1169.400839 23315.070198 +64 0.630000 959.254371 18880.806522 +65 0.640000 788.825286 15336.170940 +66 0.650000 650.196650 12493.203783 +67 0.660000 537.113366 10205.647944 +68 0.670000 444.615844 8359.261950 +69 0.680000 368.758212 6864.481939 +70 0.690000 306.390715 5650.839586 +71 0.700000 254.991024 4662.698464 +72 0.710000 212.532986 3855.984565 +73 0.720000 177.384120 3195.669530 +74 0.730000 148.225307 2653.826099 +75 0.740000 123.987627 2208.120224 +76 0.750000 103.802544 1840.637693 +77 0.760000 86.962472 1536.967937 +78 0.770000 72.889471 1285.486272 +79 0.780000 61.110325 1076.789779 +80 0.790000 51.236635 903.252555 +81 0.800000 42.948872 758.673996 +82 0.810000 35.983576 637.999825 +83 0.820000 30.123043 537.100183 +84 0.830000 25.186999 452.592612 +85 0.840000 21.025860 381.700456 +86 0.850000 17.515264 322.139305 +87 0.860000 14.551619 272.025666 +88 0.870000 12.048476 229.803356 +89 0.880000 9.933566 194.184004 +90 0.890000 8.146368 164.098852 +91 0.900000 6.636119 138.659624 +92 0.910000 5.360169 117.126674 +93 0.920000 4.282632 98.883003 +94 0.930000 3.373272 83.413022 +95 0.940000 2.606573 70.285155 +96 0.950000 1.960975 59.137553 +97 0.960000 1.418239 49.666347 +98 0.970000 0.962916 41.615965 +99 0.980000 0.581905 34.771137 +100 0.990000 0.264083 28.950277 +101 1.000000 -0.000000 24.000000 +102 1.010000 -0.218384 19.790571 +103 1.020000 -0.397913 16.212117 +104 1.030000 -0.544418 13.171468 +105 1.040000 -0.662870 10.589529 +106 1.050000 -0.757512 8.399073 +107 1.060000 -0.831965 6.542902 +108 1.070000 -0.889321 4.972300 +109 1.080000 -0.932223 3.645731 +110 1.090000 -0.962930 2.527753 +111 1.100000 -0.983372 1.588095 +112 1.110000 -0.995200 0.800882 +113 1.120000 -0.999824 0.143980 +114 1.130000 -0.999903 -0.025830 +115 1.140000 -0.999473 -0.060080 +116 1.150000 -0.998701 -0.094289 +117 1.160000 -0.997587 -0.128434 +118 1.170000 -0.996133 -0.162490 +119 1.180000 -0.994338 -0.196435 +120 1.190000 -0.992205 -0.230245 +121 1.200000 -0.989734 -0.263897 +122 1.210000 -0.986927 -0.297369 +123 1.220000 -0.983787 -0.330637 +124 1.230000 -0.980315 -0.363678 +125 1.240000 -0.976514 -0.396470 +126 1.250000 -0.972387 -0.428990 +127 1.260000 -0.967935 -0.461216 +128 1.270000 -0.963163 -0.493126 +129 1.280000 -0.958074 -0.524698 +130 1.290000 -0.952671 -0.555911 +131 1.300000 -0.946957 -0.586742 +132 1.310000 -0.940937 -0.617172 +133 1.320000 -0.934615 -0.647178 +134 1.330000 -0.927995 -0.676741 +135 1.340000 -0.921082 -0.705840 +136 1.350000 -0.913880 -0.734455 +137 1.360000 -0.906394 -0.762567 +138 1.370000 -0.898630 -0.790157 +139 1.380000 -0.890593 -0.817204 +140 1.390000 -0.882288 -0.843692 +141 1.400000 -0.873721 -0.869602 +142 1.410000 -0.864898 -0.894915 +143 1.420000 -0.855825 -0.919615 +144 1.430000 -0.846508 -0.943685 +145 1.440000 -0.836953 -0.967108 +146 1.450000 -0.827168 -0.989869 +147 1.460000 -0.817158 -1.011951 +148 1.470000 -0.806931 -1.033339 +149 1.480000 -0.796494 -1.054019 +150 1.490000 -0.785853 -1.073977 +151 1.500000 -0.775017 -1.093199 +152 1.510000 -0.763992 -1.111672 +153 1.520000 -0.752786 -1.129382 +154 1.530000 -0.741407 -1.146319 +155 1.540000 -0.729862 -1.162470 +156 1.550000 -0.718160 -1.177825 +157 1.560000 -0.706308 -1.192372 +158 1.570000 -0.694315 -1.206102 +159 1.580000 -0.682189 -1.219005 +160 1.590000 -0.669938 -1.231073 +161 1.600000 -0.657570 -1.242297 +162 1.610000 -0.645095 -1.252670 +163 1.620000 -0.632520 -1.262184 +164 1.630000 -0.619854 -1.270833 +165 1.640000 -0.607106 -1.278611 +166 1.650000 -0.594285 -1.285513 +167 1.660000 -0.581399 -1.291534 +168 1.670000 -0.568457 -1.296670 +169 1.680000 -0.555468 -1.300917 +170 1.690000 -0.542442 -1.304273 +171 1.700000 -0.529386 -1.306734 +172 1.710000 -0.516310 -1.308300 +173 1.720000 -0.503223 -1.308970 +174 1.730000 -0.490133 -1.308742 +175 1.740000 -0.477051 -1.307617 +176 1.750000 -0.463984 -1.305597 +177 1.760000 -0.450942 -1.302681 +178 1.770000 -0.437933 -1.298873 +179 1.780000 -0.424968 -1.294174 +180 1.790000 -0.412053 -1.288588 +181 1.800000 -0.399199 -1.282120 +182 1.810000 -0.386413 -1.274772 +183 1.820000 -0.373706 -1.266551 +184 1.830000 -0.361085 -1.257462 +185 1.840000 -0.348560 -1.247511 +186 1.850000 -0.336138 -1.236706 +187 1.860000 -0.323828 -1.225052 +188 1.870000 -0.311640 -1.212559 +189 1.880000 -0.299580 -1.199235 +190 1.890000 -0.287658 -1.185089 +191 1.900000 -0.275881 -1.170131 +192 1.910000 -0.264258 -1.154371 +193 1.920000 -0.252796 -1.137820 +194 1.930000 -0.241504 -1.120489 +195 1.940000 -0.230389 -1.102390 +196 1.950000 -0.219459 -1.083535 +197 1.960000 -0.208721 -1.063938 +198 1.970000 -0.198182 -1.043612 +199 1.980000 -0.187851 -1.022570 +200 1.990000 -0.177733 -1.000828 +201 2.000000 -0.167837 -0.978400 +202 2.010000 -0.158168 -0.955301 +203 2.020000 -0.148733 -0.931547 +204 2.030000 -0.139539 -0.907155 +205 2.040000 -0.130592 -0.882142 +206 2.050000 -0.121898 -0.856524 +207 2.060000 -0.113463 -0.830318 +208 2.070000 -0.105293 -0.803544 +209 2.080000 -0.097394 -0.776219 +210 2.090000 -0.089771 -0.748362 +211 2.100000 -0.082429 -0.719992 +212 2.110000 -0.075373 -0.691129 +213 2.120000 -0.068608 -0.661792 +214 2.130000 -0.062138 -0.632001 +215 2.140000 -0.055969 -0.601777 +216 2.150000 -0.050104 -0.571141 +217 2.160000 -0.044548 -0.540114 +218 2.170000 -0.039303 -0.508716 +219 2.180000 -0.034374 -0.476970 +220 2.190000 -0.029765 -0.444896 +221 2.200000 -0.025478 -0.412518 +222 2.210000 -0.021515 -0.379857 +223 2.220000 -0.017881 -0.346936 +224 2.230000 -0.014577 -0.313777 +225 2.240000 -0.011606 -0.280403 +226 2.250000 -0.008970 -0.246837 +227 2.260000 -0.006670 -0.213101 +228 2.270000 -0.004709 -0.179220 +229 2.280000 -0.003086 -0.145216 +230 2.290000 -0.001805 -0.111112 +231 2.300000 -0.000864 -0.076932 +232 2.310000 -0.000266 -0.042699 +233 2.320000 -0.000010 -0.008437 +234 2.330000 0.000000 0.000000 +235 2.340000 0.000000 0.000000 +236 2.350000 0.000000 0.000000 +237 2.360000 0.000000 0.000000 +238 2.370000 0.000000 0.000000 +239 2.380000 0.000000 0.000000 +240 2.390000 0.000000 0.000000 +241 2.400000 0.000000 0.000000 +242 2.410000 0.000000 0.000000 +243 2.420000 0.000000 0.000000 +244 2.430000 0.000000 0.000000 +245 2.440000 0.000000 0.000000 +246 2.450000 0.000000 0.000000 +247 2.460000 0.000000 0.000000 +248 2.470000 0.000000 0.000000 +249 2.480000 0.000000 0.000000 +250 2.490000 0.000000 0.000000 +251 2.500000 0.000000 0.000000 +252 2.510000 0.000000 0.000000 +253 2.520000 0.000000 0.000000 +254 2.530000 0.000000 0.000000 +255 2.540000 0.000000 0.000000 +256 2.550000 0.000000 0.000000 +257 2.560000 0.000000 0.000000 +258 2.570000 0.000000 0.000000 +259 2.580000 0.000000 0.000000 +260 2.590000 0.000000 0.000000 +261 2.600000 0.000000 0.000000 +262 2.610000 0.000000 0.000000 +263 2.620000 0.000000 0.000000 +264 2.630000 0.000000 0.000000 +265 2.640000 0.000000 0.000000 +266 2.650000 0.000000 0.000000 +267 2.660000 0.000000 0.000000 +268 2.670000 0.000000 0.000000 +269 2.680000 0.000000 0.000000 +270 2.690000 0.000000 0.000000 +271 2.700000 0.000000 0.000000 +272 2.710000 0.000000 0.000000 +273 2.720000 0.000000 0.000000 +274 2.730000 0.000000 0.000000 +275 2.740000 0.000000 0.000000 +276 2.750000 0.000000 0.000000 +277 2.760000 0.000000 0.000000 +278 2.770000 0.000000 0.000000 +279 2.780000 0.000000 0.000000 +280 2.790000 0.000000 0.000000 +281 2.800000 0.000000 0.000000 +282 2.810000 0.000000 0.000000 +283 2.820000 0.000000 0.000000 +284 2.830000 0.000000 0.000000 +285 2.840000 0.000000 0.000000 +286 2.850000 0.000000 0.000000 +287 2.860000 0.000000 0.000000 +288 2.870000 0.000000 0.000000 +289 2.880000 0.000000 0.000000 +290 2.890000 0.000000 0.000000 +291 2.900000 0.000000 0.000000 +292 2.910000 0.000000 0.000000 +293 2.920000 0.000000 0.000000 +294 2.930000 0.000000 0.000000 +295 2.940000 0.000000 0.000000 +296 2.950000 0.000000 0.000000 +297 2.960000 0.000000 0.000000 +298 2.970000 0.000000 0.000000 +299 2.980000 0.000000 0.000000 +300 2.990000 0.000000 0.000000 +301 3.000000 0.000000 0.000000 + + +TAIL_TAIL_Wc_1.3 +N 301 R 0.000001 3.000000 + +1 0.000001 0.000000 0.000000 +2 0.010000 3999999999995999707725824.000000 4799999999997598070678224896.000000 +3 0.020000 976562499937500004352.000000 585937499981249777762304.000000 +4 0.030000 7526705687148720128.000000 3010682275956881096704.000000 +5 0.040000 238418578125000000.000000 71525573583984353280.000000 +6 0.050000 16383999744000000.000000 3932159969279997440.000000 +7 0.060000 1837574546257248.500000 367514917824838144.000000 +8 0.070000 288990429236596.312500 49541219354796968.000000 +9 0.080000 58207645654678.343750 8731147992610928.000000 +10 0.090000 14162817119182.900391 1888376117671434.750000 +11 0.100000 3999996000000.000000 479999760000000.500000 +12 0.110000 1274521012945.708496 139038779115662.093750 +13 0.120000 448625279546.553955 44862594934250.781250 +14 0.130000 171687100967.122345 15848078337188.726562 +15 0.140000 70553781072.250778 6047489716531.549805 +16 0.150000 30829035351.054977 2466336874723.629883 +17 0.160000 14210616296.622902 1065805162943.433594 +18 0.170000 6865346349.879549 484618532348.129211 +19 0.180000 3457603256.036191 230510803894.961182 +20 0.190000 1807158928.004511 114139038296.617722 +21 0.200000 976499999.999998 58591874999.999847 +22 0.210000 543739902.726732 31072184111.878654 +23 0.220000 311127628.299641 16971560078.724821 +24 0.230000 182499493.379421 9522417580.006592 +25 0.240000 109507052.064558 5475875881.316449 +26 0.250000 67092480.000000 3220832255.999991 +27 0.260000 41903049.941880 1934285732.237306 +28 0.270000 26639528.522336 1184208483.196407 +29 0.280000 17216873.260370 738043867.822060 +30 0.290000 11298625.429098 467668459.533016 +31 0.300000 7521218.724186 300958488.336427 +32 0.310000 5073808.319410 196492716.046068 +33 0.320000 3465721.661655 130034411.505164 +34 0.330000 2395143.138865 87152427.788625 +35 0.340000 1673561.082347 59112555.692539 +36 0.350000 1181528.973318 40546867.041137 +37 0.360000 842332.557402 28108378.157278 +38 0.370000 606071.119890 19681641.931764 +39 0.380000 439893.177446 13912339.662092 +40 0.390000 321924.360071 9922853.684245 +41 0.400000 237442.016602 7137908.935547 +42 0.410000 176435.450812 5176287.635225 +43 0.420000 132031.660059 3782743.515595 +44 0.430000 99468.250044 2784687.558254 +45 0.440000 75416.262744 2064324.130372 +46 0.450000 57529.220585 1540535.337797 +47 0.460000 44139.942254 1156983.644674 +48 0.470000 34054.846645 874222.695500 +49 0.480000 26413.181465 664417.646696 +50 0.490000 20589.881497 507780.654581 +51 0.500000 16128.000000 390144.000000 +52 0.510000 12691.351515 301294.396513 +53 0.520000 10031.077542 233820.872331 +54 0.530000 7961.876154 182311.949517 +55 0.540000 6344.988397 142792.224654 +56 0.550000 5075.941991 112324.247003 +57 0.560000 4075.667156 88725.341557 +58 0.570000 3284.018178 70364.910655 +59 0.580000 2655.022026 56018.454503 +60 0.590000 2153.374227 44761.819610 +61 0.600000 1751.840750 35894.153820 +62 0.610000 1429.321668 28881.467437 +63 0.620000 1169.400839 23315.070198 +64 0.630000 959.254371 18880.806522 +65 0.640000 788.825286 15336.170940 +66 0.650000 650.196650 12493.203783 +67 0.660000 537.113366 10205.647944 +68 0.670000 444.615844 8359.261950 +69 0.680000 368.758212 6864.481939 +70 0.690000 306.390715 5650.839586 +71 0.700000 254.991024 4662.698464 +72 0.710000 212.532986 3855.984565 +73 0.720000 177.384120 3195.669530 +74 0.730000 148.225307 2653.826099 +75 0.740000 123.987627 2208.120224 +76 0.750000 103.802544 1840.637693 +77 0.760000 86.962472 1536.967937 +78 0.770000 72.889471 1285.486272 +79 0.780000 61.110325 1076.789779 +80 0.790000 51.236635 903.252555 +81 0.800000 42.948872 758.673996 +82 0.810000 35.983576 637.999825 +83 0.820000 30.123043 537.100183 +84 0.830000 25.186999 452.592612 +85 0.840000 21.025860 381.700456 +86 0.850000 17.515264 322.139305 +87 0.860000 14.551619 272.025666 +88 0.870000 12.048476 229.803356 +89 0.880000 9.933566 194.184004 +90 0.890000 8.146368 164.098852 +91 0.900000 6.636119 138.659624 +92 0.910000 5.360169 117.126674 +93 0.920000 4.282632 98.883003 +94 0.930000 3.373272 83.413022 +95 0.940000 2.606573 70.285155 +96 0.950000 1.960975 59.137553 +97 0.960000 1.418239 49.666347 +98 0.970000 0.962916 41.615965 +99 0.980000 0.581905 34.771137 +100 0.990000 0.264083 28.950277 +101 1.000000 -0.000000 24.000000 +102 1.010000 -0.218384 19.790571 +103 1.020000 -0.397913 16.212117 +104 1.030000 -0.544418 13.171468 +105 1.040000 -0.662870 10.589529 +106 1.050000 -0.757512 8.399073 +107 1.060000 -0.831965 6.542902 +108 1.070000 -0.889321 4.972300 +109 1.080000 -0.932223 3.645731 +110 1.090000 -0.962930 2.527753 +111 1.100000 -0.983372 1.588095 +112 1.110000 -0.995200 0.800882 +113 1.120000 -0.999824 0.143980 +114 1.130000 -0.999917 -0.022010 +115 1.140000 -0.999551 -0.051196 +116 1.150000 -0.998893 -0.080352 +117 1.160000 -0.997944 -0.109461 +118 1.170000 -0.996704 -0.138506 +119 1.180000 -0.995174 -0.167470 +120 1.190000 -0.993355 -0.196337 +121 1.200000 -0.991248 -0.225088 +122 1.210000 -0.988854 -0.253709 +123 1.220000 -0.986174 -0.282181 +124 1.230000 -0.983211 -0.310488 +125 1.240000 -0.979965 -0.338614 +126 1.250000 -0.976439 -0.366543 +127 1.260000 -0.972635 -0.394257 +128 1.270000 -0.968555 -0.421741 +129 1.280000 -0.964201 -0.448979 +130 1.290000 -0.959576 -0.475955 +131 1.300000 -0.954683 -0.502652 +132 1.310000 -0.949524 -0.529056 +133 1.320000 -0.944103 -0.555152 +134 1.330000 -0.938422 -0.580923 +135 1.340000 -0.932485 -0.606354 +136 1.350000 -0.926296 -0.631432 +137 1.360000 -0.919858 -0.656141 +138 1.370000 -0.913175 -0.680467 +139 1.380000 -0.906250 -0.704395 +140 1.390000 -0.899088 -0.727912 +141 1.400000 -0.891693 -0.751004 +142 1.410000 -0.884069 -0.773657 +143 1.420000 -0.876221 -0.795859 +144 1.430000 -0.868154 -0.817596 +145 1.440000 -0.859871 -0.838855 +146 1.450000 -0.851378 -0.859625 +147 1.460000 -0.842680 -0.879892 +148 1.470000 -0.833782 -0.899646 +149 1.480000 -0.824689 -0.918874 +150 1.490000 -0.815407 -0.937566 +151 1.500000 -0.805940 -0.955710 +152 1.510000 -0.796294 -0.973296 +153 1.520000 -0.786476 -0.990314 +154 1.530000 -0.776490 -1.006753 +155 1.540000 -0.766343 -1.022605 +156 1.550000 -0.756040 -1.037859 +157 1.560000 -0.745587 -1.052507 +158 1.570000 -0.734992 -1.066541 +159 1.580000 -0.724259 -1.079952 +160 1.590000 -0.713395 -1.092732 +161 1.600000 -0.702406 -1.104874 +162 1.610000 -0.691299 -1.116371 +163 1.620000 -0.680081 -1.127215 +164 1.630000 -0.668757 -1.137402 +165 1.640000 -0.657335 -1.146924 +166 1.650000 -0.645821 -1.155777 +167 1.660000 -0.634222 -1.163955 +168 1.670000 -0.622544 -1.171452 +169 1.680000 -0.610795 -1.178266 +170 1.690000 -0.598981 -1.184392 +171 1.700000 -0.587109 -1.189826 +172 1.710000 -0.575187 -1.194565 +173 1.720000 -0.563220 -1.198607 +174 1.730000 -0.551217 -1.201949 +175 1.740000 -0.539184 -1.204589 +176 1.750000 -0.527128 -1.206525 +177 1.760000 -0.515056 -1.207757 +178 1.770000 -0.502975 -1.208283 +179 1.780000 -0.490892 -1.208104 +180 1.790000 -0.478815 -1.207220 +181 1.800000 -0.466750 -1.205630 +182 1.810000 -0.454705 -1.203337 +183 1.820000 -0.442686 -1.200340 +184 1.830000 -0.430700 -1.196643 +185 1.840000 -0.418755 -1.192247 +186 1.850000 -0.406858 -1.187155 +187 1.860000 -0.395015 -1.181369 +188 1.870000 -0.383233 -1.174893 +189 1.880000 -0.371519 -1.167732 +190 1.890000 -0.359880 -1.159888 +191 1.900000 -0.348324 -1.151367 +192 1.910000 -0.336855 -1.142174 +193 1.920000 -0.325482 -1.132314 +194 1.930000 -0.314211 -1.121793 +195 1.940000 -0.303049 -1.110616 +196 1.950000 -0.292001 -1.098791 +197 1.960000 -0.281075 -1.086324 +198 1.970000 -0.270277 -1.073223 +199 1.980000 -0.259613 -1.059495 +200 1.990000 -0.249089 -1.045148 +201 2.000000 -0.238712 -1.030191 +202 2.010000 -0.228487 -1.014633 +203 2.020000 -0.218421 -0.998482 +204 2.030000 -0.208519 -0.981748 +205 2.040000 -0.198788 -0.964440 +206 2.050000 -0.189232 -0.946569 +207 2.060000 -0.179858 -0.928146 +208 2.070000 -0.170671 -0.909180 +209 2.080000 -0.161677 -0.889684 +210 2.090000 -0.152879 -0.869668 +211 2.100000 -0.144285 -0.849144 +212 2.110000 -0.135898 -0.828125 +213 2.120000 -0.127724 -0.806621 +214 2.130000 -0.119767 -0.784647 +215 2.140000 -0.112033 -0.762214 +216 2.150000 -0.104524 -0.739337 +217 2.160000 -0.097247 -0.716027 +218 2.170000 -0.090205 -0.692300 +219 2.180000 -0.083403 -0.668168 +220 2.190000 -0.076843 -0.643646 +221 2.200000 -0.070531 -0.618748 +222 2.210000 -0.064469 -0.593489 +223 2.220000 -0.058662 -0.567883 +224 2.230000 -0.053113 -0.541946 +225 2.240000 -0.047824 -0.515692 +226 2.250000 -0.042800 -0.489137 +227 2.260000 -0.038043 -0.462296 +228 2.270000 -0.033555 -0.435185 +229 2.280000 -0.029340 -0.407820 +230 2.290000 -0.025399 -0.380217 +231 2.300000 -0.021736 -0.352392 +232 2.310000 -0.018352 -0.324362 +233 2.320000 -0.015250 -0.296141 +234 2.330000 -0.012430 -0.267748 +235 2.340000 -0.009895 -0.239199 +236 2.350000 -0.007647 -0.210510 +237 2.360000 -0.005685 -0.181697 +238 2.370000 -0.004013 -0.152779 +239 2.380000 -0.002630 -0.123772 +240 2.390000 -0.001538 -0.094692 +241 2.400000 -0.000736 -0.065557 +242 2.410000 -0.000227 -0.036384 +243 2.420000 -0.000009 -0.007189 +244 2.430000 0.000000 0.000000 +245 2.440000 0.000000 0.000000 +246 2.450000 0.000000 0.000000 +247 2.460000 0.000000 0.000000 +248 2.470000 0.000000 0.000000 +249 2.480000 0.000000 0.000000 +250 2.490000 0.000000 0.000000 +251 2.500000 0.000000 0.000000 +252 2.510000 0.000000 0.000000 +253 2.520000 0.000000 0.000000 +254 2.530000 0.000000 0.000000 +255 2.540000 0.000000 0.000000 +256 2.550000 0.000000 0.000000 +257 2.560000 0.000000 0.000000 +258 2.570000 0.000000 0.000000 +259 2.580000 0.000000 0.000000 +260 2.590000 0.000000 0.000000 +261 2.600000 0.000000 0.000000 +262 2.610000 0.000000 0.000000 +263 2.620000 0.000000 0.000000 +264 2.630000 0.000000 0.000000 +265 2.640000 0.000000 0.000000 +266 2.650000 0.000000 0.000000 +267 2.660000 0.000000 0.000000 +268 2.670000 0.000000 0.000000 +269 2.680000 0.000000 0.000000 +270 2.690000 0.000000 0.000000 +271 2.700000 0.000000 0.000000 +272 2.710000 0.000000 0.000000 +273 2.720000 0.000000 0.000000 +274 2.730000 0.000000 0.000000 +275 2.740000 0.000000 0.000000 +276 2.750000 0.000000 0.000000 +277 2.760000 0.000000 0.000000 +278 2.770000 0.000000 0.000000 +279 2.780000 0.000000 0.000000 +280 2.790000 0.000000 0.000000 +281 2.800000 0.000000 0.000000 +282 2.810000 0.000000 0.000000 +283 2.820000 0.000000 0.000000 +284 2.830000 0.000000 0.000000 +285 2.840000 0.000000 0.000000 +286 2.850000 0.000000 0.000000 +287 2.860000 0.000000 0.000000 +288 2.870000 0.000000 0.000000 +289 2.880000 0.000000 0.000000 +290 2.890000 0.000000 0.000000 +291 2.900000 0.000000 0.000000 +292 2.910000 0.000000 0.000000 +293 2.920000 0.000000 0.000000 +294 2.930000 0.000000 0.000000 +295 2.940000 0.000000 0.000000 +296 2.950000 0.000000 0.000000 +297 2.960000 0.000000 0.000000 +298 2.970000 0.000000 0.000000 +299 2.980000 0.000000 0.000000 +300 2.990000 0.000000 0.000000 +301 3.000000 0.000000 0.000000 + + +TAIL_TAIL_Wc_1.4 +N 301 R 0.000001 3.000000 + +1 0.000001 0.000000 0.000000 +2 0.010000 3999999999995999707725824.000000 4799999999997598070678224896.000000 +3 0.020000 976562499937500004352.000000 585937499981249777762304.000000 +4 0.030000 7526705687148720128.000000 3010682275956881096704.000000 +5 0.040000 238418578125000000.000000 71525573583984353280.000000 +6 0.050000 16383999744000000.000000 3932159969279997440.000000 +7 0.060000 1837574546257248.500000 367514917824838144.000000 +8 0.070000 288990429236596.312500 49541219354796968.000000 +9 0.080000 58207645654678.343750 8731147992610928.000000 +10 0.090000 14162817119182.900391 1888376117671434.750000 +11 0.100000 3999996000000.000000 479999760000000.500000 +12 0.110000 1274521012945.708496 139038779115662.093750 +13 0.120000 448625279546.553955 44862594934250.781250 +14 0.130000 171687100967.122345 15848078337188.726562 +15 0.140000 70553781072.250778 6047489716531.549805 +16 0.150000 30829035351.054977 2466336874723.629883 +17 0.160000 14210616296.622902 1065805162943.433594 +18 0.170000 6865346349.879549 484618532348.129211 +19 0.180000 3457603256.036191 230510803894.961182 +20 0.190000 1807158928.004511 114139038296.617722 +21 0.200000 976499999.999998 58591874999.999847 +22 0.210000 543739902.726732 31072184111.878654 +23 0.220000 311127628.299641 16971560078.724821 +24 0.230000 182499493.379421 9522417580.006592 +25 0.240000 109507052.064558 5475875881.316449 +26 0.250000 67092480.000000 3220832255.999991 +27 0.260000 41903049.941880 1934285732.237306 +28 0.270000 26639528.522336 1184208483.196407 +29 0.280000 17216873.260370 738043867.822060 +30 0.290000 11298625.429098 467668459.533016 +31 0.300000 7521218.724186 300958488.336427 +32 0.310000 5073808.319410 196492716.046068 +33 0.320000 3465721.661655 130034411.505164 +34 0.330000 2395143.138865 87152427.788625 +35 0.340000 1673561.082347 59112555.692539 +36 0.350000 1181528.973318 40546867.041137 +37 0.360000 842332.557402 28108378.157278 +38 0.370000 606071.119890 19681641.931764 +39 0.380000 439893.177446 13912339.662092 +40 0.390000 321924.360071 9922853.684245 +41 0.400000 237442.016602 7137908.935547 +42 0.410000 176435.450812 5176287.635225 +43 0.420000 132031.660059 3782743.515595 +44 0.430000 99468.250044 2784687.558254 +45 0.440000 75416.262744 2064324.130372 +46 0.450000 57529.220585 1540535.337797 +47 0.460000 44139.942254 1156983.644674 +48 0.470000 34054.846645 874222.695500 +49 0.480000 26413.181465 664417.646696 +50 0.490000 20589.881497 507780.654581 +51 0.500000 16128.000000 390144.000000 +52 0.510000 12691.351515 301294.396513 +53 0.520000 10031.077542 233820.872331 +54 0.530000 7961.876154 182311.949517 +55 0.540000 6344.988397 142792.224654 +56 0.550000 5075.941991 112324.247003 +57 0.560000 4075.667156 88725.341557 +58 0.570000 3284.018178 70364.910655 +59 0.580000 2655.022026 56018.454503 +60 0.590000 2153.374227 44761.819610 +61 0.600000 1751.840750 35894.153820 +62 0.610000 1429.321668 28881.467437 +63 0.620000 1169.400839 23315.070198 +64 0.630000 959.254371 18880.806522 +65 0.640000 788.825286 15336.170940 +66 0.650000 650.196650 12493.203783 +67 0.660000 537.113366 10205.647944 +68 0.670000 444.615844 8359.261950 +69 0.680000 368.758212 6864.481939 +70 0.690000 306.390715 5650.839586 +71 0.700000 254.991024 4662.698464 +72 0.710000 212.532986 3855.984565 +73 0.720000 177.384120 3195.669530 +74 0.730000 148.225307 2653.826099 +75 0.740000 123.987627 2208.120224 +76 0.750000 103.802544 1840.637693 +77 0.760000 86.962472 1536.967937 +78 0.770000 72.889471 1285.486272 +79 0.780000 61.110325 1076.789779 +80 0.790000 51.236635 903.252555 +81 0.800000 42.948872 758.673996 +82 0.810000 35.983576 637.999825 +83 0.820000 30.123043 537.100183 +84 0.830000 25.186999 452.592612 +85 0.840000 21.025860 381.700456 +86 0.850000 17.515264 322.139305 +87 0.860000 14.551619 272.025666 +88 0.870000 12.048476 229.803356 +89 0.880000 9.933566 194.184004 +90 0.890000 8.146368 164.098852 +91 0.900000 6.636119 138.659624 +92 0.910000 5.360169 117.126674 +93 0.920000 4.282632 98.883003 +94 0.930000 3.373272 83.413022 +95 0.940000 2.606573 70.285155 +96 0.950000 1.960975 59.137553 +97 0.960000 1.418239 49.666347 +98 0.970000 0.962916 41.615965 +99 0.980000 0.581905 34.771137 +100 0.990000 0.264083 28.950277 +101 1.000000 -0.000000 24.000000 +102 1.010000 -0.218384 19.790571 +103 1.020000 -0.397913 16.212117 +104 1.030000 -0.544418 13.171468 +105 1.040000 -0.662870 10.589529 +106 1.050000 -0.757512 8.399073 +107 1.060000 -0.831965 6.542902 +108 1.070000 -0.889321 4.972300 +109 1.080000 -0.932223 3.645731 +110 1.090000 -0.962930 2.527753 +111 1.100000 -0.983372 1.588095 +112 1.110000 -0.995200 0.800882 +113 1.120000 -0.999824 0.143980 +114 1.130000 -0.999928 -0.018978 +115 1.140000 -0.999613 -0.044145 +116 1.150000 -0.999046 -0.069290 +117 1.160000 -0.998227 -0.094400 +118 1.170000 -0.997158 -0.119462 +119 1.180000 -0.995838 -0.144464 +120 1.190000 -0.994269 -0.169394 +121 1.200000 -0.992451 -0.194238 +122 1.210000 -0.990384 -0.218985 +123 1.220000 -0.988071 -0.243621 +124 1.230000 -0.985512 -0.268134 +125 1.240000 -0.982709 -0.292513 +126 1.250000 -0.979663 -0.316744 +127 1.260000 -0.976375 -0.340816 +128 1.270000 -0.972847 -0.364716 +129 1.280000 -0.969081 -0.388432 +130 1.290000 -0.965079 -0.411953 +131 1.300000 -0.960843 -0.435266 +132 1.310000 -0.956374 -0.458361 +133 1.320000 -0.951676 -0.481224 +134 1.330000 -0.946751 -0.503845 +135 1.340000 -0.941600 -0.526213 +136 1.350000 -0.936227 -0.548315 +137 1.360000 -0.930635 -0.570142 +138 1.370000 -0.924825 -0.591681 +139 1.380000 -0.918802 -0.612922 +140 1.390000 -0.912568 -0.633855 +141 1.400000 -0.906126 -0.654469 +142 1.410000 -0.899480 -0.674753 +143 1.420000 -0.892632 -0.694697 +144 1.430000 -0.885587 -0.714291 +145 1.440000 -0.878347 -0.733526 +146 1.450000 -0.870918 -0.752392 +147 1.460000 -0.863301 -0.770878 +148 1.470000 -0.855501 -0.788977 +149 1.480000 -0.847523 -0.806678 +150 1.490000 -0.839369 -0.823973 +151 1.500000 -0.831045 -0.840853 +152 1.510000 -0.822553 -0.857310 +153 1.520000 -0.813900 -0.873335 +154 1.530000 -0.805088 -0.888920 +155 1.540000 -0.796123 -0.904058 +156 1.550000 -0.787009 -0.918740 +157 1.560000 -0.777750 -0.932960 +158 1.570000 -0.768351 -0.946710 +159 1.580000 -0.758817 -0.959983 +160 1.590000 -0.749153 -0.972773 +161 1.600000 -0.739363 -0.985073 +162 1.610000 -0.729453 -0.996878 +163 1.620000 -0.719427 -1.008180 +164 1.630000 -0.709291 -1.018974 +165 1.640000 -0.699050 -1.029256 +166 1.650000 -0.688708 -1.039019 +167 1.660000 -0.678271 -1.048259 +168 1.670000 -0.667744 -1.056971 +169 1.680000 -0.657133 -1.065151 +170 1.690000 -0.646443 -1.072795 +171 1.700000 -0.635679 -1.079898 +172 1.710000 -0.624847 -1.086458 +173 1.720000 -0.613952 -1.092471 +174 1.730000 -0.602999 -1.097933 +175 1.740000 -0.591995 -1.102843 +176 1.750000 -0.580944 -1.107197 +177 1.760000 -0.569853 -1.110994 +178 1.770000 -0.558726 -1.114231 +179 1.780000 -0.547570 -1.116908 +180 1.790000 -0.536390 -1.119022 +181 1.800000 -0.525192 -1.120572 +182 1.810000 -0.513981 -1.121559 +183 1.820000 -0.502762 -1.121980 +184 1.830000 -0.491543 -1.121837 +185 1.840000 -0.480328 -1.121129 +186 1.850000 -0.469122 -1.119856 +187 1.860000 -0.457932 -1.118019 +188 1.870000 -0.446764 -1.115620 +189 1.880000 -0.435622 -1.112658 +190 1.890000 -0.424512 -1.109137 +191 1.900000 -0.413441 -1.105056 +192 1.910000 -0.402413 -1.100420 +193 1.920000 -0.391434 -1.095229 +194 1.930000 -0.380510 -1.089487 +195 1.940000 -0.369646 -1.083196 +196 1.950000 -0.358848 -1.076360 +197 1.960000 -0.348121 -1.068982 +198 1.970000 -0.337470 -1.061066 +199 1.980000 -0.326902 -1.052615 +200 1.990000 -0.316420 -1.043634 +201 2.000000 -0.306031 -1.034128 +202 2.010000 -0.295739 -1.024101 +203 2.020000 -0.285550 -1.013559 +204 2.030000 -0.275470 -1.002506 +205 2.040000 -0.265502 -0.990948 +206 2.050000 -0.255652 -0.978892 +207 2.060000 -0.245926 -0.966342 +208 2.070000 -0.236327 -0.953306 +209 2.080000 -0.226861 -0.939790 +210 2.090000 -0.217533 -0.925800 +211 2.100000 -0.208347 -0.911345 +212 2.110000 -0.199307 -0.896430 +213 2.120000 -0.190420 -0.881064 +214 2.130000 -0.181688 -0.865255 +215 2.140000 -0.173116 -0.849010 +216 2.150000 -0.164709 -0.832337 +217 2.160000 -0.156471 -0.815245 +218 2.170000 -0.148405 -0.797743 +219 2.180000 -0.140517 -0.779839 +220 2.190000 -0.132810 -0.761542 +221 2.200000 -0.125288 -0.742862 +222 2.210000 -0.117954 -0.723808 +223 2.220000 -0.110813 -0.704390 +224 2.230000 -0.103867 -0.684616 +225 2.240000 -0.097121 -0.664498 +226 2.250000 -0.090578 -0.644046 +227 2.260000 -0.084242 -0.623269 +228 2.270000 -0.078114 -0.602178 +229 2.280000 -0.072199 -0.580784 +230 2.290000 -0.066499 -0.559098 +231 2.300000 -0.061018 -0.537130 +232 2.310000 -0.055758 -0.514892 +233 2.320000 -0.050721 -0.492394 +234 2.330000 -0.045911 -0.469648 +235 2.340000 -0.041329 -0.446666 +236 2.350000 -0.036978 -0.423459 +237 2.360000 -0.032860 -0.400039 +238 2.370000 -0.028978 -0.376418 +239 2.380000 -0.025333 -0.352606 +240 2.390000 -0.021926 -0.328618 +241 2.400000 -0.018761 -0.304464 +242 2.410000 -0.015838 -0.280156 +243 2.420000 -0.013158 -0.255707 +244 2.430000 -0.010724 -0.231130 +245 2.440000 -0.008536 -0.206436 +246 2.450000 -0.006596 -0.181639 +247 2.460000 -0.004903 -0.156750 +248 2.470000 -0.003461 -0.131782 +249 2.480000 -0.002268 -0.106747 +250 2.490000 -0.001326 -0.081659 +251 2.500000 -0.000635 -0.056530 +252 2.510000 -0.000195 -0.031372 +253 2.520000 -0.000008 -0.006199 +254 2.530000 0.000000 0.000000 +255 2.540000 0.000000 0.000000 +256 2.550000 0.000000 0.000000 +257 2.560000 0.000000 0.000000 +258 2.570000 0.000000 0.000000 +259 2.580000 0.000000 0.000000 +260 2.590000 0.000000 0.000000 +261 2.600000 0.000000 0.000000 +262 2.610000 0.000000 0.000000 +263 2.620000 0.000000 0.000000 +264 2.630000 0.000000 0.000000 +265 2.640000 0.000000 0.000000 +266 2.650000 0.000000 0.000000 +267 2.660000 0.000000 0.000000 +268 2.670000 0.000000 0.000000 +269 2.680000 0.000000 0.000000 +270 2.690000 0.000000 0.000000 +271 2.700000 0.000000 0.000000 +272 2.710000 0.000000 0.000000 +273 2.720000 0.000000 0.000000 +274 2.730000 0.000000 0.000000 +275 2.740000 0.000000 0.000000 +276 2.750000 0.000000 0.000000 +277 2.760000 0.000000 0.000000 +278 2.770000 0.000000 0.000000 +279 2.780000 0.000000 0.000000 +280 2.790000 0.000000 0.000000 +281 2.800000 0.000000 0.000000 +282 2.810000 0.000000 0.000000 +283 2.820000 0.000000 0.000000 +284 2.830000 0.000000 0.000000 +285 2.840000 0.000000 0.000000 +286 2.850000 0.000000 0.000000 +287 2.860000 0.000000 0.000000 +288 2.870000 0.000000 0.000000 +289 2.880000 0.000000 0.000000 +290 2.890000 0.000000 0.000000 +291 2.900000 0.000000 0.000000 +292 2.910000 0.000000 0.000000 +293 2.920000 0.000000 0.000000 +294 2.930000 0.000000 0.000000 +295 2.940000 0.000000 0.000000 +296 2.950000 0.000000 0.000000 +297 2.960000 0.000000 0.000000 +298 2.970000 0.000000 0.000000 +299 2.980000 0.000000 0.000000 +300 2.990000 0.000000 0.000000 +301 3.000000 0.000000 0.000000 + + +TAIL_TAIL_Wc_1.5 +N 301 R 0.000001 3.000000 + +1 0.000001 0.000000 0.000000 +2 0.010000 3999999999995999707725824.000000 4799999999997598070678224896.000000 +3 0.020000 976562499937500004352.000000 585937499981249777762304.000000 +4 0.030000 7526705687148720128.000000 3010682275956881096704.000000 +5 0.040000 238418578125000000.000000 71525573583984353280.000000 +6 0.050000 16383999744000000.000000 3932159969279997440.000000 +7 0.060000 1837574546257248.500000 367514917824838144.000000 +8 0.070000 288990429236596.312500 49541219354796968.000000 +9 0.080000 58207645654678.343750 8731147992610928.000000 +10 0.090000 14162817119182.900391 1888376117671434.750000 +11 0.100000 3999996000000.000000 479999760000000.500000 +12 0.110000 1274521012945.708496 139038779115662.093750 +13 0.120000 448625279546.553955 44862594934250.781250 +14 0.130000 171687100967.122345 15848078337188.726562 +15 0.140000 70553781072.250778 6047489716531.549805 +16 0.150000 30829035351.054977 2466336874723.629883 +17 0.160000 14210616296.622902 1065805162943.433594 +18 0.170000 6865346349.879549 484618532348.129211 +19 0.180000 3457603256.036191 230510803894.961182 +20 0.190000 1807158928.004511 114139038296.617722 +21 0.200000 976499999.999998 58591874999.999847 +22 0.210000 543739902.726732 31072184111.878654 +23 0.220000 311127628.299641 16971560078.724821 +24 0.230000 182499493.379421 9522417580.006592 +25 0.240000 109507052.064558 5475875881.316449 +26 0.250000 67092480.000000 3220832255.999991 +27 0.260000 41903049.941880 1934285732.237306 +28 0.270000 26639528.522336 1184208483.196407 +29 0.280000 17216873.260370 738043867.822060 +30 0.290000 11298625.429098 467668459.533016 +31 0.300000 7521218.724186 300958488.336427 +32 0.310000 5073808.319410 196492716.046068 +33 0.320000 3465721.661655 130034411.505164 +34 0.330000 2395143.138865 87152427.788625 +35 0.340000 1673561.082347 59112555.692539 +36 0.350000 1181528.973318 40546867.041137 +37 0.360000 842332.557402 28108378.157278 +38 0.370000 606071.119890 19681641.931764 +39 0.380000 439893.177446 13912339.662092 +40 0.390000 321924.360071 9922853.684245 +41 0.400000 237442.016602 7137908.935547 +42 0.410000 176435.450812 5176287.635225 +43 0.420000 132031.660059 3782743.515595 +44 0.430000 99468.250044 2784687.558254 +45 0.440000 75416.262744 2064324.130372 +46 0.450000 57529.220585 1540535.337797 +47 0.460000 44139.942254 1156983.644674 +48 0.470000 34054.846645 874222.695500 +49 0.480000 26413.181465 664417.646696 +50 0.490000 20589.881497 507780.654581 +51 0.500000 16128.000000 390144.000000 +52 0.510000 12691.351515 301294.396513 +53 0.520000 10031.077542 233820.872331 +54 0.530000 7961.876154 182311.949517 +55 0.540000 6344.988397 142792.224654 +56 0.550000 5075.941991 112324.247003 +57 0.560000 4075.667156 88725.341557 +58 0.570000 3284.018178 70364.910655 +59 0.580000 2655.022026 56018.454503 +60 0.590000 2153.374227 44761.819610 +61 0.600000 1751.840750 35894.153820 +62 0.610000 1429.321668 28881.467437 +63 0.620000 1169.400839 23315.070198 +64 0.630000 959.254371 18880.806522 +65 0.640000 788.825286 15336.170940 +66 0.650000 650.196650 12493.203783 +67 0.660000 537.113366 10205.647944 +68 0.670000 444.615844 8359.261950 +69 0.680000 368.758212 6864.481939 +70 0.690000 306.390715 5650.839586 +71 0.700000 254.991024 4662.698464 +72 0.710000 212.532986 3855.984565 +73 0.720000 177.384120 3195.669530 +74 0.730000 148.225307 2653.826099 +75 0.740000 123.987627 2208.120224 +76 0.750000 103.802544 1840.637693 +77 0.760000 86.962472 1536.967937 +78 0.770000 72.889471 1285.486272 +79 0.780000 61.110325 1076.789779 +80 0.790000 51.236635 903.252555 +81 0.800000 42.948872 758.673996 +82 0.810000 35.983576 637.999825 +83 0.820000 30.123043 537.100183 +84 0.830000 25.186999 452.592612 +85 0.840000 21.025860 381.700456 +86 0.850000 17.515264 322.139305 +87 0.860000 14.551619 272.025666 +88 0.870000 12.048476 229.803356 +89 0.880000 9.933566 194.184004 +90 0.890000 8.146368 164.098852 +91 0.900000 6.636119 138.659624 +92 0.910000 5.360169 117.126674 +93 0.920000 4.282632 98.883003 +94 0.930000 3.373272 83.413022 +95 0.940000 2.606573 70.285155 +96 0.950000 1.960975 59.137553 +97 0.960000 1.418239 49.666347 +98 0.970000 0.962916 41.615965 +99 0.980000 0.581905 34.771137 +100 0.990000 0.264083 28.950277 +101 1.000000 -0.000000 24.000000 +102 1.010000 -0.218384 19.790571 +103 1.020000 -0.397913 16.212117 +104 1.030000 -0.544418 13.171468 +105 1.040000 -0.662870 10.589529 +106 1.050000 -0.757512 8.399073 +107 1.060000 -0.831965 6.542902 +108 1.070000 -0.889321 4.972300 +109 1.080000 -0.932223 3.645731 +110 1.090000 -0.962930 2.527753 +111 1.100000 -0.983372 1.588095 +112 1.110000 -0.995200 0.800882 +113 1.120000 -0.999824 0.143980 +114 1.130000 -0.999938 -0.016532 +115 1.140000 -0.999663 -0.038456 +116 1.150000 -0.999169 -0.060364 +117 1.160000 -0.998456 -0.082245 +118 1.170000 -0.997524 -0.104090 +119 1.180000 -0.996374 -0.125890 +120 1.190000 -0.995006 -0.147634 +121 1.200000 -0.993421 -0.169313 +122 1.210000 -0.991620 -0.190918 +123 1.220000 -0.989603 -0.212440 +124 1.230000 -0.987372 -0.233868 +125 1.240000 -0.984926 -0.255194 +126 1.250000 -0.982268 -0.276407 +127 1.260000 -0.979399 -0.297500 +128 1.270000 -0.976319 -0.318462 +129 1.280000 -0.973030 -0.339284 +130 1.290000 -0.969533 -0.359958 +131 1.300000 -0.965831 -0.380473 +132 1.310000 -0.961925 -0.400822 +133 1.320000 -0.957815 -0.420995 +134 1.330000 -0.953505 -0.440983 +135 1.340000 -0.948996 -0.460778 +136 1.350000 -0.944290 -0.480371 +137 1.360000 -0.939390 -0.499753 +138 1.370000 -0.934296 -0.518915 +139 1.380000 -0.929012 -0.537851 +140 1.390000 -0.923540 -0.556550 +141 1.400000 -0.917882 -0.575005 +142 1.410000 -0.912041 -0.593208 +143 1.420000 -0.906019 -0.611151 +144 1.430000 -0.899818 -0.628825 +145 1.440000 -0.893443 -0.646224 +146 1.450000 -0.886895 -0.663339 +147 1.460000 -0.880177 -0.680164 +148 1.470000 -0.873293 -0.696690 +149 1.480000 -0.866244 -0.712910 +150 1.490000 -0.859035 -0.728818 +151 1.500000 -0.851669 -0.744406 +152 1.510000 -0.844148 -0.759668 +153 1.520000 -0.836477 -0.774596 +154 1.530000 -0.828658 -0.789184 +155 1.540000 -0.820694 -0.803427 +156 1.550000 -0.812590 -0.817317 +157 1.560000 -0.804349 -0.830848 +158 1.570000 -0.795975 -0.844015 +159 1.580000 -0.787470 -0.856812 +160 1.590000 -0.778840 -0.869233 +161 1.600000 -0.770087 -0.881273 +162 1.610000 -0.761215 -0.892926 +163 1.620000 -0.752229 -0.904188 +164 1.630000 -0.743133 -0.915053 +165 1.640000 -0.733930 -0.925516 +166 1.650000 -0.724624 -0.935574 +167 1.660000 -0.715220 -0.945221 +168 1.670000 -0.705721 -0.954454 +169 1.680000 -0.696132 -0.963267 +170 1.690000 -0.686457 -0.971659 +171 1.700000 -0.676700 -0.979624 +172 1.710000 -0.666866 -0.987160 +173 1.720000 -0.656958 -0.994262 +174 1.730000 -0.646982 -1.000929 +175 1.740000 -0.636941 -1.007156 +176 1.750000 -0.626841 -1.012942 +177 1.760000 -0.616684 -1.018283 +178 1.770000 -0.606476 -1.023177 +179 1.780000 -0.596222 -1.027623 +180 1.790000 -0.585925 -1.031618 +181 1.800000 -0.575591 -1.035161 +182 1.810000 -0.565224 -1.038249 +183 1.820000 -0.554828 -1.040883 +184 1.830000 -0.544408 -1.043059 +185 1.840000 -0.533968 -1.044778 +186 1.850000 -0.523514 -1.046039 +187 1.860000 -0.513049 -1.046841 +188 1.870000 -0.502578 -1.047184 +189 1.880000 -0.492107 -1.047067 +190 1.890000 -0.481638 -1.046491 +191 1.900000 -0.471178 -1.045456 +192 1.910000 -0.460731 -1.043963 +193 1.920000 -0.450301 -1.042011 +194 1.930000 -0.439892 -1.039603 +195 1.940000 -0.429510 -1.036739 +196 1.950000 -0.419159 -1.033419 +197 1.960000 -0.408843 -1.029647 +198 1.970000 -0.398567 -1.025423 +199 1.980000 -0.388336 -1.020749 +200 1.990000 -0.378154 -1.015627 +201 2.000000 -0.368025 -1.010060 +202 2.010000 -0.357954 -1.004050 +203 2.020000 -0.347946 -0.997599 +204 2.030000 -0.338004 -0.990711 +205 2.040000 -0.328133 -0.983389 +206 2.050000 -0.318337 -0.975635 +207 2.060000 -0.308622 -0.967453 +208 2.070000 -0.298990 -0.958846 +209 2.080000 -0.289446 -0.949819 +210 2.090000 -0.279995 -0.940376 +211 2.100000 -0.270640 -0.930520 +212 2.110000 -0.261386 -0.920255 +213 2.120000 -0.252236 -0.909588 +214 2.130000 -0.243195 -0.898521 +215 2.140000 -0.234267 -0.887060 +216 2.150000 -0.225455 -0.875210 +217 2.160000 -0.216764 -0.862976 +218 2.170000 -0.208197 -0.850363 +219 2.180000 -0.199758 -0.837378 +220 2.190000 -0.191451 -0.824025 +221 2.200000 -0.183279 -0.810311 +222 2.210000 -0.175246 -0.796241 +223 2.220000 -0.167355 -0.781822 +224 2.230000 -0.159610 -0.767060 +225 2.240000 -0.152015 -0.751962 +226 2.250000 -0.144572 -0.736534 +227 2.260000 -0.137285 -0.720783 +228 2.270000 -0.130158 -0.704715 +229 2.280000 -0.123192 -0.688339 +230 2.290000 -0.116392 -0.671661 +231 2.300000 -0.109760 -0.654688 +232 2.310000 -0.103299 -0.637427 +233 2.320000 -0.097012 -0.619888 +234 2.330000 -0.090902 -0.602076 +235 2.340000 -0.084972 -0.584000 +236 2.350000 -0.079223 -0.565668 +237 2.360000 -0.073659 -0.547088 +238 2.370000 -0.068282 -0.528268 +239 2.380000 -0.063095 -0.509216 +240 2.390000 -0.058099 -0.489941 +241 2.400000 -0.053296 -0.470451 +242 2.410000 -0.048690 -0.450755 +243 2.420000 -0.044282 -0.430861 +244 2.430000 -0.040074 -0.410778 +245 2.440000 -0.036067 -0.390515 +246 2.450000 -0.032264 -0.370080 +247 2.460000 -0.028666 -0.349483 +248 2.470000 -0.025275 -0.328733 +249 2.480000 -0.022092 -0.307839 +250 2.490000 -0.019118 -0.286809 +251 2.500000 -0.016356 -0.265654 +252 2.510000 -0.013806 -0.244382 +253 2.520000 -0.011469 -0.223004 +254 2.530000 -0.009346 -0.201527 +255 2.540000 -0.007439 -0.179962 +256 2.550000 -0.005747 -0.158318 +257 2.560000 -0.004272 -0.136604 +258 2.570000 -0.003015 -0.114831 +259 2.580000 -0.001976 -0.093007 +260 2.590000 -0.001155 -0.071142 +261 2.600000 -0.000553 -0.049247 +262 2.610000 -0.000170 -0.027329 +263 2.620000 -0.000007 -0.005400 +264 2.630000 0.000000 0.000000 +265 2.640000 0.000000 0.000000 +266 2.650000 0.000000 0.000000 +267 2.660000 0.000000 0.000000 +268 2.670000 0.000000 0.000000 +269 2.680000 0.000000 0.000000 +270 2.690000 0.000000 0.000000 +271 2.700000 0.000000 0.000000 +272 2.710000 0.000000 0.000000 +273 2.720000 0.000000 0.000000 +274 2.730000 0.000000 0.000000 +275 2.740000 0.000000 0.000000 +276 2.750000 0.000000 0.000000 +277 2.760000 0.000000 0.000000 +278 2.770000 0.000000 0.000000 +279 2.780000 0.000000 0.000000 +280 2.790000 0.000000 0.000000 +281 2.800000 0.000000 0.000000 +282 2.810000 0.000000 0.000000 +283 2.820000 0.000000 0.000000 +284 2.830000 0.000000 0.000000 +285 2.840000 0.000000 0.000000 +286 2.850000 0.000000 0.000000 +287 2.860000 0.000000 0.000000 +288 2.870000 0.000000 0.000000 +289 2.880000 0.000000 0.000000 +290 2.890000 0.000000 0.000000 +291 2.900000 0.000000 0.000000 +292 2.910000 0.000000 0.000000 +293 2.920000 0.000000 0.000000 +294 2.930000 0.000000 0.000000 +295 2.940000 0.000000 0.000000 +296 2.950000 0.000000 0.000000 +297 2.960000 0.000000 0.000000 +298 2.970000 0.000000 0.000000 +299 2.980000 0.000000 0.000000 +300 2.990000 0.000000 0.000000 +301 3.000000 0.000000 0.000000 + + +TAIL_TAIL_Wc_1.6 +N 301 R 0.000001 3.000000 + +1 0.000001 0.000000 0.000000 +2 0.010000 3999999999995999707725824.000000 4799999999997598070678224896.000000 +3 0.020000 976562499937500004352.000000 585937499981249777762304.000000 +4 0.030000 7526705687148720128.000000 3010682275956881096704.000000 +5 0.040000 238418578125000000.000000 71525573583984353280.000000 +6 0.050000 16383999744000000.000000 3932159969279997440.000000 +7 0.060000 1837574546257248.500000 367514917824838144.000000 +8 0.070000 288990429236596.312500 49541219354796968.000000 +9 0.080000 58207645654678.343750 8731147992610928.000000 +10 0.090000 14162817119182.900391 1888376117671434.750000 +11 0.100000 3999996000000.000000 479999760000000.500000 +12 0.110000 1274521012945.708496 139038779115662.093750 +13 0.120000 448625279546.553955 44862594934250.781250 +14 0.130000 171687100967.122345 15848078337188.726562 +15 0.140000 70553781072.250778 6047489716531.549805 +16 0.150000 30829035351.054977 2466336874723.629883 +17 0.160000 14210616296.622902 1065805162943.433594 +18 0.170000 6865346349.879549 484618532348.129211 +19 0.180000 3457603256.036191 230510803894.961182 +20 0.190000 1807158928.004511 114139038296.617722 +21 0.200000 976499999.999998 58591874999.999847 +22 0.210000 543739902.726732 31072184111.878654 +23 0.220000 311127628.299641 16971560078.724821 +24 0.230000 182499493.379421 9522417580.006592 +25 0.240000 109507052.064558 5475875881.316449 +26 0.250000 67092480.000000 3220832255.999991 +27 0.260000 41903049.941880 1934285732.237306 +28 0.270000 26639528.522336 1184208483.196407 +29 0.280000 17216873.260370 738043867.822060 +30 0.290000 11298625.429098 467668459.533016 +31 0.300000 7521218.724186 300958488.336427 +32 0.310000 5073808.319410 196492716.046068 +33 0.320000 3465721.661655 130034411.505164 +34 0.330000 2395143.138865 87152427.788625 +35 0.340000 1673561.082347 59112555.692539 +36 0.350000 1181528.973318 40546867.041137 +37 0.360000 842332.557402 28108378.157278 +38 0.370000 606071.119890 19681641.931764 +39 0.380000 439893.177446 13912339.662092 +40 0.390000 321924.360071 9922853.684245 +41 0.400000 237442.016602 7137908.935547 +42 0.410000 176435.450812 5176287.635225 +43 0.420000 132031.660059 3782743.515595 +44 0.430000 99468.250044 2784687.558254 +45 0.440000 75416.262744 2064324.130372 +46 0.450000 57529.220585 1540535.337797 +47 0.460000 44139.942254 1156983.644674 +48 0.470000 34054.846645 874222.695500 +49 0.480000 26413.181465 664417.646696 +50 0.490000 20589.881497 507780.654581 +51 0.500000 16128.000000 390144.000000 +52 0.510000 12691.351515 301294.396513 +53 0.520000 10031.077542 233820.872331 +54 0.530000 7961.876154 182311.949517 +55 0.540000 6344.988397 142792.224654 +56 0.550000 5075.941991 112324.247003 +57 0.560000 4075.667156 88725.341557 +58 0.570000 3284.018178 70364.910655 +59 0.580000 2655.022026 56018.454503 +60 0.590000 2153.374227 44761.819610 +61 0.600000 1751.840750 35894.153820 +62 0.610000 1429.321668 28881.467437 +63 0.620000 1169.400839 23315.070198 +64 0.630000 959.254371 18880.806522 +65 0.640000 788.825286 15336.170940 +66 0.650000 650.196650 12493.203783 +67 0.660000 537.113366 10205.647944 +68 0.670000 444.615844 8359.261950 +69 0.680000 368.758212 6864.481939 +70 0.690000 306.390715 5650.839586 +71 0.700000 254.991024 4662.698464 +72 0.710000 212.532986 3855.984565 +73 0.720000 177.384120 3195.669530 +74 0.730000 148.225307 2653.826099 +75 0.740000 123.987627 2208.120224 +76 0.750000 103.802544 1840.637693 +77 0.760000 86.962472 1536.967937 +78 0.770000 72.889471 1285.486272 +79 0.780000 61.110325 1076.789779 +80 0.790000 51.236635 903.252555 +81 0.800000 42.948872 758.673996 +82 0.810000 35.983576 637.999825 +83 0.820000 30.123043 537.100183 +84 0.830000 25.186999 452.592612 +85 0.840000 21.025860 381.700456 +86 0.850000 17.515264 322.139305 +87 0.860000 14.551619 272.025666 +88 0.870000 12.048476 229.803356 +89 0.880000 9.933566 194.184004 +90 0.890000 8.146368 164.098852 +91 0.900000 6.636119 138.659624 +92 0.910000 5.360169 117.126674 +93 0.920000 4.282632 98.883003 +94 0.930000 3.373272 83.413022 +95 0.940000 2.606573 70.285155 +96 0.950000 1.960975 59.137553 +97 0.960000 1.418239 49.666347 +98 0.970000 0.962916 41.615965 +99 0.980000 0.581905 34.771137 +100 0.990000 0.264083 28.950277 +101 1.000000 -0.000000 24.000000 +102 1.010000 -0.218384 19.790571 +103 1.020000 -0.397913 16.212117 +104 1.030000 -0.544418 13.171468 +105 1.040000 -0.662870 10.589529 +106 1.050000 -0.757512 8.399073 +107 1.060000 -0.831965 6.542902 +108 1.070000 -0.889321 4.972300 +109 1.080000 -0.932223 3.645731 +110 1.090000 -0.962930 2.527753 +111 1.100000 -0.983372 1.588095 +112 1.110000 -0.995200 0.800882 +113 1.120000 -0.999824 0.143980 +114 1.130000 -0.999945 -0.014530 +115 1.140000 -0.999704 -0.033800 +116 1.150000 -0.999269 -0.053058 +117 1.160000 -0.998642 -0.072295 +118 1.170000 -0.997823 -0.091504 +119 1.180000 -0.996813 -0.110678 +120 1.190000 -0.995610 -0.129809 +121 1.200000 -0.994217 -0.148890 +122 1.210000 -0.992632 -0.167914 +123 1.220000 -0.990858 -0.186872 +124 1.230000 -0.988895 -0.205759 +125 1.240000 -0.986744 -0.224567 +126 1.250000 -0.984404 -0.243288 +127 1.260000 -0.981878 -0.261915 +128 1.270000 -0.979166 -0.280441 +129 1.280000 -0.976270 -0.298859 +130 1.290000 -0.973189 -0.317162 +131 1.300000 -0.969927 -0.335343 +132 1.310000 -0.966483 -0.353394 +133 1.320000 -0.962859 -0.371309 +134 1.330000 -0.959057 -0.389081 +135 1.340000 -0.955078 -0.406703 +136 1.350000 -0.950924 -0.424169 +137 1.360000 -0.946595 -0.441470 +138 1.370000 -0.942095 -0.458602 +139 1.380000 -0.937424 -0.475556 +140 1.390000 -0.932584 -0.492328 +141 1.400000 -0.927578 -0.508909 +142 1.410000 -0.922407 -0.525294 +143 1.420000 -0.917073 -0.541477 +144 1.430000 -0.911578 -0.557451 +145 1.440000 -0.905925 -0.573211 +146 1.450000 -0.900115 -0.588749 +147 1.460000 -0.894150 -0.604060 +148 1.470000 -0.888034 -0.619138 +149 1.480000 -0.881768 -0.633978 +150 1.490000 -0.875355 -0.648573 +151 1.500000 -0.868798 -0.662918 +152 1.510000 -0.862098 -0.677008 +153 1.520000 -0.855258 -0.690836 +154 1.530000 -0.848282 -0.704399 +155 1.540000 -0.841171 -0.717689 +156 1.550000 -0.833929 -0.730703 +157 1.560000 -0.826558 -0.743436 +158 1.570000 -0.819061 -0.755882 +159 1.580000 -0.811442 -0.768036 +160 1.590000 -0.803702 -0.779894 +161 1.600000 -0.795845 -0.791452 +162 1.610000 -0.787874 -0.802704 +163 1.620000 -0.779792 -0.813647 +164 1.630000 -0.771602 -0.824276 +165 1.640000 -0.763307 -0.834588 +166 1.650000 -0.754911 -0.844578 +167 1.660000 -0.746417 -0.854242 +168 1.670000 -0.737827 -0.863577 +169 1.680000 -0.729146 -0.872579 +170 1.690000 -0.720377 -0.881244 +171 1.700000 -0.711522 -0.889570 +172 1.710000 -0.702587 -0.897553 +173 1.720000 -0.693573 -0.905190 +174 1.730000 -0.684484 -0.912478 +175 1.740000 -0.675324 -0.919414 +176 1.750000 -0.666097 -0.925995 +177 1.760000 -0.656805 -0.932220 +178 1.770000 -0.647454 -0.938085 +179 1.780000 -0.638045 -0.943589 +180 1.790000 -0.628583 -0.948729 +181 1.800000 -0.619072 -0.953503 +182 1.810000 -0.609514 -0.957909 +183 1.820000 -0.599915 -0.961947 +184 1.830000 -0.590277 -0.965613 +185 1.840000 -0.580604 -0.968907 +186 1.850000 -0.570900 -0.971828 +187 1.860000 -0.561168 -0.974373 +188 1.870000 -0.551413 -0.976544 +189 1.880000 -0.541639 -0.978338 +190 1.890000 -0.531848 -0.979754 +191 1.900000 -0.522045 -0.980793 +192 1.910000 -0.512233 -0.981454 +193 1.920000 -0.502417 -0.981736 +194 1.930000 -0.492600 -0.981640 +195 1.940000 -0.482786 -0.981166 +196 1.950000 -0.472978 -0.980313 +197 1.960000 -0.463181 -0.979082 +198 1.970000 -0.453397 -0.977474 +199 1.980000 -0.443632 -0.975489 +200 1.990000 -0.433889 -0.973128 +201 2.000000 -0.424171 -0.970392 +202 2.010000 -0.414482 -0.967282 +203 2.020000 -0.404827 -0.963798 +204 2.030000 -0.395208 -0.959944 +205 2.040000 -0.385629 -0.955719 +206 2.050000 -0.376094 -0.951125 +207 2.060000 -0.366608 -0.946165 +208 2.070000 -0.357172 -0.940841 +209 2.080000 -0.347792 -0.935153 +210 2.090000 -0.338471 -0.929105 +211 2.100000 -0.329211 -0.922699 +212 2.110000 -0.320018 -0.915937 +213 2.120000 -0.310894 -0.908822 +214 2.130000 -0.301842 -0.901357 +215 2.140000 -0.292868 -0.893544 +216 2.150000 -0.283973 -0.885387 +217 2.160000 -0.275161 -0.876888 +218 2.170000 -0.266436 -0.868051 +219 2.180000 -0.257801 -0.858880 +220 2.190000 -0.249260 -0.849377 +221 2.200000 -0.240815 -0.839548 +222 2.210000 -0.232470 -0.829394 +223 2.220000 -0.224228 -0.818921 +224 2.230000 -0.216092 -0.808132 +225 2.240000 -0.208066 -0.797031 +226 2.250000 -0.200153 -0.785623 +227 2.260000 -0.192355 -0.773912 +228 2.270000 -0.184676 -0.761903 +229 2.280000 -0.177118 -0.749600 +230 2.290000 -0.169684 -0.737009 +231 2.300000 -0.162379 -0.724133 +232 2.310000 -0.155203 -0.710977 +233 2.320000 -0.148160 -0.697548 +234 2.330000 -0.141253 -0.683850 +235 2.340000 -0.134484 -0.669888 +236 2.350000 -0.127856 -0.655668 +237 2.360000 -0.121371 -0.641196 +238 2.370000 -0.115033 -0.626476 +239 2.380000 -0.108843 -0.611514 +240 2.390000 -0.102803 -0.596317 +241 2.400000 -0.096917 -0.580890 +242 2.410000 -0.091186 -0.565239 +243 2.420000 -0.085613 -0.549370 +244 2.430000 -0.080199 -0.533289 +245 2.440000 -0.074948 -0.517002 +246 2.450000 -0.069860 -0.500517 +247 2.460000 -0.064938 -0.483838 +248 2.470000 -0.060184 -0.466973 +249 2.480000 -0.055599 -0.449928 +250 2.490000 -0.051186 -0.432709 +251 2.500000 -0.046946 -0.415323 +252 2.510000 -0.042880 -0.397778 +253 2.520000 -0.038991 -0.380079 +254 2.530000 -0.035279 -0.362233 +255 2.540000 -0.031746 -0.344248 +256 2.550000 -0.028394 -0.326130 +257 2.560000 -0.025224 -0.307887 +258 2.570000 -0.022237 -0.289525 +259 2.580000 -0.019434 -0.271051 +260 2.590000 -0.016816 -0.252472 +261 2.600000 -0.014385 -0.233797 +262 2.610000 -0.012141 -0.215031 +263 2.620000 -0.010085 -0.196182 +264 2.630000 -0.008217 -0.177258 +265 2.640000 -0.006540 -0.158265 +266 2.650000 -0.005052 -0.139211 +267 2.660000 -0.003756 -0.120104 +268 2.670000 -0.002650 -0.100950 +269 2.680000 -0.001737 -0.081757 +270 2.690000 -0.001015 -0.062533 +271 2.700000 -0.000486 -0.043285 +272 2.710000 -0.000150 -0.024020 +273 2.720000 -0.000006 -0.004746 +274 2.730000 0.000000 0.000000 +275 2.740000 0.000000 0.000000 +276 2.750000 0.000000 0.000000 +277 2.760000 0.000000 0.000000 +278 2.770000 0.000000 0.000000 +279 2.780000 0.000000 0.000000 +280 2.790000 0.000000 0.000000 +281 2.800000 0.000000 0.000000 +282 2.810000 0.000000 0.000000 +283 2.820000 0.000000 0.000000 +284 2.830000 0.000000 0.000000 +285 2.840000 0.000000 0.000000 +286 2.850000 0.000000 0.000000 +287 2.860000 0.000000 0.000000 +288 2.870000 0.000000 0.000000 +289 2.880000 0.000000 0.000000 +290 2.890000 0.000000 0.000000 +291 2.900000 0.000000 0.000000 +292 2.910000 0.000000 0.000000 +293 2.920000 0.000000 0.000000 +294 2.930000 0.000000 0.000000 +295 2.940000 0.000000 0.000000 +296 2.950000 0.000000 0.000000 +297 2.960000 0.000000 0.000000 +298 2.970000 0.000000 0.000000 +299 2.980000 0.000000 0.000000 +300 2.990000 0.000000 0.000000 +301 3.000000 0.000000 0.000000 + + +TAIL_TAIL_Wc_1.7 +N 301 R 0.000001 3.000000 + +1 0.000001 0.000000 0.000000 +2 0.010000 3999999999995999707725824.000000 4799999999997598070678224896.000000 +3 0.020000 976562499937500004352.000000 585937499981249777762304.000000 +4 0.030000 7526705687148720128.000000 3010682275956881096704.000000 +5 0.040000 238418578125000000.000000 71525573583984353280.000000 +6 0.050000 16383999744000000.000000 3932159969279997440.000000 +7 0.060000 1837574546257248.500000 367514917824838144.000000 +8 0.070000 288990429236596.312500 49541219354796968.000000 +9 0.080000 58207645654678.343750 8731147992610928.000000 +10 0.090000 14162817119182.900391 1888376117671434.750000 +11 0.100000 3999996000000.000000 479999760000000.500000 +12 0.110000 1274521012945.708496 139038779115662.093750 +13 0.120000 448625279546.553955 44862594934250.781250 +14 0.130000 171687100967.122345 15848078337188.726562 +15 0.140000 70553781072.250778 6047489716531.549805 +16 0.150000 30829035351.054977 2466336874723.629883 +17 0.160000 14210616296.622902 1065805162943.433594 +18 0.170000 6865346349.879549 484618532348.129211 +19 0.180000 3457603256.036191 230510803894.961182 +20 0.190000 1807158928.004511 114139038296.617722 +21 0.200000 976499999.999998 58591874999.999847 +22 0.210000 543739902.726732 31072184111.878654 +23 0.220000 311127628.299641 16971560078.724821 +24 0.230000 182499493.379421 9522417580.006592 +25 0.240000 109507052.064558 5475875881.316449 +26 0.250000 67092480.000000 3220832255.999991 +27 0.260000 41903049.941880 1934285732.237306 +28 0.270000 26639528.522336 1184208483.196407 +29 0.280000 17216873.260370 738043867.822060 +30 0.290000 11298625.429098 467668459.533016 +31 0.300000 7521218.724186 300958488.336427 +32 0.310000 5073808.319410 196492716.046068 +33 0.320000 3465721.661655 130034411.505164 +34 0.330000 2395143.138865 87152427.788625 +35 0.340000 1673561.082347 59112555.692539 +36 0.350000 1181528.973318 40546867.041137 +37 0.360000 842332.557402 28108378.157278 +38 0.370000 606071.119890 19681641.931764 +39 0.380000 439893.177446 13912339.662092 +40 0.390000 321924.360071 9922853.684245 +41 0.400000 237442.016602 7137908.935547 +42 0.410000 176435.450812 5176287.635225 +43 0.420000 132031.660059 3782743.515595 +44 0.430000 99468.250044 2784687.558254 +45 0.440000 75416.262744 2064324.130372 +46 0.450000 57529.220585 1540535.337797 +47 0.460000 44139.942254 1156983.644674 +48 0.470000 34054.846645 874222.695500 +49 0.480000 26413.181465 664417.646696 +50 0.490000 20589.881497 507780.654581 +51 0.500000 16128.000000 390144.000000 +52 0.510000 12691.351515 301294.396513 +53 0.520000 10031.077542 233820.872331 +54 0.530000 7961.876154 182311.949517 +55 0.540000 6344.988397 142792.224654 +56 0.550000 5075.941991 112324.247003 +57 0.560000 4075.667156 88725.341557 +58 0.570000 3284.018178 70364.910655 +59 0.580000 2655.022026 56018.454503 +60 0.590000 2153.374227 44761.819610 +61 0.600000 1751.840750 35894.153820 +62 0.610000 1429.321668 28881.467437 +63 0.620000 1169.400839 23315.070198 +64 0.630000 959.254371 18880.806522 +65 0.640000 788.825286 15336.170940 +66 0.650000 650.196650 12493.203783 +67 0.660000 537.113366 10205.647944 +68 0.670000 444.615844 8359.261950 +69 0.680000 368.758212 6864.481939 +70 0.690000 306.390715 5650.839586 +71 0.700000 254.991024 4662.698464 +72 0.710000 212.532986 3855.984565 +73 0.720000 177.384120 3195.669530 +74 0.730000 148.225307 2653.826099 +75 0.740000 123.987627 2208.120224 +76 0.750000 103.802544 1840.637693 +77 0.760000 86.962472 1536.967937 +78 0.770000 72.889471 1285.486272 +79 0.780000 61.110325 1076.789779 +80 0.790000 51.236635 903.252555 +81 0.800000 42.948872 758.673996 +82 0.810000 35.983576 637.999825 +83 0.820000 30.123043 537.100183 +84 0.830000 25.186999 452.592612 +85 0.840000 21.025860 381.700456 +86 0.850000 17.515264 322.139305 +87 0.860000 14.551619 272.025666 +88 0.870000 12.048476 229.803356 +89 0.880000 9.933566 194.184004 +90 0.890000 8.146368 164.098852 +91 0.900000 6.636119 138.659624 +92 0.910000 5.360169 117.126674 +93 0.920000 4.282632 98.883003 +94 0.930000 3.373272 83.413022 +95 0.940000 2.606573 70.285155 +96 0.950000 1.960975 59.137553 +97 0.960000 1.418239 49.666347 +98 0.970000 0.962916 41.615965 +99 0.980000 0.581905 34.771137 +100 0.990000 0.264083 28.950277 +101 1.000000 -0.000000 24.000000 +102 1.010000 -0.218384 19.790571 +103 1.020000 -0.397913 16.212117 +104 1.030000 -0.544418 13.171468 +105 1.040000 -0.662870 10.589529 +106 1.050000 -0.757512 8.399073 +107 1.060000 -0.831965 6.542902 +108 1.070000 -0.889321 4.972300 +109 1.080000 -0.932223 3.645731 +110 1.090000 -0.962930 2.527753 +111 1.100000 -0.983372 1.588095 +112 1.110000 -0.995200 0.800882 +113 1.120000 -0.999824 0.143980 +114 1.130000 -0.999951 -0.012871 +115 1.140000 -0.999737 -0.029942 +116 1.150000 -0.999353 -0.047002 +117 1.160000 -0.998797 -0.064046 +118 1.170000 -0.998072 -0.081069 +119 1.180000 -0.997176 -0.098064 +120 1.190000 -0.996111 -0.115025 +121 1.200000 -0.994876 -0.131947 +122 1.210000 -0.993472 -0.148824 +123 1.220000 -0.991899 -0.165650 +124 1.230000 -0.990159 -0.182419 +125 1.240000 -0.988251 -0.199127 +126 1.250000 -0.986177 -0.215766 +127 1.260000 -0.983936 -0.232332 +128 1.270000 -0.981530 -0.248818 +129 1.280000 -0.978960 -0.265219 +130 1.290000 -0.976226 -0.281530 +131 1.300000 -0.973330 -0.297744 +132 1.310000 -0.970272 -0.313857 +133 1.320000 -0.967053 -0.329863 +134 1.330000 -0.963675 -0.345756 +135 1.340000 -0.960138 -0.361531 +136 1.350000 -0.956445 -0.377182 +137 1.360000 -0.952595 -0.392705 +138 1.370000 -0.948591 -0.408094 +139 1.380000 -0.944434 -0.423343 +140 1.390000 -0.940125 -0.438448 +141 1.400000 -0.935665 -0.453403 +142 1.410000 -0.931057 -0.468203 +143 1.420000 -0.926302 -0.482843 +144 1.430000 -0.921401 -0.497318 +145 1.440000 -0.916356 -0.511624 +146 1.450000 -0.911169 -0.525754 +147 1.460000 -0.905841 -0.539706 +148 1.470000 -0.900375 -0.553472 +149 1.480000 -0.894773 -0.567050 +150 1.490000 -0.889035 -0.580435 +151 1.500000 -0.883165 -0.593621 +152 1.510000 -0.877163 -0.606604 +153 1.520000 -0.871033 -0.619380 +154 1.530000 -0.864776 -0.631945 +155 1.540000 -0.858395 -0.644294 +156 1.550000 -0.851891 -0.656422 +157 1.560000 -0.845267 -0.668327 +158 1.570000 -0.838526 -0.680003 +159 1.580000 -0.831668 -0.691448 +160 1.590000 -0.824697 -0.702656 +161 1.600000 -0.817616 -0.713624 +162 1.610000 -0.810426 -0.724348 +163 1.620000 -0.803130 -0.734825 +164 1.630000 -0.795730 -0.745051 +165 1.640000 -0.788229 -0.755023 +166 1.650000 -0.780630 -0.764737 +167 1.660000 -0.772936 -0.774189 +168 1.670000 -0.765148 -0.783378 +169 1.680000 -0.757269 -0.792298 +170 1.690000 -0.749302 -0.800948 +171 1.700000 -0.741251 -0.809325 +172 1.710000 -0.733117 -0.817425 +173 1.720000 -0.724903 -0.825246 +174 1.730000 -0.716613 -0.832786 +175 1.740000 -0.708249 -0.840041 +176 1.750000 -0.699813 -0.847009 +177 1.760000 -0.691309 -0.853687 +178 1.770000 -0.682740 -0.860075 +179 1.780000 -0.674109 -0.866168 +180 1.790000 -0.665418 -0.871966 +181 1.800000 -0.656670 -0.877466 +182 1.810000 -0.647870 -0.882666 +183 1.820000 -0.639018 -0.887565 +184 1.830000 -0.630119 -0.892161 +185 1.840000 -0.621176 -0.896452 +186 1.850000 -0.612191 -0.900437 +187 1.860000 -0.603168 -0.904114 +188 1.870000 -0.594110 -0.907483 +189 1.880000 -0.585020 -0.910542 +190 1.890000 -0.575900 -0.913290 +191 1.900000 -0.566755 -0.915726 +192 1.910000 -0.557587 -0.917849 +193 1.920000 -0.548399 -0.919659 +194 1.930000 -0.539195 -0.921155 +195 1.940000 -0.529977 -0.922336 +196 1.950000 -0.520749 -0.923202 +197 1.960000 -0.511514 -0.923753 +198 1.970000 -0.502275 -0.923988 +199 1.980000 -0.493035 -0.923908 +200 1.990000 -0.483798 -0.923513 +201 2.000000 -0.474566 -0.922802 +202 2.010000 -0.465343 -0.921776 +203 2.020000 -0.456132 -0.920435 +204 2.030000 -0.446935 -0.918779 +205 2.040000 -0.437757 -0.916810 +206 2.050000 -0.428600 -0.914528 +207 2.060000 -0.419467 -0.911934 +208 2.070000 -0.410362 -0.909028 +209 2.080000 -0.401288 -0.905812 +210 2.090000 -0.392247 -0.902286 +211 2.100000 -0.383243 -0.898453 +212 2.110000 -0.374279 -0.894312 +213 2.120000 -0.365358 -0.889866 +214 2.130000 -0.356483 -0.885116 +215 2.140000 -0.347657 -0.880064 +216 2.150000 -0.338883 -0.874712 +217 2.160000 -0.330163 -0.869060 +218 2.170000 -0.321502 -0.863112 +219 2.180000 -0.312902 -0.856869 +220 2.190000 -0.304366 -0.850334 +221 2.200000 -0.295896 -0.843508 +222 2.210000 -0.287497 -0.836394 +223 2.220000 -0.279170 -0.828994 +224 2.230000 -0.270918 -0.821312 +225 2.240000 -0.262744 -0.813348 +226 2.250000 -0.254652 -0.805108 +227 2.260000 -0.246643 -0.796592 +228 2.270000 -0.238721 -0.787804 +229 2.280000 -0.230888 -0.778747 +230 2.290000 -0.223147 -0.769424 +231 2.300000 -0.215500 -0.759838 +232 2.310000 -0.207951 -0.749993 +233 2.320000 -0.200501 -0.739892 +234 2.330000 -0.193154 -0.729538 +235 2.340000 -0.185911 -0.718935 +236 2.350000 -0.178776 -0.708087 +237 2.360000 -0.171750 -0.696996 +238 2.370000 -0.164837 -0.685668 +239 2.380000 -0.158038 -0.674105 +240 2.390000 -0.151356 -0.662313 +241 2.400000 -0.144792 -0.650294 +242 2.410000 -0.138350 -0.638053 +243 2.420000 -0.132032 -0.625594 +244 2.430000 -0.125839 -0.612921 +245 2.440000 -0.119774 -0.600039 +246 2.450000 -0.113839 -0.586953 +247 2.460000 -0.108036 -0.573665 +248 2.470000 -0.102366 -0.560182 +249 2.480000 -0.096833 -0.546508 +250 2.490000 -0.091437 -0.532647 +251 2.500000 -0.086181 -0.518604 +252 2.510000 -0.081065 -0.504384 +253 2.520000 -0.076093 -0.489991 +254 2.530000 -0.071266 -0.475432 +255 2.540000 -0.066585 -0.460710 +256 2.550000 -0.062052 -0.445831 +257 2.560000 -0.057669 -0.430799 +258 2.570000 -0.053437 -0.415620 +259 2.580000 -0.049357 -0.400300 +260 2.590000 -0.045431 -0.384842 +261 2.600000 -0.041661 -0.369254 +262 2.610000 -0.038047 -0.353539 +263 2.620000 -0.034591 -0.337703 +264 2.630000 -0.031293 -0.321752 +265 2.640000 -0.028156 -0.305692 +266 2.650000 -0.025180 -0.289526 +267 2.660000 -0.022366 -0.273262 +268 2.670000 -0.019715 -0.256905 +269 2.680000 -0.017228 -0.240460 +270 2.690000 -0.014906 -0.223933 +271 2.700000 -0.012749 -0.207329 +272 2.710000 -0.010759 -0.190654 +273 2.720000 -0.008937 -0.173915 +274 2.730000 -0.007281 -0.157116 +275 2.740000 -0.005794 -0.140263 +276 2.750000 -0.004476 -0.123363 +277 2.760000 -0.003327 -0.106420 +278 2.770000 -0.002348 -0.089441 +279 2.780000 -0.001539 -0.072431 +280 2.790000 -0.000899 -0.055397 +281 2.800000 -0.000431 -0.038344 +282 2.810000 -0.000133 -0.021278 +283 2.820000 -0.000005 -0.004204 +284 2.830000 0.000000 0.000000 +285 2.840000 0.000000 0.000000 +286 2.850000 0.000000 0.000000 +287 2.860000 0.000000 0.000000 +288 2.870000 0.000000 0.000000 +289 2.880000 0.000000 0.000000 +290 2.890000 0.000000 0.000000 +291 2.900000 0.000000 0.000000 +292 2.910000 0.000000 0.000000 +293 2.920000 0.000000 0.000000 +294 2.930000 0.000000 0.000000 +295 2.940000 0.000000 0.000000 +296 2.950000 0.000000 0.000000 +297 2.960000 0.000000 0.000000 +298 2.970000 0.000000 0.000000 +299 2.980000 0.000000 0.000000 +300 2.990000 0.000000 0.000000 +301 3.000000 0.000000 0.000000 + + +TAIL_TAIL_Wc_1.8 +N 301 R 0.000001 3.000000 + +1 0.000001 0.000000 0.000000 +2 0.010000 3999999999995999707725824.000000 4799999999997598070678224896.000000 +3 0.020000 976562499937500004352.000000 585937499981249777762304.000000 +4 0.030000 7526705687148720128.000000 3010682275956881096704.000000 +5 0.040000 238418578125000000.000000 71525573583984353280.000000 +6 0.050000 16383999744000000.000000 3932159969279997440.000000 +7 0.060000 1837574546257248.500000 367514917824838144.000000 +8 0.070000 288990429236596.312500 49541219354796968.000000 +9 0.080000 58207645654678.343750 8731147992610928.000000 +10 0.090000 14162817119182.900391 1888376117671434.750000 +11 0.100000 3999996000000.000000 479999760000000.500000 +12 0.110000 1274521012945.708496 139038779115662.093750 +13 0.120000 448625279546.553955 44862594934250.781250 +14 0.130000 171687100967.122345 15848078337188.726562 +15 0.140000 70553781072.250778 6047489716531.549805 +16 0.150000 30829035351.054977 2466336874723.629883 +17 0.160000 14210616296.622902 1065805162943.433594 +18 0.170000 6865346349.879549 484618532348.129211 +19 0.180000 3457603256.036191 230510803894.961182 +20 0.190000 1807158928.004511 114139038296.617722 +21 0.200000 976499999.999998 58591874999.999847 +22 0.210000 543739902.726732 31072184111.878654 +23 0.220000 311127628.299641 16971560078.724821 +24 0.230000 182499493.379421 9522417580.006592 +25 0.240000 109507052.064558 5475875881.316449 +26 0.250000 67092480.000000 3220832255.999991 +27 0.260000 41903049.941880 1934285732.237306 +28 0.270000 26639528.522336 1184208483.196407 +29 0.280000 17216873.260370 738043867.822060 +30 0.290000 11298625.429098 467668459.533016 +31 0.300000 7521218.724186 300958488.336427 +32 0.310000 5073808.319410 196492716.046068 +33 0.320000 3465721.661655 130034411.505164 +34 0.330000 2395143.138865 87152427.788625 +35 0.340000 1673561.082347 59112555.692539 +36 0.350000 1181528.973318 40546867.041137 +37 0.360000 842332.557402 28108378.157278 +38 0.370000 606071.119890 19681641.931764 +39 0.380000 439893.177446 13912339.662092 +40 0.390000 321924.360071 9922853.684245 +41 0.400000 237442.016602 7137908.935547 +42 0.410000 176435.450812 5176287.635225 +43 0.420000 132031.660059 3782743.515595 +44 0.430000 99468.250044 2784687.558254 +45 0.440000 75416.262744 2064324.130372 +46 0.450000 57529.220585 1540535.337797 +47 0.460000 44139.942254 1156983.644674 +48 0.470000 34054.846645 874222.695500 +49 0.480000 26413.181465 664417.646696 +50 0.490000 20589.881497 507780.654581 +51 0.500000 16128.000000 390144.000000 +52 0.510000 12691.351515 301294.396513 +53 0.520000 10031.077542 233820.872331 +54 0.530000 7961.876154 182311.949517 +55 0.540000 6344.988397 142792.224654 +56 0.550000 5075.941991 112324.247003 +57 0.560000 4075.667156 88725.341557 +58 0.570000 3284.018178 70364.910655 +59 0.580000 2655.022026 56018.454503 +60 0.590000 2153.374227 44761.819610 +61 0.600000 1751.840750 35894.153820 +62 0.610000 1429.321668 28881.467437 +63 0.620000 1169.400839 23315.070198 +64 0.630000 959.254371 18880.806522 +65 0.640000 788.825286 15336.170940 +66 0.650000 650.196650 12493.203783 +67 0.660000 537.113366 10205.647944 +68 0.670000 444.615844 8359.261950 +69 0.680000 368.758212 6864.481939 +70 0.690000 306.390715 5650.839586 +71 0.700000 254.991024 4662.698464 +72 0.710000 212.532986 3855.984565 +73 0.720000 177.384120 3195.669530 +74 0.730000 148.225307 2653.826099 +75 0.740000 123.987627 2208.120224 +76 0.750000 103.802544 1840.637693 +77 0.760000 86.962472 1536.967937 +78 0.770000 72.889471 1285.486272 +79 0.780000 61.110325 1076.789779 +80 0.790000 51.236635 903.252555 +81 0.800000 42.948872 758.673996 +82 0.810000 35.983576 637.999825 +83 0.820000 30.123043 537.100183 +84 0.830000 25.186999 452.592612 +85 0.840000 21.025860 381.700456 +86 0.850000 17.515264 322.139305 +87 0.860000 14.551619 272.025666 +88 0.870000 12.048476 229.803356 +89 0.880000 9.933566 194.184004 +90 0.890000 8.146368 164.098852 +91 0.900000 6.636119 138.659624 +92 0.910000 5.360169 117.126674 +93 0.920000 4.282632 98.883003 +94 0.930000 3.373272 83.413022 +95 0.940000 2.606573 70.285155 +96 0.950000 1.960975 59.137553 +97 0.960000 1.418239 49.666347 +98 0.970000 0.962916 41.615965 +99 0.980000 0.581905 34.771137 +100 0.990000 0.264083 28.950277 +101 1.000000 -0.000000 24.000000 +102 1.010000 -0.218384 19.790571 +103 1.020000 -0.397913 16.212117 +104 1.030000 -0.544418 13.171468 +105 1.040000 -0.662870 10.589529 +106 1.050000 -0.757512 8.399073 +107 1.060000 -0.831965 6.542902 +108 1.070000 -0.889321 4.972300 +109 1.080000 -0.932223 3.645731 +110 1.090000 -0.962930 2.527753 +111 1.100000 -0.983372 1.588095 +112 1.110000 -0.995200 0.800882 +113 1.120000 -0.999824 0.143980 +114 1.130000 -0.999957 -0.011481 +115 1.140000 -0.999766 -0.026708 +116 1.150000 -0.999423 -0.041927 +117 1.160000 -0.998927 -0.057133 +118 1.170000 -0.998280 -0.072321 +119 1.180000 -0.997481 -0.087488 +120 1.190000 -0.996530 -0.102628 +121 1.200000 -0.995428 -0.117737 +122 1.210000 -0.994176 -0.132810 +123 1.220000 -0.992772 -0.147842 +124 1.230000 -0.991219 -0.162830 +125 1.240000 -0.989516 -0.177768 +126 1.250000 -0.987664 -0.192651 +127 1.260000 -0.985663 -0.207476 +128 1.270000 -0.983515 -0.222238 +129 1.280000 -0.981219 -0.236932 +130 1.290000 -0.978776 -0.251554 +131 1.300000 -0.976188 -0.266099 +132 1.310000 -0.973454 -0.280564 +133 1.320000 -0.970577 -0.294942 +134 1.330000 -0.967556 -0.309231 +135 1.340000 -0.964393 -0.323426 +136 1.350000 -0.961088 -0.337522 +137 1.360000 -0.957642 -0.351516 +138 1.370000 -0.954058 -0.365402 +139 1.380000 -0.950335 -0.379177 +140 1.390000 -0.946475 -0.392837 +141 1.400000 -0.942478 -0.406376 +142 1.410000 -0.938347 -0.419793 +143 1.420000 -0.934083 -0.433081 +144 1.430000 -0.929686 -0.446237 +145 1.440000 -0.925159 -0.459257 +146 1.450000 -0.920502 -0.472138 +147 1.460000 -0.915716 -0.484875 +148 1.470000 -0.910805 -0.497464 +149 1.480000 -0.905768 -0.509901 +150 1.490000 -0.900607 -0.522183 +151 1.500000 -0.895325 -0.534306 +152 1.510000 -0.889922 -0.546266 +153 1.520000 -0.884400 -0.558060 +154 1.530000 -0.878761 -0.569684 +155 1.540000 -0.873007 -0.581134 +156 1.550000 -0.867139 -0.592408 +157 1.560000 -0.861159 -0.603501 +158 1.570000 -0.855069 -0.614410 +159 1.580000 -0.848872 -0.625132 +160 1.590000 -0.842567 -0.635663 +161 1.600000 -0.836159 -0.646001 +162 1.610000 -0.829648 -0.656142 +163 1.620000 -0.823037 -0.666083 +164 1.630000 -0.816327 -0.675822 +165 1.640000 -0.809521 -0.685354 +166 1.650000 -0.802621 -0.694678 +167 1.660000 -0.795628 -0.703790 +168 1.670000 -0.788546 -0.712688 +169 1.680000 -0.781375 -0.721368 +170 1.690000 -0.774119 -0.729829 +171 1.700000 -0.766779 -0.738068 +172 1.710000 -0.759358 -0.746081 +173 1.720000 -0.751858 -0.753868 +174 1.730000 -0.744282 -0.761425 +175 1.740000 -0.736631 -0.768750 +176 1.750000 -0.728908 -0.775840 +177 1.760000 -0.721115 -0.782695 +178 1.770000 -0.713254 -0.789311 +179 1.780000 -0.705329 -0.795686 +180 1.790000 -0.697341 -0.801819 +181 1.800000 -0.689294 -0.807708 +182 1.810000 -0.681188 -0.813351 +183 1.820000 -0.673027 -0.818746 +184 1.830000 -0.664814 -0.823892 +185 1.840000 -0.656550 -0.828787 +186 1.850000 -0.648239 -0.833429 +187 1.860000 -0.639883 -0.837818 +188 1.870000 -0.631484 -0.841951 +189 1.880000 -0.623045 -0.845828 +190 1.890000 -0.614568 -0.849447 +191 1.900000 -0.606056 -0.852807 +192 1.910000 -0.597513 -0.855908 +193 1.920000 -0.588939 -0.858748 +194 1.930000 -0.580339 -0.861326 +195 1.940000 -0.571714 -0.863642 +196 1.950000 -0.563067 -0.865695 +197 1.960000 -0.554401 -0.867484 +198 1.970000 -0.545718 -0.869009 +199 1.980000 -0.537021 -0.870269 +200 1.990000 -0.528313 -0.871264 +201 2.000000 -0.519597 -0.871994 +202 2.010000 -0.510874 -0.872458 +203 2.020000 -0.502149 -0.872657 +204 2.030000 -0.493422 -0.872589 +205 2.040000 -0.484698 -0.872256 +206 2.050000 -0.475978 -0.871657 +207 2.060000 -0.467265 -0.870792 +208 2.070000 -0.458563 -0.869663 +209 2.080000 -0.449873 -0.868268 +210 2.090000 -0.441198 -0.866609 +211 2.100000 -0.432542 -0.864686 +212 2.110000 -0.423906 -0.862499 +213 2.120000 -0.415293 -0.860050 +214 2.130000 -0.406705 -0.857339 +215 2.140000 -0.398147 -0.854367 +216 2.150000 -0.389619 -0.851134 +217 2.160000 -0.381125 -0.847642 +218 2.170000 -0.372667 -0.843892 +219 2.180000 -0.364248 -0.839885 +220 2.190000 -0.355870 -0.835622 +221 2.200000 -0.347536 -0.831105 +222 2.210000 -0.339249 -0.826334 +223 2.220000 -0.331010 -0.821311 +224 2.230000 -0.322824 -0.816039 +225 2.240000 -0.314691 -0.810518 +226 2.250000 -0.306614 -0.804750 +227 2.260000 -0.298596 -0.798737 +228 2.270000 -0.290640 -0.792480 +229 2.280000 -0.282748 -0.785982 +230 2.290000 -0.274921 -0.779245 +231 2.300000 -0.267163 -0.772270 +232 2.310000 -0.259477 -0.765061 +233 2.320000 -0.251863 -0.757618 +234 2.330000 -0.244325 -0.749944 +235 2.340000 -0.236865 -0.742042 +236 2.350000 -0.229485 -0.733914 +237 2.360000 -0.222187 -0.725562 +238 2.370000 -0.214974 -0.716989 +239 2.380000 -0.207848 -0.708198 +240 2.390000 -0.200811 -0.699191 +241 2.400000 -0.193865 -0.689971 +242 2.410000 -0.187012 -0.680541 +243 2.420000 -0.180255 -0.670904 +244 2.430000 -0.173595 -0.661062 +245 2.440000 -0.167034 -0.651019 +246 2.450000 -0.160575 -0.640778 +247 2.460000 -0.154220 -0.630342 +248 2.470000 -0.147969 -0.619713 +249 2.480000 -0.141826 -0.608896 +250 2.490000 -0.135792 -0.597893 +251 2.500000 -0.129869 -0.586708 +252 2.510000 -0.124058 -0.575344 +253 2.520000 -0.118362 -0.563805 +254 2.530000 -0.112783 -0.552095 +255 2.540000 -0.107321 -0.540216 +256 2.550000 -0.101979 -0.528173 +257 2.560000 -0.096758 -0.515968 +258 2.570000 -0.091660 -0.503607 +259 2.580000 -0.086686 -0.491092 +260 2.590000 -0.081839 -0.478428 +261 2.600000 -0.077118 -0.465618 +262 2.610000 -0.072527 -0.452666 +263 2.620000 -0.068066 -0.439576 +264 2.630000 -0.063736 -0.426352 +265 2.640000 -0.059539 -0.412998 +266 2.650000 -0.055476 -0.399519 +267 2.660000 -0.051549 -0.385918 +268 2.670000 -0.047758 -0.372199 +269 2.680000 -0.044105 -0.358367 +270 2.690000 -0.040591 -0.344426 +271 2.700000 -0.037217 -0.330380 +272 2.710000 -0.033984 -0.316233 +273 2.720000 -0.030893 -0.301990 +274 2.730000 -0.027945 -0.287655 +275 2.740000 -0.025140 -0.273232 +276 2.750000 -0.022480 -0.258726 +277 2.760000 -0.019966 -0.244141 +278 2.770000 -0.017598 -0.229482 +279 2.780000 -0.015376 -0.214753 +280 2.790000 -0.013303 -0.199959 +281 2.800000 -0.011377 -0.185103 +282 2.810000 -0.009601 -0.170192 +283 2.820000 -0.007974 -0.155228 +284 2.830000 -0.006496 -0.140217 +285 2.840000 -0.005170 -0.125164 +286 2.850000 -0.003993 -0.110072 +287 2.860000 -0.002968 -0.094947 +288 2.870000 -0.002095 -0.079793 +289 2.880000 -0.001372 -0.064614 +290 2.890000 -0.000802 -0.049416 +291 2.900000 -0.000384 -0.034203 +292 2.910000 -0.000118 -0.018979 +293 2.920000 -0.000005 -0.003750 +294 2.930000 0.000000 0.000000 +295 2.940000 0.000000 0.000000 +296 2.950000 0.000000 0.000000 +297 2.960000 0.000000 0.000000 +298 2.970000 0.000000 0.000000 +299 2.980000 0.000000 0.000000 +300 2.990000 0.000000 0.000000 +301 3.000000 0.000000 0.000000 + diff --git a/tools/moltemplate/examples/coarse_grained/membrane_Cooke_Kremer_DesernoPRE2005/run.in.min b/tools/moltemplate/examples/coarse_grained/membrane_Cooke_Kremer_DesernoPRE2005/run.in.min new file mode 100644 index 0000000000000000000000000000000000000000..712eca1a76a139b9dc5314311072baf93cda09ef --- /dev/null +++ b/tools/moltemplate/examples/coarse_grained/membrane_Cooke_Kremer_DesernoPRE2005/run.in.min @@ -0,0 +1,25 @@ +# -- Init section -- + +include system.in.init + +# -- Atom definition section -- + +read_data system.data + +# -- Settings Section -- + +include system.in.settings + +# -- Run section -- + +dump 1 all custom 50 traj_min.lammpstrj id mol type x y z ix iy iz +thermo_style custom step pe etotal vol epair ebond eangle +thermo 20 # time interval for printing out "thermo" data + +#min_style quickmin +#min_modify dmax 0.03 +#min_style hftn +#min_modify dmax 0.05 +minimize 1.0e-7 1.0e-9 100000 300000 + +write_data system_after_min.data diff --git a/tools/moltemplate/examples/coarse_grained/membrane_Cooke_Kremer_DesernoPRE2005/run.in.npt b/tools/moltemplate/examples/coarse_grained/membrane_Cooke_Kremer_DesernoPRE2005/run.in.npt new file mode 100644 index 0000000000000000000000000000000000000000..e9294a96d861e977dc32022559f716e62a7fdecc --- /dev/null +++ b/tools/moltemplate/examples/coarse_grained/membrane_Cooke_Kremer_DesernoPRE2005/run.in.npt @@ -0,0 +1,58 @@ +# -------- REQUIREMENTS: --------- +# 1) This example may require additional features and bug fixes for LAMMPS. +# Be sure to download and copy the "additional_lammps_code" from +# http://moltemplate.org (upper-left corner menu) +# 2) Unpack it +# 3) copy the .cpp and .h files to the src folding of your lammps installation. +# 4) Compile LAMMPS. +# +# (If LAMMPS complains about an "Invalid pair_style" +# then you made a mistake in the instructions above.) +# + +# -- Init Section -- + +include system.in.init + +# -- Atom Definition Section -- + +read_data system.data + +# -- Settings Section -- + +include system.in.settings + +# -- Run Section -- + + +timestep 0.01 +dump 1 all custom 5000 traj_npt.lammpstrj id mol type x y z ix iy iz + + +thermo_style custom step temp pe etotal vol epair ebond eangle +thermo 200 # time interval for printing out "thermo" data + +velocity all create 1.1 12345 + +fix fxlan all langevin 1.1 1.1 50.0 48279 +fix fxnph all nph x 0 0 1000 y 0 0 1000 couple xy + +# Note: The temperature is 1.1*ε +# (ε = "epsilon" used by the coarse-grained lipid) +# Note: The langevin damping parameter is now "50.0" in units of time +# (which are (m/(ε*σ^2))^(1/2) because we are using "units lj" +# This is grossly underdamped compared to the real system, +# but it leads to more efficient sampling.) +# Note: We maintain the system system at constant (zero) tention +# using a barostat damping parameter Pdamp=1000 ("0 0 1000") + + + +# optional (not sure if this helps): +# balance x uniform y uniform + + +run 1000000 + +write_data system_after_npt.data + diff --git a/tools/moltemplate/examples/coarse_grained/membrane_Cooke_Kremer_DesernoPRE2005/run.in.nvt b/tools/moltemplate/examples/coarse_grained/membrane_Cooke_Kremer_DesernoPRE2005/run.in.nvt new file mode 100644 index 0000000000000000000000000000000000000000..85c16a0b7393d74c58435695d5ea96b3a67dacb5 --- /dev/null +++ b/tools/moltemplate/examples/coarse_grained/membrane_Cooke_Kremer_DesernoPRE2005/run.in.nvt @@ -0,0 +1,49 @@ +# ------------------------------- Initialization Section -------------------- + +include system.in.init + +# ------------------------------- Atom Definition Section ------------------- + + +# To run this simulation, you should first equilibrate the system at constant +# pressure and temperature beforehand. If you run lammps with "run.in.npt", +# it will generate a data file "system_after_npt.data" with reasonable +# coordinates at that temperature and pressure. Then we could load it now: + +read_data system_after_npt.data + +# ------------------------------- Settings Section -------------------------- + +include system.in.settings + +# ------------------------------- Run Section ------------------------------- + + +timestep 0.01 +dump 1 all custom 50000 traj_nvt.lammpstrj id mol type x y z ix iy iz + + +thermo_style custom step temp pe etotal vol epair ebond eangle +thermo 1000 # time interval for printing out "thermo" data + +velocity all create 1.1 12345 + +fix fxlan all langevin 1.1 1.1 500.0 48279 +fix fxnve all nve + +# Note: The temperature is 1.1*ε +# (ε = "epsilon" used by the coarse-grained lipid) +# Note: The langevin damping parameter is "500.0" in units of time +# (which are (m/(ε*σ^2))^(1/2) because we are using "units lj" +# This is grossly underdamped compared to the real system, +# but it leads to more efficient sampling.) + + +# optional (not sure if this helps): +# balance x uniform y uniform + + +run 20000000 + +write_data system_after_nvt.data + diff --git a/tools/moltemplate/examples/coarse_grained/membrane_Cooke_Kremer_DesernoPRE2005/tabulated_potential.dat b/tools/moltemplate/examples/coarse_grained/membrane_Cooke_Kremer_DesernoPRE2005/tabulated_potential.dat new file mode 100644 index 0000000000000000000000000000000000000000..cd8dd4db7d6a0ce874229eb3787d6fe4827bf5ac --- /dev/null +++ b/tools/moltemplate/examples/coarse_grained/membrane_Cooke_Kremer_DesernoPRE2005/tabulated_potential.dat @@ -0,0 +1,4589 @@ +# Tabulated potential for Cooke 3-bead lipid model, with various values of Wc + +HEAD_HEAD +N 301 R 0.000001 3.000000 + +1 0.000001 0.000000 0.000000 +2 0.010000 2161440350647607518822400.000000 2593728420778890895481110528.000000 +3 0.020000 527695398062100709376.000000 316617238851043104653312.000000 +4 0.030000 4067131343850062336.000000 1626852538346708926464.000000 +5 0.040000 128831883585858496.000000 38649565183436988416.000000 +6 0.050000 8853259488081101.000000 2124782299721489152.000000 +7 0.060000 992951926207085.500000 198590391543644928.000000 +8 0.070000 156158887055179.062500 26770097065977256.000000 +9 0.080000 31453085537227.195312 4717963671829832.000000 +10 0.090000 7653019634383.599609 1020402986772367.875000 +11 0.100000 2161437410283.985352 259372665656012.125000 +12 0.110000 688699846600.110840 75130982888675.812500 +13 0.120000 242418934523.303925 24241942688387.753906 +14 0.130000 92772695554.949768 8563661551482.013672 +15 0.140000 38124343876.568542 3267817639811.164551 +16 0.150000 16658711862.666004 1332707274503.870850 +17 0.160000 7678803441.103481 575916830241.413208 +18 0.170000 3709726886.129636 261867373669.903687 +19 0.180000 1868327898.144181 124558074820.194244 +20 0.190000 976500000.999998 61675657894.736687 +21 0.200000 527649455.864879 31660345589.187614 +22 0.210000 293806260.511241 16789908645.082933 +23 0.220000 168114083.438129 9170566326.526011 +24 0.230000 98610181.495127 5145397135.359623 +25 0.240000 59169165.297856 2958842872.372237 +26 0.250000 36250908.888444 1740332628.538169 +27 0.260000 22640215.252607 1045152619.667436 +28 0.270000 14392928.420337 639854320.962319 +29 0.280000 9301695.744822 398774811.984595 +30 0.290000 6104017.717125 252682276.475626 +31 0.300000 4063098.921872 162604585.395105 +32 0.310000 2740806.847436 106159834.284035 +33 0.320000 1872013.228410 70251804.140783 +34 0.330000 1293637.623279 47082727.461649 +35 0.340000 903822.389327 31933167.708250 +36 0.350000 638028.370186 21902644.696022 +37 0.360000 454806.060338 15182681.781435 +38 0.370000 327194.054124 10630250.689058 +39 0.380000 237443.016602 7513588.353207 +40 0.390000 173734.710287 5358508.469115 +41 0.400000 128115.021129 3854188.581495 +42 0.410000 95175.694590 2794659.517251 +43 0.420000 71203.733281 2042016.387369 +44 0.430000 53626.450912 1503014.644703 +45 0.440000 40645.593596 1114014.575978 +46 0.450000 30993.690585 831193.088925 +47 0.460000 23770.248288 624115.416996 +48 0.470000 18330.617960 471472.559289 +49 0.480000 14209.942248 358228.692769 +50 0.490000 11070.674537 273695.309628 +51 0.500000 8666.076152 210220.029942 +52 0.510000 6814.633252 162286.683398 +53 0.520000 5381.995700 125892.872001 +54 0.530000 4268.136868 98116.253151 +55 0.540000 3398.163685 76810.165684 +56 0.550000 2715.696677 60388.560510 +57 0.560000 2178.071621 47673.030759 +58 0.570000 1752.840750 37783.319810 +59 0.580000 1415.206838 30058.470465 +60 0.590000 1146.130977 23999.705760 +61 0.600000 930.929708 19228.816970 +62 0.610000 758.229563 15457.682582 +63 0.620000 619.184089 12465.822566 +64 0.630000 506.884625 10083.785213 +65 0.640000 415.914818 8180.790148 +66 0.650000 342.012307 6655.493196 +67 0.660000 281.810669 5429.052488 +68 0.670000 232.641766 4439.899069 +69 0.680000 192.383722 3639.775908 +70 0.690000 159.343555 2990.725059 +71 0.700000 132.166200 2462.786676 +72 0.710000 109.763738 2032.234764 +73 0.720000 91.260139 1680.219270 +74 0.730000 75.947974 1391.717054 +75 0.740000 63.254382 1154.718549 +76 0.750000 52.714228 959.594954 +77 0.760000 43.948872 798.604206 +78 0.770000 36.649308 665.504021 +79 0.780000 30.562750 555.247832 +80 0.790000 25.481924 463.745109 +81 0.800000 21.236485 387.671861 +82 0.810000 17.686136 324.320364 +83 0.820000 14.715086 271.479665 +84 0.830000 12.227574 227.340274 +85 0.840000 10.144253 190.417955 +86 0.850000 8.399249 159.492629 +87 0.860000 6.937780 133.559247 +88 0.870000 5.714205 111.788215 +89 0.880000 4.690441 93.493410 +90 0.890000 3.834655 78.106288 +91 0.900000 3.120205 65.154867 +92 0.910000 2.524755 54.246625 +93 0.920000 2.029558 45.054564 +94 0.930000 1.618857 37.305814 +95 0.940000 1.279395 30.772315 +96 0.950000 1.000000 25.263158 +97 0.960000 0.771253 20.618297 +98 0.970000 0.585203 16.703371 +99 0.980000 0.435131 13.405424 +100 0.990000 0.315357 10.629373 +101 1.000000 0.221073 8.295079 +102 1.010000 0.148209 6.334918 +103 1.020000 0.093319 4.691763 +104 1.030000 0.053479 3.317301 +105 1.040000 0.026214 2.170635 +106 1.050000 0.009423 1.217110 +107 1.060000 0.001327 0.427337 +108 1.070000 0.000000 0.000000 +109 1.080000 0.000000 0.000000 +110 1.090000 0.000000 0.000000 +111 1.100000 0.000000 0.000000 +112 1.110000 0.000000 0.000000 +113 1.120000 0.000000 0.000000 +114 1.130000 0.000000 0.000000 +115 1.140000 0.000000 0.000000 +116 1.150000 0.000000 0.000000 +117 1.160000 0.000000 0.000000 +118 1.170000 0.000000 0.000000 +119 1.180000 0.000000 0.000000 +120 1.190000 0.000000 0.000000 +121 1.200000 0.000000 0.000000 +122 1.210000 0.000000 0.000000 +123 1.220000 0.000000 0.000000 +124 1.230000 0.000000 0.000000 +125 1.240000 0.000000 0.000000 +126 1.250000 0.000000 0.000000 +127 1.260000 0.000000 0.000000 +128 1.270000 0.000000 0.000000 +129 1.280000 0.000000 0.000000 +130 1.290000 0.000000 0.000000 +131 1.300000 0.000000 0.000000 +132 1.310000 0.000000 0.000000 +133 1.320000 0.000000 0.000000 +134 1.330000 0.000000 0.000000 +135 1.340000 0.000000 0.000000 +136 1.350000 0.000000 0.000000 +137 1.360000 0.000000 0.000000 +138 1.370000 0.000000 0.000000 +139 1.380000 0.000000 0.000000 +140 1.390000 0.000000 0.000000 +141 1.400000 0.000000 0.000000 +142 1.410000 0.000000 0.000000 +143 1.420000 0.000000 0.000000 +144 1.430000 0.000000 0.000000 +145 1.440000 0.000000 0.000000 +146 1.450000 0.000000 0.000000 +147 1.460000 0.000000 0.000000 +148 1.470000 0.000000 0.000000 +149 1.480000 0.000000 0.000000 +150 1.490000 0.000000 0.000000 +151 1.500000 0.000000 0.000000 +152 1.510000 0.000000 0.000000 +153 1.520000 0.000000 0.000000 +154 1.530000 0.000000 0.000000 +155 1.540000 0.000000 0.000000 +156 1.550000 0.000000 0.000000 +157 1.560000 0.000000 0.000000 +158 1.570000 0.000000 0.000000 +159 1.580000 0.000000 0.000000 +160 1.590000 0.000000 0.000000 +161 1.600000 0.000000 0.000000 +162 1.610000 0.000000 0.000000 +163 1.620000 0.000000 0.000000 +164 1.630000 0.000000 0.000000 +165 1.640000 0.000000 0.000000 +166 1.650000 0.000000 0.000000 +167 1.660000 0.000000 0.000000 +168 1.670000 0.000000 0.000000 +169 1.680000 0.000000 0.000000 +170 1.690000 0.000000 0.000000 +171 1.700000 0.000000 0.000000 +172 1.710000 0.000000 0.000000 +173 1.720000 0.000000 0.000000 +174 1.730000 0.000000 0.000000 +175 1.740000 0.000000 0.000000 +176 1.750000 0.000000 0.000000 +177 1.760000 0.000000 0.000000 +178 1.770000 0.000000 0.000000 +179 1.780000 0.000000 0.000000 +180 1.790000 0.000000 0.000000 +181 1.800000 0.000000 0.000000 +182 1.810000 0.000000 0.000000 +183 1.820000 0.000000 0.000000 +184 1.830000 0.000000 0.000000 +185 1.840000 0.000000 0.000000 +186 1.850000 0.000000 0.000000 +187 1.860000 0.000000 0.000000 +188 1.870000 0.000000 0.000000 +189 1.880000 0.000000 0.000000 +190 1.890000 0.000000 0.000000 +191 1.900000 0.000000 0.000000 +192 1.910000 0.000000 0.000000 +193 1.920000 0.000000 0.000000 +194 1.930000 0.000000 0.000000 +195 1.940000 0.000000 0.000000 +196 1.950000 0.000000 0.000000 +197 1.960000 0.000000 0.000000 +198 1.970000 0.000000 0.000000 +199 1.980000 0.000000 0.000000 +200 1.990000 0.000000 0.000000 +201 2.000000 0.000000 0.000000 +202 2.010000 0.000000 0.000000 +203 2.020000 0.000000 0.000000 +204 2.030000 0.000000 0.000000 +205 2.040000 0.000000 0.000000 +206 2.050000 0.000000 0.000000 +207 2.060000 0.000000 0.000000 +208 2.070000 0.000000 0.000000 +209 2.080000 0.000000 0.000000 +210 2.090000 0.000000 0.000000 +211 2.100000 0.000000 0.000000 +212 2.110000 0.000000 0.000000 +213 2.120000 0.000000 0.000000 +214 2.130000 0.000000 0.000000 +215 2.140000 0.000000 0.000000 +216 2.150000 0.000000 0.000000 +217 2.160000 0.000000 0.000000 +218 2.170000 0.000000 0.000000 +219 2.180000 0.000000 0.000000 +220 2.190000 0.000000 0.000000 +221 2.200000 0.000000 0.000000 +222 2.210000 0.000000 0.000000 +223 2.220000 0.000000 0.000000 +224 2.230000 0.000000 0.000000 +225 2.240000 0.000000 0.000000 +226 2.250000 0.000000 0.000000 +227 2.260000 0.000000 0.000000 +228 2.270000 0.000000 0.000000 +229 2.280000 0.000000 0.000000 +230 2.290000 0.000000 0.000000 +231 2.300000 0.000000 0.000000 +232 2.310000 0.000000 0.000000 +233 2.320000 0.000000 0.000000 +234 2.330000 0.000000 0.000000 +235 2.340000 0.000000 0.000000 +236 2.350000 0.000000 0.000000 +237 2.360000 0.000000 0.000000 +238 2.370000 0.000000 0.000000 +239 2.380000 0.000000 0.000000 +240 2.390000 0.000000 0.000000 +241 2.400000 0.000000 0.000000 +242 2.410000 0.000000 0.000000 +243 2.420000 0.000000 0.000000 +244 2.430000 0.000000 0.000000 +245 2.440000 0.000000 0.000000 +246 2.450000 0.000000 0.000000 +247 2.460000 0.000000 0.000000 +248 2.470000 0.000000 0.000000 +249 2.480000 0.000000 0.000000 +250 2.490000 0.000000 0.000000 +251 2.500000 0.000000 0.000000 +252 2.510000 0.000000 0.000000 +253 2.520000 0.000000 0.000000 +254 2.530000 0.000000 0.000000 +255 2.540000 0.000000 0.000000 +256 2.550000 0.000000 0.000000 +257 2.560000 0.000000 0.000000 +258 2.570000 0.000000 0.000000 +259 2.580000 0.000000 0.000000 +260 2.590000 0.000000 0.000000 +261 2.600000 0.000000 0.000000 +262 2.610000 0.000000 0.000000 +263 2.620000 0.000000 0.000000 +264 2.630000 0.000000 0.000000 +265 2.640000 0.000000 0.000000 +266 2.650000 0.000000 0.000000 +267 2.660000 0.000000 0.000000 +268 2.670000 0.000000 0.000000 +269 2.680000 0.000000 0.000000 +270 2.690000 0.000000 0.000000 +271 2.700000 0.000000 0.000000 +272 2.710000 0.000000 0.000000 +273 2.720000 0.000000 0.000000 +274 2.730000 0.000000 0.000000 +275 2.740000 0.000000 0.000000 +276 2.750000 0.000000 0.000000 +277 2.760000 0.000000 0.000000 +278 2.770000 0.000000 0.000000 +279 2.780000 0.000000 0.000000 +280 2.790000 0.000000 0.000000 +281 2.800000 0.000000 0.000000 +282 2.810000 0.000000 0.000000 +283 2.820000 0.000000 0.000000 +284 2.830000 0.000000 0.000000 +285 2.840000 0.000000 0.000000 +286 2.850000 0.000000 0.000000 +287 2.860000 0.000000 0.000000 +288 2.870000 0.000000 0.000000 +289 2.880000 0.000000 0.000000 +290 2.890000 0.000000 0.000000 +291 2.900000 0.000000 0.000000 +292 2.910000 0.000000 0.000000 +293 2.920000 0.000000 0.000000 +294 2.930000 0.000000 0.000000 +295 2.940000 0.000000 0.000000 +296 2.950000 0.000000 0.000000 +297 2.960000 0.000000 0.000000 +298 2.970000 0.000000 0.000000 +299 2.980000 0.000000 0.000000 +300 2.990000 0.000000 0.000000 +301 3.000000 0.000000 0.000000 + +HEAD_TAIL +N 301 R 0.000001 3.000000 + +1 0.000001 0.000000 0.000000 +2 0.010000 2161440350647607518822400.000000 2593728420778890895481110528.000000 +3 0.020000 527695398062100709376.000000 316617238851043104653312.000000 +4 0.030000 4067131343850062336.000000 1626852538346708926464.000000 +5 0.040000 128831883585858496.000000 38649565183436988416.000000 +6 0.050000 8853259488081101.000000 2124782299721489152.000000 +7 0.060000 992951926207085.500000 198590391543644928.000000 +8 0.070000 156158887055179.062500 26770097065977256.000000 +9 0.080000 31453085537227.195312 4717963671829832.000000 +10 0.090000 7653019634383.599609 1020402986772367.875000 +11 0.100000 2161437410283.985352 259372665656012.125000 +12 0.110000 688699846600.110840 75130982888675.812500 +13 0.120000 242418934523.303925 24241942688387.753906 +14 0.130000 92772695554.949768 8563661551482.013672 +15 0.140000 38124343876.568542 3267817639811.164551 +16 0.150000 16658711862.666004 1332707274503.870850 +17 0.160000 7678803441.103481 575916830241.413208 +18 0.170000 3709726886.129636 261867373669.903687 +19 0.180000 1868327898.144181 124558074820.194244 +20 0.190000 976500000.999998 61675657894.736687 +21 0.200000 527649455.864879 31660345589.187614 +22 0.210000 293806260.511241 16789908645.082933 +23 0.220000 168114083.438129 9170566326.526011 +24 0.230000 98610181.495127 5145397135.359623 +25 0.240000 59169165.297856 2958842872.372237 +26 0.250000 36250908.888444 1740332628.538169 +27 0.260000 22640215.252607 1045152619.667436 +28 0.270000 14392928.420337 639854320.962319 +29 0.280000 9301695.744822 398774811.984595 +30 0.290000 6104017.717125 252682276.475626 +31 0.300000 4063098.921872 162604585.395105 +32 0.310000 2740806.847436 106159834.284035 +33 0.320000 1872013.228410 70251804.140783 +34 0.330000 1293637.623279 47082727.461649 +35 0.340000 903822.389327 31933167.708250 +36 0.350000 638028.370186 21902644.696022 +37 0.360000 454806.060338 15182681.781435 +38 0.370000 327194.054124 10630250.689058 +39 0.380000 237443.016602 7513588.353207 +40 0.390000 173734.710287 5358508.469115 +41 0.400000 128115.021129 3854188.581495 +42 0.410000 95175.694590 2794659.517251 +43 0.420000 71203.733281 2042016.387369 +44 0.430000 53626.450912 1503014.644703 +45 0.440000 40645.593596 1114014.575978 +46 0.450000 30993.690585 831193.088925 +47 0.460000 23770.248288 624115.416996 +48 0.470000 18330.617960 471472.559289 +49 0.480000 14209.942248 358228.692769 +50 0.490000 11070.674537 273695.309628 +51 0.500000 8666.076152 210220.029942 +52 0.510000 6814.633252 162286.683398 +53 0.520000 5381.995700 125892.872001 +54 0.530000 4268.136868 98116.253151 +55 0.540000 3398.163685 76810.165684 +56 0.550000 2715.696677 60388.560510 +57 0.560000 2178.071621 47673.030759 +58 0.570000 1752.840750 37783.319810 +59 0.580000 1415.206838 30058.470465 +60 0.590000 1146.130977 23999.705760 +61 0.600000 930.929708 19228.816970 +62 0.610000 758.229563 15457.682582 +63 0.620000 619.184089 12465.822566 +64 0.630000 506.884625 10083.785213 +65 0.640000 415.914818 8180.790148 +66 0.650000 342.012307 6655.493196 +67 0.660000 281.810669 5429.052488 +68 0.670000 232.641766 4439.899069 +69 0.680000 192.383722 3639.775908 +70 0.690000 159.343555 2990.725059 +71 0.700000 132.166200 2462.786676 +72 0.710000 109.763738 2032.234764 +73 0.720000 91.260139 1680.219270 +74 0.730000 75.947974 1391.717054 +75 0.740000 63.254382 1154.718549 +76 0.750000 52.714228 959.594954 +77 0.760000 43.948872 798.604206 +78 0.770000 36.649308 665.504021 +79 0.780000 30.562750 555.247832 +80 0.790000 25.481924 463.745109 +81 0.800000 21.236485 387.671861 +82 0.810000 17.686136 324.320364 +83 0.820000 14.715086 271.479665 +84 0.830000 12.227574 227.340274 +85 0.840000 10.144253 190.417955 +86 0.850000 8.399249 159.492629 +87 0.860000 6.937780 133.559247 +88 0.870000 5.714205 111.788215 +89 0.880000 4.690441 93.493410 +90 0.890000 3.834655 78.106288 +91 0.900000 3.120205 65.154867 +92 0.910000 2.524755 54.246625 +93 0.920000 2.029558 45.054564 +94 0.930000 1.618857 37.305814 +95 0.940000 1.279395 30.772315 +96 0.950000 1.000000 25.263158 +97 0.960000 0.771253 20.618297 +98 0.970000 0.585203 16.703371 +99 0.980000 0.435131 13.405424 +100 0.990000 0.315357 10.629373 +101 1.000000 0.221073 8.295079 +102 1.010000 0.148209 6.334918 +103 1.020000 0.093319 4.691763 +104 1.030000 0.053479 3.317301 +105 1.040000 0.026214 2.170635 +106 1.050000 0.009423 1.217110 +107 1.060000 0.001327 0.427337 +108 1.070000 0.000000 0.000000 +109 1.080000 0.000000 0.000000 +110 1.090000 0.000000 0.000000 +111 1.100000 0.000000 0.000000 +112 1.110000 0.000000 0.000000 +113 1.120000 0.000000 0.000000 +114 1.130000 0.000000 0.000000 +115 1.140000 0.000000 0.000000 +116 1.150000 0.000000 0.000000 +117 1.160000 0.000000 0.000000 +118 1.170000 0.000000 0.000000 +119 1.180000 0.000000 0.000000 +120 1.190000 0.000000 0.000000 +121 1.200000 0.000000 0.000000 +122 1.210000 0.000000 0.000000 +123 1.220000 0.000000 0.000000 +124 1.230000 0.000000 0.000000 +125 1.240000 0.000000 0.000000 +126 1.250000 0.000000 0.000000 +127 1.260000 0.000000 0.000000 +128 1.270000 0.000000 0.000000 +129 1.280000 0.000000 0.000000 +130 1.290000 0.000000 0.000000 +131 1.300000 0.000000 0.000000 +132 1.310000 0.000000 0.000000 +133 1.320000 0.000000 0.000000 +134 1.330000 0.000000 0.000000 +135 1.340000 0.000000 0.000000 +136 1.350000 0.000000 0.000000 +137 1.360000 0.000000 0.000000 +138 1.370000 0.000000 0.000000 +139 1.380000 0.000000 0.000000 +140 1.390000 0.000000 0.000000 +141 1.400000 0.000000 0.000000 +142 1.410000 0.000000 0.000000 +143 1.420000 0.000000 0.000000 +144 1.430000 0.000000 0.000000 +145 1.440000 0.000000 0.000000 +146 1.450000 0.000000 0.000000 +147 1.460000 0.000000 0.000000 +148 1.470000 0.000000 0.000000 +149 1.480000 0.000000 0.000000 +150 1.490000 0.000000 0.000000 +151 1.500000 0.000000 0.000000 +152 1.510000 0.000000 0.000000 +153 1.520000 0.000000 0.000000 +154 1.530000 0.000000 0.000000 +155 1.540000 0.000000 0.000000 +156 1.550000 0.000000 0.000000 +157 1.560000 0.000000 0.000000 +158 1.570000 0.000000 0.000000 +159 1.580000 0.000000 0.000000 +160 1.590000 0.000000 0.000000 +161 1.600000 0.000000 0.000000 +162 1.610000 0.000000 0.000000 +163 1.620000 0.000000 0.000000 +164 1.630000 0.000000 0.000000 +165 1.640000 0.000000 0.000000 +166 1.650000 0.000000 0.000000 +167 1.660000 0.000000 0.000000 +168 1.670000 0.000000 0.000000 +169 1.680000 0.000000 0.000000 +170 1.690000 0.000000 0.000000 +171 1.700000 0.000000 0.000000 +172 1.710000 0.000000 0.000000 +173 1.720000 0.000000 0.000000 +174 1.730000 0.000000 0.000000 +175 1.740000 0.000000 0.000000 +176 1.750000 0.000000 0.000000 +177 1.760000 0.000000 0.000000 +178 1.770000 0.000000 0.000000 +179 1.780000 0.000000 0.000000 +180 1.790000 0.000000 0.000000 +181 1.800000 0.000000 0.000000 +182 1.810000 0.000000 0.000000 +183 1.820000 0.000000 0.000000 +184 1.830000 0.000000 0.000000 +185 1.840000 0.000000 0.000000 +186 1.850000 0.000000 0.000000 +187 1.860000 0.000000 0.000000 +188 1.870000 0.000000 0.000000 +189 1.880000 0.000000 0.000000 +190 1.890000 0.000000 0.000000 +191 1.900000 0.000000 0.000000 +192 1.910000 0.000000 0.000000 +193 1.920000 0.000000 0.000000 +194 1.930000 0.000000 0.000000 +195 1.940000 0.000000 0.000000 +196 1.950000 0.000000 0.000000 +197 1.960000 0.000000 0.000000 +198 1.970000 0.000000 0.000000 +199 1.980000 0.000000 0.000000 +200 1.990000 0.000000 0.000000 +201 2.000000 0.000000 0.000000 +202 2.010000 0.000000 0.000000 +203 2.020000 0.000000 0.000000 +204 2.030000 0.000000 0.000000 +205 2.040000 0.000000 0.000000 +206 2.050000 0.000000 0.000000 +207 2.060000 0.000000 0.000000 +208 2.070000 0.000000 0.000000 +209 2.080000 0.000000 0.000000 +210 2.090000 0.000000 0.000000 +211 2.100000 0.000000 0.000000 +212 2.110000 0.000000 0.000000 +213 2.120000 0.000000 0.000000 +214 2.130000 0.000000 0.000000 +215 2.140000 0.000000 0.000000 +216 2.150000 0.000000 0.000000 +217 2.160000 0.000000 0.000000 +218 2.170000 0.000000 0.000000 +219 2.180000 0.000000 0.000000 +220 2.190000 0.000000 0.000000 +221 2.200000 0.000000 0.000000 +222 2.210000 0.000000 0.000000 +223 2.220000 0.000000 0.000000 +224 2.230000 0.000000 0.000000 +225 2.240000 0.000000 0.000000 +226 2.250000 0.000000 0.000000 +227 2.260000 0.000000 0.000000 +228 2.270000 0.000000 0.000000 +229 2.280000 0.000000 0.000000 +230 2.290000 0.000000 0.000000 +231 2.300000 0.000000 0.000000 +232 2.310000 0.000000 0.000000 +233 2.320000 0.000000 0.000000 +234 2.330000 0.000000 0.000000 +235 2.340000 0.000000 0.000000 +236 2.350000 0.000000 0.000000 +237 2.360000 0.000000 0.000000 +238 2.370000 0.000000 0.000000 +239 2.380000 0.000000 0.000000 +240 2.390000 0.000000 0.000000 +241 2.400000 0.000000 0.000000 +242 2.410000 0.000000 0.000000 +243 2.420000 0.000000 0.000000 +244 2.430000 0.000000 0.000000 +245 2.440000 0.000000 0.000000 +246 2.450000 0.000000 0.000000 +247 2.460000 0.000000 0.000000 +248 2.470000 0.000000 0.000000 +249 2.480000 0.000000 0.000000 +250 2.490000 0.000000 0.000000 +251 2.500000 0.000000 0.000000 +252 2.510000 0.000000 0.000000 +253 2.520000 0.000000 0.000000 +254 2.530000 0.000000 0.000000 +255 2.540000 0.000000 0.000000 +256 2.550000 0.000000 0.000000 +257 2.560000 0.000000 0.000000 +258 2.570000 0.000000 0.000000 +259 2.580000 0.000000 0.000000 +260 2.590000 0.000000 0.000000 +261 2.600000 0.000000 0.000000 +262 2.610000 0.000000 0.000000 +263 2.620000 0.000000 0.000000 +264 2.630000 0.000000 0.000000 +265 2.640000 0.000000 0.000000 +266 2.650000 0.000000 0.000000 +267 2.660000 0.000000 0.000000 +268 2.670000 0.000000 0.000000 +269 2.680000 0.000000 0.000000 +270 2.690000 0.000000 0.000000 +271 2.700000 0.000000 0.000000 +272 2.710000 0.000000 0.000000 +273 2.720000 0.000000 0.000000 +274 2.730000 0.000000 0.000000 +275 2.740000 0.000000 0.000000 +276 2.750000 0.000000 0.000000 +277 2.760000 0.000000 0.000000 +278 2.770000 0.000000 0.000000 +279 2.780000 0.000000 0.000000 +280 2.790000 0.000000 0.000000 +281 2.800000 0.000000 0.000000 +282 2.810000 0.000000 0.000000 +283 2.820000 0.000000 0.000000 +284 2.830000 0.000000 0.000000 +285 2.840000 0.000000 0.000000 +286 2.850000 0.000000 0.000000 +287 2.860000 0.000000 0.000000 +288 2.870000 0.000000 0.000000 +289 2.880000 0.000000 0.000000 +290 2.890000 0.000000 0.000000 +291 2.900000 0.000000 0.000000 +292 2.910000 0.000000 0.000000 +293 2.920000 0.000000 0.000000 +294 2.930000 0.000000 0.000000 +295 2.940000 0.000000 0.000000 +296 2.950000 0.000000 0.000000 +297 2.960000 0.000000 0.000000 +298 2.970000 0.000000 0.000000 +299 2.980000 0.000000 0.000000 +300 2.990000 0.000000 0.000000 +301 3.000000 0.000000 0.000000 + +TAIL_TAIL_Wc_0.6 +N 301 R 0.000001 3.000000 + +1 0.000001 0.000000 0.000000 +2 0.010000 3999999999995999707725824.000000 4799999999997598070678224896.000000 +3 0.020000 976562499937500004352.000000 585937499981249777762304.000000 +4 0.030000 7526705687148720128.000000 3010682275956881096704.000000 +5 0.040000 238418578125000000.000000 71525573583984353280.000000 +6 0.050000 16383999744000000.000000 3932159969279997440.000000 +7 0.060000 1837574546257248.500000 367514917824838144.000000 +8 0.070000 288990429236596.312500 49541219354796968.000000 +9 0.080000 58207645654678.343750 8731147992610928.000000 +10 0.090000 14162817119182.900391 1888376117671434.750000 +11 0.100000 3999996000000.000000 479999760000000.500000 +12 0.110000 1274521012945.708496 139038779115662.093750 +13 0.120000 448625279546.553955 44862594934250.781250 +14 0.130000 171687100967.122345 15848078337188.726562 +15 0.140000 70553781072.250778 6047489716531.549805 +16 0.150000 30829035351.054977 2466336874723.629883 +17 0.160000 14210616296.622902 1065805162943.433594 +18 0.170000 6865346349.879549 484618532348.129211 +19 0.180000 3457603256.036191 230510803894.961182 +20 0.190000 1807158928.004511 114139038296.617722 +21 0.200000 976499999.999998 58591874999.999847 +22 0.210000 543739902.726732 31072184111.878654 +23 0.220000 311127628.299641 16971560078.724821 +24 0.230000 182499493.379421 9522417580.006592 +25 0.240000 109507052.064558 5475875881.316449 +26 0.250000 67092480.000000 3220832255.999991 +27 0.260000 41903049.941880 1934285732.237306 +28 0.270000 26639528.522336 1184208483.196407 +29 0.280000 17216873.260370 738043867.822060 +30 0.290000 11298625.429098 467668459.533016 +31 0.300000 7521218.724186 300958488.336427 +32 0.310000 5073808.319410 196492716.046068 +33 0.320000 3465721.661655 130034411.505164 +34 0.330000 2395143.138865 87152427.788625 +35 0.340000 1673561.082347 59112555.692539 +36 0.350000 1181528.973318 40546867.041137 +37 0.360000 842332.557402 28108378.157278 +38 0.370000 606071.119890 19681641.931764 +39 0.380000 439893.177446 13912339.662092 +40 0.390000 321924.360071 9922853.684245 +41 0.400000 237442.016602 7137908.935547 +42 0.410000 176435.450812 5176287.635225 +43 0.420000 132031.660059 3782743.515595 +44 0.430000 99468.250044 2784687.558254 +45 0.440000 75416.262744 2064324.130372 +46 0.450000 57529.220585 1540535.337797 +47 0.460000 44139.942254 1156983.644674 +48 0.470000 34054.846645 874222.695500 +49 0.480000 26413.181465 664417.646696 +50 0.490000 20589.881497 507780.654581 +51 0.500000 16128.000000 390144.000000 +52 0.510000 12691.351515 301294.396513 +53 0.520000 10031.077542 233820.872331 +54 0.530000 7961.876154 182311.949517 +55 0.540000 6344.988397 142792.224654 +56 0.550000 5075.941991 112324.247003 +57 0.560000 4075.667156 88725.341557 +58 0.570000 3284.018178 70364.910655 +59 0.580000 2655.022026 56018.454503 +60 0.590000 2153.374227 44761.819610 +61 0.600000 1751.840750 35894.153820 +62 0.610000 1429.321668 28881.467437 +63 0.620000 1169.400839 23315.070198 +64 0.630000 959.254371 18880.806522 +65 0.640000 788.825286 15336.170940 +66 0.650000 650.196650 12493.203783 +67 0.660000 537.113366 10205.647944 +68 0.670000 444.615844 8359.261950 +69 0.680000 368.758212 6864.481939 +70 0.690000 306.390715 5650.839586 +71 0.700000 254.991024 4662.698464 +72 0.710000 212.532986 3855.984565 +73 0.720000 177.384120 3195.669530 +74 0.730000 148.225307 2653.826099 +75 0.740000 123.987627 2208.120224 +76 0.750000 103.802544 1840.637693 +77 0.760000 86.962472 1536.967937 +78 0.770000 72.889471 1285.486272 +79 0.780000 61.110325 1076.789779 +80 0.790000 51.236635 903.252555 +81 0.800000 42.948872 758.673996 +82 0.810000 35.983576 637.999825 +83 0.820000 30.123043 537.100183 +84 0.830000 25.186999 452.592612 +85 0.840000 21.025860 381.700456 +86 0.850000 17.515264 322.139305 +87 0.860000 14.551619 272.025666 +88 0.870000 12.048476 229.803356 +89 0.880000 9.933566 194.184004 +90 0.890000 8.146368 164.098852 +91 0.900000 6.636119 138.659624 +92 0.910000 5.360169 117.126674 +93 0.920000 4.282632 98.883003 +94 0.930000 3.373272 83.413022 +95 0.940000 2.606573 70.285155 +96 0.950000 1.960975 59.137553 +97 0.960000 1.418239 49.666347 +98 0.970000 0.962916 41.615965 +99 0.980000 0.581905 34.771137 +100 0.990000 0.264083 28.950277 +101 1.000000 -0.000000 24.000000 +102 1.010000 -0.218384 19.790571 +103 1.020000 -0.397913 16.212117 +104 1.030000 -0.544418 13.171468 +105 1.040000 -0.662870 10.589529 +106 1.050000 -0.757512 8.399073 +107 1.060000 -0.831965 6.542902 +108 1.070000 -0.889321 4.972300 +109 1.080000 -0.932223 3.645731 +110 1.090000 -0.962930 2.527753 +111 1.100000 -0.983372 1.588095 +112 1.110000 -0.995200 0.800882 +113 1.120000 -0.999824 0.143980 +114 1.130000 -0.999611 -0.103302 +115 1.140000 -0.997893 -0.240069 +116 1.150000 -0.994811 -0.376178 +117 1.160000 -0.990373 -0.511255 +118 1.170000 -0.984591 -0.644932 +119 1.180000 -0.977480 -0.776841 +120 1.190000 -0.969061 -0.906620 +121 1.200000 -0.959356 -1.033915 +122 1.210000 -0.948392 -1.158376 +123 1.220000 -0.936199 -1.279661 +124 1.230000 -0.922811 -1.397439 +125 1.240000 -0.908263 -1.511387 +126 1.250000 -0.892597 -1.621193 +127 1.260000 -0.875854 -1.726554 +128 1.270000 -0.858082 -1.827184 +129 1.280000 -0.839327 -1.922805 +130 1.290000 -0.819643 -2.013156 +131 1.300000 -0.799083 -2.097989 +132 1.310000 -0.777702 -2.177071 +133 1.320000 -0.755561 -2.250187 +134 1.330000 -0.732719 -2.317134 +135 1.340000 -0.709240 -2.377731 +136 1.350000 -0.685186 -2.431810 +137 1.360000 -0.660626 -2.479224 +138 1.370000 -0.635625 -2.519843 +139 1.380000 -0.610252 -2.553555 +140 1.390000 -0.584577 -2.580268 +141 1.400000 -0.558670 -2.599908 +142 1.410000 -0.532602 -2.612423 +143 1.420000 -0.506445 -2.617776 +144 1.430000 -0.480271 -2.615955 +145 1.440000 -0.454150 -2.606964 +146 1.450000 -0.428155 -2.590827 +147 1.460000 -0.402357 -2.567588 +148 1.470000 -0.376827 -2.537312 +149 1.480000 -0.351634 -2.500082 +150 1.490000 -0.326848 -2.455999 +151 1.500000 -0.302537 -2.405184 +152 1.510000 -0.278767 -2.347777 +153 1.520000 -0.255603 -2.283935 +154 1.530000 -0.233109 -2.213833 +155 1.540000 -0.211346 -2.137662 +156 1.550000 -0.190375 -2.055633 +157 1.560000 -0.170252 -1.967969 +158 1.570000 -0.151034 -1.874911 +159 1.580000 -0.132771 -1.776714 +160 1.590000 -0.115516 -1.673647 +161 1.600000 -0.099314 -1.565993 +162 1.610000 -0.084210 -1.454047 +163 1.620000 -0.070246 -1.338115 +164 1.630000 -0.057460 -1.218516 +165 1.640000 -0.045887 -1.095576 +166 1.650000 -0.035558 -0.969634 +167 1.660000 -0.026503 -0.841034 +168 1.670000 -0.018745 -0.710129 +169 1.680000 -0.012307 -0.577277 +170 1.690000 -0.007205 -0.442843 +171 1.700000 -0.003454 -0.307196 +172 1.710000 -0.001064 -0.170706 +173 1.720000 -0.000042 -0.033748 +174 1.730000 0.000000 0.000000 +175 1.740000 0.000000 0.000000 +176 1.750000 0.000000 0.000000 +177 1.760000 0.000000 0.000000 +178 1.770000 0.000000 0.000000 +179 1.780000 0.000000 0.000000 +180 1.790000 0.000000 0.000000 +181 1.800000 0.000000 0.000000 +182 1.810000 0.000000 0.000000 +183 1.820000 0.000000 0.000000 +184 1.830000 0.000000 0.000000 +185 1.840000 0.000000 0.000000 +186 1.850000 0.000000 0.000000 +187 1.860000 0.000000 0.000000 +188 1.870000 0.000000 0.000000 +189 1.880000 0.000000 0.000000 +190 1.890000 0.000000 0.000000 +191 1.900000 0.000000 0.000000 +192 1.910000 0.000000 0.000000 +193 1.920000 0.000000 0.000000 +194 1.930000 0.000000 0.000000 +195 1.940000 0.000000 0.000000 +196 1.950000 0.000000 0.000000 +197 1.960000 0.000000 0.000000 +198 1.970000 0.000000 0.000000 +199 1.980000 0.000000 0.000000 +200 1.990000 0.000000 0.000000 +201 2.000000 0.000000 0.000000 +202 2.010000 0.000000 0.000000 +203 2.020000 0.000000 0.000000 +204 2.030000 0.000000 0.000000 +205 2.040000 0.000000 0.000000 +206 2.050000 0.000000 0.000000 +207 2.060000 0.000000 0.000000 +208 2.070000 0.000000 0.000000 +209 2.080000 0.000000 0.000000 +210 2.090000 0.000000 0.000000 +211 2.100000 0.000000 0.000000 +212 2.110000 0.000000 0.000000 +213 2.120000 0.000000 0.000000 +214 2.130000 0.000000 0.000000 +215 2.140000 0.000000 0.000000 +216 2.150000 0.000000 0.000000 +217 2.160000 0.000000 0.000000 +218 2.170000 0.000000 0.000000 +219 2.180000 0.000000 0.000000 +220 2.190000 0.000000 0.000000 +221 2.200000 0.000000 0.000000 +222 2.210000 0.000000 0.000000 +223 2.220000 0.000000 0.000000 +224 2.230000 0.000000 0.000000 +225 2.240000 0.000000 0.000000 +226 2.250000 0.000000 0.000000 +227 2.260000 0.000000 0.000000 +228 2.270000 0.000000 0.000000 +229 2.280000 0.000000 0.000000 +230 2.290000 0.000000 0.000000 +231 2.300000 0.000000 0.000000 +232 2.310000 0.000000 0.000000 +233 2.320000 0.000000 0.000000 +234 2.330000 0.000000 0.000000 +235 2.340000 0.000000 0.000000 +236 2.350000 0.000000 0.000000 +237 2.360000 0.000000 0.000000 +238 2.370000 0.000000 0.000000 +239 2.380000 0.000000 0.000000 +240 2.390000 0.000000 0.000000 +241 2.400000 0.000000 0.000000 +242 2.410000 0.000000 0.000000 +243 2.420000 0.000000 0.000000 +244 2.430000 0.000000 0.000000 +245 2.440000 0.000000 0.000000 +246 2.450000 0.000000 0.000000 +247 2.460000 0.000000 0.000000 +248 2.470000 0.000000 0.000000 +249 2.480000 0.000000 0.000000 +250 2.490000 0.000000 0.000000 +251 2.500000 0.000000 0.000000 +252 2.510000 0.000000 0.000000 +253 2.520000 0.000000 0.000000 +254 2.530000 0.000000 0.000000 +255 2.540000 0.000000 0.000000 +256 2.550000 0.000000 0.000000 +257 2.560000 0.000000 0.000000 +258 2.570000 0.000000 0.000000 +259 2.580000 0.000000 0.000000 +260 2.590000 0.000000 0.000000 +261 2.600000 0.000000 0.000000 +262 2.610000 0.000000 0.000000 +263 2.620000 0.000000 0.000000 +264 2.630000 0.000000 0.000000 +265 2.640000 0.000000 0.000000 +266 2.650000 0.000000 0.000000 +267 2.660000 0.000000 0.000000 +268 2.670000 0.000000 0.000000 +269 2.680000 0.000000 0.000000 +270 2.690000 0.000000 0.000000 +271 2.700000 0.000000 0.000000 +272 2.710000 0.000000 0.000000 +273 2.720000 0.000000 0.000000 +274 2.730000 0.000000 0.000000 +275 2.740000 0.000000 0.000000 +276 2.750000 0.000000 0.000000 +277 2.760000 0.000000 0.000000 +278 2.770000 0.000000 0.000000 +279 2.780000 0.000000 0.000000 +280 2.790000 0.000000 0.000000 +281 2.800000 0.000000 0.000000 +282 2.810000 0.000000 0.000000 +283 2.820000 0.000000 0.000000 +284 2.830000 0.000000 0.000000 +285 2.840000 0.000000 0.000000 +286 2.850000 0.000000 0.000000 +287 2.860000 0.000000 0.000000 +288 2.870000 0.000000 0.000000 +289 2.880000 0.000000 0.000000 +290 2.890000 0.000000 0.000000 +291 2.900000 0.000000 0.000000 +292 2.910000 0.000000 0.000000 +293 2.920000 0.000000 0.000000 +294 2.930000 0.000000 0.000000 +295 2.940000 0.000000 0.000000 +296 2.950000 0.000000 0.000000 +297 2.960000 0.000000 0.000000 +298 2.970000 0.000000 0.000000 +299 2.980000 0.000000 0.000000 +300 2.990000 0.000000 0.000000 +301 3.000000 0.000000 0.000000 + + +TAIL_TAIL_Wc_0.7 +N 301 R 0.000001 3.000000 + +1 0.000001 0.000000 0.000000 +2 0.010000 3999999999995999707725824.000000 4799999999997598070678224896.000000 +3 0.020000 976562499937500004352.000000 585937499981249777762304.000000 +4 0.030000 7526705687148720128.000000 3010682275956881096704.000000 +5 0.040000 238418578125000000.000000 71525573583984353280.000000 +6 0.050000 16383999744000000.000000 3932159969279997440.000000 +7 0.060000 1837574546257248.500000 367514917824838144.000000 +8 0.070000 288990429236596.312500 49541219354796968.000000 +9 0.080000 58207645654678.343750 8731147992610928.000000 +10 0.090000 14162817119182.900391 1888376117671434.750000 +11 0.100000 3999996000000.000000 479999760000000.500000 +12 0.110000 1274521012945.708496 139038779115662.093750 +13 0.120000 448625279546.553955 44862594934250.781250 +14 0.130000 171687100967.122345 15848078337188.726562 +15 0.140000 70553781072.250778 6047489716531.549805 +16 0.150000 30829035351.054977 2466336874723.629883 +17 0.160000 14210616296.622902 1065805162943.433594 +18 0.170000 6865346349.879549 484618532348.129211 +19 0.180000 3457603256.036191 230510803894.961182 +20 0.190000 1807158928.004511 114139038296.617722 +21 0.200000 976499999.999998 58591874999.999847 +22 0.210000 543739902.726732 31072184111.878654 +23 0.220000 311127628.299641 16971560078.724821 +24 0.230000 182499493.379421 9522417580.006592 +25 0.240000 109507052.064558 5475875881.316449 +26 0.250000 67092480.000000 3220832255.999991 +27 0.260000 41903049.941880 1934285732.237306 +28 0.270000 26639528.522336 1184208483.196407 +29 0.280000 17216873.260370 738043867.822060 +30 0.290000 11298625.429098 467668459.533016 +31 0.300000 7521218.724186 300958488.336427 +32 0.310000 5073808.319410 196492716.046068 +33 0.320000 3465721.661655 130034411.505164 +34 0.330000 2395143.138865 87152427.788625 +35 0.340000 1673561.082347 59112555.692539 +36 0.350000 1181528.973318 40546867.041137 +37 0.360000 842332.557402 28108378.157278 +38 0.370000 606071.119890 19681641.931764 +39 0.380000 439893.177446 13912339.662092 +40 0.390000 321924.360071 9922853.684245 +41 0.400000 237442.016602 7137908.935547 +42 0.410000 176435.450812 5176287.635225 +43 0.420000 132031.660059 3782743.515595 +44 0.430000 99468.250044 2784687.558254 +45 0.440000 75416.262744 2064324.130372 +46 0.450000 57529.220585 1540535.337797 +47 0.460000 44139.942254 1156983.644674 +48 0.470000 34054.846645 874222.695500 +49 0.480000 26413.181465 664417.646696 +50 0.490000 20589.881497 507780.654581 +51 0.500000 16128.000000 390144.000000 +52 0.510000 12691.351515 301294.396513 +53 0.520000 10031.077542 233820.872331 +54 0.530000 7961.876154 182311.949517 +55 0.540000 6344.988397 142792.224654 +56 0.550000 5075.941991 112324.247003 +57 0.560000 4075.667156 88725.341557 +58 0.570000 3284.018178 70364.910655 +59 0.580000 2655.022026 56018.454503 +60 0.590000 2153.374227 44761.819610 +61 0.600000 1751.840750 35894.153820 +62 0.610000 1429.321668 28881.467437 +63 0.620000 1169.400839 23315.070198 +64 0.630000 959.254371 18880.806522 +65 0.640000 788.825286 15336.170940 +66 0.650000 650.196650 12493.203783 +67 0.660000 537.113366 10205.647944 +68 0.670000 444.615844 8359.261950 +69 0.680000 368.758212 6864.481939 +70 0.690000 306.390715 5650.839586 +71 0.700000 254.991024 4662.698464 +72 0.710000 212.532986 3855.984565 +73 0.720000 177.384120 3195.669530 +74 0.730000 148.225307 2653.826099 +75 0.740000 123.987627 2208.120224 +76 0.750000 103.802544 1840.637693 +77 0.760000 86.962472 1536.967937 +78 0.770000 72.889471 1285.486272 +79 0.780000 61.110325 1076.789779 +80 0.790000 51.236635 903.252555 +81 0.800000 42.948872 758.673996 +82 0.810000 35.983576 637.999825 +83 0.820000 30.123043 537.100183 +84 0.830000 25.186999 452.592612 +85 0.840000 21.025860 381.700456 +86 0.850000 17.515264 322.139305 +87 0.860000 14.551619 272.025666 +88 0.870000 12.048476 229.803356 +89 0.880000 9.933566 194.184004 +90 0.890000 8.146368 164.098852 +91 0.900000 6.636119 138.659624 +92 0.910000 5.360169 117.126674 +93 0.920000 4.282632 98.883003 +94 0.930000 3.373272 83.413022 +95 0.940000 2.606573 70.285155 +96 0.950000 1.960975 59.137553 +97 0.960000 1.418239 49.666347 +98 0.970000 0.962916 41.615965 +99 0.980000 0.581905 34.771137 +100 0.990000 0.264083 28.950277 +101 1.000000 -0.000000 24.000000 +102 1.010000 -0.218384 19.790571 +103 1.020000 -0.397913 16.212117 +104 1.030000 -0.544418 13.171468 +105 1.040000 -0.662870 10.589529 +106 1.050000 -0.757512 8.399073 +107 1.060000 -0.831965 6.542902 +108 1.070000 -0.889321 4.972300 +109 1.080000 -0.932223 3.645731 +110 1.090000 -0.962930 2.527753 +111 1.100000 -0.983372 1.588095 +112 1.110000 -0.995200 0.800882 +113 1.120000 -0.999824 0.143980 +114 1.130000 -0.999714 -0.075900 +115 1.140000 -0.998452 -0.176443 +116 1.150000 -0.996186 -0.276630 +117 1.160000 -0.992921 -0.376260 +118 1.170000 -0.988664 -0.475132 +119 1.180000 -0.983422 -0.573048 +120 1.190000 -0.977206 -0.669809 +121 1.200000 -0.970030 -0.765221 +122 1.210000 -0.961907 -0.859093 +123 1.220000 -0.952854 -0.951234 +124 1.230000 -0.942889 -1.041460 +125 1.240000 -0.932032 -1.129588 +126 1.250000 -0.920305 -1.215441 +127 1.260000 -0.907731 -1.298847 +128 1.270000 -0.894336 -1.379637 +129 1.280000 -0.880148 -1.457649 +130 1.290000 -0.865193 -1.532725 +131 1.300000 -0.849503 -1.604714 +132 1.310000 -0.833110 -1.673472 +133 1.320000 -0.816045 -1.738859 +134 1.330000 -0.798344 -1.800745 +135 1.340000 -0.780042 -1.859004 +136 1.350000 -0.761177 -1.913520 +137 1.360000 -0.741785 -1.964182 +138 1.370000 -0.721906 -2.010888 +139 1.380000 -0.701581 -2.053545 +140 1.390000 -0.680849 -2.092066 +141 1.400000 -0.659753 -2.126374 +142 1.410000 -0.638336 -2.156399 +143 1.420000 -0.616640 -2.182082 +144 1.430000 -0.594709 -2.203371 +145 1.440000 -0.572587 -2.220222 +146 1.450000 -0.550319 -2.232602 +147 1.460000 -0.527950 -2.240486 +148 1.470000 -0.505525 -2.243858 +149 1.480000 -0.483088 -2.242711 +150 1.490000 -0.460686 -2.237047 +151 1.500000 -0.438362 -2.226879 +152 1.510000 -0.416163 -2.212225 +153 1.520000 -0.394133 -2.193117 +154 1.530000 -0.372315 -2.169592 +155 1.540000 -0.350755 -2.141698 +156 1.550000 -0.329496 -2.109490 +157 1.560000 -0.308580 -2.073035 +158 1.570000 -0.288049 -2.032404 +159 1.580000 -0.267945 -1.987681 +160 1.590000 -0.248309 -1.938954 +161 1.600000 -0.229179 -1.886323 +162 1.610000 -0.210595 -1.829893 +163 1.620000 -0.192594 -1.769778 +164 1.630000 -0.175211 -1.706099 +165 1.640000 -0.158483 -1.638984 +166 1.650000 -0.142443 -1.568568 +167 1.660000 -0.127122 -1.494993 +168 1.670000 -0.112553 -1.418408 +169 1.680000 -0.098764 -1.338966 +170 1.690000 -0.085782 -1.256828 +171 1.700000 -0.073635 -1.172158 +172 1.710000 -0.062347 -1.085128 +173 1.720000 -0.051940 -0.995913 +174 1.730000 -0.042436 -0.904692 +175 1.740000 -0.033852 -0.811649 +176 1.750000 -0.026208 -0.716971 +177 1.760000 -0.019518 -0.620850 +178 1.770000 -0.013795 -0.523479 +179 1.780000 -0.009052 -0.425053 +180 1.790000 -0.005297 -0.325771 +181 1.800000 -0.002538 -0.225833 +182 1.810000 -0.000782 -0.125440 +183 1.820000 -0.000031 -0.024795 +184 1.830000 0.000000 0.000000 +185 1.840000 0.000000 0.000000 +186 1.850000 0.000000 0.000000 +187 1.860000 0.000000 0.000000 +188 1.870000 0.000000 0.000000 +189 1.880000 0.000000 0.000000 +190 1.890000 0.000000 0.000000 +191 1.900000 0.000000 0.000000 +192 1.910000 0.000000 0.000000 +193 1.920000 0.000000 0.000000 +194 1.930000 0.000000 0.000000 +195 1.940000 0.000000 0.000000 +196 1.950000 0.000000 0.000000 +197 1.960000 0.000000 0.000000 +198 1.970000 0.000000 0.000000 +199 1.980000 0.000000 0.000000 +200 1.990000 0.000000 0.000000 +201 2.000000 0.000000 0.000000 +202 2.010000 0.000000 0.000000 +203 2.020000 0.000000 0.000000 +204 2.030000 0.000000 0.000000 +205 2.040000 0.000000 0.000000 +206 2.050000 0.000000 0.000000 +207 2.060000 0.000000 0.000000 +208 2.070000 0.000000 0.000000 +209 2.080000 0.000000 0.000000 +210 2.090000 0.000000 0.000000 +211 2.100000 0.000000 0.000000 +212 2.110000 0.000000 0.000000 +213 2.120000 0.000000 0.000000 +214 2.130000 0.000000 0.000000 +215 2.140000 0.000000 0.000000 +216 2.150000 0.000000 0.000000 +217 2.160000 0.000000 0.000000 +218 2.170000 0.000000 0.000000 +219 2.180000 0.000000 0.000000 +220 2.190000 0.000000 0.000000 +221 2.200000 0.000000 0.000000 +222 2.210000 0.000000 0.000000 +223 2.220000 0.000000 0.000000 +224 2.230000 0.000000 0.000000 +225 2.240000 0.000000 0.000000 +226 2.250000 0.000000 0.000000 +227 2.260000 0.000000 0.000000 +228 2.270000 0.000000 0.000000 +229 2.280000 0.000000 0.000000 +230 2.290000 0.000000 0.000000 +231 2.300000 0.000000 0.000000 +232 2.310000 0.000000 0.000000 +233 2.320000 0.000000 0.000000 +234 2.330000 0.000000 0.000000 +235 2.340000 0.000000 0.000000 +236 2.350000 0.000000 0.000000 +237 2.360000 0.000000 0.000000 +238 2.370000 0.000000 0.000000 +239 2.380000 0.000000 0.000000 +240 2.390000 0.000000 0.000000 +241 2.400000 0.000000 0.000000 +242 2.410000 0.000000 0.000000 +243 2.420000 0.000000 0.000000 +244 2.430000 0.000000 0.000000 +245 2.440000 0.000000 0.000000 +246 2.450000 0.000000 0.000000 +247 2.460000 0.000000 0.000000 +248 2.470000 0.000000 0.000000 +249 2.480000 0.000000 0.000000 +250 2.490000 0.000000 0.000000 +251 2.500000 0.000000 0.000000 +252 2.510000 0.000000 0.000000 +253 2.520000 0.000000 0.000000 +254 2.530000 0.000000 0.000000 +255 2.540000 0.000000 0.000000 +256 2.550000 0.000000 0.000000 +257 2.560000 0.000000 0.000000 +258 2.570000 0.000000 0.000000 +259 2.580000 0.000000 0.000000 +260 2.590000 0.000000 0.000000 +261 2.600000 0.000000 0.000000 +262 2.610000 0.000000 0.000000 +263 2.620000 0.000000 0.000000 +264 2.630000 0.000000 0.000000 +265 2.640000 0.000000 0.000000 +266 2.650000 0.000000 0.000000 +267 2.660000 0.000000 0.000000 +268 2.670000 0.000000 0.000000 +269 2.680000 0.000000 0.000000 +270 2.690000 0.000000 0.000000 +271 2.700000 0.000000 0.000000 +272 2.710000 0.000000 0.000000 +273 2.720000 0.000000 0.000000 +274 2.730000 0.000000 0.000000 +275 2.740000 0.000000 0.000000 +276 2.750000 0.000000 0.000000 +277 2.760000 0.000000 0.000000 +278 2.770000 0.000000 0.000000 +279 2.780000 0.000000 0.000000 +280 2.790000 0.000000 0.000000 +281 2.800000 0.000000 0.000000 +282 2.810000 0.000000 0.000000 +283 2.820000 0.000000 0.000000 +284 2.830000 0.000000 0.000000 +285 2.840000 0.000000 0.000000 +286 2.850000 0.000000 0.000000 +287 2.860000 0.000000 0.000000 +288 2.870000 0.000000 0.000000 +289 2.880000 0.000000 0.000000 +290 2.890000 0.000000 0.000000 +291 2.900000 0.000000 0.000000 +292 2.910000 0.000000 0.000000 +293 2.920000 0.000000 0.000000 +294 2.930000 0.000000 0.000000 +295 2.940000 0.000000 0.000000 +296 2.950000 0.000000 0.000000 +297 2.960000 0.000000 0.000000 +298 2.970000 0.000000 0.000000 +299 2.980000 0.000000 0.000000 +300 2.990000 0.000000 0.000000 +301 3.000000 0.000000 0.000000 + + +TAIL_TAIL_Wc_0.8 +N 301 R 0.000001 3.000000 + +1 0.000001 0.000000 0.000000 +2 0.010000 3999999999995999707725824.000000 4799999999997598070678224896.000000 +3 0.020000 976562499937500004352.000000 585937499981249777762304.000000 +4 0.030000 7526705687148720128.000000 3010682275956881096704.000000 +5 0.040000 238418578125000000.000000 71525573583984353280.000000 +6 0.050000 16383999744000000.000000 3932159969279997440.000000 +7 0.060000 1837574546257248.500000 367514917824838144.000000 +8 0.070000 288990429236596.312500 49541219354796968.000000 +9 0.080000 58207645654678.343750 8731147992610928.000000 +10 0.090000 14162817119182.900391 1888376117671434.750000 +11 0.100000 3999996000000.000000 479999760000000.500000 +12 0.110000 1274521012945.708496 139038779115662.093750 +13 0.120000 448625279546.553955 44862594934250.781250 +14 0.130000 171687100967.122345 15848078337188.726562 +15 0.140000 70553781072.250778 6047489716531.549805 +16 0.150000 30829035351.054977 2466336874723.629883 +17 0.160000 14210616296.622902 1065805162943.433594 +18 0.170000 6865346349.879549 484618532348.129211 +19 0.180000 3457603256.036191 230510803894.961182 +20 0.190000 1807158928.004511 114139038296.617722 +21 0.200000 976499999.999998 58591874999.999847 +22 0.210000 543739902.726732 31072184111.878654 +23 0.220000 311127628.299641 16971560078.724821 +24 0.230000 182499493.379421 9522417580.006592 +25 0.240000 109507052.064558 5475875881.316449 +26 0.250000 67092480.000000 3220832255.999991 +27 0.260000 41903049.941880 1934285732.237306 +28 0.270000 26639528.522336 1184208483.196407 +29 0.280000 17216873.260370 738043867.822060 +30 0.290000 11298625.429098 467668459.533016 +31 0.300000 7521218.724186 300958488.336427 +32 0.310000 5073808.319410 196492716.046068 +33 0.320000 3465721.661655 130034411.505164 +34 0.330000 2395143.138865 87152427.788625 +35 0.340000 1673561.082347 59112555.692539 +36 0.350000 1181528.973318 40546867.041137 +37 0.360000 842332.557402 28108378.157278 +38 0.370000 606071.119890 19681641.931764 +39 0.380000 439893.177446 13912339.662092 +40 0.390000 321924.360071 9922853.684245 +41 0.400000 237442.016602 7137908.935547 +42 0.410000 176435.450812 5176287.635225 +43 0.420000 132031.660059 3782743.515595 +44 0.430000 99468.250044 2784687.558254 +45 0.440000 75416.262744 2064324.130372 +46 0.450000 57529.220585 1540535.337797 +47 0.460000 44139.942254 1156983.644674 +48 0.470000 34054.846645 874222.695500 +49 0.480000 26413.181465 664417.646696 +50 0.490000 20589.881497 507780.654581 +51 0.500000 16128.000000 390144.000000 +52 0.510000 12691.351515 301294.396513 +53 0.520000 10031.077542 233820.872331 +54 0.530000 7961.876154 182311.949517 +55 0.540000 6344.988397 142792.224654 +56 0.550000 5075.941991 112324.247003 +57 0.560000 4075.667156 88725.341557 +58 0.570000 3284.018178 70364.910655 +59 0.580000 2655.022026 56018.454503 +60 0.590000 2153.374227 44761.819610 +61 0.600000 1751.840750 35894.153820 +62 0.610000 1429.321668 28881.467437 +63 0.620000 1169.400839 23315.070198 +64 0.630000 959.254371 18880.806522 +65 0.640000 788.825286 15336.170940 +66 0.650000 650.196650 12493.203783 +67 0.660000 537.113366 10205.647944 +68 0.670000 444.615844 8359.261950 +69 0.680000 368.758212 6864.481939 +70 0.690000 306.390715 5650.839586 +71 0.700000 254.991024 4662.698464 +72 0.710000 212.532986 3855.984565 +73 0.720000 177.384120 3195.669530 +74 0.730000 148.225307 2653.826099 +75 0.740000 123.987627 2208.120224 +76 0.750000 103.802544 1840.637693 +77 0.760000 86.962472 1536.967937 +78 0.770000 72.889471 1285.486272 +79 0.780000 61.110325 1076.789779 +80 0.790000 51.236635 903.252555 +81 0.800000 42.948872 758.673996 +82 0.810000 35.983576 637.999825 +83 0.820000 30.123043 537.100183 +84 0.830000 25.186999 452.592612 +85 0.840000 21.025860 381.700456 +86 0.850000 17.515264 322.139305 +87 0.860000 14.551619 272.025666 +88 0.870000 12.048476 229.803356 +89 0.880000 9.933566 194.184004 +90 0.890000 8.146368 164.098852 +91 0.900000 6.636119 138.659624 +92 0.910000 5.360169 117.126674 +93 0.920000 4.282632 98.883003 +94 0.930000 3.373272 83.413022 +95 0.940000 2.606573 70.285155 +96 0.950000 1.960975 59.137553 +97 0.960000 1.418239 49.666347 +98 0.970000 0.962916 41.615965 +99 0.980000 0.581905 34.771137 +100 0.990000 0.264083 28.950277 +101 1.000000 -0.000000 24.000000 +102 1.010000 -0.218384 19.790571 +103 1.020000 -0.397913 16.212117 +104 1.030000 -0.544418 13.171468 +105 1.040000 -0.662870 10.589529 +106 1.050000 -0.757512 8.399073 +107 1.060000 -0.831965 6.542902 +108 1.070000 -0.889321 4.972300 +109 1.080000 -0.932223 3.645731 +110 1.090000 -0.962930 2.527753 +111 1.100000 -0.983372 1.588095 +112 1.110000 -0.995200 0.800882 +113 1.120000 -0.999824 0.143980 +114 1.130000 -0.999781 -0.058114 +115 1.140000 -0.998815 -0.135122 +116 1.150000 -0.997079 -0.211921 +117 1.160000 -0.994577 -0.288394 +118 1.170000 -0.991313 -0.364422 +119 1.180000 -0.987291 -0.439888 +120 1.190000 -0.982517 -0.514676 +121 1.200000 -0.977000 -0.588671 +122 1.210000 -0.970747 -0.661757 +123 1.220000 -0.963768 -0.733823 +124 1.230000 -0.956074 -0.804758 +125 1.240000 -0.947677 -0.874452 +126 1.250000 -0.938590 -0.942798 +127 1.260000 -0.928826 -1.009689 +128 1.270000 -0.918401 -1.075024 +129 1.280000 -0.907331 -1.138702 +130 1.290000 -0.895633 -1.200623 +131 1.300000 -0.883325 -1.260693 +132 1.310000 -0.870426 -1.318820 +133 1.320000 -0.856955 -1.374913 +134 1.330000 -0.842934 -1.428885 +135 1.340000 -0.828385 -1.480655 +136 1.350000 -0.813329 -1.530141 +137 1.360000 -0.797790 -1.577269 +138 1.370000 -0.781792 -1.621964 +139 1.380000 -0.765359 -1.664158 +140 1.390000 -0.748517 -1.703786 +141 1.400000 -0.731292 -1.740787 +142 1.410000 -0.713710 -1.775104 +143 1.420000 -0.695799 -1.806684 +144 1.430000 -0.677586 -1.835478 +145 1.440000 -0.659099 -1.861442 +146 1.450000 -0.640367 -1.884535 +147 1.460000 -0.621418 -1.904723 +148 1.470000 -0.602282 -1.921974 +149 1.480000 -0.582988 -1.936261 +150 1.490000 -0.563567 -1.947563 +151 1.500000 -0.544047 -1.955862 +152 1.510000 -0.524459 -1.961145 +153 1.520000 -0.504834 -1.963404 +154 1.530000 -0.485201 -1.962635 +155 1.540000 -0.465592 -1.958841 +156 1.550000 -0.446035 -1.952026 +157 1.560000 -0.426561 -1.942201 +158 1.570000 -0.407201 -1.929381 +159 1.580000 -0.387983 -1.913586 +160 1.590000 -0.368939 -1.894841 +161 1.600000 -0.350096 -1.873174 +162 1.610000 -0.331485 -1.848619 +163 1.620000 -0.313133 -1.821213 +164 1.630000 -0.295070 -1.790999 +165 1.640000 -0.277323 -1.758024 +166 1.650000 -0.259919 -1.722338 +167 1.660000 -0.242885 -1.683996 +168 1.670000 -0.226247 -1.643057 +169 1.680000 -0.210032 -1.599585 +170 1.690000 -0.194264 -1.553647 +171 1.700000 -0.178967 -1.505313 +172 1.710000 -0.164165 -1.454658 +173 1.720000 -0.149881 -1.401759 +174 1.730000 -0.136137 -1.346700 +175 1.740000 -0.122954 -1.289564 +176 1.750000 -0.110353 -1.230439 +177 1.760000 -0.098352 -1.169418 +178 1.770000 -0.086970 -1.106593 +179 1.780000 -0.076226 -1.042062 +180 1.790000 -0.066134 -0.975924 +181 1.800000 -0.056712 -0.908281 +182 1.810000 -0.047973 -0.839238 +183 1.820000 -0.039932 -0.768901 +184 1.830000 -0.032599 -0.697378 +185 1.840000 -0.025988 -0.624780 +186 1.850000 -0.020107 -0.551218 +187 1.860000 -0.014966 -0.476807 +188 1.870000 -0.010573 -0.401660 +189 1.880000 -0.006935 -0.325894 +190 1.890000 -0.004057 -0.249625 +191 1.900000 -0.001944 -0.172972 +192 1.910000 -0.000599 -0.096052 +193 1.920000 -0.000023 -0.018984 +194 1.930000 0.000000 0.000000 +195 1.940000 0.000000 0.000000 +196 1.950000 0.000000 0.000000 +197 1.960000 0.000000 0.000000 +198 1.970000 0.000000 0.000000 +199 1.980000 0.000000 0.000000 +200 1.990000 0.000000 0.000000 +201 2.000000 0.000000 0.000000 +202 2.010000 0.000000 0.000000 +203 2.020000 0.000000 0.000000 +204 2.030000 0.000000 0.000000 +205 2.040000 0.000000 0.000000 +206 2.050000 0.000000 0.000000 +207 2.060000 0.000000 0.000000 +208 2.070000 0.000000 0.000000 +209 2.080000 0.000000 0.000000 +210 2.090000 0.000000 0.000000 +211 2.100000 0.000000 0.000000 +212 2.110000 0.000000 0.000000 +213 2.120000 0.000000 0.000000 +214 2.130000 0.000000 0.000000 +215 2.140000 0.000000 0.000000 +216 2.150000 0.000000 0.000000 +217 2.160000 0.000000 0.000000 +218 2.170000 0.000000 0.000000 +219 2.180000 0.000000 0.000000 +220 2.190000 0.000000 0.000000 +221 2.200000 0.000000 0.000000 +222 2.210000 0.000000 0.000000 +223 2.220000 0.000000 0.000000 +224 2.230000 0.000000 0.000000 +225 2.240000 0.000000 0.000000 +226 2.250000 0.000000 0.000000 +227 2.260000 0.000000 0.000000 +228 2.270000 0.000000 0.000000 +229 2.280000 0.000000 0.000000 +230 2.290000 0.000000 0.000000 +231 2.300000 0.000000 0.000000 +232 2.310000 0.000000 0.000000 +233 2.320000 0.000000 0.000000 +234 2.330000 0.000000 0.000000 +235 2.340000 0.000000 0.000000 +236 2.350000 0.000000 0.000000 +237 2.360000 0.000000 0.000000 +238 2.370000 0.000000 0.000000 +239 2.380000 0.000000 0.000000 +240 2.390000 0.000000 0.000000 +241 2.400000 0.000000 0.000000 +242 2.410000 0.000000 0.000000 +243 2.420000 0.000000 0.000000 +244 2.430000 0.000000 0.000000 +245 2.440000 0.000000 0.000000 +246 2.450000 0.000000 0.000000 +247 2.460000 0.000000 0.000000 +248 2.470000 0.000000 0.000000 +249 2.480000 0.000000 0.000000 +250 2.490000 0.000000 0.000000 +251 2.500000 0.000000 0.000000 +252 2.510000 0.000000 0.000000 +253 2.520000 0.000000 0.000000 +254 2.530000 0.000000 0.000000 +255 2.540000 0.000000 0.000000 +256 2.550000 0.000000 0.000000 +257 2.560000 0.000000 0.000000 +258 2.570000 0.000000 0.000000 +259 2.580000 0.000000 0.000000 +260 2.590000 0.000000 0.000000 +261 2.600000 0.000000 0.000000 +262 2.610000 0.000000 0.000000 +263 2.620000 0.000000 0.000000 +264 2.630000 0.000000 0.000000 +265 2.640000 0.000000 0.000000 +266 2.650000 0.000000 0.000000 +267 2.660000 0.000000 0.000000 +268 2.670000 0.000000 0.000000 +269 2.680000 0.000000 0.000000 +270 2.690000 0.000000 0.000000 +271 2.700000 0.000000 0.000000 +272 2.710000 0.000000 0.000000 +273 2.720000 0.000000 0.000000 +274 2.730000 0.000000 0.000000 +275 2.740000 0.000000 0.000000 +276 2.750000 0.000000 0.000000 +277 2.760000 0.000000 0.000000 +278 2.770000 0.000000 0.000000 +279 2.780000 0.000000 0.000000 +280 2.790000 0.000000 0.000000 +281 2.800000 0.000000 0.000000 +282 2.810000 0.000000 0.000000 +283 2.820000 0.000000 0.000000 +284 2.830000 0.000000 0.000000 +285 2.840000 0.000000 0.000000 +286 2.850000 0.000000 0.000000 +287 2.860000 0.000000 0.000000 +288 2.870000 0.000000 0.000000 +289 2.880000 0.000000 0.000000 +290 2.890000 0.000000 0.000000 +291 2.900000 0.000000 0.000000 +292 2.910000 0.000000 0.000000 +293 2.920000 0.000000 0.000000 +294 2.930000 0.000000 0.000000 +295 2.940000 0.000000 0.000000 +296 2.950000 0.000000 0.000000 +297 2.960000 0.000000 0.000000 +298 2.970000 0.000000 0.000000 +299 2.980000 0.000000 0.000000 +300 2.990000 0.000000 0.000000 +301 3.000000 0.000000 0.000000 + + +TAIL_TAIL_Wc_0.9 +N 301 R 0.000001 3.000000 + +1 0.000001 0.000000 0.000000 +2 0.010000 3999999999995999707725824.000000 4799999999997598070678224896.000000 +3 0.020000 976562499937500004352.000000 585937499981249777762304.000000 +4 0.030000 7526705687148720128.000000 3010682275956881096704.000000 +5 0.040000 238418578125000000.000000 71525573583984353280.000000 +6 0.050000 16383999744000000.000000 3932159969279997440.000000 +7 0.060000 1837574546257248.500000 367514917824838144.000000 +8 0.070000 288990429236596.312500 49541219354796968.000000 +9 0.080000 58207645654678.343750 8731147992610928.000000 +10 0.090000 14162817119182.900391 1888376117671434.750000 +11 0.100000 3999996000000.000000 479999760000000.500000 +12 0.110000 1274521012945.708496 139038779115662.093750 +13 0.120000 448625279546.553955 44862594934250.781250 +14 0.130000 171687100967.122345 15848078337188.726562 +15 0.140000 70553781072.250778 6047489716531.549805 +16 0.150000 30829035351.054977 2466336874723.629883 +17 0.160000 14210616296.622902 1065805162943.433594 +18 0.170000 6865346349.879549 484618532348.129211 +19 0.180000 3457603256.036191 230510803894.961182 +20 0.190000 1807158928.004511 114139038296.617722 +21 0.200000 976499999.999998 58591874999.999847 +22 0.210000 543739902.726732 31072184111.878654 +23 0.220000 311127628.299641 16971560078.724821 +24 0.230000 182499493.379421 9522417580.006592 +25 0.240000 109507052.064558 5475875881.316449 +26 0.250000 67092480.000000 3220832255.999991 +27 0.260000 41903049.941880 1934285732.237306 +28 0.270000 26639528.522336 1184208483.196407 +29 0.280000 17216873.260370 738043867.822060 +30 0.290000 11298625.429098 467668459.533016 +31 0.300000 7521218.724186 300958488.336427 +32 0.310000 5073808.319410 196492716.046068 +33 0.320000 3465721.661655 130034411.505164 +34 0.330000 2395143.138865 87152427.788625 +35 0.340000 1673561.082347 59112555.692539 +36 0.350000 1181528.973318 40546867.041137 +37 0.360000 842332.557402 28108378.157278 +38 0.370000 606071.119890 19681641.931764 +39 0.380000 439893.177446 13912339.662092 +40 0.390000 321924.360071 9922853.684245 +41 0.400000 237442.016602 7137908.935547 +42 0.410000 176435.450812 5176287.635225 +43 0.420000 132031.660059 3782743.515595 +44 0.430000 99468.250044 2784687.558254 +45 0.440000 75416.262744 2064324.130372 +46 0.450000 57529.220585 1540535.337797 +47 0.460000 44139.942254 1156983.644674 +48 0.470000 34054.846645 874222.695500 +49 0.480000 26413.181465 664417.646696 +50 0.490000 20589.881497 507780.654581 +51 0.500000 16128.000000 390144.000000 +52 0.510000 12691.351515 301294.396513 +53 0.520000 10031.077542 233820.872331 +54 0.530000 7961.876154 182311.949517 +55 0.540000 6344.988397 142792.224654 +56 0.550000 5075.941991 112324.247003 +57 0.560000 4075.667156 88725.341557 +58 0.570000 3284.018178 70364.910655 +59 0.580000 2655.022026 56018.454503 +60 0.590000 2153.374227 44761.819610 +61 0.600000 1751.840750 35894.153820 +62 0.610000 1429.321668 28881.467437 +63 0.620000 1169.400839 23315.070198 +64 0.630000 959.254371 18880.806522 +65 0.640000 788.825286 15336.170940 +66 0.650000 650.196650 12493.203783 +67 0.660000 537.113366 10205.647944 +68 0.670000 444.615844 8359.261950 +69 0.680000 368.758212 6864.481939 +70 0.690000 306.390715 5650.839586 +71 0.700000 254.991024 4662.698464 +72 0.710000 212.532986 3855.984565 +73 0.720000 177.384120 3195.669530 +74 0.730000 148.225307 2653.826099 +75 0.740000 123.987627 2208.120224 +76 0.750000 103.802544 1840.637693 +77 0.760000 86.962472 1536.967937 +78 0.770000 72.889471 1285.486272 +79 0.780000 61.110325 1076.789779 +80 0.790000 51.236635 903.252555 +81 0.800000 42.948872 758.673996 +82 0.810000 35.983576 637.999825 +83 0.820000 30.123043 537.100183 +84 0.830000 25.186999 452.592612 +85 0.840000 21.025860 381.700456 +86 0.850000 17.515264 322.139305 +87 0.860000 14.551619 272.025666 +88 0.870000 12.048476 229.803356 +89 0.880000 9.933566 194.184004 +90 0.890000 8.146368 164.098852 +91 0.900000 6.636119 138.659624 +92 0.910000 5.360169 117.126674 +93 0.920000 4.282632 98.883003 +94 0.930000 3.373272 83.413022 +95 0.940000 2.606573 70.285155 +96 0.950000 1.960975 59.137553 +97 0.960000 1.418239 49.666347 +98 0.970000 0.962916 41.615965 +99 0.980000 0.581905 34.771137 +100 0.990000 0.264083 28.950277 +101 1.000000 -0.000000 24.000000 +102 1.010000 -0.218384 19.790571 +103 1.020000 -0.397913 16.212117 +104 1.030000 -0.544418 13.171468 +105 1.040000 -0.662870 10.589529 +106 1.050000 -0.757512 8.399073 +107 1.060000 -0.831965 6.542902 +108 1.070000 -0.889321 4.972300 +109 1.080000 -0.932223 3.645731 +110 1.090000 -0.962930 2.527753 +111 1.100000 -0.983372 1.588095 +112 1.110000 -0.995200 0.800882 +113 1.120000 -0.999824 0.143980 +114 1.130000 -0.999827 -0.045919 +115 1.140000 -0.999063 -0.106781 +116 1.150000 -0.997692 -0.167513 +117 1.160000 -0.995714 -0.228040 +118 1.170000 -0.993132 -0.288290 +119 1.180000 -0.989949 -0.348189 +120 1.190000 -0.986169 -0.407664 +121 1.200000 -0.981798 -0.466642 +122 1.210000 -0.976839 -0.525051 +123 1.220000 -0.971299 -0.582821 +124 1.230000 -0.965185 -0.639880 +125 1.240000 -0.958504 -0.696160 +126 1.250000 -0.951264 -0.751592 +127 1.260000 -0.943475 -0.806108 +128 1.270000 -0.935145 -0.859642 +129 1.280000 -0.926285 -0.912129 +130 1.290000 -0.916906 -0.963505 +131 1.300000 -0.907019 -1.013706 +132 1.310000 -0.896636 -1.062673 +133 1.320000 -0.885770 -1.110344 +134 1.330000 -0.874434 -1.156663 +135 1.340000 -0.862642 -1.201573 +136 1.350000 -0.850407 -1.245019 +137 1.360000 -0.837746 -1.286948 +138 1.370000 -0.824674 -1.327309 +139 1.380000 -0.811205 -1.366053 +140 1.390000 -0.797358 -1.403132 +141 1.400000 -0.783149 -1.438502 +142 1.410000 -0.768594 -1.472120 +143 1.420000 -0.753712 -1.503944 +144 1.430000 -0.738521 -1.533936 +145 1.440000 -0.723040 -1.562058 +146 1.450000 -0.707286 -1.588278 +147 1.460000 -0.691281 -1.612562 +148 1.470000 -0.675042 -1.634882 +149 1.480000 -0.658590 -1.655210 +150 1.490000 -0.641944 -1.673522 +151 1.500000 -0.625126 -1.689794 +152 1.510000 -0.608155 -1.704008 +153 1.520000 -0.591053 -1.716146 +154 1.530000 -0.573839 -1.726192 +155 1.540000 -0.556536 -1.734136 +156 1.550000 -0.539164 -1.739967 +157 1.560000 -0.521744 -1.743678 +158 1.570000 -0.504297 -1.745265 +159 1.580000 -0.486845 -1.744725 +160 1.590000 -0.469410 -1.742060 +161 1.600000 -0.452011 -1.737272 +162 1.610000 -0.434671 -1.730368 +163 1.620000 -0.417411 -1.721355 +164 1.630000 -0.400251 -1.710245 +165 1.640000 -0.383213 -1.697052 +166 1.650000 -0.366317 -1.681791 +167 1.660000 -0.349584 -1.664481 +168 1.670000 -0.333034 -1.645143 +169 1.680000 -0.316688 -1.623800 +170 1.690000 -0.300565 -1.600480 +171 1.700000 -0.284685 -1.575209 +172 1.710000 -0.269067 -1.548019 +173 1.720000 -0.253731 -1.518943 +174 1.730000 -0.238694 -1.488017 +175 1.740000 -0.223976 -1.455278 +176 1.750000 -0.209595 -1.420765 +177 1.760000 -0.195567 -1.384522 +178 1.770000 -0.181910 -1.346592 +179 1.780000 -0.168640 -1.307021 +180 1.790000 -0.155775 -1.265858 +181 1.800000 -0.143328 -1.223153 +182 1.810000 -0.131317 -1.178957 +183 1.820000 -0.119754 -1.133325 +184 1.830000 -0.108655 -1.086312 +185 1.840000 -0.098032 -1.037976 +186 1.850000 -0.087899 -0.988375 +187 1.860000 -0.078269 -0.937570 +188 1.870000 -0.069152 -0.885622 +189 1.880000 -0.060560 -0.832596 +190 1.890000 -0.052503 -0.778555 +191 1.900000 -0.044992 -0.723566 +192 1.910000 -0.038035 -0.667695 +193 1.920000 -0.031641 -0.611011 +194 1.930000 -0.025817 -0.553582 +195 1.940000 -0.020571 -0.495479 +196 1.950000 -0.015910 -0.436772 +197 1.960000 -0.011838 -0.377533 +198 1.970000 -0.008360 -0.317834 +199 1.980000 -0.005482 -0.257747 +200 1.990000 -0.003207 -0.197347 +201 2.000000 -0.001536 -0.136706 +202 2.010000 -0.000473 -0.075899 +203 2.020000 -0.000018 -0.014999 +204 2.030000 0.000000 0.000000 +205 2.040000 0.000000 0.000000 +206 2.050000 0.000000 0.000000 +207 2.060000 0.000000 0.000000 +208 2.070000 0.000000 0.000000 +209 2.080000 0.000000 0.000000 +210 2.090000 0.000000 0.000000 +211 2.100000 0.000000 0.000000 +212 2.110000 0.000000 0.000000 +213 2.120000 0.000000 0.000000 +214 2.130000 0.000000 0.000000 +215 2.140000 0.000000 0.000000 +216 2.150000 0.000000 0.000000 +217 2.160000 0.000000 0.000000 +218 2.170000 0.000000 0.000000 +219 2.180000 0.000000 0.000000 +220 2.190000 0.000000 0.000000 +221 2.200000 0.000000 0.000000 +222 2.210000 0.000000 0.000000 +223 2.220000 0.000000 0.000000 +224 2.230000 0.000000 0.000000 +225 2.240000 0.000000 0.000000 +226 2.250000 0.000000 0.000000 +227 2.260000 0.000000 0.000000 +228 2.270000 0.000000 0.000000 +229 2.280000 0.000000 0.000000 +230 2.290000 0.000000 0.000000 +231 2.300000 0.000000 0.000000 +232 2.310000 0.000000 0.000000 +233 2.320000 0.000000 0.000000 +234 2.330000 0.000000 0.000000 +235 2.340000 0.000000 0.000000 +236 2.350000 0.000000 0.000000 +237 2.360000 0.000000 0.000000 +238 2.370000 0.000000 0.000000 +239 2.380000 0.000000 0.000000 +240 2.390000 0.000000 0.000000 +241 2.400000 0.000000 0.000000 +242 2.410000 0.000000 0.000000 +243 2.420000 0.000000 0.000000 +244 2.430000 0.000000 0.000000 +245 2.440000 0.000000 0.000000 +246 2.450000 0.000000 0.000000 +247 2.460000 0.000000 0.000000 +248 2.470000 0.000000 0.000000 +249 2.480000 0.000000 0.000000 +250 2.490000 0.000000 0.000000 +251 2.500000 0.000000 0.000000 +252 2.510000 0.000000 0.000000 +253 2.520000 0.000000 0.000000 +254 2.530000 0.000000 0.000000 +255 2.540000 0.000000 0.000000 +256 2.550000 0.000000 0.000000 +257 2.560000 0.000000 0.000000 +258 2.570000 0.000000 0.000000 +259 2.580000 0.000000 0.000000 +260 2.590000 0.000000 0.000000 +261 2.600000 0.000000 0.000000 +262 2.610000 0.000000 0.000000 +263 2.620000 0.000000 0.000000 +264 2.630000 0.000000 0.000000 +265 2.640000 0.000000 0.000000 +266 2.650000 0.000000 0.000000 +267 2.660000 0.000000 0.000000 +268 2.670000 0.000000 0.000000 +269 2.680000 0.000000 0.000000 +270 2.690000 0.000000 0.000000 +271 2.700000 0.000000 0.000000 +272 2.710000 0.000000 0.000000 +273 2.720000 0.000000 0.000000 +274 2.730000 0.000000 0.000000 +275 2.740000 0.000000 0.000000 +276 2.750000 0.000000 0.000000 +277 2.760000 0.000000 0.000000 +278 2.770000 0.000000 0.000000 +279 2.780000 0.000000 0.000000 +280 2.790000 0.000000 0.000000 +281 2.800000 0.000000 0.000000 +282 2.810000 0.000000 0.000000 +283 2.820000 0.000000 0.000000 +284 2.830000 0.000000 0.000000 +285 2.840000 0.000000 0.000000 +286 2.850000 0.000000 0.000000 +287 2.860000 0.000000 0.000000 +288 2.870000 0.000000 0.000000 +289 2.880000 0.000000 0.000000 +290 2.890000 0.000000 0.000000 +291 2.900000 0.000000 0.000000 +292 2.910000 0.000000 0.000000 +293 2.920000 0.000000 0.000000 +294 2.930000 0.000000 0.000000 +295 2.940000 0.000000 0.000000 +296 2.950000 0.000000 0.000000 +297 2.960000 0.000000 0.000000 +298 2.970000 0.000000 0.000000 +299 2.980000 0.000000 0.000000 +300 2.990000 0.000000 0.000000 +301 3.000000 0.000000 0.000000 + + +TAIL_TAIL_Wc_1.0 +N 301 R 0.000001 3.000000 + +1 0.000001 0.000000 0.000000 +2 0.010000 3999999999995999707725824.000000 4799999999997598070678224896.000000 +3 0.020000 976562499937500004352.000000 585937499981249777762304.000000 +4 0.030000 7526705687148720128.000000 3010682275956881096704.000000 +5 0.040000 238418578125000000.000000 71525573583984353280.000000 +6 0.050000 16383999744000000.000000 3932159969279997440.000000 +7 0.060000 1837574546257248.500000 367514917824838144.000000 +8 0.070000 288990429236596.312500 49541219354796968.000000 +9 0.080000 58207645654678.343750 8731147992610928.000000 +10 0.090000 14162817119182.900391 1888376117671434.750000 +11 0.100000 3999996000000.000000 479999760000000.500000 +12 0.110000 1274521012945.708496 139038779115662.093750 +13 0.120000 448625279546.553955 44862594934250.781250 +14 0.130000 171687100967.122345 15848078337188.726562 +15 0.140000 70553781072.250778 6047489716531.549805 +16 0.150000 30829035351.054977 2466336874723.629883 +17 0.160000 14210616296.622902 1065805162943.433594 +18 0.170000 6865346349.879549 484618532348.129211 +19 0.180000 3457603256.036191 230510803894.961182 +20 0.190000 1807158928.004511 114139038296.617722 +21 0.200000 976499999.999998 58591874999.999847 +22 0.210000 543739902.726732 31072184111.878654 +23 0.220000 311127628.299641 16971560078.724821 +24 0.230000 182499493.379421 9522417580.006592 +25 0.240000 109507052.064558 5475875881.316449 +26 0.250000 67092480.000000 3220832255.999991 +27 0.260000 41903049.941880 1934285732.237306 +28 0.270000 26639528.522336 1184208483.196407 +29 0.280000 17216873.260370 738043867.822060 +30 0.290000 11298625.429098 467668459.533016 +31 0.300000 7521218.724186 300958488.336427 +32 0.310000 5073808.319410 196492716.046068 +33 0.320000 3465721.661655 130034411.505164 +34 0.330000 2395143.138865 87152427.788625 +35 0.340000 1673561.082347 59112555.692539 +36 0.350000 1181528.973318 40546867.041137 +37 0.360000 842332.557402 28108378.157278 +38 0.370000 606071.119890 19681641.931764 +39 0.380000 439893.177446 13912339.662092 +40 0.390000 321924.360071 9922853.684245 +41 0.400000 237442.016602 7137908.935547 +42 0.410000 176435.450812 5176287.635225 +43 0.420000 132031.660059 3782743.515595 +44 0.430000 99468.250044 2784687.558254 +45 0.440000 75416.262744 2064324.130372 +46 0.450000 57529.220585 1540535.337797 +47 0.460000 44139.942254 1156983.644674 +48 0.470000 34054.846645 874222.695500 +49 0.480000 26413.181465 664417.646696 +50 0.490000 20589.881497 507780.654581 +51 0.500000 16128.000000 390144.000000 +52 0.510000 12691.351515 301294.396513 +53 0.520000 10031.077542 233820.872331 +54 0.530000 7961.876154 182311.949517 +55 0.540000 6344.988397 142792.224654 +56 0.550000 5075.941991 112324.247003 +57 0.560000 4075.667156 88725.341557 +58 0.570000 3284.018178 70364.910655 +59 0.580000 2655.022026 56018.454503 +60 0.590000 2153.374227 44761.819610 +61 0.600000 1751.840750 35894.153820 +62 0.610000 1429.321668 28881.467437 +63 0.620000 1169.400839 23315.070198 +64 0.630000 959.254371 18880.806522 +65 0.640000 788.825286 15336.170940 +66 0.650000 650.196650 12493.203783 +67 0.660000 537.113366 10205.647944 +68 0.670000 444.615844 8359.261950 +69 0.680000 368.758212 6864.481939 +70 0.690000 306.390715 5650.839586 +71 0.700000 254.991024 4662.698464 +72 0.710000 212.532986 3855.984565 +73 0.720000 177.384120 3195.669530 +74 0.730000 148.225307 2653.826099 +75 0.740000 123.987627 2208.120224 +76 0.750000 103.802544 1840.637693 +77 0.760000 86.962472 1536.967937 +78 0.770000 72.889471 1285.486272 +79 0.780000 61.110325 1076.789779 +80 0.790000 51.236635 903.252555 +81 0.800000 42.948872 758.673996 +82 0.810000 35.983576 637.999825 +83 0.820000 30.123043 537.100183 +84 0.830000 25.186999 452.592612 +85 0.840000 21.025860 381.700456 +86 0.850000 17.515264 322.139305 +87 0.860000 14.551619 272.025666 +88 0.870000 12.048476 229.803356 +89 0.880000 9.933566 194.184004 +90 0.890000 8.146368 164.098852 +91 0.900000 6.636119 138.659624 +92 0.910000 5.360169 117.126674 +93 0.920000 4.282632 98.883003 +94 0.930000 3.373272 83.413022 +95 0.940000 2.606573 70.285155 +96 0.950000 1.960975 59.137553 +97 0.960000 1.418239 49.666347 +98 0.970000 0.962916 41.615965 +99 0.980000 0.581905 34.771137 +100 0.990000 0.264083 28.950277 +101 1.000000 -0.000000 24.000000 +102 1.010000 -0.218384 19.790571 +103 1.020000 -0.397913 16.212117 +104 1.030000 -0.544418 13.171468 +105 1.040000 -0.662870 10.589529 +106 1.050000 -0.757512 8.399073 +107 1.060000 -0.831965 6.542902 +108 1.070000 -0.889321 4.972300 +109 1.080000 -0.932223 3.645731 +110 1.090000 -0.962930 2.527753 +111 1.100000 -0.983372 1.588095 +112 1.110000 -0.995200 0.800882 +113 1.120000 -0.999824 0.143980 +114 1.130000 -0.999860 -0.037195 +115 1.140000 -0.999241 -0.086503 +116 1.150000 -0.998130 -0.135725 +117 1.160000 -0.996527 -0.184813 +118 1.170000 -0.994434 -0.233719 +119 1.180000 -0.991854 -0.282395 +120 1.190000 -0.988787 -0.330791 +121 1.200000 -0.985239 -0.378862 +122 1.210000 -0.981211 -0.426558 +123 1.220000 -0.976709 -0.473833 +124 1.230000 -0.971736 -0.520641 +125 1.240000 -0.966298 -0.566935 +126 1.250000 -0.960399 -0.612669 +127 1.260000 -0.954047 -0.657799 +128 1.270000 -0.947246 -0.702280 +129 1.280000 -0.940003 -0.746067 +130 1.290000 -0.932327 -0.789119 +131 1.300000 -0.924224 -0.831391 +132 1.310000 -0.915702 -0.872843 +133 1.320000 -0.906770 -0.913434 +134 1.330000 -0.897436 -0.953123 +135 1.340000 -0.887710 -0.991872 +136 1.350000 -0.877602 -1.029642 +137 1.360000 -0.867121 -1.066395 +138 1.370000 -0.856277 -1.102096 +139 1.380000 -0.845082 -1.136710 +140 1.390000 -0.833547 -1.170202 +141 1.400000 -0.821682 -1.202539 +142 1.410000 -0.809500 -1.233689 +143 1.420000 -0.797013 -1.263622 +144 1.430000 -0.784232 -1.292307 +145 1.440000 -0.771171 -1.319717 +146 1.450000 -0.757842 -1.345825 +147 1.460000 -0.744259 -1.370605 +148 1.470000 -0.730434 -1.394032 +149 1.480000 -0.716383 -1.416083 +150 1.490000 -0.702117 -1.436737 +151 1.500000 -0.687653 -1.455973 +152 1.510000 -0.673003 -1.473772 +153 1.520000 -0.658182 -1.490117 +154 1.530000 -0.643205 -1.504991 +155 1.540000 -0.628087 -1.518380 +156 1.550000 -0.612843 -1.530270 +157 1.560000 -0.597487 -1.540650 +158 1.570000 -0.582035 -1.549510 +159 1.580000 -0.566502 -1.556841 +160 1.590000 -0.550903 -1.562635 +161 1.600000 -0.535254 -1.566887 +162 1.610000 -0.519570 -1.569593 +163 1.620000 -0.503867 -1.570749 +164 1.630000 -0.488161 -1.570356 +165 1.640000 -0.472465 -1.568413 +166 1.650000 -0.456797 -1.564922 +167 1.660000 -0.441172 -1.559886 +168 1.670000 -0.425605 -1.553311 +169 1.680000 -0.410111 -1.545204 +170 1.690000 -0.394706 -1.535571 +171 1.700000 -0.379405 -1.524423 +172 1.710000 -0.364222 -1.511770 +173 1.720000 -0.349174 -1.497626 +174 1.730000 -0.334275 -1.482003 +175 1.740000 -0.319539 -1.464918 +176 1.750000 -0.304981 -1.446388 +177 1.760000 -0.290616 -1.426430 +178 1.770000 -0.276457 -1.405064 +179 1.780000 -0.262519 -1.382311 +180 1.790000 -0.248816 -1.358195 +181 1.800000 -0.235360 -1.332738 +182 1.810000 -0.222165 -1.305965 +183 1.820000 -0.209245 -1.277904 +184 1.830000 -0.196611 -1.248582 +185 1.840000 -0.184277 -1.218028 +186 1.850000 -0.172255 -1.186271 +187 1.860000 -0.160556 -1.153344 +188 1.870000 -0.149192 -1.119279 +189 1.880000 -0.138174 -1.084109 +190 1.890000 -0.127513 -1.047869 +191 1.900000 -0.117220 -1.010595 +192 1.910000 -0.107305 -0.972323 +193 1.920000 -0.097777 -0.933093 +194 1.930000 -0.088646 -0.892941 +195 1.940000 -0.079921 -0.851908 +196 1.950000 -0.071610 -0.810034 +197 1.960000 -0.063723 -0.767361 +198 1.970000 -0.056266 -0.723931 +199 1.980000 -0.049247 -0.679786 +200 1.990000 -0.042672 -0.634970 +201 2.000000 -0.036549 -0.589528 +202 2.010000 -0.030884 -0.543504 +203 2.020000 -0.025681 -0.496943 +204 2.030000 -0.020946 -0.449892 +205 2.040000 -0.016685 -0.402397 +206 2.050000 -0.012900 -0.354505 +207 2.060000 -0.009596 -0.306263 +208 2.070000 -0.006776 -0.257719 +209 2.080000 -0.004442 -0.208921 +210 2.090000 -0.002598 -0.159916 +211 2.100000 -0.001244 -0.110754 +212 2.110000 -0.000383 -0.061482 +213 2.120000 -0.000015 -0.012150 +214 2.130000 0.000000 0.000000 +215 2.140000 0.000000 0.000000 +216 2.150000 0.000000 0.000000 +217 2.160000 0.000000 0.000000 +218 2.170000 0.000000 0.000000 +219 2.180000 0.000000 0.000000 +220 2.190000 0.000000 0.000000 +221 2.200000 0.000000 0.000000 +222 2.210000 0.000000 0.000000 +223 2.220000 0.000000 0.000000 +224 2.230000 0.000000 0.000000 +225 2.240000 0.000000 0.000000 +226 2.250000 0.000000 0.000000 +227 2.260000 0.000000 0.000000 +228 2.270000 0.000000 0.000000 +229 2.280000 0.000000 0.000000 +230 2.290000 0.000000 0.000000 +231 2.300000 0.000000 0.000000 +232 2.310000 0.000000 0.000000 +233 2.320000 0.000000 0.000000 +234 2.330000 0.000000 0.000000 +235 2.340000 0.000000 0.000000 +236 2.350000 0.000000 0.000000 +237 2.360000 0.000000 0.000000 +238 2.370000 0.000000 0.000000 +239 2.380000 0.000000 0.000000 +240 2.390000 0.000000 0.000000 +241 2.400000 0.000000 0.000000 +242 2.410000 0.000000 0.000000 +243 2.420000 0.000000 0.000000 +244 2.430000 0.000000 0.000000 +245 2.440000 0.000000 0.000000 +246 2.450000 0.000000 0.000000 +247 2.460000 0.000000 0.000000 +248 2.470000 0.000000 0.000000 +249 2.480000 0.000000 0.000000 +250 2.490000 0.000000 0.000000 +251 2.500000 0.000000 0.000000 +252 2.510000 0.000000 0.000000 +253 2.520000 0.000000 0.000000 +254 2.530000 0.000000 0.000000 +255 2.540000 0.000000 0.000000 +256 2.550000 0.000000 0.000000 +257 2.560000 0.000000 0.000000 +258 2.570000 0.000000 0.000000 +259 2.580000 0.000000 0.000000 +260 2.590000 0.000000 0.000000 +261 2.600000 0.000000 0.000000 +262 2.610000 0.000000 0.000000 +263 2.620000 0.000000 0.000000 +264 2.630000 0.000000 0.000000 +265 2.640000 0.000000 0.000000 +266 2.650000 0.000000 0.000000 +267 2.660000 0.000000 0.000000 +268 2.670000 0.000000 0.000000 +269 2.680000 0.000000 0.000000 +270 2.690000 0.000000 0.000000 +271 2.700000 0.000000 0.000000 +272 2.710000 0.000000 0.000000 +273 2.720000 0.000000 0.000000 +274 2.730000 0.000000 0.000000 +275 2.740000 0.000000 0.000000 +276 2.750000 0.000000 0.000000 +277 2.760000 0.000000 0.000000 +278 2.770000 0.000000 0.000000 +279 2.780000 0.000000 0.000000 +280 2.790000 0.000000 0.000000 +281 2.800000 0.000000 0.000000 +282 2.810000 0.000000 0.000000 +283 2.820000 0.000000 0.000000 +284 2.830000 0.000000 0.000000 +285 2.840000 0.000000 0.000000 +286 2.850000 0.000000 0.000000 +287 2.860000 0.000000 0.000000 +288 2.870000 0.000000 0.000000 +289 2.880000 0.000000 0.000000 +290 2.890000 0.000000 0.000000 +291 2.900000 0.000000 0.000000 +292 2.910000 0.000000 0.000000 +293 2.920000 0.000000 0.000000 +294 2.930000 0.000000 0.000000 +295 2.940000 0.000000 0.000000 +296 2.950000 0.000000 0.000000 +297 2.960000 0.000000 0.000000 +298 2.970000 0.000000 0.000000 +299 2.980000 0.000000 0.000000 +300 2.990000 0.000000 0.000000 +301 3.000000 0.000000 0.000000 + + +TAIL_TAIL_Wc_1.1 +N 301 R 0.000001 3.000000 + +1 0.000001 0.000000 0.000000 +2 0.010000 3999999999995999707725824.000000 4799999999997598070678224896.000000 +3 0.020000 976562499937500004352.000000 585937499981249777762304.000000 +4 0.030000 7526705687148720128.000000 3010682275956881096704.000000 +5 0.040000 238418578125000000.000000 71525573583984353280.000000 +6 0.050000 16383999744000000.000000 3932159969279997440.000000 +7 0.060000 1837574546257248.500000 367514917824838144.000000 +8 0.070000 288990429236596.312500 49541219354796968.000000 +9 0.080000 58207645654678.343750 8731147992610928.000000 +10 0.090000 14162817119182.900391 1888376117671434.750000 +11 0.100000 3999996000000.000000 479999760000000.500000 +12 0.110000 1274521012945.708496 139038779115662.093750 +13 0.120000 448625279546.553955 44862594934250.781250 +14 0.130000 171687100967.122345 15848078337188.726562 +15 0.140000 70553781072.250778 6047489716531.549805 +16 0.150000 30829035351.054977 2466336874723.629883 +17 0.160000 14210616296.622902 1065805162943.433594 +18 0.170000 6865346349.879549 484618532348.129211 +19 0.180000 3457603256.036191 230510803894.961182 +20 0.190000 1807158928.004511 114139038296.617722 +21 0.200000 976499999.999998 58591874999.999847 +22 0.210000 543739902.726732 31072184111.878654 +23 0.220000 311127628.299641 16971560078.724821 +24 0.230000 182499493.379421 9522417580.006592 +25 0.240000 109507052.064558 5475875881.316449 +26 0.250000 67092480.000000 3220832255.999991 +27 0.260000 41903049.941880 1934285732.237306 +28 0.270000 26639528.522336 1184208483.196407 +29 0.280000 17216873.260370 738043867.822060 +30 0.290000 11298625.429098 467668459.533016 +31 0.300000 7521218.724186 300958488.336427 +32 0.310000 5073808.319410 196492716.046068 +33 0.320000 3465721.661655 130034411.505164 +34 0.330000 2395143.138865 87152427.788625 +35 0.340000 1673561.082347 59112555.692539 +36 0.350000 1181528.973318 40546867.041137 +37 0.360000 842332.557402 28108378.157278 +38 0.370000 606071.119890 19681641.931764 +39 0.380000 439893.177446 13912339.662092 +40 0.390000 321924.360071 9922853.684245 +41 0.400000 237442.016602 7137908.935547 +42 0.410000 176435.450812 5176287.635225 +43 0.420000 132031.660059 3782743.515595 +44 0.430000 99468.250044 2784687.558254 +45 0.440000 75416.262744 2064324.130372 +46 0.450000 57529.220585 1540535.337797 +47 0.460000 44139.942254 1156983.644674 +48 0.470000 34054.846645 874222.695500 +49 0.480000 26413.181465 664417.646696 +50 0.490000 20589.881497 507780.654581 +51 0.500000 16128.000000 390144.000000 +52 0.510000 12691.351515 301294.396513 +53 0.520000 10031.077542 233820.872331 +54 0.530000 7961.876154 182311.949517 +55 0.540000 6344.988397 142792.224654 +56 0.550000 5075.941991 112324.247003 +57 0.560000 4075.667156 88725.341557 +58 0.570000 3284.018178 70364.910655 +59 0.580000 2655.022026 56018.454503 +60 0.590000 2153.374227 44761.819610 +61 0.600000 1751.840750 35894.153820 +62 0.610000 1429.321668 28881.467437 +63 0.620000 1169.400839 23315.070198 +64 0.630000 959.254371 18880.806522 +65 0.640000 788.825286 15336.170940 +66 0.650000 650.196650 12493.203783 +67 0.660000 537.113366 10205.647944 +68 0.670000 444.615844 8359.261950 +69 0.680000 368.758212 6864.481939 +70 0.690000 306.390715 5650.839586 +71 0.700000 254.991024 4662.698464 +72 0.710000 212.532986 3855.984565 +73 0.720000 177.384120 3195.669530 +74 0.730000 148.225307 2653.826099 +75 0.740000 123.987627 2208.120224 +76 0.750000 103.802544 1840.637693 +77 0.760000 86.962472 1536.967937 +78 0.770000 72.889471 1285.486272 +79 0.780000 61.110325 1076.789779 +80 0.790000 51.236635 903.252555 +81 0.800000 42.948872 758.673996 +82 0.810000 35.983576 637.999825 +83 0.820000 30.123043 537.100183 +84 0.830000 25.186999 452.592612 +85 0.840000 21.025860 381.700456 +86 0.850000 17.515264 322.139305 +87 0.860000 14.551619 272.025666 +88 0.870000 12.048476 229.803356 +89 0.880000 9.933566 194.184004 +90 0.890000 8.146368 164.098852 +91 0.900000 6.636119 138.659624 +92 0.910000 5.360169 117.126674 +93 0.920000 4.282632 98.883003 +94 0.930000 3.373272 83.413022 +95 0.940000 2.606573 70.285155 +96 0.950000 1.960975 59.137553 +97 0.960000 1.418239 49.666347 +98 0.970000 0.962916 41.615965 +99 0.980000 0.581905 34.771137 +100 0.990000 0.264083 28.950277 +101 1.000000 -0.000000 24.000000 +102 1.010000 -0.218384 19.790571 +103 1.020000 -0.397913 16.212117 +104 1.030000 -0.544418 13.171468 +105 1.040000 -0.662870 10.589529 +106 1.050000 -0.757512 8.399073 +107 1.060000 -0.831965 6.542902 +108 1.070000 -0.889321 4.972300 +109 1.080000 -0.932223 3.645731 +110 1.090000 -0.962930 2.527753 +111 1.100000 -0.983372 1.588095 +112 1.110000 -0.995200 0.800882 +113 1.120000 -0.999824 0.143980 +114 1.130000 -0.999884 -0.030740 +115 1.140000 -0.999373 -0.071496 +116 1.150000 -0.998454 -0.112194 +117 1.160000 -0.997129 -0.152800 +118 1.170000 -0.995399 -0.193281 +119 1.180000 -0.993264 -0.233605 +120 1.190000 -0.990727 -0.273738 +121 1.200000 -0.987790 -0.313649 +122 1.210000 -0.984455 -0.353303 +123 1.220000 -0.980725 -0.392669 +124 1.230000 -0.976603 -0.431715 +125 1.240000 -0.972092 -0.470408 +126 1.250000 -0.967196 -0.508719 +127 1.260000 -0.961919 -0.546614 +128 1.270000 -0.956265 -0.584063 +129 1.280000 -0.950239 -0.621036 +130 1.290000 -0.943846 -0.657502 +131 1.300000 -0.937091 -0.693432 +132 1.310000 -0.929979 -0.728797 +133 1.320000 -0.922517 -0.763567 +134 1.330000 -0.914710 -0.797715 +135 1.340000 -0.906565 -0.831211 +136 1.350000 -0.898088 -0.864030 +137 1.360000 -0.889287 -0.896144 +138 1.370000 -0.880168 -0.927527 +139 1.380000 -0.870739 -0.958154 +140 1.390000 -0.861007 -0.987999 +141 1.400000 -0.850981 -1.017039 +142 1.410000 -0.840669 -1.045248 +143 1.420000 -0.830079 -1.072606 +144 1.430000 -0.819220 -1.099088 +145 1.440000 -0.808101 -1.124674 +146 1.450000 -0.796730 -1.149343 +147 1.460000 -0.785117 -1.173074 +148 1.470000 -0.773271 -1.195849 +149 1.480000 -0.761203 -1.217648 +150 1.490000 -0.748922 -1.238454 +151 1.500000 -0.736437 -1.258250 +152 1.510000 -0.723760 -1.277020 +153 1.520000 -0.710900 -1.294748 +154 1.530000 -0.697869 -1.311420 +155 1.540000 -0.684676 -1.327023 +156 1.550000 -0.671332 -1.341543 +157 1.560000 -0.657848 -1.354969 +158 1.570000 -0.644236 -1.367290 +159 1.580000 -0.630506 -1.378496 +160 1.590000 -0.616670 -1.388577 +161 1.600000 -0.602739 -1.397526 +162 1.610000 -0.588723 -1.405335 +163 1.620000 -0.574636 -1.411998 +164 1.630000 -0.560487 -1.417509 +165 1.640000 -0.546289 -1.421864 +166 1.650000 -0.532054 -1.425059 +167 1.660000 -0.517792 -1.427092 +168 1.670000 -0.503516 -1.427961 +169 1.680000 -0.489237 -1.427666 +170 1.690000 -0.474966 -1.426206 +171 1.700000 -0.460716 -1.423582 +172 1.710000 -0.446499 -1.419798 +173 1.720000 -0.432324 -1.414856 +174 1.730000 -0.418205 -1.408759 +175 1.740000 -0.404153 -1.401514 +176 1.750000 -0.390179 -1.393126 +177 1.760000 -0.376294 -1.383601 +178 1.770000 -0.362511 -1.372948 +179 1.780000 -0.348839 -1.361175 +180 1.790000 -0.335291 -1.348292 +181 1.800000 -0.321877 -1.334309 +182 1.810000 -0.308608 -1.319238 +183 1.820000 -0.295496 -1.303091 +184 1.830000 -0.282550 -1.285881 +185 1.840000 -0.269782 -1.267622 +186 1.850000 -0.257201 -1.248329 +187 1.860000 -0.244818 -1.228018 +188 1.870000 -0.232644 -1.206706 +189 1.880000 -0.220688 -1.184410 +190 1.890000 -0.208959 -1.161147 +191 1.900000 -0.197468 -1.136937 +192 1.910000 -0.186223 -1.111800 +193 1.920000 -0.175235 -1.085757 +194 1.930000 -0.164511 -1.058827 +195 1.940000 -0.154061 -1.031034 +196 1.950000 -0.143893 -1.002401 +197 1.960000 -0.134016 -0.972949 +198 1.970000 -0.124437 -0.942704 +199 1.980000 -0.115164 -0.911690 +200 1.990000 -0.106206 -0.879933 +201 2.000000 -0.097568 -0.847458 +202 2.010000 -0.089259 -0.814292 +203 2.020000 -0.081284 -0.780461 +204 2.030000 -0.073652 -0.745994 +205 2.040000 -0.066367 -0.710919 +206 2.050000 -0.059435 -0.675264 +207 2.060000 -0.052863 -0.639057 +208 2.070000 -0.046656 -0.602330 +209 2.080000 -0.040818 -0.565112 +210 2.090000 -0.035355 -0.527432 +211 2.100000 -0.030271 -0.489323 +212 2.110000 -0.025570 -0.450814 +213 2.120000 -0.021256 -0.411937 +214 2.130000 -0.017332 -0.372725 +215 2.140000 -0.013802 -0.333209 +216 2.150000 -0.010669 -0.293421 +217 2.160000 -0.007935 -0.253393 +218 2.170000 -0.005602 -0.213159 +219 2.180000 -0.003672 -0.172751 +220 2.190000 -0.002147 -0.132202 +221 2.200000 -0.001028 -0.091545 +222 2.210000 -0.000317 -0.050814 +223 2.220000 -0.000012 -0.010041 +224 2.230000 0.000000 0.000000 +225 2.240000 0.000000 0.000000 +226 2.250000 0.000000 0.000000 +227 2.260000 0.000000 0.000000 +228 2.270000 0.000000 0.000000 +229 2.280000 0.000000 0.000000 +230 2.290000 0.000000 0.000000 +231 2.300000 0.000000 0.000000 +232 2.310000 0.000000 0.000000 +233 2.320000 0.000000 0.000000 +234 2.330000 0.000000 0.000000 +235 2.340000 0.000000 0.000000 +236 2.350000 0.000000 0.000000 +237 2.360000 0.000000 0.000000 +238 2.370000 0.000000 0.000000 +239 2.380000 0.000000 0.000000 +240 2.390000 0.000000 0.000000 +241 2.400000 0.000000 0.000000 +242 2.410000 0.000000 0.000000 +243 2.420000 0.000000 0.000000 +244 2.430000 0.000000 0.000000 +245 2.440000 0.000000 0.000000 +246 2.450000 0.000000 0.000000 +247 2.460000 0.000000 0.000000 +248 2.470000 0.000000 0.000000 +249 2.480000 0.000000 0.000000 +250 2.490000 0.000000 0.000000 +251 2.500000 0.000000 0.000000 +252 2.510000 0.000000 0.000000 +253 2.520000 0.000000 0.000000 +254 2.530000 0.000000 0.000000 +255 2.540000 0.000000 0.000000 +256 2.550000 0.000000 0.000000 +257 2.560000 0.000000 0.000000 +258 2.570000 0.000000 0.000000 +259 2.580000 0.000000 0.000000 +260 2.590000 0.000000 0.000000 +261 2.600000 0.000000 0.000000 +262 2.610000 0.000000 0.000000 +263 2.620000 0.000000 0.000000 +264 2.630000 0.000000 0.000000 +265 2.640000 0.000000 0.000000 +266 2.650000 0.000000 0.000000 +267 2.660000 0.000000 0.000000 +268 2.670000 0.000000 0.000000 +269 2.680000 0.000000 0.000000 +270 2.690000 0.000000 0.000000 +271 2.700000 0.000000 0.000000 +272 2.710000 0.000000 0.000000 +273 2.720000 0.000000 0.000000 +274 2.730000 0.000000 0.000000 +275 2.740000 0.000000 0.000000 +276 2.750000 0.000000 0.000000 +277 2.760000 0.000000 0.000000 +278 2.770000 0.000000 0.000000 +279 2.780000 0.000000 0.000000 +280 2.790000 0.000000 0.000000 +281 2.800000 0.000000 0.000000 +282 2.810000 0.000000 0.000000 +283 2.820000 0.000000 0.000000 +284 2.830000 0.000000 0.000000 +285 2.840000 0.000000 0.000000 +286 2.850000 0.000000 0.000000 +287 2.860000 0.000000 0.000000 +288 2.870000 0.000000 0.000000 +289 2.880000 0.000000 0.000000 +290 2.890000 0.000000 0.000000 +291 2.900000 0.000000 0.000000 +292 2.910000 0.000000 0.000000 +293 2.920000 0.000000 0.000000 +294 2.930000 0.000000 0.000000 +295 2.940000 0.000000 0.000000 +296 2.950000 0.000000 0.000000 +297 2.960000 0.000000 0.000000 +298 2.970000 0.000000 0.000000 +299 2.980000 0.000000 0.000000 +300 2.990000 0.000000 0.000000 +301 3.000000 0.000000 0.000000 + + +TAIL_TAIL_Wc_1.2 +N 301 R 0.000001 3.000000 + +1 0.000001 0.000000 0.000000 +2 0.010000 3999999999995999707725824.000000 4799999999997598070678224896.000000 +3 0.020000 976562499937500004352.000000 585937499981249777762304.000000 +4 0.030000 7526705687148720128.000000 3010682275956881096704.000000 +5 0.040000 238418578125000000.000000 71525573583984353280.000000 +6 0.050000 16383999744000000.000000 3932159969279997440.000000 +7 0.060000 1837574546257248.500000 367514917824838144.000000 +8 0.070000 288990429236596.312500 49541219354796968.000000 +9 0.080000 58207645654678.343750 8731147992610928.000000 +10 0.090000 14162817119182.900391 1888376117671434.750000 +11 0.100000 3999996000000.000000 479999760000000.500000 +12 0.110000 1274521012945.708496 139038779115662.093750 +13 0.120000 448625279546.553955 44862594934250.781250 +14 0.130000 171687100967.122345 15848078337188.726562 +15 0.140000 70553781072.250778 6047489716531.549805 +16 0.150000 30829035351.054977 2466336874723.629883 +17 0.160000 14210616296.622902 1065805162943.433594 +18 0.170000 6865346349.879549 484618532348.129211 +19 0.180000 3457603256.036191 230510803894.961182 +20 0.190000 1807158928.004511 114139038296.617722 +21 0.200000 976499999.999998 58591874999.999847 +22 0.210000 543739902.726732 31072184111.878654 +23 0.220000 311127628.299641 16971560078.724821 +24 0.230000 182499493.379421 9522417580.006592 +25 0.240000 109507052.064558 5475875881.316449 +26 0.250000 67092480.000000 3220832255.999991 +27 0.260000 41903049.941880 1934285732.237306 +28 0.270000 26639528.522336 1184208483.196407 +29 0.280000 17216873.260370 738043867.822060 +30 0.290000 11298625.429098 467668459.533016 +31 0.300000 7521218.724186 300958488.336427 +32 0.310000 5073808.319410 196492716.046068 +33 0.320000 3465721.661655 130034411.505164 +34 0.330000 2395143.138865 87152427.788625 +35 0.340000 1673561.082347 59112555.692539 +36 0.350000 1181528.973318 40546867.041137 +37 0.360000 842332.557402 28108378.157278 +38 0.370000 606071.119890 19681641.931764 +39 0.380000 439893.177446 13912339.662092 +40 0.390000 321924.360071 9922853.684245 +41 0.400000 237442.016602 7137908.935547 +42 0.410000 176435.450812 5176287.635225 +43 0.420000 132031.660059 3782743.515595 +44 0.430000 99468.250044 2784687.558254 +45 0.440000 75416.262744 2064324.130372 +46 0.450000 57529.220585 1540535.337797 +47 0.460000 44139.942254 1156983.644674 +48 0.470000 34054.846645 874222.695500 +49 0.480000 26413.181465 664417.646696 +50 0.490000 20589.881497 507780.654581 +51 0.500000 16128.000000 390144.000000 +52 0.510000 12691.351515 301294.396513 +53 0.520000 10031.077542 233820.872331 +54 0.530000 7961.876154 182311.949517 +55 0.540000 6344.988397 142792.224654 +56 0.550000 5075.941991 112324.247003 +57 0.560000 4075.667156 88725.341557 +58 0.570000 3284.018178 70364.910655 +59 0.580000 2655.022026 56018.454503 +60 0.590000 2153.374227 44761.819610 +61 0.600000 1751.840750 35894.153820 +62 0.610000 1429.321668 28881.467437 +63 0.620000 1169.400839 23315.070198 +64 0.630000 959.254371 18880.806522 +65 0.640000 788.825286 15336.170940 +66 0.650000 650.196650 12493.203783 +67 0.660000 537.113366 10205.647944 +68 0.670000 444.615844 8359.261950 +69 0.680000 368.758212 6864.481939 +70 0.690000 306.390715 5650.839586 +71 0.700000 254.991024 4662.698464 +72 0.710000 212.532986 3855.984565 +73 0.720000 177.384120 3195.669530 +74 0.730000 148.225307 2653.826099 +75 0.740000 123.987627 2208.120224 +76 0.750000 103.802544 1840.637693 +77 0.760000 86.962472 1536.967937 +78 0.770000 72.889471 1285.486272 +79 0.780000 61.110325 1076.789779 +80 0.790000 51.236635 903.252555 +81 0.800000 42.948872 758.673996 +82 0.810000 35.983576 637.999825 +83 0.820000 30.123043 537.100183 +84 0.830000 25.186999 452.592612 +85 0.840000 21.025860 381.700456 +86 0.850000 17.515264 322.139305 +87 0.860000 14.551619 272.025666 +88 0.870000 12.048476 229.803356 +89 0.880000 9.933566 194.184004 +90 0.890000 8.146368 164.098852 +91 0.900000 6.636119 138.659624 +92 0.910000 5.360169 117.126674 +93 0.920000 4.282632 98.883003 +94 0.930000 3.373272 83.413022 +95 0.940000 2.606573 70.285155 +96 0.950000 1.960975 59.137553 +97 0.960000 1.418239 49.666347 +98 0.970000 0.962916 41.615965 +99 0.980000 0.581905 34.771137 +100 0.990000 0.264083 28.950277 +101 1.000000 -0.000000 24.000000 +102 1.010000 -0.218384 19.790571 +103 1.020000 -0.397913 16.212117 +104 1.030000 -0.544418 13.171468 +105 1.040000 -0.662870 10.589529 +106 1.050000 -0.757512 8.399073 +107 1.060000 -0.831965 6.542902 +108 1.070000 -0.889321 4.972300 +109 1.080000 -0.932223 3.645731 +110 1.090000 -0.962930 2.527753 +111 1.100000 -0.983372 1.588095 +112 1.110000 -0.995200 0.800882 +113 1.120000 -0.999824 0.143980 +114 1.130000 -0.999903 -0.025830 +115 1.140000 -0.999473 -0.060080 +116 1.150000 -0.998701 -0.094289 +117 1.160000 -0.997587 -0.128434 +118 1.170000 -0.996133 -0.162490 +119 1.180000 -0.994338 -0.196435 +120 1.190000 -0.992205 -0.230245 +121 1.200000 -0.989734 -0.263897 +122 1.210000 -0.986927 -0.297369 +123 1.220000 -0.983787 -0.330637 +124 1.230000 -0.980315 -0.363678 +125 1.240000 -0.976514 -0.396470 +126 1.250000 -0.972387 -0.428990 +127 1.260000 -0.967935 -0.461216 +128 1.270000 -0.963163 -0.493126 +129 1.280000 -0.958074 -0.524698 +130 1.290000 -0.952671 -0.555911 +131 1.300000 -0.946957 -0.586742 +132 1.310000 -0.940937 -0.617172 +133 1.320000 -0.934615 -0.647178 +134 1.330000 -0.927995 -0.676741 +135 1.340000 -0.921082 -0.705840 +136 1.350000 -0.913880 -0.734455 +137 1.360000 -0.906394 -0.762567 +138 1.370000 -0.898630 -0.790157 +139 1.380000 -0.890593 -0.817204 +140 1.390000 -0.882288 -0.843692 +141 1.400000 -0.873721 -0.869602 +142 1.410000 -0.864898 -0.894915 +143 1.420000 -0.855825 -0.919615 +144 1.430000 -0.846508 -0.943685 +145 1.440000 -0.836953 -0.967108 +146 1.450000 -0.827168 -0.989869 +147 1.460000 -0.817158 -1.011951 +148 1.470000 -0.806931 -1.033339 +149 1.480000 -0.796494 -1.054019 +150 1.490000 -0.785853 -1.073977 +151 1.500000 -0.775017 -1.093199 +152 1.510000 -0.763992 -1.111672 +153 1.520000 -0.752786 -1.129382 +154 1.530000 -0.741407 -1.146319 +155 1.540000 -0.729862 -1.162470 +156 1.550000 -0.718160 -1.177825 +157 1.560000 -0.706308 -1.192372 +158 1.570000 -0.694315 -1.206102 +159 1.580000 -0.682189 -1.219005 +160 1.590000 -0.669938 -1.231073 +161 1.600000 -0.657570 -1.242297 +162 1.610000 -0.645095 -1.252670 +163 1.620000 -0.632520 -1.262184 +164 1.630000 -0.619854 -1.270833 +165 1.640000 -0.607106 -1.278611 +166 1.650000 -0.594285 -1.285513 +167 1.660000 -0.581399 -1.291534 +168 1.670000 -0.568457 -1.296670 +169 1.680000 -0.555468 -1.300917 +170 1.690000 -0.542442 -1.304273 +171 1.700000 -0.529386 -1.306734 +172 1.710000 -0.516310 -1.308300 +173 1.720000 -0.503223 -1.308970 +174 1.730000 -0.490133 -1.308742 +175 1.740000 -0.477051 -1.307617 +176 1.750000 -0.463984 -1.305597 +177 1.760000 -0.450942 -1.302681 +178 1.770000 -0.437933 -1.298873 +179 1.780000 -0.424968 -1.294174 +180 1.790000 -0.412053 -1.288588 +181 1.800000 -0.399199 -1.282120 +182 1.810000 -0.386413 -1.274772 +183 1.820000 -0.373706 -1.266551 +184 1.830000 -0.361085 -1.257462 +185 1.840000 -0.348560 -1.247511 +186 1.850000 -0.336138 -1.236706 +187 1.860000 -0.323828 -1.225052 +188 1.870000 -0.311640 -1.212559 +189 1.880000 -0.299580 -1.199235 +190 1.890000 -0.287658 -1.185089 +191 1.900000 -0.275881 -1.170131 +192 1.910000 -0.264258 -1.154371 +193 1.920000 -0.252796 -1.137820 +194 1.930000 -0.241504 -1.120489 +195 1.940000 -0.230389 -1.102390 +196 1.950000 -0.219459 -1.083535 +197 1.960000 -0.208721 -1.063938 +198 1.970000 -0.198182 -1.043612 +199 1.980000 -0.187851 -1.022570 +200 1.990000 -0.177733 -1.000828 +201 2.000000 -0.167837 -0.978400 +202 2.010000 -0.158168 -0.955301 +203 2.020000 -0.148733 -0.931547 +204 2.030000 -0.139539 -0.907155 +205 2.040000 -0.130592 -0.882142 +206 2.050000 -0.121898 -0.856524 +207 2.060000 -0.113463 -0.830318 +208 2.070000 -0.105293 -0.803544 +209 2.080000 -0.097394 -0.776219 +210 2.090000 -0.089771 -0.748362 +211 2.100000 -0.082429 -0.719992 +212 2.110000 -0.075373 -0.691129 +213 2.120000 -0.068608 -0.661792 +214 2.130000 -0.062138 -0.632001 +215 2.140000 -0.055969 -0.601777 +216 2.150000 -0.050104 -0.571141 +217 2.160000 -0.044548 -0.540114 +218 2.170000 -0.039303 -0.508716 +219 2.180000 -0.034374 -0.476970 +220 2.190000 -0.029765 -0.444896 +221 2.200000 -0.025478 -0.412518 +222 2.210000 -0.021515 -0.379857 +223 2.220000 -0.017881 -0.346936 +224 2.230000 -0.014577 -0.313777 +225 2.240000 -0.011606 -0.280403 +226 2.250000 -0.008970 -0.246837 +227 2.260000 -0.006670 -0.213101 +228 2.270000 -0.004709 -0.179220 +229 2.280000 -0.003086 -0.145216 +230 2.290000 -0.001805 -0.111112 +231 2.300000 -0.000864 -0.076932 +232 2.310000 -0.000266 -0.042699 +233 2.320000 -0.000010 -0.008437 +234 2.330000 0.000000 0.000000 +235 2.340000 0.000000 0.000000 +236 2.350000 0.000000 0.000000 +237 2.360000 0.000000 0.000000 +238 2.370000 0.000000 0.000000 +239 2.380000 0.000000 0.000000 +240 2.390000 0.000000 0.000000 +241 2.400000 0.000000 0.000000 +242 2.410000 0.000000 0.000000 +243 2.420000 0.000000 0.000000 +244 2.430000 0.000000 0.000000 +245 2.440000 0.000000 0.000000 +246 2.450000 0.000000 0.000000 +247 2.460000 0.000000 0.000000 +248 2.470000 0.000000 0.000000 +249 2.480000 0.000000 0.000000 +250 2.490000 0.000000 0.000000 +251 2.500000 0.000000 0.000000 +252 2.510000 0.000000 0.000000 +253 2.520000 0.000000 0.000000 +254 2.530000 0.000000 0.000000 +255 2.540000 0.000000 0.000000 +256 2.550000 0.000000 0.000000 +257 2.560000 0.000000 0.000000 +258 2.570000 0.000000 0.000000 +259 2.580000 0.000000 0.000000 +260 2.590000 0.000000 0.000000 +261 2.600000 0.000000 0.000000 +262 2.610000 0.000000 0.000000 +263 2.620000 0.000000 0.000000 +264 2.630000 0.000000 0.000000 +265 2.640000 0.000000 0.000000 +266 2.650000 0.000000 0.000000 +267 2.660000 0.000000 0.000000 +268 2.670000 0.000000 0.000000 +269 2.680000 0.000000 0.000000 +270 2.690000 0.000000 0.000000 +271 2.700000 0.000000 0.000000 +272 2.710000 0.000000 0.000000 +273 2.720000 0.000000 0.000000 +274 2.730000 0.000000 0.000000 +275 2.740000 0.000000 0.000000 +276 2.750000 0.000000 0.000000 +277 2.760000 0.000000 0.000000 +278 2.770000 0.000000 0.000000 +279 2.780000 0.000000 0.000000 +280 2.790000 0.000000 0.000000 +281 2.800000 0.000000 0.000000 +282 2.810000 0.000000 0.000000 +283 2.820000 0.000000 0.000000 +284 2.830000 0.000000 0.000000 +285 2.840000 0.000000 0.000000 +286 2.850000 0.000000 0.000000 +287 2.860000 0.000000 0.000000 +288 2.870000 0.000000 0.000000 +289 2.880000 0.000000 0.000000 +290 2.890000 0.000000 0.000000 +291 2.900000 0.000000 0.000000 +292 2.910000 0.000000 0.000000 +293 2.920000 0.000000 0.000000 +294 2.930000 0.000000 0.000000 +295 2.940000 0.000000 0.000000 +296 2.950000 0.000000 0.000000 +297 2.960000 0.000000 0.000000 +298 2.970000 0.000000 0.000000 +299 2.980000 0.000000 0.000000 +300 2.990000 0.000000 0.000000 +301 3.000000 0.000000 0.000000 + + +TAIL_TAIL_Wc_1.3 +N 301 R 0.000001 3.000000 + +1 0.000001 0.000000 0.000000 +2 0.010000 3999999999995999707725824.000000 4799999999997598070678224896.000000 +3 0.020000 976562499937500004352.000000 585937499981249777762304.000000 +4 0.030000 7526705687148720128.000000 3010682275956881096704.000000 +5 0.040000 238418578125000000.000000 71525573583984353280.000000 +6 0.050000 16383999744000000.000000 3932159969279997440.000000 +7 0.060000 1837574546257248.500000 367514917824838144.000000 +8 0.070000 288990429236596.312500 49541219354796968.000000 +9 0.080000 58207645654678.343750 8731147992610928.000000 +10 0.090000 14162817119182.900391 1888376117671434.750000 +11 0.100000 3999996000000.000000 479999760000000.500000 +12 0.110000 1274521012945.708496 139038779115662.093750 +13 0.120000 448625279546.553955 44862594934250.781250 +14 0.130000 171687100967.122345 15848078337188.726562 +15 0.140000 70553781072.250778 6047489716531.549805 +16 0.150000 30829035351.054977 2466336874723.629883 +17 0.160000 14210616296.622902 1065805162943.433594 +18 0.170000 6865346349.879549 484618532348.129211 +19 0.180000 3457603256.036191 230510803894.961182 +20 0.190000 1807158928.004511 114139038296.617722 +21 0.200000 976499999.999998 58591874999.999847 +22 0.210000 543739902.726732 31072184111.878654 +23 0.220000 311127628.299641 16971560078.724821 +24 0.230000 182499493.379421 9522417580.006592 +25 0.240000 109507052.064558 5475875881.316449 +26 0.250000 67092480.000000 3220832255.999991 +27 0.260000 41903049.941880 1934285732.237306 +28 0.270000 26639528.522336 1184208483.196407 +29 0.280000 17216873.260370 738043867.822060 +30 0.290000 11298625.429098 467668459.533016 +31 0.300000 7521218.724186 300958488.336427 +32 0.310000 5073808.319410 196492716.046068 +33 0.320000 3465721.661655 130034411.505164 +34 0.330000 2395143.138865 87152427.788625 +35 0.340000 1673561.082347 59112555.692539 +36 0.350000 1181528.973318 40546867.041137 +37 0.360000 842332.557402 28108378.157278 +38 0.370000 606071.119890 19681641.931764 +39 0.380000 439893.177446 13912339.662092 +40 0.390000 321924.360071 9922853.684245 +41 0.400000 237442.016602 7137908.935547 +42 0.410000 176435.450812 5176287.635225 +43 0.420000 132031.660059 3782743.515595 +44 0.430000 99468.250044 2784687.558254 +45 0.440000 75416.262744 2064324.130372 +46 0.450000 57529.220585 1540535.337797 +47 0.460000 44139.942254 1156983.644674 +48 0.470000 34054.846645 874222.695500 +49 0.480000 26413.181465 664417.646696 +50 0.490000 20589.881497 507780.654581 +51 0.500000 16128.000000 390144.000000 +52 0.510000 12691.351515 301294.396513 +53 0.520000 10031.077542 233820.872331 +54 0.530000 7961.876154 182311.949517 +55 0.540000 6344.988397 142792.224654 +56 0.550000 5075.941991 112324.247003 +57 0.560000 4075.667156 88725.341557 +58 0.570000 3284.018178 70364.910655 +59 0.580000 2655.022026 56018.454503 +60 0.590000 2153.374227 44761.819610 +61 0.600000 1751.840750 35894.153820 +62 0.610000 1429.321668 28881.467437 +63 0.620000 1169.400839 23315.070198 +64 0.630000 959.254371 18880.806522 +65 0.640000 788.825286 15336.170940 +66 0.650000 650.196650 12493.203783 +67 0.660000 537.113366 10205.647944 +68 0.670000 444.615844 8359.261950 +69 0.680000 368.758212 6864.481939 +70 0.690000 306.390715 5650.839586 +71 0.700000 254.991024 4662.698464 +72 0.710000 212.532986 3855.984565 +73 0.720000 177.384120 3195.669530 +74 0.730000 148.225307 2653.826099 +75 0.740000 123.987627 2208.120224 +76 0.750000 103.802544 1840.637693 +77 0.760000 86.962472 1536.967937 +78 0.770000 72.889471 1285.486272 +79 0.780000 61.110325 1076.789779 +80 0.790000 51.236635 903.252555 +81 0.800000 42.948872 758.673996 +82 0.810000 35.983576 637.999825 +83 0.820000 30.123043 537.100183 +84 0.830000 25.186999 452.592612 +85 0.840000 21.025860 381.700456 +86 0.850000 17.515264 322.139305 +87 0.860000 14.551619 272.025666 +88 0.870000 12.048476 229.803356 +89 0.880000 9.933566 194.184004 +90 0.890000 8.146368 164.098852 +91 0.900000 6.636119 138.659624 +92 0.910000 5.360169 117.126674 +93 0.920000 4.282632 98.883003 +94 0.930000 3.373272 83.413022 +95 0.940000 2.606573 70.285155 +96 0.950000 1.960975 59.137553 +97 0.960000 1.418239 49.666347 +98 0.970000 0.962916 41.615965 +99 0.980000 0.581905 34.771137 +100 0.990000 0.264083 28.950277 +101 1.000000 -0.000000 24.000000 +102 1.010000 -0.218384 19.790571 +103 1.020000 -0.397913 16.212117 +104 1.030000 -0.544418 13.171468 +105 1.040000 -0.662870 10.589529 +106 1.050000 -0.757512 8.399073 +107 1.060000 -0.831965 6.542902 +108 1.070000 -0.889321 4.972300 +109 1.080000 -0.932223 3.645731 +110 1.090000 -0.962930 2.527753 +111 1.100000 -0.983372 1.588095 +112 1.110000 -0.995200 0.800882 +113 1.120000 -0.999824 0.143980 +114 1.130000 -0.999917 -0.022010 +115 1.140000 -0.999551 -0.051196 +116 1.150000 -0.998893 -0.080352 +117 1.160000 -0.997944 -0.109461 +118 1.170000 -0.996704 -0.138506 +119 1.180000 -0.995174 -0.167470 +120 1.190000 -0.993355 -0.196337 +121 1.200000 -0.991248 -0.225088 +122 1.210000 -0.988854 -0.253709 +123 1.220000 -0.986174 -0.282181 +124 1.230000 -0.983211 -0.310488 +125 1.240000 -0.979965 -0.338614 +126 1.250000 -0.976439 -0.366543 +127 1.260000 -0.972635 -0.394257 +128 1.270000 -0.968555 -0.421741 +129 1.280000 -0.964201 -0.448979 +130 1.290000 -0.959576 -0.475955 +131 1.300000 -0.954683 -0.502652 +132 1.310000 -0.949524 -0.529056 +133 1.320000 -0.944103 -0.555152 +134 1.330000 -0.938422 -0.580923 +135 1.340000 -0.932485 -0.606354 +136 1.350000 -0.926296 -0.631432 +137 1.360000 -0.919858 -0.656141 +138 1.370000 -0.913175 -0.680467 +139 1.380000 -0.906250 -0.704395 +140 1.390000 -0.899088 -0.727912 +141 1.400000 -0.891693 -0.751004 +142 1.410000 -0.884069 -0.773657 +143 1.420000 -0.876221 -0.795859 +144 1.430000 -0.868154 -0.817596 +145 1.440000 -0.859871 -0.838855 +146 1.450000 -0.851378 -0.859625 +147 1.460000 -0.842680 -0.879892 +148 1.470000 -0.833782 -0.899646 +149 1.480000 -0.824689 -0.918874 +150 1.490000 -0.815407 -0.937566 +151 1.500000 -0.805940 -0.955710 +152 1.510000 -0.796294 -0.973296 +153 1.520000 -0.786476 -0.990314 +154 1.530000 -0.776490 -1.006753 +155 1.540000 -0.766343 -1.022605 +156 1.550000 -0.756040 -1.037859 +157 1.560000 -0.745587 -1.052507 +158 1.570000 -0.734992 -1.066541 +159 1.580000 -0.724259 -1.079952 +160 1.590000 -0.713395 -1.092732 +161 1.600000 -0.702406 -1.104874 +162 1.610000 -0.691299 -1.116371 +163 1.620000 -0.680081 -1.127215 +164 1.630000 -0.668757 -1.137402 +165 1.640000 -0.657335 -1.146924 +166 1.650000 -0.645821 -1.155777 +167 1.660000 -0.634222 -1.163955 +168 1.670000 -0.622544 -1.171452 +169 1.680000 -0.610795 -1.178266 +170 1.690000 -0.598981 -1.184392 +171 1.700000 -0.587109 -1.189826 +172 1.710000 -0.575187 -1.194565 +173 1.720000 -0.563220 -1.198607 +174 1.730000 -0.551217 -1.201949 +175 1.740000 -0.539184 -1.204589 +176 1.750000 -0.527128 -1.206525 +177 1.760000 -0.515056 -1.207757 +178 1.770000 -0.502975 -1.208283 +179 1.780000 -0.490892 -1.208104 +180 1.790000 -0.478815 -1.207220 +181 1.800000 -0.466750 -1.205630 +182 1.810000 -0.454705 -1.203337 +183 1.820000 -0.442686 -1.200340 +184 1.830000 -0.430700 -1.196643 +185 1.840000 -0.418755 -1.192247 +186 1.850000 -0.406858 -1.187155 +187 1.860000 -0.395015 -1.181369 +188 1.870000 -0.383233 -1.174893 +189 1.880000 -0.371519 -1.167732 +190 1.890000 -0.359880 -1.159888 +191 1.900000 -0.348324 -1.151367 +192 1.910000 -0.336855 -1.142174 +193 1.920000 -0.325482 -1.132314 +194 1.930000 -0.314211 -1.121793 +195 1.940000 -0.303049 -1.110616 +196 1.950000 -0.292001 -1.098791 +197 1.960000 -0.281075 -1.086324 +198 1.970000 -0.270277 -1.073223 +199 1.980000 -0.259613 -1.059495 +200 1.990000 -0.249089 -1.045148 +201 2.000000 -0.238712 -1.030191 +202 2.010000 -0.228487 -1.014633 +203 2.020000 -0.218421 -0.998482 +204 2.030000 -0.208519 -0.981748 +205 2.040000 -0.198788 -0.964440 +206 2.050000 -0.189232 -0.946569 +207 2.060000 -0.179858 -0.928146 +208 2.070000 -0.170671 -0.909180 +209 2.080000 -0.161677 -0.889684 +210 2.090000 -0.152879 -0.869668 +211 2.100000 -0.144285 -0.849144 +212 2.110000 -0.135898 -0.828125 +213 2.120000 -0.127724 -0.806621 +214 2.130000 -0.119767 -0.784647 +215 2.140000 -0.112033 -0.762214 +216 2.150000 -0.104524 -0.739337 +217 2.160000 -0.097247 -0.716027 +218 2.170000 -0.090205 -0.692300 +219 2.180000 -0.083403 -0.668168 +220 2.190000 -0.076843 -0.643646 +221 2.200000 -0.070531 -0.618748 +222 2.210000 -0.064469 -0.593489 +223 2.220000 -0.058662 -0.567883 +224 2.230000 -0.053113 -0.541946 +225 2.240000 -0.047824 -0.515692 +226 2.250000 -0.042800 -0.489137 +227 2.260000 -0.038043 -0.462296 +228 2.270000 -0.033555 -0.435185 +229 2.280000 -0.029340 -0.407820 +230 2.290000 -0.025399 -0.380217 +231 2.300000 -0.021736 -0.352392 +232 2.310000 -0.018352 -0.324362 +233 2.320000 -0.015250 -0.296141 +234 2.330000 -0.012430 -0.267748 +235 2.340000 -0.009895 -0.239199 +236 2.350000 -0.007647 -0.210510 +237 2.360000 -0.005685 -0.181697 +238 2.370000 -0.004013 -0.152779 +239 2.380000 -0.002630 -0.123772 +240 2.390000 -0.001538 -0.094692 +241 2.400000 -0.000736 -0.065557 +242 2.410000 -0.000227 -0.036384 +243 2.420000 -0.000009 -0.007189 +244 2.430000 0.000000 0.000000 +245 2.440000 0.000000 0.000000 +246 2.450000 0.000000 0.000000 +247 2.460000 0.000000 0.000000 +248 2.470000 0.000000 0.000000 +249 2.480000 0.000000 0.000000 +250 2.490000 0.000000 0.000000 +251 2.500000 0.000000 0.000000 +252 2.510000 0.000000 0.000000 +253 2.520000 0.000000 0.000000 +254 2.530000 0.000000 0.000000 +255 2.540000 0.000000 0.000000 +256 2.550000 0.000000 0.000000 +257 2.560000 0.000000 0.000000 +258 2.570000 0.000000 0.000000 +259 2.580000 0.000000 0.000000 +260 2.590000 0.000000 0.000000 +261 2.600000 0.000000 0.000000 +262 2.610000 0.000000 0.000000 +263 2.620000 0.000000 0.000000 +264 2.630000 0.000000 0.000000 +265 2.640000 0.000000 0.000000 +266 2.650000 0.000000 0.000000 +267 2.660000 0.000000 0.000000 +268 2.670000 0.000000 0.000000 +269 2.680000 0.000000 0.000000 +270 2.690000 0.000000 0.000000 +271 2.700000 0.000000 0.000000 +272 2.710000 0.000000 0.000000 +273 2.720000 0.000000 0.000000 +274 2.730000 0.000000 0.000000 +275 2.740000 0.000000 0.000000 +276 2.750000 0.000000 0.000000 +277 2.760000 0.000000 0.000000 +278 2.770000 0.000000 0.000000 +279 2.780000 0.000000 0.000000 +280 2.790000 0.000000 0.000000 +281 2.800000 0.000000 0.000000 +282 2.810000 0.000000 0.000000 +283 2.820000 0.000000 0.000000 +284 2.830000 0.000000 0.000000 +285 2.840000 0.000000 0.000000 +286 2.850000 0.000000 0.000000 +287 2.860000 0.000000 0.000000 +288 2.870000 0.000000 0.000000 +289 2.880000 0.000000 0.000000 +290 2.890000 0.000000 0.000000 +291 2.900000 0.000000 0.000000 +292 2.910000 0.000000 0.000000 +293 2.920000 0.000000 0.000000 +294 2.930000 0.000000 0.000000 +295 2.940000 0.000000 0.000000 +296 2.950000 0.000000 0.000000 +297 2.960000 0.000000 0.000000 +298 2.970000 0.000000 0.000000 +299 2.980000 0.000000 0.000000 +300 2.990000 0.000000 0.000000 +301 3.000000 0.000000 0.000000 + + +TAIL_TAIL_Wc_1.4 +N 301 R 0.000001 3.000000 + +1 0.000001 0.000000 0.000000 +2 0.010000 3999999999995999707725824.000000 4799999999997598070678224896.000000 +3 0.020000 976562499937500004352.000000 585937499981249777762304.000000 +4 0.030000 7526705687148720128.000000 3010682275956881096704.000000 +5 0.040000 238418578125000000.000000 71525573583984353280.000000 +6 0.050000 16383999744000000.000000 3932159969279997440.000000 +7 0.060000 1837574546257248.500000 367514917824838144.000000 +8 0.070000 288990429236596.312500 49541219354796968.000000 +9 0.080000 58207645654678.343750 8731147992610928.000000 +10 0.090000 14162817119182.900391 1888376117671434.750000 +11 0.100000 3999996000000.000000 479999760000000.500000 +12 0.110000 1274521012945.708496 139038779115662.093750 +13 0.120000 448625279546.553955 44862594934250.781250 +14 0.130000 171687100967.122345 15848078337188.726562 +15 0.140000 70553781072.250778 6047489716531.549805 +16 0.150000 30829035351.054977 2466336874723.629883 +17 0.160000 14210616296.622902 1065805162943.433594 +18 0.170000 6865346349.879549 484618532348.129211 +19 0.180000 3457603256.036191 230510803894.961182 +20 0.190000 1807158928.004511 114139038296.617722 +21 0.200000 976499999.999998 58591874999.999847 +22 0.210000 543739902.726732 31072184111.878654 +23 0.220000 311127628.299641 16971560078.724821 +24 0.230000 182499493.379421 9522417580.006592 +25 0.240000 109507052.064558 5475875881.316449 +26 0.250000 67092480.000000 3220832255.999991 +27 0.260000 41903049.941880 1934285732.237306 +28 0.270000 26639528.522336 1184208483.196407 +29 0.280000 17216873.260370 738043867.822060 +30 0.290000 11298625.429098 467668459.533016 +31 0.300000 7521218.724186 300958488.336427 +32 0.310000 5073808.319410 196492716.046068 +33 0.320000 3465721.661655 130034411.505164 +34 0.330000 2395143.138865 87152427.788625 +35 0.340000 1673561.082347 59112555.692539 +36 0.350000 1181528.973318 40546867.041137 +37 0.360000 842332.557402 28108378.157278 +38 0.370000 606071.119890 19681641.931764 +39 0.380000 439893.177446 13912339.662092 +40 0.390000 321924.360071 9922853.684245 +41 0.400000 237442.016602 7137908.935547 +42 0.410000 176435.450812 5176287.635225 +43 0.420000 132031.660059 3782743.515595 +44 0.430000 99468.250044 2784687.558254 +45 0.440000 75416.262744 2064324.130372 +46 0.450000 57529.220585 1540535.337797 +47 0.460000 44139.942254 1156983.644674 +48 0.470000 34054.846645 874222.695500 +49 0.480000 26413.181465 664417.646696 +50 0.490000 20589.881497 507780.654581 +51 0.500000 16128.000000 390144.000000 +52 0.510000 12691.351515 301294.396513 +53 0.520000 10031.077542 233820.872331 +54 0.530000 7961.876154 182311.949517 +55 0.540000 6344.988397 142792.224654 +56 0.550000 5075.941991 112324.247003 +57 0.560000 4075.667156 88725.341557 +58 0.570000 3284.018178 70364.910655 +59 0.580000 2655.022026 56018.454503 +60 0.590000 2153.374227 44761.819610 +61 0.600000 1751.840750 35894.153820 +62 0.610000 1429.321668 28881.467437 +63 0.620000 1169.400839 23315.070198 +64 0.630000 959.254371 18880.806522 +65 0.640000 788.825286 15336.170940 +66 0.650000 650.196650 12493.203783 +67 0.660000 537.113366 10205.647944 +68 0.670000 444.615844 8359.261950 +69 0.680000 368.758212 6864.481939 +70 0.690000 306.390715 5650.839586 +71 0.700000 254.991024 4662.698464 +72 0.710000 212.532986 3855.984565 +73 0.720000 177.384120 3195.669530 +74 0.730000 148.225307 2653.826099 +75 0.740000 123.987627 2208.120224 +76 0.750000 103.802544 1840.637693 +77 0.760000 86.962472 1536.967937 +78 0.770000 72.889471 1285.486272 +79 0.780000 61.110325 1076.789779 +80 0.790000 51.236635 903.252555 +81 0.800000 42.948872 758.673996 +82 0.810000 35.983576 637.999825 +83 0.820000 30.123043 537.100183 +84 0.830000 25.186999 452.592612 +85 0.840000 21.025860 381.700456 +86 0.850000 17.515264 322.139305 +87 0.860000 14.551619 272.025666 +88 0.870000 12.048476 229.803356 +89 0.880000 9.933566 194.184004 +90 0.890000 8.146368 164.098852 +91 0.900000 6.636119 138.659624 +92 0.910000 5.360169 117.126674 +93 0.920000 4.282632 98.883003 +94 0.930000 3.373272 83.413022 +95 0.940000 2.606573 70.285155 +96 0.950000 1.960975 59.137553 +97 0.960000 1.418239 49.666347 +98 0.970000 0.962916 41.615965 +99 0.980000 0.581905 34.771137 +100 0.990000 0.264083 28.950277 +101 1.000000 -0.000000 24.000000 +102 1.010000 -0.218384 19.790571 +103 1.020000 -0.397913 16.212117 +104 1.030000 -0.544418 13.171468 +105 1.040000 -0.662870 10.589529 +106 1.050000 -0.757512 8.399073 +107 1.060000 -0.831965 6.542902 +108 1.070000 -0.889321 4.972300 +109 1.080000 -0.932223 3.645731 +110 1.090000 -0.962930 2.527753 +111 1.100000 -0.983372 1.588095 +112 1.110000 -0.995200 0.800882 +113 1.120000 -0.999824 0.143980 +114 1.130000 -0.999928 -0.018978 +115 1.140000 -0.999613 -0.044145 +116 1.150000 -0.999046 -0.069290 +117 1.160000 -0.998227 -0.094400 +118 1.170000 -0.997158 -0.119462 +119 1.180000 -0.995838 -0.144464 +120 1.190000 -0.994269 -0.169394 +121 1.200000 -0.992451 -0.194238 +122 1.210000 -0.990384 -0.218985 +123 1.220000 -0.988071 -0.243621 +124 1.230000 -0.985512 -0.268134 +125 1.240000 -0.982709 -0.292513 +126 1.250000 -0.979663 -0.316744 +127 1.260000 -0.976375 -0.340816 +128 1.270000 -0.972847 -0.364716 +129 1.280000 -0.969081 -0.388432 +130 1.290000 -0.965079 -0.411953 +131 1.300000 -0.960843 -0.435266 +132 1.310000 -0.956374 -0.458361 +133 1.320000 -0.951676 -0.481224 +134 1.330000 -0.946751 -0.503845 +135 1.340000 -0.941600 -0.526213 +136 1.350000 -0.936227 -0.548315 +137 1.360000 -0.930635 -0.570142 +138 1.370000 -0.924825 -0.591681 +139 1.380000 -0.918802 -0.612922 +140 1.390000 -0.912568 -0.633855 +141 1.400000 -0.906126 -0.654469 +142 1.410000 -0.899480 -0.674753 +143 1.420000 -0.892632 -0.694697 +144 1.430000 -0.885587 -0.714291 +145 1.440000 -0.878347 -0.733526 +146 1.450000 -0.870918 -0.752392 +147 1.460000 -0.863301 -0.770878 +148 1.470000 -0.855501 -0.788977 +149 1.480000 -0.847523 -0.806678 +150 1.490000 -0.839369 -0.823973 +151 1.500000 -0.831045 -0.840853 +152 1.510000 -0.822553 -0.857310 +153 1.520000 -0.813900 -0.873335 +154 1.530000 -0.805088 -0.888920 +155 1.540000 -0.796123 -0.904058 +156 1.550000 -0.787009 -0.918740 +157 1.560000 -0.777750 -0.932960 +158 1.570000 -0.768351 -0.946710 +159 1.580000 -0.758817 -0.959983 +160 1.590000 -0.749153 -0.972773 +161 1.600000 -0.739363 -0.985073 +162 1.610000 -0.729453 -0.996878 +163 1.620000 -0.719427 -1.008180 +164 1.630000 -0.709291 -1.018974 +165 1.640000 -0.699050 -1.029256 +166 1.650000 -0.688708 -1.039019 +167 1.660000 -0.678271 -1.048259 +168 1.670000 -0.667744 -1.056971 +169 1.680000 -0.657133 -1.065151 +170 1.690000 -0.646443 -1.072795 +171 1.700000 -0.635679 -1.079898 +172 1.710000 -0.624847 -1.086458 +173 1.720000 -0.613952 -1.092471 +174 1.730000 -0.602999 -1.097933 +175 1.740000 -0.591995 -1.102843 +176 1.750000 -0.580944 -1.107197 +177 1.760000 -0.569853 -1.110994 +178 1.770000 -0.558726 -1.114231 +179 1.780000 -0.547570 -1.116908 +180 1.790000 -0.536390 -1.119022 +181 1.800000 -0.525192 -1.120572 +182 1.810000 -0.513981 -1.121559 +183 1.820000 -0.502762 -1.121980 +184 1.830000 -0.491543 -1.121837 +185 1.840000 -0.480328 -1.121129 +186 1.850000 -0.469122 -1.119856 +187 1.860000 -0.457932 -1.118019 +188 1.870000 -0.446764 -1.115620 +189 1.880000 -0.435622 -1.112658 +190 1.890000 -0.424512 -1.109137 +191 1.900000 -0.413441 -1.105056 +192 1.910000 -0.402413 -1.100420 +193 1.920000 -0.391434 -1.095229 +194 1.930000 -0.380510 -1.089487 +195 1.940000 -0.369646 -1.083196 +196 1.950000 -0.358848 -1.076360 +197 1.960000 -0.348121 -1.068982 +198 1.970000 -0.337470 -1.061066 +199 1.980000 -0.326902 -1.052615 +200 1.990000 -0.316420 -1.043634 +201 2.000000 -0.306031 -1.034128 +202 2.010000 -0.295739 -1.024101 +203 2.020000 -0.285550 -1.013559 +204 2.030000 -0.275470 -1.002506 +205 2.040000 -0.265502 -0.990948 +206 2.050000 -0.255652 -0.978892 +207 2.060000 -0.245926 -0.966342 +208 2.070000 -0.236327 -0.953306 +209 2.080000 -0.226861 -0.939790 +210 2.090000 -0.217533 -0.925800 +211 2.100000 -0.208347 -0.911345 +212 2.110000 -0.199307 -0.896430 +213 2.120000 -0.190420 -0.881064 +214 2.130000 -0.181688 -0.865255 +215 2.140000 -0.173116 -0.849010 +216 2.150000 -0.164709 -0.832337 +217 2.160000 -0.156471 -0.815245 +218 2.170000 -0.148405 -0.797743 +219 2.180000 -0.140517 -0.779839 +220 2.190000 -0.132810 -0.761542 +221 2.200000 -0.125288 -0.742862 +222 2.210000 -0.117954 -0.723808 +223 2.220000 -0.110813 -0.704390 +224 2.230000 -0.103867 -0.684616 +225 2.240000 -0.097121 -0.664498 +226 2.250000 -0.090578 -0.644046 +227 2.260000 -0.084242 -0.623269 +228 2.270000 -0.078114 -0.602178 +229 2.280000 -0.072199 -0.580784 +230 2.290000 -0.066499 -0.559098 +231 2.300000 -0.061018 -0.537130 +232 2.310000 -0.055758 -0.514892 +233 2.320000 -0.050721 -0.492394 +234 2.330000 -0.045911 -0.469648 +235 2.340000 -0.041329 -0.446666 +236 2.350000 -0.036978 -0.423459 +237 2.360000 -0.032860 -0.400039 +238 2.370000 -0.028978 -0.376418 +239 2.380000 -0.025333 -0.352606 +240 2.390000 -0.021926 -0.328618 +241 2.400000 -0.018761 -0.304464 +242 2.410000 -0.015838 -0.280156 +243 2.420000 -0.013158 -0.255707 +244 2.430000 -0.010724 -0.231130 +245 2.440000 -0.008536 -0.206436 +246 2.450000 -0.006596 -0.181639 +247 2.460000 -0.004903 -0.156750 +248 2.470000 -0.003461 -0.131782 +249 2.480000 -0.002268 -0.106747 +250 2.490000 -0.001326 -0.081659 +251 2.500000 -0.000635 -0.056530 +252 2.510000 -0.000195 -0.031372 +253 2.520000 -0.000008 -0.006199 +254 2.530000 0.000000 0.000000 +255 2.540000 0.000000 0.000000 +256 2.550000 0.000000 0.000000 +257 2.560000 0.000000 0.000000 +258 2.570000 0.000000 0.000000 +259 2.580000 0.000000 0.000000 +260 2.590000 0.000000 0.000000 +261 2.600000 0.000000 0.000000 +262 2.610000 0.000000 0.000000 +263 2.620000 0.000000 0.000000 +264 2.630000 0.000000 0.000000 +265 2.640000 0.000000 0.000000 +266 2.650000 0.000000 0.000000 +267 2.660000 0.000000 0.000000 +268 2.670000 0.000000 0.000000 +269 2.680000 0.000000 0.000000 +270 2.690000 0.000000 0.000000 +271 2.700000 0.000000 0.000000 +272 2.710000 0.000000 0.000000 +273 2.720000 0.000000 0.000000 +274 2.730000 0.000000 0.000000 +275 2.740000 0.000000 0.000000 +276 2.750000 0.000000 0.000000 +277 2.760000 0.000000 0.000000 +278 2.770000 0.000000 0.000000 +279 2.780000 0.000000 0.000000 +280 2.790000 0.000000 0.000000 +281 2.800000 0.000000 0.000000 +282 2.810000 0.000000 0.000000 +283 2.820000 0.000000 0.000000 +284 2.830000 0.000000 0.000000 +285 2.840000 0.000000 0.000000 +286 2.850000 0.000000 0.000000 +287 2.860000 0.000000 0.000000 +288 2.870000 0.000000 0.000000 +289 2.880000 0.000000 0.000000 +290 2.890000 0.000000 0.000000 +291 2.900000 0.000000 0.000000 +292 2.910000 0.000000 0.000000 +293 2.920000 0.000000 0.000000 +294 2.930000 0.000000 0.000000 +295 2.940000 0.000000 0.000000 +296 2.950000 0.000000 0.000000 +297 2.960000 0.000000 0.000000 +298 2.970000 0.000000 0.000000 +299 2.980000 0.000000 0.000000 +300 2.990000 0.000000 0.000000 +301 3.000000 0.000000 0.000000 + + +TAIL_TAIL_Wc_1.5 +N 301 R 0.000001 3.000000 + +1 0.000001 0.000000 0.000000 +2 0.010000 3999999999995999707725824.000000 4799999999997598070678224896.000000 +3 0.020000 976562499937500004352.000000 585937499981249777762304.000000 +4 0.030000 7526705687148720128.000000 3010682275956881096704.000000 +5 0.040000 238418578125000000.000000 71525573583984353280.000000 +6 0.050000 16383999744000000.000000 3932159969279997440.000000 +7 0.060000 1837574546257248.500000 367514917824838144.000000 +8 0.070000 288990429236596.312500 49541219354796968.000000 +9 0.080000 58207645654678.343750 8731147992610928.000000 +10 0.090000 14162817119182.900391 1888376117671434.750000 +11 0.100000 3999996000000.000000 479999760000000.500000 +12 0.110000 1274521012945.708496 139038779115662.093750 +13 0.120000 448625279546.553955 44862594934250.781250 +14 0.130000 171687100967.122345 15848078337188.726562 +15 0.140000 70553781072.250778 6047489716531.549805 +16 0.150000 30829035351.054977 2466336874723.629883 +17 0.160000 14210616296.622902 1065805162943.433594 +18 0.170000 6865346349.879549 484618532348.129211 +19 0.180000 3457603256.036191 230510803894.961182 +20 0.190000 1807158928.004511 114139038296.617722 +21 0.200000 976499999.999998 58591874999.999847 +22 0.210000 543739902.726732 31072184111.878654 +23 0.220000 311127628.299641 16971560078.724821 +24 0.230000 182499493.379421 9522417580.006592 +25 0.240000 109507052.064558 5475875881.316449 +26 0.250000 67092480.000000 3220832255.999991 +27 0.260000 41903049.941880 1934285732.237306 +28 0.270000 26639528.522336 1184208483.196407 +29 0.280000 17216873.260370 738043867.822060 +30 0.290000 11298625.429098 467668459.533016 +31 0.300000 7521218.724186 300958488.336427 +32 0.310000 5073808.319410 196492716.046068 +33 0.320000 3465721.661655 130034411.505164 +34 0.330000 2395143.138865 87152427.788625 +35 0.340000 1673561.082347 59112555.692539 +36 0.350000 1181528.973318 40546867.041137 +37 0.360000 842332.557402 28108378.157278 +38 0.370000 606071.119890 19681641.931764 +39 0.380000 439893.177446 13912339.662092 +40 0.390000 321924.360071 9922853.684245 +41 0.400000 237442.016602 7137908.935547 +42 0.410000 176435.450812 5176287.635225 +43 0.420000 132031.660059 3782743.515595 +44 0.430000 99468.250044 2784687.558254 +45 0.440000 75416.262744 2064324.130372 +46 0.450000 57529.220585 1540535.337797 +47 0.460000 44139.942254 1156983.644674 +48 0.470000 34054.846645 874222.695500 +49 0.480000 26413.181465 664417.646696 +50 0.490000 20589.881497 507780.654581 +51 0.500000 16128.000000 390144.000000 +52 0.510000 12691.351515 301294.396513 +53 0.520000 10031.077542 233820.872331 +54 0.530000 7961.876154 182311.949517 +55 0.540000 6344.988397 142792.224654 +56 0.550000 5075.941991 112324.247003 +57 0.560000 4075.667156 88725.341557 +58 0.570000 3284.018178 70364.910655 +59 0.580000 2655.022026 56018.454503 +60 0.590000 2153.374227 44761.819610 +61 0.600000 1751.840750 35894.153820 +62 0.610000 1429.321668 28881.467437 +63 0.620000 1169.400839 23315.070198 +64 0.630000 959.254371 18880.806522 +65 0.640000 788.825286 15336.170940 +66 0.650000 650.196650 12493.203783 +67 0.660000 537.113366 10205.647944 +68 0.670000 444.615844 8359.261950 +69 0.680000 368.758212 6864.481939 +70 0.690000 306.390715 5650.839586 +71 0.700000 254.991024 4662.698464 +72 0.710000 212.532986 3855.984565 +73 0.720000 177.384120 3195.669530 +74 0.730000 148.225307 2653.826099 +75 0.740000 123.987627 2208.120224 +76 0.750000 103.802544 1840.637693 +77 0.760000 86.962472 1536.967937 +78 0.770000 72.889471 1285.486272 +79 0.780000 61.110325 1076.789779 +80 0.790000 51.236635 903.252555 +81 0.800000 42.948872 758.673996 +82 0.810000 35.983576 637.999825 +83 0.820000 30.123043 537.100183 +84 0.830000 25.186999 452.592612 +85 0.840000 21.025860 381.700456 +86 0.850000 17.515264 322.139305 +87 0.860000 14.551619 272.025666 +88 0.870000 12.048476 229.803356 +89 0.880000 9.933566 194.184004 +90 0.890000 8.146368 164.098852 +91 0.900000 6.636119 138.659624 +92 0.910000 5.360169 117.126674 +93 0.920000 4.282632 98.883003 +94 0.930000 3.373272 83.413022 +95 0.940000 2.606573 70.285155 +96 0.950000 1.960975 59.137553 +97 0.960000 1.418239 49.666347 +98 0.970000 0.962916 41.615965 +99 0.980000 0.581905 34.771137 +100 0.990000 0.264083 28.950277 +101 1.000000 -0.000000 24.000000 +102 1.010000 -0.218384 19.790571 +103 1.020000 -0.397913 16.212117 +104 1.030000 -0.544418 13.171468 +105 1.040000 -0.662870 10.589529 +106 1.050000 -0.757512 8.399073 +107 1.060000 -0.831965 6.542902 +108 1.070000 -0.889321 4.972300 +109 1.080000 -0.932223 3.645731 +110 1.090000 -0.962930 2.527753 +111 1.100000 -0.983372 1.588095 +112 1.110000 -0.995200 0.800882 +113 1.120000 -0.999824 0.143980 +114 1.130000 -0.999938 -0.016532 +115 1.140000 -0.999663 -0.038456 +116 1.150000 -0.999169 -0.060364 +117 1.160000 -0.998456 -0.082245 +118 1.170000 -0.997524 -0.104090 +119 1.180000 -0.996374 -0.125890 +120 1.190000 -0.995006 -0.147634 +121 1.200000 -0.993421 -0.169313 +122 1.210000 -0.991620 -0.190918 +123 1.220000 -0.989603 -0.212440 +124 1.230000 -0.987372 -0.233868 +125 1.240000 -0.984926 -0.255194 +126 1.250000 -0.982268 -0.276407 +127 1.260000 -0.979399 -0.297500 +128 1.270000 -0.976319 -0.318462 +129 1.280000 -0.973030 -0.339284 +130 1.290000 -0.969533 -0.359958 +131 1.300000 -0.965831 -0.380473 +132 1.310000 -0.961925 -0.400822 +133 1.320000 -0.957815 -0.420995 +134 1.330000 -0.953505 -0.440983 +135 1.340000 -0.948996 -0.460778 +136 1.350000 -0.944290 -0.480371 +137 1.360000 -0.939390 -0.499753 +138 1.370000 -0.934296 -0.518915 +139 1.380000 -0.929012 -0.537851 +140 1.390000 -0.923540 -0.556550 +141 1.400000 -0.917882 -0.575005 +142 1.410000 -0.912041 -0.593208 +143 1.420000 -0.906019 -0.611151 +144 1.430000 -0.899818 -0.628825 +145 1.440000 -0.893443 -0.646224 +146 1.450000 -0.886895 -0.663339 +147 1.460000 -0.880177 -0.680164 +148 1.470000 -0.873293 -0.696690 +149 1.480000 -0.866244 -0.712910 +150 1.490000 -0.859035 -0.728818 +151 1.500000 -0.851669 -0.744406 +152 1.510000 -0.844148 -0.759668 +153 1.520000 -0.836477 -0.774596 +154 1.530000 -0.828658 -0.789184 +155 1.540000 -0.820694 -0.803427 +156 1.550000 -0.812590 -0.817317 +157 1.560000 -0.804349 -0.830848 +158 1.570000 -0.795975 -0.844015 +159 1.580000 -0.787470 -0.856812 +160 1.590000 -0.778840 -0.869233 +161 1.600000 -0.770087 -0.881273 +162 1.610000 -0.761215 -0.892926 +163 1.620000 -0.752229 -0.904188 +164 1.630000 -0.743133 -0.915053 +165 1.640000 -0.733930 -0.925516 +166 1.650000 -0.724624 -0.935574 +167 1.660000 -0.715220 -0.945221 +168 1.670000 -0.705721 -0.954454 +169 1.680000 -0.696132 -0.963267 +170 1.690000 -0.686457 -0.971659 +171 1.700000 -0.676700 -0.979624 +172 1.710000 -0.666866 -0.987160 +173 1.720000 -0.656958 -0.994262 +174 1.730000 -0.646982 -1.000929 +175 1.740000 -0.636941 -1.007156 +176 1.750000 -0.626841 -1.012942 +177 1.760000 -0.616684 -1.018283 +178 1.770000 -0.606476 -1.023177 +179 1.780000 -0.596222 -1.027623 +180 1.790000 -0.585925 -1.031618 +181 1.800000 -0.575591 -1.035161 +182 1.810000 -0.565224 -1.038249 +183 1.820000 -0.554828 -1.040883 +184 1.830000 -0.544408 -1.043059 +185 1.840000 -0.533968 -1.044778 +186 1.850000 -0.523514 -1.046039 +187 1.860000 -0.513049 -1.046841 +188 1.870000 -0.502578 -1.047184 +189 1.880000 -0.492107 -1.047067 +190 1.890000 -0.481638 -1.046491 +191 1.900000 -0.471178 -1.045456 +192 1.910000 -0.460731 -1.043963 +193 1.920000 -0.450301 -1.042011 +194 1.930000 -0.439892 -1.039603 +195 1.940000 -0.429510 -1.036739 +196 1.950000 -0.419159 -1.033419 +197 1.960000 -0.408843 -1.029647 +198 1.970000 -0.398567 -1.025423 +199 1.980000 -0.388336 -1.020749 +200 1.990000 -0.378154 -1.015627 +201 2.000000 -0.368025 -1.010060 +202 2.010000 -0.357954 -1.004050 +203 2.020000 -0.347946 -0.997599 +204 2.030000 -0.338004 -0.990711 +205 2.040000 -0.328133 -0.983389 +206 2.050000 -0.318337 -0.975635 +207 2.060000 -0.308622 -0.967453 +208 2.070000 -0.298990 -0.958846 +209 2.080000 -0.289446 -0.949819 +210 2.090000 -0.279995 -0.940376 +211 2.100000 -0.270640 -0.930520 +212 2.110000 -0.261386 -0.920255 +213 2.120000 -0.252236 -0.909588 +214 2.130000 -0.243195 -0.898521 +215 2.140000 -0.234267 -0.887060 +216 2.150000 -0.225455 -0.875210 +217 2.160000 -0.216764 -0.862976 +218 2.170000 -0.208197 -0.850363 +219 2.180000 -0.199758 -0.837378 +220 2.190000 -0.191451 -0.824025 +221 2.200000 -0.183279 -0.810311 +222 2.210000 -0.175246 -0.796241 +223 2.220000 -0.167355 -0.781822 +224 2.230000 -0.159610 -0.767060 +225 2.240000 -0.152015 -0.751962 +226 2.250000 -0.144572 -0.736534 +227 2.260000 -0.137285 -0.720783 +228 2.270000 -0.130158 -0.704715 +229 2.280000 -0.123192 -0.688339 +230 2.290000 -0.116392 -0.671661 +231 2.300000 -0.109760 -0.654688 +232 2.310000 -0.103299 -0.637427 +233 2.320000 -0.097012 -0.619888 +234 2.330000 -0.090902 -0.602076 +235 2.340000 -0.084972 -0.584000 +236 2.350000 -0.079223 -0.565668 +237 2.360000 -0.073659 -0.547088 +238 2.370000 -0.068282 -0.528268 +239 2.380000 -0.063095 -0.509216 +240 2.390000 -0.058099 -0.489941 +241 2.400000 -0.053296 -0.470451 +242 2.410000 -0.048690 -0.450755 +243 2.420000 -0.044282 -0.430861 +244 2.430000 -0.040074 -0.410778 +245 2.440000 -0.036067 -0.390515 +246 2.450000 -0.032264 -0.370080 +247 2.460000 -0.028666 -0.349483 +248 2.470000 -0.025275 -0.328733 +249 2.480000 -0.022092 -0.307839 +250 2.490000 -0.019118 -0.286809 +251 2.500000 -0.016356 -0.265654 +252 2.510000 -0.013806 -0.244382 +253 2.520000 -0.011469 -0.223004 +254 2.530000 -0.009346 -0.201527 +255 2.540000 -0.007439 -0.179962 +256 2.550000 -0.005747 -0.158318 +257 2.560000 -0.004272 -0.136604 +258 2.570000 -0.003015 -0.114831 +259 2.580000 -0.001976 -0.093007 +260 2.590000 -0.001155 -0.071142 +261 2.600000 -0.000553 -0.049247 +262 2.610000 -0.000170 -0.027329 +263 2.620000 -0.000007 -0.005400 +264 2.630000 0.000000 0.000000 +265 2.640000 0.000000 0.000000 +266 2.650000 0.000000 0.000000 +267 2.660000 0.000000 0.000000 +268 2.670000 0.000000 0.000000 +269 2.680000 0.000000 0.000000 +270 2.690000 0.000000 0.000000 +271 2.700000 0.000000 0.000000 +272 2.710000 0.000000 0.000000 +273 2.720000 0.000000 0.000000 +274 2.730000 0.000000 0.000000 +275 2.740000 0.000000 0.000000 +276 2.750000 0.000000 0.000000 +277 2.760000 0.000000 0.000000 +278 2.770000 0.000000 0.000000 +279 2.780000 0.000000 0.000000 +280 2.790000 0.000000 0.000000 +281 2.800000 0.000000 0.000000 +282 2.810000 0.000000 0.000000 +283 2.820000 0.000000 0.000000 +284 2.830000 0.000000 0.000000 +285 2.840000 0.000000 0.000000 +286 2.850000 0.000000 0.000000 +287 2.860000 0.000000 0.000000 +288 2.870000 0.000000 0.000000 +289 2.880000 0.000000 0.000000 +290 2.890000 0.000000 0.000000 +291 2.900000 0.000000 0.000000 +292 2.910000 0.000000 0.000000 +293 2.920000 0.000000 0.000000 +294 2.930000 0.000000 0.000000 +295 2.940000 0.000000 0.000000 +296 2.950000 0.000000 0.000000 +297 2.960000 0.000000 0.000000 +298 2.970000 0.000000 0.000000 +299 2.980000 0.000000 0.000000 +300 2.990000 0.000000 0.000000 +301 3.000000 0.000000 0.000000 + + +TAIL_TAIL_Wc_1.6 +N 301 R 0.000001 3.000000 + +1 0.000001 0.000000 0.000000 +2 0.010000 3999999999995999707725824.000000 4799999999997598070678224896.000000 +3 0.020000 976562499937500004352.000000 585937499981249777762304.000000 +4 0.030000 7526705687148720128.000000 3010682275956881096704.000000 +5 0.040000 238418578125000000.000000 71525573583984353280.000000 +6 0.050000 16383999744000000.000000 3932159969279997440.000000 +7 0.060000 1837574546257248.500000 367514917824838144.000000 +8 0.070000 288990429236596.312500 49541219354796968.000000 +9 0.080000 58207645654678.343750 8731147992610928.000000 +10 0.090000 14162817119182.900391 1888376117671434.750000 +11 0.100000 3999996000000.000000 479999760000000.500000 +12 0.110000 1274521012945.708496 139038779115662.093750 +13 0.120000 448625279546.553955 44862594934250.781250 +14 0.130000 171687100967.122345 15848078337188.726562 +15 0.140000 70553781072.250778 6047489716531.549805 +16 0.150000 30829035351.054977 2466336874723.629883 +17 0.160000 14210616296.622902 1065805162943.433594 +18 0.170000 6865346349.879549 484618532348.129211 +19 0.180000 3457603256.036191 230510803894.961182 +20 0.190000 1807158928.004511 114139038296.617722 +21 0.200000 976499999.999998 58591874999.999847 +22 0.210000 543739902.726732 31072184111.878654 +23 0.220000 311127628.299641 16971560078.724821 +24 0.230000 182499493.379421 9522417580.006592 +25 0.240000 109507052.064558 5475875881.316449 +26 0.250000 67092480.000000 3220832255.999991 +27 0.260000 41903049.941880 1934285732.237306 +28 0.270000 26639528.522336 1184208483.196407 +29 0.280000 17216873.260370 738043867.822060 +30 0.290000 11298625.429098 467668459.533016 +31 0.300000 7521218.724186 300958488.336427 +32 0.310000 5073808.319410 196492716.046068 +33 0.320000 3465721.661655 130034411.505164 +34 0.330000 2395143.138865 87152427.788625 +35 0.340000 1673561.082347 59112555.692539 +36 0.350000 1181528.973318 40546867.041137 +37 0.360000 842332.557402 28108378.157278 +38 0.370000 606071.119890 19681641.931764 +39 0.380000 439893.177446 13912339.662092 +40 0.390000 321924.360071 9922853.684245 +41 0.400000 237442.016602 7137908.935547 +42 0.410000 176435.450812 5176287.635225 +43 0.420000 132031.660059 3782743.515595 +44 0.430000 99468.250044 2784687.558254 +45 0.440000 75416.262744 2064324.130372 +46 0.450000 57529.220585 1540535.337797 +47 0.460000 44139.942254 1156983.644674 +48 0.470000 34054.846645 874222.695500 +49 0.480000 26413.181465 664417.646696 +50 0.490000 20589.881497 507780.654581 +51 0.500000 16128.000000 390144.000000 +52 0.510000 12691.351515 301294.396513 +53 0.520000 10031.077542 233820.872331 +54 0.530000 7961.876154 182311.949517 +55 0.540000 6344.988397 142792.224654 +56 0.550000 5075.941991 112324.247003 +57 0.560000 4075.667156 88725.341557 +58 0.570000 3284.018178 70364.910655 +59 0.580000 2655.022026 56018.454503 +60 0.590000 2153.374227 44761.819610 +61 0.600000 1751.840750 35894.153820 +62 0.610000 1429.321668 28881.467437 +63 0.620000 1169.400839 23315.070198 +64 0.630000 959.254371 18880.806522 +65 0.640000 788.825286 15336.170940 +66 0.650000 650.196650 12493.203783 +67 0.660000 537.113366 10205.647944 +68 0.670000 444.615844 8359.261950 +69 0.680000 368.758212 6864.481939 +70 0.690000 306.390715 5650.839586 +71 0.700000 254.991024 4662.698464 +72 0.710000 212.532986 3855.984565 +73 0.720000 177.384120 3195.669530 +74 0.730000 148.225307 2653.826099 +75 0.740000 123.987627 2208.120224 +76 0.750000 103.802544 1840.637693 +77 0.760000 86.962472 1536.967937 +78 0.770000 72.889471 1285.486272 +79 0.780000 61.110325 1076.789779 +80 0.790000 51.236635 903.252555 +81 0.800000 42.948872 758.673996 +82 0.810000 35.983576 637.999825 +83 0.820000 30.123043 537.100183 +84 0.830000 25.186999 452.592612 +85 0.840000 21.025860 381.700456 +86 0.850000 17.515264 322.139305 +87 0.860000 14.551619 272.025666 +88 0.870000 12.048476 229.803356 +89 0.880000 9.933566 194.184004 +90 0.890000 8.146368 164.098852 +91 0.900000 6.636119 138.659624 +92 0.910000 5.360169 117.126674 +93 0.920000 4.282632 98.883003 +94 0.930000 3.373272 83.413022 +95 0.940000 2.606573 70.285155 +96 0.950000 1.960975 59.137553 +97 0.960000 1.418239 49.666347 +98 0.970000 0.962916 41.615965 +99 0.980000 0.581905 34.771137 +100 0.990000 0.264083 28.950277 +101 1.000000 -0.000000 24.000000 +102 1.010000 -0.218384 19.790571 +103 1.020000 -0.397913 16.212117 +104 1.030000 -0.544418 13.171468 +105 1.040000 -0.662870 10.589529 +106 1.050000 -0.757512 8.399073 +107 1.060000 -0.831965 6.542902 +108 1.070000 -0.889321 4.972300 +109 1.080000 -0.932223 3.645731 +110 1.090000 -0.962930 2.527753 +111 1.100000 -0.983372 1.588095 +112 1.110000 -0.995200 0.800882 +113 1.120000 -0.999824 0.143980 +114 1.130000 -0.999945 -0.014530 +115 1.140000 -0.999704 -0.033800 +116 1.150000 -0.999269 -0.053058 +117 1.160000 -0.998642 -0.072295 +118 1.170000 -0.997823 -0.091504 +119 1.180000 -0.996813 -0.110678 +120 1.190000 -0.995610 -0.129809 +121 1.200000 -0.994217 -0.148890 +122 1.210000 -0.992632 -0.167914 +123 1.220000 -0.990858 -0.186872 +124 1.230000 -0.988895 -0.205759 +125 1.240000 -0.986744 -0.224567 +126 1.250000 -0.984404 -0.243288 +127 1.260000 -0.981878 -0.261915 +128 1.270000 -0.979166 -0.280441 +129 1.280000 -0.976270 -0.298859 +130 1.290000 -0.973189 -0.317162 +131 1.300000 -0.969927 -0.335343 +132 1.310000 -0.966483 -0.353394 +133 1.320000 -0.962859 -0.371309 +134 1.330000 -0.959057 -0.389081 +135 1.340000 -0.955078 -0.406703 +136 1.350000 -0.950924 -0.424169 +137 1.360000 -0.946595 -0.441470 +138 1.370000 -0.942095 -0.458602 +139 1.380000 -0.937424 -0.475556 +140 1.390000 -0.932584 -0.492328 +141 1.400000 -0.927578 -0.508909 +142 1.410000 -0.922407 -0.525294 +143 1.420000 -0.917073 -0.541477 +144 1.430000 -0.911578 -0.557451 +145 1.440000 -0.905925 -0.573211 +146 1.450000 -0.900115 -0.588749 +147 1.460000 -0.894150 -0.604060 +148 1.470000 -0.888034 -0.619138 +149 1.480000 -0.881768 -0.633978 +150 1.490000 -0.875355 -0.648573 +151 1.500000 -0.868798 -0.662918 +152 1.510000 -0.862098 -0.677008 +153 1.520000 -0.855258 -0.690836 +154 1.530000 -0.848282 -0.704399 +155 1.540000 -0.841171 -0.717689 +156 1.550000 -0.833929 -0.730703 +157 1.560000 -0.826558 -0.743436 +158 1.570000 -0.819061 -0.755882 +159 1.580000 -0.811442 -0.768036 +160 1.590000 -0.803702 -0.779894 +161 1.600000 -0.795845 -0.791452 +162 1.610000 -0.787874 -0.802704 +163 1.620000 -0.779792 -0.813647 +164 1.630000 -0.771602 -0.824276 +165 1.640000 -0.763307 -0.834588 +166 1.650000 -0.754911 -0.844578 +167 1.660000 -0.746417 -0.854242 +168 1.670000 -0.737827 -0.863577 +169 1.680000 -0.729146 -0.872579 +170 1.690000 -0.720377 -0.881244 +171 1.700000 -0.711522 -0.889570 +172 1.710000 -0.702587 -0.897553 +173 1.720000 -0.693573 -0.905190 +174 1.730000 -0.684484 -0.912478 +175 1.740000 -0.675324 -0.919414 +176 1.750000 -0.666097 -0.925995 +177 1.760000 -0.656805 -0.932220 +178 1.770000 -0.647454 -0.938085 +179 1.780000 -0.638045 -0.943589 +180 1.790000 -0.628583 -0.948729 +181 1.800000 -0.619072 -0.953503 +182 1.810000 -0.609514 -0.957909 +183 1.820000 -0.599915 -0.961947 +184 1.830000 -0.590277 -0.965613 +185 1.840000 -0.580604 -0.968907 +186 1.850000 -0.570900 -0.971828 +187 1.860000 -0.561168 -0.974373 +188 1.870000 -0.551413 -0.976544 +189 1.880000 -0.541639 -0.978338 +190 1.890000 -0.531848 -0.979754 +191 1.900000 -0.522045 -0.980793 +192 1.910000 -0.512233 -0.981454 +193 1.920000 -0.502417 -0.981736 +194 1.930000 -0.492600 -0.981640 +195 1.940000 -0.482786 -0.981166 +196 1.950000 -0.472978 -0.980313 +197 1.960000 -0.463181 -0.979082 +198 1.970000 -0.453397 -0.977474 +199 1.980000 -0.443632 -0.975489 +200 1.990000 -0.433889 -0.973128 +201 2.000000 -0.424171 -0.970392 +202 2.010000 -0.414482 -0.967282 +203 2.020000 -0.404827 -0.963798 +204 2.030000 -0.395208 -0.959944 +205 2.040000 -0.385629 -0.955719 +206 2.050000 -0.376094 -0.951125 +207 2.060000 -0.366608 -0.946165 +208 2.070000 -0.357172 -0.940841 +209 2.080000 -0.347792 -0.935153 +210 2.090000 -0.338471 -0.929105 +211 2.100000 -0.329211 -0.922699 +212 2.110000 -0.320018 -0.915937 +213 2.120000 -0.310894 -0.908822 +214 2.130000 -0.301842 -0.901357 +215 2.140000 -0.292868 -0.893544 +216 2.150000 -0.283973 -0.885387 +217 2.160000 -0.275161 -0.876888 +218 2.170000 -0.266436 -0.868051 +219 2.180000 -0.257801 -0.858880 +220 2.190000 -0.249260 -0.849377 +221 2.200000 -0.240815 -0.839548 +222 2.210000 -0.232470 -0.829394 +223 2.220000 -0.224228 -0.818921 +224 2.230000 -0.216092 -0.808132 +225 2.240000 -0.208066 -0.797031 +226 2.250000 -0.200153 -0.785623 +227 2.260000 -0.192355 -0.773912 +228 2.270000 -0.184676 -0.761903 +229 2.280000 -0.177118 -0.749600 +230 2.290000 -0.169684 -0.737009 +231 2.300000 -0.162379 -0.724133 +232 2.310000 -0.155203 -0.710977 +233 2.320000 -0.148160 -0.697548 +234 2.330000 -0.141253 -0.683850 +235 2.340000 -0.134484 -0.669888 +236 2.350000 -0.127856 -0.655668 +237 2.360000 -0.121371 -0.641196 +238 2.370000 -0.115033 -0.626476 +239 2.380000 -0.108843 -0.611514 +240 2.390000 -0.102803 -0.596317 +241 2.400000 -0.096917 -0.580890 +242 2.410000 -0.091186 -0.565239 +243 2.420000 -0.085613 -0.549370 +244 2.430000 -0.080199 -0.533289 +245 2.440000 -0.074948 -0.517002 +246 2.450000 -0.069860 -0.500517 +247 2.460000 -0.064938 -0.483838 +248 2.470000 -0.060184 -0.466973 +249 2.480000 -0.055599 -0.449928 +250 2.490000 -0.051186 -0.432709 +251 2.500000 -0.046946 -0.415323 +252 2.510000 -0.042880 -0.397778 +253 2.520000 -0.038991 -0.380079 +254 2.530000 -0.035279 -0.362233 +255 2.540000 -0.031746 -0.344248 +256 2.550000 -0.028394 -0.326130 +257 2.560000 -0.025224 -0.307887 +258 2.570000 -0.022237 -0.289525 +259 2.580000 -0.019434 -0.271051 +260 2.590000 -0.016816 -0.252472 +261 2.600000 -0.014385 -0.233797 +262 2.610000 -0.012141 -0.215031 +263 2.620000 -0.010085 -0.196182 +264 2.630000 -0.008217 -0.177258 +265 2.640000 -0.006540 -0.158265 +266 2.650000 -0.005052 -0.139211 +267 2.660000 -0.003756 -0.120104 +268 2.670000 -0.002650 -0.100950 +269 2.680000 -0.001737 -0.081757 +270 2.690000 -0.001015 -0.062533 +271 2.700000 -0.000486 -0.043285 +272 2.710000 -0.000150 -0.024020 +273 2.720000 -0.000006 -0.004746 +274 2.730000 0.000000 0.000000 +275 2.740000 0.000000 0.000000 +276 2.750000 0.000000 0.000000 +277 2.760000 0.000000 0.000000 +278 2.770000 0.000000 0.000000 +279 2.780000 0.000000 0.000000 +280 2.790000 0.000000 0.000000 +281 2.800000 0.000000 0.000000 +282 2.810000 0.000000 0.000000 +283 2.820000 0.000000 0.000000 +284 2.830000 0.000000 0.000000 +285 2.840000 0.000000 0.000000 +286 2.850000 0.000000 0.000000 +287 2.860000 0.000000 0.000000 +288 2.870000 0.000000 0.000000 +289 2.880000 0.000000 0.000000 +290 2.890000 0.000000 0.000000 +291 2.900000 0.000000 0.000000 +292 2.910000 0.000000 0.000000 +293 2.920000 0.000000 0.000000 +294 2.930000 0.000000 0.000000 +295 2.940000 0.000000 0.000000 +296 2.950000 0.000000 0.000000 +297 2.960000 0.000000 0.000000 +298 2.970000 0.000000 0.000000 +299 2.980000 0.000000 0.000000 +300 2.990000 0.000000 0.000000 +301 3.000000 0.000000 0.000000 + + +TAIL_TAIL_Wc_1.7 +N 301 R 0.000001 3.000000 + +1 0.000001 0.000000 0.000000 +2 0.010000 3999999999995999707725824.000000 4799999999997598070678224896.000000 +3 0.020000 976562499937500004352.000000 585937499981249777762304.000000 +4 0.030000 7526705687148720128.000000 3010682275956881096704.000000 +5 0.040000 238418578125000000.000000 71525573583984353280.000000 +6 0.050000 16383999744000000.000000 3932159969279997440.000000 +7 0.060000 1837574546257248.500000 367514917824838144.000000 +8 0.070000 288990429236596.312500 49541219354796968.000000 +9 0.080000 58207645654678.343750 8731147992610928.000000 +10 0.090000 14162817119182.900391 1888376117671434.750000 +11 0.100000 3999996000000.000000 479999760000000.500000 +12 0.110000 1274521012945.708496 139038779115662.093750 +13 0.120000 448625279546.553955 44862594934250.781250 +14 0.130000 171687100967.122345 15848078337188.726562 +15 0.140000 70553781072.250778 6047489716531.549805 +16 0.150000 30829035351.054977 2466336874723.629883 +17 0.160000 14210616296.622902 1065805162943.433594 +18 0.170000 6865346349.879549 484618532348.129211 +19 0.180000 3457603256.036191 230510803894.961182 +20 0.190000 1807158928.004511 114139038296.617722 +21 0.200000 976499999.999998 58591874999.999847 +22 0.210000 543739902.726732 31072184111.878654 +23 0.220000 311127628.299641 16971560078.724821 +24 0.230000 182499493.379421 9522417580.006592 +25 0.240000 109507052.064558 5475875881.316449 +26 0.250000 67092480.000000 3220832255.999991 +27 0.260000 41903049.941880 1934285732.237306 +28 0.270000 26639528.522336 1184208483.196407 +29 0.280000 17216873.260370 738043867.822060 +30 0.290000 11298625.429098 467668459.533016 +31 0.300000 7521218.724186 300958488.336427 +32 0.310000 5073808.319410 196492716.046068 +33 0.320000 3465721.661655 130034411.505164 +34 0.330000 2395143.138865 87152427.788625 +35 0.340000 1673561.082347 59112555.692539 +36 0.350000 1181528.973318 40546867.041137 +37 0.360000 842332.557402 28108378.157278 +38 0.370000 606071.119890 19681641.931764 +39 0.380000 439893.177446 13912339.662092 +40 0.390000 321924.360071 9922853.684245 +41 0.400000 237442.016602 7137908.935547 +42 0.410000 176435.450812 5176287.635225 +43 0.420000 132031.660059 3782743.515595 +44 0.430000 99468.250044 2784687.558254 +45 0.440000 75416.262744 2064324.130372 +46 0.450000 57529.220585 1540535.337797 +47 0.460000 44139.942254 1156983.644674 +48 0.470000 34054.846645 874222.695500 +49 0.480000 26413.181465 664417.646696 +50 0.490000 20589.881497 507780.654581 +51 0.500000 16128.000000 390144.000000 +52 0.510000 12691.351515 301294.396513 +53 0.520000 10031.077542 233820.872331 +54 0.530000 7961.876154 182311.949517 +55 0.540000 6344.988397 142792.224654 +56 0.550000 5075.941991 112324.247003 +57 0.560000 4075.667156 88725.341557 +58 0.570000 3284.018178 70364.910655 +59 0.580000 2655.022026 56018.454503 +60 0.590000 2153.374227 44761.819610 +61 0.600000 1751.840750 35894.153820 +62 0.610000 1429.321668 28881.467437 +63 0.620000 1169.400839 23315.070198 +64 0.630000 959.254371 18880.806522 +65 0.640000 788.825286 15336.170940 +66 0.650000 650.196650 12493.203783 +67 0.660000 537.113366 10205.647944 +68 0.670000 444.615844 8359.261950 +69 0.680000 368.758212 6864.481939 +70 0.690000 306.390715 5650.839586 +71 0.700000 254.991024 4662.698464 +72 0.710000 212.532986 3855.984565 +73 0.720000 177.384120 3195.669530 +74 0.730000 148.225307 2653.826099 +75 0.740000 123.987627 2208.120224 +76 0.750000 103.802544 1840.637693 +77 0.760000 86.962472 1536.967937 +78 0.770000 72.889471 1285.486272 +79 0.780000 61.110325 1076.789779 +80 0.790000 51.236635 903.252555 +81 0.800000 42.948872 758.673996 +82 0.810000 35.983576 637.999825 +83 0.820000 30.123043 537.100183 +84 0.830000 25.186999 452.592612 +85 0.840000 21.025860 381.700456 +86 0.850000 17.515264 322.139305 +87 0.860000 14.551619 272.025666 +88 0.870000 12.048476 229.803356 +89 0.880000 9.933566 194.184004 +90 0.890000 8.146368 164.098852 +91 0.900000 6.636119 138.659624 +92 0.910000 5.360169 117.126674 +93 0.920000 4.282632 98.883003 +94 0.930000 3.373272 83.413022 +95 0.940000 2.606573 70.285155 +96 0.950000 1.960975 59.137553 +97 0.960000 1.418239 49.666347 +98 0.970000 0.962916 41.615965 +99 0.980000 0.581905 34.771137 +100 0.990000 0.264083 28.950277 +101 1.000000 -0.000000 24.000000 +102 1.010000 -0.218384 19.790571 +103 1.020000 -0.397913 16.212117 +104 1.030000 -0.544418 13.171468 +105 1.040000 -0.662870 10.589529 +106 1.050000 -0.757512 8.399073 +107 1.060000 -0.831965 6.542902 +108 1.070000 -0.889321 4.972300 +109 1.080000 -0.932223 3.645731 +110 1.090000 -0.962930 2.527753 +111 1.100000 -0.983372 1.588095 +112 1.110000 -0.995200 0.800882 +113 1.120000 -0.999824 0.143980 +114 1.130000 -0.999951 -0.012871 +115 1.140000 -0.999737 -0.029942 +116 1.150000 -0.999353 -0.047002 +117 1.160000 -0.998797 -0.064046 +118 1.170000 -0.998072 -0.081069 +119 1.180000 -0.997176 -0.098064 +120 1.190000 -0.996111 -0.115025 +121 1.200000 -0.994876 -0.131947 +122 1.210000 -0.993472 -0.148824 +123 1.220000 -0.991899 -0.165650 +124 1.230000 -0.990159 -0.182419 +125 1.240000 -0.988251 -0.199127 +126 1.250000 -0.986177 -0.215766 +127 1.260000 -0.983936 -0.232332 +128 1.270000 -0.981530 -0.248818 +129 1.280000 -0.978960 -0.265219 +130 1.290000 -0.976226 -0.281530 +131 1.300000 -0.973330 -0.297744 +132 1.310000 -0.970272 -0.313857 +133 1.320000 -0.967053 -0.329863 +134 1.330000 -0.963675 -0.345756 +135 1.340000 -0.960138 -0.361531 +136 1.350000 -0.956445 -0.377182 +137 1.360000 -0.952595 -0.392705 +138 1.370000 -0.948591 -0.408094 +139 1.380000 -0.944434 -0.423343 +140 1.390000 -0.940125 -0.438448 +141 1.400000 -0.935665 -0.453403 +142 1.410000 -0.931057 -0.468203 +143 1.420000 -0.926302 -0.482843 +144 1.430000 -0.921401 -0.497318 +145 1.440000 -0.916356 -0.511624 +146 1.450000 -0.911169 -0.525754 +147 1.460000 -0.905841 -0.539706 +148 1.470000 -0.900375 -0.553472 +149 1.480000 -0.894773 -0.567050 +150 1.490000 -0.889035 -0.580435 +151 1.500000 -0.883165 -0.593621 +152 1.510000 -0.877163 -0.606604 +153 1.520000 -0.871033 -0.619380 +154 1.530000 -0.864776 -0.631945 +155 1.540000 -0.858395 -0.644294 +156 1.550000 -0.851891 -0.656422 +157 1.560000 -0.845267 -0.668327 +158 1.570000 -0.838526 -0.680003 +159 1.580000 -0.831668 -0.691448 +160 1.590000 -0.824697 -0.702656 +161 1.600000 -0.817616 -0.713624 +162 1.610000 -0.810426 -0.724348 +163 1.620000 -0.803130 -0.734825 +164 1.630000 -0.795730 -0.745051 +165 1.640000 -0.788229 -0.755023 +166 1.650000 -0.780630 -0.764737 +167 1.660000 -0.772936 -0.774189 +168 1.670000 -0.765148 -0.783378 +169 1.680000 -0.757269 -0.792298 +170 1.690000 -0.749302 -0.800948 +171 1.700000 -0.741251 -0.809325 +172 1.710000 -0.733117 -0.817425 +173 1.720000 -0.724903 -0.825246 +174 1.730000 -0.716613 -0.832786 +175 1.740000 -0.708249 -0.840041 +176 1.750000 -0.699813 -0.847009 +177 1.760000 -0.691309 -0.853687 +178 1.770000 -0.682740 -0.860075 +179 1.780000 -0.674109 -0.866168 +180 1.790000 -0.665418 -0.871966 +181 1.800000 -0.656670 -0.877466 +182 1.810000 -0.647870 -0.882666 +183 1.820000 -0.639018 -0.887565 +184 1.830000 -0.630119 -0.892161 +185 1.840000 -0.621176 -0.896452 +186 1.850000 -0.612191 -0.900437 +187 1.860000 -0.603168 -0.904114 +188 1.870000 -0.594110 -0.907483 +189 1.880000 -0.585020 -0.910542 +190 1.890000 -0.575900 -0.913290 +191 1.900000 -0.566755 -0.915726 +192 1.910000 -0.557587 -0.917849 +193 1.920000 -0.548399 -0.919659 +194 1.930000 -0.539195 -0.921155 +195 1.940000 -0.529977 -0.922336 +196 1.950000 -0.520749 -0.923202 +197 1.960000 -0.511514 -0.923753 +198 1.970000 -0.502275 -0.923988 +199 1.980000 -0.493035 -0.923908 +200 1.990000 -0.483798 -0.923513 +201 2.000000 -0.474566 -0.922802 +202 2.010000 -0.465343 -0.921776 +203 2.020000 -0.456132 -0.920435 +204 2.030000 -0.446935 -0.918779 +205 2.040000 -0.437757 -0.916810 +206 2.050000 -0.428600 -0.914528 +207 2.060000 -0.419467 -0.911934 +208 2.070000 -0.410362 -0.909028 +209 2.080000 -0.401288 -0.905812 +210 2.090000 -0.392247 -0.902286 +211 2.100000 -0.383243 -0.898453 +212 2.110000 -0.374279 -0.894312 +213 2.120000 -0.365358 -0.889866 +214 2.130000 -0.356483 -0.885116 +215 2.140000 -0.347657 -0.880064 +216 2.150000 -0.338883 -0.874712 +217 2.160000 -0.330163 -0.869060 +218 2.170000 -0.321502 -0.863112 +219 2.180000 -0.312902 -0.856869 +220 2.190000 -0.304366 -0.850334 +221 2.200000 -0.295896 -0.843508 +222 2.210000 -0.287497 -0.836394 +223 2.220000 -0.279170 -0.828994 +224 2.230000 -0.270918 -0.821312 +225 2.240000 -0.262744 -0.813348 +226 2.250000 -0.254652 -0.805108 +227 2.260000 -0.246643 -0.796592 +228 2.270000 -0.238721 -0.787804 +229 2.280000 -0.230888 -0.778747 +230 2.290000 -0.223147 -0.769424 +231 2.300000 -0.215500 -0.759838 +232 2.310000 -0.207951 -0.749993 +233 2.320000 -0.200501 -0.739892 +234 2.330000 -0.193154 -0.729538 +235 2.340000 -0.185911 -0.718935 +236 2.350000 -0.178776 -0.708087 +237 2.360000 -0.171750 -0.696996 +238 2.370000 -0.164837 -0.685668 +239 2.380000 -0.158038 -0.674105 +240 2.390000 -0.151356 -0.662313 +241 2.400000 -0.144792 -0.650294 +242 2.410000 -0.138350 -0.638053 +243 2.420000 -0.132032 -0.625594 +244 2.430000 -0.125839 -0.612921 +245 2.440000 -0.119774 -0.600039 +246 2.450000 -0.113839 -0.586953 +247 2.460000 -0.108036 -0.573665 +248 2.470000 -0.102366 -0.560182 +249 2.480000 -0.096833 -0.546508 +250 2.490000 -0.091437 -0.532647 +251 2.500000 -0.086181 -0.518604 +252 2.510000 -0.081065 -0.504384 +253 2.520000 -0.076093 -0.489991 +254 2.530000 -0.071266 -0.475432 +255 2.540000 -0.066585 -0.460710 +256 2.550000 -0.062052 -0.445831 +257 2.560000 -0.057669 -0.430799 +258 2.570000 -0.053437 -0.415620 +259 2.580000 -0.049357 -0.400300 +260 2.590000 -0.045431 -0.384842 +261 2.600000 -0.041661 -0.369254 +262 2.610000 -0.038047 -0.353539 +263 2.620000 -0.034591 -0.337703 +264 2.630000 -0.031293 -0.321752 +265 2.640000 -0.028156 -0.305692 +266 2.650000 -0.025180 -0.289526 +267 2.660000 -0.022366 -0.273262 +268 2.670000 -0.019715 -0.256905 +269 2.680000 -0.017228 -0.240460 +270 2.690000 -0.014906 -0.223933 +271 2.700000 -0.012749 -0.207329 +272 2.710000 -0.010759 -0.190654 +273 2.720000 -0.008937 -0.173915 +274 2.730000 -0.007281 -0.157116 +275 2.740000 -0.005794 -0.140263 +276 2.750000 -0.004476 -0.123363 +277 2.760000 -0.003327 -0.106420 +278 2.770000 -0.002348 -0.089441 +279 2.780000 -0.001539 -0.072431 +280 2.790000 -0.000899 -0.055397 +281 2.800000 -0.000431 -0.038344 +282 2.810000 -0.000133 -0.021278 +283 2.820000 -0.000005 -0.004204 +284 2.830000 0.000000 0.000000 +285 2.840000 0.000000 0.000000 +286 2.850000 0.000000 0.000000 +287 2.860000 0.000000 0.000000 +288 2.870000 0.000000 0.000000 +289 2.880000 0.000000 0.000000 +290 2.890000 0.000000 0.000000 +291 2.900000 0.000000 0.000000 +292 2.910000 0.000000 0.000000 +293 2.920000 0.000000 0.000000 +294 2.930000 0.000000 0.000000 +295 2.940000 0.000000 0.000000 +296 2.950000 0.000000 0.000000 +297 2.960000 0.000000 0.000000 +298 2.970000 0.000000 0.000000 +299 2.980000 0.000000 0.000000 +300 2.990000 0.000000 0.000000 +301 3.000000 0.000000 0.000000 + + +TAIL_TAIL_Wc_1.8 +N 301 R 0.000001 3.000000 + +1 0.000001 0.000000 0.000000 +2 0.010000 3999999999995999707725824.000000 4799999999997598070678224896.000000 +3 0.020000 976562499937500004352.000000 585937499981249777762304.000000 +4 0.030000 7526705687148720128.000000 3010682275956881096704.000000 +5 0.040000 238418578125000000.000000 71525573583984353280.000000 +6 0.050000 16383999744000000.000000 3932159969279997440.000000 +7 0.060000 1837574546257248.500000 367514917824838144.000000 +8 0.070000 288990429236596.312500 49541219354796968.000000 +9 0.080000 58207645654678.343750 8731147992610928.000000 +10 0.090000 14162817119182.900391 1888376117671434.750000 +11 0.100000 3999996000000.000000 479999760000000.500000 +12 0.110000 1274521012945.708496 139038779115662.093750 +13 0.120000 448625279546.553955 44862594934250.781250 +14 0.130000 171687100967.122345 15848078337188.726562 +15 0.140000 70553781072.250778 6047489716531.549805 +16 0.150000 30829035351.054977 2466336874723.629883 +17 0.160000 14210616296.622902 1065805162943.433594 +18 0.170000 6865346349.879549 484618532348.129211 +19 0.180000 3457603256.036191 230510803894.961182 +20 0.190000 1807158928.004511 114139038296.617722 +21 0.200000 976499999.999998 58591874999.999847 +22 0.210000 543739902.726732 31072184111.878654 +23 0.220000 311127628.299641 16971560078.724821 +24 0.230000 182499493.379421 9522417580.006592 +25 0.240000 109507052.064558 5475875881.316449 +26 0.250000 67092480.000000 3220832255.999991 +27 0.260000 41903049.941880 1934285732.237306 +28 0.270000 26639528.522336 1184208483.196407 +29 0.280000 17216873.260370 738043867.822060 +30 0.290000 11298625.429098 467668459.533016 +31 0.300000 7521218.724186 300958488.336427 +32 0.310000 5073808.319410 196492716.046068 +33 0.320000 3465721.661655 130034411.505164 +34 0.330000 2395143.138865 87152427.788625 +35 0.340000 1673561.082347 59112555.692539 +36 0.350000 1181528.973318 40546867.041137 +37 0.360000 842332.557402 28108378.157278 +38 0.370000 606071.119890 19681641.931764 +39 0.380000 439893.177446 13912339.662092 +40 0.390000 321924.360071 9922853.684245 +41 0.400000 237442.016602 7137908.935547 +42 0.410000 176435.450812 5176287.635225 +43 0.420000 132031.660059 3782743.515595 +44 0.430000 99468.250044 2784687.558254 +45 0.440000 75416.262744 2064324.130372 +46 0.450000 57529.220585 1540535.337797 +47 0.460000 44139.942254 1156983.644674 +48 0.470000 34054.846645 874222.695500 +49 0.480000 26413.181465 664417.646696 +50 0.490000 20589.881497 507780.654581 +51 0.500000 16128.000000 390144.000000 +52 0.510000 12691.351515 301294.396513 +53 0.520000 10031.077542 233820.872331 +54 0.530000 7961.876154 182311.949517 +55 0.540000 6344.988397 142792.224654 +56 0.550000 5075.941991 112324.247003 +57 0.560000 4075.667156 88725.341557 +58 0.570000 3284.018178 70364.910655 +59 0.580000 2655.022026 56018.454503 +60 0.590000 2153.374227 44761.819610 +61 0.600000 1751.840750 35894.153820 +62 0.610000 1429.321668 28881.467437 +63 0.620000 1169.400839 23315.070198 +64 0.630000 959.254371 18880.806522 +65 0.640000 788.825286 15336.170940 +66 0.650000 650.196650 12493.203783 +67 0.660000 537.113366 10205.647944 +68 0.670000 444.615844 8359.261950 +69 0.680000 368.758212 6864.481939 +70 0.690000 306.390715 5650.839586 +71 0.700000 254.991024 4662.698464 +72 0.710000 212.532986 3855.984565 +73 0.720000 177.384120 3195.669530 +74 0.730000 148.225307 2653.826099 +75 0.740000 123.987627 2208.120224 +76 0.750000 103.802544 1840.637693 +77 0.760000 86.962472 1536.967937 +78 0.770000 72.889471 1285.486272 +79 0.780000 61.110325 1076.789779 +80 0.790000 51.236635 903.252555 +81 0.800000 42.948872 758.673996 +82 0.810000 35.983576 637.999825 +83 0.820000 30.123043 537.100183 +84 0.830000 25.186999 452.592612 +85 0.840000 21.025860 381.700456 +86 0.850000 17.515264 322.139305 +87 0.860000 14.551619 272.025666 +88 0.870000 12.048476 229.803356 +89 0.880000 9.933566 194.184004 +90 0.890000 8.146368 164.098852 +91 0.900000 6.636119 138.659624 +92 0.910000 5.360169 117.126674 +93 0.920000 4.282632 98.883003 +94 0.930000 3.373272 83.413022 +95 0.940000 2.606573 70.285155 +96 0.950000 1.960975 59.137553 +97 0.960000 1.418239 49.666347 +98 0.970000 0.962916 41.615965 +99 0.980000 0.581905 34.771137 +100 0.990000 0.264083 28.950277 +101 1.000000 -0.000000 24.000000 +102 1.010000 -0.218384 19.790571 +103 1.020000 -0.397913 16.212117 +104 1.030000 -0.544418 13.171468 +105 1.040000 -0.662870 10.589529 +106 1.050000 -0.757512 8.399073 +107 1.060000 -0.831965 6.542902 +108 1.070000 -0.889321 4.972300 +109 1.080000 -0.932223 3.645731 +110 1.090000 -0.962930 2.527753 +111 1.100000 -0.983372 1.588095 +112 1.110000 -0.995200 0.800882 +113 1.120000 -0.999824 0.143980 +114 1.130000 -0.999957 -0.011481 +115 1.140000 -0.999766 -0.026708 +116 1.150000 -0.999423 -0.041927 +117 1.160000 -0.998927 -0.057133 +118 1.170000 -0.998280 -0.072321 +119 1.180000 -0.997481 -0.087488 +120 1.190000 -0.996530 -0.102628 +121 1.200000 -0.995428 -0.117737 +122 1.210000 -0.994176 -0.132810 +123 1.220000 -0.992772 -0.147842 +124 1.230000 -0.991219 -0.162830 +125 1.240000 -0.989516 -0.177768 +126 1.250000 -0.987664 -0.192651 +127 1.260000 -0.985663 -0.207476 +128 1.270000 -0.983515 -0.222238 +129 1.280000 -0.981219 -0.236932 +130 1.290000 -0.978776 -0.251554 +131 1.300000 -0.976188 -0.266099 +132 1.310000 -0.973454 -0.280564 +133 1.320000 -0.970577 -0.294942 +134 1.330000 -0.967556 -0.309231 +135 1.340000 -0.964393 -0.323426 +136 1.350000 -0.961088 -0.337522 +137 1.360000 -0.957642 -0.351516 +138 1.370000 -0.954058 -0.365402 +139 1.380000 -0.950335 -0.379177 +140 1.390000 -0.946475 -0.392837 +141 1.400000 -0.942478 -0.406376 +142 1.410000 -0.938347 -0.419793 +143 1.420000 -0.934083 -0.433081 +144 1.430000 -0.929686 -0.446237 +145 1.440000 -0.925159 -0.459257 +146 1.450000 -0.920502 -0.472138 +147 1.460000 -0.915716 -0.484875 +148 1.470000 -0.910805 -0.497464 +149 1.480000 -0.905768 -0.509901 +150 1.490000 -0.900607 -0.522183 +151 1.500000 -0.895325 -0.534306 +152 1.510000 -0.889922 -0.546266 +153 1.520000 -0.884400 -0.558060 +154 1.530000 -0.878761 -0.569684 +155 1.540000 -0.873007 -0.581134 +156 1.550000 -0.867139 -0.592408 +157 1.560000 -0.861159 -0.603501 +158 1.570000 -0.855069 -0.614410 +159 1.580000 -0.848872 -0.625132 +160 1.590000 -0.842567 -0.635663 +161 1.600000 -0.836159 -0.646001 +162 1.610000 -0.829648 -0.656142 +163 1.620000 -0.823037 -0.666083 +164 1.630000 -0.816327 -0.675822 +165 1.640000 -0.809521 -0.685354 +166 1.650000 -0.802621 -0.694678 +167 1.660000 -0.795628 -0.703790 +168 1.670000 -0.788546 -0.712688 +169 1.680000 -0.781375 -0.721368 +170 1.690000 -0.774119 -0.729829 +171 1.700000 -0.766779 -0.738068 +172 1.710000 -0.759358 -0.746081 +173 1.720000 -0.751858 -0.753868 +174 1.730000 -0.744282 -0.761425 +175 1.740000 -0.736631 -0.768750 +176 1.750000 -0.728908 -0.775840 +177 1.760000 -0.721115 -0.782695 +178 1.770000 -0.713254 -0.789311 +179 1.780000 -0.705329 -0.795686 +180 1.790000 -0.697341 -0.801819 +181 1.800000 -0.689294 -0.807708 +182 1.810000 -0.681188 -0.813351 +183 1.820000 -0.673027 -0.818746 +184 1.830000 -0.664814 -0.823892 +185 1.840000 -0.656550 -0.828787 +186 1.850000 -0.648239 -0.833429 +187 1.860000 -0.639883 -0.837818 +188 1.870000 -0.631484 -0.841951 +189 1.880000 -0.623045 -0.845828 +190 1.890000 -0.614568 -0.849447 +191 1.900000 -0.606056 -0.852807 +192 1.910000 -0.597513 -0.855908 +193 1.920000 -0.588939 -0.858748 +194 1.930000 -0.580339 -0.861326 +195 1.940000 -0.571714 -0.863642 +196 1.950000 -0.563067 -0.865695 +197 1.960000 -0.554401 -0.867484 +198 1.970000 -0.545718 -0.869009 +199 1.980000 -0.537021 -0.870269 +200 1.990000 -0.528313 -0.871264 +201 2.000000 -0.519597 -0.871994 +202 2.010000 -0.510874 -0.872458 +203 2.020000 -0.502149 -0.872657 +204 2.030000 -0.493422 -0.872589 +205 2.040000 -0.484698 -0.872256 +206 2.050000 -0.475978 -0.871657 +207 2.060000 -0.467265 -0.870792 +208 2.070000 -0.458563 -0.869663 +209 2.080000 -0.449873 -0.868268 +210 2.090000 -0.441198 -0.866609 +211 2.100000 -0.432542 -0.864686 +212 2.110000 -0.423906 -0.862499 +213 2.120000 -0.415293 -0.860050 +214 2.130000 -0.406705 -0.857339 +215 2.140000 -0.398147 -0.854367 +216 2.150000 -0.389619 -0.851134 +217 2.160000 -0.381125 -0.847642 +218 2.170000 -0.372667 -0.843892 +219 2.180000 -0.364248 -0.839885 +220 2.190000 -0.355870 -0.835622 +221 2.200000 -0.347536 -0.831105 +222 2.210000 -0.339249 -0.826334 +223 2.220000 -0.331010 -0.821311 +224 2.230000 -0.322824 -0.816039 +225 2.240000 -0.314691 -0.810518 +226 2.250000 -0.306614 -0.804750 +227 2.260000 -0.298596 -0.798737 +228 2.270000 -0.290640 -0.792480 +229 2.280000 -0.282748 -0.785982 +230 2.290000 -0.274921 -0.779245 +231 2.300000 -0.267163 -0.772270 +232 2.310000 -0.259477 -0.765061 +233 2.320000 -0.251863 -0.757618 +234 2.330000 -0.244325 -0.749944 +235 2.340000 -0.236865 -0.742042 +236 2.350000 -0.229485 -0.733914 +237 2.360000 -0.222187 -0.725562 +238 2.370000 -0.214974 -0.716989 +239 2.380000 -0.207848 -0.708198 +240 2.390000 -0.200811 -0.699191 +241 2.400000 -0.193865 -0.689971 +242 2.410000 -0.187012 -0.680541 +243 2.420000 -0.180255 -0.670904 +244 2.430000 -0.173595 -0.661062 +245 2.440000 -0.167034 -0.651019 +246 2.450000 -0.160575 -0.640778 +247 2.460000 -0.154220 -0.630342 +248 2.470000 -0.147969 -0.619713 +249 2.480000 -0.141826 -0.608896 +250 2.490000 -0.135792 -0.597893 +251 2.500000 -0.129869 -0.586708 +252 2.510000 -0.124058 -0.575344 +253 2.520000 -0.118362 -0.563805 +254 2.530000 -0.112783 -0.552095 +255 2.540000 -0.107321 -0.540216 +256 2.550000 -0.101979 -0.528173 +257 2.560000 -0.096758 -0.515968 +258 2.570000 -0.091660 -0.503607 +259 2.580000 -0.086686 -0.491092 +260 2.590000 -0.081839 -0.478428 +261 2.600000 -0.077118 -0.465618 +262 2.610000 -0.072527 -0.452666 +263 2.620000 -0.068066 -0.439576 +264 2.630000 -0.063736 -0.426352 +265 2.640000 -0.059539 -0.412998 +266 2.650000 -0.055476 -0.399519 +267 2.660000 -0.051549 -0.385918 +268 2.670000 -0.047758 -0.372199 +269 2.680000 -0.044105 -0.358367 +270 2.690000 -0.040591 -0.344426 +271 2.700000 -0.037217 -0.330380 +272 2.710000 -0.033984 -0.316233 +273 2.720000 -0.030893 -0.301990 +274 2.730000 -0.027945 -0.287655 +275 2.740000 -0.025140 -0.273232 +276 2.750000 -0.022480 -0.258726 +277 2.760000 -0.019966 -0.244141 +278 2.770000 -0.017598 -0.229482 +279 2.780000 -0.015376 -0.214753 +280 2.790000 -0.013303 -0.199959 +281 2.800000 -0.011377 -0.185103 +282 2.810000 -0.009601 -0.170192 +283 2.820000 -0.007974 -0.155228 +284 2.830000 -0.006496 -0.140217 +285 2.840000 -0.005170 -0.125164 +286 2.850000 -0.003993 -0.110072 +287 2.860000 -0.002968 -0.094947 +288 2.870000 -0.002095 -0.079793 +289 2.880000 -0.001372 -0.064614 +290 2.890000 -0.000802 -0.049416 +291 2.900000 -0.000384 -0.034203 +292 2.910000 -0.000118 -0.018979 +293 2.920000 -0.000005 -0.003750 +294 2.930000 0.000000 0.000000 +295 2.940000 0.000000 0.000000 +296 2.950000 0.000000 0.000000 +297 2.960000 0.000000 0.000000 +298 2.970000 0.000000 0.000000 +299 2.980000 0.000000 0.000000 +300 2.990000 0.000000 0.000000 +301 3.000000 0.000000 0.000000 + diff --git a/tools/moltemplate/examples/coarse_grained/membrane_mixture_Cooke_Kremer_DesernoPRE2005/README.txt b/tools/moltemplate/examples/coarse_grained/membrane_mixture_Cooke_Kremer_DesernoPRE2005/README.txt new file mode 100644 index 0000000000000000000000000000000000000000..c0fc605b6f14627fe38a042774731b50b0309561 --- /dev/null +++ b/tools/moltemplate/examples/coarse_grained/membrane_mixture_Cooke_Kremer_DesernoPRE2005/README.txt @@ -0,0 +1,16 @@ +----- Description -------- + +This example contains an implementation of the DPPC lipid bilayer described in: +"Tunable generic model for fluid bilayer membranes" +Cooke IR, Kremer K, Deserno M, Physical Review E, 2005 + +------------- + +Instructions on how to build LAMMPS input files and +run a short simulation are provided in other README files. + +step 1) +README_setup.sh + +step2) +README_run.sh diff --git a/tools/moltemplate/examples/coarse_grained/membrane_mixture_Cooke_Kremer_DesernoPRE2005/README_run.sh b/tools/moltemplate/examples/coarse_grained/membrane_mixture_Cooke_Kremer_DesernoPRE2005/README_run.sh new file mode 100755 index 0000000000000000000000000000000000000000..eb3fe7089a351f9f3bf4298be1bfc327fb596e5a --- /dev/null +++ b/tools/moltemplate/examples/coarse_grained/membrane_mixture_Cooke_Kremer_DesernoPRE2005/README_run.sh @@ -0,0 +1,21 @@ +# --- Running LAMMPS --- +# -- Prerequisites: -- +# The "run.in.nvt" file is a LAMMPS input script containing +# references to the input scripts and data files +# you hopefully have created earlier with moltemplate.sh: +# system.in.init, system.in.settings, system.data, and table_int.dat +# If not, carry out the instructions in "README_setup.sh". +# +# -- Instructions: -- +# If "lmp_mpi" is the name of the command you use to invoke lammps, +# then you would run lammps on these files this way: + + +lmp_mpi -i run.in.npt # Run a simulation at constant pressure (tension) + + +# If you have compiled the MPI version of lammps, you can run lammps in parallel +#mpiexec -np 4 lmp_mpi -i run.in.npt +#or +#mpiexec -np 4 lmp_mpi -i run.in.nvt +# (assuming you have 4 processors available) diff --git a/tools/moltemplate/examples/coarse_grained/membrane_mixture_Cooke_Kremer_DesernoPRE2005/README_setup.sh b/tools/moltemplate/examples/coarse_grained/membrane_mixture_Cooke_Kremer_DesernoPRE2005/README_setup.sh new file mode 100755 index 0000000000000000000000000000000000000000..0d1c3fd00e4a24724d76be3eeeb499a0e88286b1 --- /dev/null +++ b/tools/moltemplate/examples/coarse_grained/membrane_mixture_Cooke_Kremer_DesernoPRE2005/README_setup.sh @@ -0,0 +1,28 @@ +# Use these commands to generate the LAMMPS input script and data file +# (and other auxilliary files): + + +# Create LAMMPS input files this way: +cd moltemplate_files + + # run moltemplate + + moltemplate.sh system.lt + + # This will generate various files with names ending in *.in* and *.data. + # These files are the input files directly read by LAMMPS. Move them to + # the parent directory (or wherever you plan to run the simulation). + + mv -f system.in* system.data ../ + + # The "table_int.dat" file contains tabular data for the lipid INT-INT atom + # 1/r^2 interaction. We need it too. (This slows down the simulation by x2, + # so I might look for a way to get rid of it later.) + cp -f tabulated_potential.dat ../ + + # Optional: + # The "./output_ttree/" directory is full of temporary files generated by + # moltemplate. They can be useful for debugging, but are usually thrown away. + rm -rf output_ttree/ + +cd ../ diff --git a/tools/moltemplate/examples/coarse_grained/membrane_mixture_Cooke_Kremer_DesernoPRE2005/README_visualize.txt b/tools/moltemplate/examples/coarse_grained/membrane_mixture_Cooke_Kremer_DesernoPRE2005/README_visualize.txt new file mode 100644 index 0000000000000000000000000000000000000000..f70bc3b75308523ce1887d29e8e57836b55abb97 --- /dev/null +++ b/tools/moltemplate/examples/coarse_grained/membrane_mixture_Cooke_Kremer_DesernoPRE2005/README_visualize.txt @@ -0,0 +1,87 @@ + + ------- To view a lammps trajectory in VMD -------- + + +1) Build a PSF file for use in viewing with VMD. + +This step works with VMD 1.9 and topotools 1.2. +(Older versions, like VMD 1.8.6, don't support this.) + + +a) Start VMD +b) Menu Extensions->Tk Console +c) Enter: + +(I assume that the the DATA file is called "system.data") + + topo readlammpsdata system.data full + animate write psf system.psf + +2) + +Later, to Load a trajectory in VMD: + + Start VMD + Select menu: File->New Molecule + -Browse to select the PSF file you created above, and load it. + (Don't close the window yet.) + -Browse to select the trajectory file. + If necessary, for "file type" select: "LAMMPS Trajectory" + Load it. + + ---- A note on trajectory format: ----- +If the trajectory is a DUMP file, then make sure the it contains the +information you need for pbctools (see below. I've been using this +command in my LAMMPS scripts to create the trajectories: + + dump 1 all custom 5000 DUMP_FILE.lammpstrj id mol type x y z ix iy iz + +It's a good idea to use an atom_style which supports molecule-ID numbers +so that you can assign a molecule-ID number to each atom. (I think this +is needed to wrap atom coordinates without breaking molecules in half.) + +Of course, you don't have to save your trajectories in DUMP format, +(other formats like DCD work fine) I just mention dump files +because these are the files I'm familiar with. + +3) ----- Wrap the coordinates to the unit cell + (without cutting the molecules in half) + +a) Start VMD +b) Load the trajectory in VMD (see above) +c) Menu Extensions->Tk Console +d) Try entering these commands: + + pbc wrap -compound res -all + pbc box + + ----- Optional ---- + Sometimes the solvent or membrane obscures the view of the solute. + It can help to shift the location of the periodic boundary box + To shift the box in the y direction (for example) do this: + + pbc wrap -compound res -all -shiftcenterrel {0.0 0.0 0.0} + pbc box -shiftcenterrel {0.0 0.0 0.0} -width 0.5 + + Distances are measured in units of box-length fractions, not Angstroms. + + Alternately if you have a solute whose atoms are all of type 1, + then you can also try this to center the box around it: + + pbc wrap -sel type=1 -all -centersel type=2 -center com + +4) + You should check if your periodic boundary conditions are too small. + To do that: + select Graphics->Representations menu option + click on the "Periodic" tab, and + click on the "+x", "-x", "+y", "-y", "+z", "-z" checkboxes. + +5) Optional: If you like, change the atom types in the PSF file so + that VMD recognizes the atom types, use something like: + +sed -e 's/ 1 1 / C C /g' < system.psf > temp1.psf +sed -e 's/ 2 2 / H H /g' < temp1.psf > temp2.psf +sed -e 's/ 3 3 / P P /g' < temp2.psf > system.psf + +(If you do this, it might effect step 2 above.) diff --git a/tools/moltemplate/examples/coarse_grained/membrane_mixture_Cooke_Kremer_DesernoPRE2005/images/CDlipid_A.jpg b/tools/moltemplate/examples/coarse_grained/membrane_mixture_Cooke_Kremer_DesernoPRE2005/images/CDlipid_A.jpg new file mode 100644 index 0000000000000000000000000000000000000000..fb45910d88dce93ecb7d7cecf7db4e8700b663b3 Binary files /dev/null and b/tools/moltemplate/examples/coarse_grained/membrane_mixture_Cooke_Kremer_DesernoPRE2005/images/CDlipid_A.jpg differ diff --git a/tools/moltemplate/examples/coarse_grained/membrane_mixture_Cooke_Kremer_DesernoPRE2005/images/CDlipid_B.jpg b/tools/moltemplate/examples/coarse_grained/membrane_mixture_Cooke_Kremer_DesernoPRE2005/images/CDlipid_B.jpg new file mode 100644 index 0000000000000000000000000000000000000000..2fc365bd44f570b267f64c533d75d7eeda0e7bbb Binary files /dev/null and b/tools/moltemplate/examples/coarse_grained/membrane_mixture_Cooke_Kremer_DesernoPRE2005/images/CDlipid_B.jpg differ diff --git a/tools/moltemplate/examples/coarse_grained/membrane_mixture_Cooke_Kremer_DesernoPRE2005/images/CDlipid_bilayer_mixture_t=0_nopbc_occ_LR.jpg b/tools/moltemplate/examples/coarse_grained/membrane_mixture_Cooke_Kremer_DesernoPRE2005/images/CDlipid_bilayer_mixture_t=0_nopbc_occ_LR.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1f85ace52af5e47624b682a88d5fd40f9e5e1729 Binary files /dev/null and b/tools/moltemplate/examples/coarse_grained/membrane_mixture_Cooke_Kremer_DesernoPRE2005/images/CDlipid_bilayer_mixture_t=0_nopbc_occ_LR.jpg differ diff --git a/tools/moltemplate/examples/coarse_grained/membrane_mixture_Cooke_Kremer_DesernoPRE2005/images/CDlipid_bilayer_mixture_t=0_occ_LR.jpg b/tools/moltemplate/examples/coarse_grained/membrane_mixture_Cooke_Kremer_DesernoPRE2005/images/CDlipid_bilayer_mixture_t=0_occ_LR.jpg new file mode 100644 index 0000000000000000000000000000000000000000..810b8d79a2a5f83a648ea1a3b9eee2256b549fca Binary files /dev/null and b/tools/moltemplate/examples/coarse_grained/membrane_mixture_Cooke_Kremer_DesernoPRE2005/images/CDlipid_bilayer_mixture_t=0_occ_LR.jpg differ diff --git a/tools/moltemplate/examples/coarse_grained/membrane_mixture_Cooke_Kremer_DesernoPRE2005/images/CDlipid_bilayer_mixture_t=1000000steps_npt_occ_LR.jpg b/tools/moltemplate/examples/coarse_grained/membrane_mixture_Cooke_Kremer_DesernoPRE2005/images/CDlipid_bilayer_mixture_t=1000000steps_npt_occ_LR.jpg new file mode 100644 index 0000000000000000000000000000000000000000..983c4ec2480b88b79534371fc536c5596d25b003 Binary files /dev/null and b/tools/moltemplate/examples/coarse_grained/membrane_mixture_Cooke_Kremer_DesernoPRE2005/images/CDlipid_bilayer_mixture_t=1000000steps_npt_occ_LR.jpg differ diff --git a/tools/moltemplate/examples/coarse_grained/membrane_mixture_Cooke_Kremer_DesernoPRE2005/images/CDlipid_bilayer_mixture_t=120000steps_npt_occ_LR.jpg b/tools/moltemplate/examples/coarse_grained/membrane_mixture_Cooke_Kremer_DesernoPRE2005/images/CDlipid_bilayer_mixture_t=120000steps_npt_occ_LR.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6b7b6bc63f2181c2f1e689547c7ead3a4d4e699b Binary files /dev/null and b/tools/moltemplate/examples/coarse_grained/membrane_mixture_Cooke_Kremer_DesernoPRE2005/images/CDlipid_bilayer_mixture_t=120000steps_npt_occ_LR.jpg differ diff --git a/tools/moltemplate/examples/coarse_grained/membrane_mixture_Cooke_Kremer_DesernoPRE2005/images/CDlipid_bilayer_mixture_t=40000steps_npt_occ_LR.jpg b/tools/moltemplate/examples/coarse_grained/membrane_mixture_Cooke_Kremer_DesernoPRE2005/images/CDlipid_bilayer_mixture_t=40000steps_npt_occ_LR.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9e7a593fc9ffebf571932c195d4a6978c60d4003 Binary files /dev/null and b/tools/moltemplate/examples/coarse_grained/membrane_mixture_Cooke_Kremer_DesernoPRE2005/images/CDlipid_bilayer_mixture_t=40000steps_npt_occ_LR.jpg differ diff --git a/tools/moltemplate/examples/coarse_grained/membrane_mixture_Cooke_Kremer_DesernoPRE2005/moltemplate_files/calc_table/gen_potential-cooke.py b/tools/moltemplate/examples/coarse_grained/membrane_mixture_Cooke_Kremer_DesernoPRE2005/moltemplate_files/calc_table/gen_potential-cooke.py new file mode 100755 index 0000000000000000000000000000000000000000..7240296584d1efda2c0937c92658df11b17c5134 --- /dev/null +++ b/tools/moltemplate/examples/coarse_grained/membrane_mixture_Cooke_Kremer_DesernoPRE2005/moltemplate_files/calc_table/gen_potential-cooke.py @@ -0,0 +1,144 @@ +#!/usr/bin/python2.7 + +import os,sys +from fractions import Fraction +from numpy import * + +### PARAMETERS ### +sigma = 1.00 +epsilon = 1.00 + +b_hh = 0.95 * sigma +b_ht = 0.95 * sigma +b_tt = 1.00 * sigma + +r_init = 0.000001 +r_max = sigma * 3. +r_space = 0.01 +################## + +### INPUTS ### +if len(sys.argv) == 2: + w_cut = float(sys.argv[1]) +else: + w_cut = 1.6 +# 1.6 seems to be 'good' for vesicles, bilayers 1.4 +############## + +def WCA_energy(b, r): +# Calculate WCA energy + E_pot = 0 + val1 = math.pow((b / r), 12) + val2 = -math.pow((b / r), 6) + E_pot = 4 * epsilon * (val1 + val2 + 0.25) + return E_pot + +def WCA_forces(b, r): +# Calculate WCA forces + Force = 0 + val1 = 24 * math.pow(b, 6) / math.pow(r, 7) + val2 = -48 * math.pow(b, 12) / math.pow(r, 13) + Force = -(val1 + val2) + return Force + +def Tail_energy(b, r, r_cut): +# Calculate extra Tail energy + E_pot = 0 + if (r < r_cut): + E_pot = -1 * epsilon + else: + val1 = math.cos((math.pi * (r - r_cut)) / (2 * w_cut)) + E_pot = -1 * epsilon * math.pow(val1, 2) + return E_pot + +def Tail_forces(b, r, r_cut): + Force = 0 + if (r < r_cut): + Force = 0; + else: + val1 = math.sin((math.pi * (r - r_cut)) / w_cut) + Force = -math.pi * val1 / (2 * w_cut) + return Force + + +############## +ofile = open('tabulated_potential.dat', 'w') +tot_potential_hh = zeros((int(r_max / r_space) + 1, 4)) +tot_potential_ht = zeros((int(r_max / r_space) + 1, 4)) +tot_potential_tt = zeros((int(r_max / r_space) + 1, 4)) + +# Setup up formatting & distances in all arrays +for i in range(int(r_max / r_space)+1): + tot_potential_hh[:,0][i] = i+1 + tot_potential_ht[:,0][i] = i+1 + tot_potential_tt[:,0][i] = i+1 +for i in range(1, int(r_max / r_space)+1): + tot_potential_hh[:,1][i] = tot_potential_hh[:,1][i-1] + r_space + tot_potential_ht[:,1][i] = tot_potential_ht[:,1][i-1] + r_space + tot_potential_tt[:,1][i] = tot_potential_tt[:,1][i-1] + r_space +tot_potential_hh[:,1][0] = r_init +tot_potential_ht[:,1][0] = r_init +tot_potential_tt[:,1][0] = r_init + + + +ofile.write("# Tabulated potential for Cooke 3-bead lipid model, Wc = %f\n\n" % w_cut) +num = len(tot_potential_hh[:,0]) + +### Calcaulte first potential, H-H +ofile.write("HEAD_HEAD\n") +r_cut = 2**Fraction('1/6') * b_hh +rmax = int(r_cut / r_space) +ofile.write("N %d R %f %f\n\n" % (num, r_init, r_max)) +ofile.write("1 %f %f %f\n" % (tot_potential_hh[:,1][0], tot_potential_hh[:,2][0], tot_potential_hh[:,3][0])) + +for i in range(1, rmax+1): + tot_potential_hh[:,2][i] = WCA_energy(b_hh, tot_potential_hh[:,1][i]) + tot_potential_hh[:,3][i] = WCA_forces(b_hh, tot_potential_hh[:,1][i]) + +for i in range(1, int(r_max / r_space)+1): + ofile.write("%d %f %f %f\n" % (i+1, tot_potential_hh[:,1][i], tot_potential_hh[:,2][i], tot_potential_hh[:,3][i])) +ofile.write("\n") + + + +### Calcaulte second potential, H-T +ofile.write("HEAD_TAIL\n") +r_cut = 2**Fraction('1/6') * b_ht +rmax = int(r_cut / r_space) +ofile.write("N %d R %f %f\n\n" % (num, r_init, r_max)) +ofile.write("1 %f %f %f\n" % (tot_potential_ht[:,1][0], tot_potential_ht[:,2][0], tot_potential_ht[:,3][0])) + +for i in range(1, rmax+1): + tot_potential_ht[:,2][i] = WCA_energy(b_ht, tot_potential_ht[:,1][i]) + tot_potential_ht[:,3][i] = WCA_forces(b_ht, tot_potential_ht[:,1][i]) + +for i in range(1, int(r_max / r_space)+1): + ofile.write("%d %f %f %f\n" % (i+1, tot_potential_ht[:,1][i], tot_potential_ht[:,2][i], tot_potential_ht[:,3][i])) +ofile.write("\n") + + + +### Calcaulte third potential, T-T +# Also include extra tail-tail attraction term +ofile.write("TAIL_TAIL\n") +r_cut = 2**Fraction('1/6') * b_tt +rmax = int(r_cut / r_space) +ofile.write("N %d R %f %f\n\n" % (num, r_init, r_max)) +ofile.write("1 %f %f %f\n" % (tot_potential_tt[:,1][0], tot_potential_tt[:,2][0], tot_potential_tt[:,3][0])) + +for i in range(1, rmax+1): + tot_potential_tt[:,2][i] = WCA_energy(b_tt, tot_potential_tt[:,1][i]) + tot_potential_tt[:,3][i] = WCA_forces(b_tt, tot_potential_tt[:,1][i]) + +max2 = int( (r_cut + w_cut) / r_space) +for i in range(1, max2+1): + tot_potential_tt[:,2][i] = tot_potential_tt[:,2][i] + Tail_energy(b_tt, tot_potential_tt[:,1][i], r_cut) + tot_potential_tt[:,3][i] = tot_potential_tt[:,3][i] + Tail_forces(b_tt, tot_potential_tt[:,1][i], r_cut) + +for i in range(1, int(r_max / r_space)+1): + ofile.write("%d %f %f %f\n" % (i+1, tot_potential_tt[:,1][i], tot_potential_tt[:,2][i], tot_potential_tt[:,3][i])) +ofile.write("\n") + + +sys.exit() diff --git a/tools/moltemplate/examples/coarse_grained/membrane_mixture_Cooke_Kremer_DesernoPRE2005/moltemplate_files/cooke_deserno_lipids.lt b/tools/moltemplate/examples/coarse_grained/membrane_mixture_Cooke_Kremer_DesernoPRE2005/moltemplate_files/cooke_deserno_lipids.lt new file mode 100644 index 0000000000000000000000000000000000000000..04953c97b7a4492e98eda97937595850a11b3a59 --- /dev/null +++ b/tools/moltemplate/examples/coarse_grained/membrane_mixture_Cooke_Kremer_DesernoPRE2005/moltemplate_files/cooke_deserno_lipids.lt @@ -0,0 +1,96 @@ +# CDlipid is a lipid model from: +# "Tunable generic model for fluid bilayer membranes" +# Cooke IR, Kremer K, Deserno M, Physical Review E, 2005 +# (Author: David Stelter, BU) +# 3-bead model of COOKE, KREMER, DESERNO +# +# In this example, there are two types of identical lipids "A" and "B". +# The attractive interaction between the tail beads of different lipids (AB) +# is weaker than it is for lipids of the same type (as it was in the paper). +# (Wc = 1.3σ, instead of Wc = 1.5σ) + + +CDlipids { + # Settings common to both lipids ("LipidA" and "LipidB") + write_once("In Init") { + units lj + atom_style full + + bond_style hybrid fene + angle_style hybrid harmonic + pair_style hybrid table linear 600 + pair_modify shift yes + special_bonds lj 0.0 1.0 1.0 + + neigh_modify every 1 delay 1 + neighbor 0.3 bin + } + write_once("In Settings") { + pair_coeff @atom:H @atom:H table tabulated_potential.dat HEAD_HEAD + bond_coeff @bond:Bond fene 30.0 1.5 1.0 1.0 + angle_coeff @angle:An harmonic 10.0 180 + } + write_once("Data Masses") { + @atom:H 1.0 ## Head Bead + } + + + A { + write_once("In Settings") { + pair_coeff @atom:../H @atom:T table tabulated_potential.dat HEAD_TAIL + # (Note: The "HEAD_TAIL" table is the same as the "HEAD_HEAD" table.) + pair_coeff @atom:T @atom:T table tabulated_potential.dat TAIL_TAIL_Wc_1.5 + } + write("Data Atoms") { + $atom:1 $mol:. @atom:../H 0.0 0.00 0.00 2.46 + $atom:2 $mol:. @atom:T 0.0 0.00 0.00 1.51 + $atom:3 $mol:. @atom:T 0.0 0.00 0.00 0.56 + } + write("Data Bonds") { + $bond:b1 @bond:../Bond $atom:1 $atom:2 + $bond:b2 @bond:../Bond $atom:2 $atom:3 + } + write("Data Angles") { + $angle:a1 @angle:../An $atom:1 $atom:2 $atom:3 + } + write_once("Data Masses") { + @atom:T 1.0 ## Tail Bead + } + } # lipid "A" + + + B { + write_once("In Settings") { + pair_coeff @atom:../H @atom:T table tabulated_potential.dat HEAD_TAIL + # (Note: The "HEAD_TAIL" table is the same as the "HEAD_HEAD" table.) + pair_coeff @atom:T @atom:T table tabulated_potential.dat TAIL_TAIL_Wc_1.5 + } + write("Data Atoms") { + $atom:1 $mol:. @atom:../H 0.0 0.00 0.00 2.46 + $atom:2 $mol:. @atom:T 0.0 0.00 0.00 1.51 + $atom:3 $mol:. @atom:T 0.0 0.00 0.00 0.56 + } + write("Data Bonds") { + $bond:b1 @bond:../Bond $atom:1 $atom:2 + $bond:b2 @bond:../Bond $atom:2 $atom:3 + } + write("Data Angles") { + $angle:a1 @angle:../An $atom:1 $atom:2 $atom:3 + } + write_once("Data Masses") { + @atom:T 1.0 ## Tail Bead + } + } # lipid "B" + + + + # Finally, weaken the interaction between the tail beads + # belonging to different types of lipids (ie "A" and "B"). + + write_once("In Settings") { + pair_coeff @atom:A/T @atom:B/T table tabulated_potential.dat TAIL_TAIL_Wc_1.3 + } + + +} # CDlipids + diff --git a/tools/moltemplate/examples/coarse_grained/membrane_mixture_Cooke_Kremer_DesernoPRE2005/moltemplate_files/system.lt b/tools/moltemplate/examples/coarse_grained/membrane_mixture_Cooke_Kremer_DesernoPRE2005/moltemplate_files/system.lt new file mode 100644 index 0000000000000000000000000000000000000000..4a35cd10de76e7dde0e4114ab964208b4f728ac7 --- /dev/null +++ b/tools/moltemplate/examples/coarse_grained/membrane_mixture_Cooke_Kremer_DesernoPRE2005/moltemplate_files/system.lt @@ -0,0 +1,73 @@ +# Description: + +# This constructs a bilayer constructed from coarse-grained lipids +# (implicit solvent). "Tunable generic model for fluid bilayer membranes" +# Cooke IR, Kremer K, Deserno M, Physical Review E, 2005 + + + +import "cooke_deserno_lipids.lt" + + +# Create a random mixture of lipids of type "CDlipids/A" and "CDlipids/B" + +lipids = new random([CDlipids/A, CDlipids/B], [710,1658], 12345) + [32].move(1.178585, 0, 0) + [37].move(0.589293, 1.02068, 0) + [2].rot(180, 1, 0, 0) + +# Here "710,1658" are the number of each molecule type (must sum to 32*37*2), +# and "12345" is an optional random seed: + + + +# Move the lipds up to the center of the box +lipids[*][*][*].move(0,0,10.0) + + +# Although this patch of lipids is not square or rectangular, (it looks +# like a parallelogram), this is no longer the case after rectangular +# periodic boundary conditions are applied. We apply them below: +# width: 37.71472 = 32 * 1.05 * 2^(1/6) +# height: 37.76516 = 37 * 1.05 * 2^(1/6) * sqrt(3)/2 + +write_once("Data Boundary") { + 0 37.71472 xlo xhi + 0 37.76516 ylo yhi + 0 20.0 zlo zhi +} + + + + + + + + +# -------------- File ends here. Only comments below.------------------- + +# ------------------------------------ +# ------------- COMMENTS: ------------ +# ------------------------------------ +# +# A note on geometry: +# We want to create a bilayer arranged in a hexagonal lattice consisting of +# 32 rows (each row is aligned with the x-axis) +# 37 columns (aligned at a 60 degree angle from the x axis) +# When wrapped onto a rectangular box, the dimensions of the system are: +# 32 * 2^(1/6) σ units in the X direction +# 37 * 2^(1/6) * sqrt(3)/2 σ units in the Y direction +# ------------------------------------ +# +# Below I show simple ways to create a lipid bilayer: +# +# 1) If you just want to make lipid bilayer out of lipids, +# without specifying the location of each lipid, you could use this syntax: +# lipids = new CDlipid/A [32][37][2] # 3-D array +# Later you can load in the coordinates of the lipds from a PDB file. +# Alternately you could also use a 1-dimensional array: +# lipids = new CDlipid/A [2368] # 1-D array. Note: 2368 = 32x37x2 +# It does not matter as long as the number of lipids is correct. +# Multidimensional arrays are only useful if you plan to apply independent +# coordinate transformations to each row and column and monolayer as above. +# diff --git a/tools/moltemplate/examples/coarse_grained/membrane_mixture_Cooke_Kremer_DesernoPRE2005/moltemplate_files/tabulated_potential.dat b/tools/moltemplate/examples/coarse_grained/membrane_mixture_Cooke_Kremer_DesernoPRE2005/moltemplate_files/tabulated_potential.dat new file mode 100644 index 0000000000000000000000000000000000000000..cd8dd4db7d6a0ce874229eb3787d6fe4827bf5ac --- /dev/null +++ b/tools/moltemplate/examples/coarse_grained/membrane_mixture_Cooke_Kremer_DesernoPRE2005/moltemplate_files/tabulated_potential.dat @@ -0,0 +1,4589 @@ +# Tabulated potential for Cooke 3-bead lipid model, with various values of Wc + +HEAD_HEAD +N 301 R 0.000001 3.000000 + +1 0.000001 0.000000 0.000000 +2 0.010000 2161440350647607518822400.000000 2593728420778890895481110528.000000 +3 0.020000 527695398062100709376.000000 316617238851043104653312.000000 +4 0.030000 4067131343850062336.000000 1626852538346708926464.000000 +5 0.040000 128831883585858496.000000 38649565183436988416.000000 +6 0.050000 8853259488081101.000000 2124782299721489152.000000 +7 0.060000 992951926207085.500000 198590391543644928.000000 +8 0.070000 156158887055179.062500 26770097065977256.000000 +9 0.080000 31453085537227.195312 4717963671829832.000000 +10 0.090000 7653019634383.599609 1020402986772367.875000 +11 0.100000 2161437410283.985352 259372665656012.125000 +12 0.110000 688699846600.110840 75130982888675.812500 +13 0.120000 242418934523.303925 24241942688387.753906 +14 0.130000 92772695554.949768 8563661551482.013672 +15 0.140000 38124343876.568542 3267817639811.164551 +16 0.150000 16658711862.666004 1332707274503.870850 +17 0.160000 7678803441.103481 575916830241.413208 +18 0.170000 3709726886.129636 261867373669.903687 +19 0.180000 1868327898.144181 124558074820.194244 +20 0.190000 976500000.999998 61675657894.736687 +21 0.200000 527649455.864879 31660345589.187614 +22 0.210000 293806260.511241 16789908645.082933 +23 0.220000 168114083.438129 9170566326.526011 +24 0.230000 98610181.495127 5145397135.359623 +25 0.240000 59169165.297856 2958842872.372237 +26 0.250000 36250908.888444 1740332628.538169 +27 0.260000 22640215.252607 1045152619.667436 +28 0.270000 14392928.420337 639854320.962319 +29 0.280000 9301695.744822 398774811.984595 +30 0.290000 6104017.717125 252682276.475626 +31 0.300000 4063098.921872 162604585.395105 +32 0.310000 2740806.847436 106159834.284035 +33 0.320000 1872013.228410 70251804.140783 +34 0.330000 1293637.623279 47082727.461649 +35 0.340000 903822.389327 31933167.708250 +36 0.350000 638028.370186 21902644.696022 +37 0.360000 454806.060338 15182681.781435 +38 0.370000 327194.054124 10630250.689058 +39 0.380000 237443.016602 7513588.353207 +40 0.390000 173734.710287 5358508.469115 +41 0.400000 128115.021129 3854188.581495 +42 0.410000 95175.694590 2794659.517251 +43 0.420000 71203.733281 2042016.387369 +44 0.430000 53626.450912 1503014.644703 +45 0.440000 40645.593596 1114014.575978 +46 0.450000 30993.690585 831193.088925 +47 0.460000 23770.248288 624115.416996 +48 0.470000 18330.617960 471472.559289 +49 0.480000 14209.942248 358228.692769 +50 0.490000 11070.674537 273695.309628 +51 0.500000 8666.076152 210220.029942 +52 0.510000 6814.633252 162286.683398 +53 0.520000 5381.995700 125892.872001 +54 0.530000 4268.136868 98116.253151 +55 0.540000 3398.163685 76810.165684 +56 0.550000 2715.696677 60388.560510 +57 0.560000 2178.071621 47673.030759 +58 0.570000 1752.840750 37783.319810 +59 0.580000 1415.206838 30058.470465 +60 0.590000 1146.130977 23999.705760 +61 0.600000 930.929708 19228.816970 +62 0.610000 758.229563 15457.682582 +63 0.620000 619.184089 12465.822566 +64 0.630000 506.884625 10083.785213 +65 0.640000 415.914818 8180.790148 +66 0.650000 342.012307 6655.493196 +67 0.660000 281.810669 5429.052488 +68 0.670000 232.641766 4439.899069 +69 0.680000 192.383722 3639.775908 +70 0.690000 159.343555 2990.725059 +71 0.700000 132.166200 2462.786676 +72 0.710000 109.763738 2032.234764 +73 0.720000 91.260139 1680.219270 +74 0.730000 75.947974 1391.717054 +75 0.740000 63.254382 1154.718549 +76 0.750000 52.714228 959.594954 +77 0.760000 43.948872 798.604206 +78 0.770000 36.649308 665.504021 +79 0.780000 30.562750 555.247832 +80 0.790000 25.481924 463.745109 +81 0.800000 21.236485 387.671861 +82 0.810000 17.686136 324.320364 +83 0.820000 14.715086 271.479665 +84 0.830000 12.227574 227.340274 +85 0.840000 10.144253 190.417955 +86 0.850000 8.399249 159.492629 +87 0.860000 6.937780 133.559247 +88 0.870000 5.714205 111.788215 +89 0.880000 4.690441 93.493410 +90 0.890000 3.834655 78.106288 +91 0.900000 3.120205 65.154867 +92 0.910000 2.524755 54.246625 +93 0.920000 2.029558 45.054564 +94 0.930000 1.618857 37.305814 +95 0.940000 1.279395 30.772315 +96 0.950000 1.000000 25.263158 +97 0.960000 0.771253 20.618297 +98 0.970000 0.585203 16.703371 +99 0.980000 0.435131 13.405424 +100 0.990000 0.315357 10.629373 +101 1.000000 0.221073 8.295079 +102 1.010000 0.148209 6.334918 +103 1.020000 0.093319 4.691763 +104 1.030000 0.053479 3.317301 +105 1.040000 0.026214 2.170635 +106 1.050000 0.009423 1.217110 +107 1.060000 0.001327 0.427337 +108 1.070000 0.000000 0.000000 +109 1.080000 0.000000 0.000000 +110 1.090000 0.000000 0.000000 +111 1.100000 0.000000 0.000000 +112 1.110000 0.000000 0.000000 +113 1.120000 0.000000 0.000000 +114 1.130000 0.000000 0.000000 +115 1.140000 0.000000 0.000000 +116 1.150000 0.000000 0.000000 +117 1.160000 0.000000 0.000000 +118 1.170000 0.000000 0.000000 +119 1.180000 0.000000 0.000000 +120 1.190000 0.000000 0.000000 +121 1.200000 0.000000 0.000000 +122 1.210000 0.000000 0.000000 +123 1.220000 0.000000 0.000000 +124 1.230000 0.000000 0.000000 +125 1.240000 0.000000 0.000000 +126 1.250000 0.000000 0.000000 +127 1.260000 0.000000 0.000000 +128 1.270000 0.000000 0.000000 +129 1.280000 0.000000 0.000000 +130 1.290000 0.000000 0.000000 +131 1.300000 0.000000 0.000000 +132 1.310000 0.000000 0.000000 +133 1.320000 0.000000 0.000000 +134 1.330000 0.000000 0.000000 +135 1.340000 0.000000 0.000000 +136 1.350000 0.000000 0.000000 +137 1.360000 0.000000 0.000000 +138 1.370000 0.000000 0.000000 +139 1.380000 0.000000 0.000000 +140 1.390000 0.000000 0.000000 +141 1.400000 0.000000 0.000000 +142 1.410000 0.000000 0.000000 +143 1.420000 0.000000 0.000000 +144 1.430000 0.000000 0.000000 +145 1.440000 0.000000 0.000000 +146 1.450000 0.000000 0.000000 +147 1.460000 0.000000 0.000000 +148 1.470000 0.000000 0.000000 +149 1.480000 0.000000 0.000000 +150 1.490000 0.000000 0.000000 +151 1.500000 0.000000 0.000000 +152 1.510000 0.000000 0.000000 +153 1.520000 0.000000 0.000000 +154 1.530000 0.000000 0.000000 +155 1.540000 0.000000 0.000000 +156 1.550000 0.000000 0.000000 +157 1.560000 0.000000 0.000000 +158 1.570000 0.000000 0.000000 +159 1.580000 0.000000 0.000000 +160 1.590000 0.000000 0.000000 +161 1.600000 0.000000 0.000000 +162 1.610000 0.000000 0.000000 +163 1.620000 0.000000 0.000000 +164 1.630000 0.000000 0.000000 +165 1.640000 0.000000 0.000000 +166 1.650000 0.000000 0.000000 +167 1.660000 0.000000 0.000000 +168 1.670000 0.000000 0.000000 +169 1.680000 0.000000 0.000000 +170 1.690000 0.000000 0.000000 +171 1.700000 0.000000 0.000000 +172 1.710000 0.000000 0.000000 +173 1.720000 0.000000 0.000000 +174 1.730000 0.000000 0.000000 +175 1.740000 0.000000 0.000000 +176 1.750000 0.000000 0.000000 +177 1.760000 0.000000 0.000000 +178 1.770000 0.000000 0.000000 +179 1.780000 0.000000 0.000000 +180 1.790000 0.000000 0.000000 +181 1.800000 0.000000 0.000000 +182 1.810000 0.000000 0.000000 +183 1.820000 0.000000 0.000000 +184 1.830000 0.000000 0.000000 +185 1.840000 0.000000 0.000000 +186 1.850000 0.000000 0.000000 +187 1.860000 0.000000 0.000000 +188 1.870000 0.000000 0.000000 +189 1.880000 0.000000 0.000000 +190 1.890000 0.000000 0.000000 +191 1.900000 0.000000 0.000000 +192 1.910000 0.000000 0.000000 +193 1.920000 0.000000 0.000000 +194 1.930000 0.000000 0.000000 +195 1.940000 0.000000 0.000000 +196 1.950000 0.000000 0.000000 +197 1.960000 0.000000 0.000000 +198 1.970000 0.000000 0.000000 +199 1.980000 0.000000 0.000000 +200 1.990000 0.000000 0.000000 +201 2.000000 0.000000 0.000000 +202 2.010000 0.000000 0.000000 +203 2.020000 0.000000 0.000000 +204 2.030000 0.000000 0.000000 +205 2.040000 0.000000 0.000000 +206 2.050000 0.000000 0.000000 +207 2.060000 0.000000 0.000000 +208 2.070000 0.000000 0.000000 +209 2.080000 0.000000 0.000000 +210 2.090000 0.000000 0.000000 +211 2.100000 0.000000 0.000000 +212 2.110000 0.000000 0.000000 +213 2.120000 0.000000 0.000000 +214 2.130000 0.000000 0.000000 +215 2.140000 0.000000 0.000000 +216 2.150000 0.000000 0.000000 +217 2.160000 0.000000 0.000000 +218 2.170000 0.000000 0.000000 +219 2.180000 0.000000 0.000000 +220 2.190000 0.000000 0.000000 +221 2.200000 0.000000 0.000000 +222 2.210000 0.000000 0.000000 +223 2.220000 0.000000 0.000000 +224 2.230000 0.000000 0.000000 +225 2.240000 0.000000 0.000000 +226 2.250000 0.000000 0.000000 +227 2.260000 0.000000 0.000000 +228 2.270000 0.000000 0.000000 +229 2.280000 0.000000 0.000000 +230 2.290000 0.000000 0.000000 +231 2.300000 0.000000 0.000000 +232 2.310000 0.000000 0.000000 +233 2.320000 0.000000 0.000000 +234 2.330000 0.000000 0.000000 +235 2.340000 0.000000 0.000000 +236 2.350000 0.000000 0.000000 +237 2.360000 0.000000 0.000000 +238 2.370000 0.000000 0.000000 +239 2.380000 0.000000 0.000000 +240 2.390000 0.000000 0.000000 +241 2.400000 0.000000 0.000000 +242 2.410000 0.000000 0.000000 +243 2.420000 0.000000 0.000000 +244 2.430000 0.000000 0.000000 +245 2.440000 0.000000 0.000000 +246 2.450000 0.000000 0.000000 +247 2.460000 0.000000 0.000000 +248 2.470000 0.000000 0.000000 +249 2.480000 0.000000 0.000000 +250 2.490000 0.000000 0.000000 +251 2.500000 0.000000 0.000000 +252 2.510000 0.000000 0.000000 +253 2.520000 0.000000 0.000000 +254 2.530000 0.000000 0.000000 +255 2.540000 0.000000 0.000000 +256 2.550000 0.000000 0.000000 +257 2.560000 0.000000 0.000000 +258 2.570000 0.000000 0.000000 +259 2.580000 0.000000 0.000000 +260 2.590000 0.000000 0.000000 +261 2.600000 0.000000 0.000000 +262 2.610000 0.000000 0.000000 +263 2.620000 0.000000 0.000000 +264 2.630000 0.000000 0.000000 +265 2.640000 0.000000 0.000000 +266 2.650000 0.000000 0.000000 +267 2.660000 0.000000 0.000000 +268 2.670000 0.000000 0.000000 +269 2.680000 0.000000 0.000000 +270 2.690000 0.000000 0.000000 +271 2.700000 0.000000 0.000000 +272 2.710000 0.000000 0.000000 +273 2.720000 0.000000 0.000000 +274 2.730000 0.000000 0.000000 +275 2.740000 0.000000 0.000000 +276 2.750000 0.000000 0.000000 +277 2.760000 0.000000 0.000000 +278 2.770000 0.000000 0.000000 +279 2.780000 0.000000 0.000000 +280 2.790000 0.000000 0.000000 +281 2.800000 0.000000 0.000000 +282 2.810000 0.000000 0.000000 +283 2.820000 0.000000 0.000000 +284 2.830000 0.000000 0.000000 +285 2.840000 0.000000 0.000000 +286 2.850000 0.000000 0.000000 +287 2.860000 0.000000 0.000000 +288 2.870000 0.000000 0.000000 +289 2.880000 0.000000 0.000000 +290 2.890000 0.000000 0.000000 +291 2.900000 0.000000 0.000000 +292 2.910000 0.000000 0.000000 +293 2.920000 0.000000 0.000000 +294 2.930000 0.000000 0.000000 +295 2.940000 0.000000 0.000000 +296 2.950000 0.000000 0.000000 +297 2.960000 0.000000 0.000000 +298 2.970000 0.000000 0.000000 +299 2.980000 0.000000 0.000000 +300 2.990000 0.000000 0.000000 +301 3.000000 0.000000 0.000000 + +HEAD_TAIL +N 301 R 0.000001 3.000000 + +1 0.000001 0.000000 0.000000 +2 0.010000 2161440350647607518822400.000000 2593728420778890895481110528.000000 +3 0.020000 527695398062100709376.000000 316617238851043104653312.000000 +4 0.030000 4067131343850062336.000000 1626852538346708926464.000000 +5 0.040000 128831883585858496.000000 38649565183436988416.000000 +6 0.050000 8853259488081101.000000 2124782299721489152.000000 +7 0.060000 992951926207085.500000 198590391543644928.000000 +8 0.070000 156158887055179.062500 26770097065977256.000000 +9 0.080000 31453085537227.195312 4717963671829832.000000 +10 0.090000 7653019634383.599609 1020402986772367.875000 +11 0.100000 2161437410283.985352 259372665656012.125000 +12 0.110000 688699846600.110840 75130982888675.812500 +13 0.120000 242418934523.303925 24241942688387.753906 +14 0.130000 92772695554.949768 8563661551482.013672 +15 0.140000 38124343876.568542 3267817639811.164551 +16 0.150000 16658711862.666004 1332707274503.870850 +17 0.160000 7678803441.103481 575916830241.413208 +18 0.170000 3709726886.129636 261867373669.903687 +19 0.180000 1868327898.144181 124558074820.194244 +20 0.190000 976500000.999998 61675657894.736687 +21 0.200000 527649455.864879 31660345589.187614 +22 0.210000 293806260.511241 16789908645.082933 +23 0.220000 168114083.438129 9170566326.526011 +24 0.230000 98610181.495127 5145397135.359623 +25 0.240000 59169165.297856 2958842872.372237 +26 0.250000 36250908.888444 1740332628.538169 +27 0.260000 22640215.252607 1045152619.667436 +28 0.270000 14392928.420337 639854320.962319 +29 0.280000 9301695.744822 398774811.984595 +30 0.290000 6104017.717125 252682276.475626 +31 0.300000 4063098.921872 162604585.395105 +32 0.310000 2740806.847436 106159834.284035 +33 0.320000 1872013.228410 70251804.140783 +34 0.330000 1293637.623279 47082727.461649 +35 0.340000 903822.389327 31933167.708250 +36 0.350000 638028.370186 21902644.696022 +37 0.360000 454806.060338 15182681.781435 +38 0.370000 327194.054124 10630250.689058 +39 0.380000 237443.016602 7513588.353207 +40 0.390000 173734.710287 5358508.469115 +41 0.400000 128115.021129 3854188.581495 +42 0.410000 95175.694590 2794659.517251 +43 0.420000 71203.733281 2042016.387369 +44 0.430000 53626.450912 1503014.644703 +45 0.440000 40645.593596 1114014.575978 +46 0.450000 30993.690585 831193.088925 +47 0.460000 23770.248288 624115.416996 +48 0.470000 18330.617960 471472.559289 +49 0.480000 14209.942248 358228.692769 +50 0.490000 11070.674537 273695.309628 +51 0.500000 8666.076152 210220.029942 +52 0.510000 6814.633252 162286.683398 +53 0.520000 5381.995700 125892.872001 +54 0.530000 4268.136868 98116.253151 +55 0.540000 3398.163685 76810.165684 +56 0.550000 2715.696677 60388.560510 +57 0.560000 2178.071621 47673.030759 +58 0.570000 1752.840750 37783.319810 +59 0.580000 1415.206838 30058.470465 +60 0.590000 1146.130977 23999.705760 +61 0.600000 930.929708 19228.816970 +62 0.610000 758.229563 15457.682582 +63 0.620000 619.184089 12465.822566 +64 0.630000 506.884625 10083.785213 +65 0.640000 415.914818 8180.790148 +66 0.650000 342.012307 6655.493196 +67 0.660000 281.810669 5429.052488 +68 0.670000 232.641766 4439.899069 +69 0.680000 192.383722 3639.775908 +70 0.690000 159.343555 2990.725059 +71 0.700000 132.166200 2462.786676 +72 0.710000 109.763738 2032.234764 +73 0.720000 91.260139 1680.219270 +74 0.730000 75.947974 1391.717054 +75 0.740000 63.254382 1154.718549 +76 0.750000 52.714228 959.594954 +77 0.760000 43.948872 798.604206 +78 0.770000 36.649308 665.504021 +79 0.780000 30.562750 555.247832 +80 0.790000 25.481924 463.745109 +81 0.800000 21.236485 387.671861 +82 0.810000 17.686136 324.320364 +83 0.820000 14.715086 271.479665 +84 0.830000 12.227574 227.340274 +85 0.840000 10.144253 190.417955 +86 0.850000 8.399249 159.492629 +87 0.860000 6.937780 133.559247 +88 0.870000 5.714205 111.788215 +89 0.880000 4.690441 93.493410 +90 0.890000 3.834655 78.106288 +91 0.900000 3.120205 65.154867 +92 0.910000 2.524755 54.246625 +93 0.920000 2.029558 45.054564 +94 0.930000 1.618857 37.305814 +95 0.940000 1.279395 30.772315 +96 0.950000 1.000000 25.263158 +97 0.960000 0.771253 20.618297 +98 0.970000 0.585203 16.703371 +99 0.980000 0.435131 13.405424 +100 0.990000 0.315357 10.629373 +101 1.000000 0.221073 8.295079 +102 1.010000 0.148209 6.334918 +103 1.020000 0.093319 4.691763 +104 1.030000 0.053479 3.317301 +105 1.040000 0.026214 2.170635 +106 1.050000 0.009423 1.217110 +107 1.060000 0.001327 0.427337 +108 1.070000 0.000000 0.000000 +109 1.080000 0.000000 0.000000 +110 1.090000 0.000000 0.000000 +111 1.100000 0.000000 0.000000 +112 1.110000 0.000000 0.000000 +113 1.120000 0.000000 0.000000 +114 1.130000 0.000000 0.000000 +115 1.140000 0.000000 0.000000 +116 1.150000 0.000000 0.000000 +117 1.160000 0.000000 0.000000 +118 1.170000 0.000000 0.000000 +119 1.180000 0.000000 0.000000 +120 1.190000 0.000000 0.000000 +121 1.200000 0.000000 0.000000 +122 1.210000 0.000000 0.000000 +123 1.220000 0.000000 0.000000 +124 1.230000 0.000000 0.000000 +125 1.240000 0.000000 0.000000 +126 1.250000 0.000000 0.000000 +127 1.260000 0.000000 0.000000 +128 1.270000 0.000000 0.000000 +129 1.280000 0.000000 0.000000 +130 1.290000 0.000000 0.000000 +131 1.300000 0.000000 0.000000 +132 1.310000 0.000000 0.000000 +133 1.320000 0.000000 0.000000 +134 1.330000 0.000000 0.000000 +135 1.340000 0.000000 0.000000 +136 1.350000 0.000000 0.000000 +137 1.360000 0.000000 0.000000 +138 1.370000 0.000000 0.000000 +139 1.380000 0.000000 0.000000 +140 1.390000 0.000000 0.000000 +141 1.400000 0.000000 0.000000 +142 1.410000 0.000000 0.000000 +143 1.420000 0.000000 0.000000 +144 1.430000 0.000000 0.000000 +145 1.440000 0.000000 0.000000 +146 1.450000 0.000000 0.000000 +147 1.460000 0.000000 0.000000 +148 1.470000 0.000000 0.000000 +149 1.480000 0.000000 0.000000 +150 1.490000 0.000000 0.000000 +151 1.500000 0.000000 0.000000 +152 1.510000 0.000000 0.000000 +153 1.520000 0.000000 0.000000 +154 1.530000 0.000000 0.000000 +155 1.540000 0.000000 0.000000 +156 1.550000 0.000000 0.000000 +157 1.560000 0.000000 0.000000 +158 1.570000 0.000000 0.000000 +159 1.580000 0.000000 0.000000 +160 1.590000 0.000000 0.000000 +161 1.600000 0.000000 0.000000 +162 1.610000 0.000000 0.000000 +163 1.620000 0.000000 0.000000 +164 1.630000 0.000000 0.000000 +165 1.640000 0.000000 0.000000 +166 1.650000 0.000000 0.000000 +167 1.660000 0.000000 0.000000 +168 1.670000 0.000000 0.000000 +169 1.680000 0.000000 0.000000 +170 1.690000 0.000000 0.000000 +171 1.700000 0.000000 0.000000 +172 1.710000 0.000000 0.000000 +173 1.720000 0.000000 0.000000 +174 1.730000 0.000000 0.000000 +175 1.740000 0.000000 0.000000 +176 1.750000 0.000000 0.000000 +177 1.760000 0.000000 0.000000 +178 1.770000 0.000000 0.000000 +179 1.780000 0.000000 0.000000 +180 1.790000 0.000000 0.000000 +181 1.800000 0.000000 0.000000 +182 1.810000 0.000000 0.000000 +183 1.820000 0.000000 0.000000 +184 1.830000 0.000000 0.000000 +185 1.840000 0.000000 0.000000 +186 1.850000 0.000000 0.000000 +187 1.860000 0.000000 0.000000 +188 1.870000 0.000000 0.000000 +189 1.880000 0.000000 0.000000 +190 1.890000 0.000000 0.000000 +191 1.900000 0.000000 0.000000 +192 1.910000 0.000000 0.000000 +193 1.920000 0.000000 0.000000 +194 1.930000 0.000000 0.000000 +195 1.940000 0.000000 0.000000 +196 1.950000 0.000000 0.000000 +197 1.960000 0.000000 0.000000 +198 1.970000 0.000000 0.000000 +199 1.980000 0.000000 0.000000 +200 1.990000 0.000000 0.000000 +201 2.000000 0.000000 0.000000 +202 2.010000 0.000000 0.000000 +203 2.020000 0.000000 0.000000 +204 2.030000 0.000000 0.000000 +205 2.040000 0.000000 0.000000 +206 2.050000 0.000000 0.000000 +207 2.060000 0.000000 0.000000 +208 2.070000 0.000000 0.000000 +209 2.080000 0.000000 0.000000 +210 2.090000 0.000000 0.000000 +211 2.100000 0.000000 0.000000 +212 2.110000 0.000000 0.000000 +213 2.120000 0.000000 0.000000 +214 2.130000 0.000000 0.000000 +215 2.140000 0.000000 0.000000 +216 2.150000 0.000000 0.000000 +217 2.160000 0.000000 0.000000 +218 2.170000 0.000000 0.000000 +219 2.180000 0.000000 0.000000 +220 2.190000 0.000000 0.000000 +221 2.200000 0.000000 0.000000 +222 2.210000 0.000000 0.000000 +223 2.220000 0.000000 0.000000 +224 2.230000 0.000000 0.000000 +225 2.240000 0.000000 0.000000 +226 2.250000 0.000000 0.000000 +227 2.260000 0.000000 0.000000 +228 2.270000 0.000000 0.000000 +229 2.280000 0.000000 0.000000 +230 2.290000 0.000000 0.000000 +231 2.300000 0.000000 0.000000 +232 2.310000 0.000000 0.000000 +233 2.320000 0.000000 0.000000 +234 2.330000 0.000000 0.000000 +235 2.340000 0.000000 0.000000 +236 2.350000 0.000000 0.000000 +237 2.360000 0.000000 0.000000 +238 2.370000 0.000000 0.000000 +239 2.380000 0.000000 0.000000 +240 2.390000 0.000000 0.000000 +241 2.400000 0.000000 0.000000 +242 2.410000 0.000000 0.000000 +243 2.420000 0.000000 0.000000 +244 2.430000 0.000000 0.000000 +245 2.440000 0.000000 0.000000 +246 2.450000 0.000000 0.000000 +247 2.460000 0.000000 0.000000 +248 2.470000 0.000000 0.000000 +249 2.480000 0.000000 0.000000 +250 2.490000 0.000000 0.000000 +251 2.500000 0.000000 0.000000 +252 2.510000 0.000000 0.000000 +253 2.520000 0.000000 0.000000 +254 2.530000 0.000000 0.000000 +255 2.540000 0.000000 0.000000 +256 2.550000 0.000000 0.000000 +257 2.560000 0.000000 0.000000 +258 2.570000 0.000000 0.000000 +259 2.580000 0.000000 0.000000 +260 2.590000 0.000000 0.000000 +261 2.600000 0.000000 0.000000 +262 2.610000 0.000000 0.000000 +263 2.620000 0.000000 0.000000 +264 2.630000 0.000000 0.000000 +265 2.640000 0.000000 0.000000 +266 2.650000 0.000000 0.000000 +267 2.660000 0.000000 0.000000 +268 2.670000 0.000000 0.000000 +269 2.680000 0.000000 0.000000 +270 2.690000 0.000000 0.000000 +271 2.700000 0.000000 0.000000 +272 2.710000 0.000000 0.000000 +273 2.720000 0.000000 0.000000 +274 2.730000 0.000000 0.000000 +275 2.740000 0.000000 0.000000 +276 2.750000 0.000000 0.000000 +277 2.760000 0.000000 0.000000 +278 2.770000 0.000000 0.000000 +279 2.780000 0.000000 0.000000 +280 2.790000 0.000000 0.000000 +281 2.800000 0.000000 0.000000 +282 2.810000 0.000000 0.000000 +283 2.820000 0.000000 0.000000 +284 2.830000 0.000000 0.000000 +285 2.840000 0.000000 0.000000 +286 2.850000 0.000000 0.000000 +287 2.860000 0.000000 0.000000 +288 2.870000 0.000000 0.000000 +289 2.880000 0.000000 0.000000 +290 2.890000 0.000000 0.000000 +291 2.900000 0.000000 0.000000 +292 2.910000 0.000000 0.000000 +293 2.920000 0.000000 0.000000 +294 2.930000 0.000000 0.000000 +295 2.940000 0.000000 0.000000 +296 2.950000 0.000000 0.000000 +297 2.960000 0.000000 0.000000 +298 2.970000 0.000000 0.000000 +299 2.980000 0.000000 0.000000 +300 2.990000 0.000000 0.000000 +301 3.000000 0.000000 0.000000 + +TAIL_TAIL_Wc_0.6 +N 301 R 0.000001 3.000000 + +1 0.000001 0.000000 0.000000 +2 0.010000 3999999999995999707725824.000000 4799999999997598070678224896.000000 +3 0.020000 976562499937500004352.000000 585937499981249777762304.000000 +4 0.030000 7526705687148720128.000000 3010682275956881096704.000000 +5 0.040000 238418578125000000.000000 71525573583984353280.000000 +6 0.050000 16383999744000000.000000 3932159969279997440.000000 +7 0.060000 1837574546257248.500000 367514917824838144.000000 +8 0.070000 288990429236596.312500 49541219354796968.000000 +9 0.080000 58207645654678.343750 8731147992610928.000000 +10 0.090000 14162817119182.900391 1888376117671434.750000 +11 0.100000 3999996000000.000000 479999760000000.500000 +12 0.110000 1274521012945.708496 139038779115662.093750 +13 0.120000 448625279546.553955 44862594934250.781250 +14 0.130000 171687100967.122345 15848078337188.726562 +15 0.140000 70553781072.250778 6047489716531.549805 +16 0.150000 30829035351.054977 2466336874723.629883 +17 0.160000 14210616296.622902 1065805162943.433594 +18 0.170000 6865346349.879549 484618532348.129211 +19 0.180000 3457603256.036191 230510803894.961182 +20 0.190000 1807158928.004511 114139038296.617722 +21 0.200000 976499999.999998 58591874999.999847 +22 0.210000 543739902.726732 31072184111.878654 +23 0.220000 311127628.299641 16971560078.724821 +24 0.230000 182499493.379421 9522417580.006592 +25 0.240000 109507052.064558 5475875881.316449 +26 0.250000 67092480.000000 3220832255.999991 +27 0.260000 41903049.941880 1934285732.237306 +28 0.270000 26639528.522336 1184208483.196407 +29 0.280000 17216873.260370 738043867.822060 +30 0.290000 11298625.429098 467668459.533016 +31 0.300000 7521218.724186 300958488.336427 +32 0.310000 5073808.319410 196492716.046068 +33 0.320000 3465721.661655 130034411.505164 +34 0.330000 2395143.138865 87152427.788625 +35 0.340000 1673561.082347 59112555.692539 +36 0.350000 1181528.973318 40546867.041137 +37 0.360000 842332.557402 28108378.157278 +38 0.370000 606071.119890 19681641.931764 +39 0.380000 439893.177446 13912339.662092 +40 0.390000 321924.360071 9922853.684245 +41 0.400000 237442.016602 7137908.935547 +42 0.410000 176435.450812 5176287.635225 +43 0.420000 132031.660059 3782743.515595 +44 0.430000 99468.250044 2784687.558254 +45 0.440000 75416.262744 2064324.130372 +46 0.450000 57529.220585 1540535.337797 +47 0.460000 44139.942254 1156983.644674 +48 0.470000 34054.846645 874222.695500 +49 0.480000 26413.181465 664417.646696 +50 0.490000 20589.881497 507780.654581 +51 0.500000 16128.000000 390144.000000 +52 0.510000 12691.351515 301294.396513 +53 0.520000 10031.077542 233820.872331 +54 0.530000 7961.876154 182311.949517 +55 0.540000 6344.988397 142792.224654 +56 0.550000 5075.941991 112324.247003 +57 0.560000 4075.667156 88725.341557 +58 0.570000 3284.018178 70364.910655 +59 0.580000 2655.022026 56018.454503 +60 0.590000 2153.374227 44761.819610 +61 0.600000 1751.840750 35894.153820 +62 0.610000 1429.321668 28881.467437 +63 0.620000 1169.400839 23315.070198 +64 0.630000 959.254371 18880.806522 +65 0.640000 788.825286 15336.170940 +66 0.650000 650.196650 12493.203783 +67 0.660000 537.113366 10205.647944 +68 0.670000 444.615844 8359.261950 +69 0.680000 368.758212 6864.481939 +70 0.690000 306.390715 5650.839586 +71 0.700000 254.991024 4662.698464 +72 0.710000 212.532986 3855.984565 +73 0.720000 177.384120 3195.669530 +74 0.730000 148.225307 2653.826099 +75 0.740000 123.987627 2208.120224 +76 0.750000 103.802544 1840.637693 +77 0.760000 86.962472 1536.967937 +78 0.770000 72.889471 1285.486272 +79 0.780000 61.110325 1076.789779 +80 0.790000 51.236635 903.252555 +81 0.800000 42.948872 758.673996 +82 0.810000 35.983576 637.999825 +83 0.820000 30.123043 537.100183 +84 0.830000 25.186999 452.592612 +85 0.840000 21.025860 381.700456 +86 0.850000 17.515264 322.139305 +87 0.860000 14.551619 272.025666 +88 0.870000 12.048476 229.803356 +89 0.880000 9.933566 194.184004 +90 0.890000 8.146368 164.098852 +91 0.900000 6.636119 138.659624 +92 0.910000 5.360169 117.126674 +93 0.920000 4.282632 98.883003 +94 0.930000 3.373272 83.413022 +95 0.940000 2.606573 70.285155 +96 0.950000 1.960975 59.137553 +97 0.960000 1.418239 49.666347 +98 0.970000 0.962916 41.615965 +99 0.980000 0.581905 34.771137 +100 0.990000 0.264083 28.950277 +101 1.000000 -0.000000 24.000000 +102 1.010000 -0.218384 19.790571 +103 1.020000 -0.397913 16.212117 +104 1.030000 -0.544418 13.171468 +105 1.040000 -0.662870 10.589529 +106 1.050000 -0.757512 8.399073 +107 1.060000 -0.831965 6.542902 +108 1.070000 -0.889321 4.972300 +109 1.080000 -0.932223 3.645731 +110 1.090000 -0.962930 2.527753 +111 1.100000 -0.983372 1.588095 +112 1.110000 -0.995200 0.800882 +113 1.120000 -0.999824 0.143980 +114 1.130000 -0.999611 -0.103302 +115 1.140000 -0.997893 -0.240069 +116 1.150000 -0.994811 -0.376178 +117 1.160000 -0.990373 -0.511255 +118 1.170000 -0.984591 -0.644932 +119 1.180000 -0.977480 -0.776841 +120 1.190000 -0.969061 -0.906620 +121 1.200000 -0.959356 -1.033915 +122 1.210000 -0.948392 -1.158376 +123 1.220000 -0.936199 -1.279661 +124 1.230000 -0.922811 -1.397439 +125 1.240000 -0.908263 -1.511387 +126 1.250000 -0.892597 -1.621193 +127 1.260000 -0.875854 -1.726554 +128 1.270000 -0.858082 -1.827184 +129 1.280000 -0.839327 -1.922805 +130 1.290000 -0.819643 -2.013156 +131 1.300000 -0.799083 -2.097989 +132 1.310000 -0.777702 -2.177071 +133 1.320000 -0.755561 -2.250187 +134 1.330000 -0.732719 -2.317134 +135 1.340000 -0.709240 -2.377731 +136 1.350000 -0.685186 -2.431810 +137 1.360000 -0.660626 -2.479224 +138 1.370000 -0.635625 -2.519843 +139 1.380000 -0.610252 -2.553555 +140 1.390000 -0.584577 -2.580268 +141 1.400000 -0.558670 -2.599908 +142 1.410000 -0.532602 -2.612423 +143 1.420000 -0.506445 -2.617776 +144 1.430000 -0.480271 -2.615955 +145 1.440000 -0.454150 -2.606964 +146 1.450000 -0.428155 -2.590827 +147 1.460000 -0.402357 -2.567588 +148 1.470000 -0.376827 -2.537312 +149 1.480000 -0.351634 -2.500082 +150 1.490000 -0.326848 -2.455999 +151 1.500000 -0.302537 -2.405184 +152 1.510000 -0.278767 -2.347777 +153 1.520000 -0.255603 -2.283935 +154 1.530000 -0.233109 -2.213833 +155 1.540000 -0.211346 -2.137662 +156 1.550000 -0.190375 -2.055633 +157 1.560000 -0.170252 -1.967969 +158 1.570000 -0.151034 -1.874911 +159 1.580000 -0.132771 -1.776714 +160 1.590000 -0.115516 -1.673647 +161 1.600000 -0.099314 -1.565993 +162 1.610000 -0.084210 -1.454047 +163 1.620000 -0.070246 -1.338115 +164 1.630000 -0.057460 -1.218516 +165 1.640000 -0.045887 -1.095576 +166 1.650000 -0.035558 -0.969634 +167 1.660000 -0.026503 -0.841034 +168 1.670000 -0.018745 -0.710129 +169 1.680000 -0.012307 -0.577277 +170 1.690000 -0.007205 -0.442843 +171 1.700000 -0.003454 -0.307196 +172 1.710000 -0.001064 -0.170706 +173 1.720000 -0.000042 -0.033748 +174 1.730000 0.000000 0.000000 +175 1.740000 0.000000 0.000000 +176 1.750000 0.000000 0.000000 +177 1.760000 0.000000 0.000000 +178 1.770000 0.000000 0.000000 +179 1.780000 0.000000 0.000000 +180 1.790000 0.000000 0.000000 +181 1.800000 0.000000 0.000000 +182 1.810000 0.000000 0.000000 +183 1.820000 0.000000 0.000000 +184 1.830000 0.000000 0.000000 +185 1.840000 0.000000 0.000000 +186 1.850000 0.000000 0.000000 +187 1.860000 0.000000 0.000000 +188 1.870000 0.000000 0.000000 +189 1.880000 0.000000 0.000000 +190 1.890000 0.000000 0.000000 +191 1.900000 0.000000 0.000000 +192 1.910000 0.000000 0.000000 +193 1.920000 0.000000 0.000000 +194 1.930000 0.000000 0.000000 +195 1.940000 0.000000 0.000000 +196 1.950000 0.000000 0.000000 +197 1.960000 0.000000 0.000000 +198 1.970000 0.000000 0.000000 +199 1.980000 0.000000 0.000000 +200 1.990000 0.000000 0.000000 +201 2.000000 0.000000 0.000000 +202 2.010000 0.000000 0.000000 +203 2.020000 0.000000 0.000000 +204 2.030000 0.000000 0.000000 +205 2.040000 0.000000 0.000000 +206 2.050000 0.000000 0.000000 +207 2.060000 0.000000 0.000000 +208 2.070000 0.000000 0.000000 +209 2.080000 0.000000 0.000000 +210 2.090000 0.000000 0.000000 +211 2.100000 0.000000 0.000000 +212 2.110000 0.000000 0.000000 +213 2.120000 0.000000 0.000000 +214 2.130000 0.000000 0.000000 +215 2.140000 0.000000 0.000000 +216 2.150000 0.000000 0.000000 +217 2.160000 0.000000 0.000000 +218 2.170000 0.000000 0.000000 +219 2.180000 0.000000 0.000000 +220 2.190000 0.000000 0.000000 +221 2.200000 0.000000 0.000000 +222 2.210000 0.000000 0.000000 +223 2.220000 0.000000 0.000000 +224 2.230000 0.000000 0.000000 +225 2.240000 0.000000 0.000000 +226 2.250000 0.000000 0.000000 +227 2.260000 0.000000 0.000000 +228 2.270000 0.000000 0.000000 +229 2.280000 0.000000 0.000000 +230 2.290000 0.000000 0.000000 +231 2.300000 0.000000 0.000000 +232 2.310000 0.000000 0.000000 +233 2.320000 0.000000 0.000000 +234 2.330000 0.000000 0.000000 +235 2.340000 0.000000 0.000000 +236 2.350000 0.000000 0.000000 +237 2.360000 0.000000 0.000000 +238 2.370000 0.000000 0.000000 +239 2.380000 0.000000 0.000000 +240 2.390000 0.000000 0.000000 +241 2.400000 0.000000 0.000000 +242 2.410000 0.000000 0.000000 +243 2.420000 0.000000 0.000000 +244 2.430000 0.000000 0.000000 +245 2.440000 0.000000 0.000000 +246 2.450000 0.000000 0.000000 +247 2.460000 0.000000 0.000000 +248 2.470000 0.000000 0.000000 +249 2.480000 0.000000 0.000000 +250 2.490000 0.000000 0.000000 +251 2.500000 0.000000 0.000000 +252 2.510000 0.000000 0.000000 +253 2.520000 0.000000 0.000000 +254 2.530000 0.000000 0.000000 +255 2.540000 0.000000 0.000000 +256 2.550000 0.000000 0.000000 +257 2.560000 0.000000 0.000000 +258 2.570000 0.000000 0.000000 +259 2.580000 0.000000 0.000000 +260 2.590000 0.000000 0.000000 +261 2.600000 0.000000 0.000000 +262 2.610000 0.000000 0.000000 +263 2.620000 0.000000 0.000000 +264 2.630000 0.000000 0.000000 +265 2.640000 0.000000 0.000000 +266 2.650000 0.000000 0.000000 +267 2.660000 0.000000 0.000000 +268 2.670000 0.000000 0.000000 +269 2.680000 0.000000 0.000000 +270 2.690000 0.000000 0.000000 +271 2.700000 0.000000 0.000000 +272 2.710000 0.000000 0.000000 +273 2.720000 0.000000 0.000000 +274 2.730000 0.000000 0.000000 +275 2.740000 0.000000 0.000000 +276 2.750000 0.000000 0.000000 +277 2.760000 0.000000 0.000000 +278 2.770000 0.000000 0.000000 +279 2.780000 0.000000 0.000000 +280 2.790000 0.000000 0.000000 +281 2.800000 0.000000 0.000000 +282 2.810000 0.000000 0.000000 +283 2.820000 0.000000 0.000000 +284 2.830000 0.000000 0.000000 +285 2.840000 0.000000 0.000000 +286 2.850000 0.000000 0.000000 +287 2.860000 0.000000 0.000000 +288 2.870000 0.000000 0.000000 +289 2.880000 0.000000 0.000000 +290 2.890000 0.000000 0.000000 +291 2.900000 0.000000 0.000000 +292 2.910000 0.000000 0.000000 +293 2.920000 0.000000 0.000000 +294 2.930000 0.000000 0.000000 +295 2.940000 0.000000 0.000000 +296 2.950000 0.000000 0.000000 +297 2.960000 0.000000 0.000000 +298 2.970000 0.000000 0.000000 +299 2.980000 0.000000 0.000000 +300 2.990000 0.000000 0.000000 +301 3.000000 0.000000 0.000000 + + +TAIL_TAIL_Wc_0.7 +N 301 R 0.000001 3.000000 + +1 0.000001 0.000000 0.000000 +2 0.010000 3999999999995999707725824.000000 4799999999997598070678224896.000000 +3 0.020000 976562499937500004352.000000 585937499981249777762304.000000 +4 0.030000 7526705687148720128.000000 3010682275956881096704.000000 +5 0.040000 238418578125000000.000000 71525573583984353280.000000 +6 0.050000 16383999744000000.000000 3932159969279997440.000000 +7 0.060000 1837574546257248.500000 367514917824838144.000000 +8 0.070000 288990429236596.312500 49541219354796968.000000 +9 0.080000 58207645654678.343750 8731147992610928.000000 +10 0.090000 14162817119182.900391 1888376117671434.750000 +11 0.100000 3999996000000.000000 479999760000000.500000 +12 0.110000 1274521012945.708496 139038779115662.093750 +13 0.120000 448625279546.553955 44862594934250.781250 +14 0.130000 171687100967.122345 15848078337188.726562 +15 0.140000 70553781072.250778 6047489716531.549805 +16 0.150000 30829035351.054977 2466336874723.629883 +17 0.160000 14210616296.622902 1065805162943.433594 +18 0.170000 6865346349.879549 484618532348.129211 +19 0.180000 3457603256.036191 230510803894.961182 +20 0.190000 1807158928.004511 114139038296.617722 +21 0.200000 976499999.999998 58591874999.999847 +22 0.210000 543739902.726732 31072184111.878654 +23 0.220000 311127628.299641 16971560078.724821 +24 0.230000 182499493.379421 9522417580.006592 +25 0.240000 109507052.064558 5475875881.316449 +26 0.250000 67092480.000000 3220832255.999991 +27 0.260000 41903049.941880 1934285732.237306 +28 0.270000 26639528.522336 1184208483.196407 +29 0.280000 17216873.260370 738043867.822060 +30 0.290000 11298625.429098 467668459.533016 +31 0.300000 7521218.724186 300958488.336427 +32 0.310000 5073808.319410 196492716.046068 +33 0.320000 3465721.661655 130034411.505164 +34 0.330000 2395143.138865 87152427.788625 +35 0.340000 1673561.082347 59112555.692539 +36 0.350000 1181528.973318 40546867.041137 +37 0.360000 842332.557402 28108378.157278 +38 0.370000 606071.119890 19681641.931764 +39 0.380000 439893.177446 13912339.662092 +40 0.390000 321924.360071 9922853.684245 +41 0.400000 237442.016602 7137908.935547 +42 0.410000 176435.450812 5176287.635225 +43 0.420000 132031.660059 3782743.515595 +44 0.430000 99468.250044 2784687.558254 +45 0.440000 75416.262744 2064324.130372 +46 0.450000 57529.220585 1540535.337797 +47 0.460000 44139.942254 1156983.644674 +48 0.470000 34054.846645 874222.695500 +49 0.480000 26413.181465 664417.646696 +50 0.490000 20589.881497 507780.654581 +51 0.500000 16128.000000 390144.000000 +52 0.510000 12691.351515 301294.396513 +53 0.520000 10031.077542 233820.872331 +54 0.530000 7961.876154 182311.949517 +55 0.540000 6344.988397 142792.224654 +56 0.550000 5075.941991 112324.247003 +57 0.560000 4075.667156 88725.341557 +58 0.570000 3284.018178 70364.910655 +59 0.580000 2655.022026 56018.454503 +60 0.590000 2153.374227 44761.819610 +61 0.600000 1751.840750 35894.153820 +62 0.610000 1429.321668 28881.467437 +63 0.620000 1169.400839 23315.070198 +64 0.630000 959.254371 18880.806522 +65 0.640000 788.825286 15336.170940 +66 0.650000 650.196650 12493.203783 +67 0.660000 537.113366 10205.647944 +68 0.670000 444.615844 8359.261950 +69 0.680000 368.758212 6864.481939 +70 0.690000 306.390715 5650.839586 +71 0.700000 254.991024 4662.698464 +72 0.710000 212.532986 3855.984565 +73 0.720000 177.384120 3195.669530 +74 0.730000 148.225307 2653.826099 +75 0.740000 123.987627 2208.120224 +76 0.750000 103.802544 1840.637693 +77 0.760000 86.962472 1536.967937 +78 0.770000 72.889471 1285.486272 +79 0.780000 61.110325 1076.789779 +80 0.790000 51.236635 903.252555 +81 0.800000 42.948872 758.673996 +82 0.810000 35.983576 637.999825 +83 0.820000 30.123043 537.100183 +84 0.830000 25.186999 452.592612 +85 0.840000 21.025860 381.700456 +86 0.850000 17.515264 322.139305 +87 0.860000 14.551619 272.025666 +88 0.870000 12.048476 229.803356 +89 0.880000 9.933566 194.184004 +90 0.890000 8.146368 164.098852 +91 0.900000 6.636119 138.659624 +92 0.910000 5.360169 117.126674 +93 0.920000 4.282632 98.883003 +94 0.930000 3.373272 83.413022 +95 0.940000 2.606573 70.285155 +96 0.950000 1.960975 59.137553 +97 0.960000 1.418239 49.666347 +98 0.970000 0.962916 41.615965 +99 0.980000 0.581905 34.771137 +100 0.990000 0.264083 28.950277 +101 1.000000 -0.000000 24.000000 +102 1.010000 -0.218384 19.790571 +103 1.020000 -0.397913 16.212117 +104 1.030000 -0.544418 13.171468 +105 1.040000 -0.662870 10.589529 +106 1.050000 -0.757512 8.399073 +107 1.060000 -0.831965 6.542902 +108 1.070000 -0.889321 4.972300 +109 1.080000 -0.932223 3.645731 +110 1.090000 -0.962930 2.527753 +111 1.100000 -0.983372 1.588095 +112 1.110000 -0.995200 0.800882 +113 1.120000 -0.999824 0.143980 +114 1.130000 -0.999714 -0.075900 +115 1.140000 -0.998452 -0.176443 +116 1.150000 -0.996186 -0.276630 +117 1.160000 -0.992921 -0.376260 +118 1.170000 -0.988664 -0.475132 +119 1.180000 -0.983422 -0.573048 +120 1.190000 -0.977206 -0.669809 +121 1.200000 -0.970030 -0.765221 +122 1.210000 -0.961907 -0.859093 +123 1.220000 -0.952854 -0.951234 +124 1.230000 -0.942889 -1.041460 +125 1.240000 -0.932032 -1.129588 +126 1.250000 -0.920305 -1.215441 +127 1.260000 -0.907731 -1.298847 +128 1.270000 -0.894336 -1.379637 +129 1.280000 -0.880148 -1.457649 +130 1.290000 -0.865193 -1.532725 +131 1.300000 -0.849503 -1.604714 +132 1.310000 -0.833110 -1.673472 +133 1.320000 -0.816045 -1.738859 +134 1.330000 -0.798344 -1.800745 +135 1.340000 -0.780042 -1.859004 +136 1.350000 -0.761177 -1.913520 +137 1.360000 -0.741785 -1.964182 +138 1.370000 -0.721906 -2.010888 +139 1.380000 -0.701581 -2.053545 +140 1.390000 -0.680849 -2.092066 +141 1.400000 -0.659753 -2.126374 +142 1.410000 -0.638336 -2.156399 +143 1.420000 -0.616640 -2.182082 +144 1.430000 -0.594709 -2.203371 +145 1.440000 -0.572587 -2.220222 +146 1.450000 -0.550319 -2.232602 +147 1.460000 -0.527950 -2.240486 +148 1.470000 -0.505525 -2.243858 +149 1.480000 -0.483088 -2.242711 +150 1.490000 -0.460686 -2.237047 +151 1.500000 -0.438362 -2.226879 +152 1.510000 -0.416163 -2.212225 +153 1.520000 -0.394133 -2.193117 +154 1.530000 -0.372315 -2.169592 +155 1.540000 -0.350755 -2.141698 +156 1.550000 -0.329496 -2.109490 +157 1.560000 -0.308580 -2.073035 +158 1.570000 -0.288049 -2.032404 +159 1.580000 -0.267945 -1.987681 +160 1.590000 -0.248309 -1.938954 +161 1.600000 -0.229179 -1.886323 +162 1.610000 -0.210595 -1.829893 +163 1.620000 -0.192594 -1.769778 +164 1.630000 -0.175211 -1.706099 +165 1.640000 -0.158483 -1.638984 +166 1.650000 -0.142443 -1.568568 +167 1.660000 -0.127122 -1.494993 +168 1.670000 -0.112553 -1.418408 +169 1.680000 -0.098764 -1.338966 +170 1.690000 -0.085782 -1.256828 +171 1.700000 -0.073635 -1.172158 +172 1.710000 -0.062347 -1.085128 +173 1.720000 -0.051940 -0.995913 +174 1.730000 -0.042436 -0.904692 +175 1.740000 -0.033852 -0.811649 +176 1.750000 -0.026208 -0.716971 +177 1.760000 -0.019518 -0.620850 +178 1.770000 -0.013795 -0.523479 +179 1.780000 -0.009052 -0.425053 +180 1.790000 -0.005297 -0.325771 +181 1.800000 -0.002538 -0.225833 +182 1.810000 -0.000782 -0.125440 +183 1.820000 -0.000031 -0.024795 +184 1.830000 0.000000 0.000000 +185 1.840000 0.000000 0.000000 +186 1.850000 0.000000 0.000000 +187 1.860000 0.000000 0.000000 +188 1.870000 0.000000 0.000000 +189 1.880000 0.000000 0.000000 +190 1.890000 0.000000 0.000000 +191 1.900000 0.000000 0.000000 +192 1.910000 0.000000 0.000000 +193 1.920000 0.000000 0.000000 +194 1.930000 0.000000 0.000000 +195 1.940000 0.000000 0.000000 +196 1.950000 0.000000 0.000000 +197 1.960000 0.000000 0.000000 +198 1.970000 0.000000 0.000000 +199 1.980000 0.000000 0.000000 +200 1.990000 0.000000 0.000000 +201 2.000000 0.000000 0.000000 +202 2.010000 0.000000 0.000000 +203 2.020000 0.000000 0.000000 +204 2.030000 0.000000 0.000000 +205 2.040000 0.000000 0.000000 +206 2.050000 0.000000 0.000000 +207 2.060000 0.000000 0.000000 +208 2.070000 0.000000 0.000000 +209 2.080000 0.000000 0.000000 +210 2.090000 0.000000 0.000000 +211 2.100000 0.000000 0.000000 +212 2.110000 0.000000 0.000000 +213 2.120000 0.000000 0.000000 +214 2.130000 0.000000 0.000000 +215 2.140000 0.000000 0.000000 +216 2.150000 0.000000 0.000000 +217 2.160000 0.000000 0.000000 +218 2.170000 0.000000 0.000000 +219 2.180000 0.000000 0.000000 +220 2.190000 0.000000 0.000000 +221 2.200000 0.000000 0.000000 +222 2.210000 0.000000 0.000000 +223 2.220000 0.000000 0.000000 +224 2.230000 0.000000 0.000000 +225 2.240000 0.000000 0.000000 +226 2.250000 0.000000 0.000000 +227 2.260000 0.000000 0.000000 +228 2.270000 0.000000 0.000000 +229 2.280000 0.000000 0.000000 +230 2.290000 0.000000 0.000000 +231 2.300000 0.000000 0.000000 +232 2.310000 0.000000 0.000000 +233 2.320000 0.000000 0.000000 +234 2.330000 0.000000 0.000000 +235 2.340000 0.000000 0.000000 +236 2.350000 0.000000 0.000000 +237 2.360000 0.000000 0.000000 +238 2.370000 0.000000 0.000000 +239 2.380000 0.000000 0.000000 +240 2.390000 0.000000 0.000000 +241 2.400000 0.000000 0.000000 +242 2.410000 0.000000 0.000000 +243 2.420000 0.000000 0.000000 +244 2.430000 0.000000 0.000000 +245 2.440000 0.000000 0.000000 +246 2.450000 0.000000 0.000000 +247 2.460000 0.000000 0.000000 +248 2.470000 0.000000 0.000000 +249 2.480000 0.000000 0.000000 +250 2.490000 0.000000 0.000000 +251 2.500000 0.000000 0.000000 +252 2.510000 0.000000 0.000000 +253 2.520000 0.000000 0.000000 +254 2.530000 0.000000 0.000000 +255 2.540000 0.000000 0.000000 +256 2.550000 0.000000 0.000000 +257 2.560000 0.000000 0.000000 +258 2.570000 0.000000 0.000000 +259 2.580000 0.000000 0.000000 +260 2.590000 0.000000 0.000000 +261 2.600000 0.000000 0.000000 +262 2.610000 0.000000 0.000000 +263 2.620000 0.000000 0.000000 +264 2.630000 0.000000 0.000000 +265 2.640000 0.000000 0.000000 +266 2.650000 0.000000 0.000000 +267 2.660000 0.000000 0.000000 +268 2.670000 0.000000 0.000000 +269 2.680000 0.000000 0.000000 +270 2.690000 0.000000 0.000000 +271 2.700000 0.000000 0.000000 +272 2.710000 0.000000 0.000000 +273 2.720000 0.000000 0.000000 +274 2.730000 0.000000 0.000000 +275 2.740000 0.000000 0.000000 +276 2.750000 0.000000 0.000000 +277 2.760000 0.000000 0.000000 +278 2.770000 0.000000 0.000000 +279 2.780000 0.000000 0.000000 +280 2.790000 0.000000 0.000000 +281 2.800000 0.000000 0.000000 +282 2.810000 0.000000 0.000000 +283 2.820000 0.000000 0.000000 +284 2.830000 0.000000 0.000000 +285 2.840000 0.000000 0.000000 +286 2.850000 0.000000 0.000000 +287 2.860000 0.000000 0.000000 +288 2.870000 0.000000 0.000000 +289 2.880000 0.000000 0.000000 +290 2.890000 0.000000 0.000000 +291 2.900000 0.000000 0.000000 +292 2.910000 0.000000 0.000000 +293 2.920000 0.000000 0.000000 +294 2.930000 0.000000 0.000000 +295 2.940000 0.000000 0.000000 +296 2.950000 0.000000 0.000000 +297 2.960000 0.000000 0.000000 +298 2.970000 0.000000 0.000000 +299 2.980000 0.000000 0.000000 +300 2.990000 0.000000 0.000000 +301 3.000000 0.000000 0.000000 + + +TAIL_TAIL_Wc_0.8 +N 301 R 0.000001 3.000000 + +1 0.000001 0.000000 0.000000 +2 0.010000 3999999999995999707725824.000000 4799999999997598070678224896.000000 +3 0.020000 976562499937500004352.000000 585937499981249777762304.000000 +4 0.030000 7526705687148720128.000000 3010682275956881096704.000000 +5 0.040000 238418578125000000.000000 71525573583984353280.000000 +6 0.050000 16383999744000000.000000 3932159969279997440.000000 +7 0.060000 1837574546257248.500000 367514917824838144.000000 +8 0.070000 288990429236596.312500 49541219354796968.000000 +9 0.080000 58207645654678.343750 8731147992610928.000000 +10 0.090000 14162817119182.900391 1888376117671434.750000 +11 0.100000 3999996000000.000000 479999760000000.500000 +12 0.110000 1274521012945.708496 139038779115662.093750 +13 0.120000 448625279546.553955 44862594934250.781250 +14 0.130000 171687100967.122345 15848078337188.726562 +15 0.140000 70553781072.250778 6047489716531.549805 +16 0.150000 30829035351.054977 2466336874723.629883 +17 0.160000 14210616296.622902 1065805162943.433594 +18 0.170000 6865346349.879549 484618532348.129211 +19 0.180000 3457603256.036191 230510803894.961182 +20 0.190000 1807158928.004511 114139038296.617722 +21 0.200000 976499999.999998 58591874999.999847 +22 0.210000 543739902.726732 31072184111.878654 +23 0.220000 311127628.299641 16971560078.724821 +24 0.230000 182499493.379421 9522417580.006592 +25 0.240000 109507052.064558 5475875881.316449 +26 0.250000 67092480.000000 3220832255.999991 +27 0.260000 41903049.941880 1934285732.237306 +28 0.270000 26639528.522336 1184208483.196407 +29 0.280000 17216873.260370 738043867.822060 +30 0.290000 11298625.429098 467668459.533016 +31 0.300000 7521218.724186 300958488.336427 +32 0.310000 5073808.319410 196492716.046068 +33 0.320000 3465721.661655 130034411.505164 +34 0.330000 2395143.138865 87152427.788625 +35 0.340000 1673561.082347 59112555.692539 +36 0.350000 1181528.973318 40546867.041137 +37 0.360000 842332.557402 28108378.157278 +38 0.370000 606071.119890 19681641.931764 +39 0.380000 439893.177446 13912339.662092 +40 0.390000 321924.360071 9922853.684245 +41 0.400000 237442.016602 7137908.935547 +42 0.410000 176435.450812 5176287.635225 +43 0.420000 132031.660059 3782743.515595 +44 0.430000 99468.250044 2784687.558254 +45 0.440000 75416.262744 2064324.130372 +46 0.450000 57529.220585 1540535.337797 +47 0.460000 44139.942254 1156983.644674 +48 0.470000 34054.846645 874222.695500 +49 0.480000 26413.181465 664417.646696 +50 0.490000 20589.881497 507780.654581 +51 0.500000 16128.000000 390144.000000 +52 0.510000 12691.351515 301294.396513 +53 0.520000 10031.077542 233820.872331 +54 0.530000 7961.876154 182311.949517 +55 0.540000 6344.988397 142792.224654 +56 0.550000 5075.941991 112324.247003 +57 0.560000 4075.667156 88725.341557 +58 0.570000 3284.018178 70364.910655 +59 0.580000 2655.022026 56018.454503 +60 0.590000 2153.374227 44761.819610 +61 0.600000 1751.840750 35894.153820 +62 0.610000 1429.321668 28881.467437 +63 0.620000 1169.400839 23315.070198 +64 0.630000 959.254371 18880.806522 +65 0.640000 788.825286 15336.170940 +66 0.650000 650.196650 12493.203783 +67 0.660000 537.113366 10205.647944 +68 0.670000 444.615844 8359.261950 +69 0.680000 368.758212 6864.481939 +70 0.690000 306.390715 5650.839586 +71 0.700000 254.991024 4662.698464 +72 0.710000 212.532986 3855.984565 +73 0.720000 177.384120 3195.669530 +74 0.730000 148.225307 2653.826099 +75 0.740000 123.987627 2208.120224 +76 0.750000 103.802544 1840.637693 +77 0.760000 86.962472 1536.967937 +78 0.770000 72.889471 1285.486272 +79 0.780000 61.110325 1076.789779 +80 0.790000 51.236635 903.252555 +81 0.800000 42.948872 758.673996 +82 0.810000 35.983576 637.999825 +83 0.820000 30.123043 537.100183 +84 0.830000 25.186999 452.592612 +85 0.840000 21.025860 381.700456 +86 0.850000 17.515264 322.139305 +87 0.860000 14.551619 272.025666 +88 0.870000 12.048476 229.803356 +89 0.880000 9.933566 194.184004 +90 0.890000 8.146368 164.098852 +91 0.900000 6.636119 138.659624 +92 0.910000 5.360169 117.126674 +93 0.920000 4.282632 98.883003 +94 0.930000 3.373272 83.413022 +95 0.940000 2.606573 70.285155 +96 0.950000 1.960975 59.137553 +97 0.960000 1.418239 49.666347 +98 0.970000 0.962916 41.615965 +99 0.980000 0.581905 34.771137 +100 0.990000 0.264083 28.950277 +101 1.000000 -0.000000 24.000000 +102 1.010000 -0.218384 19.790571 +103 1.020000 -0.397913 16.212117 +104 1.030000 -0.544418 13.171468 +105 1.040000 -0.662870 10.589529 +106 1.050000 -0.757512 8.399073 +107 1.060000 -0.831965 6.542902 +108 1.070000 -0.889321 4.972300 +109 1.080000 -0.932223 3.645731 +110 1.090000 -0.962930 2.527753 +111 1.100000 -0.983372 1.588095 +112 1.110000 -0.995200 0.800882 +113 1.120000 -0.999824 0.143980 +114 1.130000 -0.999781 -0.058114 +115 1.140000 -0.998815 -0.135122 +116 1.150000 -0.997079 -0.211921 +117 1.160000 -0.994577 -0.288394 +118 1.170000 -0.991313 -0.364422 +119 1.180000 -0.987291 -0.439888 +120 1.190000 -0.982517 -0.514676 +121 1.200000 -0.977000 -0.588671 +122 1.210000 -0.970747 -0.661757 +123 1.220000 -0.963768 -0.733823 +124 1.230000 -0.956074 -0.804758 +125 1.240000 -0.947677 -0.874452 +126 1.250000 -0.938590 -0.942798 +127 1.260000 -0.928826 -1.009689 +128 1.270000 -0.918401 -1.075024 +129 1.280000 -0.907331 -1.138702 +130 1.290000 -0.895633 -1.200623 +131 1.300000 -0.883325 -1.260693 +132 1.310000 -0.870426 -1.318820 +133 1.320000 -0.856955 -1.374913 +134 1.330000 -0.842934 -1.428885 +135 1.340000 -0.828385 -1.480655 +136 1.350000 -0.813329 -1.530141 +137 1.360000 -0.797790 -1.577269 +138 1.370000 -0.781792 -1.621964 +139 1.380000 -0.765359 -1.664158 +140 1.390000 -0.748517 -1.703786 +141 1.400000 -0.731292 -1.740787 +142 1.410000 -0.713710 -1.775104 +143 1.420000 -0.695799 -1.806684 +144 1.430000 -0.677586 -1.835478 +145 1.440000 -0.659099 -1.861442 +146 1.450000 -0.640367 -1.884535 +147 1.460000 -0.621418 -1.904723 +148 1.470000 -0.602282 -1.921974 +149 1.480000 -0.582988 -1.936261 +150 1.490000 -0.563567 -1.947563 +151 1.500000 -0.544047 -1.955862 +152 1.510000 -0.524459 -1.961145 +153 1.520000 -0.504834 -1.963404 +154 1.530000 -0.485201 -1.962635 +155 1.540000 -0.465592 -1.958841 +156 1.550000 -0.446035 -1.952026 +157 1.560000 -0.426561 -1.942201 +158 1.570000 -0.407201 -1.929381 +159 1.580000 -0.387983 -1.913586 +160 1.590000 -0.368939 -1.894841 +161 1.600000 -0.350096 -1.873174 +162 1.610000 -0.331485 -1.848619 +163 1.620000 -0.313133 -1.821213 +164 1.630000 -0.295070 -1.790999 +165 1.640000 -0.277323 -1.758024 +166 1.650000 -0.259919 -1.722338 +167 1.660000 -0.242885 -1.683996 +168 1.670000 -0.226247 -1.643057 +169 1.680000 -0.210032 -1.599585 +170 1.690000 -0.194264 -1.553647 +171 1.700000 -0.178967 -1.505313 +172 1.710000 -0.164165 -1.454658 +173 1.720000 -0.149881 -1.401759 +174 1.730000 -0.136137 -1.346700 +175 1.740000 -0.122954 -1.289564 +176 1.750000 -0.110353 -1.230439 +177 1.760000 -0.098352 -1.169418 +178 1.770000 -0.086970 -1.106593 +179 1.780000 -0.076226 -1.042062 +180 1.790000 -0.066134 -0.975924 +181 1.800000 -0.056712 -0.908281 +182 1.810000 -0.047973 -0.839238 +183 1.820000 -0.039932 -0.768901 +184 1.830000 -0.032599 -0.697378 +185 1.840000 -0.025988 -0.624780 +186 1.850000 -0.020107 -0.551218 +187 1.860000 -0.014966 -0.476807 +188 1.870000 -0.010573 -0.401660 +189 1.880000 -0.006935 -0.325894 +190 1.890000 -0.004057 -0.249625 +191 1.900000 -0.001944 -0.172972 +192 1.910000 -0.000599 -0.096052 +193 1.920000 -0.000023 -0.018984 +194 1.930000 0.000000 0.000000 +195 1.940000 0.000000 0.000000 +196 1.950000 0.000000 0.000000 +197 1.960000 0.000000 0.000000 +198 1.970000 0.000000 0.000000 +199 1.980000 0.000000 0.000000 +200 1.990000 0.000000 0.000000 +201 2.000000 0.000000 0.000000 +202 2.010000 0.000000 0.000000 +203 2.020000 0.000000 0.000000 +204 2.030000 0.000000 0.000000 +205 2.040000 0.000000 0.000000 +206 2.050000 0.000000 0.000000 +207 2.060000 0.000000 0.000000 +208 2.070000 0.000000 0.000000 +209 2.080000 0.000000 0.000000 +210 2.090000 0.000000 0.000000 +211 2.100000 0.000000 0.000000 +212 2.110000 0.000000 0.000000 +213 2.120000 0.000000 0.000000 +214 2.130000 0.000000 0.000000 +215 2.140000 0.000000 0.000000 +216 2.150000 0.000000 0.000000 +217 2.160000 0.000000 0.000000 +218 2.170000 0.000000 0.000000 +219 2.180000 0.000000 0.000000 +220 2.190000 0.000000 0.000000 +221 2.200000 0.000000 0.000000 +222 2.210000 0.000000 0.000000 +223 2.220000 0.000000 0.000000 +224 2.230000 0.000000 0.000000 +225 2.240000 0.000000 0.000000 +226 2.250000 0.000000 0.000000 +227 2.260000 0.000000 0.000000 +228 2.270000 0.000000 0.000000 +229 2.280000 0.000000 0.000000 +230 2.290000 0.000000 0.000000 +231 2.300000 0.000000 0.000000 +232 2.310000 0.000000 0.000000 +233 2.320000 0.000000 0.000000 +234 2.330000 0.000000 0.000000 +235 2.340000 0.000000 0.000000 +236 2.350000 0.000000 0.000000 +237 2.360000 0.000000 0.000000 +238 2.370000 0.000000 0.000000 +239 2.380000 0.000000 0.000000 +240 2.390000 0.000000 0.000000 +241 2.400000 0.000000 0.000000 +242 2.410000 0.000000 0.000000 +243 2.420000 0.000000 0.000000 +244 2.430000 0.000000 0.000000 +245 2.440000 0.000000 0.000000 +246 2.450000 0.000000 0.000000 +247 2.460000 0.000000 0.000000 +248 2.470000 0.000000 0.000000 +249 2.480000 0.000000 0.000000 +250 2.490000 0.000000 0.000000 +251 2.500000 0.000000 0.000000 +252 2.510000 0.000000 0.000000 +253 2.520000 0.000000 0.000000 +254 2.530000 0.000000 0.000000 +255 2.540000 0.000000 0.000000 +256 2.550000 0.000000 0.000000 +257 2.560000 0.000000 0.000000 +258 2.570000 0.000000 0.000000 +259 2.580000 0.000000 0.000000 +260 2.590000 0.000000 0.000000 +261 2.600000 0.000000 0.000000 +262 2.610000 0.000000 0.000000 +263 2.620000 0.000000 0.000000 +264 2.630000 0.000000 0.000000 +265 2.640000 0.000000 0.000000 +266 2.650000 0.000000 0.000000 +267 2.660000 0.000000 0.000000 +268 2.670000 0.000000 0.000000 +269 2.680000 0.000000 0.000000 +270 2.690000 0.000000 0.000000 +271 2.700000 0.000000 0.000000 +272 2.710000 0.000000 0.000000 +273 2.720000 0.000000 0.000000 +274 2.730000 0.000000 0.000000 +275 2.740000 0.000000 0.000000 +276 2.750000 0.000000 0.000000 +277 2.760000 0.000000 0.000000 +278 2.770000 0.000000 0.000000 +279 2.780000 0.000000 0.000000 +280 2.790000 0.000000 0.000000 +281 2.800000 0.000000 0.000000 +282 2.810000 0.000000 0.000000 +283 2.820000 0.000000 0.000000 +284 2.830000 0.000000 0.000000 +285 2.840000 0.000000 0.000000 +286 2.850000 0.000000 0.000000 +287 2.860000 0.000000 0.000000 +288 2.870000 0.000000 0.000000 +289 2.880000 0.000000 0.000000 +290 2.890000 0.000000 0.000000 +291 2.900000 0.000000 0.000000 +292 2.910000 0.000000 0.000000 +293 2.920000 0.000000 0.000000 +294 2.930000 0.000000 0.000000 +295 2.940000 0.000000 0.000000 +296 2.950000 0.000000 0.000000 +297 2.960000 0.000000 0.000000 +298 2.970000 0.000000 0.000000 +299 2.980000 0.000000 0.000000 +300 2.990000 0.000000 0.000000 +301 3.000000 0.000000 0.000000 + + +TAIL_TAIL_Wc_0.9 +N 301 R 0.000001 3.000000 + +1 0.000001 0.000000 0.000000 +2 0.010000 3999999999995999707725824.000000 4799999999997598070678224896.000000 +3 0.020000 976562499937500004352.000000 585937499981249777762304.000000 +4 0.030000 7526705687148720128.000000 3010682275956881096704.000000 +5 0.040000 238418578125000000.000000 71525573583984353280.000000 +6 0.050000 16383999744000000.000000 3932159969279997440.000000 +7 0.060000 1837574546257248.500000 367514917824838144.000000 +8 0.070000 288990429236596.312500 49541219354796968.000000 +9 0.080000 58207645654678.343750 8731147992610928.000000 +10 0.090000 14162817119182.900391 1888376117671434.750000 +11 0.100000 3999996000000.000000 479999760000000.500000 +12 0.110000 1274521012945.708496 139038779115662.093750 +13 0.120000 448625279546.553955 44862594934250.781250 +14 0.130000 171687100967.122345 15848078337188.726562 +15 0.140000 70553781072.250778 6047489716531.549805 +16 0.150000 30829035351.054977 2466336874723.629883 +17 0.160000 14210616296.622902 1065805162943.433594 +18 0.170000 6865346349.879549 484618532348.129211 +19 0.180000 3457603256.036191 230510803894.961182 +20 0.190000 1807158928.004511 114139038296.617722 +21 0.200000 976499999.999998 58591874999.999847 +22 0.210000 543739902.726732 31072184111.878654 +23 0.220000 311127628.299641 16971560078.724821 +24 0.230000 182499493.379421 9522417580.006592 +25 0.240000 109507052.064558 5475875881.316449 +26 0.250000 67092480.000000 3220832255.999991 +27 0.260000 41903049.941880 1934285732.237306 +28 0.270000 26639528.522336 1184208483.196407 +29 0.280000 17216873.260370 738043867.822060 +30 0.290000 11298625.429098 467668459.533016 +31 0.300000 7521218.724186 300958488.336427 +32 0.310000 5073808.319410 196492716.046068 +33 0.320000 3465721.661655 130034411.505164 +34 0.330000 2395143.138865 87152427.788625 +35 0.340000 1673561.082347 59112555.692539 +36 0.350000 1181528.973318 40546867.041137 +37 0.360000 842332.557402 28108378.157278 +38 0.370000 606071.119890 19681641.931764 +39 0.380000 439893.177446 13912339.662092 +40 0.390000 321924.360071 9922853.684245 +41 0.400000 237442.016602 7137908.935547 +42 0.410000 176435.450812 5176287.635225 +43 0.420000 132031.660059 3782743.515595 +44 0.430000 99468.250044 2784687.558254 +45 0.440000 75416.262744 2064324.130372 +46 0.450000 57529.220585 1540535.337797 +47 0.460000 44139.942254 1156983.644674 +48 0.470000 34054.846645 874222.695500 +49 0.480000 26413.181465 664417.646696 +50 0.490000 20589.881497 507780.654581 +51 0.500000 16128.000000 390144.000000 +52 0.510000 12691.351515 301294.396513 +53 0.520000 10031.077542 233820.872331 +54 0.530000 7961.876154 182311.949517 +55 0.540000 6344.988397 142792.224654 +56 0.550000 5075.941991 112324.247003 +57 0.560000 4075.667156 88725.341557 +58 0.570000 3284.018178 70364.910655 +59 0.580000 2655.022026 56018.454503 +60 0.590000 2153.374227 44761.819610 +61 0.600000 1751.840750 35894.153820 +62 0.610000 1429.321668 28881.467437 +63 0.620000 1169.400839 23315.070198 +64 0.630000 959.254371 18880.806522 +65 0.640000 788.825286 15336.170940 +66 0.650000 650.196650 12493.203783 +67 0.660000 537.113366 10205.647944 +68 0.670000 444.615844 8359.261950 +69 0.680000 368.758212 6864.481939 +70 0.690000 306.390715 5650.839586 +71 0.700000 254.991024 4662.698464 +72 0.710000 212.532986 3855.984565 +73 0.720000 177.384120 3195.669530 +74 0.730000 148.225307 2653.826099 +75 0.740000 123.987627 2208.120224 +76 0.750000 103.802544 1840.637693 +77 0.760000 86.962472 1536.967937 +78 0.770000 72.889471 1285.486272 +79 0.780000 61.110325 1076.789779 +80 0.790000 51.236635 903.252555 +81 0.800000 42.948872 758.673996 +82 0.810000 35.983576 637.999825 +83 0.820000 30.123043 537.100183 +84 0.830000 25.186999 452.592612 +85 0.840000 21.025860 381.700456 +86 0.850000 17.515264 322.139305 +87 0.860000 14.551619 272.025666 +88 0.870000 12.048476 229.803356 +89 0.880000 9.933566 194.184004 +90 0.890000 8.146368 164.098852 +91 0.900000 6.636119 138.659624 +92 0.910000 5.360169 117.126674 +93 0.920000 4.282632 98.883003 +94 0.930000 3.373272 83.413022 +95 0.940000 2.606573 70.285155 +96 0.950000 1.960975 59.137553 +97 0.960000 1.418239 49.666347 +98 0.970000 0.962916 41.615965 +99 0.980000 0.581905 34.771137 +100 0.990000 0.264083 28.950277 +101 1.000000 -0.000000 24.000000 +102 1.010000 -0.218384 19.790571 +103 1.020000 -0.397913 16.212117 +104 1.030000 -0.544418 13.171468 +105 1.040000 -0.662870 10.589529 +106 1.050000 -0.757512 8.399073 +107 1.060000 -0.831965 6.542902 +108 1.070000 -0.889321 4.972300 +109 1.080000 -0.932223 3.645731 +110 1.090000 -0.962930 2.527753 +111 1.100000 -0.983372 1.588095 +112 1.110000 -0.995200 0.800882 +113 1.120000 -0.999824 0.143980 +114 1.130000 -0.999827 -0.045919 +115 1.140000 -0.999063 -0.106781 +116 1.150000 -0.997692 -0.167513 +117 1.160000 -0.995714 -0.228040 +118 1.170000 -0.993132 -0.288290 +119 1.180000 -0.989949 -0.348189 +120 1.190000 -0.986169 -0.407664 +121 1.200000 -0.981798 -0.466642 +122 1.210000 -0.976839 -0.525051 +123 1.220000 -0.971299 -0.582821 +124 1.230000 -0.965185 -0.639880 +125 1.240000 -0.958504 -0.696160 +126 1.250000 -0.951264 -0.751592 +127 1.260000 -0.943475 -0.806108 +128 1.270000 -0.935145 -0.859642 +129 1.280000 -0.926285 -0.912129 +130 1.290000 -0.916906 -0.963505 +131 1.300000 -0.907019 -1.013706 +132 1.310000 -0.896636 -1.062673 +133 1.320000 -0.885770 -1.110344 +134 1.330000 -0.874434 -1.156663 +135 1.340000 -0.862642 -1.201573 +136 1.350000 -0.850407 -1.245019 +137 1.360000 -0.837746 -1.286948 +138 1.370000 -0.824674 -1.327309 +139 1.380000 -0.811205 -1.366053 +140 1.390000 -0.797358 -1.403132 +141 1.400000 -0.783149 -1.438502 +142 1.410000 -0.768594 -1.472120 +143 1.420000 -0.753712 -1.503944 +144 1.430000 -0.738521 -1.533936 +145 1.440000 -0.723040 -1.562058 +146 1.450000 -0.707286 -1.588278 +147 1.460000 -0.691281 -1.612562 +148 1.470000 -0.675042 -1.634882 +149 1.480000 -0.658590 -1.655210 +150 1.490000 -0.641944 -1.673522 +151 1.500000 -0.625126 -1.689794 +152 1.510000 -0.608155 -1.704008 +153 1.520000 -0.591053 -1.716146 +154 1.530000 -0.573839 -1.726192 +155 1.540000 -0.556536 -1.734136 +156 1.550000 -0.539164 -1.739967 +157 1.560000 -0.521744 -1.743678 +158 1.570000 -0.504297 -1.745265 +159 1.580000 -0.486845 -1.744725 +160 1.590000 -0.469410 -1.742060 +161 1.600000 -0.452011 -1.737272 +162 1.610000 -0.434671 -1.730368 +163 1.620000 -0.417411 -1.721355 +164 1.630000 -0.400251 -1.710245 +165 1.640000 -0.383213 -1.697052 +166 1.650000 -0.366317 -1.681791 +167 1.660000 -0.349584 -1.664481 +168 1.670000 -0.333034 -1.645143 +169 1.680000 -0.316688 -1.623800 +170 1.690000 -0.300565 -1.600480 +171 1.700000 -0.284685 -1.575209 +172 1.710000 -0.269067 -1.548019 +173 1.720000 -0.253731 -1.518943 +174 1.730000 -0.238694 -1.488017 +175 1.740000 -0.223976 -1.455278 +176 1.750000 -0.209595 -1.420765 +177 1.760000 -0.195567 -1.384522 +178 1.770000 -0.181910 -1.346592 +179 1.780000 -0.168640 -1.307021 +180 1.790000 -0.155775 -1.265858 +181 1.800000 -0.143328 -1.223153 +182 1.810000 -0.131317 -1.178957 +183 1.820000 -0.119754 -1.133325 +184 1.830000 -0.108655 -1.086312 +185 1.840000 -0.098032 -1.037976 +186 1.850000 -0.087899 -0.988375 +187 1.860000 -0.078269 -0.937570 +188 1.870000 -0.069152 -0.885622 +189 1.880000 -0.060560 -0.832596 +190 1.890000 -0.052503 -0.778555 +191 1.900000 -0.044992 -0.723566 +192 1.910000 -0.038035 -0.667695 +193 1.920000 -0.031641 -0.611011 +194 1.930000 -0.025817 -0.553582 +195 1.940000 -0.020571 -0.495479 +196 1.950000 -0.015910 -0.436772 +197 1.960000 -0.011838 -0.377533 +198 1.970000 -0.008360 -0.317834 +199 1.980000 -0.005482 -0.257747 +200 1.990000 -0.003207 -0.197347 +201 2.000000 -0.001536 -0.136706 +202 2.010000 -0.000473 -0.075899 +203 2.020000 -0.000018 -0.014999 +204 2.030000 0.000000 0.000000 +205 2.040000 0.000000 0.000000 +206 2.050000 0.000000 0.000000 +207 2.060000 0.000000 0.000000 +208 2.070000 0.000000 0.000000 +209 2.080000 0.000000 0.000000 +210 2.090000 0.000000 0.000000 +211 2.100000 0.000000 0.000000 +212 2.110000 0.000000 0.000000 +213 2.120000 0.000000 0.000000 +214 2.130000 0.000000 0.000000 +215 2.140000 0.000000 0.000000 +216 2.150000 0.000000 0.000000 +217 2.160000 0.000000 0.000000 +218 2.170000 0.000000 0.000000 +219 2.180000 0.000000 0.000000 +220 2.190000 0.000000 0.000000 +221 2.200000 0.000000 0.000000 +222 2.210000 0.000000 0.000000 +223 2.220000 0.000000 0.000000 +224 2.230000 0.000000 0.000000 +225 2.240000 0.000000 0.000000 +226 2.250000 0.000000 0.000000 +227 2.260000 0.000000 0.000000 +228 2.270000 0.000000 0.000000 +229 2.280000 0.000000 0.000000 +230 2.290000 0.000000 0.000000 +231 2.300000 0.000000 0.000000 +232 2.310000 0.000000 0.000000 +233 2.320000 0.000000 0.000000 +234 2.330000 0.000000 0.000000 +235 2.340000 0.000000 0.000000 +236 2.350000 0.000000 0.000000 +237 2.360000 0.000000 0.000000 +238 2.370000 0.000000 0.000000 +239 2.380000 0.000000 0.000000 +240 2.390000 0.000000 0.000000 +241 2.400000 0.000000 0.000000 +242 2.410000 0.000000 0.000000 +243 2.420000 0.000000 0.000000 +244 2.430000 0.000000 0.000000 +245 2.440000 0.000000 0.000000 +246 2.450000 0.000000 0.000000 +247 2.460000 0.000000 0.000000 +248 2.470000 0.000000 0.000000 +249 2.480000 0.000000 0.000000 +250 2.490000 0.000000 0.000000 +251 2.500000 0.000000 0.000000 +252 2.510000 0.000000 0.000000 +253 2.520000 0.000000 0.000000 +254 2.530000 0.000000 0.000000 +255 2.540000 0.000000 0.000000 +256 2.550000 0.000000 0.000000 +257 2.560000 0.000000 0.000000 +258 2.570000 0.000000 0.000000 +259 2.580000 0.000000 0.000000 +260 2.590000 0.000000 0.000000 +261 2.600000 0.000000 0.000000 +262 2.610000 0.000000 0.000000 +263 2.620000 0.000000 0.000000 +264 2.630000 0.000000 0.000000 +265 2.640000 0.000000 0.000000 +266 2.650000 0.000000 0.000000 +267 2.660000 0.000000 0.000000 +268 2.670000 0.000000 0.000000 +269 2.680000 0.000000 0.000000 +270 2.690000 0.000000 0.000000 +271 2.700000 0.000000 0.000000 +272 2.710000 0.000000 0.000000 +273 2.720000 0.000000 0.000000 +274 2.730000 0.000000 0.000000 +275 2.740000 0.000000 0.000000 +276 2.750000 0.000000 0.000000 +277 2.760000 0.000000 0.000000 +278 2.770000 0.000000 0.000000 +279 2.780000 0.000000 0.000000 +280 2.790000 0.000000 0.000000 +281 2.800000 0.000000 0.000000 +282 2.810000 0.000000 0.000000 +283 2.820000 0.000000 0.000000 +284 2.830000 0.000000 0.000000 +285 2.840000 0.000000 0.000000 +286 2.850000 0.000000 0.000000 +287 2.860000 0.000000 0.000000 +288 2.870000 0.000000 0.000000 +289 2.880000 0.000000 0.000000 +290 2.890000 0.000000 0.000000 +291 2.900000 0.000000 0.000000 +292 2.910000 0.000000 0.000000 +293 2.920000 0.000000 0.000000 +294 2.930000 0.000000 0.000000 +295 2.940000 0.000000 0.000000 +296 2.950000 0.000000 0.000000 +297 2.960000 0.000000 0.000000 +298 2.970000 0.000000 0.000000 +299 2.980000 0.000000 0.000000 +300 2.990000 0.000000 0.000000 +301 3.000000 0.000000 0.000000 + + +TAIL_TAIL_Wc_1.0 +N 301 R 0.000001 3.000000 + +1 0.000001 0.000000 0.000000 +2 0.010000 3999999999995999707725824.000000 4799999999997598070678224896.000000 +3 0.020000 976562499937500004352.000000 585937499981249777762304.000000 +4 0.030000 7526705687148720128.000000 3010682275956881096704.000000 +5 0.040000 238418578125000000.000000 71525573583984353280.000000 +6 0.050000 16383999744000000.000000 3932159969279997440.000000 +7 0.060000 1837574546257248.500000 367514917824838144.000000 +8 0.070000 288990429236596.312500 49541219354796968.000000 +9 0.080000 58207645654678.343750 8731147992610928.000000 +10 0.090000 14162817119182.900391 1888376117671434.750000 +11 0.100000 3999996000000.000000 479999760000000.500000 +12 0.110000 1274521012945.708496 139038779115662.093750 +13 0.120000 448625279546.553955 44862594934250.781250 +14 0.130000 171687100967.122345 15848078337188.726562 +15 0.140000 70553781072.250778 6047489716531.549805 +16 0.150000 30829035351.054977 2466336874723.629883 +17 0.160000 14210616296.622902 1065805162943.433594 +18 0.170000 6865346349.879549 484618532348.129211 +19 0.180000 3457603256.036191 230510803894.961182 +20 0.190000 1807158928.004511 114139038296.617722 +21 0.200000 976499999.999998 58591874999.999847 +22 0.210000 543739902.726732 31072184111.878654 +23 0.220000 311127628.299641 16971560078.724821 +24 0.230000 182499493.379421 9522417580.006592 +25 0.240000 109507052.064558 5475875881.316449 +26 0.250000 67092480.000000 3220832255.999991 +27 0.260000 41903049.941880 1934285732.237306 +28 0.270000 26639528.522336 1184208483.196407 +29 0.280000 17216873.260370 738043867.822060 +30 0.290000 11298625.429098 467668459.533016 +31 0.300000 7521218.724186 300958488.336427 +32 0.310000 5073808.319410 196492716.046068 +33 0.320000 3465721.661655 130034411.505164 +34 0.330000 2395143.138865 87152427.788625 +35 0.340000 1673561.082347 59112555.692539 +36 0.350000 1181528.973318 40546867.041137 +37 0.360000 842332.557402 28108378.157278 +38 0.370000 606071.119890 19681641.931764 +39 0.380000 439893.177446 13912339.662092 +40 0.390000 321924.360071 9922853.684245 +41 0.400000 237442.016602 7137908.935547 +42 0.410000 176435.450812 5176287.635225 +43 0.420000 132031.660059 3782743.515595 +44 0.430000 99468.250044 2784687.558254 +45 0.440000 75416.262744 2064324.130372 +46 0.450000 57529.220585 1540535.337797 +47 0.460000 44139.942254 1156983.644674 +48 0.470000 34054.846645 874222.695500 +49 0.480000 26413.181465 664417.646696 +50 0.490000 20589.881497 507780.654581 +51 0.500000 16128.000000 390144.000000 +52 0.510000 12691.351515 301294.396513 +53 0.520000 10031.077542 233820.872331 +54 0.530000 7961.876154 182311.949517 +55 0.540000 6344.988397 142792.224654 +56 0.550000 5075.941991 112324.247003 +57 0.560000 4075.667156 88725.341557 +58 0.570000 3284.018178 70364.910655 +59 0.580000 2655.022026 56018.454503 +60 0.590000 2153.374227 44761.819610 +61 0.600000 1751.840750 35894.153820 +62 0.610000 1429.321668 28881.467437 +63 0.620000 1169.400839 23315.070198 +64 0.630000 959.254371 18880.806522 +65 0.640000 788.825286 15336.170940 +66 0.650000 650.196650 12493.203783 +67 0.660000 537.113366 10205.647944 +68 0.670000 444.615844 8359.261950 +69 0.680000 368.758212 6864.481939 +70 0.690000 306.390715 5650.839586 +71 0.700000 254.991024 4662.698464 +72 0.710000 212.532986 3855.984565 +73 0.720000 177.384120 3195.669530 +74 0.730000 148.225307 2653.826099 +75 0.740000 123.987627 2208.120224 +76 0.750000 103.802544 1840.637693 +77 0.760000 86.962472 1536.967937 +78 0.770000 72.889471 1285.486272 +79 0.780000 61.110325 1076.789779 +80 0.790000 51.236635 903.252555 +81 0.800000 42.948872 758.673996 +82 0.810000 35.983576 637.999825 +83 0.820000 30.123043 537.100183 +84 0.830000 25.186999 452.592612 +85 0.840000 21.025860 381.700456 +86 0.850000 17.515264 322.139305 +87 0.860000 14.551619 272.025666 +88 0.870000 12.048476 229.803356 +89 0.880000 9.933566 194.184004 +90 0.890000 8.146368 164.098852 +91 0.900000 6.636119 138.659624 +92 0.910000 5.360169 117.126674 +93 0.920000 4.282632 98.883003 +94 0.930000 3.373272 83.413022 +95 0.940000 2.606573 70.285155 +96 0.950000 1.960975 59.137553 +97 0.960000 1.418239 49.666347 +98 0.970000 0.962916 41.615965 +99 0.980000 0.581905 34.771137 +100 0.990000 0.264083 28.950277 +101 1.000000 -0.000000 24.000000 +102 1.010000 -0.218384 19.790571 +103 1.020000 -0.397913 16.212117 +104 1.030000 -0.544418 13.171468 +105 1.040000 -0.662870 10.589529 +106 1.050000 -0.757512 8.399073 +107 1.060000 -0.831965 6.542902 +108 1.070000 -0.889321 4.972300 +109 1.080000 -0.932223 3.645731 +110 1.090000 -0.962930 2.527753 +111 1.100000 -0.983372 1.588095 +112 1.110000 -0.995200 0.800882 +113 1.120000 -0.999824 0.143980 +114 1.130000 -0.999860 -0.037195 +115 1.140000 -0.999241 -0.086503 +116 1.150000 -0.998130 -0.135725 +117 1.160000 -0.996527 -0.184813 +118 1.170000 -0.994434 -0.233719 +119 1.180000 -0.991854 -0.282395 +120 1.190000 -0.988787 -0.330791 +121 1.200000 -0.985239 -0.378862 +122 1.210000 -0.981211 -0.426558 +123 1.220000 -0.976709 -0.473833 +124 1.230000 -0.971736 -0.520641 +125 1.240000 -0.966298 -0.566935 +126 1.250000 -0.960399 -0.612669 +127 1.260000 -0.954047 -0.657799 +128 1.270000 -0.947246 -0.702280 +129 1.280000 -0.940003 -0.746067 +130 1.290000 -0.932327 -0.789119 +131 1.300000 -0.924224 -0.831391 +132 1.310000 -0.915702 -0.872843 +133 1.320000 -0.906770 -0.913434 +134 1.330000 -0.897436 -0.953123 +135 1.340000 -0.887710 -0.991872 +136 1.350000 -0.877602 -1.029642 +137 1.360000 -0.867121 -1.066395 +138 1.370000 -0.856277 -1.102096 +139 1.380000 -0.845082 -1.136710 +140 1.390000 -0.833547 -1.170202 +141 1.400000 -0.821682 -1.202539 +142 1.410000 -0.809500 -1.233689 +143 1.420000 -0.797013 -1.263622 +144 1.430000 -0.784232 -1.292307 +145 1.440000 -0.771171 -1.319717 +146 1.450000 -0.757842 -1.345825 +147 1.460000 -0.744259 -1.370605 +148 1.470000 -0.730434 -1.394032 +149 1.480000 -0.716383 -1.416083 +150 1.490000 -0.702117 -1.436737 +151 1.500000 -0.687653 -1.455973 +152 1.510000 -0.673003 -1.473772 +153 1.520000 -0.658182 -1.490117 +154 1.530000 -0.643205 -1.504991 +155 1.540000 -0.628087 -1.518380 +156 1.550000 -0.612843 -1.530270 +157 1.560000 -0.597487 -1.540650 +158 1.570000 -0.582035 -1.549510 +159 1.580000 -0.566502 -1.556841 +160 1.590000 -0.550903 -1.562635 +161 1.600000 -0.535254 -1.566887 +162 1.610000 -0.519570 -1.569593 +163 1.620000 -0.503867 -1.570749 +164 1.630000 -0.488161 -1.570356 +165 1.640000 -0.472465 -1.568413 +166 1.650000 -0.456797 -1.564922 +167 1.660000 -0.441172 -1.559886 +168 1.670000 -0.425605 -1.553311 +169 1.680000 -0.410111 -1.545204 +170 1.690000 -0.394706 -1.535571 +171 1.700000 -0.379405 -1.524423 +172 1.710000 -0.364222 -1.511770 +173 1.720000 -0.349174 -1.497626 +174 1.730000 -0.334275 -1.482003 +175 1.740000 -0.319539 -1.464918 +176 1.750000 -0.304981 -1.446388 +177 1.760000 -0.290616 -1.426430 +178 1.770000 -0.276457 -1.405064 +179 1.780000 -0.262519 -1.382311 +180 1.790000 -0.248816 -1.358195 +181 1.800000 -0.235360 -1.332738 +182 1.810000 -0.222165 -1.305965 +183 1.820000 -0.209245 -1.277904 +184 1.830000 -0.196611 -1.248582 +185 1.840000 -0.184277 -1.218028 +186 1.850000 -0.172255 -1.186271 +187 1.860000 -0.160556 -1.153344 +188 1.870000 -0.149192 -1.119279 +189 1.880000 -0.138174 -1.084109 +190 1.890000 -0.127513 -1.047869 +191 1.900000 -0.117220 -1.010595 +192 1.910000 -0.107305 -0.972323 +193 1.920000 -0.097777 -0.933093 +194 1.930000 -0.088646 -0.892941 +195 1.940000 -0.079921 -0.851908 +196 1.950000 -0.071610 -0.810034 +197 1.960000 -0.063723 -0.767361 +198 1.970000 -0.056266 -0.723931 +199 1.980000 -0.049247 -0.679786 +200 1.990000 -0.042672 -0.634970 +201 2.000000 -0.036549 -0.589528 +202 2.010000 -0.030884 -0.543504 +203 2.020000 -0.025681 -0.496943 +204 2.030000 -0.020946 -0.449892 +205 2.040000 -0.016685 -0.402397 +206 2.050000 -0.012900 -0.354505 +207 2.060000 -0.009596 -0.306263 +208 2.070000 -0.006776 -0.257719 +209 2.080000 -0.004442 -0.208921 +210 2.090000 -0.002598 -0.159916 +211 2.100000 -0.001244 -0.110754 +212 2.110000 -0.000383 -0.061482 +213 2.120000 -0.000015 -0.012150 +214 2.130000 0.000000 0.000000 +215 2.140000 0.000000 0.000000 +216 2.150000 0.000000 0.000000 +217 2.160000 0.000000 0.000000 +218 2.170000 0.000000 0.000000 +219 2.180000 0.000000 0.000000 +220 2.190000 0.000000 0.000000 +221 2.200000 0.000000 0.000000 +222 2.210000 0.000000 0.000000 +223 2.220000 0.000000 0.000000 +224 2.230000 0.000000 0.000000 +225 2.240000 0.000000 0.000000 +226 2.250000 0.000000 0.000000 +227 2.260000 0.000000 0.000000 +228 2.270000 0.000000 0.000000 +229 2.280000 0.000000 0.000000 +230 2.290000 0.000000 0.000000 +231 2.300000 0.000000 0.000000 +232 2.310000 0.000000 0.000000 +233 2.320000 0.000000 0.000000 +234 2.330000 0.000000 0.000000 +235 2.340000 0.000000 0.000000 +236 2.350000 0.000000 0.000000 +237 2.360000 0.000000 0.000000 +238 2.370000 0.000000 0.000000 +239 2.380000 0.000000 0.000000 +240 2.390000 0.000000 0.000000 +241 2.400000 0.000000 0.000000 +242 2.410000 0.000000 0.000000 +243 2.420000 0.000000 0.000000 +244 2.430000 0.000000 0.000000 +245 2.440000 0.000000 0.000000 +246 2.450000 0.000000 0.000000 +247 2.460000 0.000000 0.000000 +248 2.470000 0.000000 0.000000 +249 2.480000 0.000000 0.000000 +250 2.490000 0.000000 0.000000 +251 2.500000 0.000000 0.000000 +252 2.510000 0.000000 0.000000 +253 2.520000 0.000000 0.000000 +254 2.530000 0.000000 0.000000 +255 2.540000 0.000000 0.000000 +256 2.550000 0.000000 0.000000 +257 2.560000 0.000000 0.000000 +258 2.570000 0.000000 0.000000 +259 2.580000 0.000000 0.000000 +260 2.590000 0.000000 0.000000 +261 2.600000 0.000000 0.000000 +262 2.610000 0.000000 0.000000 +263 2.620000 0.000000 0.000000 +264 2.630000 0.000000 0.000000 +265 2.640000 0.000000 0.000000 +266 2.650000 0.000000 0.000000 +267 2.660000 0.000000 0.000000 +268 2.670000 0.000000 0.000000 +269 2.680000 0.000000 0.000000 +270 2.690000 0.000000 0.000000 +271 2.700000 0.000000 0.000000 +272 2.710000 0.000000 0.000000 +273 2.720000 0.000000 0.000000 +274 2.730000 0.000000 0.000000 +275 2.740000 0.000000 0.000000 +276 2.750000 0.000000 0.000000 +277 2.760000 0.000000 0.000000 +278 2.770000 0.000000 0.000000 +279 2.780000 0.000000 0.000000 +280 2.790000 0.000000 0.000000 +281 2.800000 0.000000 0.000000 +282 2.810000 0.000000 0.000000 +283 2.820000 0.000000 0.000000 +284 2.830000 0.000000 0.000000 +285 2.840000 0.000000 0.000000 +286 2.850000 0.000000 0.000000 +287 2.860000 0.000000 0.000000 +288 2.870000 0.000000 0.000000 +289 2.880000 0.000000 0.000000 +290 2.890000 0.000000 0.000000 +291 2.900000 0.000000 0.000000 +292 2.910000 0.000000 0.000000 +293 2.920000 0.000000 0.000000 +294 2.930000 0.000000 0.000000 +295 2.940000 0.000000 0.000000 +296 2.950000 0.000000 0.000000 +297 2.960000 0.000000 0.000000 +298 2.970000 0.000000 0.000000 +299 2.980000 0.000000 0.000000 +300 2.990000 0.000000 0.000000 +301 3.000000 0.000000 0.000000 + + +TAIL_TAIL_Wc_1.1 +N 301 R 0.000001 3.000000 + +1 0.000001 0.000000 0.000000 +2 0.010000 3999999999995999707725824.000000 4799999999997598070678224896.000000 +3 0.020000 976562499937500004352.000000 585937499981249777762304.000000 +4 0.030000 7526705687148720128.000000 3010682275956881096704.000000 +5 0.040000 238418578125000000.000000 71525573583984353280.000000 +6 0.050000 16383999744000000.000000 3932159969279997440.000000 +7 0.060000 1837574546257248.500000 367514917824838144.000000 +8 0.070000 288990429236596.312500 49541219354796968.000000 +9 0.080000 58207645654678.343750 8731147992610928.000000 +10 0.090000 14162817119182.900391 1888376117671434.750000 +11 0.100000 3999996000000.000000 479999760000000.500000 +12 0.110000 1274521012945.708496 139038779115662.093750 +13 0.120000 448625279546.553955 44862594934250.781250 +14 0.130000 171687100967.122345 15848078337188.726562 +15 0.140000 70553781072.250778 6047489716531.549805 +16 0.150000 30829035351.054977 2466336874723.629883 +17 0.160000 14210616296.622902 1065805162943.433594 +18 0.170000 6865346349.879549 484618532348.129211 +19 0.180000 3457603256.036191 230510803894.961182 +20 0.190000 1807158928.004511 114139038296.617722 +21 0.200000 976499999.999998 58591874999.999847 +22 0.210000 543739902.726732 31072184111.878654 +23 0.220000 311127628.299641 16971560078.724821 +24 0.230000 182499493.379421 9522417580.006592 +25 0.240000 109507052.064558 5475875881.316449 +26 0.250000 67092480.000000 3220832255.999991 +27 0.260000 41903049.941880 1934285732.237306 +28 0.270000 26639528.522336 1184208483.196407 +29 0.280000 17216873.260370 738043867.822060 +30 0.290000 11298625.429098 467668459.533016 +31 0.300000 7521218.724186 300958488.336427 +32 0.310000 5073808.319410 196492716.046068 +33 0.320000 3465721.661655 130034411.505164 +34 0.330000 2395143.138865 87152427.788625 +35 0.340000 1673561.082347 59112555.692539 +36 0.350000 1181528.973318 40546867.041137 +37 0.360000 842332.557402 28108378.157278 +38 0.370000 606071.119890 19681641.931764 +39 0.380000 439893.177446 13912339.662092 +40 0.390000 321924.360071 9922853.684245 +41 0.400000 237442.016602 7137908.935547 +42 0.410000 176435.450812 5176287.635225 +43 0.420000 132031.660059 3782743.515595 +44 0.430000 99468.250044 2784687.558254 +45 0.440000 75416.262744 2064324.130372 +46 0.450000 57529.220585 1540535.337797 +47 0.460000 44139.942254 1156983.644674 +48 0.470000 34054.846645 874222.695500 +49 0.480000 26413.181465 664417.646696 +50 0.490000 20589.881497 507780.654581 +51 0.500000 16128.000000 390144.000000 +52 0.510000 12691.351515 301294.396513 +53 0.520000 10031.077542 233820.872331 +54 0.530000 7961.876154 182311.949517 +55 0.540000 6344.988397 142792.224654 +56 0.550000 5075.941991 112324.247003 +57 0.560000 4075.667156 88725.341557 +58 0.570000 3284.018178 70364.910655 +59 0.580000 2655.022026 56018.454503 +60 0.590000 2153.374227 44761.819610 +61 0.600000 1751.840750 35894.153820 +62 0.610000 1429.321668 28881.467437 +63 0.620000 1169.400839 23315.070198 +64 0.630000 959.254371 18880.806522 +65 0.640000 788.825286 15336.170940 +66 0.650000 650.196650 12493.203783 +67 0.660000 537.113366 10205.647944 +68 0.670000 444.615844 8359.261950 +69 0.680000 368.758212 6864.481939 +70 0.690000 306.390715 5650.839586 +71 0.700000 254.991024 4662.698464 +72 0.710000 212.532986 3855.984565 +73 0.720000 177.384120 3195.669530 +74 0.730000 148.225307 2653.826099 +75 0.740000 123.987627 2208.120224 +76 0.750000 103.802544 1840.637693 +77 0.760000 86.962472 1536.967937 +78 0.770000 72.889471 1285.486272 +79 0.780000 61.110325 1076.789779 +80 0.790000 51.236635 903.252555 +81 0.800000 42.948872 758.673996 +82 0.810000 35.983576 637.999825 +83 0.820000 30.123043 537.100183 +84 0.830000 25.186999 452.592612 +85 0.840000 21.025860 381.700456 +86 0.850000 17.515264 322.139305 +87 0.860000 14.551619 272.025666 +88 0.870000 12.048476 229.803356 +89 0.880000 9.933566 194.184004 +90 0.890000 8.146368 164.098852 +91 0.900000 6.636119 138.659624 +92 0.910000 5.360169 117.126674 +93 0.920000 4.282632 98.883003 +94 0.930000 3.373272 83.413022 +95 0.940000 2.606573 70.285155 +96 0.950000 1.960975 59.137553 +97 0.960000 1.418239 49.666347 +98 0.970000 0.962916 41.615965 +99 0.980000 0.581905 34.771137 +100 0.990000 0.264083 28.950277 +101 1.000000 -0.000000 24.000000 +102 1.010000 -0.218384 19.790571 +103 1.020000 -0.397913 16.212117 +104 1.030000 -0.544418 13.171468 +105 1.040000 -0.662870 10.589529 +106 1.050000 -0.757512 8.399073 +107 1.060000 -0.831965 6.542902 +108 1.070000 -0.889321 4.972300 +109 1.080000 -0.932223 3.645731 +110 1.090000 -0.962930 2.527753 +111 1.100000 -0.983372 1.588095 +112 1.110000 -0.995200 0.800882 +113 1.120000 -0.999824 0.143980 +114 1.130000 -0.999884 -0.030740 +115 1.140000 -0.999373 -0.071496 +116 1.150000 -0.998454 -0.112194 +117 1.160000 -0.997129 -0.152800 +118 1.170000 -0.995399 -0.193281 +119 1.180000 -0.993264 -0.233605 +120 1.190000 -0.990727 -0.273738 +121 1.200000 -0.987790 -0.313649 +122 1.210000 -0.984455 -0.353303 +123 1.220000 -0.980725 -0.392669 +124 1.230000 -0.976603 -0.431715 +125 1.240000 -0.972092 -0.470408 +126 1.250000 -0.967196 -0.508719 +127 1.260000 -0.961919 -0.546614 +128 1.270000 -0.956265 -0.584063 +129 1.280000 -0.950239 -0.621036 +130 1.290000 -0.943846 -0.657502 +131 1.300000 -0.937091 -0.693432 +132 1.310000 -0.929979 -0.728797 +133 1.320000 -0.922517 -0.763567 +134 1.330000 -0.914710 -0.797715 +135 1.340000 -0.906565 -0.831211 +136 1.350000 -0.898088 -0.864030 +137 1.360000 -0.889287 -0.896144 +138 1.370000 -0.880168 -0.927527 +139 1.380000 -0.870739 -0.958154 +140 1.390000 -0.861007 -0.987999 +141 1.400000 -0.850981 -1.017039 +142 1.410000 -0.840669 -1.045248 +143 1.420000 -0.830079 -1.072606 +144 1.430000 -0.819220 -1.099088 +145 1.440000 -0.808101 -1.124674 +146 1.450000 -0.796730 -1.149343 +147 1.460000 -0.785117 -1.173074 +148 1.470000 -0.773271 -1.195849 +149 1.480000 -0.761203 -1.217648 +150 1.490000 -0.748922 -1.238454 +151 1.500000 -0.736437 -1.258250 +152 1.510000 -0.723760 -1.277020 +153 1.520000 -0.710900 -1.294748 +154 1.530000 -0.697869 -1.311420 +155 1.540000 -0.684676 -1.327023 +156 1.550000 -0.671332 -1.341543 +157 1.560000 -0.657848 -1.354969 +158 1.570000 -0.644236 -1.367290 +159 1.580000 -0.630506 -1.378496 +160 1.590000 -0.616670 -1.388577 +161 1.600000 -0.602739 -1.397526 +162 1.610000 -0.588723 -1.405335 +163 1.620000 -0.574636 -1.411998 +164 1.630000 -0.560487 -1.417509 +165 1.640000 -0.546289 -1.421864 +166 1.650000 -0.532054 -1.425059 +167 1.660000 -0.517792 -1.427092 +168 1.670000 -0.503516 -1.427961 +169 1.680000 -0.489237 -1.427666 +170 1.690000 -0.474966 -1.426206 +171 1.700000 -0.460716 -1.423582 +172 1.710000 -0.446499 -1.419798 +173 1.720000 -0.432324 -1.414856 +174 1.730000 -0.418205 -1.408759 +175 1.740000 -0.404153 -1.401514 +176 1.750000 -0.390179 -1.393126 +177 1.760000 -0.376294 -1.383601 +178 1.770000 -0.362511 -1.372948 +179 1.780000 -0.348839 -1.361175 +180 1.790000 -0.335291 -1.348292 +181 1.800000 -0.321877 -1.334309 +182 1.810000 -0.308608 -1.319238 +183 1.820000 -0.295496 -1.303091 +184 1.830000 -0.282550 -1.285881 +185 1.840000 -0.269782 -1.267622 +186 1.850000 -0.257201 -1.248329 +187 1.860000 -0.244818 -1.228018 +188 1.870000 -0.232644 -1.206706 +189 1.880000 -0.220688 -1.184410 +190 1.890000 -0.208959 -1.161147 +191 1.900000 -0.197468 -1.136937 +192 1.910000 -0.186223 -1.111800 +193 1.920000 -0.175235 -1.085757 +194 1.930000 -0.164511 -1.058827 +195 1.940000 -0.154061 -1.031034 +196 1.950000 -0.143893 -1.002401 +197 1.960000 -0.134016 -0.972949 +198 1.970000 -0.124437 -0.942704 +199 1.980000 -0.115164 -0.911690 +200 1.990000 -0.106206 -0.879933 +201 2.000000 -0.097568 -0.847458 +202 2.010000 -0.089259 -0.814292 +203 2.020000 -0.081284 -0.780461 +204 2.030000 -0.073652 -0.745994 +205 2.040000 -0.066367 -0.710919 +206 2.050000 -0.059435 -0.675264 +207 2.060000 -0.052863 -0.639057 +208 2.070000 -0.046656 -0.602330 +209 2.080000 -0.040818 -0.565112 +210 2.090000 -0.035355 -0.527432 +211 2.100000 -0.030271 -0.489323 +212 2.110000 -0.025570 -0.450814 +213 2.120000 -0.021256 -0.411937 +214 2.130000 -0.017332 -0.372725 +215 2.140000 -0.013802 -0.333209 +216 2.150000 -0.010669 -0.293421 +217 2.160000 -0.007935 -0.253393 +218 2.170000 -0.005602 -0.213159 +219 2.180000 -0.003672 -0.172751 +220 2.190000 -0.002147 -0.132202 +221 2.200000 -0.001028 -0.091545 +222 2.210000 -0.000317 -0.050814 +223 2.220000 -0.000012 -0.010041 +224 2.230000 0.000000 0.000000 +225 2.240000 0.000000 0.000000 +226 2.250000 0.000000 0.000000 +227 2.260000 0.000000 0.000000 +228 2.270000 0.000000 0.000000 +229 2.280000 0.000000 0.000000 +230 2.290000 0.000000 0.000000 +231 2.300000 0.000000 0.000000 +232 2.310000 0.000000 0.000000 +233 2.320000 0.000000 0.000000 +234 2.330000 0.000000 0.000000 +235 2.340000 0.000000 0.000000 +236 2.350000 0.000000 0.000000 +237 2.360000 0.000000 0.000000 +238 2.370000 0.000000 0.000000 +239 2.380000 0.000000 0.000000 +240 2.390000 0.000000 0.000000 +241 2.400000 0.000000 0.000000 +242 2.410000 0.000000 0.000000 +243 2.420000 0.000000 0.000000 +244 2.430000 0.000000 0.000000 +245 2.440000 0.000000 0.000000 +246 2.450000 0.000000 0.000000 +247 2.460000 0.000000 0.000000 +248 2.470000 0.000000 0.000000 +249 2.480000 0.000000 0.000000 +250 2.490000 0.000000 0.000000 +251 2.500000 0.000000 0.000000 +252 2.510000 0.000000 0.000000 +253 2.520000 0.000000 0.000000 +254 2.530000 0.000000 0.000000 +255 2.540000 0.000000 0.000000 +256 2.550000 0.000000 0.000000 +257 2.560000 0.000000 0.000000 +258 2.570000 0.000000 0.000000 +259 2.580000 0.000000 0.000000 +260 2.590000 0.000000 0.000000 +261 2.600000 0.000000 0.000000 +262 2.610000 0.000000 0.000000 +263 2.620000 0.000000 0.000000 +264 2.630000 0.000000 0.000000 +265 2.640000 0.000000 0.000000 +266 2.650000 0.000000 0.000000 +267 2.660000 0.000000 0.000000 +268 2.670000 0.000000 0.000000 +269 2.680000 0.000000 0.000000 +270 2.690000 0.000000 0.000000 +271 2.700000 0.000000 0.000000 +272 2.710000 0.000000 0.000000 +273 2.720000 0.000000 0.000000 +274 2.730000 0.000000 0.000000 +275 2.740000 0.000000 0.000000 +276 2.750000 0.000000 0.000000 +277 2.760000 0.000000 0.000000 +278 2.770000 0.000000 0.000000 +279 2.780000 0.000000 0.000000 +280 2.790000 0.000000 0.000000 +281 2.800000 0.000000 0.000000 +282 2.810000 0.000000 0.000000 +283 2.820000 0.000000 0.000000 +284 2.830000 0.000000 0.000000 +285 2.840000 0.000000 0.000000 +286 2.850000 0.000000 0.000000 +287 2.860000 0.000000 0.000000 +288 2.870000 0.000000 0.000000 +289 2.880000 0.000000 0.000000 +290 2.890000 0.000000 0.000000 +291 2.900000 0.000000 0.000000 +292 2.910000 0.000000 0.000000 +293 2.920000 0.000000 0.000000 +294 2.930000 0.000000 0.000000 +295 2.940000 0.000000 0.000000 +296 2.950000 0.000000 0.000000 +297 2.960000 0.000000 0.000000 +298 2.970000 0.000000 0.000000 +299 2.980000 0.000000 0.000000 +300 2.990000 0.000000 0.000000 +301 3.000000 0.000000 0.000000 + + +TAIL_TAIL_Wc_1.2 +N 301 R 0.000001 3.000000 + +1 0.000001 0.000000 0.000000 +2 0.010000 3999999999995999707725824.000000 4799999999997598070678224896.000000 +3 0.020000 976562499937500004352.000000 585937499981249777762304.000000 +4 0.030000 7526705687148720128.000000 3010682275956881096704.000000 +5 0.040000 238418578125000000.000000 71525573583984353280.000000 +6 0.050000 16383999744000000.000000 3932159969279997440.000000 +7 0.060000 1837574546257248.500000 367514917824838144.000000 +8 0.070000 288990429236596.312500 49541219354796968.000000 +9 0.080000 58207645654678.343750 8731147992610928.000000 +10 0.090000 14162817119182.900391 1888376117671434.750000 +11 0.100000 3999996000000.000000 479999760000000.500000 +12 0.110000 1274521012945.708496 139038779115662.093750 +13 0.120000 448625279546.553955 44862594934250.781250 +14 0.130000 171687100967.122345 15848078337188.726562 +15 0.140000 70553781072.250778 6047489716531.549805 +16 0.150000 30829035351.054977 2466336874723.629883 +17 0.160000 14210616296.622902 1065805162943.433594 +18 0.170000 6865346349.879549 484618532348.129211 +19 0.180000 3457603256.036191 230510803894.961182 +20 0.190000 1807158928.004511 114139038296.617722 +21 0.200000 976499999.999998 58591874999.999847 +22 0.210000 543739902.726732 31072184111.878654 +23 0.220000 311127628.299641 16971560078.724821 +24 0.230000 182499493.379421 9522417580.006592 +25 0.240000 109507052.064558 5475875881.316449 +26 0.250000 67092480.000000 3220832255.999991 +27 0.260000 41903049.941880 1934285732.237306 +28 0.270000 26639528.522336 1184208483.196407 +29 0.280000 17216873.260370 738043867.822060 +30 0.290000 11298625.429098 467668459.533016 +31 0.300000 7521218.724186 300958488.336427 +32 0.310000 5073808.319410 196492716.046068 +33 0.320000 3465721.661655 130034411.505164 +34 0.330000 2395143.138865 87152427.788625 +35 0.340000 1673561.082347 59112555.692539 +36 0.350000 1181528.973318 40546867.041137 +37 0.360000 842332.557402 28108378.157278 +38 0.370000 606071.119890 19681641.931764 +39 0.380000 439893.177446 13912339.662092 +40 0.390000 321924.360071 9922853.684245 +41 0.400000 237442.016602 7137908.935547 +42 0.410000 176435.450812 5176287.635225 +43 0.420000 132031.660059 3782743.515595 +44 0.430000 99468.250044 2784687.558254 +45 0.440000 75416.262744 2064324.130372 +46 0.450000 57529.220585 1540535.337797 +47 0.460000 44139.942254 1156983.644674 +48 0.470000 34054.846645 874222.695500 +49 0.480000 26413.181465 664417.646696 +50 0.490000 20589.881497 507780.654581 +51 0.500000 16128.000000 390144.000000 +52 0.510000 12691.351515 301294.396513 +53 0.520000 10031.077542 233820.872331 +54 0.530000 7961.876154 182311.949517 +55 0.540000 6344.988397 142792.224654 +56 0.550000 5075.941991 112324.247003 +57 0.560000 4075.667156 88725.341557 +58 0.570000 3284.018178 70364.910655 +59 0.580000 2655.022026 56018.454503 +60 0.590000 2153.374227 44761.819610 +61 0.600000 1751.840750 35894.153820 +62 0.610000 1429.321668 28881.467437 +63 0.620000 1169.400839 23315.070198 +64 0.630000 959.254371 18880.806522 +65 0.640000 788.825286 15336.170940 +66 0.650000 650.196650 12493.203783 +67 0.660000 537.113366 10205.647944 +68 0.670000 444.615844 8359.261950 +69 0.680000 368.758212 6864.481939 +70 0.690000 306.390715 5650.839586 +71 0.700000 254.991024 4662.698464 +72 0.710000 212.532986 3855.984565 +73 0.720000 177.384120 3195.669530 +74 0.730000 148.225307 2653.826099 +75 0.740000 123.987627 2208.120224 +76 0.750000 103.802544 1840.637693 +77 0.760000 86.962472 1536.967937 +78 0.770000 72.889471 1285.486272 +79 0.780000 61.110325 1076.789779 +80 0.790000 51.236635 903.252555 +81 0.800000 42.948872 758.673996 +82 0.810000 35.983576 637.999825 +83 0.820000 30.123043 537.100183 +84 0.830000 25.186999 452.592612 +85 0.840000 21.025860 381.700456 +86 0.850000 17.515264 322.139305 +87 0.860000 14.551619 272.025666 +88 0.870000 12.048476 229.803356 +89 0.880000 9.933566 194.184004 +90 0.890000 8.146368 164.098852 +91 0.900000 6.636119 138.659624 +92 0.910000 5.360169 117.126674 +93 0.920000 4.282632 98.883003 +94 0.930000 3.373272 83.413022 +95 0.940000 2.606573 70.285155 +96 0.950000 1.960975 59.137553 +97 0.960000 1.418239 49.666347 +98 0.970000 0.962916 41.615965 +99 0.980000 0.581905 34.771137 +100 0.990000 0.264083 28.950277 +101 1.000000 -0.000000 24.000000 +102 1.010000 -0.218384 19.790571 +103 1.020000 -0.397913 16.212117 +104 1.030000 -0.544418 13.171468 +105 1.040000 -0.662870 10.589529 +106 1.050000 -0.757512 8.399073 +107 1.060000 -0.831965 6.542902 +108 1.070000 -0.889321 4.972300 +109 1.080000 -0.932223 3.645731 +110 1.090000 -0.962930 2.527753 +111 1.100000 -0.983372 1.588095 +112 1.110000 -0.995200 0.800882 +113 1.120000 -0.999824 0.143980 +114 1.130000 -0.999903 -0.025830 +115 1.140000 -0.999473 -0.060080 +116 1.150000 -0.998701 -0.094289 +117 1.160000 -0.997587 -0.128434 +118 1.170000 -0.996133 -0.162490 +119 1.180000 -0.994338 -0.196435 +120 1.190000 -0.992205 -0.230245 +121 1.200000 -0.989734 -0.263897 +122 1.210000 -0.986927 -0.297369 +123 1.220000 -0.983787 -0.330637 +124 1.230000 -0.980315 -0.363678 +125 1.240000 -0.976514 -0.396470 +126 1.250000 -0.972387 -0.428990 +127 1.260000 -0.967935 -0.461216 +128 1.270000 -0.963163 -0.493126 +129 1.280000 -0.958074 -0.524698 +130 1.290000 -0.952671 -0.555911 +131 1.300000 -0.946957 -0.586742 +132 1.310000 -0.940937 -0.617172 +133 1.320000 -0.934615 -0.647178 +134 1.330000 -0.927995 -0.676741 +135 1.340000 -0.921082 -0.705840 +136 1.350000 -0.913880 -0.734455 +137 1.360000 -0.906394 -0.762567 +138 1.370000 -0.898630 -0.790157 +139 1.380000 -0.890593 -0.817204 +140 1.390000 -0.882288 -0.843692 +141 1.400000 -0.873721 -0.869602 +142 1.410000 -0.864898 -0.894915 +143 1.420000 -0.855825 -0.919615 +144 1.430000 -0.846508 -0.943685 +145 1.440000 -0.836953 -0.967108 +146 1.450000 -0.827168 -0.989869 +147 1.460000 -0.817158 -1.011951 +148 1.470000 -0.806931 -1.033339 +149 1.480000 -0.796494 -1.054019 +150 1.490000 -0.785853 -1.073977 +151 1.500000 -0.775017 -1.093199 +152 1.510000 -0.763992 -1.111672 +153 1.520000 -0.752786 -1.129382 +154 1.530000 -0.741407 -1.146319 +155 1.540000 -0.729862 -1.162470 +156 1.550000 -0.718160 -1.177825 +157 1.560000 -0.706308 -1.192372 +158 1.570000 -0.694315 -1.206102 +159 1.580000 -0.682189 -1.219005 +160 1.590000 -0.669938 -1.231073 +161 1.600000 -0.657570 -1.242297 +162 1.610000 -0.645095 -1.252670 +163 1.620000 -0.632520 -1.262184 +164 1.630000 -0.619854 -1.270833 +165 1.640000 -0.607106 -1.278611 +166 1.650000 -0.594285 -1.285513 +167 1.660000 -0.581399 -1.291534 +168 1.670000 -0.568457 -1.296670 +169 1.680000 -0.555468 -1.300917 +170 1.690000 -0.542442 -1.304273 +171 1.700000 -0.529386 -1.306734 +172 1.710000 -0.516310 -1.308300 +173 1.720000 -0.503223 -1.308970 +174 1.730000 -0.490133 -1.308742 +175 1.740000 -0.477051 -1.307617 +176 1.750000 -0.463984 -1.305597 +177 1.760000 -0.450942 -1.302681 +178 1.770000 -0.437933 -1.298873 +179 1.780000 -0.424968 -1.294174 +180 1.790000 -0.412053 -1.288588 +181 1.800000 -0.399199 -1.282120 +182 1.810000 -0.386413 -1.274772 +183 1.820000 -0.373706 -1.266551 +184 1.830000 -0.361085 -1.257462 +185 1.840000 -0.348560 -1.247511 +186 1.850000 -0.336138 -1.236706 +187 1.860000 -0.323828 -1.225052 +188 1.870000 -0.311640 -1.212559 +189 1.880000 -0.299580 -1.199235 +190 1.890000 -0.287658 -1.185089 +191 1.900000 -0.275881 -1.170131 +192 1.910000 -0.264258 -1.154371 +193 1.920000 -0.252796 -1.137820 +194 1.930000 -0.241504 -1.120489 +195 1.940000 -0.230389 -1.102390 +196 1.950000 -0.219459 -1.083535 +197 1.960000 -0.208721 -1.063938 +198 1.970000 -0.198182 -1.043612 +199 1.980000 -0.187851 -1.022570 +200 1.990000 -0.177733 -1.000828 +201 2.000000 -0.167837 -0.978400 +202 2.010000 -0.158168 -0.955301 +203 2.020000 -0.148733 -0.931547 +204 2.030000 -0.139539 -0.907155 +205 2.040000 -0.130592 -0.882142 +206 2.050000 -0.121898 -0.856524 +207 2.060000 -0.113463 -0.830318 +208 2.070000 -0.105293 -0.803544 +209 2.080000 -0.097394 -0.776219 +210 2.090000 -0.089771 -0.748362 +211 2.100000 -0.082429 -0.719992 +212 2.110000 -0.075373 -0.691129 +213 2.120000 -0.068608 -0.661792 +214 2.130000 -0.062138 -0.632001 +215 2.140000 -0.055969 -0.601777 +216 2.150000 -0.050104 -0.571141 +217 2.160000 -0.044548 -0.540114 +218 2.170000 -0.039303 -0.508716 +219 2.180000 -0.034374 -0.476970 +220 2.190000 -0.029765 -0.444896 +221 2.200000 -0.025478 -0.412518 +222 2.210000 -0.021515 -0.379857 +223 2.220000 -0.017881 -0.346936 +224 2.230000 -0.014577 -0.313777 +225 2.240000 -0.011606 -0.280403 +226 2.250000 -0.008970 -0.246837 +227 2.260000 -0.006670 -0.213101 +228 2.270000 -0.004709 -0.179220 +229 2.280000 -0.003086 -0.145216 +230 2.290000 -0.001805 -0.111112 +231 2.300000 -0.000864 -0.076932 +232 2.310000 -0.000266 -0.042699 +233 2.320000 -0.000010 -0.008437 +234 2.330000 0.000000 0.000000 +235 2.340000 0.000000 0.000000 +236 2.350000 0.000000 0.000000 +237 2.360000 0.000000 0.000000 +238 2.370000 0.000000 0.000000 +239 2.380000 0.000000 0.000000 +240 2.390000 0.000000 0.000000 +241 2.400000 0.000000 0.000000 +242 2.410000 0.000000 0.000000 +243 2.420000 0.000000 0.000000 +244 2.430000 0.000000 0.000000 +245 2.440000 0.000000 0.000000 +246 2.450000 0.000000 0.000000 +247 2.460000 0.000000 0.000000 +248 2.470000 0.000000 0.000000 +249 2.480000 0.000000 0.000000 +250 2.490000 0.000000 0.000000 +251 2.500000 0.000000 0.000000 +252 2.510000 0.000000 0.000000 +253 2.520000 0.000000 0.000000 +254 2.530000 0.000000 0.000000 +255 2.540000 0.000000 0.000000 +256 2.550000 0.000000 0.000000 +257 2.560000 0.000000 0.000000 +258 2.570000 0.000000 0.000000 +259 2.580000 0.000000 0.000000 +260 2.590000 0.000000 0.000000 +261 2.600000 0.000000 0.000000 +262 2.610000 0.000000 0.000000 +263 2.620000 0.000000 0.000000 +264 2.630000 0.000000 0.000000 +265 2.640000 0.000000 0.000000 +266 2.650000 0.000000 0.000000 +267 2.660000 0.000000 0.000000 +268 2.670000 0.000000 0.000000 +269 2.680000 0.000000 0.000000 +270 2.690000 0.000000 0.000000 +271 2.700000 0.000000 0.000000 +272 2.710000 0.000000 0.000000 +273 2.720000 0.000000 0.000000 +274 2.730000 0.000000 0.000000 +275 2.740000 0.000000 0.000000 +276 2.750000 0.000000 0.000000 +277 2.760000 0.000000 0.000000 +278 2.770000 0.000000 0.000000 +279 2.780000 0.000000 0.000000 +280 2.790000 0.000000 0.000000 +281 2.800000 0.000000 0.000000 +282 2.810000 0.000000 0.000000 +283 2.820000 0.000000 0.000000 +284 2.830000 0.000000 0.000000 +285 2.840000 0.000000 0.000000 +286 2.850000 0.000000 0.000000 +287 2.860000 0.000000 0.000000 +288 2.870000 0.000000 0.000000 +289 2.880000 0.000000 0.000000 +290 2.890000 0.000000 0.000000 +291 2.900000 0.000000 0.000000 +292 2.910000 0.000000 0.000000 +293 2.920000 0.000000 0.000000 +294 2.930000 0.000000 0.000000 +295 2.940000 0.000000 0.000000 +296 2.950000 0.000000 0.000000 +297 2.960000 0.000000 0.000000 +298 2.970000 0.000000 0.000000 +299 2.980000 0.000000 0.000000 +300 2.990000 0.000000 0.000000 +301 3.000000 0.000000 0.000000 + + +TAIL_TAIL_Wc_1.3 +N 301 R 0.000001 3.000000 + +1 0.000001 0.000000 0.000000 +2 0.010000 3999999999995999707725824.000000 4799999999997598070678224896.000000 +3 0.020000 976562499937500004352.000000 585937499981249777762304.000000 +4 0.030000 7526705687148720128.000000 3010682275956881096704.000000 +5 0.040000 238418578125000000.000000 71525573583984353280.000000 +6 0.050000 16383999744000000.000000 3932159969279997440.000000 +7 0.060000 1837574546257248.500000 367514917824838144.000000 +8 0.070000 288990429236596.312500 49541219354796968.000000 +9 0.080000 58207645654678.343750 8731147992610928.000000 +10 0.090000 14162817119182.900391 1888376117671434.750000 +11 0.100000 3999996000000.000000 479999760000000.500000 +12 0.110000 1274521012945.708496 139038779115662.093750 +13 0.120000 448625279546.553955 44862594934250.781250 +14 0.130000 171687100967.122345 15848078337188.726562 +15 0.140000 70553781072.250778 6047489716531.549805 +16 0.150000 30829035351.054977 2466336874723.629883 +17 0.160000 14210616296.622902 1065805162943.433594 +18 0.170000 6865346349.879549 484618532348.129211 +19 0.180000 3457603256.036191 230510803894.961182 +20 0.190000 1807158928.004511 114139038296.617722 +21 0.200000 976499999.999998 58591874999.999847 +22 0.210000 543739902.726732 31072184111.878654 +23 0.220000 311127628.299641 16971560078.724821 +24 0.230000 182499493.379421 9522417580.006592 +25 0.240000 109507052.064558 5475875881.316449 +26 0.250000 67092480.000000 3220832255.999991 +27 0.260000 41903049.941880 1934285732.237306 +28 0.270000 26639528.522336 1184208483.196407 +29 0.280000 17216873.260370 738043867.822060 +30 0.290000 11298625.429098 467668459.533016 +31 0.300000 7521218.724186 300958488.336427 +32 0.310000 5073808.319410 196492716.046068 +33 0.320000 3465721.661655 130034411.505164 +34 0.330000 2395143.138865 87152427.788625 +35 0.340000 1673561.082347 59112555.692539 +36 0.350000 1181528.973318 40546867.041137 +37 0.360000 842332.557402 28108378.157278 +38 0.370000 606071.119890 19681641.931764 +39 0.380000 439893.177446 13912339.662092 +40 0.390000 321924.360071 9922853.684245 +41 0.400000 237442.016602 7137908.935547 +42 0.410000 176435.450812 5176287.635225 +43 0.420000 132031.660059 3782743.515595 +44 0.430000 99468.250044 2784687.558254 +45 0.440000 75416.262744 2064324.130372 +46 0.450000 57529.220585 1540535.337797 +47 0.460000 44139.942254 1156983.644674 +48 0.470000 34054.846645 874222.695500 +49 0.480000 26413.181465 664417.646696 +50 0.490000 20589.881497 507780.654581 +51 0.500000 16128.000000 390144.000000 +52 0.510000 12691.351515 301294.396513 +53 0.520000 10031.077542 233820.872331 +54 0.530000 7961.876154 182311.949517 +55 0.540000 6344.988397 142792.224654 +56 0.550000 5075.941991 112324.247003 +57 0.560000 4075.667156 88725.341557 +58 0.570000 3284.018178 70364.910655 +59 0.580000 2655.022026 56018.454503 +60 0.590000 2153.374227 44761.819610 +61 0.600000 1751.840750 35894.153820 +62 0.610000 1429.321668 28881.467437 +63 0.620000 1169.400839 23315.070198 +64 0.630000 959.254371 18880.806522 +65 0.640000 788.825286 15336.170940 +66 0.650000 650.196650 12493.203783 +67 0.660000 537.113366 10205.647944 +68 0.670000 444.615844 8359.261950 +69 0.680000 368.758212 6864.481939 +70 0.690000 306.390715 5650.839586 +71 0.700000 254.991024 4662.698464 +72 0.710000 212.532986 3855.984565 +73 0.720000 177.384120 3195.669530 +74 0.730000 148.225307 2653.826099 +75 0.740000 123.987627 2208.120224 +76 0.750000 103.802544 1840.637693 +77 0.760000 86.962472 1536.967937 +78 0.770000 72.889471 1285.486272 +79 0.780000 61.110325 1076.789779 +80 0.790000 51.236635 903.252555 +81 0.800000 42.948872 758.673996 +82 0.810000 35.983576 637.999825 +83 0.820000 30.123043 537.100183 +84 0.830000 25.186999 452.592612 +85 0.840000 21.025860 381.700456 +86 0.850000 17.515264 322.139305 +87 0.860000 14.551619 272.025666 +88 0.870000 12.048476 229.803356 +89 0.880000 9.933566 194.184004 +90 0.890000 8.146368 164.098852 +91 0.900000 6.636119 138.659624 +92 0.910000 5.360169 117.126674 +93 0.920000 4.282632 98.883003 +94 0.930000 3.373272 83.413022 +95 0.940000 2.606573 70.285155 +96 0.950000 1.960975 59.137553 +97 0.960000 1.418239 49.666347 +98 0.970000 0.962916 41.615965 +99 0.980000 0.581905 34.771137 +100 0.990000 0.264083 28.950277 +101 1.000000 -0.000000 24.000000 +102 1.010000 -0.218384 19.790571 +103 1.020000 -0.397913 16.212117 +104 1.030000 -0.544418 13.171468 +105 1.040000 -0.662870 10.589529 +106 1.050000 -0.757512 8.399073 +107 1.060000 -0.831965 6.542902 +108 1.070000 -0.889321 4.972300 +109 1.080000 -0.932223 3.645731 +110 1.090000 -0.962930 2.527753 +111 1.100000 -0.983372 1.588095 +112 1.110000 -0.995200 0.800882 +113 1.120000 -0.999824 0.143980 +114 1.130000 -0.999917 -0.022010 +115 1.140000 -0.999551 -0.051196 +116 1.150000 -0.998893 -0.080352 +117 1.160000 -0.997944 -0.109461 +118 1.170000 -0.996704 -0.138506 +119 1.180000 -0.995174 -0.167470 +120 1.190000 -0.993355 -0.196337 +121 1.200000 -0.991248 -0.225088 +122 1.210000 -0.988854 -0.253709 +123 1.220000 -0.986174 -0.282181 +124 1.230000 -0.983211 -0.310488 +125 1.240000 -0.979965 -0.338614 +126 1.250000 -0.976439 -0.366543 +127 1.260000 -0.972635 -0.394257 +128 1.270000 -0.968555 -0.421741 +129 1.280000 -0.964201 -0.448979 +130 1.290000 -0.959576 -0.475955 +131 1.300000 -0.954683 -0.502652 +132 1.310000 -0.949524 -0.529056 +133 1.320000 -0.944103 -0.555152 +134 1.330000 -0.938422 -0.580923 +135 1.340000 -0.932485 -0.606354 +136 1.350000 -0.926296 -0.631432 +137 1.360000 -0.919858 -0.656141 +138 1.370000 -0.913175 -0.680467 +139 1.380000 -0.906250 -0.704395 +140 1.390000 -0.899088 -0.727912 +141 1.400000 -0.891693 -0.751004 +142 1.410000 -0.884069 -0.773657 +143 1.420000 -0.876221 -0.795859 +144 1.430000 -0.868154 -0.817596 +145 1.440000 -0.859871 -0.838855 +146 1.450000 -0.851378 -0.859625 +147 1.460000 -0.842680 -0.879892 +148 1.470000 -0.833782 -0.899646 +149 1.480000 -0.824689 -0.918874 +150 1.490000 -0.815407 -0.937566 +151 1.500000 -0.805940 -0.955710 +152 1.510000 -0.796294 -0.973296 +153 1.520000 -0.786476 -0.990314 +154 1.530000 -0.776490 -1.006753 +155 1.540000 -0.766343 -1.022605 +156 1.550000 -0.756040 -1.037859 +157 1.560000 -0.745587 -1.052507 +158 1.570000 -0.734992 -1.066541 +159 1.580000 -0.724259 -1.079952 +160 1.590000 -0.713395 -1.092732 +161 1.600000 -0.702406 -1.104874 +162 1.610000 -0.691299 -1.116371 +163 1.620000 -0.680081 -1.127215 +164 1.630000 -0.668757 -1.137402 +165 1.640000 -0.657335 -1.146924 +166 1.650000 -0.645821 -1.155777 +167 1.660000 -0.634222 -1.163955 +168 1.670000 -0.622544 -1.171452 +169 1.680000 -0.610795 -1.178266 +170 1.690000 -0.598981 -1.184392 +171 1.700000 -0.587109 -1.189826 +172 1.710000 -0.575187 -1.194565 +173 1.720000 -0.563220 -1.198607 +174 1.730000 -0.551217 -1.201949 +175 1.740000 -0.539184 -1.204589 +176 1.750000 -0.527128 -1.206525 +177 1.760000 -0.515056 -1.207757 +178 1.770000 -0.502975 -1.208283 +179 1.780000 -0.490892 -1.208104 +180 1.790000 -0.478815 -1.207220 +181 1.800000 -0.466750 -1.205630 +182 1.810000 -0.454705 -1.203337 +183 1.820000 -0.442686 -1.200340 +184 1.830000 -0.430700 -1.196643 +185 1.840000 -0.418755 -1.192247 +186 1.850000 -0.406858 -1.187155 +187 1.860000 -0.395015 -1.181369 +188 1.870000 -0.383233 -1.174893 +189 1.880000 -0.371519 -1.167732 +190 1.890000 -0.359880 -1.159888 +191 1.900000 -0.348324 -1.151367 +192 1.910000 -0.336855 -1.142174 +193 1.920000 -0.325482 -1.132314 +194 1.930000 -0.314211 -1.121793 +195 1.940000 -0.303049 -1.110616 +196 1.950000 -0.292001 -1.098791 +197 1.960000 -0.281075 -1.086324 +198 1.970000 -0.270277 -1.073223 +199 1.980000 -0.259613 -1.059495 +200 1.990000 -0.249089 -1.045148 +201 2.000000 -0.238712 -1.030191 +202 2.010000 -0.228487 -1.014633 +203 2.020000 -0.218421 -0.998482 +204 2.030000 -0.208519 -0.981748 +205 2.040000 -0.198788 -0.964440 +206 2.050000 -0.189232 -0.946569 +207 2.060000 -0.179858 -0.928146 +208 2.070000 -0.170671 -0.909180 +209 2.080000 -0.161677 -0.889684 +210 2.090000 -0.152879 -0.869668 +211 2.100000 -0.144285 -0.849144 +212 2.110000 -0.135898 -0.828125 +213 2.120000 -0.127724 -0.806621 +214 2.130000 -0.119767 -0.784647 +215 2.140000 -0.112033 -0.762214 +216 2.150000 -0.104524 -0.739337 +217 2.160000 -0.097247 -0.716027 +218 2.170000 -0.090205 -0.692300 +219 2.180000 -0.083403 -0.668168 +220 2.190000 -0.076843 -0.643646 +221 2.200000 -0.070531 -0.618748 +222 2.210000 -0.064469 -0.593489 +223 2.220000 -0.058662 -0.567883 +224 2.230000 -0.053113 -0.541946 +225 2.240000 -0.047824 -0.515692 +226 2.250000 -0.042800 -0.489137 +227 2.260000 -0.038043 -0.462296 +228 2.270000 -0.033555 -0.435185 +229 2.280000 -0.029340 -0.407820 +230 2.290000 -0.025399 -0.380217 +231 2.300000 -0.021736 -0.352392 +232 2.310000 -0.018352 -0.324362 +233 2.320000 -0.015250 -0.296141 +234 2.330000 -0.012430 -0.267748 +235 2.340000 -0.009895 -0.239199 +236 2.350000 -0.007647 -0.210510 +237 2.360000 -0.005685 -0.181697 +238 2.370000 -0.004013 -0.152779 +239 2.380000 -0.002630 -0.123772 +240 2.390000 -0.001538 -0.094692 +241 2.400000 -0.000736 -0.065557 +242 2.410000 -0.000227 -0.036384 +243 2.420000 -0.000009 -0.007189 +244 2.430000 0.000000 0.000000 +245 2.440000 0.000000 0.000000 +246 2.450000 0.000000 0.000000 +247 2.460000 0.000000 0.000000 +248 2.470000 0.000000 0.000000 +249 2.480000 0.000000 0.000000 +250 2.490000 0.000000 0.000000 +251 2.500000 0.000000 0.000000 +252 2.510000 0.000000 0.000000 +253 2.520000 0.000000 0.000000 +254 2.530000 0.000000 0.000000 +255 2.540000 0.000000 0.000000 +256 2.550000 0.000000 0.000000 +257 2.560000 0.000000 0.000000 +258 2.570000 0.000000 0.000000 +259 2.580000 0.000000 0.000000 +260 2.590000 0.000000 0.000000 +261 2.600000 0.000000 0.000000 +262 2.610000 0.000000 0.000000 +263 2.620000 0.000000 0.000000 +264 2.630000 0.000000 0.000000 +265 2.640000 0.000000 0.000000 +266 2.650000 0.000000 0.000000 +267 2.660000 0.000000 0.000000 +268 2.670000 0.000000 0.000000 +269 2.680000 0.000000 0.000000 +270 2.690000 0.000000 0.000000 +271 2.700000 0.000000 0.000000 +272 2.710000 0.000000 0.000000 +273 2.720000 0.000000 0.000000 +274 2.730000 0.000000 0.000000 +275 2.740000 0.000000 0.000000 +276 2.750000 0.000000 0.000000 +277 2.760000 0.000000 0.000000 +278 2.770000 0.000000 0.000000 +279 2.780000 0.000000 0.000000 +280 2.790000 0.000000 0.000000 +281 2.800000 0.000000 0.000000 +282 2.810000 0.000000 0.000000 +283 2.820000 0.000000 0.000000 +284 2.830000 0.000000 0.000000 +285 2.840000 0.000000 0.000000 +286 2.850000 0.000000 0.000000 +287 2.860000 0.000000 0.000000 +288 2.870000 0.000000 0.000000 +289 2.880000 0.000000 0.000000 +290 2.890000 0.000000 0.000000 +291 2.900000 0.000000 0.000000 +292 2.910000 0.000000 0.000000 +293 2.920000 0.000000 0.000000 +294 2.930000 0.000000 0.000000 +295 2.940000 0.000000 0.000000 +296 2.950000 0.000000 0.000000 +297 2.960000 0.000000 0.000000 +298 2.970000 0.000000 0.000000 +299 2.980000 0.000000 0.000000 +300 2.990000 0.000000 0.000000 +301 3.000000 0.000000 0.000000 + + +TAIL_TAIL_Wc_1.4 +N 301 R 0.000001 3.000000 + +1 0.000001 0.000000 0.000000 +2 0.010000 3999999999995999707725824.000000 4799999999997598070678224896.000000 +3 0.020000 976562499937500004352.000000 585937499981249777762304.000000 +4 0.030000 7526705687148720128.000000 3010682275956881096704.000000 +5 0.040000 238418578125000000.000000 71525573583984353280.000000 +6 0.050000 16383999744000000.000000 3932159969279997440.000000 +7 0.060000 1837574546257248.500000 367514917824838144.000000 +8 0.070000 288990429236596.312500 49541219354796968.000000 +9 0.080000 58207645654678.343750 8731147992610928.000000 +10 0.090000 14162817119182.900391 1888376117671434.750000 +11 0.100000 3999996000000.000000 479999760000000.500000 +12 0.110000 1274521012945.708496 139038779115662.093750 +13 0.120000 448625279546.553955 44862594934250.781250 +14 0.130000 171687100967.122345 15848078337188.726562 +15 0.140000 70553781072.250778 6047489716531.549805 +16 0.150000 30829035351.054977 2466336874723.629883 +17 0.160000 14210616296.622902 1065805162943.433594 +18 0.170000 6865346349.879549 484618532348.129211 +19 0.180000 3457603256.036191 230510803894.961182 +20 0.190000 1807158928.004511 114139038296.617722 +21 0.200000 976499999.999998 58591874999.999847 +22 0.210000 543739902.726732 31072184111.878654 +23 0.220000 311127628.299641 16971560078.724821 +24 0.230000 182499493.379421 9522417580.006592 +25 0.240000 109507052.064558 5475875881.316449 +26 0.250000 67092480.000000 3220832255.999991 +27 0.260000 41903049.941880 1934285732.237306 +28 0.270000 26639528.522336 1184208483.196407 +29 0.280000 17216873.260370 738043867.822060 +30 0.290000 11298625.429098 467668459.533016 +31 0.300000 7521218.724186 300958488.336427 +32 0.310000 5073808.319410 196492716.046068 +33 0.320000 3465721.661655 130034411.505164 +34 0.330000 2395143.138865 87152427.788625 +35 0.340000 1673561.082347 59112555.692539 +36 0.350000 1181528.973318 40546867.041137 +37 0.360000 842332.557402 28108378.157278 +38 0.370000 606071.119890 19681641.931764 +39 0.380000 439893.177446 13912339.662092 +40 0.390000 321924.360071 9922853.684245 +41 0.400000 237442.016602 7137908.935547 +42 0.410000 176435.450812 5176287.635225 +43 0.420000 132031.660059 3782743.515595 +44 0.430000 99468.250044 2784687.558254 +45 0.440000 75416.262744 2064324.130372 +46 0.450000 57529.220585 1540535.337797 +47 0.460000 44139.942254 1156983.644674 +48 0.470000 34054.846645 874222.695500 +49 0.480000 26413.181465 664417.646696 +50 0.490000 20589.881497 507780.654581 +51 0.500000 16128.000000 390144.000000 +52 0.510000 12691.351515 301294.396513 +53 0.520000 10031.077542 233820.872331 +54 0.530000 7961.876154 182311.949517 +55 0.540000 6344.988397 142792.224654 +56 0.550000 5075.941991 112324.247003 +57 0.560000 4075.667156 88725.341557 +58 0.570000 3284.018178 70364.910655 +59 0.580000 2655.022026 56018.454503 +60 0.590000 2153.374227 44761.819610 +61 0.600000 1751.840750 35894.153820 +62 0.610000 1429.321668 28881.467437 +63 0.620000 1169.400839 23315.070198 +64 0.630000 959.254371 18880.806522 +65 0.640000 788.825286 15336.170940 +66 0.650000 650.196650 12493.203783 +67 0.660000 537.113366 10205.647944 +68 0.670000 444.615844 8359.261950 +69 0.680000 368.758212 6864.481939 +70 0.690000 306.390715 5650.839586 +71 0.700000 254.991024 4662.698464 +72 0.710000 212.532986 3855.984565 +73 0.720000 177.384120 3195.669530 +74 0.730000 148.225307 2653.826099 +75 0.740000 123.987627 2208.120224 +76 0.750000 103.802544 1840.637693 +77 0.760000 86.962472 1536.967937 +78 0.770000 72.889471 1285.486272 +79 0.780000 61.110325 1076.789779 +80 0.790000 51.236635 903.252555 +81 0.800000 42.948872 758.673996 +82 0.810000 35.983576 637.999825 +83 0.820000 30.123043 537.100183 +84 0.830000 25.186999 452.592612 +85 0.840000 21.025860 381.700456 +86 0.850000 17.515264 322.139305 +87 0.860000 14.551619 272.025666 +88 0.870000 12.048476 229.803356 +89 0.880000 9.933566 194.184004 +90 0.890000 8.146368 164.098852 +91 0.900000 6.636119 138.659624 +92 0.910000 5.360169 117.126674 +93 0.920000 4.282632 98.883003 +94 0.930000 3.373272 83.413022 +95 0.940000 2.606573 70.285155 +96 0.950000 1.960975 59.137553 +97 0.960000 1.418239 49.666347 +98 0.970000 0.962916 41.615965 +99 0.980000 0.581905 34.771137 +100 0.990000 0.264083 28.950277 +101 1.000000 -0.000000 24.000000 +102 1.010000 -0.218384 19.790571 +103 1.020000 -0.397913 16.212117 +104 1.030000 -0.544418 13.171468 +105 1.040000 -0.662870 10.589529 +106 1.050000 -0.757512 8.399073 +107 1.060000 -0.831965 6.542902 +108 1.070000 -0.889321 4.972300 +109 1.080000 -0.932223 3.645731 +110 1.090000 -0.962930 2.527753 +111 1.100000 -0.983372 1.588095 +112 1.110000 -0.995200 0.800882 +113 1.120000 -0.999824 0.143980 +114 1.130000 -0.999928 -0.018978 +115 1.140000 -0.999613 -0.044145 +116 1.150000 -0.999046 -0.069290 +117 1.160000 -0.998227 -0.094400 +118 1.170000 -0.997158 -0.119462 +119 1.180000 -0.995838 -0.144464 +120 1.190000 -0.994269 -0.169394 +121 1.200000 -0.992451 -0.194238 +122 1.210000 -0.990384 -0.218985 +123 1.220000 -0.988071 -0.243621 +124 1.230000 -0.985512 -0.268134 +125 1.240000 -0.982709 -0.292513 +126 1.250000 -0.979663 -0.316744 +127 1.260000 -0.976375 -0.340816 +128 1.270000 -0.972847 -0.364716 +129 1.280000 -0.969081 -0.388432 +130 1.290000 -0.965079 -0.411953 +131 1.300000 -0.960843 -0.435266 +132 1.310000 -0.956374 -0.458361 +133 1.320000 -0.951676 -0.481224 +134 1.330000 -0.946751 -0.503845 +135 1.340000 -0.941600 -0.526213 +136 1.350000 -0.936227 -0.548315 +137 1.360000 -0.930635 -0.570142 +138 1.370000 -0.924825 -0.591681 +139 1.380000 -0.918802 -0.612922 +140 1.390000 -0.912568 -0.633855 +141 1.400000 -0.906126 -0.654469 +142 1.410000 -0.899480 -0.674753 +143 1.420000 -0.892632 -0.694697 +144 1.430000 -0.885587 -0.714291 +145 1.440000 -0.878347 -0.733526 +146 1.450000 -0.870918 -0.752392 +147 1.460000 -0.863301 -0.770878 +148 1.470000 -0.855501 -0.788977 +149 1.480000 -0.847523 -0.806678 +150 1.490000 -0.839369 -0.823973 +151 1.500000 -0.831045 -0.840853 +152 1.510000 -0.822553 -0.857310 +153 1.520000 -0.813900 -0.873335 +154 1.530000 -0.805088 -0.888920 +155 1.540000 -0.796123 -0.904058 +156 1.550000 -0.787009 -0.918740 +157 1.560000 -0.777750 -0.932960 +158 1.570000 -0.768351 -0.946710 +159 1.580000 -0.758817 -0.959983 +160 1.590000 -0.749153 -0.972773 +161 1.600000 -0.739363 -0.985073 +162 1.610000 -0.729453 -0.996878 +163 1.620000 -0.719427 -1.008180 +164 1.630000 -0.709291 -1.018974 +165 1.640000 -0.699050 -1.029256 +166 1.650000 -0.688708 -1.039019 +167 1.660000 -0.678271 -1.048259 +168 1.670000 -0.667744 -1.056971 +169 1.680000 -0.657133 -1.065151 +170 1.690000 -0.646443 -1.072795 +171 1.700000 -0.635679 -1.079898 +172 1.710000 -0.624847 -1.086458 +173 1.720000 -0.613952 -1.092471 +174 1.730000 -0.602999 -1.097933 +175 1.740000 -0.591995 -1.102843 +176 1.750000 -0.580944 -1.107197 +177 1.760000 -0.569853 -1.110994 +178 1.770000 -0.558726 -1.114231 +179 1.780000 -0.547570 -1.116908 +180 1.790000 -0.536390 -1.119022 +181 1.800000 -0.525192 -1.120572 +182 1.810000 -0.513981 -1.121559 +183 1.820000 -0.502762 -1.121980 +184 1.830000 -0.491543 -1.121837 +185 1.840000 -0.480328 -1.121129 +186 1.850000 -0.469122 -1.119856 +187 1.860000 -0.457932 -1.118019 +188 1.870000 -0.446764 -1.115620 +189 1.880000 -0.435622 -1.112658 +190 1.890000 -0.424512 -1.109137 +191 1.900000 -0.413441 -1.105056 +192 1.910000 -0.402413 -1.100420 +193 1.920000 -0.391434 -1.095229 +194 1.930000 -0.380510 -1.089487 +195 1.940000 -0.369646 -1.083196 +196 1.950000 -0.358848 -1.076360 +197 1.960000 -0.348121 -1.068982 +198 1.970000 -0.337470 -1.061066 +199 1.980000 -0.326902 -1.052615 +200 1.990000 -0.316420 -1.043634 +201 2.000000 -0.306031 -1.034128 +202 2.010000 -0.295739 -1.024101 +203 2.020000 -0.285550 -1.013559 +204 2.030000 -0.275470 -1.002506 +205 2.040000 -0.265502 -0.990948 +206 2.050000 -0.255652 -0.978892 +207 2.060000 -0.245926 -0.966342 +208 2.070000 -0.236327 -0.953306 +209 2.080000 -0.226861 -0.939790 +210 2.090000 -0.217533 -0.925800 +211 2.100000 -0.208347 -0.911345 +212 2.110000 -0.199307 -0.896430 +213 2.120000 -0.190420 -0.881064 +214 2.130000 -0.181688 -0.865255 +215 2.140000 -0.173116 -0.849010 +216 2.150000 -0.164709 -0.832337 +217 2.160000 -0.156471 -0.815245 +218 2.170000 -0.148405 -0.797743 +219 2.180000 -0.140517 -0.779839 +220 2.190000 -0.132810 -0.761542 +221 2.200000 -0.125288 -0.742862 +222 2.210000 -0.117954 -0.723808 +223 2.220000 -0.110813 -0.704390 +224 2.230000 -0.103867 -0.684616 +225 2.240000 -0.097121 -0.664498 +226 2.250000 -0.090578 -0.644046 +227 2.260000 -0.084242 -0.623269 +228 2.270000 -0.078114 -0.602178 +229 2.280000 -0.072199 -0.580784 +230 2.290000 -0.066499 -0.559098 +231 2.300000 -0.061018 -0.537130 +232 2.310000 -0.055758 -0.514892 +233 2.320000 -0.050721 -0.492394 +234 2.330000 -0.045911 -0.469648 +235 2.340000 -0.041329 -0.446666 +236 2.350000 -0.036978 -0.423459 +237 2.360000 -0.032860 -0.400039 +238 2.370000 -0.028978 -0.376418 +239 2.380000 -0.025333 -0.352606 +240 2.390000 -0.021926 -0.328618 +241 2.400000 -0.018761 -0.304464 +242 2.410000 -0.015838 -0.280156 +243 2.420000 -0.013158 -0.255707 +244 2.430000 -0.010724 -0.231130 +245 2.440000 -0.008536 -0.206436 +246 2.450000 -0.006596 -0.181639 +247 2.460000 -0.004903 -0.156750 +248 2.470000 -0.003461 -0.131782 +249 2.480000 -0.002268 -0.106747 +250 2.490000 -0.001326 -0.081659 +251 2.500000 -0.000635 -0.056530 +252 2.510000 -0.000195 -0.031372 +253 2.520000 -0.000008 -0.006199 +254 2.530000 0.000000 0.000000 +255 2.540000 0.000000 0.000000 +256 2.550000 0.000000 0.000000 +257 2.560000 0.000000 0.000000 +258 2.570000 0.000000 0.000000 +259 2.580000 0.000000 0.000000 +260 2.590000 0.000000 0.000000 +261 2.600000 0.000000 0.000000 +262 2.610000 0.000000 0.000000 +263 2.620000 0.000000 0.000000 +264 2.630000 0.000000 0.000000 +265 2.640000 0.000000 0.000000 +266 2.650000 0.000000 0.000000 +267 2.660000 0.000000 0.000000 +268 2.670000 0.000000 0.000000 +269 2.680000 0.000000 0.000000 +270 2.690000 0.000000 0.000000 +271 2.700000 0.000000 0.000000 +272 2.710000 0.000000 0.000000 +273 2.720000 0.000000 0.000000 +274 2.730000 0.000000 0.000000 +275 2.740000 0.000000 0.000000 +276 2.750000 0.000000 0.000000 +277 2.760000 0.000000 0.000000 +278 2.770000 0.000000 0.000000 +279 2.780000 0.000000 0.000000 +280 2.790000 0.000000 0.000000 +281 2.800000 0.000000 0.000000 +282 2.810000 0.000000 0.000000 +283 2.820000 0.000000 0.000000 +284 2.830000 0.000000 0.000000 +285 2.840000 0.000000 0.000000 +286 2.850000 0.000000 0.000000 +287 2.860000 0.000000 0.000000 +288 2.870000 0.000000 0.000000 +289 2.880000 0.000000 0.000000 +290 2.890000 0.000000 0.000000 +291 2.900000 0.000000 0.000000 +292 2.910000 0.000000 0.000000 +293 2.920000 0.000000 0.000000 +294 2.930000 0.000000 0.000000 +295 2.940000 0.000000 0.000000 +296 2.950000 0.000000 0.000000 +297 2.960000 0.000000 0.000000 +298 2.970000 0.000000 0.000000 +299 2.980000 0.000000 0.000000 +300 2.990000 0.000000 0.000000 +301 3.000000 0.000000 0.000000 + + +TAIL_TAIL_Wc_1.5 +N 301 R 0.000001 3.000000 + +1 0.000001 0.000000 0.000000 +2 0.010000 3999999999995999707725824.000000 4799999999997598070678224896.000000 +3 0.020000 976562499937500004352.000000 585937499981249777762304.000000 +4 0.030000 7526705687148720128.000000 3010682275956881096704.000000 +5 0.040000 238418578125000000.000000 71525573583984353280.000000 +6 0.050000 16383999744000000.000000 3932159969279997440.000000 +7 0.060000 1837574546257248.500000 367514917824838144.000000 +8 0.070000 288990429236596.312500 49541219354796968.000000 +9 0.080000 58207645654678.343750 8731147992610928.000000 +10 0.090000 14162817119182.900391 1888376117671434.750000 +11 0.100000 3999996000000.000000 479999760000000.500000 +12 0.110000 1274521012945.708496 139038779115662.093750 +13 0.120000 448625279546.553955 44862594934250.781250 +14 0.130000 171687100967.122345 15848078337188.726562 +15 0.140000 70553781072.250778 6047489716531.549805 +16 0.150000 30829035351.054977 2466336874723.629883 +17 0.160000 14210616296.622902 1065805162943.433594 +18 0.170000 6865346349.879549 484618532348.129211 +19 0.180000 3457603256.036191 230510803894.961182 +20 0.190000 1807158928.004511 114139038296.617722 +21 0.200000 976499999.999998 58591874999.999847 +22 0.210000 543739902.726732 31072184111.878654 +23 0.220000 311127628.299641 16971560078.724821 +24 0.230000 182499493.379421 9522417580.006592 +25 0.240000 109507052.064558 5475875881.316449 +26 0.250000 67092480.000000 3220832255.999991 +27 0.260000 41903049.941880 1934285732.237306 +28 0.270000 26639528.522336 1184208483.196407 +29 0.280000 17216873.260370 738043867.822060 +30 0.290000 11298625.429098 467668459.533016 +31 0.300000 7521218.724186 300958488.336427 +32 0.310000 5073808.319410 196492716.046068 +33 0.320000 3465721.661655 130034411.505164 +34 0.330000 2395143.138865 87152427.788625 +35 0.340000 1673561.082347 59112555.692539 +36 0.350000 1181528.973318 40546867.041137 +37 0.360000 842332.557402 28108378.157278 +38 0.370000 606071.119890 19681641.931764 +39 0.380000 439893.177446 13912339.662092 +40 0.390000 321924.360071 9922853.684245 +41 0.400000 237442.016602 7137908.935547 +42 0.410000 176435.450812 5176287.635225 +43 0.420000 132031.660059 3782743.515595 +44 0.430000 99468.250044 2784687.558254 +45 0.440000 75416.262744 2064324.130372 +46 0.450000 57529.220585 1540535.337797 +47 0.460000 44139.942254 1156983.644674 +48 0.470000 34054.846645 874222.695500 +49 0.480000 26413.181465 664417.646696 +50 0.490000 20589.881497 507780.654581 +51 0.500000 16128.000000 390144.000000 +52 0.510000 12691.351515 301294.396513 +53 0.520000 10031.077542 233820.872331 +54 0.530000 7961.876154 182311.949517 +55 0.540000 6344.988397 142792.224654 +56 0.550000 5075.941991 112324.247003 +57 0.560000 4075.667156 88725.341557 +58 0.570000 3284.018178 70364.910655 +59 0.580000 2655.022026 56018.454503 +60 0.590000 2153.374227 44761.819610 +61 0.600000 1751.840750 35894.153820 +62 0.610000 1429.321668 28881.467437 +63 0.620000 1169.400839 23315.070198 +64 0.630000 959.254371 18880.806522 +65 0.640000 788.825286 15336.170940 +66 0.650000 650.196650 12493.203783 +67 0.660000 537.113366 10205.647944 +68 0.670000 444.615844 8359.261950 +69 0.680000 368.758212 6864.481939 +70 0.690000 306.390715 5650.839586 +71 0.700000 254.991024 4662.698464 +72 0.710000 212.532986 3855.984565 +73 0.720000 177.384120 3195.669530 +74 0.730000 148.225307 2653.826099 +75 0.740000 123.987627 2208.120224 +76 0.750000 103.802544 1840.637693 +77 0.760000 86.962472 1536.967937 +78 0.770000 72.889471 1285.486272 +79 0.780000 61.110325 1076.789779 +80 0.790000 51.236635 903.252555 +81 0.800000 42.948872 758.673996 +82 0.810000 35.983576 637.999825 +83 0.820000 30.123043 537.100183 +84 0.830000 25.186999 452.592612 +85 0.840000 21.025860 381.700456 +86 0.850000 17.515264 322.139305 +87 0.860000 14.551619 272.025666 +88 0.870000 12.048476 229.803356 +89 0.880000 9.933566 194.184004 +90 0.890000 8.146368 164.098852 +91 0.900000 6.636119 138.659624 +92 0.910000 5.360169 117.126674 +93 0.920000 4.282632 98.883003 +94 0.930000 3.373272 83.413022 +95 0.940000 2.606573 70.285155 +96 0.950000 1.960975 59.137553 +97 0.960000 1.418239 49.666347 +98 0.970000 0.962916 41.615965 +99 0.980000 0.581905 34.771137 +100 0.990000 0.264083 28.950277 +101 1.000000 -0.000000 24.000000 +102 1.010000 -0.218384 19.790571 +103 1.020000 -0.397913 16.212117 +104 1.030000 -0.544418 13.171468 +105 1.040000 -0.662870 10.589529 +106 1.050000 -0.757512 8.399073 +107 1.060000 -0.831965 6.542902 +108 1.070000 -0.889321 4.972300 +109 1.080000 -0.932223 3.645731 +110 1.090000 -0.962930 2.527753 +111 1.100000 -0.983372 1.588095 +112 1.110000 -0.995200 0.800882 +113 1.120000 -0.999824 0.143980 +114 1.130000 -0.999938 -0.016532 +115 1.140000 -0.999663 -0.038456 +116 1.150000 -0.999169 -0.060364 +117 1.160000 -0.998456 -0.082245 +118 1.170000 -0.997524 -0.104090 +119 1.180000 -0.996374 -0.125890 +120 1.190000 -0.995006 -0.147634 +121 1.200000 -0.993421 -0.169313 +122 1.210000 -0.991620 -0.190918 +123 1.220000 -0.989603 -0.212440 +124 1.230000 -0.987372 -0.233868 +125 1.240000 -0.984926 -0.255194 +126 1.250000 -0.982268 -0.276407 +127 1.260000 -0.979399 -0.297500 +128 1.270000 -0.976319 -0.318462 +129 1.280000 -0.973030 -0.339284 +130 1.290000 -0.969533 -0.359958 +131 1.300000 -0.965831 -0.380473 +132 1.310000 -0.961925 -0.400822 +133 1.320000 -0.957815 -0.420995 +134 1.330000 -0.953505 -0.440983 +135 1.340000 -0.948996 -0.460778 +136 1.350000 -0.944290 -0.480371 +137 1.360000 -0.939390 -0.499753 +138 1.370000 -0.934296 -0.518915 +139 1.380000 -0.929012 -0.537851 +140 1.390000 -0.923540 -0.556550 +141 1.400000 -0.917882 -0.575005 +142 1.410000 -0.912041 -0.593208 +143 1.420000 -0.906019 -0.611151 +144 1.430000 -0.899818 -0.628825 +145 1.440000 -0.893443 -0.646224 +146 1.450000 -0.886895 -0.663339 +147 1.460000 -0.880177 -0.680164 +148 1.470000 -0.873293 -0.696690 +149 1.480000 -0.866244 -0.712910 +150 1.490000 -0.859035 -0.728818 +151 1.500000 -0.851669 -0.744406 +152 1.510000 -0.844148 -0.759668 +153 1.520000 -0.836477 -0.774596 +154 1.530000 -0.828658 -0.789184 +155 1.540000 -0.820694 -0.803427 +156 1.550000 -0.812590 -0.817317 +157 1.560000 -0.804349 -0.830848 +158 1.570000 -0.795975 -0.844015 +159 1.580000 -0.787470 -0.856812 +160 1.590000 -0.778840 -0.869233 +161 1.600000 -0.770087 -0.881273 +162 1.610000 -0.761215 -0.892926 +163 1.620000 -0.752229 -0.904188 +164 1.630000 -0.743133 -0.915053 +165 1.640000 -0.733930 -0.925516 +166 1.650000 -0.724624 -0.935574 +167 1.660000 -0.715220 -0.945221 +168 1.670000 -0.705721 -0.954454 +169 1.680000 -0.696132 -0.963267 +170 1.690000 -0.686457 -0.971659 +171 1.700000 -0.676700 -0.979624 +172 1.710000 -0.666866 -0.987160 +173 1.720000 -0.656958 -0.994262 +174 1.730000 -0.646982 -1.000929 +175 1.740000 -0.636941 -1.007156 +176 1.750000 -0.626841 -1.012942 +177 1.760000 -0.616684 -1.018283 +178 1.770000 -0.606476 -1.023177 +179 1.780000 -0.596222 -1.027623 +180 1.790000 -0.585925 -1.031618 +181 1.800000 -0.575591 -1.035161 +182 1.810000 -0.565224 -1.038249 +183 1.820000 -0.554828 -1.040883 +184 1.830000 -0.544408 -1.043059 +185 1.840000 -0.533968 -1.044778 +186 1.850000 -0.523514 -1.046039 +187 1.860000 -0.513049 -1.046841 +188 1.870000 -0.502578 -1.047184 +189 1.880000 -0.492107 -1.047067 +190 1.890000 -0.481638 -1.046491 +191 1.900000 -0.471178 -1.045456 +192 1.910000 -0.460731 -1.043963 +193 1.920000 -0.450301 -1.042011 +194 1.930000 -0.439892 -1.039603 +195 1.940000 -0.429510 -1.036739 +196 1.950000 -0.419159 -1.033419 +197 1.960000 -0.408843 -1.029647 +198 1.970000 -0.398567 -1.025423 +199 1.980000 -0.388336 -1.020749 +200 1.990000 -0.378154 -1.015627 +201 2.000000 -0.368025 -1.010060 +202 2.010000 -0.357954 -1.004050 +203 2.020000 -0.347946 -0.997599 +204 2.030000 -0.338004 -0.990711 +205 2.040000 -0.328133 -0.983389 +206 2.050000 -0.318337 -0.975635 +207 2.060000 -0.308622 -0.967453 +208 2.070000 -0.298990 -0.958846 +209 2.080000 -0.289446 -0.949819 +210 2.090000 -0.279995 -0.940376 +211 2.100000 -0.270640 -0.930520 +212 2.110000 -0.261386 -0.920255 +213 2.120000 -0.252236 -0.909588 +214 2.130000 -0.243195 -0.898521 +215 2.140000 -0.234267 -0.887060 +216 2.150000 -0.225455 -0.875210 +217 2.160000 -0.216764 -0.862976 +218 2.170000 -0.208197 -0.850363 +219 2.180000 -0.199758 -0.837378 +220 2.190000 -0.191451 -0.824025 +221 2.200000 -0.183279 -0.810311 +222 2.210000 -0.175246 -0.796241 +223 2.220000 -0.167355 -0.781822 +224 2.230000 -0.159610 -0.767060 +225 2.240000 -0.152015 -0.751962 +226 2.250000 -0.144572 -0.736534 +227 2.260000 -0.137285 -0.720783 +228 2.270000 -0.130158 -0.704715 +229 2.280000 -0.123192 -0.688339 +230 2.290000 -0.116392 -0.671661 +231 2.300000 -0.109760 -0.654688 +232 2.310000 -0.103299 -0.637427 +233 2.320000 -0.097012 -0.619888 +234 2.330000 -0.090902 -0.602076 +235 2.340000 -0.084972 -0.584000 +236 2.350000 -0.079223 -0.565668 +237 2.360000 -0.073659 -0.547088 +238 2.370000 -0.068282 -0.528268 +239 2.380000 -0.063095 -0.509216 +240 2.390000 -0.058099 -0.489941 +241 2.400000 -0.053296 -0.470451 +242 2.410000 -0.048690 -0.450755 +243 2.420000 -0.044282 -0.430861 +244 2.430000 -0.040074 -0.410778 +245 2.440000 -0.036067 -0.390515 +246 2.450000 -0.032264 -0.370080 +247 2.460000 -0.028666 -0.349483 +248 2.470000 -0.025275 -0.328733 +249 2.480000 -0.022092 -0.307839 +250 2.490000 -0.019118 -0.286809 +251 2.500000 -0.016356 -0.265654 +252 2.510000 -0.013806 -0.244382 +253 2.520000 -0.011469 -0.223004 +254 2.530000 -0.009346 -0.201527 +255 2.540000 -0.007439 -0.179962 +256 2.550000 -0.005747 -0.158318 +257 2.560000 -0.004272 -0.136604 +258 2.570000 -0.003015 -0.114831 +259 2.580000 -0.001976 -0.093007 +260 2.590000 -0.001155 -0.071142 +261 2.600000 -0.000553 -0.049247 +262 2.610000 -0.000170 -0.027329 +263 2.620000 -0.000007 -0.005400 +264 2.630000 0.000000 0.000000 +265 2.640000 0.000000 0.000000 +266 2.650000 0.000000 0.000000 +267 2.660000 0.000000 0.000000 +268 2.670000 0.000000 0.000000 +269 2.680000 0.000000 0.000000 +270 2.690000 0.000000 0.000000 +271 2.700000 0.000000 0.000000 +272 2.710000 0.000000 0.000000 +273 2.720000 0.000000 0.000000 +274 2.730000 0.000000 0.000000 +275 2.740000 0.000000 0.000000 +276 2.750000 0.000000 0.000000 +277 2.760000 0.000000 0.000000 +278 2.770000 0.000000 0.000000 +279 2.780000 0.000000 0.000000 +280 2.790000 0.000000 0.000000 +281 2.800000 0.000000 0.000000 +282 2.810000 0.000000 0.000000 +283 2.820000 0.000000 0.000000 +284 2.830000 0.000000 0.000000 +285 2.840000 0.000000 0.000000 +286 2.850000 0.000000 0.000000 +287 2.860000 0.000000 0.000000 +288 2.870000 0.000000 0.000000 +289 2.880000 0.000000 0.000000 +290 2.890000 0.000000 0.000000 +291 2.900000 0.000000 0.000000 +292 2.910000 0.000000 0.000000 +293 2.920000 0.000000 0.000000 +294 2.930000 0.000000 0.000000 +295 2.940000 0.000000 0.000000 +296 2.950000 0.000000 0.000000 +297 2.960000 0.000000 0.000000 +298 2.970000 0.000000 0.000000 +299 2.980000 0.000000 0.000000 +300 2.990000 0.000000 0.000000 +301 3.000000 0.000000 0.000000 + + +TAIL_TAIL_Wc_1.6 +N 301 R 0.000001 3.000000 + +1 0.000001 0.000000 0.000000 +2 0.010000 3999999999995999707725824.000000 4799999999997598070678224896.000000 +3 0.020000 976562499937500004352.000000 585937499981249777762304.000000 +4 0.030000 7526705687148720128.000000 3010682275956881096704.000000 +5 0.040000 238418578125000000.000000 71525573583984353280.000000 +6 0.050000 16383999744000000.000000 3932159969279997440.000000 +7 0.060000 1837574546257248.500000 367514917824838144.000000 +8 0.070000 288990429236596.312500 49541219354796968.000000 +9 0.080000 58207645654678.343750 8731147992610928.000000 +10 0.090000 14162817119182.900391 1888376117671434.750000 +11 0.100000 3999996000000.000000 479999760000000.500000 +12 0.110000 1274521012945.708496 139038779115662.093750 +13 0.120000 448625279546.553955 44862594934250.781250 +14 0.130000 171687100967.122345 15848078337188.726562 +15 0.140000 70553781072.250778 6047489716531.549805 +16 0.150000 30829035351.054977 2466336874723.629883 +17 0.160000 14210616296.622902 1065805162943.433594 +18 0.170000 6865346349.879549 484618532348.129211 +19 0.180000 3457603256.036191 230510803894.961182 +20 0.190000 1807158928.004511 114139038296.617722 +21 0.200000 976499999.999998 58591874999.999847 +22 0.210000 543739902.726732 31072184111.878654 +23 0.220000 311127628.299641 16971560078.724821 +24 0.230000 182499493.379421 9522417580.006592 +25 0.240000 109507052.064558 5475875881.316449 +26 0.250000 67092480.000000 3220832255.999991 +27 0.260000 41903049.941880 1934285732.237306 +28 0.270000 26639528.522336 1184208483.196407 +29 0.280000 17216873.260370 738043867.822060 +30 0.290000 11298625.429098 467668459.533016 +31 0.300000 7521218.724186 300958488.336427 +32 0.310000 5073808.319410 196492716.046068 +33 0.320000 3465721.661655 130034411.505164 +34 0.330000 2395143.138865 87152427.788625 +35 0.340000 1673561.082347 59112555.692539 +36 0.350000 1181528.973318 40546867.041137 +37 0.360000 842332.557402 28108378.157278 +38 0.370000 606071.119890 19681641.931764 +39 0.380000 439893.177446 13912339.662092 +40 0.390000 321924.360071 9922853.684245 +41 0.400000 237442.016602 7137908.935547 +42 0.410000 176435.450812 5176287.635225 +43 0.420000 132031.660059 3782743.515595 +44 0.430000 99468.250044 2784687.558254 +45 0.440000 75416.262744 2064324.130372 +46 0.450000 57529.220585 1540535.337797 +47 0.460000 44139.942254 1156983.644674 +48 0.470000 34054.846645 874222.695500 +49 0.480000 26413.181465 664417.646696 +50 0.490000 20589.881497 507780.654581 +51 0.500000 16128.000000 390144.000000 +52 0.510000 12691.351515 301294.396513 +53 0.520000 10031.077542 233820.872331 +54 0.530000 7961.876154 182311.949517 +55 0.540000 6344.988397 142792.224654 +56 0.550000 5075.941991 112324.247003 +57 0.560000 4075.667156 88725.341557 +58 0.570000 3284.018178 70364.910655 +59 0.580000 2655.022026 56018.454503 +60 0.590000 2153.374227 44761.819610 +61 0.600000 1751.840750 35894.153820 +62 0.610000 1429.321668 28881.467437 +63 0.620000 1169.400839 23315.070198 +64 0.630000 959.254371 18880.806522 +65 0.640000 788.825286 15336.170940 +66 0.650000 650.196650 12493.203783 +67 0.660000 537.113366 10205.647944 +68 0.670000 444.615844 8359.261950 +69 0.680000 368.758212 6864.481939 +70 0.690000 306.390715 5650.839586 +71 0.700000 254.991024 4662.698464 +72 0.710000 212.532986 3855.984565 +73 0.720000 177.384120 3195.669530 +74 0.730000 148.225307 2653.826099 +75 0.740000 123.987627 2208.120224 +76 0.750000 103.802544 1840.637693 +77 0.760000 86.962472 1536.967937 +78 0.770000 72.889471 1285.486272 +79 0.780000 61.110325 1076.789779 +80 0.790000 51.236635 903.252555 +81 0.800000 42.948872 758.673996 +82 0.810000 35.983576 637.999825 +83 0.820000 30.123043 537.100183 +84 0.830000 25.186999 452.592612 +85 0.840000 21.025860 381.700456 +86 0.850000 17.515264 322.139305 +87 0.860000 14.551619 272.025666 +88 0.870000 12.048476 229.803356 +89 0.880000 9.933566 194.184004 +90 0.890000 8.146368 164.098852 +91 0.900000 6.636119 138.659624 +92 0.910000 5.360169 117.126674 +93 0.920000 4.282632 98.883003 +94 0.930000 3.373272 83.413022 +95 0.940000 2.606573 70.285155 +96 0.950000 1.960975 59.137553 +97 0.960000 1.418239 49.666347 +98 0.970000 0.962916 41.615965 +99 0.980000 0.581905 34.771137 +100 0.990000 0.264083 28.950277 +101 1.000000 -0.000000 24.000000 +102 1.010000 -0.218384 19.790571 +103 1.020000 -0.397913 16.212117 +104 1.030000 -0.544418 13.171468 +105 1.040000 -0.662870 10.589529 +106 1.050000 -0.757512 8.399073 +107 1.060000 -0.831965 6.542902 +108 1.070000 -0.889321 4.972300 +109 1.080000 -0.932223 3.645731 +110 1.090000 -0.962930 2.527753 +111 1.100000 -0.983372 1.588095 +112 1.110000 -0.995200 0.800882 +113 1.120000 -0.999824 0.143980 +114 1.130000 -0.999945 -0.014530 +115 1.140000 -0.999704 -0.033800 +116 1.150000 -0.999269 -0.053058 +117 1.160000 -0.998642 -0.072295 +118 1.170000 -0.997823 -0.091504 +119 1.180000 -0.996813 -0.110678 +120 1.190000 -0.995610 -0.129809 +121 1.200000 -0.994217 -0.148890 +122 1.210000 -0.992632 -0.167914 +123 1.220000 -0.990858 -0.186872 +124 1.230000 -0.988895 -0.205759 +125 1.240000 -0.986744 -0.224567 +126 1.250000 -0.984404 -0.243288 +127 1.260000 -0.981878 -0.261915 +128 1.270000 -0.979166 -0.280441 +129 1.280000 -0.976270 -0.298859 +130 1.290000 -0.973189 -0.317162 +131 1.300000 -0.969927 -0.335343 +132 1.310000 -0.966483 -0.353394 +133 1.320000 -0.962859 -0.371309 +134 1.330000 -0.959057 -0.389081 +135 1.340000 -0.955078 -0.406703 +136 1.350000 -0.950924 -0.424169 +137 1.360000 -0.946595 -0.441470 +138 1.370000 -0.942095 -0.458602 +139 1.380000 -0.937424 -0.475556 +140 1.390000 -0.932584 -0.492328 +141 1.400000 -0.927578 -0.508909 +142 1.410000 -0.922407 -0.525294 +143 1.420000 -0.917073 -0.541477 +144 1.430000 -0.911578 -0.557451 +145 1.440000 -0.905925 -0.573211 +146 1.450000 -0.900115 -0.588749 +147 1.460000 -0.894150 -0.604060 +148 1.470000 -0.888034 -0.619138 +149 1.480000 -0.881768 -0.633978 +150 1.490000 -0.875355 -0.648573 +151 1.500000 -0.868798 -0.662918 +152 1.510000 -0.862098 -0.677008 +153 1.520000 -0.855258 -0.690836 +154 1.530000 -0.848282 -0.704399 +155 1.540000 -0.841171 -0.717689 +156 1.550000 -0.833929 -0.730703 +157 1.560000 -0.826558 -0.743436 +158 1.570000 -0.819061 -0.755882 +159 1.580000 -0.811442 -0.768036 +160 1.590000 -0.803702 -0.779894 +161 1.600000 -0.795845 -0.791452 +162 1.610000 -0.787874 -0.802704 +163 1.620000 -0.779792 -0.813647 +164 1.630000 -0.771602 -0.824276 +165 1.640000 -0.763307 -0.834588 +166 1.650000 -0.754911 -0.844578 +167 1.660000 -0.746417 -0.854242 +168 1.670000 -0.737827 -0.863577 +169 1.680000 -0.729146 -0.872579 +170 1.690000 -0.720377 -0.881244 +171 1.700000 -0.711522 -0.889570 +172 1.710000 -0.702587 -0.897553 +173 1.720000 -0.693573 -0.905190 +174 1.730000 -0.684484 -0.912478 +175 1.740000 -0.675324 -0.919414 +176 1.750000 -0.666097 -0.925995 +177 1.760000 -0.656805 -0.932220 +178 1.770000 -0.647454 -0.938085 +179 1.780000 -0.638045 -0.943589 +180 1.790000 -0.628583 -0.948729 +181 1.800000 -0.619072 -0.953503 +182 1.810000 -0.609514 -0.957909 +183 1.820000 -0.599915 -0.961947 +184 1.830000 -0.590277 -0.965613 +185 1.840000 -0.580604 -0.968907 +186 1.850000 -0.570900 -0.971828 +187 1.860000 -0.561168 -0.974373 +188 1.870000 -0.551413 -0.976544 +189 1.880000 -0.541639 -0.978338 +190 1.890000 -0.531848 -0.979754 +191 1.900000 -0.522045 -0.980793 +192 1.910000 -0.512233 -0.981454 +193 1.920000 -0.502417 -0.981736 +194 1.930000 -0.492600 -0.981640 +195 1.940000 -0.482786 -0.981166 +196 1.950000 -0.472978 -0.980313 +197 1.960000 -0.463181 -0.979082 +198 1.970000 -0.453397 -0.977474 +199 1.980000 -0.443632 -0.975489 +200 1.990000 -0.433889 -0.973128 +201 2.000000 -0.424171 -0.970392 +202 2.010000 -0.414482 -0.967282 +203 2.020000 -0.404827 -0.963798 +204 2.030000 -0.395208 -0.959944 +205 2.040000 -0.385629 -0.955719 +206 2.050000 -0.376094 -0.951125 +207 2.060000 -0.366608 -0.946165 +208 2.070000 -0.357172 -0.940841 +209 2.080000 -0.347792 -0.935153 +210 2.090000 -0.338471 -0.929105 +211 2.100000 -0.329211 -0.922699 +212 2.110000 -0.320018 -0.915937 +213 2.120000 -0.310894 -0.908822 +214 2.130000 -0.301842 -0.901357 +215 2.140000 -0.292868 -0.893544 +216 2.150000 -0.283973 -0.885387 +217 2.160000 -0.275161 -0.876888 +218 2.170000 -0.266436 -0.868051 +219 2.180000 -0.257801 -0.858880 +220 2.190000 -0.249260 -0.849377 +221 2.200000 -0.240815 -0.839548 +222 2.210000 -0.232470 -0.829394 +223 2.220000 -0.224228 -0.818921 +224 2.230000 -0.216092 -0.808132 +225 2.240000 -0.208066 -0.797031 +226 2.250000 -0.200153 -0.785623 +227 2.260000 -0.192355 -0.773912 +228 2.270000 -0.184676 -0.761903 +229 2.280000 -0.177118 -0.749600 +230 2.290000 -0.169684 -0.737009 +231 2.300000 -0.162379 -0.724133 +232 2.310000 -0.155203 -0.710977 +233 2.320000 -0.148160 -0.697548 +234 2.330000 -0.141253 -0.683850 +235 2.340000 -0.134484 -0.669888 +236 2.350000 -0.127856 -0.655668 +237 2.360000 -0.121371 -0.641196 +238 2.370000 -0.115033 -0.626476 +239 2.380000 -0.108843 -0.611514 +240 2.390000 -0.102803 -0.596317 +241 2.400000 -0.096917 -0.580890 +242 2.410000 -0.091186 -0.565239 +243 2.420000 -0.085613 -0.549370 +244 2.430000 -0.080199 -0.533289 +245 2.440000 -0.074948 -0.517002 +246 2.450000 -0.069860 -0.500517 +247 2.460000 -0.064938 -0.483838 +248 2.470000 -0.060184 -0.466973 +249 2.480000 -0.055599 -0.449928 +250 2.490000 -0.051186 -0.432709 +251 2.500000 -0.046946 -0.415323 +252 2.510000 -0.042880 -0.397778 +253 2.520000 -0.038991 -0.380079 +254 2.530000 -0.035279 -0.362233 +255 2.540000 -0.031746 -0.344248 +256 2.550000 -0.028394 -0.326130 +257 2.560000 -0.025224 -0.307887 +258 2.570000 -0.022237 -0.289525 +259 2.580000 -0.019434 -0.271051 +260 2.590000 -0.016816 -0.252472 +261 2.600000 -0.014385 -0.233797 +262 2.610000 -0.012141 -0.215031 +263 2.620000 -0.010085 -0.196182 +264 2.630000 -0.008217 -0.177258 +265 2.640000 -0.006540 -0.158265 +266 2.650000 -0.005052 -0.139211 +267 2.660000 -0.003756 -0.120104 +268 2.670000 -0.002650 -0.100950 +269 2.680000 -0.001737 -0.081757 +270 2.690000 -0.001015 -0.062533 +271 2.700000 -0.000486 -0.043285 +272 2.710000 -0.000150 -0.024020 +273 2.720000 -0.000006 -0.004746 +274 2.730000 0.000000 0.000000 +275 2.740000 0.000000 0.000000 +276 2.750000 0.000000 0.000000 +277 2.760000 0.000000 0.000000 +278 2.770000 0.000000 0.000000 +279 2.780000 0.000000 0.000000 +280 2.790000 0.000000 0.000000 +281 2.800000 0.000000 0.000000 +282 2.810000 0.000000 0.000000 +283 2.820000 0.000000 0.000000 +284 2.830000 0.000000 0.000000 +285 2.840000 0.000000 0.000000 +286 2.850000 0.000000 0.000000 +287 2.860000 0.000000 0.000000 +288 2.870000 0.000000 0.000000 +289 2.880000 0.000000 0.000000 +290 2.890000 0.000000 0.000000 +291 2.900000 0.000000 0.000000 +292 2.910000 0.000000 0.000000 +293 2.920000 0.000000 0.000000 +294 2.930000 0.000000 0.000000 +295 2.940000 0.000000 0.000000 +296 2.950000 0.000000 0.000000 +297 2.960000 0.000000 0.000000 +298 2.970000 0.000000 0.000000 +299 2.980000 0.000000 0.000000 +300 2.990000 0.000000 0.000000 +301 3.000000 0.000000 0.000000 + + +TAIL_TAIL_Wc_1.7 +N 301 R 0.000001 3.000000 + +1 0.000001 0.000000 0.000000 +2 0.010000 3999999999995999707725824.000000 4799999999997598070678224896.000000 +3 0.020000 976562499937500004352.000000 585937499981249777762304.000000 +4 0.030000 7526705687148720128.000000 3010682275956881096704.000000 +5 0.040000 238418578125000000.000000 71525573583984353280.000000 +6 0.050000 16383999744000000.000000 3932159969279997440.000000 +7 0.060000 1837574546257248.500000 367514917824838144.000000 +8 0.070000 288990429236596.312500 49541219354796968.000000 +9 0.080000 58207645654678.343750 8731147992610928.000000 +10 0.090000 14162817119182.900391 1888376117671434.750000 +11 0.100000 3999996000000.000000 479999760000000.500000 +12 0.110000 1274521012945.708496 139038779115662.093750 +13 0.120000 448625279546.553955 44862594934250.781250 +14 0.130000 171687100967.122345 15848078337188.726562 +15 0.140000 70553781072.250778 6047489716531.549805 +16 0.150000 30829035351.054977 2466336874723.629883 +17 0.160000 14210616296.622902 1065805162943.433594 +18 0.170000 6865346349.879549 484618532348.129211 +19 0.180000 3457603256.036191 230510803894.961182 +20 0.190000 1807158928.004511 114139038296.617722 +21 0.200000 976499999.999998 58591874999.999847 +22 0.210000 543739902.726732 31072184111.878654 +23 0.220000 311127628.299641 16971560078.724821 +24 0.230000 182499493.379421 9522417580.006592 +25 0.240000 109507052.064558 5475875881.316449 +26 0.250000 67092480.000000 3220832255.999991 +27 0.260000 41903049.941880 1934285732.237306 +28 0.270000 26639528.522336 1184208483.196407 +29 0.280000 17216873.260370 738043867.822060 +30 0.290000 11298625.429098 467668459.533016 +31 0.300000 7521218.724186 300958488.336427 +32 0.310000 5073808.319410 196492716.046068 +33 0.320000 3465721.661655 130034411.505164 +34 0.330000 2395143.138865 87152427.788625 +35 0.340000 1673561.082347 59112555.692539 +36 0.350000 1181528.973318 40546867.041137 +37 0.360000 842332.557402 28108378.157278 +38 0.370000 606071.119890 19681641.931764 +39 0.380000 439893.177446 13912339.662092 +40 0.390000 321924.360071 9922853.684245 +41 0.400000 237442.016602 7137908.935547 +42 0.410000 176435.450812 5176287.635225 +43 0.420000 132031.660059 3782743.515595 +44 0.430000 99468.250044 2784687.558254 +45 0.440000 75416.262744 2064324.130372 +46 0.450000 57529.220585 1540535.337797 +47 0.460000 44139.942254 1156983.644674 +48 0.470000 34054.846645 874222.695500 +49 0.480000 26413.181465 664417.646696 +50 0.490000 20589.881497 507780.654581 +51 0.500000 16128.000000 390144.000000 +52 0.510000 12691.351515 301294.396513 +53 0.520000 10031.077542 233820.872331 +54 0.530000 7961.876154 182311.949517 +55 0.540000 6344.988397 142792.224654 +56 0.550000 5075.941991 112324.247003 +57 0.560000 4075.667156 88725.341557 +58 0.570000 3284.018178 70364.910655 +59 0.580000 2655.022026 56018.454503 +60 0.590000 2153.374227 44761.819610 +61 0.600000 1751.840750 35894.153820 +62 0.610000 1429.321668 28881.467437 +63 0.620000 1169.400839 23315.070198 +64 0.630000 959.254371 18880.806522 +65 0.640000 788.825286 15336.170940 +66 0.650000 650.196650 12493.203783 +67 0.660000 537.113366 10205.647944 +68 0.670000 444.615844 8359.261950 +69 0.680000 368.758212 6864.481939 +70 0.690000 306.390715 5650.839586 +71 0.700000 254.991024 4662.698464 +72 0.710000 212.532986 3855.984565 +73 0.720000 177.384120 3195.669530 +74 0.730000 148.225307 2653.826099 +75 0.740000 123.987627 2208.120224 +76 0.750000 103.802544 1840.637693 +77 0.760000 86.962472 1536.967937 +78 0.770000 72.889471 1285.486272 +79 0.780000 61.110325 1076.789779 +80 0.790000 51.236635 903.252555 +81 0.800000 42.948872 758.673996 +82 0.810000 35.983576 637.999825 +83 0.820000 30.123043 537.100183 +84 0.830000 25.186999 452.592612 +85 0.840000 21.025860 381.700456 +86 0.850000 17.515264 322.139305 +87 0.860000 14.551619 272.025666 +88 0.870000 12.048476 229.803356 +89 0.880000 9.933566 194.184004 +90 0.890000 8.146368 164.098852 +91 0.900000 6.636119 138.659624 +92 0.910000 5.360169 117.126674 +93 0.920000 4.282632 98.883003 +94 0.930000 3.373272 83.413022 +95 0.940000 2.606573 70.285155 +96 0.950000 1.960975 59.137553 +97 0.960000 1.418239 49.666347 +98 0.970000 0.962916 41.615965 +99 0.980000 0.581905 34.771137 +100 0.990000 0.264083 28.950277 +101 1.000000 -0.000000 24.000000 +102 1.010000 -0.218384 19.790571 +103 1.020000 -0.397913 16.212117 +104 1.030000 -0.544418 13.171468 +105 1.040000 -0.662870 10.589529 +106 1.050000 -0.757512 8.399073 +107 1.060000 -0.831965 6.542902 +108 1.070000 -0.889321 4.972300 +109 1.080000 -0.932223 3.645731 +110 1.090000 -0.962930 2.527753 +111 1.100000 -0.983372 1.588095 +112 1.110000 -0.995200 0.800882 +113 1.120000 -0.999824 0.143980 +114 1.130000 -0.999951 -0.012871 +115 1.140000 -0.999737 -0.029942 +116 1.150000 -0.999353 -0.047002 +117 1.160000 -0.998797 -0.064046 +118 1.170000 -0.998072 -0.081069 +119 1.180000 -0.997176 -0.098064 +120 1.190000 -0.996111 -0.115025 +121 1.200000 -0.994876 -0.131947 +122 1.210000 -0.993472 -0.148824 +123 1.220000 -0.991899 -0.165650 +124 1.230000 -0.990159 -0.182419 +125 1.240000 -0.988251 -0.199127 +126 1.250000 -0.986177 -0.215766 +127 1.260000 -0.983936 -0.232332 +128 1.270000 -0.981530 -0.248818 +129 1.280000 -0.978960 -0.265219 +130 1.290000 -0.976226 -0.281530 +131 1.300000 -0.973330 -0.297744 +132 1.310000 -0.970272 -0.313857 +133 1.320000 -0.967053 -0.329863 +134 1.330000 -0.963675 -0.345756 +135 1.340000 -0.960138 -0.361531 +136 1.350000 -0.956445 -0.377182 +137 1.360000 -0.952595 -0.392705 +138 1.370000 -0.948591 -0.408094 +139 1.380000 -0.944434 -0.423343 +140 1.390000 -0.940125 -0.438448 +141 1.400000 -0.935665 -0.453403 +142 1.410000 -0.931057 -0.468203 +143 1.420000 -0.926302 -0.482843 +144 1.430000 -0.921401 -0.497318 +145 1.440000 -0.916356 -0.511624 +146 1.450000 -0.911169 -0.525754 +147 1.460000 -0.905841 -0.539706 +148 1.470000 -0.900375 -0.553472 +149 1.480000 -0.894773 -0.567050 +150 1.490000 -0.889035 -0.580435 +151 1.500000 -0.883165 -0.593621 +152 1.510000 -0.877163 -0.606604 +153 1.520000 -0.871033 -0.619380 +154 1.530000 -0.864776 -0.631945 +155 1.540000 -0.858395 -0.644294 +156 1.550000 -0.851891 -0.656422 +157 1.560000 -0.845267 -0.668327 +158 1.570000 -0.838526 -0.680003 +159 1.580000 -0.831668 -0.691448 +160 1.590000 -0.824697 -0.702656 +161 1.600000 -0.817616 -0.713624 +162 1.610000 -0.810426 -0.724348 +163 1.620000 -0.803130 -0.734825 +164 1.630000 -0.795730 -0.745051 +165 1.640000 -0.788229 -0.755023 +166 1.650000 -0.780630 -0.764737 +167 1.660000 -0.772936 -0.774189 +168 1.670000 -0.765148 -0.783378 +169 1.680000 -0.757269 -0.792298 +170 1.690000 -0.749302 -0.800948 +171 1.700000 -0.741251 -0.809325 +172 1.710000 -0.733117 -0.817425 +173 1.720000 -0.724903 -0.825246 +174 1.730000 -0.716613 -0.832786 +175 1.740000 -0.708249 -0.840041 +176 1.750000 -0.699813 -0.847009 +177 1.760000 -0.691309 -0.853687 +178 1.770000 -0.682740 -0.860075 +179 1.780000 -0.674109 -0.866168 +180 1.790000 -0.665418 -0.871966 +181 1.800000 -0.656670 -0.877466 +182 1.810000 -0.647870 -0.882666 +183 1.820000 -0.639018 -0.887565 +184 1.830000 -0.630119 -0.892161 +185 1.840000 -0.621176 -0.896452 +186 1.850000 -0.612191 -0.900437 +187 1.860000 -0.603168 -0.904114 +188 1.870000 -0.594110 -0.907483 +189 1.880000 -0.585020 -0.910542 +190 1.890000 -0.575900 -0.913290 +191 1.900000 -0.566755 -0.915726 +192 1.910000 -0.557587 -0.917849 +193 1.920000 -0.548399 -0.919659 +194 1.930000 -0.539195 -0.921155 +195 1.940000 -0.529977 -0.922336 +196 1.950000 -0.520749 -0.923202 +197 1.960000 -0.511514 -0.923753 +198 1.970000 -0.502275 -0.923988 +199 1.980000 -0.493035 -0.923908 +200 1.990000 -0.483798 -0.923513 +201 2.000000 -0.474566 -0.922802 +202 2.010000 -0.465343 -0.921776 +203 2.020000 -0.456132 -0.920435 +204 2.030000 -0.446935 -0.918779 +205 2.040000 -0.437757 -0.916810 +206 2.050000 -0.428600 -0.914528 +207 2.060000 -0.419467 -0.911934 +208 2.070000 -0.410362 -0.909028 +209 2.080000 -0.401288 -0.905812 +210 2.090000 -0.392247 -0.902286 +211 2.100000 -0.383243 -0.898453 +212 2.110000 -0.374279 -0.894312 +213 2.120000 -0.365358 -0.889866 +214 2.130000 -0.356483 -0.885116 +215 2.140000 -0.347657 -0.880064 +216 2.150000 -0.338883 -0.874712 +217 2.160000 -0.330163 -0.869060 +218 2.170000 -0.321502 -0.863112 +219 2.180000 -0.312902 -0.856869 +220 2.190000 -0.304366 -0.850334 +221 2.200000 -0.295896 -0.843508 +222 2.210000 -0.287497 -0.836394 +223 2.220000 -0.279170 -0.828994 +224 2.230000 -0.270918 -0.821312 +225 2.240000 -0.262744 -0.813348 +226 2.250000 -0.254652 -0.805108 +227 2.260000 -0.246643 -0.796592 +228 2.270000 -0.238721 -0.787804 +229 2.280000 -0.230888 -0.778747 +230 2.290000 -0.223147 -0.769424 +231 2.300000 -0.215500 -0.759838 +232 2.310000 -0.207951 -0.749993 +233 2.320000 -0.200501 -0.739892 +234 2.330000 -0.193154 -0.729538 +235 2.340000 -0.185911 -0.718935 +236 2.350000 -0.178776 -0.708087 +237 2.360000 -0.171750 -0.696996 +238 2.370000 -0.164837 -0.685668 +239 2.380000 -0.158038 -0.674105 +240 2.390000 -0.151356 -0.662313 +241 2.400000 -0.144792 -0.650294 +242 2.410000 -0.138350 -0.638053 +243 2.420000 -0.132032 -0.625594 +244 2.430000 -0.125839 -0.612921 +245 2.440000 -0.119774 -0.600039 +246 2.450000 -0.113839 -0.586953 +247 2.460000 -0.108036 -0.573665 +248 2.470000 -0.102366 -0.560182 +249 2.480000 -0.096833 -0.546508 +250 2.490000 -0.091437 -0.532647 +251 2.500000 -0.086181 -0.518604 +252 2.510000 -0.081065 -0.504384 +253 2.520000 -0.076093 -0.489991 +254 2.530000 -0.071266 -0.475432 +255 2.540000 -0.066585 -0.460710 +256 2.550000 -0.062052 -0.445831 +257 2.560000 -0.057669 -0.430799 +258 2.570000 -0.053437 -0.415620 +259 2.580000 -0.049357 -0.400300 +260 2.590000 -0.045431 -0.384842 +261 2.600000 -0.041661 -0.369254 +262 2.610000 -0.038047 -0.353539 +263 2.620000 -0.034591 -0.337703 +264 2.630000 -0.031293 -0.321752 +265 2.640000 -0.028156 -0.305692 +266 2.650000 -0.025180 -0.289526 +267 2.660000 -0.022366 -0.273262 +268 2.670000 -0.019715 -0.256905 +269 2.680000 -0.017228 -0.240460 +270 2.690000 -0.014906 -0.223933 +271 2.700000 -0.012749 -0.207329 +272 2.710000 -0.010759 -0.190654 +273 2.720000 -0.008937 -0.173915 +274 2.730000 -0.007281 -0.157116 +275 2.740000 -0.005794 -0.140263 +276 2.750000 -0.004476 -0.123363 +277 2.760000 -0.003327 -0.106420 +278 2.770000 -0.002348 -0.089441 +279 2.780000 -0.001539 -0.072431 +280 2.790000 -0.000899 -0.055397 +281 2.800000 -0.000431 -0.038344 +282 2.810000 -0.000133 -0.021278 +283 2.820000 -0.000005 -0.004204 +284 2.830000 0.000000 0.000000 +285 2.840000 0.000000 0.000000 +286 2.850000 0.000000 0.000000 +287 2.860000 0.000000 0.000000 +288 2.870000 0.000000 0.000000 +289 2.880000 0.000000 0.000000 +290 2.890000 0.000000 0.000000 +291 2.900000 0.000000 0.000000 +292 2.910000 0.000000 0.000000 +293 2.920000 0.000000 0.000000 +294 2.930000 0.000000 0.000000 +295 2.940000 0.000000 0.000000 +296 2.950000 0.000000 0.000000 +297 2.960000 0.000000 0.000000 +298 2.970000 0.000000 0.000000 +299 2.980000 0.000000 0.000000 +300 2.990000 0.000000 0.000000 +301 3.000000 0.000000 0.000000 + + +TAIL_TAIL_Wc_1.8 +N 301 R 0.000001 3.000000 + +1 0.000001 0.000000 0.000000 +2 0.010000 3999999999995999707725824.000000 4799999999997598070678224896.000000 +3 0.020000 976562499937500004352.000000 585937499981249777762304.000000 +4 0.030000 7526705687148720128.000000 3010682275956881096704.000000 +5 0.040000 238418578125000000.000000 71525573583984353280.000000 +6 0.050000 16383999744000000.000000 3932159969279997440.000000 +7 0.060000 1837574546257248.500000 367514917824838144.000000 +8 0.070000 288990429236596.312500 49541219354796968.000000 +9 0.080000 58207645654678.343750 8731147992610928.000000 +10 0.090000 14162817119182.900391 1888376117671434.750000 +11 0.100000 3999996000000.000000 479999760000000.500000 +12 0.110000 1274521012945.708496 139038779115662.093750 +13 0.120000 448625279546.553955 44862594934250.781250 +14 0.130000 171687100967.122345 15848078337188.726562 +15 0.140000 70553781072.250778 6047489716531.549805 +16 0.150000 30829035351.054977 2466336874723.629883 +17 0.160000 14210616296.622902 1065805162943.433594 +18 0.170000 6865346349.879549 484618532348.129211 +19 0.180000 3457603256.036191 230510803894.961182 +20 0.190000 1807158928.004511 114139038296.617722 +21 0.200000 976499999.999998 58591874999.999847 +22 0.210000 543739902.726732 31072184111.878654 +23 0.220000 311127628.299641 16971560078.724821 +24 0.230000 182499493.379421 9522417580.006592 +25 0.240000 109507052.064558 5475875881.316449 +26 0.250000 67092480.000000 3220832255.999991 +27 0.260000 41903049.941880 1934285732.237306 +28 0.270000 26639528.522336 1184208483.196407 +29 0.280000 17216873.260370 738043867.822060 +30 0.290000 11298625.429098 467668459.533016 +31 0.300000 7521218.724186 300958488.336427 +32 0.310000 5073808.319410 196492716.046068 +33 0.320000 3465721.661655 130034411.505164 +34 0.330000 2395143.138865 87152427.788625 +35 0.340000 1673561.082347 59112555.692539 +36 0.350000 1181528.973318 40546867.041137 +37 0.360000 842332.557402 28108378.157278 +38 0.370000 606071.119890 19681641.931764 +39 0.380000 439893.177446 13912339.662092 +40 0.390000 321924.360071 9922853.684245 +41 0.400000 237442.016602 7137908.935547 +42 0.410000 176435.450812 5176287.635225 +43 0.420000 132031.660059 3782743.515595 +44 0.430000 99468.250044 2784687.558254 +45 0.440000 75416.262744 2064324.130372 +46 0.450000 57529.220585 1540535.337797 +47 0.460000 44139.942254 1156983.644674 +48 0.470000 34054.846645 874222.695500 +49 0.480000 26413.181465 664417.646696 +50 0.490000 20589.881497 507780.654581 +51 0.500000 16128.000000 390144.000000 +52 0.510000 12691.351515 301294.396513 +53 0.520000 10031.077542 233820.872331 +54 0.530000 7961.876154 182311.949517 +55 0.540000 6344.988397 142792.224654 +56 0.550000 5075.941991 112324.247003 +57 0.560000 4075.667156 88725.341557 +58 0.570000 3284.018178 70364.910655 +59 0.580000 2655.022026 56018.454503 +60 0.590000 2153.374227 44761.819610 +61 0.600000 1751.840750 35894.153820 +62 0.610000 1429.321668 28881.467437 +63 0.620000 1169.400839 23315.070198 +64 0.630000 959.254371 18880.806522 +65 0.640000 788.825286 15336.170940 +66 0.650000 650.196650 12493.203783 +67 0.660000 537.113366 10205.647944 +68 0.670000 444.615844 8359.261950 +69 0.680000 368.758212 6864.481939 +70 0.690000 306.390715 5650.839586 +71 0.700000 254.991024 4662.698464 +72 0.710000 212.532986 3855.984565 +73 0.720000 177.384120 3195.669530 +74 0.730000 148.225307 2653.826099 +75 0.740000 123.987627 2208.120224 +76 0.750000 103.802544 1840.637693 +77 0.760000 86.962472 1536.967937 +78 0.770000 72.889471 1285.486272 +79 0.780000 61.110325 1076.789779 +80 0.790000 51.236635 903.252555 +81 0.800000 42.948872 758.673996 +82 0.810000 35.983576 637.999825 +83 0.820000 30.123043 537.100183 +84 0.830000 25.186999 452.592612 +85 0.840000 21.025860 381.700456 +86 0.850000 17.515264 322.139305 +87 0.860000 14.551619 272.025666 +88 0.870000 12.048476 229.803356 +89 0.880000 9.933566 194.184004 +90 0.890000 8.146368 164.098852 +91 0.900000 6.636119 138.659624 +92 0.910000 5.360169 117.126674 +93 0.920000 4.282632 98.883003 +94 0.930000 3.373272 83.413022 +95 0.940000 2.606573 70.285155 +96 0.950000 1.960975 59.137553 +97 0.960000 1.418239 49.666347 +98 0.970000 0.962916 41.615965 +99 0.980000 0.581905 34.771137 +100 0.990000 0.264083 28.950277 +101 1.000000 -0.000000 24.000000 +102 1.010000 -0.218384 19.790571 +103 1.020000 -0.397913 16.212117 +104 1.030000 -0.544418 13.171468 +105 1.040000 -0.662870 10.589529 +106 1.050000 -0.757512 8.399073 +107 1.060000 -0.831965 6.542902 +108 1.070000 -0.889321 4.972300 +109 1.080000 -0.932223 3.645731 +110 1.090000 -0.962930 2.527753 +111 1.100000 -0.983372 1.588095 +112 1.110000 -0.995200 0.800882 +113 1.120000 -0.999824 0.143980 +114 1.130000 -0.999957 -0.011481 +115 1.140000 -0.999766 -0.026708 +116 1.150000 -0.999423 -0.041927 +117 1.160000 -0.998927 -0.057133 +118 1.170000 -0.998280 -0.072321 +119 1.180000 -0.997481 -0.087488 +120 1.190000 -0.996530 -0.102628 +121 1.200000 -0.995428 -0.117737 +122 1.210000 -0.994176 -0.132810 +123 1.220000 -0.992772 -0.147842 +124 1.230000 -0.991219 -0.162830 +125 1.240000 -0.989516 -0.177768 +126 1.250000 -0.987664 -0.192651 +127 1.260000 -0.985663 -0.207476 +128 1.270000 -0.983515 -0.222238 +129 1.280000 -0.981219 -0.236932 +130 1.290000 -0.978776 -0.251554 +131 1.300000 -0.976188 -0.266099 +132 1.310000 -0.973454 -0.280564 +133 1.320000 -0.970577 -0.294942 +134 1.330000 -0.967556 -0.309231 +135 1.340000 -0.964393 -0.323426 +136 1.350000 -0.961088 -0.337522 +137 1.360000 -0.957642 -0.351516 +138 1.370000 -0.954058 -0.365402 +139 1.380000 -0.950335 -0.379177 +140 1.390000 -0.946475 -0.392837 +141 1.400000 -0.942478 -0.406376 +142 1.410000 -0.938347 -0.419793 +143 1.420000 -0.934083 -0.433081 +144 1.430000 -0.929686 -0.446237 +145 1.440000 -0.925159 -0.459257 +146 1.450000 -0.920502 -0.472138 +147 1.460000 -0.915716 -0.484875 +148 1.470000 -0.910805 -0.497464 +149 1.480000 -0.905768 -0.509901 +150 1.490000 -0.900607 -0.522183 +151 1.500000 -0.895325 -0.534306 +152 1.510000 -0.889922 -0.546266 +153 1.520000 -0.884400 -0.558060 +154 1.530000 -0.878761 -0.569684 +155 1.540000 -0.873007 -0.581134 +156 1.550000 -0.867139 -0.592408 +157 1.560000 -0.861159 -0.603501 +158 1.570000 -0.855069 -0.614410 +159 1.580000 -0.848872 -0.625132 +160 1.590000 -0.842567 -0.635663 +161 1.600000 -0.836159 -0.646001 +162 1.610000 -0.829648 -0.656142 +163 1.620000 -0.823037 -0.666083 +164 1.630000 -0.816327 -0.675822 +165 1.640000 -0.809521 -0.685354 +166 1.650000 -0.802621 -0.694678 +167 1.660000 -0.795628 -0.703790 +168 1.670000 -0.788546 -0.712688 +169 1.680000 -0.781375 -0.721368 +170 1.690000 -0.774119 -0.729829 +171 1.700000 -0.766779 -0.738068 +172 1.710000 -0.759358 -0.746081 +173 1.720000 -0.751858 -0.753868 +174 1.730000 -0.744282 -0.761425 +175 1.740000 -0.736631 -0.768750 +176 1.750000 -0.728908 -0.775840 +177 1.760000 -0.721115 -0.782695 +178 1.770000 -0.713254 -0.789311 +179 1.780000 -0.705329 -0.795686 +180 1.790000 -0.697341 -0.801819 +181 1.800000 -0.689294 -0.807708 +182 1.810000 -0.681188 -0.813351 +183 1.820000 -0.673027 -0.818746 +184 1.830000 -0.664814 -0.823892 +185 1.840000 -0.656550 -0.828787 +186 1.850000 -0.648239 -0.833429 +187 1.860000 -0.639883 -0.837818 +188 1.870000 -0.631484 -0.841951 +189 1.880000 -0.623045 -0.845828 +190 1.890000 -0.614568 -0.849447 +191 1.900000 -0.606056 -0.852807 +192 1.910000 -0.597513 -0.855908 +193 1.920000 -0.588939 -0.858748 +194 1.930000 -0.580339 -0.861326 +195 1.940000 -0.571714 -0.863642 +196 1.950000 -0.563067 -0.865695 +197 1.960000 -0.554401 -0.867484 +198 1.970000 -0.545718 -0.869009 +199 1.980000 -0.537021 -0.870269 +200 1.990000 -0.528313 -0.871264 +201 2.000000 -0.519597 -0.871994 +202 2.010000 -0.510874 -0.872458 +203 2.020000 -0.502149 -0.872657 +204 2.030000 -0.493422 -0.872589 +205 2.040000 -0.484698 -0.872256 +206 2.050000 -0.475978 -0.871657 +207 2.060000 -0.467265 -0.870792 +208 2.070000 -0.458563 -0.869663 +209 2.080000 -0.449873 -0.868268 +210 2.090000 -0.441198 -0.866609 +211 2.100000 -0.432542 -0.864686 +212 2.110000 -0.423906 -0.862499 +213 2.120000 -0.415293 -0.860050 +214 2.130000 -0.406705 -0.857339 +215 2.140000 -0.398147 -0.854367 +216 2.150000 -0.389619 -0.851134 +217 2.160000 -0.381125 -0.847642 +218 2.170000 -0.372667 -0.843892 +219 2.180000 -0.364248 -0.839885 +220 2.190000 -0.355870 -0.835622 +221 2.200000 -0.347536 -0.831105 +222 2.210000 -0.339249 -0.826334 +223 2.220000 -0.331010 -0.821311 +224 2.230000 -0.322824 -0.816039 +225 2.240000 -0.314691 -0.810518 +226 2.250000 -0.306614 -0.804750 +227 2.260000 -0.298596 -0.798737 +228 2.270000 -0.290640 -0.792480 +229 2.280000 -0.282748 -0.785982 +230 2.290000 -0.274921 -0.779245 +231 2.300000 -0.267163 -0.772270 +232 2.310000 -0.259477 -0.765061 +233 2.320000 -0.251863 -0.757618 +234 2.330000 -0.244325 -0.749944 +235 2.340000 -0.236865 -0.742042 +236 2.350000 -0.229485 -0.733914 +237 2.360000 -0.222187 -0.725562 +238 2.370000 -0.214974 -0.716989 +239 2.380000 -0.207848 -0.708198 +240 2.390000 -0.200811 -0.699191 +241 2.400000 -0.193865 -0.689971 +242 2.410000 -0.187012 -0.680541 +243 2.420000 -0.180255 -0.670904 +244 2.430000 -0.173595 -0.661062 +245 2.440000 -0.167034 -0.651019 +246 2.450000 -0.160575 -0.640778 +247 2.460000 -0.154220 -0.630342 +248 2.470000 -0.147969 -0.619713 +249 2.480000 -0.141826 -0.608896 +250 2.490000 -0.135792 -0.597893 +251 2.500000 -0.129869 -0.586708 +252 2.510000 -0.124058 -0.575344 +253 2.520000 -0.118362 -0.563805 +254 2.530000 -0.112783 -0.552095 +255 2.540000 -0.107321 -0.540216 +256 2.550000 -0.101979 -0.528173 +257 2.560000 -0.096758 -0.515968 +258 2.570000 -0.091660 -0.503607 +259 2.580000 -0.086686 -0.491092 +260 2.590000 -0.081839 -0.478428 +261 2.600000 -0.077118 -0.465618 +262 2.610000 -0.072527 -0.452666 +263 2.620000 -0.068066 -0.439576 +264 2.630000 -0.063736 -0.426352 +265 2.640000 -0.059539 -0.412998 +266 2.650000 -0.055476 -0.399519 +267 2.660000 -0.051549 -0.385918 +268 2.670000 -0.047758 -0.372199 +269 2.680000 -0.044105 -0.358367 +270 2.690000 -0.040591 -0.344426 +271 2.700000 -0.037217 -0.330380 +272 2.710000 -0.033984 -0.316233 +273 2.720000 -0.030893 -0.301990 +274 2.730000 -0.027945 -0.287655 +275 2.740000 -0.025140 -0.273232 +276 2.750000 -0.022480 -0.258726 +277 2.760000 -0.019966 -0.244141 +278 2.770000 -0.017598 -0.229482 +279 2.780000 -0.015376 -0.214753 +280 2.790000 -0.013303 -0.199959 +281 2.800000 -0.011377 -0.185103 +282 2.810000 -0.009601 -0.170192 +283 2.820000 -0.007974 -0.155228 +284 2.830000 -0.006496 -0.140217 +285 2.840000 -0.005170 -0.125164 +286 2.850000 -0.003993 -0.110072 +287 2.860000 -0.002968 -0.094947 +288 2.870000 -0.002095 -0.079793 +289 2.880000 -0.001372 -0.064614 +290 2.890000 -0.000802 -0.049416 +291 2.900000 -0.000384 -0.034203 +292 2.910000 -0.000118 -0.018979 +293 2.920000 -0.000005 -0.003750 +294 2.930000 0.000000 0.000000 +295 2.940000 0.000000 0.000000 +296 2.950000 0.000000 0.000000 +297 2.960000 0.000000 0.000000 +298 2.970000 0.000000 0.000000 +299 2.980000 0.000000 0.000000 +300 2.990000 0.000000 0.000000 +301 3.000000 0.000000 0.000000 + diff --git a/tools/moltemplate/examples/coarse_grained/membrane_mixture_Cooke_Kremer_DesernoPRE2005/run.in.min b/tools/moltemplate/examples/coarse_grained/membrane_mixture_Cooke_Kremer_DesernoPRE2005/run.in.min new file mode 100644 index 0000000000000000000000000000000000000000..e6177f9937b48c73e2a4074f5d2ff51164371582 --- /dev/null +++ b/tools/moltemplate/examples/coarse_grained/membrane_mixture_Cooke_Kremer_DesernoPRE2005/run.in.min @@ -0,0 +1,21 @@ +# -- Init section -- + +include system.in.init + +# -- Atom definition section -- + +read_data system.data + +# -- Settings Section -- + +include system.in.settings + +# -- Run section -- + +dump 1 all custom 50 traj_min.lammpstrj id mol type x y z ix iy iz +thermo_style custom step pe etotal vol epair ebond eangle +thermo 40 # time interval for printing out "thermo" data + +minimize 1.0e-7 1.0e-9 100000 300000 + +write_data system_after_min.data diff --git a/tools/moltemplate/examples/coarse_grained/membrane_mixture_Cooke_Kremer_DesernoPRE2005/run.in.npt b/tools/moltemplate/examples/coarse_grained/membrane_mixture_Cooke_Kremer_DesernoPRE2005/run.in.npt new file mode 100644 index 0000000000000000000000000000000000000000..b305e1d5902f297bbb7a5569c9697c0d9b000c17 --- /dev/null +++ b/tools/moltemplate/examples/coarse_grained/membrane_mixture_Cooke_Kremer_DesernoPRE2005/run.in.npt @@ -0,0 +1,58 @@ +# -------- REQUIREMENTS: --------- +# 1) This example may require additional features and bug fixes for LAMMPS. +# Be sure to download and copy the "additional_lammps_code" from +# http://moltemplate.org (upper-left corner menu) +# 2) Unpack it +# 3) copy the .cpp and .h files to the src folding of your lammps installation. +# 4) Compile LAMMPS. +# +# (If LAMMPS complains about an "Invalid pair_style" +# then you made a mistake in the instructions above.) +# + +# -- Init Section -- + +include system.in.init + +# -- Atom Definition Section -- + +read_data system.data + +# -- Settings Section -- + +include system.in.settings + +# -- Run Section -- + + +timestep 0.01 +dump 1 all custom 10000 traj_npt.lammpstrj id mol type x y z ix iy iz + + +thermo_style custom step temp pe etotal vol epair ebond eangle +thermo 200 # time interval for printing out "thermo" data + +velocity all create 1.1 12345 + +fix fxlan all langevin 1.1 1.1 50.0 48279 +fix fxnph all nph x 0 0 1000 y 0 0 1000 couple xy + +# Note: The temperature is 1.1*ε +# (ε = "epsilon" used by the coarse-grained lipid) +# Note: The langevin damping parameter is now "50.0" in units of time +# (which are (m/(ε*σ^2))^(1/2) because we are using "units lj" +# This is grossly underdamped compared to the real system, +# but it leads to more efficient sampling.) +# Note: We maintain the system system at constant (zero) tention +# using a barostat damping parameter Pdamp=1000 ("0 0 1000") + + + +# optional (not sure if this helps): +# balance x uniform y uniform + + +run 5000000 + +write_data system_after_npt.data + diff --git a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/README.TXT b/tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/README.txt similarity index 90% rename from tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/README.TXT rename to tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/README.txt index 31abcd66efbbcc7c1278b830418b6d7e3991d344..e5f1544eab4dad5dfb1dbe3152b045db9a634e37 100644 --- a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/README.TXT +++ b/tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/README.txt @@ -1,4 +1,4 @@ -# This directory contains examples of how to run a short simulation of a +# This directory contains examples of how to run a short simulation of a # coarse-grained protein-like polymer, folding in the presence and absence of # a chaperone (modeled as an attractive or repulsie spherical shell). # @@ -8,14 +8,14 @@ # ...and also here: # AI Jewett and J-E Shea, J. Mol. Biol, Vol 363(5), (2006) # -# (In the "frustrated+minichaperone" directory, the protein is +# (In the "frustrated+minichaperone" directory, the protein is # placed outside the chaperone sphere, as opposed to inside.) # # -------- REQUIREMENTS: --------- # 1) These examples require the "USER-MISC" package. (Use "make yes-USER-MISC") # http://lammps.sandia.gov/doc/Section_start.html#start_3 # 2) They also may require additional features and bug fixes for LAMMPS. -# be sure to download and copy the "additional_lammps_code" from +# be sure to download and copy the "additional_lammps_code" from # http://moltemplate.org (upper-left corner menu) # 3) Unpack it # 4) copy the .cpp and .h files to the src folding of your lammps installation. @@ -23,7 +23,7 @@ # ------------- -Instructions on how to build LAMMPS input files and +Instructions on how to build LAMMPS input files and run a short simulation are provided in other README files in each directory. step 1) diff --git a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+chaperonin/README.TXT b/tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/frustrated+chaperonin/README.txt similarity index 89% rename from tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+chaperonin/README.TXT rename to tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/frustrated+chaperonin/README.txt index a52f73ff7b39543e1302f55709a3721546ece922..63517aa1253a02a94827b236d3a37e04a1086d5e 100644 --- a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+chaperonin/README.TXT +++ b/tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/frustrated+chaperonin/README.txt @@ -1,11 +1,11 @@ -# This directory demonstrates how to run a long simulation of +# This directory demonstrates how to run a long simulation of # the "frustrated" coarse-grained protein confined in a frustrated # coarse-grained chaperonin (R=6, h=0.475) as described in: # AI Jewett, A Baumketner and J-E Shea, PNAS, 101 (36), 13192-13197, (2004) # (http://www.pnas.org/content/101/36/13192) # -# Note: If you want to use a "hydrophilic" chaperone (with h=0.0 -# instead of h=0.475), then replace the word "CHAP_INTERIOR_H0.475" +# Note: If you want to use a "hydrophilic" chaperone (with h=0.0 +# instead of h=0.475), then replace the word "CHAP_INTERIOR_H0.475" # (at the end of "system.lt") with "CHAP_INTERIOR_H0" # # Because this process takes a long time (even with the help of the chaperone) @@ -15,14 +15,14 @@ # 1) This example requires the "USER-MISC" package. (Use "make yes-USER-MISC") # http://lammps.sandia.gov/doc/Section_start.html#start_3 # 2) It also may require additional features and bug fixes for LAMMPS. -# be sure to download and copy the "additional_lammps_code" from +# be sure to download and copy the "additional_lammps_code" from # http://moltemplate.org (upper-left corner menu) # 3) Unpack it # 4) copy the .cpp and .h files to the src folding of your lammps installation. # 5) Compile LAMMPS. ------------- -Instructions on how to build LAMMPS input files and +Instructions on how to build LAMMPS input files and run a short simulation are provided in other README files. step 1) diff --git a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+chaperonin/README_run.sh b/tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/frustrated+chaperonin/README_run.sh similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+chaperonin/README_run.sh rename to tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/frustrated+chaperonin/README_run.sh diff --git a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+chaperonin/README_setup.sh b/tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/frustrated+chaperonin/README_setup.sh similarity index 94% rename from tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+chaperonin/README_setup.sh rename to tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/frustrated+chaperonin/README_setup.sh index df49f4384fd9d69169d4c878d1f609edda078d19..042f73a2875a281847da0750764b519d0acea2d8 100755 --- a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+chaperonin/README_setup.sh +++ b/tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/frustrated+chaperonin/README_setup.sh @@ -9,15 +9,15 @@ cd moltemplate_files moltemplate.sh -overlay-dihedrals system.lt - # This will generate various files with names ending in *.in* and *.data. - # These files are the input files directly read by LAMMPS. Move them to + # This will generate various files with names ending in *.in* and *.data. + # These files are the input files directly read by LAMMPS. Move them to # the parent directory (or wherever you plan to run the simulation). mv -f system.in* system.data ../ cp -r table*.dat ../ # Optional: - # The "./output_ttree/" directory is full of temporary files generated by + # The "./output_ttree/" directory is full of temporary files generated by # moltemplate. They can be useful for debugging, but are usually thrown away. rm -rf output_ttree/ diff --git a/tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/frustrated+chaperonin/README_visualize.txt b/tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/frustrated+chaperonin/README_visualize.txt new file mode 100644 index 0000000000000000000000000000000000000000..a3e3ed620ec8b32fb6da484368dc3fc299bad6de --- /dev/null +++ b/tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/frustrated+chaperonin/README_visualize.txt @@ -0,0 +1,87 @@ + + ------- To view a lammps trajectory in VMD -------- + + +1) Build a PSF file for use in viewing with VMD. + +This step works with VMD 1.9 and topotools 1.2. +(Older versions, like VMD 1.8.6, don't support this.) + + +a) Start VMD +b) Menu Extensions->Tk Console +c) Enter: + +(I assume that the the DATA file is called "system.data") + + topo readlammpsdata system.data full + animate write psf system.psf + +2) + +Later, to Load a trajectory in VMD: + + Start VMD + Select menu: File->New Molecule + -Browse to select the PSF file you created above, and load it. + (Don't close the window yet.) + -Browse to select the trajectory file. + If necessary, for "file type" select: "LAMMPS Trajectory" + Load it. + + ---- A note on trajectory format: ----- +If the trajectory is a DUMP file, then make sure the it contains the +information you need for pbctools (see below. I've been using this +command in my LAMMPS scripts to create the trajectories: + + dump 1 all custom 5000 DUMP_FILE.lammpstrj id mol type x y z ix iy iz + +It's a good idea to use an atom_style which supports molecule-ID numbers +so that you can assign a molecule-ID number to each atom. (I think this +is needed to wrap atom coordinates without breaking molecules in half.) + +Of course, you don't have to save your trajectories in DUMP format, +(other formats like DCD work fine) I just mention dump files +because these are the files I'm familiar with. + +3) ----- Wrap the coordinates to the unit cell + (without cutting the molecules in half) + +a) Start VMD +b) Load the trajectory in VMD (see above) +c) Menu Extensions->Tk Console +d) Try entering these commands: + + pbc wrap -compound res -all + pbc box + + ----- Optional ---- + Sometimes the solvent or membrane obscures the view of the solute. + It can help to shift the location of the periodic boundary box + To shift the box in the y direction (for example) do this: + + pbc wrap -compound res -all -shiftcenterrel {0.0 0.15 0.0} + pbc box -shiftcenterrel {0.0 0.15 0.0} + + Distances are measured in units of box-length fractions, not Angstroms. + + Alternately if you have a solute whose atoms are all of type 1, + then you can also try this to center the box around it: + + pbc wrap -sel type=1 -all -centersel type=2 -center com + +4) + You should check if your periodic boundary conditions are too small. + To do that: + select Graphics->Representations menu option + click on the "Periodic" tab, and + click on the "+x", "-x", "+y", "-y", "+z", "-z" checkboxes. + +5) Optional: If you like, change the atom types in the PSF file so + that VMD recognizes the atom types, use something like: + +sed -e 's/ 1 1 / C C /g' < system.psf > temp1.psf +sed -e 's/ 2 2 / H H /g' < temp1.psf > temp2.psf +sed -e 's/ 3 3 / P P /g' < temp2.psf > system.psf + +(If you do this, it might effect step 2 above.) diff --git a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+chaperonin/images/misfolded+chaperonin_t=0tau_LR.jpg b/tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/frustrated+chaperonin/images/misfolded+chaperonin_t=0tau_LR.jpg similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+chaperonin/images/misfolded+chaperonin_t=0tau_LR.jpg rename to tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/frustrated+chaperonin/images/misfolded+chaperonin_t=0tau_LR.jpg diff --git a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+chaperonin/images/unfolded+chaperonin_t=508750tau_LR.jpg b/tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/frustrated+chaperonin/images/unfolded+chaperonin_t=508750tau_LR.jpg similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+chaperonin/images/unfolded+chaperonin_t=508750tau_LR.jpg rename to tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/frustrated+chaperonin/images/unfolded+chaperonin_t=508750tau_LR.jpg diff --git a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+chaperonin/moltemplate_files/1beadFrustrated.lt b/tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/frustrated+chaperonin/moltemplate_files/1beadFrustrated.lt similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+chaperonin/moltemplate_files/1beadFrustrated.lt rename to tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/frustrated+chaperonin/moltemplate_files/1beadFrustrated.lt diff --git a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+chaperonin/moltemplate_files/1beadFrustrated_variants.lt b/tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/frustrated+chaperonin/moltemplate_files/1beadFrustrated_variants.lt similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+chaperonin/moltemplate_files/1beadFrustrated_variants.lt rename to tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/frustrated+chaperonin/moltemplate_files/1beadFrustrated_variants.lt diff --git a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+chaperonin/moltemplate_files/chaperonin.lt b/tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/frustrated+chaperonin/moltemplate_files/chaperonin.lt similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+chaperonin/moltemplate_files/chaperonin.lt rename to tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/frustrated+chaperonin/moltemplate_files/chaperonin.lt diff --git a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+chaperonin/moltemplate_files/generate_tables/calc_chaperone_table.py b/tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/frustrated+chaperonin/moltemplate_files/generate_tables/calc_chaperone_table.py similarity index 96% rename from tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+chaperonin/moltemplate_files/generate_tables/calc_chaperone_table.py rename to tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/frustrated+chaperonin/moltemplate_files/generate_tables/calc_chaperone_table.py index 9b86809cc34eab897dbb61d1b8845405c7d24298..4c787de565814be76771c349e7aca32bf48134b7 100755 --- a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+chaperonin/moltemplate_files/generate_tables/calc_chaperone_table.py +++ b/tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/frustrated+chaperonin/moltemplate_files/generate_tables/calc_chaperone_table.py @@ -1,11 +1,11 @@ #!/usr/bin/env python -# Calculate a table of pairwise energies and forces between atoms in the +# Calculate a table of pairwise energies and forces between atoms in the # protein and a chaperone provided in the supplemental materials section of: # AI Jewett, A Baumketner and J-E Shea, PNAS, 101 (36), 13192-13197, (2004) # This is stored in a tabulated force field with a singularity at a distance R. # -# To calculate the table for interaction between +# To calculate the table for interaction between # ...the chaperone and a hydrophobic bead (2004 PNAS paper), use this table: # ./calc_chaperone_table.py 1.0 1.0 6.0 0.475 0.0 5.9 1181 # ...the chaperone and a hydrophilic bead (2004 PNAS paper), use this table: @@ -42,7 +42,7 @@ def F(r, eps, sigma, R, h): term4 = (4.0/sigma)*(pow(ixm, -5.0) - pow(ixp, -5.0)) product_term_b = 4.0*eps*pi*(R/r) * (0.2*term10 - 0.5*h*term4) return product_term_a + product_term_b - + class InputError(Exception): """ A generic exception object containing a string for error reporting. @@ -76,7 +76,7 @@ rcut = rmax for i in range(0,N): r = rmin + i*(rmax-rmin)/(N-1) - U_r = U(r, epsilon, sigma, R, h) + U_r = U(r, epsilon, sigma, R, h) F_r = F(r, epsilon, sigma, R, h) if subtract_Urcut: U_r -= U(rcut, epsilon, sigma, R, h) diff --git a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+chaperonin/moltemplate_files/generate_tables/calc_dihedral_table.py b/tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/frustrated+chaperonin/moltemplate_files/generate_tables/calc_dihedral_table.py similarity index 95% rename from tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+chaperonin/moltemplate_files/generate_tables/calc_dihedral_table.py rename to tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/frustrated+chaperonin/moltemplate_files/generate_tables/calc_dihedral_table.py index 34c66418a8a25da0ccaa2b25e788b26dbe815cb8..907732fa19bd1541a7c8dc1765414a315a84cf82 100755 --- a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+chaperonin/moltemplate_files/generate_tables/calc_dihedral_table.py +++ b/tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/frustrated+chaperonin/moltemplate_files/generate_tables/calc_dihedral_table.py @@ -4,9 +4,9 @@ # and beta-sheet regions of the frustrated protein model described in # provided in figure 8 of the supplemental materials section of: # AI Jewett, A Baumketner and J-E Shea, PNAS, 101 (36), 13192-13197, (2004) -# Note that the "A" and "B" parameters were incorrectly reported to be +# Note that the "A" and "B" parameters were incorrectly reported to be # 5.4*epsilon and 6.0*epsilon. The values used were 5.6 and 6.0 epsilon. -# The phiA and phiB values were 57.29577951308232 degrees (1 rad) +# The phiA and phiB values were 57.29577951308232 degrees (1 rad) # and 180 degrees, respectively. Both expA and expB were 6.0. # # To generate the table used for the alpha-helix (1 degree resolution) use this: @@ -37,9 +37,9 @@ def F(phi, A, phiA, expA, B, phiB, expB, use_radians=False): conv_units = pi/180.0 if use_radians: conv_units = 1.0 - termA = (0.5*sin(0.5*(phi-phiA)*conv_units) * + termA = (0.5*sin(0.5*(phi-phiA)*conv_units) * expA * pow(cos(0.5*(phi-phiA)*conv_units), expA-1.0)) - termB = (0.5*sin(0.5*(phi-phiB)*conv_units) * + termB = (0.5*sin(0.5*(phi-phiB)*conv_units) * expB * pow(cos(0.5*(phi-phiB)*conv_units), expB-1.0)) return -conv_units*(A*termA + B*termB) diff --git a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+chaperonin/moltemplate_files/system.lt b/tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/frustrated+chaperonin/moltemplate_files/system.lt similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+chaperonin/moltemplate_files/system.lt rename to tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/frustrated+chaperonin/moltemplate_files/system.lt diff --git a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+chaperonin/moltemplate_files/table_chaperonin_h=0.475.dat b/tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/frustrated+chaperonin/moltemplate_files/table_chaperonin_h=0.475.dat similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+chaperonin/moltemplate_files/table_chaperonin_h=0.475.dat rename to tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/frustrated+chaperonin/moltemplate_files/table_chaperonin_h=0.475.dat diff --git a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+chaperonin/moltemplate_files/table_chaperonin_h=0.dat b/tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/frustrated+chaperonin/moltemplate_files/table_chaperonin_h=0.dat similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+chaperonin/moltemplate_files/table_chaperonin_h=0.dat rename to tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/frustrated+chaperonin/moltemplate_files/table_chaperonin_h=0.dat diff --git a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+chaperonin/moltemplate_files/table_dihedral_frustrated.dat b/tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/frustrated+chaperonin/moltemplate_files/table_dihedral_frustrated.dat similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+chaperonin/moltemplate_files/table_dihedral_frustrated.dat rename to tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/frustrated+chaperonin/moltemplate_files/table_dihedral_frustrated.dat diff --git a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+chaperonin/run.in.min b/tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/frustrated+chaperonin/run.in.min similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+chaperonin/run.in.min rename to tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/frustrated+chaperonin/run.in.min diff --git a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+chaperonin/run.in.nvt b/tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/frustrated+chaperonin/run.in.nvt similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+chaperonin/run.in.nvt rename to tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/frustrated+chaperonin/run.in.nvt diff --git a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+minichaperone/README.TXT b/tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/frustrated+minichaperone/README.txt similarity index 92% rename from tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+minichaperone/README.TXT rename to tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/frustrated+minichaperone/README.txt index ecb9adad2e672835970afe3c3d3f71b46509ba22..d934e3ab6c1d62a2ce99cf27fb6f48b1f1d727da 100644 --- a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+minichaperone/README.TXT +++ b/tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/frustrated+minichaperone/README.txt @@ -1,4 +1,4 @@ -# This directory demonstrates how to run a long simulation of +# This directory demonstrates how to run a long simulation of # the "frustrated" coarse-grained protein in the presence of one # or more coarse-graine small ("mini") chaperones (R=3, h=0.6) as described in: # @@ -13,7 +13,7 @@ # In this example, 8 proteins and 8 chaperones were simulated. # # Note: In this case, the chaperones appear to catalyze aggregation. -# This is due to an artifact in the protein model. That model +# This is due to an artifact in the protein model. That model # was not designed to study aggregation. However the simulation # is suitable for making pretty pictures (to show off moltemplate). # @@ -21,14 +21,14 @@ # 1) This example requires the "USER-MISC" package. (Use "make yes-USER-MISC") # http://lammps.sandia.gov/doc/Section_start.html#start_3 # 2) It also may require additional features and bug fixes for LAMMPS. -# be sure to download and copy the "additional_lammps_code" from +# be sure to download and copy the "additional_lammps_code" from # http://moltemplate.org (upper-left corner menu) # 3) Unpack it # 4) copy the .cpp and .h files to the src folding of your lammps installation. # 5) Compile LAMMPS. ------------- -Instructions on how to build LAMMPS input files and +Instructions on how to build LAMMPS input files and run a short simulation are provided in other README files. step 1) diff --git a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+minichaperone/README_run.sh b/tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/frustrated+minichaperone/README_run.sh similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+minichaperone/README_run.sh rename to tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/frustrated+minichaperone/README_run.sh diff --git a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+minichaperone/README_setup.sh b/tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/frustrated+minichaperone/README_setup.sh similarity index 94% rename from tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+minichaperone/README_setup.sh rename to tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/frustrated+minichaperone/README_setup.sh index df49f4384fd9d69169d4c878d1f609edda078d19..042f73a2875a281847da0750764b519d0acea2d8 100755 --- a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+minichaperone/README_setup.sh +++ b/tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/frustrated+minichaperone/README_setup.sh @@ -9,15 +9,15 @@ cd moltemplate_files moltemplate.sh -overlay-dihedrals system.lt - # This will generate various files with names ending in *.in* and *.data. - # These files are the input files directly read by LAMMPS. Move them to + # This will generate various files with names ending in *.in* and *.data. + # These files are the input files directly read by LAMMPS. Move them to # the parent directory (or wherever you plan to run the simulation). mv -f system.in* system.data ../ cp -r table*.dat ../ # Optional: - # The "./output_ttree/" directory is full of temporary files generated by + # The "./output_ttree/" directory is full of temporary files generated by # moltemplate. They can be useful for debugging, but are usually thrown away. rm -rf output_ttree/ diff --git a/tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/frustrated+minichaperone/README_visualize.txt b/tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/frustrated+minichaperone/README_visualize.txt new file mode 100644 index 0000000000000000000000000000000000000000..a3e3ed620ec8b32fb6da484368dc3fc299bad6de --- /dev/null +++ b/tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/frustrated+minichaperone/README_visualize.txt @@ -0,0 +1,87 @@ + + ------- To view a lammps trajectory in VMD -------- + + +1) Build a PSF file for use in viewing with VMD. + +This step works with VMD 1.9 and topotools 1.2. +(Older versions, like VMD 1.8.6, don't support this.) + + +a) Start VMD +b) Menu Extensions->Tk Console +c) Enter: + +(I assume that the the DATA file is called "system.data") + + topo readlammpsdata system.data full + animate write psf system.psf + +2) + +Later, to Load a trajectory in VMD: + + Start VMD + Select menu: File->New Molecule + -Browse to select the PSF file you created above, and load it. + (Don't close the window yet.) + -Browse to select the trajectory file. + If necessary, for "file type" select: "LAMMPS Trajectory" + Load it. + + ---- A note on trajectory format: ----- +If the trajectory is a DUMP file, then make sure the it contains the +information you need for pbctools (see below. I've been using this +command in my LAMMPS scripts to create the trajectories: + + dump 1 all custom 5000 DUMP_FILE.lammpstrj id mol type x y z ix iy iz + +It's a good idea to use an atom_style which supports molecule-ID numbers +so that you can assign a molecule-ID number to each atom. (I think this +is needed to wrap atom coordinates without breaking molecules in half.) + +Of course, you don't have to save your trajectories in DUMP format, +(other formats like DCD work fine) I just mention dump files +because these are the files I'm familiar with. + +3) ----- Wrap the coordinates to the unit cell + (without cutting the molecules in half) + +a) Start VMD +b) Load the trajectory in VMD (see above) +c) Menu Extensions->Tk Console +d) Try entering these commands: + + pbc wrap -compound res -all + pbc box + + ----- Optional ---- + Sometimes the solvent or membrane obscures the view of the solute. + It can help to shift the location of the periodic boundary box + To shift the box in the y direction (for example) do this: + + pbc wrap -compound res -all -shiftcenterrel {0.0 0.15 0.0} + pbc box -shiftcenterrel {0.0 0.15 0.0} + + Distances are measured in units of box-length fractions, not Angstroms. + + Alternately if you have a solute whose atoms are all of type 1, + then you can also try this to center the box around it: + + pbc wrap -sel type=1 -all -centersel type=2 -center com + +4) + You should check if your periodic boundary conditions are too small. + To do that: + select Graphics->Representations menu option + click on the "Periodic" tab, and + click on the "+x", "-x", "+y", "-y", "+z", "-z" checkboxes. + +5) Optional: If you like, change the atom types in the PSF file so + that VMD recognizes the atom types, use something like: + +sed -e 's/ 1 1 / C C /g' < system.psf > temp1.psf +sed -e 's/ 2 2 / H H /g' < temp1.psf > temp2.psf +sed -e 's/ 3 3 / P P /g' < temp2.psf > system.psf + +(If you do this, it might effect step 2 above.) diff --git a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+minichaperone/images/protein2x2x2+minichaperones2x2x2_t=0tau_LR.jpg b/tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/frustrated+minichaperone/images/protein2x2x2+minichaperones2x2x2_t=0tau_LR.jpg similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+minichaperone/images/protein2x2x2+minichaperones2x2x2_t=0tau_LR.jpg rename to tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/frustrated+minichaperone/images/protein2x2x2+minichaperones2x2x2_t=0tau_LR.jpg diff --git a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+minichaperone/images/protein2x2x2+minichaperones2x2x2_t=67500tau_LR.jpg b/tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/frustrated+minichaperone/images/protein2x2x2+minichaperones2x2x2_t=67500tau_LR.jpg similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+minichaperone/images/protein2x2x2+minichaperones2x2x2_t=67500tau_LR.jpg rename to tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/frustrated+minichaperone/images/protein2x2x2+minichaperones2x2x2_t=67500tau_LR.jpg diff --git a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+minichaperone/moltemplate_files/1beadFrustrated.lt b/tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/frustrated+minichaperone/moltemplate_files/1beadFrustrated.lt similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+minichaperone/moltemplate_files/1beadFrustrated.lt rename to tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/frustrated+minichaperone/moltemplate_files/1beadFrustrated.lt diff --git a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+minichaperone/moltemplate_files/1beadFrustrated_variants.lt b/tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/frustrated+minichaperone/moltemplate_files/1beadFrustrated_variants.lt similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+minichaperone/moltemplate_files/1beadFrustrated_variants.lt rename to tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/frustrated+minichaperone/moltemplate_files/1beadFrustrated_variants.lt diff --git a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/unfrustrated+chaperonin/moltemplate_files/generate_tables/calc_chaperone_table.py b/tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/frustrated+minichaperone/moltemplate_files/generate_tables/calc_chaperone_table.py similarity index 96% rename from tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/unfrustrated+chaperonin/moltemplate_files/generate_tables/calc_chaperone_table.py rename to tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/frustrated+minichaperone/moltemplate_files/generate_tables/calc_chaperone_table.py index 9b86809cc34eab897dbb61d1b8845405c7d24298..4c787de565814be76771c349e7aca32bf48134b7 100755 --- a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/unfrustrated+chaperonin/moltemplate_files/generate_tables/calc_chaperone_table.py +++ b/tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/frustrated+minichaperone/moltemplate_files/generate_tables/calc_chaperone_table.py @@ -1,11 +1,11 @@ #!/usr/bin/env python -# Calculate a table of pairwise energies and forces between atoms in the +# Calculate a table of pairwise energies and forces between atoms in the # protein and a chaperone provided in the supplemental materials section of: # AI Jewett, A Baumketner and J-E Shea, PNAS, 101 (36), 13192-13197, (2004) # This is stored in a tabulated force field with a singularity at a distance R. # -# To calculate the table for interaction between +# To calculate the table for interaction between # ...the chaperone and a hydrophobic bead (2004 PNAS paper), use this table: # ./calc_chaperone_table.py 1.0 1.0 6.0 0.475 0.0 5.9 1181 # ...the chaperone and a hydrophilic bead (2004 PNAS paper), use this table: @@ -42,7 +42,7 @@ def F(r, eps, sigma, R, h): term4 = (4.0/sigma)*(pow(ixm, -5.0) - pow(ixp, -5.0)) product_term_b = 4.0*eps*pi*(R/r) * (0.2*term10 - 0.5*h*term4) return product_term_a + product_term_b - + class InputError(Exception): """ A generic exception object containing a string for error reporting. @@ -76,7 +76,7 @@ rcut = rmax for i in range(0,N): r = rmin + i*(rmax-rmin)/(N-1) - U_r = U(r, epsilon, sigma, R, h) + U_r = U(r, epsilon, sigma, R, h) F_r = F(r, epsilon, sigma, R, h) if subtract_Urcut: U_r -= U(rcut, epsilon, sigma, R, h) diff --git a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated/moltemplate_files/generate_tables/calc_dihedral_table.py b/tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/frustrated+minichaperone/moltemplate_files/generate_tables/calc_dihedral_table.py similarity index 95% rename from tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated/moltemplate_files/generate_tables/calc_dihedral_table.py rename to tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/frustrated+minichaperone/moltemplate_files/generate_tables/calc_dihedral_table.py index 34c66418a8a25da0ccaa2b25e788b26dbe815cb8..907732fa19bd1541a7c8dc1765414a315a84cf82 100755 --- a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated/moltemplate_files/generate_tables/calc_dihedral_table.py +++ b/tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/frustrated+minichaperone/moltemplate_files/generate_tables/calc_dihedral_table.py @@ -4,9 +4,9 @@ # and beta-sheet regions of the frustrated protein model described in # provided in figure 8 of the supplemental materials section of: # AI Jewett, A Baumketner and J-E Shea, PNAS, 101 (36), 13192-13197, (2004) -# Note that the "A" and "B" parameters were incorrectly reported to be +# Note that the "A" and "B" parameters were incorrectly reported to be # 5.4*epsilon and 6.0*epsilon. The values used were 5.6 and 6.0 epsilon. -# The phiA and phiB values were 57.29577951308232 degrees (1 rad) +# The phiA and phiB values were 57.29577951308232 degrees (1 rad) # and 180 degrees, respectively. Both expA and expB were 6.0. # # To generate the table used for the alpha-helix (1 degree resolution) use this: @@ -37,9 +37,9 @@ def F(phi, A, phiA, expA, B, phiB, expB, use_radians=False): conv_units = pi/180.0 if use_radians: conv_units = 1.0 - termA = (0.5*sin(0.5*(phi-phiA)*conv_units) * + termA = (0.5*sin(0.5*(phi-phiA)*conv_units) * expA * pow(cos(0.5*(phi-phiA)*conv_units), expA-1.0)) - termB = (0.5*sin(0.5*(phi-phiB)*conv_units) * + termB = (0.5*sin(0.5*(phi-phiB)*conv_units) * expB * pow(cos(0.5*(phi-phiB)*conv_units), expB-1.0)) return -conv_units*(A*termA + B*termB) diff --git a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+minichaperone/moltemplate_files/minichaperone.lt b/tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/frustrated+minichaperone/moltemplate_files/minichaperone.lt similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+minichaperone/moltemplate_files/minichaperone.lt rename to tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/frustrated+minichaperone/moltemplate_files/minichaperone.lt diff --git a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+minichaperone/moltemplate_files/system.lt b/tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/frustrated+minichaperone/moltemplate_files/system.lt similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+minichaperone/moltemplate_files/system.lt rename to tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/frustrated+minichaperone/moltemplate_files/system.lt diff --git a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+minichaperone/moltemplate_files/table_dihedral_frustrated.dat b/tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/frustrated+minichaperone/moltemplate_files/table_dihedral_frustrated.dat similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+minichaperone/moltemplate_files/table_dihedral_frustrated.dat rename to tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/frustrated+minichaperone/moltemplate_files/table_dihedral_frustrated.dat diff --git a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+minichaperone/moltemplate_files/table_minichaperone_h=0.6.dat b/tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/frustrated+minichaperone/moltemplate_files/table_minichaperone_h=0.6.dat similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+minichaperone/moltemplate_files/table_minichaperone_h=0.6.dat rename to tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/frustrated+minichaperone/moltemplate_files/table_minichaperone_h=0.6.dat diff --git a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+minichaperone/moltemplate_files/table_minichaperone_h=0.dat b/tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/frustrated+minichaperone/moltemplate_files/table_minichaperone_h=0.dat similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+minichaperone/moltemplate_files/table_minichaperone_h=0.dat rename to tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/frustrated+minichaperone/moltemplate_files/table_minichaperone_h=0.dat diff --git a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+minichaperone/run.in.min b/tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/frustrated+minichaperone/run.in.min similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+minichaperone/run.in.min rename to tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/frustrated+minichaperone/run.in.min diff --git a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+minichaperone/run.in.nvt b/tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/frustrated+minichaperone/run.in.nvt similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+minichaperone/run.in.nvt rename to tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/frustrated+minichaperone/run.in.nvt diff --git a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated/README.TXT b/tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/frustrated/README.txt similarity index 88% rename from tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated/README.TXT rename to tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/frustrated/README.txt index 77af3de15a6c654c137bd6b84ec55114c30e710e..7b02e02a32ce1051655198776c47c874133ef838 100644 --- a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated/README.TXT +++ b/tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/frustrated/README.txt @@ -1,25 +1,25 @@ -# This directory demonstrates how to run a short simulation of +# This directory demonstrates how to run a short simulation of # the "frustrated" coarse-grained protein model used in: # AI Jewett, A Baumketner and J-E Shea, PNAS, 101 (36), 13192-13197, (2004) # (http://www.pnas.org/content/101/36/13192) # -# During this short simulation (run_short_sim.nvt.in) the protein evolves +# During this short simulation (run_short_sim.nvt.in) the protein evolves # from an unfolded initial conformation to a misfolded conformation. -# (Visualize using VMD. Note: It can take hundreds of millions of +# (Visualize using VMD. Note: It can take hundreds of millions of # timesteps to escape from this conformation and reach the folded state.) # # -------- REQUIREMENTS: --------- # 1) This example requires the "USER-MISC" package. (Use "make yes-USER-MISC") # http://lammps.sandia.gov/doc/Section_start.html#start_3 # 2) It also may require additional features and bug fixes for LAMMPS. -# be sure to download and copy the "additional_lammps_code" from +# be sure to download and copy the "additional_lammps_code" from # http://moltemplate.org (upper-left corner menu) # 3) Unpack it # 4) copy the .cpp and .h files to the src folding of your lammps installation. # 5) Compile LAMMPS. ------------- -Instructions on how to build LAMMPS input files and +Instructions on how to build LAMMPS input files and run a short simulation are provided in other README files. step 1) diff --git a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated/README_run.sh b/tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/frustrated/README_run.sh similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated/README_run.sh rename to tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/frustrated/README_run.sh diff --git a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated/README_setup.sh b/tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/frustrated/README_setup.sh similarity index 94% rename from tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated/README_setup.sh rename to tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/frustrated/README_setup.sh index df49f4384fd9d69169d4c878d1f609edda078d19..042f73a2875a281847da0750764b519d0acea2d8 100755 --- a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated/README_setup.sh +++ b/tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/frustrated/README_setup.sh @@ -9,15 +9,15 @@ cd moltemplate_files moltemplate.sh -overlay-dihedrals system.lt - # This will generate various files with names ending in *.in* and *.data. - # These files are the input files directly read by LAMMPS. Move them to + # This will generate various files with names ending in *.in* and *.data. + # These files are the input files directly read by LAMMPS. Move them to # the parent directory (or wherever you plan to run the simulation). mv -f system.in* system.data ../ cp -r table*.dat ../ # Optional: - # The "./output_ttree/" directory is full of temporary files generated by + # The "./output_ttree/" directory is full of temporary files generated by # moltemplate. They can be useful for debugging, but are usually thrown away. rm -rf output_ttree/ diff --git a/tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/frustrated/README_visualize.txt b/tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/frustrated/README_visualize.txt new file mode 100644 index 0000000000000000000000000000000000000000..a3e3ed620ec8b32fb6da484368dc3fc299bad6de --- /dev/null +++ b/tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/frustrated/README_visualize.txt @@ -0,0 +1,87 @@ + + ------- To view a lammps trajectory in VMD -------- + + +1) Build a PSF file for use in viewing with VMD. + +This step works with VMD 1.9 and topotools 1.2. +(Older versions, like VMD 1.8.6, don't support this.) + + +a) Start VMD +b) Menu Extensions->Tk Console +c) Enter: + +(I assume that the the DATA file is called "system.data") + + topo readlammpsdata system.data full + animate write psf system.psf + +2) + +Later, to Load a trajectory in VMD: + + Start VMD + Select menu: File->New Molecule + -Browse to select the PSF file you created above, and load it. + (Don't close the window yet.) + -Browse to select the trajectory file. + If necessary, for "file type" select: "LAMMPS Trajectory" + Load it. + + ---- A note on trajectory format: ----- +If the trajectory is a DUMP file, then make sure the it contains the +information you need for pbctools (see below. I've been using this +command in my LAMMPS scripts to create the trajectories: + + dump 1 all custom 5000 DUMP_FILE.lammpstrj id mol type x y z ix iy iz + +It's a good idea to use an atom_style which supports molecule-ID numbers +so that you can assign a molecule-ID number to each atom. (I think this +is needed to wrap atom coordinates without breaking molecules in half.) + +Of course, you don't have to save your trajectories in DUMP format, +(other formats like DCD work fine) I just mention dump files +because these are the files I'm familiar with. + +3) ----- Wrap the coordinates to the unit cell + (without cutting the molecules in half) + +a) Start VMD +b) Load the trajectory in VMD (see above) +c) Menu Extensions->Tk Console +d) Try entering these commands: + + pbc wrap -compound res -all + pbc box + + ----- Optional ---- + Sometimes the solvent or membrane obscures the view of the solute. + It can help to shift the location of the periodic boundary box + To shift the box in the y direction (for example) do this: + + pbc wrap -compound res -all -shiftcenterrel {0.0 0.15 0.0} + pbc box -shiftcenterrel {0.0 0.15 0.0} + + Distances are measured in units of box-length fractions, not Angstroms. + + Alternately if you have a solute whose atoms are all of type 1, + then you can also try this to center the box around it: + + pbc wrap -sel type=1 -all -centersel type=2 -center com + +4) + You should check if your periodic boundary conditions are too small. + To do that: + select Graphics->Representations menu option + click on the "Periodic" tab, and + click on the "+x", "-x", "+y", "-y", "+z", "-z" checkboxes. + +5) Optional: If you like, change the atom types in the PSF file so + that VMD recognizes the atom types, use something like: + +sed -e 's/ 1 1 / C C /g' < system.psf > temp1.psf +sed -e 's/ 2 2 / H H /g' < temp1.psf > temp2.psf +sed -e 's/ 3 3 / P P /g' < temp2.psf > system.psf + +(If you do this, it might effect step 2 above.) diff --git a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated/images/initial_conformation_t=0tau.jpg b/tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/frustrated/images/initial_conformation_t=0tau.jpg similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated/images/initial_conformation_t=0tau.jpg rename to tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/frustrated/images/initial_conformation_t=0tau.jpg diff --git a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated/images/misfolded_conformation_t=1250tau.jpg b/tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/frustrated/images/misfolded_conformation_t=1250tau.jpg similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated/images/misfolded_conformation_t=1250tau.jpg rename to tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/frustrated/images/misfolded_conformation_t=1250tau.jpg diff --git a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated/moltemplate_files/1beadFrustrated.lt b/tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/frustrated/moltemplate_files/1beadFrustrated.lt similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated/moltemplate_files/1beadFrustrated.lt rename to tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/frustrated/moltemplate_files/1beadFrustrated.lt diff --git a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated/moltemplate_files/1beadFrustrated_variants.lt b/tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/frustrated/moltemplate_files/1beadFrustrated_variants.lt similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated/moltemplate_files/1beadFrustrated_variants.lt rename to tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/frustrated/moltemplate_files/1beadFrustrated_variants.lt diff --git a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+minichaperone/moltemplate_files/generate_tables/calc_dihedral_table.py b/tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/frustrated/moltemplate_files/generate_tables/calc_dihedral_table.py similarity index 95% rename from tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+minichaperone/moltemplate_files/generate_tables/calc_dihedral_table.py rename to tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/frustrated/moltemplate_files/generate_tables/calc_dihedral_table.py index 34c66418a8a25da0ccaa2b25e788b26dbe815cb8..907732fa19bd1541a7c8dc1765414a315a84cf82 100755 --- a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+minichaperone/moltemplate_files/generate_tables/calc_dihedral_table.py +++ b/tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/frustrated/moltemplate_files/generate_tables/calc_dihedral_table.py @@ -4,9 +4,9 @@ # and beta-sheet regions of the frustrated protein model described in # provided in figure 8 of the supplemental materials section of: # AI Jewett, A Baumketner and J-E Shea, PNAS, 101 (36), 13192-13197, (2004) -# Note that the "A" and "B" parameters were incorrectly reported to be +# Note that the "A" and "B" parameters were incorrectly reported to be # 5.4*epsilon and 6.0*epsilon. The values used were 5.6 and 6.0 epsilon. -# The phiA and phiB values were 57.29577951308232 degrees (1 rad) +# The phiA and phiB values were 57.29577951308232 degrees (1 rad) # and 180 degrees, respectively. Both expA and expB were 6.0. # # To generate the table used for the alpha-helix (1 degree resolution) use this: @@ -37,9 +37,9 @@ def F(phi, A, phiA, expA, B, phiB, expB, use_radians=False): conv_units = pi/180.0 if use_radians: conv_units = 1.0 - termA = (0.5*sin(0.5*(phi-phiA)*conv_units) * + termA = (0.5*sin(0.5*(phi-phiA)*conv_units) * expA * pow(cos(0.5*(phi-phiA)*conv_units), expA-1.0)) - termB = (0.5*sin(0.5*(phi-phiB)*conv_units) * + termB = (0.5*sin(0.5*(phi-phiB)*conv_units) * expB * pow(cos(0.5*(phi-phiB)*conv_units), expB-1.0)) return -conv_units*(A*termA + B*termB) diff --git a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated/moltemplate_files/system.lt b/tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/frustrated/moltemplate_files/system.lt similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated/moltemplate_files/system.lt rename to tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/frustrated/moltemplate_files/system.lt diff --git a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated/moltemplate_files/table_dihedral_frustrated.dat b/tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/frustrated/moltemplate_files/table_dihedral_frustrated.dat similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated/moltemplate_files/table_dihedral_frustrated.dat rename to tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/frustrated/moltemplate_files/table_dihedral_frustrated.dat diff --git a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated/run.in.min b/tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/frustrated/run.in.min similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated/run.in.min rename to tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/frustrated/run.in.min diff --git a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated/run_short_sim.in.nvt b/tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/frustrated/run_short_sim.in.nvt similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated/run_short_sim.in.nvt rename to tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/frustrated/run_short_sim.in.nvt diff --git a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/unfrustrated+chaperonin/README.TXT b/tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/unfrustrated+chaperonin/README.txt similarity index 85% rename from tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/unfrustrated+chaperonin/README.TXT rename to tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/unfrustrated+chaperonin/README.txt index 5da41b9a8b003d26ee4f65f92e4d028832e8bbf4..fd7c2ba7d137405ce627763a783c20db055d8cf9 100644 --- a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/unfrustrated+chaperonin/README.TXT +++ b/tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/unfrustrated+chaperonin/README.txt @@ -1,4 +1,4 @@ -# This directory demonstrates how to run a short simulation of +# This directory demonstrates how to run a short simulation of # the "unfrustrated" coarse-grained protein model used in: # AI Jewett, A Baumketner and J-E Shea, PNAS, 101 (36), 13192-13197, (2004) # (http://www.pnas.org/content/101/36/13192) @@ -8,21 +8,21 @@ # (This sphere is sometimes called the "chaperonin", because # we were using it to model the crude behavior of a chaperonin cavity.) # -# During this short simulation (run.in.nvt) the protein evolves +# During this short simulation (run.in.nvt) the protein evolves # from an unfolded initial conformation to the folded state. # # -------- REQUIREMENTS: --------- # 1) This example requires the "USER-MISC" package. (Use "make yes-USER-MISC") # http://lammps.sandia.gov/doc/Section_start.html#start_3 # 2) It also may require additional features and bug fixes for LAMMPS. -# be sure to download and copy the "additional_lammps_code" from +# be sure to download and copy the "additional_lammps_code" from # http://moltemplate.org (upper-left corner menu) # 3) Unpack it # 4) copy the .cpp and .h files to the src folding of your lammps installation. # 5) Compile LAMMPS. ------------- -Instructions on how to build LAMMPS input files and +Instructions on how to build LAMMPS input files and run a short simulation are provided in other README files. step 1) diff --git a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/unfrustrated+chaperonin/README_run.sh b/tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/unfrustrated+chaperonin/README_run.sh similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/unfrustrated+chaperonin/README_run.sh rename to tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/unfrustrated+chaperonin/README_run.sh diff --git a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/unfrustrated+chaperonin/README_setup.sh b/tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/unfrustrated+chaperonin/README_setup.sh similarity index 94% rename from tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/unfrustrated+chaperonin/README_setup.sh rename to tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/unfrustrated+chaperonin/README_setup.sh index df49f4384fd9d69169d4c878d1f609edda078d19..042f73a2875a281847da0750764b519d0acea2d8 100755 --- a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/unfrustrated+chaperonin/README_setup.sh +++ b/tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/unfrustrated+chaperonin/README_setup.sh @@ -9,15 +9,15 @@ cd moltemplate_files moltemplate.sh -overlay-dihedrals system.lt - # This will generate various files with names ending in *.in* and *.data. - # These files are the input files directly read by LAMMPS. Move them to + # This will generate various files with names ending in *.in* and *.data. + # These files are the input files directly read by LAMMPS. Move them to # the parent directory (or wherever you plan to run the simulation). mv -f system.in* system.data ../ cp -r table*.dat ../ # Optional: - # The "./output_ttree/" directory is full of temporary files generated by + # The "./output_ttree/" directory is full of temporary files generated by # moltemplate. They can be useful for debugging, but are usually thrown away. rm -rf output_ttree/ diff --git a/tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/unfrustrated+chaperonin/README_visualize.txt b/tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/unfrustrated+chaperonin/README_visualize.txt new file mode 100644 index 0000000000000000000000000000000000000000..a3e3ed620ec8b32fb6da484368dc3fc299bad6de --- /dev/null +++ b/tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/unfrustrated+chaperonin/README_visualize.txt @@ -0,0 +1,87 @@ + + ------- To view a lammps trajectory in VMD -------- + + +1) Build a PSF file for use in viewing with VMD. + +This step works with VMD 1.9 and topotools 1.2. +(Older versions, like VMD 1.8.6, don't support this.) + + +a) Start VMD +b) Menu Extensions->Tk Console +c) Enter: + +(I assume that the the DATA file is called "system.data") + + topo readlammpsdata system.data full + animate write psf system.psf + +2) + +Later, to Load a trajectory in VMD: + + Start VMD + Select menu: File->New Molecule + -Browse to select the PSF file you created above, and load it. + (Don't close the window yet.) + -Browse to select the trajectory file. + If necessary, for "file type" select: "LAMMPS Trajectory" + Load it. + + ---- A note on trajectory format: ----- +If the trajectory is a DUMP file, then make sure the it contains the +information you need for pbctools (see below. I've been using this +command in my LAMMPS scripts to create the trajectories: + + dump 1 all custom 5000 DUMP_FILE.lammpstrj id mol type x y z ix iy iz + +It's a good idea to use an atom_style which supports molecule-ID numbers +so that you can assign a molecule-ID number to each atom. (I think this +is needed to wrap atom coordinates without breaking molecules in half.) + +Of course, you don't have to save your trajectories in DUMP format, +(other formats like DCD work fine) I just mention dump files +because these are the files I'm familiar with. + +3) ----- Wrap the coordinates to the unit cell + (without cutting the molecules in half) + +a) Start VMD +b) Load the trajectory in VMD (see above) +c) Menu Extensions->Tk Console +d) Try entering these commands: + + pbc wrap -compound res -all + pbc box + + ----- Optional ---- + Sometimes the solvent or membrane obscures the view of the solute. + It can help to shift the location of the periodic boundary box + To shift the box in the y direction (for example) do this: + + pbc wrap -compound res -all -shiftcenterrel {0.0 0.15 0.0} + pbc box -shiftcenterrel {0.0 0.15 0.0} + + Distances are measured in units of box-length fractions, not Angstroms. + + Alternately if you have a solute whose atoms are all of type 1, + then you can also try this to center the box around it: + + pbc wrap -sel type=1 -all -centersel type=2 -center com + +4) + You should check if your periodic boundary conditions are too small. + To do that: + select Graphics->Representations menu option + click on the "Periodic" tab, and + click on the "+x", "-x", "+y", "-y", "+z", "-z" checkboxes. + +5) Optional: If you like, change the atom types in the PSF file so + that VMD recognizes the atom types, use something like: + +sed -e 's/ 1 1 / C C /g' < system.psf > temp1.psf +sed -e 's/ 2 2 / H H /g' < temp1.psf > temp2.psf +sed -e 's/ 3 3 / P P /g' < temp2.psf > system.psf + +(If you do this, it might effect step 2 above.) diff --git a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/unfrustrated+chaperonin/images/unfrustrated+chaperonin_t=0tau_LR.jpg b/tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/unfrustrated+chaperonin/images/unfrustrated+chaperonin_t=0tau_LR.jpg similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/unfrustrated+chaperonin/images/unfrustrated+chaperonin_t=0tau_LR.jpg rename to tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/unfrustrated+chaperonin/images/unfrustrated+chaperonin_t=0tau_LR.jpg diff --git a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/unfrustrated+chaperonin/images/unfrustrated+chaperonin_t=105tau_LR.jpg b/tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/unfrustrated+chaperonin/images/unfrustrated+chaperonin_t=105tau_LR.jpg similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/unfrustrated+chaperonin/images/unfrustrated+chaperonin_t=105tau_LR.jpg rename to tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/unfrustrated+chaperonin/images/unfrustrated+chaperonin_t=105tau_LR.jpg diff --git a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/unfrustrated+chaperonin/moltemplate_files/1beadUnfrustrated.lt b/tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/unfrustrated+chaperonin/moltemplate_files/1beadUnfrustrated.lt similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/unfrustrated+chaperonin/moltemplate_files/1beadUnfrustrated.lt rename to tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/unfrustrated+chaperonin/moltemplate_files/1beadUnfrustrated.lt diff --git a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/unfrustrated+chaperonin/moltemplate_files/1beadUnfrustrated_variants.lt b/tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/unfrustrated+chaperonin/moltemplate_files/1beadUnfrustrated_variants.lt similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/unfrustrated+chaperonin/moltemplate_files/1beadUnfrustrated_variants.lt rename to tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/unfrustrated+chaperonin/moltemplate_files/1beadUnfrustrated_variants.lt diff --git a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/unfrustrated+chaperonin/moltemplate_files/chaperonin.lt b/tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/unfrustrated+chaperonin/moltemplate_files/chaperonin.lt similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/unfrustrated+chaperonin/moltemplate_files/chaperonin.lt rename to tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/unfrustrated+chaperonin/moltemplate_files/chaperonin.lt diff --git a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+minichaperone/moltemplate_files/generate_tables/calc_chaperone_table.py b/tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/unfrustrated+chaperonin/moltemplate_files/generate_tables/calc_chaperone_table.py similarity index 96% rename from tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+minichaperone/moltemplate_files/generate_tables/calc_chaperone_table.py rename to tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/unfrustrated+chaperonin/moltemplate_files/generate_tables/calc_chaperone_table.py index 9b86809cc34eab897dbb61d1b8845405c7d24298..4c787de565814be76771c349e7aca32bf48134b7 100755 --- a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+minichaperone/moltemplate_files/generate_tables/calc_chaperone_table.py +++ b/tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/unfrustrated+chaperonin/moltemplate_files/generate_tables/calc_chaperone_table.py @@ -1,11 +1,11 @@ #!/usr/bin/env python -# Calculate a table of pairwise energies and forces between atoms in the +# Calculate a table of pairwise energies and forces between atoms in the # protein and a chaperone provided in the supplemental materials section of: # AI Jewett, A Baumketner and J-E Shea, PNAS, 101 (36), 13192-13197, (2004) # This is stored in a tabulated force field with a singularity at a distance R. # -# To calculate the table for interaction between +# To calculate the table for interaction between # ...the chaperone and a hydrophobic bead (2004 PNAS paper), use this table: # ./calc_chaperone_table.py 1.0 1.0 6.0 0.475 0.0 5.9 1181 # ...the chaperone and a hydrophilic bead (2004 PNAS paper), use this table: @@ -42,7 +42,7 @@ def F(r, eps, sigma, R, h): term4 = (4.0/sigma)*(pow(ixm, -5.0) - pow(ixp, -5.0)) product_term_b = 4.0*eps*pi*(R/r) * (0.2*term10 - 0.5*h*term4) return product_term_a + product_term_b - + class InputError(Exception): """ A generic exception object containing a string for error reporting. @@ -76,7 +76,7 @@ rcut = rmax for i in range(0,N): r = rmin + i*(rmax-rmin)/(N-1) - U_r = U(r, epsilon, sigma, R, h) + U_r = U(r, epsilon, sigma, R, h) F_r = F(r, epsilon, sigma, R, h) if subtract_Urcut: U_r -= U(rcut, epsilon, sigma, R, h) diff --git a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/unfrustrated+chaperonin/moltemplate_files/system.lt b/tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/unfrustrated+chaperonin/moltemplate_files/system.lt similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/unfrustrated+chaperonin/moltemplate_files/system.lt rename to tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/unfrustrated+chaperonin/moltemplate_files/system.lt diff --git a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/unfrustrated+chaperonin/moltemplate_files/table_chaperonin_h=0.475.dat b/tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/unfrustrated+chaperonin/moltemplate_files/table_chaperonin_h=0.475.dat similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/unfrustrated+chaperonin/moltemplate_files/table_chaperonin_h=0.475.dat rename to tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/unfrustrated+chaperonin/moltemplate_files/table_chaperonin_h=0.475.dat diff --git a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/unfrustrated+chaperonin/moltemplate_files/table_chaperonin_h=0.dat b/tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/unfrustrated+chaperonin/moltemplate_files/table_chaperonin_h=0.dat similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/unfrustrated+chaperonin/moltemplate_files/table_chaperonin_h=0.dat rename to tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/unfrustrated+chaperonin/moltemplate_files/table_chaperonin_h=0.dat diff --git a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/unfrustrated+chaperonin/run.in.min b/tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/unfrustrated+chaperonin/run.in.min similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/unfrustrated+chaperonin/run.in.min rename to tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/unfrustrated+chaperonin/run.in.min diff --git a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/unfrustrated+chaperonin/run.in.nvt b/tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/unfrustrated+chaperonin/run.in.nvt similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/unfrustrated+chaperonin/run.in.nvt rename to tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/unfrustrated+chaperonin/run.in.nvt diff --git a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/unfrustrated/README.TXT b/tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/unfrustrated/README.txt similarity index 82% rename from tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/unfrustrated/README.TXT rename to tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/unfrustrated/README.txt index b2770e3e3decb5a64fb8ee7162075f4e0a9edd91..7756b566db279aacb96f10cea844cff9003f7db7 100644 --- a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/unfrustrated/README.TXT +++ b/tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/unfrustrated/README.txt @@ -1,23 +1,23 @@ -# This directory demonstrates how to run a short simulation of +# This directory demonstrates how to run a short simulation of # the "unfrustrated" coarse-grained protein model used in: # AI Jewett, A Baumketner and J-E Shea, PNAS, 101 (36), 13192-13197, (2004) # (http://www.pnas.org/content/101/36/13192) # -# During this short simulation (run.in.nvt) the protein evolves +# During this short simulation (run.in.nvt) the protein evolves # from an unfolded initial conformation to the folded state. # # -------- REQUIREMENTS: --------- # 1) This example requires the "USER-MISC" package. (Use "make yes-USER-MISC") # http://lammps.sandia.gov/doc/Section_start.html#start_3 # 2) It also may require additional features and bug fixes for LAMMPS. -# be sure to download and copy the "additional_lammps_code" from +# be sure to download and copy the "additional_lammps_code" from # http://moltemplate.org (upper-left corner menu) # 3) Unpack it # 4) copy the .cpp and .h files to the src folding of your lammps installation. # 5) Compile LAMMPS. ------------- -Instructions on how to build LAMMPS input files and +Instructions on how to build LAMMPS input files and run a short simulation are provided in other README files. step 1) diff --git a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/unfrustrated/README_run.sh b/tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/unfrustrated/README_run.sh similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/unfrustrated/README_run.sh rename to tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/unfrustrated/README_run.sh diff --git a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/unfrustrated/README_setup.sh b/tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/unfrustrated/README_setup.sh similarity index 94% rename from tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/unfrustrated/README_setup.sh rename to tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/unfrustrated/README_setup.sh index fa10f5572418b84b8ef621799a4bb1912aaa3420..886551ffb370c9e9a21e8f2ee296b3362e3eb0ba 100755 --- a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/unfrustrated/README_setup.sh +++ b/tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/unfrustrated/README_setup.sh @@ -9,14 +9,14 @@ cd moltemplate_files moltemplate.sh -overlay-dihedrals system.lt - # This will generate various files with names ending in *.in* and *.data. - # These files are the input files directly read by LAMMPS. Move them to + # This will generate various files with names ending in *.in* and *.data. + # These files are the input files directly read by LAMMPS. Move them to # the parent directory (or wherever you plan to run the simulation). mv -f system.in* system.data ../ # Optional: - # The "./output_ttree/" directory is full of temporary files generated by + # The "./output_ttree/" directory is full of temporary files generated by # moltemplate. They can be useful for debugging, but are usually thrown away. rm -rf output_ttree/ diff --git a/tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/unfrustrated/README_visualize.txt b/tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/unfrustrated/README_visualize.txt new file mode 100644 index 0000000000000000000000000000000000000000..a3e3ed620ec8b32fb6da484368dc3fc299bad6de --- /dev/null +++ b/tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/unfrustrated/README_visualize.txt @@ -0,0 +1,87 @@ + + ------- To view a lammps trajectory in VMD -------- + + +1) Build a PSF file for use in viewing with VMD. + +This step works with VMD 1.9 and topotools 1.2. +(Older versions, like VMD 1.8.6, don't support this.) + + +a) Start VMD +b) Menu Extensions->Tk Console +c) Enter: + +(I assume that the the DATA file is called "system.data") + + topo readlammpsdata system.data full + animate write psf system.psf + +2) + +Later, to Load a trajectory in VMD: + + Start VMD + Select menu: File->New Molecule + -Browse to select the PSF file you created above, and load it. + (Don't close the window yet.) + -Browse to select the trajectory file. + If necessary, for "file type" select: "LAMMPS Trajectory" + Load it. + + ---- A note on trajectory format: ----- +If the trajectory is a DUMP file, then make sure the it contains the +information you need for pbctools (see below. I've been using this +command in my LAMMPS scripts to create the trajectories: + + dump 1 all custom 5000 DUMP_FILE.lammpstrj id mol type x y z ix iy iz + +It's a good idea to use an atom_style which supports molecule-ID numbers +so that you can assign a molecule-ID number to each atom. (I think this +is needed to wrap atom coordinates without breaking molecules in half.) + +Of course, you don't have to save your trajectories in DUMP format, +(other formats like DCD work fine) I just mention dump files +because these are the files I'm familiar with. + +3) ----- Wrap the coordinates to the unit cell + (without cutting the molecules in half) + +a) Start VMD +b) Load the trajectory in VMD (see above) +c) Menu Extensions->Tk Console +d) Try entering these commands: + + pbc wrap -compound res -all + pbc box + + ----- Optional ---- + Sometimes the solvent or membrane obscures the view of the solute. + It can help to shift the location of the periodic boundary box + To shift the box in the y direction (for example) do this: + + pbc wrap -compound res -all -shiftcenterrel {0.0 0.15 0.0} + pbc box -shiftcenterrel {0.0 0.15 0.0} + + Distances are measured in units of box-length fractions, not Angstroms. + + Alternately if you have a solute whose atoms are all of type 1, + then you can also try this to center the box around it: + + pbc wrap -sel type=1 -all -centersel type=2 -center com + +4) + You should check if your periodic boundary conditions are too small. + To do that: + select Graphics->Representations menu option + click on the "Periodic" tab, and + click on the "+x", "-x", "+y", "-y", "+z", "-z" checkboxes. + +5) Optional: If you like, change the atom types in the PSF file so + that VMD recognizes the atom types, use something like: + +sed -e 's/ 1 1 / C C /g' < system.psf > temp1.psf +sed -e 's/ 2 2 / H H /g' < temp1.psf > temp2.psf +sed -e 's/ 3 3 / P P /g' < temp2.psf > system.psf + +(If you do this, it might effect step 2 above.) diff --git a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/unfrustrated/images/unfrustrated_t=0tau_LR.jpg b/tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/unfrustrated/images/unfrustrated_t=0tau_LR.jpg similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/unfrustrated/images/unfrustrated_t=0tau_LR.jpg rename to tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/unfrustrated/images/unfrustrated_t=0tau_LR.jpg diff --git a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/unfrustrated/images/unfrustrated_t=200tau_LR.jpg b/tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/unfrustrated/images/unfrustrated_t=200tau_LR.jpg similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/unfrustrated/images/unfrustrated_t=200tau_LR.jpg rename to tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/unfrustrated/images/unfrustrated_t=200tau_LR.jpg diff --git a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/unfrustrated/moltemplate_files/1beadUnfrustrated.lt b/tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/unfrustrated/moltemplate_files/1beadUnfrustrated.lt similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/unfrustrated/moltemplate_files/1beadUnfrustrated.lt rename to tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/unfrustrated/moltemplate_files/1beadUnfrustrated.lt diff --git a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/unfrustrated/moltemplate_files/1beadUnfrustrated_variants.lt b/tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/unfrustrated/moltemplate_files/1beadUnfrustrated_variants.lt similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/unfrustrated/moltemplate_files/1beadUnfrustrated_variants.lt rename to tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/unfrustrated/moltemplate_files/1beadUnfrustrated_variants.lt diff --git a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/unfrustrated/moltemplate_files/system.lt b/tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/unfrustrated/moltemplate_files/system.lt similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/unfrustrated/moltemplate_files/system.lt rename to tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/unfrustrated/moltemplate_files/system.lt diff --git a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/unfrustrated/run.in.min b/tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/unfrustrated/run.in.min similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/unfrustrated/run.in.min rename to tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/unfrustrated/run.in.min diff --git a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/unfrustrated/run.in.nvt b/tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/unfrustrated/run.in.nvt similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/unfrustrated/run.in.nvt rename to tools/moltemplate/examples/coarse_grained/protein_folding_examples/1bead+chaperone/unfrustrated/run.in.nvt diff --git a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1beadProtSci2010/README.TXT b/tools/moltemplate/examples/coarse_grained/protein_folding_examples/1beadProtSci2010/README.txt similarity index 95% rename from tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1beadProtSci2010/README.TXT rename to tools/moltemplate/examples/coarse_grained/protein_folding_examples/1beadProtSci2010/README.txt index eda6a1ca22557e69e6ff1afc13db13852f68138a..03361928e1a7e4cb1f06ef8eb53596153ca9d379 100644 --- a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1beadProtSci2010/README.TXT +++ b/tools/moltemplate/examples/coarse_grained/protein_folding_examples/1beadProtSci2010/README.txt @@ -2,7 +2,7 @@ # 1) This example requires the "USER-MISC" package. (Use "make yes-USER-MISC") # http://lammps.sandia.gov/doc/Section_start.html#start_3 # 2) It also may require additional features and bug fixes for LAMMPS. -# be sure to download and copy the "additional_lammps_code" from +# be sure to download and copy the "additional_lammps_code" from # http://moltemplate.org (upper-left corner menu) # 3) Unpack it # 4) copy the .cpp and .h files to the src folding of your lammps installation. @@ -16,14 +16,14 @@ G. Bellesia, AI Jewett, and J-E Shea, Protein Science, Vol19 141-154 (2010) In this model, there are three atom-types (bead-types), H, L, and N representing one amino-acid each. The "H" beads represent the hydrophobic -amino acids, and are attracted to eachother with a strength of "1.0" +amino acids, and are attracted to eachother with a strength of "1.0" (in dimensionless units of "epsilon"). The "L" and "N" atoms are hydrophilic and purely repulsive, and only differ in their secondary-structure propensity (ie their dihedral parameters). The dihedral-interaction is bi-stable with two deep local minima (corresponding -to helix-like and sheet-like secondary structure). You can adjust the bias -in favor of one minima or another by modifying the angle-shift parameter in +to helix-like and sheet-like secondary structure). You can adjust the bias +in favor of one minima or another by modifying the angle-shift parameter in the appropriate "dihedral_coeff" command in the other .lt file. A definition for the 4-sheet beta-barell protein model is also included. @@ -34,7 +34,7 @@ prot = new 4HelixBundle prot = new 4SheetBundle ------------- -Instructions on how to build LAMMPS input files and +Instructions on how to build LAMMPS input files and run a short simulation are provided in other README files. step 1) diff --git a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1beadProtSci2010/README_run.sh b/tools/moltemplate/examples/coarse_grained/protein_folding_examples/1beadProtSci2010/README_run.sh similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1beadProtSci2010/README_run.sh rename to tools/moltemplate/examples/coarse_grained/protein_folding_examples/1beadProtSci2010/README_run.sh diff --git a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1beadProtSci2010/README_setup.sh b/tools/moltemplate/examples/coarse_grained/protein_folding_examples/1beadProtSci2010/README_setup.sh similarity index 94% rename from tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1beadProtSci2010/README_setup.sh rename to tools/moltemplate/examples/coarse_grained/protein_folding_examples/1beadProtSci2010/README_setup.sh index fa10f5572418b84b8ef621799a4bb1912aaa3420..886551ffb370c9e9a21e8f2ee296b3362e3eb0ba 100755 --- a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1beadProtSci2010/README_setup.sh +++ b/tools/moltemplate/examples/coarse_grained/protein_folding_examples/1beadProtSci2010/README_setup.sh @@ -9,14 +9,14 @@ cd moltemplate_files moltemplate.sh -overlay-dihedrals system.lt - # This will generate various files with names ending in *.in* and *.data. - # These files are the input files directly read by LAMMPS. Move them to + # This will generate various files with names ending in *.in* and *.data. + # These files are the input files directly read by LAMMPS. Move them to # the parent directory (or wherever you plan to run the simulation). mv -f system.in* system.data ../ # Optional: - # The "./output_ttree/" directory is full of temporary files generated by + # The "./output_ttree/" directory is full of temporary files generated by # moltemplate. They can be useful for debugging, but are usually thrown away. rm -rf output_ttree/ diff --git a/tools/moltemplate/examples/coarse_grained/protein_folding_examples/1beadProtSci2010/README_visualize.txt b/tools/moltemplate/examples/coarse_grained/protein_folding_examples/1beadProtSci2010/README_visualize.txt new file mode 100644 index 0000000000000000000000000000000000000000..a3e3ed620ec8b32fb6da484368dc3fc299bad6de --- /dev/null +++ b/tools/moltemplate/examples/coarse_grained/protein_folding_examples/1beadProtSci2010/README_visualize.txt @@ -0,0 +1,87 @@ + + ------- To view a lammps trajectory in VMD -------- + + +1) Build a PSF file for use in viewing with VMD. + +This step works with VMD 1.9 and topotools 1.2. +(Older versions, like VMD 1.8.6, don't support this.) + + +a) Start VMD +b) Menu Extensions->Tk Console +c) Enter: + +(I assume that the the DATA file is called "system.data") + + topo readlammpsdata system.data full + animate write psf system.psf + +2) + +Later, to Load a trajectory in VMD: + + Start VMD + Select menu: File->New Molecule + -Browse to select the PSF file you created above, and load it. + (Don't close the window yet.) + -Browse to select the trajectory file. + If necessary, for "file type" select: "LAMMPS Trajectory" + Load it. + + ---- A note on trajectory format: ----- +If the trajectory is a DUMP file, then make sure the it contains the +information you need for pbctools (see below. I've been using this +command in my LAMMPS scripts to create the trajectories: + + dump 1 all custom 5000 DUMP_FILE.lammpstrj id mol type x y z ix iy iz + +It's a good idea to use an atom_style which supports molecule-ID numbers +so that you can assign a molecule-ID number to each atom. (I think this +is needed to wrap atom coordinates without breaking molecules in half.) + +Of course, you don't have to save your trajectories in DUMP format, +(other formats like DCD work fine) I just mention dump files +because these are the files I'm familiar with. + +3) ----- Wrap the coordinates to the unit cell + (without cutting the molecules in half) + +a) Start VMD +b) Load the trajectory in VMD (see above) +c) Menu Extensions->Tk Console +d) Try entering these commands: + + pbc wrap -compound res -all + pbc box + + ----- Optional ---- + Sometimes the solvent or membrane obscures the view of the solute. + It can help to shift the location of the periodic boundary box + To shift the box in the y direction (for example) do this: + + pbc wrap -compound res -all -shiftcenterrel {0.0 0.15 0.0} + pbc box -shiftcenterrel {0.0 0.15 0.0} + + Distances are measured in units of box-length fractions, not Angstroms. + + Alternately if you have a solute whose atoms are all of type 1, + then you can also try this to center the box around it: + + pbc wrap -sel type=1 -all -centersel type=2 -center com + +4) + You should check if your periodic boundary conditions are too small. + To do that: + select Graphics->Representations menu option + click on the "Periodic" tab, and + click on the "+x", "-x", "+y", "-y", "+z", "-z" checkboxes. + +5) Optional: If you like, change the atom types in the PSF file so + that VMD recognizes the atom types, use something like: + +sed -e 's/ 1 1 / C C /g' < system.psf > temp1.psf +sed -e 's/ 2 2 / H H /g' < temp1.psf > temp2.psf +sed -e 's/ 3 3 / P P /g' < temp2.psf > system.psf + +(If you do this, it might effect step 2 above.) diff --git a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1beadProtSci2010/images/4HelixBundle_t=0.jpg b/tools/moltemplate/examples/coarse_grained/protein_folding_examples/1beadProtSci2010/images/4HelixBundle_t=0.jpg similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1beadProtSci2010/images/4HelixBundle_t=0.jpg rename to tools/moltemplate/examples/coarse_grained/protein_folding_examples/1beadProtSci2010/images/4HelixBundle_t=0.jpg diff --git a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1beadProtSci2010/images/4SheetBundle_t=0.jpg b/tools/moltemplate/examples/coarse_grained/protein_folding_examples/1beadProtSci2010/images/4SheetBundle_t=0.jpg similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1beadProtSci2010/images/4SheetBundle_t=0.jpg rename to tools/moltemplate/examples/coarse_grained/protein_folding_examples/1beadProtSci2010/images/4SheetBundle_t=0.jpg diff --git a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1beadProtSci2010/moltemplate_files/1beadProtSci2010.lt b/tools/moltemplate/examples/coarse_grained/protein_folding_examples/1beadProtSci2010/moltemplate_files/1beadProtSci2010.lt similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1beadProtSci2010/moltemplate_files/1beadProtSci2010.lt rename to tools/moltemplate/examples/coarse_grained/protein_folding_examples/1beadProtSci2010/moltemplate_files/1beadProtSci2010.lt diff --git a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1beadProtSci2010/moltemplate_files/README.sh b/tools/moltemplate/examples/coarse_grained/protein_folding_examples/1beadProtSci2010/moltemplate_files/README.sh similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1beadProtSci2010/moltemplate_files/README.sh rename to tools/moltemplate/examples/coarse_grained/protein_folding_examples/1beadProtSci2010/moltemplate_files/README.sh diff --git a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1beadProtSci2010/moltemplate_files/other_implementations/README.TXT b/tools/moltemplate/examples/coarse_grained/protein_folding_examples/1beadProtSci2010/moltemplate_files/other_implementations/README.txt similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1beadProtSci2010/moltemplate_files/other_implementations/README.TXT rename to tools/moltemplate/examples/coarse_grained/protein_folding_examples/1beadProtSci2010/moltemplate_files/other_implementations/README.txt diff --git a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1beadProtSci2010/moltemplate_files/other_implementations/charmm/1beadProtSci2010.lt b/tools/moltemplate/examples/coarse_grained/protein_folding_examples/1beadProtSci2010/moltemplate_files/other_implementations/charmm/1beadProtSci2010.lt similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1beadProtSci2010/moltemplate_files/other_implementations/charmm/1beadProtSci2010.lt rename to tools/moltemplate/examples/coarse_grained/protein_folding_examples/1beadProtSci2010/moltemplate_files/other_implementations/charmm/1beadProtSci2010.lt diff --git a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1beadProtSci2010/moltemplate_files/other_implementations/class2/1beadProtSci2010.lt b/tools/moltemplate/examples/coarse_grained/protein_folding_examples/1beadProtSci2010/moltemplate_files/other_implementations/class2/1beadProtSci2010.lt similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1beadProtSci2010/moltemplate_files/other_implementations/class2/1beadProtSci2010.lt rename to tools/moltemplate/examples/coarse_grained/protein_folding_examples/1beadProtSci2010/moltemplate_files/other_implementations/class2/1beadProtSci2010.lt diff --git a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1beadProtSci2010/moltemplate_files/system.lt b/tools/moltemplate/examples/coarse_grained/protein_folding_examples/1beadProtSci2010/moltemplate_files/system.lt similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1beadProtSci2010/moltemplate_files/system.lt rename to tools/moltemplate/examples/coarse_grained/protein_folding_examples/1beadProtSci2010/moltemplate_files/system.lt diff --git a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1beadProtSci2010/run.in.min b/tools/moltemplate/examples/coarse_grained/protein_folding_examples/1beadProtSci2010/run.in.min similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1beadProtSci2010/run.in.min rename to tools/moltemplate/examples/coarse_grained/protein_folding_examples/1beadProtSci2010/run.in.min diff --git a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1beadProtSci2010/run.in.nvt b/tools/moltemplate/examples/coarse_grained/protein_folding_examples/1beadProtSci2010/run.in.nvt similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1beadProtSci2010/run.in.nvt rename to tools/moltemplate/examples/coarse_grained/protein_folding_examples/1beadProtSci2010/run.in.nvt diff --git a/tools/moltemplate/examples/coarse_grained_examples/vesicle_Brannigan2005+Bellesia2010/README.TXT b/tools/moltemplate/examples/coarse_grained/vesicle_Brannigan2005+Bellesia2010/README.txt similarity index 93% rename from tools/moltemplate/examples/coarse_grained_examples/vesicle_Brannigan2005+Bellesia2010/README.TXT rename to tools/moltemplate/examples/coarse_grained/vesicle_Brannigan2005+Bellesia2010/README.txt index 305d00d6368bba4529af9503f518d88fa12f1b3e..990c6f2f566897b20b2834a13cf598bcfd28ed34 100644 --- a/tools/moltemplate/examples/coarse_grained_examples/vesicle_Brannigan2005+Bellesia2010/README.TXT +++ b/tools/moltemplate/examples/coarse_grained/vesicle_Brannigan2005+Bellesia2010/README.txt @@ -9,7 +9,7 @@ Physical Review E, Vol 72, 011915 (2005) (The DLPC model is a truncated version of DPPC. Modifications discussed below.) The protein model is described here: - G. Bellesia, AI Jewett, and J-E Shea, + G. Bellesia, AI Jewett, and J-E Shea, Protein Science, Vol19 141-154 (2010) --- PREREQUISITES: --- @@ -21,15 +21,15 @@ (Moltemplate does not come with an easy way to generate spherically-symmetric structures, so I used the PACKMOL program to move the molecules into position.) -2) This example requires the "dihedral_style fourier", which is currently +2) This example requires the "dihedral_style fourier", which is currently in the USER-MISC package. Build LAMMPS with this package enabled using make yes-user-misc -before compiling LAMMPS. +before compiling LAMMPS. (See http://lammps.sandia.gov/doc/Section_start.html#start_3 for details.) 3) This example may require additional features to be added to LAMMPS. If LAMMPS complains about an "Invalid pair_style", then - a) download the "additional_lammps_code" from + a) download the "additional_lammps_code" from http://moltemplate.org (upper-left corner menu) b) unpack it c) copy the .cpp and .h files to the src folding of your lammps installation. @@ -56,15 +56,15 @@ and: M.C. Watson, E.S. Penev, P.M. Welch, and F.L.H. Brown J. Chem. Phys. 135, 244701 (2011) -As in Watson(JCP 2011), rigid bond-length constraints -have been replaced by harmonic bonds. +As in Watson(JCP 2011), rigid bond-length constraints +have been replaced by harmonic bonds. -A truncated version of this lipid (named "DLPC") has also been added. -The bending stiffness of each lipid has been increased to compensate -for the additional disorder resulting from mixing two different types +A truncated version of this lipid (named "DLPC") has also been added. +The bending stiffness of each lipid has been increased to compensate +for the additional disorder resulting from mixing two different types of lipids together. (Otherwise pores appear.) -Unlike the original "DPPC" molecule model, the new "DPPC" and "DLPC" models -have not been carefully parameterized to reproduce the correct behavior in +Unlike the original "DPPC" molecule model, the new "DPPC" and "DLPC" models +have not been carefully parameterized to reproduce the correct behavior in a lipid bilayer mixture. -- Interactions between the proteins and lipids -- diff --git a/tools/moltemplate/examples/coarse_grained_examples/vesicle_Brannigan2005+Bellesia2010/README_WARNING.TXT b/tools/moltemplate/examples/coarse_grained/vesicle_Brannigan2005+Bellesia2010/README_WARNING.txt similarity index 91% rename from tools/moltemplate/examples/coarse_grained_examples/vesicle_Brannigan2005+Bellesia2010/README_WARNING.TXT rename to tools/moltemplate/examples/coarse_grained/vesicle_Brannigan2005+Bellesia2010/README_WARNING.txt index f11c438ad48bb56b6765b47fe0ae1d116c230a0e..f1b1904a8d43aee2e8201021e922dce2b48dcd9e 100644 --- a/tools/moltemplate/examples/coarse_grained_examples/vesicle_Brannigan2005+Bellesia2010/README_WARNING.TXT +++ b/tools/moltemplate/examples/coarse_grained/vesicle_Brannigan2005+Bellesia2010/README_WARNING.txt @@ -1,20 +1,20 @@ WARNING: - This is not a realistic simulation of proteins in a lipid membrane. This -example was only intented to be a technical demonstration to show how to -combine totally different kinds of coarse-grained molecules (with different -kinds of force-fields) together in the same simulation in LAMMPS. Tuning the + This is not a realistic simulation of proteins in a lipid membrane. This +example was only intented to be a technical demonstration to show how to +combine totally different kinds of coarse-grained molecules (with different +kinds of force-fields) together in the same simulation in LAMMPS. Tuning the force-field parameters to get realistic results was not the goal. I did -not take the extra time to do this. If you have suggestions for changes, +not take the extra time to do this. If you have suggestions for changes, please email me (jewett.aij at gmail dot com). - In addition, I have noticed that newer versions of PACKMOL do not + In addition, I have noticed that newer versions of PACKMOL do not always succeed at generating a spherical vesicle in a reasonable amount of time. -(You may have to play with the .inp files in the packmol_files directory +(You may have to play with the .inp files in the packmol_files directory to get PACKMOL to produce any files at all. -(NOTE: This example also demonstrantes how to use an external program - ("packmol") to generate the coordinates for the atoms in the system. +(NOTE: This example also demonstrantes how to use an external program + ("packmol") to generate the coordinates for the atoms in the system. PLEASE USE "packmol", NOT "ppackmol". -the parallel version of "packmol". This is because "ppackmol" is more likely to get caught in infinite loops.) diff --git a/tools/moltemplate/examples/coarse_grained_examples/vesicle_Brannigan2005+Bellesia2010/README_run.sh b/tools/moltemplate/examples/coarse_grained/vesicle_Brannigan2005+Bellesia2010/README_run.sh similarity index 99% rename from tools/moltemplate/examples/coarse_grained_examples/vesicle_Brannigan2005+Bellesia2010/README_run.sh rename to tools/moltemplate/examples/coarse_grained/vesicle_Brannigan2005+Bellesia2010/README_run.sh index ab62f6fb595e41eb5e96814eb2d9a3077a5a47fa..fcc87a6bf487efa59032ba1ca12dd76989c0243f 100755 --- a/tools/moltemplate/examples/coarse_grained_examples/vesicle_Brannigan2005+Bellesia2010/README_run.sh +++ b/tools/moltemplate/examples/coarse_grained/vesicle_Brannigan2005+Bellesia2010/README_run.sh @@ -3,7 +3,7 @@ # The "run.in.nvt" file is a LAMMPS input script containing # references to the input scripts and data files # you hopefully have created earlier with MOLTEMPLATE and PACKMOL: -# system.in.init, system.in.settings, system.in.coords, system.data, +# system.in.init, system.in.settings, system.in.coords, system.data, # and table_int.dat # If not, carry out the instructions in "README_setup.sh". # diff --git a/tools/moltemplate/examples/coarse_grained_examples/vesicle_Brannigan2005+Bellesia2010/README_setup.sh b/tools/moltemplate/examples/coarse_grained/vesicle_Brannigan2005+Bellesia2010/README_setup.sh similarity index 92% rename from tools/moltemplate/examples/coarse_grained_examples/vesicle_Brannigan2005+Bellesia2010/README_setup.sh rename to tools/moltemplate/examples/coarse_grained/vesicle_Brannigan2005+Bellesia2010/README_setup.sh index f695f6d0ef0abb44d6b70217fc6bbdad5655bc0f..fa3986e7377936e272399362b392b3245473c736 100755 --- a/tools/moltemplate/examples/coarse_grained_examples/vesicle_Brannigan2005+Bellesia2010/README_setup.sh +++ b/tools/moltemplate/examples/coarse_grained/vesicle_Brannigan2005+Bellesia2010/README_setup.sh @@ -4,7 +4,11 @@ # First, generate the coordinates (the "system.xyz" file). # (This can be a very slow process.) - +# check if packmol exists before running +if ! hash packmol 2>/dev/null; then + echo "packmol not found. This example cannot be run." + exit 1 +fi cd packmol_files @@ -28,7 +32,7 @@ cd packmol_files # Step3 creates a file named "step3_outerlayer.xyz" containing the coordinates - # in all the atoms of all the molecules. Later we will run moltemplate.sh + # in all the atoms of all the molecules. Later we will run moltemplate.sh # using the "-xyz ../system.xyz" command line argument. That will instruct # moltemplate to look for a file named "system.xyz" in the parent directory. # So I rename the "step3_outerlayer.xyz" file to "system.xyz", and move it @@ -46,19 +50,19 @@ cd moltemplate_files moltemplate.sh -xyz ../system.xyz system.lt - # This will generate various files with names ending in *.in* and *.data. - # These files are the input files directly read by LAMMPS. Move them to + # This will generate various files with names ending in *.in* and *.data. + # These files are the input files directly read by LAMMPS. Move them to # the parent directory (or wherever you plan to run the simulation). mv -f system.in* system.data ../ - # The "table_int.dat" file contains tabular data for the lipid INT-INT atom + # The "table_int.dat" file contains tabular data for the lipid INT-INT atom # 1/r^2 interaction. We need it too. (This slows down the simulation by x2, # so I might look for a way to get rid of it later.) cp -f table_int.dat ../ # Optional: - # The "./output_ttree/" directory is full of temporary files generated by + # The "./output_ttree/" directory is full of temporary files generated by # moltemplate. They can be useful for debugging, but are usually thrown away. rm -rf output_ttree/ diff --git a/tools/moltemplate/examples/coarse_grained/vesicle_Brannigan2005+Bellesia2010/README_visualize.txt b/tools/moltemplate/examples/coarse_grained/vesicle_Brannigan2005+Bellesia2010/README_visualize.txt new file mode 100644 index 0000000000000000000000000000000000000000..a3e3ed620ec8b32fb6da484368dc3fc299bad6de --- /dev/null +++ b/tools/moltemplate/examples/coarse_grained/vesicle_Brannigan2005+Bellesia2010/README_visualize.txt @@ -0,0 +1,87 @@ + + ------- To view a lammps trajectory in VMD -------- + + +1) Build a PSF file for use in viewing with VMD. + +This step works with VMD 1.9 and topotools 1.2. +(Older versions, like VMD 1.8.6, don't support this.) + + +a) Start VMD +b) Menu Extensions->Tk Console +c) Enter: + +(I assume that the the DATA file is called "system.data") + + topo readlammpsdata system.data full + animate write psf system.psf + +2) + +Later, to Load a trajectory in VMD: + + Start VMD + Select menu: File->New Molecule + -Browse to select the PSF file you created above, and load it. + (Don't close the window yet.) + -Browse to select the trajectory file. + If necessary, for "file type" select: "LAMMPS Trajectory" + Load it. + + ---- A note on trajectory format: ----- +If the trajectory is a DUMP file, then make sure the it contains the +information you need for pbctools (see below. I've been using this +command in my LAMMPS scripts to create the trajectories: + + dump 1 all custom 5000 DUMP_FILE.lammpstrj id mol type x y z ix iy iz + +It's a good idea to use an atom_style which supports molecule-ID numbers +so that you can assign a molecule-ID number to each atom. (I think this +is needed to wrap atom coordinates without breaking molecules in half.) + +Of course, you don't have to save your trajectories in DUMP format, +(other formats like DCD work fine) I just mention dump files +because these are the files I'm familiar with. + +3) ----- Wrap the coordinates to the unit cell + (without cutting the molecules in half) + +a) Start VMD +b) Load the trajectory in VMD (see above) +c) Menu Extensions->Tk Console +d) Try entering these commands: + + pbc wrap -compound res -all + pbc box + + ----- Optional ---- + Sometimes the solvent or membrane obscures the view of the solute. + It can help to shift the location of the periodic boundary box + To shift the box in the y direction (for example) do this: + + pbc wrap -compound res -all -shiftcenterrel {0.0 0.15 0.0} + pbc box -shiftcenterrel {0.0 0.15 0.0} + + Distances are measured in units of box-length fractions, not Angstroms. + + Alternately if you have a solute whose atoms are all of type 1, + then you can also try this to center the box around it: + + pbc wrap -sel type=1 -all -centersel type=2 -center com + +4) + You should check if your periodic boundary conditions are too small. + To do that: + select Graphics->Representations menu option + click on the "Periodic" tab, and + click on the "+x", "-x", "+y", "-y", "+z", "-z" checkboxes. + +5) Optional: If you like, change the atom types in the PSF file so + that VMD recognizes the atom types, use something like: + +sed -e 's/ 1 1 / C C /g' < system.psf > temp1.psf +sed -e 's/ 2 2 / H H /g' < temp1.psf > temp2.psf +sed -e 's/ 3 3 / P P /g' < temp2.psf > system.psf + +(If you do this, it might effect step 2 above.) diff --git a/tools/moltemplate/examples/coarse_grained_examples/vesicle_Brannigan2005+Bellesia2010/images/vesicle_membrane+protein_L.jpg b/tools/moltemplate/examples/coarse_grained/vesicle_Brannigan2005+Bellesia2010/images/vesicle_membrane+protein_L.jpg similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/vesicle_Brannigan2005+Bellesia2010/images/vesicle_membrane+protein_L.jpg rename to tools/moltemplate/examples/coarse_grained/vesicle_Brannigan2005+Bellesia2010/images/vesicle_membrane+protein_L.jpg diff --git a/tools/moltemplate/examples/coarse_grained_examples/vesicle_Brannigan2005+Bellesia2010/moltemplate_files/1beadProtSci2010.lt b/tools/moltemplate/examples/coarse_grained/vesicle_Brannigan2005+Bellesia2010/moltemplate_files/1beadProtSci2010.lt similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/vesicle_Brannigan2005+Bellesia2010/moltemplate_files/1beadProtSci2010.lt rename to tools/moltemplate/examples/coarse_grained/vesicle_Brannigan2005+Bellesia2010/moltemplate_files/1beadProtSci2010.lt diff --git a/tools/moltemplate/examples/coarse_grained_examples/vesicle_Brannigan2005+Bellesia2010/moltemplate_files/1beadProtSci2010_variations.lt b/tools/moltemplate/examples/coarse_grained/vesicle_Brannigan2005+Bellesia2010/moltemplate_files/1beadProtSci2010_variations.lt similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/vesicle_Brannigan2005+Bellesia2010/moltemplate_files/1beadProtSci2010_variations.lt rename to tools/moltemplate/examples/coarse_grained/vesicle_Brannigan2005+Bellesia2010/moltemplate_files/1beadProtSci2010_variations.lt diff --git a/tools/moltemplate/examples/coarse_grained_examples/vesicle_Brannigan2005+Bellesia2010/moltemplate_files/CGLipidBr2005.lt b/tools/moltemplate/examples/coarse_grained/vesicle_Brannigan2005+Bellesia2010/moltemplate_files/CGLipidBr2005.lt similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/vesicle_Brannigan2005+Bellesia2010/moltemplate_files/CGLipidBr2005.lt rename to tools/moltemplate/examples/coarse_grained/vesicle_Brannigan2005+Bellesia2010/moltemplate_files/CGLipidBr2005.lt diff --git a/tools/moltemplate/examples/coarse_grained_examples/vesicle_Brannigan2005+Bellesia2010/moltemplate_files/README.sh b/tools/moltemplate/examples/coarse_grained/vesicle_Brannigan2005+Bellesia2010/moltemplate_files/README.sh similarity index 98% rename from tools/moltemplate/examples/coarse_grained_examples/vesicle_Brannigan2005+Bellesia2010/moltemplate_files/README.sh rename to tools/moltemplate/examples/coarse_grained/vesicle_Brannigan2005+Bellesia2010/moltemplate_files/README.sh index b0de6373796af24b96e5c8537f51b474d394ef4d..a5590ffa00a74d151277c6926d6eb263f4e37be6 100755 --- a/tools/moltemplate/examples/coarse_grained_examples/vesicle_Brannigan2005+Bellesia2010/moltemplate_files/README.sh +++ b/tools/moltemplate/examples/coarse_grained/vesicle_Brannigan2005+Bellesia2010/moltemplate_files/README.sh @@ -1,5 +1,5 @@ # This example shows how to build a multicomponent spherical vesicle. -# The lipid bilayer is composed of two different lipids (DPPC and DLPC), +# The lipid bilayer is composed of two different lipids (DPPC and DLPC), # The vesicle contains 120 trans-membrane protein inclusions. # # ---------------- Prerequisites: ------------------ diff --git a/tools/moltemplate/examples/coarse_grained_examples/vesicle_Brannigan2005+Bellesia2010/moltemplate_files/calc_table/calc_CGLipidTableINTvsINT.py b/tools/moltemplate/examples/coarse_grained/vesicle_Brannigan2005+Bellesia2010/moltemplate_files/calc_table/calc_CGLipidTableINTvsINT.py similarity index 95% rename from tools/moltemplate/examples/coarse_grained_examples/vesicle_Brannigan2005+Bellesia2010/moltemplate_files/calc_table/calc_CGLipidTableINTvsINT.py rename to tools/moltemplate/examples/coarse_grained/vesicle_Brannigan2005+Bellesia2010/moltemplate_files/calc_table/calc_CGLipidTableINTvsINT.py index 0d09e4d02e90bb16b4955cdcda45a6509e7da025..1158a9cf753c01cf9e925412f97dfdc55033697d 100755 --- a/tools/moltemplate/examples/coarse_grained_examples/vesicle_Brannigan2005+Bellesia2010/moltemplate_files/calc_table/calc_CGLipidTableINTvsINT.py +++ b/tools/moltemplate/examples/coarse_grained/vesicle_Brannigan2005+Bellesia2010/moltemplate_files/calc_table/calc_CGLipidTableINTvsINT.py @@ -1,7 +1,7 @@ #!/usr/bin/env python # Calculate a table of pairwise energies and forces between "INT" atoms -# in the lipid membrane model described in +# in the lipid membrane model described in # Brannigan et al, Phys Rev E, 72, 011915 (2005) # The energy of this interaction U(r) = eps*(0.4*(sigma/r)^12 - 3.0*(sigma/r)^2) # However it is truncated at rc2 = 22.5 (shifted upwards to maintain continuity) diff --git a/tools/moltemplate/examples/coarse_grained_examples/vesicle_Brannigan2005+Bellesia2010/moltemplate_files/calc_table/version_charmm_cutoff/calc_table.py b/tools/moltemplate/examples/coarse_grained/vesicle_Brannigan2005+Bellesia2010/moltemplate_files/calc_table/version_charmm_cutoff/calc_table.py similarity index 97% rename from tools/moltemplate/examples/coarse_grained_examples/vesicle_Brannigan2005+Bellesia2010/moltemplate_files/calc_table/version_charmm_cutoff/calc_table.py rename to tools/moltemplate/examples/coarse_grained/vesicle_Brannigan2005+Bellesia2010/moltemplate_files/calc_table/version_charmm_cutoff/calc_table.py index 32147e444a67c4ad5604e7bd134e11b438fed524..e7f0fe462e1ad095f5d918d9a3a35dfbf5c5a011 100755 --- a/tools/moltemplate/examples/coarse_grained_examples/vesicle_Brannigan2005+Bellesia2010/moltemplate_files/calc_table/version_charmm_cutoff/calc_table.py +++ b/tools/moltemplate/examples/coarse_grained/vesicle_Brannigan2005+Bellesia2010/moltemplate_files/calc_table/version_charmm_cutoff/calc_table.py @@ -1,7 +1,7 @@ #!/usr/bin/env python # Calculate a table of pairwise energies and forces between "INT" atoms -# in the lipid membrane model described in +# in the lipid membrane model described in # Brannigan et al, Phys Rev E, 72, 011915 (2005) # The energy of this interaction U(r) = eps*(0.4*(sigma/r)^12 - 3.0*(sigma/r)^2) # I realized later this is not what we want because although energy is conserved @@ -12,12 +12,12 @@ # Calculate and print a def S(r, rc1, rc2, derivative=False): - """ + """ Calculate the switching function S(r) which decays continuously between 1 and 0 in the range from rc1 to rc2 (rc2>rc1): S(r) = (rc2^2 - r^2)^2 * (rc2^2 + 2*r^2 - 3*rc1^2) / (rc2^2-rc1^2)^3 I'm using the same smoothing/switching cutoff function used by the CHARMM - force-fields. (I'm even using the same code to implement it, taken + force-fields. (I'm even using the same code to implement it, taken from lammps charmm/coul/charmm pair style, rewritten in python.) """ diff --git a/tools/moltemplate/examples/coarse_grained_examples/vesicle_Brannigan2005+Bellesia2010/moltemplate_files/system.lt b/tools/moltemplate/examples/coarse_grained/vesicle_Brannigan2005+Bellesia2010/moltemplate_files/system.lt similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/vesicle_Brannigan2005+Bellesia2010/moltemplate_files/system.lt rename to tools/moltemplate/examples/coarse_grained/vesicle_Brannigan2005+Bellesia2010/moltemplate_files/system.lt diff --git a/tools/moltemplate/examples/coarse_grained_examples/vesicle_Brannigan2005+Bellesia2010/moltemplate_files/table_int.dat b/tools/moltemplate/examples/coarse_grained/vesicle_Brannigan2005+Bellesia2010/moltemplate_files/table_int.dat similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/vesicle_Brannigan2005+Bellesia2010/moltemplate_files/table_int.dat rename to tools/moltemplate/examples/coarse_grained/vesicle_Brannigan2005+Bellesia2010/moltemplate_files/table_int.dat diff --git a/tools/moltemplate/examples/coarse_grained_examples/vesicle_Brannigan2005+Bellesia2010/packmol_files/README.sh b/tools/moltemplate/examples/coarse_grained/vesicle_Brannigan2005+Bellesia2010/packmol_files/README.sh similarity index 98% rename from tools/moltemplate/examples/coarse_grained_examples/vesicle_Brannigan2005+Bellesia2010/packmol_files/README.sh rename to tools/moltemplate/examples/coarse_grained/vesicle_Brannigan2005+Bellesia2010/packmol_files/README.sh index 2fe282995aa849030b79f5248babb96215c25d24..ade428103506b8568867b498fda66b874af7bdd4 100755 --- a/tools/moltemplate/examples/coarse_grained_examples/vesicle_Brannigan2005+Bellesia2010/packmol_files/README.sh +++ b/tools/moltemplate/examples/coarse_grained/vesicle_Brannigan2005+Bellesia2010/packmol_files/README.sh @@ -16,14 +16,14 @@ packmol < step3_outerlayer.inp # this step builds the outer monolayer # It takes ~4 hours -# NOTE: PLEASE USE "packmol", NOT "ppackmol". ("ppackmol" is the -# parallel-version of packmol using OpemMP. This example has NOT been +# NOTE: PLEASE USE "packmol", NOT "ppackmol". ("ppackmol" is the +# parallel-version of packmol using OpemMP. This example has NOT been # tested with "ppackmol". Our impression was that the "ppackmol" # version is more likely to get stuck in an infinite loop. -Andrew 2015-8) # Step3 creates a file named "step3_outerlayer.xyz" containing the coordinates -# in all the atoms of all the molecules. Later we will run moltemplate.sh +# in all the atoms of all the molecules. Later we will run moltemplate.sh # using the "-xyz ../system.xyz" command line argument. That will instruct # moltemplate to look for a file named "system.xyz" in the parent directory. # So I rename the "step3_outerlayer.xyz" file to "system.xyz", and move it diff --git a/tools/moltemplate/examples/coarse_grained_examples/vesicle_Brannigan2005+Bellesia2010/packmol_files/step1_proteins.inp b/tools/moltemplate/examples/coarse_grained/vesicle_Brannigan2005+Bellesia2010/packmol_files/step1_proteins.inp similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/vesicle_Brannigan2005+Bellesia2010/packmol_files/step1_proteins.inp rename to tools/moltemplate/examples/coarse_grained/vesicle_Brannigan2005+Bellesia2010/packmol_files/step1_proteins.inp diff --git a/tools/moltemplate/examples/coarse_grained_examples/vesicle_Brannigan2005+Bellesia2010/packmol_files/step2_innerlayer.inp b/tools/moltemplate/examples/coarse_grained/vesicle_Brannigan2005+Bellesia2010/packmol_files/step2_innerlayer.inp similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/vesicle_Brannigan2005+Bellesia2010/packmol_files/step2_innerlayer.inp rename to tools/moltemplate/examples/coarse_grained/vesicle_Brannigan2005+Bellesia2010/packmol_files/step2_innerlayer.inp diff --git a/tools/moltemplate/examples/coarse_grained_examples/vesicle_Brannigan2005+Bellesia2010/packmol_files/step3_outerlayer.inp b/tools/moltemplate/examples/coarse_grained/vesicle_Brannigan2005+Bellesia2010/packmol_files/step3_outerlayer.inp similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/vesicle_Brannigan2005+Bellesia2010/packmol_files/step3_outerlayer.inp rename to tools/moltemplate/examples/coarse_grained/vesicle_Brannigan2005+Bellesia2010/packmol_files/step3_outerlayer.inp diff --git a/tools/moltemplate/examples/coarse_grained_examples/vesicle_Brannigan2005+Bellesia2010/run.in.min b/tools/moltemplate/examples/coarse_grained/vesicle_Brannigan2005+Bellesia2010/run.in.min similarity index 100% rename from tools/moltemplate/examples/coarse_grained_examples/vesicle_Brannigan2005+Bellesia2010/run.in.min rename to tools/moltemplate/examples/coarse_grained/vesicle_Brannigan2005+Bellesia2010/run.in.min diff --git a/tools/moltemplate/examples/coarse_grained_examples/vesicle_Brannigan2005+Bellesia2010/run.in.nvt b/tools/moltemplate/examples/coarse_grained/vesicle_Brannigan2005+Bellesia2010/run.in.nvt similarity index 93% rename from tools/moltemplate/examples/coarse_grained_examples/vesicle_Brannigan2005+Bellesia2010/run.in.nvt rename to tools/moltemplate/examples/coarse_grained/vesicle_Brannigan2005+Bellesia2010/run.in.nvt index 253c0426705b312fa0ed6fc549c9a81f3b19195e..dee8526a01fd33445c86f895447ac2949bdfef05 100644 --- a/tools/moltemplate/examples/coarse_grained_examples/vesicle_Brannigan2005+Bellesia2010/run.in.nvt +++ b/tools/moltemplate/examples/coarse_grained/vesicle_Brannigan2005+Bellesia2010/run.in.nvt @@ -8,6 +8,9 @@ # 3) Unpack it # 4) copy the .cpp and .h files to the src folding of your lammps installation. # 5) Compile LAMMPS. +# 6) Minimize the system using: +# lmp_mpi -i run.in.npt +# (assuming "lmp_mpi" is the name of the lammps binary you created in step 5) # # If LAMMPS complains about an "Invalid pair_style", or "Invalid dihedral_style" # then you made a mistake in the instructions above. diff --git a/tools/moltemplate/examples/coarse_grained_examples/3bodyWater+hydrocarbons_MW+TraPPE/README.TXT b/tools/moltemplate/examples/coarse_grained_examples/3bodyWater+hydrocarbons_MW+TraPPE/README.TXT deleted file mode 100644 index 33eeddda6e4344ea5657fce729b39605adab1392..0000000000000000000000000000000000000000 --- a/tools/moltemplate/examples/coarse_grained_examples/3bodyWater+hydrocarbons_MW+TraPPE/README.TXT +++ /dev/null @@ -1,28 +0,0 @@ -# -------- REQUIREMENTS: --------- -# 1) This example requires the "MANYBODY" package. -# As of 2012-9, it is included by default, but this may change in the future. -# If lammps complains of a missing pair style enter "make yes-MANYBODY" -# into the shell before compiling lammps. For details see: -# http://lammps.sandia.gov/doc/Section_start.html#start_3 -This is a relatively complex example containing two different types of -molecules, and a hybrid of Lennard-Jones and 3-body SW "pair" styles. - -The cyclododecane molecule uses the -TraPPE force field for hydrocarbon chains. -The parameters for the TraPPE force field are -in a file named "trappe1998.lt" which should be -located in the MOLTEMPLATE_PATH. -(See moltemplate installation instructions.) - -The water solvent is implemented using the 3-body single-particle -coarse-grained "mW" water model: -Molinero, V. and Moore, E.B., J. Phys. Chem. B 2009, 113, 4008-4016 - -More detailed instructions on how to build LAMMPS input files and -run a short simulation are provided in other README files. - -step 1) -README_setup.sh - -step 2) -README_run.sh diff --git a/tools/moltemplate/examples/coarse_grained_examples/3bodyWater+hydrocarbons_MW+TraPPE/README_setup.sh b/tools/moltemplate/examples/coarse_grained_examples/3bodyWater+hydrocarbons_MW+TraPPE/README_setup.sh deleted file mode 100755 index cb4d9089841ecb60b4ab15e589dc10806c0008cf..0000000000000000000000000000000000000000 --- a/tools/moltemplate/examples/coarse_grained_examples/3bodyWater+hydrocarbons_MW+TraPPE/README_setup.sh +++ /dev/null @@ -1,25 +0,0 @@ - - -# Create LAMMPS input files this way: -cd moltemplate_files - - # run moltemplate - - moltemplate.sh -a "@atom:/WatMW/mW 1" system.lt - - # Here we just want to make sure that the "mW" atom type is assigned to - # number "1". It should be by default, so usually you can leave out - # -a "@atom:/WatMW/mW 1". - - # This will generate various files with names ending in *.in* and *.data. - # These files are the input files directly read by LAMMPS. Move them to - # the parent directory (or wherever you plan to run the simulation). - - mv -f system.in* system.data ../ - - # Optional: - # The "./output_ttree/" directory is full of temporary files generated by - # moltemplate. They can be useful for debugging, but are usually thrown away. - rm -rf output_ttree/ - -cd ../ diff --git a/tools/moltemplate/examples/coarse_grained_examples/3bodyWater+hydrocarbons_MW+TraPPE/moltemplate_files/cyclododecane.lt b/tools/moltemplate/examples/coarse_grained_examples/3bodyWater+hydrocarbons_MW+TraPPE/moltemplate_files/cyclododecane.lt deleted file mode 100644 index ceaa1c69d87f0689ab9001a639a71c840289cd34..0000000000000000000000000000000000000000 --- a/tools/moltemplate/examples/coarse_grained_examples/3bodyWater+hydrocarbons_MW+TraPPE/moltemplate_files/cyclododecane.lt +++ /dev/null @@ -1,55 +0,0 @@ -import "trappe1998.lt" - -# The "trappe1998.lt" file is usually located in $MOLTEMPLATE_PATH (and is -# distributed with moltemplate. See the "Installation" section in the manual.) -# It contains definitions of the atoms "CH2", "CH3", and "CH4", as well -# as "saturated" bonds, and the parameters for (bonded/nonbonded) -# interactions between these atoms (all enclosed within the "TraPPE" namespace). - - -Cyclododecane { - - write('Data Atoms') { - $atom:C1 $mol:. @atom:TraPPE/CH2 0.0 0.00000 2.94118 0.0 - $atom:C2 $mol:. @atom:TraPPE/CH2 0.0 0.00000 2.54714 1.47059 - $atom:C3 $mol:. @atom:TraPPE/CH2 0.0 0.00000 1.47059 2.54714 - $atom:C4 $mol:. @atom:TraPPE/CH2 0.0 0.00000 0.0 2.94118 - $atom:C5 $mol:. @atom:TraPPE/CH2 0.0 0.00000 -1.47059 2.54714 - $atom:C6 $mol:. @atom:TraPPE/CH2 0.0 0.00000 -2.54714 1.47059 - $atom:C7 $mol:. @atom:TraPPE/CH2 0.0 0.00000 -2.94118 0.0 - $atom:C8 $mol:. @atom:TraPPE/CH2 0.0 0.00000 -2.54714 -1.47059 - $atom:C9 $mol:. @atom:TraPPE/CH2 0.0 0.00000 -1.47059 -2.54714 - $atom:C10 $mol:. @atom:TraPPE/CH2 0.0 0.00000 -0.0 -2.94118 - $atom:C11 $mol:. @atom:TraPPE/CH2 0.0 0.00000 1.47059 -2.54714 - $atom:C12 $mol:. @atom:TraPPE/CH2 0.0 0.00000 2.54714 -1.47059 - } - - # The "." in "$mol:." refers to the current object's molecule ID, - # and "@atom:TraPPE/CH2" refers to the "CH2" atom-type defined in TraPPE - - write('Data Bonds') { - $bond:bond1 @bond:TraPPE/saturated $atom:C1 $atom:C2 - $bond:bond2 @bond:TraPPE/saturated $atom:C2 $atom:C3 - $bond:bond3 @bond:TraPPE/saturated $atom:C3 $atom:C4 - $bond:bond4 @bond:TraPPE/saturated $atom:C4 $atom:C5 - $bond:bond5 @bond:TraPPE/saturated $atom:C5 $atom:C6 - $bond:bond6 @bond:TraPPE/saturated $atom:C6 $atom:C7 - $bond:bond7 @bond:TraPPE/saturated $atom:C7 $atom:C8 - $bond:bond8 @bond:TraPPE/saturated $atom:C8 $atom:C9 - $bond:bond9 @bond:TraPPE/saturated $atom:C9 $atom:C10 - $bond:bond10 @bond:TraPPE/saturated $atom:C10 $atom:C11 - $bond:bond11 @bond:TraPPE/saturated $atom:C11 $atom:C12 - $bond:bond12 @bond:TraPPE/saturated $atom:C12 $atom:C1 - } - -} # Cyclododecane - - -# coordinates in the "Data Atoms" section generated by this python code: -# from math import * -# bond_length=1.54 -# N=12 -# R=(N*bond_length)/(2*pi) -# for i in range(0,N): -# print('$atom:C'+str(i+1)+' $mol:... @atom:TraPPE/CH2 0.0 0.00000 '+ -# str(round(R*cos(i*2*pi/N),5))+' '+str(round(R*sin(i*2*pi/N),5))) diff --git a/tools/moltemplate/examples/coarse_grained_examples/abstract_2bead_heteropolymer/images/polymer.png b/tools/moltemplate/examples/coarse_grained_examples/abstract_2bead_heteropolymer/images/polymer.png deleted file mode 100644 index 304dbdeb9dfeb449299bd1df6b3804075acdaa59..0000000000000000000000000000000000000000 Binary files a/tools/moltemplate/examples/coarse_grained_examples/abstract_2bead_heteropolymer/images/polymer.png and /dev/null differ diff --git a/tools/moltemplate/examples/coarse_grained_examples/abstract_2bead_heteropolymer/images/t=0ns.png b/tools/moltemplate/examples/coarse_grained_examples/abstract_2bead_heteropolymer/images/t=0ns.png deleted file mode 100644 index beadf7e1bb999c282e4bb87e63b51d810f889b20..0000000000000000000000000000000000000000 Binary files a/tools/moltemplate/examples/coarse_grained_examples/abstract_2bead_heteropolymer/images/t=0ns.png and /dev/null differ diff --git a/tools/moltemplate/examples/coarse_grained_examples/abstract_2bead_heteropolymer/images/t=40ns_occ.png b/tools/moltemplate/examples/coarse_grained_examples/abstract_2bead_heteropolymer/images/t=40ns_occ.png deleted file mode 100644 index 49b3c63e5c973ab87aabfd14ca88efeeb463ad80..0000000000000000000000000000000000000000 Binary files a/tools/moltemplate/examples/coarse_grained_examples/abstract_2bead_heteropolymer/images/t=40ns_occ.png and /dev/null differ diff --git a/tools/moltemplate/examples/coarse_grained_examples/abstract_2bead_heteropolymer/images/t=4ns_occ.png b/tools/moltemplate/examples/coarse_grained_examples/abstract_2bead_heteropolymer/images/t=4ns_occ.png deleted file mode 100644 index bd2eb8a27dc138bb97d18f93d863a5cfeb363531..0000000000000000000000000000000000000000 Binary files a/tools/moltemplate/examples/coarse_grained_examples/abstract_2bead_heteropolymer/images/t=4ns_occ.png and /dev/null differ diff --git a/tools/moltemplate/examples/coarse_grained_examples/abstract_2bead_heteropolymer/moltemplate_files/monomers.lt b/tools/moltemplate/examples/coarse_grained_examples/abstract_2bead_heteropolymer/moltemplate_files/monomers.lt deleted file mode 100644 index 98aece5b8f7aa871a10e43a83d171327b3e670fc..0000000000000000000000000000000000000000 --- a/tools/moltemplate/examples/coarse_grained_examples/abstract_2bead_heteropolymer/moltemplate_files/monomers.lt +++ /dev/null @@ -1,86 +0,0 @@ -# In this example, we define two types of molecules: "H" and "P", -# both containing two atoms, whose ids (names) are "ca" and "r", -# and whose atom-types vary. -# -# "H" molecules: "P" molecules: -# -# @HR @PR -# | | -# @CA @CA -# -# Eventually, we will connect multiple "H" and "P" molecules -# together to form a polymer, as shown below: -# -# @HR @HR -# | | -# _@CA_ _@CA_ -# ... -.@CA-' `-@CA-' ` ... -# | | -# @PR @PR -# -# The "H" and "P" molecules both share the same type of -# backbone atom ("CA"), but have their own custom "r" -# sidechain atoms with different properties: -# The "HR" atoms belonging to "H" molecules are attracted to each other. -# The "PR" atoms in "P" molecules are not. - - - - - -import "forcefield.lt" # defines "2beadFF" - - - - - -# Define the "H" monomer type ("H" <--> "hydrophobic") - -H inherits 2beadFF { - # atom-id(name) mol-id atom-type charge x y z - write("Data Atoms") { - $atom:ca $mol:... @atom:CA 0.0 0.000 1.0000 0.0000000 - $atom:r $mol:... @atom:HR 0.0 0.000 4.4000 0.0000000 - } - - write("Data Bond List") { - $bond:cr $atom:ca $atom:r - } - - # This will look up the bond-parameters according to atom type. - # Use "Data Bonds" instead if you prefer to assign the bond type manually: - # write("Data Bonds") { - # $bond:cr @bond:Sidechain $atom:ca $atom:r - # } - -} - - - -# Define the "P" monomer type ("P" <--> "polar") - -P inherits 2beadFF { - - # atom-id(name) mol-id atom-type charge x y z - write("Data Atoms") { - $atom:ca $mol:... @atom:CA 0.0 0.000 1.0000 0.0000000 - $atom:r $mol:... @atom:PR 0.0 0.000 4.4000 0.0000000 - } - - write("Data Bond List") { - $bond:CR $atom:ca $atom:r - } - - # This will look up the bond-parameters according to atom type. - # Use "Data Bonds" instead if you prefer to assign the bond type manually: - # write("Data Bonds") { - # $bond:cr @bond:Sidechain $atom:ca $atom:r - # } - -} - - - -# Note: The "..." in "$mol:..." tells moltemplate that this molecule may -# be a part of a larger molecule, and (if so) to use the larger -# molecule's id number as it's own. diff --git a/tools/moltemplate/examples/coarse_grained_examples/membrane_BranniganPRE2005/README_visualize.txt b/tools/moltemplate/examples/coarse_grained_examples/membrane_BranniganPRE2005/README_visualize.txt deleted file mode 100644 index 019afc1444a48409143b5c170318479ceb27a391..0000000000000000000000000000000000000000 --- a/tools/moltemplate/examples/coarse_grained_examples/membrane_BranniganPRE2005/README_visualize.txt +++ /dev/null @@ -1,87 +0,0 @@ - - ------- To view a lammps trajectory in VMD -------- - - -1) Build a PSF file for use in viewing with VMD. - -This step works with VMD 1.9 and topotools 1.2. -(Older versions, like VMD 1.8.6, don't support this.) - - -a) Start VMD -b) Menu Extensions->Tk Console -c) Enter: - -(I assume that the the DATA file is called "system.data") - - topo readlammpsdata system.data full - animate write psf system.psf - -2) - -Later, to Load a trajectory in VMD: - - Start VMD - Select menu: File->New Molecule - -Browse to select the PSF file you created above, and load it. - (Don't close the window yet.) - -Browse to select the trajectory file. - If necessary, for "file type" select: "LAMMPS Trajectory" - Load it. - - ---- A note on trajectory format: ----- -If the trajectory is a DUMP file, then make sure the it contains the -information you need for pbctools (see below. I've been using this -command in my LAMMPS scripts to create the trajectories: - - dump 1 all custom 5000 DUMP_FILE.lammpstrj id mol type x y z ix iy iz - -It's a good idea to use an atom_style which supports molecule-ID numbers -so that you can assign a molecule-ID number to each atom. (I think this -is needed to wrap atom coordinates without breaking molecules in half.) - -Of course, you don't have to save your trajectories in DUMP format, -(other formats like DCD work fine) I just mention dump files -because these are the files I'm familiar with. - -3) ----- Wrap the coordinates to the unit cell - (without cutting the molecules in half) - -a) Start VMD -b) Load the trajectory in VMD (see above) -c) Menu Extensions->Tk Console -d) Try entering these commands: - - pbc wrap -compound res -all - pbc box - - ----- Optional ---- - Sometimes the solvent or membrane obscures the view of the solute. - It can help to shift the location of the periodic boundary box - To shift the box in the y direction (for example) do this: - - pbc wrap -compound res -all -shiftcenterrel {0.0 0.15 0.0} - pbc box -shiftcenterrel {0.0 0.15 0.0} - - Distances are measured in units of box-length fractions, not Angstroms. - - Alternately if you have a solute whose atoms are all of type 1, - then you can also try this to center the box around it: - - pbc wrap -sel type=1 -all -centersel type=2 -center com - -4) - You should check if your periodic boundary conditions are too small. - To do that: - select Graphics->Representations menu option - click on the "Periodic" tab, and - click on the "+x", "-x", "+y", "-y", "+z", "-z" checkboxes. - -5) Optional: If you like, change the atom types in the PSF file so - that VMD recognizes the atom types, use something like: - -sed -e 's/ 1 1 / C C /g' < system.psf > temp1.psf -sed -e 's/ 2 2 / H H /g' < temp1.psf > temp2.psf -sed -e 's/ 3 3 / P P /g' < temp2.psf > system.psf - -(If you do this, it might effect step 2 above.) diff --git a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+chaperonin/README_visualize.txt b/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+chaperonin/README_visualize.txt deleted file mode 100644 index 019afc1444a48409143b5c170318479ceb27a391..0000000000000000000000000000000000000000 --- a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+chaperonin/README_visualize.txt +++ /dev/null @@ -1,87 +0,0 @@ - - ------- To view a lammps trajectory in VMD -------- - - -1) Build a PSF file for use in viewing with VMD. - -This step works with VMD 1.9 and topotools 1.2. -(Older versions, like VMD 1.8.6, don't support this.) - - -a) Start VMD -b) Menu Extensions->Tk Console -c) Enter: - -(I assume that the the DATA file is called "system.data") - - topo readlammpsdata system.data full - animate write psf system.psf - -2) - -Later, to Load a trajectory in VMD: - - Start VMD - Select menu: File->New Molecule - -Browse to select the PSF file you created above, and load it. - (Don't close the window yet.) - -Browse to select the trajectory file. - If necessary, for "file type" select: "LAMMPS Trajectory" - Load it. - - ---- A note on trajectory format: ----- -If the trajectory is a DUMP file, then make sure the it contains the -information you need for pbctools (see below. I've been using this -command in my LAMMPS scripts to create the trajectories: - - dump 1 all custom 5000 DUMP_FILE.lammpstrj id mol type x y z ix iy iz - -It's a good idea to use an atom_style which supports molecule-ID numbers -so that you can assign a molecule-ID number to each atom. (I think this -is needed to wrap atom coordinates without breaking molecules in half.) - -Of course, you don't have to save your trajectories in DUMP format, -(other formats like DCD work fine) I just mention dump files -because these are the files I'm familiar with. - -3) ----- Wrap the coordinates to the unit cell - (without cutting the molecules in half) - -a) Start VMD -b) Load the trajectory in VMD (see above) -c) Menu Extensions->Tk Console -d) Try entering these commands: - - pbc wrap -compound res -all - pbc box - - ----- Optional ---- - Sometimes the solvent or membrane obscures the view of the solute. - It can help to shift the location of the periodic boundary box - To shift the box in the y direction (for example) do this: - - pbc wrap -compound res -all -shiftcenterrel {0.0 0.15 0.0} - pbc box -shiftcenterrel {0.0 0.15 0.0} - - Distances are measured in units of box-length fractions, not Angstroms. - - Alternately if you have a solute whose atoms are all of type 1, - then you can also try this to center the box around it: - - pbc wrap -sel type=1 -all -centersel type=2 -center com - -4) - You should check if your periodic boundary conditions are too small. - To do that: - select Graphics->Representations menu option - click on the "Periodic" tab, and - click on the "+x", "-x", "+y", "-y", "+z", "-z" checkboxes. - -5) Optional: If you like, change the atom types in the PSF file so - that VMD recognizes the atom types, use something like: - -sed -e 's/ 1 1 / C C /g' < system.psf > temp1.psf -sed -e 's/ 2 2 / H H /g' < temp1.psf > temp2.psf -sed -e 's/ 3 3 / P P /g' < temp2.psf > system.psf - -(If you do this, it might effect step 2 above.) diff --git a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+chaperonin/images/for_visualization/psf_file_created_by_topotools/system.psf b/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+chaperonin/images/for_visualization/psf_file_created_by_topotools/system.psf deleted file mode 100644 index 9e34246f8e60441c0cf516b1261c7e005666b4c4..0000000000000000000000000000000000000000 --- a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+chaperonin/images/for_visualization/psf_file_created_by_topotools/system.psf +++ /dev/null @@ -1,86 +0,0 @@ -PSF - - 1 !NTITLE - REMARKS VMD generated structure x-plor psf file - - 28 !NATOM - 1 1 2 2 0.000000 1.0000 0 - 2 1 1 1 0.000000 1.0000 0 - 3 1 2 2 0.000000 1.0000 0 - 4 1 1 1 0.000000 1.0000 0 - 5 1 2 2 0.000000 1.0000 0 - 6 1 1 1 0.000000 1.0000 0 - 7 1 3 3 0.000000 1.0000 0 - 8 1 3 3 0.000000 1.0000 0 - 9 1 1 1 0.000000 1.0000 0 - 10 1 2 2 0.000000 1.0000 0 - 11 1 1 1 0.000000 1.0000 0 - 12 1 2 2 0.000000 1.0000 0 - 13 1 1 1 0.000000 1.0000 0 - 14 1 2 2 0.000000 1.0000 0 - 15 1 3 3 0.000000 1.0000 0 - 16 1 3 3 0.000000 1.0000 0 - 17 1 3 3 0.000000 1.0000 0 - 18 1 1 1 0.000000 1.0000 0 - 19 1 1 1 0.000000 1.0000 0 - 20 1 2 2 0.000000 1.0000 0 - 21 1 2 2 0.000000 1.0000 0 - 22 1 1 1 0.000000 1.0000 0 - 23 1 1 1 0.000000 1.0000 0 - 24 1 2 2 0.000000 1.0000 0 - 25 1 2 2 0.000000 1.0000 0 - 26 1 1 1 0.000000 1.0000 0 - 27 1 2 2 0.000000 1.0000 0 - 28 2 4 4 0.000000 100.0000 0 - - 26 !NBOND: bonds - 1 2 2 3 3 4 4 5 - 5 6 6 7 7 8 8 9 - 9 10 10 11 11 12 12 13 - 13 14 14 15 15 16 16 17 - 17 18 18 19 19 20 20 21 - 21 22 22 23 23 24 24 25 - 25 26 26 27 - - 25 !NTHETA: angles - 13 14 15 7 8 9 6 7 8 - 16 17 18 15 16 17 2 3 4 - 4 5 6 9 10 11 11 12 13 - 14 15 16 1 2 3 3 4 5 - 10 11 12 12 13 14 25 26 27 - 5 6 7 8 9 10 17 18 19 - 18 19 20 22 23 24 21 22 23 - 19 20 21 20 21 22 23 24 25 - 24 25 26 - - 19 !NPHI: dihedrals - 1 2 3 4 2 3 4 5 - 3 4 5 6 4 5 6 7 - 8 9 10 11 9 10 11 12 - 10 11 12 13 11 12 13 14 - 12 13 14 15 15 16 17 18 - 16 17 18 19 17 18 19 20 - 18 19 20 21 19 20 21 22 - 20 21 22 23 21 22 23 24 - 22 23 24 25 23 24 25 26 - 24 25 26 27 - - 0 !NIMPHI: impropers - - - 0 !NDON: donors - - - 0 !NACC: acceptors - - - 0 !NNB - - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 - - 1 0 !NGRP - 0 0 0 - diff --git a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+minichaperone/README_visualize.txt b/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+minichaperone/README_visualize.txt deleted file mode 100644 index 019afc1444a48409143b5c170318479ceb27a391..0000000000000000000000000000000000000000 --- a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+minichaperone/README_visualize.txt +++ /dev/null @@ -1,87 +0,0 @@ - - ------- To view a lammps trajectory in VMD -------- - - -1) Build a PSF file for use in viewing with VMD. - -This step works with VMD 1.9 and topotools 1.2. -(Older versions, like VMD 1.8.6, don't support this.) - - -a) Start VMD -b) Menu Extensions->Tk Console -c) Enter: - -(I assume that the the DATA file is called "system.data") - - topo readlammpsdata system.data full - animate write psf system.psf - -2) - -Later, to Load a trajectory in VMD: - - Start VMD - Select menu: File->New Molecule - -Browse to select the PSF file you created above, and load it. - (Don't close the window yet.) - -Browse to select the trajectory file. - If necessary, for "file type" select: "LAMMPS Trajectory" - Load it. - - ---- A note on trajectory format: ----- -If the trajectory is a DUMP file, then make sure the it contains the -information you need for pbctools (see below. I've been using this -command in my LAMMPS scripts to create the trajectories: - - dump 1 all custom 5000 DUMP_FILE.lammpstrj id mol type x y z ix iy iz - -It's a good idea to use an atom_style which supports molecule-ID numbers -so that you can assign a molecule-ID number to each atom. (I think this -is needed to wrap atom coordinates without breaking molecules in half.) - -Of course, you don't have to save your trajectories in DUMP format, -(other formats like DCD work fine) I just mention dump files -because these are the files I'm familiar with. - -3) ----- Wrap the coordinates to the unit cell - (without cutting the molecules in half) - -a) Start VMD -b) Load the trajectory in VMD (see above) -c) Menu Extensions->Tk Console -d) Try entering these commands: - - pbc wrap -compound res -all - pbc box - - ----- Optional ---- - Sometimes the solvent or membrane obscures the view of the solute. - It can help to shift the location of the periodic boundary box - To shift the box in the y direction (for example) do this: - - pbc wrap -compound res -all -shiftcenterrel {0.0 0.15 0.0} - pbc box -shiftcenterrel {0.0 0.15 0.0} - - Distances are measured in units of box-length fractions, not Angstroms. - - Alternately if you have a solute whose atoms are all of type 1, - then you can also try this to center the box around it: - - pbc wrap -sel type=1 -all -centersel type=2 -center com - -4) - You should check if your periodic boundary conditions are too small. - To do that: - select Graphics->Representations menu option - click on the "Periodic" tab, and - click on the "+x", "-x", "+y", "-y", "+z", "-z" checkboxes. - -5) Optional: If you like, change the atom types in the PSF file so - that VMD recognizes the atom types, use something like: - -sed -e 's/ 1 1 / C C /g' < system.psf > temp1.psf -sed -e 's/ 2 2 / H H /g' < temp1.psf > temp2.psf -sed -e 's/ 3 3 / P P /g' < temp2.psf > system.psf - -(If you do this, it might effect step 2 above.) diff --git a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+minichaperone/images/for_visualization/psf_file_created_by_topotools/system.psf b/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+minichaperone/images/for_visualization/psf_file_created_by_topotools/system.psf deleted file mode 100644 index b0013ccc62a93b403433c03d1ad616e62575bcb3..0000000000000000000000000000000000000000 --- a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated+minichaperone/images/for_visualization/psf_file_created_by_topotools/system.psf +++ /dev/null @@ -1,476 +0,0 @@ -PSF - - 1 !NTITLE - REMARKS VMD generated structure x-plor psf file - - 224 !NATOM - 1 1 2 2 0.000000 1.0000 0 - 2 1 1 1 0.000000 1.0000 0 - 3 1 2 2 0.000000 1.0000 0 - 4 1 1 1 0.000000 1.0000 0 - 5 1 2 2 0.000000 1.0000 0 - 6 1 1 1 0.000000 1.0000 0 - 7 1 3 3 0.000000 1.0000 0 - 8 1 3 3 0.000000 1.0000 0 - 9 1 1 1 0.000000 1.0000 0 - 10 1 2 2 0.000000 1.0000 0 - 11 1 1 1 0.000000 1.0000 0 - 12 1 2 2 0.000000 1.0000 0 - 13 1 1 1 0.000000 1.0000 0 - 14 1 2 2 0.000000 1.0000 0 - 15 1 3 3 0.000000 1.0000 0 - 16 1 3 3 0.000000 1.0000 0 - 17 1 3 3 0.000000 1.0000 0 - 18 1 1 1 0.000000 1.0000 0 - 19 1 1 1 0.000000 1.0000 0 - 20 1 2 2 0.000000 1.0000 0 - 21 1 2 2 0.000000 1.0000 0 - 22 1 1 1 0.000000 1.0000 0 - 23 1 1 1 0.000000 1.0000 0 - 24 1 2 2 0.000000 1.0000 0 - 25 1 2 2 0.000000 1.0000 0 - 26 1 1 1 0.000000 1.0000 0 - 27 1 2 2 0.000000 1.0000 0 - 28 2 2 2 0.000000 1.0000 0 - 29 2 1 1 0.000000 1.0000 0 - 30 2 2 2 0.000000 1.0000 0 - 31 2 1 1 0.000000 1.0000 0 - 32 2 2 2 0.000000 1.0000 0 - 33 2 1 1 0.000000 1.0000 0 - 34 2 3 3 0.000000 1.0000 0 - 35 2 3 3 0.000000 1.0000 0 - 36 2 1 1 0.000000 1.0000 0 - 37 2 2 2 0.000000 1.0000 0 - 38 2 1 1 0.000000 1.0000 0 - 39 2 2 2 0.000000 1.0000 0 - 40 2 1 1 0.000000 1.0000 0 - 41 2 2 2 0.000000 1.0000 0 - 42 2 3 3 0.000000 1.0000 0 - 43 2 3 3 0.000000 1.0000 0 - 44 2 3 3 0.000000 1.0000 0 - 45 2 1 1 0.000000 1.0000 0 - 46 2 1 1 0.000000 1.0000 0 - 47 2 2 2 0.000000 1.0000 0 - 48 2 2 2 0.000000 1.0000 0 - 49 2 1 1 0.000000 1.0000 0 - 50 2 1 1 0.000000 1.0000 0 - 51 2 2 2 0.000000 1.0000 0 - 52 2 2 2 0.000000 1.0000 0 - 53 2 1 1 0.000000 1.0000 0 - 54 2 2 2 0.000000 1.0000 0 - 55 3 2 2 0.000000 1.0000 0 - 56 3 1 1 0.000000 1.0000 0 - 57 3 2 2 0.000000 1.0000 0 - 58 3 1 1 0.000000 1.0000 0 - 59 3 2 2 0.000000 1.0000 0 - 60 3 1 1 0.000000 1.0000 0 - 61 3 3 3 0.000000 1.0000 0 - 62 3 3 3 0.000000 1.0000 0 - 63 3 1 1 0.000000 1.0000 0 - 64 3 2 2 0.000000 1.0000 0 - 65 3 1 1 0.000000 1.0000 0 - 66 3 2 2 0.000000 1.0000 0 - 67 3 1 1 0.000000 1.0000 0 - 68 3 2 2 0.000000 1.0000 0 - 69 3 3 3 0.000000 1.0000 0 - 70 3 3 3 0.000000 1.0000 0 - 71 3 3 3 0.000000 1.0000 0 - 72 3 1 1 0.000000 1.0000 0 - 73 3 1 1 0.000000 1.0000 0 - 74 3 2 2 0.000000 1.0000 0 - 75 3 2 2 0.000000 1.0000 0 - 76 3 1 1 0.000000 1.0000 0 - 77 3 1 1 0.000000 1.0000 0 - 78 3 2 2 0.000000 1.0000 0 - 79 3 2 2 0.000000 1.0000 0 - 80 3 1 1 0.000000 1.0000 0 - 81 3 2 2 0.000000 1.0000 0 - 82 4 2 2 0.000000 1.0000 0 - 83 4 1 1 0.000000 1.0000 0 - 84 4 2 2 0.000000 1.0000 0 - 85 4 1 1 0.000000 1.0000 0 - 86 4 2 2 0.000000 1.0000 0 - 87 4 1 1 0.000000 1.0000 0 - 88 4 3 3 0.000000 1.0000 0 - 89 4 3 3 0.000000 1.0000 0 - 90 4 1 1 0.000000 1.0000 0 - 91 4 2 2 0.000000 1.0000 0 - 92 4 1 1 0.000000 1.0000 0 - 93 4 2 2 0.000000 1.0000 0 - 94 4 1 1 0.000000 1.0000 0 - 95 4 2 2 0.000000 1.0000 0 - 96 4 3 3 0.000000 1.0000 0 - 97 4 3 3 0.000000 1.0000 0 - 98 4 3 3 0.000000 1.0000 0 - 99 4 1 1 0.000000 1.0000 0 - 100 4 1 1 0.000000 1.0000 0 - 101 4 2 2 0.000000 1.0000 0 - 102 4 2 2 0.000000 1.0000 0 - 103 4 1 1 0.000000 1.0000 0 - 104 4 1 1 0.000000 1.0000 0 - 105 4 2 2 0.000000 1.0000 0 - 106 4 2 2 0.000000 1.0000 0 - 107 4 1 1 0.000000 1.0000 0 - 108 4 2 2 0.000000 1.0000 0 - 109 5 2 2 0.000000 1.0000 0 - 110 5 1 1 0.000000 1.0000 0 - 111 5 2 2 0.000000 1.0000 0 - 112 5 1 1 0.000000 1.0000 0 - 113 5 2 2 0.000000 1.0000 0 - 114 5 1 1 0.000000 1.0000 0 - 115 5 3 3 0.000000 1.0000 0 - 116 5 3 3 0.000000 1.0000 0 - 117 5 1 1 0.000000 1.0000 0 - 118 5 2 2 0.000000 1.0000 0 - 119 5 1 1 0.000000 1.0000 0 - 120 5 2 2 0.000000 1.0000 0 - 121 5 1 1 0.000000 1.0000 0 - 122 5 2 2 0.000000 1.0000 0 - 123 5 3 3 0.000000 1.0000 0 - 124 5 3 3 0.000000 1.0000 0 - 125 5 3 3 0.000000 1.0000 0 - 126 5 1 1 0.000000 1.0000 0 - 127 5 1 1 0.000000 1.0000 0 - 128 5 2 2 0.000000 1.0000 0 - 129 5 2 2 0.000000 1.0000 0 - 130 5 1 1 0.000000 1.0000 0 - 131 5 1 1 0.000000 1.0000 0 - 132 5 2 2 0.000000 1.0000 0 - 133 5 2 2 0.000000 1.0000 0 - 134 5 1 1 0.000000 1.0000 0 - 135 5 2 2 0.000000 1.0000 0 - 136 6 2 2 0.000000 1.0000 0 - 137 6 1 1 0.000000 1.0000 0 - 138 6 2 2 0.000000 1.0000 0 - 139 6 1 1 0.000000 1.0000 0 - 140 6 2 2 0.000000 1.0000 0 - 141 6 1 1 0.000000 1.0000 0 - 142 6 3 3 0.000000 1.0000 0 - 143 6 3 3 0.000000 1.0000 0 - 144 6 1 1 0.000000 1.0000 0 - 145 6 2 2 0.000000 1.0000 0 - 146 6 1 1 0.000000 1.0000 0 - 147 6 2 2 0.000000 1.0000 0 - 148 6 1 1 0.000000 1.0000 0 - 149 6 2 2 0.000000 1.0000 0 - 150 6 3 3 0.000000 1.0000 0 - 151 6 3 3 0.000000 1.0000 0 - 152 6 3 3 0.000000 1.0000 0 - 153 6 1 1 0.000000 1.0000 0 - 154 6 1 1 0.000000 1.0000 0 - 155 6 2 2 0.000000 1.0000 0 - 156 6 2 2 0.000000 1.0000 0 - 157 6 1 1 0.000000 1.0000 0 - 158 6 1 1 0.000000 1.0000 0 - 159 6 2 2 0.000000 1.0000 0 - 160 6 2 2 0.000000 1.0000 0 - 161 6 1 1 0.000000 1.0000 0 - 162 6 2 2 0.000000 1.0000 0 - 163 7 2 2 0.000000 1.0000 0 - 164 7 1 1 0.000000 1.0000 0 - 165 7 2 2 0.000000 1.0000 0 - 166 7 1 1 0.000000 1.0000 0 - 167 7 2 2 0.000000 1.0000 0 - 168 7 1 1 0.000000 1.0000 0 - 169 7 3 3 0.000000 1.0000 0 - 170 7 3 3 0.000000 1.0000 0 - 171 7 1 1 0.000000 1.0000 0 - 172 7 2 2 0.000000 1.0000 0 - 173 7 1 1 0.000000 1.0000 0 - 174 7 2 2 0.000000 1.0000 0 - 175 7 1 1 0.000000 1.0000 0 - 176 7 2 2 0.000000 1.0000 0 - 177 7 3 3 0.000000 1.0000 0 - 178 7 3 3 0.000000 1.0000 0 - 179 7 3 3 0.000000 1.0000 0 - 180 7 1 1 0.000000 1.0000 0 - 181 7 1 1 0.000000 1.0000 0 - 182 7 2 2 0.000000 1.0000 0 - 183 7 2 2 0.000000 1.0000 0 - 184 7 1 1 0.000000 1.0000 0 - 185 7 1 1 0.000000 1.0000 0 - 186 7 2 2 0.000000 1.0000 0 - 187 7 2 2 0.000000 1.0000 0 - 188 7 1 1 0.000000 1.0000 0 - 189 7 2 2 0.000000 1.0000 0 - 190 8 2 2 0.000000 1.0000 0 - 191 8 1 1 0.000000 1.0000 0 - 192 8 2 2 0.000000 1.0000 0 - 193 8 1 1 0.000000 1.0000 0 - 194 8 2 2 0.000000 1.0000 0 - 195 8 1 1 0.000000 1.0000 0 - 196 8 3 3 0.000000 1.0000 0 - 197 8 3 3 0.000000 1.0000 0 - 198 8 1 1 0.000000 1.0000 0 - 199 8 2 2 0.000000 1.0000 0 - 200 8 1 1 0.000000 1.0000 0 - 201 8 2 2 0.000000 1.0000 0 - 202 8 1 1 0.000000 1.0000 0 - 203 8 2 2 0.000000 1.0000 0 - 204 8 3 3 0.000000 1.0000 0 - 205 8 3 3 0.000000 1.0000 0 - 206 8 3 3 0.000000 1.0000 0 - 207 8 1 1 0.000000 1.0000 0 - 208 8 1 1 0.000000 1.0000 0 - 209 8 2 2 0.000000 1.0000 0 - 210 8 2 2 0.000000 1.0000 0 - 211 8 1 1 0.000000 1.0000 0 - 212 8 1 1 0.000000 1.0000 0 - 213 8 2 2 0.000000 1.0000 0 - 214 8 2 2 0.000000 1.0000 0 - 215 8 1 1 0.000000 1.0000 0 - 216 8 2 2 0.000000 1.0000 0 - 217 9 4 4 0.000000 100.0000 0 - 218 10 4 4 0.000000 100.0000 0 - 219 11 4 4 0.000000 100.0000 0 - 220 12 4 4 0.000000 100.0000 0 - 221 13 4 4 0.000000 100.0000 0 - 222 14 4 4 0.000000 100.0000 0 - 223 15 4 4 0.000000 100.0000 0 - 224 16 4 4 0.000000 100.0000 0 - - 208 !NBOND: bonds - 1 2 2 3 3 4 4 5 - 5 6 6 7 7 8 8 9 - 9 10 10 11 11 12 12 13 - 13 14 14 15 15 16 16 17 - 17 18 18 19 19 20 20 21 - 21 22 22 23 23 24 24 25 - 25 26 26 27 28 29 29 30 - 30 31 31 32 32 33 33 34 - 34 35 35 36 36 37 37 38 - 38 39 39 40 40 41 41 42 - 42 43 43 44 44 45 45 46 - 46 47 47 48 48 49 49 50 - 50 51 51 52 52 53 53 54 - 55 56 56 57 57 58 58 59 - 59 60 60 61 61 62 62 63 - 63 64 64 65 65 66 66 67 - 67 68 68 69 69 70 70 71 - 71 72 72 73 73 74 74 75 - 75 76 76 77 77 78 78 79 - 79 80 80 81 82 83 83 84 - 84 85 85 86 86 87 87 88 - 88 89 89 90 90 91 91 92 - 92 93 93 94 94 95 95 96 - 96 97 97 98 98 99 99 100 - 100 101 101 102 102 103 103 104 - 104 105 105 106 106 107 107 108 - 109 110 110 111 111 112 112 113 - 113 114 114 115 115 116 116 117 - 117 118 118 119 119 120 120 121 - 121 122 122 123 123 124 124 125 - 125 126 126 127 127 128 128 129 - 129 130 130 131 131 132 132 133 - 133 134 134 135 136 137 137 138 - 138 139 139 140 140 141 141 142 - 142 143 143 144 144 145 145 146 - 146 147 147 148 148 149 149 150 - 150 151 151 152 152 153 153 154 - 154 155 155 156 156 157 157 158 - 158 159 159 160 160 161 161 162 - 163 164 164 165 165 166 166 167 - 167 168 168 169 169 170 170 171 - 171 172 172 173 173 174 174 175 - 175 176 176 177 177 178 178 179 - 179 180 180 181 181 182 182 183 - 183 184 184 185 185 186 186 187 - 187 188 188 189 190 191 191 192 - 192 193 193 194 194 195 195 196 - 196 197 197 198 198 199 199 200 - 200 201 201 202 202 203 203 204 - 204 205 205 206 206 207 207 208 - 208 209 209 210 210 211 211 212 - 212 213 213 214 214 215 215 216 - - 200 !NTHETA: angles - 13 14 15 40 41 42 67 68 69 - 94 95 96 121 122 123 148 149 150 - 175 176 177 202 203 204 7 8 9 - 6 7 8 16 17 18 34 35 36 - 33 34 35 43 44 45 61 62 63 - 60 61 62 70 71 72 88 89 90 - 87 88 89 97 98 99 115 116 117 - 114 115 116 124 125 126 142 143 144 - 141 142 143 151 152 153 169 170 171 - 168 169 170 178 179 180 196 197 198 - 195 196 197 205 206 207 15 16 17 - 42 43 44 69 70 71 96 97 98 - 123 124 125 150 151 152 177 178 179 - 204 205 206 2 3 4 4 5 6 - 9 10 11 11 12 13 29 30 31 - 31 32 33 36 37 38 38 39 40 - 56 57 58 58 59 60 63 64 65 - 65 66 67 83 84 85 85 86 87 - 90 91 92 92 93 94 110 111 112 - 112 113 114 117 118 119 119 120 121 - 137 138 139 139 140 141 144 145 146 - 146 147 148 164 165 166 166 167 168 - 171 172 173 173 174 175 191 192 193 - 193 194 195 198 199 200 200 201 202 - 14 15 16 41 42 43 68 69 70 - 95 96 97 122 123 124 149 150 151 - 176 177 178 203 204 205 1 2 3 - 3 4 5 10 11 12 12 13 14 - 25 26 27 28 29 30 30 31 32 - 37 38 39 39 40 41 52 53 54 - 55 56 57 57 58 59 64 65 66 - 66 67 68 79 80 81 82 83 84 - 84 85 86 91 92 93 93 94 95 - 106 107 108 109 110 111 111 112 113 - 118 119 120 120 121 122 133 134 135 - 136 137 138 138 139 140 145 146 147 - 147 148 149 160 161 162 163 164 165 - 165 166 167 172 173 174 174 175 176 - 187 188 189 190 191 192 192 193 194 - 199 200 201 201 202 203 214 215 216 - 5 6 7 8 9 10 32 33 34 - 35 36 37 59 60 61 62 63 64 - 86 87 88 89 90 91 113 114 115 - 116 117 118 140 141 142 143 144 145 - 167 168 169 170 171 172 194 195 196 - 197 198 199 17 18 19 44 45 46 - 71 72 73 98 99 100 125 126 127 - 152 153 154 179 180 181 206 207 208 - 18 19 20 22 23 24 21 22 23 - 45 46 47 49 50 51 48 49 50 - 72 73 74 76 77 78 75 76 77 - 99 100 101 103 104 105 102 103 104 - 126 127 128 130 131 132 129 130 131 - 153 154 155 157 158 159 156 157 158 - 180 181 182 184 185 186 183 184 185 - 207 208 209 211 212 213 210 211 212 - 19 20 21 20 21 22 23 24 25 - 24 25 26 46 47 48 47 48 49 - 50 51 52 51 52 53 73 74 75 - 74 75 76 77 78 79 78 79 80 - 100 101 102 101 102 103 104 105 106 - 105 106 107 127 128 129 128 129 130 - 131 132 133 132 133 134 154 155 156 - 155 156 157 158 159 160 159 160 161 - 181 182 183 182 183 184 185 186 187 - 186 187 188 208 209 210 209 210 211 - 212 213 214 213 214 215 - - 152 !NPHI: dihedrals - 1 2 3 4 2 3 4 5 - 3 4 5 6 4 5 6 7 - 8 9 10 11 9 10 11 12 - 10 11 12 13 11 12 13 14 - 12 13 14 15 15 16 17 18 - 16 17 18 19 17 18 19 20 - 18 19 20 21 19 20 21 22 - 20 21 22 23 21 22 23 24 - 22 23 24 25 23 24 25 26 - 24 25 26 27 28 29 30 31 - 29 30 31 32 30 31 32 33 - 31 32 33 34 35 36 37 38 - 36 37 38 39 37 38 39 40 - 38 39 40 41 39 40 41 42 - 42 43 44 45 43 44 45 46 - 44 45 46 47 45 46 47 48 - 46 47 48 49 47 48 49 50 - 48 49 50 51 49 50 51 52 - 50 51 52 53 51 52 53 54 - 55 56 57 58 56 57 58 59 - 57 58 59 60 58 59 60 61 - 62 63 64 65 63 64 65 66 - 64 65 66 67 65 66 67 68 - 66 67 68 69 69 70 71 72 - 70 71 72 73 71 72 73 74 - 72 73 74 75 73 74 75 76 - 74 75 76 77 75 76 77 78 - 76 77 78 79 77 78 79 80 - 78 79 80 81 82 83 84 85 - 83 84 85 86 84 85 86 87 - 85 86 87 88 89 90 91 92 - 90 91 92 93 91 92 93 94 - 92 93 94 95 93 94 95 96 - 96 97 98 99 97 98 99 100 - 98 99 100 101 99 100 101 102 - 100 101 102 103 101 102 103 104 - 102 103 104 105 103 104 105 106 - 104 105 106 107 105 106 107 108 - 109 110 111 112 110 111 112 113 - 111 112 113 114 112 113 114 115 - 116 117 118 119 117 118 119 120 - 118 119 120 121 119 120 121 122 - 120 121 122 123 123 124 125 126 - 124 125 126 127 125 126 127 128 - 126 127 128 129 127 128 129 130 - 128 129 130 131 129 130 131 132 - 130 131 132 133 131 132 133 134 - 132 133 134 135 136 137 138 139 - 137 138 139 140 138 139 140 141 - 139 140 141 142 143 144 145 146 - 144 145 146 147 145 146 147 148 - 146 147 148 149 147 148 149 150 - 150 151 152 153 151 152 153 154 - 152 153 154 155 153 154 155 156 - 154 155 156 157 155 156 157 158 - 156 157 158 159 157 158 159 160 - 158 159 160 161 159 160 161 162 - 163 164 165 166 164 165 166 167 - 165 166 167 168 166 167 168 169 - 170 171 172 173 171 172 173 174 - 172 173 174 175 173 174 175 176 - 174 175 176 177 177 178 179 180 - 178 179 180 181 179 180 181 182 - 180 181 182 183 181 182 183 184 - 182 183 184 185 183 184 185 186 - 184 185 186 187 185 186 187 188 - 186 187 188 189 190 191 192 193 - 191 192 193 194 192 193 194 195 - 193 194 195 196 197 198 199 200 - 198 199 200 201 199 200 201 202 - 200 201 202 203 201 202 203 204 - 204 205 206 207 205 206 207 208 - 206 207 208 209 207 208 209 210 - 208 209 210 211 209 210 211 212 - 210 211 212 213 211 212 213 214 - 212 213 214 215 213 214 215 216 - - 0 !NIMPHI: impropers - - - 0 !NDON: donors - - - 0 !NACC: acceptors - - - 0 !NNB - - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - - - 1 0 !NGRP - 0 0 0 - diff --git a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated/README_visualize.txt b/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated/README_visualize.txt deleted file mode 100644 index 019afc1444a48409143b5c170318479ceb27a391..0000000000000000000000000000000000000000 --- a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated/README_visualize.txt +++ /dev/null @@ -1,87 +0,0 @@ - - ------- To view a lammps trajectory in VMD -------- - - -1) Build a PSF file for use in viewing with VMD. - -This step works with VMD 1.9 and topotools 1.2. -(Older versions, like VMD 1.8.6, don't support this.) - - -a) Start VMD -b) Menu Extensions->Tk Console -c) Enter: - -(I assume that the the DATA file is called "system.data") - - topo readlammpsdata system.data full - animate write psf system.psf - -2) - -Later, to Load a trajectory in VMD: - - Start VMD - Select menu: File->New Molecule - -Browse to select the PSF file you created above, and load it. - (Don't close the window yet.) - -Browse to select the trajectory file. - If necessary, for "file type" select: "LAMMPS Trajectory" - Load it. - - ---- A note on trajectory format: ----- -If the trajectory is a DUMP file, then make sure the it contains the -information you need for pbctools (see below. I've been using this -command in my LAMMPS scripts to create the trajectories: - - dump 1 all custom 5000 DUMP_FILE.lammpstrj id mol type x y z ix iy iz - -It's a good idea to use an atom_style which supports molecule-ID numbers -so that you can assign a molecule-ID number to each atom. (I think this -is needed to wrap atom coordinates without breaking molecules in half.) - -Of course, you don't have to save your trajectories in DUMP format, -(other formats like DCD work fine) I just mention dump files -because these are the files I'm familiar with. - -3) ----- Wrap the coordinates to the unit cell - (without cutting the molecules in half) - -a) Start VMD -b) Load the trajectory in VMD (see above) -c) Menu Extensions->Tk Console -d) Try entering these commands: - - pbc wrap -compound res -all - pbc box - - ----- Optional ---- - Sometimes the solvent or membrane obscures the view of the solute. - It can help to shift the location of the periodic boundary box - To shift the box in the y direction (for example) do this: - - pbc wrap -compound res -all -shiftcenterrel {0.0 0.15 0.0} - pbc box -shiftcenterrel {0.0 0.15 0.0} - - Distances are measured in units of box-length fractions, not Angstroms. - - Alternately if you have a solute whose atoms are all of type 1, - then you can also try this to center the box around it: - - pbc wrap -sel type=1 -all -centersel type=2 -center com - -4) - You should check if your periodic boundary conditions are too small. - To do that: - select Graphics->Representations menu option - click on the "Periodic" tab, and - click on the "+x", "-x", "+y", "-y", "+z", "-z" checkboxes. - -5) Optional: If you like, change the atom types in the PSF file so - that VMD recognizes the atom types, use something like: - -sed -e 's/ 1 1 / C C /g' < system.psf > temp1.psf -sed -e 's/ 2 2 / H H /g' < temp1.psf > temp2.psf -sed -e 's/ 3 3 / P P /g' < temp2.psf > system.psf - -(If you do this, it might effect step 2 above.) diff --git a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated/images/for_visualization/psf_file_created_by_topotools/system.psf b/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated/images/for_visualization/psf_file_created_by_topotools/system.psf deleted file mode 100644 index c7f8572b296549acc07ee5b952931e85e687b48a..0000000000000000000000000000000000000000 --- a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/frustrated/images/for_visualization/psf_file_created_by_topotools/system.psf +++ /dev/null @@ -1,85 +0,0 @@ -PSF - - 1 !NTITLE - REMARKS VMD generated structure x-plor psf file - - 27 !NATOM - 1 1 2 2 0.000000 1.0000 0 - 2 1 1 1 0.000000 1.0000 0 - 3 1 2 2 0.000000 1.0000 0 - 4 1 1 1 0.000000 1.0000 0 - 5 1 2 2 0.000000 1.0000 0 - 6 1 1 1 0.000000 1.0000 0 - 7 1 3 3 0.000000 1.0000 0 - 8 1 3 3 0.000000 1.0000 0 - 9 1 1 1 0.000000 1.0000 0 - 10 1 2 2 0.000000 1.0000 0 - 11 1 1 1 0.000000 1.0000 0 - 12 1 2 2 0.000000 1.0000 0 - 13 1 1 1 0.000000 1.0000 0 - 14 1 2 2 0.000000 1.0000 0 - 15 1 3 3 0.000000 1.0000 0 - 16 1 3 3 0.000000 1.0000 0 - 17 1 3 3 0.000000 1.0000 0 - 18 1 1 1 0.000000 1.0000 0 - 19 1 1 1 0.000000 1.0000 0 - 20 1 2 2 0.000000 1.0000 0 - 21 1 2 2 0.000000 1.0000 0 - 22 1 1 1 0.000000 1.0000 0 - 23 1 1 1 0.000000 1.0000 0 - 24 1 2 2 0.000000 1.0000 0 - 25 1 2 2 0.000000 1.0000 0 - 26 1 1 1 0.000000 1.0000 0 - 27 1 2 2 0.000000 1.0000 0 - - 26 !NBOND: bonds - 1 2 2 3 3 4 4 5 - 5 6 6 7 7 8 8 9 - 9 10 10 11 11 12 12 13 - 13 14 14 15 15 16 16 17 - 17 18 18 19 19 20 20 21 - 21 22 22 23 23 24 24 25 - 25 26 26 27 - - 25 !NTHETA: angles - 13 14 15 7 8 9 6 7 8 - 16 17 18 15 16 17 2 3 4 - 4 5 6 9 10 11 11 12 13 - 14 15 16 1 2 3 3 4 5 - 10 11 12 12 13 14 25 26 27 - 5 6 7 8 9 10 17 18 19 - 18 19 20 22 23 24 21 22 23 - 19 20 21 20 21 22 23 24 25 - 24 25 26 - - 19 !NPHI: dihedrals - 1 2 3 4 2 3 4 5 - 3 4 5 6 4 5 6 7 - 8 9 10 11 9 10 11 12 - 10 11 12 13 11 12 13 14 - 12 13 14 15 15 16 17 18 - 16 17 18 19 17 18 19 20 - 18 19 20 21 19 20 21 22 - 20 21 22 23 21 22 23 24 - 22 23 24 25 23 24 25 26 - 24 25 26 27 - - 0 !NIMPHI: impropers - - - 0 !NDON: donors - - - 0 !NACC: acceptors - - - 0 !NNB - - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 - - 1 0 !NGRP - 0 0 0 - diff --git a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/unfrustrated+chaperonin/README_visualize.txt b/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/unfrustrated+chaperonin/README_visualize.txt deleted file mode 100644 index 019afc1444a48409143b5c170318479ceb27a391..0000000000000000000000000000000000000000 --- a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/unfrustrated+chaperonin/README_visualize.txt +++ /dev/null @@ -1,87 +0,0 @@ - - ------- To view a lammps trajectory in VMD -------- - - -1) Build a PSF file for use in viewing with VMD. - -This step works with VMD 1.9 and topotools 1.2. -(Older versions, like VMD 1.8.6, don't support this.) - - -a) Start VMD -b) Menu Extensions->Tk Console -c) Enter: - -(I assume that the the DATA file is called "system.data") - - topo readlammpsdata system.data full - animate write psf system.psf - -2) - -Later, to Load a trajectory in VMD: - - Start VMD - Select menu: File->New Molecule - -Browse to select the PSF file you created above, and load it. - (Don't close the window yet.) - -Browse to select the trajectory file. - If necessary, for "file type" select: "LAMMPS Trajectory" - Load it. - - ---- A note on trajectory format: ----- -If the trajectory is a DUMP file, then make sure the it contains the -information you need for pbctools (see below. I've been using this -command in my LAMMPS scripts to create the trajectories: - - dump 1 all custom 5000 DUMP_FILE.lammpstrj id mol type x y z ix iy iz - -It's a good idea to use an atom_style which supports molecule-ID numbers -so that you can assign a molecule-ID number to each atom. (I think this -is needed to wrap atom coordinates without breaking molecules in half.) - -Of course, you don't have to save your trajectories in DUMP format, -(other formats like DCD work fine) I just mention dump files -because these are the files I'm familiar with. - -3) ----- Wrap the coordinates to the unit cell - (without cutting the molecules in half) - -a) Start VMD -b) Load the trajectory in VMD (see above) -c) Menu Extensions->Tk Console -d) Try entering these commands: - - pbc wrap -compound res -all - pbc box - - ----- Optional ---- - Sometimes the solvent or membrane obscures the view of the solute. - It can help to shift the location of the periodic boundary box - To shift the box in the y direction (for example) do this: - - pbc wrap -compound res -all -shiftcenterrel {0.0 0.15 0.0} - pbc box -shiftcenterrel {0.0 0.15 0.0} - - Distances are measured in units of box-length fractions, not Angstroms. - - Alternately if you have a solute whose atoms are all of type 1, - then you can also try this to center the box around it: - - pbc wrap -sel type=1 -all -centersel type=2 -center com - -4) - You should check if your periodic boundary conditions are too small. - To do that: - select Graphics->Representations menu option - click on the "Periodic" tab, and - click on the "+x", "-x", "+y", "-y", "+z", "-z" checkboxes. - -5) Optional: If you like, change the atom types in the PSF file so - that VMD recognizes the atom types, use something like: - -sed -e 's/ 1 1 / C C /g' < system.psf > temp1.psf -sed -e 's/ 2 2 / H H /g' < temp1.psf > temp2.psf -sed -e 's/ 3 3 / P P /g' < temp2.psf > system.psf - -(If you do this, it might effect step 2 above.) diff --git a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/unfrustrated+chaperonin/images/for_visualization/psf_file_created_by_topotools/system.psf b/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/unfrustrated+chaperonin/images/for_visualization/psf_file_created_by_topotools/system.psf deleted file mode 100644 index 7763505c0decc4534d08b77fd5ae20f6cc8350f7..0000000000000000000000000000000000000000 --- a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/unfrustrated+chaperonin/images/for_visualization/psf_file_created_by_topotools/system.psf +++ /dev/null @@ -1,98 +0,0 @@ -PSF - - 1 !NTITLE - REMARKS VMD generated structure x-plor psf file - - 28 !NATOM - 1 1 1 1 0.000000 100.0000 0 - 2 2 3 3 0.000000 1.0000 0 - 3 2 2 2 0.000000 1.0000 0 - 4 2 3 3 0.000000 1.0000 0 - 5 2 2 2 0.000000 1.0000 0 - 6 2 3 3 0.000000 1.0000 0 - 7 2 2 2 0.000000 1.0000 0 - 8 2 4 4 0.000000 1.0000 0 - 9 2 4 4 0.000000 1.0000 0 - 10 2 2 2 0.000000 1.0000 0 - 11 2 3 3 0.000000 1.0000 0 - 12 2 2 2 0.000000 1.0000 0 - 13 2 3 3 0.000000 1.0000 0 - 14 2 2 2 0.000000 1.0000 0 - 15 2 3 3 0.000000 1.0000 0 - 16 2 4 4 0.000000 1.0000 0 - 17 2 4 4 0.000000 1.0000 0 - 18 2 4 4 0.000000 1.0000 0 - 19 2 2 2 0.000000 1.0000 0 - 20 2 2 2 0.000000 1.0000 0 - 21 2 3 3 0.000000 1.0000 0 - 22 2 3 3 0.000000 1.0000 0 - 23 2 2 2 0.000000 1.0000 0 - 24 2 2 2 0.000000 1.0000 0 - 25 2 3 3 0.000000 1.0000 0 - 26 2 3 3 0.000000 1.0000 0 - 27 2 2 2 0.000000 1.0000 0 - 28 2 3 3 0.000000 1.0000 0 - - 26 !NBOND: bonds - 2 3 3 4 4 5 5 6 - 6 7 7 8 8 9 9 10 - 10 11 11 12 12 13 13 14 - 14 15 15 16 16 17 17 18 - 18 19 19 20 20 21 21 22 - 22 23 23 24 24 25 25 26 - 26 27 27 28 - - 25 !NTHETA: angles - 3 4 5 5 6 7 10 11 12 - 12 13 14 8 9 10 7 8 9 - 17 18 19 19 20 21 23 24 25 - 22 23 24 2 3 4 4 5 6 - 11 12 13 13 14 15 26 27 28 - 15 16 17 6 7 8 9 10 11 - 14 15 16 18 19 20 20 21 22 - 21 22 23 24 25 26 25 26 27 - 16 17 18 - - 43 !NPHI: dihedrals - 2 3 4 5 2 3 4 5 - 3 4 5 6 3 4 5 6 - 4 5 6 7 4 5 6 7 - 5 6 7 8 5 6 7 8 - 6 7 8 9 7 8 9 10 - 8 9 10 11 9 10 11 12 - 9 10 11 12 10 11 12 13 - 10 11 12 13 11 12 13 14 - 11 12 13 14 12 13 14 15 - 12 13 14 15 13 14 15 16 - 13 14 15 16 14 15 16 17 - 15 16 17 18 16 17 18 19 - 16 17 18 19 17 18 19 20 - 17 18 19 20 18 19 20 21 - 18 19 20 21 19 20 21 22 - 19 20 21 22 20 21 22 23 - 20 21 22 23 21 22 23 24 - 21 22 23 24 22 23 24 25 - 22 23 24 25 23 24 25 26 - 23 24 25 26 24 25 26 27 - 24 25 26 27 25 26 27 28 - 25 26 27 28 - - 0 !NIMPHI: impropers - - - 0 !NDON: donors - - - 0 !NACC: acceptors - - - 0 !NNB - - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 - - 1 0 !NGRP - 0 0 0 - diff --git a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/unfrustrated/README_visualize.txt b/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/unfrustrated/README_visualize.txt deleted file mode 100644 index 019afc1444a48409143b5c170318479ceb27a391..0000000000000000000000000000000000000000 --- a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/unfrustrated/README_visualize.txt +++ /dev/null @@ -1,87 +0,0 @@ - - ------- To view a lammps trajectory in VMD -------- - - -1) Build a PSF file for use in viewing with VMD. - -This step works with VMD 1.9 and topotools 1.2. -(Older versions, like VMD 1.8.6, don't support this.) - - -a) Start VMD -b) Menu Extensions->Tk Console -c) Enter: - -(I assume that the the DATA file is called "system.data") - - topo readlammpsdata system.data full - animate write psf system.psf - -2) - -Later, to Load a trajectory in VMD: - - Start VMD - Select menu: File->New Molecule - -Browse to select the PSF file you created above, and load it. - (Don't close the window yet.) - -Browse to select the trajectory file. - If necessary, for "file type" select: "LAMMPS Trajectory" - Load it. - - ---- A note on trajectory format: ----- -If the trajectory is a DUMP file, then make sure the it contains the -information you need for pbctools (see below. I've been using this -command in my LAMMPS scripts to create the trajectories: - - dump 1 all custom 5000 DUMP_FILE.lammpstrj id mol type x y z ix iy iz - -It's a good idea to use an atom_style which supports molecule-ID numbers -so that you can assign a molecule-ID number to each atom. (I think this -is needed to wrap atom coordinates without breaking molecules in half.) - -Of course, you don't have to save your trajectories in DUMP format, -(other formats like DCD work fine) I just mention dump files -because these are the files I'm familiar with. - -3) ----- Wrap the coordinates to the unit cell - (without cutting the molecules in half) - -a) Start VMD -b) Load the trajectory in VMD (see above) -c) Menu Extensions->Tk Console -d) Try entering these commands: - - pbc wrap -compound res -all - pbc box - - ----- Optional ---- - Sometimes the solvent or membrane obscures the view of the solute. - It can help to shift the location of the periodic boundary box - To shift the box in the y direction (for example) do this: - - pbc wrap -compound res -all -shiftcenterrel {0.0 0.15 0.0} - pbc box -shiftcenterrel {0.0 0.15 0.0} - - Distances are measured in units of box-length fractions, not Angstroms. - - Alternately if you have a solute whose atoms are all of type 1, - then you can also try this to center the box around it: - - pbc wrap -sel type=1 -all -centersel type=2 -center com - -4) - You should check if your periodic boundary conditions are too small. - To do that: - select Graphics->Representations menu option - click on the "Periodic" tab, and - click on the "+x", "-x", "+y", "-y", "+z", "-z" checkboxes. - -5) Optional: If you like, change the atom types in the PSF file so - that VMD recognizes the atom types, use something like: - -sed -e 's/ 1 1 / C C /g' < system.psf > temp1.psf -sed -e 's/ 2 2 / H H /g' < temp1.psf > temp2.psf -sed -e 's/ 3 3 / P P /g' < temp2.psf > system.psf - -(If you do this, it might effect step 2 above.) diff --git a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/unfrustrated/images/for_visualization/psf_file_created_by_topotools/system.psf b/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/unfrustrated/images/for_visualization/psf_file_created_by_topotools/system.psf deleted file mode 100644 index 1470af4bc1f54ff19a3d87b01017936841878d54..0000000000000000000000000000000000000000 --- a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1bead+chaperone/unfrustrated/images/for_visualization/psf_file_created_by_topotools/system.psf +++ /dev/null @@ -1,97 +0,0 @@ -PSF - - 1 !NTITLE - REMARKS VMD generated structure x-plor psf file - - 27 !NATOM - 1 1 2 2 0.000000 1.0000 0 - 2 1 1 1 0.000000 1.0000 0 - 3 1 2 2 0.000000 1.0000 0 - 4 1 1 1 0.000000 1.0000 0 - 5 1 2 2 0.000000 1.0000 0 - 6 1 1 1 0.000000 1.0000 0 - 7 1 3 3 0.000000 1.0000 0 - 8 1 3 3 0.000000 1.0000 0 - 9 1 1 1 0.000000 1.0000 0 - 10 1 2 2 0.000000 1.0000 0 - 11 1 1 1 0.000000 1.0000 0 - 12 1 2 2 0.000000 1.0000 0 - 13 1 1 1 0.000000 1.0000 0 - 14 1 2 2 0.000000 1.0000 0 - 15 1 3 3 0.000000 1.0000 0 - 16 1 3 3 0.000000 1.0000 0 - 17 1 3 3 0.000000 1.0000 0 - 18 1 1 1 0.000000 1.0000 0 - 19 1 1 1 0.000000 1.0000 0 - 20 1 2 2 0.000000 1.0000 0 - 21 1 2 2 0.000000 1.0000 0 - 22 1 1 1 0.000000 1.0000 0 - 23 1 1 1 0.000000 1.0000 0 - 24 1 2 2 0.000000 1.0000 0 - 25 1 2 2 0.000000 1.0000 0 - 26 1 1 1 0.000000 1.0000 0 - 27 1 2 2 0.000000 1.0000 0 - - 26 !NBOND: bonds - 1 2 2 3 3 4 4 5 - 5 6 6 7 7 8 8 9 - 9 10 10 11 11 12 12 13 - 13 14 14 15 15 16 16 17 - 17 18 18 19 19 20 20 21 - 21 22 22 23 23 24 24 25 - 25 26 26 27 - - 25 !NTHETA: angles - 13 14 15 7 8 9 6 7 8 - 16 17 18 15 16 17 2 3 4 - 4 5 6 9 10 11 11 12 13 - 14 15 16 1 2 3 3 4 5 - 10 11 12 12 13 14 25 26 27 - 5 6 7 8 9 10 17 18 19 - 18 19 20 22 23 24 21 22 23 - 19 20 21 20 21 22 23 24 25 - 24 25 26 - - 43 !NPHI: dihedrals - 1 2 3 4 1 2 3 4 - 2 3 4 5 2 3 4 5 - 3 4 5 6 3 4 5 6 - 4 5 6 7 4 5 6 7 - 5 6 7 8 6 7 8 9 - 7 8 9 10 8 9 10 11 - 8 9 10 11 9 10 11 12 - 9 10 11 12 10 11 12 13 - 10 11 12 13 11 12 13 14 - 11 12 13 14 12 13 14 15 - 12 13 14 15 13 14 15 16 - 14 15 16 17 15 16 17 18 - 15 16 17 18 16 17 18 19 - 16 17 18 19 17 18 19 20 - 17 18 19 20 18 19 20 21 - 18 19 20 21 19 20 21 22 - 19 20 21 22 20 21 22 23 - 20 21 22 23 21 22 23 24 - 21 22 23 24 22 23 24 25 - 22 23 24 25 23 24 25 26 - 23 24 25 26 24 25 26 27 - 24 25 26 27 - - 0 !NIMPHI: impropers - - - 0 !NDON: donors - - - 0 !NACC: acceptors - - - 0 !NNB - - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 - - 1 0 !NGRP - 0 0 0 - diff --git a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1beadProtSci2010/README_visualize.txt b/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1beadProtSci2010/README_visualize.txt deleted file mode 100644 index 019afc1444a48409143b5c170318479ceb27a391..0000000000000000000000000000000000000000 --- a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1beadProtSci2010/README_visualize.txt +++ /dev/null @@ -1,87 +0,0 @@ - - ------- To view a lammps trajectory in VMD -------- - - -1) Build a PSF file for use in viewing with VMD. - -This step works with VMD 1.9 and topotools 1.2. -(Older versions, like VMD 1.8.6, don't support this.) - - -a) Start VMD -b) Menu Extensions->Tk Console -c) Enter: - -(I assume that the the DATA file is called "system.data") - - topo readlammpsdata system.data full - animate write psf system.psf - -2) - -Later, to Load a trajectory in VMD: - - Start VMD - Select menu: File->New Molecule - -Browse to select the PSF file you created above, and load it. - (Don't close the window yet.) - -Browse to select the trajectory file. - If necessary, for "file type" select: "LAMMPS Trajectory" - Load it. - - ---- A note on trajectory format: ----- -If the trajectory is a DUMP file, then make sure the it contains the -information you need for pbctools (see below. I've been using this -command in my LAMMPS scripts to create the trajectories: - - dump 1 all custom 5000 DUMP_FILE.lammpstrj id mol type x y z ix iy iz - -It's a good idea to use an atom_style which supports molecule-ID numbers -so that you can assign a molecule-ID number to each atom. (I think this -is needed to wrap atom coordinates without breaking molecules in half.) - -Of course, you don't have to save your trajectories in DUMP format, -(other formats like DCD work fine) I just mention dump files -because these are the files I'm familiar with. - -3) ----- Wrap the coordinates to the unit cell - (without cutting the molecules in half) - -a) Start VMD -b) Load the trajectory in VMD (see above) -c) Menu Extensions->Tk Console -d) Try entering these commands: - - pbc wrap -compound res -all - pbc box - - ----- Optional ---- - Sometimes the solvent or membrane obscures the view of the solute. - It can help to shift the location of the periodic boundary box - To shift the box in the y direction (for example) do this: - - pbc wrap -compound res -all -shiftcenterrel {0.0 0.15 0.0} - pbc box -shiftcenterrel {0.0 0.15 0.0} - - Distances are measured in units of box-length fractions, not Angstroms. - - Alternately if you have a solute whose atoms are all of type 1, - then you can also try this to center the box around it: - - pbc wrap -sel type=1 -all -centersel type=2 -center com - -4) - You should check if your periodic boundary conditions are too small. - To do that: - select Graphics->Representations menu option - click on the "Periodic" tab, and - click on the "+x", "-x", "+y", "-y", "+z", "-z" checkboxes. - -5) Optional: If you like, change the atom types in the PSF file so - that VMD recognizes the atom types, use something like: - -sed -e 's/ 1 1 / C C /g' < system.psf > temp1.psf -sed -e 's/ 2 2 / H H /g' < temp1.psf > temp2.psf -sed -e 's/ 3 3 / P P /g' < temp2.psf > system.psf - -(If you do this, it might effect step 2 above.) diff --git a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1beadProtSci2010/images/for_visualization/psf_file_created_by_topotools/system.psf b/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1beadProtSci2010/images/for_visualization/psf_file_created_by_topotools/system.psf deleted file mode 100644 index de47509ed4fb4daea87158d39df4e85b251550d0..0000000000000000000000000000000000000000 --- a/tools/moltemplate/examples/coarse_grained_examples/protein_folding_examples/1beadProtSci2010/images/for_visualization/psf_file_created_by_topotools/system.psf +++ /dev/null @@ -1,214 +0,0 @@ -PSF - - 1 !NTITLE - REMARKS VMD generated structure x-plor psf file - - 73 !NATOM - 1 1 1 1 0.000000 1.0000 0 - 2 1 1 1 0.000000 1.0000 0 - 3 1 2 2 0.000000 1.0000 0 - 4 1 2 2 0.000000 1.0000 0 - 5 1 1 1 0.000000 1.0000 0 - 6 1 1 1 0.000000 1.0000 0 - 7 1 2 2 0.000000 1.0000 0 - 8 1 2 2 0.000000 1.0000 0 - 9 1 1 1 0.000000 1.0000 0 - 10 1 1 1 0.000000 1.0000 0 - 11 1 2 2 0.000000 1.0000 0 - 12 1 2 2 0.000000 1.0000 0 - 13 1 1 1 0.000000 1.0000 0 - 14 1 1 1 0.000000 1.0000 0 - 15 1 2 2 0.000000 1.0000 0 - 16 1 2 2 0.000000 1.0000 0 - 17 1 1 1 0.000000 1.0000 0 - 18 1 1 1 0.000000 1.0000 0 - 19 1 2 2 0.000000 1.0000 0 - 20 1 2 2 0.000000 1.0000 0 - 21 1 1 1 0.000000 1.0000 0 - 22 1 1 1 0.000000 1.0000 0 - 23 1 2 2 0.000000 1.0000 0 - 24 1 2 2 0.000000 1.0000 0 - 25 1 1 1 0.000000 1.0000 0 - 26 1 1 1 0.000000 1.0000 0 - 27 1 2 2 0.000000 1.0000 0 - 28 1 2 2 0.000000 1.0000 0 - 29 1 1 1 0.000000 1.0000 0 - 30 1 1 1 0.000000 1.0000 0 - 31 1 2 2 0.000000 1.0000 0 - 32 1 2 2 0.000000 1.0000 0 - 33 1 1 1 0.000000 1.0000 0 - 34 1 1 1 0.000000 1.0000 0 - 35 1 2 2 0.000000 1.0000 0 - 36 1 2 2 0.000000 1.0000 0 - 37 1 1 1 0.000000 1.0000 0 - 38 1 1 1 0.000000 1.0000 0 - 39 1 2 2 0.000000 1.0000 0 - 40 1 2 2 0.000000 1.0000 0 - 41 1 1 1 0.000000 1.0000 0 - 42 1 1 1 0.000000 1.0000 0 - 43 1 2 2 0.000000 1.0000 0 - 44 1 2 2 0.000000 1.0000 0 - 45 1 1 1 0.000000 1.0000 0 - 46 1 1 1 0.000000 1.0000 0 - 47 1 2 2 0.000000 1.0000 0 - 48 1 2 2 0.000000 1.0000 0 - 49 1 1 1 0.000000 1.0000 0 - 50 1 1 1 0.000000 1.0000 0 - 51 1 2 2 0.000000 1.0000 0 - 52 1 2 2 0.000000 1.0000 0 - 53 1 1 1 0.000000 1.0000 0 - 54 1 1 1 0.000000 1.0000 0 - 55 1 2 2 0.000000 1.0000 0 - 56 1 2 2 0.000000 1.0000 0 - 57 1 1 1 0.000000 1.0000 0 - 58 1 1 1 0.000000 1.0000 0 - 59 1 2 2 0.000000 1.0000 0 - 60 1 2 2 0.000000 1.0000 0 - 61 1 1 1 0.000000 1.0000 0 - 62 1 1 1 0.000000 1.0000 0 - 63 1 2 2 0.000000 1.0000 0 - 64 1 2 2 0.000000 1.0000 0 - 65 1 3 3 0.000000 1.0000 0 - 66 1 3 3 0.000000 1.0000 0 - 67 1 3 3 0.000000 1.0000 0 - 68 1 3 3 0.000000 1.0000 0 - 69 1 3 3 0.000000 1.0000 0 - 70 1 3 3 0.000000 1.0000 0 - 71 1 3 3 0.000000 1.0000 0 - 72 1 3 3 0.000000 1.0000 0 - 73 1 3 3 0.000000 1.0000 0 - - 72 !NBOND: bonds - 1 2 2 3 3 4 4 5 - 5 6 6 7 7 8 8 9 - 9 10 10 11 11 12 12 13 - 13 14 14 15 15 16 16 65 - 17 18 17 70 18 19 19 20 - 20 21 21 22 22 23 23 24 - 24 25 25 26 26 27 27 28 - 28 29 29 30 30 31 31 32 - 32 67 33 34 33 68 34 35 - 35 36 36 37 37 38 38 39 - 39 40 40 41 41 42 42 43 - 43 44 44 45 45 46 46 47 - 47 48 48 71 49 50 50 51 - 51 52 52 53 53 54 54 55 - 55 56 56 57 57 58 58 59 - 59 60 60 61 61 62 62 63 - 63 64 64 73 65 66 66 67 - 68 69 69 70 71 72 72 73 - - 71 !NTHETA: angles - 16 65 66 32 67 66 48 71 72 - 64 73 72 2 3 4 3 4 5 - 6 7 8 7 8 9 10 11 12 - 11 12 13 14 15 16 18 19 20 - 19 20 21 22 23 24 23 24 25 - 26 27 28 27 28 29 30 31 32 - 34 35 36 35 36 37 38 39 40 - 39 40 41 42 43 44 43 44 45 - 46 47 48 50 51 52 51 52 53 - 54 55 56 55 56 57 58 59 60 - 59 60 61 62 63 64 15 16 65 - 31 32 67 47 48 71 63 64 73 - 34 33 68 18 17 70 1 2 3 - 4 5 6 5 6 7 8 9 10 - 9 10 11 12 13 14 13 14 15 - 17 18 19 20 21 22 21 22 23 - 24 25 26 25 26 27 28 29 30 - 29 30 31 33 34 35 36 37 38 - 37 38 39 40 41 42 41 42 43 - 44 45 46 45 46 47 49 50 51 - 52 53 54 53 54 55 56 57 58 - 57 58 59 60 61 62 61 62 63 - 17 70 69 33 68 69 65 66 67 - 68 69 70 71 72 73 - - 122 !NPHI: dihedrals - 4 5 6 7 8 9 10 11 - 12 13 14 15 20 21 22 23 - 24 25 26 27 28 29 30 31 - 36 37 38 39 40 41 42 43 - 44 45 46 47 52 53 54 55 - 56 57 58 59 60 61 62 63 - 2 3 4 5 6 7 8 9 - 10 11 12 13 18 19 20 21 - 22 23 24 25 26 27 28 29 - 34 35 36 37 38 39 40 41 - 42 43 44 45 50 51 52 53 - 54 55 56 57 58 59 60 61 - 3 4 5 6 1 2 3 4 - 7 8 9 10 5 6 7 8 - 11 12 13 14 9 10 11 12 - 13 14 15 16 19 20 21 22 - 17 18 19 20 23 24 25 26 - 21 22 23 24 27 28 29 30 - 25 26 27 28 29 30 31 32 - 35 36 37 38 33 34 35 36 - 39 40 41 42 37 38 39 40 - 43 44 45 46 41 42 43 44 - 45 46 47 48 51 52 53 54 - 49 50 51 52 55 56 57 58 - 53 54 55 56 59 60 61 62 - 57 58 59 60 61 62 63 64 - 4 5 6 7 8 9 10 11 - 12 13 14 15 20 21 22 23 - 24 25 26 27 28 29 30 31 - 36 37 38 39 40 41 42 43 - 44 45 46 47 52 53 54 55 - 56 57 58 59 60 61 62 63 - 2 3 4 5 6 7 8 9 - 10 11 12 13 18 19 20 21 - 22 23 24 25 26 27 28 29 - 34 35 36 37 38 39 40 41 - 42 43 44 45 50 51 52 53 - 54 55 56 57 58 59 60 61 - 3 4 5 6 1 2 3 4 - 7 8 9 10 5 6 7 8 - 11 12 13 14 9 10 11 12 - 13 14 15 16 19 20 21 22 - 17 18 19 20 23 24 25 26 - 21 22 23 24 27 28 29 30 - 25 26 27 28 29 30 31 32 - 35 36 37 38 33 34 35 36 - 39 40 41 42 37 38 39 40 - 43 44 45 46 41 42 43 44 - 45 46 47 48 51 52 53 54 - 49 50 51 52 55 56 57 58 - 53 54 55 56 59 60 61 62 - 57 58 59 60 61 62 63 64 - 68 69 70 17 33 68 69 70 - 65 66 67 32 16 65 66 67 - 71 72 73 64 48 71 72 73 - 34 33 68 69 18 17 70 69 - 68 33 34 35 70 17 18 19 - 15 16 65 66 31 32 67 66 - 47 48 71 72 63 64 73 72 - 14 15 16 65 30 31 32 67 - 46 47 48 71 62 63 64 73 - - 0 !NIMPHI: impropers - - - 0 !NDON: donors - - - 0 !NACC: acceptors - - - 0 !NNB - - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 - - 1 0 !NGRP - 0 0 0 - diff --git a/tools/moltemplate/examples/coarse_grained_examples/vesicle_Brannigan2005+Bellesia2010/README_visualize.txt b/tools/moltemplate/examples/coarse_grained_examples/vesicle_Brannigan2005+Bellesia2010/README_visualize.txt deleted file mode 100644 index 019afc1444a48409143b5c170318479ceb27a391..0000000000000000000000000000000000000000 --- a/tools/moltemplate/examples/coarse_grained_examples/vesicle_Brannigan2005+Bellesia2010/README_visualize.txt +++ /dev/null @@ -1,87 +0,0 @@ - - ------- To view a lammps trajectory in VMD -------- - - -1) Build a PSF file for use in viewing with VMD. - -This step works with VMD 1.9 and topotools 1.2. -(Older versions, like VMD 1.8.6, don't support this.) - - -a) Start VMD -b) Menu Extensions->Tk Console -c) Enter: - -(I assume that the the DATA file is called "system.data") - - topo readlammpsdata system.data full - animate write psf system.psf - -2) - -Later, to Load a trajectory in VMD: - - Start VMD - Select menu: File->New Molecule - -Browse to select the PSF file you created above, and load it. - (Don't close the window yet.) - -Browse to select the trajectory file. - If necessary, for "file type" select: "LAMMPS Trajectory" - Load it. - - ---- A note on trajectory format: ----- -If the trajectory is a DUMP file, then make sure the it contains the -information you need for pbctools (see below. I've been using this -command in my LAMMPS scripts to create the trajectories: - - dump 1 all custom 5000 DUMP_FILE.lammpstrj id mol type x y z ix iy iz - -It's a good idea to use an atom_style which supports molecule-ID numbers -so that you can assign a molecule-ID number to each atom. (I think this -is needed to wrap atom coordinates without breaking molecules in half.) - -Of course, you don't have to save your trajectories in DUMP format, -(other formats like DCD work fine) I just mention dump files -because these are the files I'm familiar with. - -3) ----- Wrap the coordinates to the unit cell - (without cutting the molecules in half) - -a) Start VMD -b) Load the trajectory in VMD (see above) -c) Menu Extensions->Tk Console -d) Try entering these commands: - - pbc wrap -compound res -all - pbc box - - ----- Optional ---- - Sometimes the solvent or membrane obscures the view of the solute. - It can help to shift the location of the periodic boundary box - To shift the box in the y direction (for example) do this: - - pbc wrap -compound res -all -shiftcenterrel {0.0 0.15 0.0} - pbc box -shiftcenterrel {0.0 0.15 0.0} - - Distances are measured in units of box-length fractions, not Angstroms. - - Alternately if you have a solute whose atoms are all of type 1, - then you can also try this to center the box around it: - - pbc wrap -sel type=1 -all -centersel type=2 -center com - -4) - You should check if your periodic boundary conditions are too small. - To do that: - select Graphics->Representations menu option - click on the "Periodic" tab, and - click on the "+x", "-x", "+y", "-y", "+z", "-z" checkboxes. - -5) Optional: If you like, change the atom types in the PSF file so - that VMD recognizes the atom types, use something like: - -sed -e 's/ 1 1 / C C /g' < system.psf > temp1.psf -sed -e 's/ 2 2 / H H /g' < temp1.psf > temp2.psf -sed -e 's/ 3 3 / P P /g' < temp2.psf > system.psf - -(If you do this, it might effect step 2 above.) diff --git a/tools/moltemplate/examples/file_conversion_examples/convert_LAMMPS_to_LT_examples/cnad-cnt/README_FIRST.TXT b/tools/moltemplate/examples/file_conversion_examples/convert_LAMMPS_to_LT_examples/cnad-cnt/README_FIRST.txt similarity index 94% rename from tools/moltemplate/examples/file_conversion_examples/convert_LAMMPS_to_LT_examples/cnad-cnt/README_FIRST.TXT rename to tools/moltemplate/examples/file_conversion_examples/convert_LAMMPS_to_LT_examples/cnad-cnt/README_FIRST.txt index d69f1d6ffab9afd920810ba74e73ede17a4a30f2..83a733e1f932481d77e1f1b3b65ac5bfbacc1786 100644 --- a/tools/moltemplate/examples/file_conversion_examples/convert_LAMMPS_to_LT_examples/cnad-cnt/README_FIRST.TXT +++ b/tools/moltemplate/examples/file_conversion_examples/convert_LAMMPS_to_LT_examples/cnad-cnt/README_FIRST.txt @@ -4,31 +4,31 @@ ########################################################### # Author: Aysun Itai and Andrew Jewett -This example uses "ltemplify.py" to create molecule templates out +This example uses "ltemplify.py" to create molecule templates out of two different molecules in a pre-existing LAMMPS IN/DATA file. -Then I show how to use "moltemplate.sh" to make copies of these +Then I show how to use "moltemplate.sh" to make copies of these molecules and to move and rotate them (creating new LAMMPS IN/DATA files). Disclaimer: The molecules in this example are not physically realistic. The purpose of this example is to demonstrate ltemplify usage. - REQUIRED INPUT FILES + REQUIRED INPUT FILES cnad-cnt.data cnad-cnt.in system.lt cnad-cnt.data - This is a LAMMPS data file containing the coordinates and the topology + This is a LAMMPS data file containing the coordinates and the topology for a system combining the two molecules together. ltemplify will extract molecules from this file, one at a time. cnad-cnt.in This file contains force-field parameters and old run settings for the system. - (We ignore the run settings in this file.) The force-field parameters in - the "cnad-cnt.in" file are only necessary because we are going to build - a completely new set of simulation input files. (We are not only going to - rotate them and duplicate the molecules.) ltemplify.py will extract the - force field parameters from this file. This approach allows us to combine + (We ignore the run settings in this file.) The force-field parameters in + the "cnad-cnt.in" file are only necessary because we are going to build + a completely new set of simulation input files. (We are not only going to + rotate them and duplicate the molecules.) ltemplify.py will extract the + force field parameters from this file. This approach allows us to combine these molecules with other types of molecules later on.) system.lt @@ -48,15 +48,15 @@ creates new LAMMPS data and input files: system.data, system.in, system.in.init, system.in.settings (These files are referenced in run.in.nvt.) -You can run a simulation from the files created by moltemplate using +You can run a simulation from the files created by moltemplate using lmp_linux -i run.in.nvt NOTE: BECAUSE ALL OF THE ORIGINAL FORCE FIELD PARAMETERS WERE INTENTIONALLY ALTERED, THE SYSTEM WILL MOVE IN A VERY UNREALISTIC WAY WHEN SIMULATED. (This was done to protect the original source of the files.) - The goal of this example is only to demonstrate how to use - "ltemplify.py" to convert lammps input and data files into + The goal of this example is only to demonstrate how to use + "ltemplify.py" to convert lammps input and data files into LT format and back again.) ----------- diff --git a/tools/moltemplate/examples/file_conversion_examples/convert_LAMMPS_to_LT_examples/cnad-cnt/README_step2_run_moltemplate.sh b/tools/moltemplate/examples/file_conversion_examples/convert_LAMMPS_to_LT_examples/cnad-cnt/README_step2_run_moltemplate.sh index 6903a855f9c4ab08a6f567be57032725372e9c04..c23648993673597e9eb202370af902738dca0d37 100755 --- a/tools/moltemplate/examples/file_conversion_examples/convert_LAMMPS_to_LT_examples/cnad-cnt/README_step2_run_moltemplate.sh +++ b/tools/moltemplate/examples/file_conversion_examples/convert_LAMMPS_to_LT_examples/cnad-cnt/README_step2_run_moltemplate.sh @@ -15,7 +15,7 @@ moltemplate.sh system.lt # These files are the input files directly read by LAMMPS. # Optional: -# The "./output_ttree/" directory is full of temporary files generated by +# The "./output_ttree/" directory is full of temporary files generated by # moltemplate. They can be useful for debugging, but are usually thrown away. rm -rf output_ttree/ diff --git a/tools/moltemplate/examples/file_conversion_examples/convert_LAMMPS_to_LT_examples/cnad-cnt/README_step3_run_lammps.sh b/tools/moltemplate/examples/file_conversion_examples/convert_LAMMPS_to_LT_examples/cnad-cnt/README_step3_run_lammps.sh index ab9a7dc6e8927f477b24f8968867236ea2a77490..6a3f57fac57101b2fe24f39fbf423957947e7f84 100755 --- a/tools/moltemplate/examples/file_conversion_examples/convert_LAMMPS_to_LT_examples/cnad-cnt/README_step3_run_lammps.sh +++ b/tools/moltemplate/examples/file_conversion_examples/convert_LAMMPS_to_LT_examples/cnad-cnt/README_step3_run_lammps.sh @@ -1,7 +1,7 @@ # --- Running LAMMPS --- # -- Prerequisites: -- -# The "run.in.nvt" LAMMPS input script links to the input -# scripts and data files you hopefully have created earlier +# The "run.in.nvt" LAMMPS input script links to the input +# scripts and data files you hopefully have created earlier # with moltemplate.sh: # system.in.init, system.in.settings, system.data # If not, carry out the instructions in "README_run_moltemplate.sh". diff --git a/tools/moltemplate/examples/file_conversion_examples/convert_LAMMPS_to_LT_examples/cnad-cnt/README_visualize.txt b/tools/moltemplate/examples/file_conversion_examples/convert_LAMMPS_to_LT_examples/cnad-cnt/README_visualize.txt index 3b9be3e9c38622e4162279027b0c2e4f89739e8e..82315d2bdea9e279845230946b176abda75b83f8 100644 --- a/tools/moltemplate/examples/file_conversion_examples/convert_LAMMPS_to_LT_examples/cnad-cnt/README_visualize.txt +++ b/tools/moltemplate/examples/file_conversion_examples/convert_LAMMPS_to_LT_examples/cnad-cnt/README_visualize.txt @@ -4,7 +4,7 @@ 1) Build a PSF file for use in viewing with VMD. -This step works with VMD 1.9 and topotools 1.2. +This step works with VMD 1.9 and topotools 1.2. (Older versions, like VMD 1.8.6, don't support this.) @@ -40,7 +40,7 @@ d) Enter: pbc wrap -compound res -all pbc box -3) Optional: If you like, change the atom types in the PSF file so +3) Optional: If you like, change the atom types in the PSF file so that VMD recognizes the atom types, use something like: sed -e 's/ 1 1 / C C /g' < system.psf > temp1.psf diff --git a/tools/moltemplate/examples/file_conversion_examples/convert_LAMMPS_to_LT_examples/cnad-cnt/images/for_visualization/psf_file_created_by_topotools/cnad-cnt_after_rotate_and_copy.psf b/tools/moltemplate/examples/file_conversion_examples/convert_LAMMPS_to_LT_examples/cnad-cnt/images/for_visualization/psf_file_created_by_topotools/cnad-cnt_after_rotate_and_copy.psf deleted file mode 100644 index 7b2b0667678fe042f106d489de44791e5b0d1190..0000000000000000000000000000000000000000 --- a/tools/moltemplate/examples/file_conversion_examples/convert_LAMMPS_to_LT_examples/cnad-cnt/images/for_visualization/psf_file_created_by_topotools/cnad-cnt_after_rotate_and_copy.psf +++ /dev/null @@ -1,598 +0,0 @@ -PSF - - 1 !NTITLE - REMARKS VMD generated structure x-plor psf file - - 130 !NATOM - 1 1 1 1 0.000000 10.0000 0 - 2 1 1 1 0.000000 10.0000 0 - 3 1 1 1 0.000000 10.0000 0 - 4 1 1 1 0.000000 10.0000 0 - 5 1 1 1 0.000000 10.0000 0 - 6 1 1 1 0.000000 10.0000 0 - 7 1 1 1 0.000000 10.0000 0 - 8 1 1 1 0.000000 10.0000 0 - 9 1 1 1 0.000000 10.0000 0 - 10 1 1 1 0.000000 10.0000 0 - 11 1 1 1 0.000000 10.0000 0 - 12 1 1 1 0.000000 10.0000 0 - 13 1 1 1 0.000000 10.0000 0 - 14 1 1 1 0.000000 10.0000 0 - 15 1 1 1 0.000000 10.0000 0 - 16 1 1 1 0.000000 10.0000 0 - 17 1 1 1 0.000000 10.0000 0 - 18 1 1 1 0.000000 10.0000 0 - 19 1 1 1 0.000000 10.0000 0 - 20 1 1 1 0.000000 10.0000 0 - 21 1 1 1 0.000000 10.0000 0 - 22 1 1 1 0.000000 10.0000 0 - 23 1 1 1 0.000000 10.0000 0 - 24 1 1 1 0.000000 10.0000 0 - 25 1 1 1 0.000000 10.0000 0 - 26 1 1 1 0.000000 10.0000 0 - 27 1 1 1 0.000000 10.0000 0 - 28 1 1 1 0.000000 10.0000 0 - 29 1 1 1 0.000000 10.0000 0 - 30 1 1 1 0.000000 10.0000 0 - 31 1 1 1 0.000000 10.0000 0 - 32 1 1 1 0.000000 10.0000 0 - 33 1 1 1 0.000000 10.0000 0 - 34 1 1 1 0.000000 10.0000 0 - 35 1 1 1 0.000000 10.0000 0 - 36 1 1 1 0.000000 10.0000 0 - 37 1 1 1 0.000000 10.0000 0 - 38 1 1 1 0.000000 10.0000 0 - 39 1 1 1 0.000000 10.0000 0 - 40 1 1 1 0.000000 10.0000 0 - 41 1 1 1 0.000000 10.0000 0 - 42 1 1 1 0.000000 10.0000 0 - 43 1 1 1 0.000000 10.0000 0 - 44 1 1 1 0.000000 10.0000 0 - 45 1 1 1 0.000000 10.0000 0 - 46 1 1 1 0.000000 10.0000 0 - 47 1 1 1 0.000000 10.0000 0 - 48 1 1 1 0.000000 10.0000 0 - 49 1 1 1 0.000000 10.0000 0 - 50 1 1 1 0.000000 10.0000 0 - 51 1 1 1 0.000000 10.0000 0 - 52 1 1 1 0.000000 10.0000 0 - 53 1 1 1 0.000000 10.0000 0 - 54 1 1 1 0.000000 10.0000 0 - 55 1 1 1 0.000000 10.0000 0 - 56 1 1 1 0.000000 10.0000 0 - 57 1 1 1 0.000000 10.0000 0 - 58 1 1 1 0.000000 10.0000 0 - 59 1 1 1 0.000000 10.0000 0 - 60 1 1 1 0.000000 10.0000 0 - 61 1 1 1 0.000000 10.0000 0 - 62 1 1 1 0.000000 10.0000 0 - 63 1 1 1 0.000000 10.0000 0 - 64 1 1 1 0.000000 10.0000 0 - 65 1 1 1 0.000000 10.0000 0 - 66 1 1 1 0.000000 10.0000 0 - 67 1 1 1 0.000000 10.0000 0 - 68 1 1 1 0.000000 10.0000 0 - 69 1 1 1 0.000000 10.0000 0 - 70 1 1 1 0.000000 10.0000 0 - 71 1 1 1 0.000000 10.0000 0 - 72 1 1 1 0.000000 10.0000 0 - 73 2 9 9 -0.180000 10.0000 0 - 74 2 4 4 0.090000 10.0000 0 - 75 2 4 4 0.090000 10.0000 0 - 76 2 9 9 -0.090000 10.0000 0 - 77 2 4 4 0.090000 10.0000 0 - 78 2 10 10 -0.180000 10.0000 0 - 79 2 5 5 0.090000 10.0000 0 - 80 2 5 5 0.090000 10.0000 0 - 81 2 11 11 -0.090000 10.0000 0 - 82 2 4 4 0.090000 10.0000 0 - 83 2 10 10 -0.180000 10.0000 0 - 84 2 5 5 0.090000 10.0000 0 - 85 2 5 5 0.090000 10.0000 0 - 86 2 12 12 -0.090000 10.0000 0 - 87 2 4 4 0.090000 10.0000 0 - 88 2 8 8 0.280000 10.0000 0 - 89 2 16 16 -0.710000 10.0000 0 - 90 2 7 7 0.340000 10.0000 0 - 91 2 3 3 0.120000 10.0000 0 - 92 2 14 14 -0.050000 10.0000 0 - 93 2 15 15 -0.740000 10.0000 0 - 94 2 7 7 0.500000 10.0000 0 - 95 2 3 3 0.130000 10.0000 0 - 96 2 15 15 -0.750000 10.0000 0 - 97 2 8 8 0.430000 10.0000 0 - 98 2 6 6 0.460000 10.0000 0 - 99 2 13 13 -0.770000 10.0000 0 - 100 2 2 2 0.380000 10.0000 0 - 101 2 2 2 0.380000 10.0000 0 - 102 3 9 9 -0.180000 10.0000 0 - 103 3 4 4 0.090000 10.0000 0 - 104 3 4 4 0.090000 10.0000 0 - 105 3 9 9 -0.090000 10.0000 0 - 106 3 4 4 0.090000 10.0000 0 - 107 3 10 10 -0.180000 10.0000 0 - 108 3 5 5 0.090000 10.0000 0 - 109 3 5 5 0.090000 10.0000 0 - 110 3 11 11 -0.090000 10.0000 0 - 111 3 4 4 0.090000 10.0000 0 - 112 3 10 10 -0.180000 10.0000 0 - 113 3 5 5 0.090000 10.0000 0 - 114 3 5 5 0.090000 10.0000 0 - 115 3 12 12 -0.090000 10.0000 0 - 116 3 4 4 0.090000 10.0000 0 - 117 3 8 8 0.280000 10.0000 0 - 118 3 16 16 -0.710000 10.0000 0 - 119 3 7 7 0.340000 10.0000 0 - 120 3 3 3 0.120000 10.0000 0 - 121 3 14 14 -0.050000 10.0000 0 - 122 3 15 15 -0.740000 10.0000 0 - 123 3 7 7 0.500000 10.0000 0 - 124 3 3 3 0.130000 10.0000 0 - 125 3 15 15 -0.750000 10.0000 0 - 126 3 8 8 0.430000 10.0000 0 - 127 3 6 6 0.460000 10.0000 0 - 128 3 13 13 -0.770000 10.0000 0 - 129 3 2 2 0.380000 10.0000 0 - 130 3 2 2 0.380000 10.0000 0 - - 166 !NBOND: bonds - 1 2 1 22 2 3 2 5 - 3 24 3 4 4 7 4 29 - 5 6 6 7 6 9 7 8 - 8 33 8 11 9 10 10 13 - 10 11 11 12 12 15 12 37 - 13 14 14 17 14 15 15 16 - 16 19 16 41 17 18 18 21 - 18 19 19 20 20 23 20 45 - 21 22 22 23 23 24 24 25 - 25 26 25 46 26 27 26 29 - 27 48 27 28 28 31 28 53 - 29 30 30 31 30 33 31 32 - 32 57 32 35 33 34 34 37 - 34 35 35 36 36 39 36 61 - 37 38 38 41 38 39 39 40 - 40 43 40 65 41 42 42 45 - 42 43 43 44 44 47 44 69 - 45 46 46 47 47 48 48 49 - 49 50 49 70 50 51 50 53 - 51 72 51 52 52 55 53 54 - 54 55 54 57 55 56 56 59 - 57 58 58 61 58 59 59 60 - 60 63 61 62 62 65 62 63 - 63 64 64 67 65 66 66 69 - 66 67 67 68 68 71 69 70 - 70 71 71 72 73 81 73 74 - 73 75 73 78 76 78 76 77 - 76 92 76 86 78 79 78 80 - 81 86 81 83 81 82 83 86 - 83 84 83 85 86 87 88 89 - 88 97 88 98 89 90 90 91 - 90 92 92 97 93 98 93 94 - 94 95 94 96 96 97 98 99 - 99 100 99 101 102 110 102 103 - 102 104 102 107 105 107 105 106 - 105 121 105 115 107 108 107 109 - 110 115 110 112 110 111 112 115 - 112 113 112 114 115 116 117 118 - 117 126 117 127 118 119 119 120 - 119 121 121 126 122 127 122 123 - 123 124 123 125 125 126 127 128 - 128 129 128 130 - - 312 !NTHETA: angles - 2 1 22 1 2 3 1 2 5 - 3 2 5 2 3 24 2 3 4 - 4 3 24 3 4 7 3 4 29 - 7 4 29 2 5 6 5 6 7 - 5 6 9 7 6 9 4 7 6 - 4 7 8 6 7 8 7 8 33 - 7 8 11 11 8 33 6 9 10 - 9 10 13 9 10 11 11 10 13 - 8 11 10 8 11 12 10 11 12 - 11 12 15 11 12 37 15 12 37 - 10 13 14 13 14 17 13 14 15 - 15 14 17 12 15 14 12 15 16 - 14 15 16 15 16 19 15 16 41 - 19 16 41 14 17 18 17 18 21 - 17 18 19 19 18 21 16 19 18 - 16 19 20 18 19 20 19 20 23 - 19 20 45 23 20 45 18 21 22 - 1 22 21 1 22 23 21 22 23 - 20 23 22 20 23 24 22 23 24 - 3 24 23 3 24 25 23 24 25 - 24 25 26 24 25 46 26 25 46 - 25 26 27 25 26 29 27 26 29 - 26 27 48 26 27 28 28 27 48 - 27 28 31 27 28 53 31 28 53 - 4 29 26 4 29 30 26 29 30 - 29 30 31 29 30 33 31 30 33 - 28 31 30 28 31 32 30 31 32 - 31 32 57 31 32 35 35 32 57 - 8 33 30 8 33 34 30 33 34 - 33 34 37 33 34 35 35 34 37 - 32 35 34 32 35 36 34 35 36 - 35 36 39 35 36 61 39 36 61 - 12 37 34 12 37 38 34 37 38 - 37 38 41 37 38 39 39 38 41 - 36 39 38 36 39 40 38 39 40 - 39 40 43 39 40 65 43 40 65 - 16 41 38 16 41 42 38 41 42 - 41 42 45 41 42 43 43 42 45 - 40 43 42 40 43 44 42 43 44 - 43 44 47 43 44 69 47 44 69 - 20 45 42 20 45 46 42 45 46 - 25 46 45 25 46 47 45 46 47 - 44 47 46 44 47 48 46 47 48 - 27 48 47 27 48 49 47 48 49 - 48 49 50 48 49 70 50 49 70 - 49 50 51 49 50 53 51 50 53 - 50 51 72 50 51 52 52 51 72 - 51 52 55 28 53 50 28 53 54 - 50 53 54 53 54 55 53 54 57 - 55 54 57 52 55 54 52 55 56 - 54 55 56 55 56 59 32 57 54 - 32 57 58 54 57 58 57 58 61 - 57 58 59 59 58 61 56 59 58 - 56 59 60 58 59 60 59 60 63 - 36 61 58 36 61 62 58 61 62 - 61 62 65 61 62 63 63 62 65 - 60 63 62 60 63 64 62 63 64 - 63 64 67 40 65 62 40 65 66 - 62 65 66 65 66 69 65 66 67 - 67 66 69 64 67 66 64 67 68 - 66 67 68 67 68 71 44 69 66 - 44 69 70 66 69 70 49 70 69 - 49 70 71 69 70 71 68 71 70 - 68 71 72 70 71 72 51 72 71 - 73 81 82 73 81 83 73 81 86 - 73 78 80 73 78 79 74 73 75 - 76 92 90 76 92 97 76 86 87 - 76 86 83 76 86 81 76 78 80 - 76 78 79 73 78 76 77 76 92 - 78 76 92 77 76 78 75 73 78 - 74 73 78 78 73 81 79 78 80 - 81 86 87 81 86 83 81 83 85 - 81 83 84 81 83 86 75 73 81 - 74 73 81 83 86 87 82 81 83 - 84 83 85 85 83 86 84 83 86 - 82 81 86 83 81 86 86 76 92 - 77 76 86 78 76 86 88 98 93 - 88 89 90 89 88 97 89 90 91 - 88 97 92 92 97 96 89 90 92 - 91 90 92 93 94 96 93 94 95 - 94 93 98 95 94 96 88 97 96 - 94 96 97 90 92 97 98 99 101 - 98 99 100 97 88 98 89 88 98 - 93 98 99 88 98 99 100 99 101 - 102 110 111 102 110 112 102 110 115 - 102 107 109 102 107 108 103 102 104 - 105 121 119 105 121 126 105 115 116 - 105 115 112 105 115 110 105 107 109 - 105 107 108 102 107 105 106 105 121 - 107 105 121 106 105 107 104 102 107 - 103 102 107 107 102 110 108 107 109 - 110 115 116 110 115 112 110 112 114 - 110 112 113 110 112 115 104 102 110 - 103 102 110 112 115 116 111 110 112 - 113 112 114 114 112 115 113 112 115 - 111 110 115 112 110 115 115 105 121 - 106 105 115 107 105 115 117 127 122 - 117 118 119 118 117 126 118 119 120 - 117 126 121 121 126 125 118 119 121 - 120 119 121 122 123 125 122 123 124 - 123 122 127 124 123 125 117 126 125 - 123 125 126 119 121 126 127 128 130 - 127 128 129 126 117 127 118 117 127 - 122 127 128 117 127 128 129 128 130 - - 554 !NPHI: dihedrals - 22 1 2 3 22 1 2 5 - 2 1 22 21 2 1 22 23 - 1 2 3 24 1 2 3 4 - 5 2 3 24 5 2 3 4 - 1 2 5 6 3 2 5 6 - 2 3 24 23 2 3 24 25 - 4 3 24 23 4 3 24 25 - 2 3 4 7 2 3 4 29 - 24 3 4 7 24 3 4 29 - 3 4 7 6 3 4 7 8 - 29 4 7 6 29 4 7 8 - 3 4 29 26 3 4 29 30 - 7 4 29 26 7 4 29 30 - 2 5 6 7 2 5 6 9 - 5 6 7 4 5 6 7 8 - 9 6 7 4 9 6 7 8 - 5 6 9 10 7 6 9 10 - 4 7 8 33 4 7 8 11 - 6 7 8 33 6 7 8 11 - 7 8 33 30 7 8 33 34 - 11 8 33 30 11 8 33 34 - 7 8 11 10 7 8 11 12 - 33 8 11 10 33 8 11 12 - 6 9 10 13 6 9 10 11 - 9 10 13 14 11 10 13 14 - 9 10 11 8 9 10 11 12 - 13 10 11 8 13 10 11 12 - 8 11 12 15 8 11 12 37 - 10 11 12 15 10 11 12 37 - 11 12 15 14 11 12 15 16 - 37 12 15 14 37 12 15 16 - 11 12 37 34 11 12 37 38 - 15 12 37 34 15 12 37 38 - 10 13 14 17 10 13 14 15 - 13 14 17 18 15 14 17 18 - 13 14 15 12 13 14 15 16 - 17 14 15 12 17 14 15 16 - 12 15 16 19 12 15 16 41 - 14 15 16 19 14 15 16 41 - 15 16 19 18 15 16 19 20 - 41 16 19 18 41 16 19 20 - 15 16 41 38 15 16 41 42 - 19 16 41 38 19 16 41 42 - 14 17 18 21 14 17 18 19 - 17 18 21 22 19 18 21 22 - 17 18 19 16 17 18 19 20 - 21 18 19 16 21 18 19 20 - 16 19 20 23 16 19 20 45 - 18 19 20 23 18 19 20 45 - 19 20 23 22 19 20 23 24 - 45 20 23 22 45 20 23 24 - 19 20 45 42 19 20 45 46 - 23 20 45 42 23 20 45 46 - 18 21 22 1 18 21 22 23 - 1 22 23 20 1 22 23 24 - 21 22 23 20 21 22 23 24 - 20 23 24 3 20 23 24 25 - 22 23 24 3 22 23 24 25 - 3 24 25 26 3 24 25 46 - 23 24 25 26 23 24 25 46 - 24 25 26 27 24 25 26 29 - 46 25 26 27 46 25 26 29 - 24 25 46 45 24 25 46 47 - 26 25 46 45 26 25 46 47 - 25 26 27 48 25 26 27 28 - 29 26 27 48 29 26 27 28 - 25 26 29 4 25 26 29 30 - 27 26 29 4 27 26 29 30 - 26 27 48 47 26 27 48 49 - 28 27 48 47 28 27 48 49 - 26 27 28 31 26 27 28 53 - 48 27 28 31 48 27 28 53 - 27 28 31 30 27 28 31 32 - 53 28 31 30 53 28 31 32 - 27 28 53 50 27 28 53 54 - 31 28 53 50 31 28 53 54 - 4 29 30 31 4 29 30 33 - 26 29 30 31 26 29 30 33 - 29 30 31 28 29 30 31 32 - 33 30 31 28 33 30 31 32 - 29 30 33 8 29 30 33 34 - 31 30 33 8 31 30 33 34 - 28 31 32 57 28 31 32 35 - 30 31 32 57 30 31 32 35 - 31 32 57 54 31 32 57 58 - 35 32 57 54 35 32 57 58 - 31 32 35 34 31 32 35 36 - 57 32 35 34 57 32 35 36 - 8 33 34 37 8 33 34 35 - 30 33 34 37 30 33 34 35 - 33 34 37 12 33 34 37 38 - 35 34 37 12 35 34 37 38 - 33 34 35 32 33 34 35 36 - 37 34 35 32 37 34 35 36 - 32 35 36 39 32 35 36 61 - 34 35 36 39 34 35 36 61 - 35 36 39 38 35 36 39 40 - 61 36 39 38 61 36 39 40 - 35 36 61 58 35 36 61 62 - 39 36 61 58 39 36 61 62 - 12 37 38 41 12 37 38 39 - 34 37 38 41 34 37 38 39 - 37 38 41 16 37 38 41 42 - 39 38 41 16 39 38 41 42 - 37 38 39 36 37 38 39 40 - 41 38 39 36 41 38 39 40 - 36 39 40 43 36 39 40 65 - 38 39 40 43 38 39 40 65 - 39 40 43 42 39 40 43 44 - 65 40 43 42 65 40 43 44 - 39 40 65 62 39 40 65 66 - 43 40 65 62 43 40 65 66 - 16 41 42 45 16 41 42 43 - 38 41 42 45 38 41 42 43 - 41 42 45 20 41 42 45 46 - 43 42 45 20 43 42 45 46 - 41 42 43 40 41 42 43 44 - 45 42 43 40 45 42 43 44 - 40 43 44 47 40 43 44 69 - 42 43 44 47 42 43 44 69 - 43 44 47 46 43 44 47 48 - 69 44 47 46 69 44 47 48 - 43 44 69 66 43 44 69 70 - 47 44 69 66 47 44 69 70 - 20 45 46 25 20 45 46 47 - 42 45 46 25 42 45 46 47 - 25 46 47 44 25 46 47 48 - 45 46 47 44 45 46 47 48 - 44 47 48 27 44 47 48 49 - 46 47 48 27 46 47 48 49 - 27 48 49 50 27 48 49 70 - 47 48 49 50 47 48 49 70 - 48 49 50 51 48 49 50 53 - 70 49 50 51 70 49 50 53 - 48 49 70 69 48 49 70 71 - 50 49 70 69 50 49 70 71 - 49 50 51 72 49 50 51 52 - 53 50 51 72 53 50 51 52 - 49 50 53 28 49 50 53 54 - 51 50 53 28 51 50 53 54 - 50 51 72 71 52 51 72 71 - 50 51 52 55 72 51 52 55 - 51 52 55 54 51 52 55 56 - 28 53 54 55 28 53 54 57 - 50 53 54 55 50 53 54 57 - 53 54 55 52 53 54 55 56 - 57 54 55 52 57 54 55 56 - 53 54 57 32 53 54 57 58 - 55 54 57 32 55 54 57 58 - 52 55 56 59 54 55 56 59 - 55 56 59 58 55 56 59 60 - 32 57 58 61 32 57 58 59 - 54 57 58 61 54 57 58 59 - 57 58 61 36 57 58 61 62 - 59 58 61 36 59 58 61 62 - 57 58 59 56 57 58 59 60 - 61 58 59 56 61 58 59 60 - 56 59 60 63 58 59 60 63 - 59 60 63 62 59 60 63 64 - 36 61 62 65 36 61 62 63 - 58 61 62 65 58 61 62 63 - 61 62 65 40 61 62 65 66 - 63 62 65 40 63 62 65 66 - 61 62 63 60 61 62 63 64 - 65 62 63 60 65 62 63 64 - 60 63 64 67 62 63 64 67 - 63 64 67 66 63 64 67 68 - 40 65 66 69 40 65 66 67 - 62 65 66 69 62 65 66 67 - 65 66 69 44 65 66 69 70 - 67 66 69 44 67 66 69 70 - 65 66 67 64 65 66 67 68 - 69 66 67 64 69 66 67 68 - 64 67 68 71 66 67 68 71 - 67 68 71 70 67 68 71 72 - 44 69 70 49 44 69 70 71 - 66 69 70 49 66 69 70 71 - 49 70 71 68 49 70 71 72 - 69 70 71 68 69 70 71 72 - 68 71 72 51 70 71 72 51 - 73 81 86 76 73 81 86 83 - 73 81 86 87 73 81 83 86 - 73 81 83 84 73 81 83 85 - 86 76 78 73 77 76 78 73 - 92 76 78 73 74 73 78 76 - 74 73 78 79 74 73 78 80 - 74 73 81 86 74 73 81 83 - 74 73 81 82 75 73 78 76 - 75 73 78 79 75 73 78 80 - 75 73 81 86 75 73 81 83 - 75 73 81 82 76 92 97 96 - 76 92 97 88 91 90 92 76 - 89 90 92 76 83 81 86 76 - 82 81 86 76 81 83 86 76 - 84 83 86 76 85 83 86 76 - 81 73 78 76 77 76 86 81 - 77 76 86 83 77 76 86 87 - 77 76 78 79 77 76 78 80 - 77 76 92 97 77 76 92 90 - 78 76 86 81 78 76 86 83 - 78 76 86 87 78 76 92 97 - 78 76 92 90 78 73 81 86 - 78 73 81 83 78 73 81 82 - 86 76 78 79 92 76 78 79 - 81 73 78 79 86 76 78 80 - 92 76 78 80 81 73 78 80 - 92 76 86 81 84 83 86 81 - 85 83 86 81 81 83 86 87 - 82 81 86 83 82 81 86 87 - 82 81 83 86 82 81 83 84 - 82 81 83 85 92 76 86 83 - 83 81 86 87 86 81 83 84 - 84 83 86 87 86 81 83 85 - 85 83 86 87 86 76 92 97 - 86 76 92 90 92 76 86 87 - 88 98 99 100 88 98 99 101 - 94 93 98 88 90 92 97 88 - 94 96 97 88 88 89 90 92 - 88 89 90 91 89 90 92 97 - 89 88 98 99 89 88 98 93 - 89 88 97 92 89 88 97 96 - 90 92 97 96 98 88 89 90 - 97 88 89 90 91 90 92 97 - 94 96 97 92 98 88 97 92 - 93 98 99 100 93 98 99 101 - 97 88 98 93 93 94 96 97 - 94 93 98 99 98 93 94 95 - 95 94 96 97 98 88 97 96 - 98 93 94 96 102 110 115 105 - 102 110 115 112 102 110 115 116 - 102 110 112 115 102 110 112 113 - 102 110 112 114 115 105 107 102 - 106 105 107 102 121 105 107 102 - 103 102 107 105 103 102 107 108 - 103 102 107 109 103 102 110 115 - 103 102 110 112 103 102 110 111 - 104 102 107 105 104 102 107 108 - 104 102 107 109 104 102 110 115 - 104 102 110 112 104 102 110 111 - 105 121 126 125 105 121 126 117 - 120 119 121 105 118 119 121 105 - 112 110 115 105 111 110 115 105 - 110 112 115 105 113 112 115 105 - 114 112 115 105 110 102 107 105 - 106 105 115 110 106 105 115 112 - 106 105 115 116 106 105 107 108 - 106 105 107 109 106 105 121 126 - 106 105 121 119 107 105 115 110 - 107 105 115 112 107 105 115 116 - 107 105 121 126 107 105 121 119 - 107 102 110 115 107 102 110 112 - 107 102 110 111 115 105 107 108 - 121 105 107 108 110 102 107 108 - 115 105 107 109 121 105 107 109 - 110 102 107 109 121 105 115 110 - 113 112 115 110 114 112 115 110 - 110 112 115 116 111 110 115 112 - 111 110 115 116 111 110 112 115 - 111 110 112 113 111 110 112 114 - 121 105 115 112 112 110 115 116 - 115 110 112 113 113 112 115 116 - 115 110 112 114 114 112 115 116 - 115 105 121 126 115 105 121 119 - 121 105 115 116 117 127 128 129 - 117 127 128 130 123 122 127 117 - 119 121 126 117 123 125 126 117 - 117 118 119 121 117 118 119 120 - 118 119 121 126 118 117 127 128 - 118 117 127 122 118 117 126 121 - 118 117 126 125 119 121 126 125 - 127 117 118 119 126 117 118 119 - 120 119 121 126 123 125 126 121 - 127 117 126 121 122 127 128 129 - 122 127 128 130 126 117 127 122 - 122 123 125 126 123 122 127 128 - 127 122 123 124 124 123 125 126 - 127 117 126 125 127 122 123 125 - - 0 !NIMPHI: impropers - - - 0 !NDON: donors - - - 0 !NACC: acceptors - - - 0 !NNB - - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 - - 1 0 !NGRP - 0 0 0 - diff --git a/tools/moltemplate/examples/file_conversion_examples/convert_LAMMPS_to_LT_examples/cnad-cnt/images/for_visualization/psf_file_created_by_topotools/cnad-cnt_orig.psf b/tools/moltemplate/examples/file_conversion_examples/convert_LAMMPS_to_LT_examples/cnad-cnt/images/for_visualization/psf_file_created_by_topotools/cnad-cnt_orig.psf deleted file mode 100644 index cb8d7eda975fdd5a64c53a17bcfc877777457eb3..0000000000000000000000000000000000000000 --- a/tools/moltemplate/examples/file_conversion_examples/convert_LAMMPS_to_LT_examples/cnad-cnt/images/for_visualization/psf_file_created_by_topotools/cnad-cnt_orig.psf +++ /dev/null @@ -1,489 +0,0 @@ -PSF - - 1 !NTITLE - REMARKS VMD generated structure x-plor psf file - - 101 !NATOM - 1 2 1 1 0.000000 10.0000 0 - 2 2 1 1 0.000000 10.0000 0 - 3 2 1 1 0.000000 10.0000 0 - 4 2 1 1 0.000000 10.0000 0 - 5 2 1 1 0.000000 10.0000 0 - 6 2 1 1 0.000000 10.0000 0 - 7 2 1 1 0.000000 10.0000 0 - 8 2 1 1 0.000000 10.0000 0 - 9 2 1 1 0.000000 10.0000 0 - 10 2 1 1 0.000000 10.0000 0 - 11 2 1 1 0.000000 10.0000 0 - 12 2 1 1 0.000000 10.0000 0 - 13 2 1 1 0.000000 10.0000 0 - 14 2 1 1 0.000000 10.0000 0 - 15 2 1 1 0.000000 10.0000 0 - 16 2 1 1 0.000000 10.0000 0 - 17 2 1 1 0.000000 10.0000 0 - 18 2 1 1 0.000000 10.0000 0 - 19 2 1 1 0.000000 10.0000 0 - 20 2 1 1 0.000000 10.0000 0 - 21 2 1 1 0.000000 10.0000 0 - 22 2 1 1 0.000000 10.0000 0 - 23 2 1 1 0.000000 10.0000 0 - 24 2 1 1 0.000000 10.0000 0 - 25 2 1 1 0.000000 10.0000 0 - 26 2 1 1 0.000000 10.0000 0 - 27 2 1 1 0.000000 10.0000 0 - 28 2 1 1 0.000000 10.0000 0 - 29 2 1 1 0.000000 10.0000 0 - 30 2 1 1 0.000000 10.0000 0 - 31 2 1 1 0.000000 10.0000 0 - 32 2 1 1 0.000000 10.0000 0 - 33 2 1 1 0.000000 10.0000 0 - 34 2 1 1 0.000000 10.0000 0 - 35 2 1 1 0.000000 10.0000 0 - 36 2 1 1 0.000000 10.0000 0 - 37 2 1 1 0.000000 10.0000 0 - 38 2 1 1 0.000000 10.0000 0 - 39 2 1 1 0.000000 10.0000 0 - 40 2 1 1 0.000000 10.0000 0 - 41 2 1 1 0.000000 10.0000 0 - 42 2 1 1 0.000000 10.0000 0 - 43 2 1 1 0.000000 10.0000 0 - 44 2 1 1 0.000000 10.0000 0 - 45 2 1 1 0.000000 10.0000 0 - 46 2 1 1 0.000000 10.0000 0 - 47 2 1 1 0.000000 10.0000 0 - 48 2 1 1 0.000000 10.0000 0 - 49 2 1 1 0.000000 10.0000 0 - 50 2 1 1 0.000000 10.0000 0 - 51 2 1 1 0.000000 10.0000 0 - 52 2 1 1 0.000000 10.0000 0 - 53 2 1 1 0.000000 10.0000 0 - 54 2 1 1 0.000000 10.0000 0 - 55 2 1 1 0.000000 10.0000 0 - 56 2 1 1 0.000000 10.0000 0 - 57 2 1 1 0.000000 10.0000 0 - 58 2 1 1 0.000000 10.0000 0 - 59 2 1 1 0.000000 10.0000 0 - 60 2 1 1 0.000000 10.0000 0 - 61 2 1 1 0.000000 10.0000 0 - 62 2 1 1 0.000000 10.0000 0 - 63 2 1 1 0.000000 10.0000 0 - 64 2 1 1 0.000000 10.0000 0 - 65 2 1 1 0.000000 10.0000 0 - 66 2 1 1 0.000000 10.0000 0 - 67 2 1 1 0.000000 10.0000 0 - 68 2 1 1 0.000000 10.0000 0 - 69 2 1 1 0.000000 10.0000 0 - 70 2 1 1 0.000000 10.0000 0 - 71 2 1 1 0.000000 10.0000 0 - 72 2 1 1 0.000000 10.0000 0 - 73 1 9 9 -0.180000 10.0000 0 - 74 1 4 4 0.090000 10.0000 0 - 75 1 4 4 0.090000 10.0000 0 - 76 1 9 9 -0.090000 10.0000 0 - 77 1 4 4 0.090000 10.0000 0 - 78 1 10 10 -0.180000 10.0000 0 - 79 1 5 5 0.090000 10.0000 0 - 80 1 5 5 0.090000 10.0000 0 - 81 1 11 11 -0.090000 10.0000 0 - 82 1 4 4 0.090000 10.0000 0 - 83 1 10 10 -0.180000 10.0000 0 - 84 1 5 5 0.090000 10.0000 0 - 85 1 5 5 0.090000 10.0000 0 - 86 1 12 12 -0.090000 10.0000 0 - 87 1 4 4 0.090000 10.0000 0 - 88 1 8 8 0.280000 10.0000 0 - 89 1 16 16 -0.710000 10.0000 0 - 90 1 7 7 0.340000 10.0000 0 - 91 1 3 3 0.120000 10.0000 0 - 92 1 14 14 -0.050000 10.0000 0 - 93 1 15 15 -0.740000 10.0000 0 - 94 1 7 7 0.500000 10.0000 0 - 95 1 3 3 0.130000 10.0000 0 - 96 1 15 15 -0.750000 10.0000 0 - 97 1 8 8 0.430000 10.0000 0 - 98 1 6 6 0.460000 10.0000 0 - 99 1 13 13 -0.770000 10.0000 0 - 100 1 2 2 0.380000 10.0000 0 - 101 1 2 2 0.380000 10.0000 0 - - 134 !NBOND: bonds - 1 2 1 22 2 3 2 5 - 3 24 3 4 4 7 4 29 - 5 6 6 7 6 9 7 8 - 8 33 8 11 9 10 10 13 - 10 11 11 12 12 15 12 37 - 13 14 14 17 14 15 15 16 - 16 19 16 41 17 18 18 21 - 18 19 19 20 20 23 20 45 - 21 22 22 23 23 24 24 25 - 25 26 25 46 26 27 26 29 - 27 48 27 28 28 31 28 53 - 29 30 30 31 30 33 31 32 - 32 57 32 35 33 34 34 37 - 34 35 35 36 36 39 36 61 - 37 38 38 41 38 39 39 40 - 40 43 40 65 41 42 42 45 - 42 43 43 44 44 47 44 69 - 45 46 46 47 47 48 48 49 - 49 50 49 70 50 51 50 53 - 51 72 51 52 52 55 53 54 - 54 55 54 57 55 56 56 59 - 57 58 58 61 58 59 59 60 - 60 63 61 62 62 65 62 63 - 63 64 64 67 65 66 66 69 - 66 67 67 68 68 71 69 70 - 70 71 71 72 73 81 73 74 - 73 75 73 78 76 78 76 77 - 76 92 76 86 78 79 78 80 - 81 86 81 83 81 82 83 86 - 83 84 83 85 86 87 88 89 - 88 97 88 98 89 90 90 91 - 90 92 92 97 93 98 93 94 - 94 95 94 96 96 97 98 99 - 99 100 99 101 - - 252 !NTHETA: angles - 2 1 22 1 2 3 1 2 5 - 3 2 5 2 3 24 2 3 4 - 4 3 24 3 4 7 3 4 29 - 7 4 29 2 5 6 5 6 7 - 5 6 9 7 6 9 4 7 6 - 4 7 8 6 7 8 7 8 33 - 7 8 11 11 8 33 6 9 10 - 9 10 13 9 10 11 11 10 13 - 8 11 10 8 11 12 10 11 12 - 11 12 15 11 12 37 15 12 37 - 10 13 14 13 14 17 13 14 15 - 15 14 17 12 15 14 12 15 16 - 14 15 16 15 16 19 15 16 41 - 19 16 41 14 17 18 17 18 21 - 17 18 19 19 18 21 16 19 18 - 16 19 20 18 19 20 19 20 23 - 19 20 45 23 20 45 18 21 22 - 1 22 21 1 22 23 21 22 23 - 20 23 22 20 23 24 22 23 24 - 3 24 23 3 24 25 23 24 25 - 24 25 26 24 25 46 26 25 46 - 25 26 27 25 26 29 27 26 29 - 26 27 48 26 27 28 28 27 48 - 27 28 31 27 28 53 31 28 53 - 4 29 26 4 29 30 26 29 30 - 29 30 31 29 30 33 31 30 33 - 28 31 30 28 31 32 30 31 32 - 31 32 57 31 32 35 35 32 57 - 8 33 30 8 33 34 30 33 34 - 33 34 37 33 34 35 35 34 37 - 32 35 34 32 35 36 34 35 36 - 35 36 39 35 36 61 39 36 61 - 12 37 34 12 37 38 34 37 38 - 37 38 41 37 38 39 39 38 41 - 36 39 38 36 39 40 38 39 40 - 39 40 43 39 40 65 43 40 65 - 16 41 38 16 41 42 38 41 42 - 41 42 45 41 42 43 43 42 45 - 40 43 42 40 43 44 42 43 44 - 43 44 47 43 44 69 47 44 69 - 20 45 42 20 45 46 42 45 46 - 25 46 45 25 46 47 45 46 47 - 44 47 46 44 47 48 46 47 48 - 27 48 47 27 48 49 47 48 49 - 48 49 50 48 49 70 50 49 70 - 49 50 51 49 50 53 51 50 53 - 50 51 72 50 51 52 52 51 72 - 51 52 55 28 53 50 28 53 54 - 50 53 54 53 54 55 53 54 57 - 55 54 57 52 55 54 52 55 56 - 54 55 56 55 56 59 32 57 54 - 32 57 58 54 57 58 57 58 61 - 57 58 59 59 58 61 56 59 58 - 56 59 60 58 59 60 59 60 63 - 36 61 58 36 61 62 58 61 62 - 61 62 65 61 62 63 63 62 65 - 60 63 62 60 63 64 62 63 64 - 63 64 67 40 65 62 40 65 66 - 62 65 66 65 66 69 65 66 67 - 67 66 69 64 67 66 64 67 68 - 66 67 68 67 68 71 44 69 66 - 44 69 70 66 69 70 49 70 69 - 49 70 71 69 70 71 68 71 70 - 68 71 72 70 71 72 51 72 71 - 73 81 82 73 81 83 73 81 86 - 73 78 80 73 78 79 74 73 75 - 76 92 90 76 92 97 76 86 87 - 76 86 83 76 86 81 76 78 80 - 76 78 79 73 78 76 77 76 92 - 78 76 92 77 76 78 75 73 78 - 74 73 78 78 73 81 79 78 80 - 81 86 87 81 86 83 81 83 85 - 81 83 84 81 83 86 75 73 81 - 74 73 81 83 86 87 82 81 83 - 84 83 85 85 83 86 84 83 86 - 82 81 86 83 81 86 86 76 92 - 77 76 86 78 76 86 88 98 93 - 88 89 90 89 88 97 89 90 91 - 88 97 92 92 97 96 89 90 92 - 91 90 92 93 94 96 93 94 95 - 94 93 98 95 94 96 88 97 96 - 94 96 97 90 92 97 98 99 101 - 98 99 100 97 88 98 89 88 98 - 93 98 99 88 98 99 100 99 101 - - 457 !NPHI: dihedrals - 22 1 2 3 22 1 2 5 - 2 1 22 21 2 1 22 23 - 1 2 3 24 1 2 3 4 - 5 2 3 24 5 2 3 4 - 1 2 5 6 3 2 5 6 - 2 3 24 23 2 3 24 25 - 4 3 24 23 4 3 24 25 - 2 3 4 7 2 3 4 29 - 24 3 4 7 24 3 4 29 - 3 4 7 6 3 4 7 8 - 29 4 7 6 29 4 7 8 - 3 4 29 26 3 4 29 30 - 7 4 29 26 7 4 29 30 - 2 5 6 7 2 5 6 9 - 5 6 7 4 5 6 7 8 - 9 6 7 4 9 6 7 8 - 5 6 9 10 7 6 9 10 - 4 7 8 33 4 7 8 11 - 6 7 8 33 6 7 8 11 - 7 8 33 30 7 8 33 34 - 11 8 33 30 11 8 33 34 - 7 8 11 10 7 8 11 12 - 33 8 11 10 33 8 11 12 - 6 9 10 13 6 9 10 11 - 9 10 13 14 11 10 13 14 - 9 10 11 8 9 10 11 12 - 13 10 11 8 13 10 11 12 - 8 11 12 15 8 11 12 37 - 10 11 12 15 10 11 12 37 - 11 12 15 14 11 12 15 16 - 37 12 15 14 37 12 15 16 - 11 12 37 34 11 12 37 38 - 15 12 37 34 15 12 37 38 - 10 13 14 17 10 13 14 15 - 13 14 17 18 15 14 17 18 - 13 14 15 12 13 14 15 16 - 17 14 15 12 17 14 15 16 - 12 15 16 19 12 15 16 41 - 14 15 16 19 14 15 16 41 - 15 16 19 18 15 16 19 20 - 41 16 19 18 41 16 19 20 - 15 16 41 38 15 16 41 42 - 19 16 41 38 19 16 41 42 - 14 17 18 21 14 17 18 19 - 17 18 21 22 19 18 21 22 - 17 18 19 16 17 18 19 20 - 21 18 19 16 21 18 19 20 - 16 19 20 23 16 19 20 45 - 18 19 20 23 18 19 20 45 - 19 20 23 22 19 20 23 24 - 45 20 23 22 45 20 23 24 - 19 20 45 42 19 20 45 46 - 23 20 45 42 23 20 45 46 - 18 21 22 1 18 21 22 23 - 1 22 23 20 1 22 23 24 - 21 22 23 20 21 22 23 24 - 20 23 24 3 20 23 24 25 - 22 23 24 3 22 23 24 25 - 3 24 25 26 3 24 25 46 - 23 24 25 26 23 24 25 46 - 24 25 26 27 24 25 26 29 - 46 25 26 27 46 25 26 29 - 24 25 46 45 24 25 46 47 - 26 25 46 45 26 25 46 47 - 25 26 27 48 25 26 27 28 - 29 26 27 48 29 26 27 28 - 25 26 29 4 25 26 29 30 - 27 26 29 4 27 26 29 30 - 26 27 48 47 26 27 48 49 - 28 27 48 47 28 27 48 49 - 26 27 28 31 26 27 28 53 - 48 27 28 31 48 27 28 53 - 27 28 31 30 27 28 31 32 - 53 28 31 30 53 28 31 32 - 27 28 53 50 27 28 53 54 - 31 28 53 50 31 28 53 54 - 4 29 30 31 4 29 30 33 - 26 29 30 31 26 29 30 33 - 29 30 31 28 29 30 31 32 - 33 30 31 28 33 30 31 32 - 29 30 33 8 29 30 33 34 - 31 30 33 8 31 30 33 34 - 28 31 32 57 28 31 32 35 - 30 31 32 57 30 31 32 35 - 31 32 57 54 31 32 57 58 - 35 32 57 54 35 32 57 58 - 31 32 35 34 31 32 35 36 - 57 32 35 34 57 32 35 36 - 8 33 34 37 8 33 34 35 - 30 33 34 37 30 33 34 35 - 33 34 37 12 33 34 37 38 - 35 34 37 12 35 34 37 38 - 33 34 35 32 33 34 35 36 - 37 34 35 32 37 34 35 36 - 32 35 36 39 32 35 36 61 - 34 35 36 39 34 35 36 61 - 35 36 39 38 35 36 39 40 - 61 36 39 38 61 36 39 40 - 35 36 61 58 35 36 61 62 - 39 36 61 58 39 36 61 62 - 12 37 38 41 12 37 38 39 - 34 37 38 41 34 37 38 39 - 37 38 41 16 37 38 41 42 - 39 38 41 16 39 38 41 42 - 37 38 39 36 37 38 39 40 - 41 38 39 36 41 38 39 40 - 36 39 40 43 36 39 40 65 - 38 39 40 43 38 39 40 65 - 39 40 43 42 39 40 43 44 - 65 40 43 42 65 40 43 44 - 39 40 65 62 39 40 65 66 - 43 40 65 62 43 40 65 66 - 16 41 42 45 16 41 42 43 - 38 41 42 45 38 41 42 43 - 41 42 45 20 41 42 45 46 - 43 42 45 20 43 42 45 46 - 41 42 43 40 41 42 43 44 - 45 42 43 40 45 42 43 44 - 40 43 44 47 40 43 44 69 - 42 43 44 47 42 43 44 69 - 43 44 47 46 43 44 47 48 - 69 44 47 46 69 44 47 48 - 43 44 69 66 43 44 69 70 - 47 44 69 66 47 44 69 70 - 20 45 46 25 20 45 46 47 - 42 45 46 25 42 45 46 47 - 25 46 47 44 25 46 47 48 - 45 46 47 44 45 46 47 48 - 44 47 48 27 44 47 48 49 - 46 47 48 27 46 47 48 49 - 27 48 49 50 27 48 49 70 - 47 48 49 50 47 48 49 70 - 48 49 50 51 48 49 50 53 - 70 49 50 51 70 49 50 53 - 48 49 70 69 48 49 70 71 - 50 49 70 69 50 49 70 71 - 49 50 51 72 49 50 51 52 - 53 50 51 72 53 50 51 52 - 49 50 53 28 49 50 53 54 - 51 50 53 28 51 50 53 54 - 50 51 72 71 52 51 72 71 - 50 51 52 55 72 51 52 55 - 51 52 55 54 51 52 55 56 - 28 53 54 55 28 53 54 57 - 50 53 54 55 50 53 54 57 - 53 54 55 52 53 54 55 56 - 57 54 55 52 57 54 55 56 - 53 54 57 32 53 54 57 58 - 55 54 57 32 55 54 57 58 - 52 55 56 59 54 55 56 59 - 55 56 59 58 55 56 59 60 - 32 57 58 61 32 57 58 59 - 54 57 58 61 54 57 58 59 - 57 58 61 36 57 58 61 62 - 59 58 61 36 59 58 61 62 - 57 58 59 56 57 58 59 60 - 61 58 59 56 61 58 59 60 - 56 59 60 63 58 59 60 63 - 59 60 63 62 59 60 63 64 - 36 61 62 65 36 61 62 63 - 58 61 62 65 58 61 62 63 - 61 62 65 40 61 62 65 66 - 63 62 65 40 63 62 65 66 - 61 62 63 60 61 62 63 64 - 65 62 63 60 65 62 63 64 - 60 63 64 67 62 63 64 67 - 63 64 67 66 63 64 67 68 - 40 65 66 69 40 65 66 67 - 62 65 66 69 62 65 66 67 - 65 66 69 44 65 66 69 70 - 67 66 69 44 67 66 69 70 - 65 66 67 64 65 66 67 68 - 69 66 67 64 69 66 67 68 - 64 67 68 71 66 67 68 71 - 67 68 71 70 67 68 71 72 - 44 69 70 49 44 69 70 71 - 66 69 70 49 66 69 70 71 - 49 70 71 68 49 70 71 72 - 69 70 71 68 69 70 71 72 - 68 71 72 51 70 71 72 51 - 73 81 86 76 73 81 86 83 - 73 81 86 87 73 81 83 86 - 73 81 83 84 73 81 83 85 - 86 76 78 73 77 76 78 73 - 92 76 78 73 74 73 78 76 - 74 73 78 79 74 73 78 80 - 74 73 81 86 74 73 81 83 - 74 73 81 82 75 73 78 76 - 75 73 78 79 75 73 78 80 - 75 73 81 86 75 73 81 83 - 75 73 81 82 76 92 97 96 - 76 92 97 88 91 90 92 76 - 89 90 92 76 83 81 86 76 - 82 81 86 76 81 83 86 76 - 84 83 86 76 85 83 86 76 - 81 73 78 76 77 76 86 81 - 77 76 86 83 77 76 86 87 - 77 76 78 79 77 76 78 80 - 77 76 92 97 77 76 92 90 - 78 76 86 81 78 76 86 83 - 78 76 86 87 78 76 92 97 - 78 76 92 90 78 73 81 86 - 78 73 81 83 78 73 81 82 - 86 76 78 79 92 76 78 79 - 81 73 78 79 86 76 78 80 - 92 76 78 80 81 73 78 80 - 92 76 86 81 84 83 86 81 - 85 83 86 81 81 83 86 87 - 82 81 86 83 82 81 86 87 - 82 81 83 86 82 81 83 84 - 82 81 83 85 92 76 86 83 - 83 81 86 87 86 81 83 84 - 84 83 86 87 86 81 83 85 - 85 83 86 87 86 76 92 97 - 86 76 92 90 92 76 86 87 - 88 98 99 100 88 98 99 101 - 94 93 98 88 90 92 97 88 - 94 96 97 88 88 89 90 92 - 88 89 90 91 89 90 92 97 - 89 88 98 99 89 88 98 93 - 89 88 97 92 89 88 97 96 - 90 92 97 96 98 88 89 90 - 97 88 89 90 91 90 92 97 - 94 96 97 92 98 88 97 92 - 93 98 99 100 93 98 99 101 - 97 88 98 93 93 94 96 97 - 94 93 98 99 98 93 94 95 - 95 94 96 97 98 88 97 96 - 98 93 94 96 - - 0 !NIMPHI: impropers - - - 0 !NDON: donors - - - 0 !NACC: acceptors - - - 0 !NNB - - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 - 0 0 0 0 0 - - 1 0 !NGRP - 0 0 0 - diff --git a/tools/moltemplate/examples/file_conversion_examples/read_PDB_file_examples/waterSPCE_from_PDBfile/README.TXT b/tools/moltemplate/examples/file_conversion_examples/read_PDB_file_examples/waterSPCE_from_PDBfile/README.txt similarity index 97% rename from tools/moltemplate/examples/file_conversion_examples/read_PDB_file_examples/waterSPCE_from_PDBfile/README.TXT rename to tools/moltemplate/examples/file_conversion_examples/read_PDB_file_examples/waterSPCE_from_PDBfile/README.txt index 0e58ef44c79de5ee33076f33fc843cd1277cc7e2..d27267f3652bac13462a1b15e4e17df9189e3eba 100644 --- a/tools/moltemplate/examples/file_conversion_examples/read_PDB_file_examples/waterSPCE_from_PDBfile/README.TXT +++ b/tools/moltemplate/examples/file_conversion_examples/read_PDB_file_examples/waterSPCE_from_PDBfile/README.txt @@ -4,7 +4,7 @@ In this example, the coordinates of the atoms are read from a PDB file instead of being specified manually (as well as the boundary information). The PDB file was generated by the useful "solvate" utility which comes with VMD. -(To generate this file yourself, run VMD, click on the "Extensions" menu, +(To generate this file yourself, run VMD, click on the "Extensions" menu, and select Modeling-->Add Solvation Box. In this example, I made a box whose x,y,z dimensions were 16,24,24.) diff --git a/tools/moltemplate/examples/file_conversion_examples/read_PDB_file_examples/waterSPCE_from_PDBfile/README_run.sh b/tools/moltemplate/examples/file_conversion_examples/read_PDB_file_examples/waterSPCE_from_PDBfile/README_run.sh index 2944f68403e20faa9943592063078d643916158f..6072277b5415967ad52de5794c8ea201f7ada7f2 100755 --- a/tools/moltemplate/examples/file_conversion_examples/read_PDB_file_examples/waterSPCE_from_PDBfile/README_run.sh +++ b/tools/moltemplate/examples/file_conversion_examples/read_PDB_file_examples/waterSPCE_from_PDBfile/README_run.sh @@ -1,6 +1,6 @@ # --- Running LAMMPS --- # -- Prerequisites: -- -# The 2 files "run.in.npt", and "run.in.nvt" are LAMMPS +# The 2 files "run.in.npt", and "run.in.nvt" are LAMMPS # input scripts which link to the input scripts and data files # you hopefully have created earlier with moltemplate.sh: # system.in.init, system.in.settings, system.data diff --git a/tools/moltemplate/examples/file_conversion_examples/read_PDB_file_examples/waterSPCE_from_PDBfile/README_setup.sh b/tools/moltemplate/examples/file_conversion_examples/read_PDB_file_examples/waterSPCE_from_PDBfile/README_setup.sh index 5d2be21331a7bb00069cdee26c25b7eeaac313b2..bdd22c14871577a8a6a2107e46c90b7a46335b6c 100755 --- a/tools/moltemplate/examples/file_conversion_examples/read_PDB_file_examples/waterSPCE_from_PDBfile/README_setup.sh +++ b/tools/moltemplate/examples/file_conversion_examples/read_PDB_file_examples/waterSPCE_from_PDBfile/README_setup.sh @@ -2,24 +2,24 @@ # (and other auxilliary files): cd moltemplate_files/ # (The .lt input files are in this directory) - + moltemplate.sh -pdb solvate.pdb system.lt - # This will generate various files with names ending in *.in* and *.data. - # These files are the input files directly read by LAMMPS. Move them to + # This will generate various files with names ending in *.in* and *.data. + # These files are the input files directly read by LAMMPS. Move them to # the parent directory (or wherever you plan to run the simulation). mv -f system.in* system.data ../ # Optional: - # The "./output_ttree/" directory is full of temporary files generated by + # The "./output_ttree/" directory is full of temporary files generated by # moltemplate. They can be useful for debugging, but are usually thrown away. rm -rf output_ttree/ cd ../ -# +# #This will prepare LAMMPS input files for a box of water #(In this example, we are using the "SPC/E" water model.) #The number of water molecules in the "wat = new SPCE [260]" command diff --git a/tools/moltemplate/examples/file_conversion_examples/read_PDB_file_examples/waterSPCE_from_PDBfile/README_visualize.txt b/tools/moltemplate/examples/file_conversion_examples/read_PDB_file_examples/waterSPCE_from_PDBfile/README_visualize.txt index 8063d535f8203dcf2cf630e6c4b054996eeb6f87..5f9b27e5bf8d99096932e5be04bd1873f3c23c06 100644 --- a/tools/moltemplate/examples/file_conversion_examples/read_PDB_file_examples/waterSPCE_from_PDBfile/README_visualize.txt +++ b/tools/moltemplate/examples/file_conversion_examples/read_PDB_file_examples/waterSPCE_from_PDBfile/README_visualize.txt @@ -4,7 +4,7 @@ 1) Build a PSF file for use in viewing with VMD. -This step works with VMD 1.9 and topotools 1.2. +This step works with VMD 1.9 and topotools 1.2. (Older versions, like VMD 1.8.6, don't support this.) @@ -19,9 +19,9 @@ c) Enter: (Note, at this point the image shown in the VMD graphics window may not appear correct or incomplete. The coordinates of the atoms may - overlap if you asked moltemplate.sh to load your coordinates from + overlap if you asked moltemplate.sh to load your coordinates from a PDB or XYZ file. - However, later after you have run a simulation, the trajectories + However, later after you have run a simulation, the trajectories should appear reasonably correct when you load them in VMD using the PSF file you just generated.) @@ -51,14 +51,14 @@ d) Enter: # If you have a solute of type 1, then use this: #pbc wrap -sel type=1 -all -centersel type=2 -center com -"1" corresponds to the "O" atom type -"2" corresponds to the "H" atom type +"1" corresponds to the "O" atom type +"2" corresponds to the "H" atom type -3) Optional: If you like, change the atom types in the PSF file so +3) Optional: If you like, change the atom types in the PSF file so that VMD recognizes the atom types: sed -e 's/ 1 1 / O O /g' < system.psf > temp1.psf sed -e 's/ 2 2 / H H /g' < temp1.psf > system.psf -(If you do this, I guess that you might have to use +(If you do this, I guess that you might have to use "type=O" and "type=H" in step 2 above.) diff --git a/tools/moltemplate/examples/file_conversion_examples/read_PDB_file_examples/waterSPCE_from_PDBfile/moltemplate_files/README.sh b/tools/moltemplate/examples/file_conversion_examples/read_PDB_file_examples/waterSPCE_from_PDBfile/moltemplate_files/README.sh index 4ebc7b17a3114a29679d94aa9d2ad732fc93b6d5..36505562feb805aff6739a8e1a517e5c7737ef11 100755 --- a/tools/moltemplate/examples/file_conversion_examples/read_PDB_file_examples/waterSPCE_from_PDBfile/moltemplate_files/README.sh +++ b/tools/moltemplate/examples/file_conversion_examples/read_PDB_file_examples/waterSPCE_from_PDBfile/moltemplate_files/README.sh @@ -5,7 +5,7 @@ moltemplate.sh -pdb solvate.pdb system.lt # The PDB file was generated by the "solvate" utility which comes with VMD. -# (To generate this file yourself, run VMD, click on the "Extensions" menu, +# (To generate this file yourself, run VMD, click on the "Extensions" menu, # and select Modeling-->Add Solvation Box. # In this example, I made a box whose x,y,z dimensions were 16,24,24.) diff --git a/tools/moltemplate/examples/force_field_AMBER/benzene/README_setup.sh b/tools/moltemplate/examples/force_field_AMBER/benzene/README_setup.sh deleted file mode 100755 index c2db73b45792855d985ef31c22ad639aeab16c44..0000000000000000000000000000000000000000 --- a/tools/moltemplate/examples/force_field_AMBER/benzene/README_setup.sh +++ /dev/null @@ -1,26 +0,0 @@ - -# Create LAMMPS input files this way: -cd moltemplate_files - - # run moltemplate - - moltemplate.sh system.lt - - # This will generate various files with names ending in *.in* and *.data. - # Move them to the directory where you plan to run LAMMPS (in this case "../") - mv -f system.data system.in* ../ - - # Optional: - # The "./output_ttree/" directory is full of temporary files generated by - # moltemplate. They can be useful for debugging, but are usually thrown away. - #rm -rf output_ttree/ - -cd ../ - - -# Optional: -# Note: The system.data and system.in.settings files contain extra information -# for atoms defined in GAFF which you are not using in this simulation. This -# is harmless, but if you to delete this information from your -# system.in.settings and system.in.data files, follow the instructions in -# this script: "optional_cleanup/README_remove_irrelevant_info.sh" diff --git a/tools/moltemplate/examples/force_field_AMBER/benzene/README_visualize.txt b/tools/moltemplate/examples/force_field_AMBER/benzene/README_visualize.txt deleted file mode 100644 index 019afc1444a48409143b5c170318479ceb27a391..0000000000000000000000000000000000000000 --- a/tools/moltemplate/examples/force_field_AMBER/benzene/README_visualize.txt +++ /dev/null @@ -1,87 +0,0 @@ - - ------- To view a lammps trajectory in VMD -------- - - -1) Build a PSF file for use in viewing with VMD. - -This step works with VMD 1.9 and topotools 1.2. -(Older versions, like VMD 1.8.6, don't support this.) - - -a) Start VMD -b) Menu Extensions->Tk Console -c) Enter: - -(I assume that the the DATA file is called "system.data") - - topo readlammpsdata system.data full - animate write psf system.psf - -2) - -Later, to Load a trajectory in VMD: - - Start VMD - Select menu: File->New Molecule - -Browse to select the PSF file you created above, and load it. - (Don't close the window yet.) - -Browse to select the trajectory file. - If necessary, for "file type" select: "LAMMPS Trajectory" - Load it. - - ---- A note on trajectory format: ----- -If the trajectory is a DUMP file, then make sure the it contains the -information you need for pbctools (see below. I've been using this -command in my LAMMPS scripts to create the trajectories: - - dump 1 all custom 5000 DUMP_FILE.lammpstrj id mol type x y z ix iy iz - -It's a good idea to use an atom_style which supports molecule-ID numbers -so that you can assign a molecule-ID number to each atom. (I think this -is needed to wrap atom coordinates without breaking molecules in half.) - -Of course, you don't have to save your trajectories in DUMP format, -(other formats like DCD work fine) I just mention dump files -because these are the files I'm familiar with. - -3) ----- Wrap the coordinates to the unit cell - (without cutting the molecules in half) - -a) Start VMD -b) Load the trajectory in VMD (see above) -c) Menu Extensions->Tk Console -d) Try entering these commands: - - pbc wrap -compound res -all - pbc box - - ----- Optional ---- - Sometimes the solvent or membrane obscures the view of the solute. - It can help to shift the location of the periodic boundary box - To shift the box in the y direction (for example) do this: - - pbc wrap -compound res -all -shiftcenterrel {0.0 0.15 0.0} - pbc box -shiftcenterrel {0.0 0.15 0.0} - - Distances are measured in units of box-length fractions, not Angstroms. - - Alternately if you have a solute whose atoms are all of type 1, - then you can also try this to center the box around it: - - pbc wrap -sel type=1 -all -centersel type=2 -center com - -4) - You should check if your periodic boundary conditions are too small. - To do that: - select Graphics->Representations menu option - click on the "Periodic" tab, and - click on the "+x", "-x", "+y", "-y", "+z", "-z" checkboxes. - -5) Optional: If you like, change the atom types in the PSF file so - that VMD recognizes the atom types, use something like: - -sed -e 's/ 1 1 / C C /g' < system.psf > temp1.psf -sed -e 's/ 2 2 / H H /g' < temp1.psf > temp2.psf -sed -e 's/ 3 3 / P P /g' < temp2.psf > system.psf - -(If you do this, it might effect step 2 above.) diff --git a/tools/moltemplate/examples/force_field_AMBER/benzene/optional_cleanup/README_remove_irrelevant_info.sh b/tools/moltemplate/examples/force_field_AMBER/benzene/optional_cleanup/README_remove_irrelevant_info.sh deleted file mode 100755 index 3251991775158024a8b95ec05ffaee10725b574c..0000000000000000000000000000000000000000 --- a/tools/moltemplate/examples/force_field_AMBER/benzene/optional_cleanup/README_remove_irrelevant_info.sh +++ /dev/null @@ -1,63 +0,0 @@ - # MOST USERS CAN IGNORE THIS FILE - # - # Unfortunately, as of 2014-4-19, the system.data and system.in.settings file - # which are created by moltemplate.sh contain a lot of irrelevant information, - # such as definition of parameters for atom types not present in the current - # system. This extra information takes up about 1 MB. - # - # This appears to be harmless. - # (Loading this extra information does not seem to slow down LAMMPS.) - # - # --------- OPTIONAL STEPS FOR STRIPPING OUT JUNK --------- - # - # However if you want to eliminate this junk from these files - # For now, we can strip this out using ltemplify.py to build a new .lt file. - # - # NOTE: If you decide to use this script, it was meant to be run it from - # the parent directory (../) (If you run it from somewhere else, be sure to - # modify the "PATH_TO_DATA_FILE" and "PATH_TO_OUTPUT_TTREE" variables below.) - # - # I suggest you do this in a temporary_directory - - PATH_TO_DATA_FILE="." - - pushd "$PATH_TO_DATA_FILE" - - mkdir new_lt_file - cd new_lt_file/ - - # now run ltemplify.py - - ltemplify.py ../system.in.init ../system.in.settings ../system.data > system.lt - - # This creates a new .LT file named "system.lt" in the local directory. - - # The ltemplify.py script also does not copy the boundary dimensions. - # We must do this manually. - # If you did NOT throw away the "Data Boundary" file usually located in - # "moltemplate_files/output_ttree/Data Boundary" - # then you can copy that information from this file into system.lt - - PATH_TO_OUTPUT_TTREE="../moltemplate_files/output_ttree" - - echo "write_once(\"Data Boundary\") {" >> system.lt - cat "$PATH_TO_OUTPUT_TTREE/Data Boundary" >> system.lt - echo "}" >> system.lt - echo "" >> system.lt - - # Now, run moltemplate on this new .LT file. - moltemplate.sh system.lt - # This will create: "system.data" "system.in.init" "system.in.settings." - - # That's it. The new "system.data" and system.in.* files should - # be ready to run in LAMMPS. - - # Now copy the system.data and system.in.* files to the place where - # you plan to run LAMMPS - mv -f system.data system.in.* ../ - cd ../ - - # Now delete all of the temporary files we generated - rm -rf new_lt_file/ - popd - diff --git a/tools/moltemplate/examples/force_field_AMBER/ethylene+benzene/README_setup.sh b/tools/moltemplate/examples/force_field_AMBER/ethylene+benzene/README_setup.sh deleted file mode 100755 index 0e2a17d9b9433a98936050390bdc54c4ae056e88..0000000000000000000000000000000000000000 --- a/tools/moltemplate/examples/force_field_AMBER/ethylene+benzene/README_setup.sh +++ /dev/null @@ -1,25 +0,0 @@ -# Create LAMMPS input files this way: -cd moltemplate_files - - # run moltemplate - - moltemplate.sh system.lt - - # This will generate various files with names ending in *.in* and *.data. - # Move them to the directory where you plan to run LAMMPS (in this case "../") - mv -f system.data system.in* ../ - - # Optional: - # The "./output_ttree/" directory is full of temporary files generated by - # moltemplate. They can be useful for debugging, but are usually thrown away. - #rm -rf output_ttree/ - -cd ../ - - -# Optional: -# Note: The system.data and system.in.settings files contain extra information -# for atoms defined in GAFF which you are not using in this simulation. This -# is harmless, but if you to delete this information from your -# system.in.settings and system.in.data files, follow the instructions in -# this script: "optional_cleanup/README_remove_irrelevant_info.sh" diff --git a/tools/moltemplate/examples/force_field_AMBER/ethylene+benzene/README_visualize.txt b/tools/moltemplate/examples/force_field_AMBER/ethylene+benzene/README_visualize.txt deleted file mode 100644 index 019afc1444a48409143b5c170318479ceb27a391..0000000000000000000000000000000000000000 --- a/tools/moltemplate/examples/force_field_AMBER/ethylene+benzene/README_visualize.txt +++ /dev/null @@ -1,87 +0,0 @@ - - ------- To view a lammps trajectory in VMD -------- - - -1) Build a PSF file for use in viewing with VMD. - -This step works with VMD 1.9 and topotools 1.2. -(Older versions, like VMD 1.8.6, don't support this.) - - -a) Start VMD -b) Menu Extensions->Tk Console -c) Enter: - -(I assume that the the DATA file is called "system.data") - - topo readlammpsdata system.data full - animate write psf system.psf - -2) - -Later, to Load a trajectory in VMD: - - Start VMD - Select menu: File->New Molecule - -Browse to select the PSF file you created above, and load it. - (Don't close the window yet.) - -Browse to select the trajectory file. - If necessary, for "file type" select: "LAMMPS Trajectory" - Load it. - - ---- A note on trajectory format: ----- -If the trajectory is a DUMP file, then make sure the it contains the -information you need for pbctools (see below. I've been using this -command in my LAMMPS scripts to create the trajectories: - - dump 1 all custom 5000 DUMP_FILE.lammpstrj id mol type x y z ix iy iz - -It's a good idea to use an atom_style which supports molecule-ID numbers -so that you can assign a molecule-ID number to each atom. (I think this -is needed to wrap atom coordinates without breaking molecules in half.) - -Of course, you don't have to save your trajectories in DUMP format, -(other formats like DCD work fine) I just mention dump files -because these are the files I'm familiar with. - -3) ----- Wrap the coordinates to the unit cell - (without cutting the molecules in half) - -a) Start VMD -b) Load the trajectory in VMD (see above) -c) Menu Extensions->Tk Console -d) Try entering these commands: - - pbc wrap -compound res -all - pbc box - - ----- Optional ---- - Sometimes the solvent or membrane obscures the view of the solute. - It can help to shift the location of the periodic boundary box - To shift the box in the y direction (for example) do this: - - pbc wrap -compound res -all -shiftcenterrel {0.0 0.15 0.0} - pbc box -shiftcenterrel {0.0 0.15 0.0} - - Distances are measured in units of box-length fractions, not Angstroms. - - Alternately if you have a solute whose atoms are all of type 1, - then you can also try this to center the box around it: - - pbc wrap -sel type=1 -all -centersel type=2 -center com - -4) - You should check if your periodic boundary conditions are too small. - To do that: - select Graphics->Representations menu option - click on the "Periodic" tab, and - click on the "+x", "-x", "+y", "-y", "+z", "-z" checkboxes. - -5) Optional: If you like, change the atom types in the PSF file so - that VMD recognizes the atom types, use something like: - -sed -e 's/ 1 1 / C C /g' < system.psf > temp1.psf -sed -e 's/ 2 2 / H H /g' < temp1.psf > temp2.psf -sed -e 's/ 3 3 / P P /g' < temp2.psf > system.psf - -(If you do this, it might effect step 2 above.) diff --git a/tools/moltemplate/examples/force_field_AMBER/ethylene+benzene/optional_cleanup/README_remove_irrelevant_info.sh b/tools/moltemplate/examples/force_field_AMBER/ethylene+benzene/optional_cleanup/README_remove_irrelevant_info.sh deleted file mode 100755 index 3251991775158024a8b95ec05ffaee10725b574c..0000000000000000000000000000000000000000 --- a/tools/moltemplate/examples/force_field_AMBER/ethylene+benzene/optional_cleanup/README_remove_irrelevant_info.sh +++ /dev/null @@ -1,63 +0,0 @@ - # MOST USERS CAN IGNORE THIS FILE - # - # Unfortunately, as of 2014-4-19, the system.data and system.in.settings file - # which are created by moltemplate.sh contain a lot of irrelevant information, - # such as definition of parameters for atom types not present in the current - # system. This extra information takes up about 1 MB. - # - # This appears to be harmless. - # (Loading this extra information does not seem to slow down LAMMPS.) - # - # --------- OPTIONAL STEPS FOR STRIPPING OUT JUNK --------- - # - # However if you want to eliminate this junk from these files - # For now, we can strip this out using ltemplify.py to build a new .lt file. - # - # NOTE: If you decide to use this script, it was meant to be run it from - # the parent directory (../) (If you run it from somewhere else, be sure to - # modify the "PATH_TO_DATA_FILE" and "PATH_TO_OUTPUT_TTREE" variables below.) - # - # I suggest you do this in a temporary_directory - - PATH_TO_DATA_FILE="." - - pushd "$PATH_TO_DATA_FILE" - - mkdir new_lt_file - cd new_lt_file/ - - # now run ltemplify.py - - ltemplify.py ../system.in.init ../system.in.settings ../system.data > system.lt - - # This creates a new .LT file named "system.lt" in the local directory. - - # The ltemplify.py script also does not copy the boundary dimensions. - # We must do this manually. - # If you did NOT throw away the "Data Boundary" file usually located in - # "moltemplate_files/output_ttree/Data Boundary" - # then you can copy that information from this file into system.lt - - PATH_TO_OUTPUT_TTREE="../moltemplate_files/output_ttree" - - echo "write_once(\"Data Boundary\") {" >> system.lt - cat "$PATH_TO_OUTPUT_TTREE/Data Boundary" >> system.lt - echo "}" >> system.lt - echo "" >> system.lt - - # Now, run moltemplate on this new .LT file. - moltemplate.sh system.lt - # This will create: "system.data" "system.in.init" "system.in.settings." - - # That's it. The new "system.data" and system.in.* files should - # be ready to run in LAMMPS. - - # Now copy the system.data and system.in.* files to the place where - # you plan to run LAMMPS - mv -f system.data system.in.* ../ - cd ../ - - # Now delete all of the temporary files we generated - rm -rf new_lt_file/ - popd - diff --git a/tools/moltemplate/examples/force_field_AMBER/hexadecane/README_setup.sh b/tools/moltemplate/examples/force_field_AMBER/hexadecane/README_setup.sh deleted file mode 100755 index c2db73b45792855d985ef31c22ad639aeab16c44..0000000000000000000000000000000000000000 --- a/tools/moltemplate/examples/force_field_AMBER/hexadecane/README_setup.sh +++ /dev/null @@ -1,26 +0,0 @@ - -# Create LAMMPS input files this way: -cd moltemplate_files - - # run moltemplate - - moltemplate.sh system.lt - - # This will generate various files with names ending in *.in* and *.data. - # Move them to the directory where you plan to run LAMMPS (in this case "../") - mv -f system.data system.in* ../ - - # Optional: - # The "./output_ttree/" directory is full of temporary files generated by - # moltemplate. They can be useful for debugging, but are usually thrown away. - #rm -rf output_ttree/ - -cd ../ - - -# Optional: -# Note: The system.data and system.in.settings files contain extra information -# for atoms defined in GAFF which you are not using in this simulation. This -# is harmless, but if you to delete this information from your -# system.in.settings and system.in.data files, follow the instructions in -# this script: "optional_cleanup/README_remove_irrelevant_info.sh" diff --git a/tools/moltemplate/examples/force_field_AMBER/hexadecane/README_visualize.txt b/tools/moltemplate/examples/force_field_AMBER/hexadecane/README_visualize.txt deleted file mode 100644 index 019afc1444a48409143b5c170318479ceb27a391..0000000000000000000000000000000000000000 --- a/tools/moltemplate/examples/force_field_AMBER/hexadecane/README_visualize.txt +++ /dev/null @@ -1,87 +0,0 @@ - - ------- To view a lammps trajectory in VMD -------- - - -1) Build a PSF file for use in viewing with VMD. - -This step works with VMD 1.9 and topotools 1.2. -(Older versions, like VMD 1.8.6, don't support this.) - - -a) Start VMD -b) Menu Extensions->Tk Console -c) Enter: - -(I assume that the the DATA file is called "system.data") - - topo readlammpsdata system.data full - animate write psf system.psf - -2) - -Later, to Load a trajectory in VMD: - - Start VMD - Select menu: File->New Molecule - -Browse to select the PSF file you created above, and load it. - (Don't close the window yet.) - -Browse to select the trajectory file. - If necessary, for "file type" select: "LAMMPS Trajectory" - Load it. - - ---- A note on trajectory format: ----- -If the trajectory is a DUMP file, then make sure the it contains the -information you need for pbctools (see below. I've been using this -command in my LAMMPS scripts to create the trajectories: - - dump 1 all custom 5000 DUMP_FILE.lammpstrj id mol type x y z ix iy iz - -It's a good idea to use an atom_style which supports molecule-ID numbers -so that you can assign a molecule-ID number to each atom. (I think this -is needed to wrap atom coordinates without breaking molecules in half.) - -Of course, you don't have to save your trajectories in DUMP format, -(other formats like DCD work fine) I just mention dump files -because these are the files I'm familiar with. - -3) ----- Wrap the coordinates to the unit cell - (without cutting the molecules in half) - -a) Start VMD -b) Load the trajectory in VMD (see above) -c) Menu Extensions->Tk Console -d) Try entering these commands: - - pbc wrap -compound res -all - pbc box - - ----- Optional ---- - Sometimes the solvent or membrane obscures the view of the solute. - It can help to shift the location of the periodic boundary box - To shift the box in the y direction (for example) do this: - - pbc wrap -compound res -all -shiftcenterrel {0.0 0.15 0.0} - pbc box -shiftcenterrel {0.0 0.15 0.0} - - Distances are measured in units of box-length fractions, not Angstroms. - - Alternately if you have a solute whose atoms are all of type 1, - then you can also try this to center the box around it: - - pbc wrap -sel type=1 -all -centersel type=2 -center com - -4) - You should check if your periodic boundary conditions are too small. - To do that: - select Graphics->Representations menu option - click on the "Periodic" tab, and - click on the "+x", "-x", "+y", "-y", "+z", "-z" checkboxes. - -5) Optional: If you like, change the atom types in the PSF file so - that VMD recognizes the atom types, use something like: - -sed -e 's/ 1 1 / C C /g' < system.psf > temp1.psf -sed -e 's/ 2 2 / H H /g' < temp1.psf > temp2.psf -sed -e 's/ 3 3 / P P /g' < temp2.psf > system.psf - -(If you do this, it might effect step 2 above.) diff --git a/tools/moltemplate/examples/force_field_AMBER/hexadecane/optional_cleanup/README_remove_irrelevant_info.sh b/tools/moltemplate/examples/force_field_AMBER/hexadecane/optional_cleanup/README_remove_irrelevant_info.sh deleted file mode 100755 index 3251991775158024a8b95ec05ffaee10725b574c..0000000000000000000000000000000000000000 --- a/tools/moltemplate/examples/force_field_AMBER/hexadecane/optional_cleanup/README_remove_irrelevant_info.sh +++ /dev/null @@ -1,63 +0,0 @@ - # MOST USERS CAN IGNORE THIS FILE - # - # Unfortunately, as of 2014-4-19, the system.data and system.in.settings file - # which are created by moltemplate.sh contain a lot of irrelevant information, - # such as definition of parameters for atom types not present in the current - # system. This extra information takes up about 1 MB. - # - # This appears to be harmless. - # (Loading this extra information does not seem to slow down LAMMPS.) - # - # --------- OPTIONAL STEPS FOR STRIPPING OUT JUNK --------- - # - # However if you want to eliminate this junk from these files - # For now, we can strip this out using ltemplify.py to build a new .lt file. - # - # NOTE: If you decide to use this script, it was meant to be run it from - # the parent directory (../) (If you run it from somewhere else, be sure to - # modify the "PATH_TO_DATA_FILE" and "PATH_TO_OUTPUT_TTREE" variables below.) - # - # I suggest you do this in a temporary_directory - - PATH_TO_DATA_FILE="." - - pushd "$PATH_TO_DATA_FILE" - - mkdir new_lt_file - cd new_lt_file/ - - # now run ltemplify.py - - ltemplify.py ../system.in.init ../system.in.settings ../system.data > system.lt - - # This creates a new .LT file named "system.lt" in the local directory. - - # The ltemplify.py script also does not copy the boundary dimensions. - # We must do this manually. - # If you did NOT throw away the "Data Boundary" file usually located in - # "moltemplate_files/output_ttree/Data Boundary" - # then you can copy that information from this file into system.lt - - PATH_TO_OUTPUT_TTREE="../moltemplate_files/output_ttree" - - echo "write_once(\"Data Boundary\") {" >> system.lt - cat "$PATH_TO_OUTPUT_TTREE/Data Boundary" >> system.lt - echo "}" >> system.lt - echo "" >> system.lt - - # Now, run moltemplate on this new .LT file. - moltemplate.sh system.lt - # This will create: "system.data" "system.in.init" "system.in.settings." - - # That's it. The new "system.data" and system.in.* files should - # be ready to run in LAMMPS. - - # Now copy the system.data and system.in.* files to the place where - # you plan to run LAMMPS - mv -f system.data system.in.* ../ - cd ../ - - # Now delete all of the temporary files we generated - rm -rf new_lt_file/ - popd - diff --git a/tools/moltemplate/examples/force_field_AMBER/waterTIP3P+isobutane/README_setup.sh b/tools/moltemplate/examples/force_field_AMBER/waterTIP3P+isobutane/README_setup.sh deleted file mode 100755 index c2db73b45792855d985ef31c22ad639aeab16c44..0000000000000000000000000000000000000000 --- a/tools/moltemplate/examples/force_field_AMBER/waterTIP3P+isobutane/README_setup.sh +++ /dev/null @@ -1,26 +0,0 @@ - -# Create LAMMPS input files this way: -cd moltemplate_files - - # run moltemplate - - moltemplate.sh system.lt - - # This will generate various files with names ending in *.in* and *.data. - # Move them to the directory where you plan to run LAMMPS (in this case "../") - mv -f system.data system.in* ../ - - # Optional: - # The "./output_ttree/" directory is full of temporary files generated by - # moltemplate. They can be useful for debugging, but are usually thrown away. - #rm -rf output_ttree/ - -cd ../ - - -# Optional: -# Note: The system.data and system.in.settings files contain extra information -# for atoms defined in GAFF which you are not using in this simulation. This -# is harmless, but if you to delete this information from your -# system.in.settings and system.in.data files, follow the instructions in -# this script: "optional_cleanup/README_remove_irrelevant_info.sh" diff --git a/tools/moltemplate/examples/force_field_AMBER/waterTIP3P+isobutane/README_visualize.txt b/tools/moltemplate/examples/force_field_AMBER/waterTIP3P+isobutane/README_visualize.txt deleted file mode 100644 index 019afc1444a48409143b5c170318479ceb27a391..0000000000000000000000000000000000000000 --- a/tools/moltemplate/examples/force_field_AMBER/waterTIP3P+isobutane/README_visualize.txt +++ /dev/null @@ -1,87 +0,0 @@ - - ------- To view a lammps trajectory in VMD -------- - - -1) Build a PSF file for use in viewing with VMD. - -This step works with VMD 1.9 and topotools 1.2. -(Older versions, like VMD 1.8.6, don't support this.) - - -a) Start VMD -b) Menu Extensions->Tk Console -c) Enter: - -(I assume that the the DATA file is called "system.data") - - topo readlammpsdata system.data full - animate write psf system.psf - -2) - -Later, to Load a trajectory in VMD: - - Start VMD - Select menu: File->New Molecule - -Browse to select the PSF file you created above, and load it. - (Don't close the window yet.) - -Browse to select the trajectory file. - If necessary, for "file type" select: "LAMMPS Trajectory" - Load it. - - ---- A note on trajectory format: ----- -If the trajectory is a DUMP file, then make sure the it contains the -information you need for pbctools (see below. I've been using this -command in my LAMMPS scripts to create the trajectories: - - dump 1 all custom 5000 DUMP_FILE.lammpstrj id mol type x y z ix iy iz - -It's a good idea to use an atom_style which supports molecule-ID numbers -so that you can assign a molecule-ID number to each atom. (I think this -is needed to wrap atom coordinates without breaking molecules in half.) - -Of course, you don't have to save your trajectories in DUMP format, -(other formats like DCD work fine) I just mention dump files -because these are the files I'm familiar with. - -3) ----- Wrap the coordinates to the unit cell - (without cutting the molecules in half) - -a) Start VMD -b) Load the trajectory in VMD (see above) -c) Menu Extensions->Tk Console -d) Try entering these commands: - - pbc wrap -compound res -all - pbc box - - ----- Optional ---- - Sometimes the solvent or membrane obscures the view of the solute. - It can help to shift the location of the periodic boundary box - To shift the box in the y direction (for example) do this: - - pbc wrap -compound res -all -shiftcenterrel {0.0 0.15 0.0} - pbc box -shiftcenterrel {0.0 0.15 0.0} - - Distances are measured in units of box-length fractions, not Angstroms. - - Alternately if you have a solute whose atoms are all of type 1, - then you can also try this to center the box around it: - - pbc wrap -sel type=1 -all -centersel type=2 -center com - -4) - You should check if your periodic boundary conditions are too small. - To do that: - select Graphics->Representations menu option - click on the "Periodic" tab, and - click on the "+x", "-x", "+y", "-y", "+z", "-z" checkboxes. - -5) Optional: If you like, change the atom types in the PSF file so - that VMD recognizes the atom types, use something like: - -sed -e 's/ 1 1 / C C /g' < system.psf > temp1.psf -sed -e 's/ 2 2 / H H /g' < temp1.psf > temp2.psf -sed -e 's/ 3 3 / P P /g' < temp2.psf > system.psf - -(If you do this, it might effect step 2 above.) diff --git a/tools/moltemplate/examples/force_field_AMBER/waterTIP3P+isobutane/optional_cleanup/README_remove_irrelevant_info.sh b/tools/moltemplate/examples/force_field_AMBER/waterTIP3P+isobutane/optional_cleanup/README_remove_irrelevant_info.sh deleted file mode 100755 index 3251991775158024a8b95ec05ffaee10725b574c..0000000000000000000000000000000000000000 --- a/tools/moltemplate/examples/force_field_AMBER/waterTIP3P+isobutane/optional_cleanup/README_remove_irrelevant_info.sh +++ /dev/null @@ -1,63 +0,0 @@ - # MOST USERS CAN IGNORE THIS FILE - # - # Unfortunately, as of 2014-4-19, the system.data and system.in.settings file - # which are created by moltemplate.sh contain a lot of irrelevant information, - # such as definition of parameters for atom types not present in the current - # system. This extra information takes up about 1 MB. - # - # This appears to be harmless. - # (Loading this extra information does not seem to slow down LAMMPS.) - # - # --------- OPTIONAL STEPS FOR STRIPPING OUT JUNK --------- - # - # However if you want to eliminate this junk from these files - # For now, we can strip this out using ltemplify.py to build a new .lt file. - # - # NOTE: If you decide to use this script, it was meant to be run it from - # the parent directory (../) (If you run it from somewhere else, be sure to - # modify the "PATH_TO_DATA_FILE" and "PATH_TO_OUTPUT_TTREE" variables below.) - # - # I suggest you do this in a temporary_directory - - PATH_TO_DATA_FILE="." - - pushd "$PATH_TO_DATA_FILE" - - mkdir new_lt_file - cd new_lt_file/ - - # now run ltemplify.py - - ltemplify.py ../system.in.init ../system.in.settings ../system.data > system.lt - - # This creates a new .LT file named "system.lt" in the local directory. - - # The ltemplify.py script also does not copy the boundary dimensions. - # We must do this manually. - # If you did NOT throw away the "Data Boundary" file usually located in - # "moltemplate_files/output_ttree/Data Boundary" - # then you can copy that information from this file into system.lt - - PATH_TO_OUTPUT_TTREE="../moltemplate_files/output_ttree" - - echo "write_once(\"Data Boundary\") {" >> system.lt - cat "$PATH_TO_OUTPUT_TTREE/Data Boundary" >> system.lt - echo "}" >> system.lt - echo "" >> system.lt - - # Now, run moltemplate on this new .LT file. - moltemplate.sh system.lt - # This will create: "system.data" "system.in.init" "system.in.settings." - - # That's it. The new "system.data" and system.in.* files should - # be ready to run in LAMMPS. - - # Now copy the system.data and system.in.* files to the place where - # you plan to run LAMMPS - mv -f system.data system.in.* ../ - cd ../ - - # Now delete all of the temporary files we generated - rm -rf new_lt_file/ - popd - diff --git a/tools/moltemplate/examples/force_field_OPLSAA/alkane_chain_single/README_setup.sh b/tools/moltemplate/examples/force_field_OPLSAA/alkane_chain_single/README_setup.sh deleted file mode 100755 index 54a6484dacf6b8b30179eb7391d9e6a5232b48ac..0000000000000000000000000000000000000000 --- a/tools/moltemplate/examples/force_field_OPLSAA/alkane_chain_single/README_setup.sh +++ /dev/null @@ -1,26 +0,0 @@ - -# Create LAMMPS input files this way: -cd moltemplate_files - - # run moltemplate - - moltemplate.sh system.lt - - # This will generate various files with names ending in *.in* and *.data. - # Move them to the directory where you plan to run LAMMPS (in this case "../") - mv -f system.data system.in* ../ - - # Optional: - # The "./output_ttree/" directory is full of temporary files generated by - # moltemplate. They can be useful for debugging, but are usually thrown away. - rm -rf output_ttree/ - -cd ../ - - -# Optional: -# Note: The system.data and system.in.settings files contain extra information -# for atoms defined in OPLSAA which you are not using in this simulation. This -# is harmless, but if you to delete this information from your -# system.in.settings and system.in.data files, follow the instructions in -# this script: "optional_cleanup/README_remove_irrelevant_info.sh" diff --git a/tools/moltemplate/examples/force_field_OPLSAA/alkane_chain_single/README_visualize.txt b/tools/moltemplate/examples/force_field_OPLSAA/alkane_chain_single/README_visualize.txt deleted file mode 100644 index 019afc1444a48409143b5c170318479ceb27a391..0000000000000000000000000000000000000000 --- a/tools/moltemplate/examples/force_field_OPLSAA/alkane_chain_single/README_visualize.txt +++ /dev/null @@ -1,87 +0,0 @@ - - ------- To view a lammps trajectory in VMD -------- - - -1) Build a PSF file for use in viewing with VMD. - -This step works with VMD 1.9 and topotools 1.2. -(Older versions, like VMD 1.8.6, don't support this.) - - -a) Start VMD -b) Menu Extensions->Tk Console -c) Enter: - -(I assume that the the DATA file is called "system.data") - - topo readlammpsdata system.data full - animate write psf system.psf - -2) - -Later, to Load a trajectory in VMD: - - Start VMD - Select menu: File->New Molecule - -Browse to select the PSF file you created above, and load it. - (Don't close the window yet.) - -Browse to select the trajectory file. - If necessary, for "file type" select: "LAMMPS Trajectory" - Load it. - - ---- A note on trajectory format: ----- -If the trajectory is a DUMP file, then make sure the it contains the -information you need for pbctools (see below. I've been using this -command in my LAMMPS scripts to create the trajectories: - - dump 1 all custom 5000 DUMP_FILE.lammpstrj id mol type x y z ix iy iz - -It's a good idea to use an atom_style which supports molecule-ID numbers -so that you can assign a molecule-ID number to each atom. (I think this -is needed to wrap atom coordinates without breaking molecules in half.) - -Of course, you don't have to save your trajectories in DUMP format, -(other formats like DCD work fine) I just mention dump files -because these are the files I'm familiar with. - -3) ----- Wrap the coordinates to the unit cell - (without cutting the molecules in half) - -a) Start VMD -b) Load the trajectory in VMD (see above) -c) Menu Extensions->Tk Console -d) Try entering these commands: - - pbc wrap -compound res -all - pbc box - - ----- Optional ---- - Sometimes the solvent or membrane obscures the view of the solute. - It can help to shift the location of the periodic boundary box - To shift the box in the y direction (for example) do this: - - pbc wrap -compound res -all -shiftcenterrel {0.0 0.15 0.0} - pbc box -shiftcenterrel {0.0 0.15 0.0} - - Distances are measured in units of box-length fractions, not Angstroms. - - Alternately if you have a solute whose atoms are all of type 1, - then you can also try this to center the box around it: - - pbc wrap -sel type=1 -all -centersel type=2 -center com - -4) - You should check if your periodic boundary conditions are too small. - To do that: - select Graphics->Representations menu option - click on the "Periodic" tab, and - click on the "+x", "-x", "+y", "-y", "+z", "-z" checkboxes. - -5) Optional: If you like, change the atom types in the PSF file so - that VMD recognizes the atom types, use something like: - -sed -e 's/ 1 1 / C C /g' < system.psf > temp1.psf -sed -e 's/ 2 2 / H H /g' < temp1.psf > temp2.psf -sed -e 's/ 3 3 / P P /g' < temp2.psf > system.psf - -(If you do this, it might effect step 2 above.) diff --git a/tools/moltemplate/examples/force_field_OPLSAA/alkane_chain_single/moltemplate_files/oplsaa_lt_generator/AUTHOR.TXT b/tools/moltemplate/examples/force_field_OPLSAA/alkane_chain_single/moltemplate_files/oplsaa_lt_generator/AUTHOR.TXT deleted file mode 100644 index d5e469af37a84991fe0c172f6d7a7301ed0fcb60..0000000000000000000000000000000000000000 --- a/tools/moltemplate/examples/force_field_OPLSAA/alkane_chain_single/moltemplate_files/oplsaa_lt_generator/AUTHOR.TXT +++ /dev/null @@ -1,3 +0,0 @@ - -OPLSAA force-field conversion tools provided by Jason Lambert. - diff --git a/tools/moltemplate/examples/force_field_OPLSAA/alkane_chain_single/moltemplate_files/oplsaa_lt_generator/README.TXT b/tools/moltemplate/examples/force_field_OPLSAA/alkane_chain_single/moltemplate_files/oplsaa_lt_generator/README.TXT deleted file mode 100644 index dedba938bc6f8e69f7fd8650bd5e1bfc43ef0ded..0000000000000000000000000000000000000000 --- a/tools/moltemplate/examples/force_field_OPLSAA/alkane_chain_single/moltemplate_files/oplsaa_lt_generator/README.TXT +++ /dev/null @@ -1,109 +0,0 @@ -This directory contains instructions for creating a a moltemplate file -("oplsaa.lt") containing force-field definitions relevant to the "Alkane50" -molecule. (However, these instructions should work for other molecules too.) - ---- Instructions --- - -First, check and see if there is an "oplsaa_subset.prm" file present. -If not, then download this file: - -http://dasher.wustl.edu/tinker/distribution/params/oplsaa.prm - This file is also available here: -http://dasher.wustl.edu/ffe/distribution/params/oplsaa.prm - -and save this file as "oplsaa_subset.prm". Then you must EDIT THIS FILE -so that it only contains atom types you plan to have in your simulation -(see below for details). Then run the opls_moltemplate.py script this way: - - -oplsaa_moltemplate.py oplsaa_subset.prm - - -This will create a file named "oplsaa.lt" -Look over the newly created "oplsaa.lt" file. -Then move this file to wherever you plan to run moltemplate. For example: - -mv -f oplsaa.lt .. - ------ DETAILS: Editing the "oplsaa_subset.prm" file ------- - -Again, before you run "oplsaa_moltemplate.py", you must edit the "oplsaa.prm" -file (or "oplsaa_subset.prm file) and eliminate atom types which do not -correspond to any of the atoms in your simulation. This means you must -look for lines near the beginning of this file which begin with the word "atom" -and refer to atom types which appear in the simulation you plan to run. All -other lines (beginning with the word "atom") must be deleted or commented out. -(Leave the rest of the file unmodified!) - -For example: -If you were working with a simple alkane chain, you would delete every line -beginning with the word "atom", except for these three lines: - - -atom 80 13 CT "Alkane CH3-" 6 12.011 4 -atom 81 13 CT "Alkane -CH2-" 6 12.011 4 -atom 85 46 HC "Alkane H-C" 1 1.008 1 - -Then you are ready to run oplsaa_moltemplate.py on this file. - -(Note: The atom type numbers, like "89", "81", "85", "13", "46", etc... may vary - depending on when you downloaded the "oplsaa.prm" file. Be sure to check - the descriptions of each atom type after you download it: "Alkane CH3-") - - ------ Using the "oplsaa.lt" file ----- - -Once you have created the "oplsaa.lt" file, you can create files (like -ethylene.lt) which define molecules that refer to these atom types. -Here is an excerpt from "methane.lt": - -import "oplsaa.lt" -Methane inherits OPLSAA { - write('Data Atoms') { - list of atoms goes here ... - } - write('Data Bond List') { - list of bonds goes here ... - } -} - -And then run moltemplate. - - ------------ CHARGE: ----------- - -By default, the OPLSAA force-field assigns atom charge according to atom type. -When you run moltemplate, it will create a file named "system.in.charges", -containing commands like: - -set type 2 charge -0.42 -set type 3 charge 0.21 - -(This assumes your main moltemplate file is named "system.lt". If it was -named something else, eg "polymer.lt", then the file created by moltemplate -will be named "polymer.in.charges".) - -Include these commands somewhere in your LAMMPS input script -(or use the LAMMPS "include" command to load the commands in system.in.charges) - -Note that the atom numbers (eg "2", "3") in this file will not match the -OPLS atom numbers. (Check the output_ttree/ttree_assignments.txt file, -created by moltemplate, to see a table of "@atom" type numbers translated -from OPLSAA into LAMMPS.) - ------------ CREDIT ----------- - -If you use these tools and you publish a paper using OPLSAA, please also cite -the TINKER program. (Because these examples use the "oplsaa.prm" file which -is distributed with TINKER.) I think these are the relevant citations: - -1) Ponder, J. W., & Richards, F. M. (1987). "An efficient newton‐like method for molecular mechanics energy minimization of large molecules. Journal of Computational Chemistry", 8(7), 1016-1024. - -2) Ponder, J. W, (2004) "TINKER: Software tools for molecular design", http://dasher.wustl.edu/tinker/ - -------------------------------- - -Andrew Jewett and Jason Lambert -May, 2014 - -Please email bugs to jewett.aij@gmail.com and jlamber9@gmail.com diff --git a/tools/moltemplate/examples/force_field_OPLSAA/alkane_chain_single/moltemplate_files/oplsaa_lt_generator/oplsaa_subset.prm b/tools/moltemplate/examples/force_field_OPLSAA/alkane_chain_single/moltemplate_files/oplsaa_lt_generator/oplsaa_subset.prm deleted file mode 100644 index 1260acdbd3f60163752da06379a5bae2fc047a5a..0000000000000000000000000000000000000000 --- a/tools/moltemplate/examples/force_field_OPLSAA/alkane_chain_single/moltemplate_files/oplsaa_lt_generator/oplsaa_subset.prm +++ /dev/null @@ -1,151 +0,0 @@ -# This file is a heavily redacted version of the "oplsaa.prm" file distributed -# with TINKER (Downloaded April, 2014). This version only contains information -# relevant to alkane chains. The complete version of that file works with most -# small organic molecules and you can use that file with moltemplate too. -# Unfortunately, I do not own or have permission to distribute that file. -# You can download the latest complete version of that file here: -# -# http://dasher.wustl.edu/tinker/distribution/params/oplsaa.prm -# -# When building your own molecules, you should download this file, and delete -# only the lines from the "atoms" section which you don't need. (But leave the -# rest of that file alone. I deleted other sections of this file here in order -# to reduce the file size, but this is not necessary.) -# -# Rename the resulting file "oplsaa_subset.prm" -# -# Then you can create an oplsaa.lt file (which moltemplate.sh needs) this way: -# oplsaa_moltemplate.py oplsaa_subset.prm -# -# Then copy the newly created "oplsa.lt" file to the directory where you -# plan to run moltemplate, and run moltemplate: -# moltemplate system.lt - - - ############################## - ## ## - ## Force Field Definition ## - ## ## - ############################## - - -forcefield OPLS-AA - -vdwindex TYPE -vdwtype LENNARD-JONES -radiusrule GEOMETRIC -radiustype SIGMA -radiussize DIAMETER -epsilonrule GEOMETRIC -torsionunit 0.5 -imptorunit 0.5 -vdw-14-scale 2.0 -chg-14-scale 2.0 -electric 332.06 -dielectric 1.0 - - - ############################# - ## ## - ## Literature References ## - ## ## - ############################# - - -The parameters supplied with TINKER are from "OPLS All-Atom Parameters -for Organic Molecules, Ions, Peptides & Nucleic Acids, July 2008" as -provided by W. L. Jorgensen, Yale University during June 2009. These -parameters are taken from those distributed with BOSS Version 4.8. - -Note that "atom type" numbers and not "atom class" numbers are used -to index van der Waals parameters, see the "vdwindex" keyword above - -The atom types with (UA) in the description are "united atom" values, -ie, OPLS-UA, where any nonpolar hydrogen atoms are combined onto their -attached atoms. All other parameters are "all-atom", OPLS-AA, including -explicit hydrogen atoms. - - - ############################# - ## ## - ## Atom Type Definitions ## - ## ## - ############################# - - -atom 80 13 CT "Alkane CH3-" 6 12.011 4 -atom 81 13 CT "Alkane -CH2-" 6 12.011 4 -atom 85 46 HC "Alkane H-C" 1 1.008 1 - - - ################################ - ## ## - ## Van der Waals Parameters ## - ## ## - ################################ - - -vdw 80 3.5000 0.0660 -vdw 81 3.5000 0.0660 -vdw 85 2.5000 0.0300 - - -bond 13 13 268.00 1.5290 -bond 13 46 340.00 1.0900 - - - ################################ - ## ## - ## Angle Bending Parameters ## - ## ## - ################################ - - -angle 13 13 13 58.35 112.70 -angle 46 13 46 33.00 107.80 -angle 13 13 46 37.50 110.70 - - - ############################ - ## ## - ## Torsional Parameters ## - ## ## - ############################ - - - ################################################################### - ## ## - ## Alternative Torsional Parameter Values for Use with OPLS-AA ## - ## ## - ## For some torsions, OPLS-AA has multiple possible parameter ## - ## values; the list below shows functional groups for which ## - ## these alternate (commented) values should be preferred; the ## - ## values are in the same order as in the full parameter list ## - ## ## - ## 13 13 13 13 hydrocarbon (default) ## - ## 13 13 13 13 perfluoroalkane ## - ## ## - ################################################################### - - -torsion 0 13 13 13 1.711 0.0 1 -0.500 180.0 2 0.663 0.0 3 -#torsion 0 13 13 13 -1.336 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 13 13 13 13 1.300 0.0 1 -0.050 180.0 2 0.200 0.0 3 -#torsion 13 13 13 13 6.622 0. 1 0.948 180. 2 -1.388 0. 3 -2.118 180. 4 -torsion 13 13 13 46 0.000 0.0 1 0.000 180.0 2 0.300 0.0 3 -torsion 46 13 13 46 0.000 0.0 1 0.000 180.0 2 0.300 0.0 3 - - - - - ######################################## - ## ## - ## Atomic Partial Charge Parameters ## - ## ## - ######################################## - - -charge 80 -0.1800 -charge 81 -0.1200 -charge 85 0.0600 - diff --git a/tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene/README_setup.sh b/tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene/README_setup.sh deleted file mode 100755 index 54a6484dacf6b8b30179eb7391d9e6a5232b48ac..0000000000000000000000000000000000000000 --- a/tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene/README_setup.sh +++ /dev/null @@ -1,26 +0,0 @@ - -# Create LAMMPS input files this way: -cd moltemplate_files - - # run moltemplate - - moltemplate.sh system.lt - - # This will generate various files with names ending in *.in* and *.data. - # Move them to the directory where you plan to run LAMMPS (in this case "../") - mv -f system.data system.in* ../ - - # Optional: - # The "./output_ttree/" directory is full of temporary files generated by - # moltemplate. They can be useful for debugging, but are usually thrown away. - rm -rf output_ttree/ - -cd ../ - - -# Optional: -# Note: The system.data and system.in.settings files contain extra information -# for atoms defined in OPLSAA which you are not using in this simulation. This -# is harmless, but if you to delete this information from your -# system.in.settings and system.in.data files, follow the instructions in -# this script: "optional_cleanup/README_remove_irrelevant_info.sh" diff --git a/tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene/README_visualize.txt b/tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene/README_visualize.txt deleted file mode 100644 index 019afc1444a48409143b5c170318479ceb27a391..0000000000000000000000000000000000000000 --- a/tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene/README_visualize.txt +++ /dev/null @@ -1,87 +0,0 @@ - - ------- To view a lammps trajectory in VMD -------- - - -1) Build a PSF file for use in viewing with VMD. - -This step works with VMD 1.9 and topotools 1.2. -(Older versions, like VMD 1.8.6, don't support this.) - - -a) Start VMD -b) Menu Extensions->Tk Console -c) Enter: - -(I assume that the the DATA file is called "system.data") - - topo readlammpsdata system.data full - animate write psf system.psf - -2) - -Later, to Load a trajectory in VMD: - - Start VMD - Select menu: File->New Molecule - -Browse to select the PSF file you created above, and load it. - (Don't close the window yet.) - -Browse to select the trajectory file. - If necessary, for "file type" select: "LAMMPS Trajectory" - Load it. - - ---- A note on trajectory format: ----- -If the trajectory is a DUMP file, then make sure the it contains the -information you need for pbctools (see below. I've been using this -command in my LAMMPS scripts to create the trajectories: - - dump 1 all custom 5000 DUMP_FILE.lammpstrj id mol type x y z ix iy iz - -It's a good idea to use an atom_style which supports molecule-ID numbers -so that you can assign a molecule-ID number to each atom. (I think this -is needed to wrap atom coordinates without breaking molecules in half.) - -Of course, you don't have to save your trajectories in DUMP format, -(other formats like DCD work fine) I just mention dump files -because these are the files I'm familiar with. - -3) ----- Wrap the coordinates to the unit cell - (without cutting the molecules in half) - -a) Start VMD -b) Load the trajectory in VMD (see above) -c) Menu Extensions->Tk Console -d) Try entering these commands: - - pbc wrap -compound res -all - pbc box - - ----- Optional ---- - Sometimes the solvent or membrane obscures the view of the solute. - It can help to shift the location of the periodic boundary box - To shift the box in the y direction (for example) do this: - - pbc wrap -compound res -all -shiftcenterrel {0.0 0.15 0.0} - pbc box -shiftcenterrel {0.0 0.15 0.0} - - Distances are measured in units of box-length fractions, not Angstroms. - - Alternately if you have a solute whose atoms are all of type 1, - then you can also try this to center the box around it: - - pbc wrap -sel type=1 -all -centersel type=2 -center com - -4) - You should check if your periodic boundary conditions are too small. - To do that: - select Graphics->Representations menu option - click on the "Periodic" tab, and - click on the "+x", "-x", "+y", "-y", "+z", "-z" checkboxes. - -5) Optional: If you like, change the atom types in the PSF file so - that VMD recognizes the atom types, use something like: - -sed -e 's/ 1 1 / C C /g' < system.psf > temp1.psf -sed -e 's/ 2 2 / H H /g' < temp1.psf > temp2.psf -sed -e 's/ 3 3 / P P /g' < temp2.psf > system.psf - -(If you do this, it might effect step 2 above.) diff --git a/tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene/moltemplate_files/oplsaa_lt_generator/AUTHOR.TXT b/tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene/moltemplate_files/oplsaa_lt_generator/AUTHOR.TXT deleted file mode 100644 index d5e469af37a84991fe0c172f6d7a7301ed0fcb60..0000000000000000000000000000000000000000 --- a/tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene/moltemplate_files/oplsaa_lt_generator/AUTHOR.TXT +++ /dev/null @@ -1,3 +0,0 @@ - -OPLSAA force-field conversion tools provided by Jason Lambert. - diff --git a/tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene/moltemplate_files/oplsaa_lt_generator/README.TXT b/tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene/moltemplate_files/oplsaa_lt_generator/README.TXT deleted file mode 100644 index 6da3456025b509e1ef4845447b7eb8161f200f84..0000000000000000000000000000000000000000 --- a/tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene/moltemplate_files/oplsaa_lt_generator/README.TXT +++ /dev/null @@ -1,110 +0,0 @@ -This directory contains instructions for creating a a moltemplate file -("oplsaa.lt") containing force-field definitions relevant to the -"ethylene+benzene" example. (However, these instructions should work -for other molecules too.) - -First, check and see if there is an "oplsaa_subset.prm" file present. -If not, then download this file: - -http://dasher.wustl.edu/tinker/distribution/params/oplsaa.prm - This file is also available here: -http://dasher.wustl.edu/ffe/distribution/params/oplsaa.prm - -and save this file as "oplsaa_subset.prm". Then you must EDIT THIS FILE -so that it only contains atom types you plan to have in your simulation -(see below for details). Then run the opls_moltemplate.py script this way: - - -oplsaa_moltemplate.py oplsaa_subset.prm - - -This will create a file named "oplsaa.lt" -Look over the newly created "oplsaa.lt" file. -Then move this file to wherever you plan to run moltemplate. For example: - -mv -f oplsaa.lt .. - ------ DETAILS: Editing the "oplsaa_subset.prm" file ------- - -Again, before you run "oplsaa_moltemplate.py", you must edit the "oplsaa.prm" -file (or "oplsaa_subset.prm file) and eliminate atom types which do not -correspond to any of the atoms in your simulation. This means you must -look for lines near the beginning of this file which begin with the word "atom" -and refer to atom types which appear in the simulation you plan to run. All -other lines (beginning with the word "atom") must be deleted or commented out. -(Leave the rest of the file alone.) - -For example: -If you were working with ethylene and benzene you would delete every line -beginning with the word "atom", except for these four lines: - -# for ethylene: -atom 88 47 CM "Alkene H2-C=" 6 12.011 3 -atom 89 46 HC "Alkene H-C=" 1 1.008 1 -# for benzene: -atom 90 48 CA "Aromatic C" 6 12.011 3 -atom 91 49 HA "Aromatic H-C" 1 1.008 1 - -Then you are ready to run oplsaa_moltemplate.py on this file. - -(Note: Atom type numbers, like "88", "89", "47", etc... may vary depending on - when you downloaded "oplsaa.prm".) - - - ------ Using the "oplsaa.lt" file ----- - -Once you have created the "oplsaa.lt" file, you can create files (like -ethylene.lt) which define molecules that refer to these atom types. -Here is an excerpt from "ethyelene.lt": - -import "oplsaa.lt" -Ethylene inherits OPLSAA { - write('Data Atoms') { - list of atoms goes here ... - } - write('Data Bond List') { - list of bonds goes here ... - } -} - -And then run moltemplate. - - ------------ CHARGE: ----------- - -By default, the OPLSAA force-field assigns atom charge according to atom type. -When you run moltemplate, it will create a file named "system.in.charges", -containing commands like: - -set type 2 charge -0.42 -set type 3 charge 0.21 - -(This assumes your main moltemplate file is named "system.lt". If it was -named something else, eg "polymer.lt", then the file created by moltemplate -will be named "polymer.in.charges".) - -Include these commands somewhere in your LAMMPS input script -(or use the LAMMPS "include" command to load the commands in system.in.charges) - -Note that the atom numbers (eg "2", "3") in this file will not match the -OPLS atom numbers. (Check the output_ttree/ttree_assignments.txt file, -created by moltemplate, to see a table of "@atom" type numbers translated -from OPLSAA into LAMMPS.) - ------------ CREDIT ----------- - -If you use these tools and you publish a paper using OPLSAA, please also cite -the TINKER program. (Because these examples use the "oplsaa.prm" file which -is distributed with TINKER.) I think these are the relevant citations: - -1) Ponder, J. W., & Richards, F. M. (1987). "An efficient newton‐like method for molecular mechanics energy minimization of large molecules. Journal of Computational Chemistry", 8(7), 1016-1024. - -2) Ponder, J. W, (2004) "TINKER: Software tools for molecular design", http://dasher.wustl.edu/tinker/ - -------------------------------- - -Jason Lambert and Andrew Jewett -April, 2014 - -Please email bugs to jewett.aij@gmail.com and jlamber9@gmail.com diff --git a/tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene/moltemplate_files/oplsaa_lt_generator/minimal_versions/README.TXT b/tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene/moltemplate_files/oplsaa_lt_generator/minimal_versions/README.TXT deleted file mode 100644 index 2fc1ea29ea1f467f7fd5c7292372305835bb3f33..0000000000000000000000000000000000000000 --- a/tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene/moltemplate_files/oplsaa_lt_generator/minimal_versions/README.TXT +++ /dev/null @@ -1,16 +0,0 @@ -MOST USERS SHOULD IGNORE THIS DIRECTORY. - -This directory contains versions of the oplsaa_subset.prm file -which nearly all of the OPLSAA force-field information removed. -However for the "ethylene+benzene" example, all of the essential -parameters are contained in these files. You can use oplsaa_moltemplate.py -with either of these files and the physics should be the same. - -However there is no reason to do this. -When you download the "oplsaa.prm" file from: -http://dasher.wustl.edu/tinker/distribution/params/oplsaa.prm -(also http://dasher.wustl.edu/ffe/distribution/params/oplsaa.prm) -...just remove the lines beginning with "atom" for atoms you don't need. -You don't have to delete all the other irrelevant interactions. -(In fact, it is hard to do that without making a mistake. - I recommend that you leave the rest of the oplsaa.prm file alone.) diff --git a/tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene/moltemplate_files/oplsaa_lt_generator/minimal_versions/oplsaa_subset_minimal.prm b/tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene/moltemplate_files/oplsaa_lt_generator/minimal_versions/oplsaa_subset_minimal.prm deleted file mode 100644 index b4078f121422fd37129611b9b867d5fe9e674b6b..0000000000000000000000000000000000000000 --- a/tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene/moltemplate_files/oplsaa_lt_generator/minimal_versions/oplsaa_subset_minimal.prm +++ /dev/null @@ -1,37 +0,0 @@ - ############################# - ## Atom Type Definitions ## - ############################# - - -atom 88 47 CM "Alkene H2-C=" 6 12.011 3 -atom 89 46 HC "Alkene H-C=" 1 1.008 1 -atom 90 48 CA "Aromatic C" 6 12.011 3 -atom 91 49 HA "Aromatic H-C" 1 1.008 1 - -vdw 88 3.5500 0.0760 -vdw 89 2.4200 0.0300 -vdw 90 3.5500 0.0700 -vdw 91 2.4200 0.0300 - -bond 46 47 340.00 1.0800 -bond 47 47 549.00 1.3400 -bond 48 48 469.00 1.4000 -bond 48 49 367.00 1.0800 - -angle 46 47 46 35.00 117.00 -angle 46 47 47 35.00 120.00 -angle 48 48 48 63.00 120.00 -angle 48 48 49 35.00 120.00 - -torsion 46 47 47 46 0.000 0.0 1 14.000 180.0 2 0.000 0.0 3 -torsion 48 48 48 48 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 49 48 48 49 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 48 48 48 49 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 - -imptors 0 0 47 0 30.000 180.0 2 -imptors 0 0 48 0 5.000 180.0 2 - -charge 88 -0.2300 -charge 89 0.1150 -charge 90 -0.1150 -charge 91 0.1150 diff --git a/tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene/moltemplate_files/oplsaa_lt_generator/minimal_versions/oplsaa_subset_simplified.prm b/tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene/moltemplate_files/oplsaa_lt_generator/minimal_versions/oplsaa_subset_simplified.prm deleted file mode 100644 index 6dbc6861ac8a8ba721deab7ffca1e1723b136526..0000000000000000000000000000000000000000 --- a/tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene/moltemplate_files/oplsaa_lt_generator/minimal_versions/oplsaa_subset_simplified.prm +++ /dev/null @@ -1,49 +0,0 @@ - ############################# - ## Atom Type Definitions ## - ############################# - -atom 88 47 CM "Alkene H2-C=" 6 12.011 3 -atom 89 46 HC "Alkene H-C=" 1 1.008 1 -atom 90 48 CA "Aromatic C" 6 12.011 3 -atom 91 49 HA "Aromatic H-C" 1 1.008 1 - -vdw 88 3.5500 0.0760 -vdw 89 2.4200 0.0300 -vdw 90 3.5500 0.0700 -vdw 91 2.4200 0.0300 - -bond 46 47 340.00 1.0800 -bond 47 47 549.00 1.3400 -bond 47 48 427.00 1.4330 -bond 48 48 469.00 1.4000 -bond 48 49 367.00 1.0800 - -angle 46 47 46 35.00 117.00 -angle 46 47 47 35.00 120.00 -angle 46 47 48 35.00 123.30 -angle 47 47 48 85.00 117.00 -angle 48 48 48 63.00 120.00 -angle 47 48 48 70.00 124.00 -angle 48 48 49 35.00 120.00 - -imptors 0 0 47 0 30.000 180.0 2 -imptors 0 0 48 0 5.000 180.0 2 - -torsion 47 46 47 46 0.000 0.0 1 -8.000 180.0 2 0.000 0.0 3 -torsion 0 47 47 0 0.000 0.0 1 14.000 180.0 2 0.000 0.0 3 -torsion 46 47 47 46 0.000 0.0 1 14.000 180.0 2 0.000 0.0 3 -torsion 46 47 47 48 0.000 0.0 1 14.000 180.0 2 0.000 0.0 3 -torsion 46 47 48 48 0.000 0.0 1 0.000 180.0 2 -0.372 0.0 3 -torsion 47 47 48 48 1.241 0.0 1 3.353 180.0 2 -0.286 0.0 3 -torsion 0 48 48 0 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 0 48 48 48 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 0 48 48 49 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 47 48 48 49 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 48 48 48 48 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 48 48 48 49 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 49 48 48 49 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 - -charge 88 -0.2300 -charge 89 0.1150 -charge 90 -0.1150 -charge 91 0.1150 diff --git a/tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene/moltemplate_files/oplsaa_lt_generator/oplsaa_subset.prm b/tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene/moltemplate_files/oplsaa_lt_generator/oplsaa_subset.prm deleted file mode 100644 index c802793adaef5b73fefebb3be808a7ebddd8d7db..0000000000000000000000000000000000000000 --- a/tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene/moltemplate_files/oplsaa_lt_generator/oplsaa_subset.prm +++ /dev/null @@ -1,5129 +0,0 @@ -# This is a modified version of the file "oplsaa.prm" distributed with TINKER -# http://dasher.wustl.edu/tinker/distribution/params/oplsaa.prm -# In this version, all of the lines beginning with "atom" have been deleted -# except for the atom types we will be using in this simulation -# (I also deleted some other lines from that file data to reduce the file size, -# but doing that is not necessary.) -# -# If you use this file, please also cite the software this file comes from: -# -# Ponder, J. W., and Richards, F. M. J. Comput. Chem. (1987) 8(7), 1016-1024 -# "An efficient newton‐like method for molecular mechanics energy -# minimization of large molecules." -# -# Ponder, J. W, (2004) -# "TINKER: Software tools for molecular design" -# http://dasher.wustl.edu/tinker/ - - ############################## - ## ## - ## Force Field Definition ## - ## ## - ############################## - - -forcefield OPLS-AA - -vdwindex TYPE -vdwtype LENNARD-JONES -radiusrule GEOMETRIC -radiustype SIGMA -radiussize DIAMETER -epsilonrule GEOMETRIC -torsionunit 0.5 -imptorunit 0.5 -vdw-14-scale 2.0 -chg-14-scale 2.0 -electric 332.06 -dielectric 1.0 - - - ############################# - ## ## - ## Literature References ## - ## ## - ############################# - - -The parameters supplied with TINKER are from "OPLS All-Atom Parameters -for Organic Molecules, Ions, Peptides & Nucleic Acids, July 2008" as -provided by W. L. Jorgensen, Yale University during June 2009. These -parameters are taken from those distributed with BOSS Version 4.8. - -Note that "atom type" numbers and not "atom class" numbers are used -to index van der Waals parameters, see the "vdwindex" keyword above - -The atom types with (UA) in the description are "united atom" values, -ie, OPLS-UA, where any nonpolar hydrogen atoms are combined onto their -attached atoms. All other parameters are "all-atom", OPLS-AA, including -explicit hydrogen atoms. - - - ############################# - ## ## - ## Atom Type Definitions ## - ## ## - ############################# - - -atom 88 47 CM "Alkene H2-C=" 6 12.011 3 -atom 89 46 HC "Alkene H-C=" 1 1.008 1 -atom 90 48 CA "Aromatic C" 6 12.011 3 -atom 91 49 HA "Aromatic H-C" 1 1.008 1 - - - ################################ - ## ## - ## Van der Waals Parameters ## - ## ## - ################################ - - -vdw 1 2.9400 0.0610 -vdw 2 3.9050 0.1180 -vdw 3 3.7500 0.1050 -vdw 4 2.9600 0.2100 -vdw 5 3.0000 0.1700 -vdw 6 3.9100 0.1600 -vdw 7 0.0000 0.0000 -vdw 8 3.7300 0.2940 -vdw 9 3.7750 0.2070 -vdw 10 3.9050 0.1750 -vdw 11 3.9100 0.1600 -vdw 12 3.9600 0.1450 -vdw 13 3.9050 0.1180 -vdw 14 3.8500 0.1400 -vdw 15 3.8500 0.0800 -vdw 16 3.8000 0.1150 -vdw 17 3.7500 0.1100 -vdw 18 3.8000 0.0500 -vdw 19 3.7500 0.1050 -vdw 20 3.0700 0.1700 -vdw 21 0.0000 0.0000 -vdw 22 3.7750 0.2070 -vdw 23 3.9050 0.1180 -vdw 24 3.7000 0.2500 -vdw 25 3.5500 0.2500 -vdw 26 3.5500 0.2500 -vdw 27 3.5500 0.2500 -vdw 28 0.0000 0.0000 -vdw 29 0.0000 0.0000 -vdw 30 3.7750 0.2070 -vdw 31 3.9050 0.1180 -vdw 32 3.8000 0.1700 -vdw 33 3.8000 0.1180 -vdw 34 3.8000 0.1700 -vdw 35 3.8000 0.1180 -vdw 36 3.2000 0.1700 -vdw 37 3.6500 0.1500 -vdw 38 3.7750 0.2070 -vdw 39 3.8500 0.0800 -vdw 40 3.8000 0.0500 -vdw 41 3.0000 0.1700 -vdw 42 3.8000 0.1700 -vdw 43 3.8000 0.1180 -vdw 44 3.8000 0.1180 -vdw 45 3.4000 0.3000 -vdw 46 3.8000 0.0800 -vdw 47 3.4700 0.3000 -vdw 48 3.8000 0.0500 -vdw 49 3.4700 0.2660 -vdw 50 3.5600 0.3950 -vdw 51 2.9300 0.2800 -vdw 52 3.8100 0.1600 -vdw 53 2.9600 0.2100 -vdw 54 3.2500 0.1700 -vdw 55 3.8000 0.1150 -vdw 56 3.8000 0.1700 -vdw 57 0.0000 0.0000 -vdw 58 2.5560 0.0200 -vdw 59 2.7800 0.0690 -vdw 60 3.4010 0.2339 -vdw 61 3.6240 0.3170 -vdw 62 3.9350 0.4330 -vdw 63 3.15061 0.1521 -vdw 64 0.0000 0.0000 -vdw 65 3.15365 0.1550 -vdw 66 0.0000 0.0000 -vdw 67 0.0000 0.0000 -vdw 68 3.1760 0.1500 -vdw 69 0.0000 0.0000 -vdw 70 3.2700 0.1000 -vdw 71 0.0000 0.0000 -vdw 72 0.0000 0.0000 -vdw 73 3.1200 0.1600 -vdw 74 0.0000 0.0000 -vdw 75 0.0000 0.0000 -vdw 76 3.16557 0.1554 -vdw 77 0.0000 0.0000 -vdw 78 3.4200 0.1700 -vdw 79 0.0000 0.0000 -vdw 80 3.5000 0.0660 -vdw 81 3.5000 0.0660 -vdw 82 3.5000 0.0660 -vdw 83 3.5000 0.0660 -vdw 84 3.5000 0.0660 -vdw 85 2.5000 0.0300 -vdw 86 3.5500 0.0760 -vdw 87 3.5500 0.0760 -vdw 88 3.5500 0.0760 -vdw 89 2.4200 0.0300 -vdw 90 3.5500 0.0700 -vdw 91 2.4200 0.0300 -vdw 92 3.5500 0.0700 -vdw 93 3.5000 0.0660 -vdw 94 3.5000 0.0660 -vdw 95 3.5500 0.0760 -vdw 96 3.1200 0.1700 -vdw 97 0.0000 0.0000 -vdw 98 2.5000 0.0300 -vdw 99 3.5000 0.0660 -vdw 100 3.5000 0.0660 -vdw 101 3.5000 0.0660 -vdw 102 3.5000 0.0660 -vdw 103 3.2500 0.0620 -vdw 104 3.0700 0.1700 -vdw 105 0.0000 0.0000 -vdw 106 2.9400 0.0610 -vdw 107 2.5000 0.0300 -vdw 108 3.5500 0.0700 -vdw 109 3.0700 0.1700 -vdw 110 0.0000 0.0000 -vdw 111 3.0700 0.1700 -vdw 112 0.0000 0.0000 -vdw 113 3.0700 0.1700 -vdw 114 0.0000 0.0000 -vdw 115 3.5000 0.0660 -vdw 116 3.5000 0.0660 -vdw 117 3.5000 0.0660 -vdw 118 2.5000 0.0300 -vdw 119 2.9000 0.1400 -vdw 120 3.5500 0.0760 -vdw 121 2.9000 0.1400 -vdw 122 2.9000 0.1400 -vdw 123 3.5000 0.0660 -vdw 124 3.5000 0.0660 -vdw 125 3.5000 0.0660 -vdw 126 3.5000 0.0660 -vdw 127 2.5000 0.0300 -vdw 128 2.9000 0.1400 -vdw 129 3.0700 0.1700 -vdw 130 0.0000 0.0000 -vdw 131 3.5000 0.0660 -vdw 132 2.5000 0.0300 -vdw 133 3.5000 0.0660 -vdw 134 2.5000 0.0300 -vdw 135 3.5000 0.0660 -vdw 136 2.5000 0.0300 -vdw 137 3.5000 0.0660 -vdw 138 2.5000 0.0300 -vdw 139 3.5000 0.0660 -vdw 140 3.5000 0.0660 -vdw 141 3.5500 0.0700 -vdw 142 3.5500 0.2500 -vdw 143 3.7000 0.2500 -vdw 144 3.5500 0.2500 -vdw 145 3.5500 0.2500 -vdw 146 0.0000 0.0000 -vdw 147 0.0000 0.0000 -vdw 148 3.5000 0.0660 -vdw 149 3.5000 0.0660 -vdw 150 3.5000 0.0660 -vdw 151 3.5000 0.0660 -vdw 152 3.5000 0.0660 -vdw 153 3.5000 0.0660 -vdw 154 3.5000 0.0660 -vdw 155 3.5000 0.0660 -vdw 156 3.5000 0.0660 -vdw 157 3.5000 0.0660 -vdw 158 3.5000 0.0660 -vdw 159 3.5000 0.0660 -vdw 160 3.5000 0.0660 -vdw 161 3.5000 0.0660 -vdw 162 3.5000 0.0660 -vdw 163 3.5500 0.0700 -vdw 164 3.5500 0.2500 -vdw 165 3.5000 0.0660 -vdw 166 3.5000 0.0660 -vdw 167 3.5000 0.0660 -vdw 168 3.4000 0.3000 -vdw 169 3.5500 0.0760 -vdw 170 3.5500 0.0700 -vdw 171 3.5000 0.0660 -vdw 172 3.5000 0.0660 -vdw 173 3.7500 0.1050 -vdw 174 3.7500 0.1050 -vdw 175 3.7500 0.1050 -vdw 176 3.7500 0.1050 -vdw 177 3.7500 0.1050 -vdw 178 2.9600 0.2100 -vdw 179 3.2500 0.1700 -vdw 180 3.2500 0.1700 -vdw 181 3.2500 0.1700 -vdw 182 0.0000 0.0000 -vdw 183 0.0000 0.0000 -vdw 184 3.5000 0.0660 -vdw 185 3.5000 0.0660 -vdw 186 3.5000 0.0660 -vdw 187 3.5000 0.0660 -vdw 188 3.5000 0.0660 -vdw 189 3.7500 0.1050 -vdw 190 2.9600 0.2100 -vdw 191 3.2500 0.1700 -vdw 192 0.0000 0.0000 -vdw 193 3.2500 0.1700 -vdw 194 3.7500 0.1050 -vdw 195 2.9600 0.2100 -vdw 196 0.0000 0.0000 -vdw 197 2.5000 0.0200 -vdw 198 3.5000 0.0660 -vdw 199 3.5000 0.0660 -vdw 200 3.5000 0.0660 -vdw 201 3.5000 0.0660 -vdw 202 3.5500 0.0700 -vdw 203 3.6500 0.1500 -vdw 204 3.2000 0.1700 -vdw 205 3.5500 0.0700 -vdw 206 3.4000 0.3000 -vdw 207 3.2500 0.1700 -vdw 208 3.5500 0.0700 -vdw 209 3.7500 0.1050 -vdw 210 2.9600 0.2100 -vdw 211 3.0000 0.1700 -vdw 212 0.0000 0.0000 -vdw 213 3.7500 0.1050 -vdw 214 2.9600 0.2100 -vdw 215 3.5000 0.0660 -vdw 216 3.5000 0.0660 -vdw 217 3.5000 0.0660 -vdw 218 3.5000 0.0660 -vdw 219 3.7500 0.1050 -vdw 220 2.9600 0.2100 -vdw 221 2.4200 0.0150 -vdw 222 3.7500 0.1050 -vdw 223 2.9600 0.2100 -vdw 224 2.4200 0.0150 -vdw 225 3.5000 0.0660 -vdw 226 3.5000 0.0660 -vdw 227 3.5000 0.0660 -vdw 228 3.5000 0.0660 -vdw 229 3.2500 0.1700 -vdw 230 3.2500 0.1700 -vdw 231 3.2500 0.1700 -vdw 232 0.0000 0.0000 -vdw 233 0.0000 0.0000 -vdw 234 3.5000 0.0660 -vdw 235 3.5000 0.0660 -vdw 236 3.5000 0.0660 -vdw 237 3.5000 0.0660 -vdw 238 3.5000 0.0660 -vdw 239 3.5000 0.0660 -vdw 240 3.5000 0.0660 -vdw 241 3.5000 0.0660 -vdw 242 3.5000 0.0660 -vdw 243 3.2500 0.1700 -vdw 244 0.0000 0.0000 -vdw 245 3.5500 0.0500 -vdw 246 3.2500 0.1700 -vdw 247 0.0000 0.0000 -vdw 248 3.5000 0.0660 -vdw 249 3.5000 0.0660 -vdw 250 3.5000 0.0660 -vdw 251 3.5000 0.0660 -vdw 252 3.2500 0.1700 -vdw 253 0.0000 0.0000 -vdw 254 3.2500 0.1700 -vdw 255 3.5000 0.0800 -vdw 256 3.2500 0.1700 -vdw 257 0.0000 0.0000 -vdw 258 3.5000 0.0800 -vdw 259 2.5000 0.0500 -vdw 260 3.5000 0.0800 -vdw 261 2.5000 0.0500 -vdw 262 3.2500 0.1700 -vdw 263 3.7500 0.1050 -vdw 264 3.2500 0.1700 -vdw 265 3.7500 0.1050 -vdw 266 3.5000 0.0800 -vdw 267 3.5000 0.0800 -vdw 268 0.0000 0.0000 -vdw 269 2.9600 0.2100 -vdw 270 0.0000 0.0000 -vdw 271 2.9600 0.2100 -vdw 272 2.5000 0.0500 -vdw 273 2.5000 0.0500 -vdw 274 3.5000 0.0800 -vdw 275 2.5000 0.0500 -vdw 276 3.2500 0.1700 -vdw 277 3.7500 0.1050 -vdw 278 3.2500 0.1700 -vdw 279 3.5000 0.0800 -vdw 280 3.5000 0.0800 -vdw 281 3.5000 0.0800 -vdw 282 0.0000 0.0000 -vdw 283 2.9600 0.2100 -vdw 284 3.2500 0.1700 -vdw 285 0.0000 0.0000 -vdw 286 0.0000 0.0000 -vdw 287 2.5000 0.0500 -vdw 288 2.5000 0.0500 -vdw 289 3.2500 0.1700 -vdw 290 3.5000 0.0800 -vdw 291 3.2500 0.1700 -vdw 292 3.5000 0.0800 -vdw 293 3.5000 0.0800 -vdw 294 3.5000 0.0800 -vdw 295 3.2500 0.1700 -vdw 296 3.5000 0.0800 -vdw 297 3.2500 0.1700 -vdw 298 2.5000 0.0500 -vdw 299 3.2500 0.1700 -vdw 300 0.0000 0.0000 -vdw 301 0.0000 0.0000 -vdw 302 2.5000 0.0500 -vdw 303 0.0000 0.0000 -vdw 304 3.2500 0.1700 -vdw 305 3.5000 0.0800 -vdw 306 3.2500 0.1700 -vdw 307 3.5000 0.0800 -vdw 308 3.5000 0.0800 -vdw 309 3.7500 0.1050 -vdw 310 0.0000 0.0000 -vdw 311 3.2500 0.1700 -vdw 312 0.0000 0.0000 -vdw 313 2.9600 0.2100 -vdw 314 3.5000 0.0800 -vdw 315 2.5000 0.0500 -vdw 316 3.5000 0.0800 -vdw 317 2.5000 0.0500 -vdw 318 3.5000 0.0800 -vdw 319 2.5000 0.0500 -vdw 320 3.2500 0.1700 -vdw 321 3.7500 0.1050 -vdw 322 3.2500 0.1700 -vdw 323 3.5000 0.0800 -vdw 324 3.5000 0.0800 -vdw 325 3.5000 0.0800 -vdw 326 0.0000 0.0000 -vdw 327 2.9600 0.2100 -vdw 328 0.0000 0.0000 -vdw 329 3.2500 0.1700 -vdw 330 0.0000 0.0000 -vdw 331 0.0000 0.0000 -vdw 332 2.5000 0.0500 -vdw 333 2.5000 0.0500 -vdw 334 3.5000 0.0800 -vdw 335 2.5000 0.0500 -vdw 336 3.7400 0.2000 -vdw 337 2.9600 0.2100 -vdw 338 3.0000 0.1700 -vdw 339 3.5500 0.0660 -vdw 340 3.5000 0.0800 -vdw 341 3.4000 0.3000 -vdw 342 3.5500 0.0760 -vdw 343 3.0500 0.7100 -vdw 344 4.0200 0.7100 -vdw 345 4.2800 0.7100 -vdw 346 4.8100 0.7100 -vdw 347 5.3400 0.0005 -vdw 348 2.8700 0.0005 -vdw 349 4.0700 0.0005 -vdw 350 5.1700 0.0005 -vdw 351 5.6000 0.0005 -vdw 352 6.2000 0.0005 -vdw 353 1.644471 0.875044 -vdw 354 2.412031 0.449657 -vdw 355 3.102688 0.118226 -vdw 356 3.816610 0.047096 -vdw 357 4.2000 0.3000 -vdw 358 2.5000 0.0500 -vdw 359 4.2500 0.5000 -vdw 360 4.2000 0.3000 -vdw 361 2.5000 0.0500 -vdw 362 3.1500 0.2500 -vdw 363 4.2000 0.3000 -vdw 364 2.5000 0.0500 -vdw 365 3.6500 0.1500 -vdw 366 3.4000 0.2500 -vdw 367 4.2000 0.3000 -vdw 368 2.5000 0.0500 -vdw 369 3.4000 0.2500 -vdw 370 2.5000 0.0500 -vdw 371 4.2000 0.3000 -vdw 372 2.5000 0.0500 -vdw 373 4.2000 0.3000 -vdw 374 2.5000 0.0500 -vdw 375 0.0000 0.0000 -vdw 376 3.2000 0.2500 -vdw 377 0.0000 0.0000 -vdw 378 2.81524 0.4000 -vdw 379 3.11815 0.2000 -vdw 380 2.9000 0.1400 -vdw 381 3.7400 0.2000 -vdw 382 3.1500 0.2000 -vdw 383 2.9000 0.1400 -vdw 384 3.5000 0.0660 -vdw 385 2.5000 0.0300 -vdw 386 3.7400 0.2000 -vdw 387 3.1500 0.2000 -vdw 388 2.9000 0.1400 -vdw 389 3.5000 0.0660 -vdw 390 2.5000 0.0300 -vdw 391 3.7400 0.2000 -vdw 392 3.1500 0.2000 -vdw 393 2.9000 0.1400 -vdw 394 3.5000 0.0660 -vdw 395 2.5000 0.0300 -vdw 396 3.5000 0.0660 -vdw 397 2.5000 0.0300 -vdw 398 3.5500 0.0700 -vdw 399 3.5000 0.0660 -vdw 400 2.5000 0.0300 -vdw 401 3.5500 0.0700 -vdw 402 3.5000 0.0660 -vdw 403 2.5000 0.0300 -vdw 404 3.5500 0.0700 -vdw 405 3.5000 0.0660 -vdw 406 3.7500 0.1050 -vdw 407 2.9600 0.2100 -vdw 408 3.0000 0.1700 -vdw 409 3.5000 0.0660 -vdw 410 2.4200 0.0150 -vdw 411 3.7500 0.1050 -vdw 412 3.7500 0.1050 -vdw 413 3.5500 0.0700 -vdw 414 3.0000 0.1700 -vdw 415 3.5500 0.2500 -vdw 416 2.9600 0.1700 -vdw 417 3.5000 0.0660 -vdw 418 2.5000 0.0300 -vdw 419 3.2500 0.1700 -vdw 420 0.0000 0.0000 -vdw 421 3.2500 0.1700 -vdw 422 0.0000 0.0000 -vdw 423 3.5000 0.0660 -vdw 424 2.5000 0.0300 -vdw 425 3.5000 0.0660 -vdw 426 2.5000 0.0300 -vdw 427 3.5000 0.0660 -vdw 428 2.5000 0.0300 -vdw 429 3.5500 0.0700 -vdw 430 3.5500 0.0700 -vdw 431 3.5000 0.0660 -vdw 432 3.5000 0.0660 -vdw 433 3.5000 0.0660 -vdw 434 3.5500 0.2500 -vdw 435 2.9600 0.1700 -vdw 436 3.5600 0.3950 -vdw 437 3.5600 0.3950 -vdw 438 2.9300 0.2800 -vdw 439 3.5000 0.0660 -vdw 440 3.5000 0.0660 -vdw 441 3.5500 0.0700 -vdw 442 3.5500 0.0700 -vdw 443 3.5500 0.0700 -vdw 444 3.2500 0.1700 -vdw 445 0.0000 0.0000 -vdw 446 3.5000 0.0660 -vdw 447 3.5500 0.0700 -vdw 448 3.5500 0.0700 -vdw 449 3.5500 0.0700 -vdw 450 3.5500 0.0700 -vdw 451 3.5500 0.0700 -vdw 452 3.2500 0.1700 -vdw 453 3.2500 0.1700 -vdw 454 0.0000 0.0000 -vdw 455 3.5500 0.0700 -vdw 456 3.5000 0.0660 -vdw 457 3.5000 0.0660 -vdw 458 3.5500 0.0760 -vdw 459 3.5500 0.0760 -vdw 460 3.5500 0.0700 -vdw 461 3.2500 0.1700 -vdw 462 3.5500 0.0700 -vdw 463 3.5500 0.0700 -vdw 464 3.5500 0.0700 -vdw 465 2.4200 0.0300 -vdw 466 2.4200 0.0300 -vdw 467 2.4200 0.0300 -vdw 468 3.2500 0.1700 -vdw 469 3.5500 0.0700 -vdw 470 2.4200 0.0300 -vdw 471 3.2500 0.1700 -vdw 472 3.5500 0.0700 -vdw 473 3.5500 0.0700 -vdw 474 3.5500 0.0700 -vdw 475 2.4200 0.0300 -vdw 476 2.4200 0.0300 -vdw 477 2.4200 0.0300 -vdw 478 3.2500 0.1700 -vdw 479 3.5500 0.0700 -vdw 480 3.5500 0.0700 -vdw 481 2.4200 0.0300 -vdw 482 2.4200 0.0300 -vdw 483 3.2500 0.1700 -vdw 484 3.5500 0.0700 -vdw 485 3.5500 0.0700 -vdw 486 0.0000 0.0000 -vdw 487 2.4200 0.0300 -vdw 488 2.4200 0.0300 -vdw 489 3.2500 0.1700 -vdw 490 3.2500 0.1700 -vdw 491 3.5500 0.0700 -vdw 492 3.5500 0.0700 -vdw 493 3.5500 0.0700 -vdw 494 0.0000 0.0000 -vdw 495 2.4200 0.0300 -vdw 496 2.4200 0.0300 -vdw 497 2.4200 0.0300 -vdw 498 3.2500 0.1700 -vdw 499 3.5500 0.0700 -vdw 500 3.2500 0.1700 -vdw 501 3.5500 0.0700 -vdw 502 3.5500 0.0700 -vdw 503 0.0000 0.0000 -vdw 504 2.4200 0.0300 -vdw 505 2.4200 0.0300 -vdw 506 2.4200 0.0300 -vdw 507 2.9000 0.1400 -vdw 508 3.5500 0.0700 -vdw 509 3.5500 0.0760 -vdw 510 2.4200 0.0300 -vdw 511 2.4200 0.0300 -vdw 512 2.9000 0.1400 -vdw 513 3.5500 0.0700 -vdw 514 3.2500 0.1700 -vdw 515 3.5500 0.0700 -vdw 516 3.5500 0.0700 -vdw 517 2.4200 0.0300 -vdw 518 2.4200 0.0300 -vdw 519 2.4200 0.0300 -vdw 520 2.9000 0.1400 -vdw 521 3.2500 0.1700 -vdw 522 3.5500 0.0700 -vdw 523 3.5500 0.0700 -vdw 524 3.5500 0.0700 -vdw 525 2.4200 0.0300 -vdw 526 2.4200 0.0300 -vdw 527 2.4200 0.0300 -vdw 528 3.2500 0.1700 -vdw 529 3.5500 0.0700 -vdw 530 3.5500 0.0700 -vdw 531 3.5500 0.0700 -vdw 532 3.5500 0.0700 -vdw 533 3.5500 0.0700 -vdw 534 3.5500 0.0700 -vdw 535 3.5500 0.0700 -vdw 536 3.5500 0.0700 -vdw 537 0.0000 0.0000 -vdw 538 2.4200 0.0300 -vdw 539 2.4200 0.0300 -vdw 540 2.4200 0.0300 -vdw 541 2.4200 0.0300 -vdw 542 2.4200 0.0300 -vdw 543 2.4200 0.0300 -vdw 544 3.2500 0.1700 -vdw 545 3.5500 0.0700 -vdw 546 3.5500 0.0700 -vdw 547 3.5500 0.0700 -vdw 548 3.5500 0.0700 -vdw 549 3.5500 0.0700 -vdw 550 3.5500 0.0700 -vdw 551 3.5500 0.0700 -vdw 552 3.5500 0.0700 -vdw 553 3.5500 0.0700 -vdw 554 2.4200 0.0300 -vdw 555 2.4200 0.0300 -vdw 556 2.4200 0.0300 -vdw 557 2.4200 0.0300 -vdw 558 2.4200 0.0300 -vdw 559 2.4200 0.0300 -vdw 560 2.4200 0.0300 -vdw 561 3.2500 0.1700 -vdw 562 3.5500 0.0700 -vdw 563 3.2500 0.1700 -vdw 564 3.5500 0.0700 -vdw 565 3.5500 0.0700 -vdw 566 3.5500 0.0700 -vdw 567 3.2500 0.1700 -vdw 568 3.5500 0.0700 -vdw 569 3.2500 0.1700 -vdw 570 2.4200 0.0300 -vdw 571 2.4200 0.0300 -vdw 572 2.4200 0.0300 -vdw 573 0.0000 0.0000 -vdw 574 3.5500 0.2500 -vdw 575 3.5500 0.0700 -vdw 576 3.2500 0.1700 -vdw 577 3.5500 0.0700 -vdw 578 3.5500 0.0700 -vdw 579 2.4200 0.0300 -vdw 580 2.4200 0.0300 -vdw 581 2.4200 0.0300 -vdw 582 3.2500 0.1700 -vdw 583 3.5500 0.0700 -vdw 584 2.4200 0.0300 -vdw 585 3.5500 0.0700 -vdw 586 3.5000 0.0660 -vdw 587 3.2500 0.1700 -vdw 588 3.5500 0.0700 -vdw 589 3.5500 0.0700 -vdw 590 3.5500 0.0700 -vdw 591 3.5500 0.0700 -vdw 592 3.5500 0.0700 -vdw 593 3.5500 0.0700 -vdw 594 2.4200 0.0300 -vdw 595 2.4200 0.0300 -vdw 596 2.4200 0.0300 -vdw 597 2.4200 0.0300 -vdw 598 3.2500 0.1700 -vdw 599 3.5500 0.0700 -vdw 600 3.2500 0.1700 -vdw 601 3.5500 0.0700 -vdw 602 3.5500 0.0700 -vdw 603 3.5000 0.0660 -vdw 604 2.4200 0.0300 -vdw 605 2.4200 0.0300 -vdw 606 2.4200 0.0300 -vdw 607 2.5000 0.0300 -vdw 608 3.5000 0.0660 -vdw 609 3.5000 0.0660 -vdw 610 3.5000 0.0660 -vdw 611 3.5000 0.0660 -vdw 612 3.5000 0.0660 -vdw 613 3.5000 0.0660 -vdw 614 3.5000 0.0660 -vdw 615 3.5000 0.0660 -vdw 616 3.5000 0.0660 -vdw 617 3.5000 0.0660 -vdw 618 3.5000 0.0660 -vdw 619 3.5000 0.0660 -vdw 620 3.5000 0.0660 -vdw 621 3.5000 0.0660 -vdw 622 3.5000 0.0660 -vdw 623 3.5500 0.2500 -vdw 624 0.0000 0.0000 -vdw 625 3.5500 0.0700 -vdw 626 3.7500 0.1050 -vdw 627 3.2500 0.1700 -vdw 628 3.5000 0.0660 -vdw 629 3.5000 0.0660 -vdw 630 3.5000 0.0660 -vdw 631 3.5500 0.0700 -vdw 632 3.5500 0.0700 -vdw 633 3.5500 0.0700 -vdw 634 3.5500 0.0700 -vdw 635 3.5500 0.0700 -vdw 636 3.5500 0.0700 -vdw 637 3.5500 0.2500 -vdw 638 3.4730 0.0540 -vdw 639 3.3000 0.0500 -vdw 640 3.3000 0.0500 -vdw 641 3.5500 0.0760 -vdw 642 3.5000 0.0660 -vdw 643 2.5000 0.0300 -vdw 644 3.7500 0.0600 -vdw 645 3.4730 0.0540 -vdw 646 3.3000 0.0500 -vdw 647 3.3000 0.0500 -vdw 648 2.9500 0.0400 -vdw 649 3.5500 0.0760 -vdw 650 3.4000 0.3000 -vdw 651 2.4200 0.0300 -vdw 652 3.5000 0.0660 -vdw 653 3.5000 0.0660 -vdw 654 3.5000 0.0660 -vdw 655 3.5500 0.0700 -vdw 656 2.4200 0.0300 -vdw 657 3.5500 0.0700 -vdw 658 2.4200 0.0300 -vdw 659 3.5500 0.0700 -vdw 660 2.8500 0.0610 -vdw 661 3.5500 0.0700 -vdw 662 2.8500 0.0610 -vdw 663 3.4700 0.4700 -vdw 664 3.9050 0.1180 -vdw 665 3.5500 0.0700 -vdw 666 3.2500 0.0620 -vdw 667 2.9400 0.0610 -vdw 668 3.5500 0.0700 -vdw 669 2.8500 0.0610 -vdw 670 3.5500 0.0700 -vdw 671 3.4700 0.4700 -vdw 672 3.5500 0.0700 -vdw 673 3.7500 0.6000 -vdw 674 3.5000 0.0660 -vdw 675 3.5500 0.2500 -vdw 676 3.5500 0.0700 -vdw 677 3.5500 0.0700 -vdw 678 3.5500 0.0700 -vdw 679 3.5500 0.0700 -vdw 680 3.5500 0.0700 -vdw 681 2.4200 0.0300 -vdw 682 2.4200 0.0300 -vdw 683 3.5500 0.0500 -vdw 684 3.2500 0.1700 -vdw 685 0.0000 0.0000 -vdw 686 0.0000 0.0000 -vdw 687 2.4200 0.0300 -vdw 688 3.5000 0.0660 -vdw 689 3.5000 0.0660 -vdw 690 3.2500 0.1700 -vdw 691 3.2500 0.1700 -vdw 692 3.2500 0.1700 -vdw 693 3.5500 0.0500 -vdw 694 3.2000 0.1700 -vdw 695 3.3000 0.0660 -vdw 696 3.3000 0.0660 -vdw 697 3.3000 0.0660 -vdw 698 3.3000 0.0660 -vdw 699 3.3000 0.0660 -vdw 700 2.5000 0.0150 -vdw 701 3.2500 0.1200 -vdw 702 2.9600 0.1700 -vdw 703 3.5000 0.0660 -vdw 704 2.5000 0.0150 -vdw 705 3.5000 0.0660 -vdw 706 3.5000 0.0660 -vdw 707 3.5000 0.0660 -vdw 708 3.2500 0.1200 -vdw 709 3.5500 0.0700 -vdw 710 3.3000 0.0660 -vdw 711 3.2500 0.1700 -vdw 712 2.9600 0.2100 -vdw 713 3.7500 0.1050 -vdw 714 3.0000 0.1700 -vdw 715 3.5000 0.0660 -vdw 716 3.5000 0.0660 -vdw 717 3.5000 0.0660 -vdw 718 2.4200 0.0150 -vdw 719 2.4200 0.0150 -vdw 720 2.4200 0.0150 -vdw 721 2.9000 0.1400 -vdw 722 3.7400 0.2000 -vdw 723 3.5000 0.0660 -vdw 724 3.5000 0.0660 -vdw 725 2.5000 0.0300 -vdw 726 3.7400 0.2000 -vdw 727 3.1181 0.0610 -vdw 728 3.1500 0.1700 -vdw 729 2.8600 0.2100 -vdw 730 3.3000 0.1700 -vdw 731 3.3000 0.1700 -vdw 732 3.3000 0.1700 -vdw 733 3.5000 0.0660 -vdw 734 3.5000 0.0660 -vdw 735 3.5000 0.0660 -vdw 736 3.5000 0.0660 -vdw 737 3.5000 0.0660 -vdw 738 3.5000 0.0660 -vdw 739 0.0000 0.0000 -vdw 740 0.0000 0.0000 -vdw 741 2.5000 0.0150 -vdw 742 3.5000 0.0660 -vdw 743 3.5000 0.0660 -vdw 744 3.5000 0.0660 -vdw 745 3.5000 0.0660 -vdw 746 3.5500 0.0700 -vdw 747 3.5500 0.0700 -vdw 748 3.5500 0.0700 -vdw 749 3.5000 0.0660 -vdw 750 3.5000 0.0660 -vdw 751 3.5000 0.0660 -vdw 752 3.5000 0.0660 -vdw 753 3.5000 0.0660 -vdw 754 3.5000 0.0660 -vdw 755 3.3000 0.0860 -vdw 756 2.4200 0.0150 -vdw 757 3.3000 0.2100 -vdw 758 3.3000 0.1350 -vdw 759 3.3000 0.1000 -vdw 760 2.5000 0.0150 -vdw 761 3.5000 0.0660 -vdw 762 3.5000 0.0660 -vdw 763 3.5000 0.0660 -vdw 764 3.1200 0.1700 -vdw 765 0.0000 0.0000 -vdw 766 3.2500 0.1700 -vdw 767 3.2500 0.1700 -vdw 768 3.2500 0.1700 -vdw 769 3.3000 0.2100 -vdw 770 3.2500 0.1700 -vdw 771 0.0000 0.0000 -vdw 772 3.5000 0.0660 -vdw 773 3.5000 0.0660 -vdw 774 3.5000 0.0660 -vdw 775 3.5000 0.0660 -vdw 776 3.5500 0.0700 -vdw 777 3.5500 0.0760 -vdw 778 3.5500 0.0700 -vdw 779 3.5500 0.0700 -vdw 780 2.5000 0.0300 -vdw 781 3.5000 0.0660 -vdw 782 3.7500 0.1050 -vdw 783 3.2500 0.1700 -vdw 784 2.9600 0.2100 -vdw 785 0.0000 0.0000 -vdw 786 2.9400 0.0610 -vdw 787 3.5000 0.0660 -vdw 788 2.5000 0.0300 -vdw 789 3.5000 0.0660 -vdw 790 3.5000 0.0660 -vdw 791 3.5000 0.0660 -vdw 792 3.5000 0.0660 -vdw 793 3.5000 0.0660 -vdw 794 3.5000 0.0970 -vdw 795 2.9500 0.0530 -vdw 796 3.2500 0.0620 -vdw 797 2.5000 0.0300 -vdw 798 3.5000 0.0660 -vdw 799 3.5000 0.0660 -vdw 800 3.4000 0.3000 -vdw 801 3.5000 0.0660 -vdw 802 2.5000 0.0300 -vdw 803 3.5000 0.0660 -vdw 804 3.5000 0.0660 -vdw 805 3.4700 0.4700 -vdw 806 3.5000 0.0660 -vdw 807 2.5000 0.0300 -vdw 808 3.5000 0.0660 -vdw 809 3.5000 0.0660 -vdw 810 2.9400 0.0610 -vdw 811 3.4000 0.3000 -vdw 812 3.4700 0.4700 -vdw 813 3.5500 0.0700 -vdw 814 2.9000 0.1400 -vdw 815 3.5000 0.0660 -vdw 816 2.9000 0.0600 -vdw 817 3.2500 0.1700 -vdw 818 3.5500 0.0700 -vdw 819 3.5000 0.0660 -vdw 820 3.7500 0.1050 -vdw 821 3.7500 0.1050 -vdw 822 2.9600 0.2100 -vdw 823 3.2500 0.1700 -vdw 824 0.0000 0.0000 -vdw 825 3.1200 0.1700 -vdw 826 0.0000 0.0000 -vdw 827 3.5000 0.0660 -vdw 828 3.5000 0.0660 -vdw 829 3.5500 0.0700 -vdw 830 3.5500 0.0700 -vdw 831 3.5500 0.0700 -vdw 832 3.5500 0.0700 -vdw 833 3.5500 0.0700 -vdw 834 1.9600 0.0125 -vdw 835 3.5000 0.0660 -vdw 836 3.5000 0.0660 -vdw 837 3.5000 0.0660 -vdw 838 3.7500 0.6000 -vdw 839 2.5000 0.0300 -vdw 840 3.2500 0.1700 -vdw 841 3.5500 0.0700 -vdw 842 3.5500 0.0700 -vdw 843 3.2500 0.1700 -vdw 844 3.5500 0.0700 -vdw 845 3.7500 0.1050 -vdw 846 2.9600 0.2100 -vdw 847 3.2500 0.1700 -vdw 848 3.5000 0.0660 -vdw 849 3.5000 0.0660 -vdw 850 3.5000 0.0660 -vdw 851 3.5000 0.0660 -vdw 852 2.4200 0.0150 -vdw 853 3.7500 0.1050 -vdw 854 2.9600 0.2100 -vdw 855 2.4200 0.0150 -vdw 856 3.5000 0.0660 -vdw 857 3.5000 0.0660 -vdw 858 3.5000 0.0660 -vdw 859 3.5000 0.0660 -vdw 860 3.5000 0.0660 -vdw 861 3.5000 0.0660 -vdw 862 3.5000 0.0660 -vdw 863 3.5000 0.0660 -vdw 864 3.5000 0.0660 -vdw 865 3.5000 0.0660 -vdw 866 4.0000 0.1000 -vdw 867 4.0000 0.1000 -vdw 868 4.0000 0.1000 -vdw 869 4.0000 0.1000 -vdw 870 2.5000 0.0300 -vdw 871 3.5000 0.0660 -vdw 872 3.5000 0.0660 -vdw 873 3.5000 0.0660 -vdw 874 3.5000 0.0660 -vdw 875 3.0800 0.7200 -vdw 876 4.1800 0.11779 -vdw 877 4.5100 0.0900 -vdw 878 5.1500 0.0700 -vdw 879 2.7000 0.018279 -vdw 880 3.3500 0.002772 -vdw 881 4.0600 0.000328 -vdw 882 4.3200 0.000171 -vdw 883 4.8200 0.000081 -vdw 884 2.9100 0.875044 -vdw 885 3.4700 0.449657 -vdw 886 3.8200 0.118226 -vdw 887 4.1800 0.047096 -vdw 888 3.5000 0.0660 -vdw 889 3.5000 0.0660 -vdw 890 3.5000 0.0660 -vdw 891 3.5000 0.0660 -vdw 892 2.5000 0.0300 -vdw 893 3.2500 0.1700 -vdw 894 3.5500 0.0700 -vdw 895 3.2500 0.1700 -vdw 896 3.5500 0.0700 -vdw 897 3.5500 0.0760 -vdw 898 3.5500 0.0760 -vdw 899 2.4200 0.0300 -vdw 900 3.3000 0.0860 -vdw 901 3.3000 0.0860 -vdw 902 3.3000 0.0860 -vdw 903 3.3000 0.0860 -vdw 904 3.3000 0.0860 -vdw 905 2.9600 0.2100 -vdw 906 3.5000 0.0660 - - - ################################## - ## ## - ## Bond Stretching Parameters ## - ## ## - ################################## - - -bond 1 2 367.00 1.3800 -bond 1 3 420.00 1.3570 -bond 1 13 367.00 1.3600 -bond 1 19 450.00 1.2790 -bond 1 25 300.00 0.3000 -bond 1 47 420.00 1.3400 -bond 1 48 420.00 1.3540 -bond 1 82 420.00 1.3540 -bond 1 83 420.00 1.3540 -bond 1 84 420.00 1.3540 -bond 1 87 420.00 1.3540 -bond 1 88 420.00 1.3540 -bond 1 108 461.00 1.5700 -bond 2 2 260.00 1.5260 -bond 2 3 317.00 1.5220 -bond 2 5 386.00 1.4250 -bond 2 6 260.00 1.5260 -bond 2 10 260.00 1.5260 -bond 2 11 317.00 1.5000 -bond 2 12 317.00 1.5100 -bond 2 13 260.00 1.5260 -bond 2 14 317.00 1.5000 -bond 2 15 222.00 1.8100 -bond 2 16 222.00 1.8100 -bond 2 20 320.00 1.4250 -bond 2 24 337.00 1.4490 -bond 2 44 382.00 1.4480 -bond 2 48 317.00 1.5100 -bond 2 51 260.00 1.5260 -bond 2 53 367.00 1.4710 -bond 2 55 337.00 1.4630 -bond 2 80 317.00 1.4950 -bond 3 3 350.00 1.5100 -bond 3 4 570.00 1.2290 -bond 3 5 450.00 1.3640 -bond 3 6 317.00 1.5220 -bond 3 10 317.00 1.5220 -bond 3 12 469.00 1.4000 -bond 3 13 317.00 1.5220 -bond 3 19 400.00 1.4440 -bond 3 20 214.00 1.3270 -bond 3 21 300.00 1.7900 -bond 3 24 490.00 1.3350 -bond 3 44 317.00 1.5220 -bond 3 46 340.00 1.0900 -bond 3 47 410.00 1.4440 -bond 3 48 400.00 1.4900 -bond 3 50 385.00 1.4600 -bond 3 52 656.00 1.2500 -bond 3 56 457.00 1.3580 -bond 3 57 418.00 1.3880 -bond 3 60 447.00 1.4190 -bond 3 65 300.00 1.9800 -bond 3 84 400.00 1.4900 -bond 3 86 385.00 1.4600 -bond 3 105 424.00 1.3830 -bond 3 107 490.00 1.3350 -bond 4 25 553.00 0.3000 -bond 4 64 525.00 1.4800 -bond 4 89 570.00 1.2290 -bond 4 110 700.00 1.1710 -bond 5 6 386.00 1.4250 -bond 5 7 553.00 0.9450 -bond 5 10 386.00 1.4250 -bond 5 13 320.00 1.4100 -bond 5 20 250.00 1.4700 -bond 5 24 400.00 1.3800 -bond 5 25 340.00 0.3000 -bond 5 44 320.00 1.4500 -bond 5 47 450.00 1.3700 -bond 5 48 450.00 1.3640 -bond 5 51 320.00 1.3800 -bond 5 64 230.00 1.6100 -bond 5 79 450.00 1.6700 -bond 5 106 94.00 1.8000 -bond 5 108 374.00 1.6400 -bond 6 6 260.00 1.5260 -bond 6 10 260.00 1.5260 -bond 6 11 317.00 1.5000 -bond 6 13 260.00 1.5260 -bond 6 14 317.00 1.5000 -bond 6 15 222.00 1.8100 -bond 6 16 222.00 1.8100 -bond 6 20 320.00 1.4250 -bond 6 24 337.00 1.4490 -bond 6 44 382.00 1.4480 -bond 6 47 317.00 1.5100 -bond 6 51 260.00 1.5260 -bond 6 53 367.00 1.4710 -bond 6 55 337.00 1.4630 -bond 6 79 222.00 1.8100 -bond 6 105 337.00 1.4750 -bond 7 20 553.00 0.9450 -bond 7 25 340.00 0.1000 -bond 9 9 530.00 1.3400 -bond 9 11 530.00 1.3400 -bond 9 14 530.00 1.3400 -bond 10 10 260.00 1.5260 -bond 10 11 317.00 1.5000 -bond 10 14 317.00 1.5000 -bond 10 20 320.00 1.4250 -bond 10 24 337.00 1.4490 -bond 10 44 382.00 1.4480 -bond 10 105 337.00 1.4750 -bond 11 11 530.00 1.3400 -bond 11 13 317.00 1.5000 -bond 11 14 530.00 1.3400 -bond 11 79 222.00 1.7600 -bond 12 12 469.00 1.4000 -bond 12 48 469.00 1.4000 -bond 12 60 469.00 1.4000 -bond 12 81 469.00 1.4000 -bond 13 13 268.00 1.5290 -bond 13 14 317.00 1.5000 -bond 13 15 222.00 1.8100 -bond 13 16 222.00 1.8100 -bond 13 18 390.00 1.4300 -bond 13 19 390.00 1.4700 -bond 13 20 320.00 1.4100 -bond 13 21 245.00 1.7810 -bond 13 22 340.00 1.7900 -bond 13 24 337.00 1.4490 -bond 13 25 340.00 0.3000 -bond 13 44 382.00 1.4480 -bond 13 46 340.00 1.0900 -bond 13 47 317.00 1.5100 -bond 13 48 317.00 1.5100 -bond 13 50 317.00 1.5100 -bond 13 51 268.00 1.5290 -bond 13 53 367.00 1.4710 -bond 13 55 337.00 1.4630 -bond 13 56 337.00 1.4490 -bond 13 57 337.00 1.4750 -bond 13 60 317.00 1.5100 -bond 13 64 212.00 1.8430 -bond 13 65 245.00 1.9450 -bond 13 66 200.00 2.1900 -bond 13 79 340.00 1.7700 -bond 13 80 317.00 1.4950 -bond 13 83 317.00 1.5040 -bond 13 84 317.00 1.5040 -bond 13 85 317.00 1.5040 -bond 13 87 317.00 1.4950 -bond 13 90 337.00 1.4490 -bond 13 91 280.00 1.5100 -bond 13 95 532.80 1.4600 -bond 13 101 382.00 1.4480 -bond 13 102 375.00 1.4900 -bond 13 104 212.00 1.8200 -bond 13 105 337.00 1.4750 -bond 13 107 337.00 1.4490 -bond 13 108 187.00 1.8600 -bond 13 109 317.00 1.5100 -bond 14 14 530.00 1.3400 -bond 15 17 274.00 1.3360 -bond 15 48 250.00 1.7400 -bond 16 16 166.00 2.0380 -bond 16 19 300.00 1.6850 -bond 16 24 250.00 1.7300 -bond 16 25 340.00 0.5000 -bond 16 47 250.00 1.7600 -bond 16 48 250.00 1.7600 -bond 16 61 250.00 1.7300 -bond 16 82 250.00 1.7600 -bond 16 84 250.00 1.7400 -bond 16 91 222.00 1.8100 -bond 16 108 144.00 2.1500 -bond 17 25 340.00 0.1000 -bond 18 18 550.00 1.1200 -bond 18 19 650.00 1.1570 -bond 18 48 400.00 1.4100 -bond 18 56 550.00 1.2400 -bond 19 19 1150.00 1.2100 -bond 19 21 330.00 1.6370 -bond 19 46 420.00 1.0800 -bond 19 47 400.00 1.4260 -bond 19 48 400.00 1.4510 -bond 19 50 400.00 1.4260 -bond 19 65 330.00 1.7840 -bond 19 88 400.00 1.4510 -bond 19 91 400.00 1.4510 -bond 20 20 250.00 1.4700 -bond 20 21 200.00 1.6900 -bond 20 24 320.00 1.4500 -bond 20 25 340.00 0.3000 -bond 20 44 320.00 1.4500 -bond 20 47 450.00 1.3700 -bond 20 48 450.00 1.3640 -bond 20 51 320.00 1.3800 -bond 20 60 340.00 1.3600 -bond 20 61 462.00 1.3990 -bond 20 64 230.00 1.6100 -bond 20 82 462.00 1.3570 -bond 20 84 340.00 1.3600 -bond 20 108 374.00 1.6400 -bond 21 25 300.00 0.3000 -bond 21 47 300.00 1.7250 -bond 21 48 300.00 1.7250 -bond 21 82 300.00 1.7250 -bond 21 83 300.00 1.7250 -bond 21 84 300.00 1.7250 -bond 21 87 300.00 1.7250 -bond 21 88 300.00 1.7250 -bond 21 108 223.00 2.0200 -bond 22 23 700.00 1.5300 -bond 22 25 340.00 0.5000 -bond 23 25 340.00 0.3000 -bond 23 79 700.00 1.4400 -bond 24 25 367.00 0.3000 -bond 24 45 434.00 1.0100 -bond 24 48 427.00 1.3810 -bond 24 59 427.00 1.3810 -bond 24 79 434.00 1.6700 -bond 24 84 427.00 1.3810 -bond 24 88 427.00 1.3810 -bond 24 91 337.00 1.4490 -bond 24 103 500.00 1.2700 -bond 24 106 40.00 2.0500 -bond 25 25 340.00 0.3000 -bond 25 44 340.00 0.3000 -bond 25 45 340.00 0.1000 -bond 25 46 340.00 0.3000 -bond 25 47 340.00 0.3000 -bond 25 48 367.00 0.3000 -bond 25 49 340.00 0.3000 -bond 25 53 340.00 0.3000 -bond 25 56 367.00 0.3000 -bond 25 61 367.00 0.3000 -bond 25 65 300.00 0.3000 -bond 25 103 340.00 0.1000 -bond 31 32 600.00 0.9572 -bond 31 33 900.00 0.1500 -bond 31 106 40.00 2.0500 -bond 34 35 529.60 0.9572 -bond 36 37 600.00 0.9572 -bond 36 38 900.00 0.1750 -bond 39 40 600.00 0.9572 -bond 39 41 900.00 0.7000 -bond 42 43 600.00 1.0000 -bond 44 44 350.00 1.4450 -bond 44 45 434.00 1.0100 -bond 44 48 481.00 1.3400 -bond 44 79 340.00 1.7700 -bond 44 91 382.00 1.4480 -bond 44 108 266.00 1.7400 -bond 45 53 434.00 1.0100 -bond 45 55 434.00 1.0100 -bond 45 56 434.00 1.0100 -bond 45 57 434.00 1.0100 -bond 45 101 434.00 1.0100 -bond 45 105 434.00 1.0100 -bond 45 108 166.00 1.4800 -bond 46 47 340.00 1.0800 -bond 46 50 340.00 1.0800 -bond 46 51 340.00 1.0900 -bond 46 80 340.00 1.0800 -bond 46 91 340.00 1.0880 -bond 46 95 532.80 1.0840 -bond 46 108 166.00 1.4800 -bond 46 109 340.00 1.0800 -bond 47 47 549.00 1.3400 -bond 47 48 427.00 1.4330 -bond 47 50 549.00 1.3400 -bond 47 57 448.00 1.3650 -bond 47 58 367.00 1.0800 -bond 47 65 300.00 1.9000 -bond 47 66 250.00 2.0800 -bond 47 86 385.00 1.4600 -bond 47 91 317.00 1.5100 -bond 47 105 448.00 1.3650 -bond 47 110 700.00 1.3050 -bond 48 48 469.00 1.4000 -bond 48 49 367.00 1.0800 -bond 48 50 427.00 1.4330 -bond 48 53 400.00 1.4500 -bond 48 55 481.00 1.3400 -bond 48 56 483.00 1.3390 -bond 48 57 427.00 1.3810 -bond 48 60 469.00 1.4040 -bond 48 61 414.00 1.3910 -bond 48 64 220.00 1.7800 -bond 48 65 300.00 1.8700 -bond 48 66 250.00 2.0800 -bond 48 79 340.00 1.7700 -bond 48 81 469.00 1.4000 -bond 48 84 546.00 1.3670 -bond 48 86 469.00 1.4000 -bond 48 88 469.00 1.4210 -bond 48 91 317.00 1.4900 -bond 48 101 382.00 1.3850 -bond 48 102 400.00 1.4600 -bond 48 109 427.00 1.4330 -bond 49 59 367.00 1.0800 -bond 49 62 340.00 1.0800 -bond 49 82 367.00 1.0800 -bond 49 83 367.00 1.0800 -bond 49 84 367.00 1.0800 -bond 49 85 367.00 1.0800 -bond 49 87 367.00 1.0800 -bond 49 88 367.00 1.0800 -bond 50 50 385.00 1.4600 -bond 50 56 457.00 1.2900 -bond 50 84 549.00 1.3650 -bond 50 109 385.00 1.4600 -bond 51 105 337.00 1.4750 -bond 52 64 525.00 1.4800 -bond 53 54 434.00 1.0100 -bond 54 55 434.00 1.0100 -bond 55 59 481.00 1.3400 -bond 55 82 481.00 1.3400 -bond 56 56 500.00 1.3200 -bond 56 59 502.00 1.3240 -bond 56 60 461.00 1.3540 -bond 56 82 461.00 1.3540 -bond 56 86 483.00 1.3390 -bond 56 103 550.00 1.2100 -bond 56 109 457.00 1.2900 -bond 57 60 436.00 1.3740 -bond 57 61 400.00 1.3490 -bond 57 62 440.00 1.3710 -bond 57 81 428.00 1.3800 -bond 57 82 477.00 1.3430 -bond 57 84 427.00 1.3810 -bond 57 85 427.00 1.3810 -bond 57 86 385.00 1.4400 -bond 58 83 367.00 1.0800 -bond 58 84 367.00 1.0800 -bond 59 63 367.00 1.0800 -bond 60 60 520.00 1.3700 -bond 60 61 414.00 1.3910 -bond 60 80 388.00 1.4590 -bond 60 81 447.00 1.4190 -bond 60 87 469.00 1.4240 -bond 60 105 436.00 1.3740 -bond 61 61 400.00 1.2800 -bond 61 62 529.00 1.3040 -bond 61 82 488.00 1.3350 -bond 61 83 410.00 1.3940 -bond 61 84 410.00 1.3940 -bond 61 88 410.00 1.3200 -bond 62 63 367.00 1.0800 -bond 62 105 440.00 1.3710 -bond 63 82 367.00 1.0800 -bond 64 108 108.00 2.2500 -bond 65 82 300.00 1.8700 -bond 65 83 300.00 1.8700 -bond 65 84 300.00 1.8700 -bond 65 87 300.00 1.8700 -bond 65 88 300.00 1.8700 -bond 65 108 151.00 2.1900 -bond 66 82 250.00 2.0800 -bond 66 83 250.00 2.0800 -bond 66 84 250.00 2.0800 -bond 66 87 250.00 2.0800 -bond 66 88 250.00 2.0800 -bond 66 108 108.00 2.4400 -bond 77 78 500.00 1.8000 -bond 80 84 546.00 1.3520 -bond 82 86 385.00 1.4600 -bond 82 87 520.00 1.3700 -bond 83 84 520.00 1.3700 -bond 83 86 385.00 1.4600 -bond 84 84 512.00 1.3750 -bond 84 86 385.00 1.4600 -bond 84 87 546.00 1.3670 -bond 84 88 520.00 1.3700 -bond 85 85 520.00 1.3700 -bond 86 86 385.00 1.4600 -bond 86 87 385.00 1.4600 -bond 86 88 385.00 1.4600 -bond 87 87 469.00 1.4240 -bond 87 88 469.00 1.4240 -bond 89 90 490.00 1.3350 -bond 89 91 317.00 1.5220 -bond 90 91 337.00 1.4490 -bond 91 91 260.00 1.5200 -bond 102 103 550.00 1.2250 -bond 108 108 94.00 2.3200 -bond 109 109 549.00 1.3450 - - - ################################ - ## ## - ## Angle Bending Parameters ## - ## ## - ################################ - - -angle 25 1 25 33.00 109.47 -angle 1 2 2 50.00 109.50 -angle 2 2 2 63.00 112.40 -angle 2 2 3 63.00 112.40 -angle 2 2 5 80.00 109.50 -angle 2 2 6 63.00 112.40 -angle 6 2 6 63.00 112.40 -angle 5 2 6 80.00 109.50 -angle 2 2 10 63.00 112.40 -angle 3 2 10 63.00 112.40 -angle 6 2 10 63.00 112.40 -angle 10 2 10 63.00 112.40 -angle 5 2 10 80.00 109.50 -angle 10 2 12 63.00 114.00 -angle 6 2 13 63.00 112.40 -angle 10 2 15 50.00 108.60 -angle 2 2 16 50.00 114.70 -angle 10 2 16 50.00 114.70 -angle 2 2 20 80.00 109.50 -angle 6 2 20 80.00 109.50 -angle 10 2 20 80.00 109.50 -angle 3 2 24 80.00 110.30 -angle 2 2 24 80.00 111.20 -angle 2 2 44 56.20 109.47 -angle 6 2 44 56.20 109.47 -angle 10 2 44 56.20 109.47 -angle 13 2 44 56.20 109.47 -angle 3 2 44 80.00 111.20 -angle 2 2 48 63.00 112.40 -angle 10 2 48 63.00 114.00 -angle 2 2 51 63.00 112.40 -angle 6 2 51 63.00 112.40 -angle 2 2 53 80.00 111.20 -angle 2 2 55 80.00 111.20 -angle 10 2 80 63.00 115.60 -angle 2 3 4 80.00 120.40 -angle 1 3 4 80.00 121.00 -angle 3 3 4 80.00 121.40 -angle 4 3 4 80.00 126.00 -angle 4 3 5 80.00 121.00 -angle 4 3 6 80.00 120.40 -angle 5 3 10 70.00 115.00 -angle 4 3 10 80.00 120.40 -angle 5 3 12 70.00 120.00 -angle 12 3 12 85.00 120.00 -angle 5 3 13 70.00 108.00 -angle 13 3 13 70.00 116.00 -angle 1 3 13 80.00 111.00 -angle 3 3 13 80.00 117.20 -angle 4 3 13 80.00 120.40 -angle 10 3 20 81.00 111.40 -angle 13 3 20 81.00 111.40 -angle 4 3 20 83.00 123.40 -angle 13 3 21 75.00 109.00 -angle 4 3 21 75.00 119.00 -angle 24 3 24 70.00 114.20 -angle 2 3 24 70.00 116.60 -angle 3 3 24 70.00 116.60 -angle 6 3 24 70.00 116.60 -angle 10 3 24 70.00 116.60 -angle 13 3 24 70.00 116.60 -angle 4 3 24 80.00 122.90 -angle 20 3 24 81.00 111.40 -angle 13 3 44 70.00 116.00 -angle 4 3 44 80.00 120.40 -angle 13 3 46 35.00 115.00 -angle 46 3 46 35.00 115.00 -angle 4 3 46 35.00 123.00 -angle 24 3 46 40.00 114.00 -angle 5 3 46 40.00 115.00 -angle 20 3 46 40.00 115.00 -angle 24 3 47 70.00 115.50 -angle 4 3 47 80.00 125.30 -angle 46 3 48 35.00 115.00 -angle 24 3 48 70.00 115.50 -angle 13 3 48 70.00 116.00 -angle 5 3 48 70.00 120.00 -angle 4 3 48 80.00 120.40 -angle 20 3 48 81.00 111.40 -angle 48 3 48 85.00 120.00 -angle 13 3 50 70.00 116.00 -angle 46 3 50 80.00 116.00 -angle 4 3 50 80.00 124.00 -angle 10 3 52 65.00 117.00 -angle 2 3 52 70.00 117.00 -angle 6 3 52 70.00 117.00 -angle 13 3 52 70.00 117.00 -angle 48 3 52 70.00 117.00 -angle 4 3 52 80.00 126.00 -angle 52 3 52 80.00 126.00 -angle 46 3 56 35.00 116.00 -angle 46 3 56 35.00 122.00 -angle 4 3 56 80.00 122.50 -angle 47 3 57 70.00 114.10 -angle 56 3 57 70.00 118.60 -angle 57 3 57 70.00 118.60 -angle 4 3 57 80.00 120.60 -angle 24 3 60 70.00 111.30 -angle 57 3 60 70.00 111.30 -angle 4 3 60 80.00 128.80 -angle 13 3 65 75.00 109.00 -angle 4 3 65 75.00 119.00 -angle 44 3 84 70.00 116.00 -angle 4 3 84 80.00 120.40 -angle 4 3 87 80.00 128.20 -angle 57 3 105 70.00 115.40 -angle 56 3 105 70.00 118.60 -angle 4 3 105 80.00 120.90 -angle 13 3 107 70.00 116.60 -angle 4 3 107 80.00 122.90 -angle 25 4 25 10.00 117.00 -angle 3 4 25 35.00 113.00 -angle 3 5 7 35.00 113.00 -angle 2 5 7 55.00 108.50 -angle 6 5 7 55.00 108.50 -angle 7 5 10 55.00 108.50 -angle 7 5 13 55.00 108.50 -angle 7 5 24 49.00 105.40 -angle 25 5 25 5.00 109.47 -angle 7 5 25 10.00 109.47 -angle 13 5 25 10.00 109.47 -angle 7 5 47 35.00 109.00 -angle 25 5 48 10.00 109.47 -angle 7 5 48 35.00 113.00 -angle 7 5 51 55.00 108.50 -angle 7 5 64 55.00 108.50 -angle 13 5 64 100.00 120.50 -angle 7 5 79 74.00 110.00 -angle 7 5 106 100.00 126.00 -angle 5 7 25 10.00 109.47 -angle 25 7 25 33.00 109.47 -angle 2 10 2 63.00 112.40 -angle 2 10 3 63.00 111.10 -angle 2 10 5 80.00 109.50 -angle 3 10 6 63.00 111.10 -angle 6 10 6 63.00 111.50 -angle 2 10 6 63.00 112.40 -angle 5 10 6 80.00 109.50 -angle 3 10 10 63.00 111.10 -angle 2 10 10 63.00 111.50 -angle 6 10 10 63.00 111.50 -angle 10 10 10 63.00 111.50 -angle 5 10 10 80.00 109.50 -angle 2 10 20 80.00 109.50 -angle 6 10 20 80.00 109.50 -angle 10 10 20 80.00 109.50 -angle 3 10 24 63.00 110.10 -angle 6 10 24 80.00 109.50 -angle 2 10 24 80.00 109.70 -angle 10 10 24 80.00 109.70 -angle 2 10 44 56.20 109.47 -angle 6 10 44 56.20 109.47 -angle 10 10 44 56.20 109.47 -angle 13 10 44 56.20 109.47 -angle 3 10 44 80.00 109.70 -angle 2 10 48 63.00 112.40 -angle 20 10 48 80.00 109.50 -angle 2 10 105 80.00 109.50 -angle 10 10 105 80.00 109.50 -angle 20 10 105 80.00 109.50 -angle 2 11 2 70.00 124.00 -angle 2 11 6 70.00 124.00 -angle 6 11 6 70.00 124.00 -angle 2 11 9 70.00 118.00 -angle 6 11 9 70.00 118.00 -angle 9 11 10 70.00 118.00 -angle 2 11 10 70.00 124.00 -angle 6 11 10 70.00 124.00 -angle 10 11 10 70.00 124.00 -angle 2 11 11 70.00 118.00 -angle 6 11 11 70.00 118.00 -angle 9 11 11 70.00 118.00 -angle 10 11 11 70.00 118.00 -angle 11 11 11 70.00 118.00 -angle 9 11 13 70.00 118.00 -angle 11 11 13 70.00 118.00 -angle 2 11 13 70.00 124.00 -angle 6 11 13 70.00 124.00 -angle 10 11 13 70.00 124.00 -angle 13 11 13 70.00 124.00 -angle 9 11 14 70.00 118.00 -angle 11 11 14 70.00 118.00 -angle 9 11 79 70.00 118.00 -angle 2 12 12 70.00 120.00 -angle 3 12 12 85.00 120.00 -angle 12 12 12 85.00 120.00 -angle 12 12 48 85.00 120.00 -angle 12 12 60 85.00 120.00 -angle 12 12 81 85.00 120.00 -angle 1 13 1 77.00 109.10 -angle 2 13 2 40.00 109.50 -angle 1 13 3 50.00 109.50 -angle 2 13 3 63.00 111.10 -angle 3 13 3 63.00 111.10 -angle 2 13 6 40.00 109.50 -angle 6 13 6 40.00 109.50 -angle 3 13 6 63.00 109.50 -angle 1 13 13 50.00 109.50 -angle 5 13 13 50.00 109.50 -angle 13 13 13 58.35 112.70 -angle 3 13 13 63.00 111.10 -angle 13 13 15 50.00 108.60 -angle 13 13 16 50.00 114.70 -angle 13 13 19 58.35 112.70 -angle 3 13 20 50.00 109.50 -angle 13 13 20 50.00 109.50 -angle 3 13 21 69.00 109.80 -angle 13 13 21 69.00 109.80 -angle 21 13 21 78.00 111.70 -angle 13 13 22 50.00 108.60 -angle 20 13 24 50.00 109.50 -angle 3 13 24 63.00 110.10 -angle 2 13 24 80.00 109.70 -angle 13 13 24 80.00 109.70 -angle 16 13 44 50.00 114.70 -angle 2 13 44 56.20 109.47 -angle 6 13 44 56.20 109.47 -angle 10 13 44 56.20 109.47 -angle 13 13 44 56.20 109.47 -angle 3 13 44 80.00 111.20 -angle 46 13 46 33.00 107.80 -angle 18 13 46 35.00 108.50 -angle 19 13 46 35.00 108.50 -angle 2 13 46 35.00 109.50 -angle 3 13 46 35.00 109.50 -angle 5 13 46 35.00 109.50 -angle 15 13 46 35.00 109.50 -angle 16 13 46 35.00 109.50 -angle 20 13 46 35.00 109.50 -angle 22 13 46 35.00 109.50 -angle 24 13 46 35.00 109.50 -angle 44 13 46 35.00 109.50 -angle 13 13 46 37.50 110.70 -angle 1 13 46 40.00 107.00 -angle 21 13 46 51.00 107.60 -angle 46 13 47 35.00 109.50 -angle 1 13 47 50.00 109.50 -angle 13 13 47 63.00 111.10 -angle 47 13 47 63.00 112.40 -angle 46 13 48 35.00 109.50 -angle 47 13 48 40.00 109.50 -angle 48 13 48 40.00 109.50 -angle 1 13 48 50.00 109.50 -angle 5 13 48 50.00 109.50 -angle 20 13 48 50.00 109.50 -angle 16 13 48 50.00 114.70 -angle 3 13 48 63.00 112.00 -angle 2 13 48 63.00 114.00 -angle 13 13 48 63.00 114.00 -angle 44 13 48 80.00 111.20 -angle 46 13 50 35.00 109.50 -angle 46 13 51 37.50 110.70 -angle 5 13 51 50.00 109.50 -angle 13 13 51 58.35 112.70 -angle 46 13 53 35.00 109.50 -angle 3 13 53 80.00 111.20 -angle 13 13 53 80.00 111.20 -angle 46 13 55 35.00 109.50 -angle 13 13 55 80.00 111.20 -angle 46 13 56 35.00 109.50 -angle 3 13 56 63.00 110.10 -angle 13 13 56 65.00 109.00 -angle 46 13 57 35.00 109.50 -angle 48 13 57 80.00 111.20 -angle 46 13 60 35.00 109.50 -angle 13 13 60 63.00 114.00 -angle 46 13 64 41.00 109.50 -angle 13 13 64 43.00 109.50 -angle 48 13 64 43.00 109.50 -angle 46 13 65 51.00 107.60 -angle 3 13 65 69.00 109.80 -angle 13 13 65 69.00 110.00 -angle 48 13 65 69.00 110.00 -angle 65 13 65 78.00 111.70 -angle 46 13 66 75.00 111.00 -angle 13 13 66 75.00 112.00 -angle 46 13 79 35.00 109.50 -angle 13 13 79 50.00 108.60 -angle 1 13 79 50.00 109.50 -angle 46 13 80 35.00 109.50 -angle 13 13 80 63.00 115.60 -angle 46 13 83 35.00 109.50 -angle 13 13 83 63.00 114.00 -angle 46 13 84 35.00 109.50 -angle 16 13 84 50.00 114.70 -angle 13 13 84 63.00 114.00 -angle 46 13 85 35.00 109.50 -angle 13 13 85 63.00 114.00 -angle 46 13 87 35.00 109.50 -angle 13 13 87 63.00 115.60 -angle 46 13 90 35.00 109.50 -angle 13 13 90 80.00 110.00 -angle 3 13 90 80.00 113.00 -angle 46 13 91 37.50 110.70 -angle 46 13 95 35.00 105.00 -angle 13 13 95 63.00 105.00 -angle 46 13 101 35.00 109.50 -angle 13 13 101 80.00 111.20 -angle 46 13 102 35.00 105.00 -angle 13 13 102 63.00 111.10 -angle 46 13 104 41.00 109.50 -angle 13 13 104 43.00 109.50 -angle 46 13 105 35.00 109.50 -angle 13 13 105 50.00 109.50 -angle 20 13 105 50.00 109.50 -angle 46 13 107 35.00 109.50 -angle 13 13 107 80.00 109.70 -angle 46 13 108 35.00 109.50 -angle 13 13 108 60.00 112.00 -angle 2 14 2 70.00 124.00 -angle 2 14 6 70.00 124.00 -angle 6 14 6 70.00 124.00 -angle 2 14 9 70.00 118.00 -angle 6 14 9 70.00 118.00 -angle 9 14 10 70.00 118.00 -angle 2 14 10 70.00 124.00 -angle 6 14 10 70.00 124.00 -angle 10 14 10 70.00 124.00 -angle 2 14 11 70.00 118.00 -angle 6 14 11 70.00 118.00 -angle 9 14 11 70.00 118.00 -angle 10 14 11 70.00 118.00 -angle 11 14 11 70.00 118.00 -angle 9 14 13 70.00 118.00 -angle 11 14 13 70.00 118.00 -angle 2 14 13 70.00 124.00 -angle 6 14 13 70.00 124.00 -angle 10 14 13 70.00 124.00 -angle 13 14 13 70.00 124.00 -angle 2 14 14 70.00 118.00 -angle 6 14 14 70.00 118.00 -angle 9 14 14 70.00 118.00 -angle 10 14 14 70.00 118.00 -angle 11 14 14 70.00 118.00 -angle 13 14 14 70.00 118.00 -angle 14 14 14 70.00 118.00 -angle 17 15 17 35.00 92.07 -angle 2 15 17 44.00 96.00 -angle 6 15 17 44.00 96.00 -angle 13 15 17 44.00 96.00 -angle 25 15 25 5.00 109.47 -angle 13 15 25 10.00 109.47 -angle 33 15 33 10.00 160.00 -angle 2 15 33 150.00 96.70 -angle 6 15 33 150.00 96.70 -angle 13 15 33 150.00 96.70 -angle 17 15 33 150.00 96.70 -angle 17 15 48 50.00 96.00 -angle 2 16 6 62.00 98.90 -angle 13 16 13 62.00 98.90 -angle 2 16 16 68.00 103.70 -angle 6 16 16 68.00 103.70 -angle 13 16 16 68.00 103.70 -angle 13 16 19 65.00 100.00 -angle 25 16 25 5.00 109.47 -angle 13 16 25 10.00 109.47 -angle 33 16 33 10.00 160.00 -angle 2 16 33 150.00 96.70 -angle 6 16 33 150.00 96.70 -angle 13 16 33 150.00 96.70 -angle 16 16 33 150.00 96.70 -angle 13 16 48 62.00 104.20 -angle 47 16 48 62.00 104.20 -angle 24 16 60 74.00 92.40 -angle 25 16 61 10.00 130.00 -angle 25 16 82 10.00 130.00 -angle 60 16 82 74.00 97.00 -angle 25 16 84 10.00 130.00 -angle 82 16 84 74.00 90.00 -angle 60 16 84 74.00 97.00 -angle 84 16 84 74.00 97.00 -angle 13 16 91 62.00 94.00 -angle 15 17 25 10.00 109.47 -angle 25 17 25 33.00 109.47 -angle 13 18 19 150.00 180.00 -angle 19 18 48 170.00 180.00 -angle 18 18 56 100.00 180.00 -angle 13 19 18 150.00 180.00 -angle 16 19 19 140.00 180.00 -angle 13 19 19 150.00 180.00 -angle 18 19 25 10.00 90.00 -angle 19 19 46 112.00 180.00 -angle 18 19 47 150.00 180.00 -angle 19 19 47 160.00 180.00 -angle 18 19 48 150.00 180.00 -angle 19 19 48 160.00 180.00 -angle 19 19 50 160.00 180.00 -angle 18 19 55 150.00 180.00 -angle 18 19 88 150.00 180.00 -angle 2 20 2 100.00 111.80 -angle 2 20 3 83.00 116.90 -angle 3 20 6 83.00 116.90 -angle 2 20 6 100.00 111.80 -angle 2 20 7 55.00 108.50 -angle 7 20 10 55.00 108.50 -angle 3 20 10 83.00 116.90 -angle 10 20 10 100.00 111.80 -angle 13 20 13 60.00 109.50 -angle 3 20 13 83.00 116.90 -angle 25 20 25 5.00 109.47 -angle 13 20 25 10.00 109.47 -angle 13 20 47 75.00 111.00 -angle 25 20 48 10.00 109.47 -angle 13 20 48 75.00 111.00 -angle 47 20 48 75.00 111.00 -angle 48 20 48 75.00 111.00 -angle 3 20 48 83.00 116.90 -angle 2 20 48 100.00 111.80 -angle 13 20 51 60.00 109.50 -angle 2 20 51 100.00 113.00 -angle 6 20 51 100.00 113.00 -angle 10 20 51 100.00 113.00 -angle 24 20 60 70.00 104.50 -angle 25 20 61 10.00 125.00 -angle 2 20 64 100.00 120.50 -angle 6 20 64 100.00 120.50 -angle 10 20 64 100.00 120.50 -angle 13 20 64 100.00 120.50 -angle 48 20 64 100.00 120.50 -angle 64 20 64 100.00 120.50 -angle 25 20 82 10.00 125.00 -angle 60 20 82 70.00 106.50 -angle 82 20 82 70.00 107.00 -angle 25 20 84 10.00 125.00 -angle 82 20 84 70.00 104.00 -angle 60 20 84 70.00 106.50 -angle 84 20 84 70.00 106.50 -angle 61 20 84 70.00 108.90 -angle 108 20 108 20.00 145.00 -angle 13 20 108 40.00 130.00 -angle 25 21 25 33.00 109.47 -angle 13 22 13 62.00 96.00 -angle 13 22 23 74.00 107.00 -angle 23 22 25 10.00 90.00 -angle 2 24 3 50.00 121.90 -angle 3 24 3 70.00 126.40 -angle 3 24 5 46.00 115.70 -angle 2 24 6 50.00 121.90 -angle 3 24 6 50.00 121.90 -angle 2 24 10 50.00 118.00 -angle 3 24 10 50.00 121.90 -angle 13 24 13 50.00 118.00 -angle 3 24 13 50.00 121.90 -angle 3 24 16 70.00 112.00 -angle 3 24 20 70.00 108.60 -angle 3 24 25 10.00 109.50 -angle 25 24 45 10.00 100.00 -angle 5 24 45 35.00 110.20 -angle 3 24 45 35.00 119.80 -angle 45 24 45 35.00 120.00 -angle 2 24 45 38.00 118.40 -angle 6 24 45 38.00 118.40 -angle 10 24 45 38.00 118.40 -angle 13 24 45 38.00 118.40 -angle 45 24 48 35.00 119.80 -angle 13 24 48 50.00 118.00 -angle 3 24 48 50.00 121.90 -angle 48 24 48 70.00 118.00 -angle 54 24 54 35.00 120.00 -angle 45 24 59 35.00 118.00 -angle 3 24 59 70.00 125.20 -angle 13 24 79 50.00 120.00 -angle 45 24 79 100.00 111.00 -angle 45 24 84 35.00 119.80 -angle 48 24 84 70.00 118.00 -angle 16 24 86 70.00 117.00 -angle 45 24 87 35.00 119.80 -angle 48 24 87 70.00 118.00 -angle 45 24 88 35.00 119.80 -angle 48 24 88 70.00 118.00 -angle 45 24 91 40.00 113.00 -angle 3 24 91 55.00 128.00 -angle 48 24 103 70.00 121.00 -angle 3 24 106 20.00 126.00 -angle 25 25 25 33.00 109.47 -angle 32 31 32 75.00 104.52 -angle 32 31 33 50.00 52.26 -angle 35 34 35 34.05 104.52 -angle 37 36 37 75.00 109.50 -angle 37 36 38 50.00 54.75 -angle 40 39 40 75.00 104.52 -angle 41 39 41 50.00 109.47 -angle 40 39 41 50.00 110.6948 -angle 43 42 43 75.00 109.47 -angle 2 44 2 51.80 107.20 -angle 2 44 6 51.80 107.20 -angle 6 44 6 51.80 107.20 -angle 2 44 10 51.80 107.20 -angle 6 44 10 51.80 107.20 -angle 10 44 10 51.80 107.20 -angle 2 44 13 51.80 107.20 -angle 6 44 13 51.80 107.20 -angle 10 44 13 51.80 107.20 -angle 13 44 13 51.80 107.20 -angle 3 44 13 63.00 111.10 -angle 25 44 45 10.00 100.00 -angle 13 44 45 35.00 109.50 -angle 2 44 45 43.20 108.10 -angle 6 44 45 43.20 108.10 -angle 10 44 45 43.20 108.10 -angle 45 44 45 43.60 106.40 -angle 25 44 48 10.00 109.50 -angle 45 44 48 35.00 116.00 -angle 13 44 48 50.00 116.00 -angle 48 44 48 50.00 116.00 -angle 3 44 48 63.00 112.00 -angle 45 44 79 35.00 115.00 -angle 13 44 79 50.00 108.60 -angle 48 44 79 50.00 108.60 -angle 48 44 91 50.00 109.50 -angle 25 45 25 33.00 109.47 -angle 25 45 44 10.00 109.50 -angle 25 46 25 33.00 109.47 -angle 13 46 25 37.50 109.47 -angle 1 47 1 80.00 108.00 -angle 1 47 3 80.00 121.50 -angle 3 47 6 85.00 119.70 -angle 3 47 13 70.00 119.70 -angle 13 47 13 70.00 130.00 -angle 25 47 46 10.00 90.00 -angle 20 47 46 35.00 114.50 -angle 13 47 46 35.00 117.00 -angle 46 47 46 35.00 117.00 -angle 3 47 46 35.00 119.70 -angle 19 47 46 35.00 120.00 -angle 1 47 46 50.00 112.00 -angle 21 47 46 60.00 114.00 -angle 25 47 47 2.00 90.00 -angle 46 47 47 35.00 120.00 -angle 5 47 47 70.00 123.00 -angle 20 47 47 70.00 123.00 -angle 13 47 47 70.00 124.00 -angle 19 47 47 70.00 124.00 -angle 21 47 47 75.00 121.50 -angle 1 47 47 80.00 121.50 -angle 16 47 47 85.00 119.40 -angle 3 47 47 85.00 120.70 -angle 46 47 48 35.00 123.30 -angle 47 47 48 85.00 117.00 -angle 13 47 48 85.00 119.70 -angle 25 47 50 2.00 90.00 -angle 46 47 50 35.00 120.00 -angle 5 47 50 70.00 123.00 -angle 20 47 50 70.00 123.00 -angle 13 47 50 70.00 124.00 -angle 46 47 57 35.00 119.10 -angle 13 47 57 70.00 120.00 -angle 20 47 57 70.00 120.00 -angle 47 47 57 70.00 121.20 -angle 16 47 57 85.00 119.40 -angle 57 47 58 35.00 119.10 -angle 47 47 58 35.00 119.70 -angle 46 47 65 60.00 114.00 -angle 47 47 65 75.00 120.00 -angle 46 47 91 35.00 135.00 -angle 3 47 91 70.00 119.70 -angle 47 47 91 70.00 124.00 -angle 46 47 105 35.00 119.10 -angle 58 47 105 35.00 119.10 -angle 13 47 105 70.00 120.00 -angle 20 47 105 70.00 120.00 -angle 47 47 105 70.00 121.20 -angle 16 47 105 85.00 119.40 -angle 46 47 110 40.00 121.00 -angle 13 47 110 80.00 122.00 -angle 48 47 110 80.00 122.00 -angle 1 47 110 80.00 125.00 -angle 2 48 12 70.00 120.00 -angle 12 48 12 85.00 120.00 -angle 3 48 13 70.00 119.70 -angle 25 48 48 10.00 90.00 -angle 48 48 48 63.00 120.00 -angle 2 48 48 70.00 120.00 -angle 5 48 48 70.00 120.00 -angle 10 48 48 70.00 120.00 -angle 13 48 48 70.00 120.00 -angle 15 48 48 70.00 120.00 -angle 19 48 48 70.00 120.00 -angle 20 48 48 70.00 120.00 -angle 24 48 48 70.00 120.00 -angle 44 48 48 70.00 120.00 -angle 47 48 48 70.00 124.00 -angle 21 48 48 75.00 120.00 -angle 1 48 48 80.00 120.00 -angle 18 48 48 80.00 120.00 -angle 16 48 48 85.00 119.40 -angle 3 48 48 85.00 120.00 -angle 25 48 49 2.00 90.00 -angle 24 48 49 35.00 119.10 -angle 3 48 49 35.00 120.00 -angle 48 48 49 35.00 120.00 -angle 48 48 50 70.00 124.00 -angle 48 48 53 70.00 120.00 -angle 55 48 55 70.00 120.00 -angle 47 48 55 70.00 120.10 -angle 48 48 55 70.00 120.10 -angle 49 48 56 35.00 116.00 -angle 13 48 56 70.00 116.00 -angle 44 48 56 70.00 116.00 -angle 55 48 56 70.00 119.30 -angle 5 48 56 70.00 120.00 -angle 47 48 56 70.00 121.50 -angle 50 48 56 70.00 121.50 -angle 48 48 56 70.00 124.00 -angle 21 48 56 75.00 120.00 -angle 49 48 57 35.00 120.00 -angle 48 48 57 70.00 108.70 -angle 55 48 57 70.00 116.00 -angle 13 48 57 70.00 120.00 -angle 47 48 57 70.00 121.50 -angle 56 48 57 70.00 123.30 -angle 49 48 60 35.00 120.00 -angle 48 48 60 63.00 120.00 -angle 57 48 60 70.00 108.70 -angle 56 48 60 70.00 117.30 -angle 55 48 60 70.00 123.50 -angle 2 48 60 70.00 128.60 -angle 13 48 60 70.00 128.60 -angle 49 48 61 35.00 119.10 -angle 48 48 61 70.00 108.70 -angle 57 48 61 70.00 123.30 -angle 48 48 64 85.00 119.40 -angle 48 48 65 75.00 120.00 -angle 48 48 66 75.00 120.00 -angle 48 48 79 85.00 119.40 -angle 49 48 81 35.00 120.00 -angle 48 48 81 85.00 120.00 -angle 49 48 84 35.00 126.90 -angle 60 48 84 63.00 106.40 -angle 48 48 84 70.00 107.40 -angle 49 48 86 35.00 120.00 -angle 48 48 86 63.00 120.00 -angle 56 48 86 70.00 124.00 -angle 49 48 88 35.00 128.20 -angle 101 48 101 70.00 111.80 -angle 56 48 101 70.00 124.10 -angle 48 48 102 85.00 120.00 -angle 48 48 109 70.00 124.00 -angle 25 50 46 10.00 90.00 -angle 19 50 46 35.00 120.00 -angle 25 50 47 2.00 90.00 -angle 46 50 47 35.00 120.00 -angle 3 50 47 70.00 118.70 -angle 13 50 47 70.00 124.00 -angle 46 50 48 35.00 123.30 -angle 47 50 48 85.00 117.00 -angle 25 50 50 2.00 90.00 -angle 46 50 50 35.00 120.00 -angle 13 50 50 70.00 124.00 -angle 47 50 50 70.00 124.00 -angle 50 50 84 35.00 106.00 -angle 46 50 84 35.00 122.00 -angle 46 50 109 35.00 120.00 -angle 13 50 109 70.00 124.00 -angle 47 50 109 70.00 124.00 -angle 6 51 6 40.00 109.50 -angle 5 51 13 50.00 109.50 -angle 13 51 20 50.00 109.50 -angle 2 51 20 80.00 109.50 -angle 6 51 20 80.00 109.50 -angle 5 51 20 92.60 111.55 -angle 20 51 20 92.60 111.55 -angle 46 51 46 33.00 109.50 -angle 5 51 46 35.00 109.50 -angle 20 51 46 35.00 109.50 -angle 13 51 46 37.50 110.70 -angle 46 51 105 35.00 109.50 -angle 13 51 105 50.00 109.50 -angle 20 51 105 50.00 109.50 -angle 13 53 13 50.00 113.00 -angle 13 53 25 10.00 100.00 -angle 45 53 45 43.60 109.50 -angle 25 53 48 10.00 100.00 -angle 13 53 48 55.00 114.00 -angle 2 53 54 35.00 109.50 -angle 6 53 54 35.00 109.50 -angle 13 53 54 35.00 109.50 -angle 48 53 54 35.00 109.50 -angle 54 53 54 35.00 109.50 -angle 25 53 82 10.00 100.00 -angle 13 55 13 50.00 118.00 -angle 45 55 45 35.00 113.00 -angle 13 55 45 35.00 118.40 -angle 45 55 48 35.00 120.00 -angle 2 55 48 50.00 123.20 -angle 6 55 48 50.00 123.20 -angle 13 55 48 50.00 123.20 -angle 2 55 54 35.00 118.40 -angle 13 55 54 35.00 118.40 -angle 48 55 54 35.00 120.00 -angle 54 55 54 35.00 120.00 -angle 45 55 59 35.00 120.00 -angle 3 56 13 70.00 120.50 -angle 13 56 18 70.00 120.00 -angle 25 56 48 5.00 120.00 -angle 45 56 48 35.00 113.00 -angle 13 56 48 50.00 118.00 -angle 48 56 48 70.00 117.00 -angle 3 56 48 70.00 120.50 -angle 13 56 56 70.00 117.00 -angle 48 56 56 70.00 117.00 -angle 25 56 59 5.00 119.80 -angle 48 56 59 70.00 118.60 -angle 59 56 59 70.00 118.60 -angle 59 56 60 70.00 111.00 -angle 48 56 60 70.00 112.20 -angle 59 56 82 70.00 111.00 -angle 48 56 86 70.00 117.00 -angle 13 56 103 70.00 114.00 -angle 3 57 3 70.00 126.40 -angle 3 57 45 35.00 116.80 -angle 45 57 47 35.00 119.20 -angle 3 57 47 70.00 121.60 -angle 45 57 48 35.00 118.00 -angle 3 57 48 70.00 125.20 -angle 48 57 48 70.00 125.20 -angle 45 57 60 30.00 125.80 -angle 13 57 60 70.00 125.80 -angle 60 57 61 56.00 113.10 -angle 45 57 61 56.00 118.40 -angle 13 57 61 70.00 118.40 -angle 48 57 61 70.00 118.40 -angle 45 57 62 30.00 128.80 -angle 60 57 62 70.00 105.40 -angle 48 57 62 70.00 109.80 -angle 13 57 62 70.00 128.80 -angle 45 57 81 35.00 123.10 -angle 45 57 82 35.00 120.00 -angle 61 57 82 56.00 113.10 -angle 60 57 82 70.00 109.80 -angle 45 57 84 35.00 120.00 -angle 61 57 84 56.00 113.10 -angle 60 57 84 70.00 109.80 -angle 82 57 84 70.00 109.80 -angle 84 57 84 70.00 109.80 -angle 81 57 84 70.00 111.60 -angle 45 57 85 35.00 120.00 -angle 82 57 85 70.00 109.80 -angle 24 59 55 70.00 116.00 -angle 49 59 56 35.00 115.45 -angle 13 59 56 70.00 115.50 -angle 55 59 56 70.00 119.30 -angle 24 59 56 70.00 123.30 -angle 56 59 56 70.00 129.10 -angle 56 59 63 35.00 115.45 -angle 13 60 48 70.00 120.00 -angle 48 60 48 85.00 134.90 -angle 56 60 57 70.00 126.20 -angle 57 60 60 70.00 106.20 -angle 20 60 60 70.00 110.60 -angle 16 60 60 70.00 111.00 -angle 13 60 60 70.00 120.00 -angle 24 60 60 70.00 127.70 -angle 56 60 60 70.00 127.70 -angle 48 60 60 85.00 117.30 -angle 3 60 60 85.00 119.20 -angle 60 60 61 70.00 111.00 -angle 24 60 61 70.00 126.20 -angle 3 60 61 70.00 130.00 -angle 48 60 61 70.00 132.40 -angle 12 60 80 85.00 134.90 -angle 48 60 80 85.00 134.90 -angle 80 60 81 85.00 108.80 -angle 12 60 81 85.00 116.20 -angle 48 60 81 85.00 116.20 -angle 3 60 84 70.00 130.00 -angle 60 60 87 70.00 107.30 -angle 57 60 87 70.00 107.70 -angle 81 60 87 85.00 108.80 -angle 12 60 87 85.00 134.90 -angle 48 60 87 85.00 134.90 -angle 60 60 105 70.00 106.20 -angle 56 60 105 70.00 126.20 -angle 48 61 48 70.00 125.20 -angle 25 61 57 10.00 125.00 -angle 25 61 61 10.00 125.00 -angle 60 61 62 70.00 103.80 -angle 25 61 82 10.00 125.00 -angle 61 61 82 70.00 109.00 -angle 60 61 82 70.00 110.00 -angle 82 61 83 70.00 110.00 -angle 57 61 84 70.00 104.10 -angle 82 61 84 70.00 110.00 -angle 57 61 88 70.00 104.10 -angle 20 61 88 70.00 105.30 -angle 49 62 57 35.00 120.00 -angle 49 62 61 35.00 120.00 -angle 57 62 61 70.00 113.90 -angle 57 62 63 35.00 123.05 -angle 61 62 63 35.00 123.05 -angle 49 62 105 35.00 120.00 -angle 63 62 105 35.00 123.05 -angle 61 62 105 70.00 113.90 -angle 5 64 5 45.00 102.60 -angle 4 64 5 100.00 108.23 -angle 4 64 13 45.00 109.50 -angle 5 64 20 45.00 102.60 -angle 20 64 20 45.00 102.60 -angle 13 64 20 45.00 109.50 -angle 4 64 20 100.00 108.23 -angle 4 64 48 45.00 109.50 -angle 5 64 48 45.00 109.50 -angle 20 64 48 45.00 109.50 -angle 5 64 52 45.00 108.23 -angle 13 64 52 45.00 109.50 -angle 20 64 52 100.00 108.23 -angle 52 64 52 140.00 119.90 -angle 25 65 25 33.00 109.47 -angle 25 66 25 33.00 109.47 -angle 78 77 78 150.00 180.00 -angle 6 79 11 62.00 98.90 -angle 13 79 13 62.00 102.00 -angle 5 79 13 75.00 96.40 -angle 5 79 23 74.00 108.70 -angle 13 79 23 74.00 108.90 -angle 23 79 23 104.00 119.00 -angle 13 79 24 100.00 103.00 -angle 23 79 24 120.00 107.00 -angle 13 79 44 62.00 102.00 -angle 23 79 44 74.00 108.90 -angle 13 79 48 62.00 102.00 -angle 23 79 48 74.00 107.20 -angle 5 79 48 75.00 96.40 -angle 24 79 48 100.00 103.00 -angle 13 79 82 62.00 102.00 -angle 46 80 60 35.00 126.80 -angle 2 80 60 70.00 128.60 -angle 13 80 60 70.00 128.60 -angle 46 80 84 35.00 126.80 -angle 2 80 84 70.00 125.00 -angle 13 80 84 70.00 125.00 -angle 60 80 84 85.00 106.40 -angle 12 81 57 70.00 132.80 -angle 48 81 57 70.00 132.80 -angle 57 81 60 70.00 104.40 -angle 12 81 60 85.00 122.70 -angle 48 81 60 85.00 122.70 -angle 13 82 16 70.00 125.00 -angle 16 82 24 70.00 125.00 -angle 16 82 44 70.00 120.20 -angle 20 82 49 35.00 117.00 -angle 16 82 49 35.00 125.00 -angle 49 82 57 35.00 120.00 -angle 57 82 57 70.00 120.00 -angle 13 82 57 70.00 125.00 -angle 48 82 57 70.00 125.00 -angle 56 82 57 70.00 126.20 -angle 49 82 61 35.00 120.00 -angle 16 82 61 70.00 113.60 -angle 16 82 61 70.00 115.00 -angle 20 82 61 70.00 115.00 -angle 57 82 61 70.00 120.00 -angle 13 82 61 70.00 125.00 -angle 44 82 61 70.00 126.10 -angle 24 82 61 70.00 126.20 -angle 57 82 79 70.00 120.00 -angle 61 82 79 70.00 120.00 -angle 20 82 86 70.00 122.00 -angle 61 82 86 70.00 130.00 -angle 57 82 87 70.00 106.20 -angle 56 82 87 70.00 127.70 -angle 49 83 61 35.00 120.00 -angle 48 83 61 70.00 111.00 -angle 13 83 61 70.00 124.50 -angle 49 83 84 35.00 128.20 -angle 61 83 84 70.00 111.00 -angle 13 83 84 70.00 130.70 -angle 13 84 16 70.00 125.00 -angle 13 84 20 70.00 121.60 -angle 16 84 24 70.00 125.00 -angle 20 84 49 35.00 113.40 -angle 16 84 49 35.00 125.00 -angle 48 84 49 35.00 130.70 -angle 49 84 50 35.00 130.70 -angle 20 84 50 70.00 110.00 -angle 49 84 57 35.00 121.60 -angle 13 84 57 70.00 121.60 -angle 48 84 57 70.00 121.60 -angle 3 84 57 85.00 120.00 -angle 57 84 58 35.00 120.00 -angle 13 84 61 70.00 118.90 -angle 49 84 80 35.00 120.00 -angle 57 84 80 70.00 108.70 -angle 49 84 83 35.00 130.70 -angle 57 84 83 70.00 106.30 -angle 20 84 83 70.00 108.00 -angle 16 84 83 70.00 111.00 -angle 13 84 83 70.00 130.70 -angle 13 84 84 70.00 120.00 -angle 57 84 84 70.00 120.00 -angle 61 84 84 70.00 120.00 -angle 20 84 86 70.00 121.60 -angle 57 84 86 70.00 121.60 -angle 49 84 87 35.00 132.10 -angle 57 84 87 70.00 107.70 -angle 20 84 87 70.00 110.60 -angle 16 84 87 70.00 111.00 -angle 61 84 87 70.00 111.90 -angle 13 84 87 70.00 132.10 -angle 48 84 87 70.00 132.10 -angle 86 84 87 70.00 132.10 -angle 3 84 87 85.00 120.00 -angle 49 85 57 35.00 120.00 -angle 13 85 57 70.00 121.60 -angle 49 85 85 35.00 130.70 -angle 57 85 85 70.00 106.30 -angle 13 85 85 70.00 130.70 -angle 48 86 48 63.00 120.00 -angle 48 86 56 70.00 124.00 -angle 48 86 82 63.00 120.00 -angle 48 86 83 63.00 120.00 -angle 48 86 84 63.00 120.00 -angle 48 86 86 63.00 120.00 -angle 56 86 86 70.00 124.00 -angle 48 86 87 63.00 120.00 -angle 48 86 88 63.00 120.00 -angle 49 87 60 35.00 120.00 -angle 46 87 60 35.00 126.80 -angle 13 87 60 70.00 128.60 -angle 49 87 84 35.00 125.70 -angle 46 87 84 35.00 126.80 -angle 84 87 84 70.00 103.80 -angle 82 87 84 70.00 110.40 -angle 2 87 84 70.00 125.00 -angle 13 87 84 70.00 125.00 -angle 3 87 84 70.00 130.00 -angle 60 87 84 85.00 106.40 -angle 84 87 86 70.00 125.70 -angle 49 87 87 35.00 127.50 -angle 60 87 87 70.00 107.30 -angle 84 87 87 70.00 107.30 -angle 86 87 87 70.00 127.50 -angle 84 87 88 70.00 103.80 -angle 48 88 49 35.00 128.60 -angle 49 88 61 35.00 118.90 -angle 13 88 61 70.00 118.90 -angle 19 88 61 70.00 118.90 -angle 61 88 87 70.00 111.90 -angle 4 89 90 80.00 134.00 -angle 90 89 91 70.00 91.00 -angle 4 89 91 80.00 134.00 -angle 13 90 89 55.00 127.00 -angle 89 90 91 50.00 94.00 -angle 13 90 91 50.00 126.00 -angle 24 91 46 35.00 108.00 -angle 13 91 46 35.00 114.30 -angle 44 91 46 35.00 114.30 -angle 46 91 46 35.00 114.30 -angle 16 91 46 37.50 108.00 -angle 46 91 47 35.00 109.50 -angle 46 91 89 37.50 110.00 -angle 24 91 89 70.00 117.00 -angle 46 91 90 35.00 111.00 -angle 16 91 90 55.00 109.00 -angle 91 91 91 30.00 79.20 -angle 13 91 91 37.50 117.20 -angle 44 91 91 37.50 117.20 -angle 46 91 91 37.50 117.20 -angle 24 91 91 37.50 126.00 -angle 16 91 91 55.00 128.00 -angle 89 91 91 63.00 85.00 -angle 47 91 91 63.00 114.00 -angle 90 91 91 80.00 89.00 -angle 13 95 13 172.80 120.00 -angle 13 95 46 144.00 120.00 -angle 13 101 45 35.00 109.50 -angle 45 101 45 43.60 106.40 -angle 45 101 48 50.00 112.50 -angle 13 101 48 50.00 120.50 -angle 13 102 103 80.00 117.50 -angle 48 102 103 80.00 117.50 -angle 103 102 103 80.00 125.00 -angle 25 103 25 10.00 109.50 -angle 25 103 102 10.00 109.50 -angle 13 104 13 45.00 109.50 -angle 3 105 10 70.00 117.60 -angle 3 105 13 70.00 117.60 -angle 3 105 45 35.00 119.20 -angle 45 105 47 35.00 119.20 -angle 13 105 47 70.00 121.20 -angle 3 105 47 70.00 121.60 -angle 3 105 51 70.00 117.60 -angle 47 105 51 70.00 121.20 -angle 45 105 60 30.00 125.80 -angle 6 105 60 70.00 125.80 -angle 10 105 60 70.00 125.80 -angle 13 105 60 70.00 125.80 -angle 51 105 60 70.00 125.80 -angle 45 105 62 30.00 128.80 -angle 60 105 62 70.00 105.40 -angle 6 105 62 70.00 128.80 -angle 10 105 62 70.00 128.80 -angle 13 105 62 70.00 128.80 -angle 51 105 62 70.00 128.80 -angle 4 106 24 20.00 109.50 -angle 24 106 24 20.00 109.50 -angle 13 107 13 50.00 118.00 -angle 3 107 13 50.00 121.90 -angle 1 108 13 35.00 110.50 -angle 13 108 13 60.00 110.00 -angle 13 108 20 60.00 100.00 -angle 20 108 20 60.00 110.00 -angle 13 108 21 35.00 110.50 -angle 45 108 45 35.00 109.50 -angle 13 108 45 35.00 110.50 -angle 46 108 46 35.00 109.50 -angle 13 108 46 35.00 110.50 -angle 13 108 65 35.00 110.50 -angle 13 108 66 35.00 110.50 -angle 13 108 108 50.00 112.00 -angle 46 109 48 35.00 123.30 -angle 46 109 50 35.00 120.00 -angle 13 109 50 70.00 124.00 -angle 46 109 109 35.00 120.00 -angle 13 109 109 70.00 124.00 -angle 50 109 109 70.00 124.00 -angle 48 109 109 85.00 117.00 -angle 4 110 47 160.00 180.00 -angle 47 110 47 160.00 180.00 - - - ################################ - ## ## - ## Urey-Bradley Parameters ## - ## ## - ################################ - - -ureybrad 35 34 35 38.25 1.5537 - - - ##################################### - ## ## - ## Improper Torsional Parameters ## - ## ## - ##################################### - - -imptors 0 0 3 4 21.000 180.0 2 -imptors 0 0 3 52 21.000 180.0 2 -imptors 0 0 24 0 5.000 180.0 2 -imptors 0 0 47 0 30.000 180.0 2 -imptors 0 0 48 0 5.000 180.0 2 - - - ############################ - ## ## - ## Torsional Parameters ## - ## ## - ############################ - - - ################################################################### - ## ## - ## Alternative Torsional Parameter Values for Use with OPLS-AA ## - ## ## - ## For some torsions, OPLS-AA has multiple possible parameter ## - ## values; the list below shows functional groups for which ## - ## these alternate (commented) values should be preferred; the ## - ## values are in the same order as in the full parameter list ## - ## ## - ## 4 3 3 36 generic (default) ## - ## 4 3 3 36 dicarbonyls ## - ## 36 3 3 36 hydrocarbon (default) ## - ## 36 3 3 36 dicarbonyls ## - ## 13 3 5 7 carboxylic acid (default) ## - ## 13 3 5 7 1,2-diacid monoanion ## - ## 4 3 13 13 peptide (default) ## - ## 4 3 13 13 propanamide ## - ## 4 3 13 13 carboxylic acid ## - ## 4 3 13 13 dicarboxylic acid ## - ## 4 3 13 13 aldyhyde, ketone, acyl halide ## - ## 4 3 13 13 1,2-diacid monoanion ## - ## 5 3 13 13 carboxylic acid (default) ## - ## 5 3 13 13 dicarboxylic acid ## - ## 35 3 13 13 peptide psi' (default) ## - ## 35 3 13 13 propanamide ## - ## 35 3 13 13 beta-3-peptide, last psi ## - ## 4 3 29 13 esters (default) ## - ## 4 3 29 13 benzoic esters ## - ## 7 5 13 13 alcohols (default) ## - ## 7 5 13 13 trifluoroethanol ## - ## 7 5 13 13 hexopyranoses ## - ## 7 5 13 36 alcohols (default) ## - ## 7 5 13 36 axial cyclohexanol ## - ## 7 5 13 36 trifluoroethanol ## - ## 0 13 13 13 alcohols, ethers (default) ## - ## 0 13 13 13 hexopyranoses ## - ## 3 13 13 3 dicarboxylic acid (default) ## - ## 3 13 13 3 1,2-diacid monoanion ## - ## 3 13 13 13 butanamide (default) ## - ## 3 13 13 13 carboxylate ion ## - ## 3 13 13 13 aldyhyde, ketone, acyl halide ## - ## 3 13 13 36 all carbonyls (default) ## - ## 3 13 13 36 dicarboxylic acid ## - ## 3 13 13 36 aldehyde, ketone, acyl halide ## - ## 5 13 13 5 diols only (default) ## - ## 5 13 13 5 triols only ## - ## 5 13 13 5 hexopyranoses ## - ## 13 13 13 13 hydrocarbon (default) ## - ## 13 13 13 13 perfluoroalkane ## - ## 13 13 13 35 peptide chi-1 (default) ## - ## 13 13 13 35 N-propylformamide ## - ## 36 13 13 69 generic (default) ## - ## 36 13 13 69 sulfone ## - ## 13 13 33 13 amine (default) ## - ## 13 13 33 13 exocyclic amine ## - ## 13 13 33 13 exocyclic 1,4-diamine ## - ## 13 13 33 34 amine (default) ## - ## 13 13 33 34 azetidine, 4-ring ## - ## 13 13 33 34 pyrrolidine, 5-ring ## - ## 13 13 33 34 cyclic amine ## - ## 13 13 33 34 cyclic 1,4-diamine ## - ## 13 13 35 3 peptide phi' (default) ## - ## 13 13 35 3 N-ethylformamide ## - ## 13 13 35 3 beta-3-peptide, first theta tors ## - ## 13 13 35 13 proline, CD-N-CA-CB (default) ## - ## 13 13 35 13 proline, CG-CD-N-CA ## - ## 36 13 35 3 peptide phi'' (default) ## - ## 36 13 35 3 N-methylformamide ## - ## 13 13 47 0 imidazole, indole, purine (default) ## - ## 13 13 47 0 nucleoside chi ## - ## 13 13 47 52 nucleoside (default) ## - ## 13 13 47 52 imidazole, indole, purine ## - ## 29 13 47 0 imidazole, indole, purine (default) ## - ## 29 13 47 0 nucleoside chi ## - ## 29 13 95 52 nucleoside (default) ## - ## 29 13 95 52 imidazole, indole, purine ## - ## 13 13 97 13 generic (default) ## - ## 13 13 97 13 generic ## - ## 17 15 38 0 aromatic thiol (default) ## - ## 17 15 38 0 aromatic thiol, N-C-S-H ## - ## 13 29 54 42 phosphonates (default) ## - ## 13 29 54 42 dimethyl phosphate ## - ## 34 35 72 16 diaryl amine (default) ## - ## 34 35 72 16 aniline-like ## - ## 34 35 72 29 diaryl amine (default) ## - ## 34 35 72 29 aniline-like ## - ## 13 40 40 37 diene (default) ## - ## 13 40 40 37 2-methyl-1,3-butadiene ## - ## 0 46 72 0 generic (default) ## - ## 0 46 72 0 generic ## - ## 0 47 72 0 generic (default) ## - ## 0 47 72 0 generic ## - ## 0 47 74 0 generic (default) ## - ## 0 47 74 0 generic ## - ## 0 47 74 0 generic ## - ## 0 51 72 0 generic (default) ## - ## 0 51 72 0 HA-CR-NB-?? or N?-CR-NB-?? ## - ## 0 72 77 0 generic (default) ## - ## 0 72 77 0 biphenyl-like, N-C-C-C ## - ## ## - ################################################################### - - -torsion 0 2 2 2 -2.500 0.0 1 1.250 180.0 2 3.100 0.0 3 -torsion 0 2 2 6 -2.500 0.0 1 1.250 180.0 2 3.100 0.0 3 -torsion 1 2 2 2 -2.000 0.0 1 0.700 180.0 2 3.000 0.0 3 -torsion 1 2 2 6 -2.000 0.0 1 0.700 180.0 2 3.000 0.0 3 -torsion 2 2 2 2 -3.400 0.0 1 1.250 180.0 2 3.100 0.0 3 -torsion 2 2 2 6 -3.400 0.0 1 1.250 180.0 2 3.100 0.0 3 -torsion 2 2 2 10 -3.400 0.0 1 1.250 180.0 2 3.100 0.0 3 -torsion 2 2 2 13 -3.400 0.0 1 1.250 180.0 2 3.100 0.0 3 -torsion 2 2 2 65 -2.000 0.0 1 0.500 180.0 2 3.250 0.0 3 -torsion 6 2 2 6 -3.400 0.0 1 1.250 180.0 2 3.100 0.0 3 -torsion 6 2 2 65 -2.000 0.0 1 0.500 180.0 2 3.250 0.0 3 -torsion 10 2 2 10 -3.400 0.0 1 1.250 180.0 2 3.100 0.0 3 -torsion 2 2 5 7 0.300 0.0 1 0.000 180.0 2 1.300 0.0 3 -torsion 6 2 5 7 0.300 0.0 1 0.000 180.0 2 1.300 0.0 3 -torsion 10 2 5 7 0.300 0.0 1 0.000 180.0 2 1.300 0.0 3 -torsion 0 2 10 2 -2.500 0.0 1 1.250 180.0 2 3.100 0.0 3 -torsion 2 2 10 2 -3.400 0.0 1 1.250 180.0 2 3.100 0.0 3 -torsion 2 2 13 2 -3.400 0.0 1 1.250 180.0 2 3.100 0.0 3 -torsion 6 2 20 2 -7.400 0.0 1 3.000 180.0 2 1.800 0.0 3 -torsion 6 2 20 6 -8.400 0.0 1 3.000 180.0 2 1.800 0.0 3 -torsion 4 3 3 4 1.600 0.0 1 3.200 180.0 2 0.000 0.0 3 -torsion 4 3 3 13 0.000 0.0 1 0.500 180.0 2 0.000 0.0 3 -torsion 4 3 3 24 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 4 3 3 46 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -#torsion 4 3 3 36 0.000 0.0 1 0.200 180.0 2 0.000 0.0 3 -torsion 13 3 3 13 0.700 0.0 1 -1.500 180.0 2 0.000 0.0 3 -torsion 13 3 3 24 -0.500 0.0 1 0.200 180.0 2 0.000 0.0 3 -torsion 13 3 3 46 0.800 0.0 1 -0.760 180.0 2 0.000 0.0 3 -torsion 24 3 3 46 -0.900 0.0 1 0.300 180.0 2 0.000 0.0 3 -torsion 46 3 3 46 0.000 0.0 1 0.000 180.0 2 0.300 0.0 3 -#torsion 36 3 3 36 0.800 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 3 3 5 7 3.000 0.0 1 5.500 180.0 2 0.000 0.0 3 -torsion 4 3 5 7 0.000 0.0 1 5.000 180.0 2 0.000 0.0 3 -torsion 13 3 5 7 1.500 0.0 1 5.500 180.0 2 0.000 0.0 3 -#torsion 13 3 5 7 3.200 0.0 1 4.900 180.0 2 0.000 0.0 3 -torsion 24 3 5 7 -2.000 0.0 1 5.000 180.0 2 0.000 0.0 3 -torsion 46 3 5 7 1.500 0.0 1 5.500 180.0 2 0.000 0.0 3 -torsion 48 3 5 7 4.000 0.0 1 5.000 180.0 2 0.000 0.0 3 -torsion 1 3 13 13 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 1 3 13 46 0.000 0.0 1 0.000 180.0 2 0.360 0.0 3 -torsion 3 3 13 46 0.000 0.0 1 0.000 180.0 2 0.085 0.0 3 -torsion 4 3 13 0 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 4 3 13 13 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -#torsion 4 3 13 13 0.000 0.0 1 1.166 180.0 2 0.000 0.0 3 -#torsion 4 3 13 13 0.000 0.0 1 0.546 180.0 2 0.000 0.0 3 -#torsion 4 3 13 13 -0.750 0.0 1 -0.550 180.0 2 -0.250 0.0 3 -#torsion 4 3 13 13 -0.277 0.0 1 1.228 180.0 2 -0.694 0.0 3 -#torsion 4 3 13 13 -1.000 0.0 1 -1.900 180.0 2 -0.900 0.0 3 -torsion 4 3 13 21 -0.650 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 4 3 13 44 0.000 0.0 1 0.820 180.0 2 0.000 0.0 3 -torsion 4 3 13 24 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 4 3 13 46 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 4 3 13 48 0.000 0.0 1 0.546 180.0 2 0.000 0.0 3 -torsion 5 3 13 13 0.000 0.0 1 1.412 180.0 2 0.000 0.0 3 -#torsion 5 3 13 13 1.000 0.0 1 0.546 180.0 2 0.450 0.0 3 -torsion 5 3 13 44 5.260 0.0 1 0.820 180.0 2 0.000 0.0 3 -torsion 5 3 13 46 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 13 3 13 13 1.454 0.0 1 -0.144 180.0 2 -0.775 0.0 3 -torsion 13 3 13 46 0.000 0.0 1 0.000 180.0 2 0.275 0.0 3 -torsion 20 3 13 13 0.000 0.0 1 0.000 180.0 2 -0.553 0.0 3 -torsion 20 3 13 46 0.000 0.0 1 0.000 180.0 2 0.132 0.0 3 -torsion 21 3 13 13 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 21 3 13 46 0.000 0.0 1 0.000 180.0 2 0.360 0.0 3 -torsion 24 3 13 13 1.173 0.0 1 0.189 180.0 2 -1.200 0.0 3 -#torsion 35 3 13 13 3.250 0.0 1 -0.402 180.0 2 -0.136 0.0 3 -#torsion 35 3 13 13 3.260 0.0 1 0.440 180.0 2 0.600 0.0 3 -torsion 24 3 13 21 0.650 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 24 3 13 24 1.816 0.0 1 1.222 180.0 2 1.581 0.0 3 -torsion 24 3 13 46 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 46 3 13 13 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 46 3 13 46 0.000 0.0 1 0.000 180.0 2 0.360 0.0 3 -torsion 48 3 13 46 0.000 0.0 1 0.000 180.0 2 0.275 0.0 3 -torsion 52 3 13 13 0.000 0.0 1 0.820 180.0 2 0.000 0.0 3 -torsion 52 3 13 44 0.000 0.0 1 0.820 180.0 2 0.000 0.0 3 -torsion 52 3 13 46 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 65 3 13 13 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 65 3 13 46 0.000 0.0 1 0.000 180.0 2 0.360 0.0 3 -torsion 107 3 13 46 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 4 3 20 13 0.000 0.0 1 5.124 180.0 2 0.000 0.0 3 -#torsion 4 3 29 13 0.000 0.0 1 5.000 180.0 2 0.000 0.0 3 -torsion 4 3 20 48 0.000 0.0 1 5.000 180.0 2 0.000 0.0 3 -torsion 13 3 20 13 4.669 0.0 1 5.124 180.0 2 0.000 0.0 3 -torsion 13 3 20 48 1.500 0.0 1 5.000 180.0 2 0.000 0.0 3 -torsion 24 3 20 13 -2.000 0.0 1 5.000 180.0 2 0.000 0.0 3 -torsion 46 3 20 13 4.669 0.0 1 5.124 180.0 2 0.000 0.0 3 -torsion 48 3 20 13 4.000 0.0 1 5.000 180.0 2 0.000 0.0 3 -torsion 3 3 24 13 0.400 0.0 1 4.900 180.0 2 0.000 0.0 3 -torsion 3 3 24 45 0.000 0.0 1 4.900 180.0 2 0.000 0.0 3 -torsion 4 3 24 5 0.000 0.0 1 6.603 180.0 2 0.000 0.0 3 -torsion 4 3 24 13 0.000 0.0 1 6.089 180.0 2 0.000 0.0 3 -torsion 4 3 24 45 0.000 0.0 1 4.900 180.0 2 0.000 0.0 3 -torsion 4 3 24 47 0.000 0.0 1 6.089 180.0 2 0.000 0.0 3 -torsion 4 3 24 48 0.000 0.0 1 6.089 180.0 2 0.000 0.0 3 -torsion 4 3 24 91 0.000 0.0 1 6.089 180.0 2 0.000 0.0 3 -torsion 5 3 24 13 2.300 0.0 1 6.089 180.0 2 0.000 0.0 3 -torsion 5 3 24 45 0.000 0.0 1 4.900 180.0 2 0.000 0.0 3 -torsion 13 3 24 5 4.542 0.0 1 6.603 180.0 2 1.045 0.0 3 -torsion 13 3 24 13 2.300 0.0 1 6.089 180.0 2 0.000 0.0 3 -torsion 13 3 24 45 0.000 0.0 1 4.900 180.0 2 0.000 0.0 3 -torsion 13 3 24 48 2.300 0.0 1 6.089 180.0 2 0.000 0.0 3 -torsion 20 3 24 13 2.300 0.0 1 6.089 180.0 2 0.000 0.0 3 -torsion 20 3 24 45 0.000 0.0 1 4.900 180.0 2 0.000 0.0 3 -torsion 24 3 24 3 2.300 0.0 1 6.089 180.0 2 0.000 0.0 3 -torsion 24 3 24 13 4.600 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 24 3 24 45 0.000 0.0 1 4.900 180.0 2 0.000 0.0 3 -torsion 46 3 24 13 2.300 0.0 1 6.089 180.0 2 0.000 0.0 3 -torsion 46 3 24 45 0.000 0.0 1 4.900 180.0 2 0.000 0.0 3 -torsion 47 3 24 45 0.000 0.0 1 4.900 180.0 2 0.000 0.0 3 -torsion 48 3 24 45 0.000 0.0 1 4.900 180.0 2 0.000 0.0 3 -torsion 48 3 24 48 2.300 0.0 1 6.089 180.0 2 0.000 0.0 3 -torsion 48 3 24 84 2.300 0.0 1 6.089 180.0 2 0.000 0.0 3 -torsion 48 3 24 87 2.300 0.0 1 6.089 180.0 2 0.000 0.0 3 -torsion 84 3 24 48 2.300 0.0 1 6.089 180.0 2 0.000 0.0 3 -torsion 84 3 24 84 2.300 0.0 1 6.089 180.0 2 0.000 0.0 3 -torsion 84 3 24 87 2.300 0.0 1 6.089 180.0 2 0.000 0.0 3 -torsion 87 3 24 45 0.000 0.0 1 4.900 180.0 2 0.000 0.0 3 -torsion 87 3 24 48 2.300 0.0 1 6.089 180.0 2 0.000 0.0 3 -torsion 87 3 24 84 2.300 0.0 1 6.089 180.0 2 0.000 0.0 3 -torsion 87 3 24 87 2.300 0.0 1 6.089 180.0 2 0.000 0.0 3 -torsion 0 3 47 13 0.900 0.0 1 0.230 180.0 2 -0.505 0.0 3 -torsion 4 3 47 46 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 4 3 47 47 2.500 0.0 1 6.000 180.0 2 0.000 0.0 3 -torsion 5 3 47 47 3.200 0.0 1 -3.000 180.0 2 0.000 0.0 3 -torsion 24 3 47 46 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 24 3 47 47 2.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 107 3 47 46 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 107 3 47 47 2.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 4 3 48 48 0.000 0.0 1 2.100 180.0 2 0.000 0.0 3 -torsion 5 3 48 48 0.000 0.0 1 2.100 180.0 2 0.000 0.0 3 -torsion 13 3 48 48 0.000 0.0 1 0.200 180.0 2 0.000 0.0 3 -torsion 20 3 48 48 0.000 0.0 1 2.100 180.0 2 0.000 0.0 3 -torsion 24 3 48 48 0.000 0.0 1 1.100 180.0 2 0.000 0.0 3 -torsion 46 3 48 48 0.000 0.0 1 0.200 180.0 2 0.000 0.0 3 -torsion 0 3 50 13 0.900 0.0 1 0.230 180.0 2 -0.505 0.0 3 -torsion 4 3 50 47 2.500 0.0 1 6.000 180.0 2 0.000 0.0 3 -torsion 5 3 50 47 3.200 0.0 1 -3.000 180.0 2 0.000 0.0 3 -torsion 13 3 50 47 0.800 0.0 1 -3.000 180.0 2 0.000 0.0 3 -torsion 13 3 56 0 0.000 0.0 1 14.000 180.0 2 0.000 0.0 3 -torsion 13 3 56 13 0.000 0.0 1 14.000 180.0 2 0.000 0.0 3 -torsion 46 3 56 0 0.000 0.0 1 14.000 180.0 2 0.000 0.0 3 -torsion 46 3 56 45 0.000 0.0 1 14.000 180.0 2 0.000 0.0 3 -torsion 0 3 60 0 0.000 0.0 1 7.000 180.0 2 0.000 0.0 3 -torsion 4 3 60 0 0.000 0.0 1 7.000 180.0 2 0.000 0.0 3 -torsion 4 3 82 0 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 4 3 82 57 2.000 0.0 1 1.000 180.0 2 0.000 0.0 3 -torsion 4 3 82 61 0.000 0.0 1 1.000 180.0 2 0.000 0.0 3 -torsion 82 3 82 57 -2.000 0.0 1 1.000 180.0 2 0.000 0.0 3 -torsion 82 3 82 61 0.000 0.0 1 1.000 180.0 2 0.000 0.0 3 -torsion 4 3 84 20 -0.750 0.0 1 1.500 180.0 2 0.000 0.0 3 -torsion 4 3 84 87 0.750 0.0 1 1.500 180.0 2 0.000 0.0 3 -torsion 84 3 84 20 0.000 0.0 1 1.500 180.0 2 0.000 0.0 3 -torsion 84 3 84 87 0.000 0.0 1 1.500 180.0 2 0.000 0.0 3 -torsion 48 3 86 48 0.000 0.0 1 2.170 180.0 2 0.000 0.0 3 -torsion 0 3 87 0 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 4 3 87 84 0.000 0.0 1 2.100 180.0 2 0.000 0.0 3 -torsion 4 3 87 87 0.000 0.0 1 2.100 180.0 2 0.000 0.0 3 -torsion 24 3 87 84 0.000 0.0 1 1.100 180.0 2 0.000 0.0 3 -torsion 24 3 87 87 0.000 0.0 1 1.100 180.0 2 0.000 0.0 3 -torsion 4 3 107 13 0.000 0.0 1 4.900 180.0 2 0.000 0.0 3 -torsion 13 3 107 13 0.000 0.0 1 4.900 180.0 2 0.000 0.0 3 -torsion 4 3 109 109 2.500 0.0 1 6.000 180.0 2 0.000 0.0 3 -torsion 5 3 109 109 3.200 0.0 1 -3.000 180.0 2 0.000 0.0 3 -torsion 0 4 106 0 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 7 5 10 2 0.300 0.0 1 0.000 180.0 2 0.500 0.0 3 -torsion 7 5 10 6 0.300 0.0 1 0.000 180.0 2 0.500 0.0 3 -torsion 7 5 13 2 0.000 0.0 1 0.000 180.0 2 0.200 0.0 3 -torsion 7 5 13 6 0.000 0.0 1 0.000 180.0 2 0.200 0.0 3 -torsion 7 5 13 13 -0.356 0.0 1 -0.174 180.0 2 0.492 0.0 3 -#torsion 7 5 13 13 4.478 0.0 1 -2.175 180.0 2 0.000 0.0 3 -#torsion 7 5 13 13 2.674 0.0 1 -2.883 180.0 2 1.026 0.0 3 -torsion 7 5 13 46 0.000 0.0 1 0.000 180.0 2 0.352 0.0 3 -#torsion 7 5 13 36 -2.589 0.0 1 -1.123 180.0 2 0.270 0.0 3 -#torsion 7 5 13 36 0.000 0.0 1 0.000 180.0 2 0.476 0.0 3 -torsion 7 5 13 47 -0.900 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 7 5 13 48 -0.900 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 7 5 13 50 -0.900 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 7 5 44 13 0.000 0.0 1 0.000 180.0 2 0.300 0.0 3 -torsion 7 5 44 45 0.000 0.0 1 0.000 180.0 2 0.300 0.0 3 -torsion 7 5 24 3 5.519 0.0 1 -6.700 180.0 2 0.581 0.0 3 -torsion 7 5 24 45 2.722 0.0 1 -5.154 180.0 2 0.000 0.0 3 -torsion 7 5 47 47 0.000 0.0 1 1.682 180.0 2 0.000 0.0 3 -torsion 7 5 48 48 0.000 0.0 1 1.682 180.0 2 0.000 0.0 3 -torsion 7 5 51 20 -1.257 0.0 1 -1.806 180.0 2 0.003 0.0 3 -torsion 7 5 56 3 3.000 0.0 1 3.000 180.0 2 0.000 0.0 3 -torsion 7 5 64 4 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 7 5 64 5 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 7 5 79 13 -0.750 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 7 5 79 23 0.750 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 7 5 79 48 2.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 0 13 13 3 -4.344 0.0 1 -1.714 180.0 2 0.000 0.0 3 -torsion 0 13 13 13 1.711 0.0 1 -0.500 180.0 2 0.663 0.0 3 -#torsion 0 13 13 13 -1.336 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 0 13 13 24 1.428 0.0 1 0.086 180.0 2 0.029 0.0 3 -torsion 1 13 13 1 -2.500 0.0 1 0.000 180.0 2 0.250 0.0 3 -torsion 1 13 13 5 0.000 0.0 1 0.000 180.0 2 0.540 0.0 3 -torsion 1 13 13 13 0.300 0.0 1 -0.400 180.0 2 0.400 0.0 3 -torsion 1 13 13 46 0.000 0.0 1 0.000 180.0 2 0.400 0.0 3 -torsion 3 13 13 3 -0.550 0.0 1 0.000 180.0 2 1.000 0.0 3 -#torsion 3 13 13 3 0.800 0.0 1 0.000 180.0 2 0.900 0.0 3 -torsion 3 13 13 5 -6.180 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 3 13 13 13 -2.060 0.0 1 -0.313 180.0 2 0.315 0.0 3 -#torsion 3 13 13 13 -3.185 0.0 1 -0.825 180.0 2 0.493 0.0 3 -#torsion 3 13 13 13 -1.697 0.0 1 -0.456 180.0 2 0.585 0.0 3 -torsion 3 13 13 15 -4.344 0.0 1 -1.714 180.0 2 0.000 0.0 3 -torsion 3 13 13 16 -4.344 0.0 1 -1.714 180.0 2 0.000 0.0 3 -torsion 3 13 13 24 -9.000 0.0 1 2.000 180.0 2 0.800 0.0 3 -torsion 3 13 13 46 0.000 0.0 1 0.000 180.0 2 -0.100 0.0 3 -#torsion 3 13 13 36 0.000 0.0 1 0.000 180.0 2 0.074 0.0 3 -#torsion 3 13 13 36 0.000 0.0 1 0.000 180.0 2 -0.076 0.0 3 -torsion 3 13 13 48 -1.697 0.0 1 -0.456 180.0 2 0.585 0.0 3 -torsion 3 13 13 80 -1.697 0.0 1 -0.456 180.0 2 0.585 0.0 3 -torsion 5 13 13 5 9.508 0.0 1 0.000 180.0 2 0.000 0.0 3 -#torsion 5 13 13 5 12.234 0.0 1 0.000 180.0 2 0.000 0.0 3 -#torsion 5 13 13 5 9.066 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 5 13 13 13 -1.552 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 5 13 13 20 4.319 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 5 13 13 44 8.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 5 13 13 24 6.280 0.0 1 -1.467 180.0 2 2.030 0.0 3 -torsion 5 13 13 46 0.000 0.0 1 0.000 180.0 2 0.468 0.0 3 -torsion 13 13 13 13 1.300 0.0 1 -0.050 180.0 2 0.200 0.0 3 -#torsion 13 13 13 13 6.622 0. 1 0.948 180. 2 -1.388 0. 3 -2.118 180. 4 -torsion 13 13 13 15 1.262 0.0 1 -0.198 180.0 2 0.465 0.0 3 -torsion 13 13 13 16 2.619 0.0 1 -0.620 180.0 2 0.258 0.0 3 -torsion 13 13 13 19 0.000 0.0 1 -0.650 180.0 2 0.000 0.0 3 -torsion 13 13 13 21 0.000 0.0 1 0.000 180.0 2 0.400 0.0 3 -torsion 13 13 13 44 2.392 0.0 1 -0.674 180.0 2 0.550 0.0 3 -torsion 13 13 13 24 0.845 0.0 1 -0.962 180.0 2 0.713 0.0 3 -#torsion 13 13 13 35 1.964 0.0 1 0.000 180.0 2 0.659 0.0 3 -torsion 13 13 13 46 0.000 0.0 1 0.000 180.0 2 0.300 0.0 3 -torsion 13 13 13 51 1.300 0.0 1 -0.050 180.0 2 0.200 0.0 3 -torsion 13 13 13 53 2.732 0.0 1 -0.229 180.0 2 0.485 0.0 3 -torsion 13 13 13 65 0.000 0.0 1 0.000 180.0 2 0.400 0.0 3 -torsion 13 13 13 66 0.000 0.0 1 0.000 180.0 2 0.400 0.0 3 -torsion 13 13 13 79 1.262 0.0 1 -0.198 180.0 2 0.465 0.0 3 -torsion 13 13 13 107 1.964 0.0 1 0.000 180.0 2 0.659 0.0 3 -torsion 13 13 13 108 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 15 13 13 46 0.000 0.0 1 0.000 180.0 2 0.452 0.0 3 -torsion 16 13 13 46 0.000 0.0 1 0.000 180.0 2 0.452 0.0 3 -torsion 19 13 13 46 0.000 0.0 1 0.000 180.0 2 0.366 0.0 3 -torsion 20 13 13 20 -0.550 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 20 13 13 46 0.000 0.0 1 0.000 180.0 2 0.468 0.0 3 -torsion 21 13 13 21 -0.250 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 21 13 13 44 2.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 21 13 13 46 0.000 0.0 1 0.000 180.0 2 0.400 0.0 3 -torsion 44 13 13 44 11.035 0.0 1 -0.968 180.0 2 0.270 0.0 3 -torsion 44 13 13 46 -1.013 0.0 1 -0.709 180.0 2 0.473 0.0 3 -torsion 44 13 13 48 -0.800 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 24 13 13 46 0.000 0.0 1 0.000 180.0 2 0.464 0.0 3 -torsion 24 13 13 48 0.845 0.0 1 -0.962 180.0 2 0.713 0.0 3 -torsion 24 13 13 80 0.845 0.0 1 -0.962 180.0 2 0.713 0.0 3 -torsion 46 13 13 46 0.000 0.0 1 0.000 180.0 2 0.300 0.0 3 -torsion 46 13 13 47 0.000 0.0 1 0.000 180.0 2 0.366 0.0 3 -torsion 46 13 13 48 0.000 0.0 1 0.000 180.0 2 0.462 0.0 3 -torsion 46 13 13 51 0.000 0.0 1 0.000 180.0 2 0.300 0.0 3 -torsion 46 13 13 53 0.000 0.0 1 0.000 180.0 2 0.384 0.0 3 -torsion 46 13 13 55 0.000 0.0 1 0.000 180.0 2 -0.582 0.0 3 -torsion 46 13 13 59 0.000 0.0 1 0.000 180.0 2 0.462 0.0 3 -torsion 46 13 13 62 0.000 0.0 1 0.000 180.0 2 0.462 0.0 3 -torsion 46 13 13 65 0.000 0.0 1 0.000 180.0 2 0.400 0.0 3 -torsion 46 13 13 66 0.000 0.0 1 0.000 180.0 2 0.400 0.0 3 -torsion 46 13 13 79 0.000 0.0 1 0.000 180.0 2 0.452 0.0 3 -#torsion 36 13 13 69 0.000 0.0 1 0.000 180.0 2 0.350 0.0 3 -torsion 46 13 13 80 0.000 0.0 1 0.000 180.0 2 0.462 0.0 3 -torsion 46 13 13 82 0.000 0.0 1 0.000 180.0 2 0.462 0.0 3 -torsion 46 13 13 83 0.000 0.0 1 0.000 180.0 2 0.462 0.0 3 -torsion 46 13 13 84 0.000 0.0 1 0.000 180.0 2 0.462 0.0 3 -torsion 46 13 13 87 0.000 0.0 1 0.000 180.0 2 0.462 0.0 3 -torsion 46 13 13 88 0.000 0.0 1 0.000 180.0 2 0.462 0.0 3 -torsion 46 13 13 102 0.000 0.0 1 0.000 180.0 2 -0.225 0.0 3 -torsion 46 13 13 104 0.000 0.0 1 0.000 180.0 2 0.300 0.0 3 -torsion 46 13 13 107 0.000 0.0 1 0.000 180.0 2 0.464 0.0 3 -torsion 46 13 13 108 0.000 0.0 1 0.000 180.0 2 0.450 0.0 3 -torsion 46 13 13 109 0.000 0.0 1 0.000 180.0 2 0.366 0.0 3 -torsion 48 13 13 53 1.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 108 13 13 108 5.200 0.0 1 -0.500 180.0 2 0.000 0.0 3 -torsion 13 13 15 17 -0.759 0.0 1 -0.282 180.0 2 0.680 0.0 3 -torsion 46 13 15 17 0.000 0.0 1 0.000 180.0 2 0.480 0.0 3 -torsion 13 13 16 13 0.925 0.0 1 -0.576 180.0 2 0.677 0.0 3 -torsion 13 13 16 16 1.941 0.0 1 -0.836 180.0 2 0.935 0.0 3 -torsion 46 13 16 13 0.000 0.0 1 0.000 180.0 2 0.647 0.0 3 -torsion 46 13 16 16 0.000 0.0 1 0.000 180.0 2 0.558 0.0 3 -torsion 46 13 16 48 0.000 0.0 1 0.000 180.0 2 0.647 0.0 3 -torsion 0 13 18 19 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 46 13 18 19 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 0 13 19 18 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 0 13 19 19 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 13 13 19 19 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 46 13 19 19 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 0 13 20 13 -0.521 0.0 1 -2.018 180.0 2 1.996 0.0 3 -torsion 56 13 20 13 -0.500 0.0 1 -1.500 180.0 2 1.000 0.0 3 -torsion 57 13 20 13 -0.500 0.0 1 -1.500 180.0 2 1.000 0.0 3 -torsion 13 13 20 3 -1.220 0.0 1 -0.126 180.0 2 0.422 0.0 3 -torsion 13 13 20 13 0.650 0.0 1 -0.250 180.0 2 0.670 0.0 3 -torsion 13 13 20 64 -1.420 0.0 1 -0.620 180.0 2 0.100 0.0 3 -torsion 46 13 20 0 0.000 0.0 1 0.000 180.0 2 0.760 0.0 3 -torsion 46 13 20 3 0.000 0.0 1 0.000 180.0 2 0.198 0.0 3 -torsion 46 13 20 47 0.000 0.0 1 0.000 180.0 2 0.760 0.0 3 -torsion 46 13 20 48 0.000 0.0 1 0.000 180.0 2 0.760 0.0 3 -torsion 46 13 20 51 0.000 0.0 1 0.000 180.0 2 0.760 0.0 3 -torsion 46 13 20 64 0.000 0.0 1 0.000 180.0 2 0.300 0.0 3 -torsion 13 13 44 13 0.416 0.0 1 -0.128 180.0 2 0.695 0.0 3 -#torsion 13 13 33 13 1.536 0.0 1 -0.128 180.0 2 0.695 0.0 3 -#torsion 13 13 33 13 1.464 0.0 1 -0.128 180.0 2 0.695 0.0 3 -torsion 13 13 44 45 -0.190 0.0 1 -0.417 180.0 2 0.418 0.0 3 -#torsion 13 13 33 34 0.000 0.0 1 4.000 180.0 2 0.000 0.0 3 -#torsion 13 13 33 34 0.200 0.0 1 -0.417 180.0 2 0.418 0.0 3 -#torsion 13 13 33 34 0.819 0.0 1 -0.417 180.0 2 0.418 0.0 3 -#torsion 13 13 33 34 1.522 0.0 1 -0.417 180.0 2 0.418 0.0 3 -torsion 46 13 44 13 0.000 0.0 1 0.000 180.0 2 0.560 0.0 3 -torsion 46 13 44 45 0.000 0.0 1 0.000 180.0 2 0.400 0.0 3 -torsion 46 13 44 48 0.000 0.0 1 0.000 180.0 2 0.560 0.0 3 -torsion 0 13 24 45 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 3 13 24 3 -2.365 0.0 1 0.912 180.0 2 -0.850 0.0 3 -torsion 3 13 24 13 -1.737 0.0 1 1.251 180.0 2 -3.501 0.0 3 -torsion 3 13 24 45 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 13 13 24 3 0.000 0.0 1 0.462 180.0 2 0.000 0.0 3 -#torsion 13 13 35 3 -1.396 0.0 1 -0.427 180.0 2 0.000 0.0 3 -#torsion 13 13 35 3 1.130 0.0 1 -1.420 180.0 2 0.440 0.0 3 -torsion 13 13 24 13 4.753 0.0 1 -0.734 180.0 2 0.000 0.0 3 -#torsion 13 13 35 13 2.859 0.0 1 2.058 180.0 2 -11.266 0.0 3 -torsion 13 13 24 45 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 13 13 24 59 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 13 13 24 79 2.929 0.0 1 -2.533 180.0 2 0.497 0.0 3 -torsion 13 13 24 91 2.300 0.0 1 6.089 180.0 2 0.000 0.0 3 -torsion 46 13 24 3 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -#torsion 36 13 35 3 0.000 0.0 1 0.000 180.0 2 -0.139 0.0 3 -torsion 46 13 24 13 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 46 13 24 45 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 46 13 24 48 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 46 13 24 79 1.362 0.0 1 -1.457 180.0 2 0.149 0.0 3 -torsion 48 13 24 59 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 0 13 47 13 1.711 0.0 1 -0.500 180.0 2 0.663 0.0 3 -torsion 0 13 47 46 0.000 0.0 1 0.000 180.0 2 0.468 0.0 3 -torsion 0 13 47 47 0.500 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 0 13 47 50 0.500 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 1 13 47 47 0.500 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 13 13 47 13 2.817 0.0 1 -0.169 180.0 2 0.543 0.0 3 -torsion 13 13 47 47 0.346 0.0 1 0.405 180.0 2 -0.904 0.0 3 -torsion 13 13 47 50 0.346 0.0 1 0.405 180.0 2 -0.904 0.0 3 -torsion 46 13 47 13 0.000 0.0 1 0.000 180.0 2 0.300 0.0 3 -torsion 46 13 47 46 0.000 0.0 1 0.000 180.0 2 0.318 0.0 3 -torsion 46 13 47 47 0.000 0.0 1 0.000 180.0 2 -0.372 0.0 3 -torsion 46 13 47 50 0.000 0.0 1 0.000 180.0 2 -0.372 0.0 3 -torsion 46 13 47 110 0.000 0.0 1 0.000 180.0 2 -0.250 0.0 3 -torsion 47 13 47 13 0.000 0.0 1 -8.000 180.0 2 0.000 0.0 3 -torsion 47 13 47 46 0.000 0.0 1 -8.000 180.0 2 0.000 0.0 3 -torsion 0 13 48 48 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 1 13 48 48 0.000 0.0 1 0.450 180.0 2 0.000 0.0 3 -torsion 13 13 48 48 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 13 13 48 56 -0.500 0.0 1 0.500 180.0 2 -0.500 0.0 3 -torsion 21 13 48 48 0.000 0.0 1 -0.400 180.0 2 0.000 0.0 3 -torsion 46 13 48 48 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 64 13 48 48 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 65 13 48 48 0.000 0.0 1 0.000 180.0 2 0.400 0.0 3 -torsion 0 13 50 47 0.500 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 13 13 50 50 0.346 0.0 1 0.405 180.0 2 -0.904 0.0 3 -torsion 46 13 50 47 0.000 0.0 1 0.000 180.0 2 -0.372 0.0 3 -torsion 46 13 50 50 0.000 0.0 1 0.000 180.0 2 -0.372 0.0 3 -torsion 46 13 50 109 0.000 0.0 1 0.000 180.0 2 -0.372 0.0 3 -torsion 13 13 51 0 1.711 0.0 1 -0.500 180.0 2 0.663 0.0 3 -torsion 13 13 51 46 0.000 0.0 1 0.000 180.0 2 0.300 0.0 3 -torsion 46 13 51 20 0.000 0.0 1 0.000 180.0 2 0.468 0.0 3 -torsion 13 13 53 13 1.438 0.0 1 -0.124 180.0 2 0.264 0.0 3 -torsion 13 13 53 45 0.000 0.0 1 0.000 180.0 2 0.347 0.0 3 -torsion 46 13 53 13 0.000 0.0 1 0.000 180.0 2 0.302 0.0 3 -torsion 46 13 53 45 0.000 0.0 1 0.000 180.0 2 0.261 0.0 3 -torsion 46 13 53 48 0.000 0.0 1 0.000 180.0 2 0.462 0.0 3 -torsion 46 13 53 54 0.000 0.0 1 0.000 180.0 2 0.300 0.0 3 -torsion 13 13 55 45 -0.190 0.0 1 -0.417 180.0 2 0.418 0.0 3 -torsion 13 13 55 48 1.829 0.0 1 0.243 180.0 2 -0.498 0.0 3 -torsion 13 13 55 54 -0.190 0.0 1 -0.417 180.0 2 0.418 0.0 3 -torsion 46 13 55 13 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 46 13 55 45 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 46 13 55 48 0.000 0.0 1 0.000 180.0 2 0.177 0.0 3 -torsion 13 13 56 18 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 0 13 57 0 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 13 13 57 0 1.000 0.0 1 -0.350 180.0 2 0.000 0.0 3 -#torsion 13 13 47 0 0.000 0.0 1 -0.576 180.0 2 0.000 0.0 3 -torsion 13 13 57 62 2.756 0.0 1 -0.872 180.0 2 -3.680 0.0 3 -#torsion 13 13 47 52 -1.000 0.0 1 -0.350 180.0 2 0.000 0.0 3 -torsion 13 13 57 82 -1.000 0.0 1 -0.350 180.0 2 0.000 0.0 3 -torsion 20 13 57 0 1.500 0.0 1 -1.500 180.0 2 0.000 0.0 3 -#torsion 29 13 47 0 0.000 0.0 1 -1.876 180.0 2 0.000 0.0 3 -torsion 20 13 57 62 -1.500 0.0 1 -1.500 180.0 2 0.000 0.0 3 -torsion 20 13 57 82 -1.500 0.0 1 -1.500 180.0 2 0.000 0.0 3 -torsion 13 13 59 0 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 13 13 59 56 0.000 0.0 1 0.500 180.0 2 -0.500 0.0 3 -torsion 46 13 59 0 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 13 13 62 0 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 46 13 62 0 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 46 13 64 20 0.000 0.0 1 0.000 180.0 2 0.250 0.0 3 -torsion 46 13 64 52 0.000 0.0 1 0.000 180.0 2 0.250 0.0 3 -torsion 48 13 64 20 2.250 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 48 13 64 52 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 0 13 79 23 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 0 13 79 24 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 13 13 79 13 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 13 13 79 23 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 46 13 79 5 0.000 0.0 1 0.000 180.0 2 0.350 0.0 3 -torsion 46 13 79 13 0.000 0.0 1 0.000 180.0 2 0.350 0.0 3 -torsion 46 13 79 23 0.000 0.0 1 0.000 180.0 2 0.350 0.0 3 -torsion 46 13 79 48 0.000 0.0 1 0.000 180.0 2 0.350 0.0 3 -torsion 13 13 80 0 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 13 13 80 60 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 13 13 80 84 -0.714 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 46 13 80 0 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 46 13 80 60 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 46 13 80 84 0.000 0.0 1 0.000 180.0 2 -0.480 0.0 3 -torsion 13 13 82 0 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 46 13 82 0 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 13 13 83 0 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 46 13 83 0 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 1 13 84 0 0.000 0.0 1 0.450 180.0 2 0.000 0.0 3 -torsion 13 13 84 0 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 13 13 84 57 1.700 0.0 1 -0.600 180.0 2 0.000 0.0 3 -torsion 21 13 84 0 0.000 0.0 1 -0.400 180.0 2 0.000 0.0 3 -torsion 46 13 84 0 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 1 13 87 0 0.000 0.0 1 0.450 180.0 2 0.000 0.0 3 -torsion 13 13 87 0 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 21 13 87 0 0.000 0.0 1 -0.400 180.0 2 0.000 0.0 3 -torsion 46 13 87 0 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 13 13 88 0 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 46 13 88 0 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 0 13 90 0 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 46 13 90 0 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 46 13 91 91 0.000 0.0 1 0.000 180.0 2 0.300 0.0 3 -torsion 13 13 95 13 0.000 0.0 1 -1.000 180.0 2 0.000 0.0 3 -torsion 13 13 95 46 0.000 0.0 1 -1.000 180.0 2 0.000 0.0 3 -torsion 13 13 102 103 0.000 0.0 1 0.400 180.0 2 0.000 0.0 3 -torsion 46 13 102 103 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 13 13 104 13 1.000 0.0 1 -0.500 180.0 2 0.500 0.0 3 -torsion 46 13 104 13 0.000 0.0 1 0.000 180.0 2 0.300 0.0 3 -torsion 0 13 105 0 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 13 13 105 0 1.000 0.0 1 -0.350 180.0 2 0.000 0.0 3 -torsion 13 13 105 62 -1.000 0.0 1 -0.350 180.0 2 0.000 0.0 3 -torsion 13 13 105 82 -1.000 0.0 1 -0.350 180.0 2 0.000 0.0 3 -torsion 20 13 105 0 1.500 0.0 1 -1.500 180.0 2 0.000 0.0 3 -torsion 20 13 105 62 3.132 0.0 1 -1.491 180.0 2 2.744 0.0 3 -#torsion 29 13 95 52 -1.500 0.0 1 -1.500 180.0 2 0.000 0.0 3 -torsion 20 13 105 82 -1.500 0.0 1 -1.500 180.0 2 0.000 0.0 3 -torsion 3 13 107 13 -1.737 0.0 1 1.251 180.0 2 -3.501 0.0 3 -torsion 13 13 107 3 -1.396 0.0 1 -0.427 180.0 2 0.000 0.0 3 -torsion 13 13 107 13 4.753 0.0 1 -0.734 180.0 2 0.000 0.0 3 -#torsion 13 13 97 13 2.859 0.0 1 2.058 180.0 2 -11.266 0.0 3 -torsion 46 13 107 3 0.000 0.0 1 0.000 180.0 2 -0.139 0.0 3 -torsion 46 13 107 13 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 46 13 107 48 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 13 13 108 13 1.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 13 13 108 45 0.000 0.0 1 0.000 180.0 2 0.260 0.0 3 -torsion 46 13 108 13 0.000 0.0 1 0.000 180.0 2 0.180 0.0 3 -torsion 46 13 108 20 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 46 13 108 45 0.000 0.0 1 0.000 180.0 2 0.180 0.0 3 -torsion 13 13 109 109 0.346 0.0 1 0.405 180.0 2 -0.904 0.0 3 -torsion 46 13 109 13 0.000 0.0 1 0.000 180.0 2 0.300 0.0 3 -torsion 46 13 109 46 0.000 0.0 1 0.000 180.0 2 0.318 0.0 3 -torsion 46 13 109 109 0.000 0.0 1 0.000 180.0 2 -0.372 0.0 3 -torsion 17 15 48 0 0.000 0.0 1 1.100 180.0 2 0.000 0.0 3 -#torsion 17 15 38 0 -3.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 17 15 48 48 0.000 0.0 1 1.100 180.0 2 0.000 0.0 3 -torsion 13 16 16 13 0.000 0.0 1 -7.414 180.0 2 1.705 0.0 3 -torsion 13 16 48 48 0.000 0.0 1 0.600 180.0 2 0.000 0.0 3 -torsion 13 16 48 56 1.600 0.0 1 5.100 180.0 2 0.000 0.0 3 -torsion 13 16 59 56 0.000 0.0 1 4.800 180.0 2 0.000 0.0 3 -torsion 84 16 82 0 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 84 16 82 61 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 82 16 84 49 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 82 16 84 83 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 82 16 84 88 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 0 16 91 0 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 19 18 48 0 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 19 18 48 48 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 18 18 56 13 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 18 18 56 46 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 0 19 19 0 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 13 19 19 13 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 13 19 19 46 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 13 19 19 47 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 13 19 19 109 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 46 19 19 47 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 46 19 19 109 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 19 19 47 13 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 19 19 47 46 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 19 19 47 47 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 13 20 44 13 0.000 0.0 1 0.000 180.0 2 0.300 0.0 3 -torsion 13 20 44 45 0.000 0.0 1 0.000 180.0 2 0.300 0.0 3 -torsion 13 20 47 13 0.650 0.0 1 -0.250 180.0 2 0.670 0.0 3 -torsion 13 20 47 46 0.000 0.0 1 0.000 180.0 2 0.760 0.0 3 -torsion 13 20 47 47 -3.500 0.0 1 3.000 180.0 2 0.000 0.0 3 -torsion 13 20 47 50 -3.500 0.0 1 3.000 180.0 2 0.000 0.0 3 -torsion 3 20 48 48 0.000 0.0 1 2.500 180.0 2 0.000 0.0 3 -torsion 13 20 48 48 0.000 0.0 1 3.000 180.0 2 0.000 0.0 3 -torsion 13 20 48 56 0.400 0.0 1 5.500 180.0 2 0.000 0.0 3 -torsion 64 20 48 48 0.000 0.0 1 2.990 180.0 2 0.000 0.0 3 -torsion 13 20 51 5 -0.375 0.0 1 -1.358 180.0 2 0.004 0.0 3 -torsion 13 20 51 13 0.650 0.0 1 -0.250 180.0 2 0.670 0.0 3 -torsion 13 20 51 20 -0.375 0.0 1 -1.358 180.0 2 0.004 0.0 3 -torsion 13 20 51 46 0.000 0.0 1 0.000 180.0 2 0.760 0.0 3 -torsion 13 20 56 3 3.000 0.0 1 3.000 180.0 2 0.000 0.0 3 -torsion 13 20 59 56 0.000 0.0 1 5.200 180.0 2 0.000 0.0 3 -torsion 0 20 64 52 0.000 0.0 1 0.000 180.0 2 0.562 0.0 3 -torsion 13 20 64 13 3.500 0.0 1 -3.300 180.0 2 1.500 0.0 3 -torsion 13 20 64 52 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -#torsion 13 29 54 42 0.900 0.0 1 -2.930 180.0 2 2.640 0.0 3 -torsion 48 20 64 4 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 84 20 82 61 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 82 20 84 88 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 84 20 84 49 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 84 20 84 87 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 108 20 108 13 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 108 20 108 20 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 13 44 44 13 0.000 0.0 1 0.000 180.0 2 0.300 0.0 3 -torsion 13 44 44 45 0.000 0.0 1 0.000 180.0 2 0.300 0.0 3 -torsion 45 44 44 45 0.000 0.0 1 0.000 180.0 2 0.300 0.0 3 -torsion 13 44 48 48 -7.582 0.0 1 3.431 180.0 2 3.198 0.0 3 -torsion 45 44 48 48 0.000 0.0 1 2.030 180.0 2 0.000 0.0 3 -torsion 59 44 48 48 0.000 0.0 1 2.100 180.0 2 0.000 0.0 3 -torsion 82 44 48 48 0.000 0.0 1 2.100 180.0 2 0.000 0.0 3 -torsion 84 44 48 48 0.000 0.0 1 2.100 180.0 2 0.000 0.0 3 -torsion 45 44 82 16 0.000 0.0 1 2.100 180.0 2 0.000 0.0 3 -torsion 45 44 82 61 0.000 0.0 1 2.100 180.0 2 0.000 0.0 3 -torsion 48 44 82 16 0.000 0.0 1 2.100 180.0 2 0.000 0.0 3 -torsion 48 44 82 61 0.000 0.0 1 2.100 180.0 2 0.000 0.0 3 -torsion 0 24 48 48 0.000 0.0 1 2.100 180.0 2 0.000 0.0 3 -torsion 3 24 48 48 0.000 0.0 1 2.100 180.0 2 0.000 0.0 3 -torsion 13 24 48 48 0.000 0.0 1 2.100 180.0 2 0.000 0.0 3 -torsion 45 24 48 48 0.000 0.0 1 2.100 180.0 2 0.000 0.0 3 -torsion 59 24 48 48 0.000 0.0 1 2.100 180.0 2 0.000 0.0 3 -torsion 82 24 48 48 0.000 0.0 1 2.100 180.0 2 0.000 0.0 3 -torsion 84 24 48 48 0.000 0.0 1 2.100 180.0 2 0.000 0.0 3 -torsion 0 24 59 0 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 0 24 59 49 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 45 24 59 0 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 0 24 60 0 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 0 24 79 23 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 13 24 79 48 2.074 0.0 1 -2.966 180.0 2 2.473 0.0 3 -torsion 45 24 79 48 1.671 0.0 1 -4.901 180.0 2 0.669 0.0 3 -torsion 13 24 82 61 0.000 0.0 1 2.100 180.0 2 0.000 0.0 3 -torsion 45 24 82 16 0.000 0.0 1 2.100 180.0 2 0.000 0.0 3 -#torsion 34 35 72 16 0.000 0.0 1 2.030 180.0 2 0.000 0.0 3 -torsion 45 24 82 20 0.000 0.0 1 2.100 180.0 2 0.000 0.0 3 -#torsion 34 35 72 29 0.000 0.0 1 2.030 180.0 2 0.000 0.0 3 -torsion 45 24 82 61 0.000 0.0 1 2.100 180.0 2 0.000 0.0 3 -torsion 48 24 82 16 0.000 0.0 1 2.100 180.0 2 0.000 0.0 3 -torsion 48 24 82 20 0.000 0.0 1 2.100 180.0 2 0.000 0.0 3 -torsion 48 24 82 61 0.000 0.0 1 2.100 180.0 2 0.000 0.0 3 -torsion 0 24 84 0 0.000 0.0 1 2.170 180.0 2 0.000 0.0 3 -torsion 3 24 84 84 0.000 0.0 1 3.000 180.0 2 0.000 0.0 3 -torsion 45 24 84 16 0.000 0.0 1 2.100 180.0 2 0.000 0.0 3 -torsion 45 24 84 20 0.000 0.0 1 2.100 180.0 2 0.000 0.0 3 -torsion 48 24 84 16 0.000 0.0 1 2.100 180.0 2 0.000 0.0 3 -torsion 48 24 84 20 0.000 0.0 1 2.100 180.0 2 0.000 0.0 3 -torsion 3 24 86 48 0.000 0.0 1 2.170 180.0 2 0.000 0.0 3 -torsion 3 24 86 56 0.000 0.0 1 2.170 180.0 2 0.000 0.0 3 -torsion 3 24 86 86 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 47 24 86 48 0.000 0.0 1 2.170 180.0 2 0.000 0.0 3 -torsion 47 24 86 56 0.000 0.0 1 2.170 180.0 2 0.000 0.0 3 -torsion 0 24 87 0 0.000 0.0 1 2.170 180.0 2 0.000 0.0 3 -torsion 0 24 88 0 0.000 0.0 1 2.170 180.0 2 0.000 0.0 3 -torsion 3 24 91 46 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 3 24 91 89 -1.396 0.0 1 -0.427 180.0 2 0.000 0.0 3 -torsion 3 24 91 91 -1.396 0.0 1 -0.427 180.0 2 0.000 0.0 3 -torsion 45 24 91 46 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 45 24 91 89 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 45 24 91 91 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 0 24 106 0 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 47 46 47 13 0.000 0.0 1 -8.000 180.0 2 0.000 0.0 3 -torsion 47 46 47 46 0.000 0.0 1 -8.000 180.0 2 0.000 0.0 3 -torsion 0 47 47 0 0.000 0.0 1 14.000 180.0 2 0.000 0.0 3 -torsion 0 47 47 19 0.000 0.0 1 14.000 180.0 2 0.000 0.0 3 -torsion 3 47 47 24 0.000 0.0 1 14.000 180.0 2 0.000 0.0 3 -torsion 3 47 47 46 0.000 0.0 1 14.000 180.0 2 0.000 0.0 3 -torsion 5 47 47 13 0.000 0.0 1 14.000 180.0 2 0.000 0.0 3 -torsion 5 47 47 46 0.000 0.0 1 14.000 180.0 2 0.000 0.0 3 -torsion 13 47 47 13 0.000 0.0 1 14.000 180.0 2 0.000 0.0 3 -torsion 13 47 47 19 0.000 0.0 1 14.000 180.0 2 0.000 0.0 3 -torsion 13 47 47 20 0.000 0.0 1 14.000 180.0 2 0.000 0.0 3 -torsion 13 47 47 46 0.000 0.0 1 14.000 180.0 2 0.000 0.0 3 -torsion 19 47 47 46 0.000 0.0 1 14.000 180.0 2 0.000 0.0 3 -torsion 20 47 47 46 0.000 0.0 1 14.000 180.0 2 0.000 0.0 3 -torsion 21 47 47 21 -1.600 0.0 1 14.000 180.0 2 0.000 0.0 3 -torsion 21 47 47 46 0.000 0.0 1 14.000 180.0 2 0.000 0.0 3 -torsion 46 47 47 46 0.000 0.0 1 14.000 180.0 2 0.000 0.0 3 -torsion 46 47 47 48 0.000 0.0 1 14.000 180.0 2 0.000 0.0 3 -torsion 13 47 48 48 0.205 0.0 1 -0.531 180.0 2 0.000 0.0 3 -torsion 46 47 48 48 0.000 0.0 1 0.000 180.0 2 -0.372 0.0 3 -torsion 46 47 48 56 0.000 0.0 1 0.000 180.0 2 -0.372 0.0 3 -torsion 47 47 48 48 1.241 0.0 1 3.353 180.0 2 -0.286 0.0 3 -torsion 13 47 50 13 0.000 0.0 1 14.000 180.0 2 0.000 0.0 3 -torsion 13 47 50 46 0.000 0.0 1 14.000 180.0 2 0.000 0.0 3 -torsion 13 47 50 48 0.000 0.0 1 14.000 180.0 2 0.000 0.0 3 -torsion 13 47 50 50 0.000 0.0 1 14.000 180.0 2 0.000 0.0 3 -torsion 13 47 50 109 0.000 0.0 1 14.000 180.0 2 0.000 0.0 3 -torsion 24 47 50 3 0.000 0.0 1 14.000 180.0 2 0.000 0.0 3 -torsion 46 47 50 13 0.000 0.0 1 14.000 180.0 2 0.000 0.0 3 -torsion 46 47 50 46 0.000 0.0 1 14.000 180.0 2 0.000 0.0 3 -torsion 46 47 50 48 0.000 0.0 1 14.000 180.0 2 0.000 0.0 3 -torsion 46 47 50 50 0.000 0.0 1 14.000 180.0 2 0.000 0.0 3 -torsion 46 47 50 109 0.000 0.0 1 14.000 180.0 2 0.000 0.0 3 -torsion 0 47 84 0 0.000 0.0 1 2.170 180.0 2 0.000 0.0 3 -torsion 0 47 86 48 0.000 0.0 1 2.170 180.0 2 0.000 0.0 3 -torsion 3 47 86 86 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 49 47 86 0 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 49 47 86 24 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 0 47 87 0 0.000 0.0 1 2.170 180.0 2 0.000 0.0 3 -torsion 0 47 88 0 0.000 0.0 1 2.170 180.0 2 0.000 0.0 3 -torsion 13 47 110 47 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 46 47 110 47 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 0 48 48 0 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 0 48 48 13 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 0 48 48 48 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 0 48 48 49 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 1 48 48 48 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 1 48 48 49 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 13 48 48 13 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 13 48 48 48 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 13 48 48 49 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 13 48 48 50 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 21 48 48 48 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 21 48 48 49 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 44 48 48 49 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 47 48 48 49 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 48 48 48 48 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 48 48 48 49 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 48 48 48 50 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 48 48 48 55 0.0 0. 1 1.62 180. 2 0.0 0. 3 -0.44 180. 4 -torsion 48 48 48 60 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 48 48 48 65 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 48 48 48 66 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 48 48 48 86 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 48 48 48 109 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 49 48 48 49 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 49 48 48 50 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 49 48 48 60 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 49 48 48 65 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 49 48 48 66 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 49 48 48 86 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 49 48 48 109 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 56 48 48 86 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 48 48 50 46 0.000 0.0 1 0.000 180.0 2 -0.372 0.0 3 -torsion 48 48 50 47 1.241 0.0 1 3.353 180.0 2 -0.286 0.0 3 -torsion 56 48 50 46 0.000 0.0 1 0.000 180.0 2 -0.372 0.0 3 -torsion 56 48 50 47 1.241 0.0 1 3.353 180.0 2 -0.286 0.0 3 -torsion 48 48 53 13 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 48 48 53 54 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 0 48 55 45 0.000 0.0 1 2.030 180.0 2 0.000 0.0 3 -torsion 48 48 55 45 0.000 0.0 1 3.900 180.0 2 0.000 0.0 3 -torsion 55 48 55 13 0.000 0.0 1 7.936 180.0 2 0.000 0.0 3 -torsion 55 48 55 45 0.000 0.0 1 3.900 180.0 2 0.000 0.0 3 -torsion 60 48 55 45 0.000 0.0 1 2.030 180.0 2 0.000 0.0 3 -torsion 0 48 56 0 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 48 48 56 48 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 49 48 56 48 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 0 48 60 0 0.000 0.0 1 7.000 180.0 2 0.000 0.0 3 -torsion 0 48 79 23 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 48 48 79 13 0.000 0.0 1 -0.900 180.0 2 0.000 0.0 3 -torsion 48 48 79 24 1.656 0.0 1 -0.768 180.0 2 -0.117 0.0 3 -torsion 48 48 86 48 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 48 48 86 56 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 48 48 86 86 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 49 48 86 48 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 49 48 86 56 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 49 48 86 86 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 56 48 86 48 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 56 48 86 86 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 49 48 88 49 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 56 48 101 13 0.000 0.0 1 3.651 180.0 2 0.000 0.0 3 -torsion 48 48 102 103 0.000 0.0 1 1.150 180.0 2 0.000 0.0 3 -torsion 48 48 109 13 0.205 0.0 1 -0.531 180.0 2 0.000 0.0 3 -torsion 48 48 109 46 0.000 0.0 1 0.000 180.0 2 -0.372 0.0 3 -torsion 48 48 109 109 1.241 0.0 1 3.353 180.0 2 -0.286 0.0 3 -torsion 0 50 50 49 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 3 50 50 3 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 13 50 50 13 0.000 0.0 1 0.000 180.0 2 0.300 0.0 3 -torsion 13 50 50 46 0.000 0.0 1 0.000 180.0 2 0.300 0.0 3 -torsion 13 50 50 47 0.000 0.0 1 0.000 180.0 2 -0.372 0.0 3 -#torsion 13 40 40 37 0.900 0.0 1 0.230 180.0 2 -0.505 0.0 3 -torsion 46 50 50 46 0.000 0.0 1 0.000 180.0 2 0.300 0.0 3 -torsion 46 50 50 47 0.000 0.0 1 0.000 180.0 2 -0.372 0.0 3 -torsion 47 50 50 47 1.423 0.0 1 4.055 180.0 2 0.858 0.0 3 -torsion 13 50 109 13 0.000 0.0 1 0.000 180.0 2 0.300 0.0 3 -torsion 13 50 109 109 0.000 0.0 1 0.000 180.0 2 -0.372 0.0 3 -torsion 46 50 109 13 0.000 0.0 1 0.000 180.0 2 0.300 0.0 3 -torsion 46 50 109 46 0.000 0.0 1 0.000 180.0 2 0.300 0.0 3 -torsion 46 50 109 109 0.000 0.0 1 0.000 180.0 2 -0.372 0.0 3 -torsion 47 50 109 13 0.000 0.0 1 0.000 180.0 2 -0.372 0.0 3 -torsion 47 50 109 46 0.000 0.0 1 0.000 180.0 2 -0.372 0.0 3 -torsion 47 50 109 109 1.423 0.0 1 4.055 180.0 2 0.858 0.0 3 -torsion 13 53 82 61 0.000 0.0 1 2.100 180.0 2 0.000 0.0 3 -torsion 48 53 82 61 0.000 0.0 1 2.100 180.0 2 0.000 0.0 3 -torsion 45 55 59 0 0.000 0.0 1 2.030 180.0 2 0.000 0.0 3 -torsion 13 56 56 13 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 13 56 56 48 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 48 56 56 48 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 0 56 59 0 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 0 56 59 49 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 0 56 60 0 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 0 56 62 0 0.000 0.0 1 10.000 180.0 2 0.000 0.0 3 -torsion 0 56 82 0 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -#torsion 0 46 72 0 0.000 0.0 1 10.000 180.0 2 0.000 0.0 3 -torsion 48 56 86 48 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 48 56 86 86 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 0 57 60 0 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 45 57 60 0 0.000 0.0 1 5.000 180.0 2 0.000 0.0 3 -torsion 0 57 61 0 0.000 0.0 1 10.000 180.0 2 0.000 0.0 3 -torsion 0 57 62 0 0.000 0.0 1 10.000 180.0 2 0.000 0.0 3 -torsion 0 57 81 0 0.000 0.0 1 3.050 180.0 2 0.000 0.0 3 -torsion 0 57 82 0 0.000 0.0 1 4.650 180.0 2 0.000 0.0 3 -#torsion 0 47 72 0 0.000 0.0 1 10.000 180.0 2 0.000 0.0 3 -torsion 0 57 82 49 0.000 0.0 1 10.000 180.0 2 0.000 0.0 3 -torsion 45 57 82 0 0.000 0.0 1 5.000 180.0 2 0.000 0.0 3 -torsion 0 57 84 0 0.000 0.0 1 2.800 180.0 2 0.000 0.0 3 -#torsion 0 47 74 0 0.000 0.0 1 5.000 180.0 2 0.000 0.0 3 -#torsion 0 47 74 0 0.000 0.0 1 3.000 180.0 2 0.000 0.0 3 -torsion 45 57 84 0 0.000 0.0 1 5.000 180.0 2 0.000 0.0 3 -torsion 61 57 86 48 0.000 0.0 1 2.170 180.0 2 0.000 0.0 3 -torsion 84 57 86 48 0.000 0.0 1 2.170 180.0 2 0.000 0.0 3 -torsion 0 60 60 0 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 0 60 61 0 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 0 60 80 0 0.000 0.0 1 3.350 180.0 2 0.000 0.0 3 -torsion 0 60 81 0 0.000 0.0 1 6.000 180.0 2 0.000 0.0 3 -torsion 0 60 87 0 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 48 60 87 84 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 60 60 87 84 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 0 61 61 0 0.000 0.0 1 10.000 180.0 2 0.000 0.0 3 -torsion 0 61 62 0 0.000 0.0 1 10.000 180.0 2 0.000 0.0 3 -torsion 0 61 82 0 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -#torsion 0 51 72 0 0.000 0.0 1 10.000 180.0 2 0.000 0.0 3 -torsion 0 61 82 49 0.000 0.0 1 10.000 180.0 2 0.000 0.0 3 -torsion 83 61 82 16 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 88 61 82 16 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 88 61 82 20 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 0 61 83 0 0.000 0.0 1 4.800 180.0 2 0.000 0.0 3 -torsion 82 61 83 49 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 82 61 83 84 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 0 61 84 0 0.000 0.0 1 10.000 180.0 2 0.000 0.0 3 -torsion 0 61 88 0 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 82 61 88 84 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 0 80 84 0 0.000 0.0 1 13.050 180.0 2 0.000 0.0 3 -torsion 0 82 84 0 0.000 0.0 1 2.170 180.0 2 0.000 0.0 3 -torsion 16 82 86 48 0.000 0.0 1 2.170 180.0 2 0.000 0.0 3 -torsion 20 82 86 48 0.000 0.0 1 2.170 180.0 2 0.000 0.0 3 -torsion 57 82 86 48 0.000 0.0 1 2.170 180.0 2 0.000 0.0 3 -torsion 61 82 86 48 0.000 0.0 1 2.170 180.0 2 0.000 0.0 3 -torsion 0 82 87 0 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -#torsion 0 72 77 0 0.000 0.0 1 2.170 180.0 2 0.000 0.0 3 -torsion 0 83 84 0 0.000 0.0 1 10.750 180.0 2 0.000 0.0 3 -torsion 0 83 84 49 0.000 0.0 1 10.750 180.0 2 0.000 0.0 3 -torsion 49 83 84 0 0.000 0.0 1 10.750 180.0 2 0.000 0.0 3 -torsion 49 83 84 16 0.000 0.0 1 10.750 180.0 2 0.000 0.0 3 -torsion 49 83 84 49 0.000 0.0 1 10.750 180.0 2 0.000 0.0 3 -torsion 61 83 84 16 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 61 83 84 20 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 61 83 84 49 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 0 83 86 48 0.000 0.0 1 2.170 180.0 2 0.000 0.0 3 -torsion 61 83 86 48 0.000 0.0 1 2.170 180.0 2 0.000 0.0 3 -torsion 61 83 87 0 0.000 0.0 1 2.170 180.0 2 0.000 0.0 3 -torsion 84 83 87 0 0.000 0.0 1 2.170 180.0 2 0.000 0.0 3 -torsion 0 84 84 0 0.000 0.0 1 10.750 180.0 2 0.000 0.0 3 -torsion 0 84 84 49 0.000 0.0 1 10.750 180.0 2 0.000 0.0 3 -torsion 16 84 84 49 0.000 0.0 1 10.750 180.0 2 0.000 0.0 3 -torsion 49 84 84 49 0.000 0.0 1 10.750 180.0 2 0.000 0.0 3 -torsion 0 84 86 48 0.000 0.0 1 2.170 180.0 2 0.000 0.0 3 -torsion 16 84 86 48 0.000 0.0 1 2.170 180.0 2 0.000 0.0 3 -torsion 20 84 86 48 0.000 0.0 1 2.170 180.0 2 0.000 0.0 3 -torsion 57 84 86 48 0.000 0.0 1 2.170 180.0 2 0.000 0.0 3 -torsion 0 84 87 0 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 0 84 87 49 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 49 84 87 49 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 0 84 88 49 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 16 84 88 49 0.000 0.0 1 10.750 180.0 2 0.000 0.0 3 -torsion 16 84 88 61 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 20 84 88 61 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 49 84 88 0 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 49 84 88 61 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 48 86 86 48 0.000 0.0 1 2.170 180.0 2 0.000 0.0 3 -torsion 48 86 86 56 0.000 0.0 1 2.170 180.0 2 0.000 0.0 3 -torsion 48 86 87 0 0.000 0.0 1 2.170 180.0 2 0.000 0.0 3 -torsion 48 86 88 0 0.000 0.0 1 2.170 180.0 2 0.000 0.0 3 -torsion 48 86 88 61 0.000 0.0 1 2.170 180.0 2 0.000 0.0 3 -torsion 56 86 88 0 0.000 0.0 1 2.170 180.0 2 0.000 0.0 3 -torsion 0 87 87 20 0.000 0.0 1 2.170 180.0 2 0.000 0.0 3 -torsion 0 87 87 57 0.000 0.0 1 2.170 180.0 2 0.000 0.0 3 -torsion 0 87 87 87 0.000 0.0 1 2.170 180.0 2 0.000 0.0 3 -torsion 49 87 87 49 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 4 89 90 13 0.000 0.0 1 6.089 180.0 2 0.000 0.0 3 -torsion 4 89 90 45 0.000 0.0 1 4.900 180.0 2 0.000 0.0 3 -torsion 4 89 90 48 0.000 0.0 1 6.089 180.0 2 0.000 0.0 3 -torsion 4 89 90 91 0.000 0.0 1 20.000 180.0 2 0.000 0.0 3 -torsion 91 89 90 13 2.300 0.0 1 6.089 180.0 2 0.000 0.0 3 -torsion 91 89 90 45 0.000 0.0 1 4.900 180.0 2 0.000 0.0 3 -torsion 91 89 90 48 2.300 0.0 1 6.089 180.0 2 0.000 0.0 3 -torsion 91 89 90 91 2.300 0.0 1 6.089 180.0 2 0.000 0.0 3 -torsion 0 89 91 0 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 4 89 91 46 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 4 89 91 91 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 90 89 91 46 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 90 89 91 91 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 0 90 91 0 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 0 90 91 46 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 0 90 91 91 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 0 91 91 0 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 0 91 91 24 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 13 91 91 13 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 13 91 91 46 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 46 91 91 46 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 46 91 91 91 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 91 91 91 91 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 0 109 109 0 0.000 0.0 1 14.000 180.0 2 0.000 0.0 3 -torsion 13 109 109 13 0.000 0.0 1 14.000 180.0 2 0.000 0.0 3 -torsion 13 109 109 46 0.000 0.0 1 14.000 180.0 2 0.000 0.0 3 -torsion 13 109 109 48 0.000 0.0 1 14.000 180.0 2 0.000 0.0 3 -torsion 13 109 109 50 0.000 0.0 1 14.000 180.0 2 0.000 0.0 3 -torsion 13 109 109 109 0.000 0.0 1 14.000 180.0 2 0.000 0.0 3 -torsion 46 109 109 46 0.000 0.0 1 14.000 180.0 2 0.000 0.0 3 -torsion 46 109 109 48 0.000 0.0 1 14.000 180.0 2 0.000 0.0 3 -torsion 46 109 109 50 0.000 0.0 1 14.000 180.0 2 0.000 0.0 3 -torsion 46 109 109 109 0.000 0.0 1 14.000 180.0 2 0.000 0.0 3 -torsion 48 109 109 48 0.000 0.0 1 14.000 180.0 2 0.000 0.0 3 -torsion 48 109 109 50 0.000 0.0 1 14.000 180.0 2 0.000 0.0 3 -torsion 48 109 109 109 0.000 0.0 1 14.000 180.0 2 0.000 0.0 3 -torsion 50 109 109 50 0.000 0.0 1 14.000 180.0 2 0.000 0.0 3 -torsion 50 109 109 109 0.000 0.0 1 14.000 180.0 2 0.000 0.0 3 -torsion 109 109 109 109 1.423 0.0 1 4.055 180.0 2 0.858 0.0 3 - - - ################################################################ - ## ## - ## Additional Torsional Parameter Values Used with OPLS-AA ## - ## ## - ## The torsions listed below were added to official OPLS-AA ## - ## to complete the set needed for proteins; the values were ## - ## obtained by analogy from the closest OPLS-AA torsions; ## - ## most of the added values are for HIP or N-terminal AAs; ## - ## ## - ################################################################ - - -torsion 24 3 13 53 1.816 0.0 1 1.222 180.0 2 1.581 0.0 3 -torsion 52 3 13 24 0.000 0.0 1 0.820 180.0 2 0.000 0.0 3 -torsion 3 13 13 53 1.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 3 13 13 83 -1.697 0.0 1 -0.456 180.0 2 0.585 0.0 3 -torsion 3 13 13 84 -1.697 0.0 1 -0.456 180.0 2 0.585 0.0 3 -torsion 3 13 13 85 -1.697 0.0 1 -0.456 180.0 2 0.585 0.0 3 -torsion 5 13 13 53 6.280 0.0 1 -1.467 180.0 2 2.030 0.0 3 -torsion 15 13 13 53 1.428 0.0 1 0.086 180.0 2 0.029 0.0 3 -torsion 16 13 13 53 1.428 0.0 1 0.086 180.0 2 0.029 0.0 3 -torsion 13 13 13 55 2.732 0.0 1 -0.229 180.0 2 0.485 0.0 3 -torsion 24 13 13 83 0.845 0.0 1 -0.962 180.0 2 0.713 0.0 3 -torsion 53 13 13 83 1.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 24 13 13 84 0.845 0.0 1 -0.962 180.0 2 0.713 0.0 3 -torsion 53 13 13 84 1.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 24 13 13 85 0.845 0.0 1 -0.962 180.0 2 0.713 0.0 3 -torsion 46 13 13 85 0.000 0.0 1 0.000 180.0 2 0.462 0.0 3 -torsion 53 13 13 85 1.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 3 13 53 13 1.438 0.0 1 -0.124 180.0 2 0.264 0.0 3 -torsion 3 13 53 54 0.000 0.0 1 0.000 180.0 2 0.347 0.0 3 -torsion 13 13 53 54 0.000 0.0 1 0.000 180.0 2 0.347 0.0 3 -torsion 46 13 55 54 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 13 13 85 0 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 13 13 85 57 1.700 0.0 1 -0.600 180.0 2 0.000 0.0 3 -torsion 46 13 85 0 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 55 48 55 54 0.000 0.0 1 3.900 180.0 2 0.000 0.0 3 -torsion 0 48 81 0 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 0 57 85 0 0.000 0.0 1 5.000 180.0 2 0.000 0.0 3 -torsion 0 85 85 0 0.000 0.0 1 10.750 180.0 2 0.000 0.0 3 - - - ################################################################ - ## ## - ## Additional Torsional Parameter Values Used with OPLS-AA ## - ## ## - ## The torsions listed below were added to official OPLS-AA ## - ## to complete the values needed for selected organics ## - ## ## - ################################################################ - - -torsion 13 13 13 20 1.300 0.0 1 -0.050 180.0 2 0.200 0.0 3 -torsion 13 13 13 47 1.300 0.0 1 -0.050 180.0 2 0.200 0.0 3 - - - ######################################## - ## ## - ## Atomic Partial Charge Parameters ## - ## ## - ######################################## - - -charge 1 -0.2200 -charge 2 0.2200 -charge 3 0.5500 -charge 4 -0.5000 -charge 5 -0.5800 -charge 6 0.0800 -charge 7 0.4500 -charge 8 0.0000 -charge 9 0.0000 -charge 10 0.0000 -charge 11 0.0000 -charge 12 0.0000 -charge 13 0.0000 -charge 14 0.0000 -charge 15 0.0000 -charge 16 0.0000 -charge 17 0.0000 -charge 18 0.0000 -charge 19 0.0000 -charge 20 -0.7000 -charge 21 0.4350 -charge 22 0.2650 -charge 23 0.2650 -charge 24 -0.4700 -charge 25 -0.4500 -charge 26 -0.4700 -charge 27 -0.3000 -charge 28 0.2350 -charge 29 0.2700 -charge 30 0.1800 -charge 31 0.1800 -charge 32 0.2350 -charge 33 0.2350 -charge 34 0.3000 -charge 35 0.3000 -charge 36 -0.4300 -charge 37 0.2800 -charge 38 0.1500 -charge 39 0.2650 -charge 40 0.2650 -charge 41 -0.5000 -charge 42 0.2500 -charge 43 0.2500 -charge 44 0.5000 -charge 45 -0.2500 -charge 46 0.4200 -charge 47 -0.1400 -charge 48 0.2480 -charge 49 -0.0620 -charge 50 0.1390 -charge 51 -0.4590 -charge 52 0.1600 -charge 53 -0.5000 -charge 54 -0.5700 -charge 55 0.5000 -charge 56 0.2850 -charge 57 0.0000 -charge 58 0.0000 -charge 59 0.0000 -charge 60 0.0000 -charge 61 0.0000 -charge 62 0.0000 -charge 63 -0.8340 -charge 64 0.4170 -charge 65 0.0000 -charge 66 0.5200 -charge 67 -1.0400 -charge 68 -0.8220 -charge 69 0.4110 -charge 70 0.0000 -charge 71 0.5110 -charge 72 -1.0220 -charge 73 0.0000 -charge 74 0.2410 -charge 75 -0.2410 -charge 76 -0.8200 -charge 77 0.4100 -charge 78 -1.0200 -charge 79 0.3400 -charge 80 -0.1800 -charge 81 -0.1200 -charge 82 -0.0600 -charge 83 -0.2400 -charge 84 0.0000 -charge 85 0.0600 -charge 86 0.0000 -charge 87 -0.1150 -charge 88 -0.2300 -charge 89 0.1150 -charge 90 -0.1150 -charge 91 0.1150 -charge 92 0.0000 -charge 93 -0.0650 -charge 94 -0.0050 -charge 95 -0.1150 -charge 96 -0.6830 -charge 97 0.4180 -charge 98 0.0400 -charge 99 0.1450 -charge 100 0.2050 -charge 101 0.2650 -charge 102 0.1263 -charge 103 0.5323 -charge 104 -0.6351 -charge 105 0.4286 -charge 106 -0.2057 -charge 107 0.0825 -charge 108 0.1500 -charge 109 -0.5850 -charge 110 0.4350 -charge 111 -0.7000 -charge 112 0.4350 -charge 113 -0.7300 -charge 114 0.4650 -charge 115 0.1450 -charge 116 0.2050 -charge 117 0.2650 -charge 118 0.0600 -charge 119 -0.1700 -charge 120 0.0000 -charge 121 -0.2850 -charge 122 -0.4000 -charge 123 0.1100 -charge 124 0.1400 -charge 125 0.1700 -charge 126 0.2000 -charge 127 0.0300 -charge 128 -0.4000 -charge 129 -0.7000 -charge 130 0.4350 -charge 131 0.2000 -charge 132 0.1000 -charge 133 0.2650 -charge 134 0.1000 -charge 135 0.3000 -charge 136 0.1000 -charge 137 0.3650 -charge 138 0.1000 -charge 139 0.4000 -charge 140 0.4650 -charge 141 0.0850 -charge 142 -0.3350 -charge 143 -0.4700 -charge 144 -0.4350 -charge 145 -0.2175 -charge 146 0.1550 -charge 147 0.2350 -charge 148 0.0600 -charge 149 0.1200 -charge 150 0.1800 -charge 151 0.0375 -charge 152 0.0975 -charge 153 0.1575 -charge 154 0.2175 -charge 155 0.0375 -charge 156 0.0975 -charge 157 0.1575 -charge 158 0.2175 -charge 159 0.0000 -charge 160 0.2000 -charge 161 0.2600 -charge 162 0.3200 -charge 163 -0.0550 -charge 164 -0.3200 -charge 165 0.0800 -charge 166 0.1400 -charge 167 0.2000 -charge 168 -0.1200 -charge 169 0.0050 -charge 170 0.1025 -charge 171 0.1400 -charge 172 0.2000 -charge 173 0.7000 -charge 174 0.5650 -charge 175 0.5850 -charge 176 0.6150 -charge 177 0.5000 -charge 178 -0.5000 -charge 179 -0.7600 -charge 180 -0.5000 -charge 181 -0.1400 -charge 182 0.3800 -charge 183 0.3000 -charge 184 0.0200 -charge 185 -0.1100 -charge 186 0.0800 -charge 187 -0.0500 -charge 188 0.0100 -charge 189 0.1420 -charge 190 -0.3900 -charge 191 -0.5420 -charge 192 0.3330 -charge 193 -0.4900 -charge 194 0.4200 -charge 195 -0.4200 -charge 196 0.3700 -charge 197 0.0600 -charge 198 -0.1200 -charge 199 -0.0600 -charge 200 0.0000 -charge 201 0.0600 -charge 202 0.0350 -charge 203 0.3950 -charge 204 -0.4300 -charge 205 0.1800 -charge 206 -0.1800 -charge 207 -0.3850 -charge 208 0.0850 -charge 209 0.5200 -charge 210 -0.4400 -charge 211 -0.5300 -charge 212 0.4500 -charge 213 0.7000 -charge 214 -0.8000 -charge 215 -0.2800 -charge 216 -0.2200 -charge 217 -0.1600 -charge 218 -0.1000 -charge 219 0.4500 -charge 220 -0.4500 -charge 221 0.0000 -charge 222 0.4700 -charge 223 -0.4700 -charge 224 0.0600 -charge 225 0.0400 -charge 226 -0.0200 -charge 227 0.1000 -charge 228 -0.0900 -charge 229 -0.4000 -charge 230 -0.3000 -charge 231 0.0000 -charge 232 0.3500 -charge 233 0.3300 -charge 234 0.1300 -charge 235 0.1900 -charge 236 0.2500 -charge 237 0.3100 -charge 238 0.2300 -charge 239 0.1700 -charge 240 0.1100 -charge 241 0.0900 -charge 242 0.1500 -charge 243 -0.8000 -charge 244 0.4600 -charge 245 0.6400 -charge 246 -0.7000 -charge 247 0.4400 -charge 248 0.2000 -charge 249 -0.1100 -charge 250 0.1900 -charge 251 -0.0500 -charge 252 -0.2000 -charge 253 0.3100 -charge 254 -0.4600 -charge 255 0.3600 -charge 256 -0.8500 -charge 257 0.3700 -charge 258 -0.1500 -charge 259 0.1000 -charge 260 -0.0400 -charge 261 0.1000 -charge 262 -0.6000 -charge 263 0.5000 -charge 264 -0.5100 -charge 265 0.4500 -charge 266 -0.0700 -charge 267 0.0800 -charge 268 0.4100 -charge 269 -0.4000 -charge 270 0.3600 -charge 271 -0.4200 -charge 272 0.1000 -charge 273 0.1000 -charge 274 -0.1400 -charge 275 0.0800 -charge 276 -0.5600 -charge 277 0.5500 -charge 278 -0.5400 -charge 279 0.4600 -charge 280 -0.0600 -charge 281 0.1000 -charge 282 0.3800 -charge 283 -0.4800 -charge 284 -0.7900 -charge 285 0.3850 -charge 286 0.3550 -charge 287 0.1000 -charge 288 0.1000 -charge 289 -0.5300 -charge 290 0.2200 -charge 291 -0.5500 -charge 292 0.3800 -charge 293 0.1500 -charge 294 0.4400 -charge 295 -0.4900 -charge 296 0.2000 -charge 297 -0.5000 -charge 298 0.2000 -charge 299 -0.8100 -charge 300 0.3850 -charge 301 0.3550 -charge 302 0.2000 -charge 303 0.3500 -charge 304 -0.5600 -charge 305 0.4600 -charge 306 -0.5100 -charge 307 0.3400 -charge 308 0.1200 -charge 309 0.5200 -charge 310 0.3800 -charge 311 -0.8000 -charge 312 0.4000 -charge 313 -0.5100 -charge 314 -0.0100 -charge 315 0.1200 -charge 316 -0.0100 -charge 317 0.1400 -charge 318 -0.0100 -charge 319 0.1300 -charge 320 -0.6400 -charge 321 0.6500 -charge 322 -0.7400 -charge 323 0.6600 -charge 324 -0.0600 -charge 325 0.1000 -charge 326 0.4900 -charge 327 -0.3000 -charge 328 0.4800 -charge 329 -0.8100 -charge 330 0.4600 -charge 331 0.4300 -charge 332 0.1400 -charge 333 0.1400 -charge 334 0.0100 -charge 335 0.1600 -charge 336 0.7800 -charge 337 -0.6600 -charge 338 -0.4300 -charge 339 0.2000 -charge 340 0.1800 -charge 341 -0.0600 -charge 342 0.1200 -charge 343 -1.0000 -charge 344 -1.0000 -charge 345 -1.0000 -charge 346 -1.0000 -charge 347 1.0000 -charge 348 1.0000 -charge 349 1.0000 -charge 350 1.0000 -charge 351 1.0000 -charge 352 1.0000 -charge 353 2.0000 -charge 354 2.0000 -charge 355 2.0000 -charge 356 2.0000 -charge 357 -0.4000 -charge 358 0.1000 -charge 359 -0.9000 -charge 360 -0.2000 -charge 361 0.0600 -charge 362 -0.9800 -charge 363 -1.0700 -charge 364 0.1900 -charge 365 0.5100 -charge 366 -0.8200 -charge 367 -0.3000 -charge 368 0.0700 -charge 369 -1.3100 -charge 370 0.4000 -charge 371 -0.4000 -charge 372 0.0800 -charge 373 0.0000 -charge 374 0.0700 -charge 375 -0.9800 -charge 376 -1.3000 -charge 377 0.3000 -charge 378 2.5000 -charge 379 -0.2500 -charge 380 -0.8650 -charge 381 1.6200 -charge 382 -0.9200 -charge 383 -0.6000 -charge 384 0.3000 -charge 385 -0.0300 -charge 386 1.9200 -charge 387 -1.1200 -charge 388 -0.7000 -charge 389 0.4400 -charge 390 -0.1000 -charge 391 1.6200 -charge 392 -0.9700 -charge 393 -0.6300 -charge 394 0.2800 -charge 395 -0.0200 -charge 396 -0.5100 -charge 397 0.0800 -charge 398 -0.1400 -charge 399 0.3200 -charge 400 0.0200 -charge 401 -0.0400 -charge 402 -0.4700 -charge 403 0.1200 -charge 404 0.1400 -charge 405 0.2400 -charge 406 0.5100 -charge 407 -0.4300 -charge 408 -0.3300 -charge 409 0.1600 -charge 410 0.0300 -charge 411 0.6350 -charge 412 0.6250 -charge 413 0.1350 -charge 414 -0.2150 -charge 415 1.4800 -charge 416 -0.6800 -charge 417 -0.5400 -charge 418 0.1800 -charge 419 -1.0000 -charge 420 0.4400 -charge 421 -0.8000 -charge 422 0.4100 -charge 423 0.1800 -charge 424 0.0300 -charge 425 0.3900 -charge 426 -0.0600 -charge 427 -0.1800 -charge 428 0.0600 -charge 429 0.0000 -charge 430 0.0300 -charge 431 0.1900 -charge 432 0.2200 -charge 433 0.2500 -charge 434 1.3740 -charge 435 -0.6870 -charge 436 0.2450 -charge 437 0.1300 -charge 438 -0.4200 -charge 439 -0.0350 -charge 440 0.0250 -charge 441 0.0750 -charge 442 -0.0550 -charge 443 0.1300 -charge 444 -0.5700 -charge 445 0.4200 -charge 446 -0.0050 -charge 447 0.2950 -charge 448 -0.0150 -charge 449 0.0150 -charge 450 0.3850 -charge 451 0.2150 -charge 452 -0.4900 -charge 453 -0.5400 -charge 454 0.4600 -charge 455 -0.1150 -charge 456 0.0550 -charge 457 0.1150 -charge 458 -0.0300 -charge 459 0.0850 -charge 460 0.0000 -charge 461 -0.6780 -charge 462 0.4730 -charge 463 -0.4470 -charge 464 0.2270 -charge 465 0.0120 -charge 466 0.1550 -charge 467 0.0650 -charge 468 -0.4680 -charge 469 0.1920 -charge 470 0.0420 -charge 471 -0.8390 -charge 472 0.8740 -charge 473 0.6530 -charge 474 -0.6890 -charge 475 -0.0320 -charge 476 0.0110 -charge 477 0.1970 -charge 478 -0.3310 -charge 479 0.3780 -charge 480 -0.1600 -charge 481 -0.0090 -charge 482 0.1220 -charge 483 -0.2390 -charge 484 -0.1630 -charge 485 -0.1490 -charge 486 0.3170 -charge 487 0.1550 -charge 488 0.1180 -charge 489 -0.0590 -charge 490 -0.4910 -charge 491 0.2460 -charge 492 -0.3200 -charge 493 -0.0340 -charge 494 0.3010 -charge 495 0.0720 -charge 496 0.1500 -charge 497 0.1350 -charge 498 -0.2570 -charge 499 0.2750 -charge 500 -0.5630 -charge 501 0.1850 -charge 502 -0.2860 -charge 503 0.3060 -charge 504 0.0780 -charge 505 0.0750 -charge 506 0.1870 -charge 507 -0.1900 -charge 508 -0.0190 -charge 509 -0.1540 -charge 510 0.1420 -charge 511 0.1260 -charge 512 -0.2570 -charge 513 0.5110 -charge 514 -0.5900 -charge 515 0.1690 -charge 516 -0.1480 -charge 517 0.0430 -charge 518 0.0910 -charge 519 0.1810 -charge 520 -0.1220 -charge 521 -0.4130 -charge 522 0.4050 -charge 523 -0.4550 -charge 524 0.2500 -charge 525 0.0530 -charge 526 0.1840 -charge 527 0.0980 -charge 528 -0.5000 -charge 529 0.0010 -charge 530 -0.3900 -charge 531 -0.2700 -charge 532 -0.1270 -charge 533 -0.1080 -charge 534 -0.2580 -charge 535 0.2200 -charge 536 0.2250 -charge 537 0.3760 -charge 538 0.1470 -charge 539 0.1720 -charge 540 0.1550 -charge 541 0.1070 -charge 542 0.1100 -charge 543 0.1400 -charge 544 -0.6940 -charge 545 0.4250 -charge 546 -0.3590 -charge 547 -0.0080 -charge 548 -0.1970 -charge 549 -0.1120 -charge 550 -0.0700 -charge 551 -0.3070 -charge 552 0.5630 -charge 553 -0.0510 -charge 554 0.0280 -charge 555 0.1460 -charge 556 0.1190 -charge 557 0.1330 -charge 558 0.1130 -charge 559 0.1140 -charge 560 0.1570 -charge 561 -0.7600 -charge 562 0.6790 -charge 563 -0.7880 -charge 564 0.7360 -charge 565 0.0380 -charge 566 0.3430 -charge 567 -0.6420 -charge 568 0.4520 -charge 569 -0.6820 -charge 570 0.0240 -charge 571 0.1010 -charge 572 0.0860 -charge 573 0.4130 -charge 574 -0.0300 -charge 575 0.2420 -charge 576 -0.5150 -charge 577 0.2280 -charge 578 -0.2990 -charge 579 0.1010 -charge 580 0.0680 -charge 581 0.2050 -charge 582 -0.9510 -charge 583 0.9650 -charge 584 -0.0140 -charge 585 0.1300 -charge 586 0.0520 -charge 587 -0.5990 -charge 588 0.3920 -charge 589 -0.3480 -charge 590 0.0200 -charge 591 -0.0420 -charge 592 0.3470 -charge 593 -0.1960 -charge 594 0.0320 -charge 595 0.1460 -charge 596 0.1080 -charge 597 0.1400 -charge 598 0.1220 -charge 599 0.1660 -charge 600 -0.5800 -charge 601 0.1730 -charge 602 -0.3950 -charge 603 -0.1990 -charge 604 0.1180 -charge 605 0.0930 -charge 606 0.2080 -charge 607 0.0980 -charge 608 -0.1390 -charge 609 -0.0790 -charge 610 0.0990 -charge 611 -0.1680 -charge 612 -0.1080 -charge 613 -0.1890 -charge 614 -0.1290 -charge 615 -0.1690 -charge 616 -0.1090 -charge 617 -0.1380 -charge 618 -0.0780 -charge 619 -0.0250 -charge 620 0.0350 -charge 621 -0.0380 -charge 622 0.0220 -charge 623 -0.3340 -charge 624 0.2550 -charge 625 0.5230 -charge 626 0.5000 -charge 627 -0.1400 -charge 628 0.2275 -charge 629 0.1400 -charge 630 -0.0080 -charge 631 0.5880 -charge 632 -0.1030 -charge 633 -0.3320 -charge 634 0.0400 -charge 635 0.3420 -charge 636 -0.0500 -charge 637 -0.2050 -charge 638 3.0000 -charge 639 4.0000 -charge 640 3.0000 -charge 641 0.6190 -charge 642 -0.3950 -charge 643 0.1740 -charge 644 3.0000 -charge 645 3.0000 -charge 646 3.0000 -charge 647 3.0000 -charge 648 3.0000 -charge 649 -0.3440 -charge 650 -0.6280 -charge 651 0.2000 -charge 652 -0.1200 -charge 653 -0.0600 -charge 654 0.0000 -charge 655 -0.2300 -charge 656 0.0300 -charge 657 -0.0990 -charge 658 0.0990 -charge 659 0.2200 -charge 660 -0.2200 -charge 661 0.1300 -charge 662 -0.1300 -charge 663 -0.2200 -charge 664 0.2200 -charge 665 0.1500 -charge 666 0.4500 -charge 667 -0.2000 -charge 668 0.2000 -charge 669 -0.2000 -charge 670 0.2000 -charge 671 -0.2000 -charge 672 0.1000 -charge 673 -0.1000 -charge 674 0.0550 -charge 675 -0.2200 -charge 676 0.0650 -charge 677 0.0130 -charge 678 -0.1060 -charge 679 -0.0900 -charge 680 -0.1190 -charge 681 0.1410 -charge 682 0.1290 -charge 683 0.8270 -charge 684 -0.8850 -charge 685 0.4260 -charge 686 0.4650 -charge 687 0.1190 -charge 688 -0.0200 -charge 689 0.0400 -charge 690 -0.6200 -charge 691 -0.7850 -charge 692 -0.7850 -charge 693 0.5500 -charge 694 -0.5600 -charge 695 0.4600 -charge 696 -0.0800 -charge 697 -0.0200 -charge 698 0.0400 -charge 699 0.1000 -charge 700 0.0600 -charge 701 0.5400 -charge 702 -0.3700 -charge 703 0.0200 -charge 704 0.0600 -charge 705 0.0800 -charge 706 0.1400 -charge 707 0.2000 -charge 708 0.6500 -charge 709 0.0900 -charge 710 0.0350 -charge 711 -0.9000 -charge 712 -0.5000 -charge 713 0.8600 -charge 714 -0.4500 -charge 715 0.2100 -charge 716 0.1600 -charge 717 -0.1000 -charge 718 0.0300 -charge 719 0.0300 -charge 720 0.0600 -charge 721 -0.7800 -charge 722 0.9684 -charge 723 -0.5081 -charge 724 -0.0080 -charge 725 0.1720 -charge 726 1.3400 -charge 727 -0.3900 -charge 728 0.7940 -charge 729 -0.5980 -charge 730 -0.9000 -charge 731 -0.7800 -charge 732 -0.6300 -charge 733 0.0000 -charge 734 0.0200 -charge 735 0.0300 -charge 736 0.0600 -charge 737 0.0800 -charge 738 0.0900 -charge 739 0.3600 -charge 740 0.3800 -charge 741 0.0600 -charge 742 0.1200 -charge 743 0.1800 -charge 744 0.1400 -charge 745 0.1500 -charge 746 0.1800 -charge 747 0.2000 -charge 748 0.2100 -charge 749 0.1150 -charge 750 0.1750 -charge 751 0.2350 -charge 752 0.1950 -charge 753 0.1525 -charge 754 0.1350 -charge 755 -0.2100 -charge 756 0.2000 -charge 757 0.0100 -charge 758 0.0100 -charge 759 0.0100 -charge 760 0.0600 -charge 761 0.4500 -charge 762 0.4800 -charge 763 0.5100 -charge 764 -0.6550 -charge 765 0.3900 -charge 766 -0.5000 -charge 767 -0.5600 -charge 768 -0.6000 -charge 769 0.0000 -charge 770 -0.1000 -charge 771 0.2900 -charge 772 0.0900 -charge 773 0.1500 -charge 774 0.2100 -charge 775 0.2700 -charge 776 0.0960 -charge 777 -0.0390 -charge 778 0.0270 -charge 779 0.0110 -charge 780 0.0740 -charge 781 -0.0290 -charge 782 0.7000 -charge 783 -0.3520 -charge 784 -0.7090 -charge 785 0.3170 -charge 786 -0.2200 -charge 787 0.0200 -charge 788 0.1000 -charge 789 0.1200 -charge 790 0.2200 -charge 791 0.3600 -charge 792 0.2400 -charge 793 0.1200 -charge 794 0.4800 -charge 795 -0.1200 -charge 796 0.2500 -charge 797 0.1500 -charge 798 -0.0800 -charge 799 -0.1060 -charge 800 -0.2000 -charge 801 -0.0060 -charge 802 0.1030 -charge 803 0.0970 -charge 804 0.2000 -charge 805 -0.2000 -charge 806 -0.0060 -charge 807 0.1030 -charge 808 0.0970 -charge 809 0.2000 -charge 810 -0.0800 -charge 811 -0.0800 -charge 812 -0.0800 -charge 813 0.1000 -charge 814 -0.2500 -charge 815 0.6000 -charge 816 -0.1500 -charge 817 -0.0250 -charge 818 -0.0450 -charge 819 0.1450 -charge 820 0.8880 -charge 821 1.0030 -charge 822 -0.6580 -charge 823 -0.6340 -charge 824 0.4110 -charge 825 -0.4420 -charge 826 0.4350 -charge 827 0.2250 -charge 828 0.2550 -charge 829 -0.0340 -charge 830 0.0030 -charge 831 0.3000 -charge 832 -0.0400 -charge 833 -0.0575 -charge 834 2.0000 -charge 835 -0.0700 -charge 836 0.0300 -charge 837 0.1300 -charge 838 -0.1300 -charge 839 0.1000 -charge 840 -0.6850 -charge 841 0.1550 -charge 842 -0.1000 -charge 843 -0.4270 -charge 844 0.2180 -charge 845 0.6000 -charge 846 -0.6000 -charge 847 -0.3600 -charge 848 0.0000 -charge 849 0.0600 -charge 850 0.1200 -charge 851 0.1800 -charge 852 0.0600 -charge 853 0.5700 -charge 854 -0.5700 -charge 855 0.0000 -charge 856 0.0200 -charge 857 -0.0400 -charge 858 0.0000 -charge 859 0.0600 -charge 860 -0.0700 -charge 861 -0.1400 -charge 862 0.1700 -charge 863 0.1100 -charge 864 0.1500 -charge 865 0.1700 -charge 866 1.0000 -charge 867 0.8500 -charge 868 0.7000 -charge 869 0.5500 -charge 870 -0.1000 -charge 871 -0.4300 -charge 872 -0.3700 -charge 873 -0.3100 -charge 874 -0.2500 -charge 875 -1.0000 -charge 876 -1.0000 -charge 877 -1.0000 -charge 878 -1.0000 -charge 879 1.0000 -charge 880 1.0000 -charge 881 1.0000 -charge 882 1.0000 -charge 883 1.0000 -charge 884 2.0000 -charge 885 2.0000 -charge 886 2.0000 -charge 887 2.0000 -charge 888 -0.0500 -charge 889 0.0500 -charge 890 0.1500 -charge 891 0.2500 -charge 892 0.1000 -charge 893 0.1150 -charge 894 0.1350 -charge 895 0.0150 -charge 896 0.1550 -charge 897 0.0000 -charge 898 -0.1150 -charge 899 0.1500 -charge 900 -0.2500 -charge 901 -0.1000 -charge 902 0.0500 -charge 903 -0.1000 -charge 904 0.2000 -charge 905 -0.2500 -charge 906 0.0880 - - - ######################################## - ## ## - ## Biopolymer Atom Type Conversions ## - ## ## - ######################################## - - -biotype 1 N "Glycine" 180 -biotype 2 CA "Glycine" 165 -biotype 3 C "Glycine" 177 -biotype 4 HN "Glycine" 183 -biotype 5 O "Glycine" 178 -biotype 6 HA "Glycine" 85 -biotype 7 N "Alanine" 180 -biotype 8 CA "Alanine" 166 -biotype 9 C "Alanine" 177 -biotype 10 HN "Alanine" 183 -biotype 11 O "Alanine" 178 -biotype 12 HA "Alanine" 85 -biotype 13 CB "Alanine" 80 -biotype 14 HB "Alanine" 85 -biotype 15 N "Valine" 180 -biotype 16 CA "Valine" 166 -biotype 17 C "Valine" 177 -biotype 18 HN "Valine" 183 -biotype 19 O "Valine" 178 -biotype 20 HA "Valine" 85 -biotype 21 CB "Valine" 82 -biotype 22 HB "Valine" 85 -biotype 23 CG1 "Valine" 80 -biotype 24 HG1 "Valine" 85 -biotype 25 CG2 "Valine" 80 -biotype 26 HG2 "Valine" 85 -biotype 27 N "Leucine" 180 -biotype 28 CA "Leucine" 166 -biotype 29 C "Leucine" 177 -biotype 30 HN "Leucine" 183 -biotype 31 O "Leucine" 178 -biotype 32 HA "Leucine" 85 -biotype 33 CB "Leucine" 81 -biotype 34 HB "Leucine" 85 -biotype 35 CG "Leucine" 82 -biotype 36 HG "Leucine" 85 -biotype 37 CD1 "Leucine" 80 -biotype 38 HD1 "Leucine" 85 -biotype 39 CD2 "Leucine" 80 -biotype 40 HD2 "Leucine" 85 -biotype 41 N "Isoleucine" 180 -biotype 42 CA "Isoleucine" 166 -biotype 43 C "Isoleucine" 177 -biotype 44 HN "Isoleucine" 183 -biotype 45 O "Isoleucine" 178 -biotype 46 HA "Isoleucine" 85 -biotype 47 CB "Isoleucine" 82 -biotype 48 HB "Isoleucine" 85 -biotype 49 CG1 "Isoleucine" 80 -biotype 50 HG1 "Isoleucine" 85 -biotype 51 CG2 "Isoleucine" 81 -biotype 52 HG2 "Isoleucine" 85 -biotype 53 CD "Isoleucine" 80 -biotype 54 HD "Isoleucine" 85 -biotype 55 N "Serine" 180 -biotype 56 CA "Serine" 166 -biotype 57 C "Serine" 177 -biotype 58 HN "Serine" 183 -biotype 59 O "Serine" 178 -biotype 60 HA "Serine" 85 -biotype 61 CB "Serine" 99 -biotype 62 HB "Serine" 85 -biotype 63 OG "Serine" 96 -biotype 64 HG "Serine" 97 -biotype 65 N "Threonine" 180 -biotype 66 CA "Threonine" 166 -biotype 67 C "Threonine" 177 -biotype 68 HN "Threonine" 183 -biotype 69 O "Threonine" 178 -biotype 70 HA "Threonine" 85 -biotype 71 CB "Threonine" 100 -biotype 72 HB "Threonine" 85 -biotype 73 OG1 "Threonine" 96 -biotype 74 HG1 "Threonine" 97 -biotype 75 CG2 "Threonine" 80 -biotype 76 HG2 "Threonine" 85 -biotype 77 N "Cysteine (SH)" 180 -biotype 78 CA "Cysteine (SH)" 166 -biotype 79 C "Cysteine (SH)" 177 -biotype 80 HN "Cysteine (SH)" 183 -biotype 81 O "Cysteine (SH)" 178 -biotype 82 HA "Cysteine (SH)" 85 -biotype 83 CB "Cysteine (SH)" 148 -biotype 84 HB "Cysteine (SH)" 85 -biotype 85 SG "Cysteine (SH)" 142 -biotype 86 HG "Cysteine (SH)" 146 -biotype 87 N "Cystine (SS)" 180 -biotype 88 CA "Cystine (SS)" 166 -biotype 89 C "Cystine (SS)" 177 -biotype 90 HN "Cystine (SS)" 183 -biotype 91 O "Cystine (SS)" 178 -biotype 92 HA "Cystine (SS)" 85 -biotype 93 CB "Cystine (SS)" 156 -biotype 94 HB "Cystine (SS)" 85 -biotype 95 SG "Cystine (SS)" 145 -biotype 96 N "Cysteine (S-)" -1 -biotype 97 CA "Cysteine (S-)" -1 -biotype 98 C "Cysteine (S-)" -1 -biotype 99 HN "Cysteine (S-)" -1 -biotype 100 O "Cysteine (S-)" -1 -biotype 101 HA "Cysteine (S-)" -1 -biotype 102 CB "Cysteine (S-)" -1 -biotype 103 HB "Cysteine (S-)" -1 -biotype 104 SG "Cysteine (S-)" -1 -biotype 105 N "Proline" 181 -biotype 106 CA "Proline" 188 -biotype 107 C "Proline" 177 -biotype 108 O "Proline" 178 -biotype 109 HA "Proline" 85 -biotype 110 CB "Proline" 81 -biotype 111 HB "Proline" 85 -biotype 112 CG "Proline" 81 -biotype 113 HG "Proline" 85 -biotype 114 CD "Proline" 187 -biotype 115 HD "Proline" 85 -biotype 116 N "Phenylalanine" 180 -biotype 117 CA "Phenylalanine" 166 -biotype 118 C "Phenylalanine" 177 -biotype 119 HN "Phenylalanine" 183 -biotype 120 O "Phenylalanine" 178 -biotype 121 HA "Phenylalanine" 85 -biotype 122 CB "Phenylalanine" 94 -biotype 123 HB "Phenylalanine" 85 -biotype 124 CG "Phenylalanine" 90 -biotype 125 CD "Phenylalanine" 90 -biotype 126 HD "Phenylalanine" 91 -biotype 127 CE "Phenylalanine" 90 -biotype 128 HE "Phenylalanine" 91 -biotype 129 CZ "Phenylalanine" 90 -biotype 130 HZ "Phenylalanine" 91 -biotype 131 N "Tyrosine" 180 -biotype 132 CA "Tyrosine" 166 -biotype 133 C "Tyrosine" 177 -biotype 134 HN "Tyrosine" 183 -biotype 135 O "Tyrosine" 178 -biotype 136 HA "Tyrosine" 85 -biotype 137 CB "Tyrosine" 94 -biotype 138 HB "Tyrosine" 85 -biotype 139 CG "Tyrosine" 90 -biotype 140 CD "Tyrosine" 90 -biotype 141 HD "Tyrosine" 91 -biotype 142 CE "Tyrosine" 90 -biotype 143 HE "Tyrosine" 91 -biotype 144 CZ "Tyrosine" 108 -biotype 145 OH "Tyrosine" 109 -biotype 146 HH "Tyrosine" 110 -biotype 147 N "Tyrosine (O-)" -1 -biotype 148 CA "Tyrosine (O-)" -1 -biotype 149 C "Tyrosine (O-)" -1 -biotype 150 HN "Tyrosine (O-)" -1 -biotype 151 O "Tyrosine (O-)" -1 -biotype 152 HA "Tyrosine (O-)" -1 -biotype 153 CB "Tyrosine (O-)" -1 -biotype 154 HB "Tyrosine (O-)" -1 -biotype 155 CG "Tyrosine (O-)" -1 -biotype 156 CD "Tyrosine (O-)" -1 -biotype 157 HD "Tyrosine (O-)" -1 -biotype 158 CE "Tyrosine (O-)" -1 -biotype 159 HE "Tyrosine (O-)" -1 -biotype 160 CZ "Tyrosine (O-)" -1 -biotype 161 OH "Tyrosine (O-)" -1 -biotype 162 N "Tryptophan" 180 -biotype 163 CA "Tryptophan" 166 -biotype 164 C "Tryptophan" 177 -biotype 165 HN "Tryptophan" 183 -biotype 166 O "Tryptophan" 178 -biotype 167 HA "Tryptophan" 85 -biotype 168 CB "Tryptophan" 81 -biotype 169 HB "Tryptophan" 85 -biotype 170 CG "Tryptophan" 441 -biotype 171 CD1 "Tryptophan" 455 -biotype 172 HD1 "Tryptophan" 91 -biotype 173 CD2 "Tryptophan" 442 -biotype 174 NE1 "Tryptophan" 444 -biotype 175 HE1 "Tryptophan" 445 -biotype 176 CE2 "Tryptophan" 443 -biotype 177 CE3 "Tryptophan" 90 -biotype 178 HE3 "Tryptophan" 91 -biotype 179 CZ2 "Tryptophan" 90 -biotype 180 HZ2 "Tryptophan" 91 -biotype 181 CZ3 "Tryptophan" 90 -biotype 182 HZ3 "Tryptophan" 91 -biotype 183 CH2 "Tryptophan" 90 -biotype 184 HH2 "Tryptophan" 91 -biotype 185 N "Histidine (+)" 180 -biotype 186 CA "Histidine (+)" 166 -biotype 187 C "Histidine (+)" 177 -biotype 188 HN "Histidine (+)" 183 -biotype 189 O "Histidine (+)" 178 -biotype 190 HA "Histidine (+)" 85 -biotype 191 CB "Histidine (+)" 446 -biotype 192 HB "Histidine (+)" 85 -biotype 193 CG "Histidine (+)" 451 -biotype 194 ND1 "Histidine (+)" 453 -biotype 195 HD1 "Histidine (+)" 454 -biotype 196 CD2 "Histidine (+)" 451 -biotype 197 HD2 "Histidine (+)" 91 -biotype 198 CE1 "Histidine (+)" 450 -biotype 199 HE1 "Histidine (+)" 91 -biotype 200 NE2 "Histidine (+)" 453 -biotype 201 HE2 "Histidine (+)" 454 -biotype 202 N "Histidine (HD)" 180 -biotype 203 CA "Histidine (HD)" 166 -biotype 204 C "Histidine (HD)" 177 -biotype 205 HN "Histidine (HD)" 183 -biotype 206 O "Histidine (HD)" 178 -biotype 207 HA "Histidine (HD)" 85 -biotype 208 CB "Histidine (HD)" 446 -biotype 209 HB "Histidine (HD)" 85 -biotype 210 CG "Histidine (HD)" 449 -biotype 211 ND1 "Histidine (HD)" 444 -biotype 212 HD1 "Histidine (HD)" 445 -biotype 213 CD2 "Histidine (HD)" 448 -biotype 214 HD2 "Histidine (HD)" 91 -biotype 215 CE1 "Histidine (HD)" 447 -biotype 216 HE1 "Histidine (HD)" 91 -biotype 217 NE2 "Histidine (HD)" 452 -biotype 218 N "Histidine (HE)" 180 -biotype 219 CA "Histidine (HE)" 166 -biotype 220 C "Histidine (HE)" 177 -biotype 221 HN "Histidine (HE)" 183 -biotype 222 O "Histidine (HE)" 178 -biotype 223 HA "Histidine (HE)" 85 -biotype 224 CB "Histidine (HE)" 446 -biotype 225 HB "Histidine (HE)" 85 -biotype 226 CG "Histidine (HE)" 448 -biotype 227 ND1 "Histidine (HE)" 452 -biotype 228 CD2 "Histidine (HE)" 449 -biotype 229 HD2 "Histidine (HE)" 91 -biotype 230 CE1 "Histidine (HE)" 447 -biotype 231 HE1 "Histidine (HE)" 91 -biotype 232 NE2 "Histidine (HE)" 444 -biotype 233 HE2 "Histidine (HE)" 445 -biotype 234 N "Aspartic Acid" 180 -biotype 235 CA "Aspartic Acid" 166 -biotype 236 C "Aspartic Acid" 177 -biotype 237 HN "Aspartic Acid" 183 -biotype 238 O "Aspartic Acid" 178 -biotype 239 HA "Aspartic Acid" 85 -biotype 240 CB "Aspartic Acid" 216 -biotype 241 HB "Aspartic Acid" 85 -biotype 242 CG "Aspartic Acid" 213 -biotype 243 OD "Aspartic Acid" 214 -biotype 244 N "Aspartic Acid (COOH)" -1 -biotype 245 CA "Aspartic Acid (COOH)" -1 -biotype 246 C "Aspartic Acid (COOH)" -1 -biotype 247 HN "Aspartic Acid (COOH)" -1 -biotype 248 O "Aspartic Acid (COOH)" -1 -biotype 249 HA "Aspartic Acid (COOH)" -1 -biotype 250 CB "Aspartic Acid (COOH)" -1 -biotype 251 HB "Aspartic Acid (COOH)" -1 -biotype 252 CG "Aspartic Acid (COOH)" -1 -biotype 253 OD1 "Aspartic Acid (COOH)" -1 -biotype 254 OD2 "Aspartic Acid (COOH)" -1 -biotype 255 HD2 "Aspartic Acid (COOH)" -1 -biotype 256 N "Asparagine" 180 -biotype 257 CA "Asparagine" 166 -biotype 258 C "Asparagine" 177 -biotype 259 HN "Asparagine" 183 -biotype 260 O "Asparagine" 178 -biotype 261 HA "Asparagine" 85 -biotype 262 CB "Asparagine" 81 -biotype 263 HB "Asparagine" 85 -biotype 264 CG "Asparagine" 177 -biotype 265 OD1 "Asparagine" 178 -biotype 266 ND2 "Asparagine" 179 -biotype 267 HD2 "Asparagine" 182 -biotype 268 N "Glutamic Acid" 180 -biotype 269 CA "Glutamic Acid" 166 -biotype 270 C "Glutamic Acid" 177 -biotype 271 HN "Glutamic Acid" 183 -biotype 272 O "Glutamic Acid" 178 -biotype 273 HA "Glutamic Acid" 85 -biotype 274 CB "Glutamic Acid" 81 -biotype 275 HB "Glutamic Acid" 85 -biotype 276 CG "Glutamic Acid" 216 -biotype 277 HG "Glutamic Acid" 85 -biotype 278 CD "Glutamic Acid" 213 -biotype 279 OE "Glutamic Acid" 214 -biotype 280 N "Glutamic Acid (COOH)" -1 -biotype 281 CA "Glutamic Acid (COOH)" -1 -biotype 282 C "Glutamic Acid (COOH)" -1 -biotype 283 HN "Glutamic Acid (COOH)" -1 -biotype 284 O "Glutamic Acid (COOH)" -1 -biotype 285 HA "Glutamic Acid (COOH)" -1 -biotype 286 CB "Glutamic Acid (COOH)" -1 -biotype 287 HB "Glutamic Acid (COOH)" -1 -biotype 288 CG "Glutamic Acid (COOH)" -1 -biotype 289 HG "Glutamic Acid (COOH)" -1 -biotype 290 CD "Glutamic Acid (COOH)" -1 -biotype 291 OE1 "Glutamic Acid (COOH)" -1 -biotype 292 OE2 "Glutamic Acid (COOH)" -1 -biotype 293 HE2 "Glutamic Acid (COOH)" -1 -biotype 294 N "Glutamine" 180 -biotype 295 CA "Glutamine" 166 -biotype 296 C "Glutamine" 177 -biotype 297 HN "Glutamine" 183 -biotype 298 O "Glutamine" 178 -biotype 299 HA "Glutamine" 85 -biotype 300 CB "Glutamine" 81 -biotype 301 HB "Glutamine" 85 -biotype 302 CG "Glutamine" 81 -biotype 303 HG "Glutamine" 85 -biotype 304 CD "Glutamine" 177 -biotype 305 OE1 "Glutamine" 178 -biotype 306 NE2 "Glutamine" 179 -biotype 307 HE2 "Glutamine" 182 -biotype 308 N "Methionine" 180 -biotype 309 CA "Methionine" 166 -biotype 310 C "Methionine" 177 -biotype 311 HN "Methionine" 183 -biotype 312 O "Methionine" 178 -biotype 313 HA "Methionine" 85 -biotype 314 CB "Methionine" 81 -biotype 315 HB "Methionine" 85 -biotype 316 CG "Methionine" 152 -biotype 317 HG "Methionine" 85 -biotype 318 SD "Methionine" 144 -biotype 319 CE "Methionine" 151 -biotype 320 HE "Methionine" 85 -biotype 321 N "Lysine" 180 -biotype 322 CA "Lysine" 166 -biotype 323 C "Lysine" 177 -biotype 324 HN "Lysine" 183 -biotype 325 O "Lysine" 178 -biotype 326 HA "Lysine" 85 -biotype 327 CB "Lysine" 81 -biotype 328 HB "Lysine" 85 -biotype 329 CG "Lysine" 81 -biotype 330 HG "Lysine" 85 -biotype 331 CD "Lysine" 81 -biotype 332 HD "Lysine" 85 -biotype 333 CE "Lysine" 235 -biotype 334 HE "Lysine" 85 -biotype 335 NZ "Lysine" 230 -biotype 336 HZ "Lysine" 233 -biotype 337 N "Lysine (NH2)" -1 -biotype 338 CA "Lysine (NH2)" -1 -biotype 339 C "Lysine (NH2)" -1 -biotype 340 HN "Lysine (NH2)" -1 -biotype 341 O "Lysine (NH2)" -1 -biotype 342 HA "Lysine (NH2)" -1 -biotype 343 CB "Lysine (NH2)" -1 -biotype 344 HB "Lysine (NH2)" -1 -biotype 345 CG "Lysine (NH2)" -1 -biotype 346 HG "Lysine (NH2)" -1 -biotype 347 CD "Lysine (NH2)" -1 -biotype 348 HD "Lysine (NH2)" -1 -biotype 349 CE "Lysine (NH2)" -1 -biotype 350 HE "Lysine (NH2)" -1 -biotype 351 NZ "Lysine (NH2)" -1 -biotype 352 HZ "Lysine (NH2)" -1 -biotype 353 N "Arginine" 180 -biotype 354 CA "Arginine" 166 -biotype 355 C "Arginine" 177 -biotype 356 HN "Arginine" 183 -biotype 357 O "Arginine" 178 -biotype 358 HA "Arginine" 85 -biotype 359 CB "Arginine" 81 -biotype 360 HB "Arginine" 85 -biotype 361 CG "Arginine" 251 -biotype 362 HG "Arginine" 85 -biotype 363 CD "Arginine" 250 -biotype 364 HD "Arginine" 85 -biotype 365 NE "Arginine" 246 -biotype 366 HE "Arginine" 247 -biotype 367 CZ "Arginine" 245 -biotype 368 NH "Arginine" 243 -biotype 369 HH "Arginine" 244 -biotype 370 N "Ornithine" 180 -biotype 371 CA "Ornithine" 166 -biotype 372 C "Ornithine" 177 -biotype 373 HN "Ornithine" 183 -biotype 374 O "Ornithine" 178 -biotype 375 HA "Ornithine" 85 -biotype 376 CB "Ornithine" 81 -biotype 377 HB "Ornithine" 85 -biotype 378 CG "Ornithine" 81 -biotype 379 HG "Ornithine" 85 -biotype 380 CD "Ornithine" 235 -biotype 381 HD "Ornithine" 85 -biotype 382 NE "Ornithine" 230 -biotype 383 HE "Ornithine" 233 -biotype 384 N "MethylAlanine (AIB)" 180 -biotype 385 CA "MethylAlanine (AIB)" 167 -biotype 386 C "MethylAlanine (AIB)" 177 -biotype 387 HN "MethylAlanine (AIB)" 183 -biotype 388 O "MethylAlanine (AIB)" 178 -biotype 389 CB "MethylAlanine (AIB)" 80 -biotype 390 HB "MethylAlanine (AIB)" 85 -biotype 391 N "Pyroglutamic Acid" 180 -biotype 392 CA "Pyroglutamic Acid" 166 -biotype 393 C "Pyroglutamic Acid" 177 -biotype 394 HN "Pyroglutamic Acid" 183 -biotype 395 O "Pyroglutamic Acid" 178 -biotype 396 HA "Pyroglutamic Acid" 85 -biotype 397 CB "Pyroglutamic Acid" 81 -biotype 398 HB "Pyroglutamic Acid" 85 -biotype 399 CG "Pyroglutamic Acid" 216 -biotype 400 HG "Pyroglutamic Acid" 85 -biotype 401 CD "Pyroglutamic Acid" 177 -biotype 402 OE "Pyroglutamic Acid" 178 -biotype 403 N "N-Terminal GLY" 230 -biotype 404 CA "N-Terminal GLY" 235 -biotype 405 C "N-Terminal GLY" 177 -biotype 406 HN "N-Terminal GLY" 233 -biotype 407 O "N-Terminal GLY" 178 -biotype 408 HA "N-Terminal GLY" 85 -biotype 409 N "N-Terminal ALA" 230 -biotype 410 CA "N-Terminal ALA" 236 -biotype 411 C "N-Terminal ALA" 177 -biotype 412 HN "N-Terminal ALA" 233 -biotype 413 O "N-Terminal ALA" 178 -biotype 414 HA "N-Terminal ALA" 85 -biotype 415 N "N-Terminal VAL" 230 -biotype 416 CA "N-Terminal VAL" 236 -biotype 417 C "N-Terminal VAL" 177 -biotype 418 HN "N-Terminal VAL" 233 -biotype 419 O "N-Terminal VAL" 178 -biotype 420 HA "N-Terminal VAL" 85 -biotype 421 N "N-Terminal LEU" 230 -biotype 422 CA "N-Terminal LEU" 236 -biotype 423 C "N-Terminal LEU" 177 -biotype 424 HN "N-Terminal LEU" 233 -biotype 425 O "N-Terminal LEU" 178 -biotype 426 HA "N-Terminal LEU" 85 -biotype 427 N "N-Terminal ILE" 230 -biotype 428 CA "N-Terminal ILE" 236 -biotype 429 C "N-Terminal ILE" 177 -biotype 430 HN "N-Terminal ILE" 233 -biotype 431 O "N-Terminal ILE" 178 -biotype 432 HA "N-Terminal ILE" 85 -biotype 433 N "N-Terminal SER" 230 -biotype 434 CA "N-Terminal SER" 236 -biotype 435 C "N-Terminal SER" 177 -biotype 436 HN "N-Terminal SER" 233 -biotype 437 O "N-Terminal SER" 178 -biotype 438 HA "N-Terminal SER" 85 -biotype 439 N "N-Terminal THR" 230 -biotype 440 CA "N-Terminal THR" 236 -biotype 441 C "N-Terminal THR" 177 -biotype 442 HN "N-Terminal THR" 233 -biotype 443 O "N-Terminal THR" 178 -biotype 444 HA "N-Terminal THR" 85 -biotype 445 N "N-Terminal CYS (SH)" 230 -biotype 446 CA "N-Terminal CYS (SH)" 236 -biotype 447 C "N-Terminal CYS (SH)" 177 -biotype 448 HN "N-Terminal CYS (SH)" 233 -biotype 449 O "N-Terminal CYS (SH)" 178 -biotype 450 HA "N-Terminal CYS (SH)" 85 -biotype 451 N "N-Terminal CYX (SS)" 230 -biotype 452 CA "N-Terminal CYX (SS)" 236 -biotype 453 C "N-Terminal CYX (SS)" 177 -biotype 454 HN "N-Terminal CYX (SS)" 233 -biotype 455 O "N-Terminal CYX (SS)" 178 -biotype 456 HA "N-Terminal CYX (SS)" 85 -biotype 457 N "N-Terminal CYD (S-)" -1 -biotype 458 CA "N-Terminal CYD (S-)" -1 -biotype 459 C "N-Terminal CYD (S-)" -1 -biotype 460 HN "N-Terminal CYD (S-)" -1 -biotype 461 O "N-Terminal CYD (S-)" -1 -biotype 462 HA "N-Terminal CYD (S-)" -1 -biotype 463 N "N-Terminal PRO" 252 -biotype 464 CA "N-Terminal PRO" 238 -biotype 465 C "N-Terminal PRO" 177 -biotype 466 HN "N-Terminal PRO" 253 -biotype 467 O "N-Terminal PRO" 178 -biotype 468 HA "N-Terminal PRO" 85 -biotype 469 CD "N-Terminal PRO" 239 -biotype 470 HD "N-Terminal PRO" 85 -biotype 471 N "N-Terminal PHE" 230 -biotype 472 CA "N-Terminal PHE" 236 -biotype 473 C "N-Terminal PHE" 177 -biotype 474 HN "N-Terminal PHE" 233 -biotype 475 O "N-Terminal PHE" 178 -biotype 476 HA "N-Terminal PHE" 85 -biotype 477 N "N-Terminal TYR" 230 -biotype 478 CA "N-Terminal TYR" 236 -biotype 479 C "N-Terminal TYR" 177 -biotype 480 HN "N-Terminal TYR" 233 -biotype 481 O "N-Terminal TYR" 178 -biotype 482 HA "N-Terminal TYR" 85 -biotype 483 N "N-Terminal TYD (O-)" -1 -biotype 484 CA "N-Terminal TYD (O-)" -1 -biotype 485 C "N-Terminal TYD (O-)" -1 -biotype 486 HN "N-Terminal TYD (O-)" -1 -biotype 487 O "N-Terminal TYD (O-)" -1 -biotype 488 HA "N-Terminal TYD (O-)" -1 -biotype 489 N "N-Terminal TRP" 230 -biotype 490 CA "N-Terminal TRP" 236 -biotype 491 C "N-Terminal TRP" 177 -biotype 492 HN "N-Terminal TRP" 233 -biotype 493 O "N-Terminal TRP" 178 -biotype 494 HA "N-Terminal TRP" 85 -biotype 495 N "N-Terminal HIS (+)" 230 -biotype 496 CA "N-Terminal HIS (+)" 236 -biotype 497 C "N-Terminal HIS (+)" 177 -biotype 498 HN "N-Terminal HIS (+)" 233 -biotype 499 O "N-Terminal HIS (+)" 178 -biotype 500 HA "N-Terminal HIS (+)" 85 -biotype 501 N "N-Terminal HIS (HD)" 230 -biotype 502 CA "N-Terminal HIS (HD)" 236 -biotype 503 C "N-Terminal HIS (HD)" 177 -biotype 504 HN "N-Terminal HIS (HD)" 233 -biotype 505 O "N-Terminal HIS (HD)" 178 -biotype 506 HA "N-Terminal HIS (HD)" 85 -biotype 507 N "N-Terminal HIS (HE)" 230 -biotype 508 CA "N-Terminal HIS (HE)" 236 -biotype 509 C "N-Terminal HIS (HE)" 177 -biotype 510 HN "N-Terminal HIS (HE)" 233 -biotype 511 O "N-Terminal HIS (HE)" 178 -biotype 512 HA "N-Terminal HIS (HE)" 85 -biotype 513 N "N-Terminal ASP" 230 -biotype 514 CA "N-Terminal ASP" 236 -biotype 515 C "N-Terminal ASP" 177 -biotype 516 HN "N-Terminal ASP" 233 -biotype 517 O "N-Terminal ASP" 178 -biotype 518 HA "N-Terminal ASP" 85 -biotype 519 N "N-Terminal ASH (COOH)" -1 -biotype 520 CA "N-Terminal ASH (COOH)" -1 -biotype 521 C "N-Terminal ASH (COOH)" -1 -biotype 522 HN "N-Terminal ASH (COOH)" -1 -biotype 523 O "N-Terminal ASH (COOH)" -1 -biotype 524 HA "N-Terminal ASH (COOH)" -1 -biotype 525 N "N-Terminal ASN" 230 -biotype 526 CA "N-Terminal ASN" 236 -biotype 527 C "N-Terminal ASN" 177 -biotype 528 HN "N-Terminal ASN" 233 -biotype 529 O "N-Terminal ASN" 178 -biotype 530 HA "N-Terminal ASN" 85 -biotype 531 N "N-Terminal GLU" 230 -biotype 532 CA "N-Terminal GLU" 236 -biotype 533 C "N-Terminal GLU" 177 -biotype 534 HN "N-Terminal GLU" 233 -biotype 535 O "N-Terminal GLU" 178 -biotype 536 HA "N-Terminal GLU" 85 -biotype 537 N "N-Terminal GLH (COOH)" -1 -biotype 538 CA "N-Terminal GLH (COOH)" -1 -biotype 539 C "N-Terminal GLH (COOH)" -1 -biotype 540 HN "N-Terminal GLH (COOH)" -1 -biotype 541 O "N-Terminal GLH (COOH)" -1 -biotype 542 HA "N-Terminal GLH (COOH)" -1 -biotype 543 N "N-Terminal GLN" 230 -biotype 544 CA "N-Terminal GLN" 236 -biotype 545 C "N-Terminal GLN" 177 -biotype 546 HN "N-Terminal GLN" 233 -biotype 547 O "N-Terminal GLN" 178 -biotype 548 HA "N-Terminal GLN" 85 -biotype 549 N "N-Terminal MET" 230 -biotype 550 CA "N-Terminal MET" 236 -biotype 551 C "N-Terminal MET" 177 -biotype 552 HN "N-Terminal MET" 233 -biotype 553 O "N-Terminal MET" 178 -biotype 554 HA "N-Terminal MET" 85 -biotype 555 N "N-Terminal LYS" 230 -biotype 556 CA "N-Terminal LYS" 236 -biotype 557 C "N-Terminal LYS" 177 -biotype 558 HN "N-Terminal LYS" 233 -biotype 559 O "N-Terminal LYS" 178 -biotype 560 HA "N-Terminal LYS" 85 -biotype 561 N "N-Terminal LYD (NH2)" -1 -biotype 562 CA "N-Terminal LYD (NH2)" -1 -biotype 563 C "N-Terminal LYD (NH2)" -1 -biotype 564 HN "N-Terminal LYD (NH2)" -1 -biotype 565 O "N-Terminal LYD (NH2)" -1 -biotype 566 HA "N-Terminal LYD (NH2)" -1 -biotype 567 N "N-Terminal ARG" 230 -biotype 568 CA "N-Terminal ARG" 236 -biotype 569 C "N-Terminal ARG" 177 -biotype 570 HN "N-Terminal ARG" 233 -biotype 571 O "N-Terminal ARG" 178 -biotype 572 HA "N-Terminal ARG" 85 -biotype 573 N "N-Terminal ORN" 230 -biotype 574 CA "N-Terminal ORN" 236 -biotype 575 C "N-Terminal ORN" 177 -biotype 576 HN "N-Terminal ORN" 233 -biotype 577 O "N-Terminal ORN" 178 -biotype 578 HA "N-Terminal ORN" 85 -biotype 579 N "N-Terminal AIB" 230 -biotype 580 CA "N-Terminal AIB" 237 -biotype 581 C "N-Terminal AIB" 177 -biotype 582 HN "N-Terminal AIB" 233 -biotype 583 O "N-Terminal AIB" 178 -biotype 584 N "C-Terminal GLY" 180 -biotype 585 CA "C-Terminal GLY" 226 -biotype 586 C "C-Terminal GLY" 213 -biotype 587 HN "C-Terminal GLY" 183 -biotype 588 OXT "C-Terminal GLY" 214 -biotype 589 HA "C-Terminal GLY" 85 -biotype 590 N "C-Terminal ALA" 180 -biotype 591 CA "C-Terminal ALA" 225 -biotype 592 C "C-Terminal ALA" 213 -biotype 593 HN "C-Terminal ALA" 183 -biotype 594 OXT "C-Terminal ALA" 214 -biotype 595 HA "C-Terminal ALA" 85 -biotype 596 N "C-Terminal VAL" 180 -biotype 597 CA "C-Terminal VAL" 225 -biotype 598 C "C-Terminal VAL" 213 -biotype 599 HN "C-Terminal VAL" 183 -biotype 600 OXT "C-Terminal VAL" 214 -biotype 601 HA "C-Terminal VAL" 85 -biotype 602 N "C-Terminal LEU" 180 -biotype 603 CA "C-Terminal LEU" 225 -biotype 604 C "C-Terminal LEU" 213 -biotype 605 HN "C-Terminal LEU" 183 -biotype 606 OXT "C-Terminal LEU" 214 -biotype 607 HA "C-Terminal LEU" 85 -biotype 608 N "C-Terminal ILE" 180 -biotype 609 CA "C-Terminal ILE" 225 -biotype 610 C "C-Terminal ILE" 213 -biotype 611 HN "C-Terminal ILE" 183 -biotype 612 OXT "C-Terminal ILE" 214 -biotype 613 HA "C-Terminal ILE" 85 -biotype 614 N "C-Terminal SER" 180 -biotype 615 CA "C-Terminal SER" 225 -biotype 616 C "C-Terminal SER" 213 -biotype 617 HN "C-Terminal SER" 183 -biotype 618 OXT "C-Terminal SER" 214 -biotype 619 HA "C-Terminal SER" 85 -biotype 620 N "C-Terminal THR" 180 -biotype 621 CA "C-Terminal THR" 225 -biotype 622 C "C-Terminal THR" 213 -biotype 623 HN "C-Terminal THR" 183 -biotype 624 OXT "C-Terminal THR" 214 -biotype 625 HA "C-Terminal THR" 85 -biotype 626 N "C-Terminal CYS (SH)" 180 -biotype 627 CA "C-Terminal CYS (SH)" 225 -biotype 628 C "C-Terminal CYS (SH)" 213 -biotype 629 HN "C-Terminal CYS (SH)" 183 -biotype 630 OXT "C-Terminal CYS (SH)" 214 -biotype 631 HA "C-Terminal CYS (SH)" 85 -biotype 632 N "C-Terminal CYX (SS)" 180 -biotype 633 CA "C-Terminal CYX (SS)" 225 -biotype 634 C "C-Terminal CYX (SS)" 213 -biotype 635 HN "C-Terminal CYX (SS)" 183 -biotype 636 OXT "C-Terminal CYX (SS)" 214 -biotype 637 HA "C-Terminal CYX (SS)" 85 -biotype 638 N "C-Terminal CYD (S-)" -1 -biotype 639 CA "C-Terminal CYD (S-)" -1 -biotype 640 C "C-Terminal CYD (S-)" -1 -biotype 641 HN "C-Terminal CYD (S-)" -1 -biotype 642 OXT "C-Terminal CYD (S-)" -1 -biotype 643 HA "C-Terminal CYD (S-)" -1 -biotype 644 N "C-Terminal PRO" 181 -biotype 645 CA "C-Terminal PRO" 228 -biotype 646 C "C-Terminal PRO" 213 -biotype 647 OXT "C-Terminal PRO" 214 -biotype 648 HA "C-Terminal PRO" 85 -biotype 649 N "C-Terminal PHE" 180 -biotype 650 CA "C-Terminal PHE" 225 -biotype 651 C "C-Terminal PHE" 213 -biotype 652 HN "C-Terminal PHE" 183 -biotype 653 OXT "C-Terminal PHE" 214 -biotype 654 HA "C-Terminal PHE" 85 -biotype 655 N "C-Terminal TYR" 180 -biotype 656 CA "C-Terminal TYR" 225 -biotype 657 C "C-Terminal TYR" 213 -biotype 658 HN "C-Terminal TYR" 183 -biotype 659 OXT "C-Terminal TYR" 214 -biotype 660 HA "C-Terminal TYR" 85 -biotype 661 N "C-Terminal TYD (O-)" -1 -biotype 662 CA "C-Terminal TYD (O-)" -1 -biotype 663 C "C-Terminal TYD (O-)" -1 -biotype 664 HN "C-Terminal TYD (O-)" -1 -biotype 665 OXT "C-Terminal TYD (O-)" -1 -biotype 666 HA "C-Terminal TYD (O-)" -1 -biotype 667 N "C-Terminal TRP" 180 -biotype 668 CA "C-Terminal TRP" 225 -biotype 669 C "C-Terminal TRP" 213 -biotype 670 HN "C-Terminal TRP" 183 -biotype 671 OXT "C-Terminal TRP" 214 -biotype 672 HA "C-Terminal TRP" 85 -biotype 673 N "C-Terminal HIS (+)" 180 -biotype 674 CA "C-Terminal HIS (+)" 225 -biotype 675 C "C-Terminal HIS (+)" 213 -biotype 676 HN "C-Terminal HIS (+)" 183 -biotype 677 OXT "C-Terminal HIS (+)" 214 -biotype 678 HA "C-Terminal HIS (+)" 85 -biotype 679 N "C-Terminal HIS (HD)" 180 -biotype 680 CA "C-Terminal HIS (HD)" 225 -biotype 681 C "C-Terminal HIS (HD)" 213 -biotype 682 HN "C-Terminal HIS (HD)" 183 -biotype 683 OXT "C-Terminal HIS (HD)" 214 -biotype 684 HA "C-Terminal HIS (HD)" 85 -biotype 685 N "C-Terminal HIS (HE)" 180 -biotype 686 CA "C-Terminal HIS (HE)" 225 -biotype 687 C "C-Terminal HIS (HE)" 213 -biotype 688 HN "C-Terminal HIS (HE)" 183 -biotype 689 OXT "C-Terminal HIS (HE)" 214 -biotype 690 HA "C-Terminal HIS (HE)" 85 -biotype 691 N "C-Terminal ASP" 180 -biotype 692 CA "C-Terminal ASP" 225 -biotype 693 C "C-Terminal ASP" 213 -biotype 694 HN "C-Terminal ASP" 183 -biotype 695 OXT "C-Terminal ASP" 214 -biotype 696 HA "C-Terminal ASP" 85 -biotype 697 N "C-Terminal ASH (COOH)" -1 -biotype 698 CA "C-Terminal ASH (COOH)" -1 -biotype 699 C "C-Terminal ASH (COOH)" -1 -biotype 700 HN "C-Terminal ASH (COOH)" -1 -biotype 701 OXT "C-Terminal ASH (COOH)" -1 -biotype 702 HA "C-Terminal ASH (COOH)" -1 -biotype 703 N "C-Terminal ASN" 180 -biotype 704 CA "C-Terminal ASN" 225 -biotype 705 C "C-Terminal ASN" 213 -biotype 706 HN "C-Terminal ASN" 183 -biotype 707 OXT "C-Terminal ASN" 214 -biotype 708 HA "C-Terminal ASN" 85 -biotype 709 N "C-Terminal GLU" 180 -biotype 710 CA "C-Terminal GLU" 225 -biotype 711 C "C-Terminal GLU" 213 -biotype 712 HN "C-Terminal GLU" 183 -biotype 713 OXT "C-Terminal GLU" 214 -biotype 714 HA "C-Terminal GLU" 85 -biotype 715 N "C-Terminal GLH (COOH)" -1 -biotype 716 CA "C-Terminal GLH (COOH)" -1 -biotype 717 C "C-Terminal GLH (COOH)" -1 -biotype 718 HN "C-Terminal GLH (COOH)" -1 -biotype 719 OXT "C-Terminal GLH (COOH)" -1 -biotype 720 HA "C-Terminal GLH (COOH)" -1 -biotype 721 N "C-Terminal GLN" 180 -biotype 722 CA "C-Terminal GLN" 225 -biotype 723 C "C-Terminal GLN" 213 -biotype 724 HN "C-Terminal GLN" 183 -biotype 725 OXT "C-Terminal GLN" 214 -biotype 726 HA "C-Terminal GLN" 85 -biotype 727 N "C-Terminal MET" 180 -biotype 728 CA "C-Terminal MET" 225 -biotype 729 C "C-Terminal MET" 213 -biotype 730 HN "C-Terminal MET" 183 -biotype 731 OXT "C-Terminal MET" 214 -biotype 732 HA "C-Terminal MET" 85 -biotype 733 N "C-Terminal LYS" 180 -biotype 734 CA "C-Terminal LYS" 225 -biotype 735 C "C-Terminal LYS" 213 -biotype 736 HN "C-Terminal LYS" 183 -biotype 737 OXT "C-Terminal LYS" 214 -biotype 738 HA "C-Terminal LYS" 85 -biotype 739 N "C-Terminal LYD (NH2)" -1 -biotype 740 CA "C-Terminal LYD (NH2)" -1 -biotype 741 C "C-Terminal LYD (NH2)" -1 -biotype 742 HN "C-Terminal LYD (NH2)" -1 -biotype 743 OXT "C-Terminal LYD (NH2)" -1 -biotype 744 HA "C-Terminal LYD (NH2)" -1 -biotype 745 N "C-Terminal ARG" 180 -biotype 746 CA "C-Terminal ARG" 225 -biotype 747 C "C-Terminal ARG" 213 -biotype 748 HN "C-Terminal ARG" 183 -biotype 749 OXT "C-Terminal ARG" 214 -biotype 750 HA "C-Terminal ARG" 85 -biotype 751 N "C-Terminal ORN" 180 -biotype 752 CA "C-Terminal ORN" 225 -biotype 753 C "C-Terminal ORN" 213 -biotype 754 HN "C-Terminal ORN" 183 -biotype 755 OXT "C-Terminal ORN" 214 -biotype 756 HA "C-Terminal ORN" 85 -biotype 757 N "C-Terminal AIB" 180 -biotype 758 CA "C-Terminal AIB" 227 -biotype 759 C "C-Terminal AIB" 213 -biotype 760 HN "C-Terminal AIB" 183 -biotype 761 OXT "C-Terminal AIB" 214 -biotype 762 N "Deprotonated N-Terminus" -1 -biotype 763 H "Deprotonated N-Terminus" -1 -biotype 764 C "Formyl N-Terminus" 177 -biotype 765 H "Formyl N-Terminus" 221 -biotype 766 O "Formyl N-Terminus" 178 -biotype 767 CH3 "Acetyl N-Terminus" 80 -biotype 768 H "Acetyl N-Terminus" 85 -biotype 769 C "Acetyl N-Terminus" 177 -biotype 770 O "Acetyl N-Terminus" 178 -biotype 771 C "Protonated C-Terminus" -1 -biotype 772 O "Protonated C-Terminus" -1 -biotype 773 OH "Protonated C-Terminus" -1 -biotype 774 HO "Protonated C-Terminus" -1 -biotype 775 N "Amide C-Terminus" 179 -biotype 776 HN "Amide C-Terminus" 182 -biotype 777 N "N-MeAmide C-Terminus" 180 -biotype 778 HN "N-MeAmide C-Terminus" 183 -biotype 779 CH3 "N-MeAmide C-Terminus" 184 -biotype 780 H "N-MeAmide C-Terminus" 85 -biotype 2001 O "Water" 63 -biotype 2002 H "Water" 64 -biotype 2003 NA "Sodium Ion" -1 -biotype 2004 K "Potassium Ion" -1 -biotype 2005 MG "Magnesium Ion" -1 -biotype 2006 CA "Calcium Ion" -1 -biotype 2007 CL "Chloride Ion" -1 diff --git a/tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/README_visualize.txt b/tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/README_visualize.txt deleted file mode 100644 index 019afc1444a48409143b5c170318479ceb27a391..0000000000000000000000000000000000000000 --- a/tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/README_visualize.txt +++ /dev/null @@ -1,87 +0,0 @@ - - ------- To view a lammps trajectory in VMD -------- - - -1) Build a PSF file for use in viewing with VMD. - -This step works with VMD 1.9 and topotools 1.2. -(Older versions, like VMD 1.8.6, don't support this.) - - -a) Start VMD -b) Menu Extensions->Tk Console -c) Enter: - -(I assume that the the DATA file is called "system.data") - - topo readlammpsdata system.data full - animate write psf system.psf - -2) - -Later, to Load a trajectory in VMD: - - Start VMD - Select menu: File->New Molecule - -Browse to select the PSF file you created above, and load it. - (Don't close the window yet.) - -Browse to select the trajectory file. - If necessary, for "file type" select: "LAMMPS Trajectory" - Load it. - - ---- A note on trajectory format: ----- -If the trajectory is a DUMP file, then make sure the it contains the -information you need for pbctools (see below. I've been using this -command in my LAMMPS scripts to create the trajectories: - - dump 1 all custom 5000 DUMP_FILE.lammpstrj id mol type x y z ix iy iz - -It's a good idea to use an atom_style which supports molecule-ID numbers -so that you can assign a molecule-ID number to each atom. (I think this -is needed to wrap atom coordinates without breaking molecules in half.) - -Of course, you don't have to save your trajectories in DUMP format, -(other formats like DCD work fine) I just mention dump files -because these are the files I'm familiar with. - -3) ----- Wrap the coordinates to the unit cell - (without cutting the molecules in half) - -a) Start VMD -b) Load the trajectory in VMD (see above) -c) Menu Extensions->Tk Console -d) Try entering these commands: - - pbc wrap -compound res -all - pbc box - - ----- Optional ---- - Sometimes the solvent or membrane obscures the view of the solute. - It can help to shift the location of the periodic boundary box - To shift the box in the y direction (for example) do this: - - pbc wrap -compound res -all -shiftcenterrel {0.0 0.15 0.0} - pbc box -shiftcenterrel {0.0 0.15 0.0} - - Distances are measured in units of box-length fractions, not Angstroms. - - Alternately if you have a solute whose atoms are all of type 1, - then you can also try this to center the box around it: - - pbc wrap -sel type=1 -all -centersel type=2 -center com - -4) - You should check if your periodic boundary conditions are too small. - To do that: - select Graphics->Representations menu option - click on the "Periodic" tab, and - click on the "+x", "-x", "+y", "-y", "+z", "-z" checkboxes. - -5) Optional: If you like, change the atom types in the PSF file so - that VMD recognizes the atom types, use something like: - -sed -e 's/ 1 1 / C C /g' < system.psf > temp1.psf -sed -e 's/ 2 2 / H H /g' < temp1.psf > temp2.psf -sed -e 's/ 3 3 / P P /g' < temp2.psf > system.psf - -(If you do this, it might effect step 2 above.) diff --git a/tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/moltemplate_files/oplsaa_lt_generator/AUTHOR.TXT b/tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/moltemplate_files/oplsaa_lt_generator/AUTHOR.TXT deleted file mode 100644 index d5e469af37a84991fe0c172f6d7a7301ed0fcb60..0000000000000000000000000000000000000000 --- a/tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/moltemplate_files/oplsaa_lt_generator/AUTHOR.TXT +++ /dev/null @@ -1,3 +0,0 @@ - -OPLSAA force-field conversion tools provided by Jason Lambert. - diff --git a/tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/moltemplate_files/oplsaa_lt_generator/README.TXT b/tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/moltemplate_files/oplsaa_lt_generator/README.TXT deleted file mode 100644 index 6da3456025b509e1ef4845447b7eb8161f200f84..0000000000000000000000000000000000000000 --- a/tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/moltemplate_files/oplsaa_lt_generator/README.TXT +++ /dev/null @@ -1,110 +0,0 @@ -This directory contains instructions for creating a a moltemplate file -("oplsaa.lt") containing force-field definitions relevant to the -"ethylene+benzene" example. (However, these instructions should work -for other molecules too.) - -First, check and see if there is an "oplsaa_subset.prm" file present. -If not, then download this file: - -http://dasher.wustl.edu/tinker/distribution/params/oplsaa.prm - This file is also available here: -http://dasher.wustl.edu/ffe/distribution/params/oplsaa.prm - -and save this file as "oplsaa_subset.prm". Then you must EDIT THIS FILE -so that it only contains atom types you plan to have in your simulation -(see below for details). Then run the opls_moltemplate.py script this way: - - -oplsaa_moltemplate.py oplsaa_subset.prm - - -This will create a file named "oplsaa.lt" -Look over the newly created "oplsaa.lt" file. -Then move this file to wherever you plan to run moltemplate. For example: - -mv -f oplsaa.lt .. - ------ DETAILS: Editing the "oplsaa_subset.prm" file ------- - -Again, before you run "oplsaa_moltemplate.py", you must edit the "oplsaa.prm" -file (or "oplsaa_subset.prm file) and eliminate atom types which do not -correspond to any of the atoms in your simulation. This means you must -look for lines near the beginning of this file which begin with the word "atom" -and refer to atom types which appear in the simulation you plan to run. All -other lines (beginning with the word "atom") must be deleted or commented out. -(Leave the rest of the file alone.) - -For example: -If you were working with ethylene and benzene you would delete every line -beginning with the word "atom", except for these four lines: - -# for ethylene: -atom 88 47 CM "Alkene H2-C=" 6 12.011 3 -atom 89 46 HC "Alkene H-C=" 1 1.008 1 -# for benzene: -atom 90 48 CA "Aromatic C" 6 12.011 3 -atom 91 49 HA "Aromatic H-C" 1 1.008 1 - -Then you are ready to run oplsaa_moltemplate.py on this file. - -(Note: Atom type numbers, like "88", "89", "47", etc... may vary depending on - when you downloaded "oplsaa.prm".) - - - ------ Using the "oplsaa.lt" file ----- - -Once you have created the "oplsaa.lt" file, you can create files (like -ethylene.lt) which define molecules that refer to these atom types. -Here is an excerpt from "ethyelene.lt": - -import "oplsaa.lt" -Ethylene inherits OPLSAA { - write('Data Atoms') { - list of atoms goes here ... - } - write('Data Bond List') { - list of bonds goes here ... - } -} - -And then run moltemplate. - - ------------ CHARGE: ----------- - -By default, the OPLSAA force-field assigns atom charge according to atom type. -When you run moltemplate, it will create a file named "system.in.charges", -containing commands like: - -set type 2 charge -0.42 -set type 3 charge 0.21 - -(This assumes your main moltemplate file is named "system.lt". If it was -named something else, eg "polymer.lt", then the file created by moltemplate -will be named "polymer.in.charges".) - -Include these commands somewhere in your LAMMPS input script -(or use the LAMMPS "include" command to load the commands in system.in.charges) - -Note that the atom numbers (eg "2", "3") in this file will not match the -OPLS atom numbers. (Check the output_ttree/ttree_assignments.txt file, -created by moltemplate, to see a table of "@atom" type numbers translated -from OPLSAA into LAMMPS.) - ------------ CREDIT ----------- - -If you use these tools and you publish a paper using OPLSAA, please also cite -the TINKER program. (Because these examples use the "oplsaa.prm" file which -is distributed with TINKER.) I think these are the relevant citations: - -1) Ponder, J. W., & Richards, F. M. (1987). "An efficient newton‐like method for molecular mechanics energy minimization of large molecules. Journal of Computational Chemistry", 8(7), 1016-1024. - -2) Ponder, J. W, (2004) "TINKER: Software tools for molecular design", http://dasher.wustl.edu/tinker/ - -------------------------------- - -Jason Lambert and Andrew Jewett -April, 2014 - -Please email bugs to jewett.aij@gmail.com and jlamber9@gmail.com diff --git a/tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/moltemplate_files/oplsaa_lt_generator/minimal_versions/README.TXT b/tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/moltemplate_files/oplsaa_lt_generator/minimal_versions/README.TXT deleted file mode 100644 index 2fc1ea29ea1f467f7fd5c7292372305835bb3f33..0000000000000000000000000000000000000000 --- a/tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/moltemplate_files/oplsaa_lt_generator/minimal_versions/README.TXT +++ /dev/null @@ -1,16 +0,0 @@ -MOST USERS SHOULD IGNORE THIS DIRECTORY. - -This directory contains versions of the oplsaa_subset.prm file -which nearly all of the OPLSAA force-field information removed. -However for the "ethylene+benzene" example, all of the essential -parameters are contained in these files. You can use oplsaa_moltemplate.py -with either of these files and the physics should be the same. - -However there is no reason to do this. -When you download the "oplsaa.prm" file from: -http://dasher.wustl.edu/tinker/distribution/params/oplsaa.prm -(also http://dasher.wustl.edu/ffe/distribution/params/oplsaa.prm) -...just remove the lines beginning with "atom" for atoms you don't need. -You don't have to delete all the other irrelevant interactions. -(In fact, it is hard to do that without making a mistake. - I recommend that you leave the rest of the oplsaa.prm file alone.) diff --git a/tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/moltemplate_files/oplsaa_lt_generator/minimal_versions/oplsaa_subset_minimal.prm b/tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/moltemplate_files/oplsaa_lt_generator/minimal_versions/oplsaa_subset_minimal.prm deleted file mode 100644 index b4078f121422fd37129611b9b867d5fe9e674b6b..0000000000000000000000000000000000000000 --- a/tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/moltemplate_files/oplsaa_lt_generator/minimal_versions/oplsaa_subset_minimal.prm +++ /dev/null @@ -1,37 +0,0 @@ - ############################# - ## Atom Type Definitions ## - ############################# - - -atom 88 47 CM "Alkene H2-C=" 6 12.011 3 -atom 89 46 HC "Alkene H-C=" 1 1.008 1 -atom 90 48 CA "Aromatic C" 6 12.011 3 -atom 91 49 HA "Aromatic H-C" 1 1.008 1 - -vdw 88 3.5500 0.0760 -vdw 89 2.4200 0.0300 -vdw 90 3.5500 0.0700 -vdw 91 2.4200 0.0300 - -bond 46 47 340.00 1.0800 -bond 47 47 549.00 1.3400 -bond 48 48 469.00 1.4000 -bond 48 49 367.00 1.0800 - -angle 46 47 46 35.00 117.00 -angle 46 47 47 35.00 120.00 -angle 48 48 48 63.00 120.00 -angle 48 48 49 35.00 120.00 - -torsion 46 47 47 46 0.000 0.0 1 14.000 180.0 2 0.000 0.0 3 -torsion 48 48 48 48 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 49 48 48 49 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 48 48 48 49 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 - -imptors 0 0 47 0 30.000 180.0 2 -imptors 0 0 48 0 5.000 180.0 2 - -charge 88 -0.2300 -charge 89 0.1150 -charge 90 -0.1150 -charge 91 0.1150 diff --git a/tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/moltemplate_files/oplsaa_lt_generator/minimal_versions/oplsaa_subset_simplified.prm b/tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/moltemplate_files/oplsaa_lt_generator/minimal_versions/oplsaa_subset_simplified.prm deleted file mode 100644 index 6dbc6861ac8a8ba721deab7ffca1e1723b136526..0000000000000000000000000000000000000000 --- a/tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/moltemplate_files/oplsaa_lt_generator/minimal_versions/oplsaa_subset_simplified.prm +++ /dev/null @@ -1,49 +0,0 @@ - ############################# - ## Atom Type Definitions ## - ############################# - -atom 88 47 CM "Alkene H2-C=" 6 12.011 3 -atom 89 46 HC "Alkene H-C=" 1 1.008 1 -atom 90 48 CA "Aromatic C" 6 12.011 3 -atom 91 49 HA "Aromatic H-C" 1 1.008 1 - -vdw 88 3.5500 0.0760 -vdw 89 2.4200 0.0300 -vdw 90 3.5500 0.0700 -vdw 91 2.4200 0.0300 - -bond 46 47 340.00 1.0800 -bond 47 47 549.00 1.3400 -bond 47 48 427.00 1.4330 -bond 48 48 469.00 1.4000 -bond 48 49 367.00 1.0800 - -angle 46 47 46 35.00 117.00 -angle 46 47 47 35.00 120.00 -angle 46 47 48 35.00 123.30 -angle 47 47 48 85.00 117.00 -angle 48 48 48 63.00 120.00 -angle 47 48 48 70.00 124.00 -angle 48 48 49 35.00 120.00 - -imptors 0 0 47 0 30.000 180.0 2 -imptors 0 0 48 0 5.000 180.0 2 - -torsion 47 46 47 46 0.000 0.0 1 -8.000 180.0 2 0.000 0.0 3 -torsion 0 47 47 0 0.000 0.0 1 14.000 180.0 2 0.000 0.0 3 -torsion 46 47 47 46 0.000 0.0 1 14.000 180.0 2 0.000 0.0 3 -torsion 46 47 47 48 0.000 0.0 1 14.000 180.0 2 0.000 0.0 3 -torsion 46 47 48 48 0.000 0.0 1 0.000 180.0 2 -0.372 0.0 3 -torsion 47 47 48 48 1.241 0.0 1 3.353 180.0 2 -0.286 0.0 3 -torsion 0 48 48 0 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 0 48 48 48 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 0 48 48 49 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 47 48 48 49 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 48 48 48 48 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 48 48 48 49 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 49 48 48 49 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 - -charge 88 -0.2300 -charge 89 0.1150 -charge 90 -0.1150 -charge 91 0.1150 diff --git a/tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/moltemplate_files/oplsaa_lt_generator/oplsaa_subset.prm b/tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/moltemplate_files/oplsaa_lt_generator/oplsaa_subset.prm deleted file mode 100644 index c802793adaef5b73fefebb3be808a7ebddd8d7db..0000000000000000000000000000000000000000 --- a/tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/moltemplate_files/oplsaa_lt_generator/oplsaa_subset.prm +++ /dev/null @@ -1,5129 +0,0 @@ -# This is a modified version of the file "oplsaa.prm" distributed with TINKER -# http://dasher.wustl.edu/tinker/distribution/params/oplsaa.prm -# In this version, all of the lines beginning with "atom" have been deleted -# except for the atom types we will be using in this simulation -# (I also deleted some other lines from that file data to reduce the file size, -# but doing that is not necessary.) -# -# If you use this file, please also cite the software this file comes from: -# -# Ponder, J. W., and Richards, F. M. J. Comput. Chem. (1987) 8(7), 1016-1024 -# "An efficient newton‐like method for molecular mechanics energy -# minimization of large molecules." -# -# Ponder, J. W, (2004) -# "TINKER: Software tools for molecular design" -# http://dasher.wustl.edu/tinker/ - - ############################## - ## ## - ## Force Field Definition ## - ## ## - ############################## - - -forcefield OPLS-AA - -vdwindex TYPE -vdwtype LENNARD-JONES -radiusrule GEOMETRIC -radiustype SIGMA -radiussize DIAMETER -epsilonrule GEOMETRIC -torsionunit 0.5 -imptorunit 0.5 -vdw-14-scale 2.0 -chg-14-scale 2.0 -electric 332.06 -dielectric 1.0 - - - ############################# - ## ## - ## Literature References ## - ## ## - ############################# - - -The parameters supplied with TINKER are from "OPLS All-Atom Parameters -for Organic Molecules, Ions, Peptides & Nucleic Acids, July 2008" as -provided by W. L. Jorgensen, Yale University during June 2009. These -parameters are taken from those distributed with BOSS Version 4.8. - -Note that "atom type" numbers and not "atom class" numbers are used -to index van der Waals parameters, see the "vdwindex" keyword above - -The atom types with (UA) in the description are "united atom" values, -ie, OPLS-UA, where any nonpolar hydrogen atoms are combined onto their -attached atoms. All other parameters are "all-atom", OPLS-AA, including -explicit hydrogen atoms. - - - ############################# - ## ## - ## Atom Type Definitions ## - ## ## - ############################# - - -atom 88 47 CM "Alkene H2-C=" 6 12.011 3 -atom 89 46 HC "Alkene H-C=" 1 1.008 1 -atom 90 48 CA "Aromatic C" 6 12.011 3 -atom 91 49 HA "Aromatic H-C" 1 1.008 1 - - - ################################ - ## ## - ## Van der Waals Parameters ## - ## ## - ################################ - - -vdw 1 2.9400 0.0610 -vdw 2 3.9050 0.1180 -vdw 3 3.7500 0.1050 -vdw 4 2.9600 0.2100 -vdw 5 3.0000 0.1700 -vdw 6 3.9100 0.1600 -vdw 7 0.0000 0.0000 -vdw 8 3.7300 0.2940 -vdw 9 3.7750 0.2070 -vdw 10 3.9050 0.1750 -vdw 11 3.9100 0.1600 -vdw 12 3.9600 0.1450 -vdw 13 3.9050 0.1180 -vdw 14 3.8500 0.1400 -vdw 15 3.8500 0.0800 -vdw 16 3.8000 0.1150 -vdw 17 3.7500 0.1100 -vdw 18 3.8000 0.0500 -vdw 19 3.7500 0.1050 -vdw 20 3.0700 0.1700 -vdw 21 0.0000 0.0000 -vdw 22 3.7750 0.2070 -vdw 23 3.9050 0.1180 -vdw 24 3.7000 0.2500 -vdw 25 3.5500 0.2500 -vdw 26 3.5500 0.2500 -vdw 27 3.5500 0.2500 -vdw 28 0.0000 0.0000 -vdw 29 0.0000 0.0000 -vdw 30 3.7750 0.2070 -vdw 31 3.9050 0.1180 -vdw 32 3.8000 0.1700 -vdw 33 3.8000 0.1180 -vdw 34 3.8000 0.1700 -vdw 35 3.8000 0.1180 -vdw 36 3.2000 0.1700 -vdw 37 3.6500 0.1500 -vdw 38 3.7750 0.2070 -vdw 39 3.8500 0.0800 -vdw 40 3.8000 0.0500 -vdw 41 3.0000 0.1700 -vdw 42 3.8000 0.1700 -vdw 43 3.8000 0.1180 -vdw 44 3.8000 0.1180 -vdw 45 3.4000 0.3000 -vdw 46 3.8000 0.0800 -vdw 47 3.4700 0.3000 -vdw 48 3.8000 0.0500 -vdw 49 3.4700 0.2660 -vdw 50 3.5600 0.3950 -vdw 51 2.9300 0.2800 -vdw 52 3.8100 0.1600 -vdw 53 2.9600 0.2100 -vdw 54 3.2500 0.1700 -vdw 55 3.8000 0.1150 -vdw 56 3.8000 0.1700 -vdw 57 0.0000 0.0000 -vdw 58 2.5560 0.0200 -vdw 59 2.7800 0.0690 -vdw 60 3.4010 0.2339 -vdw 61 3.6240 0.3170 -vdw 62 3.9350 0.4330 -vdw 63 3.15061 0.1521 -vdw 64 0.0000 0.0000 -vdw 65 3.15365 0.1550 -vdw 66 0.0000 0.0000 -vdw 67 0.0000 0.0000 -vdw 68 3.1760 0.1500 -vdw 69 0.0000 0.0000 -vdw 70 3.2700 0.1000 -vdw 71 0.0000 0.0000 -vdw 72 0.0000 0.0000 -vdw 73 3.1200 0.1600 -vdw 74 0.0000 0.0000 -vdw 75 0.0000 0.0000 -vdw 76 3.16557 0.1554 -vdw 77 0.0000 0.0000 -vdw 78 3.4200 0.1700 -vdw 79 0.0000 0.0000 -vdw 80 3.5000 0.0660 -vdw 81 3.5000 0.0660 -vdw 82 3.5000 0.0660 -vdw 83 3.5000 0.0660 -vdw 84 3.5000 0.0660 -vdw 85 2.5000 0.0300 -vdw 86 3.5500 0.0760 -vdw 87 3.5500 0.0760 -vdw 88 3.5500 0.0760 -vdw 89 2.4200 0.0300 -vdw 90 3.5500 0.0700 -vdw 91 2.4200 0.0300 -vdw 92 3.5500 0.0700 -vdw 93 3.5000 0.0660 -vdw 94 3.5000 0.0660 -vdw 95 3.5500 0.0760 -vdw 96 3.1200 0.1700 -vdw 97 0.0000 0.0000 -vdw 98 2.5000 0.0300 -vdw 99 3.5000 0.0660 -vdw 100 3.5000 0.0660 -vdw 101 3.5000 0.0660 -vdw 102 3.5000 0.0660 -vdw 103 3.2500 0.0620 -vdw 104 3.0700 0.1700 -vdw 105 0.0000 0.0000 -vdw 106 2.9400 0.0610 -vdw 107 2.5000 0.0300 -vdw 108 3.5500 0.0700 -vdw 109 3.0700 0.1700 -vdw 110 0.0000 0.0000 -vdw 111 3.0700 0.1700 -vdw 112 0.0000 0.0000 -vdw 113 3.0700 0.1700 -vdw 114 0.0000 0.0000 -vdw 115 3.5000 0.0660 -vdw 116 3.5000 0.0660 -vdw 117 3.5000 0.0660 -vdw 118 2.5000 0.0300 -vdw 119 2.9000 0.1400 -vdw 120 3.5500 0.0760 -vdw 121 2.9000 0.1400 -vdw 122 2.9000 0.1400 -vdw 123 3.5000 0.0660 -vdw 124 3.5000 0.0660 -vdw 125 3.5000 0.0660 -vdw 126 3.5000 0.0660 -vdw 127 2.5000 0.0300 -vdw 128 2.9000 0.1400 -vdw 129 3.0700 0.1700 -vdw 130 0.0000 0.0000 -vdw 131 3.5000 0.0660 -vdw 132 2.5000 0.0300 -vdw 133 3.5000 0.0660 -vdw 134 2.5000 0.0300 -vdw 135 3.5000 0.0660 -vdw 136 2.5000 0.0300 -vdw 137 3.5000 0.0660 -vdw 138 2.5000 0.0300 -vdw 139 3.5000 0.0660 -vdw 140 3.5000 0.0660 -vdw 141 3.5500 0.0700 -vdw 142 3.5500 0.2500 -vdw 143 3.7000 0.2500 -vdw 144 3.5500 0.2500 -vdw 145 3.5500 0.2500 -vdw 146 0.0000 0.0000 -vdw 147 0.0000 0.0000 -vdw 148 3.5000 0.0660 -vdw 149 3.5000 0.0660 -vdw 150 3.5000 0.0660 -vdw 151 3.5000 0.0660 -vdw 152 3.5000 0.0660 -vdw 153 3.5000 0.0660 -vdw 154 3.5000 0.0660 -vdw 155 3.5000 0.0660 -vdw 156 3.5000 0.0660 -vdw 157 3.5000 0.0660 -vdw 158 3.5000 0.0660 -vdw 159 3.5000 0.0660 -vdw 160 3.5000 0.0660 -vdw 161 3.5000 0.0660 -vdw 162 3.5000 0.0660 -vdw 163 3.5500 0.0700 -vdw 164 3.5500 0.2500 -vdw 165 3.5000 0.0660 -vdw 166 3.5000 0.0660 -vdw 167 3.5000 0.0660 -vdw 168 3.4000 0.3000 -vdw 169 3.5500 0.0760 -vdw 170 3.5500 0.0700 -vdw 171 3.5000 0.0660 -vdw 172 3.5000 0.0660 -vdw 173 3.7500 0.1050 -vdw 174 3.7500 0.1050 -vdw 175 3.7500 0.1050 -vdw 176 3.7500 0.1050 -vdw 177 3.7500 0.1050 -vdw 178 2.9600 0.2100 -vdw 179 3.2500 0.1700 -vdw 180 3.2500 0.1700 -vdw 181 3.2500 0.1700 -vdw 182 0.0000 0.0000 -vdw 183 0.0000 0.0000 -vdw 184 3.5000 0.0660 -vdw 185 3.5000 0.0660 -vdw 186 3.5000 0.0660 -vdw 187 3.5000 0.0660 -vdw 188 3.5000 0.0660 -vdw 189 3.7500 0.1050 -vdw 190 2.9600 0.2100 -vdw 191 3.2500 0.1700 -vdw 192 0.0000 0.0000 -vdw 193 3.2500 0.1700 -vdw 194 3.7500 0.1050 -vdw 195 2.9600 0.2100 -vdw 196 0.0000 0.0000 -vdw 197 2.5000 0.0200 -vdw 198 3.5000 0.0660 -vdw 199 3.5000 0.0660 -vdw 200 3.5000 0.0660 -vdw 201 3.5000 0.0660 -vdw 202 3.5500 0.0700 -vdw 203 3.6500 0.1500 -vdw 204 3.2000 0.1700 -vdw 205 3.5500 0.0700 -vdw 206 3.4000 0.3000 -vdw 207 3.2500 0.1700 -vdw 208 3.5500 0.0700 -vdw 209 3.7500 0.1050 -vdw 210 2.9600 0.2100 -vdw 211 3.0000 0.1700 -vdw 212 0.0000 0.0000 -vdw 213 3.7500 0.1050 -vdw 214 2.9600 0.2100 -vdw 215 3.5000 0.0660 -vdw 216 3.5000 0.0660 -vdw 217 3.5000 0.0660 -vdw 218 3.5000 0.0660 -vdw 219 3.7500 0.1050 -vdw 220 2.9600 0.2100 -vdw 221 2.4200 0.0150 -vdw 222 3.7500 0.1050 -vdw 223 2.9600 0.2100 -vdw 224 2.4200 0.0150 -vdw 225 3.5000 0.0660 -vdw 226 3.5000 0.0660 -vdw 227 3.5000 0.0660 -vdw 228 3.5000 0.0660 -vdw 229 3.2500 0.1700 -vdw 230 3.2500 0.1700 -vdw 231 3.2500 0.1700 -vdw 232 0.0000 0.0000 -vdw 233 0.0000 0.0000 -vdw 234 3.5000 0.0660 -vdw 235 3.5000 0.0660 -vdw 236 3.5000 0.0660 -vdw 237 3.5000 0.0660 -vdw 238 3.5000 0.0660 -vdw 239 3.5000 0.0660 -vdw 240 3.5000 0.0660 -vdw 241 3.5000 0.0660 -vdw 242 3.5000 0.0660 -vdw 243 3.2500 0.1700 -vdw 244 0.0000 0.0000 -vdw 245 3.5500 0.0500 -vdw 246 3.2500 0.1700 -vdw 247 0.0000 0.0000 -vdw 248 3.5000 0.0660 -vdw 249 3.5000 0.0660 -vdw 250 3.5000 0.0660 -vdw 251 3.5000 0.0660 -vdw 252 3.2500 0.1700 -vdw 253 0.0000 0.0000 -vdw 254 3.2500 0.1700 -vdw 255 3.5000 0.0800 -vdw 256 3.2500 0.1700 -vdw 257 0.0000 0.0000 -vdw 258 3.5000 0.0800 -vdw 259 2.5000 0.0500 -vdw 260 3.5000 0.0800 -vdw 261 2.5000 0.0500 -vdw 262 3.2500 0.1700 -vdw 263 3.7500 0.1050 -vdw 264 3.2500 0.1700 -vdw 265 3.7500 0.1050 -vdw 266 3.5000 0.0800 -vdw 267 3.5000 0.0800 -vdw 268 0.0000 0.0000 -vdw 269 2.9600 0.2100 -vdw 270 0.0000 0.0000 -vdw 271 2.9600 0.2100 -vdw 272 2.5000 0.0500 -vdw 273 2.5000 0.0500 -vdw 274 3.5000 0.0800 -vdw 275 2.5000 0.0500 -vdw 276 3.2500 0.1700 -vdw 277 3.7500 0.1050 -vdw 278 3.2500 0.1700 -vdw 279 3.5000 0.0800 -vdw 280 3.5000 0.0800 -vdw 281 3.5000 0.0800 -vdw 282 0.0000 0.0000 -vdw 283 2.9600 0.2100 -vdw 284 3.2500 0.1700 -vdw 285 0.0000 0.0000 -vdw 286 0.0000 0.0000 -vdw 287 2.5000 0.0500 -vdw 288 2.5000 0.0500 -vdw 289 3.2500 0.1700 -vdw 290 3.5000 0.0800 -vdw 291 3.2500 0.1700 -vdw 292 3.5000 0.0800 -vdw 293 3.5000 0.0800 -vdw 294 3.5000 0.0800 -vdw 295 3.2500 0.1700 -vdw 296 3.5000 0.0800 -vdw 297 3.2500 0.1700 -vdw 298 2.5000 0.0500 -vdw 299 3.2500 0.1700 -vdw 300 0.0000 0.0000 -vdw 301 0.0000 0.0000 -vdw 302 2.5000 0.0500 -vdw 303 0.0000 0.0000 -vdw 304 3.2500 0.1700 -vdw 305 3.5000 0.0800 -vdw 306 3.2500 0.1700 -vdw 307 3.5000 0.0800 -vdw 308 3.5000 0.0800 -vdw 309 3.7500 0.1050 -vdw 310 0.0000 0.0000 -vdw 311 3.2500 0.1700 -vdw 312 0.0000 0.0000 -vdw 313 2.9600 0.2100 -vdw 314 3.5000 0.0800 -vdw 315 2.5000 0.0500 -vdw 316 3.5000 0.0800 -vdw 317 2.5000 0.0500 -vdw 318 3.5000 0.0800 -vdw 319 2.5000 0.0500 -vdw 320 3.2500 0.1700 -vdw 321 3.7500 0.1050 -vdw 322 3.2500 0.1700 -vdw 323 3.5000 0.0800 -vdw 324 3.5000 0.0800 -vdw 325 3.5000 0.0800 -vdw 326 0.0000 0.0000 -vdw 327 2.9600 0.2100 -vdw 328 0.0000 0.0000 -vdw 329 3.2500 0.1700 -vdw 330 0.0000 0.0000 -vdw 331 0.0000 0.0000 -vdw 332 2.5000 0.0500 -vdw 333 2.5000 0.0500 -vdw 334 3.5000 0.0800 -vdw 335 2.5000 0.0500 -vdw 336 3.7400 0.2000 -vdw 337 2.9600 0.2100 -vdw 338 3.0000 0.1700 -vdw 339 3.5500 0.0660 -vdw 340 3.5000 0.0800 -vdw 341 3.4000 0.3000 -vdw 342 3.5500 0.0760 -vdw 343 3.0500 0.7100 -vdw 344 4.0200 0.7100 -vdw 345 4.2800 0.7100 -vdw 346 4.8100 0.7100 -vdw 347 5.3400 0.0005 -vdw 348 2.8700 0.0005 -vdw 349 4.0700 0.0005 -vdw 350 5.1700 0.0005 -vdw 351 5.6000 0.0005 -vdw 352 6.2000 0.0005 -vdw 353 1.644471 0.875044 -vdw 354 2.412031 0.449657 -vdw 355 3.102688 0.118226 -vdw 356 3.816610 0.047096 -vdw 357 4.2000 0.3000 -vdw 358 2.5000 0.0500 -vdw 359 4.2500 0.5000 -vdw 360 4.2000 0.3000 -vdw 361 2.5000 0.0500 -vdw 362 3.1500 0.2500 -vdw 363 4.2000 0.3000 -vdw 364 2.5000 0.0500 -vdw 365 3.6500 0.1500 -vdw 366 3.4000 0.2500 -vdw 367 4.2000 0.3000 -vdw 368 2.5000 0.0500 -vdw 369 3.4000 0.2500 -vdw 370 2.5000 0.0500 -vdw 371 4.2000 0.3000 -vdw 372 2.5000 0.0500 -vdw 373 4.2000 0.3000 -vdw 374 2.5000 0.0500 -vdw 375 0.0000 0.0000 -vdw 376 3.2000 0.2500 -vdw 377 0.0000 0.0000 -vdw 378 2.81524 0.4000 -vdw 379 3.11815 0.2000 -vdw 380 2.9000 0.1400 -vdw 381 3.7400 0.2000 -vdw 382 3.1500 0.2000 -vdw 383 2.9000 0.1400 -vdw 384 3.5000 0.0660 -vdw 385 2.5000 0.0300 -vdw 386 3.7400 0.2000 -vdw 387 3.1500 0.2000 -vdw 388 2.9000 0.1400 -vdw 389 3.5000 0.0660 -vdw 390 2.5000 0.0300 -vdw 391 3.7400 0.2000 -vdw 392 3.1500 0.2000 -vdw 393 2.9000 0.1400 -vdw 394 3.5000 0.0660 -vdw 395 2.5000 0.0300 -vdw 396 3.5000 0.0660 -vdw 397 2.5000 0.0300 -vdw 398 3.5500 0.0700 -vdw 399 3.5000 0.0660 -vdw 400 2.5000 0.0300 -vdw 401 3.5500 0.0700 -vdw 402 3.5000 0.0660 -vdw 403 2.5000 0.0300 -vdw 404 3.5500 0.0700 -vdw 405 3.5000 0.0660 -vdw 406 3.7500 0.1050 -vdw 407 2.9600 0.2100 -vdw 408 3.0000 0.1700 -vdw 409 3.5000 0.0660 -vdw 410 2.4200 0.0150 -vdw 411 3.7500 0.1050 -vdw 412 3.7500 0.1050 -vdw 413 3.5500 0.0700 -vdw 414 3.0000 0.1700 -vdw 415 3.5500 0.2500 -vdw 416 2.9600 0.1700 -vdw 417 3.5000 0.0660 -vdw 418 2.5000 0.0300 -vdw 419 3.2500 0.1700 -vdw 420 0.0000 0.0000 -vdw 421 3.2500 0.1700 -vdw 422 0.0000 0.0000 -vdw 423 3.5000 0.0660 -vdw 424 2.5000 0.0300 -vdw 425 3.5000 0.0660 -vdw 426 2.5000 0.0300 -vdw 427 3.5000 0.0660 -vdw 428 2.5000 0.0300 -vdw 429 3.5500 0.0700 -vdw 430 3.5500 0.0700 -vdw 431 3.5000 0.0660 -vdw 432 3.5000 0.0660 -vdw 433 3.5000 0.0660 -vdw 434 3.5500 0.2500 -vdw 435 2.9600 0.1700 -vdw 436 3.5600 0.3950 -vdw 437 3.5600 0.3950 -vdw 438 2.9300 0.2800 -vdw 439 3.5000 0.0660 -vdw 440 3.5000 0.0660 -vdw 441 3.5500 0.0700 -vdw 442 3.5500 0.0700 -vdw 443 3.5500 0.0700 -vdw 444 3.2500 0.1700 -vdw 445 0.0000 0.0000 -vdw 446 3.5000 0.0660 -vdw 447 3.5500 0.0700 -vdw 448 3.5500 0.0700 -vdw 449 3.5500 0.0700 -vdw 450 3.5500 0.0700 -vdw 451 3.5500 0.0700 -vdw 452 3.2500 0.1700 -vdw 453 3.2500 0.1700 -vdw 454 0.0000 0.0000 -vdw 455 3.5500 0.0700 -vdw 456 3.5000 0.0660 -vdw 457 3.5000 0.0660 -vdw 458 3.5500 0.0760 -vdw 459 3.5500 0.0760 -vdw 460 3.5500 0.0700 -vdw 461 3.2500 0.1700 -vdw 462 3.5500 0.0700 -vdw 463 3.5500 0.0700 -vdw 464 3.5500 0.0700 -vdw 465 2.4200 0.0300 -vdw 466 2.4200 0.0300 -vdw 467 2.4200 0.0300 -vdw 468 3.2500 0.1700 -vdw 469 3.5500 0.0700 -vdw 470 2.4200 0.0300 -vdw 471 3.2500 0.1700 -vdw 472 3.5500 0.0700 -vdw 473 3.5500 0.0700 -vdw 474 3.5500 0.0700 -vdw 475 2.4200 0.0300 -vdw 476 2.4200 0.0300 -vdw 477 2.4200 0.0300 -vdw 478 3.2500 0.1700 -vdw 479 3.5500 0.0700 -vdw 480 3.5500 0.0700 -vdw 481 2.4200 0.0300 -vdw 482 2.4200 0.0300 -vdw 483 3.2500 0.1700 -vdw 484 3.5500 0.0700 -vdw 485 3.5500 0.0700 -vdw 486 0.0000 0.0000 -vdw 487 2.4200 0.0300 -vdw 488 2.4200 0.0300 -vdw 489 3.2500 0.1700 -vdw 490 3.2500 0.1700 -vdw 491 3.5500 0.0700 -vdw 492 3.5500 0.0700 -vdw 493 3.5500 0.0700 -vdw 494 0.0000 0.0000 -vdw 495 2.4200 0.0300 -vdw 496 2.4200 0.0300 -vdw 497 2.4200 0.0300 -vdw 498 3.2500 0.1700 -vdw 499 3.5500 0.0700 -vdw 500 3.2500 0.1700 -vdw 501 3.5500 0.0700 -vdw 502 3.5500 0.0700 -vdw 503 0.0000 0.0000 -vdw 504 2.4200 0.0300 -vdw 505 2.4200 0.0300 -vdw 506 2.4200 0.0300 -vdw 507 2.9000 0.1400 -vdw 508 3.5500 0.0700 -vdw 509 3.5500 0.0760 -vdw 510 2.4200 0.0300 -vdw 511 2.4200 0.0300 -vdw 512 2.9000 0.1400 -vdw 513 3.5500 0.0700 -vdw 514 3.2500 0.1700 -vdw 515 3.5500 0.0700 -vdw 516 3.5500 0.0700 -vdw 517 2.4200 0.0300 -vdw 518 2.4200 0.0300 -vdw 519 2.4200 0.0300 -vdw 520 2.9000 0.1400 -vdw 521 3.2500 0.1700 -vdw 522 3.5500 0.0700 -vdw 523 3.5500 0.0700 -vdw 524 3.5500 0.0700 -vdw 525 2.4200 0.0300 -vdw 526 2.4200 0.0300 -vdw 527 2.4200 0.0300 -vdw 528 3.2500 0.1700 -vdw 529 3.5500 0.0700 -vdw 530 3.5500 0.0700 -vdw 531 3.5500 0.0700 -vdw 532 3.5500 0.0700 -vdw 533 3.5500 0.0700 -vdw 534 3.5500 0.0700 -vdw 535 3.5500 0.0700 -vdw 536 3.5500 0.0700 -vdw 537 0.0000 0.0000 -vdw 538 2.4200 0.0300 -vdw 539 2.4200 0.0300 -vdw 540 2.4200 0.0300 -vdw 541 2.4200 0.0300 -vdw 542 2.4200 0.0300 -vdw 543 2.4200 0.0300 -vdw 544 3.2500 0.1700 -vdw 545 3.5500 0.0700 -vdw 546 3.5500 0.0700 -vdw 547 3.5500 0.0700 -vdw 548 3.5500 0.0700 -vdw 549 3.5500 0.0700 -vdw 550 3.5500 0.0700 -vdw 551 3.5500 0.0700 -vdw 552 3.5500 0.0700 -vdw 553 3.5500 0.0700 -vdw 554 2.4200 0.0300 -vdw 555 2.4200 0.0300 -vdw 556 2.4200 0.0300 -vdw 557 2.4200 0.0300 -vdw 558 2.4200 0.0300 -vdw 559 2.4200 0.0300 -vdw 560 2.4200 0.0300 -vdw 561 3.2500 0.1700 -vdw 562 3.5500 0.0700 -vdw 563 3.2500 0.1700 -vdw 564 3.5500 0.0700 -vdw 565 3.5500 0.0700 -vdw 566 3.5500 0.0700 -vdw 567 3.2500 0.1700 -vdw 568 3.5500 0.0700 -vdw 569 3.2500 0.1700 -vdw 570 2.4200 0.0300 -vdw 571 2.4200 0.0300 -vdw 572 2.4200 0.0300 -vdw 573 0.0000 0.0000 -vdw 574 3.5500 0.2500 -vdw 575 3.5500 0.0700 -vdw 576 3.2500 0.1700 -vdw 577 3.5500 0.0700 -vdw 578 3.5500 0.0700 -vdw 579 2.4200 0.0300 -vdw 580 2.4200 0.0300 -vdw 581 2.4200 0.0300 -vdw 582 3.2500 0.1700 -vdw 583 3.5500 0.0700 -vdw 584 2.4200 0.0300 -vdw 585 3.5500 0.0700 -vdw 586 3.5000 0.0660 -vdw 587 3.2500 0.1700 -vdw 588 3.5500 0.0700 -vdw 589 3.5500 0.0700 -vdw 590 3.5500 0.0700 -vdw 591 3.5500 0.0700 -vdw 592 3.5500 0.0700 -vdw 593 3.5500 0.0700 -vdw 594 2.4200 0.0300 -vdw 595 2.4200 0.0300 -vdw 596 2.4200 0.0300 -vdw 597 2.4200 0.0300 -vdw 598 3.2500 0.1700 -vdw 599 3.5500 0.0700 -vdw 600 3.2500 0.1700 -vdw 601 3.5500 0.0700 -vdw 602 3.5500 0.0700 -vdw 603 3.5000 0.0660 -vdw 604 2.4200 0.0300 -vdw 605 2.4200 0.0300 -vdw 606 2.4200 0.0300 -vdw 607 2.5000 0.0300 -vdw 608 3.5000 0.0660 -vdw 609 3.5000 0.0660 -vdw 610 3.5000 0.0660 -vdw 611 3.5000 0.0660 -vdw 612 3.5000 0.0660 -vdw 613 3.5000 0.0660 -vdw 614 3.5000 0.0660 -vdw 615 3.5000 0.0660 -vdw 616 3.5000 0.0660 -vdw 617 3.5000 0.0660 -vdw 618 3.5000 0.0660 -vdw 619 3.5000 0.0660 -vdw 620 3.5000 0.0660 -vdw 621 3.5000 0.0660 -vdw 622 3.5000 0.0660 -vdw 623 3.5500 0.2500 -vdw 624 0.0000 0.0000 -vdw 625 3.5500 0.0700 -vdw 626 3.7500 0.1050 -vdw 627 3.2500 0.1700 -vdw 628 3.5000 0.0660 -vdw 629 3.5000 0.0660 -vdw 630 3.5000 0.0660 -vdw 631 3.5500 0.0700 -vdw 632 3.5500 0.0700 -vdw 633 3.5500 0.0700 -vdw 634 3.5500 0.0700 -vdw 635 3.5500 0.0700 -vdw 636 3.5500 0.0700 -vdw 637 3.5500 0.2500 -vdw 638 3.4730 0.0540 -vdw 639 3.3000 0.0500 -vdw 640 3.3000 0.0500 -vdw 641 3.5500 0.0760 -vdw 642 3.5000 0.0660 -vdw 643 2.5000 0.0300 -vdw 644 3.7500 0.0600 -vdw 645 3.4730 0.0540 -vdw 646 3.3000 0.0500 -vdw 647 3.3000 0.0500 -vdw 648 2.9500 0.0400 -vdw 649 3.5500 0.0760 -vdw 650 3.4000 0.3000 -vdw 651 2.4200 0.0300 -vdw 652 3.5000 0.0660 -vdw 653 3.5000 0.0660 -vdw 654 3.5000 0.0660 -vdw 655 3.5500 0.0700 -vdw 656 2.4200 0.0300 -vdw 657 3.5500 0.0700 -vdw 658 2.4200 0.0300 -vdw 659 3.5500 0.0700 -vdw 660 2.8500 0.0610 -vdw 661 3.5500 0.0700 -vdw 662 2.8500 0.0610 -vdw 663 3.4700 0.4700 -vdw 664 3.9050 0.1180 -vdw 665 3.5500 0.0700 -vdw 666 3.2500 0.0620 -vdw 667 2.9400 0.0610 -vdw 668 3.5500 0.0700 -vdw 669 2.8500 0.0610 -vdw 670 3.5500 0.0700 -vdw 671 3.4700 0.4700 -vdw 672 3.5500 0.0700 -vdw 673 3.7500 0.6000 -vdw 674 3.5000 0.0660 -vdw 675 3.5500 0.2500 -vdw 676 3.5500 0.0700 -vdw 677 3.5500 0.0700 -vdw 678 3.5500 0.0700 -vdw 679 3.5500 0.0700 -vdw 680 3.5500 0.0700 -vdw 681 2.4200 0.0300 -vdw 682 2.4200 0.0300 -vdw 683 3.5500 0.0500 -vdw 684 3.2500 0.1700 -vdw 685 0.0000 0.0000 -vdw 686 0.0000 0.0000 -vdw 687 2.4200 0.0300 -vdw 688 3.5000 0.0660 -vdw 689 3.5000 0.0660 -vdw 690 3.2500 0.1700 -vdw 691 3.2500 0.1700 -vdw 692 3.2500 0.1700 -vdw 693 3.5500 0.0500 -vdw 694 3.2000 0.1700 -vdw 695 3.3000 0.0660 -vdw 696 3.3000 0.0660 -vdw 697 3.3000 0.0660 -vdw 698 3.3000 0.0660 -vdw 699 3.3000 0.0660 -vdw 700 2.5000 0.0150 -vdw 701 3.2500 0.1200 -vdw 702 2.9600 0.1700 -vdw 703 3.5000 0.0660 -vdw 704 2.5000 0.0150 -vdw 705 3.5000 0.0660 -vdw 706 3.5000 0.0660 -vdw 707 3.5000 0.0660 -vdw 708 3.2500 0.1200 -vdw 709 3.5500 0.0700 -vdw 710 3.3000 0.0660 -vdw 711 3.2500 0.1700 -vdw 712 2.9600 0.2100 -vdw 713 3.7500 0.1050 -vdw 714 3.0000 0.1700 -vdw 715 3.5000 0.0660 -vdw 716 3.5000 0.0660 -vdw 717 3.5000 0.0660 -vdw 718 2.4200 0.0150 -vdw 719 2.4200 0.0150 -vdw 720 2.4200 0.0150 -vdw 721 2.9000 0.1400 -vdw 722 3.7400 0.2000 -vdw 723 3.5000 0.0660 -vdw 724 3.5000 0.0660 -vdw 725 2.5000 0.0300 -vdw 726 3.7400 0.2000 -vdw 727 3.1181 0.0610 -vdw 728 3.1500 0.1700 -vdw 729 2.8600 0.2100 -vdw 730 3.3000 0.1700 -vdw 731 3.3000 0.1700 -vdw 732 3.3000 0.1700 -vdw 733 3.5000 0.0660 -vdw 734 3.5000 0.0660 -vdw 735 3.5000 0.0660 -vdw 736 3.5000 0.0660 -vdw 737 3.5000 0.0660 -vdw 738 3.5000 0.0660 -vdw 739 0.0000 0.0000 -vdw 740 0.0000 0.0000 -vdw 741 2.5000 0.0150 -vdw 742 3.5000 0.0660 -vdw 743 3.5000 0.0660 -vdw 744 3.5000 0.0660 -vdw 745 3.5000 0.0660 -vdw 746 3.5500 0.0700 -vdw 747 3.5500 0.0700 -vdw 748 3.5500 0.0700 -vdw 749 3.5000 0.0660 -vdw 750 3.5000 0.0660 -vdw 751 3.5000 0.0660 -vdw 752 3.5000 0.0660 -vdw 753 3.5000 0.0660 -vdw 754 3.5000 0.0660 -vdw 755 3.3000 0.0860 -vdw 756 2.4200 0.0150 -vdw 757 3.3000 0.2100 -vdw 758 3.3000 0.1350 -vdw 759 3.3000 0.1000 -vdw 760 2.5000 0.0150 -vdw 761 3.5000 0.0660 -vdw 762 3.5000 0.0660 -vdw 763 3.5000 0.0660 -vdw 764 3.1200 0.1700 -vdw 765 0.0000 0.0000 -vdw 766 3.2500 0.1700 -vdw 767 3.2500 0.1700 -vdw 768 3.2500 0.1700 -vdw 769 3.3000 0.2100 -vdw 770 3.2500 0.1700 -vdw 771 0.0000 0.0000 -vdw 772 3.5000 0.0660 -vdw 773 3.5000 0.0660 -vdw 774 3.5000 0.0660 -vdw 775 3.5000 0.0660 -vdw 776 3.5500 0.0700 -vdw 777 3.5500 0.0760 -vdw 778 3.5500 0.0700 -vdw 779 3.5500 0.0700 -vdw 780 2.5000 0.0300 -vdw 781 3.5000 0.0660 -vdw 782 3.7500 0.1050 -vdw 783 3.2500 0.1700 -vdw 784 2.9600 0.2100 -vdw 785 0.0000 0.0000 -vdw 786 2.9400 0.0610 -vdw 787 3.5000 0.0660 -vdw 788 2.5000 0.0300 -vdw 789 3.5000 0.0660 -vdw 790 3.5000 0.0660 -vdw 791 3.5000 0.0660 -vdw 792 3.5000 0.0660 -vdw 793 3.5000 0.0660 -vdw 794 3.5000 0.0970 -vdw 795 2.9500 0.0530 -vdw 796 3.2500 0.0620 -vdw 797 2.5000 0.0300 -vdw 798 3.5000 0.0660 -vdw 799 3.5000 0.0660 -vdw 800 3.4000 0.3000 -vdw 801 3.5000 0.0660 -vdw 802 2.5000 0.0300 -vdw 803 3.5000 0.0660 -vdw 804 3.5000 0.0660 -vdw 805 3.4700 0.4700 -vdw 806 3.5000 0.0660 -vdw 807 2.5000 0.0300 -vdw 808 3.5000 0.0660 -vdw 809 3.5000 0.0660 -vdw 810 2.9400 0.0610 -vdw 811 3.4000 0.3000 -vdw 812 3.4700 0.4700 -vdw 813 3.5500 0.0700 -vdw 814 2.9000 0.1400 -vdw 815 3.5000 0.0660 -vdw 816 2.9000 0.0600 -vdw 817 3.2500 0.1700 -vdw 818 3.5500 0.0700 -vdw 819 3.5000 0.0660 -vdw 820 3.7500 0.1050 -vdw 821 3.7500 0.1050 -vdw 822 2.9600 0.2100 -vdw 823 3.2500 0.1700 -vdw 824 0.0000 0.0000 -vdw 825 3.1200 0.1700 -vdw 826 0.0000 0.0000 -vdw 827 3.5000 0.0660 -vdw 828 3.5000 0.0660 -vdw 829 3.5500 0.0700 -vdw 830 3.5500 0.0700 -vdw 831 3.5500 0.0700 -vdw 832 3.5500 0.0700 -vdw 833 3.5500 0.0700 -vdw 834 1.9600 0.0125 -vdw 835 3.5000 0.0660 -vdw 836 3.5000 0.0660 -vdw 837 3.5000 0.0660 -vdw 838 3.7500 0.6000 -vdw 839 2.5000 0.0300 -vdw 840 3.2500 0.1700 -vdw 841 3.5500 0.0700 -vdw 842 3.5500 0.0700 -vdw 843 3.2500 0.1700 -vdw 844 3.5500 0.0700 -vdw 845 3.7500 0.1050 -vdw 846 2.9600 0.2100 -vdw 847 3.2500 0.1700 -vdw 848 3.5000 0.0660 -vdw 849 3.5000 0.0660 -vdw 850 3.5000 0.0660 -vdw 851 3.5000 0.0660 -vdw 852 2.4200 0.0150 -vdw 853 3.7500 0.1050 -vdw 854 2.9600 0.2100 -vdw 855 2.4200 0.0150 -vdw 856 3.5000 0.0660 -vdw 857 3.5000 0.0660 -vdw 858 3.5000 0.0660 -vdw 859 3.5000 0.0660 -vdw 860 3.5000 0.0660 -vdw 861 3.5000 0.0660 -vdw 862 3.5000 0.0660 -vdw 863 3.5000 0.0660 -vdw 864 3.5000 0.0660 -vdw 865 3.5000 0.0660 -vdw 866 4.0000 0.1000 -vdw 867 4.0000 0.1000 -vdw 868 4.0000 0.1000 -vdw 869 4.0000 0.1000 -vdw 870 2.5000 0.0300 -vdw 871 3.5000 0.0660 -vdw 872 3.5000 0.0660 -vdw 873 3.5000 0.0660 -vdw 874 3.5000 0.0660 -vdw 875 3.0800 0.7200 -vdw 876 4.1800 0.11779 -vdw 877 4.5100 0.0900 -vdw 878 5.1500 0.0700 -vdw 879 2.7000 0.018279 -vdw 880 3.3500 0.002772 -vdw 881 4.0600 0.000328 -vdw 882 4.3200 0.000171 -vdw 883 4.8200 0.000081 -vdw 884 2.9100 0.875044 -vdw 885 3.4700 0.449657 -vdw 886 3.8200 0.118226 -vdw 887 4.1800 0.047096 -vdw 888 3.5000 0.0660 -vdw 889 3.5000 0.0660 -vdw 890 3.5000 0.0660 -vdw 891 3.5000 0.0660 -vdw 892 2.5000 0.0300 -vdw 893 3.2500 0.1700 -vdw 894 3.5500 0.0700 -vdw 895 3.2500 0.1700 -vdw 896 3.5500 0.0700 -vdw 897 3.5500 0.0760 -vdw 898 3.5500 0.0760 -vdw 899 2.4200 0.0300 -vdw 900 3.3000 0.0860 -vdw 901 3.3000 0.0860 -vdw 902 3.3000 0.0860 -vdw 903 3.3000 0.0860 -vdw 904 3.3000 0.0860 -vdw 905 2.9600 0.2100 -vdw 906 3.5000 0.0660 - - - ################################## - ## ## - ## Bond Stretching Parameters ## - ## ## - ################################## - - -bond 1 2 367.00 1.3800 -bond 1 3 420.00 1.3570 -bond 1 13 367.00 1.3600 -bond 1 19 450.00 1.2790 -bond 1 25 300.00 0.3000 -bond 1 47 420.00 1.3400 -bond 1 48 420.00 1.3540 -bond 1 82 420.00 1.3540 -bond 1 83 420.00 1.3540 -bond 1 84 420.00 1.3540 -bond 1 87 420.00 1.3540 -bond 1 88 420.00 1.3540 -bond 1 108 461.00 1.5700 -bond 2 2 260.00 1.5260 -bond 2 3 317.00 1.5220 -bond 2 5 386.00 1.4250 -bond 2 6 260.00 1.5260 -bond 2 10 260.00 1.5260 -bond 2 11 317.00 1.5000 -bond 2 12 317.00 1.5100 -bond 2 13 260.00 1.5260 -bond 2 14 317.00 1.5000 -bond 2 15 222.00 1.8100 -bond 2 16 222.00 1.8100 -bond 2 20 320.00 1.4250 -bond 2 24 337.00 1.4490 -bond 2 44 382.00 1.4480 -bond 2 48 317.00 1.5100 -bond 2 51 260.00 1.5260 -bond 2 53 367.00 1.4710 -bond 2 55 337.00 1.4630 -bond 2 80 317.00 1.4950 -bond 3 3 350.00 1.5100 -bond 3 4 570.00 1.2290 -bond 3 5 450.00 1.3640 -bond 3 6 317.00 1.5220 -bond 3 10 317.00 1.5220 -bond 3 12 469.00 1.4000 -bond 3 13 317.00 1.5220 -bond 3 19 400.00 1.4440 -bond 3 20 214.00 1.3270 -bond 3 21 300.00 1.7900 -bond 3 24 490.00 1.3350 -bond 3 44 317.00 1.5220 -bond 3 46 340.00 1.0900 -bond 3 47 410.00 1.4440 -bond 3 48 400.00 1.4900 -bond 3 50 385.00 1.4600 -bond 3 52 656.00 1.2500 -bond 3 56 457.00 1.3580 -bond 3 57 418.00 1.3880 -bond 3 60 447.00 1.4190 -bond 3 65 300.00 1.9800 -bond 3 84 400.00 1.4900 -bond 3 86 385.00 1.4600 -bond 3 105 424.00 1.3830 -bond 3 107 490.00 1.3350 -bond 4 25 553.00 0.3000 -bond 4 64 525.00 1.4800 -bond 4 89 570.00 1.2290 -bond 4 110 700.00 1.1710 -bond 5 6 386.00 1.4250 -bond 5 7 553.00 0.9450 -bond 5 10 386.00 1.4250 -bond 5 13 320.00 1.4100 -bond 5 20 250.00 1.4700 -bond 5 24 400.00 1.3800 -bond 5 25 340.00 0.3000 -bond 5 44 320.00 1.4500 -bond 5 47 450.00 1.3700 -bond 5 48 450.00 1.3640 -bond 5 51 320.00 1.3800 -bond 5 64 230.00 1.6100 -bond 5 79 450.00 1.6700 -bond 5 106 94.00 1.8000 -bond 5 108 374.00 1.6400 -bond 6 6 260.00 1.5260 -bond 6 10 260.00 1.5260 -bond 6 11 317.00 1.5000 -bond 6 13 260.00 1.5260 -bond 6 14 317.00 1.5000 -bond 6 15 222.00 1.8100 -bond 6 16 222.00 1.8100 -bond 6 20 320.00 1.4250 -bond 6 24 337.00 1.4490 -bond 6 44 382.00 1.4480 -bond 6 47 317.00 1.5100 -bond 6 51 260.00 1.5260 -bond 6 53 367.00 1.4710 -bond 6 55 337.00 1.4630 -bond 6 79 222.00 1.8100 -bond 6 105 337.00 1.4750 -bond 7 20 553.00 0.9450 -bond 7 25 340.00 0.1000 -bond 9 9 530.00 1.3400 -bond 9 11 530.00 1.3400 -bond 9 14 530.00 1.3400 -bond 10 10 260.00 1.5260 -bond 10 11 317.00 1.5000 -bond 10 14 317.00 1.5000 -bond 10 20 320.00 1.4250 -bond 10 24 337.00 1.4490 -bond 10 44 382.00 1.4480 -bond 10 105 337.00 1.4750 -bond 11 11 530.00 1.3400 -bond 11 13 317.00 1.5000 -bond 11 14 530.00 1.3400 -bond 11 79 222.00 1.7600 -bond 12 12 469.00 1.4000 -bond 12 48 469.00 1.4000 -bond 12 60 469.00 1.4000 -bond 12 81 469.00 1.4000 -bond 13 13 268.00 1.5290 -bond 13 14 317.00 1.5000 -bond 13 15 222.00 1.8100 -bond 13 16 222.00 1.8100 -bond 13 18 390.00 1.4300 -bond 13 19 390.00 1.4700 -bond 13 20 320.00 1.4100 -bond 13 21 245.00 1.7810 -bond 13 22 340.00 1.7900 -bond 13 24 337.00 1.4490 -bond 13 25 340.00 0.3000 -bond 13 44 382.00 1.4480 -bond 13 46 340.00 1.0900 -bond 13 47 317.00 1.5100 -bond 13 48 317.00 1.5100 -bond 13 50 317.00 1.5100 -bond 13 51 268.00 1.5290 -bond 13 53 367.00 1.4710 -bond 13 55 337.00 1.4630 -bond 13 56 337.00 1.4490 -bond 13 57 337.00 1.4750 -bond 13 60 317.00 1.5100 -bond 13 64 212.00 1.8430 -bond 13 65 245.00 1.9450 -bond 13 66 200.00 2.1900 -bond 13 79 340.00 1.7700 -bond 13 80 317.00 1.4950 -bond 13 83 317.00 1.5040 -bond 13 84 317.00 1.5040 -bond 13 85 317.00 1.5040 -bond 13 87 317.00 1.4950 -bond 13 90 337.00 1.4490 -bond 13 91 280.00 1.5100 -bond 13 95 532.80 1.4600 -bond 13 101 382.00 1.4480 -bond 13 102 375.00 1.4900 -bond 13 104 212.00 1.8200 -bond 13 105 337.00 1.4750 -bond 13 107 337.00 1.4490 -bond 13 108 187.00 1.8600 -bond 13 109 317.00 1.5100 -bond 14 14 530.00 1.3400 -bond 15 17 274.00 1.3360 -bond 15 48 250.00 1.7400 -bond 16 16 166.00 2.0380 -bond 16 19 300.00 1.6850 -bond 16 24 250.00 1.7300 -bond 16 25 340.00 0.5000 -bond 16 47 250.00 1.7600 -bond 16 48 250.00 1.7600 -bond 16 61 250.00 1.7300 -bond 16 82 250.00 1.7600 -bond 16 84 250.00 1.7400 -bond 16 91 222.00 1.8100 -bond 16 108 144.00 2.1500 -bond 17 25 340.00 0.1000 -bond 18 18 550.00 1.1200 -bond 18 19 650.00 1.1570 -bond 18 48 400.00 1.4100 -bond 18 56 550.00 1.2400 -bond 19 19 1150.00 1.2100 -bond 19 21 330.00 1.6370 -bond 19 46 420.00 1.0800 -bond 19 47 400.00 1.4260 -bond 19 48 400.00 1.4510 -bond 19 50 400.00 1.4260 -bond 19 65 330.00 1.7840 -bond 19 88 400.00 1.4510 -bond 19 91 400.00 1.4510 -bond 20 20 250.00 1.4700 -bond 20 21 200.00 1.6900 -bond 20 24 320.00 1.4500 -bond 20 25 340.00 0.3000 -bond 20 44 320.00 1.4500 -bond 20 47 450.00 1.3700 -bond 20 48 450.00 1.3640 -bond 20 51 320.00 1.3800 -bond 20 60 340.00 1.3600 -bond 20 61 462.00 1.3990 -bond 20 64 230.00 1.6100 -bond 20 82 462.00 1.3570 -bond 20 84 340.00 1.3600 -bond 20 108 374.00 1.6400 -bond 21 25 300.00 0.3000 -bond 21 47 300.00 1.7250 -bond 21 48 300.00 1.7250 -bond 21 82 300.00 1.7250 -bond 21 83 300.00 1.7250 -bond 21 84 300.00 1.7250 -bond 21 87 300.00 1.7250 -bond 21 88 300.00 1.7250 -bond 21 108 223.00 2.0200 -bond 22 23 700.00 1.5300 -bond 22 25 340.00 0.5000 -bond 23 25 340.00 0.3000 -bond 23 79 700.00 1.4400 -bond 24 25 367.00 0.3000 -bond 24 45 434.00 1.0100 -bond 24 48 427.00 1.3810 -bond 24 59 427.00 1.3810 -bond 24 79 434.00 1.6700 -bond 24 84 427.00 1.3810 -bond 24 88 427.00 1.3810 -bond 24 91 337.00 1.4490 -bond 24 103 500.00 1.2700 -bond 24 106 40.00 2.0500 -bond 25 25 340.00 0.3000 -bond 25 44 340.00 0.3000 -bond 25 45 340.00 0.1000 -bond 25 46 340.00 0.3000 -bond 25 47 340.00 0.3000 -bond 25 48 367.00 0.3000 -bond 25 49 340.00 0.3000 -bond 25 53 340.00 0.3000 -bond 25 56 367.00 0.3000 -bond 25 61 367.00 0.3000 -bond 25 65 300.00 0.3000 -bond 25 103 340.00 0.1000 -bond 31 32 600.00 0.9572 -bond 31 33 900.00 0.1500 -bond 31 106 40.00 2.0500 -bond 34 35 529.60 0.9572 -bond 36 37 600.00 0.9572 -bond 36 38 900.00 0.1750 -bond 39 40 600.00 0.9572 -bond 39 41 900.00 0.7000 -bond 42 43 600.00 1.0000 -bond 44 44 350.00 1.4450 -bond 44 45 434.00 1.0100 -bond 44 48 481.00 1.3400 -bond 44 79 340.00 1.7700 -bond 44 91 382.00 1.4480 -bond 44 108 266.00 1.7400 -bond 45 53 434.00 1.0100 -bond 45 55 434.00 1.0100 -bond 45 56 434.00 1.0100 -bond 45 57 434.00 1.0100 -bond 45 101 434.00 1.0100 -bond 45 105 434.00 1.0100 -bond 45 108 166.00 1.4800 -bond 46 47 340.00 1.0800 -bond 46 50 340.00 1.0800 -bond 46 51 340.00 1.0900 -bond 46 80 340.00 1.0800 -bond 46 91 340.00 1.0880 -bond 46 95 532.80 1.0840 -bond 46 108 166.00 1.4800 -bond 46 109 340.00 1.0800 -bond 47 47 549.00 1.3400 -bond 47 48 427.00 1.4330 -bond 47 50 549.00 1.3400 -bond 47 57 448.00 1.3650 -bond 47 58 367.00 1.0800 -bond 47 65 300.00 1.9000 -bond 47 66 250.00 2.0800 -bond 47 86 385.00 1.4600 -bond 47 91 317.00 1.5100 -bond 47 105 448.00 1.3650 -bond 47 110 700.00 1.3050 -bond 48 48 469.00 1.4000 -bond 48 49 367.00 1.0800 -bond 48 50 427.00 1.4330 -bond 48 53 400.00 1.4500 -bond 48 55 481.00 1.3400 -bond 48 56 483.00 1.3390 -bond 48 57 427.00 1.3810 -bond 48 60 469.00 1.4040 -bond 48 61 414.00 1.3910 -bond 48 64 220.00 1.7800 -bond 48 65 300.00 1.8700 -bond 48 66 250.00 2.0800 -bond 48 79 340.00 1.7700 -bond 48 81 469.00 1.4000 -bond 48 84 546.00 1.3670 -bond 48 86 469.00 1.4000 -bond 48 88 469.00 1.4210 -bond 48 91 317.00 1.4900 -bond 48 101 382.00 1.3850 -bond 48 102 400.00 1.4600 -bond 48 109 427.00 1.4330 -bond 49 59 367.00 1.0800 -bond 49 62 340.00 1.0800 -bond 49 82 367.00 1.0800 -bond 49 83 367.00 1.0800 -bond 49 84 367.00 1.0800 -bond 49 85 367.00 1.0800 -bond 49 87 367.00 1.0800 -bond 49 88 367.00 1.0800 -bond 50 50 385.00 1.4600 -bond 50 56 457.00 1.2900 -bond 50 84 549.00 1.3650 -bond 50 109 385.00 1.4600 -bond 51 105 337.00 1.4750 -bond 52 64 525.00 1.4800 -bond 53 54 434.00 1.0100 -bond 54 55 434.00 1.0100 -bond 55 59 481.00 1.3400 -bond 55 82 481.00 1.3400 -bond 56 56 500.00 1.3200 -bond 56 59 502.00 1.3240 -bond 56 60 461.00 1.3540 -bond 56 82 461.00 1.3540 -bond 56 86 483.00 1.3390 -bond 56 103 550.00 1.2100 -bond 56 109 457.00 1.2900 -bond 57 60 436.00 1.3740 -bond 57 61 400.00 1.3490 -bond 57 62 440.00 1.3710 -bond 57 81 428.00 1.3800 -bond 57 82 477.00 1.3430 -bond 57 84 427.00 1.3810 -bond 57 85 427.00 1.3810 -bond 57 86 385.00 1.4400 -bond 58 83 367.00 1.0800 -bond 58 84 367.00 1.0800 -bond 59 63 367.00 1.0800 -bond 60 60 520.00 1.3700 -bond 60 61 414.00 1.3910 -bond 60 80 388.00 1.4590 -bond 60 81 447.00 1.4190 -bond 60 87 469.00 1.4240 -bond 60 105 436.00 1.3740 -bond 61 61 400.00 1.2800 -bond 61 62 529.00 1.3040 -bond 61 82 488.00 1.3350 -bond 61 83 410.00 1.3940 -bond 61 84 410.00 1.3940 -bond 61 88 410.00 1.3200 -bond 62 63 367.00 1.0800 -bond 62 105 440.00 1.3710 -bond 63 82 367.00 1.0800 -bond 64 108 108.00 2.2500 -bond 65 82 300.00 1.8700 -bond 65 83 300.00 1.8700 -bond 65 84 300.00 1.8700 -bond 65 87 300.00 1.8700 -bond 65 88 300.00 1.8700 -bond 65 108 151.00 2.1900 -bond 66 82 250.00 2.0800 -bond 66 83 250.00 2.0800 -bond 66 84 250.00 2.0800 -bond 66 87 250.00 2.0800 -bond 66 88 250.00 2.0800 -bond 66 108 108.00 2.4400 -bond 77 78 500.00 1.8000 -bond 80 84 546.00 1.3520 -bond 82 86 385.00 1.4600 -bond 82 87 520.00 1.3700 -bond 83 84 520.00 1.3700 -bond 83 86 385.00 1.4600 -bond 84 84 512.00 1.3750 -bond 84 86 385.00 1.4600 -bond 84 87 546.00 1.3670 -bond 84 88 520.00 1.3700 -bond 85 85 520.00 1.3700 -bond 86 86 385.00 1.4600 -bond 86 87 385.00 1.4600 -bond 86 88 385.00 1.4600 -bond 87 87 469.00 1.4240 -bond 87 88 469.00 1.4240 -bond 89 90 490.00 1.3350 -bond 89 91 317.00 1.5220 -bond 90 91 337.00 1.4490 -bond 91 91 260.00 1.5200 -bond 102 103 550.00 1.2250 -bond 108 108 94.00 2.3200 -bond 109 109 549.00 1.3450 - - - ################################ - ## ## - ## Angle Bending Parameters ## - ## ## - ################################ - - -angle 25 1 25 33.00 109.47 -angle 1 2 2 50.00 109.50 -angle 2 2 2 63.00 112.40 -angle 2 2 3 63.00 112.40 -angle 2 2 5 80.00 109.50 -angle 2 2 6 63.00 112.40 -angle 6 2 6 63.00 112.40 -angle 5 2 6 80.00 109.50 -angle 2 2 10 63.00 112.40 -angle 3 2 10 63.00 112.40 -angle 6 2 10 63.00 112.40 -angle 10 2 10 63.00 112.40 -angle 5 2 10 80.00 109.50 -angle 10 2 12 63.00 114.00 -angle 6 2 13 63.00 112.40 -angle 10 2 15 50.00 108.60 -angle 2 2 16 50.00 114.70 -angle 10 2 16 50.00 114.70 -angle 2 2 20 80.00 109.50 -angle 6 2 20 80.00 109.50 -angle 10 2 20 80.00 109.50 -angle 3 2 24 80.00 110.30 -angle 2 2 24 80.00 111.20 -angle 2 2 44 56.20 109.47 -angle 6 2 44 56.20 109.47 -angle 10 2 44 56.20 109.47 -angle 13 2 44 56.20 109.47 -angle 3 2 44 80.00 111.20 -angle 2 2 48 63.00 112.40 -angle 10 2 48 63.00 114.00 -angle 2 2 51 63.00 112.40 -angle 6 2 51 63.00 112.40 -angle 2 2 53 80.00 111.20 -angle 2 2 55 80.00 111.20 -angle 10 2 80 63.00 115.60 -angle 2 3 4 80.00 120.40 -angle 1 3 4 80.00 121.00 -angle 3 3 4 80.00 121.40 -angle 4 3 4 80.00 126.00 -angle 4 3 5 80.00 121.00 -angle 4 3 6 80.00 120.40 -angle 5 3 10 70.00 115.00 -angle 4 3 10 80.00 120.40 -angle 5 3 12 70.00 120.00 -angle 12 3 12 85.00 120.00 -angle 5 3 13 70.00 108.00 -angle 13 3 13 70.00 116.00 -angle 1 3 13 80.00 111.00 -angle 3 3 13 80.00 117.20 -angle 4 3 13 80.00 120.40 -angle 10 3 20 81.00 111.40 -angle 13 3 20 81.00 111.40 -angle 4 3 20 83.00 123.40 -angle 13 3 21 75.00 109.00 -angle 4 3 21 75.00 119.00 -angle 24 3 24 70.00 114.20 -angle 2 3 24 70.00 116.60 -angle 3 3 24 70.00 116.60 -angle 6 3 24 70.00 116.60 -angle 10 3 24 70.00 116.60 -angle 13 3 24 70.00 116.60 -angle 4 3 24 80.00 122.90 -angle 20 3 24 81.00 111.40 -angle 13 3 44 70.00 116.00 -angle 4 3 44 80.00 120.40 -angle 13 3 46 35.00 115.00 -angle 46 3 46 35.00 115.00 -angle 4 3 46 35.00 123.00 -angle 24 3 46 40.00 114.00 -angle 5 3 46 40.00 115.00 -angle 20 3 46 40.00 115.00 -angle 24 3 47 70.00 115.50 -angle 4 3 47 80.00 125.30 -angle 46 3 48 35.00 115.00 -angle 24 3 48 70.00 115.50 -angle 13 3 48 70.00 116.00 -angle 5 3 48 70.00 120.00 -angle 4 3 48 80.00 120.40 -angle 20 3 48 81.00 111.40 -angle 48 3 48 85.00 120.00 -angle 13 3 50 70.00 116.00 -angle 46 3 50 80.00 116.00 -angle 4 3 50 80.00 124.00 -angle 10 3 52 65.00 117.00 -angle 2 3 52 70.00 117.00 -angle 6 3 52 70.00 117.00 -angle 13 3 52 70.00 117.00 -angle 48 3 52 70.00 117.00 -angle 4 3 52 80.00 126.00 -angle 52 3 52 80.00 126.00 -angle 46 3 56 35.00 116.00 -angle 46 3 56 35.00 122.00 -angle 4 3 56 80.00 122.50 -angle 47 3 57 70.00 114.10 -angle 56 3 57 70.00 118.60 -angle 57 3 57 70.00 118.60 -angle 4 3 57 80.00 120.60 -angle 24 3 60 70.00 111.30 -angle 57 3 60 70.00 111.30 -angle 4 3 60 80.00 128.80 -angle 13 3 65 75.00 109.00 -angle 4 3 65 75.00 119.00 -angle 44 3 84 70.00 116.00 -angle 4 3 84 80.00 120.40 -angle 4 3 87 80.00 128.20 -angle 57 3 105 70.00 115.40 -angle 56 3 105 70.00 118.60 -angle 4 3 105 80.00 120.90 -angle 13 3 107 70.00 116.60 -angle 4 3 107 80.00 122.90 -angle 25 4 25 10.00 117.00 -angle 3 4 25 35.00 113.00 -angle 3 5 7 35.00 113.00 -angle 2 5 7 55.00 108.50 -angle 6 5 7 55.00 108.50 -angle 7 5 10 55.00 108.50 -angle 7 5 13 55.00 108.50 -angle 7 5 24 49.00 105.40 -angle 25 5 25 5.00 109.47 -angle 7 5 25 10.00 109.47 -angle 13 5 25 10.00 109.47 -angle 7 5 47 35.00 109.00 -angle 25 5 48 10.00 109.47 -angle 7 5 48 35.00 113.00 -angle 7 5 51 55.00 108.50 -angle 7 5 64 55.00 108.50 -angle 13 5 64 100.00 120.50 -angle 7 5 79 74.00 110.00 -angle 7 5 106 100.00 126.00 -angle 5 7 25 10.00 109.47 -angle 25 7 25 33.00 109.47 -angle 2 10 2 63.00 112.40 -angle 2 10 3 63.00 111.10 -angle 2 10 5 80.00 109.50 -angle 3 10 6 63.00 111.10 -angle 6 10 6 63.00 111.50 -angle 2 10 6 63.00 112.40 -angle 5 10 6 80.00 109.50 -angle 3 10 10 63.00 111.10 -angle 2 10 10 63.00 111.50 -angle 6 10 10 63.00 111.50 -angle 10 10 10 63.00 111.50 -angle 5 10 10 80.00 109.50 -angle 2 10 20 80.00 109.50 -angle 6 10 20 80.00 109.50 -angle 10 10 20 80.00 109.50 -angle 3 10 24 63.00 110.10 -angle 6 10 24 80.00 109.50 -angle 2 10 24 80.00 109.70 -angle 10 10 24 80.00 109.70 -angle 2 10 44 56.20 109.47 -angle 6 10 44 56.20 109.47 -angle 10 10 44 56.20 109.47 -angle 13 10 44 56.20 109.47 -angle 3 10 44 80.00 109.70 -angle 2 10 48 63.00 112.40 -angle 20 10 48 80.00 109.50 -angle 2 10 105 80.00 109.50 -angle 10 10 105 80.00 109.50 -angle 20 10 105 80.00 109.50 -angle 2 11 2 70.00 124.00 -angle 2 11 6 70.00 124.00 -angle 6 11 6 70.00 124.00 -angle 2 11 9 70.00 118.00 -angle 6 11 9 70.00 118.00 -angle 9 11 10 70.00 118.00 -angle 2 11 10 70.00 124.00 -angle 6 11 10 70.00 124.00 -angle 10 11 10 70.00 124.00 -angle 2 11 11 70.00 118.00 -angle 6 11 11 70.00 118.00 -angle 9 11 11 70.00 118.00 -angle 10 11 11 70.00 118.00 -angle 11 11 11 70.00 118.00 -angle 9 11 13 70.00 118.00 -angle 11 11 13 70.00 118.00 -angle 2 11 13 70.00 124.00 -angle 6 11 13 70.00 124.00 -angle 10 11 13 70.00 124.00 -angle 13 11 13 70.00 124.00 -angle 9 11 14 70.00 118.00 -angle 11 11 14 70.00 118.00 -angle 9 11 79 70.00 118.00 -angle 2 12 12 70.00 120.00 -angle 3 12 12 85.00 120.00 -angle 12 12 12 85.00 120.00 -angle 12 12 48 85.00 120.00 -angle 12 12 60 85.00 120.00 -angle 12 12 81 85.00 120.00 -angle 1 13 1 77.00 109.10 -angle 2 13 2 40.00 109.50 -angle 1 13 3 50.00 109.50 -angle 2 13 3 63.00 111.10 -angle 3 13 3 63.00 111.10 -angle 2 13 6 40.00 109.50 -angle 6 13 6 40.00 109.50 -angle 3 13 6 63.00 109.50 -angle 1 13 13 50.00 109.50 -angle 5 13 13 50.00 109.50 -angle 13 13 13 58.35 112.70 -angle 3 13 13 63.00 111.10 -angle 13 13 15 50.00 108.60 -angle 13 13 16 50.00 114.70 -angle 13 13 19 58.35 112.70 -angle 3 13 20 50.00 109.50 -angle 13 13 20 50.00 109.50 -angle 3 13 21 69.00 109.80 -angle 13 13 21 69.00 109.80 -angle 21 13 21 78.00 111.70 -angle 13 13 22 50.00 108.60 -angle 20 13 24 50.00 109.50 -angle 3 13 24 63.00 110.10 -angle 2 13 24 80.00 109.70 -angle 13 13 24 80.00 109.70 -angle 16 13 44 50.00 114.70 -angle 2 13 44 56.20 109.47 -angle 6 13 44 56.20 109.47 -angle 10 13 44 56.20 109.47 -angle 13 13 44 56.20 109.47 -angle 3 13 44 80.00 111.20 -angle 46 13 46 33.00 107.80 -angle 18 13 46 35.00 108.50 -angle 19 13 46 35.00 108.50 -angle 2 13 46 35.00 109.50 -angle 3 13 46 35.00 109.50 -angle 5 13 46 35.00 109.50 -angle 15 13 46 35.00 109.50 -angle 16 13 46 35.00 109.50 -angle 20 13 46 35.00 109.50 -angle 22 13 46 35.00 109.50 -angle 24 13 46 35.00 109.50 -angle 44 13 46 35.00 109.50 -angle 13 13 46 37.50 110.70 -angle 1 13 46 40.00 107.00 -angle 21 13 46 51.00 107.60 -angle 46 13 47 35.00 109.50 -angle 1 13 47 50.00 109.50 -angle 13 13 47 63.00 111.10 -angle 47 13 47 63.00 112.40 -angle 46 13 48 35.00 109.50 -angle 47 13 48 40.00 109.50 -angle 48 13 48 40.00 109.50 -angle 1 13 48 50.00 109.50 -angle 5 13 48 50.00 109.50 -angle 20 13 48 50.00 109.50 -angle 16 13 48 50.00 114.70 -angle 3 13 48 63.00 112.00 -angle 2 13 48 63.00 114.00 -angle 13 13 48 63.00 114.00 -angle 44 13 48 80.00 111.20 -angle 46 13 50 35.00 109.50 -angle 46 13 51 37.50 110.70 -angle 5 13 51 50.00 109.50 -angle 13 13 51 58.35 112.70 -angle 46 13 53 35.00 109.50 -angle 3 13 53 80.00 111.20 -angle 13 13 53 80.00 111.20 -angle 46 13 55 35.00 109.50 -angle 13 13 55 80.00 111.20 -angle 46 13 56 35.00 109.50 -angle 3 13 56 63.00 110.10 -angle 13 13 56 65.00 109.00 -angle 46 13 57 35.00 109.50 -angle 48 13 57 80.00 111.20 -angle 46 13 60 35.00 109.50 -angle 13 13 60 63.00 114.00 -angle 46 13 64 41.00 109.50 -angle 13 13 64 43.00 109.50 -angle 48 13 64 43.00 109.50 -angle 46 13 65 51.00 107.60 -angle 3 13 65 69.00 109.80 -angle 13 13 65 69.00 110.00 -angle 48 13 65 69.00 110.00 -angle 65 13 65 78.00 111.70 -angle 46 13 66 75.00 111.00 -angle 13 13 66 75.00 112.00 -angle 46 13 79 35.00 109.50 -angle 13 13 79 50.00 108.60 -angle 1 13 79 50.00 109.50 -angle 46 13 80 35.00 109.50 -angle 13 13 80 63.00 115.60 -angle 46 13 83 35.00 109.50 -angle 13 13 83 63.00 114.00 -angle 46 13 84 35.00 109.50 -angle 16 13 84 50.00 114.70 -angle 13 13 84 63.00 114.00 -angle 46 13 85 35.00 109.50 -angle 13 13 85 63.00 114.00 -angle 46 13 87 35.00 109.50 -angle 13 13 87 63.00 115.60 -angle 46 13 90 35.00 109.50 -angle 13 13 90 80.00 110.00 -angle 3 13 90 80.00 113.00 -angle 46 13 91 37.50 110.70 -angle 46 13 95 35.00 105.00 -angle 13 13 95 63.00 105.00 -angle 46 13 101 35.00 109.50 -angle 13 13 101 80.00 111.20 -angle 46 13 102 35.00 105.00 -angle 13 13 102 63.00 111.10 -angle 46 13 104 41.00 109.50 -angle 13 13 104 43.00 109.50 -angle 46 13 105 35.00 109.50 -angle 13 13 105 50.00 109.50 -angle 20 13 105 50.00 109.50 -angle 46 13 107 35.00 109.50 -angle 13 13 107 80.00 109.70 -angle 46 13 108 35.00 109.50 -angle 13 13 108 60.00 112.00 -angle 2 14 2 70.00 124.00 -angle 2 14 6 70.00 124.00 -angle 6 14 6 70.00 124.00 -angle 2 14 9 70.00 118.00 -angle 6 14 9 70.00 118.00 -angle 9 14 10 70.00 118.00 -angle 2 14 10 70.00 124.00 -angle 6 14 10 70.00 124.00 -angle 10 14 10 70.00 124.00 -angle 2 14 11 70.00 118.00 -angle 6 14 11 70.00 118.00 -angle 9 14 11 70.00 118.00 -angle 10 14 11 70.00 118.00 -angle 11 14 11 70.00 118.00 -angle 9 14 13 70.00 118.00 -angle 11 14 13 70.00 118.00 -angle 2 14 13 70.00 124.00 -angle 6 14 13 70.00 124.00 -angle 10 14 13 70.00 124.00 -angle 13 14 13 70.00 124.00 -angle 2 14 14 70.00 118.00 -angle 6 14 14 70.00 118.00 -angle 9 14 14 70.00 118.00 -angle 10 14 14 70.00 118.00 -angle 11 14 14 70.00 118.00 -angle 13 14 14 70.00 118.00 -angle 14 14 14 70.00 118.00 -angle 17 15 17 35.00 92.07 -angle 2 15 17 44.00 96.00 -angle 6 15 17 44.00 96.00 -angle 13 15 17 44.00 96.00 -angle 25 15 25 5.00 109.47 -angle 13 15 25 10.00 109.47 -angle 33 15 33 10.00 160.00 -angle 2 15 33 150.00 96.70 -angle 6 15 33 150.00 96.70 -angle 13 15 33 150.00 96.70 -angle 17 15 33 150.00 96.70 -angle 17 15 48 50.00 96.00 -angle 2 16 6 62.00 98.90 -angle 13 16 13 62.00 98.90 -angle 2 16 16 68.00 103.70 -angle 6 16 16 68.00 103.70 -angle 13 16 16 68.00 103.70 -angle 13 16 19 65.00 100.00 -angle 25 16 25 5.00 109.47 -angle 13 16 25 10.00 109.47 -angle 33 16 33 10.00 160.00 -angle 2 16 33 150.00 96.70 -angle 6 16 33 150.00 96.70 -angle 13 16 33 150.00 96.70 -angle 16 16 33 150.00 96.70 -angle 13 16 48 62.00 104.20 -angle 47 16 48 62.00 104.20 -angle 24 16 60 74.00 92.40 -angle 25 16 61 10.00 130.00 -angle 25 16 82 10.00 130.00 -angle 60 16 82 74.00 97.00 -angle 25 16 84 10.00 130.00 -angle 82 16 84 74.00 90.00 -angle 60 16 84 74.00 97.00 -angle 84 16 84 74.00 97.00 -angle 13 16 91 62.00 94.00 -angle 15 17 25 10.00 109.47 -angle 25 17 25 33.00 109.47 -angle 13 18 19 150.00 180.00 -angle 19 18 48 170.00 180.00 -angle 18 18 56 100.00 180.00 -angle 13 19 18 150.00 180.00 -angle 16 19 19 140.00 180.00 -angle 13 19 19 150.00 180.00 -angle 18 19 25 10.00 90.00 -angle 19 19 46 112.00 180.00 -angle 18 19 47 150.00 180.00 -angle 19 19 47 160.00 180.00 -angle 18 19 48 150.00 180.00 -angle 19 19 48 160.00 180.00 -angle 19 19 50 160.00 180.00 -angle 18 19 55 150.00 180.00 -angle 18 19 88 150.00 180.00 -angle 2 20 2 100.00 111.80 -angle 2 20 3 83.00 116.90 -angle 3 20 6 83.00 116.90 -angle 2 20 6 100.00 111.80 -angle 2 20 7 55.00 108.50 -angle 7 20 10 55.00 108.50 -angle 3 20 10 83.00 116.90 -angle 10 20 10 100.00 111.80 -angle 13 20 13 60.00 109.50 -angle 3 20 13 83.00 116.90 -angle 25 20 25 5.00 109.47 -angle 13 20 25 10.00 109.47 -angle 13 20 47 75.00 111.00 -angle 25 20 48 10.00 109.47 -angle 13 20 48 75.00 111.00 -angle 47 20 48 75.00 111.00 -angle 48 20 48 75.00 111.00 -angle 3 20 48 83.00 116.90 -angle 2 20 48 100.00 111.80 -angle 13 20 51 60.00 109.50 -angle 2 20 51 100.00 113.00 -angle 6 20 51 100.00 113.00 -angle 10 20 51 100.00 113.00 -angle 24 20 60 70.00 104.50 -angle 25 20 61 10.00 125.00 -angle 2 20 64 100.00 120.50 -angle 6 20 64 100.00 120.50 -angle 10 20 64 100.00 120.50 -angle 13 20 64 100.00 120.50 -angle 48 20 64 100.00 120.50 -angle 64 20 64 100.00 120.50 -angle 25 20 82 10.00 125.00 -angle 60 20 82 70.00 106.50 -angle 82 20 82 70.00 107.00 -angle 25 20 84 10.00 125.00 -angle 82 20 84 70.00 104.00 -angle 60 20 84 70.00 106.50 -angle 84 20 84 70.00 106.50 -angle 61 20 84 70.00 108.90 -angle 108 20 108 20.00 145.00 -angle 13 20 108 40.00 130.00 -angle 25 21 25 33.00 109.47 -angle 13 22 13 62.00 96.00 -angle 13 22 23 74.00 107.00 -angle 23 22 25 10.00 90.00 -angle 2 24 3 50.00 121.90 -angle 3 24 3 70.00 126.40 -angle 3 24 5 46.00 115.70 -angle 2 24 6 50.00 121.90 -angle 3 24 6 50.00 121.90 -angle 2 24 10 50.00 118.00 -angle 3 24 10 50.00 121.90 -angle 13 24 13 50.00 118.00 -angle 3 24 13 50.00 121.90 -angle 3 24 16 70.00 112.00 -angle 3 24 20 70.00 108.60 -angle 3 24 25 10.00 109.50 -angle 25 24 45 10.00 100.00 -angle 5 24 45 35.00 110.20 -angle 3 24 45 35.00 119.80 -angle 45 24 45 35.00 120.00 -angle 2 24 45 38.00 118.40 -angle 6 24 45 38.00 118.40 -angle 10 24 45 38.00 118.40 -angle 13 24 45 38.00 118.40 -angle 45 24 48 35.00 119.80 -angle 13 24 48 50.00 118.00 -angle 3 24 48 50.00 121.90 -angle 48 24 48 70.00 118.00 -angle 54 24 54 35.00 120.00 -angle 45 24 59 35.00 118.00 -angle 3 24 59 70.00 125.20 -angle 13 24 79 50.00 120.00 -angle 45 24 79 100.00 111.00 -angle 45 24 84 35.00 119.80 -angle 48 24 84 70.00 118.00 -angle 16 24 86 70.00 117.00 -angle 45 24 87 35.00 119.80 -angle 48 24 87 70.00 118.00 -angle 45 24 88 35.00 119.80 -angle 48 24 88 70.00 118.00 -angle 45 24 91 40.00 113.00 -angle 3 24 91 55.00 128.00 -angle 48 24 103 70.00 121.00 -angle 3 24 106 20.00 126.00 -angle 25 25 25 33.00 109.47 -angle 32 31 32 75.00 104.52 -angle 32 31 33 50.00 52.26 -angle 35 34 35 34.05 104.52 -angle 37 36 37 75.00 109.50 -angle 37 36 38 50.00 54.75 -angle 40 39 40 75.00 104.52 -angle 41 39 41 50.00 109.47 -angle 40 39 41 50.00 110.6948 -angle 43 42 43 75.00 109.47 -angle 2 44 2 51.80 107.20 -angle 2 44 6 51.80 107.20 -angle 6 44 6 51.80 107.20 -angle 2 44 10 51.80 107.20 -angle 6 44 10 51.80 107.20 -angle 10 44 10 51.80 107.20 -angle 2 44 13 51.80 107.20 -angle 6 44 13 51.80 107.20 -angle 10 44 13 51.80 107.20 -angle 13 44 13 51.80 107.20 -angle 3 44 13 63.00 111.10 -angle 25 44 45 10.00 100.00 -angle 13 44 45 35.00 109.50 -angle 2 44 45 43.20 108.10 -angle 6 44 45 43.20 108.10 -angle 10 44 45 43.20 108.10 -angle 45 44 45 43.60 106.40 -angle 25 44 48 10.00 109.50 -angle 45 44 48 35.00 116.00 -angle 13 44 48 50.00 116.00 -angle 48 44 48 50.00 116.00 -angle 3 44 48 63.00 112.00 -angle 45 44 79 35.00 115.00 -angle 13 44 79 50.00 108.60 -angle 48 44 79 50.00 108.60 -angle 48 44 91 50.00 109.50 -angle 25 45 25 33.00 109.47 -angle 25 45 44 10.00 109.50 -angle 25 46 25 33.00 109.47 -angle 13 46 25 37.50 109.47 -angle 1 47 1 80.00 108.00 -angle 1 47 3 80.00 121.50 -angle 3 47 6 85.00 119.70 -angle 3 47 13 70.00 119.70 -angle 13 47 13 70.00 130.00 -angle 25 47 46 10.00 90.00 -angle 20 47 46 35.00 114.50 -angle 13 47 46 35.00 117.00 -angle 46 47 46 35.00 117.00 -angle 3 47 46 35.00 119.70 -angle 19 47 46 35.00 120.00 -angle 1 47 46 50.00 112.00 -angle 21 47 46 60.00 114.00 -angle 25 47 47 2.00 90.00 -angle 46 47 47 35.00 120.00 -angle 5 47 47 70.00 123.00 -angle 20 47 47 70.00 123.00 -angle 13 47 47 70.00 124.00 -angle 19 47 47 70.00 124.00 -angle 21 47 47 75.00 121.50 -angle 1 47 47 80.00 121.50 -angle 16 47 47 85.00 119.40 -angle 3 47 47 85.00 120.70 -angle 46 47 48 35.00 123.30 -angle 47 47 48 85.00 117.00 -angle 13 47 48 85.00 119.70 -angle 25 47 50 2.00 90.00 -angle 46 47 50 35.00 120.00 -angle 5 47 50 70.00 123.00 -angle 20 47 50 70.00 123.00 -angle 13 47 50 70.00 124.00 -angle 46 47 57 35.00 119.10 -angle 13 47 57 70.00 120.00 -angle 20 47 57 70.00 120.00 -angle 47 47 57 70.00 121.20 -angle 16 47 57 85.00 119.40 -angle 57 47 58 35.00 119.10 -angle 47 47 58 35.00 119.70 -angle 46 47 65 60.00 114.00 -angle 47 47 65 75.00 120.00 -angle 46 47 91 35.00 135.00 -angle 3 47 91 70.00 119.70 -angle 47 47 91 70.00 124.00 -angle 46 47 105 35.00 119.10 -angle 58 47 105 35.00 119.10 -angle 13 47 105 70.00 120.00 -angle 20 47 105 70.00 120.00 -angle 47 47 105 70.00 121.20 -angle 16 47 105 85.00 119.40 -angle 46 47 110 40.00 121.00 -angle 13 47 110 80.00 122.00 -angle 48 47 110 80.00 122.00 -angle 1 47 110 80.00 125.00 -angle 2 48 12 70.00 120.00 -angle 12 48 12 85.00 120.00 -angle 3 48 13 70.00 119.70 -angle 25 48 48 10.00 90.00 -angle 48 48 48 63.00 120.00 -angle 2 48 48 70.00 120.00 -angle 5 48 48 70.00 120.00 -angle 10 48 48 70.00 120.00 -angle 13 48 48 70.00 120.00 -angle 15 48 48 70.00 120.00 -angle 19 48 48 70.00 120.00 -angle 20 48 48 70.00 120.00 -angle 24 48 48 70.00 120.00 -angle 44 48 48 70.00 120.00 -angle 47 48 48 70.00 124.00 -angle 21 48 48 75.00 120.00 -angle 1 48 48 80.00 120.00 -angle 18 48 48 80.00 120.00 -angle 16 48 48 85.00 119.40 -angle 3 48 48 85.00 120.00 -angle 25 48 49 2.00 90.00 -angle 24 48 49 35.00 119.10 -angle 3 48 49 35.00 120.00 -angle 48 48 49 35.00 120.00 -angle 48 48 50 70.00 124.00 -angle 48 48 53 70.00 120.00 -angle 55 48 55 70.00 120.00 -angle 47 48 55 70.00 120.10 -angle 48 48 55 70.00 120.10 -angle 49 48 56 35.00 116.00 -angle 13 48 56 70.00 116.00 -angle 44 48 56 70.00 116.00 -angle 55 48 56 70.00 119.30 -angle 5 48 56 70.00 120.00 -angle 47 48 56 70.00 121.50 -angle 50 48 56 70.00 121.50 -angle 48 48 56 70.00 124.00 -angle 21 48 56 75.00 120.00 -angle 49 48 57 35.00 120.00 -angle 48 48 57 70.00 108.70 -angle 55 48 57 70.00 116.00 -angle 13 48 57 70.00 120.00 -angle 47 48 57 70.00 121.50 -angle 56 48 57 70.00 123.30 -angle 49 48 60 35.00 120.00 -angle 48 48 60 63.00 120.00 -angle 57 48 60 70.00 108.70 -angle 56 48 60 70.00 117.30 -angle 55 48 60 70.00 123.50 -angle 2 48 60 70.00 128.60 -angle 13 48 60 70.00 128.60 -angle 49 48 61 35.00 119.10 -angle 48 48 61 70.00 108.70 -angle 57 48 61 70.00 123.30 -angle 48 48 64 85.00 119.40 -angle 48 48 65 75.00 120.00 -angle 48 48 66 75.00 120.00 -angle 48 48 79 85.00 119.40 -angle 49 48 81 35.00 120.00 -angle 48 48 81 85.00 120.00 -angle 49 48 84 35.00 126.90 -angle 60 48 84 63.00 106.40 -angle 48 48 84 70.00 107.40 -angle 49 48 86 35.00 120.00 -angle 48 48 86 63.00 120.00 -angle 56 48 86 70.00 124.00 -angle 49 48 88 35.00 128.20 -angle 101 48 101 70.00 111.80 -angle 56 48 101 70.00 124.10 -angle 48 48 102 85.00 120.00 -angle 48 48 109 70.00 124.00 -angle 25 50 46 10.00 90.00 -angle 19 50 46 35.00 120.00 -angle 25 50 47 2.00 90.00 -angle 46 50 47 35.00 120.00 -angle 3 50 47 70.00 118.70 -angle 13 50 47 70.00 124.00 -angle 46 50 48 35.00 123.30 -angle 47 50 48 85.00 117.00 -angle 25 50 50 2.00 90.00 -angle 46 50 50 35.00 120.00 -angle 13 50 50 70.00 124.00 -angle 47 50 50 70.00 124.00 -angle 50 50 84 35.00 106.00 -angle 46 50 84 35.00 122.00 -angle 46 50 109 35.00 120.00 -angle 13 50 109 70.00 124.00 -angle 47 50 109 70.00 124.00 -angle 6 51 6 40.00 109.50 -angle 5 51 13 50.00 109.50 -angle 13 51 20 50.00 109.50 -angle 2 51 20 80.00 109.50 -angle 6 51 20 80.00 109.50 -angle 5 51 20 92.60 111.55 -angle 20 51 20 92.60 111.55 -angle 46 51 46 33.00 109.50 -angle 5 51 46 35.00 109.50 -angle 20 51 46 35.00 109.50 -angle 13 51 46 37.50 110.70 -angle 46 51 105 35.00 109.50 -angle 13 51 105 50.00 109.50 -angle 20 51 105 50.00 109.50 -angle 13 53 13 50.00 113.00 -angle 13 53 25 10.00 100.00 -angle 45 53 45 43.60 109.50 -angle 25 53 48 10.00 100.00 -angle 13 53 48 55.00 114.00 -angle 2 53 54 35.00 109.50 -angle 6 53 54 35.00 109.50 -angle 13 53 54 35.00 109.50 -angle 48 53 54 35.00 109.50 -angle 54 53 54 35.00 109.50 -angle 25 53 82 10.00 100.00 -angle 13 55 13 50.00 118.00 -angle 45 55 45 35.00 113.00 -angle 13 55 45 35.00 118.40 -angle 45 55 48 35.00 120.00 -angle 2 55 48 50.00 123.20 -angle 6 55 48 50.00 123.20 -angle 13 55 48 50.00 123.20 -angle 2 55 54 35.00 118.40 -angle 13 55 54 35.00 118.40 -angle 48 55 54 35.00 120.00 -angle 54 55 54 35.00 120.00 -angle 45 55 59 35.00 120.00 -angle 3 56 13 70.00 120.50 -angle 13 56 18 70.00 120.00 -angle 25 56 48 5.00 120.00 -angle 45 56 48 35.00 113.00 -angle 13 56 48 50.00 118.00 -angle 48 56 48 70.00 117.00 -angle 3 56 48 70.00 120.50 -angle 13 56 56 70.00 117.00 -angle 48 56 56 70.00 117.00 -angle 25 56 59 5.00 119.80 -angle 48 56 59 70.00 118.60 -angle 59 56 59 70.00 118.60 -angle 59 56 60 70.00 111.00 -angle 48 56 60 70.00 112.20 -angle 59 56 82 70.00 111.00 -angle 48 56 86 70.00 117.00 -angle 13 56 103 70.00 114.00 -angle 3 57 3 70.00 126.40 -angle 3 57 45 35.00 116.80 -angle 45 57 47 35.00 119.20 -angle 3 57 47 70.00 121.60 -angle 45 57 48 35.00 118.00 -angle 3 57 48 70.00 125.20 -angle 48 57 48 70.00 125.20 -angle 45 57 60 30.00 125.80 -angle 13 57 60 70.00 125.80 -angle 60 57 61 56.00 113.10 -angle 45 57 61 56.00 118.40 -angle 13 57 61 70.00 118.40 -angle 48 57 61 70.00 118.40 -angle 45 57 62 30.00 128.80 -angle 60 57 62 70.00 105.40 -angle 48 57 62 70.00 109.80 -angle 13 57 62 70.00 128.80 -angle 45 57 81 35.00 123.10 -angle 45 57 82 35.00 120.00 -angle 61 57 82 56.00 113.10 -angle 60 57 82 70.00 109.80 -angle 45 57 84 35.00 120.00 -angle 61 57 84 56.00 113.10 -angle 60 57 84 70.00 109.80 -angle 82 57 84 70.00 109.80 -angle 84 57 84 70.00 109.80 -angle 81 57 84 70.00 111.60 -angle 45 57 85 35.00 120.00 -angle 82 57 85 70.00 109.80 -angle 24 59 55 70.00 116.00 -angle 49 59 56 35.00 115.45 -angle 13 59 56 70.00 115.50 -angle 55 59 56 70.00 119.30 -angle 24 59 56 70.00 123.30 -angle 56 59 56 70.00 129.10 -angle 56 59 63 35.00 115.45 -angle 13 60 48 70.00 120.00 -angle 48 60 48 85.00 134.90 -angle 56 60 57 70.00 126.20 -angle 57 60 60 70.00 106.20 -angle 20 60 60 70.00 110.60 -angle 16 60 60 70.00 111.00 -angle 13 60 60 70.00 120.00 -angle 24 60 60 70.00 127.70 -angle 56 60 60 70.00 127.70 -angle 48 60 60 85.00 117.30 -angle 3 60 60 85.00 119.20 -angle 60 60 61 70.00 111.00 -angle 24 60 61 70.00 126.20 -angle 3 60 61 70.00 130.00 -angle 48 60 61 70.00 132.40 -angle 12 60 80 85.00 134.90 -angle 48 60 80 85.00 134.90 -angle 80 60 81 85.00 108.80 -angle 12 60 81 85.00 116.20 -angle 48 60 81 85.00 116.20 -angle 3 60 84 70.00 130.00 -angle 60 60 87 70.00 107.30 -angle 57 60 87 70.00 107.70 -angle 81 60 87 85.00 108.80 -angle 12 60 87 85.00 134.90 -angle 48 60 87 85.00 134.90 -angle 60 60 105 70.00 106.20 -angle 56 60 105 70.00 126.20 -angle 48 61 48 70.00 125.20 -angle 25 61 57 10.00 125.00 -angle 25 61 61 10.00 125.00 -angle 60 61 62 70.00 103.80 -angle 25 61 82 10.00 125.00 -angle 61 61 82 70.00 109.00 -angle 60 61 82 70.00 110.00 -angle 82 61 83 70.00 110.00 -angle 57 61 84 70.00 104.10 -angle 82 61 84 70.00 110.00 -angle 57 61 88 70.00 104.10 -angle 20 61 88 70.00 105.30 -angle 49 62 57 35.00 120.00 -angle 49 62 61 35.00 120.00 -angle 57 62 61 70.00 113.90 -angle 57 62 63 35.00 123.05 -angle 61 62 63 35.00 123.05 -angle 49 62 105 35.00 120.00 -angle 63 62 105 35.00 123.05 -angle 61 62 105 70.00 113.90 -angle 5 64 5 45.00 102.60 -angle 4 64 5 100.00 108.23 -angle 4 64 13 45.00 109.50 -angle 5 64 20 45.00 102.60 -angle 20 64 20 45.00 102.60 -angle 13 64 20 45.00 109.50 -angle 4 64 20 100.00 108.23 -angle 4 64 48 45.00 109.50 -angle 5 64 48 45.00 109.50 -angle 20 64 48 45.00 109.50 -angle 5 64 52 45.00 108.23 -angle 13 64 52 45.00 109.50 -angle 20 64 52 100.00 108.23 -angle 52 64 52 140.00 119.90 -angle 25 65 25 33.00 109.47 -angle 25 66 25 33.00 109.47 -angle 78 77 78 150.00 180.00 -angle 6 79 11 62.00 98.90 -angle 13 79 13 62.00 102.00 -angle 5 79 13 75.00 96.40 -angle 5 79 23 74.00 108.70 -angle 13 79 23 74.00 108.90 -angle 23 79 23 104.00 119.00 -angle 13 79 24 100.00 103.00 -angle 23 79 24 120.00 107.00 -angle 13 79 44 62.00 102.00 -angle 23 79 44 74.00 108.90 -angle 13 79 48 62.00 102.00 -angle 23 79 48 74.00 107.20 -angle 5 79 48 75.00 96.40 -angle 24 79 48 100.00 103.00 -angle 13 79 82 62.00 102.00 -angle 46 80 60 35.00 126.80 -angle 2 80 60 70.00 128.60 -angle 13 80 60 70.00 128.60 -angle 46 80 84 35.00 126.80 -angle 2 80 84 70.00 125.00 -angle 13 80 84 70.00 125.00 -angle 60 80 84 85.00 106.40 -angle 12 81 57 70.00 132.80 -angle 48 81 57 70.00 132.80 -angle 57 81 60 70.00 104.40 -angle 12 81 60 85.00 122.70 -angle 48 81 60 85.00 122.70 -angle 13 82 16 70.00 125.00 -angle 16 82 24 70.00 125.00 -angle 16 82 44 70.00 120.20 -angle 20 82 49 35.00 117.00 -angle 16 82 49 35.00 125.00 -angle 49 82 57 35.00 120.00 -angle 57 82 57 70.00 120.00 -angle 13 82 57 70.00 125.00 -angle 48 82 57 70.00 125.00 -angle 56 82 57 70.00 126.20 -angle 49 82 61 35.00 120.00 -angle 16 82 61 70.00 113.60 -angle 16 82 61 70.00 115.00 -angle 20 82 61 70.00 115.00 -angle 57 82 61 70.00 120.00 -angle 13 82 61 70.00 125.00 -angle 44 82 61 70.00 126.10 -angle 24 82 61 70.00 126.20 -angle 57 82 79 70.00 120.00 -angle 61 82 79 70.00 120.00 -angle 20 82 86 70.00 122.00 -angle 61 82 86 70.00 130.00 -angle 57 82 87 70.00 106.20 -angle 56 82 87 70.00 127.70 -angle 49 83 61 35.00 120.00 -angle 48 83 61 70.00 111.00 -angle 13 83 61 70.00 124.50 -angle 49 83 84 35.00 128.20 -angle 61 83 84 70.00 111.00 -angle 13 83 84 70.00 130.70 -angle 13 84 16 70.00 125.00 -angle 13 84 20 70.00 121.60 -angle 16 84 24 70.00 125.00 -angle 20 84 49 35.00 113.40 -angle 16 84 49 35.00 125.00 -angle 48 84 49 35.00 130.70 -angle 49 84 50 35.00 130.70 -angle 20 84 50 70.00 110.00 -angle 49 84 57 35.00 121.60 -angle 13 84 57 70.00 121.60 -angle 48 84 57 70.00 121.60 -angle 3 84 57 85.00 120.00 -angle 57 84 58 35.00 120.00 -angle 13 84 61 70.00 118.90 -angle 49 84 80 35.00 120.00 -angle 57 84 80 70.00 108.70 -angle 49 84 83 35.00 130.70 -angle 57 84 83 70.00 106.30 -angle 20 84 83 70.00 108.00 -angle 16 84 83 70.00 111.00 -angle 13 84 83 70.00 130.70 -angle 13 84 84 70.00 120.00 -angle 57 84 84 70.00 120.00 -angle 61 84 84 70.00 120.00 -angle 20 84 86 70.00 121.60 -angle 57 84 86 70.00 121.60 -angle 49 84 87 35.00 132.10 -angle 57 84 87 70.00 107.70 -angle 20 84 87 70.00 110.60 -angle 16 84 87 70.00 111.00 -angle 61 84 87 70.00 111.90 -angle 13 84 87 70.00 132.10 -angle 48 84 87 70.00 132.10 -angle 86 84 87 70.00 132.10 -angle 3 84 87 85.00 120.00 -angle 49 85 57 35.00 120.00 -angle 13 85 57 70.00 121.60 -angle 49 85 85 35.00 130.70 -angle 57 85 85 70.00 106.30 -angle 13 85 85 70.00 130.70 -angle 48 86 48 63.00 120.00 -angle 48 86 56 70.00 124.00 -angle 48 86 82 63.00 120.00 -angle 48 86 83 63.00 120.00 -angle 48 86 84 63.00 120.00 -angle 48 86 86 63.00 120.00 -angle 56 86 86 70.00 124.00 -angle 48 86 87 63.00 120.00 -angle 48 86 88 63.00 120.00 -angle 49 87 60 35.00 120.00 -angle 46 87 60 35.00 126.80 -angle 13 87 60 70.00 128.60 -angle 49 87 84 35.00 125.70 -angle 46 87 84 35.00 126.80 -angle 84 87 84 70.00 103.80 -angle 82 87 84 70.00 110.40 -angle 2 87 84 70.00 125.00 -angle 13 87 84 70.00 125.00 -angle 3 87 84 70.00 130.00 -angle 60 87 84 85.00 106.40 -angle 84 87 86 70.00 125.70 -angle 49 87 87 35.00 127.50 -angle 60 87 87 70.00 107.30 -angle 84 87 87 70.00 107.30 -angle 86 87 87 70.00 127.50 -angle 84 87 88 70.00 103.80 -angle 48 88 49 35.00 128.60 -angle 49 88 61 35.00 118.90 -angle 13 88 61 70.00 118.90 -angle 19 88 61 70.00 118.90 -angle 61 88 87 70.00 111.90 -angle 4 89 90 80.00 134.00 -angle 90 89 91 70.00 91.00 -angle 4 89 91 80.00 134.00 -angle 13 90 89 55.00 127.00 -angle 89 90 91 50.00 94.00 -angle 13 90 91 50.00 126.00 -angle 24 91 46 35.00 108.00 -angle 13 91 46 35.00 114.30 -angle 44 91 46 35.00 114.30 -angle 46 91 46 35.00 114.30 -angle 16 91 46 37.50 108.00 -angle 46 91 47 35.00 109.50 -angle 46 91 89 37.50 110.00 -angle 24 91 89 70.00 117.00 -angle 46 91 90 35.00 111.00 -angle 16 91 90 55.00 109.00 -angle 91 91 91 30.00 79.20 -angle 13 91 91 37.50 117.20 -angle 44 91 91 37.50 117.20 -angle 46 91 91 37.50 117.20 -angle 24 91 91 37.50 126.00 -angle 16 91 91 55.00 128.00 -angle 89 91 91 63.00 85.00 -angle 47 91 91 63.00 114.00 -angle 90 91 91 80.00 89.00 -angle 13 95 13 172.80 120.00 -angle 13 95 46 144.00 120.00 -angle 13 101 45 35.00 109.50 -angle 45 101 45 43.60 106.40 -angle 45 101 48 50.00 112.50 -angle 13 101 48 50.00 120.50 -angle 13 102 103 80.00 117.50 -angle 48 102 103 80.00 117.50 -angle 103 102 103 80.00 125.00 -angle 25 103 25 10.00 109.50 -angle 25 103 102 10.00 109.50 -angle 13 104 13 45.00 109.50 -angle 3 105 10 70.00 117.60 -angle 3 105 13 70.00 117.60 -angle 3 105 45 35.00 119.20 -angle 45 105 47 35.00 119.20 -angle 13 105 47 70.00 121.20 -angle 3 105 47 70.00 121.60 -angle 3 105 51 70.00 117.60 -angle 47 105 51 70.00 121.20 -angle 45 105 60 30.00 125.80 -angle 6 105 60 70.00 125.80 -angle 10 105 60 70.00 125.80 -angle 13 105 60 70.00 125.80 -angle 51 105 60 70.00 125.80 -angle 45 105 62 30.00 128.80 -angle 60 105 62 70.00 105.40 -angle 6 105 62 70.00 128.80 -angle 10 105 62 70.00 128.80 -angle 13 105 62 70.00 128.80 -angle 51 105 62 70.00 128.80 -angle 4 106 24 20.00 109.50 -angle 24 106 24 20.00 109.50 -angle 13 107 13 50.00 118.00 -angle 3 107 13 50.00 121.90 -angle 1 108 13 35.00 110.50 -angle 13 108 13 60.00 110.00 -angle 13 108 20 60.00 100.00 -angle 20 108 20 60.00 110.00 -angle 13 108 21 35.00 110.50 -angle 45 108 45 35.00 109.50 -angle 13 108 45 35.00 110.50 -angle 46 108 46 35.00 109.50 -angle 13 108 46 35.00 110.50 -angle 13 108 65 35.00 110.50 -angle 13 108 66 35.00 110.50 -angle 13 108 108 50.00 112.00 -angle 46 109 48 35.00 123.30 -angle 46 109 50 35.00 120.00 -angle 13 109 50 70.00 124.00 -angle 46 109 109 35.00 120.00 -angle 13 109 109 70.00 124.00 -angle 50 109 109 70.00 124.00 -angle 48 109 109 85.00 117.00 -angle 4 110 47 160.00 180.00 -angle 47 110 47 160.00 180.00 - - - ################################ - ## ## - ## Urey-Bradley Parameters ## - ## ## - ################################ - - -ureybrad 35 34 35 38.25 1.5537 - - - ##################################### - ## ## - ## Improper Torsional Parameters ## - ## ## - ##################################### - - -imptors 0 0 3 4 21.000 180.0 2 -imptors 0 0 3 52 21.000 180.0 2 -imptors 0 0 24 0 5.000 180.0 2 -imptors 0 0 47 0 30.000 180.0 2 -imptors 0 0 48 0 5.000 180.0 2 - - - ############################ - ## ## - ## Torsional Parameters ## - ## ## - ############################ - - - ################################################################### - ## ## - ## Alternative Torsional Parameter Values for Use with OPLS-AA ## - ## ## - ## For some torsions, OPLS-AA has multiple possible parameter ## - ## values; the list below shows functional groups for which ## - ## these alternate (commented) values should be preferred; the ## - ## values are in the same order as in the full parameter list ## - ## ## - ## 4 3 3 36 generic (default) ## - ## 4 3 3 36 dicarbonyls ## - ## 36 3 3 36 hydrocarbon (default) ## - ## 36 3 3 36 dicarbonyls ## - ## 13 3 5 7 carboxylic acid (default) ## - ## 13 3 5 7 1,2-diacid monoanion ## - ## 4 3 13 13 peptide (default) ## - ## 4 3 13 13 propanamide ## - ## 4 3 13 13 carboxylic acid ## - ## 4 3 13 13 dicarboxylic acid ## - ## 4 3 13 13 aldyhyde, ketone, acyl halide ## - ## 4 3 13 13 1,2-diacid monoanion ## - ## 5 3 13 13 carboxylic acid (default) ## - ## 5 3 13 13 dicarboxylic acid ## - ## 35 3 13 13 peptide psi' (default) ## - ## 35 3 13 13 propanamide ## - ## 35 3 13 13 beta-3-peptide, last psi ## - ## 4 3 29 13 esters (default) ## - ## 4 3 29 13 benzoic esters ## - ## 7 5 13 13 alcohols (default) ## - ## 7 5 13 13 trifluoroethanol ## - ## 7 5 13 13 hexopyranoses ## - ## 7 5 13 36 alcohols (default) ## - ## 7 5 13 36 axial cyclohexanol ## - ## 7 5 13 36 trifluoroethanol ## - ## 0 13 13 13 alcohols, ethers (default) ## - ## 0 13 13 13 hexopyranoses ## - ## 3 13 13 3 dicarboxylic acid (default) ## - ## 3 13 13 3 1,2-diacid monoanion ## - ## 3 13 13 13 butanamide (default) ## - ## 3 13 13 13 carboxylate ion ## - ## 3 13 13 13 aldyhyde, ketone, acyl halide ## - ## 3 13 13 36 all carbonyls (default) ## - ## 3 13 13 36 dicarboxylic acid ## - ## 3 13 13 36 aldehyde, ketone, acyl halide ## - ## 5 13 13 5 diols only (default) ## - ## 5 13 13 5 triols only ## - ## 5 13 13 5 hexopyranoses ## - ## 13 13 13 13 hydrocarbon (default) ## - ## 13 13 13 13 perfluoroalkane ## - ## 13 13 13 35 peptide chi-1 (default) ## - ## 13 13 13 35 N-propylformamide ## - ## 36 13 13 69 generic (default) ## - ## 36 13 13 69 sulfone ## - ## 13 13 33 13 amine (default) ## - ## 13 13 33 13 exocyclic amine ## - ## 13 13 33 13 exocyclic 1,4-diamine ## - ## 13 13 33 34 amine (default) ## - ## 13 13 33 34 azetidine, 4-ring ## - ## 13 13 33 34 pyrrolidine, 5-ring ## - ## 13 13 33 34 cyclic amine ## - ## 13 13 33 34 cyclic 1,4-diamine ## - ## 13 13 35 3 peptide phi' (default) ## - ## 13 13 35 3 N-ethylformamide ## - ## 13 13 35 3 beta-3-peptide, first theta tors ## - ## 13 13 35 13 proline, CD-N-CA-CB (default) ## - ## 13 13 35 13 proline, CG-CD-N-CA ## - ## 36 13 35 3 peptide phi'' (default) ## - ## 36 13 35 3 N-methylformamide ## - ## 13 13 47 0 imidazole, indole, purine (default) ## - ## 13 13 47 0 nucleoside chi ## - ## 13 13 47 52 nucleoside (default) ## - ## 13 13 47 52 imidazole, indole, purine ## - ## 29 13 47 0 imidazole, indole, purine (default) ## - ## 29 13 47 0 nucleoside chi ## - ## 29 13 95 52 nucleoside (default) ## - ## 29 13 95 52 imidazole, indole, purine ## - ## 13 13 97 13 generic (default) ## - ## 13 13 97 13 generic ## - ## 17 15 38 0 aromatic thiol (default) ## - ## 17 15 38 0 aromatic thiol, N-C-S-H ## - ## 13 29 54 42 phosphonates (default) ## - ## 13 29 54 42 dimethyl phosphate ## - ## 34 35 72 16 diaryl amine (default) ## - ## 34 35 72 16 aniline-like ## - ## 34 35 72 29 diaryl amine (default) ## - ## 34 35 72 29 aniline-like ## - ## 13 40 40 37 diene (default) ## - ## 13 40 40 37 2-methyl-1,3-butadiene ## - ## 0 46 72 0 generic (default) ## - ## 0 46 72 0 generic ## - ## 0 47 72 0 generic (default) ## - ## 0 47 72 0 generic ## - ## 0 47 74 0 generic (default) ## - ## 0 47 74 0 generic ## - ## 0 47 74 0 generic ## - ## 0 51 72 0 generic (default) ## - ## 0 51 72 0 HA-CR-NB-?? or N?-CR-NB-?? ## - ## 0 72 77 0 generic (default) ## - ## 0 72 77 0 biphenyl-like, N-C-C-C ## - ## ## - ################################################################### - - -torsion 0 2 2 2 -2.500 0.0 1 1.250 180.0 2 3.100 0.0 3 -torsion 0 2 2 6 -2.500 0.0 1 1.250 180.0 2 3.100 0.0 3 -torsion 1 2 2 2 -2.000 0.0 1 0.700 180.0 2 3.000 0.0 3 -torsion 1 2 2 6 -2.000 0.0 1 0.700 180.0 2 3.000 0.0 3 -torsion 2 2 2 2 -3.400 0.0 1 1.250 180.0 2 3.100 0.0 3 -torsion 2 2 2 6 -3.400 0.0 1 1.250 180.0 2 3.100 0.0 3 -torsion 2 2 2 10 -3.400 0.0 1 1.250 180.0 2 3.100 0.0 3 -torsion 2 2 2 13 -3.400 0.0 1 1.250 180.0 2 3.100 0.0 3 -torsion 2 2 2 65 -2.000 0.0 1 0.500 180.0 2 3.250 0.0 3 -torsion 6 2 2 6 -3.400 0.0 1 1.250 180.0 2 3.100 0.0 3 -torsion 6 2 2 65 -2.000 0.0 1 0.500 180.0 2 3.250 0.0 3 -torsion 10 2 2 10 -3.400 0.0 1 1.250 180.0 2 3.100 0.0 3 -torsion 2 2 5 7 0.300 0.0 1 0.000 180.0 2 1.300 0.0 3 -torsion 6 2 5 7 0.300 0.0 1 0.000 180.0 2 1.300 0.0 3 -torsion 10 2 5 7 0.300 0.0 1 0.000 180.0 2 1.300 0.0 3 -torsion 0 2 10 2 -2.500 0.0 1 1.250 180.0 2 3.100 0.0 3 -torsion 2 2 10 2 -3.400 0.0 1 1.250 180.0 2 3.100 0.0 3 -torsion 2 2 13 2 -3.400 0.0 1 1.250 180.0 2 3.100 0.0 3 -torsion 6 2 20 2 -7.400 0.0 1 3.000 180.0 2 1.800 0.0 3 -torsion 6 2 20 6 -8.400 0.0 1 3.000 180.0 2 1.800 0.0 3 -torsion 4 3 3 4 1.600 0.0 1 3.200 180.0 2 0.000 0.0 3 -torsion 4 3 3 13 0.000 0.0 1 0.500 180.0 2 0.000 0.0 3 -torsion 4 3 3 24 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 4 3 3 46 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -#torsion 4 3 3 36 0.000 0.0 1 0.200 180.0 2 0.000 0.0 3 -torsion 13 3 3 13 0.700 0.0 1 -1.500 180.0 2 0.000 0.0 3 -torsion 13 3 3 24 -0.500 0.0 1 0.200 180.0 2 0.000 0.0 3 -torsion 13 3 3 46 0.800 0.0 1 -0.760 180.0 2 0.000 0.0 3 -torsion 24 3 3 46 -0.900 0.0 1 0.300 180.0 2 0.000 0.0 3 -torsion 46 3 3 46 0.000 0.0 1 0.000 180.0 2 0.300 0.0 3 -#torsion 36 3 3 36 0.800 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 3 3 5 7 3.000 0.0 1 5.500 180.0 2 0.000 0.0 3 -torsion 4 3 5 7 0.000 0.0 1 5.000 180.0 2 0.000 0.0 3 -torsion 13 3 5 7 1.500 0.0 1 5.500 180.0 2 0.000 0.0 3 -#torsion 13 3 5 7 3.200 0.0 1 4.900 180.0 2 0.000 0.0 3 -torsion 24 3 5 7 -2.000 0.0 1 5.000 180.0 2 0.000 0.0 3 -torsion 46 3 5 7 1.500 0.0 1 5.500 180.0 2 0.000 0.0 3 -torsion 48 3 5 7 4.000 0.0 1 5.000 180.0 2 0.000 0.0 3 -torsion 1 3 13 13 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 1 3 13 46 0.000 0.0 1 0.000 180.0 2 0.360 0.0 3 -torsion 3 3 13 46 0.000 0.0 1 0.000 180.0 2 0.085 0.0 3 -torsion 4 3 13 0 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 4 3 13 13 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -#torsion 4 3 13 13 0.000 0.0 1 1.166 180.0 2 0.000 0.0 3 -#torsion 4 3 13 13 0.000 0.0 1 0.546 180.0 2 0.000 0.0 3 -#torsion 4 3 13 13 -0.750 0.0 1 -0.550 180.0 2 -0.250 0.0 3 -#torsion 4 3 13 13 -0.277 0.0 1 1.228 180.0 2 -0.694 0.0 3 -#torsion 4 3 13 13 -1.000 0.0 1 -1.900 180.0 2 -0.900 0.0 3 -torsion 4 3 13 21 -0.650 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 4 3 13 44 0.000 0.0 1 0.820 180.0 2 0.000 0.0 3 -torsion 4 3 13 24 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 4 3 13 46 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 4 3 13 48 0.000 0.0 1 0.546 180.0 2 0.000 0.0 3 -torsion 5 3 13 13 0.000 0.0 1 1.412 180.0 2 0.000 0.0 3 -#torsion 5 3 13 13 1.000 0.0 1 0.546 180.0 2 0.450 0.0 3 -torsion 5 3 13 44 5.260 0.0 1 0.820 180.0 2 0.000 0.0 3 -torsion 5 3 13 46 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 13 3 13 13 1.454 0.0 1 -0.144 180.0 2 -0.775 0.0 3 -torsion 13 3 13 46 0.000 0.0 1 0.000 180.0 2 0.275 0.0 3 -torsion 20 3 13 13 0.000 0.0 1 0.000 180.0 2 -0.553 0.0 3 -torsion 20 3 13 46 0.000 0.0 1 0.000 180.0 2 0.132 0.0 3 -torsion 21 3 13 13 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 21 3 13 46 0.000 0.0 1 0.000 180.0 2 0.360 0.0 3 -torsion 24 3 13 13 1.173 0.0 1 0.189 180.0 2 -1.200 0.0 3 -#torsion 35 3 13 13 3.250 0.0 1 -0.402 180.0 2 -0.136 0.0 3 -#torsion 35 3 13 13 3.260 0.0 1 0.440 180.0 2 0.600 0.0 3 -torsion 24 3 13 21 0.650 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 24 3 13 24 1.816 0.0 1 1.222 180.0 2 1.581 0.0 3 -torsion 24 3 13 46 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 46 3 13 13 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 46 3 13 46 0.000 0.0 1 0.000 180.0 2 0.360 0.0 3 -torsion 48 3 13 46 0.000 0.0 1 0.000 180.0 2 0.275 0.0 3 -torsion 52 3 13 13 0.000 0.0 1 0.820 180.0 2 0.000 0.0 3 -torsion 52 3 13 44 0.000 0.0 1 0.820 180.0 2 0.000 0.0 3 -torsion 52 3 13 46 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 65 3 13 13 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 65 3 13 46 0.000 0.0 1 0.000 180.0 2 0.360 0.0 3 -torsion 107 3 13 46 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 4 3 20 13 0.000 0.0 1 5.124 180.0 2 0.000 0.0 3 -#torsion 4 3 29 13 0.000 0.0 1 5.000 180.0 2 0.000 0.0 3 -torsion 4 3 20 48 0.000 0.0 1 5.000 180.0 2 0.000 0.0 3 -torsion 13 3 20 13 4.669 0.0 1 5.124 180.0 2 0.000 0.0 3 -torsion 13 3 20 48 1.500 0.0 1 5.000 180.0 2 0.000 0.0 3 -torsion 24 3 20 13 -2.000 0.0 1 5.000 180.0 2 0.000 0.0 3 -torsion 46 3 20 13 4.669 0.0 1 5.124 180.0 2 0.000 0.0 3 -torsion 48 3 20 13 4.000 0.0 1 5.000 180.0 2 0.000 0.0 3 -torsion 3 3 24 13 0.400 0.0 1 4.900 180.0 2 0.000 0.0 3 -torsion 3 3 24 45 0.000 0.0 1 4.900 180.0 2 0.000 0.0 3 -torsion 4 3 24 5 0.000 0.0 1 6.603 180.0 2 0.000 0.0 3 -torsion 4 3 24 13 0.000 0.0 1 6.089 180.0 2 0.000 0.0 3 -torsion 4 3 24 45 0.000 0.0 1 4.900 180.0 2 0.000 0.0 3 -torsion 4 3 24 47 0.000 0.0 1 6.089 180.0 2 0.000 0.0 3 -torsion 4 3 24 48 0.000 0.0 1 6.089 180.0 2 0.000 0.0 3 -torsion 4 3 24 91 0.000 0.0 1 6.089 180.0 2 0.000 0.0 3 -torsion 5 3 24 13 2.300 0.0 1 6.089 180.0 2 0.000 0.0 3 -torsion 5 3 24 45 0.000 0.0 1 4.900 180.0 2 0.000 0.0 3 -torsion 13 3 24 5 4.542 0.0 1 6.603 180.0 2 1.045 0.0 3 -torsion 13 3 24 13 2.300 0.0 1 6.089 180.0 2 0.000 0.0 3 -torsion 13 3 24 45 0.000 0.0 1 4.900 180.0 2 0.000 0.0 3 -torsion 13 3 24 48 2.300 0.0 1 6.089 180.0 2 0.000 0.0 3 -torsion 20 3 24 13 2.300 0.0 1 6.089 180.0 2 0.000 0.0 3 -torsion 20 3 24 45 0.000 0.0 1 4.900 180.0 2 0.000 0.0 3 -torsion 24 3 24 3 2.300 0.0 1 6.089 180.0 2 0.000 0.0 3 -torsion 24 3 24 13 4.600 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 24 3 24 45 0.000 0.0 1 4.900 180.0 2 0.000 0.0 3 -torsion 46 3 24 13 2.300 0.0 1 6.089 180.0 2 0.000 0.0 3 -torsion 46 3 24 45 0.000 0.0 1 4.900 180.0 2 0.000 0.0 3 -torsion 47 3 24 45 0.000 0.0 1 4.900 180.0 2 0.000 0.0 3 -torsion 48 3 24 45 0.000 0.0 1 4.900 180.0 2 0.000 0.0 3 -torsion 48 3 24 48 2.300 0.0 1 6.089 180.0 2 0.000 0.0 3 -torsion 48 3 24 84 2.300 0.0 1 6.089 180.0 2 0.000 0.0 3 -torsion 48 3 24 87 2.300 0.0 1 6.089 180.0 2 0.000 0.0 3 -torsion 84 3 24 48 2.300 0.0 1 6.089 180.0 2 0.000 0.0 3 -torsion 84 3 24 84 2.300 0.0 1 6.089 180.0 2 0.000 0.0 3 -torsion 84 3 24 87 2.300 0.0 1 6.089 180.0 2 0.000 0.0 3 -torsion 87 3 24 45 0.000 0.0 1 4.900 180.0 2 0.000 0.0 3 -torsion 87 3 24 48 2.300 0.0 1 6.089 180.0 2 0.000 0.0 3 -torsion 87 3 24 84 2.300 0.0 1 6.089 180.0 2 0.000 0.0 3 -torsion 87 3 24 87 2.300 0.0 1 6.089 180.0 2 0.000 0.0 3 -torsion 0 3 47 13 0.900 0.0 1 0.230 180.0 2 -0.505 0.0 3 -torsion 4 3 47 46 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 4 3 47 47 2.500 0.0 1 6.000 180.0 2 0.000 0.0 3 -torsion 5 3 47 47 3.200 0.0 1 -3.000 180.0 2 0.000 0.0 3 -torsion 24 3 47 46 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 24 3 47 47 2.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 107 3 47 46 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 107 3 47 47 2.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 4 3 48 48 0.000 0.0 1 2.100 180.0 2 0.000 0.0 3 -torsion 5 3 48 48 0.000 0.0 1 2.100 180.0 2 0.000 0.0 3 -torsion 13 3 48 48 0.000 0.0 1 0.200 180.0 2 0.000 0.0 3 -torsion 20 3 48 48 0.000 0.0 1 2.100 180.0 2 0.000 0.0 3 -torsion 24 3 48 48 0.000 0.0 1 1.100 180.0 2 0.000 0.0 3 -torsion 46 3 48 48 0.000 0.0 1 0.200 180.0 2 0.000 0.0 3 -torsion 0 3 50 13 0.900 0.0 1 0.230 180.0 2 -0.505 0.0 3 -torsion 4 3 50 47 2.500 0.0 1 6.000 180.0 2 0.000 0.0 3 -torsion 5 3 50 47 3.200 0.0 1 -3.000 180.0 2 0.000 0.0 3 -torsion 13 3 50 47 0.800 0.0 1 -3.000 180.0 2 0.000 0.0 3 -torsion 13 3 56 0 0.000 0.0 1 14.000 180.0 2 0.000 0.0 3 -torsion 13 3 56 13 0.000 0.0 1 14.000 180.0 2 0.000 0.0 3 -torsion 46 3 56 0 0.000 0.0 1 14.000 180.0 2 0.000 0.0 3 -torsion 46 3 56 45 0.000 0.0 1 14.000 180.0 2 0.000 0.0 3 -torsion 0 3 60 0 0.000 0.0 1 7.000 180.0 2 0.000 0.0 3 -torsion 4 3 60 0 0.000 0.0 1 7.000 180.0 2 0.000 0.0 3 -torsion 4 3 82 0 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 4 3 82 57 2.000 0.0 1 1.000 180.0 2 0.000 0.0 3 -torsion 4 3 82 61 0.000 0.0 1 1.000 180.0 2 0.000 0.0 3 -torsion 82 3 82 57 -2.000 0.0 1 1.000 180.0 2 0.000 0.0 3 -torsion 82 3 82 61 0.000 0.0 1 1.000 180.0 2 0.000 0.0 3 -torsion 4 3 84 20 -0.750 0.0 1 1.500 180.0 2 0.000 0.0 3 -torsion 4 3 84 87 0.750 0.0 1 1.500 180.0 2 0.000 0.0 3 -torsion 84 3 84 20 0.000 0.0 1 1.500 180.0 2 0.000 0.0 3 -torsion 84 3 84 87 0.000 0.0 1 1.500 180.0 2 0.000 0.0 3 -torsion 48 3 86 48 0.000 0.0 1 2.170 180.0 2 0.000 0.0 3 -torsion 0 3 87 0 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 4 3 87 84 0.000 0.0 1 2.100 180.0 2 0.000 0.0 3 -torsion 4 3 87 87 0.000 0.0 1 2.100 180.0 2 0.000 0.0 3 -torsion 24 3 87 84 0.000 0.0 1 1.100 180.0 2 0.000 0.0 3 -torsion 24 3 87 87 0.000 0.0 1 1.100 180.0 2 0.000 0.0 3 -torsion 4 3 107 13 0.000 0.0 1 4.900 180.0 2 0.000 0.0 3 -torsion 13 3 107 13 0.000 0.0 1 4.900 180.0 2 0.000 0.0 3 -torsion 4 3 109 109 2.500 0.0 1 6.000 180.0 2 0.000 0.0 3 -torsion 5 3 109 109 3.200 0.0 1 -3.000 180.0 2 0.000 0.0 3 -torsion 0 4 106 0 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 7 5 10 2 0.300 0.0 1 0.000 180.0 2 0.500 0.0 3 -torsion 7 5 10 6 0.300 0.0 1 0.000 180.0 2 0.500 0.0 3 -torsion 7 5 13 2 0.000 0.0 1 0.000 180.0 2 0.200 0.0 3 -torsion 7 5 13 6 0.000 0.0 1 0.000 180.0 2 0.200 0.0 3 -torsion 7 5 13 13 -0.356 0.0 1 -0.174 180.0 2 0.492 0.0 3 -#torsion 7 5 13 13 4.478 0.0 1 -2.175 180.0 2 0.000 0.0 3 -#torsion 7 5 13 13 2.674 0.0 1 -2.883 180.0 2 1.026 0.0 3 -torsion 7 5 13 46 0.000 0.0 1 0.000 180.0 2 0.352 0.0 3 -#torsion 7 5 13 36 -2.589 0.0 1 -1.123 180.0 2 0.270 0.0 3 -#torsion 7 5 13 36 0.000 0.0 1 0.000 180.0 2 0.476 0.0 3 -torsion 7 5 13 47 -0.900 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 7 5 13 48 -0.900 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 7 5 13 50 -0.900 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 7 5 44 13 0.000 0.0 1 0.000 180.0 2 0.300 0.0 3 -torsion 7 5 44 45 0.000 0.0 1 0.000 180.0 2 0.300 0.0 3 -torsion 7 5 24 3 5.519 0.0 1 -6.700 180.0 2 0.581 0.0 3 -torsion 7 5 24 45 2.722 0.0 1 -5.154 180.0 2 0.000 0.0 3 -torsion 7 5 47 47 0.000 0.0 1 1.682 180.0 2 0.000 0.0 3 -torsion 7 5 48 48 0.000 0.0 1 1.682 180.0 2 0.000 0.0 3 -torsion 7 5 51 20 -1.257 0.0 1 -1.806 180.0 2 0.003 0.0 3 -torsion 7 5 56 3 3.000 0.0 1 3.000 180.0 2 0.000 0.0 3 -torsion 7 5 64 4 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 7 5 64 5 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 7 5 79 13 -0.750 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 7 5 79 23 0.750 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 7 5 79 48 2.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 0 13 13 3 -4.344 0.0 1 -1.714 180.0 2 0.000 0.0 3 -torsion 0 13 13 13 1.711 0.0 1 -0.500 180.0 2 0.663 0.0 3 -#torsion 0 13 13 13 -1.336 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 0 13 13 24 1.428 0.0 1 0.086 180.0 2 0.029 0.0 3 -torsion 1 13 13 1 -2.500 0.0 1 0.000 180.0 2 0.250 0.0 3 -torsion 1 13 13 5 0.000 0.0 1 0.000 180.0 2 0.540 0.0 3 -torsion 1 13 13 13 0.300 0.0 1 -0.400 180.0 2 0.400 0.0 3 -torsion 1 13 13 46 0.000 0.0 1 0.000 180.0 2 0.400 0.0 3 -torsion 3 13 13 3 -0.550 0.0 1 0.000 180.0 2 1.000 0.0 3 -#torsion 3 13 13 3 0.800 0.0 1 0.000 180.0 2 0.900 0.0 3 -torsion 3 13 13 5 -6.180 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 3 13 13 13 -2.060 0.0 1 -0.313 180.0 2 0.315 0.0 3 -#torsion 3 13 13 13 -3.185 0.0 1 -0.825 180.0 2 0.493 0.0 3 -#torsion 3 13 13 13 -1.697 0.0 1 -0.456 180.0 2 0.585 0.0 3 -torsion 3 13 13 15 -4.344 0.0 1 -1.714 180.0 2 0.000 0.0 3 -torsion 3 13 13 16 -4.344 0.0 1 -1.714 180.0 2 0.000 0.0 3 -torsion 3 13 13 24 -9.000 0.0 1 2.000 180.0 2 0.800 0.0 3 -torsion 3 13 13 46 0.000 0.0 1 0.000 180.0 2 -0.100 0.0 3 -#torsion 3 13 13 36 0.000 0.0 1 0.000 180.0 2 0.074 0.0 3 -#torsion 3 13 13 36 0.000 0.0 1 0.000 180.0 2 -0.076 0.0 3 -torsion 3 13 13 48 -1.697 0.0 1 -0.456 180.0 2 0.585 0.0 3 -torsion 3 13 13 80 -1.697 0.0 1 -0.456 180.0 2 0.585 0.0 3 -torsion 5 13 13 5 9.508 0.0 1 0.000 180.0 2 0.000 0.0 3 -#torsion 5 13 13 5 12.234 0.0 1 0.000 180.0 2 0.000 0.0 3 -#torsion 5 13 13 5 9.066 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 5 13 13 13 -1.552 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 5 13 13 20 4.319 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 5 13 13 44 8.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 5 13 13 24 6.280 0.0 1 -1.467 180.0 2 2.030 0.0 3 -torsion 5 13 13 46 0.000 0.0 1 0.000 180.0 2 0.468 0.0 3 -torsion 13 13 13 13 1.300 0.0 1 -0.050 180.0 2 0.200 0.0 3 -#torsion 13 13 13 13 6.622 0. 1 0.948 180. 2 -1.388 0. 3 -2.118 180. 4 -torsion 13 13 13 15 1.262 0.0 1 -0.198 180.0 2 0.465 0.0 3 -torsion 13 13 13 16 2.619 0.0 1 -0.620 180.0 2 0.258 0.0 3 -torsion 13 13 13 19 0.000 0.0 1 -0.650 180.0 2 0.000 0.0 3 -torsion 13 13 13 21 0.000 0.0 1 0.000 180.0 2 0.400 0.0 3 -torsion 13 13 13 44 2.392 0.0 1 -0.674 180.0 2 0.550 0.0 3 -torsion 13 13 13 24 0.845 0.0 1 -0.962 180.0 2 0.713 0.0 3 -#torsion 13 13 13 35 1.964 0.0 1 0.000 180.0 2 0.659 0.0 3 -torsion 13 13 13 46 0.000 0.0 1 0.000 180.0 2 0.300 0.0 3 -torsion 13 13 13 51 1.300 0.0 1 -0.050 180.0 2 0.200 0.0 3 -torsion 13 13 13 53 2.732 0.0 1 -0.229 180.0 2 0.485 0.0 3 -torsion 13 13 13 65 0.000 0.0 1 0.000 180.0 2 0.400 0.0 3 -torsion 13 13 13 66 0.000 0.0 1 0.000 180.0 2 0.400 0.0 3 -torsion 13 13 13 79 1.262 0.0 1 -0.198 180.0 2 0.465 0.0 3 -torsion 13 13 13 107 1.964 0.0 1 0.000 180.0 2 0.659 0.0 3 -torsion 13 13 13 108 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 15 13 13 46 0.000 0.0 1 0.000 180.0 2 0.452 0.0 3 -torsion 16 13 13 46 0.000 0.0 1 0.000 180.0 2 0.452 0.0 3 -torsion 19 13 13 46 0.000 0.0 1 0.000 180.0 2 0.366 0.0 3 -torsion 20 13 13 20 -0.550 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 20 13 13 46 0.000 0.0 1 0.000 180.0 2 0.468 0.0 3 -torsion 21 13 13 21 -0.250 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 21 13 13 44 2.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 21 13 13 46 0.000 0.0 1 0.000 180.0 2 0.400 0.0 3 -torsion 44 13 13 44 11.035 0.0 1 -0.968 180.0 2 0.270 0.0 3 -torsion 44 13 13 46 -1.013 0.0 1 -0.709 180.0 2 0.473 0.0 3 -torsion 44 13 13 48 -0.800 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 24 13 13 46 0.000 0.0 1 0.000 180.0 2 0.464 0.0 3 -torsion 24 13 13 48 0.845 0.0 1 -0.962 180.0 2 0.713 0.0 3 -torsion 24 13 13 80 0.845 0.0 1 -0.962 180.0 2 0.713 0.0 3 -torsion 46 13 13 46 0.000 0.0 1 0.000 180.0 2 0.300 0.0 3 -torsion 46 13 13 47 0.000 0.0 1 0.000 180.0 2 0.366 0.0 3 -torsion 46 13 13 48 0.000 0.0 1 0.000 180.0 2 0.462 0.0 3 -torsion 46 13 13 51 0.000 0.0 1 0.000 180.0 2 0.300 0.0 3 -torsion 46 13 13 53 0.000 0.0 1 0.000 180.0 2 0.384 0.0 3 -torsion 46 13 13 55 0.000 0.0 1 0.000 180.0 2 -0.582 0.0 3 -torsion 46 13 13 59 0.000 0.0 1 0.000 180.0 2 0.462 0.0 3 -torsion 46 13 13 62 0.000 0.0 1 0.000 180.0 2 0.462 0.0 3 -torsion 46 13 13 65 0.000 0.0 1 0.000 180.0 2 0.400 0.0 3 -torsion 46 13 13 66 0.000 0.0 1 0.000 180.0 2 0.400 0.0 3 -torsion 46 13 13 79 0.000 0.0 1 0.000 180.0 2 0.452 0.0 3 -#torsion 36 13 13 69 0.000 0.0 1 0.000 180.0 2 0.350 0.0 3 -torsion 46 13 13 80 0.000 0.0 1 0.000 180.0 2 0.462 0.0 3 -torsion 46 13 13 82 0.000 0.0 1 0.000 180.0 2 0.462 0.0 3 -torsion 46 13 13 83 0.000 0.0 1 0.000 180.0 2 0.462 0.0 3 -torsion 46 13 13 84 0.000 0.0 1 0.000 180.0 2 0.462 0.0 3 -torsion 46 13 13 87 0.000 0.0 1 0.000 180.0 2 0.462 0.0 3 -torsion 46 13 13 88 0.000 0.0 1 0.000 180.0 2 0.462 0.0 3 -torsion 46 13 13 102 0.000 0.0 1 0.000 180.0 2 -0.225 0.0 3 -torsion 46 13 13 104 0.000 0.0 1 0.000 180.0 2 0.300 0.0 3 -torsion 46 13 13 107 0.000 0.0 1 0.000 180.0 2 0.464 0.0 3 -torsion 46 13 13 108 0.000 0.0 1 0.000 180.0 2 0.450 0.0 3 -torsion 46 13 13 109 0.000 0.0 1 0.000 180.0 2 0.366 0.0 3 -torsion 48 13 13 53 1.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 108 13 13 108 5.200 0.0 1 -0.500 180.0 2 0.000 0.0 3 -torsion 13 13 15 17 -0.759 0.0 1 -0.282 180.0 2 0.680 0.0 3 -torsion 46 13 15 17 0.000 0.0 1 0.000 180.0 2 0.480 0.0 3 -torsion 13 13 16 13 0.925 0.0 1 -0.576 180.0 2 0.677 0.0 3 -torsion 13 13 16 16 1.941 0.0 1 -0.836 180.0 2 0.935 0.0 3 -torsion 46 13 16 13 0.000 0.0 1 0.000 180.0 2 0.647 0.0 3 -torsion 46 13 16 16 0.000 0.0 1 0.000 180.0 2 0.558 0.0 3 -torsion 46 13 16 48 0.000 0.0 1 0.000 180.0 2 0.647 0.0 3 -torsion 0 13 18 19 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 46 13 18 19 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 0 13 19 18 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 0 13 19 19 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 13 13 19 19 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 46 13 19 19 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 0 13 20 13 -0.521 0.0 1 -2.018 180.0 2 1.996 0.0 3 -torsion 56 13 20 13 -0.500 0.0 1 -1.500 180.0 2 1.000 0.0 3 -torsion 57 13 20 13 -0.500 0.0 1 -1.500 180.0 2 1.000 0.0 3 -torsion 13 13 20 3 -1.220 0.0 1 -0.126 180.0 2 0.422 0.0 3 -torsion 13 13 20 13 0.650 0.0 1 -0.250 180.0 2 0.670 0.0 3 -torsion 13 13 20 64 -1.420 0.0 1 -0.620 180.0 2 0.100 0.0 3 -torsion 46 13 20 0 0.000 0.0 1 0.000 180.0 2 0.760 0.0 3 -torsion 46 13 20 3 0.000 0.0 1 0.000 180.0 2 0.198 0.0 3 -torsion 46 13 20 47 0.000 0.0 1 0.000 180.0 2 0.760 0.0 3 -torsion 46 13 20 48 0.000 0.0 1 0.000 180.0 2 0.760 0.0 3 -torsion 46 13 20 51 0.000 0.0 1 0.000 180.0 2 0.760 0.0 3 -torsion 46 13 20 64 0.000 0.0 1 0.000 180.0 2 0.300 0.0 3 -torsion 13 13 44 13 0.416 0.0 1 -0.128 180.0 2 0.695 0.0 3 -#torsion 13 13 33 13 1.536 0.0 1 -0.128 180.0 2 0.695 0.0 3 -#torsion 13 13 33 13 1.464 0.0 1 -0.128 180.0 2 0.695 0.0 3 -torsion 13 13 44 45 -0.190 0.0 1 -0.417 180.0 2 0.418 0.0 3 -#torsion 13 13 33 34 0.000 0.0 1 4.000 180.0 2 0.000 0.0 3 -#torsion 13 13 33 34 0.200 0.0 1 -0.417 180.0 2 0.418 0.0 3 -#torsion 13 13 33 34 0.819 0.0 1 -0.417 180.0 2 0.418 0.0 3 -#torsion 13 13 33 34 1.522 0.0 1 -0.417 180.0 2 0.418 0.0 3 -torsion 46 13 44 13 0.000 0.0 1 0.000 180.0 2 0.560 0.0 3 -torsion 46 13 44 45 0.000 0.0 1 0.000 180.0 2 0.400 0.0 3 -torsion 46 13 44 48 0.000 0.0 1 0.000 180.0 2 0.560 0.0 3 -torsion 0 13 24 45 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 3 13 24 3 -2.365 0.0 1 0.912 180.0 2 -0.850 0.0 3 -torsion 3 13 24 13 -1.737 0.0 1 1.251 180.0 2 -3.501 0.0 3 -torsion 3 13 24 45 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 13 13 24 3 0.000 0.0 1 0.462 180.0 2 0.000 0.0 3 -#torsion 13 13 35 3 -1.396 0.0 1 -0.427 180.0 2 0.000 0.0 3 -#torsion 13 13 35 3 1.130 0.0 1 -1.420 180.0 2 0.440 0.0 3 -torsion 13 13 24 13 4.753 0.0 1 -0.734 180.0 2 0.000 0.0 3 -#torsion 13 13 35 13 2.859 0.0 1 2.058 180.0 2 -11.266 0.0 3 -torsion 13 13 24 45 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 13 13 24 59 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 13 13 24 79 2.929 0.0 1 -2.533 180.0 2 0.497 0.0 3 -torsion 13 13 24 91 2.300 0.0 1 6.089 180.0 2 0.000 0.0 3 -torsion 46 13 24 3 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -#torsion 36 13 35 3 0.000 0.0 1 0.000 180.0 2 -0.139 0.0 3 -torsion 46 13 24 13 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 46 13 24 45 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 46 13 24 48 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 46 13 24 79 1.362 0.0 1 -1.457 180.0 2 0.149 0.0 3 -torsion 48 13 24 59 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 0 13 47 13 1.711 0.0 1 -0.500 180.0 2 0.663 0.0 3 -torsion 0 13 47 46 0.000 0.0 1 0.000 180.0 2 0.468 0.0 3 -torsion 0 13 47 47 0.500 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 0 13 47 50 0.500 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 1 13 47 47 0.500 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 13 13 47 13 2.817 0.0 1 -0.169 180.0 2 0.543 0.0 3 -torsion 13 13 47 47 0.346 0.0 1 0.405 180.0 2 -0.904 0.0 3 -torsion 13 13 47 50 0.346 0.0 1 0.405 180.0 2 -0.904 0.0 3 -torsion 46 13 47 13 0.000 0.0 1 0.000 180.0 2 0.300 0.0 3 -torsion 46 13 47 46 0.000 0.0 1 0.000 180.0 2 0.318 0.0 3 -torsion 46 13 47 47 0.000 0.0 1 0.000 180.0 2 -0.372 0.0 3 -torsion 46 13 47 50 0.000 0.0 1 0.000 180.0 2 -0.372 0.0 3 -torsion 46 13 47 110 0.000 0.0 1 0.000 180.0 2 -0.250 0.0 3 -torsion 47 13 47 13 0.000 0.0 1 -8.000 180.0 2 0.000 0.0 3 -torsion 47 13 47 46 0.000 0.0 1 -8.000 180.0 2 0.000 0.0 3 -torsion 0 13 48 48 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 1 13 48 48 0.000 0.0 1 0.450 180.0 2 0.000 0.0 3 -torsion 13 13 48 48 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 13 13 48 56 -0.500 0.0 1 0.500 180.0 2 -0.500 0.0 3 -torsion 21 13 48 48 0.000 0.0 1 -0.400 180.0 2 0.000 0.0 3 -torsion 46 13 48 48 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 64 13 48 48 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 65 13 48 48 0.000 0.0 1 0.000 180.0 2 0.400 0.0 3 -torsion 0 13 50 47 0.500 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 13 13 50 50 0.346 0.0 1 0.405 180.0 2 -0.904 0.0 3 -torsion 46 13 50 47 0.000 0.0 1 0.000 180.0 2 -0.372 0.0 3 -torsion 46 13 50 50 0.000 0.0 1 0.000 180.0 2 -0.372 0.0 3 -torsion 46 13 50 109 0.000 0.0 1 0.000 180.0 2 -0.372 0.0 3 -torsion 13 13 51 0 1.711 0.0 1 -0.500 180.0 2 0.663 0.0 3 -torsion 13 13 51 46 0.000 0.0 1 0.000 180.0 2 0.300 0.0 3 -torsion 46 13 51 20 0.000 0.0 1 0.000 180.0 2 0.468 0.0 3 -torsion 13 13 53 13 1.438 0.0 1 -0.124 180.0 2 0.264 0.0 3 -torsion 13 13 53 45 0.000 0.0 1 0.000 180.0 2 0.347 0.0 3 -torsion 46 13 53 13 0.000 0.0 1 0.000 180.0 2 0.302 0.0 3 -torsion 46 13 53 45 0.000 0.0 1 0.000 180.0 2 0.261 0.0 3 -torsion 46 13 53 48 0.000 0.0 1 0.000 180.0 2 0.462 0.0 3 -torsion 46 13 53 54 0.000 0.0 1 0.000 180.0 2 0.300 0.0 3 -torsion 13 13 55 45 -0.190 0.0 1 -0.417 180.0 2 0.418 0.0 3 -torsion 13 13 55 48 1.829 0.0 1 0.243 180.0 2 -0.498 0.0 3 -torsion 13 13 55 54 -0.190 0.0 1 -0.417 180.0 2 0.418 0.0 3 -torsion 46 13 55 13 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 46 13 55 45 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 46 13 55 48 0.000 0.0 1 0.000 180.0 2 0.177 0.0 3 -torsion 13 13 56 18 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 0 13 57 0 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 13 13 57 0 1.000 0.0 1 -0.350 180.0 2 0.000 0.0 3 -#torsion 13 13 47 0 0.000 0.0 1 -0.576 180.0 2 0.000 0.0 3 -torsion 13 13 57 62 2.756 0.0 1 -0.872 180.0 2 -3.680 0.0 3 -#torsion 13 13 47 52 -1.000 0.0 1 -0.350 180.0 2 0.000 0.0 3 -torsion 13 13 57 82 -1.000 0.0 1 -0.350 180.0 2 0.000 0.0 3 -torsion 20 13 57 0 1.500 0.0 1 -1.500 180.0 2 0.000 0.0 3 -#torsion 29 13 47 0 0.000 0.0 1 -1.876 180.0 2 0.000 0.0 3 -torsion 20 13 57 62 -1.500 0.0 1 -1.500 180.0 2 0.000 0.0 3 -torsion 20 13 57 82 -1.500 0.0 1 -1.500 180.0 2 0.000 0.0 3 -torsion 13 13 59 0 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 13 13 59 56 0.000 0.0 1 0.500 180.0 2 -0.500 0.0 3 -torsion 46 13 59 0 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 13 13 62 0 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 46 13 62 0 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 46 13 64 20 0.000 0.0 1 0.000 180.0 2 0.250 0.0 3 -torsion 46 13 64 52 0.000 0.0 1 0.000 180.0 2 0.250 0.0 3 -torsion 48 13 64 20 2.250 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 48 13 64 52 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 0 13 79 23 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 0 13 79 24 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 13 13 79 13 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 13 13 79 23 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 46 13 79 5 0.000 0.0 1 0.000 180.0 2 0.350 0.0 3 -torsion 46 13 79 13 0.000 0.0 1 0.000 180.0 2 0.350 0.0 3 -torsion 46 13 79 23 0.000 0.0 1 0.000 180.0 2 0.350 0.0 3 -torsion 46 13 79 48 0.000 0.0 1 0.000 180.0 2 0.350 0.0 3 -torsion 13 13 80 0 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 13 13 80 60 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 13 13 80 84 -0.714 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 46 13 80 0 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 46 13 80 60 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 46 13 80 84 0.000 0.0 1 0.000 180.0 2 -0.480 0.0 3 -torsion 13 13 82 0 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 46 13 82 0 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 13 13 83 0 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 46 13 83 0 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 1 13 84 0 0.000 0.0 1 0.450 180.0 2 0.000 0.0 3 -torsion 13 13 84 0 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 13 13 84 57 1.700 0.0 1 -0.600 180.0 2 0.000 0.0 3 -torsion 21 13 84 0 0.000 0.0 1 -0.400 180.0 2 0.000 0.0 3 -torsion 46 13 84 0 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 1 13 87 0 0.000 0.0 1 0.450 180.0 2 0.000 0.0 3 -torsion 13 13 87 0 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 21 13 87 0 0.000 0.0 1 -0.400 180.0 2 0.000 0.0 3 -torsion 46 13 87 0 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 13 13 88 0 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 46 13 88 0 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 0 13 90 0 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 46 13 90 0 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 46 13 91 91 0.000 0.0 1 0.000 180.0 2 0.300 0.0 3 -torsion 13 13 95 13 0.000 0.0 1 -1.000 180.0 2 0.000 0.0 3 -torsion 13 13 95 46 0.000 0.0 1 -1.000 180.0 2 0.000 0.0 3 -torsion 13 13 102 103 0.000 0.0 1 0.400 180.0 2 0.000 0.0 3 -torsion 46 13 102 103 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 13 13 104 13 1.000 0.0 1 -0.500 180.0 2 0.500 0.0 3 -torsion 46 13 104 13 0.000 0.0 1 0.000 180.0 2 0.300 0.0 3 -torsion 0 13 105 0 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 13 13 105 0 1.000 0.0 1 -0.350 180.0 2 0.000 0.0 3 -torsion 13 13 105 62 -1.000 0.0 1 -0.350 180.0 2 0.000 0.0 3 -torsion 13 13 105 82 -1.000 0.0 1 -0.350 180.0 2 0.000 0.0 3 -torsion 20 13 105 0 1.500 0.0 1 -1.500 180.0 2 0.000 0.0 3 -torsion 20 13 105 62 3.132 0.0 1 -1.491 180.0 2 2.744 0.0 3 -#torsion 29 13 95 52 -1.500 0.0 1 -1.500 180.0 2 0.000 0.0 3 -torsion 20 13 105 82 -1.500 0.0 1 -1.500 180.0 2 0.000 0.0 3 -torsion 3 13 107 13 -1.737 0.0 1 1.251 180.0 2 -3.501 0.0 3 -torsion 13 13 107 3 -1.396 0.0 1 -0.427 180.0 2 0.000 0.0 3 -torsion 13 13 107 13 4.753 0.0 1 -0.734 180.0 2 0.000 0.0 3 -#torsion 13 13 97 13 2.859 0.0 1 2.058 180.0 2 -11.266 0.0 3 -torsion 46 13 107 3 0.000 0.0 1 0.000 180.0 2 -0.139 0.0 3 -torsion 46 13 107 13 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 46 13 107 48 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 13 13 108 13 1.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 13 13 108 45 0.000 0.0 1 0.000 180.0 2 0.260 0.0 3 -torsion 46 13 108 13 0.000 0.0 1 0.000 180.0 2 0.180 0.0 3 -torsion 46 13 108 20 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 46 13 108 45 0.000 0.0 1 0.000 180.0 2 0.180 0.0 3 -torsion 13 13 109 109 0.346 0.0 1 0.405 180.0 2 -0.904 0.0 3 -torsion 46 13 109 13 0.000 0.0 1 0.000 180.0 2 0.300 0.0 3 -torsion 46 13 109 46 0.000 0.0 1 0.000 180.0 2 0.318 0.0 3 -torsion 46 13 109 109 0.000 0.0 1 0.000 180.0 2 -0.372 0.0 3 -torsion 17 15 48 0 0.000 0.0 1 1.100 180.0 2 0.000 0.0 3 -#torsion 17 15 38 0 -3.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 17 15 48 48 0.000 0.0 1 1.100 180.0 2 0.000 0.0 3 -torsion 13 16 16 13 0.000 0.0 1 -7.414 180.0 2 1.705 0.0 3 -torsion 13 16 48 48 0.000 0.0 1 0.600 180.0 2 0.000 0.0 3 -torsion 13 16 48 56 1.600 0.0 1 5.100 180.0 2 0.000 0.0 3 -torsion 13 16 59 56 0.000 0.0 1 4.800 180.0 2 0.000 0.0 3 -torsion 84 16 82 0 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 84 16 82 61 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 82 16 84 49 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 82 16 84 83 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 82 16 84 88 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 0 16 91 0 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 19 18 48 0 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 19 18 48 48 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 18 18 56 13 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 18 18 56 46 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 0 19 19 0 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 13 19 19 13 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 13 19 19 46 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 13 19 19 47 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 13 19 19 109 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 46 19 19 47 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 46 19 19 109 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 19 19 47 13 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 19 19 47 46 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 19 19 47 47 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 13 20 44 13 0.000 0.0 1 0.000 180.0 2 0.300 0.0 3 -torsion 13 20 44 45 0.000 0.0 1 0.000 180.0 2 0.300 0.0 3 -torsion 13 20 47 13 0.650 0.0 1 -0.250 180.0 2 0.670 0.0 3 -torsion 13 20 47 46 0.000 0.0 1 0.000 180.0 2 0.760 0.0 3 -torsion 13 20 47 47 -3.500 0.0 1 3.000 180.0 2 0.000 0.0 3 -torsion 13 20 47 50 -3.500 0.0 1 3.000 180.0 2 0.000 0.0 3 -torsion 3 20 48 48 0.000 0.0 1 2.500 180.0 2 0.000 0.0 3 -torsion 13 20 48 48 0.000 0.0 1 3.000 180.0 2 0.000 0.0 3 -torsion 13 20 48 56 0.400 0.0 1 5.500 180.0 2 0.000 0.0 3 -torsion 64 20 48 48 0.000 0.0 1 2.990 180.0 2 0.000 0.0 3 -torsion 13 20 51 5 -0.375 0.0 1 -1.358 180.0 2 0.004 0.0 3 -torsion 13 20 51 13 0.650 0.0 1 -0.250 180.0 2 0.670 0.0 3 -torsion 13 20 51 20 -0.375 0.0 1 -1.358 180.0 2 0.004 0.0 3 -torsion 13 20 51 46 0.000 0.0 1 0.000 180.0 2 0.760 0.0 3 -torsion 13 20 56 3 3.000 0.0 1 3.000 180.0 2 0.000 0.0 3 -torsion 13 20 59 56 0.000 0.0 1 5.200 180.0 2 0.000 0.0 3 -torsion 0 20 64 52 0.000 0.0 1 0.000 180.0 2 0.562 0.0 3 -torsion 13 20 64 13 3.500 0.0 1 -3.300 180.0 2 1.500 0.0 3 -torsion 13 20 64 52 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -#torsion 13 29 54 42 0.900 0.0 1 -2.930 180.0 2 2.640 0.0 3 -torsion 48 20 64 4 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 84 20 82 61 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 82 20 84 88 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 84 20 84 49 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 84 20 84 87 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 108 20 108 13 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 108 20 108 20 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 13 44 44 13 0.000 0.0 1 0.000 180.0 2 0.300 0.0 3 -torsion 13 44 44 45 0.000 0.0 1 0.000 180.0 2 0.300 0.0 3 -torsion 45 44 44 45 0.000 0.0 1 0.000 180.0 2 0.300 0.0 3 -torsion 13 44 48 48 -7.582 0.0 1 3.431 180.0 2 3.198 0.0 3 -torsion 45 44 48 48 0.000 0.0 1 2.030 180.0 2 0.000 0.0 3 -torsion 59 44 48 48 0.000 0.0 1 2.100 180.0 2 0.000 0.0 3 -torsion 82 44 48 48 0.000 0.0 1 2.100 180.0 2 0.000 0.0 3 -torsion 84 44 48 48 0.000 0.0 1 2.100 180.0 2 0.000 0.0 3 -torsion 45 44 82 16 0.000 0.0 1 2.100 180.0 2 0.000 0.0 3 -torsion 45 44 82 61 0.000 0.0 1 2.100 180.0 2 0.000 0.0 3 -torsion 48 44 82 16 0.000 0.0 1 2.100 180.0 2 0.000 0.0 3 -torsion 48 44 82 61 0.000 0.0 1 2.100 180.0 2 0.000 0.0 3 -torsion 0 24 48 48 0.000 0.0 1 2.100 180.0 2 0.000 0.0 3 -torsion 3 24 48 48 0.000 0.0 1 2.100 180.0 2 0.000 0.0 3 -torsion 13 24 48 48 0.000 0.0 1 2.100 180.0 2 0.000 0.0 3 -torsion 45 24 48 48 0.000 0.0 1 2.100 180.0 2 0.000 0.0 3 -torsion 59 24 48 48 0.000 0.0 1 2.100 180.0 2 0.000 0.0 3 -torsion 82 24 48 48 0.000 0.0 1 2.100 180.0 2 0.000 0.0 3 -torsion 84 24 48 48 0.000 0.0 1 2.100 180.0 2 0.000 0.0 3 -torsion 0 24 59 0 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 0 24 59 49 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 45 24 59 0 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 0 24 60 0 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 0 24 79 23 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 13 24 79 48 2.074 0.0 1 -2.966 180.0 2 2.473 0.0 3 -torsion 45 24 79 48 1.671 0.0 1 -4.901 180.0 2 0.669 0.0 3 -torsion 13 24 82 61 0.000 0.0 1 2.100 180.0 2 0.000 0.0 3 -torsion 45 24 82 16 0.000 0.0 1 2.100 180.0 2 0.000 0.0 3 -#torsion 34 35 72 16 0.000 0.0 1 2.030 180.0 2 0.000 0.0 3 -torsion 45 24 82 20 0.000 0.0 1 2.100 180.0 2 0.000 0.0 3 -#torsion 34 35 72 29 0.000 0.0 1 2.030 180.0 2 0.000 0.0 3 -torsion 45 24 82 61 0.000 0.0 1 2.100 180.0 2 0.000 0.0 3 -torsion 48 24 82 16 0.000 0.0 1 2.100 180.0 2 0.000 0.0 3 -torsion 48 24 82 20 0.000 0.0 1 2.100 180.0 2 0.000 0.0 3 -torsion 48 24 82 61 0.000 0.0 1 2.100 180.0 2 0.000 0.0 3 -torsion 0 24 84 0 0.000 0.0 1 2.170 180.0 2 0.000 0.0 3 -torsion 3 24 84 84 0.000 0.0 1 3.000 180.0 2 0.000 0.0 3 -torsion 45 24 84 16 0.000 0.0 1 2.100 180.0 2 0.000 0.0 3 -torsion 45 24 84 20 0.000 0.0 1 2.100 180.0 2 0.000 0.0 3 -torsion 48 24 84 16 0.000 0.0 1 2.100 180.0 2 0.000 0.0 3 -torsion 48 24 84 20 0.000 0.0 1 2.100 180.0 2 0.000 0.0 3 -torsion 3 24 86 48 0.000 0.0 1 2.170 180.0 2 0.000 0.0 3 -torsion 3 24 86 56 0.000 0.0 1 2.170 180.0 2 0.000 0.0 3 -torsion 3 24 86 86 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 47 24 86 48 0.000 0.0 1 2.170 180.0 2 0.000 0.0 3 -torsion 47 24 86 56 0.000 0.0 1 2.170 180.0 2 0.000 0.0 3 -torsion 0 24 87 0 0.000 0.0 1 2.170 180.0 2 0.000 0.0 3 -torsion 0 24 88 0 0.000 0.0 1 2.170 180.0 2 0.000 0.0 3 -torsion 3 24 91 46 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 3 24 91 89 -1.396 0.0 1 -0.427 180.0 2 0.000 0.0 3 -torsion 3 24 91 91 -1.396 0.0 1 -0.427 180.0 2 0.000 0.0 3 -torsion 45 24 91 46 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 45 24 91 89 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 45 24 91 91 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 0 24 106 0 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 47 46 47 13 0.000 0.0 1 -8.000 180.0 2 0.000 0.0 3 -torsion 47 46 47 46 0.000 0.0 1 -8.000 180.0 2 0.000 0.0 3 -torsion 0 47 47 0 0.000 0.0 1 14.000 180.0 2 0.000 0.0 3 -torsion 0 47 47 19 0.000 0.0 1 14.000 180.0 2 0.000 0.0 3 -torsion 3 47 47 24 0.000 0.0 1 14.000 180.0 2 0.000 0.0 3 -torsion 3 47 47 46 0.000 0.0 1 14.000 180.0 2 0.000 0.0 3 -torsion 5 47 47 13 0.000 0.0 1 14.000 180.0 2 0.000 0.0 3 -torsion 5 47 47 46 0.000 0.0 1 14.000 180.0 2 0.000 0.0 3 -torsion 13 47 47 13 0.000 0.0 1 14.000 180.0 2 0.000 0.0 3 -torsion 13 47 47 19 0.000 0.0 1 14.000 180.0 2 0.000 0.0 3 -torsion 13 47 47 20 0.000 0.0 1 14.000 180.0 2 0.000 0.0 3 -torsion 13 47 47 46 0.000 0.0 1 14.000 180.0 2 0.000 0.0 3 -torsion 19 47 47 46 0.000 0.0 1 14.000 180.0 2 0.000 0.0 3 -torsion 20 47 47 46 0.000 0.0 1 14.000 180.0 2 0.000 0.0 3 -torsion 21 47 47 21 -1.600 0.0 1 14.000 180.0 2 0.000 0.0 3 -torsion 21 47 47 46 0.000 0.0 1 14.000 180.0 2 0.000 0.0 3 -torsion 46 47 47 46 0.000 0.0 1 14.000 180.0 2 0.000 0.0 3 -torsion 46 47 47 48 0.000 0.0 1 14.000 180.0 2 0.000 0.0 3 -torsion 13 47 48 48 0.205 0.0 1 -0.531 180.0 2 0.000 0.0 3 -torsion 46 47 48 48 0.000 0.0 1 0.000 180.0 2 -0.372 0.0 3 -torsion 46 47 48 56 0.000 0.0 1 0.000 180.0 2 -0.372 0.0 3 -torsion 47 47 48 48 1.241 0.0 1 3.353 180.0 2 -0.286 0.0 3 -torsion 13 47 50 13 0.000 0.0 1 14.000 180.0 2 0.000 0.0 3 -torsion 13 47 50 46 0.000 0.0 1 14.000 180.0 2 0.000 0.0 3 -torsion 13 47 50 48 0.000 0.0 1 14.000 180.0 2 0.000 0.0 3 -torsion 13 47 50 50 0.000 0.0 1 14.000 180.0 2 0.000 0.0 3 -torsion 13 47 50 109 0.000 0.0 1 14.000 180.0 2 0.000 0.0 3 -torsion 24 47 50 3 0.000 0.0 1 14.000 180.0 2 0.000 0.0 3 -torsion 46 47 50 13 0.000 0.0 1 14.000 180.0 2 0.000 0.0 3 -torsion 46 47 50 46 0.000 0.0 1 14.000 180.0 2 0.000 0.0 3 -torsion 46 47 50 48 0.000 0.0 1 14.000 180.0 2 0.000 0.0 3 -torsion 46 47 50 50 0.000 0.0 1 14.000 180.0 2 0.000 0.0 3 -torsion 46 47 50 109 0.000 0.0 1 14.000 180.0 2 0.000 0.0 3 -torsion 0 47 84 0 0.000 0.0 1 2.170 180.0 2 0.000 0.0 3 -torsion 0 47 86 48 0.000 0.0 1 2.170 180.0 2 0.000 0.0 3 -torsion 3 47 86 86 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 49 47 86 0 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 49 47 86 24 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 0 47 87 0 0.000 0.0 1 2.170 180.0 2 0.000 0.0 3 -torsion 0 47 88 0 0.000 0.0 1 2.170 180.0 2 0.000 0.0 3 -torsion 13 47 110 47 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 46 47 110 47 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 0 48 48 0 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 0 48 48 13 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 0 48 48 48 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 0 48 48 49 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 1 48 48 48 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 1 48 48 49 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 13 48 48 13 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 13 48 48 48 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 13 48 48 49 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 13 48 48 50 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 21 48 48 48 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 21 48 48 49 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 44 48 48 49 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 47 48 48 49 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 48 48 48 48 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 48 48 48 49 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 48 48 48 50 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 48 48 48 55 0.0 0. 1 1.62 180. 2 0.0 0. 3 -0.44 180. 4 -torsion 48 48 48 60 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 48 48 48 65 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 48 48 48 66 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 48 48 48 86 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 48 48 48 109 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 49 48 48 49 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 49 48 48 50 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 49 48 48 60 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 49 48 48 65 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 49 48 48 66 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 49 48 48 86 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 49 48 48 109 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 56 48 48 86 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 48 48 50 46 0.000 0.0 1 0.000 180.0 2 -0.372 0.0 3 -torsion 48 48 50 47 1.241 0.0 1 3.353 180.0 2 -0.286 0.0 3 -torsion 56 48 50 46 0.000 0.0 1 0.000 180.0 2 -0.372 0.0 3 -torsion 56 48 50 47 1.241 0.0 1 3.353 180.0 2 -0.286 0.0 3 -torsion 48 48 53 13 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 48 48 53 54 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 0 48 55 45 0.000 0.0 1 2.030 180.0 2 0.000 0.0 3 -torsion 48 48 55 45 0.000 0.0 1 3.900 180.0 2 0.000 0.0 3 -torsion 55 48 55 13 0.000 0.0 1 7.936 180.0 2 0.000 0.0 3 -torsion 55 48 55 45 0.000 0.0 1 3.900 180.0 2 0.000 0.0 3 -torsion 60 48 55 45 0.000 0.0 1 2.030 180.0 2 0.000 0.0 3 -torsion 0 48 56 0 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 48 48 56 48 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 49 48 56 48 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 0 48 60 0 0.000 0.0 1 7.000 180.0 2 0.000 0.0 3 -torsion 0 48 79 23 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 48 48 79 13 0.000 0.0 1 -0.900 180.0 2 0.000 0.0 3 -torsion 48 48 79 24 1.656 0.0 1 -0.768 180.0 2 -0.117 0.0 3 -torsion 48 48 86 48 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 48 48 86 56 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 48 48 86 86 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 49 48 86 48 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 49 48 86 56 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 49 48 86 86 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 56 48 86 48 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 56 48 86 86 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 49 48 88 49 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 56 48 101 13 0.000 0.0 1 3.651 180.0 2 0.000 0.0 3 -torsion 48 48 102 103 0.000 0.0 1 1.150 180.0 2 0.000 0.0 3 -torsion 48 48 109 13 0.205 0.0 1 -0.531 180.0 2 0.000 0.0 3 -torsion 48 48 109 46 0.000 0.0 1 0.000 180.0 2 -0.372 0.0 3 -torsion 48 48 109 109 1.241 0.0 1 3.353 180.0 2 -0.286 0.0 3 -torsion 0 50 50 49 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 3 50 50 3 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 13 50 50 13 0.000 0.0 1 0.000 180.0 2 0.300 0.0 3 -torsion 13 50 50 46 0.000 0.0 1 0.000 180.0 2 0.300 0.0 3 -torsion 13 50 50 47 0.000 0.0 1 0.000 180.0 2 -0.372 0.0 3 -#torsion 13 40 40 37 0.900 0.0 1 0.230 180.0 2 -0.505 0.0 3 -torsion 46 50 50 46 0.000 0.0 1 0.000 180.0 2 0.300 0.0 3 -torsion 46 50 50 47 0.000 0.0 1 0.000 180.0 2 -0.372 0.0 3 -torsion 47 50 50 47 1.423 0.0 1 4.055 180.0 2 0.858 0.0 3 -torsion 13 50 109 13 0.000 0.0 1 0.000 180.0 2 0.300 0.0 3 -torsion 13 50 109 109 0.000 0.0 1 0.000 180.0 2 -0.372 0.0 3 -torsion 46 50 109 13 0.000 0.0 1 0.000 180.0 2 0.300 0.0 3 -torsion 46 50 109 46 0.000 0.0 1 0.000 180.0 2 0.300 0.0 3 -torsion 46 50 109 109 0.000 0.0 1 0.000 180.0 2 -0.372 0.0 3 -torsion 47 50 109 13 0.000 0.0 1 0.000 180.0 2 -0.372 0.0 3 -torsion 47 50 109 46 0.000 0.0 1 0.000 180.0 2 -0.372 0.0 3 -torsion 47 50 109 109 1.423 0.0 1 4.055 180.0 2 0.858 0.0 3 -torsion 13 53 82 61 0.000 0.0 1 2.100 180.0 2 0.000 0.0 3 -torsion 48 53 82 61 0.000 0.0 1 2.100 180.0 2 0.000 0.0 3 -torsion 45 55 59 0 0.000 0.0 1 2.030 180.0 2 0.000 0.0 3 -torsion 13 56 56 13 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 13 56 56 48 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 48 56 56 48 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 0 56 59 0 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 0 56 59 49 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 0 56 60 0 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 0 56 62 0 0.000 0.0 1 10.000 180.0 2 0.000 0.0 3 -torsion 0 56 82 0 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -#torsion 0 46 72 0 0.000 0.0 1 10.000 180.0 2 0.000 0.0 3 -torsion 48 56 86 48 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 48 56 86 86 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 0 57 60 0 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 45 57 60 0 0.000 0.0 1 5.000 180.0 2 0.000 0.0 3 -torsion 0 57 61 0 0.000 0.0 1 10.000 180.0 2 0.000 0.0 3 -torsion 0 57 62 0 0.000 0.0 1 10.000 180.0 2 0.000 0.0 3 -torsion 0 57 81 0 0.000 0.0 1 3.050 180.0 2 0.000 0.0 3 -torsion 0 57 82 0 0.000 0.0 1 4.650 180.0 2 0.000 0.0 3 -#torsion 0 47 72 0 0.000 0.0 1 10.000 180.0 2 0.000 0.0 3 -torsion 0 57 82 49 0.000 0.0 1 10.000 180.0 2 0.000 0.0 3 -torsion 45 57 82 0 0.000 0.0 1 5.000 180.0 2 0.000 0.0 3 -torsion 0 57 84 0 0.000 0.0 1 2.800 180.0 2 0.000 0.0 3 -#torsion 0 47 74 0 0.000 0.0 1 5.000 180.0 2 0.000 0.0 3 -#torsion 0 47 74 0 0.000 0.0 1 3.000 180.0 2 0.000 0.0 3 -torsion 45 57 84 0 0.000 0.0 1 5.000 180.0 2 0.000 0.0 3 -torsion 61 57 86 48 0.000 0.0 1 2.170 180.0 2 0.000 0.0 3 -torsion 84 57 86 48 0.000 0.0 1 2.170 180.0 2 0.000 0.0 3 -torsion 0 60 60 0 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 0 60 61 0 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 0 60 80 0 0.000 0.0 1 3.350 180.0 2 0.000 0.0 3 -torsion 0 60 81 0 0.000 0.0 1 6.000 180.0 2 0.000 0.0 3 -torsion 0 60 87 0 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 48 60 87 84 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 60 60 87 84 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 0 61 61 0 0.000 0.0 1 10.000 180.0 2 0.000 0.0 3 -torsion 0 61 62 0 0.000 0.0 1 10.000 180.0 2 0.000 0.0 3 -torsion 0 61 82 0 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -#torsion 0 51 72 0 0.000 0.0 1 10.000 180.0 2 0.000 0.0 3 -torsion 0 61 82 49 0.000 0.0 1 10.000 180.0 2 0.000 0.0 3 -torsion 83 61 82 16 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 88 61 82 16 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 88 61 82 20 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 0 61 83 0 0.000 0.0 1 4.800 180.0 2 0.000 0.0 3 -torsion 82 61 83 49 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 82 61 83 84 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 0 61 84 0 0.000 0.0 1 10.000 180.0 2 0.000 0.0 3 -torsion 0 61 88 0 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 82 61 88 84 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 0 80 84 0 0.000 0.0 1 13.050 180.0 2 0.000 0.0 3 -torsion 0 82 84 0 0.000 0.0 1 2.170 180.0 2 0.000 0.0 3 -torsion 16 82 86 48 0.000 0.0 1 2.170 180.0 2 0.000 0.0 3 -torsion 20 82 86 48 0.000 0.0 1 2.170 180.0 2 0.000 0.0 3 -torsion 57 82 86 48 0.000 0.0 1 2.170 180.0 2 0.000 0.0 3 -torsion 61 82 86 48 0.000 0.0 1 2.170 180.0 2 0.000 0.0 3 -torsion 0 82 87 0 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -#torsion 0 72 77 0 0.000 0.0 1 2.170 180.0 2 0.000 0.0 3 -torsion 0 83 84 0 0.000 0.0 1 10.750 180.0 2 0.000 0.0 3 -torsion 0 83 84 49 0.000 0.0 1 10.750 180.0 2 0.000 0.0 3 -torsion 49 83 84 0 0.000 0.0 1 10.750 180.0 2 0.000 0.0 3 -torsion 49 83 84 16 0.000 0.0 1 10.750 180.0 2 0.000 0.0 3 -torsion 49 83 84 49 0.000 0.0 1 10.750 180.0 2 0.000 0.0 3 -torsion 61 83 84 16 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 61 83 84 20 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 61 83 84 49 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 0 83 86 48 0.000 0.0 1 2.170 180.0 2 0.000 0.0 3 -torsion 61 83 86 48 0.000 0.0 1 2.170 180.0 2 0.000 0.0 3 -torsion 61 83 87 0 0.000 0.0 1 2.170 180.0 2 0.000 0.0 3 -torsion 84 83 87 0 0.000 0.0 1 2.170 180.0 2 0.000 0.0 3 -torsion 0 84 84 0 0.000 0.0 1 10.750 180.0 2 0.000 0.0 3 -torsion 0 84 84 49 0.000 0.0 1 10.750 180.0 2 0.000 0.0 3 -torsion 16 84 84 49 0.000 0.0 1 10.750 180.0 2 0.000 0.0 3 -torsion 49 84 84 49 0.000 0.0 1 10.750 180.0 2 0.000 0.0 3 -torsion 0 84 86 48 0.000 0.0 1 2.170 180.0 2 0.000 0.0 3 -torsion 16 84 86 48 0.000 0.0 1 2.170 180.0 2 0.000 0.0 3 -torsion 20 84 86 48 0.000 0.0 1 2.170 180.0 2 0.000 0.0 3 -torsion 57 84 86 48 0.000 0.0 1 2.170 180.0 2 0.000 0.0 3 -torsion 0 84 87 0 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 0 84 87 49 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 49 84 87 49 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 0 84 88 49 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 16 84 88 49 0.000 0.0 1 10.750 180.0 2 0.000 0.0 3 -torsion 16 84 88 61 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 20 84 88 61 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 49 84 88 0 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 49 84 88 61 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 48 86 86 48 0.000 0.0 1 2.170 180.0 2 0.000 0.0 3 -torsion 48 86 86 56 0.000 0.0 1 2.170 180.0 2 0.000 0.0 3 -torsion 48 86 87 0 0.000 0.0 1 2.170 180.0 2 0.000 0.0 3 -torsion 48 86 88 0 0.000 0.0 1 2.170 180.0 2 0.000 0.0 3 -torsion 48 86 88 61 0.000 0.0 1 2.170 180.0 2 0.000 0.0 3 -torsion 56 86 88 0 0.000 0.0 1 2.170 180.0 2 0.000 0.0 3 -torsion 0 87 87 20 0.000 0.0 1 2.170 180.0 2 0.000 0.0 3 -torsion 0 87 87 57 0.000 0.0 1 2.170 180.0 2 0.000 0.0 3 -torsion 0 87 87 87 0.000 0.0 1 2.170 180.0 2 0.000 0.0 3 -torsion 49 87 87 49 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 4 89 90 13 0.000 0.0 1 6.089 180.0 2 0.000 0.0 3 -torsion 4 89 90 45 0.000 0.0 1 4.900 180.0 2 0.000 0.0 3 -torsion 4 89 90 48 0.000 0.0 1 6.089 180.0 2 0.000 0.0 3 -torsion 4 89 90 91 0.000 0.0 1 20.000 180.0 2 0.000 0.0 3 -torsion 91 89 90 13 2.300 0.0 1 6.089 180.0 2 0.000 0.0 3 -torsion 91 89 90 45 0.000 0.0 1 4.900 180.0 2 0.000 0.0 3 -torsion 91 89 90 48 2.300 0.0 1 6.089 180.0 2 0.000 0.0 3 -torsion 91 89 90 91 2.300 0.0 1 6.089 180.0 2 0.000 0.0 3 -torsion 0 89 91 0 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 4 89 91 46 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 4 89 91 91 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 90 89 91 46 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 90 89 91 91 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 0 90 91 0 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 0 90 91 46 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 0 90 91 91 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 0 91 91 0 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 0 91 91 24 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 13 91 91 13 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 13 91 91 46 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 46 91 91 46 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 46 91 91 91 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 91 91 91 91 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 0 109 109 0 0.000 0.0 1 14.000 180.0 2 0.000 0.0 3 -torsion 13 109 109 13 0.000 0.0 1 14.000 180.0 2 0.000 0.0 3 -torsion 13 109 109 46 0.000 0.0 1 14.000 180.0 2 0.000 0.0 3 -torsion 13 109 109 48 0.000 0.0 1 14.000 180.0 2 0.000 0.0 3 -torsion 13 109 109 50 0.000 0.0 1 14.000 180.0 2 0.000 0.0 3 -torsion 13 109 109 109 0.000 0.0 1 14.000 180.0 2 0.000 0.0 3 -torsion 46 109 109 46 0.000 0.0 1 14.000 180.0 2 0.000 0.0 3 -torsion 46 109 109 48 0.000 0.0 1 14.000 180.0 2 0.000 0.0 3 -torsion 46 109 109 50 0.000 0.0 1 14.000 180.0 2 0.000 0.0 3 -torsion 46 109 109 109 0.000 0.0 1 14.000 180.0 2 0.000 0.0 3 -torsion 48 109 109 48 0.000 0.0 1 14.000 180.0 2 0.000 0.0 3 -torsion 48 109 109 50 0.000 0.0 1 14.000 180.0 2 0.000 0.0 3 -torsion 48 109 109 109 0.000 0.0 1 14.000 180.0 2 0.000 0.0 3 -torsion 50 109 109 50 0.000 0.0 1 14.000 180.0 2 0.000 0.0 3 -torsion 50 109 109 109 0.000 0.0 1 14.000 180.0 2 0.000 0.0 3 -torsion 109 109 109 109 1.423 0.0 1 4.055 180.0 2 0.858 0.0 3 - - - ################################################################ - ## ## - ## Additional Torsional Parameter Values Used with OPLS-AA ## - ## ## - ## The torsions listed below were added to official OPLS-AA ## - ## to complete the set needed for proteins; the values were ## - ## obtained by analogy from the closest OPLS-AA torsions; ## - ## most of the added values are for HIP or N-terminal AAs; ## - ## ## - ################################################################ - - -torsion 24 3 13 53 1.816 0.0 1 1.222 180.0 2 1.581 0.0 3 -torsion 52 3 13 24 0.000 0.0 1 0.820 180.0 2 0.000 0.0 3 -torsion 3 13 13 53 1.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 3 13 13 83 -1.697 0.0 1 -0.456 180.0 2 0.585 0.0 3 -torsion 3 13 13 84 -1.697 0.0 1 -0.456 180.0 2 0.585 0.0 3 -torsion 3 13 13 85 -1.697 0.0 1 -0.456 180.0 2 0.585 0.0 3 -torsion 5 13 13 53 6.280 0.0 1 -1.467 180.0 2 2.030 0.0 3 -torsion 15 13 13 53 1.428 0.0 1 0.086 180.0 2 0.029 0.0 3 -torsion 16 13 13 53 1.428 0.0 1 0.086 180.0 2 0.029 0.0 3 -torsion 13 13 13 55 2.732 0.0 1 -0.229 180.0 2 0.485 0.0 3 -torsion 24 13 13 83 0.845 0.0 1 -0.962 180.0 2 0.713 0.0 3 -torsion 53 13 13 83 1.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 24 13 13 84 0.845 0.0 1 -0.962 180.0 2 0.713 0.0 3 -torsion 53 13 13 84 1.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 24 13 13 85 0.845 0.0 1 -0.962 180.0 2 0.713 0.0 3 -torsion 46 13 13 85 0.000 0.0 1 0.000 180.0 2 0.462 0.0 3 -torsion 53 13 13 85 1.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 3 13 53 13 1.438 0.0 1 -0.124 180.0 2 0.264 0.0 3 -torsion 3 13 53 54 0.000 0.0 1 0.000 180.0 2 0.347 0.0 3 -torsion 13 13 53 54 0.000 0.0 1 0.000 180.0 2 0.347 0.0 3 -torsion 46 13 55 54 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 13 13 85 0 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 13 13 85 57 1.700 0.0 1 -0.600 180.0 2 0.000 0.0 3 -torsion 46 13 85 0 0.000 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 55 48 55 54 0.000 0.0 1 3.900 180.0 2 0.000 0.0 3 -torsion 0 48 81 0 0.000 0.0 1 7.250 180.0 2 0.000 0.0 3 -torsion 0 57 85 0 0.000 0.0 1 5.000 180.0 2 0.000 0.0 3 -torsion 0 85 85 0 0.000 0.0 1 10.750 180.0 2 0.000 0.0 3 - - - ################################################################ - ## ## - ## Additional Torsional Parameter Values Used with OPLS-AA ## - ## ## - ## The torsions listed below were added to official OPLS-AA ## - ## to complete the values needed for selected organics ## - ## ## - ################################################################ - - -torsion 13 13 13 20 1.300 0.0 1 -0.050 180.0 2 0.200 0.0 3 -torsion 13 13 13 47 1.300 0.0 1 -0.050 180.0 2 0.200 0.0 3 - - - ######################################## - ## ## - ## Atomic Partial Charge Parameters ## - ## ## - ######################################## - - -charge 1 -0.2200 -charge 2 0.2200 -charge 3 0.5500 -charge 4 -0.5000 -charge 5 -0.5800 -charge 6 0.0800 -charge 7 0.4500 -charge 8 0.0000 -charge 9 0.0000 -charge 10 0.0000 -charge 11 0.0000 -charge 12 0.0000 -charge 13 0.0000 -charge 14 0.0000 -charge 15 0.0000 -charge 16 0.0000 -charge 17 0.0000 -charge 18 0.0000 -charge 19 0.0000 -charge 20 -0.7000 -charge 21 0.4350 -charge 22 0.2650 -charge 23 0.2650 -charge 24 -0.4700 -charge 25 -0.4500 -charge 26 -0.4700 -charge 27 -0.3000 -charge 28 0.2350 -charge 29 0.2700 -charge 30 0.1800 -charge 31 0.1800 -charge 32 0.2350 -charge 33 0.2350 -charge 34 0.3000 -charge 35 0.3000 -charge 36 -0.4300 -charge 37 0.2800 -charge 38 0.1500 -charge 39 0.2650 -charge 40 0.2650 -charge 41 -0.5000 -charge 42 0.2500 -charge 43 0.2500 -charge 44 0.5000 -charge 45 -0.2500 -charge 46 0.4200 -charge 47 -0.1400 -charge 48 0.2480 -charge 49 -0.0620 -charge 50 0.1390 -charge 51 -0.4590 -charge 52 0.1600 -charge 53 -0.5000 -charge 54 -0.5700 -charge 55 0.5000 -charge 56 0.2850 -charge 57 0.0000 -charge 58 0.0000 -charge 59 0.0000 -charge 60 0.0000 -charge 61 0.0000 -charge 62 0.0000 -charge 63 -0.8340 -charge 64 0.4170 -charge 65 0.0000 -charge 66 0.5200 -charge 67 -1.0400 -charge 68 -0.8220 -charge 69 0.4110 -charge 70 0.0000 -charge 71 0.5110 -charge 72 -1.0220 -charge 73 0.0000 -charge 74 0.2410 -charge 75 -0.2410 -charge 76 -0.8200 -charge 77 0.4100 -charge 78 -1.0200 -charge 79 0.3400 -charge 80 -0.1800 -charge 81 -0.1200 -charge 82 -0.0600 -charge 83 -0.2400 -charge 84 0.0000 -charge 85 0.0600 -charge 86 0.0000 -charge 87 -0.1150 -charge 88 -0.2300 -charge 89 0.1150 -charge 90 -0.1150 -charge 91 0.1150 -charge 92 0.0000 -charge 93 -0.0650 -charge 94 -0.0050 -charge 95 -0.1150 -charge 96 -0.6830 -charge 97 0.4180 -charge 98 0.0400 -charge 99 0.1450 -charge 100 0.2050 -charge 101 0.2650 -charge 102 0.1263 -charge 103 0.5323 -charge 104 -0.6351 -charge 105 0.4286 -charge 106 -0.2057 -charge 107 0.0825 -charge 108 0.1500 -charge 109 -0.5850 -charge 110 0.4350 -charge 111 -0.7000 -charge 112 0.4350 -charge 113 -0.7300 -charge 114 0.4650 -charge 115 0.1450 -charge 116 0.2050 -charge 117 0.2650 -charge 118 0.0600 -charge 119 -0.1700 -charge 120 0.0000 -charge 121 -0.2850 -charge 122 -0.4000 -charge 123 0.1100 -charge 124 0.1400 -charge 125 0.1700 -charge 126 0.2000 -charge 127 0.0300 -charge 128 -0.4000 -charge 129 -0.7000 -charge 130 0.4350 -charge 131 0.2000 -charge 132 0.1000 -charge 133 0.2650 -charge 134 0.1000 -charge 135 0.3000 -charge 136 0.1000 -charge 137 0.3650 -charge 138 0.1000 -charge 139 0.4000 -charge 140 0.4650 -charge 141 0.0850 -charge 142 -0.3350 -charge 143 -0.4700 -charge 144 -0.4350 -charge 145 -0.2175 -charge 146 0.1550 -charge 147 0.2350 -charge 148 0.0600 -charge 149 0.1200 -charge 150 0.1800 -charge 151 0.0375 -charge 152 0.0975 -charge 153 0.1575 -charge 154 0.2175 -charge 155 0.0375 -charge 156 0.0975 -charge 157 0.1575 -charge 158 0.2175 -charge 159 0.0000 -charge 160 0.2000 -charge 161 0.2600 -charge 162 0.3200 -charge 163 -0.0550 -charge 164 -0.3200 -charge 165 0.0800 -charge 166 0.1400 -charge 167 0.2000 -charge 168 -0.1200 -charge 169 0.0050 -charge 170 0.1025 -charge 171 0.1400 -charge 172 0.2000 -charge 173 0.7000 -charge 174 0.5650 -charge 175 0.5850 -charge 176 0.6150 -charge 177 0.5000 -charge 178 -0.5000 -charge 179 -0.7600 -charge 180 -0.5000 -charge 181 -0.1400 -charge 182 0.3800 -charge 183 0.3000 -charge 184 0.0200 -charge 185 -0.1100 -charge 186 0.0800 -charge 187 -0.0500 -charge 188 0.0100 -charge 189 0.1420 -charge 190 -0.3900 -charge 191 -0.5420 -charge 192 0.3330 -charge 193 -0.4900 -charge 194 0.4200 -charge 195 -0.4200 -charge 196 0.3700 -charge 197 0.0600 -charge 198 -0.1200 -charge 199 -0.0600 -charge 200 0.0000 -charge 201 0.0600 -charge 202 0.0350 -charge 203 0.3950 -charge 204 -0.4300 -charge 205 0.1800 -charge 206 -0.1800 -charge 207 -0.3850 -charge 208 0.0850 -charge 209 0.5200 -charge 210 -0.4400 -charge 211 -0.5300 -charge 212 0.4500 -charge 213 0.7000 -charge 214 -0.8000 -charge 215 -0.2800 -charge 216 -0.2200 -charge 217 -0.1600 -charge 218 -0.1000 -charge 219 0.4500 -charge 220 -0.4500 -charge 221 0.0000 -charge 222 0.4700 -charge 223 -0.4700 -charge 224 0.0600 -charge 225 0.0400 -charge 226 -0.0200 -charge 227 0.1000 -charge 228 -0.0900 -charge 229 -0.4000 -charge 230 -0.3000 -charge 231 0.0000 -charge 232 0.3500 -charge 233 0.3300 -charge 234 0.1300 -charge 235 0.1900 -charge 236 0.2500 -charge 237 0.3100 -charge 238 0.2300 -charge 239 0.1700 -charge 240 0.1100 -charge 241 0.0900 -charge 242 0.1500 -charge 243 -0.8000 -charge 244 0.4600 -charge 245 0.6400 -charge 246 -0.7000 -charge 247 0.4400 -charge 248 0.2000 -charge 249 -0.1100 -charge 250 0.1900 -charge 251 -0.0500 -charge 252 -0.2000 -charge 253 0.3100 -charge 254 -0.4600 -charge 255 0.3600 -charge 256 -0.8500 -charge 257 0.3700 -charge 258 -0.1500 -charge 259 0.1000 -charge 260 -0.0400 -charge 261 0.1000 -charge 262 -0.6000 -charge 263 0.5000 -charge 264 -0.5100 -charge 265 0.4500 -charge 266 -0.0700 -charge 267 0.0800 -charge 268 0.4100 -charge 269 -0.4000 -charge 270 0.3600 -charge 271 -0.4200 -charge 272 0.1000 -charge 273 0.1000 -charge 274 -0.1400 -charge 275 0.0800 -charge 276 -0.5600 -charge 277 0.5500 -charge 278 -0.5400 -charge 279 0.4600 -charge 280 -0.0600 -charge 281 0.1000 -charge 282 0.3800 -charge 283 -0.4800 -charge 284 -0.7900 -charge 285 0.3850 -charge 286 0.3550 -charge 287 0.1000 -charge 288 0.1000 -charge 289 -0.5300 -charge 290 0.2200 -charge 291 -0.5500 -charge 292 0.3800 -charge 293 0.1500 -charge 294 0.4400 -charge 295 -0.4900 -charge 296 0.2000 -charge 297 -0.5000 -charge 298 0.2000 -charge 299 -0.8100 -charge 300 0.3850 -charge 301 0.3550 -charge 302 0.2000 -charge 303 0.3500 -charge 304 -0.5600 -charge 305 0.4600 -charge 306 -0.5100 -charge 307 0.3400 -charge 308 0.1200 -charge 309 0.5200 -charge 310 0.3800 -charge 311 -0.8000 -charge 312 0.4000 -charge 313 -0.5100 -charge 314 -0.0100 -charge 315 0.1200 -charge 316 -0.0100 -charge 317 0.1400 -charge 318 -0.0100 -charge 319 0.1300 -charge 320 -0.6400 -charge 321 0.6500 -charge 322 -0.7400 -charge 323 0.6600 -charge 324 -0.0600 -charge 325 0.1000 -charge 326 0.4900 -charge 327 -0.3000 -charge 328 0.4800 -charge 329 -0.8100 -charge 330 0.4600 -charge 331 0.4300 -charge 332 0.1400 -charge 333 0.1400 -charge 334 0.0100 -charge 335 0.1600 -charge 336 0.7800 -charge 337 -0.6600 -charge 338 -0.4300 -charge 339 0.2000 -charge 340 0.1800 -charge 341 -0.0600 -charge 342 0.1200 -charge 343 -1.0000 -charge 344 -1.0000 -charge 345 -1.0000 -charge 346 -1.0000 -charge 347 1.0000 -charge 348 1.0000 -charge 349 1.0000 -charge 350 1.0000 -charge 351 1.0000 -charge 352 1.0000 -charge 353 2.0000 -charge 354 2.0000 -charge 355 2.0000 -charge 356 2.0000 -charge 357 -0.4000 -charge 358 0.1000 -charge 359 -0.9000 -charge 360 -0.2000 -charge 361 0.0600 -charge 362 -0.9800 -charge 363 -1.0700 -charge 364 0.1900 -charge 365 0.5100 -charge 366 -0.8200 -charge 367 -0.3000 -charge 368 0.0700 -charge 369 -1.3100 -charge 370 0.4000 -charge 371 -0.4000 -charge 372 0.0800 -charge 373 0.0000 -charge 374 0.0700 -charge 375 -0.9800 -charge 376 -1.3000 -charge 377 0.3000 -charge 378 2.5000 -charge 379 -0.2500 -charge 380 -0.8650 -charge 381 1.6200 -charge 382 -0.9200 -charge 383 -0.6000 -charge 384 0.3000 -charge 385 -0.0300 -charge 386 1.9200 -charge 387 -1.1200 -charge 388 -0.7000 -charge 389 0.4400 -charge 390 -0.1000 -charge 391 1.6200 -charge 392 -0.9700 -charge 393 -0.6300 -charge 394 0.2800 -charge 395 -0.0200 -charge 396 -0.5100 -charge 397 0.0800 -charge 398 -0.1400 -charge 399 0.3200 -charge 400 0.0200 -charge 401 -0.0400 -charge 402 -0.4700 -charge 403 0.1200 -charge 404 0.1400 -charge 405 0.2400 -charge 406 0.5100 -charge 407 -0.4300 -charge 408 -0.3300 -charge 409 0.1600 -charge 410 0.0300 -charge 411 0.6350 -charge 412 0.6250 -charge 413 0.1350 -charge 414 -0.2150 -charge 415 1.4800 -charge 416 -0.6800 -charge 417 -0.5400 -charge 418 0.1800 -charge 419 -1.0000 -charge 420 0.4400 -charge 421 -0.8000 -charge 422 0.4100 -charge 423 0.1800 -charge 424 0.0300 -charge 425 0.3900 -charge 426 -0.0600 -charge 427 -0.1800 -charge 428 0.0600 -charge 429 0.0000 -charge 430 0.0300 -charge 431 0.1900 -charge 432 0.2200 -charge 433 0.2500 -charge 434 1.3740 -charge 435 -0.6870 -charge 436 0.2450 -charge 437 0.1300 -charge 438 -0.4200 -charge 439 -0.0350 -charge 440 0.0250 -charge 441 0.0750 -charge 442 -0.0550 -charge 443 0.1300 -charge 444 -0.5700 -charge 445 0.4200 -charge 446 -0.0050 -charge 447 0.2950 -charge 448 -0.0150 -charge 449 0.0150 -charge 450 0.3850 -charge 451 0.2150 -charge 452 -0.4900 -charge 453 -0.5400 -charge 454 0.4600 -charge 455 -0.1150 -charge 456 0.0550 -charge 457 0.1150 -charge 458 -0.0300 -charge 459 0.0850 -charge 460 0.0000 -charge 461 -0.6780 -charge 462 0.4730 -charge 463 -0.4470 -charge 464 0.2270 -charge 465 0.0120 -charge 466 0.1550 -charge 467 0.0650 -charge 468 -0.4680 -charge 469 0.1920 -charge 470 0.0420 -charge 471 -0.8390 -charge 472 0.8740 -charge 473 0.6530 -charge 474 -0.6890 -charge 475 -0.0320 -charge 476 0.0110 -charge 477 0.1970 -charge 478 -0.3310 -charge 479 0.3780 -charge 480 -0.1600 -charge 481 -0.0090 -charge 482 0.1220 -charge 483 -0.2390 -charge 484 -0.1630 -charge 485 -0.1490 -charge 486 0.3170 -charge 487 0.1550 -charge 488 0.1180 -charge 489 -0.0590 -charge 490 -0.4910 -charge 491 0.2460 -charge 492 -0.3200 -charge 493 -0.0340 -charge 494 0.3010 -charge 495 0.0720 -charge 496 0.1500 -charge 497 0.1350 -charge 498 -0.2570 -charge 499 0.2750 -charge 500 -0.5630 -charge 501 0.1850 -charge 502 -0.2860 -charge 503 0.3060 -charge 504 0.0780 -charge 505 0.0750 -charge 506 0.1870 -charge 507 -0.1900 -charge 508 -0.0190 -charge 509 -0.1540 -charge 510 0.1420 -charge 511 0.1260 -charge 512 -0.2570 -charge 513 0.5110 -charge 514 -0.5900 -charge 515 0.1690 -charge 516 -0.1480 -charge 517 0.0430 -charge 518 0.0910 -charge 519 0.1810 -charge 520 -0.1220 -charge 521 -0.4130 -charge 522 0.4050 -charge 523 -0.4550 -charge 524 0.2500 -charge 525 0.0530 -charge 526 0.1840 -charge 527 0.0980 -charge 528 -0.5000 -charge 529 0.0010 -charge 530 -0.3900 -charge 531 -0.2700 -charge 532 -0.1270 -charge 533 -0.1080 -charge 534 -0.2580 -charge 535 0.2200 -charge 536 0.2250 -charge 537 0.3760 -charge 538 0.1470 -charge 539 0.1720 -charge 540 0.1550 -charge 541 0.1070 -charge 542 0.1100 -charge 543 0.1400 -charge 544 -0.6940 -charge 545 0.4250 -charge 546 -0.3590 -charge 547 -0.0080 -charge 548 -0.1970 -charge 549 -0.1120 -charge 550 -0.0700 -charge 551 -0.3070 -charge 552 0.5630 -charge 553 -0.0510 -charge 554 0.0280 -charge 555 0.1460 -charge 556 0.1190 -charge 557 0.1330 -charge 558 0.1130 -charge 559 0.1140 -charge 560 0.1570 -charge 561 -0.7600 -charge 562 0.6790 -charge 563 -0.7880 -charge 564 0.7360 -charge 565 0.0380 -charge 566 0.3430 -charge 567 -0.6420 -charge 568 0.4520 -charge 569 -0.6820 -charge 570 0.0240 -charge 571 0.1010 -charge 572 0.0860 -charge 573 0.4130 -charge 574 -0.0300 -charge 575 0.2420 -charge 576 -0.5150 -charge 577 0.2280 -charge 578 -0.2990 -charge 579 0.1010 -charge 580 0.0680 -charge 581 0.2050 -charge 582 -0.9510 -charge 583 0.9650 -charge 584 -0.0140 -charge 585 0.1300 -charge 586 0.0520 -charge 587 -0.5990 -charge 588 0.3920 -charge 589 -0.3480 -charge 590 0.0200 -charge 591 -0.0420 -charge 592 0.3470 -charge 593 -0.1960 -charge 594 0.0320 -charge 595 0.1460 -charge 596 0.1080 -charge 597 0.1400 -charge 598 0.1220 -charge 599 0.1660 -charge 600 -0.5800 -charge 601 0.1730 -charge 602 -0.3950 -charge 603 -0.1990 -charge 604 0.1180 -charge 605 0.0930 -charge 606 0.2080 -charge 607 0.0980 -charge 608 -0.1390 -charge 609 -0.0790 -charge 610 0.0990 -charge 611 -0.1680 -charge 612 -0.1080 -charge 613 -0.1890 -charge 614 -0.1290 -charge 615 -0.1690 -charge 616 -0.1090 -charge 617 -0.1380 -charge 618 -0.0780 -charge 619 -0.0250 -charge 620 0.0350 -charge 621 -0.0380 -charge 622 0.0220 -charge 623 -0.3340 -charge 624 0.2550 -charge 625 0.5230 -charge 626 0.5000 -charge 627 -0.1400 -charge 628 0.2275 -charge 629 0.1400 -charge 630 -0.0080 -charge 631 0.5880 -charge 632 -0.1030 -charge 633 -0.3320 -charge 634 0.0400 -charge 635 0.3420 -charge 636 -0.0500 -charge 637 -0.2050 -charge 638 3.0000 -charge 639 4.0000 -charge 640 3.0000 -charge 641 0.6190 -charge 642 -0.3950 -charge 643 0.1740 -charge 644 3.0000 -charge 645 3.0000 -charge 646 3.0000 -charge 647 3.0000 -charge 648 3.0000 -charge 649 -0.3440 -charge 650 -0.6280 -charge 651 0.2000 -charge 652 -0.1200 -charge 653 -0.0600 -charge 654 0.0000 -charge 655 -0.2300 -charge 656 0.0300 -charge 657 -0.0990 -charge 658 0.0990 -charge 659 0.2200 -charge 660 -0.2200 -charge 661 0.1300 -charge 662 -0.1300 -charge 663 -0.2200 -charge 664 0.2200 -charge 665 0.1500 -charge 666 0.4500 -charge 667 -0.2000 -charge 668 0.2000 -charge 669 -0.2000 -charge 670 0.2000 -charge 671 -0.2000 -charge 672 0.1000 -charge 673 -0.1000 -charge 674 0.0550 -charge 675 -0.2200 -charge 676 0.0650 -charge 677 0.0130 -charge 678 -0.1060 -charge 679 -0.0900 -charge 680 -0.1190 -charge 681 0.1410 -charge 682 0.1290 -charge 683 0.8270 -charge 684 -0.8850 -charge 685 0.4260 -charge 686 0.4650 -charge 687 0.1190 -charge 688 -0.0200 -charge 689 0.0400 -charge 690 -0.6200 -charge 691 -0.7850 -charge 692 -0.7850 -charge 693 0.5500 -charge 694 -0.5600 -charge 695 0.4600 -charge 696 -0.0800 -charge 697 -0.0200 -charge 698 0.0400 -charge 699 0.1000 -charge 700 0.0600 -charge 701 0.5400 -charge 702 -0.3700 -charge 703 0.0200 -charge 704 0.0600 -charge 705 0.0800 -charge 706 0.1400 -charge 707 0.2000 -charge 708 0.6500 -charge 709 0.0900 -charge 710 0.0350 -charge 711 -0.9000 -charge 712 -0.5000 -charge 713 0.8600 -charge 714 -0.4500 -charge 715 0.2100 -charge 716 0.1600 -charge 717 -0.1000 -charge 718 0.0300 -charge 719 0.0300 -charge 720 0.0600 -charge 721 -0.7800 -charge 722 0.9684 -charge 723 -0.5081 -charge 724 -0.0080 -charge 725 0.1720 -charge 726 1.3400 -charge 727 -0.3900 -charge 728 0.7940 -charge 729 -0.5980 -charge 730 -0.9000 -charge 731 -0.7800 -charge 732 -0.6300 -charge 733 0.0000 -charge 734 0.0200 -charge 735 0.0300 -charge 736 0.0600 -charge 737 0.0800 -charge 738 0.0900 -charge 739 0.3600 -charge 740 0.3800 -charge 741 0.0600 -charge 742 0.1200 -charge 743 0.1800 -charge 744 0.1400 -charge 745 0.1500 -charge 746 0.1800 -charge 747 0.2000 -charge 748 0.2100 -charge 749 0.1150 -charge 750 0.1750 -charge 751 0.2350 -charge 752 0.1950 -charge 753 0.1525 -charge 754 0.1350 -charge 755 -0.2100 -charge 756 0.2000 -charge 757 0.0100 -charge 758 0.0100 -charge 759 0.0100 -charge 760 0.0600 -charge 761 0.4500 -charge 762 0.4800 -charge 763 0.5100 -charge 764 -0.6550 -charge 765 0.3900 -charge 766 -0.5000 -charge 767 -0.5600 -charge 768 -0.6000 -charge 769 0.0000 -charge 770 -0.1000 -charge 771 0.2900 -charge 772 0.0900 -charge 773 0.1500 -charge 774 0.2100 -charge 775 0.2700 -charge 776 0.0960 -charge 777 -0.0390 -charge 778 0.0270 -charge 779 0.0110 -charge 780 0.0740 -charge 781 -0.0290 -charge 782 0.7000 -charge 783 -0.3520 -charge 784 -0.7090 -charge 785 0.3170 -charge 786 -0.2200 -charge 787 0.0200 -charge 788 0.1000 -charge 789 0.1200 -charge 790 0.2200 -charge 791 0.3600 -charge 792 0.2400 -charge 793 0.1200 -charge 794 0.4800 -charge 795 -0.1200 -charge 796 0.2500 -charge 797 0.1500 -charge 798 -0.0800 -charge 799 -0.1060 -charge 800 -0.2000 -charge 801 -0.0060 -charge 802 0.1030 -charge 803 0.0970 -charge 804 0.2000 -charge 805 -0.2000 -charge 806 -0.0060 -charge 807 0.1030 -charge 808 0.0970 -charge 809 0.2000 -charge 810 -0.0800 -charge 811 -0.0800 -charge 812 -0.0800 -charge 813 0.1000 -charge 814 -0.2500 -charge 815 0.6000 -charge 816 -0.1500 -charge 817 -0.0250 -charge 818 -0.0450 -charge 819 0.1450 -charge 820 0.8880 -charge 821 1.0030 -charge 822 -0.6580 -charge 823 -0.6340 -charge 824 0.4110 -charge 825 -0.4420 -charge 826 0.4350 -charge 827 0.2250 -charge 828 0.2550 -charge 829 -0.0340 -charge 830 0.0030 -charge 831 0.3000 -charge 832 -0.0400 -charge 833 -0.0575 -charge 834 2.0000 -charge 835 -0.0700 -charge 836 0.0300 -charge 837 0.1300 -charge 838 -0.1300 -charge 839 0.1000 -charge 840 -0.6850 -charge 841 0.1550 -charge 842 -0.1000 -charge 843 -0.4270 -charge 844 0.2180 -charge 845 0.6000 -charge 846 -0.6000 -charge 847 -0.3600 -charge 848 0.0000 -charge 849 0.0600 -charge 850 0.1200 -charge 851 0.1800 -charge 852 0.0600 -charge 853 0.5700 -charge 854 -0.5700 -charge 855 0.0000 -charge 856 0.0200 -charge 857 -0.0400 -charge 858 0.0000 -charge 859 0.0600 -charge 860 -0.0700 -charge 861 -0.1400 -charge 862 0.1700 -charge 863 0.1100 -charge 864 0.1500 -charge 865 0.1700 -charge 866 1.0000 -charge 867 0.8500 -charge 868 0.7000 -charge 869 0.5500 -charge 870 -0.1000 -charge 871 -0.4300 -charge 872 -0.3700 -charge 873 -0.3100 -charge 874 -0.2500 -charge 875 -1.0000 -charge 876 -1.0000 -charge 877 -1.0000 -charge 878 -1.0000 -charge 879 1.0000 -charge 880 1.0000 -charge 881 1.0000 -charge 882 1.0000 -charge 883 1.0000 -charge 884 2.0000 -charge 885 2.0000 -charge 886 2.0000 -charge 887 2.0000 -charge 888 -0.0500 -charge 889 0.0500 -charge 890 0.1500 -charge 891 0.2500 -charge 892 0.1000 -charge 893 0.1150 -charge 894 0.1350 -charge 895 0.0150 -charge 896 0.1550 -charge 897 0.0000 -charge 898 -0.1150 -charge 899 0.1500 -charge 900 -0.2500 -charge 901 -0.1000 -charge 902 0.0500 -charge 903 -0.1000 -charge 904 0.2000 -charge 905 -0.2500 -charge 906 0.0880 - - - ######################################## - ## ## - ## Biopolymer Atom Type Conversions ## - ## ## - ######################################## - - -biotype 1 N "Glycine" 180 -biotype 2 CA "Glycine" 165 -biotype 3 C "Glycine" 177 -biotype 4 HN "Glycine" 183 -biotype 5 O "Glycine" 178 -biotype 6 HA "Glycine" 85 -biotype 7 N "Alanine" 180 -biotype 8 CA "Alanine" 166 -biotype 9 C "Alanine" 177 -biotype 10 HN "Alanine" 183 -biotype 11 O "Alanine" 178 -biotype 12 HA "Alanine" 85 -biotype 13 CB "Alanine" 80 -biotype 14 HB "Alanine" 85 -biotype 15 N "Valine" 180 -biotype 16 CA "Valine" 166 -biotype 17 C "Valine" 177 -biotype 18 HN "Valine" 183 -biotype 19 O "Valine" 178 -biotype 20 HA "Valine" 85 -biotype 21 CB "Valine" 82 -biotype 22 HB "Valine" 85 -biotype 23 CG1 "Valine" 80 -biotype 24 HG1 "Valine" 85 -biotype 25 CG2 "Valine" 80 -biotype 26 HG2 "Valine" 85 -biotype 27 N "Leucine" 180 -biotype 28 CA "Leucine" 166 -biotype 29 C "Leucine" 177 -biotype 30 HN "Leucine" 183 -biotype 31 O "Leucine" 178 -biotype 32 HA "Leucine" 85 -biotype 33 CB "Leucine" 81 -biotype 34 HB "Leucine" 85 -biotype 35 CG "Leucine" 82 -biotype 36 HG "Leucine" 85 -biotype 37 CD1 "Leucine" 80 -biotype 38 HD1 "Leucine" 85 -biotype 39 CD2 "Leucine" 80 -biotype 40 HD2 "Leucine" 85 -biotype 41 N "Isoleucine" 180 -biotype 42 CA "Isoleucine" 166 -biotype 43 C "Isoleucine" 177 -biotype 44 HN "Isoleucine" 183 -biotype 45 O "Isoleucine" 178 -biotype 46 HA "Isoleucine" 85 -biotype 47 CB "Isoleucine" 82 -biotype 48 HB "Isoleucine" 85 -biotype 49 CG1 "Isoleucine" 80 -biotype 50 HG1 "Isoleucine" 85 -biotype 51 CG2 "Isoleucine" 81 -biotype 52 HG2 "Isoleucine" 85 -biotype 53 CD "Isoleucine" 80 -biotype 54 HD "Isoleucine" 85 -biotype 55 N "Serine" 180 -biotype 56 CA "Serine" 166 -biotype 57 C "Serine" 177 -biotype 58 HN "Serine" 183 -biotype 59 O "Serine" 178 -biotype 60 HA "Serine" 85 -biotype 61 CB "Serine" 99 -biotype 62 HB "Serine" 85 -biotype 63 OG "Serine" 96 -biotype 64 HG "Serine" 97 -biotype 65 N "Threonine" 180 -biotype 66 CA "Threonine" 166 -biotype 67 C "Threonine" 177 -biotype 68 HN "Threonine" 183 -biotype 69 O "Threonine" 178 -biotype 70 HA "Threonine" 85 -biotype 71 CB "Threonine" 100 -biotype 72 HB "Threonine" 85 -biotype 73 OG1 "Threonine" 96 -biotype 74 HG1 "Threonine" 97 -biotype 75 CG2 "Threonine" 80 -biotype 76 HG2 "Threonine" 85 -biotype 77 N "Cysteine (SH)" 180 -biotype 78 CA "Cysteine (SH)" 166 -biotype 79 C "Cysteine (SH)" 177 -biotype 80 HN "Cysteine (SH)" 183 -biotype 81 O "Cysteine (SH)" 178 -biotype 82 HA "Cysteine (SH)" 85 -biotype 83 CB "Cysteine (SH)" 148 -biotype 84 HB "Cysteine (SH)" 85 -biotype 85 SG "Cysteine (SH)" 142 -biotype 86 HG "Cysteine (SH)" 146 -biotype 87 N "Cystine (SS)" 180 -biotype 88 CA "Cystine (SS)" 166 -biotype 89 C "Cystine (SS)" 177 -biotype 90 HN "Cystine (SS)" 183 -biotype 91 O "Cystine (SS)" 178 -biotype 92 HA "Cystine (SS)" 85 -biotype 93 CB "Cystine (SS)" 156 -biotype 94 HB "Cystine (SS)" 85 -biotype 95 SG "Cystine (SS)" 145 -biotype 96 N "Cysteine (S-)" -1 -biotype 97 CA "Cysteine (S-)" -1 -biotype 98 C "Cysteine (S-)" -1 -biotype 99 HN "Cysteine (S-)" -1 -biotype 100 O "Cysteine (S-)" -1 -biotype 101 HA "Cysteine (S-)" -1 -biotype 102 CB "Cysteine (S-)" -1 -biotype 103 HB "Cysteine (S-)" -1 -biotype 104 SG "Cysteine (S-)" -1 -biotype 105 N "Proline" 181 -biotype 106 CA "Proline" 188 -biotype 107 C "Proline" 177 -biotype 108 O "Proline" 178 -biotype 109 HA "Proline" 85 -biotype 110 CB "Proline" 81 -biotype 111 HB "Proline" 85 -biotype 112 CG "Proline" 81 -biotype 113 HG "Proline" 85 -biotype 114 CD "Proline" 187 -biotype 115 HD "Proline" 85 -biotype 116 N "Phenylalanine" 180 -biotype 117 CA "Phenylalanine" 166 -biotype 118 C "Phenylalanine" 177 -biotype 119 HN "Phenylalanine" 183 -biotype 120 O "Phenylalanine" 178 -biotype 121 HA "Phenylalanine" 85 -biotype 122 CB "Phenylalanine" 94 -biotype 123 HB "Phenylalanine" 85 -biotype 124 CG "Phenylalanine" 90 -biotype 125 CD "Phenylalanine" 90 -biotype 126 HD "Phenylalanine" 91 -biotype 127 CE "Phenylalanine" 90 -biotype 128 HE "Phenylalanine" 91 -biotype 129 CZ "Phenylalanine" 90 -biotype 130 HZ "Phenylalanine" 91 -biotype 131 N "Tyrosine" 180 -biotype 132 CA "Tyrosine" 166 -biotype 133 C "Tyrosine" 177 -biotype 134 HN "Tyrosine" 183 -biotype 135 O "Tyrosine" 178 -biotype 136 HA "Tyrosine" 85 -biotype 137 CB "Tyrosine" 94 -biotype 138 HB "Tyrosine" 85 -biotype 139 CG "Tyrosine" 90 -biotype 140 CD "Tyrosine" 90 -biotype 141 HD "Tyrosine" 91 -biotype 142 CE "Tyrosine" 90 -biotype 143 HE "Tyrosine" 91 -biotype 144 CZ "Tyrosine" 108 -biotype 145 OH "Tyrosine" 109 -biotype 146 HH "Tyrosine" 110 -biotype 147 N "Tyrosine (O-)" -1 -biotype 148 CA "Tyrosine (O-)" -1 -biotype 149 C "Tyrosine (O-)" -1 -biotype 150 HN "Tyrosine (O-)" -1 -biotype 151 O "Tyrosine (O-)" -1 -biotype 152 HA "Tyrosine (O-)" -1 -biotype 153 CB "Tyrosine (O-)" -1 -biotype 154 HB "Tyrosine (O-)" -1 -biotype 155 CG "Tyrosine (O-)" -1 -biotype 156 CD "Tyrosine (O-)" -1 -biotype 157 HD "Tyrosine (O-)" -1 -biotype 158 CE "Tyrosine (O-)" -1 -biotype 159 HE "Tyrosine (O-)" -1 -biotype 160 CZ "Tyrosine (O-)" -1 -biotype 161 OH "Tyrosine (O-)" -1 -biotype 162 N "Tryptophan" 180 -biotype 163 CA "Tryptophan" 166 -biotype 164 C "Tryptophan" 177 -biotype 165 HN "Tryptophan" 183 -biotype 166 O "Tryptophan" 178 -biotype 167 HA "Tryptophan" 85 -biotype 168 CB "Tryptophan" 81 -biotype 169 HB "Tryptophan" 85 -biotype 170 CG "Tryptophan" 441 -biotype 171 CD1 "Tryptophan" 455 -biotype 172 HD1 "Tryptophan" 91 -biotype 173 CD2 "Tryptophan" 442 -biotype 174 NE1 "Tryptophan" 444 -biotype 175 HE1 "Tryptophan" 445 -biotype 176 CE2 "Tryptophan" 443 -biotype 177 CE3 "Tryptophan" 90 -biotype 178 HE3 "Tryptophan" 91 -biotype 179 CZ2 "Tryptophan" 90 -biotype 180 HZ2 "Tryptophan" 91 -biotype 181 CZ3 "Tryptophan" 90 -biotype 182 HZ3 "Tryptophan" 91 -biotype 183 CH2 "Tryptophan" 90 -biotype 184 HH2 "Tryptophan" 91 -biotype 185 N "Histidine (+)" 180 -biotype 186 CA "Histidine (+)" 166 -biotype 187 C "Histidine (+)" 177 -biotype 188 HN "Histidine (+)" 183 -biotype 189 O "Histidine (+)" 178 -biotype 190 HA "Histidine (+)" 85 -biotype 191 CB "Histidine (+)" 446 -biotype 192 HB "Histidine (+)" 85 -biotype 193 CG "Histidine (+)" 451 -biotype 194 ND1 "Histidine (+)" 453 -biotype 195 HD1 "Histidine (+)" 454 -biotype 196 CD2 "Histidine (+)" 451 -biotype 197 HD2 "Histidine (+)" 91 -biotype 198 CE1 "Histidine (+)" 450 -biotype 199 HE1 "Histidine (+)" 91 -biotype 200 NE2 "Histidine (+)" 453 -biotype 201 HE2 "Histidine (+)" 454 -biotype 202 N "Histidine (HD)" 180 -biotype 203 CA "Histidine (HD)" 166 -biotype 204 C "Histidine (HD)" 177 -biotype 205 HN "Histidine (HD)" 183 -biotype 206 O "Histidine (HD)" 178 -biotype 207 HA "Histidine (HD)" 85 -biotype 208 CB "Histidine (HD)" 446 -biotype 209 HB "Histidine (HD)" 85 -biotype 210 CG "Histidine (HD)" 449 -biotype 211 ND1 "Histidine (HD)" 444 -biotype 212 HD1 "Histidine (HD)" 445 -biotype 213 CD2 "Histidine (HD)" 448 -biotype 214 HD2 "Histidine (HD)" 91 -biotype 215 CE1 "Histidine (HD)" 447 -biotype 216 HE1 "Histidine (HD)" 91 -biotype 217 NE2 "Histidine (HD)" 452 -biotype 218 N "Histidine (HE)" 180 -biotype 219 CA "Histidine (HE)" 166 -biotype 220 C "Histidine (HE)" 177 -biotype 221 HN "Histidine (HE)" 183 -biotype 222 O "Histidine (HE)" 178 -biotype 223 HA "Histidine (HE)" 85 -biotype 224 CB "Histidine (HE)" 446 -biotype 225 HB "Histidine (HE)" 85 -biotype 226 CG "Histidine (HE)" 448 -biotype 227 ND1 "Histidine (HE)" 452 -biotype 228 CD2 "Histidine (HE)" 449 -biotype 229 HD2 "Histidine (HE)" 91 -biotype 230 CE1 "Histidine (HE)" 447 -biotype 231 HE1 "Histidine (HE)" 91 -biotype 232 NE2 "Histidine (HE)" 444 -biotype 233 HE2 "Histidine (HE)" 445 -biotype 234 N "Aspartic Acid" 180 -biotype 235 CA "Aspartic Acid" 166 -biotype 236 C "Aspartic Acid" 177 -biotype 237 HN "Aspartic Acid" 183 -biotype 238 O "Aspartic Acid" 178 -biotype 239 HA "Aspartic Acid" 85 -biotype 240 CB "Aspartic Acid" 216 -biotype 241 HB "Aspartic Acid" 85 -biotype 242 CG "Aspartic Acid" 213 -biotype 243 OD "Aspartic Acid" 214 -biotype 244 N "Aspartic Acid (COOH)" -1 -biotype 245 CA "Aspartic Acid (COOH)" -1 -biotype 246 C "Aspartic Acid (COOH)" -1 -biotype 247 HN "Aspartic Acid (COOH)" -1 -biotype 248 O "Aspartic Acid (COOH)" -1 -biotype 249 HA "Aspartic Acid (COOH)" -1 -biotype 250 CB "Aspartic Acid (COOH)" -1 -biotype 251 HB "Aspartic Acid (COOH)" -1 -biotype 252 CG "Aspartic Acid (COOH)" -1 -biotype 253 OD1 "Aspartic Acid (COOH)" -1 -biotype 254 OD2 "Aspartic Acid (COOH)" -1 -biotype 255 HD2 "Aspartic Acid (COOH)" -1 -biotype 256 N "Asparagine" 180 -biotype 257 CA "Asparagine" 166 -biotype 258 C "Asparagine" 177 -biotype 259 HN "Asparagine" 183 -biotype 260 O "Asparagine" 178 -biotype 261 HA "Asparagine" 85 -biotype 262 CB "Asparagine" 81 -biotype 263 HB "Asparagine" 85 -biotype 264 CG "Asparagine" 177 -biotype 265 OD1 "Asparagine" 178 -biotype 266 ND2 "Asparagine" 179 -biotype 267 HD2 "Asparagine" 182 -biotype 268 N "Glutamic Acid" 180 -biotype 269 CA "Glutamic Acid" 166 -biotype 270 C "Glutamic Acid" 177 -biotype 271 HN "Glutamic Acid" 183 -biotype 272 O "Glutamic Acid" 178 -biotype 273 HA "Glutamic Acid" 85 -biotype 274 CB "Glutamic Acid" 81 -biotype 275 HB "Glutamic Acid" 85 -biotype 276 CG "Glutamic Acid" 216 -biotype 277 HG "Glutamic Acid" 85 -biotype 278 CD "Glutamic Acid" 213 -biotype 279 OE "Glutamic Acid" 214 -biotype 280 N "Glutamic Acid (COOH)" -1 -biotype 281 CA "Glutamic Acid (COOH)" -1 -biotype 282 C "Glutamic Acid (COOH)" -1 -biotype 283 HN "Glutamic Acid (COOH)" -1 -biotype 284 O "Glutamic Acid (COOH)" -1 -biotype 285 HA "Glutamic Acid (COOH)" -1 -biotype 286 CB "Glutamic Acid (COOH)" -1 -biotype 287 HB "Glutamic Acid (COOH)" -1 -biotype 288 CG "Glutamic Acid (COOH)" -1 -biotype 289 HG "Glutamic Acid (COOH)" -1 -biotype 290 CD "Glutamic Acid (COOH)" -1 -biotype 291 OE1 "Glutamic Acid (COOH)" -1 -biotype 292 OE2 "Glutamic Acid (COOH)" -1 -biotype 293 HE2 "Glutamic Acid (COOH)" -1 -biotype 294 N "Glutamine" 180 -biotype 295 CA "Glutamine" 166 -biotype 296 C "Glutamine" 177 -biotype 297 HN "Glutamine" 183 -biotype 298 O "Glutamine" 178 -biotype 299 HA "Glutamine" 85 -biotype 300 CB "Glutamine" 81 -biotype 301 HB "Glutamine" 85 -biotype 302 CG "Glutamine" 81 -biotype 303 HG "Glutamine" 85 -biotype 304 CD "Glutamine" 177 -biotype 305 OE1 "Glutamine" 178 -biotype 306 NE2 "Glutamine" 179 -biotype 307 HE2 "Glutamine" 182 -biotype 308 N "Methionine" 180 -biotype 309 CA "Methionine" 166 -biotype 310 C "Methionine" 177 -biotype 311 HN "Methionine" 183 -biotype 312 O "Methionine" 178 -biotype 313 HA "Methionine" 85 -biotype 314 CB "Methionine" 81 -biotype 315 HB "Methionine" 85 -biotype 316 CG "Methionine" 152 -biotype 317 HG "Methionine" 85 -biotype 318 SD "Methionine" 144 -biotype 319 CE "Methionine" 151 -biotype 320 HE "Methionine" 85 -biotype 321 N "Lysine" 180 -biotype 322 CA "Lysine" 166 -biotype 323 C "Lysine" 177 -biotype 324 HN "Lysine" 183 -biotype 325 O "Lysine" 178 -biotype 326 HA "Lysine" 85 -biotype 327 CB "Lysine" 81 -biotype 328 HB "Lysine" 85 -biotype 329 CG "Lysine" 81 -biotype 330 HG "Lysine" 85 -biotype 331 CD "Lysine" 81 -biotype 332 HD "Lysine" 85 -biotype 333 CE "Lysine" 235 -biotype 334 HE "Lysine" 85 -biotype 335 NZ "Lysine" 230 -biotype 336 HZ "Lysine" 233 -biotype 337 N "Lysine (NH2)" -1 -biotype 338 CA "Lysine (NH2)" -1 -biotype 339 C "Lysine (NH2)" -1 -biotype 340 HN "Lysine (NH2)" -1 -biotype 341 O "Lysine (NH2)" -1 -biotype 342 HA "Lysine (NH2)" -1 -biotype 343 CB "Lysine (NH2)" -1 -biotype 344 HB "Lysine (NH2)" -1 -biotype 345 CG "Lysine (NH2)" -1 -biotype 346 HG "Lysine (NH2)" -1 -biotype 347 CD "Lysine (NH2)" -1 -biotype 348 HD "Lysine (NH2)" -1 -biotype 349 CE "Lysine (NH2)" -1 -biotype 350 HE "Lysine (NH2)" -1 -biotype 351 NZ "Lysine (NH2)" -1 -biotype 352 HZ "Lysine (NH2)" -1 -biotype 353 N "Arginine" 180 -biotype 354 CA "Arginine" 166 -biotype 355 C "Arginine" 177 -biotype 356 HN "Arginine" 183 -biotype 357 O "Arginine" 178 -biotype 358 HA "Arginine" 85 -biotype 359 CB "Arginine" 81 -biotype 360 HB "Arginine" 85 -biotype 361 CG "Arginine" 251 -biotype 362 HG "Arginine" 85 -biotype 363 CD "Arginine" 250 -biotype 364 HD "Arginine" 85 -biotype 365 NE "Arginine" 246 -biotype 366 HE "Arginine" 247 -biotype 367 CZ "Arginine" 245 -biotype 368 NH "Arginine" 243 -biotype 369 HH "Arginine" 244 -biotype 370 N "Ornithine" 180 -biotype 371 CA "Ornithine" 166 -biotype 372 C "Ornithine" 177 -biotype 373 HN "Ornithine" 183 -biotype 374 O "Ornithine" 178 -biotype 375 HA "Ornithine" 85 -biotype 376 CB "Ornithine" 81 -biotype 377 HB "Ornithine" 85 -biotype 378 CG "Ornithine" 81 -biotype 379 HG "Ornithine" 85 -biotype 380 CD "Ornithine" 235 -biotype 381 HD "Ornithine" 85 -biotype 382 NE "Ornithine" 230 -biotype 383 HE "Ornithine" 233 -biotype 384 N "MethylAlanine (AIB)" 180 -biotype 385 CA "MethylAlanine (AIB)" 167 -biotype 386 C "MethylAlanine (AIB)" 177 -biotype 387 HN "MethylAlanine (AIB)" 183 -biotype 388 O "MethylAlanine (AIB)" 178 -biotype 389 CB "MethylAlanine (AIB)" 80 -biotype 390 HB "MethylAlanine (AIB)" 85 -biotype 391 N "Pyroglutamic Acid" 180 -biotype 392 CA "Pyroglutamic Acid" 166 -biotype 393 C "Pyroglutamic Acid" 177 -biotype 394 HN "Pyroglutamic Acid" 183 -biotype 395 O "Pyroglutamic Acid" 178 -biotype 396 HA "Pyroglutamic Acid" 85 -biotype 397 CB "Pyroglutamic Acid" 81 -biotype 398 HB "Pyroglutamic Acid" 85 -biotype 399 CG "Pyroglutamic Acid" 216 -biotype 400 HG "Pyroglutamic Acid" 85 -biotype 401 CD "Pyroglutamic Acid" 177 -biotype 402 OE "Pyroglutamic Acid" 178 -biotype 403 N "N-Terminal GLY" 230 -biotype 404 CA "N-Terminal GLY" 235 -biotype 405 C "N-Terminal GLY" 177 -biotype 406 HN "N-Terminal GLY" 233 -biotype 407 O "N-Terminal GLY" 178 -biotype 408 HA "N-Terminal GLY" 85 -biotype 409 N "N-Terminal ALA" 230 -biotype 410 CA "N-Terminal ALA" 236 -biotype 411 C "N-Terminal ALA" 177 -biotype 412 HN "N-Terminal ALA" 233 -biotype 413 O "N-Terminal ALA" 178 -biotype 414 HA "N-Terminal ALA" 85 -biotype 415 N "N-Terminal VAL" 230 -biotype 416 CA "N-Terminal VAL" 236 -biotype 417 C "N-Terminal VAL" 177 -biotype 418 HN "N-Terminal VAL" 233 -biotype 419 O "N-Terminal VAL" 178 -biotype 420 HA "N-Terminal VAL" 85 -biotype 421 N "N-Terminal LEU" 230 -biotype 422 CA "N-Terminal LEU" 236 -biotype 423 C "N-Terminal LEU" 177 -biotype 424 HN "N-Terminal LEU" 233 -biotype 425 O "N-Terminal LEU" 178 -biotype 426 HA "N-Terminal LEU" 85 -biotype 427 N "N-Terminal ILE" 230 -biotype 428 CA "N-Terminal ILE" 236 -biotype 429 C "N-Terminal ILE" 177 -biotype 430 HN "N-Terminal ILE" 233 -biotype 431 O "N-Terminal ILE" 178 -biotype 432 HA "N-Terminal ILE" 85 -biotype 433 N "N-Terminal SER" 230 -biotype 434 CA "N-Terminal SER" 236 -biotype 435 C "N-Terminal SER" 177 -biotype 436 HN "N-Terminal SER" 233 -biotype 437 O "N-Terminal SER" 178 -biotype 438 HA "N-Terminal SER" 85 -biotype 439 N "N-Terminal THR" 230 -biotype 440 CA "N-Terminal THR" 236 -biotype 441 C "N-Terminal THR" 177 -biotype 442 HN "N-Terminal THR" 233 -biotype 443 O "N-Terminal THR" 178 -biotype 444 HA "N-Terminal THR" 85 -biotype 445 N "N-Terminal CYS (SH)" 230 -biotype 446 CA "N-Terminal CYS (SH)" 236 -biotype 447 C "N-Terminal CYS (SH)" 177 -biotype 448 HN "N-Terminal CYS (SH)" 233 -biotype 449 O "N-Terminal CYS (SH)" 178 -biotype 450 HA "N-Terminal CYS (SH)" 85 -biotype 451 N "N-Terminal CYX (SS)" 230 -biotype 452 CA "N-Terminal CYX (SS)" 236 -biotype 453 C "N-Terminal CYX (SS)" 177 -biotype 454 HN "N-Terminal CYX (SS)" 233 -biotype 455 O "N-Terminal CYX (SS)" 178 -biotype 456 HA "N-Terminal CYX (SS)" 85 -biotype 457 N "N-Terminal CYD (S-)" -1 -biotype 458 CA "N-Terminal CYD (S-)" -1 -biotype 459 C "N-Terminal CYD (S-)" -1 -biotype 460 HN "N-Terminal CYD (S-)" -1 -biotype 461 O "N-Terminal CYD (S-)" -1 -biotype 462 HA "N-Terminal CYD (S-)" -1 -biotype 463 N "N-Terminal PRO" 252 -biotype 464 CA "N-Terminal PRO" 238 -biotype 465 C "N-Terminal PRO" 177 -biotype 466 HN "N-Terminal PRO" 253 -biotype 467 O "N-Terminal PRO" 178 -biotype 468 HA "N-Terminal PRO" 85 -biotype 469 CD "N-Terminal PRO" 239 -biotype 470 HD "N-Terminal PRO" 85 -biotype 471 N "N-Terminal PHE" 230 -biotype 472 CA "N-Terminal PHE" 236 -biotype 473 C "N-Terminal PHE" 177 -biotype 474 HN "N-Terminal PHE" 233 -biotype 475 O "N-Terminal PHE" 178 -biotype 476 HA "N-Terminal PHE" 85 -biotype 477 N "N-Terminal TYR" 230 -biotype 478 CA "N-Terminal TYR" 236 -biotype 479 C "N-Terminal TYR" 177 -biotype 480 HN "N-Terminal TYR" 233 -biotype 481 O "N-Terminal TYR" 178 -biotype 482 HA "N-Terminal TYR" 85 -biotype 483 N "N-Terminal TYD (O-)" -1 -biotype 484 CA "N-Terminal TYD (O-)" -1 -biotype 485 C "N-Terminal TYD (O-)" -1 -biotype 486 HN "N-Terminal TYD (O-)" -1 -biotype 487 O "N-Terminal TYD (O-)" -1 -biotype 488 HA "N-Terminal TYD (O-)" -1 -biotype 489 N "N-Terminal TRP" 230 -biotype 490 CA "N-Terminal TRP" 236 -biotype 491 C "N-Terminal TRP" 177 -biotype 492 HN "N-Terminal TRP" 233 -biotype 493 O "N-Terminal TRP" 178 -biotype 494 HA "N-Terminal TRP" 85 -biotype 495 N "N-Terminal HIS (+)" 230 -biotype 496 CA "N-Terminal HIS (+)" 236 -biotype 497 C "N-Terminal HIS (+)" 177 -biotype 498 HN "N-Terminal HIS (+)" 233 -biotype 499 O "N-Terminal HIS (+)" 178 -biotype 500 HA "N-Terminal HIS (+)" 85 -biotype 501 N "N-Terminal HIS (HD)" 230 -biotype 502 CA "N-Terminal HIS (HD)" 236 -biotype 503 C "N-Terminal HIS (HD)" 177 -biotype 504 HN "N-Terminal HIS (HD)" 233 -biotype 505 O "N-Terminal HIS (HD)" 178 -biotype 506 HA "N-Terminal HIS (HD)" 85 -biotype 507 N "N-Terminal HIS (HE)" 230 -biotype 508 CA "N-Terminal HIS (HE)" 236 -biotype 509 C "N-Terminal HIS (HE)" 177 -biotype 510 HN "N-Terminal HIS (HE)" 233 -biotype 511 O "N-Terminal HIS (HE)" 178 -biotype 512 HA "N-Terminal HIS (HE)" 85 -biotype 513 N "N-Terminal ASP" 230 -biotype 514 CA "N-Terminal ASP" 236 -biotype 515 C "N-Terminal ASP" 177 -biotype 516 HN "N-Terminal ASP" 233 -biotype 517 O "N-Terminal ASP" 178 -biotype 518 HA "N-Terminal ASP" 85 -biotype 519 N "N-Terminal ASH (COOH)" -1 -biotype 520 CA "N-Terminal ASH (COOH)" -1 -biotype 521 C "N-Terminal ASH (COOH)" -1 -biotype 522 HN "N-Terminal ASH (COOH)" -1 -biotype 523 O "N-Terminal ASH (COOH)" -1 -biotype 524 HA "N-Terminal ASH (COOH)" -1 -biotype 525 N "N-Terminal ASN" 230 -biotype 526 CA "N-Terminal ASN" 236 -biotype 527 C "N-Terminal ASN" 177 -biotype 528 HN "N-Terminal ASN" 233 -biotype 529 O "N-Terminal ASN" 178 -biotype 530 HA "N-Terminal ASN" 85 -biotype 531 N "N-Terminal GLU" 230 -biotype 532 CA "N-Terminal GLU" 236 -biotype 533 C "N-Terminal GLU" 177 -biotype 534 HN "N-Terminal GLU" 233 -biotype 535 O "N-Terminal GLU" 178 -biotype 536 HA "N-Terminal GLU" 85 -biotype 537 N "N-Terminal GLH (COOH)" -1 -biotype 538 CA "N-Terminal GLH (COOH)" -1 -biotype 539 C "N-Terminal GLH (COOH)" -1 -biotype 540 HN "N-Terminal GLH (COOH)" -1 -biotype 541 O "N-Terminal GLH (COOH)" -1 -biotype 542 HA "N-Terminal GLH (COOH)" -1 -biotype 543 N "N-Terminal GLN" 230 -biotype 544 CA "N-Terminal GLN" 236 -biotype 545 C "N-Terminal GLN" 177 -biotype 546 HN "N-Terminal GLN" 233 -biotype 547 O "N-Terminal GLN" 178 -biotype 548 HA "N-Terminal GLN" 85 -biotype 549 N "N-Terminal MET" 230 -biotype 550 CA "N-Terminal MET" 236 -biotype 551 C "N-Terminal MET" 177 -biotype 552 HN "N-Terminal MET" 233 -biotype 553 O "N-Terminal MET" 178 -biotype 554 HA "N-Terminal MET" 85 -biotype 555 N "N-Terminal LYS" 230 -biotype 556 CA "N-Terminal LYS" 236 -biotype 557 C "N-Terminal LYS" 177 -biotype 558 HN "N-Terminal LYS" 233 -biotype 559 O "N-Terminal LYS" 178 -biotype 560 HA "N-Terminal LYS" 85 -biotype 561 N "N-Terminal LYD (NH2)" -1 -biotype 562 CA "N-Terminal LYD (NH2)" -1 -biotype 563 C "N-Terminal LYD (NH2)" -1 -biotype 564 HN "N-Terminal LYD (NH2)" -1 -biotype 565 O "N-Terminal LYD (NH2)" -1 -biotype 566 HA "N-Terminal LYD (NH2)" -1 -biotype 567 N "N-Terminal ARG" 230 -biotype 568 CA "N-Terminal ARG" 236 -biotype 569 C "N-Terminal ARG" 177 -biotype 570 HN "N-Terminal ARG" 233 -biotype 571 O "N-Terminal ARG" 178 -biotype 572 HA "N-Terminal ARG" 85 -biotype 573 N "N-Terminal ORN" 230 -biotype 574 CA "N-Terminal ORN" 236 -biotype 575 C "N-Terminal ORN" 177 -biotype 576 HN "N-Terminal ORN" 233 -biotype 577 O "N-Terminal ORN" 178 -biotype 578 HA "N-Terminal ORN" 85 -biotype 579 N "N-Terminal AIB" 230 -biotype 580 CA "N-Terminal AIB" 237 -biotype 581 C "N-Terminal AIB" 177 -biotype 582 HN "N-Terminal AIB" 233 -biotype 583 O "N-Terminal AIB" 178 -biotype 584 N "C-Terminal GLY" 180 -biotype 585 CA "C-Terminal GLY" 226 -biotype 586 C "C-Terminal GLY" 213 -biotype 587 HN "C-Terminal GLY" 183 -biotype 588 OXT "C-Terminal GLY" 214 -biotype 589 HA "C-Terminal GLY" 85 -biotype 590 N "C-Terminal ALA" 180 -biotype 591 CA "C-Terminal ALA" 225 -biotype 592 C "C-Terminal ALA" 213 -biotype 593 HN "C-Terminal ALA" 183 -biotype 594 OXT "C-Terminal ALA" 214 -biotype 595 HA "C-Terminal ALA" 85 -biotype 596 N "C-Terminal VAL" 180 -biotype 597 CA "C-Terminal VAL" 225 -biotype 598 C "C-Terminal VAL" 213 -biotype 599 HN "C-Terminal VAL" 183 -biotype 600 OXT "C-Terminal VAL" 214 -biotype 601 HA "C-Terminal VAL" 85 -biotype 602 N "C-Terminal LEU" 180 -biotype 603 CA "C-Terminal LEU" 225 -biotype 604 C "C-Terminal LEU" 213 -biotype 605 HN "C-Terminal LEU" 183 -biotype 606 OXT "C-Terminal LEU" 214 -biotype 607 HA "C-Terminal LEU" 85 -biotype 608 N "C-Terminal ILE" 180 -biotype 609 CA "C-Terminal ILE" 225 -biotype 610 C "C-Terminal ILE" 213 -biotype 611 HN "C-Terminal ILE" 183 -biotype 612 OXT "C-Terminal ILE" 214 -biotype 613 HA "C-Terminal ILE" 85 -biotype 614 N "C-Terminal SER" 180 -biotype 615 CA "C-Terminal SER" 225 -biotype 616 C "C-Terminal SER" 213 -biotype 617 HN "C-Terminal SER" 183 -biotype 618 OXT "C-Terminal SER" 214 -biotype 619 HA "C-Terminal SER" 85 -biotype 620 N "C-Terminal THR" 180 -biotype 621 CA "C-Terminal THR" 225 -biotype 622 C "C-Terminal THR" 213 -biotype 623 HN "C-Terminal THR" 183 -biotype 624 OXT "C-Terminal THR" 214 -biotype 625 HA "C-Terminal THR" 85 -biotype 626 N "C-Terminal CYS (SH)" 180 -biotype 627 CA "C-Terminal CYS (SH)" 225 -biotype 628 C "C-Terminal CYS (SH)" 213 -biotype 629 HN "C-Terminal CYS (SH)" 183 -biotype 630 OXT "C-Terminal CYS (SH)" 214 -biotype 631 HA "C-Terminal CYS (SH)" 85 -biotype 632 N "C-Terminal CYX (SS)" 180 -biotype 633 CA "C-Terminal CYX (SS)" 225 -biotype 634 C "C-Terminal CYX (SS)" 213 -biotype 635 HN "C-Terminal CYX (SS)" 183 -biotype 636 OXT "C-Terminal CYX (SS)" 214 -biotype 637 HA "C-Terminal CYX (SS)" 85 -biotype 638 N "C-Terminal CYD (S-)" -1 -biotype 639 CA "C-Terminal CYD (S-)" -1 -biotype 640 C "C-Terminal CYD (S-)" -1 -biotype 641 HN "C-Terminal CYD (S-)" -1 -biotype 642 OXT "C-Terminal CYD (S-)" -1 -biotype 643 HA "C-Terminal CYD (S-)" -1 -biotype 644 N "C-Terminal PRO" 181 -biotype 645 CA "C-Terminal PRO" 228 -biotype 646 C "C-Terminal PRO" 213 -biotype 647 OXT "C-Terminal PRO" 214 -biotype 648 HA "C-Terminal PRO" 85 -biotype 649 N "C-Terminal PHE" 180 -biotype 650 CA "C-Terminal PHE" 225 -biotype 651 C "C-Terminal PHE" 213 -biotype 652 HN "C-Terminal PHE" 183 -biotype 653 OXT "C-Terminal PHE" 214 -biotype 654 HA "C-Terminal PHE" 85 -biotype 655 N "C-Terminal TYR" 180 -biotype 656 CA "C-Terminal TYR" 225 -biotype 657 C "C-Terminal TYR" 213 -biotype 658 HN "C-Terminal TYR" 183 -biotype 659 OXT "C-Terminal TYR" 214 -biotype 660 HA "C-Terminal TYR" 85 -biotype 661 N "C-Terminal TYD (O-)" -1 -biotype 662 CA "C-Terminal TYD (O-)" -1 -biotype 663 C "C-Terminal TYD (O-)" -1 -biotype 664 HN "C-Terminal TYD (O-)" -1 -biotype 665 OXT "C-Terminal TYD (O-)" -1 -biotype 666 HA "C-Terminal TYD (O-)" -1 -biotype 667 N "C-Terminal TRP" 180 -biotype 668 CA "C-Terminal TRP" 225 -biotype 669 C "C-Terminal TRP" 213 -biotype 670 HN "C-Terminal TRP" 183 -biotype 671 OXT "C-Terminal TRP" 214 -biotype 672 HA "C-Terminal TRP" 85 -biotype 673 N "C-Terminal HIS (+)" 180 -biotype 674 CA "C-Terminal HIS (+)" 225 -biotype 675 C "C-Terminal HIS (+)" 213 -biotype 676 HN "C-Terminal HIS (+)" 183 -biotype 677 OXT "C-Terminal HIS (+)" 214 -biotype 678 HA "C-Terminal HIS (+)" 85 -biotype 679 N "C-Terminal HIS (HD)" 180 -biotype 680 CA "C-Terminal HIS (HD)" 225 -biotype 681 C "C-Terminal HIS (HD)" 213 -biotype 682 HN "C-Terminal HIS (HD)" 183 -biotype 683 OXT "C-Terminal HIS (HD)" 214 -biotype 684 HA "C-Terminal HIS (HD)" 85 -biotype 685 N "C-Terminal HIS (HE)" 180 -biotype 686 CA "C-Terminal HIS (HE)" 225 -biotype 687 C "C-Terminal HIS (HE)" 213 -biotype 688 HN "C-Terminal HIS (HE)" 183 -biotype 689 OXT "C-Terminal HIS (HE)" 214 -biotype 690 HA "C-Terminal HIS (HE)" 85 -biotype 691 N "C-Terminal ASP" 180 -biotype 692 CA "C-Terminal ASP" 225 -biotype 693 C "C-Terminal ASP" 213 -biotype 694 HN "C-Terminal ASP" 183 -biotype 695 OXT "C-Terminal ASP" 214 -biotype 696 HA "C-Terminal ASP" 85 -biotype 697 N "C-Terminal ASH (COOH)" -1 -biotype 698 CA "C-Terminal ASH (COOH)" -1 -biotype 699 C "C-Terminal ASH (COOH)" -1 -biotype 700 HN "C-Terminal ASH (COOH)" -1 -biotype 701 OXT "C-Terminal ASH (COOH)" -1 -biotype 702 HA "C-Terminal ASH (COOH)" -1 -biotype 703 N "C-Terminal ASN" 180 -biotype 704 CA "C-Terminal ASN" 225 -biotype 705 C "C-Terminal ASN" 213 -biotype 706 HN "C-Terminal ASN" 183 -biotype 707 OXT "C-Terminal ASN" 214 -biotype 708 HA "C-Terminal ASN" 85 -biotype 709 N "C-Terminal GLU" 180 -biotype 710 CA "C-Terminal GLU" 225 -biotype 711 C "C-Terminal GLU" 213 -biotype 712 HN "C-Terminal GLU" 183 -biotype 713 OXT "C-Terminal GLU" 214 -biotype 714 HA "C-Terminal GLU" 85 -biotype 715 N "C-Terminal GLH (COOH)" -1 -biotype 716 CA "C-Terminal GLH (COOH)" -1 -biotype 717 C "C-Terminal GLH (COOH)" -1 -biotype 718 HN "C-Terminal GLH (COOH)" -1 -biotype 719 OXT "C-Terminal GLH (COOH)" -1 -biotype 720 HA "C-Terminal GLH (COOH)" -1 -biotype 721 N "C-Terminal GLN" 180 -biotype 722 CA "C-Terminal GLN" 225 -biotype 723 C "C-Terminal GLN" 213 -biotype 724 HN "C-Terminal GLN" 183 -biotype 725 OXT "C-Terminal GLN" 214 -biotype 726 HA "C-Terminal GLN" 85 -biotype 727 N "C-Terminal MET" 180 -biotype 728 CA "C-Terminal MET" 225 -biotype 729 C "C-Terminal MET" 213 -biotype 730 HN "C-Terminal MET" 183 -biotype 731 OXT "C-Terminal MET" 214 -biotype 732 HA "C-Terminal MET" 85 -biotype 733 N "C-Terminal LYS" 180 -biotype 734 CA "C-Terminal LYS" 225 -biotype 735 C "C-Terminal LYS" 213 -biotype 736 HN "C-Terminal LYS" 183 -biotype 737 OXT "C-Terminal LYS" 214 -biotype 738 HA "C-Terminal LYS" 85 -biotype 739 N "C-Terminal LYD (NH2)" -1 -biotype 740 CA "C-Terminal LYD (NH2)" -1 -biotype 741 C "C-Terminal LYD (NH2)" -1 -biotype 742 HN "C-Terminal LYD (NH2)" -1 -biotype 743 OXT "C-Terminal LYD (NH2)" -1 -biotype 744 HA "C-Terminal LYD (NH2)" -1 -biotype 745 N "C-Terminal ARG" 180 -biotype 746 CA "C-Terminal ARG" 225 -biotype 747 C "C-Terminal ARG" 213 -biotype 748 HN "C-Terminal ARG" 183 -biotype 749 OXT "C-Terminal ARG" 214 -biotype 750 HA "C-Terminal ARG" 85 -biotype 751 N "C-Terminal ORN" 180 -biotype 752 CA "C-Terminal ORN" 225 -biotype 753 C "C-Terminal ORN" 213 -biotype 754 HN "C-Terminal ORN" 183 -biotype 755 OXT "C-Terminal ORN" 214 -biotype 756 HA "C-Terminal ORN" 85 -biotype 757 N "C-Terminal AIB" 180 -biotype 758 CA "C-Terminal AIB" 227 -biotype 759 C "C-Terminal AIB" 213 -biotype 760 HN "C-Terminal AIB" 183 -biotype 761 OXT "C-Terminal AIB" 214 -biotype 762 N "Deprotonated N-Terminus" -1 -biotype 763 H "Deprotonated N-Terminus" -1 -biotype 764 C "Formyl N-Terminus" 177 -biotype 765 H "Formyl N-Terminus" 221 -biotype 766 O "Formyl N-Terminus" 178 -biotype 767 CH3 "Acetyl N-Terminus" 80 -biotype 768 H "Acetyl N-Terminus" 85 -biotype 769 C "Acetyl N-Terminus" 177 -biotype 770 O "Acetyl N-Terminus" 178 -biotype 771 C "Protonated C-Terminus" -1 -biotype 772 O "Protonated C-Terminus" -1 -biotype 773 OH "Protonated C-Terminus" -1 -biotype 774 HO "Protonated C-Terminus" -1 -biotype 775 N "Amide C-Terminus" 179 -biotype 776 HN "Amide C-Terminus" 182 -biotype 777 N "N-MeAmide C-Terminus" 180 -biotype 778 HN "N-MeAmide C-Terminus" 183 -biotype 779 CH3 "N-MeAmide C-Terminus" 184 -biotype 780 H "N-MeAmide C-Terminus" 85 -biotype 2001 O "Water" 63 -biotype 2002 H "Water" 64 -biotype 2003 NA "Sodium Ion" -1 -biotype 2004 K "Potassium Ion" -1 -biotype 2005 MG "Magnesium Ion" -1 -biotype 2006 CA "Calcium Ion" -1 -biotype 2007 CL "Chloride Ion" -1 diff --git a/tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/moltemplate_files/system.xyz b/tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/moltemplate_files/system.xyz deleted file mode 100644 index d64a95504d365da60f70824613f79514bb192518..0000000000000000000000000000000000000000 --- a/tools/moltemplate/examples/force_field_OPLSAA/ethylene+benzene_PACKMOL/moltemplate_files/system.xyz +++ /dev/null @@ -1,12002 +0,0 @@ - 12000 - Built with Packmol - C1 22.651014 24.498564 11.614060 - C2 22.571262 24.140589 10.326266 - H11 23.515857 24.451603 12.160727 - H12 21.853441 24.847475 12.153636 - H21 23.368835 23.791678 9.786690 - H22 21.706418 24.187550 9.779599 - C1 21.435403 10.177603 61.812264 - C2 20.874880 11.369561 61.571491 - H11 22.444012 10.040471 61.925867 - H12 20.899589 9.309329 61.901752 - H21 21.410694 12.237834 61.482003 - H22 19.866271 11.506692 61.457888 - C1 50.424240 2.165264 4.144155 - C2 51.118136 2.597830 3.083817 - H11 49.739110 2.740029 4.643402 - H12 50.524074 1.225635 4.539293 - H21 51.018302 3.537459 2.688679 - H22 51.803265 2.023065 2.584570 - C1 69.502684 36.682180 15.542915 - C2 70.510550 36.378868 14.715189 - H11 68.606679 37.063658 15.225656 - H12 69.548565 36.556544 16.558353 - H21 70.464670 36.504504 13.699751 - H22 71.406555 35.997391 15.032448 - C1 63.290190 42.633189 15.920572 - C2 63.657324 41.430907 15.459430 - H11 63.819808 43.491766 15.743500 - H12 62.450898 42.788725 16.486611 - H21 64.496616 41.275370 14.893390 - H22 63.127707 40.572330 15.636501 - C1 51.014039 43.520922 29.546351 - C2 51.721815 42.741456 30.373640 - H11 51.246058 43.652102 28.557431 - H12 50.185018 44.047214 29.837460 - H21 52.550836 42.215165 30.082531 - H22 51.489796 42.610276 31.362560 - C1 21.041209 33.203742 56.448080 - C2 20.018646 33.390439 57.292136 - H11 21.505740 33.966278 55.946329 - H12 21.439201 32.283731 56.237879 - H21 19.620655 34.310451 57.502338 - H22 19.554115 32.627903 57.793888 - C1 19.380903 57.909273 60.136394 - C2 18.507842 56.895938 60.198342 - H11 20.339380 57.808490 59.789740 - H12 19.158845 58.864795 60.430795 - H21 18.729900 55.940416 59.903941 - H22 17.549365 56.996721 60.544995 - C1 69.943496 73.076888 53.702677 - C2 70.336463 72.141689 54.576692 - H11 70.543548 73.846082 53.390775 - H12 69.011982 73.096524 53.277355 - H21 71.267977 72.122052 55.002014 - H22 69.736411 71.372495 54.888594 - C1 53.216166 34.782224 61.298469 - C2 52.832439 34.524767 62.555207 - H11 54.194493 34.781481 60.995353 - H12 52.561509 35.000129 60.541538 - H21 53.487097 34.306861 63.312139 - H22 51.854112 34.525510 62.858323 - C1 37.787302 28.010773 79.082839 - C2 39.036254 28.109043 78.610206 - H11 37.327390 27.117487 79.281648 - H12 37.193735 28.821168 79.282692 - H21 39.629821 27.298648 78.410353 - H22 39.496167 29.002329 78.411398 - C1 57.917058 25.635725 48.236420 - C2 58.654068 24.999341 49.155524 - H11 56.959578 25.958090 48.404698 - H12 58.252876 25.850142 47.292887 - H21 58.318251 24.784924 50.099058 - H22 59.611548 24.676976 48.987247 - C1 48.704501 39.022829 79.368761 - C2 48.146767 39.263710 78.175518 - H11 48.670604 38.111147 79.834261 - H12 49.208841 39.731331 79.909751 - H21 47.642426 38.555209 77.634528 - H22 48.180664 40.175392 77.710018 - C1 49.290389 30.217190 60.388264 - C2 49.629489 31.508662 60.288103 - H11 48.386460 29.845304 60.082294 - H12 49.908290 29.499731 60.778719 - H21 49.011589 32.226121 59.897648 - H22 50.533418 31.880547 60.594072 - C1 70.285207 40.468345 63.514615 - C2 69.451519 39.423750 63.596504 - H11 69.973795 41.443456 63.549032 - H12 71.299829 40.374340 63.411125 - H21 68.436897 39.517755 63.699994 - H22 69.762931 38.448639 63.562087 - C1 74.639200 8.945741 65.383745 - C2 74.083871 8.050095 64.557700 - H11 75.439088 9.531374 65.126417 - H12 74.307728 9.115576 66.337833 - H21 74.415344 7.880259 63.603611 - H22 73.283984 7.464462 64.815028 - C1 39.172540 71.787133 27.530358 - C2 38.962281 73.109074 27.495972 - H11 38.439875 71.093963 27.352253 - H12 40.082557 71.365257 27.737466 - H21 38.052264 73.530950 27.288863 - H22 39.694946 73.802244 27.674077 - C1 65.444930 70.845785 18.893696 - C2 64.680569 70.650896 17.811711 - H11 65.752408 70.089077 19.511639 - H12 65.782184 71.766880 19.188396 - H21 64.343315 69.729802 17.517010 - H22 64.373091 71.407604 17.193767 - C1 71.315072 36.001969 8.560061 - C2 70.304030 35.509365 7.833388 - H11 72.136503 35.452946 8.829930 - H12 71.346447 36.966500 8.903134 - H21 70.272655 34.544833 7.490315 - H22 69.482599 36.058388 7.563519 - C1 54.191566 63.992227 58.039470 - C2 53.632368 65.208827 58.049583 - H11 53.651049 63.122259 58.038625 - H12 55.203761 63.836004 58.031784 - H21 52.620173 65.365050 58.057269 - H22 54.172885 66.078795 58.050428 - C1 21.609595 5.135661 55.089620 - C2 22.533981 6.060397 55.378228 - H11 21.510842 4.255922 55.604702 - H12 20.928637 5.235394 54.331099 - H21 23.214939 5.960664 56.136748 - H22 22.632735 6.940137 54.863145 - C1 26.879519 23.479073 55.696825 - C2 28.211869 23.566739 55.596432 - H11 26.250395 24.278425 55.577480 - H12 26.384818 22.605776 55.900851 - H21 28.706570 24.440036 55.392406 - H22 28.840993 22.767387 55.715778 - C1 62.158924 30.644098 72.300606 - C2 62.692496 31.260098 71.238172 - H11 61.873130 29.660573 72.298548 - H12 61.994654 31.108033 73.198817 - H21 62.856766 30.796162 70.339961 - H22 62.978290 32.243623 71.240230 - C1 34.188367 42.393096 23.904692 - C2 35.516091 42.311539 23.751663 - H11 33.656449 43.257919 23.769975 - H12 33.600361 41.597065 24.168489 - H21 36.104096 43.107570 23.487866 - H22 36.048008 41.446716 23.886380 - C1 13.879265 36.414981 75.272748 - C2 14.490672 36.171191 76.438796 - H11 12.892360 36.678130 75.196763 - H12 14.350455 36.357468 74.365182 - H21 14.019482 36.228704 77.346362 - H22 15.477578 35.908042 76.514781 - C1 44.333608 42.745532 32.963104 - C2 44.076743 42.033211 31.858777 - H11 45.280528 42.958100 33.290460 - H12 43.603353 43.133802 33.567238 - H21 44.806998 41.644941 31.254643 - H22 43.129823 41.820643 31.531421 - C1 75.807431 43.681223 40.332840 - C2 77.077645 43.265414 40.413954 - H11 75.523624 44.538495 39.849578 - H12 75.019823 43.174681 40.747683 - H21 77.865252 43.771955 39.999111 - H22 77.361452 42.408142 40.897216 - C1 36.461650 32.287602 26.835698 - C2 36.105596 33.336254 27.588342 - H11 36.493989 31.325833 27.186354 - H12 36.729639 32.364841 25.850193 - H21 35.837607 33.259015 28.573847 - H22 36.073257 34.298023 27.237686 - C1 75.437961 4.371036 70.982983 - C2 75.130503 5.594304 70.533531 - H11 75.172120 3.508321 70.499191 - H12 75.963140 4.201937 71.845883 - H21 74.605325 5.763404 69.670631 - H22 75.396344 6.457019 71.017323 - C1 34.736383 32.471107 61.860615 - C2 34.821355 33.435200 62.785939 - H11 35.097807 31.522737 61.998350 - H12 34.303285 32.606273 60.942377 - H21 35.254452 33.300034 63.704177 - H22 34.459930 34.383570 62.648204 - C1 68.248696 55.181995 56.218730 - C2 68.784952 54.133299 55.581873 - H11 67.581696 55.093055 56.990872 - H12 68.463370 56.155501 55.983770 - H21 68.570279 53.159793 55.816832 - H22 69.451953 54.222239 54.809730 - C1 48.511144 28.944432 68.606003 - C2 49.283761 28.207780 69.414291 - H11 47.677799 28.580112 68.135035 - H12 48.692795 29.930111 68.395188 - H21 49.102110 27.222100 69.625106 - H22 50.117106 28.572100 69.885259 - C1 4.556463 34.366964 31.086230 - C2 5.876827 34.198783 30.940365 - H11 4.023215 33.991611 31.876015 - H12 3.975997 34.884176 30.419481 - H21 6.457293 33.681571 31.607114 - H22 6.410075 34.574136 30.150580 - C1 41.710507 53.347212 43.580312 - C2 42.113206 54.581297 43.908620 - H11 42.002082 52.505061 44.085059 - H12 41.079257 53.148423 42.798640 - H21 42.744456 54.780086 44.690293 - H22 41.821631 55.423448 43.403874 - C1 19.790783 55.013910 20.328197 - C2 19.749862 54.158503 21.357530 - H11 18.993747 55.588771 20.039630 - H12 20.622337 55.160576 19.748532 - H21 18.918308 54.011837 21.937195 - H22 20.546898 53.583642 21.646097 - C1 8.143656 42.683712 21.395637 - C2 7.904280 41.425572 21.004863 - H11 7.868391 43.506262 20.850986 - H12 8.620832 42.922392 22.269901 - H21 7.427104 41.186892 20.130598 - H22 8.179545 40.603022 21.549514 - C1 9.076078 43.978357 59.924781 - C2 9.312663 45.122264 60.579323 - H11 8.367832 43.297774 60.214950 - H12 9.584765 43.694066 59.082510 - H21 8.803975 45.406555 61.421594 - H22 10.020908 45.802847 60.289154 - C1 31.249523 75.052516 20.231411 - C2 31.106461 76.226093 20.860038 - H11 32.144117 74.560344 20.150962 - H12 30.475600 74.554787 19.781619 - H21 31.880384 76.723822 21.309830 - H22 30.211867 76.718265 20.940487 - C1 31.940010 12.491378 39.160561 - C2 32.143367 13.201051 38.043453 - H11 31.078081 11.971730 39.350423 - H12 32.630410 12.412423 39.912970 - H21 31.452968 13.280006 37.291045 - H22 33.005297 13.720700 37.853592 - C1 46.972771 51.543538 54.957717 - C2 46.844195 50.581632 54.035153 - H11 47.793218 52.152582 55.027981 - H12 46.260778 51.745854 55.665628 - H21 47.556188 50.379316 53.327242 - H22 46.023748 49.972588 53.964889 - C1 65.969573 7.657589 41.010763 - C2 66.656346 7.452924 39.879668 - H11 65.724543 8.587900 41.362169 - H12 65.635316 6.899912 41.613425 - H21 66.990603 8.210601 39.277006 - H22 66.901376 6.522614 39.528262 - C1 55.336302 23.513249 17.058916 - C2 56.662450 23.421190 17.219469 - H11 54.894492 23.895307 16.217584 - H12 54.659519 23.208842 17.764823 - H21 57.339234 23.725597 16.513563 - H22 57.104260 23.039132 18.060801 - C1 36.704235 71.388396 71.225248 - C2 37.607597 70.654065 71.886773 - H11 36.837072 71.715379 70.263770 - H12 35.809420 71.680814 71.628735 - H21 38.502412 70.361647 71.483286 - H22 37.474759 70.327081 72.848251 - C1 75.533482 46.415410 48.760132 - C2 74.283642 45.935057 48.769209 - H11 76.050938 46.659252 49.609711 - H12 76.070254 46.576742 47.902898 - H21 73.746870 45.773726 49.626444 - H22 73.766186 45.691216 47.919630 - C1 54.786475 15.518643 62.020361 - C2 53.702166 14.733077 62.011445 - H11 55.745099 15.158028 62.020090 - H12 54.742456 16.541876 62.028152 - H21 53.746185 13.709844 62.003653 - H22 52.743541 15.093692 62.011715 - C1 6.297111 63.847009 32.798995 - C2 5.501701 63.847905 33.876141 - H11 6.312061 64.602314 32.107406 - H12 6.953083 63.090948 32.582021 - H21 4.845729 64.603965 34.093114 - H22 5.486751 63.092600 34.567729 - C1 62.019414 36.410072 52.321586 - C2 61.921326 37.744923 52.283207 - H11 61.209686 35.785845 52.382293 - H12 62.911877 35.908365 52.293252 - H21 61.028863 38.246630 52.311541 - H22 62.731054 38.369150 52.222500 - C1 18.418230 12.239910 47.031087 - C2 19.309493 12.986024 46.366342 - H11 17.844099 12.597496 47.800184 - H12 18.240589 11.252985 46.822697 - H21 19.487134 13.972949 46.574732 - H22 19.883624 12.628438 45.597245 - C1 6.851760 43.192701 43.853277 - C2 6.657568 44.004696 42.806436 - H11 7.243749 42.249999 43.771665 - H12 6.623569 43.450493 44.817889 - H21 6.885758 43.746904 41.841824 - H22 6.265579 44.947398 42.888048 - C1 9.924466 47.871793 46.926570 - C2 9.131751 48.344163 47.896823 - H11 9.717285 47.023845 46.390786 - H12 10.800294 48.321301 46.643955 - H21 8.255923 47.894655 48.179438 - H22 9.338932 49.192111 48.432607 - C1 70.293803 20.435201 36.006011 - C2 71.600713 20.322409 35.737336 - H11 69.579831 19.819402 35.605963 - H12 69.905409 21.146140 36.632685 - H21 71.989107 19.611470 35.110662 - H22 72.314685 20.938209 36.137385 - C1 60.627380 72.544908 66.536898 - C2 61.434029 71.511158 66.265607 - H11 60.947547 73.408775 66.984370 - H12 59.626813 72.553001 66.318257 - H21 62.434596 71.503066 66.484248 - H22 61.113862 70.647291 65.818135 - C1 72.707987 20.069413 78.398098 - C2 72.425227 20.873574 79.430712 - H11 73.641169 19.989441 77.983636 - H12 72.013309 19.471082 77.941559 - H21 73.119904 21.471905 79.887251 - H22 71.492044 20.953546 79.845174 - C1 72.426183 34.041616 74.908482 - C2 72.565284 34.863666 75.956243 - H11 71.732900 33.288725 74.869537 - H12 73.002137 34.101115 74.063650 - H21 71.989330 34.804168 76.801075 - H22 73.258568 35.616558 75.995188 - C1 45.744062 6.374741 34.180465 - C2 45.256451 6.813170 35.347914 - H11 46.490595 6.850927 33.665743 - H12 45.408825 5.528744 33.710456 - H21 45.591688 7.659167 35.817923 - H22 44.509918 6.336984 35.862636 - C1 59.376459 64.619177 32.610172 - C2 59.060510 63.320204 32.686106 - H11 58.709524 65.374293 32.794568 - H12 60.309894 64.959733 32.361727 - H21 58.127075 62.979649 32.934551 - H22 59.727444 62.565088 32.501710 - C1 69.738652 21.177781 56.714948 - C2 68.513696 20.693270 56.474840 - H11 70.244623 21.782963 56.061686 - H12 70.265921 20.981279 57.570739 - H21 67.986427 20.889772 55.619049 - H22 68.007725 20.088088 57.128102 - C1 65.365438 56.864613 2.461825 - C2 64.032599 56.992904 2.462764 - H11 65.845691 55.959980 2.462252 - H12 66.009423 57.661033 2.460604 - H21 63.388614 56.196483 2.463985 - H22 63.552346 57.897537 2.462337 - C1 12.824370 17.163565 22.149983 - C2 11.863155 17.986843 21.712718 - H11 12.635988 16.251345 22.575861 - H12 13.823528 17.381358 22.092936 - H21 10.863998 17.769050 21.769765 - H22 12.051537 18.899062 21.286840 - C1 31.582065 25.069299 57.525882 - C2 30.433862 25.663623 57.874205 - H11 32.248339 25.473665 56.861375 - H12 31.884290 24.163625 57.896583 - H21 30.131637 26.569297 57.503504 - H22 29.767588 25.259256 58.538712 - C1 14.805579 39.218967 22.159828 - C2 14.053961 40.322004 22.266126 - H11 15.605464 39.139663 21.525084 - H12 14.639678 38.367870 22.704909 - H21 14.219862 41.173102 21.721044 - H22 13.254076 40.401308 22.900869 - C1 26.688171 52.639484 35.523273 - C2 26.084610 52.414977 34.349292 - H11 27.653431 52.362134 35.724154 - H12 26.232009 53.106205 36.312635 - H21 26.540772 51.948256 33.559931 - H22 25.119350 52.692328 34.148412 - C1 55.610491 17.028389 57.811480 - C2 54.538325 16.226281 57.813793 - H11 56.562635 16.697858 57.629342 - H12 55.562709 18.035490 57.991668 - H21 54.586108 15.219180 57.633605 - H22 53.586181 16.556812 57.995931 - C1 41.380111 57.320149 74.764966 - C2 41.115191 56.376565 73.852613 - H11 40.680011 57.689788 75.414760 - H12 42.303668 57.746414 74.884734 - H21 40.191634 55.950300 73.732845 - H22 41.815291 56.006926 73.202820 - C1 71.480990 76.707299 66.210683 - C2 70.832050 75.536373 66.183674 - H11 72.499987 76.789767 66.148647 - H12 71.009369 77.612497 66.295501 - H21 71.303672 74.631176 66.098856 - H22 69.813054 75.453905 66.245710 - C1 59.265586 33.360837 4.782339 - C2 58.910264 33.642294 6.042279 - H11 60.144779 32.898126 4.533497 - H12 58.686105 33.586142 3.968433 - H21 59.489745 33.416990 6.856185 - H22 58.031071 34.105005 6.291121 - C1 43.268413 7.036586 17.767022 - C2 44.283133 7.909535 17.801991 - H11 42.282959 7.315538 17.775389 - H12 43.397960 6.021309 17.729159 - H21 44.153586 8.924813 17.839854 - H22 45.268587 7.630583 17.793624 - C1 14.303342 27.294886 78.058828 - C2 14.521918 25.976940 78.149183 - H11 13.930112 27.749233 77.220214 - H12 14.492205 27.952215 78.821228 - H21 14.333055 25.319612 77.386783 - H22 14.895148 25.522594 78.987796 - C1 56.503415 56.687620 20.535795 - C2 57.095322 57.887329 20.478662 - H11 56.683148 55.936620 19.862965 - H12 55.824416 56.426675 21.256815 - H21 57.774322 58.148274 19.757641 - H22 56.915590 58.638329 21.151491 - C1 26.325906 49.428751 6.752187 - C2 27.180578 49.773921 7.723431 - H11 25.560819 50.030285 6.433123 - H12 26.370084 48.536068 6.252018 - H21 27.136400 50.666603 8.223601 - H22 27.945665 49.172386 8.042495 - C1 68.356046 43.034127 49.281166 - C2 67.417903 42.154275 49.653551 - H11 69.243631 42.763629 48.847545 - H12 68.259775 44.046773 49.400684 - H21 67.514174 41.141630 49.534032 - H22 66.530318 42.424774 50.087171 - C1 58.750514 42.571025 9.951302 - C2 57.824206 41.901750 9.253487 - H11 58.536366 43.132401 10.780761 - H12 59.745995 42.574176 9.710444 - H21 56.828726 41.898599 9.494345 - H22 58.038354 41.340375 8.424028 - C1 78.096825 53.647615 56.170255 - C2 79.364665 53.762964 56.585223 - H11 77.653085 54.304099 55.521312 - H12 77.471154 52.893834 56.469178 - H21 79.990336 54.516745 56.286301 - H22 79.808405 53.106480 57.234166 - C1 75.443737 59.804447 59.852465 - C2 76.241925 59.946597 58.786815 - H11 74.496978 59.417114 59.801234 - H12 75.717232 60.071878 60.802563 - H21 75.968430 59.679166 57.836718 - H22 77.188684 60.333930 58.838047 - C1 72.964247 59.764211 68.198770 - C2 73.150980 60.805344 67.377738 - H11 73.302131 58.818540 67.997415 - H12 72.468856 59.831697 69.092659 - H21 73.646372 60.737859 66.483849 - H22 72.813096 61.751015 67.579093 - C1 3.780965 73.674108 18.276575 - C2 4.564058 72.615775 18.032407 - H11 2.868422 73.607194 18.736782 - H12 4.032977 74.633717 18.022321 - H21 4.312045 71.656167 18.286661 - H22 5.476601 72.682689 17.572200 - C1 51.326576 58.862193 60.033663 - C2 51.741900 57.749348 60.651726 - H11 50.393992 58.965574 59.623051 - H12 51.908839 59.697487 59.922945 - H21 51.159637 56.914054 60.762445 - H22 52.674484 57.645967 61.062339 - C1 70.918299 76.144497 3.411404 - C2 70.194075 75.217220 4.050605 - H11 70.536809 77.041836 3.097953 - H12 71.910665 76.029307 3.185694 - H21 69.201709 75.332410 4.276315 - H22 70.575565 74.319881 4.364056 - C1 23.286637 78.333899 45.532595 - C2 22.519205 78.753421 44.518706 - H11 22.950452 78.244662 46.495933 - H12 24.270143 78.069274 45.424463 - H21 21.535699 79.018046 44.626838 - H22 22.855390 78.842659 43.555368 - C1 54.053727 10.327201 40.973268 - C2 52.881685 10.416903 40.332025 - H11 54.450157 11.086960 41.534172 - H12 54.645903 9.491779 40.953246 - H21 52.289509 11.252325 40.352046 - H22 52.485256 9.657144 39.771121 - C1 55.723353 79.416682 76.098682 - C2 55.264541 79.365550 74.841781 - H11 56.539882 79.967357 76.379822 - H12 55.293827 78.909136 76.877725 - H21 55.694067 79.873096 74.062738 - H22 54.448012 78.814874 74.560641 - C1 14.375622 12.614939 44.307875 - C2 14.258224 11.281096 44.308595 - H11 15.131610 13.115559 44.784178 - H12 13.718656 13.239404 43.830964 - H21 14.915190 10.656631 44.785506 - H22 13.502236 10.780476 43.832292 - C1 20.301209 50.147413 12.467328 - C2 20.444032 48.967084 13.083238 - H11 20.701901 50.356994 11.548347 - H12 19.780047 50.933429 12.866794 - H21 20.965193 48.181068 12.683772 - H22 20.043339 48.757503 14.002219 - C1 22.305273 2.647366 41.472460 - C2 23.072121 3.515715 42.143903 - H11 22.673695 1.980522 40.787925 - H12 21.290023 2.581764 41.590640 - H21 24.087371 3.581316 42.025723 - H22 22.703699 4.182558 42.828439 - C1 53.544893 76.514586 76.075925 - C2 54.824801 76.127304 76.144988 - H11 52.822480 75.990069 75.573925 - H12 53.187716 77.365772 76.519672 - H21 55.181978 75.276118 75.701241 - H22 55.547215 76.651821 76.646988 - C1 50.682521 64.403223 74.198805 - C2 51.993393 64.651164 74.084521 - H11 50.303883 63.537608 74.594214 - H12 49.955450 65.059702 73.899793 - H21 52.720463 63.994685 74.383532 - H22 52.372031 65.516779 73.689112 - C1 30.077840 22.246797 59.754006 - C2 30.599371 21.013943 59.785634 - H11 29.071151 22.434702 59.770519 - H12 30.644623 23.098791 59.710815 - H21 30.032588 20.161949 59.828825 - H22 31.606060 20.826038 59.769120 - C1 9.783127 13.436311 17.658675 - C2 10.498487 12.305336 17.613106 - H11 8.759840 13.459141 17.621725 - H12 10.203015 14.367447 17.734060 - H21 10.078600 11.374200 17.537720 - H22 11.521775 12.282506 17.650055 - C1 9.353180 56.897278 35.092399 - C2 10.070813 57.602344 34.208767 - H11 8.577974 56.282372 34.827916 - H12 9.523068 56.917467 36.102218 - H21 9.900925 57.582154 33.198948 - H22 10.846018 58.217250 34.473251 - C1 8.597927 16.386744 38.202692 - C2 9.843071 16.711715 37.832650 - H11 8.370232 15.546188 38.741788 - H12 7.775353 16.953190 37.975721 - H21 10.665645 16.145269 38.059621 - H22 10.070765 17.552271 37.293554 - C1 71.235390 48.768090 39.194293 - C2 72.148338 47.934918 38.679249 - H11 71.066065 48.868802 40.199375 - H12 70.634651 49.370153 38.623646 - H21 72.749076 47.332856 39.249897 - H22 72.317663 47.834206 37.674167 - C1 1.707082 14.980152 40.607648 - C2 1.193022 13.756774 40.428735 - H11 1.153533 15.839737 40.546815 - H12 2.694236 15.152475 40.819393 - H21 0.205868 13.584452 40.216990 - H22 1.746571 12.897189 40.489568 - C1 41.744490 72.977878 22.255746 - C2 40.597602 73.580207 22.594522 - H11 42.530085 72.855218 22.901345 - H12 41.926284 72.592478 21.324391 - H21 40.415809 73.965607 23.525877 - H22 39.812008 73.702866 21.948923 - C1 4.018437 61.583014 75.997459 - C2 5.213520 61.683915 76.592872 - H11 3.634021 60.700068 75.648698 - H12 3.394812 62.380851 75.843995 - H21 5.837145 60.886078 76.746337 - H22 5.597936 62.566861 76.941633 - C1 77.185779 47.435685 70.227115 - C2 78.134261 47.947743 71.021533 - H11 76.548026 46.688935 70.518044 - H12 77.023496 47.750520 69.266101 - H21 78.296544 47.632908 71.982547 - H22 78.772013 48.694493 70.730603 - C1 67.886928 53.565391 18.883431 - C2 68.250619 54.777472 18.445813 - H11 66.914888 53.298940 19.065493 - H12 68.552197 52.809463 19.070495 - H21 67.585349 55.533400 18.258749 - H22 69.222659 55.043924 18.263751 - C1 36.745375 30.126906 68.613282 - C2 37.959645 30.538107 68.226781 - H11 35.877164 30.598983 68.344286 - H12 36.589359 29.307986 69.208288 - H21 38.115660 31.357027 67.631775 - H22 38.827855 30.066031 68.495777 - C1 30.031294 14.147621 30.810674 - C2 31.011016 13.242710 30.691500 - H11 30.193215 15.158945 30.807616 - H12 29.042987 13.899581 30.914255 - H21 31.999323 13.490750 30.587919 - H22 30.849095 12.231386 30.694558 - C1 16.794125 67.795458 57.969397 - C2 16.222307 67.996273 56.775404 - H11 16.440392 68.201833 58.840452 - H12 17.630181 67.219698 58.105464 - H21 15.386252 68.572034 56.639337 - H22 16.576040 67.589898 55.904350 - C1 66.450388 22.180511 61.877453 - C2 67.181728 23.253402 61.550390 - H11 65.528541 22.238992 62.319925 - H12 66.755357 21.217058 61.710855 - H21 66.876758 24.216855 61.716988 - H22 68.103575 23.194921 61.107918 - C1 3.895195 25.075174 62.467106 - C2 3.219485 26.222662 62.607133 - H11 3.446251 24.175824 62.270582 - H12 4.914095 25.006629 62.545518 - H21 2.200585 26.291207 62.528722 - H22 3.668429 27.122013 62.803657 - C1 50.640164 12.762978 39.560173 - C2 50.888838 14.068377 39.395813 - H11 50.211541 12.371627 40.404051 - H12 50.859034 12.053236 38.854930 - H21 50.669968 14.778119 40.101055 - H22 51.317461 14.459728 38.551934 - C1 55.589764 48.094060 21.756450 - C2 54.634165 47.163254 21.640905 - H11 55.395196 49.096741 21.832468 - H12 56.590371 47.876506 21.777894 - H21 53.633558 47.380808 21.619462 - H22 54.828732 46.160573 21.564887 - C1 57.459520 34.282991 45.843543 - C2 56.846495 33.099790 45.974526 - H11 58.474262 34.386002 45.750311 - H12 56.961859 35.178000 45.826291 - H21 57.344156 32.204782 45.991779 - H22 55.831754 32.996779 46.067758 - C1 10.253400 51.913840 49.969905 - C2 11.199522 51.376845 49.189258 - H11 9.629771 51.359599 50.563965 - H12 10.078985 52.921032 50.034314 - H21 11.373938 50.369654 49.124849 - H22 11.823152 51.931086 48.595198 - C1 3.382905 33.011196 18.270560 - C2 2.236200 32.320097 18.289825 - H11 4.291950 32.603627 18.508316 - H12 3.441095 34.001700 18.016555 - H21 2.178010 31.329593 18.543831 - H22 1.327155 32.727666 18.052069 - C1 11.638102 9.528396 43.030297 - C2 11.889634 10.049488 41.822773 - H11 11.124937 10.025530 43.764139 - H12 11.939101 8.591725 43.314992 - H21 11.588635 10.986158 41.538078 - H22 12.402799 9.552353 41.088932 - C1 44.281259 47.686892 11.628774 - C2 43.874065 47.967718 10.384486 - H11 43.684031 47.241034 12.331293 - H12 45.221952 47.895876 11.975799 - H21 42.933372 47.758734 10.037460 - H22 44.471293 48.413575 9.681967 - C1 25.508582 3.850226 26.739930 - C2 25.751064 3.230802 25.577847 - H11 25.178711 3.365908 27.579944 - H12 25.633923 4.857023 26.880122 - H21 25.625724 2.224005 25.437655 - H22 26.080936 3.715121 24.737832 - C1 78.839274 73.496762 25.790325 - C2 79.016321 72.652886 24.765898 - H11 78.037790 73.452428 26.426455 - H12 79.491421 74.252897 26.018289 - H21 78.364174 71.896751 24.537934 - H22 79.817805 72.697220 24.129768 - C1 59.793133 12.974603 29.277873 - C2 58.655937 12.742922 28.610018 - H11 60.567354 12.305668 29.323833 - H12 59.978127 13.838959 29.795241 - H21 58.470943 11.878566 28.092650 - H22 57.881717 13.411857 28.564057 - C1 63.810243 30.481974 61.953660 - C2 63.837353 31.757129 62.361295 - H11 62.945121 29.970349 61.756666 - H12 64.652499 29.918018 61.806819 - H21 62.995097 32.321085 62.508137 - H22 64.702475 32.268754 62.558289 - C1 66.278987 15.977907 70.856468 - C2 65.249655 16.505776 71.530821 - H11 67.243303 15.985056 71.201498 - H12 66.182902 15.525506 69.942627 - H21 65.345740 16.958177 72.444661 - H22 64.285338 16.498627 71.185790 - C1 44.783442 17.083909 21.393342 - C2 45.177943 15.853094 21.743177 - H11 45.112547 17.564258 20.550752 - H12 44.121580 17.641741 21.940850 - H21 45.839805 15.295262 21.195669 - H22 44.848837 15.372745 22.585767 - C1 5.527036 30.262819 7.175848 - C2 6.553646 30.165252 8.029940 - H11 5.449998 30.998190 6.467118 - H12 4.738139 29.609743 7.164158 - H21 7.342544 30.818327 8.041630 - H22 6.630684 29.429880 8.738670 - C1 11.620715 29.633348 67.431599 - C2 10.575185 28.855358 67.124159 - H11 11.540881 30.635779 67.625924 - H12 12.582444 29.287144 67.496596 - H21 9.613456 29.201561 67.059161 - H22 10.655019 27.852926 66.929834 - C1 31.259990 34.997736 48.465829 - C2 30.166825 35.770005 48.504718 - H11 31.227922 33.974230 48.445546 - H12 32.214131 35.369840 48.453309 - H21 29.212684 35.397902 48.517237 - H22 30.198893 36.793511 48.525000 - C1 75.069988 27.538186 68.426131 - C2 75.965497 26.718829 68.991498 - H11 74.121478 27.248166 68.170745 - H12 75.263145 28.519325 68.204635 - H21 75.772340 25.737690 69.212994 - H22 76.914006 27.008848 69.246884 - C1 1.460434 47.828474 69.217470 - C2 1.750062 49.037641 69.714412 - H11 1.310775 47.648778 68.220316 - H12 1.365795 46.988249 69.795457 - H21 1.844701 49.877866 69.136425 - H22 1.899721 49.217337 70.711565 - C1 30.970161 67.933396 13.612688 - C2 32.129504 68.563539 13.385175 - H11 30.467278 67.400302 12.897200 - H12 30.495147 67.934969 14.520082 - H21 32.604518 68.561965 12.477781 - H22 32.632387 69.096633 14.100664 - C1 7.301989 64.177370 56.561084 - C2 7.861392 64.085861 57.774185 - H11 6.853283 65.028012 56.208841 - H12 7.278844 63.403916 55.890087 - H21 7.884536 64.859315 58.445182 - H22 8.310098 63.235219 58.126428 - C1 16.547675 17.143252 78.402737 - C2 17.659406 17.889022 78.431093 - H11 15.640847 17.467908 78.750968 - H12 16.516770 16.189547 78.030588 - H21 17.690312 18.842727 78.803242 - H22 18.566234 17.564367 78.082862 - C1 37.215973 76.096868 66.794271 - C2 37.228767 76.305839 68.116802 - H11 36.827323 75.254990 66.359305 - H12 37.593832 76.762482 66.113694 - H21 36.850908 75.640225 68.797379 - H22 37.617417 77.147717 68.551768 - C1 33.651436 7.550502 38.099534 - C2 33.290583 8.823148 37.891983 - H11 33.678080 6.843171 37.359279 - H12 33.929168 7.184368 39.014856 - H21 33.012851 9.189282 36.976660 - H22 33.263938 9.530479 38.632237 - C1 61.440229 46.076559 79.999705 - C2 61.697127 44.762434 79.999615 - H11 60.493299 46.466850 79.999735 - H12 62.170467 46.794720 79.999751 - H21 60.966888 44.044273 79.999569 - H22 62.644057 44.372143 79.999584 - C1 21.123083 38.113446 56.826592 - C2 21.442727 36.818106 56.939918 - H11 20.956757 38.577615 55.928880 - H12 21.019791 38.741885 57.628714 - H21 21.546019 36.189668 56.137796 - H22 21.609053 36.353938 57.837630 - C1 10.836828 5.388075 17.438268 - C2 11.023542 6.711205 17.524213 - H11 9.912259 4.950352 17.387532 - H12 11.603905 4.709752 17.416511 - H21 10.256465 7.389529 17.545970 - H22 11.948111 7.148929 17.574949 - C1 73.674495 27.881726 23.301971 - C2 73.411565 26.609048 22.979359 - H11 74.615930 28.229630 23.506099 - H12 72.954841 28.607314 23.369963 - H21 74.131219 25.883459 22.911367 - H22 72.470130 26.261144 22.775231 - C1 64.554761 53.384535 30.416963 - C2 63.427075 52.970025 29.825840 - H11 64.574942 54.073558 31.174489 - H12 65.485772 53.045149 30.158045 - H21 62.496064 53.309412 30.084759 - H22 63.406893 52.281003 29.068315 - C1 8.789058 56.838742 18.849630 - C2 10.071176 56.907104 18.469603 - H11 8.079493 56.296660 18.347963 - H12 8.417167 57.323160 19.671847 - H21 10.443066 56.422686 17.647387 - H22 10.780740 57.449186 18.971270 - C1 18.936105 21.700420 39.050863 - C2 18.449272 20.559983 39.556152 - H11 18.428477 22.589718 39.072440 - H12 19.854373 21.773070 38.603079 - H21 17.531005 20.487333 40.003936 - H22 18.956901 19.670684 39.534575 - C1 75.369273 27.303807 47.018527 - C2 76.481183 28.036478 47.159135 - H11 75.349972 26.283752 47.108628 - H12 74.450688 27.705862 46.809824 - H21 77.399768 27.634423 47.367838 - H22 76.500484 29.056533 47.069034 - C1 76.424442 67.348977 53.571538 - C2 76.903514 68.583509 53.373189 - H11 76.559536 66.823631 54.440310 - H12 75.885255 66.833007 52.870071 - H21 77.442701 69.099479 54.074656 - H22 76.768420 69.108854 52.504417 - C1 12.410429 17.367652 65.229367 - C2 11.490397 16.412748 65.415428 - H11 13.416784 17.181826 65.187863 - H12 12.180114 18.358930 65.113930 - H21 11.720712 15.421469 65.530865 - H22 10.484042 16.598573 65.456932 - C1 40.437803 28.197151 43.088515 - C2 39.504808 27.281927 43.379728 - H11 40.280512 29.206638 43.160624 - H12 41.382067 27.959648 42.770771 - H21 38.560544 27.519431 43.697473 - H22 39.662098 26.272440 43.307619 - C1 50.583752 9.384702 57.537620 - C2 49.909086 10.319485 58.218742 - H11 51.374615 9.595276 56.921830 - H12 50.361963 8.385647 57.578890 - H21 50.130874 11.318540 58.177472 - H22 49.118222 10.108911 58.834533 - C1 35.297249 27.058100 24.425475 - C2 35.379700 27.628456 23.216832 - H11 35.615339 27.511759 25.286879 - H12 34.909612 26.123352 24.583550 - H21 35.767337 28.563203 23.058757 - H22 35.061609 27.174797 22.355428 - C1 9.057954 59.812220 30.878483 - C2 9.952214 60.805169 30.963763 - H11 8.214943 59.760162 31.457815 - H12 9.146665 59.026735 30.227216 - H21 9.863503 61.590653 31.615030 - H22 10.795225 60.857227 30.384430 - C1 64.264910 45.131375 37.444382 - C2 62.940588 45.313512 37.521311 - H11 64.788392 45.157701 36.564452 - H12 64.858481 44.951418 38.259424 - H21 62.347017 45.493469 36.706269 - H22 62.417106 45.287186 38.401241 - C1 73.238788 71.098449 75.867721 - C2 73.942590 70.051949 75.417808 - H11 72.542555 71.031123 76.615873 - H12 73.341370 72.048488 75.499067 - H21 73.840007 69.101910 75.786462 - H22 74.638822 70.119276 74.669656 - C1 22.247762 21.166930 39.876861 - C2 22.365440 19.846903 39.685542 - H11 23.005353 21.832992 39.699601 - H12 21.390912 21.614297 40.215497 - H21 23.222290 19.399536 39.346906 - H22 21.607849 19.180840 39.862801 - C1 70.412368 22.135464 62.932053 - C2 70.890249 23.384374 62.862939 - H11 69.455954 21.912045 63.222497 - H12 70.965696 21.305440 62.699905 - H21 70.336921 24.214398 63.095087 - H22 71.846663 23.607793 62.572495 - C1 33.850059 52.236067 2.683994 - C2 34.994545 51.657842 3.069647 - H11 33.662953 53.238330 2.781278 - H12 33.071802 51.721531 2.261416 - H21 35.772803 52.172378 3.492225 - H22 35.181651 50.655579 2.972363 - C1 69.400443 28.996292 46.933132 - C2 70.269746 28.195635 46.303701 - H11 69.437272 29.190691 47.938048 - H12 68.630366 29.477240 46.459134 - H21 71.039823 27.714687 46.777698 - H22 70.232917 28.001237 45.298785 - C1 43.138653 26.844237 52.190202 - C2 42.734952 28.083276 52.497983 - H11 44.094740 26.508484 52.339101 - H12 42.523083 26.134872 51.781693 - H21 43.350522 28.792640 52.906492 - H22 41.778865 28.419029 52.349084 - C1 9.371917 24.191934 26.600410 - C2 8.199979 24.838715 26.566407 - H11 10.203331 24.554326 27.076253 - H12 9.529023 23.283987 26.153247 - H21 8.042874 25.746661 27.013570 - H22 7.368566 24.476322 26.090564 - C1 56.252599 47.983714 14.967848 - C2 55.033838 48.505648 14.780427 - H11 56.414104 47.059999 15.379759 - H12 57.119107 48.467182 14.714025 - H21 54.167329 48.022180 15.034250 - H22 54.872332 49.429363 14.368515 - C1 6.405554 9.071805 3.998137 - C2 6.584095 10.361011 4.312768 - H11 5.609761 8.515809 4.324612 - H12 7.050749 8.540368 3.406273 - H21 5.938901 10.892447 4.904631 - H22 7.379888 10.917007 3.986292 - C1 44.591321 55.923366 30.973432 - C2 45.409231 55.922173 32.033594 - H11 44.523278 56.703713 30.313559 - H12 43.969464 55.144026 30.739069 - H21 46.031088 56.701514 32.267957 - H22 45.477274 55.141826 32.693467 - C1 76.641808 15.453264 32.115717 - C2 76.056652 16.076640 31.085224 - H11 76.202758 15.347819 33.035021 - H12 77.574431 15.032897 32.065623 - H21 75.124029 16.497007 31.135317 - H22 76.495702 16.182086 30.165920 - C1 44.854407 48.087508 67.454874 - C2 45.138988 48.124530 68.762759 - H11 44.661593 47.221478 66.943191 - H12 44.807178 48.922309 66.863368 - H21 45.186217 47.289728 69.354265 - H22 45.331802 48.990560 69.274442 - C1 77.250316 67.186794 67.413320 - C2 78.586798 67.119350 67.460103 - H11 76.723174 68.052908 67.558137 - H12 76.650149 66.377570 67.229042 - H21 79.186965 67.928575 67.644381 - H22 79.113941 66.253237 67.315286 - C1 11.305480 57.840073 6.683451 - C2 10.293221 58.704251 6.829908 - H11 11.180559 56.870543 6.377820 - H12 12.284232 58.080677 6.865546 - H21 9.314469 58.463647 6.647813 - H22 10.418142 59.673782 7.135538 - C1 53.147911 33.946128 20.473520 - C2 53.781973 32.776552 20.625103 - H11 53.633074 34.840080 20.353229 - H12 52.127922 34.038703 20.465954 - H21 54.801961 32.683977 20.632669 - H22 53.296810 31.882600 20.745395 - C1 41.221917 18.463562 42.126773 - C2 40.023606 17.866511 42.104390 - H11 41.603800 18.932602 42.953315 - H12 41.850799 18.498129 41.319112 - H21 39.394724 17.831944 42.912051 - H22 39.641724 17.397470 41.277848 - C1 15.049006 19.804583 4.553996 - C2 13.916935 19.104330 4.409144 - H11 15.977696 19.426063 4.346003 - H12 15.075206 20.773759 4.884169 - H21 13.890734 18.135153 4.078971 - H22 12.988244 19.482849 4.617137 - C1 2.678233 4.847308 75.450133 - C2 3.163721 6.093888 75.507243 - H11 3.264051 4.019010 75.309618 - H12 1.682911 4.624127 75.542477 - H21 4.159044 6.317068 75.414899 - H22 2.577904 6.922185 75.647758 - C1 26.082691 13.207121 9.320124 - C2 25.664876 13.454230 10.568038 - H11 26.981834 12.767721 9.102240 - H12 25.535971 13.438087 8.485405 - H21 26.211595 13.223264 11.402757 - H22 24.765733 13.893630 10.785922 - C1 69.058305 37.559153 48.629076 - C2 69.529485 37.427825 49.875536 - H11 68.516570 38.368666 48.312508 - H12 69.202605 36.860414 47.894267 - H21 69.385186 38.126564 50.610346 - H22 70.071221 36.618312 50.192104 - C1 39.441732 20.516334 74.913757 - C2 38.578963 21.516963 75.131225 - H11 39.296475 19.788890 74.207549 - H12 40.314727 20.399758 75.436532 - H21 37.705968 21.633540 74.608450 - H22 38.724220 22.244408 75.837432 - C1 14.076256 21.943959 52.317428 - C2 14.311861 23.241027 52.082849 - H11 14.817891 21.246362 52.428510 - H12 13.135891 21.547492 52.404210 - H21 15.252226 23.637494 51.996067 - H22 13.570226 23.938624 51.971766 - C1 25.152465 75.379446 8.076092 - C2 25.496207 76.657215 7.870986 - H11 24.390470 75.092381 8.697350 - H12 25.624516 74.588725 7.627839 - H21 25.024156 77.447937 8.319239 - H22 26.258202 76.944280 7.249727 - C1 69.096057 47.203382 63.043033 - C2 68.550228 48.418846 63.175845 - H11 70.016536 47.040358 62.624531 - H12 68.635979 46.341173 63.349511 - H21 69.010305 49.281054 62.869368 - H22 67.629748 48.581869 63.594348 - C1 19.846404 11.112015 38.962290 - C2 18.941512 11.923967 39.523383 - H11 20.721381 11.443653 38.545834 - H12 19.734696 10.095503 38.905470 - H21 19.053220 12.940478 39.580203 - H22 18.066535 11.592328 39.939840 - C1 71.779430 50.619109 27.112542 - C2 71.313631 51.227762 28.210492 - H11 72.761461 50.650069 26.823302 - H12 71.190295 50.074756 26.475671 - H21 71.902766 51.772114 28.847363 - H22 70.331600 51.196802 28.499732 - C1 51.234197 44.175339 4.418909 - C2 50.654836 42.968168 4.417656 - H11 50.781523 45.019356 4.055969 - H12 52.175556 44.349559 4.782906 - H21 49.713477 42.793948 4.053659 - H22 51.107510 42.124151 4.780596 - C1 59.425535 59.209178 72.774669 - C2 60.386701 60.058229 73.159626 - H11 59.567298 58.475855 72.073852 - H12 58.473038 59.226333 73.150779 - H21 61.339199 60.041074 72.783516 - H22 60.244939 60.791552 73.860443 - C1 21.201455 45.984120 3.833683 - C2 21.768610 45.217292 4.773486 - H11 21.247409 47.007295 3.836215 - H12 20.677112 45.607759 3.038434 - H21 22.292954 45.593653 5.568734 - H22 21.722656 44.194117 4.770953 - C1 71.347161 16.172929 71.608677 - C2 70.757106 17.338752 71.901272 - H11 71.919149 16.023745 70.772270 - H12 71.272880 15.338753 72.198284 - H21 70.831387 18.172929 71.311666 - H22 70.185118 17.487937 72.737680 - C1 66.803701 25.059812 16.771155 - C2 67.659235 24.091586 16.419700 - H11 66.706821 25.407214 17.729764 - H12 66.178946 25.529099 16.108997 - H21 68.283991 23.622299 17.081859 - H22 67.756116 23.744184 15.461092 - C1 52.410731 53.828681 18.549761 - C2 51.250894 54.412421 18.876788 - H11 53.160320 54.307276 18.041758 - H12 52.639454 52.857707 18.781921 - H21 51.022171 55.383396 18.644628 - H22 50.501305 53.933826 19.384791 - C1 20.415926 1.753005 35.659257 - C2 20.326729 3.077324 35.482784 - H11 21.077990 1.312645 36.304825 - H12 19.829098 1.076313 35.162543 - H21 20.913557 3.754016 35.979498 - H22 19.664665 3.517684 34.837216 - C1 53.466980 6.897163 51.324757 - C2 52.371105 7.416610 51.892342 - H11 53.756575 7.102235 50.363985 - H12 54.101745 6.253942 51.806777 - H21 51.736339 8.059832 51.410322 - H22 52.081510 7.211538 52.853115 - C1 52.841150 53.083877 77.962746 - C2 52.396161 53.647787 76.832742 - H11 52.254272 52.513038 78.578149 - H12 53.803373 53.179062 78.300491 - H21 51.433939 53.552602 76.494997 - H22 52.983039 54.218626 76.217339 - C1 53.316800 11.023429 26.366364 - C2 52.172753 10.342906 26.511160 - H11 54.063307 11.028793 27.067579 - H12 53.535287 11.592080 25.543015 - H21 51.954267 9.774255 27.334509 - H22 51.426246 10.337543 25.809945 - C1 24.813871 46.517123 14.878580 - C2 24.997766 47.641938 14.175804 - H11 24.085025 45.830180 14.664345 - H12 25.387603 46.255295 15.685600 - H21 24.424034 47.903766 13.368784 - H22 25.726612 48.328881 14.390039 - C1 25.839647 21.006956 34.980616 - C2 24.624435 21.405017 34.583465 - H11 26.368429 21.466850 35.727537 - H12 26.335886 20.211302 34.568687 - H21 24.128197 22.200671 34.995394 - H22 24.095654 20.945123 33.836544 - C1 44.810867 65.135598 60.654525 - C2 44.261505 64.081764 60.037633 - H11 44.412086 66.078511 60.624628 - H12 45.673029 65.081585 61.204763 - H21 43.399342 64.135777 59.487395 - H22 44.660285 63.138851 60.067530 - C1 48.627419 75.441731 61.676719 - C2 48.647333 75.619302 63.003743 - H11 49.007758 74.611910 61.212238 - H12 48.230282 76.121772 61.021868 - H21 49.044469 74.939261 63.658594 - H22 48.266994 76.449124 63.468224 - C1 53.932548 78.328880 37.026815 - C2 53.235252 77.329467 36.471953 - H11 54.423910 79.044460 36.483204 - H12 54.029350 78.456296 38.038446 - H21 53.138450 77.202051 35.460321 - H22 52.743891 76.613886 37.015563 - C1 58.483209 10.012566 66.994304 - C2 59.355862 11.028138 66.997204 - H11 58.680633 9.097179 67.409147 - H12 57.549709 10.071326 66.577016 - H21 60.289362 10.969378 67.414493 - H22 59.158438 11.943525 66.582362 - C1 33.875292 68.840401 51.909276 - C2 33.571639 70.057678 52.377201 - H11 34.273984 68.675759 50.980329 - H12 33.732728 67.978282 52.443532 - H21 33.714203 70.919797 51.842944 - H22 33.172947 70.222320 53.306147 - C1 35.108078 26.707981 41.706346 - C2 35.964916 26.280446 40.770416 - H11 34.218389 26.243996 41.911710 - H12 35.275033 27.532588 42.290430 - H21 35.797961 25.455839 40.186333 - H22 36.854605 26.744431 40.565052 - C1 65.955878 38.200065 40.425569 - C2 67.181014 38.442218 39.942533 - H11 65.583870 37.257572 40.574975 - H12 65.294495 38.938303 40.683600 - H21 67.842397 37.703979 39.684501 - H22 67.553022 39.384710 39.793127 - C1 7.721215 48.346957 24.341598 - C2 7.721048 48.031431 25.642891 - H11 7.641112 47.653298 23.592315 - H12 7.801458 49.306759 23.993252 - H21 7.640804 47.071629 25.991237 - H22 7.801150 48.725089 26.392174 - C1 76.825636 3.768012 10.154756 - C2 76.733963 3.341863 8.888693 - H11 76.256197 4.528571 10.537238 - H12 77.472401 3.366906 10.840185 - H21 76.087198 3.742969 8.203264 - H22 77.303402 2.581305 8.506210 - C1 58.831395 16.139398 79.840870 - C2 57.907427 17.105981 79.770721 - H11 58.610329 15.141267 79.778680 - H12 59.831820 16.322225 79.962231 - H21 56.907002 16.923153 79.649360 - H22 58.128492 18.104112 79.832912 - C1 27.471354 47.411917 18.151065 - C2 27.863368 46.262322 17.587437 - H11 27.961151 47.852101 18.935502 - H12 26.650897 47.941407 17.842043 - H21 28.683825 45.732832 17.896460 - H22 27.373572 45.822139 16.803000 - C1 14.201206 62.196489 44.530265 - C2 14.549076 60.979885 44.092335 - H11 14.185664 63.028504 43.933177 - H12 13.923321 62.390668 45.496742 - H21 14.826961 60.785706 43.125858 - H22 14.564618 60.147871 44.689423 - C1 79.109277 4.991419 72.008102 - C2 79.139615 3.659639 72.143607 - H11 78.250282 5.545850 72.069239 - H12 79.942682 5.560332 71.832667 - H21 78.306209 3.090725 72.319041 - H22 79.998609 3.105207 72.082470 - C1 36.393031 47.637687 38.121197 - C2 37.584979 47.028587 38.086881 - H11 36.279150 48.655440 38.135819 - H12 35.501515 47.133705 38.135521 - H21 38.476495 47.532569 38.072558 - H22 37.698860 46.010834 38.072260 - C1 64.430459 76.444430 19.432523 - C2 64.107608 75.145255 19.461362 - H11 63.954000 77.131736 18.841253 - H12 65.179241 76.852967 19.999469 - H21 63.358826 74.736718 18.894416 - H22 64.584068 74.457949 20.052632 - C1 8.109829 46.728631 74.226061 - C2 9.024451 47.010616 75.162475 - H11 7.101106 46.825722 74.374570 - H12 8.347077 46.393689 73.287695 - H21 8.787203 47.345559 76.100841 - H22 10.033174 46.913525 75.013966 - C1 5.251457 10.167018 66.745110 - C2 6.205026 11.086091 66.942418 - H11 5.323201 9.419322 66.048829 - H12 4.375385 10.139485 67.274963 - H21 7.081098 11.113624 66.412565 - H22 6.133282 11.833787 67.638699 - C1 58.961013 67.925860 73.391649 - C2 59.196756 69.028448 72.669399 - H11 58.030632 67.657701 73.725544 - H12 59.692546 67.263995 73.666964 - H21 58.465223 69.690312 72.394083 - H22 60.127137 69.296606 72.335503 - C1 11.660268 21.579002 26.850165 - C2 10.694178 21.051223 26.087905 - H11 11.483867 22.034264 27.750512 - H12 12.651557 21.568917 26.592778 - H21 9.702889 21.061308 26.345292 - H22 10.870579 20.595962 25.187559 - C1 3.261537 55.688316 48.796004 - C2 2.211535 55.623598 49.624393 - H11 4.167049 56.086157 49.062039 - H12 3.241692 55.345064 47.831230 - H21 2.231380 55.966849 50.589166 - H22 1.306023 55.225756 49.358358 - C1 69.187746 26.714662 49.633963 - C2 69.333086 26.442007 50.936827 - H11 68.450437 26.308146 49.050760 - H12 69.802462 27.351158 49.118210 - H21 68.718371 25.805510 51.452580 - H22 70.070395 26.848523 51.520030 - C1 10.087520 4.018829 78.972791 - C2 11.195941 4.298369 78.275524 - H11 9.200071 3.749144 78.538383 - H12 10.040025 4.052723 79.995336 - H21 11.243435 4.264475 77.252978 - H22 12.083389 4.568054 78.709931 - C1 22.539728 37.151571 69.830063 - C2 23.710179 37.738425 70.110362 - H11 22.365074 36.150465 69.957681 - H12 21.727117 37.657671 69.466016 - H21 24.522790 37.232325 70.474408 - H22 23.884833 38.739531 69.982744 - C1 42.005348 60.890595 72.797418 - C2 41.797473 62.152430 73.194256 - H11 42.900196 60.404443 72.906540 - H12 41.285841 60.312400 72.353567 - H21 42.516980 62.730625 73.638107 - H22 40.902625 62.638582 73.085134 - C1 78.255581 9.087120 16.579173 - C2 79.197062 9.734911 15.881390 - H11 78.264068 9.007361 17.600236 - H12 77.452962 8.620472 16.146682 - H21 79.999680 10.201558 16.313880 - H22 79.188575 9.814669 14.860327 - C1 47.450949 76.950313 40.335860 - C2 48.117631 77.334701 41.431626 - H11 46.548604 76.466620 40.364467 - H12 47.790954 77.109778 39.382985 - H21 47.777625 77.175235 42.384501 - H22 49.019976 77.818393 41.403019 - C1 11.357775 28.078884 48.483967 - C2 11.717495 29.367752 48.435566 - H11 11.882453 27.328528 48.024965 - H12 10.529676 27.742092 48.983794 - H21 12.545593 29.704544 47.935738 - H22 11.192817 30.118108 48.894567 - C1 53.030726 48.579392 11.573937 - C2 54.321857 48.918752 11.677541 - H11 52.691995 47.616005 11.652366 - H12 52.280399 49.256531 11.408118 - H21 55.072184 48.241613 11.843359 - H22 54.660588 49.882139 11.599112 - C1 23.383953 44.561409 75.508922 - C2 22.209052 44.082628 75.937054 - H11 23.472534 45.386234 74.908237 - H12 24.286391 44.140432 75.748480 - H21 21.306615 44.503605 75.697495 - H22 22.120472 43.257803 76.537738 - C1 11.494731 71.770393 79.094278 - C2 10.562116 72.034492 78.170480 - H11 11.286638 71.338800 79.999501 - H12 12.489475 71.979220 78.968271 - H21 9.567372 71.825665 78.296488 - H22 10.770210 72.466085 77.265257 - C1 74.147987 2.907457 78.347808 - C2 74.305758 4.118684 78.896404 - H11 73.940067 2.759511 77.355899 - H12 74.222828 2.033742 78.876983 - H21 74.230917 4.992398 78.367228 - H22 74.513678 4.266629 79.888313 - C1 47.871855 66.645273 63.122520 - C2 47.720366 65.318617 63.222298 - H11 48.520413 67.091933 62.467637 - H12 47.351076 67.317636 63.693241 - H21 48.241144 64.646255 62.651577 - H22 47.071808 64.871958 63.877181 - C1 12.044269 33.199876 42.599682 - C2 13.008082 34.120721 42.473066 - H11 11.195487 33.188308 42.026587 - H12 12.080085 32.434720 43.279577 - H21 12.972266 34.885877 41.793171 - H22 13.856864 34.132289 43.046162 - C1 69.830719 47.066950 27.107242 - C2 70.952631 46.336037 27.107285 - H11 68.891139 46.659282 27.107490 - H12 69.823976 48.091137 27.106958 - H21 70.959374 45.311850 27.107569 - H22 71.892211 46.743705 27.107037 - C1 22.790805 43.730680 13.517183 - C2 23.992074 43.240318 13.847967 - H11 21.967944 43.144181 13.350079 - H12 22.600405 44.730794 13.405274 - H21 24.182473 42.240204 13.959876 - H22 24.814934 43.826817 14.015071 - C1 61.371741 47.680421 30.864597 - C2 62.180223 48.228252 29.948541 - H11 61.476963 47.829978 31.872349 - H12 60.584572 47.068774 30.629530 - H21 62.967391 48.839900 30.183608 - H22 62.075001 48.078696 28.940788 - C1 33.540035 53.582911 47.957578 - C2 32.270494 53.245526 48.217114 - H11 34.246515 52.916127 47.633096 - H12 33.904400 54.534277 48.063143 - H21 31.906128 52.294159 48.111548 - H22 31.564014 53.912310 48.541595 - C1 68.532152 34.613663 68.401509 - C2 69.099583 34.632586 69.614186 - H11 67.521730 34.684311 68.249656 - H12 69.063952 34.527053 67.530480 - H21 68.567783 34.719196 70.485215 - H22 70.110005 34.561938 69.766039 - C1 23.144721 39.554212 3.423010 - C2 22.821392 38.778959 4.465777 - H11 22.759811 40.491824 3.275592 - H12 23.802356 39.270519 2.690864 - H21 22.163756 39.062652 5.197923 - H22 23.206302 37.841347 4.613195 - C1 11.592322 47.034534 71.965141 - C2 12.832327 46.529416 71.952276 - H11 11.391758 48.038192 72.003191 - H12 10.746954 46.456938 71.937943 - H21 13.677695 47.107012 71.979474 - H22 13.032891 45.525757 71.914226 - C1 52.731816 1.022167 11.605000 - C2 53.252794 1.061985 12.837850 - H11 51.840964 1.460757 11.353952 - H12 53.183228 0.549992 10.816152 - H21 52.801382 1.534160 13.626698 - H22 54.143646 0.623395 13.088899 - C1 15.643401 26.821603 26.562802 - C2 16.359566 27.936401 26.369792 - H11 15.073866 26.382891 25.833306 - H12 15.608858 26.319992 27.455101 - H21 16.394110 28.438012 25.477493 - H22 16.929102 28.375113 27.099289 - C1 42.917042 3.158656 23.177056 - C2 43.947281 3.837983 23.696715 - H11 42.067441 2.932220 23.702324 - H12 42.897648 2.812086 22.213460 - H21 43.966675 4.184552 24.660310 - H22 44.796883 4.064419 23.171446 - C1 29.424863 51.836411 31.788657 - C2 28.551841 52.725742 31.298919 - H11 30.439554 51.921499 31.678355 - H12 29.146558 51.001179 32.312049 - H21 28.830146 53.560973 30.775527 - H22 27.537150 52.640653 31.409221 - C1 29.834883 30.213871 56.138453 - C2 30.700559 31.140381 56.568691 - H11 29.196585 29.706364 56.758142 - H12 29.742992 29.939876 55.155861 - H21 30.792451 31.414376 57.551283 - H22 31.338858 31.647888 55.949002 - C1 60.051494 20.328770 46.041796 - C2 60.504344 21.517375 45.623388 - H11 59.059286 20.075060 46.054400 - H12 60.661726 19.579902 46.382115 - H21 59.894111 22.266243 45.283069 - H22 61.496552 21.771085 45.610785 - C1 65.042980 14.696591 39.215770 - C2 65.849966 13.632567 39.118059 - H11 65.377890 15.664024 39.185591 - H12 64.027384 14.626651 39.328368 - H21 66.865561 13.702506 39.005461 - H22 65.515056 12.665133 39.148238 - C1 72.898743 32.370725 51.117790 - C2 72.011497 33.373373 51.138118 - H11 73.426184 32.066601 51.941390 - H12 73.119684 31.829124 50.277042 - H21 71.790555 33.914974 51.978866 - H22 71.484056 33.677497 50.314517 - C1 38.676420 23.616101 79.010592 - C2 37.686690 24.447420 78.660927 - H11 38.531184 22.765962 79.563018 - H12 39.656483 23.765031 78.753106 - H21 36.706627 24.298490 78.918414 - H22 37.831926 25.297559 78.108501 - C1 76.784621 22.546437 76.362521 - C2 75.914633 22.871868 77.326957 - H11 77.686887 22.097024 76.544034 - H12 76.616181 22.721351 75.367515 - H21 76.083073 22.696954 78.321963 - H22 75.012366 23.321281 77.145444 - C1 59.612771 60.400201 18.178779 - C2 59.511633 60.111336 16.875227 - H11 60.461266 60.779726 18.608919 - H12 58.849584 60.264332 18.848174 - H21 60.274820 60.247206 16.205832 - H22 58.663138 59.731812 16.445087 - C1 19.556225 57.911765 4.926784 - C2 20.855809 57.596178 4.860399 - H11 19.202451 58.753250 5.391274 - H12 18.813812 57.336474 4.518291 - H21 21.598223 58.171468 5.268893 - H22 21.209583 56.754692 4.395910 - C1 53.206730 4.029818 79.993532 - C2 54.092264 3.025455 79.991000 - H11 52.192360 3.888317 79.999417 - H12 53.474161 5.018489 79.989782 - H21 53.824833 2.036784 79.994750 - H22 55.106634 3.166956 79.985114 - C1 12.453773 43.929505 14.298851 - C2 13.135418 45.081991 14.306446 - H11 11.915271 43.586618 15.099755 - H12 12.417315 43.300280 13.491540 - H21 13.171877 45.711215 15.113757 - H22 13.673921 45.424877 13.505542 - C1 20.258766 72.296914 30.444186 - C2 19.211790 73.073018 30.136898 - H11 20.218121 71.273618 30.458915 - H12 21.182525 72.665574 30.688651 - H21 18.288031 72.704358 29.892433 - H22 19.252435 74.096314 30.122168 - C1 29.383459 51.368607 47.354336 - C2 30.189911 50.339151 47.066628 - H11 28.362245 51.295395 47.382021 - H12 29.724438 52.310157 47.569330 - H21 29.848932 49.397602 46.851634 - H22 31.211124 50.412364 47.038943 - C1 28.680907 44.261107 50.844921 - C2 27.546943 44.667783 50.260402 - H11 28.704909 43.658179 51.672511 - H12 29.613392 44.521008 50.510366 - H21 26.614458 44.407883 50.594957 - H22 27.522941 45.270711 49.432812 - C1 30.133058 63.480995 49.320146 - C2 29.465459 62.354297 49.041246 - H11 31.154272 63.554002 49.291956 - H12 29.674957 64.358347 49.583586 - H21 29.923560 61.476945 48.777806 - H22 28.444244 62.281291 49.069437 - C1 61.104479 33.813781 51.044596 - C2 62.357499 33.859071 50.574689 - H11 60.334580 34.364799 50.653907 - H12 60.817468 33.224561 51.831646 - H21 62.644510 34.448291 49.787639 - H22 63.127398 33.308052 50.965378 - C1 38.481931 76.787305 5.237906 - C2 39.428184 77.363813 5.989681 - H11 37.493792 77.054705 5.270781 - H12 38.671916 76.033625 4.570916 - H21 39.238199 78.117493 6.656672 - H22 40.416323 77.096412 5.956806 - C1 62.765482 53.509820 24.807514 - C2 61.505618 53.554834 25.258776 - H11 63.116679 54.106581 24.052834 - H12 63.476968 52.875090 25.181557 - H21 60.794131 54.189564 24.884733 - H22 61.154421 52.958073 26.013455 - C1 46.370674 34.639224 54.008500 - C2 47.280773 35.618071 53.927881 - H11 46.613550 33.646822 54.080282 - H12 45.360138 34.805978 54.004720 - H21 48.291309 35.451317 53.931660 - H22 47.037898 36.610473 53.856099 - C1 50.743964 65.674373 49.786373 - C2 51.230684 65.079621 50.882865 - H11 51.334651 66.081774 49.055540 - H12 49.742733 65.768639 49.592324 - H21 52.231914 64.985355 51.076914 - H22 50.639996 64.672219 51.613698 - C1 65.576669 4.454953 52.132320 - C2 66.046233 3.409814 52.825223 - H11 65.658967 5.425454 52.449115 - H12 65.098299 4.366018 51.231067 - H21 66.524603 3.498749 53.726475 - H22 65.963935 2.439313 52.508427 - C1 42.517313 16.284902 7.835677 - C2 43.329486 15.694647 6.949734 - H11 42.486799 16.034175 8.828253 - H12 41.862766 17.033503 7.590384 - H21 43.984033 14.946045 7.195026 - H22 43.360000 15.945373 5.957157 - C1 61.644317 63.928104 68.812135 - C2 62.282971 64.805212 69.596816 - H11 62.099259 63.415847 68.050804 - H12 60.650677 63.700529 68.911594 - H21 63.276612 65.032787 69.497356 - H22 61.828030 65.317469 70.358146 - C1 28.402321 10.742188 54.308206 - C2 29.457171 10.046305 54.750879 - H11 27.478909 10.328356 54.149911 - H12 28.435977 11.742990 54.093111 - H21 29.423515 9.045503 54.965974 - H22 30.380583 10.460136 54.909174 - C1 7.931366 21.948575 8.170481 - C2 6.731636 22.534625 8.069923 - H11 8.212072 21.137151 7.612091 - H12 8.662623 22.265671 8.813690 - H21 6.000380 22.217529 7.426713 - H22 6.450930 23.346049 8.628312 - C1 54.945603 43.832113 39.564432 - C2 54.186228 44.865655 39.949218 - H11 54.987623 43.490507 38.599785 - H12 55.544110 43.301936 40.204515 - H21 53.587721 45.395831 39.309135 - H22 54.144208 45.207261 40.913865 - C1 9.201392 27.349639 41.619564 - C2 8.502956 28.484940 41.746847 - H11 10.070496 27.161304 42.127690 - H12 8.921413 26.580360 41.004076 - H21 8.782935 29.254219 42.362335 - H22 7.633852 28.673276 41.238721 - C1 9.667388 74.792017 55.236384 - C2 10.590705 74.971081 54.283313 - H11 8.845069 74.192547 55.120498 - H12 9.710899 75.240450 56.156177 - H21 10.547194 74.522648 53.363521 - H22 11.413024 75.570551 54.399200 - C1 2.973650 24.199255 6.700574 - C2 3.053531 25.521365 6.504199 - H11 3.222643 23.743392 7.583295 - H12 2.657278 23.539930 5.983495 - H21 3.369903 26.180691 7.221278 - H22 2.804538 25.977228 5.621478 - C1 23.008677 20.101769 3.036375 - C2 22.226672 19.709550 2.022692 - H11 24.010035 19.893519 3.090405 - H12 22.666934 20.640852 3.837378 - H21 22.568416 19.170468 1.221689 - H22 21.225315 19.917800 1.968662 - C1 57.160491 1.527237 28.957037 - C2 56.308111 2.559866 28.950331 - H11 58.178912 1.635566 28.947668 - H12 56.861046 0.547895 28.972061 - H21 56.607556 3.539208 28.935307 - H22 55.289690 2.451537 28.959700 - C1 1.554785 6.448617 23.851405 - C2 1.030315 7.464796 24.547990 - H11 1.023170 5.616444 23.579601 - H12 2.528785 6.423652 23.535646 - H21 0.056314 7.489761 24.863749 - H22 1.561930 8.296969 24.819795 - C1 44.927957 74.712104 12.420648 - C2 46.104144 74.101024 12.610609 - H11 44.666441 75.173833 11.544623 - H12 44.197370 74.765816 13.136442 - H21 46.834731 74.047312 11.894815 - H22 46.365660 73.639295 13.486634 - C1 77.510481 50.544758 16.966785 - C2 78.199558 50.052220 18.003848 - H11 77.669795 51.477469 16.574774 - H12 76.769937 50.027498 16.484043 - H21 78.940103 50.569480 18.486590 - H22 78.040245 49.119509 18.395859 - C1 57.704710 60.269135 30.975365 - C2 56.631345 61.069519 30.989332 - H11 57.647761 59.247314 31.015901 - H12 58.667031 60.615839 30.923048 - H21 55.669024 60.722814 31.041649 - H22 56.688294 62.091339 30.948796 - C1 14.824732 38.731175 31.630336 - C2 15.334636 37.554487 31.245206 - H11 13.826868 38.956994 31.582621 - H12 15.392497 39.497882 32.002905 - H21 14.766870 36.787781 30.872638 - H22 16.332500 37.328668 31.292922 - C1 71.791270 79.332234 32.988593 - C2 73.037821 78.907256 32.746885 - H11 71.022338 79.237053 32.318751 - H12 71.508746 79.785881 33.862315 - H21 73.320345 78.453610 31.873163 - H22 73.806753 79.002437 33.416727 - C1 61.316794 46.035221 48.274950 - C2 60.609896 47.163018 48.420862 - H11 61.281374 45.451317 47.434233 - H12 61.948476 45.667838 48.992593 - H21 59.978214 47.530401 47.703219 - H22 60.645317 47.746921 49.261579 - C1 29.952529 54.169249 37.213378 - C2 29.529903 55.439615 37.235248 - H11 29.320263 53.363535 37.221769 - H12 30.941275 53.903420 37.186541 - H21 28.541157 55.705444 37.262085 - H22 30.162168 56.245328 37.226857 - C1 66.752639 63.996761 7.493520 - C2 67.894748 63.794697 6.824432 - H11 66.414514 63.375353 8.234146 - H12 66.127406 64.788608 7.317264 - H21 68.519980 63.002850 7.000688 - H22 68.232873 64.416106 6.083806 - C1 28.760053 71.036813 56.726618 - C2 30.009857 70.871570 56.275392 - H11 27.926313 70.834937 56.167040 - H12 28.539594 71.378070 57.666802 - H21 30.230316 70.530313 55.335208 - H22 30.843597 71.073446 56.834971 - C1 33.267786 51.524917 59.153885 - C2 33.476145 50.897178 57.989646 - H11 32.522726 52.212478 59.299308 - H12 33.837098 51.366848 59.990486 - H21 32.906833 51.055248 57.153045 - H22 34.221206 50.209617 57.844223 - C1 26.712544 51.830014 24.896709 - C2 27.123966 50.579595 25.141871 - H11 27.241451 52.662747 25.172056 - H12 25.836605 52.051998 24.414569 - H21 27.999905 50.357611 25.624011 - H22 26.595059 49.746862 24.866524 - C1 38.168254 2.534351 2.948415 - C2 37.799073 1.790135 3.998543 - H11 37.582256 3.270701 2.544186 - H12 39.065651 2.425741 2.466870 - H21 36.901676 1.898745 4.480087 - H22 38.385070 1.053785 4.402771 - C1 34.457790 14.692706 28.188880 - C2 35.586005 13.973846 28.131510 - H11 34.306738 15.550522 27.650048 - H12 33.657203 14.441243 28.776102 - H21 36.386592 14.225310 27.544288 - H22 35.737057 13.116031 28.670343 - C1 11.276552 42.572648 8.077908 - C2 11.068979 43.801353 7.587889 - H11 10.696215 41.763532 7.838025 - H12 12.031974 42.345363 8.731118 - H21 10.313557 44.028638 6.934679 - H22 11.649316 44.610469 7.827772 - C1 69.795240 64.886410 42.197335 - C2 69.976054 66.212998 42.217134 - H11 69.081039 64.405477 42.751973 - H12 70.356928 64.248379 41.625997 - H21 69.414366 66.851030 42.788471 - H22 70.690255 66.693931 41.662496 - C1 35.779091 11.099334 17.241934 - C2 34.771022 11.965129 17.077264 - H11 35.756270 10.134291 16.899626 - H12 36.652209 11.334087 17.723141 - H21 33.897904 11.730377 16.596057 - H22 34.793843 12.930172 17.419573 - C1 58.570829 11.718035 73.722980 - C2 59.714673 11.210775 73.246296 - H11 57.716299 11.166837 73.845300 - H12 58.460537 12.697104 74.002739 - H21 59.824965 10.231707 72.966537 - H22 60.569204 11.761973 73.123976 - C1 43.273597 18.293554 26.391307 - C2 43.122547 17.167087 27.099246 - H11 42.925169 19.205750 26.700336 - H12 43.749433 18.331521 25.485138 - H21 42.646710 17.129119 28.005415 - H22 43.470974 16.254890 26.790217 - C1 46.940219 13.900108 27.372084 - C2 46.129161 14.772211 26.760086 - H11 47.957082 13.892964 27.249848 - H12 46.607475 13.171640 28.010536 - H21 46.461904 15.500678 26.121634 - H22 45.112297 14.779354 26.882322 - C1 71.411222 61.952127 33.820617 - C2 70.222823 61.870830 34.432187 - H11 71.769746 62.812057 33.395193 - H12 72.055103 61.160772 33.730189 - H21 69.578942 62.662186 34.522616 - H22 69.864299 61.010901 34.857612 - C1 30.677222 35.030359 8.459210 - C2 29.407742 35.048897 8.884647 - H11 31.167395 34.174928 8.181771 - H12 31.257844 35.870153 8.377798 - H21 28.827120 34.209104 8.966059 - H22 28.917569 35.904328 9.162086 - C1 13.771801 13.026861 49.354336 - C2 13.163045 13.160273 50.539469 - H11 13.295575 13.157267 48.457003 - H12 14.761506 12.783925 49.252021 - H21 12.173339 13.403209 50.641784 - H22 13.639271 13.029867 51.436802 - C1 62.009981 67.762069 49.473317 - C2 60.833556 67.994698 48.877641 - H11 62.914125 67.920673 49.019034 - H12 62.098141 67.407243 50.430046 - H21 60.745397 68.349524 47.920912 - H22 59.929413 67.836094 49.331924 - C1 21.652677 76.279406 12.982049 - C2 20.472409 75.973809 12.428426 - H11 22.012923 77.235610 13.052053 - H12 22.287976 75.580970 13.379020 - H21 19.837109 76.672244 12.031455 - H22 20.112163 75.017605 12.358422 - C1 67.927627 6.915116 10.527020 - C2 68.511242 7.783038 11.363097 - H11 68.203766 5.931798 10.450624 - H12 67.159213 7.166350 9.898191 - H21 69.279656 7.531803 11.991926 - H22 68.235102 8.766356 11.439493 - C1 30.058369 30.909205 74.994180 - C2 29.012246 30.174477 74.595780 - H11 30.919929 30.505868 75.373703 - H12 30.079204 31.932279 74.950703 - H21 28.991411 29.151403 74.639257 - H22 28.150687 30.577814 74.216256 - C1 47.071336 11.865702 66.078697 - C2 47.344844 12.418012 64.889972 - H11 46.274303 12.141753 66.659678 - H12 47.637667 11.123784 66.500396 - H21 46.778513 13.159930 64.468273 - H22 48.141877 12.141961 64.308991 - C1 15.616334 65.541434 5.149071 - C2 14.329831 65.897944 5.045473 - H11 16.305071 65.689798 4.405678 - H12 16.012749 65.092358 5.979847 - H21 13.933416 66.347021 4.214697 - H22 13.641093 65.749581 5.788866 - C1 48.731274 16.555834 22.928333 - C2 48.378839 17.822284 22.673742 - H11 49.698025 16.261182 23.094389 - H12 48.061797 15.782249 22.977023 - H21 49.048315 18.595869 22.625052 - H22 47.412087 18.116936 22.507686 - C1 15.069168 27.314220 60.299811 - C2 16.163113 27.085928 59.562187 - H11 15.097566 27.705072 61.246084 - H12 14.118038 27.115931 59.975717 - H21 17.114243 27.284217 59.886281 - H22 16.134715 26.695076 58.615914 - C1 32.500444 21.484586 54.386646 - C2 32.833424 20.463831 55.186711 - H11 33.187118 22.100711 53.941818 - H12 31.532905 21.729458 54.156626 - H21 33.800963 20.218959 55.416731 - H22 32.146750 19.847705 55.631539 - C1 20.227192 65.382021 15.541065 - C2 20.034240 65.556773 14.227614 - H11 20.226865 64.463720 15.994637 - H12 20.390271 66.152920 16.195376 - H21 19.871161 64.785874 13.573303 - H22 20.034567 66.475074 13.774042 - C1 64.703514 66.589798 46.655934 - C2 64.735944 67.927232 46.711983 - H11 65.512790 66.015411 46.402647 - H12 63.866883 66.036073 46.861945 - H21 65.572575 68.480957 46.505972 - H22 63.926667 68.501619 46.965270 - C1 76.386405 24.861667 24.417274 - C2 77.647855 24.437249 24.564016 - H11 75.632241 24.274512 24.049185 - H12 76.076548 25.806814 24.661586 - H21 77.957713 23.492102 24.319704 - H22 78.402020 25.024404 24.932105 - C1 22.198618 1.256760 23.691821 - C2 23.267110 1.789410 23.085578 - H11 21.289402 1.140838 23.234775 - H12 22.206572 0.923398 24.660227 - H21 23.259156 2.122772 22.117172 - H22 24.176327 1.905332 23.542623 - C1 37.731673 31.109490 32.400501 - C2 36.478841 31.505953 32.657698 - H11 37.981546 30.144514 32.165156 - H12 38.538552 31.740055 32.418903 - H21 35.671962 30.875388 32.639295 - H22 36.228967 32.470929 32.893043 - C1 21.126006 70.058441 26.076803 - C2 21.066063 69.320449 24.961143 - H11 20.297908 70.407075 26.568445 - H12 22.004665 70.332295 26.526209 - H21 20.187405 69.046595 24.511736 - H22 21.894161 68.971815 24.469501 - C1 34.801318 53.762978 74.857811 - C2 34.134859 54.422195 73.901680 - H11 34.469808 52.889501 75.277506 - H12 35.694981 54.080410 75.244603 - H21 33.241197 54.104763 73.514888 - H22 34.466370 55.295672 73.481986 - C1 55.419474 36.869759 69.103591 - C2 56.407416 37.529129 68.485429 - H11 54.771728 36.240507 68.620403 - H12 55.233901 36.942839 70.108194 - H21 56.592989 37.456049 67.480827 - H22 57.055162 38.158381 68.968618 - C1 36.146191 47.122369 60.848737 - C2 35.811251 45.978681 60.238234 - H11 37.111858 47.450405 60.942995 - H12 35.463044 47.759023 61.269432 - H21 36.494398 45.342026 59.817539 - H22 34.845584 45.650645 60.143976 - C1 60.540233 74.096131 62.084741 - C2 60.063213 75.347156 62.102328 - H11 59.943291 73.264564 62.050679 - H12 61.539538 73.872470 62.103968 - H21 59.063908 75.570817 62.083101 - H22 60.660156 76.178723 62.136390 - C1 10.690145 70.167127 69.134092 - C2 11.848045 69.921900 69.760233 - H11 10.504060 69.895595 68.164223 - H12 9.899552 70.645505 69.575818 - H21 12.638638 69.443522 69.318508 - H22 12.034130 70.193432 70.730102 - C1 9.428849 73.371865 40.258859 - C2 8.227287 73.812337 40.652754 - H11 10.052132 73.904427 39.644937 - H12 9.819073 72.467770 40.540533 - H21 7.837063 74.716432 40.371079 - H22 7.604004 73.279775 41.266675 - C1 77.490440 34.522666 3.483180 - C2 78.472932 35.282610 2.983063 - H11 76.562709 34.445974 3.056052 - H12 77.589448 33.958353 4.332150 - H21 78.373923 35.846924 2.134093 - H22 79.400662 35.359302 3.410190 - C1 19.833575 23.411118 49.525260 - C2 18.518471 23.641944 49.625971 - H11 20.237299 22.474000 49.436835 - H12 20.539128 24.153537 49.528737 - H21 17.812918 22.899525 49.622495 - H22 18.114747 24.579063 49.714397 - C1 59.690153 47.075360 8.259546 - C2 59.123720 47.938157 9.112572 - H11 60.699117 47.029363 8.089610 - H12 59.158969 46.393594 7.709961 - H21 59.654903 48.619923 9.662157 - H22 58.114755 47.984153 9.282508 - C1 52.952445 75.818161 12.673797 - C2 52.914769 76.822448 11.788975 - H11 53.700508 75.119205 12.703204 - H12 52.236160 75.670011 13.390730 - H21 53.631054 76.970598 11.072043 - H22 52.166705 77.521404 11.759569 - C1 30.931247 66.950108 54.368791 - C2 32.025247 66.863916 55.136031 - H11 30.363548 66.140529 54.101765 - H12 30.576167 67.832390 53.988659 - H21 32.380327 65.981634 55.516163 - H22 32.592946 67.673495 55.403057 - C1 3.732580 73.231362 8.976762 - C2 2.800539 74.189460 8.897585 - H11 4.699491 73.406611 9.265506 - H12 3.551835 72.247965 8.754804 - H21 2.981284 75.172857 9.119543 - H22 1.833628 74.014211 8.608841 - C1 49.544278 32.668792 72.288662 - C2 50.867328 32.689538 72.493675 - H11 49.093986 32.102680 71.563569 - H12 48.878590 33.217404 72.840828 - H21 51.533016 32.140926 71.941508 - H22 51.317619 33.255650 73.218767 - C1 22.671764 31.301017 59.036078 - C2 21.859476 30.370295 58.519488 - H11 22.386267 32.270538 59.201986 - H12 23.642417 31.116553 59.305908 - H21 20.888823 30.554760 58.249657 - H22 22.144973 29.400774 58.353579 - C1 67.042687 45.887331 30.166968 - C2 66.144438 44.916599 29.957807 - H11 67.572728 45.988245 31.037529 - H12 67.270311 46.605221 29.472832 - H21 65.916813 44.198709 30.651944 - H22 65.614397 44.815685 29.087246 - C1 60.735125 23.963765 70.162101 - C2 60.680633 23.466024 71.403957 - H11 60.366344 24.884314 69.905987 - H12 61.149870 23.463056 69.370721 - H21 60.265889 23.966732 72.195336 - H22 61.049414 22.545475 71.660071 - C1 68.727749 29.034965 57.504102 - C2 67.602547 28.652698 56.887082 - H11 69.544838 28.427606 57.615830 - H12 68.859756 29.964763 57.912824 - H21 67.470539 27.722901 56.478359 - H22 66.785457 29.260057 56.775354 - C1 30.881532 35.633947 62.215228 - C2 31.392056 34.431406 61.921660 - H11 30.119260 36.068170 61.686650 - H12 31.213182 36.214055 62.991428 - H21 31.060406 33.851298 61.145460 - H22 32.154328 33.997182 62.450238 - C1 23.182664 63.698474 7.601970 - C2 23.413913 62.502318 7.046401 - H11 23.923845 64.366219 7.833853 - H12 22.246425 64.039674 7.838705 - H21 24.350152 62.161118 6.809666 - H22 22.672731 61.834573 6.814517 - C1 31.141520 5.994576 13.267531 - C2 31.308669 4.679239 13.454275 - H11 30.223532 6.440656 13.182011 - H12 31.918521 6.657969 13.195536 - H21 30.531669 4.015846 13.526270 - H22 32.226657 4.233159 13.539795 - C1 24.600219 31.681400 37.911613 - C2 25.280935 31.401477 39.030178 - H11 24.996338 31.589619 36.971576 - H12 23.629921 32.009293 37.908150 - H21 26.251233 31.073584 39.033641 - H22 24.884816 31.493258 39.970215 - C1 19.773143 36.412800 76.029478 - C2 19.487679 37.016326 77.190162 - H11 19.785563 36.899125 75.128180 - H12 20.001511 35.417405 75.951749 - H21 19.259311 38.011721 77.267890 - H22 19.475259 36.530000 78.091459 - C1 53.245462 18.158635 44.178883 - C2 53.540466 17.747727 42.939105 - H11 53.093729 19.140627 44.427222 - H12 53.148363 17.523240 44.976284 - H21 53.637565 18.383121 42.141704 - H22 53.692199 16.765735 42.690766 - C1 2.499825 76.815059 5.731523 - C2 1.279040 76.280514 5.861395 - H11 3.358310 76.258252 5.687099 - H12 2.671060 77.822750 5.666401 - H21 1.107805 75.272823 5.926517 - H22 0.420555 76.837320 5.905820 - C1 13.115660 11.948933 65.389069 - C2 13.984644 11.279373 64.621294 - H11 13.379849 12.741049 65.982162 - H12 12.118492 11.721584 65.443586 - H21 14.981812 11.506722 64.566777 - H22 13.720455 10.487257 64.028200 - C1 14.854171 1.394216 59.434308 - C2 14.648523 2.622320 58.941974 - H11 14.310351 0.996747 60.205854 - H12 15.571451 0.755791 59.078041 - H21 13.931243 3.260744 59.298241 - H22 15.192343 3.019789 58.170429 - C1 68.029582 33.712105 17.204217 - C2 66.959941 33.060944 17.678325 - H11 68.005806 34.304130 16.368786 - H12 68.955590 33.669329 17.639743 - H21 66.033933 33.103721 17.242799 - H22 66.983717 32.468920 18.513756 - C1 23.012624 8.859320 31.382434 - C2 23.671753 7.695446 31.444609 - H11 22.737063 9.305968 30.502902 - H12 22.732215 9.394390 32.209522 - H21 23.952162 7.160376 30.617521 - H22 23.947313 7.248799 32.324141 - C1 30.517173 46.947424 47.356341 - C2 29.713705 47.357040 48.346075 - H11 31.532754 47.079969 47.361937 - H12 30.179311 46.469372 46.515913 - H21 30.051568 47.835093 49.186503 - H22 28.698124 47.224495 48.340479 - C1 26.268930 39.797994 13.406748 - C2 26.219248 38.772259 14.266003 - H11 25.945699 39.738245 12.436719 - H12 26.634067 40.722942 13.652003 - H21 25.854111 37.847311 14.020748 - H22 26.542478 38.832008 15.236031 - C1 63.359236 49.560777 47.142789 - C2 64.168989 49.799563 46.103461 - H11 63.548490 49.891000 48.093651 - H12 62.486963 49.029141 47.068589 - H21 65.041263 50.331200 46.177660 - H22 63.979735 49.469340 45.152598 - C1 62.153332 22.136214 17.849392 - C2 62.798640 21.858424 16.709510 - H11 62.161766 21.520255 18.667639 - H12 61.600587 22.986485 17.992625 - H21 63.351386 21.008153 16.566277 - H22 62.790207 22.474382 15.891263 - C1 75.895648 58.577303 72.759691 - C2 76.827329 58.215675 73.650823 - H11 74.899191 58.653539 72.983891 - H12 76.106241 58.806095 71.783828 - H21 76.616736 57.986882 74.626686 - H22 77.823785 58.139438 73.426622 - C1 4.053771 23.321514 15.836901 - C2 2.868509 22.704648 15.923797 - H11 4.183735 24.322255 16.011922 - H12 4.923564 22.841095 15.588585 - H21 1.998715 23.185066 16.172114 - H22 2.738545 21.703907 15.748777 - C1 66.086741 30.936688 66.398294 - C2 66.854766 29.839964 66.414276 - H11 65.111679 30.938763 66.084838 - H12 66.413981 31.859691 66.698268 - H21 66.527526 28.916962 66.114302 - H22 67.829827 29.837890 66.727732 - C1 24.883864 68.219121 61.367549 - C2 24.754618 69.219350 62.248320 - H11 25.664223 67.555828 61.376800 - H12 24.212523 68.038731 60.615376 - H21 25.425959 69.399741 63.000493 - H22 23.974259 69.882644 62.239069 - C1 55.680577 74.202534 47.300013 - C2 55.570044 72.889116 47.064139 - H11 54.889666 74.797456 47.563701 - H12 56.564722 74.715468 47.235283 - H21 54.685899 72.376182 47.128870 - H22 56.360955 72.294194 46.800452 - C1 32.667326 32.466980 22.683367 - C2 31.605104 33.058062 22.121916 - H11 32.714553 31.463879 22.884764 - H12 33.516073 32.971509 22.955549 - H21 30.756357 32.553533 21.849734 - H22 31.557876 34.061164 21.920519 - C1 44.593664 24.322693 22.123717 - C2 45.321894 23.353038 21.555939 - H11 44.840848 25.315526 22.076969 - H12 43.732225 24.147754 22.649381 - H21 46.183334 23.527978 21.030275 - H22 45.074711 22.360205 21.602687 - C1 44.598888 51.866619 76.032137 - C2 44.508506 50.531711 76.084800 - H11 44.910659 52.443011 76.819268 - H12 44.363353 52.416209 75.200585 - H21 44.744040 49.982121 76.916351 - H22 44.196735 49.955319 75.297669 - C1 56.843872 65.215295 77.830215 - C2 55.575245 65.630005 77.937550 - H11 57.650833 65.841923 77.902014 - H12 57.106987 64.238862 77.667880 - H21 55.312130 66.606438 78.099885 - H22 54.768284 65.003377 77.865750 - C1 1.003150 16.004251 68.915754 - C2 1.780707 16.369062 69.943003 - H11 1.335289 15.438686 68.129101 - H12 0.015149 16.262102 68.835934 - H21 2.768708 16.111211 70.022824 - H22 1.448568 16.934627 70.729656 - C1 29.466611 29.860128 61.137371 - C2 28.738964 29.376038 60.122922 - H11 30.322402 30.407662 61.007632 - H12 29.224584 29.720919 62.122789 - H21 28.980991 29.515246 59.137505 - H22 27.883173 28.828504 60.252661 - C1 35.125302 71.432115 15.095085 - C2 36.035548 71.988680 14.286006 - H11 34.281767 70.960345 14.756135 - H12 35.201052 71.434427 16.116487 - H21 35.959797 71.986367 13.264605 - H22 36.879082 72.460449 14.624957 - C1 33.354485 8.182562 54.111860 - C2 33.193931 7.507098 52.966918 - H11 34.169948 8.074019 54.721976 - H12 32.674447 8.860852 54.467492 - H21 33.873969 6.828808 52.611286 - H22 32.378468 7.615642 52.356802 - C1 66.866871 39.192719 55.877865 - C2 65.966296 39.551155 54.954063 - H11 66.795906 38.334720 56.432668 - H12 67.697463 39.748380 56.102280 - H21 65.135704 38.995494 54.729648 - H22 66.037261 40.409153 54.399260 - C1 20.042256 73.979391 47.648256 - C2 19.346752 74.311506 46.553315 - H11 20.669171 73.170837 47.695383 - H12 20.001991 74.507809 48.524702 - H21 19.387017 73.783088 45.676870 - H22 18.719836 75.120060 46.506189 - C1 37.390067 63.520883 28.094280 - C2 37.135465 63.059835 29.325350 - H11 36.802448 63.314431 27.281208 - H12 38.192440 64.116223 27.868956 - H21 36.333092 62.464495 29.550675 - H22 37.723083 63.266287 30.138423 - C1 10.689424 19.371851 18.653991 - C2 9.955616 18.275077 18.426981 - H11 10.332538 20.199316 19.140752 - H12 11.665271 19.469504 18.358710 - H21 8.979770 18.177424 18.722262 - H22 10.312503 17.447611 17.940220 - C1 17.038622 42.412248 10.967223 - C2 16.856181 41.517056 9.988312 - H11 17.773533 43.125432 10.950513 - H12 16.457598 42.454152 11.809636 - H21 17.437205 41.475153 9.145899 - H22 16.121270 40.803873 10.005022 - C1 40.523356 66.820996 33.020524 - C2 41.834836 66.713638 33.268345 - H11 40.040759 67.717807 32.911737 - H12 39.899732 66.014741 32.920277 - H21 42.458460 67.519893 33.368592 - H22 42.317434 65.816828 33.377132 - C1 64.414366 65.907105 25.045773 - C2 63.171008 65.428535 25.179760 - H11 64.675619 66.871463 25.271081 - H12 65.201873 65.346417 24.707447 - H21 62.383500 65.989223 25.518085 - H22 62.909755 64.464177 24.954451 - C1 26.378153 64.742997 14.478407 - C2 25.039323 64.724151 14.468500 - H11 26.930737 65.605305 14.487374 - H12 26.954861 63.896586 14.477798 - H21 24.462615 65.570561 14.469109 - H22 24.486739 63.861843 14.459533 - C1 77.554360 34.757262 52.696731 - C2 77.085777 35.861093 52.100989 - H11 78.376654 34.243343 52.366997 - H12 77.127311 34.340109 53.528967 - H21 77.512826 36.278245 51.268753 - H22 76.263484 36.375012 52.430723 - C1 61.231254 49.619958 26.341357 - C2 59.985245 50.067130 26.140315 - H11 61.446424 48.667512 26.650472 - H12 62.067082 50.195218 26.201820 - H21 59.149417 49.491870 26.279852 - H22 59.770075 51.019577 25.831200 - C1 43.312559 59.658391 45.663881 - C2 42.223988 60.429362 45.547534 - H11 43.274109 58.646740 45.819085 - H12 44.269208 60.019735 45.606814 - H21 41.267338 60.068019 45.604600 - H22 42.262437 61.441013 45.392330 - C1 2.169935 46.832932 26.950161 - C2 2.395267 45.776072 27.740851 - H11 2.405323 47.794658 27.212227 - H12 1.744481 46.762658 26.021153 - H21 2.820722 45.846346 28.669858 - H22 2.159879 44.814346 27.478784 - C1 39.859387 42.060831 18.536824 - C2 40.962180 42.307988 19.254934 - H11 39.862055 41.524260 17.664420 - H12 38.926523 42.388929 18.803508 - H21 41.895044 41.979891 18.988250 - H22 40.959511 42.844560 20.127337 - C1 28.639358 42.358118 53.904464 - C2 29.235204 41.159177 53.883722 - H11 27.622985 42.483914 53.891617 - H12 29.153141 43.243618 53.934807 - H21 28.721421 40.273677 53.853379 - H22 30.251577 41.033382 53.896570 - C1 62.128447 4.663865 22.447332 - C2 63.339089 4.119468 22.623115 - H11 61.900265 5.628555 22.704838 - H12 61.335464 4.158368 22.041556 - H21 64.132072 4.624965 23.028892 - H22 63.567271 3.154778 22.365609 - C1 48.128009 8.095819 43.506441 - C2 48.867854 6.994311 43.326916 - H11 48.518708 9.042482 43.520126 - H12 47.113256 8.078268 43.644183 - H21 49.882607 7.011862 43.189173 - H22 48.477155 6.047648 43.313231 - C1 19.068171 67.271215 10.471095 - C2 20.222884 67.947369 10.422355 - H11 18.154951 67.720683 10.585165 - H12 19.007401 66.251417 10.398136 - H21 20.283653 68.967167 10.495314 - H22 21.136103 67.497901 10.308286 - C1 36.203646 73.982747 39.777089 - C2 36.713202 72.882256 39.209468 - H11 35.766975 74.741711 39.245774 - H12 36.210510 74.152036 40.787187 - H21 36.706337 72.712966 38.199371 - H22 37.149873 72.123292 39.740783 - C1 46.263194 47.087380 34.504619 - C2 45.881779 46.827801 35.761624 - H11 46.088172 47.980246 34.034340 - H12 46.759936 46.413467 33.914625 - H21 45.385037 47.501714 36.351617 - H22 46.056801 45.934935 36.231903 - C1 77.014402 35.906448 72.496005 - C2 75.861185 36.414835 72.043727 - H11 77.128346 34.928448 72.778026 - H12 77.873186 36.455629 72.595476 - H21 75.002402 35.865654 71.944255 - H22 75.747242 37.392836 71.761706 - C1 32.296041 52.909747 54.473549 - C2 31.961723 52.842422 53.178706 - H11 31.913164 53.605630 55.120198 - H12 32.960914 52.270652 54.919089 - H21 31.296850 53.481518 52.733166 - H22 32.344600 52.146539 52.532057 - C1 57.616658 17.216783 76.934926 - C2 57.899625 17.749666 75.739566 - H11 56.710972 17.324170 77.400979 - H12 58.283663 16.659914 77.477148 - H21 57.232620 18.306535 75.197343 - H22 58.805311 17.642279 75.273513 - C1 54.871492 2.017313 68.204354 - C2 55.779713 2.343897 69.132469 - H11 53.861088 2.103649 68.347997 - H12 55.115821 1.655505 67.277853 - H21 55.535385 2.705704 70.058970 - H22 56.790117 2.257561 68.988825 - C1 68.457207 45.837040 4.589803 - C2 68.896776 46.881082 3.875888 - H11 67.896306 45.077529 4.192893 - H12 68.647336 45.715910 5.588893 - H21 68.706647 47.002212 2.876797 - H22 69.457677 47.640593 4.272798 - C1 73.986141 29.254892 9.674536 - C2 74.161572 27.953686 9.411841 - H11 73.065213 29.690743 9.779083 - H12 74.759093 29.916595 9.791570 - H21 73.388619 27.291983 9.294807 - H22 75.082499 27.517834 9.307293 - C1 44.608074 16.611506 18.023279 - C2 43.329840 16.890828 17.738643 - H11 45.392812 16.885869 17.425018 - H12 44.901515 16.101537 18.861627 - H21 43.036399 17.400797 16.900294 - H22 42.545103 16.616465 18.336903 - C1 51.414851 18.559897 8.882337 - C2 52.587456 18.822956 8.291813 - H11 51.004897 19.150453 9.611847 - H12 50.835723 17.747454 8.650928 - H21 53.166583 19.635400 8.523221 - H22 52.997409 18.232401 7.562302 - C1 48.238647 61.292689 15.824922 - C2 47.001494 60.903052 16.157424 - H11 48.484793 62.261561 15.601983 - H12 49.036027 60.652471 15.767400 - H21 46.204113 61.543270 16.214946 - H22 46.755348 59.934180 16.380364 - C1 31.773388 33.631856 45.274402 - C2 32.965787 34.115312 45.645044 - H11 30.926884 34.204842 45.210191 - H12 31.614113 32.651080 45.025981 - H21 33.125061 35.096088 45.893466 - H22 33.812290 33.542326 45.709255 - C1 22.101788 24.605040 59.235690 - C2 21.568564 23.421330 59.563444 - H11 23.104011 24.808214 59.292903 - H12 21.549334 25.400315 58.902019 - H21 22.121018 22.626055 59.897114 - H22 20.566342 23.218156 59.506231 - C1 51.790070 36.887945 37.180825 - C2 51.085356 37.227822 38.267463 - H11 51.689066 37.353122 36.273956 - H12 52.485494 36.136084 37.171125 - H21 50.389932 37.979683 38.277163 - H22 51.186361 36.762645 39.174333 - C1 20.462173 32.497314 65.003100 - C2 20.078931 31.261616 64.657993 - H11 19.913107 33.108830 65.614310 - H12 21.334500 32.928097 64.682983 - H21 19.206603 30.830833 64.978110 - H22 20.627997 30.650100 64.046782 - C1 42.668852 56.602125 49.969173 - C2 41.378624 56.573096 50.326092 - H11 43.171415 55.789088 49.601200 - H12 43.254583 57.439648 50.036089 - H21 40.792893 55.735573 50.259177 - H22 40.876061 57.386133 50.694066 - C1 13.554478 2.777278 45.851737 - C2 14.520004 2.175792 45.145413 - H11 13.487114 2.727587 46.872519 - H12 12.807429 3.334317 45.426732 - H21 15.267053 1.618753 45.570418 - H22 14.587368 2.225484 44.124631 - C1 46.059273 11.528632 18.915601 - C2 47.355161 11.657501 18.604173 - H11 45.467515 12.312648 19.205680 - H12 45.557961 10.635917 18.888210 - H21 47.856473 12.550216 18.631565 - H22 47.946919 10.873485 18.314095 - C1 63.976635 9.001674 21.043480 - C2 64.508774 8.161439 21.940003 - H11 64.353247 9.934410 20.850681 - H12 63.151169 8.777670 20.480070 - H21 65.334240 8.385444 22.503413 - H22 64.132162 7.228703 22.132801 - C1 13.111751 4.200558 36.112519 - C2 13.598627 5.308189 35.538911 - H11 13.651530 3.336958 36.221324 - H12 12.161298 4.129881 36.487548 - H21 14.549081 5.378865 35.163882 - H22 13.058849 6.171789 35.430106 - C1 48.500810 44.092272 50.399969 - C2 47.918495 44.552562 49.285536 - H11 48.065704 43.404470 51.021753 - H12 49.427094 44.391822 50.718200 - H21 46.992211 44.253011 48.967305 - H22 48.353602 45.240364 48.663752 - C1 58.873093 68.905503 39.621390 - C2 57.824212 69.212929 40.394862 - H11 59.414672 68.041969 39.721419 - H12 59.216235 69.509724 38.868945 - H21 57.481070 68.608707 41.147307 - H22 57.282632 70.076463 40.294833 - C1 48.174172 28.120624 79.997315 - C2 46.890916 28.502952 79.995898 - H11 48.471404 27.140493 79.996762 - H12 48.959353 28.778265 79.999064 - H21 46.105735 27.845311 79.994149 - H22 46.593683 29.483082 79.996451 - C1 63.370510 44.336358 24.882139 - C2 63.690457 43.078361 24.553509 - H11 64.063924 45.076476 25.024990 - H12 62.407224 44.657349 25.016484 - H21 64.653742 42.757370 24.419163 - H22 62.997043 42.338243 24.410658 - C1 51.084260 51.988649 72.708668 - C2 50.602843 52.541768 73.829033 - H11 51.809125 52.423669 72.130453 - H12 50.765467 51.087078 72.341866 - H21 50.921637 53.443339 74.195835 - H22 49.877979 52.106748 74.407248 - C1 31.575036 46.475325 61.018152 - C2 31.879891 45.176925 61.137071 - H11 30.660264 46.865365 61.263235 - H12 32.232664 47.180473 60.672761 - H21 31.222262 44.471777 61.482461 - H22 32.794662 44.786884 60.891987 - C1 54.218953 71.745131 55.204777 - C2 54.516230 70.442677 55.295126 - H11 54.926437 72.485136 55.175422 - H12 53.260718 72.103732 55.157924 - H21 55.474465 70.084076 55.341979 - H22 53.808746 69.702672 55.324481 - C1 16.408973 74.205296 66.789568 - C2 15.866493 75.428948 66.825771 - H11 17.405721 74.024756 66.940907 - H12 15.869803 73.353697 66.607692 - H21 16.405663 76.280547 67.007647 - H22 14.869745 75.609489 66.674432 - C1 25.577226 2.543454 77.846743 - C2 26.118485 1.642531 77.017106 - H11 24.584369 2.554943 78.097953 - H12 26.113537 3.291886 78.295324 - H21 25.582175 0.894100 76.568525 - H22 27.111342 1.631042 76.765896 - C1 26.161922 67.616671 58.158571 - C2 26.518102 68.743504 57.529045 - H11 26.716014 66.755693 58.132098 - H12 25.307394 67.527177 58.716045 - H21 27.372630 68.832999 56.971571 - H22 25.964009 69.604483 57.555518 - C1 34.872935 45.469696 67.091446 - C2 35.865780 45.476303 66.193038 - H11 35.012657 45.269050 68.086043 - H12 33.895757 45.664770 66.854647 - H21 36.842958 45.281229 66.429837 - H22 35.726058 45.676949 65.198442 - C1 59.591548 6.757295 20.344253 - C2 58.520952 7.510659 20.062850 - H11 59.565601 5.734526 20.391936 - H12 60.520534 7.144609 20.533930 - H21 57.591966 7.123345 19.873172 - H22 58.546899 8.533428 20.015167 - C1 26.487850 17.918298 4.178703 - C2 26.704685 18.484789 2.984973 - H11 27.131126 18.006420 4.970810 - H12 25.661675 17.352344 4.393495 - H21 27.530860 19.050743 2.770181 - H22 26.061409 18.396667 2.192866 - C1 42.028764 70.816569 31.148264 - C2 43.265948 71.328709 31.151305 - H11 41.190580 71.363629 31.365466 - H12 41.823394 69.837524 30.928497 - H21 43.471317 72.307754 31.371073 - H22 44.104132 70.781649 30.934103 - C1 37.059299 4.753839 26.268798 - C2 37.731943 5.771825 26.820319 - H11 37.253746 3.769967 26.476620 - H12 36.297482 4.879049 25.595774 - H21 38.493760 5.646615 27.493343 - H22 37.537495 6.755697 26.612497 - C1 71.050078 6.761111 70.566550 - C2 72.218084 6.941245 71.196021 - H11 70.814702 7.206236 69.674661 - H12 70.300251 6.164044 70.927486 - H21 72.967911 7.538312 70.835085 - H22 72.453460 6.496121 72.087910 - C1 25.649333 32.197657 61.872586 - C2 26.863969 32.761067 61.860376 - H11 24.777984 32.734816 61.907452 - H12 25.496147 31.185266 61.848019 - H21 27.017155 33.773457 61.884943 - H22 27.735317 32.223907 61.825510 - C1 56.879206 60.625940 23.453098 - C2 56.580506 61.929919 23.510880 - H11 57.834841 60.262323 23.512660 - H12 56.175522 59.889664 23.344798 - H21 57.284191 62.666196 23.619180 - H22 55.624871 62.293537 23.451318 - C1 24.712704 31.459918 54.840984 - C2 24.849446 32.320674 55.857508 - H11 24.380705 30.497907 54.956376 - H12 24.929363 31.695889 53.868163 - H21 24.632787 32.084704 56.830328 - H22 25.181445 33.282685 55.742115 - C1 73.267178 53.122045 63.561818 - C2 72.756271 53.862847 62.570300 - H11 73.985336 53.461777 64.208219 - H12 72.979964 52.157453 63.751753 - H21 73.043485 54.827439 62.380366 - H22 72.038113 53.523115 61.923899 - C1 24.944605 18.222727 33.096472 - C2 24.166374 17.798551 34.100142 - H11 25.004241 19.202266 32.803299 - H12 25.541399 17.600976 32.543058 - H21 23.569581 18.420302 34.653555 - H22 24.106738 16.819012 34.393314 - C1 55.102301 25.048407 43.693413 - C2 54.192180 24.140564 44.068145 - H11 55.407793 25.174937 42.724048 - H12 55.564486 25.687633 44.346696 - H21 53.729995 23.501337 43.414863 - H22 53.886687 24.014034 45.037510 - C1 59.877011 74.563182 76.015882 - C2 60.330871 75.263248 74.968580 - H11 59.143249 74.900860 76.645621 - H12 60.227946 73.635007 76.269532 - H21 59.979937 76.191423 74.714930 - H22 61.064633 74.925570 74.338841 - C1 24.811958 33.179389 31.145940 - C2 25.694376 34.181596 31.046746 - H11 24.952392 32.259005 30.719120 - H12 23.927212 33.254421 31.656428 - H21 26.579122 34.106564 30.536257 - H22 25.553943 35.101980 31.473566 - C1 60.749975 68.036921 11.556427 - C2 61.268204 69.113921 12.160107 - H11 61.184299 67.109803 11.585036 - H12 59.878529 68.055600 11.018619 - H21 62.139650 69.095243 12.697915 - H22 60.833880 70.041039 12.131498 - C1 73.609923 9.708779 6.346226 - C2 72.418134 9.744098 5.736872 - H11 74.033953 8.849526 6.708010 - H12 74.191157 10.538241 6.498426 - H21 71.836900 8.914637 5.584672 - H22 71.994105 10.603351 5.375088 - C1 1.883620 77.751591 77.114225 - C2 2.014487 78.915852 76.465927 - H11 1.009013 77.442009 77.548075 - H12 2.647841 77.079129 77.227209 - H21 1.250266 79.588313 76.352943 - H22 2.889094 79.225434 76.032077 - C1 68.936563 37.541627 42.796755 - C2 68.528071 38.674331 43.382448 - H11 69.026973 37.431084 41.782551 - H12 69.190713 36.696745 43.316934 - H21 68.273921 39.519214 42.862270 - H22 68.437661 38.784875 44.396652 - C1 45.484646 0.810481 68.349910 - C2 45.686448 1.068512 69.648224 - H11 45.932596 0.035702 67.851852 - H12 44.866478 1.367613 67.752854 - H21 46.304616 0.511380 70.245280 - H22 45.238498 1.843291 70.146282 - C1 22.066245 74.968498 69.280454 - C2 22.213254 73.653621 69.074523 - H11 21.787001 75.371522 70.179675 - H12 22.221487 75.674560 68.554934 - H21 22.058012 72.947558 69.800043 - H22 22.492498 73.250597 68.175302 - C1 59.840290 1.756482 11.944357 - C2 60.927598 2.520759 12.107344 - H11 58.887108 2.084519 12.125573 - H12 59.876339 0.783786 11.625664 - H21 60.891549 3.493456 12.426037 - H22 61.880780 2.192723 11.926128 - C1 67.012838 65.704133 35.736100 - C2 66.940306 64.399678 35.442746 - H11 67.896553 66.206582 35.860987 - H12 66.190304 66.301980 35.858654 - H21 67.762840 63.801831 35.320193 - H22 66.056591 63.897229 35.317859 - C1 19.560556 68.617122 79.401832 - C2 20.830478 69.041563 79.410152 - H11 19.295798 67.627726 79.402652 - H12 18.754148 69.248507 79.393994 - H21 21.636887 68.410178 79.417989 - H22 21.095237 70.030960 79.409331 - C1 28.115467 34.319919 36.209764 - C2 28.030397 33.195617 36.932003 - H11 28.674402 35.130806 36.490936 - H12 27.628287 34.457371 35.319389 - H21 28.517576 33.058166 37.822377 - H22 27.471461 32.384731 36.650830 - C1 6.839750 5.591477 26.795590 - C2 6.065347 6.352547 27.579168 - H11 7.858171 5.537201 26.889799 - H12 6.474529 5.003797 26.040440 - H21 6.430568 6.940226 28.334317 - H22 5.046926 6.406823 27.484959 - C1 75.394577 40.317215 36.091280 - C2 74.479612 39.488897 36.610556 - H11 76.210618 40.654167 36.610457 - H12 75.350301 40.678943 35.134098 - H21 74.523888 39.127169 37.567738 - H22 73.663571 39.151945 36.091379 - C1 58.249062 48.673225 17.906397 - C2 56.915863 48.795620 17.883600 - H11 58.843319 48.815114 17.084369 - H12 58.779347 48.428095 18.747654 - H21 56.385578 49.040750 17.042343 - H22 56.321606 48.653730 18.705628 - C1 12.681412 46.017897 39.692229 - C2 13.831081 46.152612 39.019151 - H11 12.062647 45.207357 39.596534 - H12 12.330443 46.714807 40.355660 - H21 14.182050 45.455702 38.355719 - H22 14.449846 46.963152 39.114846 - C1 74.097184 33.226811 17.810559 - C2 73.885287 31.912980 17.958438 - H11 74.974333 33.621237 17.458363 - H12 73.398768 33.940590 18.038021 - H21 74.583703 31.199201 17.730977 - H22 73.008138 31.518555 18.310634 - C1 48.699955 28.560107 13.358863 - C2 48.926701 27.241012 13.320176 - H11 47.764247 28.973890 13.311539 - H12 49.444403 29.258968 13.438820 - H21 48.182252 26.542151 13.240219 - H22 49.862408 26.827229 13.367500 - C1 37.425612 43.331546 72.986081 - C2 38.475067 42.777634 73.606361 - H11 36.966022 44.187877 73.309314 - H12 36.999997 42.942436 72.139649 - H21 38.900683 43.166745 74.452793 - H22 38.934657 41.921304 73.283128 - C1 17.824318 44.117482 54.835101 - C2 16.641178 44.740333 54.906924 - H11 18.708913 44.603774 54.661853 - H12 17.937689 43.105822 54.947765 - H21 16.527807 45.751994 54.794260 - H22 15.756582 44.254042 55.080172 - C1 8.539005 24.624287 33.519383 - C2 8.855741 25.456450 32.519331 - H11 9.162905 23.886539 33.859207 - H12 7.647941 24.660114 34.023095 - H21 9.746805 25.420623 32.015619 - H22 8.231841 26.194198 32.179507 - C1 45.023149 64.296830 24.670468 - C2 44.767724 64.606933 25.947776 - H11 44.587990 63.508200 24.182920 - H12 45.673756 64.823891 24.080620 - H21 44.117117 64.079873 26.537625 - H22 45.202883 65.395563 26.435325 - C1 61.102464 39.384191 40.736061 - C2 60.759280 40.616659 41.131241 - H11 62.061360 39.026108 40.772113 - H12 60.433041 38.702697 40.366679 - H21 61.428703 41.298152 41.500624 - H22 59.800384 40.974741 41.095189 - C1 19.432096 53.549636 15.174873 - C2 19.094868 54.842215 15.266727 - H11 20.399426 53.222687 15.094980 - H12 18.749217 52.786305 15.177288 - H21 19.777748 55.605545 15.264311 - H22 18.127538 55.169163 15.346620 - C1 76.194549 56.149264 17.038549 - C2 77.211864 56.151362 17.909173 - H11 75.229334 56.373755 17.297329 - H12 76.301668 55.923002 16.045404 - H21 77.104745 56.377624 18.902317 - H22 78.177080 55.926871 17.650392 - C1 51.699575 36.106177 21.337824 - C2 51.463253 36.213952 20.024257 - H11 51.240353 35.416155 21.939478 - H12 52.358133 36.705293 21.844150 - H21 50.804695 35.614837 19.517930 - H22 51.922475 36.903974 19.422602 - C1 25.842304 63.898079 57.561157 - C2 26.043374 63.777562 56.242837 - H11 25.591930 64.781023 58.015829 - H12 25.923076 63.116790 58.218475 - H21 25.962602 64.558851 55.585519 - H22 26.293747 62.894618 55.788164 - C1 62.185654 8.354336 51.106742 - C2 61.846033 9.649346 51.129738 - H11 61.515620 7.592251 51.245614 - H12 63.142154 8.024092 50.948472 - H21 60.889532 9.979589 51.288007 - H22 62.516066 10.411430 50.990865 - C1 73.371958 67.938752 53.053264 - C2 72.939335 68.297905 51.838041 - H11 73.883146 68.567744 53.679412 - H12 73.225684 67.006818 53.452147 - H21 73.085609 69.229838 51.439158 - H22 72.428148 67.668913 51.211894 - C1 20.652395 1.146548 73.481409 - C2 21.748579 1.911797 73.405941 - H11 19.701452 1.524696 73.522823 - H12 20.678717 0.122919 73.503652 - H21 21.722257 2.935426 73.383698 - H22 22.699522 1.533648 73.364527 - C1 71.455027 57.538305 33.792540 - C2 72.320234 58.231331 34.543575 - H11 70.974006 56.694776 34.118242 - H12 71.206254 57.797273 32.833346 - H21 72.569006 57.972363 35.502768 - H22 72.801254 59.074859 34.217873 - C1 15.491143 4.717339 71.099137 - C2 14.395879 5.104852 70.433441 - H11 16.362800 5.254928 71.113836 - H12 15.543331 3.852886 71.645948 - H21 14.343692 5.969305 69.886630 - H22 13.524222 4.567263 70.418742 - C1 1.508222 65.535484 59.360273 - C2 0.929492 66.733605 59.210273 - H11 1.342095 64.924953 60.165666 - H12 2.162501 65.135411 58.681403 - H21 0.275213 67.133678 59.889142 - H22 1.095618 67.344135 58.404879 - C1 43.866304 62.306281 42.355832 - C2 42.867291 62.823074 43.082342 - H11 43.733838 61.888204 41.430268 - H12 44.841429 62.288448 42.668590 - H21 41.892166 62.840907 42.769584 - H22 42.999757 63.241152 44.007906 - C1 51.113702 19.467180 39.091473 - C2 50.101173 19.488793 39.967395 - H11 51.738831 20.262498 38.931203 - H12 51.342631 18.653631 38.512912 - H21 49.872243 20.302342 40.545957 - H22 49.476043 18.693475 40.127665 - C1 47.805316 12.238564 71.212716 - C2 46.587749 12.747664 71.439144 - H11 48.635715 12.814044 71.044600 - H12 48.001922 11.233663 71.189841 - H21 46.391142 13.752565 71.462018 - H22 45.757349 12.172183 71.607259 - C1 14.229258 5.007535 11.088700 - C2 13.014338 4.498258 11.328545 - H11 14.383051 5.943991 10.703470 - H12 15.100241 4.500649 11.271623 - H21 12.143355 5.005144 11.145622 - H22 12.860545 3.561802 11.713775 - C1 63.872246 61.235796 1.519826 - C2 64.322917 61.859159 2.615835 - H11 62.915902 61.334818 1.166831 - H12 64.448452 60.610973 0.948349 - H21 63.746711 62.483982 3.187312 - H22 65.279261 61.760137 2.968830 - C1 20.235324 23.250589 23.734277 - C2 20.061737 24.421607 23.108574 - H11 19.603802 22.451929 23.623257 - H12 21.013265 23.061507 24.373073 - H21 19.283796 24.610690 22.469778 - H22 20.693259 25.220268 23.219594 - C1 20.557151 16.533930 6.103679 - C2 19.881459 16.246114 7.223288 - H11 21.196758 17.329355 6.018790 - H12 20.487485 15.981274 5.244190 - H21 19.951125 16.798770 8.082777 - H22 19.241852 15.450689 7.308178 - C1 66.387347 31.494779 25.010181 - C2 65.922775 32.750578 25.002365 - H11 65.834510 30.686266 24.710711 - H12 67.332047 31.244036 25.316244 - H21 64.978075 33.001321 24.696302 - H22 66.475612 33.559091 25.301835 - C1 4.518445 39.523912 42.643553 - C2 4.939482 40.741350 42.278184 - H11 3.571353 39.176961 42.465662 - H12 5.110397 38.843965 43.129629 - H21 4.347530 41.421296 41.792108 - H22 5.886574 41.088301 42.456075 - C1 69.214307 68.282573 72.837064 - C2 69.451639 69.390780 72.123993 - H11 69.945914 67.757537 73.325011 - H12 68.282513 67.872845 72.950585 - H21 70.383433 69.800508 72.010472 - H22 68.720032 69.915816 71.636045 - C1 32.558841 2.666228 31.243099 - C2 33.746070 2.127360 30.938089 - H11 32.446288 3.619917 31.599208 - H12 31.669979 2.167070 31.144263 - H21 34.634932 2.626518 31.036925 - H22 33.858623 1.173672 30.581980 - C1 62.513724 1.844808 52.930357 - C2 62.383848 1.779829 51.599256 - H11 63.163647 1.259756 53.463572 - H12 61.973351 2.484670 53.519914 - H21 62.924221 1.139967 51.009699 - H22 61.733925 2.364881 51.066041 - C1 79.474682 44.000850 71.629628 - C2 79.717575 45.233872 71.167479 - H11 79.378704 43.779590 72.625035 - H12 79.365781 43.182067 71.024038 - H21 79.826475 46.052655 71.773069 - H22 79.813552 45.455131 70.172072 - C1 48.116467 4.184351 1.401668 - C2 48.437195 5.315179 2.042981 - H11 47.162927 3.952399 1.108471 - H12 48.799475 3.462460 1.153923 - H21 47.754187 6.037070 2.290726 - H22 49.390735 5.547131 2.336178 - C1 78.729138 76.655070 63.447236 - C2 78.842943 77.730894 64.236268 - H11 77.940610 76.501605 62.811880 - H12 79.421671 75.901087 63.417049 - H21 78.150409 78.484876 64.266454 - H22 79.631471 77.884358 64.871624 - C1 26.860730 50.825706 14.173628 - C2 27.316695 52.077534 14.307583 - H11 25.869022 50.594677 14.063426 - H12 27.467835 50.000831 14.170841 - H21 26.709590 52.902409 14.310370 - H22 28.308403 52.308564 14.417785 - C1 54.170303 58.558340 15.385804 - C2 54.597278 59.713497 15.911375 - H11 53.184755 58.354570 15.195602 - H12 54.795700 57.787745 15.132692 - H21 53.971880 60.484091 16.164487 - H22 55.582826 59.917267 16.101577 - C1 27.162090 51.385740 63.063402 - C2 28.443452 50.997988 63.089506 - H11 26.833838 52.217477 62.563935 - H12 26.409526 50.881069 63.540851 - H21 29.196016 51.502659 62.612057 - H22 28.771704 50.166251 63.588974 - C1 37.294397 27.402767 46.302559 - C2 37.447973 28.690043 45.967512 - H11 36.401167 26.905576 46.239751 - H12 38.058089 26.814152 46.647975 - H21 36.684281 29.278657 45.622096 - H22 38.341203 29.187233 46.030320 - C1 62.104303 67.448721 0.810214 - C2 63.371355 67.809942 0.571427 - H11 61.305239 68.077739 0.688410 - H12 61.834621 66.515016 1.133433 - H21 63.641038 68.743646 0.248208 - H22 64.170419 67.180923 0.693231 - C1 34.708721 25.805739 52.210645 - C2 34.959571 24.647262 52.833483 - H11 34.012925 25.907432 51.465978 - H12 35.192928 26.681211 52.429955 - H21 34.475364 23.771791 52.614173 - H22 35.655367 24.545569 53.578150 - C1 10.907939 49.901565 8.146029 - C2 10.417667 48.684313 7.879849 - H11 10.652270 50.444205 8.976197 - H12 11.577148 50.385666 7.540381 - H21 9.748458 48.200212 8.485497 - H22 10.673335 48.141674 7.049681 - C1 22.987075 72.321917 6.562767 - C2 23.770435 71.528434 7.304153 - H11 23.150440 73.326132 6.445011 - H12 22.162952 71.986996 6.055171 - H21 24.594558 71.863355 7.811749 - H22 23.607070 70.524219 7.421909 - C1 72.654571 22.280440 65.087676 - C2 73.682036 23.135809 65.012963 - H11 72.766938 21.275856 65.252564 - H12 71.675548 22.563529 64.985808 - H21 74.661060 22.852721 65.114831 - H22 73.569669 24.140393 64.848075 - C1 39.513365 65.855521 9.098071 - C2 38.714386 66.928085 9.033575 - H11 39.296806 64.962054 8.646603 - H12 40.403856 65.844290 9.603940 - H21 37.823896 66.939316 8.527705 - H22 38.930946 67.821552 9.485042 - C1 34.382292 55.370456 66.496014 - C2 35.329718 54.442481 66.311168 - H11 33.424215 55.149940 66.783183 - H12 34.541223 56.373709 66.364760 - H21 35.170786 53.439228 66.442422 - H22 36.287794 54.662996 66.023999 - C1 43.880511 32.319499 71.332704 - C2 44.415747 33.266047 70.551365 - H11 43.102129 32.491596 71.975750 - H12 44.207427 31.348997 71.348710 - H21 44.088831 34.236548 70.535358 - H22 45.194128 33.093949 69.908319 - C1 53.966675 20.652875 28.542242 - C2 53.497506 21.906735 28.516991 - H11 53.402372 19.833746 28.298125 - H12 54.926717 20.414386 28.807658 - H21 52.537464 22.145225 28.251575 - H22 54.061809 22.725864 28.761107 - C1 7.128126 35.496436 59.265076 - C2 6.664852 36.505675 60.013230 - H11 8.030912 35.519775 58.781923 - H12 6.616108 34.621814 59.117169 - H21 7.176870 37.380298 60.161138 - H22 5.762067 36.482337 60.496384 - C1 59.190358 72.354861 12.052523 - C2 60.066122 73.281688 12.461119 - H11 58.967457 72.183833 11.067603 - H12 58.674560 71.744119 12.692797 - H21 60.581920 73.892430 11.820845 - H22 60.289023 73.452716 13.446039 - C1 10.291462 70.695433 22.993057 - C2 8.993973 70.654727 23.321365 - H11 10.863220 69.858541 22.845717 - H12 10.814123 71.566660 22.863472 - H21 8.471311 69.783500 23.450951 - H22 8.422215 71.491619 23.468705 - C1 28.967268 47.116963 11.376249 - C2 29.364252 48.395139 11.416132 - H11 29.320307 46.436931 10.696600 - H12 28.279375 46.718865 12.022257 - H21 30.052144 48.793236 10.770124 - H22 29.011212 49.075171 12.095781 - C1 16.388327 1.775588 6.247161 - C2 16.141521 0.659676 5.549487 - H11 15.848106 2.058137 7.070162 - H12 17.136727 2.434300 6.012641 - H21 15.393122 0.000963 5.784007 - H22 16.681743 0.377127 4.726486 - C1 38.780936 24.364490 50.285995 - C2 37.582445 24.819107 50.673116 - H11 38.906915 23.642838 49.570208 - H12 39.665874 24.702677 50.675250 - H21 36.697507 24.480921 50.283862 - H22 37.456466 25.540760 51.388903 - C1 64.766598 72.740041 67.429670 - C2 65.430101 71.853802 66.676500 - H11 64.423757 73.637750 67.075295 - H12 64.549782 72.589866 68.419338 - H21 65.646918 72.003977 65.686832 - H22 65.772942 70.956092 67.030875 - C1 10.948819 15.499437 41.287654 - C2 10.441690 14.422850 41.901415 - H11 10.508181 15.948664 40.479547 - H12 11.817215 15.958301 41.578060 - H21 9.573294 13.963986 41.611010 - H22 10.882328 13.973624 42.709523 - C1 55.610557 56.850591 77.667883 - C2 55.438235 58.176832 77.733546 - H11 54.872958 56.198593 77.385305 - H12 56.493508 56.383917 77.895075 - H21 54.555284 58.643506 77.506354 - H22 56.175834 58.828829 78.016125 - C1 72.242050 74.931251 17.647848 - C2 71.637819 73.846890 17.145864 - H11 73.019405 75.410224 17.183836 - H12 71.974357 75.366926 18.535277 - H21 71.905512 73.411214 16.258435 - H22 70.860464 73.367916 17.609876 - C1 6.495083 16.915098 56.974777 - C2 7.033107 15.881843 57.634954 - H11 5.505569 16.965941 56.715392 - H12 7.030779 17.735797 56.677308 - H21 6.497411 15.061144 57.932423 - H22 8.022621 15.831000 57.894339 - C1 63.452509 16.472465 68.531424 - C2 62.181586 16.631507 68.921784 - H11 63.920440 15.562404 68.488609 - H12 64.056590 17.248375 68.244975 - H21 61.577505 15.855596 69.208234 - H22 61.713654 17.541568 68.964600 - C1 11.513772 42.659140 61.699214 - C2 12.382197 43.607437 62.072699 - H11 10.826490 42.241395 62.333357 - H12 11.468544 42.277005 60.750040 - H21 12.427425 43.989572 63.021873 - H22 13.069479 44.025181 61.438556 - C1 26.962111 72.873618 2.638199 - C2 27.488985 72.311058 3.733120 - H11 27.483103 73.502372 2.019943 - H12 25.996707 72.719378 2.332899 - H21 28.454389 72.465298 4.038420 - H22 26.967993 71.682304 4.351375 - C1 17.032413 44.739017 19.802718 - C2 17.957421 45.506411 19.212475 - H11 16.713060 44.879289 20.765703 - H12 16.571530 43.951456 19.337597 - H21 18.418304 46.293973 19.677596 - H22 18.276775 45.366139 18.249489 - C1 3.852711 9.677188 40.786028 - C2 4.799518 8.905964 40.236764 - H11 4.016508 10.640787 41.092054 - H12 2.890292 9.364110 40.943301 - H21 5.761938 9.219042 40.079492 - H22 4.635722 7.942365 39.930738 - C1 54.107114 39.896713 6.215316 - C2 54.922181 40.922984 5.940810 - H11 53.230184 39.995425 6.735176 - H12 54.296541 38.932350 5.927000 - H21 54.732754 41.887346 6.229126 - H22 55.799111 40.824271 5.420950 - C1 41.823886 18.475397 56.035215 - C2 42.231708 17.227709 56.299555 - H11 41.596693 19.161028 56.761367 - H12 41.707085 18.842180 55.086093 - H21 42.348509 16.860926 57.248677 - H22 42.458901 16.542078 55.573403 - C1 55.227945 52.275810 29.326984 - C2 54.025354 52.864620 29.327191 - H11 56.110868 52.794889 29.329703 - H12 55.359395 51.260076 29.324092 - H21 53.893903 53.880354 29.330083 - H22 53.142431 52.345540 29.324472 - C1 2.863275 11.111157 15.702065 - C2 3.730398 10.230540 16.217365 - H11 1.846672 11.015511 15.781895 - H12 3.148469 11.949595 15.187585 - H21 3.445204 9.392102 16.731845 - H22 4.747001 10.326186 16.137535 - C1 41.659501 60.703602 49.535743 - C2 41.965704 60.707632 48.232231 - H11 40.884963 61.241417 49.935554 - H12 42.175761 60.162388 50.235434 - H21 41.449444 61.248846 47.532540 - H22 42.740243 60.169817 47.832421 - C1 31.641998 41.646728 20.760602 - C2 30.405614 41.138504 20.683240 - H11 32.460610 41.100033 21.043449 - H12 31.866264 42.622106 20.543009 - H21 30.181348 40.163127 20.900833 - H22 29.587003 41.685200 20.400393 - C1 50.547528 42.601457 71.052816 - C2 49.424075 43.320615 71.169377 - H11 51.438018 42.871789 71.480544 - H12 50.604660 41.724523 70.526769 - H21 49.366943 44.197550 71.695424 - H22 48.533585 43.050284 70.741648 - C1 1.976668 34.855287 78.402071 - C2 2.370707 34.106664 79.439962 - H11 1.142214 34.652347 77.843945 - H12 2.478753 35.689685 78.084747 - H21 1.868622 33.272266 79.757286 - H22 3.205161 34.309604 79.998088 - C1 28.312526 76.220935 3.004613 - C2 29.575537 76.276853 2.563482 - H11 28.047347 75.818952 3.908546 - H12 27.512367 76.575750 2.472771 - H21 30.375696 75.922038 3.095324 - H22 29.840716 76.678836 1.659549 - C1 48.606015 58.576769 47.373096 - C2 48.382616 57.259515 47.461729 - H11 47.858343 59.276602 47.358107 - H12 49.542123 58.988029 47.313322 - H21 47.446509 56.848256 47.521502 - H22 49.130289 56.559683 47.476717 - C1 69.170849 67.056352 16.403015 - C2 70.406655 66.632975 16.108978 - H11 68.421010 66.434275 16.718871 - H12 68.878298 68.035544 16.335177 - H21 70.699206 65.653784 16.176817 - H22 71.156494 67.255052 15.793122 - C1 56.885962 54.708196 70.068548 - C2 56.780675 56.042636 70.035290 - H11 56.168620 54.075810 69.701790 - H12 57.692114 54.214995 70.463359 - H21 55.974523 56.535837 69.640479 - H22 57.498017 56.675022 70.402048 - C1 52.235458 52.524672 61.690392 - C2 52.776945 53.740923 61.833380 - H11 51.338333 52.357017 61.225566 - H12 52.675843 51.666430 62.034609 - H21 52.336560 54.599165 61.489163 - H22 53.674070 53.908577 62.298206 - C1 1.274803 16.532120 54.488972 - C2 1.654396 15.248347 54.461433 - H11 1.928567 17.311951 54.604982 - H12 0.300854 16.835138 54.396190 - H21 2.628344 14.945329 54.554214 - H22 1.000632 14.468516 54.345422 - C1 27.546459 52.027823 77.893394 - C2 28.760519 52.526721 77.628669 - H11 26.706633 52.606320 77.988465 - H12 27.362235 51.028511 78.021616 - H21 28.944742 53.526033 77.500446 - H22 29.600345 51.948224 77.533598 - C1 74.285490 2.634074 47.596966 - C2 74.985533 3.277059 46.653869 - H11 73.845399 1.721054 47.449596 - H12 74.135102 3.004743 48.539830 - H21 75.135921 2.906390 45.711005 - H22 75.425624 4.190079 46.801239 - C1 2.889005 64.748503 14.763460 - C2 3.504351 65.550492 15.641574 - H11 1.891646 64.815289 14.540257 - H12 3.367325 64.005246 14.245982 - H21 3.026031 66.293749 16.159051 - H22 4.501709 65.483705 15.864777 - C1 63.976619 51.770086 50.292570 - C2 64.145284 52.617307 51.315649 - H11 64.486867 50.886777 50.200828 - H12 63.324104 51.938771 49.521355 - H21 64.797799 52.448621 52.086865 - H22 63.635036 53.500615 51.407391 - C1 60.968599 1.367795 15.150290 - C2 59.765333 1.951413 15.083499 - H11 61.848244 1.890662 15.193166 - H12 61.103898 0.352651 15.163750 - H21 59.630034 2.966557 15.070038 - H22 58.885688 1.428546 15.040623 - C1 30.558259 51.596438 6.433048 - C2 29.401700 51.301083 5.826370 - H11 31.385216 50.993266 6.396589 - H12 30.706848 52.448739 6.981235 - H21 29.253110 50.448783 5.278184 - H22 28.574743 51.904256 5.862829 - C1 60.252707 4.485059 17.337557 - C2 60.965513 4.623076 18.462626 - H11 59.581618 3.726798 17.183658 - H12 60.322550 5.126903 16.542471 - H21 60.895670 3.981232 19.257712 - H22 61.636602 5.381337 18.616525 - C1 50.955930 58.064714 32.052768 - C2 49.629011 58.144190 31.891864 - H11 51.501057 57.223792 31.841366 - H12 51.530048 58.838599 32.399891 - H21 49.054893 57.370305 31.544741 - H22 49.083885 58.985112 32.103266 - C1 43.269673 38.396844 68.031845 - C2 42.698623 37.352929 67.417789 - H11 43.669626 38.348505 68.973495 - H12 43.351395 39.325716 67.608145 - H21 42.616901 36.424057 67.841489 - H22 42.298671 37.401269 66.476139 - C1 62.269366 29.399997 54.678256 - C2 62.605518 28.122500 54.459345 - H11 62.713984 29.986896 55.390203 - H12 61.541206 29.890656 54.150960 - H21 63.333678 27.631841 54.986641 - H22 62.160900 27.535600 53.747398 - C1 75.167154 10.441284 22.902266 - C2 75.937120 11.526362 22.751675 - H11 75.262678 9.784946 23.682714 - H12 74.422171 10.182367 22.248839 - H21 76.682103 11.785279 23.405102 - H22 75.841596 12.182700 21.971227 - C1 5.190319 37.997112 33.001879 - C2 3.921636 38.038484 33.428086 - H11 5.834290 37.230849 33.219009 - H12 5.616469 38.728478 32.425248 - H21 3.495485 37.307119 34.004717 - H22 3.277664 38.804747 33.210956 - C1 20.777650 11.945699 68.803120 - C2 21.102622 10.679016 69.090917 - H11 20.152473 12.207827 68.035366 - H12 21.128716 12.752006 69.328119 - H21 20.751556 9.872708 68.565918 - H22 21.727799 10.416888 69.858671 - C1 69.838123 51.377588 77.488405 - C2 71.074087 51.871031 77.636148 - H11 69.401996 51.210502 76.576879 - H12 69.231725 51.128460 78.275311 - H21 71.680484 52.120159 76.849242 - H22 71.510214 52.038117 78.547674 - C1 27.624412 6.498104 65.115414 - C2 26.854304 5.959492 64.161605 - H11 28.625057 6.681477 64.996716 - H12 27.273347 6.769046 66.038641 - H21 27.205369 5.688550 63.238379 - H22 25.853660 5.776119 64.280304 - C1 25.325759 73.852422 57.330289 - C2 26.307064 74.756184 57.445074 - H11 25.493250 72.850053 57.202988 - H12 24.330546 74.092477 57.360770 - H21 27.302277 74.516130 57.414593 - H22 26.139573 75.758554 57.572375 - C1 77.282015 6.644439 5.870446 - C2 77.439161 5.562086 6.642934 - H11 77.308183 7.603233 6.229657 - H12 77.123295 6.598600 4.859649 - H21 77.597881 5.607925 7.653731 - H22 77.412993 4.603291 6.283723 - C1 62.735959 7.990268 59.899641 - C2 61.711776 7.242476 59.469784 - H11 63.565320 7.601913 60.358275 - H12 62.770488 9.009378 59.803587 - H21 61.677247 6.223366 59.565838 - H22 60.882415 7.630831 59.011149 - C1 41.668004 40.892213 7.790296 - C2 41.293232 42.176972 7.833410 - H11 41.208115 40.151468 8.327700 - H12 42.444010 40.549274 7.216526 - H21 40.517226 42.519911 8.407179 - H22 41.753121 42.917717 7.296006 - C1 21.221570 45.365303 68.870514 - C2 20.118036 44.610122 68.940043 - H11 21.976517 45.327028 69.561596 - H12 21.397444 46.040565 68.120786 - H21 19.942162 43.934859 69.689771 - H22 19.363089 44.648396 68.248961 - C1 14.852097 31.679377 69.519519 - C2 14.080770 30.584870 69.514153 - H11 15.875841 31.648764 69.523382 - H12 14.478961 32.633197 69.520182 - H21 14.453906 29.631050 69.513489 - H22 13.057026 30.615483 69.510290 - C1 42.626753 67.402228 39.954993 - C2 43.516714 67.416072 40.955342 - H11 41.716132 66.937371 40.015668 - H12 42.786700 67.855408 39.050532 - H21 43.356767 66.962892 41.859803 - H22 44.427335 67.880928 40.894667 - C1 16.246587 59.577201 57.860347 - C2 15.323715 59.316319 58.794782 - H11 17.133939 60.048491 58.059085 - H12 16.137669 59.325964 56.873422 - H21 15.432633 59.567556 59.781707 - H22 14.436363 58.845029 58.596044 - C1 4.359713 2.032383 71.946451 - C2 3.826853 0.978897 71.314669 - H11 4.885489 2.770451 71.469146 - H12 4.283400 2.182922 72.956658 - H21 3.903166 0.828359 70.304462 - H22 3.301077 0.240830 71.791974 - C1 29.251257 13.263278 10.739759 - C2 29.063536 11.960706 10.492800 - H11 29.393981 13.962505 10.005106 - H12 29.266875 13.662758 11.682720 - H21 29.047918 11.561226 9.549839 - H22 28.920812 11.261479 11.227453 - C1 4.944751 71.493283 26.647294 - C2 4.405131 71.530850 27.872169 - H11 5.855376 71.070819 26.444094 - H12 4.489291 71.884061 25.817322 - H21 4.860591 71.140072 28.702141 - H22 3.494506 71.953314 28.075368 - C1 61.235476 51.073812 77.911146 - C2 62.496833 51.369625 77.572924 - H11 60.866815 50.118590 77.936502 - H12 60.540194 51.779519 78.171078 - H21 63.192115 50.663918 77.312992 - H22 62.865494 52.324847 77.547568 - C1 38.868206 15.290828 37.789736 - C2 40.066519 15.285832 37.192290 - H11 38.443577 14.459247 38.210648 - H12 38.282069 16.126623 37.872764 - H21 40.652656 14.450036 37.109262 - H22 40.491148 16.117412 36.771377 - C1 31.504702 10.771809 65.400232 - C2 31.915073 10.520075 66.649691 - H11 31.864280 11.544863 64.832697 - H12 30.798981 10.211092 64.913861 - H21 32.620794 11.080793 67.136062 - H22 31.555495 9.747022 67.217226 - C1 41.944866 50.441258 29.281146 - C2 43.053741 50.402716 30.030699 - H11 41.449710 51.307351 29.049395 - H12 41.504695 49.607675 28.880654 - H21 43.493912 51.236299 30.431190 - H22 43.548897 49.536624 30.262450 - C1 46.133549 28.837881 51.624780 - C2 45.269375 28.966320 50.610075 - H11 47.150679 28.847663 51.504976 - H12 45.845341 28.719761 52.600479 - H21 45.557583 29.084440 49.634376 - H22 44.252244 28.956538 50.729878 - C1 47.745114 38.750052 41.881833 - C2 46.709202 39.352965 42.478745 - H11 48.055599 38.970644 40.931075 - H12 48.308412 38.020910 42.329103 - H21 46.145904 40.082108 42.031475 - H22 46.398717 39.132373 43.429503 - C1 1.355998 38.746448 77.831667 - C2 2.076732 39.873028 77.897080 - H11 0.355244 38.703087 78.045244 - H12 1.748819 37.839548 77.562913 - H21 1.683911 40.779928 78.165834 - H22 3.077486 39.916389 77.683503 - C1 3.378819 58.290441 9.844625 - C2 4.162325 58.469762 10.915551 - H11 2.780607 57.469467 9.713677 - H12 3.316151 58.960160 9.072256 - H21 4.224992 57.800044 11.687920 - H22 4.760537 59.290737 11.046499 - C1 10.569278 72.191971 30.072752 - C2 10.768966 70.988021 30.623707 - H11 10.162460 72.984109 30.578737 - H12 10.807660 72.415352 29.102042 - H21 10.530584 70.764640 31.594418 - H22 11.175784 70.195883 30.117723 - C1 63.749962 67.502203 53.905733 - C2 65.076633 67.348160 54.001314 - H11 63.211569 68.141454 54.497759 - H12 63.169320 66.992886 53.233085 - H21 65.657274 67.857477 54.673963 - H22 65.615026 66.708909 53.409288 - C1 30.281742 50.350306 36.390350 - C2 29.607392 50.685127 35.283071 - H11 31.133613 50.827940 36.698871 - H12 29.998678 49.590254 37.015810 - H21 29.890456 51.445180 34.657611 - H22 28.755521 50.207494 34.974550 - C1 35.510983 5.374778 29.318361 - C2 35.929524 4.108628 29.197488 - H11 34.525993 5.651104 29.268938 - H12 36.142936 6.166436 29.469740 - H21 35.297571 3.316970 29.046110 - H22 36.914514 3.832302 29.246912 - C1 3.030935 9.730105 5.209992 - C2 1.693084 9.744779 5.263463 - H11 3.601095 10.574114 5.102429 - H12 3.589240 8.873718 5.272453 - H21 1.134779 10.601165 5.201003 - H22 1.122924 8.900769 5.371027 - C1 21.188861 64.569026 51.116089 - C2 20.654259 65.775191 50.887425 - H11 22.104158 64.430902 51.554446 - H12 20.724496 63.689760 50.870608 - H21 21.118625 66.654456 51.132906 - H22 19.738962 65.913315 50.449068 - C1 30.688283 65.341426 11.081817 - C2 32.010131 65.197429 10.924002 - H11 30.123078 66.000128 10.538073 - H12 30.138523 64.804184 11.758676 - H21 32.559891 65.734671 10.247143 - H22 32.575336 64.538726 11.467746 - C1 51.222566 47.326276 55.790029 - C2 50.765410 46.206085 55.216356 - H11 52.189142 47.444223 56.107556 - H12 50.641597 48.153200 55.956389 - H21 51.346379 45.379161 55.049996 - H22 49.798835 46.088138 54.898828 - C1 58.018354 45.765783 46.075456 - C2 58.460975 44.513116 46.242290 - H11 58.636217 46.581128 46.025834 - H12 57.027146 46.007051 45.984356 - H21 59.452183 44.271848 46.333390 - H22 57.843112 43.697771 46.291913 - C1 70.358909 35.649357 64.645351 - C2 71.248634 36.567989 65.042122 - H11 70.589372 34.660253 64.512825 - H12 69.377971 35.863605 64.443205 - H21 72.229571 36.353741 65.244269 - H22 71.018171 37.557093 65.174649 - C1 23.466920 43.620268 37.126682 - C2 22.187703 43.848387 37.449926 - H11 24.208779 44.318772 37.230320 - H12 23.804068 42.729347 36.750391 - H21 21.850555 44.739308 37.826218 - H22 21.445844 43.149883 37.346289 - C1 13.708672 21.926212 58.637331 - C2 13.701043 23.254634 58.469526 - H11 14.132046 21.275090 57.969650 - H12 13.291733 21.456824 59.446552 - H21 14.117982 23.724023 57.660305 - H22 13.277669 23.905757 59.137207 - C1 17.379531 52.533631 11.815826 - C2 18.497368 52.921750 11.189149 - H11 16.439979 52.672321 11.432405 - H12 17.376197 52.067567 12.727844 - H21 18.500702 53.387814 10.277131 - H22 19.436919 52.783061 11.572570 - C1 14.780879 65.541996 24.926770 - C2 15.372708 64.628263 25.706354 - H11 13.784430 65.772075 24.982956 - H12 15.278126 66.082643 24.213012 - H21 14.875461 64.087616 26.420112 - H22 16.369157 64.398184 25.650167 - C1 49.702117 11.204574 0.940667 - C2 48.699988 12.092431 0.959855 - H11 49.559446 10.193639 0.859063 - H12 50.690075 11.466610 1.006088 - H21 47.712030 11.830396 0.894434 - H22 48.842660 13.103366 1.041459 - C1 39.667404 5.755579 44.311969 - C2 38.834974 6.804173 44.332688 - H11 40.684723 5.840430 44.394834 - H12 39.352233 4.786248 44.211627 - H21 39.150145 7.773504 44.433029 - H22 37.817655 6.719322 44.249823 - C1 56.689404 42.266928 73.264819 - C2 56.770175 41.856533 74.536815 - H11 55.838563 42.190694 72.699786 - H12 57.472116 42.689325 72.756935 - H21 55.987463 41.434136 75.044699 - H22 57.621016 41.932767 75.101847 - C1 20.306384 2.040341 29.758701 - C2 21.151285 1.002364 29.799506 - H11 19.289391 1.938421 29.692813 - H12 20.610710 3.017786 29.790170 - H21 20.846959 0.024919 29.768037 - H22 22.168278 1.104284 29.865394 - C1 35.219708 17.553670 44.150803 - C2 35.099554 16.725755 45.196289 - H11 35.801851 17.349943 43.333118 - H12 34.738912 18.455735 44.086630 - H21 35.580350 15.823690 45.260462 - H22 34.517411 16.929482 46.013974 - C1 39.804245 48.239863 33.780065 - C2 39.962203 47.472278 32.694346 - H11 38.889599 48.528479 34.139406 - H12 40.585656 48.598696 34.336517 - H21 39.180792 47.113445 32.137894 - H22 40.876849 47.183661 32.335005 - C1 35.949577 51.336397 34.591618 - C2 35.702594 50.662731 35.722147 - H11 35.950903 52.358888 34.532344 - H12 36.156577 50.882136 33.697302 - H21 35.495593 51.116992 36.616463 - H22 35.701267 49.640240 35.781421 - C1 73.386173 10.794254 47.974112 - C2 73.011217 10.150849 49.086928 - H11 73.131154 10.486894 47.030980 - H12 73.957464 11.644319 47.978595 - H21 72.439926 9.300784 49.082446 - H22 73.266236 10.458208 50.030061 - C1 7.534276 17.014457 46.979613 - C2 6.743997 18.058435 46.699451 - H11 7.937074 16.843581 47.905658 - H12 7.798070 16.304747 46.289882 - H21 6.480202 18.768144 47.389182 - H22 6.341199 18.229310 45.773406 - C1 6.194632 51.875830 35.758525 - C2 5.291856 52.796103 36.120484 - H11 7.091844 51.746776 36.235347 - H12 6.058902 51.228642 34.976394 - H21 5.427586 53.443292 36.902615 - H22 4.394644 52.925157 35.643662 - C1 42.609815 21.367482 50.911043 - C2 42.294860 20.094295 51.180705 - H11 43.240820 21.644841 50.153476 - H12 42.244473 22.164045 51.441153 - H21 42.660202 19.297732 50.650595 - H22 41.663855 19.816935 51.938273 - C1 31.919471 69.590868 5.090947 - C2 32.998901 68.844616 5.357142 - H11 31.957343 70.474971 4.575262 - H12 30.971110 69.336222 5.382099 - H21 33.947263 69.099263 5.065991 - H22 32.961029 67.960513 5.872827 - C1 74.880594 64.409645 4.596804 - C2 73.917861 65.340115 4.579741 - H11 75.419685 64.170121 5.434070 - H12 75.153559 63.864324 3.773931 - H21 73.644896 65.885436 5.402614 - H22 73.378770 65.579639 3.742476 - C1 43.887497 7.236466 70.138384 - C2 43.871856 7.488398 71.453377 - H11 44.413133 7.797952 69.462037 - H12 43.375054 6.462478 69.705546 - H21 44.384299 8.262386 71.886214 - H22 43.346221 6.926912 72.129723 - C1 69.904799 10.670750 24.495011 - C2 71.109535 11.239609 24.361103 - H11 69.754771 9.657612 24.488134 - H12 69.038643 11.204060 24.614838 - H21 71.975690 10.706300 24.241276 - H22 71.259562 12.252747 24.367980 - C1 61.279231 33.215938 42.441044 - C2 61.350993 34.196568 43.349965 - H11 60.401748 32.904541 42.014361 - H12 62.096184 32.700184 42.101060 - H21 60.534040 34.712322 43.689948 - H22 62.228477 34.507965 43.776647 - C1 77.078552 22.007808 0.769677 - C2 77.299364 22.445641 2.015656 - H11 77.257961 21.045227 0.469253 - H12 76.712889 22.601080 0.019128 - H21 77.665026 21.852369 2.766205 - H22 77.119954 23.408222 2.316080 - C1 17.167773 29.206659 49.266131 - C2 16.874557 27.977714 48.822691 - H11 16.458901 29.885250 49.559423 - H12 18.123968 29.564673 49.346877 - H21 15.918362 27.619700 48.741946 - H22 17.583429 27.299124 48.529400 - C1 56.285388 75.760036 65.541539 - C2 57.491725 76.294983 65.768486 - H11 55.410888 76.288438 65.612560 - H12 56.142355 74.780410 65.279089 - H21 57.634758 77.274608 66.030935 - H22 58.366225 75.766581 65.697464 - C1 29.619152 53.639119 26.019953 - C2 30.160296 52.567146 25.427535 - H11 29.799618 54.601550 25.719683 - H12 28.982237 53.580887 26.819923 - H21 30.797211 52.625379 24.627565 - H22 29.979830 51.604715 25.727805 - C1 44.166313 35.927792 16.172669 - C2 43.201044 36.658890 15.601116 - H11 45.037044 36.326784 16.535485 - H12 44.109776 34.912125 16.291953 - H21 43.257581 37.674556 15.481832 - H22 42.330313 36.259897 15.238300 - C1 19.248037 5.826676 52.400722 - C2 18.906843 4.532151 52.427409 - H11 19.229538 6.432688 53.226199 - H12 19.554331 6.312584 51.552736 - H21 18.600549 4.046243 53.275396 - H22 18.925342 3.926139 51.601933 - C1 19.736178 23.573457 34.091039 - C2 21.038131 23.326298 33.899330 - H11 19.318947 24.504526 34.001415 - H12 19.055225 22.850865 34.342369 - H21 21.719085 24.048890 33.648001 - H22 21.455363 22.395229 33.988955 - C1 63.428703 19.567905 24.366196 - C2 64.197980 20.532273 24.886894 - H11 63.564803 18.571226 24.558843 - H12 62.643726 19.751147 23.734344 - H21 64.982958 20.349031 25.518746 - H22 64.061881 21.528952 24.694247 - C1 12.645605 26.360708 29.366021 - C2 12.956772 27.415524 30.129865 - H11 12.519317 26.416030 28.351134 - H12 12.509424 25.415657 29.736612 - H21 13.092952 28.360575 29.759273 - H22 13.083060 27.360202 31.144751 - C1 10.775171 46.710914 13.614566 - C2 10.605139 47.035632 14.902420 - H11 10.316360 47.203496 12.842647 - H12 11.377403 45.944436 13.300192 - H21 10.002907 47.802111 15.216794 - H22 11.063950 46.543050 15.674339 - C1 71.419426 45.898638 5.344489 - C2 72.200460 46.650606 6.130270 - H11 70.881134 45.096512 5.684841 - H12 71.298924 46.066486 4.341339 - H21 72.320963 46.482758 7.133420 - H22 72.738752 47.452732 5.789918 - C1 7.721322 57.149270 4.607244 - C2 7.472224 58.431562 4.312970 - H11 7.388681 56.364604 4.039218 - H12 8.264073 56.852334 5.423487 - H21 6.929473 58.728498 3.496727 - H22 7.804864 59.216228 4.880996 - C1 13.427616 65.132437 57.100003 - C2 12.440474 65.527250 56.286005 - H11 14.100335 65.776836 57.525684 - H12 13.587543 64.155018 57.360923 - H21 12.280547 66.504669 56.025085 - H22 11.767755 64.882851 55.860324 - C1 7.850832 64.679881 64.164247 - C2 9.003566 65.360289 64.198468 - H11 6.930836 65.128828 64.131743 - H12 7.798509 63.657016 64.167885 - H21 9.055890 66.383154 64.194829 - H22 9.923563 64.911341 64.230972 - C1 2.595337 27.739078 45.815122 - C2 1.671557 27.170289 46.599998 - H11 2.387281 28.491474 45.152087 - H12 3.582595 27.466449 45.816122 - H21 0.684300 27.442917 46.598998 - H22 1.879614 26.417892 47.263033 - C1 72.145962 10.826428 29.308959 - C2 71.467415 11.861643 28.798250 - H11 72.593926 10.843924 30.229842 - H12 72.270346 9.935737 28.818854 - H21 71.343031 12.752334 29.288354 - H22 71.019450 11.844147 27.877367 - C1 64.922657 28.623763 15.401653 - C2 64.228011 28.430918 16.530014 - H11 65.792811 28.129864 15.182792 - H12 64.638431 29.280326 14.668751 - H21 64.512238 27.774356 17.262916 - H22 63.357857 28.924817 16.748874 - C1 63.804498 28.822925 68.574986 - C2 64.109040 27.597941 68.128231 - H11 64.465754 29.605065 68.573702 - H12 62.886365 29.074047 68.953103 - H21 65.027173 27.346818 67.750114 - H22 63.447784 26.815801 68.129516 - C1 49.359825 33.108967 21.414071 - C2 48.628953 34.158745 21.018199 - H11 48.953852 32.209942 21.689649 - H12 50.382281 33.122515 21.472408 - H21 47.606497 34.145197 20.959862 - H22 49.034926 35.057770 20.742621 - C1 47.287302 19.747738 33.302294 - C2 45.953469 19.664292 33.385032 - H11 47.832573 19.336670 32.538942 - H12 47.867108 20.229193 33.995858 - H21 45.373663 19.182837 32.691468 - H22 45.408198 20.075361 34.148384 - C1 20.803249 7.143817 39.882737 - C2 19.566002 7.127480 40.394474 - H11 21.346654 6.296888 39.691885 - H12 21.303449 8.004527 39.641944 - H21 19.065802 6.266769 40.635267 - H22 19.022597 7.974409 40.585327 - C1 48.251338 70.279391 31.424040 - C2 49.156067 69.881663 30.520603 - H11 48.345396 71.135509 31.978314 - H12 47.394149 69.758753 31.631808 - H21 50.013255 70.402301 30.312836 - H22 49.062008 69.025545 29.966329 - C1 51.925486 44.404591 46.168815 - C2 50.631653 44.625487 45.904008 - H11 52.424474 44.840450 46.949867 - H12 52.517834 43.782409 45.611126 - H21 50.039305 45.247669 46.461698 - H22 50.132665 44.189628 45.122957 - C1 78.583297 32.443675 30.282834 - C2 77.286348 32.122016 30.196940 - H11 79.133100 32.348294 31.141684 - H12 79.127460 32.810372 29.496434 - H21 76.742185 31.755320 30.983340 - H22 76.736545 32.217397 29.338090 - C1 8.764308 57.748285 53.964295 - C2 10.096576 57.628666 54.024903 - H11 8.287381 58.598021 53.648869 - H12 8.117478 56.999447 54.228599 - H21 10.743406 58.377504 53.760599 - H22 10.573503 56.778930 54.340329 - C1 67.758697 47.671412 41.867843 - C2 67.896082 48.964585 42.186823 - H11 67.413704 47.347376 40.959557 - H12 67.987808 46.904667 42.507073 - H21 67.666971 49.731330 41.547593 - H22 68.241076 49.288621 43.095109 - C1 48.040583 72.465296 18.067365 - C2 48.831919 71.472120 17.642735 - H11 48.386532 73.397843 18.311659 - H12 47.027150 72.370484 18.181244 - H21 49.845351 71.566933 17.528857 - H22 48.485970 70.539573 17.398442 - C1 49.119542 3.321990 49.115032 - C2 49.806141 4.344587 49.640198 - H11 49.453431 2.765168 48.322902 - H12 48.206513 3.016261 49.464191 - H21 50.719169 4.650316 49.291039 - H22 49.472251 4.901408 50.432328 - C1 73.804063 17.926674 24.372109 - C2 73.292626 18.345376 25.536601 - H11 74.187119 16.987695 24.228617 - H12 73.852398 18.512482 23.533362 - H21 73.244291 17.759568 26.375348 - H22 72.909570 19.284355 25.680092 - C1 43.381651 74.271718 25.878720 - C2 42.894187 74.607263 27.079849 - H11 43.343280 73.321218 25.499140 - H12 43.831192 74.939189 25.245159 - H21 42.444646 73.939792 27.713409 - H22 42.932558 75.557763 27.459429 - C1 65.796250 5.281625 18.008767 - C2 65.510713 4.031901 17.622013 - H11 65.953540 6.053367 17.354033 - H12 65.879809 5.564013 18.989725 - H21 65.427155 3.749512 16.641055 - H22 65.353424 3.260158 18.276748 - C1 42.563988 31.310973 52.605013 - C2 43.254708 32.292762 53.198240 - H11 42.932029 30.749023 51.831863 - H12 41.613330 31.044794 52.877782 - H21 44.205365 32.558941 52.925471 - H22 42.886666 32.854712 53.971390 - C1 36.100294 29.073945 48.840675 - C2 34.801430 28.778565 48.977146 - H11 36.626509 29.633136 49.518470 - H12 36.669658 28.763903 48.047768 - H21 34.232065 29.088607 49.770054 - H22 34.275215 28.219373 48.299351 - C1 16.321997 5.852634 15.072798 - C2 15.163813 5.636253 14.436629 - H11 16.465189 5.655806 16.067663 - H12 17.155721 6.231978 14.614534 - H21 14.330089 5.256909 14.894892 - H22 15.020620 5.833082 13.441763 - C1 11.963124 15.010492 62.089563 - C2 12.546106 13.932646 62.629286 - H11 10.948307 15.122339 62.008072 - H12 12.486201 15.807798 61.715803 - H21 12.023028 13.135340 63.003047 - H22 13.560923 13.820799 62.710777 - C1 20.147885 66.637862 67.502127 - C2 21.317491 67.255349 67.293194 - H11 19.249803 67.128489 67.543815 - H12 20.059416 65.626391 67.636672 - H21 21.405960 68.266821 67.158649 - H22 22.215573 66.764723 67.251505 - C1 17.804664 9.606720 30.533566 - C2 17.719011 8.295711 30.275036 - H11 18.208258 10.285700 29.881567 - H12 17.473318 10.033566 31.403633 - H21 18.050357 7.868865 29.404969 - H22 17.315418 7.616731 30.927035 - C1 78.655769 46.629286 54.757145 - C2 78.192198 45.484226 54.240560 - H11 78.128025 47.507023 54.748903 - H12 79.574532 46.717397 55.201123 - H21 77.273435 45.396116 53.796583 - H22 78.719942 44.606490 54.248802 - C1 10.149778 46.143595 10.119351 - C2 9.594499 44.941878 10.320506 - H11 9.688246 47.026107 10.358444 - H12 11.079682 46.274720 9.710587 - H21 8.664595 44.810753 10.729270 - H22 10.056030 44.059366 10.081414 - C1 35.263783 38.004408 57.993765 - C2 36.399609 37.343012 57.738076 - H11 34.711528 37.869904 58.845779 - H12 34.857981 38.696793 57.357424 - H21 36.805411 36.650626 58.374417 - H22 36.951864 37.477516 56.886062 - C1 70.382569 59.433050 40.189444 - C2 71.465335 58.664197 40.017968 - H11 69.423767 59.092209 40.073126 - H12 70.428068 60.422411 40.450401 - H21 71.419836 57.674836 39.757011 - H22 72.424137 59.005038 40.134286 - C1 31.355275 55.630030 30.217667 - C2 32.245829 54.633497 30.135463 - H11 31.617166 56.619194 30.262066 - H12 30.342210 55.481432 30.242606 - H21 33.258893 54.782095 30.110523 - H22 31.983937 53.644333 30.091064 - C1 17.664376 59.086183 20.517920 - C2 17.690787 60.423153 20.586741 - H11 16.821885 58.528591 20.686153 - H12 18.484591 58.516054 20.291637 - H21 16.870572 60.993282 20.813024 - H22 18.533278 60.980745 20.418508 - C1 65.891190 77.847981 73.920562 - C2 66.084338 77.409371 75.170857 - H11 64.989870 77.796270 73.436878 - H12 66.629592 78.269655 73.349636 - H21 65.345936 76.987697 75.741784 - H22 66.985659 77.461081 75.654542 - C1 11.029744 62.810065 70.063349 - C2 11.034116 61.497145 70.326301 - H11 10.174795 63.351628 69.905943 - H12 11.881005 63.375938 69.998957 - H21 10.182855 60.931272 70.390692 - H22 11.889064 60.955583 70.483707 - C1 48.815436 15.812040 44.111147 - C2 49.673903 15.768702 45.137830 - H11 48.134322 16.564906 43.975940 - H12 48.772441 15.095730 43.380356 - H21 49.716898 16.485013 45.868620 - H22 50.355017 15.015837 45.273036 - C1 59.419318 42.167323 13.968977 - C2 60.466239 42.979361 13.775400 - H11 58.494028 42.332029 13.561897 - H12 59.461540 41.317670 14.539338 - H21 60.424017 43.829014 13.205040 - H22 61.391529 42.814655 14.182481 - C1 20.699955 73.354322 53.034549 - C2 21.444844 72.282271 52.736609 - H11 19.986000 73.737658 52.408190 - H12 20.785604 73.875250 53.912217 - H21 21.359195 71.761342 51.858940 - H22 22.158799 71.898934 53.362967 - C1 31.600507 38.541602 27.596170 - C2 30.669087 38.621324 26.637513 - H11 31.523849 39.018917 28.499108 - H12 32.462808 37.997044 27.501849 - H21 29.806785 39.165882 26.731834 - H22 30.745744 38.144009 25.734574 - C1 70.984111 18.275804 3.071668 - C2 70.007198 18.035754 3.955374 - H11 71.299345 19.217299 2.820234 - H12 71.492895 17.536790 2.577704 - H21 69.498414 18.774768 4.449338 - H22 69.691964 17.094259 4.206808 - C1 23.417934 46.799072 26.241177 - C2 23.044894 48.084872 26.219278 - H11 22.824816 46.033245 25.908424 - H12 24.325708 46.480337 26.592402 - H21 22.137121 48.403606 25.868053 - H22 23.638012 48.850698 26.552031 - C1 73.643991 1.854793 26.141801 - C2 74.415102 2.949214 26.118312 - H11 73.588124 1.186620 25.367574 - H12 73.049434 1.599832 26.935842 - H21 75.009659 3.204175 25.324271 - H22 74.470969 3.617387 26.892538 - C1 11.090998 73.729390 20.803661 - C2 10.175784 72.985218 20.170011 - H11 11.753924 73.349453 21.485702 - H12 11.200046 74.737029 20.656097 - H21 10.066735 71.977578 20.317575 - H22 9.512857 73.365155 19.487970 - C1 65.593952 21.118524 2.153587 - C2 65.494619 20.779619 0.862000 - H11 64.783747 21.274713 2.760362 - H12 66.487944 21.248197 2.636254 - H21 64.600627 20.649946 0.379334 - H22 66.304824 20.623429 0.255225 - C1 24.304221 51.187099 66.580686 - C2 23.286496 52.019914 66.832830 - H11 25.288677 51.454677 66.671531 - H12 24.178207 50.217050 66.277159 - H21 23.412510 52.989963 67.136356 - H22 22.302040 51.752336 66.741985 - C1 57.054002 17.634753 4.431546 - C2 57.845121 18.710816 4.335944 - H11 56.111898 17.589211 4.032334 - H12 57.328804 16.772645 4.911399 - H21 57.570318 19.572923 3.856091 - H22 58.787224 18.756358 4.735156 - C1 43.007439 39.321477 20.030126 - C2 42.915500 40.126468 21.096173 - H11 43.445659 38.396152 20.057341 - H12 42.646770 39.567799 19.103710 - H21 43.276169 39.880146 22.022589 - H22 42.477280 41.051793 21.068958 - C1 66.206498 63.028620 17.222710 - C2 65.181180 63.863278 17.434819 - H11 66.329913 62.146009 17.727458 - H12 66.947929 63.207204 16.539050 - H21 64.439749 63.684693 18.118479 - H22 65.057765 64.745888 16.930072 - C1 7.565612 32.165768 49.031309 - C2 8.179631 33.252865 48.547447 - H11 8.060642 31.392945 49.485944 - H12 6.552662 32.021636 48.984807 - H21 9.192581 33.396998 48.593949 - H22 7.684601 34.025688 48.092812 - C1 50.806819 39.457610 1.021789 - C2 51.597670 38.377208 1.007461 - H11 49.784279 39.409438 0.988682 - H12 51.162282 40.417093 1.066982 - H21 51.242206 37.417725 0.962268 - H22 52.620209 38.425381 1.040568 - C1 9.309972 17.982330 30.068825 - C2 8.762888 16.826207 29.672594 - H11 9.193627 18.864974 29.562458 - H12 9.887776 18.074866 30.909410 - H21 8.185083 16.733672 28.832009 - H22 8.879232 15.943563 30.178961 - C1 20.787834 28.071291 60.654777 - C2 20.064147 29.018194 61.265164 - H11 21.501963 27.511957 61.130351 - H12 20.684129 27.831920 59.664347 - H21 20.167852 29.257565 62.255593 - H22 19.350018 29.577527 60.789590 - C1 12.340580 78.234949 55.288629 - C2 11.227331 78.017078 56.000057 - H11 12.503192 77.837903 54.358621 - H12 13.116984 78.815768 55.618555 - H21 10.450928 77.436259 55.670131 - H22 11.064719 78.414124 56.930065 - C1 28.554232 6.668410 67.966604 - C2 29.254285 5.527790 67.923793 - H11 28.856756 7.534135 67.510530 - H12 27.661221 6.764787 68.458789 - H21 30.147297 5.431413 67.431608 - H22 28.951762 4.662065 68.379867 - C1 61.692058 39.472927 21.478875 - C2 62.065408 40.580576 20.825694 - H11 61.119065 38.735442 21.058401 - H12 61.950133 39.276121 22.450301 - H21 61.807332 40.777382 19.854269 - H22 62.638400 41.318062 21.246169 - C1 12.732059 32.364265 2.573186 - C2 11.404633 32.295552 2.411508 - H11 13.403763 32.113394 1.841831 - H12 13.180026 32.673094 3.440916 - H21 10.956666 31.986723 1.543779 - H22 10.732928 32.546423 3.142864 - C1 26.244177 35.612533 2.620514 - C2 27.206311 35.456395 1.702451 - H11 25.781218 36.506931 2.806861 - H12 25.895585 34.849836 3.208545 - H21 27.554903 36.219092 1.114419 - H22 27.669270 34.561997 1.516104 - C1 67.445336 78.226740 64.484068 - C2 66.908368 77.123029 65.019239 - H11 68.454040 78.370755 64.380246 - H12 66.889560 79.013695 64.136479 - H21 67.464144 76.336074 65.366829 - H22 65.899663 76.979014 65.123062 - C1 78.402648 56.186269 11.350052 - C2 78.253721 54.875909 11.118328 - H11 78.293203 56.903592 10.627229 - H12 78.637712 56.574224 12.268333 - H21 78.018657 54.487954 10.200047 - H22 78.363166 54.158586 11.841151 - C1 61.632455 38.423277 5.270807 - C2 60.763567 39.380146 4.921012 - H11 61.975669 37.707928 4.623131 - H12 62.022139 38.331515 6.213531 - H21 60.373882 39.471908 3.978288 - H22 60.420353 40.095494 5.568689 - C1 7.860160 19.271835 42.399107 - C2 7.072984 18.314781 42.906378 - H11 8.878408 19.187011 42.328538 - H12 7.505887 20.163925 42.041797 - H21 7.427257 17.422691 43.263688 - H22 6.054736 18.399605 42.976947 - C1 69.856904 63.479525 9.222674 - C2 68.611912 63.788933 9.606315 - H11 70.484864 64.140701 8.756287 - H12 70.279085 62.557365 9.365463 - H21 68.189731 64.711093 9.463526 - H22 67.983953 63.127757 10.072702 - C1 17.769326 48.281076 21.555333 - C2 18.268754 47.279007 22.289738 - H11 17.609839 49.224321 21.921197 - H12 17.507550 48.183067 20.570005 - H21 18.530530 47.377016 23.275066 - H22 18.428241 46.335762 21.923873 - C1 17.521888 46.051716 28.925489 - C2 17.896999 46.497237 27.719784 - H11 17.008970 45.177029 29.069856 - H12 17.718403 46.550611 29.798123 - H21 17.700484 45.998343 26.847150 - H22 18.409916 47.371924 27.575418 - C1 26.801146 64.254449 12.097853 - C2 25.535387 64.690871 12.115461 - H11 27.061172 63.284011 11.898752 - H12 27.608777 64.856768 12.282102 - H21 24.727756 64.088552 11.931212 - H22 25.275362 65.661309 12.314562 - C1 53.703777 10.351674 4.839083 - C2 52.619897 11.001346 5.281860 - H11 53.701437 9.360987 4.579200 - H12 54.620359 10.794367 4.725488 - H21 51.703315 10.558653 5.395455 - H22 52.622236 11.992032 5.541742 - C1 37.137315 38.446157 54.349853 - C2 37.408881 39.075052 53.199347 - H11 36.222719 38.479835 54.809618 - H12 37.822847 37.882012 54.860528 - H21 36.723349 39.639197 52.688671 - H22 38.323477 39.041374 52.739582 - C1 55.599686 70.820901 15.377027 - C2 54.741562 70.732627 16.401112 - H11 56.150128 71.659991 15.172221 - H12 55.773064 70.056270 14.718026 - H21 54.568184 71.497259 17.060114 - H22 54.191120 69.893537 16.605918 - C1 17.526341 22.731937 1.906455 - C2 17.865319 21.441296 2.017175 - H11 16.556787 23.060098 1.870680 - H12 18.209970 23.492421 1.848838 - H21 17.181690 20.680812 2.074792 - H22 18.834873 21.113135 2.052950 - C1 34.097808 8.796385 68.772432 - C2 34.892076 9.872949 68.827836 - H11 33.078834 8.840984 68.865742 - H12 34.446824 7.843716 68.632388 - H21 34.543060 10.825618 68.967879 - H22 35.911050 9.828350 68.734525 - C1 60.946794 63.231825 72.344503 - C2 62.253629 63.449421 72.538808 - H11 60.307781 62.931889 73.086598 - H12 60.483503 63.348222 71.438513 - H21 62.716920 63.333024 73.444797 - H22 62.892642 63.749357 71.796713 - C1 54.902971 28.779128 43.007308 - C2 54.966537 29.843963 42.197983 - H11 54.503448 28.809275 43.949898 - H12 55.248877 27.850803 42.747376 - H21 54.620631 30.772288 42.457915 - H22 55.366060 29.813816 41.255393 - C1 0.229781 47.059384 31.226107 - C2 0.237462 45.723902 31.129405 - H11 0.387336 47.562930 32.103957 - H12 0.065748 47.682303 30.429823 - H21 0.401495 45.100982 31.925689 - H22 0.079907 45.220356 30.251555 - C1 70.220985 29.246484 37.297574 - C2 70.858094 29.570010 38.429981 - H11 69.220564 29.406185 37.147057 - H12 70.684012 28.813891 36.492917 - H21 70.395068 30.002603 39.234638 - H22 71.858516 29.410308 38.580497 - C1 60.544323 41.057521 37.139645 - C2 61.816908 40.914342 37.530730 - H11 59.780026 41.293145 37.779437 - H12 60.235207 40.942667 36.169975 - H21 62.126025 41.029196 38.500400 - H22 62.581206 40.678719 36.890938 - C1 7.385966 55.097720 56.755726 - C2 8.534538 54.439151 56.955703 - H11 6.625477 55.127699 57.441117 - H12 7.177645 55.623238 55.901655 - H21 8.742858 53.913633 57.809774 - H22 9.295026 54.409172 56.270311 - C1 51.845029 6.023950 24.389002 - C2 52.145689 5.864204 23.094010 - H11 52.081535 6.864616 24.924118 - H12 51.354919 5.318027 24.946201 - H21 52.635799 6.570126 22.536812 - H22 51.909183 5.023538 22.558894 - C1 2.296128 56.183154 23.894974 - C2 2.116690 57.229977 24.710379 - H11 2.075741 56.202006 22.894936 - H12 2.667870 55.281317 24.207227 - H21 1.744949 58.131814 24.398127 - H22 2.337077 57.211125 25.710418 - C1 49.524557 37.253475 61.021848 - C2 49.484761 36.013519 61.525681 - H11 50.372808 37.679988 60.637710 - H12 48.709875 37.872853 60.981008 - H21 50.299443 35.394141 61.566522 - H22 48.636511 35.587006 61.909819 - C1 4.003846 74.874593 78.171276 - C2 4.319473 73.782604 78.878991 - H11 4.012418 75.821869 78.560631 - H12 3.729047 74.848399 77.184968 - H21 4.594272 73.808798 79.865299 - H22 4.310902 72.835328 78.489636 - C1 31.872735 48.167807 66.309564 - C2 31.262429 49.336139 66.545033 - H11 32.535318 48.021328 65.542406 - H12 31.724940 47.328807 66.878106 - H21 31.410224 50.175139 65.976490 - H22 30.599846 49.482618 67.312191 - C1 20.240997 69.062983 48.578686 - C2 20.508067 67.793304 48.247764 - H11 20.598267 69.512656 49.426717 - H12 19.658455 69.684273 48.009785 - H21 21.090609 67.172014 48.816664 - H22 20.150797 67.343631 47.399733 - C1 11.780471 60.450811 50.838768 - C2 12.306681 61.681013 50.787519 - H11 12.338828 59.602970 50.974441 - H12 10.778261 60.260987 50.746324 - H21 13.308892 61.870836 50.879963 - H22 11.748325 62.528854 50.651846 - C1 65.305257 71.890333 50.840622 - C2 64.993703 72.748372 51.820226 - H11 66.238884 71.487239 50.718725 - H12 64.634422 71.569678 50.136233 - H21 65.664538 73.069027 52.524615 - H22 64.060076 73.151466 51.942123 - C1 5.058328 64.432185 39.558136 - C2 6.378348 64.287774 39.730229 - H11 4.586897 65.341324 39.543214 - H12 4.416336 63.644856 39.427899 - H21 7.020340 65.075103 39.860465 - H22 6.849779 63.378635 39.745150 - C1 22.205984 12.135006 77.884874 - C2 22.124818 10.884851 77.412172 - H11 21.387675 12.702059 78.125345 - H12 23.092755 12.622446 78.043123 - H21 21.238047 10.397411 77.253923 - H22 22.943126 10.317798 77.171702 - C1 23.868616 6.668209 59.688960 - C2 24.210087 5.920523 60.745977 - H11 23.547651 6.275197 58.799282 - H12 23.901554 7.691886 59.687054 - H21 24.177150 4.896846 60.747883 - H22 24.531053 6.313535 61.635655 - C1 49.044545 50.761409 57.404198 - C2 48.533206 51.397721 58.465593 - H11 48.738940 49.831782 57.101869 - H12 49.781459 51.154313 56.811250 - H21 47.796291 51.004817 59.058542 - H22 48.838810 52.327348 58.767922 - C1 57.083420 24.274349 77.973997 - C2 56.456982 24.662626 79.091914 - H11 57.742909 23.491497 77.939054 - H12 56.952325 24.729692 77.065988 - H21 56.588077 24.207283 79.999923 - H22 55.797493 25.445478 79.126857 - C1 15.287095 42.687319 40.849017 - C2 14.002184 42.672998 40.472560 - H11 15.738937 41.913379 41.344858 - H12 15.919063 43.473340 40.670713 - H21 13.370216 41.886978 40.650864 - H22 13.550341 43.446938 39.976718 - C1 61.635186 10.257077 54.411322 - C2 61.220325 11.530182 54.407718 - H11 62.605747 9.978916 54.239154 - H12 61.014557 9.461385 54.586531 - H21 61.840954 12.325874 54.232509 - H22 60.249764 11.808344 54.579886 - C1 71.947400 12.982067 20.368409 - C2 71.914039 14.177598 19.766319 - H11 71.705395 12.105502 19.897164 - H12 72.217544 12.850211 21.347510 - H21 71.643894 14.309454 18.787218 - H22 72.156043 15.054163 20.237564 - C1 57.575399 65.211278 5.174228 - C2 57.341432 64.002698 5.701026 - H11 57.408298 66.088162 5.676378 - H12 57.939849 65.353818 4.227728 - H21 56.976982 63.860158 6.647526 - H22 57.508533 63.125814 5.198876 - C1 45.681580 72.582125 6.722450 - C2 46.455678 73.121943 7.672339 - H11 45.139658 73.136398 6.053043 - H12 45.570556 71.572520 6.590635 - H21 46.566702 74.131548 7.804154 - H22 46.997600 72.567670 8.341746 - C1 74.967648 31.446035 69.260802 - C2 76.146352 30.814128 69.326149 - H11 74.783097 32.233425 68.632342 - H12 74.157972 31.191654 69.834143 - H21 76.956027 31.068510 68.752808 - H22 76.330903 30.026738 69.954609 - C1 36.874854 70.608206 30.552186 - C2 35.681696 70.871259 30.004375 - H11 37.763944 70.901562 30.136896 - H12 36.992183 70.092968 31.429549 - H21 35.564367 71.386498 29.127011 - H22 34.792606 70.577903 30.419665 - C1 69.365335 60.404909 79.474801 - C2 68.828677 59.182701 79.369308 - H11 70.373211 60.583948 79.441137 - H12 68.810124 61.256790 79.597448 - H21 69.383889 58.330820 79.246662 - H22 67.820801 59.003662 79.402973 - C1 38.639217 51.775514 73.021055 - C2 37.578628 52.592870 73.019886 - H11 39.449101 51.902162 73.635101 - H12 38.723930 50.959436 72.407995 - H21 37.493915 53.408949 73.632946 - H22 36.768744 52.466223 72.405840 - C1 55.975308 42.481499 27.084613 - C2 56.978863 42.293716 27.950948 - H11 55.079976 42.907534 27.341282 - H12 56.024151 42.213856 26.097200 - H21 56.930020 42.561358 28.938362 - H22 57.874195 41.867681 27.694280 - C1 43.777653 33.073672 33.043408 - C2 43.298572 34.285354 33.352003 - H11 43.182905 32.255749 32.881298 - H12 44.776502 32.869554 32.945221 - H21 42.299723 34.489472 33.450190 - H22 43.893320 35.103277 33.514113 - C1 51.129979 25.789098 9.050619 - C2 49.819303 25.796839 9.324459 - H11 51.603553 26.536565 8.534844 - H12 51.761949 25.035102 9.335414 - H21 49.187333 26.550835 9.039664 - H22 49.345729 25.049372 9.840235 - C1 8.354039 32.051729 60.124066 - C2 8.565001 32.238782 61.433046 - H11 7.429872 32.112088 59.686716 - H12 9.100262 31.833592 59.457305 - H21 7.818778 32.456919 62.099807 - H22 9.489168 32.178422 61.870396 - C1 46.599375 39.919357 68.571901 - C2 47.435308 39.252342 69.377648 - H11 46.888199 40.709830 67.988174 - H12 45.605450 39.691506 68.475988 - H21 48.429234 39.480193 69.473561 - H22 47.146484 38.461869 69.961375 - C1 61.201340 71.945937 36.780146 - C2 60.987618 70.807403 36.108594 - H11 60.973881 72.872497 36.407649 - H12 61.609071 71.979721 37.719091 - H21 60.579887 70.773618 35.169649 - H22 61.215077 69.880843 36.481091 - C1 28.250321 2.494736 28.947870 - C2 28.894067 3.484262 28.315928 - H11 27.345944 2.616011 29.413057 - H12 28.611703 1.538806 29.015720 - H21 28.532685 4.440192 28.248078 - H22 29.798444 3.362987 27.850740 - C1 21.285311 77.447868 54.071650 - C2 20.441466 78.476010 53.917474 - H11 21.280522 76.618388 53.470865 - H12 22.001876 77.410121 54.802481 - H21 19.724901 78.513757 53.186643 - H22 20.446255 79.305491 54.518259 - C1 74.669613 34.134603 41.401256 - C2 74.163188 32.896196 41.454196 - H11 75.653105 34.350997 41.588127 - H12 74.113285 34.962794 41.169732 - H21 74.719516 32.068005 41.685721 - H22 73.179696 32.679802 41.267326 - C1 77.935013 73.276433 64.725556 - C2 78.395217 73.884269 65.826315 - H11 76.940815 73.218186 64.486433 - H12 78.541034 72.821977 64.036200 - H21 77.789196 74.338725 66.515671 - H22 79.389416 73.942516 66.065438 - C1 10.504812 7.950808 25.582722 - C2 9.343440 7.907814 24.917675 - H11 11.086488 7.126068 25.757255 - H12 10.902743 8.811812 25.969151 - H21 8.945510 7.046810 24.531246 - H22 8.761765 8.732554 24.743142 - C1 38.537315 66.266480 57.261231 - C2 39.102248 66.105018 56.058027 - H11 38.158839 67.158777 57.592239 - H12 38.439276 65.510375 57.945116 - H21 39.200287 66.861122 55.374142 - H22 39.480725 65.212721 55.727019 - C1 30.094699 56.292927 56.084811 - C2 28.950628 56.476116 55.413645 - H11 31.014895 56.267137 55.635835 - H12 30.139517 56.164199 57.099909 - H21 28.905810 56.604844 54.398547 - H22 28.030433 56.501905 55.862621 - C1 11.301703 23.398528 48.710910 - C2 11.425696 24.698738 48.415953 - H11 12.046746 22.843800 49.142409 - H12 10.452073 22.856540 48.528203 - H21 12.275326 25.240726 48.598660 - H22 10.680653 25.253466 47.984454 - C1 74.451118 72.023925 65.868684 - C2 75.194167 71.034740 65.356519 - H11 73.438502 71.956264 66.006650 - H12 74.836979 72.925953 66.162725 - H21 74.808306 70.132712 65.062479 - H22 76.206783 71.102401 65.218553 - C1 74.899888 15.097993 47.757024 - C2 74.191016 15.659727 46.769666 - H11 75.313394 14.163083 47.694092 - H12 75.084310 15.559085 48.652784 - H21 74.006594 15.198634 45.873906 - H22 73.777511 16.594637 46.832599 - C1 25.480775 71.450127 53.787221 - C2 25.156902 72.664161 54.249983 - H11 26.432079 71.071460 53.812418 - H12 24.802654 70.804768 53.371688 - H21 25.835022 73.309520 54.665516 - H22 24.205597 73.042828 54.224786 - C1 18.232590 25.930183 9.301224 - C2 18.570792 24.643108 9.449475 - H11 18.239540 26.415632 8.399395 - H12 17.940370 26.530370 10.078004 - H21 18.863012 24.042922 8.672695 - H22 18.563842 24.157659 10.351304 - C1 35.534195 40.858307 77.915233 - C2 35.189869 41.857845 78.736989 - H11 36.505128 40.604075 77.711129 - H12 34.853698 40.269437 77.426193 - H21 35.870366 42.446714 79.226029 - H22 34.218935 42.112077 78.941093 - C1 51.930564 40.624346 25.123512 - C2 53.111451 40.618680 24.492327 - H11 51.833641 40.555411 26.140792 - H12 51.031419 40.698060 24.638632 - H21 54.010595 40.544966 24.977208 - H22 53.208373 40.687615 23.475047 - C1 29.360953 41.057375 10.313621 - C2 29.795041 39.790696 10.317256 - H11 29.986122 41.868604 10.322321 - H12 28.369635 41.314578 10.301855 - H21 30.786359 39.533493 10.329022 - H22 29.169872 38.979468 10.308555 - C1 46.079623 33.891370 8.702870 - C2 44.915349 33.956614 8.044742 - H11 46.642302 33.038352 8.771837 - H12 46.498997 34.689355 9.189027 - H21 44.495975 33.158629 7.558585 - H22 44.352669 34.809631 7.975776 - C1 72.466164 14.952613 25.334641 - C2 71.627575 14.038548 25.838798 - H11 72.181973 15.667864 24.658878 - H12 73.457698 15.008369 25.585154 - H21 70.636041 13.982793 25.588285 - H22 71.911766 13.323298 26.514561 - C1 47.974332 46.603840 13.626774 - C2 48.876515 45.637682 13.413405 - H11 48.166228 47.598720 13.477129 - H12 47.021453 46.423905 13.956394 - H21 49.829394 45.817617 13.083785 - H22 48.684619 44.642802 13.563050 - C1 19.010589 65.516978 56.741963 - C2 17.834048 64.920558 56.972085 - H11 19.904986 65.017962 56.735511 - H12 19.108594 66.519068 56.554309 - H21 17.736044 63.918467 57.159738 - H22 16.939652 65.419573 56.978537 - C1 43.110944 22.468263 54.864330 - C2 44.146783 23.309083 54.978258 - H11 42.578837 22.115935 55.665411 - H12 42.769329 22.111368 53.967152 - H21 44.488397 23.665978 55.875437 - H22 44.678890 23.661411 54.177177 - C1 16.893460 63.021030 59.036723 - C2 18.185825 62.680547 58.954345 - H11 16.506932 63.591373 59.794555 - H12 16.189891 62.737882 58.348377 - H21 18.889394 62.963696 59.642692 - H22 18.572353 62.110205 58.196514 - C1 27.197519 70.324128 60.208370 - C2 27.832560 69.185635 60.514109 - H11 26.773779 70.939964 60.908510 - H12 27.085606 70.668601 59.250342 - H21 27.944473 68.841162 61.472137 - H22 28.256300 68.569800 59.813969 - C1 65.394877 71.961185 21.869505 - C2 64.865643 70.733003 21.803144 - H11 66.302846 72.162421 22.298572 - H12 64.933311 72.795908 21.496412 - H21 65.327209 69.898280 22.176237 - H22 63.957673 70.531767 21.374077 - C1 43.591369 61.107340 79.697356 - C2 43.025024 62.319990 79.656698 - H11 43.056774 60.233776 79.687365 - H12 44.603670 60.958044 79.741641 - H21 42.012723 62.469286 79.612412 - H22 43.559618 63.193553 79.666689 - C1 20.918666 58.498337 27.018229 - C2 22.140929 59.039325 27.097766 - H11 20.736813 57.495946 27.123800 - H12 20.069550 59.044410 26.845568 - H21 22.990044 58.493252 27.270426 - H22 22.322781 60.041716 26.992194 - C1 2.050656 38.133764 49.133257 - C2 0.948350 38.888434 49.224450 - H11 2.999173 38.519663 49.113225 - H12 2.031923 37.111307 49.076368 - H21 0.967082 39.910890 49.281338 - H22 -0.000167 38.502535 49.244481 - C1 22.029660 62.997586 19.533831 - C2 22.257763 62.560877 18.288771 - H11 21.789145 62.379142 20.314013 - H12 22.077771 63.984389 19.803846 - H21 22.209652 61.574074 18.018756 - H22 22.498278 63.179321 17.508589 - C1 30.911455 49.724370 29.478841 - C2 31.093663 51.042405 29.328820 - H11 30.020250 49.306013 29.761213 - H12 31.648969 49.030978 29.323010 - H21 30.356148 51.735797 29.484650 - H22 31.984868 51.460762 29.046447 - C1 30.222227 7.017360 61.994817 - C2 30.303383 6.442944 60.788011 - H11 30.476347 7.993231 62.173987 - H12 29.899653 6.526003 62.833577 - H21 30.625957 6.934301 59.949251 - H22 30.049263 5.467072 60.608841 - C1 77.717495 39.764689 43.768581 - C2 78.161412 38.533100 43.487431 - H11 76.724755 40.000720 43.856677 - H12 78.335794 40.567493 43.917633 - H21 77.543113 37.730297 43.338379 - H22 79.154152 38.297069 43.399335 - C1 14.404925 51.174627 17.115821 - C2 13.115192 51.219382 16.758740 - H11 14.749292 50.647345 17.923527 - H12 15.148436 51.664159 16.609310 - H21 12.371681 50.729850 17.265251 - H22 12.770826 51.746664 15.951034 - C1 76.295226 77.801864 19.718125 - C2 76.855036 77.375716 18.578857 - H11 76.788734 77.826132 20.615267 - H12 75.329523 78.137049 19.781945 - H21 77.820739 77.040531 18.515038 - H22 76.361528 77.351448 17.681715 - C1 3.429771 25.637709 49.207638 - C2 3.852871 26.906150 49.137181 - H11 4.059190 24.830160 49.181180 - H12 2.443470 25.375339 49.293524 - H21 4.839172 27.168520 49.051295 - H22 3.223451 27.713699 49.163639 - C1 31.236198 39.071751 66.386804 - C2 30.047560 39.109366 67.002145 - H11 31.384315 39.389984 65.424623 - H12 32.090688 38.721791 66.829951 - H21 29.193070 39.459326 66.558998 - H22 29.899444 38.791133 67.964327 - C1 4.030270 58.446402 54.004275 - C2 5.266880 58.958321 54.044938 - H11 3.335456 58.589032 54.743122 - H12 3.682014 57.871973 53.231130 - H21 5.615136 59.532750 54.818083 - H22 5.961694 58.815691 53.306091 - C1 33.740564 63.266157 4.725906 - C2 33.400468 61.971236 4.746821 - H11 34.710365 63.595124 4.709462 - H12 33.057632 64.029442 4.724708 - H21 34.083400 61.207951 4.748019 - H22 32.430667 61.642269 4.763264 - C1 36.223888 45.134082 10.298863 - C2 35.066546 45.740143 10.005317 - H11 36.333612 44.116666 10.341622 - H12 37.090372 45.640292 10.503708 - H21 34.200062 45.233933 9.800472 - H22 34.956822 46.757559 9.962558 - C1 75.916900 53.444902 18.236506 - C2 74.642820 53.537259 17.835120 - H11 76.396770 54.178639 18.765995 - H12 76.511705 52.633262 18.045583 - H21 74.048015 54.348899 18.026043 - H22 74.162950 52.803522 17.305632 - C1 30.738565 26.518182 42.847428 - C2 30.212662 27.229260 41.842085 - H11 31.491140 26.863590 43.450194 - H12 30.429583 25.572986 43.092659 - H21 30.521643 28.174457 41.596854 - H22 29.460087 26.883852 41.239318 - C1 76.374482 19.585066 31.678706 - C2 75.156915 20.125896 31.812705 - H11 77.223827 20.136797 31.526355 - H12 76.552144 18.577150 31.718029 - H21 74.979254 21.133811 31.773381 - H22 74.307571 19.574165 31.965055 - C1 57.068534 69.884704 77.115968 - C2 57.823669 69.044879 77.835264 - H11 56.790461 69.704936 76.146761 - H12 56.709658 70.772856 77.478456 - H21 58.182545 68.156727 77.472776 - H22 58.101741 69.224646 78.804472 - C1 36.588001 63.750755 67.562086 - C2 37.164860 64.543825 66.650387 - H11 35.585112 63.765185 67.769474 - H12 37.104315 63.067378 68.123708 - H21 36.648546 65.227202 66.088765 - H22 38.167749 64.529395 66.442999 - C1 11.084541 57.571250 68.807569 - C2 10.319105 56.509652 69.090483 - H11 10.711172 58.461700 68.465959 - H12 12.103548 57.576247 68.910545 - H21 9.300098 56.504655 68.987507 - H22 10.692474 55.619202 69.432093 - C1 64.181147 24.039087 38.031495 - C2 64.158039 25.374798 38.122400 - H11 63.357948 23.448513 38.181725 - H12 65.023838 23.503001 37.804586 - H21 63.315347 25.910884 38.349309 - H22 64.981238 25.965372 37.972170 - C1 10.151723 31.885389 39.726969 - C2 8.998339 32.426703 40.138802 - H11 10.340576 31.632112 38.752706 - H12 10.935738 31.682074 40.353856 - H21 8.214323 32.630018 39.511916 - H22 8.809486 32.679981 41.113065 - C1 71.978958 79.107950 19.923092 - C2 71.469851 79.007427 18.688739 - H11 72.229193 79.999938 20.359834 - H12 72.158151 78.300753 20.527514 - H21 71.290658 79.814624 18.084317 - H22 71.219616 78.115439 18.251997 - C1 59.120397 33.153146 22.338839 - C2 59.957424 34.157434 22.049511 - H11 58.100658 33.248576 22.333470 - H12 59.434111 32.210607 22.588255 - H21 59.643710 35.099973 21.800096 - H22 60.977163 34.062004 22.054881 - C1 21.028577 44.155393 57.592682 - C2 20.349453 45.238529 57.990837 - H11 20.977890 43.250279 58.069341 - H12 21.652097 44.146891 56.780184 - H21 19.725933 45.247031 58.803336 - H22 20.400140 46.143643 57.514179 - C1 76.004585 19.995772 23.445758 - C2 76.300250 21.297289 23.553264 - H11 76.003489 19.488537 22.555974 - H12 75.756291 19.405190 24.244861 - H21 76.548545 21.887871 22.754160 - H22 76.301347 21.804524 24.443047 - C1 75.957052 70.328214 32.175329 - C2 77.042707 70.541168 32.929599 - H11 75.305959 69.552658 32.328939 - H12 75.692404 70.924145 31.385498 - H21 77.307355 69.945237 33.719429 - H22 77.693800 71.316723 32.775989 - C1 45.994652 1.133518 58.899198 - C2 45.556997 0.834059 60.128712 - H11 46.897042 0.820757 58.529231 - H12 45.461419 1.698870 58.232082 - H21 46.090229 0.268707 60.795828 - H22 44.654606 1.146820 60.498678 - C1 9.336163 38.508165 74.690150 - C2 9.185798 37.961166 73.477260 - H11 9.261154 37.976801 75.562521 - H12 9.538004 39.500917 74.840842 - H21 8.983958 36.968414 73.326568 - H22 9.260807 38.492529 72.604889 - C1 23.903785 13.917560 23.222746 - C2 24.272163 13.250264 22.121867 - H11 22.992089 13.801614 23.674819 - H12 24.504758 14.596365 23.699253 - H21 23.671191 12.571459 21.645359 - H22 25.183859 13.366211 21.669793 - C1 63.262991 74.445113 76.439558 - C2 64.304780 75.045401 77.028837 - H11 63.303639 73.499790 76.047491 - H12 62.343602 74.884097 76.334574 - H21 65.224168 74.606417 77.133822 - H22 64.264131 75.990724 77.420904 - C1 35.606743 15.098612 77.232079 - C2 36.514479 14.115915 77.175138 - H11 34.597301 14.932734 77.282231 - H12 35.850518 16.093384 77.229955 - H21 36.270705 13.121142 77.177262 - H22 37.523921 14.281792 77.124986 - C1 12.767525 61.513950 61.205480 - C2 12.698144 62.706645 61.810115 - H11 13.410022 60.770656 61.494819 - H12 12.183551 61.251215 60.406137 - H21 13.282118 62.969380 62.609458 - H22 12.055648 63.449939 61.520777 - C1 44.617675 41.918918 15.635173 - C2 45.086649 41.083231 14.699967 - H11 44.940265 42.885097 15.742122 - H12 43.899510 41.657634 16.317063 - H21 45.804814 41.344515 14.018078 - H22 44.764059 40.117052 14.593018 - C1 34.393445 13.201940 8.880115 - C2 35.173523 13.718085 7.921995 - H11 34.212494 12.198973 8.981692 - H12 33.916409 13.769543 9.586703 - H21 35.650560 13.150482 7.215407 - H22 35.354474 14.721052 7.820417 - C1 75.582580 34.460954 50.136019 - C2 76.248629 33.468443 50.739526 - H11 76.010434 35.096786 49.456562 - H12 74.592920 34.662297 50.306423 - H21 77.238289 33.267101 50.569121 - H22 75.820775 32.832611 51.418983 - C1 62.075425 41.894877 56.177696 - C2 63.259611 41.269966 56.167119 - H11 61.228110 41.492306 56.588789 - H12 61.923891 42.824554 55.775525 - H21 63.411145 40.340289 56.569290 - H22 64.106926 41.672537 55.756026 - C1 31.532650 1.037549 47.150194 - C2 30.201428 0.903286 47.097829 - H11 32.002658 1.914442 47.393411 - H12 32.185515 0.273906 46.951147 - H21 29.548562 1.666929 47.296877 - H22 29.731419 0.026393 46.854612 - C1 27.391769 11.659943 31.394182 - C2 26.979764 11.773779 30.125240 - H11 27.211544 12.367841 32.112098 - H12 27.919517 10.856026 31.746607 - H21 26.452016 12.577696 29.772815 - H22 27.159990 11.065881 29.407324 - C1 7.991525 44.770812 13.463485 - C2 8.625380 43.605741 13.279754 - H11 8.319915 45.497059 14.106703 - H12 7.128484 45.027293 12.975241 - H21 9.488420 43.349260 13.767998 - H22 8.296989 42.879494 12.636536 - C1 51.372109 61.131823 37.026280 - C2 52.114164 61.946235 36.265354 - H11 51.747072 60.305527 37.501297 - H12 50.371230 61.271170 37.193096 - H21 53.115042 61.806889 36.098537 - H22 51.739201 62.772531 35.790336 - C1 45.294713 35.496833 39.529495 - C2 44.615906 36.027687 38.504637 - H11 46.137130 35.920822 39.928959 - H12 45.024864 34.625074 39.994491 - H21 44.885755 36.899447 38.039641 - H22 43.773490 35.603698 38.105173 - C1 66.572899 42.065106 43.081136 - C2 65.484386 42.106716 43.859807 - H11 67.430815 41.567059 43.335957 - H12 66.633135 42.528054 42.169515 - H21 65.424151 41.643768 44.771428 - H22 64.626470 42.604763 43.604986 - C1 53.510728 72.367819 62.916112 - C2 53.756214 71.057657 62.789091 - H11 53.111775 72.788350 63.760501 - H12 53.702617 73.052397 62.178863 - H21 53.564326 70.373079 63.526340 - H22 54.155168 70.637126 61.944702 - C1 58.185252 19.004358 19.113785 - C2 59.205867 19.870530 19.081953 - H11 57.240628 19.232541 18.790335 - H12 58.268998 18.045566 19.464084 - H21 59.122121 20.829321 18.731654 - H22 60.150492 19.642346 19.405403 - C1 6.619524 65.384156 36.641650 - C2 7.566135 65.722051 35.756960 - H11 5.755492 65.917557 36.775582 - H12 6.685097 64.565744 37.253945 - H21 7.500561 66.540463 35.144665 - H22 8.430166 65.188651 35.623028 - C1 34.094521 40.406184 15.434817 - C2 33.627026 40.194988 16.671654 - H11 33.824511 39.840516 14.624806 - H12 34.758859 41.149995 15.201567 - H21 32.962689 39.451178 16.904903 - H22 33.897036 40.760657 17.481664 - C1 55.939477 21.787570 49.034913 - C2 56.752690 22.785454 49.403470 - H11 54.922216 21.884417 48.965596 - H12 56.270800 20.849019 48.793357 - H21 56.421367 23.724005 49.645027 - H22 57.769951 22.688608 49.472788 - C1 52.669383 10.463949 14.838326 - C2 52.667331 9.857615 16.032175 - H11 52.645710 11.481204 14.721553 - H12 52.694786 9.958131 13.948097 - H21 52.641927 10.363433 16.922403 - H22 52.691003 8.840360 16.148947 - C1 33.396436 39.329934 50.651104 - C2 33.361450 38.025456 50.351048 - H11 34.192723 39.937478 50.437044 - H12 32.629659 39.822706 51.118259 - H21 34.128226 37.532684 49.883893 - H22 32.565163 37.417913 50.565108 - C1 71.018584 8.408527 46.902009 - C2 70.192442 7.601917 46.223930 - H11 70.695950 9.186652 47.484616 - H12 72.038061 8.310769 46.891354 - H21 69.172965 7.699674 46.234585 - H22 70.515076 6.823791 45.641322 - C1 52.027019 8.927805 54.782656 - C2 50.977469 8.152265 55.082494 - H11 51.979659 9.949981 54.738885 - H12 52.959665 8.559789 54.573516 - H21 50.044823 8.520280 55.291633 - H22 51.024829 7.130088 55.126265 - C1 48.056759 57.100413 3.633618 - C2 47.242637 58.156352 3.756577 - H11 49.000561 57.065833 4.029909 - H12 47.799662 56.244317 3.133613 - H21 47.499734 59.012447 4.256582 - H22 46.298835 58.190931 3.360286 - C1 14.422944 3.224980 62.094032 - C2 15.622263 2.877498 62.577571 - H11 14.104186 4.195364 62.018189 - H12 13.730087 2.547694 61.762013 - H21 16.315120 3.554784 62.909589 - H22 15.941021 1.907114 62.653414 - C1 56.826499 45.296749 74.806886 - C2 55.519506 45.281625 75.097507 - H11 57.373447 46.157202 74.709559 - H12 57.381988 44.449053 74.659076 - H21 54.964017 46.129321 75.245317 - H22 54.972558 44.421172 75.194833 - C1 31.876741 56.262832 32.972864 - C2 33.163987 56.454910 33.287545 - H11 31.457337 55.336406 32.851048 - H12 31.210365 57.027241 32.829249 - H21 33.830363 55.690501 33.431160 - H22 33.583391 57.381336 33.409361 - C1 1.023469 34.139632 15.728270 - C2 1.899671 35.152113 15.736842 - H11 1.297909 33.154779 15.789509 - H12 0.009962 34.270468 15.659801 - H21 2.913179 35.021278 15.805311 - H22 1.625232 36.136967 15.675604 - C1 29.902323 50.161142 16.035963 - C2 28.661713 50.461674 16.440300 - H11 30.588376 50.864897 15.747754 - H12 30.262714 49.203891 15.983119 - H21 28.301323 51.418926 16.493145 - H22 27.975661 49.757919 16.728510 - C1 45.330030 61.185539 58.322023 - C2 45.825082 60.731814 57.163585 - H11 44.330978 61.186035 58.547627 - H12 45.911511 61.567757 59.073550 - H21 45.243601 60.349596 56.412058 - H22 46.824135 60.731318 56.937981 - C1 4.171915 67.480024 25.011701 - C2 3.506889 66.364215 25.336712 - H11 4.935076 67.866841 25.574694 - H12 3.969696 68.034383 24.174564 - H21 3.709108 65.809857 26.173849 - H22 2.743728 65.977399 24.773719 - C1 33.484099 52.792764 32.153354 - C2 33.356374 51.629938 31.501860 - H11 32.805978 53.131670 32.842048 - H12 34.269954 53.434690 32.014190 - H21 32.570519 50.988012 31.641024 - H22 34.034495 51.291032 30.813166 - C1 49.337554 41.628724 35.394523 - C2 50.278955 42.568127 35.238934 - H11 49.548150 40.639591 35.556595 - H12 48.332895 41.825481 35.363688 - H21 51.283614 42.371370 35.269769 - H22 50.068359 43.557261 35.076862 - C1 2.914591 23.259027 13.202182 - C2 2.105025 24.303071 12.984249 - H11 2.575495 22.310529 13.387572 - H12 3.936549 23.326883 13.200618 - H21 1.083068 24.235215 12.985813 - H22 2.444121 25.251569 12.798859 - C1 2.346618 2.299155 52.420384 - C2 1.236833 1.775193 51.884882 - H11 3.018979 2.860628 51.889647 - H12 2.610349 2.179639 53.402812 - H21 0.973101 1.894709 50.902454 - H22 0.564471 1.213720 52.415619 - C1 32.036065 4.590848 45.650378 - C2 30.918233 5.058476 46.220201 - H11 32.853945 5.173707 45.449500 - H12 32.161066 3.613550 45.370616 - H21 30.793232 6.035774 46.499962 - H22 30.100353 4.475617 46.421079 - C1 25.816877 21.627802 12.752972 - C2 27.109817 21.319120 12.591903 - H11 25.049411 21.023065 12.445901 - H12 25.493761 22.492910 13.195904 - H21 27.432933 20.454012 12.148972 - H22 27.877283 21.923857 12.898974 - C1 65.984471 71.714283 38.323412 - C2 65.391206 72.865177 37.982236 - H11 66.997433 71.567955 38.284704 - H12 65.471921 70.889842 38.649899 - H21 65.903756 73.689618 37.655750 - H22 64.378243 73.011504 38.020945 - C1 44.650992 7.885894 75.761625 - C2 44.579588 9.030078 76.453480 - H11 43.926343 7.575047 75.107972 - H12 45.435871 7.231632 75.831704 - H21 43.794709 9.684340 76.383402 - H22 45.304237 9.340926 77.107133 - C1 55.381200 41.399243 19.327293 - C2 56.283770 40.440438 19.084432 - H11 55.609507 42.287139 19.783934 - H12 54.391584 41.320090 19.075504 - H21 57.273387 40.519591 19.336222 - H22 56.055464 39.552543 18.627791 - C1 56.176470 69.418846 44.476016 - C2 55.028459 69.216631 43.817153 - H11 56.661246 70.320683 44.502218 - H12 56.660031 68.687576 45.005559 - H21 54.544898 69.947902 43.287609 - H22 54.543683 68.314795 43.790951 - C1 36.820215 64.672430 24.054566 - C2 37.501862 64.048282 23.085692 - H11 35.939496 65.170212 23.894717 - H12 37.125970 64.701111 25.031651 - H21 37.196107 64.019602 22.108607 - H22 38.382581 63.550500 23.245541 - C1 76.285549 1.778460 21.857772 - C2 75.436749 1.500553 22.855382 - H11 76.336793 2.692212 21.397951 - H12 76.950261 1.099121 21.476118 - H21 74.772037 2.179892 23.237036 - H22 75.385505 0.586801 23.315203 - C1 70.327328 19.885361 42.611244 - C2 71.614648 20.252476 42.580354 - H11 69.550910 20.551893 42.654992 - H12 70.017904 18.909171 42.593551 - H21 71.924073 21.228666 42.598047 - H22 72.391067 19.585944 42.536606 - C1 52.359416 68.579654 76.847223 - C2 51.998675 67.719330 77.807759 - H11 53.304981 68.963129 76.758586 - H12 51.718132 68.921853 76.125657 - H21 52.639959 67.377130 78.529326 - H22 51.053110 67.335854 77.896396 - C1 66.503705 69.876437 74.806865 - C2 67.779326 69.877057 75.213941 - H11 65.706256 69.918910 75.448172 - H12 66.225179 69.833441 73.822193 - H21 68.057852 69.920053 76.198613 - H22 68.576775 69.834583 74.572635 - C1 8.570245 39.219840 28.101279 - C2 7.894012 38.613064 27.117687 - H11 8.235975 39.271449 29.068028 - H12 9.474912 39.680041 27.964180 - H21 6.989344 38.152863 27.254786 - H22 8.228282 38.561456 26.150938 - C1 20.974112 21.653894 64.188157 - C2 21.831894 20.670460 63.888175 - H11 20.024231 21.709862 63.809214 - H12 21.200462 22.427442 64.820132 - H21 21.605544 19.896912 63.256199 - H22 22.781775 20.614491 64.267117 - C1 68.346761 73.651389 66.962915 - C2 69.349867 73.023334 66.336619 - H11 68.067360 73.447721 67.926999 - H12 67.780051 74.384815 66.527106 - H21 69.916577 72.289908 66.772429 - H22 69.629268 73.227002 65.372535 - C1 1.134633 53.572304 33.678603 - C2 1.811477 53.786743 32.543341 - H11 0.498253 52.781626 33.815905 - H12 1.200102 54.182105 34.498884 - H21 1.746008 53.176942 31.723061 - H22 2.447857 54.577421 32.406039 - C1 56.513986 57.224926 40.207030 - C2 56.394486 58.188802 41.128759 - H11 55.729890 56.880282 39.645410 - H12 57.398880 56.756550 39.991180 - H21 55.509593 58.657177 41.344609 - H22 57.178583 58.533446 41.690379 - C1 38.029829 37.268866 65.245666 - C2 38.941264 38.248540 65.196208 - H11 37.021857 37.430610 65.162986 - H12 38.269013 36.280777 65.370063 - H21 38.702080 39.236629 65.071811 - H22 39.949236 38.086796 65.278888 - C1 21.377225 20.486824 58.632256 - C2 22.656232 20.833939 58.441014 - H11 21.089705 19.591701 59.038571 - H12 20.585916 21.089158 58.387253 - H21 23.447542 20.231605 58.686018 - H22 22.943753 21.729061 58.034700 - C1 60.595849 36.580691 0.785752 - C2 59.338524 36.945589 1.066654 - H11 60.845085 35.971048 0.001392 - H12 61.407154 36.882546 1.333174 - H21 58.527219 36.643734 0.519231 - H22 59.089288 37.555232 1.851013 - C1 5.229830 70.148556 74.682851 - C2 6.076331 70.492938 73.704201 - H11 4.642971 70.821441 75.184674 - H12 5.102672 69.185187 75.006511 - H21 6.203489 71.456307 73.380541 - H22 6.663190 69.820053 73.202379 - C1 62.297915 69.334043 9.504433 - C2 62.536427 70.627323 9.756349 - H11 61.361133 68.954254 9.339501 - H12 63.033515 68.622964 9.456875 - H21 61.800826 71.338402 9.803907 - H22 63.473209 71.007112 9.921281 - C1 25.546689 43.068526 26.242519 - C2 26.105307 43.018280 27.458389 - H11 25.551238 43.906150 25.653138 - H12 25.070950 42.273284 25.806323 - H21 26.581046 43.813522 27.894585 - H22 26.100758 42.180656 28.047770 - C1 73.784130 30.201479 4.374645 - C2 72.898311 29.274036 3.989815 - H11 73.562022 30.957384 5.029076 - H12 74.753418 30.227863 4.044816 - H21 71.929022 29.247652 4.319645 - H22 73.120419 28.518131 3.335385 - C1 63.188500 55.102486 16.799624 - C2 64.498507 55.066607 17.074424 - H11 62.754947 55.817437 16.208117 - H12 62.517075 54.417798 17.159339 - H21 65.169932 55.751294 16.714709 - H22 64.932060 54.351656 17.665931 - C1 50.124122 64.688159 54.567243 - C2 50.033698 63.394243 54.234787 - H11 49.493038 65.146007 55.231406 - H12 50.831476 65.321717 54.183502 - H21 49.326344 62.760685 54.618528 - H22 50.664782 62.936396 53.570624 - C1 11.225254 62.270892 55.966518 - C2 10.874539 62.827970 54.800506 - H11 10.816570 62.539697 56.866366 - H12 11.929762 61.532197 56.050191 - H21 10.170031 63.566665 54.716833 - H22 11.283223 62.559165 53.900659 - C1 32.252802 10.447299 6.130697 - C2 30.914162 10.478088 6.126703 - H11 32.797797 9.580400 6.109006 - H12 32.836937 11.288228 6.155757 - H21 30.330027 9.637159 6.101643 - H22 30.369167 11.344986 6.148393 - C1 41.330176 22.316003 45.983447 - C2 42.156310 23.084692 45.262654 - H11 40.744744 22.674312 46.743637 - H12 41.218771 21.309313 45.831239 - H21 42.267715 24.091382 45.414863 - H22 42.741741 22.726383 44.502465 - C1 8.240048 66.452349 26.083348 - C2 8.425907 67.690151 25.607719 - H11 8.326062 65.608162 25.509803 - H12 7.997264 66.252461 27.058081 - H21 8.668692 67.890039 24.632986 - H22 8.339893 68.534338 26.181264 - C1 10.522184 76.556890 33.730830 - C2 10.125181 76.261758 34.975099 - H11 9.901216 76.952379 33.018797 - H12 11.478020 76.410342 33.393332 - H21 9.169345 76.408306 35.312597 - H22 10.746150 75.866268 35.687132 - C1 51.141167 12.666925 69.174732 - C2 50.964967 11.424946 68.706369 - H11 51.702113 13.377054 68.695086 - H12 50.728845 13.004393 70.049437 - H21 51.377290 11.087478 67.831664 - H22 50.404022 10.714817 69.186015 - C1 18.278278 77.583707 57.841680 - C2 19.512780 77.514286 57.327766 - H11 17.638660 78.365222 57.671014 - H12 17.876606 76.860748 58.445826 - H21 19.914453 78.237245 56.723620 - H22 20.152399 76.732771 57.498432 - C1 53.952702 0.858668 76.873019 - C2 54.490606 2.084168 76.914613 - H11 54.507795 0.000061 76.812428 - H12 52.943893 0.683576 76.898527 - H21 55.499415 2.259259 76.889105 - H22 53.935513 2.942774 76.975204 - C1 37.423980 20.250871 57.093990 - C2 37.138528 18.942949 57.121892 - H11 36.732614 20.983818 57.277855 - H12 38.356121 20.621144 56.886590 - H21 36.206387 18.572676 57.329293 - H22 37.829894 18.210002 56.938027 - C1 15.685987 55.450913 52.310358 - C2 16.751375 56.213646 52.586235 - H11 14.968267 55.709260 51.626883 - H12 15.505063 54.549208 52.761132 - H21 16.932299 57.115352 52.135460 - H22 17.469096 55.955300 53.269710 - C1 24.453519 78.286949 70.565101 - C2 23.516410 77.330536 70.560647 - H11 25.459065 78.092319 70.564425 - H12 24.238417 79.288306 70.569534 - H21 23.731513 76.329179 70.556214 - H22 22.510864 77.525166 70.561323 - C1 71.060688 15.352602 78.023460 - C2 70.926146 16.684406 77.990016 - H11 70.408565 14.707512 77.567831 - H12 71.826297 14.874328 78.507300 - H21 70.160537 17.162680 77.506177 - H22 71.578269 17.329495 78.445645 - C1 5.847768 40.549760 78.564501 - C2 6.029296 39.239611 78.773013 - H11 4.930408 41.004341 78.592986 - H12 6.612010 41.200278 78.360138 - H21 5.265054 38.589093 78.977377 - H22 6.946655 38.785030 78.744528 - C1 58.041570 19.871482 50.895357 - C2 58.851274 19.691294 51.946468 - H11 58.188513 19.423704 49.986014 - H12 57.211650 20.471248 50.918099 - H21 59.681194 19.091528 51.923726 - H22 58.704331 20.139073 52.855811 - C1 35.944536 28.428831 64.477005 - C2 34.615947 28.354378 64.626102 - H11 36.577249 27.642392 64.650762 - H12 36.432475 29.278070 64.177486 - H21 34.128008 27.505139 64.925621 - H22 33.983234 29.140817 64.452345 - C1 10.409095 14.357773 4.553215 - C2 9.613726 14.747779 3.549121 - H11 11.196460 13.713961 4.432529 - H12 10.292616 14.672620 5.520845 - H21 9.730205 14.432932 2.581491 - H22 8.826361 15.391591 3.669807 - C1 26.259960 75.934327 38.800755 - C2 27.053469 76.087025 37.733073 - H11 25.317462 76.330007 38.865095 - H12 26.533139 75.409848 39.636996 - H21 26.780290 76.611504 36.896832 - H22 27.995967 75.691346 37.668733 - C1 19.876160 48.855589 16.732127 - C2 18.769200 49.608924 16.738963 - H11 20.823664 49.243932 16.752858 - H12 19.862367 47.831816 16.705630 - H21 18.782993 50.632697 16.765460 - H22 17.821696 49.220582 16.718232 - C1 50.706935 14.747893 20.976827 - C2 51.056146 14.224558 19.794840 - H11 51.318911 14.746237 21.798098 - H12 49.800402 15.190977 21.152551 - H21 51.962679 13.781473 19.619117 - H22 50.444170 14.226214 18.973569 - C1 29.476492 15.547132 21.715889 - C2 30.305362 14.505809 21.862664 - H11 29.797856 16.512328 21.597044 - H12 28.455984 15.460281 21.710931 - H21 31.325870 14.592660 21.867622 - H22 29.983998 13.540612 21.981510 - C1 3.847222 50.073894 43.025852 - C2 2.673792 49.749111 43.583078 - H11 4.749254 49.729835 43.367853 - H12 3.934966 50.691904 42.213837 - H21 2.586048 49.131101 44.395093 - H22 1.771760 50.093170 43.241077 - C1 39.424777 20.481342 65.622141 - C2 38.361703 21.295408 65.612620 - H11 40.389594 20.813451 65.710663 - H12 39.356654 19.462576 65.541652 - H21 38.429826 22.314174 65.693110 - H22 37.396886 20.963299 65.524099 - C1 55.344926 18.061066 17.248825 - C2 56.305051 18.336318 16.357020 - H11 54.928996 18.764633 17.866078 - H12 54.950998 17.125328 17.383802 - H21 56.698978 19.272056 16.222043 - H22 56.720980 17.632751 15.739767 - C1 71.720246 18.532055 62.581105 - C2 70.534209 18.263798 62.020502 - H11 71.890962 19.345573 63.179476 - H12 72.549941 17.944809 62.455597 - H21 69.704514 18.851044 62.146010 - H22 70.363492 17.450280 61.422131 - C1 41.521898 36.835316 35.211835 - C2 41.947913 36.105764 36.250674 - H11 40.942884 37.674354 35.310633 - H12 41.741573 36.611648 34.236787 - H21 41.728238 36.329432 37.225723 - H22 42.526928 35.266726 36.151877 - C1 73.960683 9.438002 39.049546 - C2 75.088665 9.205318 38.366584 - H11 73.911670 9.447484 40.072537 - H12 73.058254 9.624787 38.602626 - H21 75.991094 9.018533 38.813503 - H22 75.137678 9.195836 37.343592 - C1 17.237934 10.950564 42.300818 - C2 18.515416 10.820539 42.680362 - H11 16.845906 11.819212 41.925627 - H12 16.552417 10.191592 42.355869 - H21 19.200933 11.579512 42.625312 - H22 18.907443 9.951891 43.055554 - C1 73.093517 9.213583 43.269860 - C2 71.793580 9.282423 42.956257 - H11 73.584968 9.937136 43.802730 - H12 73.698549 8.431964 43.001512 - H21 71.188547 10.064042 43.224605 - H22 71.302128 8.558870 42.423388 - C1 11.446202 49.506560 24.843192 - C2 10.734770 50.049015 25.839450 - H11 12.331163 49.011105 24.985922 - H12 11.161327 49.544460 23.860129 - H21 11.019645 50.011115 26.822513 - H22 9.849809 50.544470 25.696720 - C1 27.214427 23.357231 47.378560 - C2 26.655156 22.141264 47.418076 - H11 28.208738 23.527518 47.555620 - H12 26.691854 24.212601 47.168169 - H21 27.177729 21.285894 47.628467 - H22 25.660845 21.970976 47.241016 - C1 29.100386 43.638771 6.703352 - C2 29.762790 42.571358 7.166785 - H11 28.115061 43.825875 6.911031 - H12 29.526979 44.352020 6.104771 - H21 29.336198 41.858109 7.765365 - H22 30.748115 42.384253 6.959106 - C1 23.047957 2.715605 49.533321 - C2 22.792627 1.550687 50.142165 - H11 23.816961 3.336511 49.801859 - H12 22.494321 3.077298 48.751227 - H21 23.346262 1.188994 50.924258 - H22 22.023623 0.929781 49.873627 - C1 13.261641 64.965111 78.078395 - C2 12.524519 64.127533 78.818688 - H11 13.119359 65.979268 78.062726 - H12 14.025679 64.657444 77.469634 - H21 11.760480 64.435200 79.427450 - H22 12.666801 63.113376 78.834358 - C1 73.047827 21.781856 8.051210 - C2 73.198806 20.479989 7.776858 - H11 72.150560 22.271775 7.988803 - H12 73.817745 22.390050 8.345030 - H21 72.428887 19.871795 7.483038 - H22 74.096073 19.990070 7.839265 - C1 55.037214 27.686513 74.848426 - C2 56.241056 27.402828 75.361466 - H11 54.795397 28.596369 74.445078 - H12 54.263603 27.015942 74.819030 - H21 57.014667 28.073399 75.390862 - H22 56.482873 26.492972 75.764814 - C1 15.827750 51.688724 74.308683 - C2 15.217826 52.817798 73.926445 - H11 15.332419 50.807925 74.475549 - H12 16.837545 51.617159 74.464232 - H21 14.208031 52.889362 73.770896 - H22 15.713157 53.698597 73.759580 - C1 29.307943 12.011698 62.687374 - C2 28.253872 11.186431 62.659269 - H11 29.855043 12.200393 63.532406 - H12 29.649941 12.519108 61.866048 - H21 27.911873 10.679021 63.480595 - H22 27.706771 10.997736 61.814238 - C1 41.885266 21.744568 67.077170 - C2 41.756112 20.539580 67.646594 - H11 41.255018 22.529295 67.266891 - H12 42.624455 21.976238 66.407146 - H21 41.016923 20.307911 68.316619 - H22 42.386361 19.754853 67.456873 - C1 73.621485 34.765720 36.763545 - C2 74.660767 34.898048 35.929697 - H11 73.584064 34.068781 37.513131 - H12 72.782281 35.351043 36.717302 - H21 75.499971 34.312726 35.975939 - H22 74.698188 35.594988 35.180111 - C1 76.904138 51.485204 64.819096 - C2 75.753327 50.803386 64.879759 - H11 76.953692 52.507694 64.786506 - H12 77.825283 51.037820 64.800518 - H21 74.832183 51.250769 64.898338 - H22 75.703774 49.780896 64.912350 - C1 53.772863 51.376390 26.278837 - C2 55.039336 50.955687 26.169396 - H11 52.977217 50.744712 26.408965 - H12 53.500252 52.362928 26.241022 - H21 55.311947 49.969149 26.207211 - H22 55.834982 51.587365 26.039268 - C1 18.285442 21.400117 16.765941 - C2 18.403987 22.672398 17.166155 - H11 19.000388 20.911094 16.219396 - H12 17.470504 20.815984 16.974911 - H21 19.218925 23.256531 16.957185 - H22 17.689041 23.161421 17.712701 - C1 12.323663 7.091078 7.684230 - C2 11.085296 6.598646 7.554311 - H11 12.682756 7.870928 7.125760 - H12 13.009121 6.726588 8.352286 - H21 10.399838 6.963136 6.886256 - H22 10.726203 5.818796 8.112782 - C1 57.895256 47.520514 78.162749 - C2 58.407278 48.756625 78.215507 - H11 57.599017 47.068636 77.292661 - H12 57.759608 46.929743 78.988336 - H21 58.542926 49.347395 77.389920 - H22 58.703517 49.208502 79.085595 - C1 65.319303 46.125251 47.336087 - C2 64.427805 47.093195 47.583547 - H11 66.320645 46.216477 47.531013 - H12 65.069931 45.217573 46.932432 - H21 64.677176 48.000873 47.987203 - H22 63.426463 47.001969 47.388621 - C1 37.127909 7.625215 2.334875 - C2 38.043759 6.738021 2.743565 - H11 36.195506 7.361981 2.002706 - H12 37.287802 8.636788 2.322317 - H21 37.883866 5.726448 2.756123 - H22 38.976162 7.001254 3.075734 - C1 3.584879 14.091997 26.432041 - C2 4.166743 12.891205 26.320449 - H11 2.578238 14.244308 26.320327 - H12 4.100722 14.952543 26.637882 - H21 3.650900 12.030659 26.114609 - H22 5.173384 12.738893 26.432163 - C1 31.199873 21.285780 63.305202 - C2 32.268041 20.577885 63.693561 - H11 30.444189 20.899229 62.732032 - H12 31.054567 22.269433 63.550795 - H21 32.413347 19.594232 63.447968 - H22 33.023725 20.964436 64.266731 - C1 59.977888 48.045174 61.997879 - C2 59.815799 49.373248 62.051441 - H11 59.198744 47.383166 61.937181 - H12 60.893752 47.586965 62.013399 - H21 58.899935 49.831457 62.035922 - H22 60.594942 50.035256 62.112139 - C1 78.389621 1.430750 44.299925 - C2 78.502721 2.650808 44.839913 - H11 78.622111 0.567920 44.800404 - H12 78.061733 1.264471 43.343973 - H21 78.830609 2.817087 45.795865 - H22 78.270232 3.513638 44.339435 - C1 61.606004 1.254226 44.863128 - C2 62.127761 1.649599 43.695065 - H11 61.641625 1.818238 45.717309 - H12 61.130287 0.356719 44.994197 - H21 62.603478 2.547106 43.563996 - H22 62.092140 1.085587 42.840884 - C1 76.741026 61.487624 14.390072 - C2 77.461986 62.613246 14.468266 - H11 75.778132 61.408965 14.730148 - H12 77.095797 60.616832 13.984040 - H21 77.107215 63.484038 14.874298 - H22 78.424880 62.691905 14.128190 - C1 70.995794 27.648288 60.695772 - C2 72.042546 26.855089 60.956668 - H11 71.086746 28.627523 60.409713 - H12 70.021917 27.338109 60.761768 - H21 73.016423 27.165269 60.890673 - H22 71.951594 25.875854 61.242727 - C1 42.655914 12.519322 7.972563 - C2 43.058527 11.255921 7.786440 - H11 43.140210 13.181893 8.585311 - H12 41.832018 12.922417 7.516808 - H21 43.882423 10.852825 8.242196 - H22 42.574231 10.593349 7.173693 - C1 49.649560 36.054190 73.653395 - C2 50.337056 37.166807 73.940368 - H11 50.092777 35.163068 73.411600 - H12 48.626447 36.006829 73.653131 - H21 51.360170 37.214167 73.940632 - H22 49.893840 38.057929 74.182163 - C1 76.528729 24.433700 56.651430 - C2 77.289752 25.484396 56.320065 - H11 75.670224 24.510333 57.204695 - H12 76.745316 23.470814 56.377669 - H21 77.073164 26.447281 56.593826 - H22 78.148256 25.407762 55.766800 - C1 10.280477 76.514126 64.374250 - C2 11.427855 76.031052 63.881214 - H11 10.113794 77.510330 64.543950 - H12 9.479357 75.925389 64.620422 - H21 12.228975 76.619789 63.635043 - H22 11.594538 75.034848 63.711514 - C1 9.449997 60.232491 63.612952 - C2 10.290652 59.337754 63.078474 - H11 9.736645 61.170212 63.908780 - H12 8.454265 60.049471 63.767951 - H21 11.286384 59.520773 62.923475 - H22 10.004003 58.400032 62.782645 - C1 49.271862 69.781833 10.076548 - C2 50.249792 70.557483 9.591840 - H11 48.286101 69.889688 9.820330 - H12 49.432748 69.019725 10.741612 - H21 50.088906 71.319591 8.926775 - H22 51.235552 70.449628 9.848057 - C1 73.568075 23.790000 68.110127 - C2 72.293581 24.176826 68.247790 - H11 74.075553 23.823618 67.221116 - H12 74.135622 23.430097 68.883021 - H21 71.726035 24.536730 67.474897 - H22 71.786104 24.143208 69.136801 - C1 23.734383 64.425930 22.479366 - C2 24.386247 63.256700 22.509303 - H11 24.203944 65.335389 22.516775 - H12 22.714979 64.502704 22.416705 - H21 25.405650 63.179926 22.571964 - H22 23.916686 62.347241 22.471894 - C1 51.945481 41.999057 9.550699 - C2 52.851621 42.710563 10.233040 - H11 50.989742 42.322394 9.374573 - H12 52.136898 41.075572 9.151277 - H21 52.660204 43.634049 10.632463 - H22 53.807360 42.387227 10.409167 - C1 49.731203 73.179956 50.097343 - C2 48.512705 73.333326 49.563806 - H11 49.905018 72.679081 50.973651 - H12 50.585179 73.551465 49.671069 - H21 47.658729 72.961817 49.990080 - H22 48.338890 73.834201 48.687497 - C1 38.867649 32.616462 78.464929 - C2 37.810037 31.975331 78.978084 - H11 39.263802 33.468528 78.872422 - H12 39.363583 32.305185 77.624596 - H21 37.314103 32.286608 79.818417 - H22 37.413884 31.123265 78.570591 - C1 5.677432 20.624340 76.394763 - C2 6.172413 21.831984 76.693951 - H11 4.879233 20.480300 75.769356 - H12 6.058120 19.749745 76.767809 - H21 5.791725 22.706579 76.320905 - H22 6.970612 21.976024 77.319358 - C1 45.654311 22.881439 6.011360 - C2 45.089401 21.684520 5.808424 - H11 45.124687 23.719609 6.268214 - H12 46.660431 23.052859 5.925681 - H21 44.083281 21.513100 5.894104 - H22 45.619025 20.846351 5.551570 - C1 61.331918 16.578218 78.365526 - C2 61.667425 15.429793 78.966753 - H11 60.549850 16.664931 77.709893 - H12 61.830989 17.460193 78.514029 - H21 61.168354 14.547818 78.818249 - H22 62.449493 15.343080 79.622386 - C1 43.386200 21.892619 61.316423 - C2 42.162443 21.391897 61.105193 - H11 43.578733 22.894614 61.405532 - H12 44.225895 21.312977 61.405484 - H21 41.322748 21.971539 61.016132 - H22 41.969910 20.389902 61.016084 - C1 34.059096 73.188330 71.011901 - C2 34.982848 73.312510 70.050557 - H11 33.170203 72.696707 70.880823 - H12 34.168812 73.575207 71.953862 - H21 34.873132 72.925633 69.108595 - H22 35.871741 73.804133 70.181635 - C1 38.440300 35.483334 32.700819 - C2 38.662581 36.750198 33.073064 - H11 39.058162 34.705113 32.949058 - H12 37.634947 35.192966 32.138595 - H21 39.467934 37.040566 33.635289 - H22 38.044719 37.528419 32.824826 - C1 69.063192 74.063187 38.163187 - C2 69.812348 73.251286 38.919827 - H11 69.318538 75.032000 37.950577 - H12 68.175941 73.779204 37.737578 - H21 70.699599 73.535269 39.345436 - H22 69.557003 72.282472 39.132437 - C1 52.351467 16.724643 6.038175 - C2 52.085888 15.660518 6.806307 - H11 51.632976 17.374155 5.705146 - H12 53.293972 16.972709 5.723291 - H21 51.143383 15.412452 7.121191 - H22 52.804378 15.011006 7.139336 - C1 53.773057 3.131617 21.346092 - C2 54.118995 2.301364 20.354160 - H11 53.057363 2.909885 22.044390 - H12 54.196957 4.053659 21.484480 - H21 53.695095 1.379322 20.215773 - H22 54.834689 2.523096 19.655863 - C1 39.729268 11.211416 12.831461 - C2 39.225257 9.983304 12.656432 - H11 40.442355 11.434642 13.531947 - H12 39.441309 12.024091 12.278611 - H21 39.513216 9.170629 13.209282 - H22 38.512170 9.760078 11.955946 - C1 48.770834 27.134949 58.374551 - C2 47.575929 27.202707 57.774108 - H11 48.909518 26.753301 59.314825 - H12 49.640040 27.459442 57.940745 - H21 46.706722 26.878213 58.207914 - H22 47.437244 27.584355 56.833834 - C1 34.264247 18.651999 4.558307 - C2 34.377665 19.964477 4.798013 - H11 33.504431 18.242186 4.007184 - H12 34.928395 17.954750 4.907240 - H21 33.713517 20.661726 4.449080 - H22 35.137481 20.374290 5.349136 - C1 60.320995 51.983564 4.751125 - C2 60.504210 51.232595 5.844468 - H11 60.858082 52.832811 4.552834 - H12 59.629368 51.767751 4.027191 - H21 61.195837 51.448407 6.568402 - H22 59.967123 50.383347 6.042759 - C1 27.983833 42.191094 68.767915 - C2 27.039766 43.138003 68.697045 - H11 27.782122 41.187996 68.721961 - H12 28.981856 42.395482 68.873646 - H21 26.041743 42.933614 68.591314 - H22 27.241478 44.141100 68.742999 - C1 69.860257 53.673887 22.459456 - C2 70.517349 54.147759 21.393343 - H11 70.108289 53.907350 23.425364 - H12 69.057975 53.040717 22.392804 - H21 71.319631 54.780929 21.459995 - H22 70.269317 53.914296 20.427434 - C1 28.772584 61.110305 59.945500 - C2 27.599121 60.525982 59.672606 - H11 29.440828 61.398889 59.224963 - H12 29.094146 61.314591 60.896220 - H21 27.277559 60.321695 58.721886 - H22 26.930877 60.237398 60.393142 - C1 50.795223 14.803453 55.298471 - C2 49.588248 14.252225 55.478137 - H11 51.022477 15.765257 55.567341 - H12 51.586041 14.306603 54.878053 - H21 48.797429 14.749074 55.898554 - H22 49.360994 13.290421 55.209266 - C1 62.722266 69.333394 27.483587 - C2 61.728976 70.160623 27.134319 - H11 62.831577 68.948668 28.426476 - H12 63.450785 69.020361 26.835302 - H21 61.000457 70.473657 27.782605 - H22 61.619664 70.545350 26.191430 - C1 21.647804 55.875140 23.234346 - C2 20.423492 56.403628 23.355508 - H11 21.878972 55.132703 22.567747 - H12 22.449333 56.171802 23.798745 - H21 19.621963 56.106966 22.791108 - H22 20.192324 57.146064 24.022106 - C1 6.938826 4.973082 46.422104 - C2 6.506494 6.047301 45.749747 - H11 6.606607 4.021511 46.240042 - H12 7.635713 5.018560 47.171293 - H21 5.809607 6.001824 45.000558 - H22 6.838713 6.998872 45.931809 - C1 5.361192 13.729814 74.404797 - C2 5.894501 13.898395 73.188211 - H11 5.038559 14.504307 74.992226 - H12 5.233983 12.813125 74.843548 - H21 6.021710 14.815085 72.749460 - H22 6.217134 13.123902 72.600782 - C1 59.006064 19.655428 43.144029 - C2 60.172106 18.997333 43.157414 - H11 58.881722 20.592156 43.539104 - H12 58.146861 19.273797 42.737666 - H21 61.031309 19.378964 43.563778 - H22 60.296448 18.060605 42.762340 - C1 3.689702 13.356969 7.762442 - C2 2.509922 12.913394 8.214417 - H11 4.443252 12.738128 7.449071 - H12 3.931286 14.349962 7.694577 - H21 2.268338 11.920401 8.282282 - H22 1.756372 13.532236 8.527787 - C1 29.326466 52.529724 9.266106 - C2 29.800414 51.302321 9.514654 - H11 28.332695 52.733483 9.125021 - H12 29.920467 53.361269 9.197542 - H21 29.206413 50.470777 9.583218 - H22 30.794185 51.098563 9.655738 - C1 5.376221 54.594217 70.698074 - C2 5.285766 55.812450 71.246387 - H11 5.922306 53.830142 71.106710 - H12 4.906433 54.330724 69.826940 - H21 5.755554 56.075943 72.117521 - H22 4.739681 56.576525 70.837751 - C1 38.826539 24.412406 42.124851 - C2 40.118207 24.079107 42.240721 - H11 38.059349 23.827535 42.468871 - H12 38.504218 25.278411 41.683095 - H21 40.440527 23.213101 42.682477 - H22 40.885397 24.663977 41.896701 - C1 49.159042 21.075000 8.101002 - C2 48.801694 19.881289 8.591182 - H11 49.116268 21.312521 7.105634 - H12 49.503236 21.844364 8.682908 - H21 48.457500 19.111926 8.009276 - H22 48.844468 19.643768 9.586550 - C1 33.472990 28.463003 70.116057 - C2 33.242441 28.991935 68.907753 - H11 34.358617 28.569315 70.619413 - H12 32.781830 27.910542 70.631894 - H21 33.933601 29.544396 68.391915 - H22 32.356814 28.885623 68.404397 - C1 70.614462 38.659056 22.283846 - C2 69.363955 38.206427 22.439665 - H11 71.329107 38.167688 21.739012 - H12 70.954609 39.532213 22.697249 - H21 69.023809 37.333270 22.026263 - H22 68.649311 38.697795 22.984499 - C1 30.831665 39.953927 13.754037 - C2 29.719477 39.243544 13.980564 - H11 31.771700 39.547316 13.756201 - H12 30.829749 40.959740 13.560800 - H21 29.721392 38.237731 14.173801 - H22 28.779441 39.650155 13.978401 - C1 48.747756 48.155795 23.609873 - C2 50.025882 48.333615 23.967217 - H11 48.170203 48.891922 23.193275 - H12 48.247221 47.269679 23.725054 - H21 50.526417 49.219731 23.852035 - H22 50.603435 47.597488 24.383814 - C1 22.245771 26.340927 28.951508 - C2 22.885482 26.132741 30.109243 - H11 21.606631 25.661056 28.529278 - H12 22.345321 27.196402 28.397200 - H21 22.785933 25.277267 30.663550 - H22 23.524622 26.812613 30.531473 - C1 7.230413 62.330139 16.996501 - C2 8.161855 62.660802 16.093174 - H11 7.306168 62.553041 17.993286 - H12 6.368995 61.828327 16.761664 - H21 9.023272 63.162613 16.328011 - H22 8.086100 62.437900 15.096389 - C1 55.204617 49.119980 31.406331 - C2 56.095154 49.064970 32.404749 - H11 54.626225 49.942166 31.210172 - H12 55.031848 48.344195 30.760334 - H21 56.267922 49.840755 33.050746 - H22 56.673545 48.242785 32.600908 - C1 38.021404 5.050175 40.263217 - C2 37.446145 4.464060 39.205641 - H11 37.530896 5.699461 40.885176 - H12 38.997138 4.895271 40.533314 - H21 36.470411 4.618964 38.935545 - H22 37.936653 3.814774 38.583682 - C1 8.468992 7.465683 75.470315 - C2 9.424019 7.083319 76.327428 - H11 7.472176 7.479979 75.705170 - H12 8.660252 7.773907 74.512494 - H21 9.232759 6.775094 77.285249 - H22 10.420835 7.069022 76.092573 - C1 48.940251 67.663173 52.655373 - C2 47.776154 68.255589 52.360684 - H11 49.103148 66.656986 52.555087 - H12 49.759259 68.169661 53.004227 - H21 46.957146 67.749100 52.011830 - H22 47.613257 69.261775 52.460970 - C1 56.743972 59.562021 45.264758 - C2 57.381417 59.724445 46.431036 - H11 57.135201 59.039809 44.475303 - H12 55.815063 59.947228 45.070469 - H21 58.310325 59.339238 46.625325 - H22 56.990187 60.246657 47.220490 - C1 69.545570 74.611082 61.290548 - C2 70.596788 74.794873 62.099303 - H11 69.038811 73.724169 61.215822 - H12 69.165637 75.342969 60.683098 - H21 70.976721 74.062985 62.706753 - H22 71.103547 75.681786 62.174029 - C1 26.870100 49.697857 51.554059 - C2 27.426508 50.714198 50.882955 - H11 27.320997 49.229651 52.345564 - H12 25.949878 49.308787 51.328625 - H21 28.346730 51.103267 51.108389 - H22 26.975612 51.182403 50.091450 - C1 45.834753 54.052785 11.638487 - C2 46.941445 53.462151 12.106787 - H11 45.017656 53.535080 11.301831 - H12 45.718365 55.068685 11.580136 - H21 47.057833 52.446251 12.165138 - H22 47.758542 53.979857 12.443443 - C1 30.758469 12.802026 18.726973 - C2 31.415146 11.655621 18.509137 - H11 31.215678 13.718075 18.755581 - H12 29.747360 12.852959 18.882108 - H21 32.426256 11.604688 18.354002 - H22 30.957938 10.739572 18.480530 - C1 69.058542 48.098454 34.961403 - C2 69.096107 46.765986 35.088048 - H11 68.408216 48.696814 35.479136 - H12 69.677182 48.624019 34.336848 - H21 68.477467 46.240421 35.712604 - H22 69.746432 46.167627 34.570316 - C1 27.032510 33.272349 49.654855 - C2 26.569458 33.042557 50.890047 - H11 26.895556 32.627141 48.871303 - H12 27.560044 34.111386 49.396534 - H21 26.041924 32.203521 51.148368 - H22 26.706412 33.687765 51.673599 - C1 77.336060 22.107934 15.859765 - C2 76.810623 22.120430 17.091301 - H11 76.898517 22.565134 15.054453 - H12 78.216806 21.640195 15.626288 - H21 75.929877 22.588169 17.324777 - H22 77.248167 21.663230 17.896613 - C1 48.869062 24.902172 44.366123 - C2 49.618299 23.793219 44.408436 - H11 47.848789 24.891316 44.277078 - H12 49.257361 25.848417 44.419477 - H21 49.230000 22.846974 44.355082 - H22 50.638572 23.804075 44.497481 - C1 30.801369 42.334352 24.694499 - C2 30.982439 41.014891 24.832910 - H11 29.906833 42.756862 24.429371 - H12 31.543175 43.024794 24.842878 - H21 30.240633 40.324448 24.684530 - H22 31.876976 40.592381 25.098038 - C1 6.912092 47.183378 16.029230 - C2 7.169977 48.495093 16.105517 - H11 7.641385 46.467504 15.960966 - H12 5.965275 46.792832 16.033147 - H21 8.116794 48.885639 16.101600 - H22 6.440684 49.210967 16.173781 - C1 9.431139 70.453594 16.154237 - C2 10.294012 71.310884 16.714080 - H11 8.467950 70.328731 16.479323 - H12 9.666502 69.855341 15.356928 - H21 10.058649 71.909137 17.511389 - H22 11.257201 71.435747 16.388995 - C1 20.630603 4.733452 62.290436 - C2 21.052020 3.594721 62.854900 - H11 19.741969 4.819852 61.788570 - H12 21.163776 5.607562 62.316181 - H21 20.518847 2.720611 62.829154 - H22 21.940654 3.508321 63.356765 - C1 56.070085 61.798516 56.896781 - C2 55.815266 62.195484 55.643623 - H11 56.892270 62.099360 57.428297 - H12 55.462837 61.162834 57.422293 - H21 56.422513 62.831167 55.118112 - H22 54.993081 61.894641 55.112108 - C1 23.392203 15.023053 3.585689 - C2 24.575736 14.744630 4.146628 - H11 23.242049 15.060875 2.573253 - H12 22.544057 15.220079 4.124980 - H21 25.423881 14.547605 3.607337 - H22 24.725889 14.706809 5.159064 - C1 71.069571 78.533781 15.448539 - C2 72.269034 77.939433 15.417537 - H11 70.943252 79.546762 15.531703 - H12 70.184155 78.022126 15.391523 - H21 73.154451 78.451088 15.474552 - H22 72.395353 76.926452 15.334372 - C1 1.791619 15.193775 47.903072 - C2 1.516311 14.478444 49.000992 - H11 1.614928 16.199633 47.825398 - H12 2.200529 14.791291 47.054660 - H21 1.107401 14.880928 49.849404 - H22 1.693001 13.472586 49.078665 - C1 10.698148 76.547329 70.839608 - C2 10.561357 77.706903 70.184172 - H11 9.951002 76.121542 71.395920 - H12 11.560675 75.995027 70.836152 - H21 9.698829 78.259205 70.187628 - H22 11.308502 78.132690 69.627860 - C1 23.558407 72.777767 10.917548 - C2 24.812373 72.870615 10.457255 - H11 23.009633 73.584862 11.228111 - H12 23.049472 71.892355 10.995239 - H21 25.321308 73.756026 10.379564 - H22 25.361146 72.063520 10.146692 - C1 63.154068 27.688429 44.726968 - C2 62.775433 26.404881 44.681546 - H11 64.113177 27.987570 44.926035 - H12 62.514333 28.471947 44.566213 - H21 63.415167 25.621362 44.842301 - H22 61.816324 26.105740 44.482479 - C1 56.695489 74.167669 60.962948 - C2 57.366720 73.160778 60.389763 - H11 57.104069 75.089899 61.140591 - H12 55.720732 74.094741 61.268781 - H21 58.341478 73.233705 60.083930 - H22 56.958141 72.238547 60.212120 - C1 72.778295 5.475190 74.810670 - C2 71.600062 5.549771 75.442434 - H11 73.125926 6.200426 74.176485 - H12 73.424494 4.687047 74.911967 - H21 70.953864 6.337914 75.341136 - H22 71.252432 4.824535 76.076618 - C1 69.179099 33.144357 24.432176 - C2 69.119688 33.969582 25.484980 - H11 69.919219 32.448635 24.301042 - H12 68.489090 33.144010 23.675280 - H21 69.809697 33.969930 26.241876 - H22 68.379568 34.665304 25.616113 - C1 34.492681 8.435878 73.779050 - C2 35.741645 8.569008 74.243041 - H11 34.012630 9.158239 73.234304 - H12 33.919244 7.601222 73.932423 - H21 36.315082 9.403664 74.089667 - H22 36.221697 7.846647 74.787786 - C1 74.042250 42.150995 10.111177 - C2 75.036279 42.679556 10.836057 - H11 73.520826 41.315475 10.392296 - H12 73.725219 42.540679 9.218629 - H21 75.353310 42.289872 11.728605 - H22 75.557703 43.515076 10.554938 - C1 42.724236 19.772296 18.961386 - C2 41.454726 19.562629 18.590840 - H11 43.517018 19.720991 18.314958 - H12 43.002274 20.000453 19.920366 - H21 41.176687 19.334471 17.631860 - H22 40.661944 19.613933 19.237267 - C1 60.874338 76.990666 47.798175 - C2 59.824182 77.806578 47.954321 - H11 61.845602 77.315598 47.789895 - H12 60.788870 75.977520 47.674747 - H21 59.909650 78.819724 48.077749 - H22 58.852918 77.481646 47.962602 - C1 65.374104 46.123188 10.775039 - C2 65.025054 44.850086 10.999308 - H11 65.104525 46.898872 11.387122 - H12 65.938103 46.421354 9.973786 - H21 64.461054 44.551920 11.800561 - H22 65.294632 44.074403 10.387225 - C1 73.029338 71.805861 41.096913 - C2 71.912666 71.105578 40.861182 - H11 73.966471 71.392618 41.092981 - H12 73.034106 72.809786 41.299682 - H21 71.907897 70.101653 40.658412 - H22 70.975533 71.518821 40.865114 - C1 53.260203 29.096722 40.566196 - C2 53.064501 30.416284 40.681859 - H11 52.705234 28.397384 41.068131 - H12 53.980246 28.683022 39.966701 - H21 52.344458 30.829984 41.281354 - H22 53.619470 31.115622 40.179924 - C1 1.359650 65.056231 2.335455 - C2 1.679649 64.428640 1.196749 - H11 1.673229 66.003751 2.565405 - H12 0.776156 64.638077 3.065993 - H21 2.263143 64.846794 0.466211 - H22 1.366070 63.481120 0.966798 - C1 11.518474 27.443722 45.182543 - C2 12.784273 27.878341 45.224726 - H11 11.059800 27.123018 44.324772 - H12 10.909457 27.397830 46.004734 - H21 13.393289 27.924233 44.402536 - H22 13.242947 28.199044 46.082497 - C1 35.367361 61.844339 11.665274 - C2 34.249342 61.259677 12.113744 - H11 35.570266 61.987466 10.671620 - H12 36.107495 62.194370 12.280648 - H21 33.509208 60.909647 11.498371 - H22 34.046437 61.116551 13.107398 - C1 73.481055 2.381057 5.007097 - C2 74.507896 2.904984 4.325908 - H11 72.880687 1.636962 4.639831 - H12 73.215293 2.683224 5.948940 - H21 74.773659 2.602816 3.384065 - H22 75.108265 3.649078 4.693174 - C1 77.390892 6.016157 54.163763 - C2 77.014726 7.122688 54.817223 - H11 77.046866 5.079494 54.394657 - H12 78.052209 6.019472 53.381681 - H21 76.353409 7.119373 55.599305 - H22 77.358752 8.059351 54.586329 - C1 66.806964 24.088688 47.745657 - C2 65.740564 23.549916 47.141144 - H11 67.233728 23.698802 48.591154 - H12 67.279699 24.933022 47.410062 - H21 65.267829 22.705582 47.476739 - H22 65.313800 23.939802 46.295646 - C1 58.859109 55.942100 74.928903 - C2 58.827858 54.603538 74.914875 - H11 59.725863 56.487056 74.901278 - H12 58.018714 56.526208 74.968361 - H21 59.668254 54.019430 74.875417 - H22 57.961104 54.058582 74.942500 - C1 20.234674 70.886112 69.086004 - C2 19.281662 71.826552 69.102198 - H11 21.154551 71.021637 68.656512 - H12 20.118653 69.957335 69.501836 - H21 19.397682 72.755329 68.686366 - H22 18.361785 71.691028 69.531690 - C1 6.468132 72.740497 52.558093 - C2 7.804627 72.711564 52.481518 - H11 5.953188 72.745419 53.443425 - H12 5.855754 72.759979 51.737351 - H21 8.417005 72.692082 53.302260 - H22 8.319571 72.706642 51.596186 - C1 64.475067 15.408226 53.648504 - C2 65.745563 15.770495 53.430509 - H11 63.982734 14.708662 53.085278 - H12 63.895747 15.802219 54.395607 - H21 66.324882 15.376501 52.683406 - H22 66.237895 16.470058 53.993735 - C1 73.676882 43.944810 21.626448 - C2 73.330706 42.665172 21.815149 - H11 74.616673 44.308490 21.809573 - H12 73.029089 44.660493 21.284154 - H21 73.978500 41.949488 22.157442 - H22 72.390916 42.301492 21.632024 - C1 8.416392 20.509747 23.061697 - C2 9.587299 21.152492 22.968004 - H11 8.336885 19.496045 23.184540 - H12 7.508250 20.981300 23.017884 - H21 10.495441 20.680938 23.011817 - H22 9.666806 22.166194 22.845162 - C1 1.704083 38.495416 0.693056 - C2 1.992409 37.187922 0.708830 - H11 0.748675 38.862609 0.656052 - H12 2.416290 39.231081 0.716755 - H21 1.280202 36.452257 0.685131 - H22 2.947817 36.820729 0.745834 - C1 47.355987 33.775394 23.997281 - C2 46.168124 33.249186 23.673232 - H11 48.180215 33.211611 24.224881 - H12 47.533711 34.783028 24.043012 - H21 45.990400 32.241552 23.627501 - H22 45.343896 33.812969 23.445632 - C1 43.404050 16.229040 32.787353 - C2 43.551175 14.898150 32.784534 - H11 43.712827 16.829701 33.557331 - H12 42.971175 16.750971 32.019752 - H21 43.984050 14.376219 33.552134 - H22 43.242398 14.297489 32.014556 - C1 46.775337 33.432097 45.820913 - C2 47.300463 32.633030 44.883547 - H11 46.759569 34.453585 45.747984 - H12 46.348166 33.084616 46.684502 - H21 47.727633 32.980511 44.019958 - H22 47.316231 31.611542 44.956476 - C1 75.761842 27.069965 4.301721 - C2 75.670406 27.784332 5.430543 - H11 76.603298 27.040693 3.718541 - H12 74.997511 26.496674 3.932750 - H21 76.434737 28.357623 5.799514 - H22 74.828950 27.813604 6.013723 - C1 34.265269 45.787437 36.530649 - C2 33.853542 45.108076 37.608550 - H11 34.156797 46.800517 36.426214 - H12 34.721030 45.347391 35.725885 - H21 33.397781 45.548121 38.413315 - H22 33.962014 44.094996 37.712985 - C1 2.390918 2.080301 28.380431 - C2 3.658100 1.663591 28.264140 - H11 2.117059 3.067058 28.362676 - H12 1.595921 1.445035 28.496277 - H21 4.453097 2.298857 28.148294 - H22 3.931959 0.676833 28.281895 - C1 43.846747 75.810858 2.062115 - C2 42.804097 76.530091 1.627941 - H11 43.883086 74.788075 2.022147 - H12 44.689872 76.226976 2.468305 - H21 41.960972 76.113974 1.221751 - H22 42.767757 77.552874 1.667909 - C1 50.884922 7.752844 32.783197 - C2 50.573837 8.740755 31.934564 - H11 50.573571 7.727281 33.758599 - H12 51.458671 6.945113 32.523608 - H21 50.000088 9.548487 32.194153 - H22 50.885188 8.766318 30.959161 - C1 40.489461 66.223216 79.490039 - C2 40.972824 64.998655 79.734435 - H11 39.489192 66.442837 79.474804 - H12 41.082017 67.036502 79.299128 - H21 40.380268 64.185369 79.925346 - H22 41.973094 64.779034 79.749670 - C1 45.939744 1.153274 16.460075 - C2 44.608297 1.260855 16.552797 - H11 46.570070 1.959586 16.420655 - H12 46.432481 0.256218 16.421286 - H21 44.115560 2.157911 16.591587 - H22 43.977971 0.454543 16.592218 - C1 70.399985 12.137260 48.561029 - C2 70.735697 13.182240 47.794064 - H11 69.773572 11.388149 48.252092 - H12 70.743229 12.004940 49.516895 - H21 70.392453 13.314559 46.838198 - H22 71.362110 13.931351 48.103001 - C1 22.454638 6.234256 51.196934 - C2 23.751627 6.564353 51.154779 - H11 21.973279 5.944209 52.053188 - H12 21.841999 6.245869 50.376238 - H21 24.364266 6.552740 51.975475 - H22 24.232986 6.854400 50.298525 - C1 9.120304 79.224340 73.354341 - C2 8.184763 79.360856 72.406160 - H11 9.029416 78.585198 74.149476 - H12 10.000311 79.748333 73.358988 - H21 7.304755 78.836863 72.401513 - H22 8.275651 79.999999 71.611024 - C1 5.847281 35.627685 65.821972 - C2 6.390350 34.548277 65.245019 - H11 5.537033 35.650537 66.797794 - H12 5.699455 36.515304 65.332805 - H21 6.538175 33.660658 65.734186 - H22 6.700598 34.525425 64.269197 - C1 37.977782 53.938790 12.032834 - C2 37.844915 53.489554 13.287208 - H11 37.529846 54.793078 11.688523 - H12 38.537791 53.463430 11.319092 - H21 37.284907 53.964914 14.000949 - H22 38.292852 52.635267 13.631519 - C1 46.836545 13.541271 58.529673 - C2 47.122869 14.841346 58.385640 - H11 45.882107 13.169720 58.528515 - H12 47.549471 12.816221 58.652320 - H21 46.409943 15.566396 58.262993 - H22 48.077307 15.212897 58.386798 - C1 14.285319 9.627328 27.541376 - C2 15.180622 8.759924 28.030216 - H11 14.490847 10.616541 27.373391 - H12 13.324612 9.369762 27.297030 - H21 16.141329 9.017491 28.274563 - H22 14.975094 7.770711 28.198202 - C1 1.790269 32.122223 13.436539 - C2 1.507632 33.290629 12.846738 - H11 2.720625 31.694089 13.424617 - H12 1.098314 31.564818 13.945953 - H21 2.199586 33.848034 12.337324 - H22 0.577275 33.718763 12.858660 - C1 67.130881 74.652521 15.092113 - C2 67.831762 75.636079 15.670302 - H11 66.138805 74.480427 15.279657 - H12 67.531771 73.994995 14.416873 - H21 67.430872 76.293606 16.345542 - H22 68.823837 75.808174 15.482758 - C1 8.987103 10.731203 6.950847 - C2 9.749328 9.989467 7.764335 - H11 9.118349 11.738027 6.816369 - H12 8.212928 10.350028 6.399157 - H21 10.523503 10.370642 8.316025 - H22 9.618082 8.982643 7.898814 - C1 41.520680 32.559014 29.864417 - C2 40.663485 31.858375 30.617572 - H11 42.334715 33.050861 30.244468 - H12 41.429682 32.658150 28.849087 - H21 40.754484 31.759238 31.632902 - H22 39.849451 31.366528 30.237521 - C1 51.778839 46.187359 15.562018 - C2 50.888835 47.165088 15.350218 - H11 52.784897 46.351377 15.661763 - H12 51.523491 45.198635 15.640924 - H21 51.144183 48.153812 15.271312 - H22 49.882777 47.001070 15.250473 - C1 29.321008 54.803303 13.549068 - C2 28.460975 55.336786 12.672336 - H11 29.697435 55.314065 14.353076 - H12 29.670013 53.842553 13.484575 - H21 28.111971 56.297536 12.736829 - H22 28.084549 54.826024 11.868328 - C1 77.575673 0.877468 57.625184 - C2 77.006642 0.905687 58.836930 - H11 77.367027 1.556512 56.887369 - H12 78.264292 0.174623 57.340903 - H21 76.318023 1.608533 59.121212 - H22 77.215288 0.226644 59.574745 - C1 38.435367 10.892873 71.231922 - C2 38.410801 11.798929 72.217507 - H11 39.123498 10.902102 70.473375 - H12 37.767957 10.119394 71.159137 - H21 39.078211 12.572408 72.290292 - H22 37.722669 11.789701 72.976054 - C1 74.756385 72.456677 10.057089 - C2 75.960179 72.746243 9.547235 - H11 73.894096 72.456928 9.504402 - H12 74.603283 72.212182 11.039833 - H21 76.113281 72.990738 8.564492 - H22 76.822468 72.745992 10.099922 - C1 0.609617 1.625784 72.335450 - C2 1.206370 2.517740 73.136212 - H11 0.218227 1.862575 71.419073 - H12 0.497651 0.636636 72.576393 - H21 1.318336 3.506889 72.895270 - H22 1.597761 2.280949 74.052589 - C1 43.679186 22.894246 79.760462 - C2 44.109260 21.628758 79.679854 - H11 42.692028 23.150245 79.855264 - H12 44.303581 23.705675 79.733653 - H21 43.484866 20.817330 79.706664 - H22 45.096418 21.372759 79.585053 - C1 33.281443 24.233215 21.982703 - C2 32.336812 25.122297 21.650853 - H11 33.511513 23.988294 22.950219 - H12 33.848162 23.728203 21.295101 - H21 31.770094 25.627309 22.338455 - H22 32.106743 25.367218 20.683338 - C1 25.739820 36.177095 44.754113 - C2 26.012871 37.148727 43.874173 - H11 25.956231 35.189533 44.590124 - H12 25.293094 36.345094 45.660322 - H21 26.459597 36.980729 42.967963 - H22 25.796461 38.136289 44.038161 - C1 32.705981 41.872462 7.988177 - C2 32.086246 40.690361 7.880988 - H11 33.625929 42.066667 7.581996 - H12 32.308773 42.675346 8.484771 - H21 32.483455 39.887477 7.384393 - H22 31.166298 40.496156 8.287169 - C1 68.258830 50.569596 25.013039 - C2 67.574528 51.581900 25.560664 - H11 69.279722 50.556744 24.931693 - H12 67.815140 49.728579 24.632469 - H21 68.018219 52.422917 25.941234 - H22 66.553636 51.594752 25.642011 - C1 51.672952 26.420372 39.191988 - C2 50.789717 27.415665 39.341017 - H11 52.549572 26.516552 38.671132 - H12 51.541332 25.484671 39.587139 - H21 50.921337 28.351365 38.945866 - H22 49.913097 27.319485 39.861873 - C1 64.559872 17.826425 75.299780 - C2 64.641319 18.591593 76.395593 - H11 64.695741 16.811306 75.308462 - H12 64.355302 18.196133 74.366789 - H21 64.845889 18.221885 77.328583 - H22 64.505450 19.606712 76.386910 - C1 58.028511 52.923870 10.790704 - C2 58.611933 53.997476 11.338344 - H11 58.175286 51.967893 11.127704 - H12 57.389625 52.974270 9.991775 - H21 59.250818 53.947077 12.137274 - H22 58.465157 54.953453 11.001344 - C1 55.086403 53.575611 20.743428 - C2 55.255610 52.248780 20.681713 - H11 54.964880 54.168444 19.917120 - H12 55.065200 54.101948 21.621792 - H21 55.276813 51.722443 19.803349 - H22 55.377132 51.655947 21.508021 - C1 18.741894 56.521017 56.345770 - C2 18.881357 57.729603 56.905048 - H11 18.302229 55.726707 56.819868 - H12 19.063923 56.295897 55.399925 - H21 18.559328 57.954723 57.850893 - H22 19.321022 58.523913 56.430949 - C1 34.590863 31.072641 46.692679 - C2 33.346202 30.611850 46.515448 - H11 35.194855 30.784020 47.467854 - H12 35.036732 31.749935 46.066997 - H21 32.900333 29.934556 47.141130 - H22 32.742210 30.900472 45.740274 - C1 34.531193 69.101481 22.981803 - C2 33.557129 68.515864 23.689738 - H11 34.578858 70.110752 22.814160 - H12 35.305142 68.586173 22.552310 - H21 32.783180 69.031172 24.119231 - H22 33.509464 67.506593 23.857382 - C1 43.000998 74.505266 53.157466 - C2 41.829177 75.148640 53.081143 - H11 43.900175 74.941013 52.932500 - H12 43.090242 73.526839 53.446811 - H21 41.739933 76.127067 52.791798 - H22 40.930000 74.712893 53.306109 - C1 24.494936 15.368202 45.789450 - C2 23.613376 16.244146 45.290958 - H11 24.227556 14.465984 46.193821 - H12 25.505904 15.531568 45.805552 - H21 22.602408 16.080779 45.274856 - H22 23.880756 17.146363 44.886587 - C1 79.471639 23.306346 62.551176 - C2 79.347996 23.578587 63.856365 - H11 79.185571 23.952652 61.809922 - H12 79.861997 22.430408 62.191515 - H21 78.957637 24.454525 64.216026 - H22 79.634063 22.932281 64.597619 - C1 39.761422 4.820517 36.094636 - C2 39.919663 4.494254 34.805670 - H11 39.375649 4.181254 36.795725 - H12 40.013719 5.734981 36.480778 - H21 39.667366 3.579790 34.419528 - H22 40.305436 5.133518 34.104582 - C1 41.901327 24.934669 69.282238 - C2 42.269496 23.647291 69.276661 - H11 42.546094 25.707249 69.091454 - H12 40.946013 25.247979 69.477726 - H21 43.224809 23.333980 69.081172 - H22 41.624729 22.874710 69.467444 - C1 28.387637 24.393144 78.372184 - C2 28.691811 23.321206 79.114712 - H11 29.013406 24.784065 77.661833 - H12 27.505301 24.906393 78.456220 - H21 29.574147 22.807957 79.030676 - H22 28.066043 22.930285 79.825063 - C1 62.567006 23.304354 66.717579 - C2 63.282777 24.276256 66.137925 - H11 61.605792 23.431139 67.047724 - H12 62.924475 22.357778 66.876367 - H21 62.925308 25.222832 65.979136 - H22 64.243992 24.149471 65.807780 - C1 19.367500 28.369737 7.369477 - C2 20.158447 27.752284 6.482868 - H11 18.498880 28.848522 7.114005 - H12 19.568965 28.411767 8.372797 - H21 19.956982 27.710254 5.479549 - H22 21.027068 27.273499 6.738340 - C1 4.559124 23.847923 74.443449 - C2 3.633532 22.880494 74.460208 - H11 4.336135 24.844285 74.524338 - H12 5.562842 23.667579 74.348424 - H21 2.629814 23.060839 74.555233 - H22 3.856521 21.884133 74.379319 - C1 20.085934 5.105069 26.963087 - C2 20.039544 3.805047 27.280440 - H11 19.274110 5.635079 26.632881 - H12 20.936886 5.671615 27.025609 - H21 19.188591 3.238501 27.217918 - H22 20.851367 3.275037 27.610646 - C1 46.633719 75.051711 23.913491 - C2 45.945756 73.941177 23.619652 - H11 46.708048 75.436147 24.859899 - H12 47.139682 75.604001 23.214934 - H21 45.439794 73.388888 24.318209 - H22 45.871428 73.556741 22.673244 - C1 35.980963 26.010683 29.059666 - C2 35.054293 26.070682 30.024344 - H11 35.896107 26.499938 28.163880 - H12 36.847457 25.470818 29.141755 - H21 34.187800 26.610547 29.942255 - H22 35.139149 25.581427 30.920130 - C1 64.996109 74.330667 79.341201 - C2 64.023626 75.241273 79.475341 - H11 65.993574 74.561851 79.366131 - H12 64.818925 73.331395 79.203124 - H21 64.200810 76.240545 79.613418 - H22 63.026161 75.010089 79.450411 - C1 9.126784 41.934662 2.655272 - C2 9.220907 40.662912 3.063577 - H11 9.923767 42.477306 2.309788 - H12 8.250409 42.464728 2.656355 - H21 10.097282 40.132846 3.062495 - H22 8.423924 40.120268 3.409061 - C1 58.287992 28.522192 60.465467 - C2 57.076079 28.949100 60.842215 - H11 59.136736 29.089865 60.545370 - H12 58.461484 27.594426 60.067780 - H21 56.902587 29.876865 61.239902 - H22 56.227335 28.381427 60.762311 - C1 42.747720 4.328136 6.551441 - C2 42.473960 5.630428 6.699811 - H11 42.789156 3.667197 7.332751 - H12 42.937197 3.890605 5.644982 - H21 42.284483 6.067959 7.606270 - H22 42.432524 6.291367 5.918501 - C1 12.584574 25.221108 5.203097 - C2 13.345651 24.252086 4.678997 - H11 12.077367 25.908597 4.638205 - H12 12.449820 25.350979 6.210062 - H21 13.480405 24.122215 3.672032 - H22 13.852858 23.564597 5.243889 - C1 24.613068 30.371185 76.976580 - C2 23.691570 29.421573 77.181512 - H11 25.614906 30.176631 76.890133 - H12 24.388505 31.366730 76.890168 - H21 23.916132 28.426028 77.267924 - H22 22.689732 29.616127 77.267959 - C1 75.047854 24.325896 62.800126 - C2 75.885511 24.572211 63.815302 - H11 75.051852 23.453431 62.263664 - H12 74.337300 24.990596 62.480298 - H21 76.596064 23.907510 64.135130 - H22 75.881512 25.444676 64.351765 - C1 64.913005 44.929075 3.581243 - C2 65.204195 46.181027 3.956405 - H11 63.966879 44.615932 3.345043 - H12 65.613515 44.186209 3.500997 - H21 64.503685 46.923893 4.036651 - H22 66.150321 46.494170 4.192605 - C1 52.054562 41.846439 78.533413 - C2 51.083698 42.173096 79.395759 - H11 52.396111 40.889634 78.403522 - H12 52.531926 42.527712 77.935924 - H21 50.606333 41.491823 79.993248 - H22 50.742148 43.129901 79.525650 - C1 15.036213 75.025481 31.368600 - C2 14.805687 75.311447 32.656235 - H11 14.362265 74.541415 30.768203 - H12 15.904608 75.268337 30.882890 - H21 13.937292 75.068590 33.141944 - H22 15.479635 75.795513 33.256632 - C1 53.198298 46.491980 3.913145 - C2 54.454873 46.035425 3.987290 - H11 52.643812 46.482251 3.052067 - H12 52.692874 46.886809 4.711682 - H21 54.960296 45.640596 3.188753 - H22 55.009359 46.045154 4.848367 - C1 72.326105 23.972012 59.099582 - C2 73.508216 24.329227 59.617204 - H11 71.742527 24.599420 58.538512 - H12 71.912583 23.043296 59.224044 - H21 73.921738 25.257942 59.492743 - H22 74.091794 23.701818 60.178274 - C1 49.839448 17.174431 26.673828 - C2 49.223450 16.866684 27.822201 - H11 50.569085 16.593190 26.250990 - H12 49.629399 18.015253 26.128025 - H21 49.433499 16.025862 28.368004 - H22 48.493813 17.447925 28.245040 - C1 3.146576 68.472381 53.317966 - C2 3.421245 68.365466 52.011808 - H11 3.311149 67.719957 53.993079 - H12 2.750322 69.314986 53.744584 - H21 3.817499 67.522862 51.585190 - H22 3.256671 69.117890 51.336695 - C1 77.607820 6.773850 23.619720 - C2 77.939739 5.480494 23.719629 - H11 76.978483 7.247556 24.274351 - H12 77.957187 7.391078 22.880818 - H21 77.590372 4.863267 24.458531 - H22 78.569076 5.006788 23.064998 - C1 14.461098 22.658831 70.577843 - C2 15.317370 22.874276 71.584473 - H11 14.468702 21.812285 70.001383 - H12 13.731238 23.323650 70.305221 - H21 16.047230 22.209457 71.857096 - H22 15.309766 23.720822 72.160934 - C1 26.420808 5.688563 54.232085 - C2 26.372204 4.360283 54.070126 - H11 25.588653 6.285075 54.258437 - H12 27.293961 6.212443 54.342344 - H21 25.499050 3.836403 53.959867 - H22 27.204359 3.763771 54.043774 - C1 59.195060 44.136081 19.584220 - C2 57.886765 44.416098 19.637851 - H11 59.922114 44.764928 19.937698 - H12 59.571540 43.271043 19.185503 - H21 57.510285 45.281137 20.036568 - H22 57.159711 43.787252 19.284372 - C1 21.706549 23.469656 3.274283 - C2 22.996227 23.827695 3.236092 - H11 20.932914 24.134862 3.184879 - H12 21.392352 22.502447 3.395900 - H21 23.310424 24.794904 3.114475 - H22 23.769862 23.162488 3.325496 - C1 32.879535 75.463869 67.088913 - C2 33.151730 74.348782 67.778414 - H11 32.895747 75.513455 66.066034 - H12 32.633728 76.354849 67.530205 - H21 33.397537 73.457803 67.337122 - H22 33.135518 74.299196 68.801293 - C1 71.999186 26.178111 79.767232 - C2 72.673464 25.021326 79.756329 - H11 70.976611 26.235682 79.772577 - H12 72.453015 27.096276 79.771084 - H21 72.219636 24.103160 79.752477 - H22 73.696040 24.963754 79.750984 - C1 35.121508 46.294879 26.631603 - C2 34.583453 46.719304 27.781943 - H11 35.700676 45.453579 26.555571 - H12 34.996184 46.778182 25.737335 - H21 34.708777 46.236001 28.676212 - H22 34.004285 47.560604 27.857976 - C1 46.800621 54.542786 60.587135 - C2 46.442531 53.252648 60.571721 - H11 47.774968 54.858462 60.586315 - H12 46.128319 55.315329 60.600956 - H21 47.114833 52.480105 60.557899 - H22 45.468185 52.936972 60.572541 - C1 23.590054 30.527222 64.819036 - C2 23.181570 29.368837 64.285927 - H11 22.953483 31.212076 65.237075 - H12 24.571178 30.819455 64.850671 - H21 22.200447 29.076604 64.254292 - H22 23.818141 28.683983 63.867888 - C1 63.996808 68.310533 58.060059 - C2 65.294167 68.009046 57.922629 - H11 63.242481 67.628758 57.936859 - H12 63.656826 69.246608 58.299180 - H21 65.634150 67.072971 57.683507 - H22 66.048494 68.690820 58.045829 - C1 59.759401 71.490598 57.570005 - C2 61.091401 71.606039 57.643298 - H11 59.127251 72.291427 57.480211 - H12 59.268022 70.592395 57.597976 - H21 61.582780 72.504242 57.615327 - H22 61.723551 70.805210 57.733092 - C1 49.378712 43.658744 11.222691 - C2 48.380314 42.771888 11.320716 - H11 49.231663 44.670861 11.167932 - H12 50.367901 43.394681 11.194768 - H21 47.391125 43.035951 11.348639 - H22 48.527363 41.759770 11.375475 - C1 59.252119 52.586795 72.306290 - C2 58.772381 51.584406 73.053276 - H11 59.385214 53.539495 72.657932 - H12 59.523679 52.479601 71.324573 - H21 58.500821 51.691600 74.034993 - H22 58.639286 50.631705 72.701635 - C1 34.622690 13.843977 13.747948 - C2 35.890745 14.065466 13.379301 - H11 33.813571 14.188507 13.222943 - H12 34.362217 13.312624 14.583903 - H21 36.151219 14.596819 12.543345 - H22 36.699864 13.720936 13.904305 - C1 69.076369 40.201630 76.189915 - C2 67.892029 40.501473 75.641868 - H11 69.190573 39.532142 76.956561 - H12 69.961144 40.618203 75.885540 - H21 67.007254 40.084900 75.946243 - H22 67.777825 41.170961 74.875222 - C1 36.258341 70.196333 36.134440 - C2 35.978604 71.486769 35.912077 - H11 37.211782 69.825326 36.182479 - H12 35.540856 69.478871 36.273962 - H21 36.696089 72.204231 35.772556 - H22 35.025163 71.857776 35.864038 - C1 11.062778 50.015159 35.792859 - C2 12.123653 50.923975 35.884781 - C3 13.025248 50.841619 36.952599 - C4 12.865969 49.850447 37.928494 - C5 11.804694 48.942452 37.836980 - C6 10.903099 49.024808 36.769162 - H11 10.367225 50.078977 34.969483 - H21 12.247025 51.688343 35.131612 - H31 13.844173 51.542169 37.022805 - H41 13.561122 49.787450 38.752277 - H51 11.681322 48.178085 38.590148 - H61 10.084574 48.323438 36.698548 - C1 53.294808 46.122258 50.226779 - C2 54.489966 45.399823 50.324426 - C3 54.510911 44.035760 50.010126 - C4 53.336697 43.394132 49.598180 - C5 52.141622 44.116339 49.501504 - C6 52.120677 45.480402 49.815804 - H11 53.278639 47.174210 50.469576 - H21 55.396094 45.894846 50.641639 - H31 55.433207 43.478832 50.084543 - H41 53.352949 42.341952 49.356354 - H51 51.235494 43.621315 49.184291 - H61 51.198298 46.037558 49.740417 - C1 21.146467 40.264329 35.737381 - C2 21.505903 39.185412 36.553834 - C3 20.661975 38.073051 36.655471 - C4 19.458612 38.039607 35.940655 - C5 19.098913 39.118801 35.125125 - C6 19.942840 40.231162 35.023488 - H11 21.797212 41.122382 35.659343 - H21 22.434569 39.210805 37.104901 - H31 20.939897 37.240391 37.284576 - H41 18.807604 37.181831 36.019616 - H51 18.170246 39.093408 34.574058 - H61 19.665182 41.063544 34.393459 - C1 52.300603 9.471745 43.584351 - C2 52.800112 8.164303 43.614980 - C3 53.787942 7.814053 44.543101 - C4 54.276263 8.771245 45.440592 - C5 53.777437 10.078655 45.409232 - C6 52.789607 10.428906 44.481111 - H11 51.539014 9.741912 42.868247 - H21 52.423023 7.425554 42.923030 - H31 54.172443 6.805137 44.567255 - H41 55.038535 8.501046 46.155966 - H51 54.154525 10.817405 46.101182 - H61 52.404423 11.437853 44.457688 - C1 29.444335 31.550344 51.630983 - C2 29.975894 32.816585 51.359082 - C3 31.331156 33.072904 51.598784 - C4 32.154858 32.062983 52.110388 - C5 31.623058 30.797298 52.383085 - C6 30.267796 30.540978 52.143383 - H11 28.398985 31.352839 51.446457 - H21 29.340661 33.595666 50.963794 - H31 31.741272 34.049491 51.388023 - H41 33.199967 32.261044 52.295710 - H51 32.258291 30.018217 52.778373 - H61 29.857920 29.563836 52.353348 - C1 67.928825 26.154463 69.078419 - C2 68.201830 27.024965 70.140278 - C3 68.971030 28.174318 69.922998 - C4 69.467225 28.453169 68.643859 - C5 69.194989 27.582249 67.582482 - C6 68.425789 26.432896 67.799762 - H11 67.335897 25.267831 69.246149 - H21 67.818563 26.810283 71.127070 - H31 69.180691 28.846268 70.742060 - H41 70.060923 29.339383 68.476612 - H51 69.578256 27.796932 66.595690 - H61 68.215358 25.761364 66.980217 - C1 50.530996 32.623247 10.031290 - C2 51.707498 32.022408 9.567946 - C3 51.650791 30.787857 8.910254 - C4 50.417582 30.154146 8.715905 - C5 49.241472 30.754534 9.180051 - C6 49.298179 31.989085 9.837744 - H11 50.574844 33.575217 10.538878 - H21 52.658937 32.511495 9.717270 - H31 52.558383 30.324975 8.551989 - H41 50.374125 29.201725 8.209119 - H51 48.290032 30.265447 9.030728 - H61 48.390196 32.452419 10.195206 - C1 38.086556 34.617106 72.582305 - C2 37.908094 35.019336 71.253315 - C3 37.066322 36.097567 70.955443 - C4 36.403012 36.773569 71.986561 - C5 36.580789 36.370711 73.315182 - C6 37.422562 35.292479 73.613054 - H11 38.735486 33.785258 72.811937 - H21 38.420259 34.498281 70.457745 - H31 36.929556 36.408362 69.930241 - H41 35.753397 37.604789 71.756560 - H51 36.068625 36.891765 74.110752 - H61 37.560012 34.982314 74.638624 - C1 60.594748 77.093077 34.230396 - C2 59.685276 78.139307 34.035162 - C3 59.525972 79.121154 35.020296 - C4 60.276139 79.056771 36.200664 - C5 61.184720 78.010157 36.396144 - C6 61.344025 77.028310 35.411010 - H11 60.717279 76.335639 33.470734 - H21 59.106894 78.189452 33.124283 - H31 58.825059 79.928738 34.869079 - H41 60.152718 79.813826 36.960573 - H51 61.763102 77.960013 37.307023 - H61 62.045828 76.221111 35.561981 - C1 20.710089 72.503180 73.820492 - C2 20.604713 73.456327 74.840423 - C3 20.968560 73.122681 76.150456 - C4 21.437783 71.835888 76.440558 - C5 21.542196 70.882725 75.420896 - C6 21.178349 71.216371 74.110863 - H11 20.429083 72.760454 72.810215 - H21 20.243303 74.449326 74.616645 - H31 20.888156 73.858406 76.936955 - H41 21.717826 71.578597 77.451104 - H51 21.903606 69.889726 75.644674 - H61 21.259716 70.480663 73.324095 - C1 47.098403 56.812347 64.611333 - C2 46.580886 57.038260 65.892345 - C3 45.196977 57.132734 66.081453 - C4 44.330585 57.001295 64.989550 - C5 44.848183 56.776369 63.708677 - C6 46.232092 56.681895 63.519569 - H11 48.165779 56.739884 64.465490 - H21 47.249162 57.139072 66.734951 - H31 44.797876 57.306009 67.069902 - H41 43.263290 57.074745 65.135531 - H51 44.179907 56.675557 62.866071 - H61 46.631111 56.507633 62.530981 - C1 9.618287 9.578244 61.590349 - C2 10.404986 10.190625 60.607523 - C3 10.299210 11.568666 60.384578 - C4 9.406735 12.334326 61.144457 - C5 8.619553 11.721774 62.126424 - C6 8.725329 10.343733 62.349369 - H11 9.699634 8.515351 61.761978 - H21 11.094030 9.600144 60.021612 - H31 10.906907 12.041077 59.627037 - H41 9.324905 13.397047 60.971969 - H51 7.930509 12.312255 62.712335 - H61 8.118115 9.871492 63.107769 - C1 44.870027 13.139396 45.190919 - C2 43.538555 12.834193 44.884515 - C3 43.124251 11.498621 44.817496 - C4 44.041419 10.468252 45.056882 - C5 45.372837 10.773516 45.362290 - C6 45.787141 12.109088 45.429309 - H11 45.189586 14.169476 45.242207 - H21 42.830695 13.629038 44.700408 - H31 42.096832 11.263386 44.582101 - H41 43.721806 9.438233 45.004597 - H51 46.080698 9.978671 45.546397 - H61 46.814615 12.344261 45.665700 - C1 52.497406 20.925612 16.415631 - C2 51.669241 21.397905 15.390482 - C3 50.427042 20.794694 15.160334 - C4 50.013008 19.719188 15.955335 - C5 50.841528 19.246469 16.979652 - C6 52.083727 19.849681 17.209800 - H11 53.455617 21.390635 16.592828 - H21 51.988269 22.228056 14.777447 - H31 49.787859 21.159821 14.370102 - H41 49.055152 19.253739 15.777306 - H51 50.522499 18.416319 17.592687 - H61 52.722554 19.484979 18.000865 - C1 24.785781 27.107394 53.102127 - C2 25.193046 28.343989 52.587520 - C3 26.543148 28.569422 52.293760 - C4 27.485986 27.558260 52.514607 - C5 27.078801 26.322262 53.030013 - C6 25.728698 26.096829 53.323773 - H11 23.744549 26.933728 53.329037 - H21 24.465663 29.123994 52.416503 - H31 26.856998 29.523094 51.895833 - H41 28.527298 27.732524 52.288496 - H51 27.806184 25.542257 53.201030 - H61 25.414770 25.142561 53.720901 - C1 50.525277 72.783647 25.289144 - C2 49.153820 72.880613 25.025416 - C3 48.333909 71.753851 25.159742 - C4 48.885455 70.530122 25.557796 - C5 50.256838 70.433085 25.820529 - C6 51.076749 71.559848 25.686203 - H11 51.157648 73.652615 25.185146 - H21 48.728049 73.824811 24.718901 - H31 47.275767 71.829081 24.957225 - H41 48.253009 69.661084 25.660800 - H51 50.682609 69.488888 26.127044 - H61 52.134966 71.484688 25.889715 - C1 32.082127 27.566998 31.080895 - C2 31.894371 27.230390 29.735052 - C3 31.381799 25.973361 29.392944 - C4 31.056981 25.052940 30.396679 - C5 31.245640 25.389262 31.742201 - C6 31.758212 26.646291 32.084309 - H11 32.477823 28.536361 31.344665 - H21 32.144347 27.940628 28.960575 - H31 31.236078 25.714236 28.354697 - H41 30.662188 24.083291 30.132588 - H51 30.995664 24.679024 32.516678 - H61 31.903030 26.905703 33.122877 - C1 62.052587 4.640388 57.155783 - C2 61.439156 5.796857 56.659666 - C3 62.222068 6.873972 56.227507 - C4 63.618412 6.794619 56.291465 - C5 64.231584 5.638671 56.788395 - C6 63.448671 4.561555 57.220554 - H11 61.448694 3.809844 57.489437 - H21 60.361888 5.857985 56.609687 - H31 61.748693 7.765644 55.843874 - H41 64.222045 7.625683 55.958624 - H51 65.308852 5.577542 56.838374 - H61 63.922306 3.669362 57.603374 - C1 65.864915 7.295032 75.721770 - C2 66.736608 8.375512 75.902227 - C3 66.642760 9.497085 75.069667 - C4 65.677218 9.538178 74.056648 - C5 64.806368 8.457428 73.875725 - C6 64.900216 7.335855 74.708285 - H11 65.937607 6.429877 76.363671 - H21 67.481178 8.344213 76.684133 - H31 67.314638 10.330940 75.209671 - H41 65.605369 10.403063 73.414281 - H51 64.061798 8.488727 73.093819 - H61 64.227495 6.502269 74.568748 - C1 38.643009 5.896930 15.815791 - C2 38.954877 6.171989 14.479029 - C3 38.013740 6.802096 13.656158 - C4 36.760734 7.157142 14.170048 - C5 36.448705 6.881222 15.506326 - C6 37.389842 6.251116 16.329198 - H11 39.368769 5.410601 16.450275 - H21 39.921767 5.898683 14.082584 - H31 38.254869 7.015117 12.625228 - H41 36.034812 7.642610 13.535080 - H51 35.481815 7.154528 15.902771 - H61 37.148874 6.038955 17.360610 - C1 18.835907 34.085291 29.214624 - C2 17.504889 33.881634 28.831522 - C3 16.922678 32.615991 28.969611 - C4 17.671484 31.554005 29.490802 - C5 19.002537 31.757532 29.872913 - C6 19.584748 33.023175 29.734824 - H11 19.284999 35.061357 29.107731 - H21 16.926865 34.701018 28.429977 - H31 15.895561 32.459310 28.674959 - H41 17.222427 30.577809 29.596704 - H51 19.580561 30.938148 30.274458 - H61 20.611829 33.179986 30.030467 - C1 34.653660 34.544209 14.922092 - C2 34.301495 35.002237 13.646929 - C3 34.710638 34.293568 12.511024 - C4 35.471946 33.126871 12.650281 - C5 35.824779 32.669556 13.925234 - C6 35.415636 33.378225 15.061140 - H11 34.338405 35.091036 15.798111 - H21 33.713621 35.902000 13.539356 - H31 34.438019 34.646504 11.527432 - H41 35.787870 32.580757 11.774053 - H51 36.412653 31.769793 14.032808 - H61 35.687587 33.024577 16.044942 - C1 17.079075 43.199560 36.261501 - C2 16.269758 42.715912 37.296365 - C3 15.305947 41.735755 37.031315 - C4 15.151454 41.239245 35.731402 - C5 15.960045 41.723573 34.696636 - C6 16.923855 42.703731 34.961686 - H11 17.822134 43.955795 36.465915 - H21 16.389254 43.098434 38.299429 - H31 14.682384 41.362041 37.829966 - H41 14.407668 40.483691 35.527085 - H51 15.840549 41.341052 33.693571 - H61 17.548145 43.076764 34.162937 - C1 47.083885 22.890077 24.898457 - C2 48.199967 22.138147 25.284218 - C3 48.112060 20.742945 25.358892 - C4 46.908071 20.099674 25.047804 - C5 45.791997 20.851653 24.663042 - C6 45.879904 22.246854 24.588369 - H11 47.151640 23.966159 24.841263 - H21 49.129100 22.634253 25.523660 - H31 48.973438 20.162969 25.655527 - H41 46.840325 19.023640 25.105997 - H51 44.862864 20.355547 24.423601 - H61 45.018517 22.826782 24.290734 - C1 58.590666 76.397686 39.935030 - C2 59.226989 77.629216 40.130676 - C3 60.624528 77.694798 40.180444 - C4 61.385742 76.528850 40.034567 - C5 60.749382 75.297474 39.839909 - C6 59.351844 75.231892 39.790140 - H11 57.512791 76.347120 39.897046 - H21 58.639856 78.528929 40.242621 - H31 61.115269 78.645077 40.330374 - H41 62.463580 76.579570 40.073538 - H51 61.336515 74.397760 39.727963 - H61 58.861139 74.281459 39.639223 - C1 67.744664 44.639056 53.432475 - C2 68.929248 43.986433 53.070957 - C3 70.140940 44.687619 53.065292 - C4 70.168047 46.041428 53.421144 - C5 68.983462 46.694054 53.781662 - C6 67.771771 45.992867 53.787327 - H11 66.810113 44.098303 53.436445 - H21 68.908585 42.941802 52.796984 - H31 71.054828 44.183741 52.787348 - H41 71.102597 46.582184 53.416173 - H51 69.004125 47.738684 54.055634 - H61 66.857883 46.496742 54.066270 - C1 47.586472 6.087430 14.154551 - C2 46.566858 6.861905 14.720614 - C3 46.887936 7.959108 15.528665 - C4 48.228627 8.281836 15.770652 - C5 49.247953 7.506853 15.205401 - C6 48.926876 6.409650 14.397350 - H11 47.338768 5.240985 13.531664 - H21 45.532459 6.613409 14.533507 - H31 46.101240 8.557057 15.964444 - H41 48.476043 9.127773 16.394351 - H51 50.282353 7.755349 15.392508 - H61 49.713859 5.812209 13.960759 - C1 72.022819 75.805123 77.846738 - C2 71.596452 76.528398 76.726499 - C3 70.229921 76.741585 76.509623 - C4 69.289757 76.231497 77.412987 - C5 69.716135 75.507562 78.532475 - C6 71.082666 75.294375 78.749350 - H11 73.076761 75.640402 78.013736 - H21 72.321710 76.922524 76.029787 - H31 69.901237 77.300432 75.645914 - H41 68.235826 76.395558 77.245238 - H51 68.990877 75.113436 79.229187 - H61 71.411339 74.736188 79.613811 - C1 13.876209 53.715461 32.559930 - C2 13.052420 54.610791 31.867393 - C3 11.861896 54.159468 31.285284 - C4 11.495160 52.812815 31.395713 - C5 12.319359 51.917560 32.087341 - C6 13.509884 52.368883 32.669449 - H11 14.794589 54.063533 33.008526 - H21 13.334922 55.649902 31.782640 - H31 11.226018 54.850507 30.751935 - H41 10.577190 52.464818 30.946208 - H51 12.036857 50.878449 32.172093 - H61 14.145352 51.677769 33.203707 - C1 70.294633 56.335829 69.329187 - C2 71.343502 57.180307 69.712045 - C3 72.643955 56.674301 69.824609 - C4 72.895539 55.323816 69.554313 - C5 71.846609 54.479387 69.172451 - C6 70.546156 54.985394 69.059888 - H11 69.291607 56.726066 69.242770 - H21 71.149663 58.222380 69.920016 - H31 73.453142 57.326137 70.118996 - H41 73.898504 54.933629 69.641726 - H51 72.040448 53.437314 68.964481 - H61 69.737030 54.333508 68.764504 - C1 19.661506 53.536523 45.714543 - C2 19.224267 52.232735 45.452227 - C3 19.400660 51.678272 44.178906 - C4 20.014292 52.427596 43.167900 - C5 20.450552 53.731474 43.430036 - C6 20.274159 54.285937 44.703357 - H11 19.525079 53.964237 46.696511 - H21 18.751383 51.654282 46.232300 - H31 19.064204 50.672105 43.977010 - H41 20.149740 51.999972 42.185751 - H51 20.923436 54.309927 42.649963 - H61 20.611595 55.292015 44.905433 - C1 55.775018 43.260034 14.043063 - C2 55.584250 41.873199 14.055212 - C3 54.885524 41.272051 15.108917 - C4 54.377566 42.057738 16.150473 - C5 54.569190 43.444200 16.138684 - C6 55.267916 44.045347 15.084979 - H11 56.314263 43.723564 13.230555 - H21 55.975553 41.266975 13.251399 - H31 54.737582 40.202297 15.117612 - H41 53.839177 41.593835 16.963341 - H51 54.177887 44.050424 16.942497 - H61 55.415003 45.115475 15.075924 - C1 43.657517 35.874873 50.046350 - C2 43.967765 34.556168 49.693343 - C3 45.170679 34.272175 49.035896 - C4 46.063345 35.306886 48.731456 - C5 45.752599 36.625430 49.083612 - C6 44.549685 36.909424 49.741059 - H11 42.729566 36.093887 50.553060 - H21 43.279445 33.757693 49.928704 - H31 45.410310 33.254686 48.764547 - H41 46.990798 35.087711 48.223895 - H51 46.440919 37.423905 48.848251 - H61 44.310552 37.927074 50.013260 - C1 51.147529 71.310032 58.197977 - C2 49.801479 71.376701 57.819090 - C3 49.213126 70.306312 57.134985 - C4 49.970823 69.169254 56.829767 - C5 51.316871 69.103120 57.207809 - C6 51.905224 70.173509 57.891914 - H11 51.601344 72.135774 58.725251 - H21 49.216617 72.253630 58.055042 - H31 48.174450 70.357499 56.843664 - H41 49.517006 68.344047 56.301649 - H51 51.901733 68.226191 56.971857 - H61 52.943903 70.121787 58.184081 - C1 52.109535 3.051588 40.874965 - C2 53.412015 2.545858 40.787595 - C3 54.408616 3.027051 41.644992 - C4 54.102737 4.013973 42.589761 - C5 52.800676 4.520202 42.676373 - C6 51.804074 4.039010 41.818975 - H11 51.341038 2.680703 40.213398 - H21 53.648010 1.783996 40.059162 - H31 55.413108 2.636074 41.578127 - H41 54.871653 4.385358 43.250569 - H51 52.564681 5.282064 43.404805 - H61 50.799164 4.429487 41.886599 - C1 60.459130 57.842217 10.115312 - C2 61.557925 58.637976 10.460666 - C3 62.847597 58.093453 10.449120 - C4 63.038473 56.753172 10.092221 - C5 61.939691 55.957412 9.747868 - C6 60.650020 56.501935 9.759413 - H11 59.464448 58.262140 10.124616 - H21 61.410884 59.672199 10.735443 - H31 63.695238 58.707753 10.714594 - H41 64.033169 56.333247 10.083918 - H51 62.086732 54.923189 9.473091 - H61 59.802365 55.887636 9.492940 - C1 49.812882 47.692124 8.944751 - C2 50.399310 46.456854 8.644649 - C3 49.610496 45.407181 8.159005 - C4 48.235254 45.592778 7.973463 - C5 47.648899 46.827578 8.274445 - C6 48.437713 47.877251 8.760089 - H11 50.421251 48.501527 9.319674 - H21 51.460413 46.313706 8.787162 - H31 50.063230 44.454629 7.926595 - H41 47.626959 44.782905 7.599420 - H51 46.587796 46.970726 8.131932 - H61 47.984905 48.830272 8.991619 - C1 4.041680 59.762891 57.680625 - C2 4.456645 59.474929 58.986279 - C3 4.729841 60.517460 59.879802 - C4 4.588072 61.847954 59.467671 - C5 4.174086 62.135732 58.161940 - C6 3.900890 61.093201 57.268417 - H11 3.831369 58.958788 56.991422 - H21 4.565473 58.448486 59.304574 - H31 5.048980 60.295120 60.887300 - H41 4.799363 62.651873 60.156798 - H51 4.065258 63.162176 57.843646 - H61 3.580772 61.315725 56.260996 - C1 4.606380 19.249529 15.704471 - C2 5.814003 18.776144 15.177779 - C3 5.919253 17.445873 14.754467 - C4 4.816881 16.588988 14.857847 - C5 3.609820 17.062158 15.385338 - C6 3.504569 18.392429 15.808650 - H11 4.525389 20.275414 16.031297 - H21 6.664395 19.437287 15.097387 - H31 6.850637 17.081132 14.347250 - H41 4.898434 15.562888 14.531821 - H51 2.759428 16.401014 15.465730 - H61 2.572625 18.757385 16.215069 - C1 36.841244 69.917383 18.694259 - C2 36.648419 71.279528 18.434969 - C3 35.432802 71.889801 18.766228 - C4 34.410009 71.137929 19.356777 - C5 34.602587 69.775829 19.615099 - C6 35.818204 69.165555 19.283840 - H11 37.778678 69.446680 18.438390 - H21 37.437644 71.859871 17.979924 - H31 35.284592 72.940848 18.567051 - H41 33.472327 71.608676 19.611678 - H51 33.813362 69.195485 20.070144 - H61 35.966661 68.114464 19.483984 - C1 27.742848 45.192928 76.312891 - C2 29.056680 45.420393 76.739456 - C3 29.856480 46.356817 76.073632 - C4 29.342448 47.065775 74.981243 - C5 28.029151 46.837571 74.554269 - C6 27.229351 45.901147 75.220093 - H11 27.126180 44.470408 76.826212 - H21 29.453196 44.873947 77.582612 - H31 30.869665 46.532891 76.403468 - H41 29.959651 47.787556 74.467513 - H51 27.632635 47.384017 73.711113 - H61 26.215632 45.725812 74.890667 - C1 39.562064 22.534954 53.849846 - C2 38.496173 22.997698 53.069082 - C3 37.584872 22.088242 52.519253 - C4 37.739463 20.716042 52.750189 - C5 38.805747 20.253445 53.530046 - C6 39.717048 21.162902 54.079875 - H11 40.265100 23.236402 54.273551 - H21 38.376421 24.056380 52.891335 - H31 36.762085 22.445476 51.917802 - H41 37.036820 20.014742 52.325576 - H51 38.925498 19.194764 53.707792 - H61 40.539442 20.805520 54.682234 - C1 51.371117 6.534399 68.863503 - C2 50.225289 7.102707 68.294332 - C3 48.971145 6.879827 68.875141 - C4 48.862830 6.088639 70.025121 - C5 50.008413 5.519718 70.593541 - C6 51.262557 5.742598 70.012732 - H11 52.338306 6.706016 68.415275 - H21 50.308773 7.713644 67.407468 - H31 48.087441 7.319147 68.436505 - H41 47.895397 5.916409 70.472598 - H51 49.924929 4.908781 71.480404 - H61 52.146506 5.303891 70.452119 - C1 25.234587 20.817880 41.221172 - C2 25.362586 22.151632 40.815496 - C3 24.354211 23.074740 41.117063 - C4 23.217838 22.664097 41.824305 - C5 23.089552 21.330350 42.229024 - C6 24.097926 20.407242 41.927457 - H11 26.012159 20.105892 40.988214 - H21 26.239535 22.468731 40.270382 - H31 24.453589 24.103827 40.804907 - H41 22.439978 23.376090 42.056306 - H51 22.212602 21.013252 42.774138 - H61 23.998837 19.378150 42.240570 - C1 37.740176 27.237069 33.665400 - C2 37.826107 26.059663 34.417849 - C3 36.661644 25.452494 34.902888 - C4 35.411250 26.022732 34.635478 - C5 35.325541 27.200442 33.883955 - C6 36.490004 27.807611 33.398916 - H11 38.638341 27.705514 33.291672 - H21 38.790684 25.619265 34.623718 - H31 36.728056 24.543652 35.482485 - H41 34.513307 25.554590 35.010133 - H51 34.360964 27.640839 33.678086 - H61 36.423370 28.716149 32.818392 - C1 22.948070 56.283354 69.594730 - C2 24.273394 56.154093 69.162687 - C3 25.271079 55.775147 70.068731 - C4 24.943442 55.525462 71.406817 - C5 23.618480 55.655655 71.838859 - C6 22.620795 56.034601 70.932816 - H11 22.178713 56.576002 68.895974 - H21 24.526218 56.346096 68.130236 - H31 26.293261 55.674502 69.735036 - H41 25.713161 55.233747 72.105573 - H51 23.365656 55.463653 72.871311 - H61 21.598251 56.134314 71.266512 - C1 11.284130 58.033471 60.036500 - C2 11.392749 56.890002 59.236167 - C3 10.404349 56.603598 58.286995 - C4 9.307329 57.460662 58.138155 - C5 9.198370 58.603384 58.939060 - C6 10.186771 58.889788 59.888233 - H11 12.046276 58.254095 60.768806 - H21 12.239366 56.229004 59.350458 - H31 10.488820 55.721975 57.668979 - H41 8.544843 57.239291 57.406421 - H51 8.351753 59.264382 58.824770 - H61 10.102640 59.772157 60.505676 - C1 21.247034 65.318310 38.392307 - C2 21.687357 64.155183 37.749576 - C3 20.943793 63.614821 36.693634 - C4 19.759907 64.237584 36.280423 - C5 19.319282 65.399962 36.923744 - C6 20.062845 65.940325 37.979686 - H11 21.820354 65.734796 39.206958 - H21 22.601039 63.674949 38.067855 - H31 21.284155 62.718101 36.197262 - H41 19.186284 63.820350 35.466362 - H51 18.405600 65.880196 36.605464 - H61 19.722786 66.837793 38.475468 - C1 14.284063 44.623741 32.727134 - C2 13.838584 45.891044 32.332998 - C3 12.476926 46.208087 32.405535 - C4 11.560746 45.257826 32.872208 - C5 12.006155 43.990472 33.265348 - C6 13.367813 43.673429 33.192810 - H11 15.334213 44.379153 32.670794 - H21 14.545386 46.624491 31.973515 - H31 12.133577 47.186122 32.102392 - H41 10.510525 45.502364 32.927551 - H51 11.299353 43.257025 33.624830 - H61 13.711232 42.695445 33.496950 - C1 75.918341 39.567726 53.281989 - C2 76.064161 40.549653 52.294869 - C3 75.009511 41.428564 52.020786 - C4 73.809041 41.325547 52.733824 - C5 73.663042 40.343145 53.720082 - C6 74.717692 39.464235 53.994165 - H11 76.731646 38.889641 53.493056 - H21 76.990495 40.629650 51.745098 - H31 75.122539 42.186645 51.259948 - H41 72.995558 42.003157 52.521895 - H51 72.736709 40.263149 54.269853 - H61 74.604842 38.706628 54.755864 - C1 60.210747 22.643934 56.578270 - C2 59.248425 22.369468 57.557277 - C3 57.896549 22.280997 57.204437 - C4 57.506996 22.466991 55.872589 - C5 58.469141 22.742337 54.894021 - C6 59.821017 22.830809 55.246862 - H11 61.253330 22.712541 56.850535 - H21 59.548884 22.225338 58.584746 - H31 57.154426 22.068259 57.959640 - H41 56.464236 22.399264 55.600763 - H51 58.168682 22.886467 53.866552 - H61 60.563318 23.042666 54.491219 - C1 22.552182 6.842566 8.947793 - C2 23.080084 6.017410 9.947937 - C3 23.491959 4.716137 9.636588 - C4 23.375932 4.240020 8.325094 - C5 22.847232 5.064805 7.325424 - C6 22.435357 6.366078 7.636774 - H11 22.234177 7.846036 9.188072 - H21 23.170233 6.384810 10.959684 - H31 23.900113 4.080067 10.408055 - H41 23.693139 3.236178 8.085289 - H51 22.757084 4.697405 6.313678 - H61 22.028002 7.002520 6.864832 - C1 76.442127 45.904500 75.658379 - C2 75.686749 46.873511 76.329401 - C3 74.341964 46.627513 76.630945 - C4 73.752557 45.412502 76.261468 - C5 74.507654 44.444133 75.589734 - C6 75.852439 44.690132 75.288190 - H11 77.479190 46.094449 75.425495 - H21 76.141511 47.810703 76.615066 - H31 73.759664 47.374755 77.149494 - H41 72.715213 45.223196 76.493640 - H51 74.052891 43.506942 75.304069 - H61 76.435021 43.942247 74.770353 - C1 29.430326 43.912510 31.535105 - C2 29.289848 43.148188 32.699549 - C3 30.077445 43.431272 33.821799 - C4 31.005521 44.478677 33.779605 - C5 31.146542 45.242176 32.614995 - C6 30.358945 44.959092 31.492745 - H11 28.823132 43.693876 30.669468 - H21 28.573436 42.340468 32.732458 - H31 29.968227 42.842185 34.720345 - H41 31.613258 44.696488 34.645076 - H51 31.862954 46.049896 32.582086 - H61 30.467620 45.549002 30.594365 - C1 76.767680 35.681643 14.946516 - C2 76.934112 34.360451 14.514539 - C3 77.797978 33.501955 15.204910 - C4 78.495412 33.964650 16.327257 - C5 78.329642 35.285898 16.758485 - C6 77.465776 36.144394 16.068115 - H11 76.101702 36.343824 14.413785 - H21 76.395633 34.003155 13.649022 - H31 77.925477 32.482477 14.872123 - H41 79.162052 33.302525 16.859239 - H51 78.868121 35.643194 17.624003 - H61 77.337615 37.163815 16.401650 - C1 63.371417 49.145041 19.395250 - C2 64.103155 48.703274 20.503966 - C3 64.771553 49.628095 21.315041 - C4 64.708213 50.994682 21.017399 - C5 63.977353 51.436151 19.908307 - C6 63.308955 50.511330 19.097233 - H11 62.856257 48.431680 18.769518 - H21 64.151607 47.649026 20.734082 - H31 65.335165 49.287208 22.170888 - H41 65.224251 51.707745 21.642755 - H51 63.928901 52.490399 19.678192 - H61 62.744465 50.852516 18.241760 - C1 58.378701 28.043993 49.811918 - C2 57.028672 27.854779 50.130464 - C3 56.106338 28.884396 49.908926 - C4 56.534033 30.103228 49.368842 - C5 57.884004 30.292609 49.051280 - C6 58.806338 29.262992 49.272818 - H11 59.090071 27.249991 49.983170 - H21 56.698448 26.914277 50.546577 - H31 55.064744 28.737896 50.153787 - H41 55.822605 30.897397 49.198574 - H51 58.214228 31.233111 48.635168 - H61 59.847989 29.409324 49.026973 - C1 46.598888 56.266862 53.150270 - C2 46.660784 57.664344 53.205617 - C3 45.819104 58.368300 54.075049 - C4 44.915527 57.674773 54.889133 - C5 44.853081 56.277603 54.833010 - C6 45.694762 55.573647 53.963579 - H11 47.247793 55.724016 52.479409 - H21 47.358282 58.199506 52.578052 - H31 45.867696 59.446308 54.118344 - H41 44.266072 58.217931 55.559218 - H51 44.155583 55.742440 55.460576 - H61 45.646718 54.495327 53.921059 - C1 47.299262 52.822013 5.193982 - C2 46.125231 53.435533 4.741108 - C3 44.886414 52.819257 4.954243 - C4 44.821627 51.589461 5.620253 - C5 45.995604 50.975705 6.072157 - C6 47.234421 51.591980 5.859021 - H11 48.254709 53.297184 5.029221 - H21 46.175002 54.384629 4.227804 - H31 43.980737 53.293181 4.605700 - H41 43.866125 51.114053 5.784043 - H51 45.945833 50.026609 6.585461 - H61 48.140153 51.118293 6.208535 - C1 53.864426 15.037754 35.287495 - C2 53.501651 16.166724 34.543403 - C3 52.161088 16.376785 34.198939 - C4 51.183300 15.457878 34.598568 - C5 51.546276 14.328665 35.341712 - C6 52.886839 14.118604 35.686175 - H11 54.898416 14.875600 35.552796 - H21 54.255826 16.876077 34.235541 - H31 51.881273 17.248293 33.625777 - H41 50.149510 15.619789 34.332318 - H51 50.792100 13.619312 35.649573 - H61 53.166453 13.247339 36.260287 - C1 46.043533 79.854902 18.061900 - C2 46.693186 79.740874 19.296727 - C3 45.945910 79.559526 20.466591 - C4 44.548980 79.492206 20.401628 - C5 43.899521 79.607176 19.167076 - C6 44.646797 79.788524 17.997212 - H11 46.619913 79.995159 17.159720 - H21 47.770956 79.792175 19.346930 - H31 46.447300 79.470571 21.418974 - H41 43.972794 79.352891 21.304083 - H51 42.821751 79.555874 19.116874 - H61 44.145213 79.876537 17.044554 - C1 3.579031 44.090882 75.641518 - C2 2.567836 44.925454 75.150778 - C3 2.749648 45.609511 73.942928 - C4 3.942654 45.458996 73.225818 - C5 4.953961 44.625283 73.717057 - C6 4.772149 43.941226 74.924907 - H11 3.438899 43.563633 76.573283 - H21 1.647121 45.041197 75.703613 - H31 1.969064 46.252503 73.563999 - H41 4.082899 45.987105 72.294552 - H51 5.874677 44.509540 73.164221 - H61 5.552621 43.297375 75.303338 - C1 37.273336 19.082814 70.480023 - C2 38.526632 18.899173 71.076158 - C3 39.297499 20.009350 71.441073 - C4 38.815071 21.303167 71.209851 - C5 37.562399 21.486632 70.612953 - C6 36.791531 20.376455 70.248039 - H11 36.679021 18.226539 70.198248 - H21 38.898694 17.901043 71.255173 - H31 40.263877 19.867494 71.901862 - H41 39.410009 22.159266 71.490864 - H51 37.190336 22.484762 70.433938 - H61 35.824530 20.518487 69.788011 - C1 4.095503 29.709670 29.957575 - C2 4.879459 28.920381 29.107700 - C3 5.863845 29.515749 28.309946 - C4 6.064275 30.900406 28.362067 - C5 5.279753 31.689553 29.211129 - C6 4.295367 31.094185 30.008884 - H11 3.336042 29.250473 30.572532 - H21 4.725357 27.852015 29.067837 - H31 6.469204 28.906580 27.655126 - H41 6.823170 31.359461 27.746298 - H51 5.433854 32.757919 29.250993 - H61 3.690573 31.703496 30.664516 - C1 71.138438 47.730880 59.877076 - C2 72.096428 48.426553 59.129985 - C3 71.805765 49.703294 58.634668 - C4 70.557112 50.284361 58.886441 - C5 69.599044 49.588317 59.632607 - C6 69.889707 48.311576 60.127924 - H11 71.362537 46.746028 60.258731 - H21 73.060042 47.978637 58.936181 - H31 72.545280 50.240230 58.059208 - H41 70.332936 51.268842 58.503860 - H51 68.635430 50.036232 59.826411 - H61 69.150269 47.775011 60.704309 - C1 55.605901 57.740572 33.982884 - C2 54.237354 57.909180 34.224754 - C3 53.394058 56.793179 34.282076 - C4 53.919309 55.508571 34.097529 - C5 55.287467 55.340206 33.854771 - C6 56.130763 56.456207 33.797449 - H11 56.256178 58.601366 33.938298 - H21 53.832076 58.900158 34.367765 - H31 52.338503 56.923364 34.469674 - H41 53.268643 54.648020 34.141227 - H51 55.692745 54.349228 33.711759 - H61 57.186707 56.325780 33.610739 - C1 3.633134 73.519045 15.008571 - C2 2.453559 72.836793 14.687656 - C3 1.968083 72.857613 13.374732 - C4 2.662182 73.560684 12.382723 - C5 3.841020 74.243553 12.703915 - C6 4.326496 74.222733 14.016839 - H11 4.007296 73.503271 16.021275 - H21 1.918278 72.293813 15.452762 - H31 1.058640 72.330406 13.127135 - H41 2.287284 73.577075 11.370296 - H51 4.376301 74.786533 11.938809 - H61 5.236676 74.749322 14.264160 - C1 18.992609 2.051244 20.407249 - C2 19.321729 3.409158 20.320063 - C3 20.449893 3.810701 19.594875 - C4 21.248938 2.854331 18.956872 - C5 20.920301 1.496620 19.044910 - C6 19.792136 1.095076 19.770099 - H11 18.122713 1.741586 20.966897 - H21 18.705005 4.147172 20.811721 - H31 20.703066 4.858374 19.526885 - H41 22.119317 3.164191 18.398076 - H51 21.537024 0.758605 18.553252 - H61 19.538481 0.047201 19.837237 - C1 67.590062 32.240509 55.030226 - C2 68.223285 33.354376 55.594300 - C3 67.469323 34.318334 56.274165 - C4 66.082138 34.168425 56.389957 - C5 65.449036 33.055196 55.825123 - C6 66.202998 32.091238 55.145258 - H11 68.171570 31.497287 54.505551 - H21 69.293582 33.469855 55.505579 - H31 67.958112 35.177035 56.710119 - H41 65.500751 34.912285 56.913871 - H51 64.378740 32.939717 55.913844 - H61 65.714088 31.231899 54.710064 - C1 31.771696 15.978520 24.590832 - C2 32.279130 14.684032 24.754117 - C3 33.106985 14.127737 23.771731 - C4 33.427407 14.865931 22.626059 - C5 32.919232 16.159815 22.462484 - C6 32.091376 16.716110 23.444870 - H11 31.132896 16.407358 25.348358 - H21 32.032508 14.114620 25.638249 - H31 33.499164 13.129487 23.898336 - H41 34.065465 14.436489 21.868243 - H51 33.165853 16.729227 21.578352 - H61 31.699939 17.714964 23.318555 - C1 53.376436 17.310462 72.585788 - C2 53.103761 18.660863 72.336957 - C3 52.618232 19.477801 73.364948 - C4 52.405378 18.944338 74.641770 - C5 52.677148 17.593942 74.890176 - C6 53.162676 16.777004 73.862186 - H11 53.750531 16.680356 71.792798 - H21 53.268514 19.072724 71.352087 - H31 52.408890 20.519768 73.173068 - H41 52.030378 19.574450 75.434335 - H51 52.512395 17.182082 75.875046 - H61 53.372924 15.735033 74.054490 - C1 52.368204 56.684855 6.715664 - C2 51.805454 55.798829 7.642012 - C3 52.633241 55.057725 8.493732 - C4 54.023777 55.202647 8.419102 - C5 54.586333 56.087844 7.492230 - C6 53.758546 56.828948 6.640511 - H11 51.729727 57.256115 6.058532 - H21 50.732635 55.687371 7.700128 - H31 52.198898 54.375007 9.208979 - H41 54.662059 54.630557 9.075710 - H51 55.659152 56.199302 7.434114 - H61 54.193083 57.512495 5.925787 - C1 5.621355 74.786851 36.629287 - C2 6.128648 75.810816 37.437991 - C3 5.431992 76.205973 38.586212 - C4 4.228043 75.577165 38.925730 - C5 3.720473 74.554048 38.116573 - C6 4.417128 74.158891 36.968351 - H11 6.158506 74.482399 35.743515 - H21 7.057807 76.295619 37.176513 - H31 5.824000 76.995228 39.210506 - H41 3.690615 75.882464 39.811048 - H51 2.791314 74.069244 38.378051 - H61 4.025398 73.368789 36.344511 - C1 30.663575 64.063202 25.215756 - C2 29.582132 63.670962 26.013553 - C3 28.437124 64.473379 26.084082 - C4 28.373559 65.668036 25.356814 - C5 29.455251 66.060559 24.559944 - C6 30.600259 65.258142 24.489415 - H11 31.546796 63.444482 25.161712 - H21 29.630783 62.748993 26.574220 - H31 27.602554 64.170130 26.698794 - H41 27.490587 66.287039 25.411785 - H51 29.406601 66.982527 23.999277 - H61 31.434580 65.561108 23.873777 - C1 65.660002 24.287146 52.450829 - C2 64.425978 24.884199 52.734666 - C3 63.449327 24.171246 53.440174 - C4 63.706701 22.861239 53.861844 - C5 64.940190 22.264080 53.577169 - C6 65.916840 22.977033 52.871661 - H11 66.413061 24.836934 51.906357 - H21 64.227497 25.895091 52.409944 - H31 62.497787 24.632350 53.659924 - H41 62.953106 22.311345 54.405478 - H51 65.138671 21.253188 53.901891 - H61 66.868916 22.516036 52.652749 - C1 78.439171 6.769237 67.969435 - C2 77.548915 7.351295 67.059213 - C3 77.496179 6.889098 65.738803 - C4 78.333699 5.844843 65.328614 - C5 79.224416 5.263614 66.238521 - C6 79.277152 5.725812 67.558931 - H11 78.480071 7.126020 68.987692 - H21 76.902263 8.156542 67.375694 - H31 76.808627 7.337562 65.037026 - H41 78.293260 5.488890 64.310043 - H51 79.871068 4.458368 65.922040 - H61 79.964243 5.276518 68.261022 - C1 61.859427 61.338298 45.152022 - C2 61.519949 62.651773 45.497549 - C3 62.526022 63.601505 45.711365 - C4 63.871573 63.237762 45.579656 - C5 64.210878 61.924256 45.235114 - C6 63.204805 60.974524 45.021297 - H11 61.083449 60.605762 44.987512 - H21 60.481871 62.932706 45.598597 - H31 62.263922 64.614974 45.976924 - H41 64.647378 63.970267 45.745150 - H51 65.248956 61.643323 45.134065 - H61 63.467078 59.961086 44.754754 - C1 27.762700 11.499647 46.279688 - C2 28.342965 10.910748 45.149936 - C3 29.734357 10.914592 44.995321 - C4 30.545483 11.507335 45.970459 - C5 29.965141 12.096926 47.099494 - C6 28.573749 12.093082 47.254108 - H11 26.689551 11.496993 46.398682 - H21 27.717338 10.452860 44.397825 - H31 30.181878 10.459357 44.124216 - H41 31.618554 11.510681 45.850747 - H51 30.590767 12.554814 47.851605 - H61 28.126304 12.547624 48.125931 - C1 77.449576 49.520592 12.824498 - C2 76.620764 49.352539 13.940150 - C3 76.463485 48.083693 14.510400 - C4 77.135020 46.982901 13.964999 - C5 77.962908 47.150896 12.848973 - C6 78.120186 48.419741 12.278722 - H11 77.570527 50.499155 12.384499 - H21 76.103088 50.201824 14.361418 - H31 75.824860 47.954416 15.371667 - H41 77.013144 46.004279 14.404624 - H51 78.480583 46.301610 12.427705 - H61 78.759737 48.549078 11.417830 - C1 76.747845 17.936309 26.153014 - C2 76.752363 19.248495 26.640865 - C3 77.920834 20.016546 26.572574 - C4 79.084788 19.472411 26.016433 - C5 79.080396 18.160131 25.529570 - C6 77.911924 17.392080 25.597861 - H11 75.846729 17.343867 26.206070 - H21 75.854269 19.668646 27.069399 - H31 77.923856 21.029139 26.948052 - H41 79.986030 20.064759 25.964365 - H51 79.978490 17.739980 25.101036 - H61 77.908776 16.379581 25.221395 - C1 3.150594 31.751641 33.227358 - C2 3.784987 32.363845 34.314833 - C3 3.227024 33.508204 34.897077 - C4 2.034666 34.040359 34.391847 - C5 1.400991 33.428719 33.303965 - C6 1.958955 32.284360 32.721721 - H11 3.581187 30.869276 32.778096 - H21 4.704581 31.953039 34.705123 - H31 3.716024 33.979763 35.736629 - H41 1.604791 34.923288 34.840702 - H51 0.481397 33.839525 32.913675 - H61 1.469235 31.812237 31.882575 - C1 3.163665 42.068864 55.755063 - C2 2.207996 41.079443 55.495076 - C3 2.450546 39.754573 55.876890 - C4 3.648765 39.419125 56.518692 - C5 4.604582 40.408292 56.777723 - C6 4.362032 41.733161 56.395908 - H11 2.976702 43.090588 55.460209 - H21 1.283247 41.338203 55.000481 - H31 1.712760 38.991610 55.677149 - H41 3.835875 38.397147 56.812590 - H51 5.529330 40.149532 57.272318 - H61 5.099670 42.496379 56.596606 - C1 34.329528 9.326990 32.971694 - C2 35.484650 8.549003 33.114107 - C3 35.377688 7.185536 33.413118 - C4 34.115605 6.600056 33.569716 - C5 32.960797 7.378218 33.428237 - C6 33.067759 8.741685 33.129225 - H11 34.412103 10.378651 32.741465 - H21 36.458413 9.000434 32.992710 - H31 36.268877 6.585306 33.521950 - H41 34.033344 5.548570 33.800878 - H51 31.987034 6.926787 33.549633 - H61 32.176257 9.341740 33.019460 - C1 16.502739 30.048185 77.314199 - C2 16.994645 28.772120 77.014970 - C3 18.367007 28.511555 77.107816 - C4 19.247462 29.527055 77.499890 - C5 18.755625 30.803099 77.798121 - C6 17.383263 31.063664 77.705275 - H11 15.444331 30.249187 77.242192 - H21 16.315416 27.988385 76.713063 - H31 18.746186 27.526819 76.877915 - H41 20.305939 29.326032 77.570899 - H51 19.434854 31.586834 78.100028 - H61 17.004016 32.048421 77.936174 - C1 58.994659 6.262862 44.948250 - C2 58.523948 6.208138 46.265553 - C3 59.424997 6.282691 47.334405 - C4 60.796756 6.411968 47.085953 - C5 61.267335 6.465718 45.768835 - C6 60.366286 6.391165 44.699983 - H11 58.299702 6.204964 44.123934 - H21 57.465595 6.109021 46.457397 - H31 59.061601 6.241472 48.350565 - H41 61.491582 6.468893 47.910454 - H51 62.325689 6.564836 45.576991 - H61 60.729814 6.433358 43.683638 - C1 53.965977 10.500823 22.115948 - C2 54.930863 11.069348 21.275933 - C3 56.290515 10.938380 21.582666 - C4 56.685281 10.238887 22.729415 - C5 55.720433 9.671325 23.569698 - C6 54.360781 9.802293 23.262965 - H11 52.917339 10.602205 21.879529 - H21 54.626473 11.608514 20.390841 - H31 57.034763 11.376164 20.933993 - H41 57.733956 10.138468 22.966102 - H51 56.024822 9.132159 24.454790 - H61 53.616495 9.363546 23.911370 - C1 76.965818 22.956785 30.477071 - C2 76.317047 22.502515 29.322694 - C3 76.452331 23.207186 28.120601 - C4 77.236386 24.366128 28.072884 - C5 77.884218 24.820732 29.227346 - C6 77.748935 24.116061 30.429439 - H11 76.861121 22.413474 31.404252 - H21 75.712607 21.608055 29.359208 - H31 75.952588 22.856037 27.229934 - H41 77.340145 24.909774 27.145788 - H51 78.488659 25.715193 29.190832 - H61 78.249616 24.466876 31.320022 - C1 9.278192 51.867413 13.829974 - C2 9.408974 52.028500 12.445489 - C3 8.267840 52.082784 11.636319 - C4 6.995924 51.975980 12.211633 - C5 6.865338 51.813975 13.595770 - C6 8.006472 51.759692 14.404941 - H11 10.158353 51.825162 14.453950 - H21 10.390182 52.111533 12.001556 - H31 8.368887 52.208068 10.568409 - H41 6.115959 52.017314 11.587310 - H51 5.884130 51.730943 14.039704 - H61 7.905228 51.635325 15.473198 - C1 17.721618 51.852054 58.540564 - C2 17.895260 52.553587 59.739544 - C3 17.370422 52.041756 60.932215 - C4 16.671941 50.828393 60.925907 - C5 16.497586 50.127562 59.726920 - C6 17.022424 50.639392 58.534249 - H11 18.126091 52.247058 57.620680 - H21 18.434653 53.489412 59.744670 - H31 17.505342 52.582578 61.857226 - H41 16.266755 50.434091 61.845784 - H51 15.958193 49.191736 59.721794 - H61 16.888217 50.097869 57.609245 - C1 0.183548 39.669458 40.235636 - C2 0.217755 38.427025 39.591399 - C3 0.337700 38.364239 38.198000 - C4 0.423438 39.543886 37.448837 - C5 0.388273 40.786043 38.092998 - C6 0.268328 40.848829 39.486398 - H11 0.090644 39.717818 41.310273 - H21 0.152237 37.516820 40.169306 - H31 0.365086 37.405674 37.701270 - H41 0.515384 39.495250 36.374125 - H51 0.453791 41.696247 37.515092 - H61 0.241900 41.807670 39.983203 - C1 36.958022 31.019926 56.022395 - C2 37.644564 30.961177 54.803765 - C3 37.185598 30.121816 53.781653 - C4 36.040090 29.341203 53.978170 - C5 35.354310 29.399325 55.196965 - C6 35.813276 30.238687 56.219078 - H11 37.312280 31.667016 56.810805 - H21 38.527995 31.563830 54.651782 - H31 37.714772 30.077379 52.841260 - H41 35.686595 28.693487 53.189926 - H51 34.470879 28.796672 55.348948 - H61 35.283340 30.283750 57.159305 - C1 42.051959 62.973300 38.414158 - C2 41.693980 62.466482 39.669084 - C3 41.443152 61.098102 39.825649 - C4 41.550304 60.236540 38.727289 - C5 41.907303 60.743542 37.472445 - C6 42.158131 62.111922 37.315879 - H11 42.245016 64.028742 38.293391 - H21 41.611872 63.130967 40.516703 - H31 41.167988 60.707144 40.794036 - H41 41.356267 59.181282 38.848138 - H51 41.989411 60.079057 36.624825 - H61 42.434275 62.502696 36.347411 - C1 78.496527 4.198959 59.708550 - C2 78.263656 4.165467 61.088587 - C3 77.103674 4.744472 61.616873 - C4 76.176564 5.356969 60.765124 - C5 76.409975 5.391218 59.385457 - C6 77.569957 4.812213 58.857170 - H11 79.391381 3.752723 59.301212 - H21 78.978539 3.692413 61.745780 - H31 76.923704 4.717654 62.681405 - H41 75.282250 5.803961 61.172832 - H51 75.695092 5.864271 58.728263 - H61 77.749388 4.838274 57.792269 - C1 73.377614 33.552116 9.816670 - C2 73.892846 34.717795 10.395962 - C3 75.223239 35.086094 10.162936 - C4 76.038400 34.288715 9.350617 - C5 75.523410 33.122773 8.772259 - C6 74.193017 32.754473 9.005285 - H11 72.351645 33.267912 9.996751 - H21 73.263885 35.333407 11.022197 - H31 75.620247 35.985910 10.609089 - H41 77.064611 34.572655 9.171470 - H51 76.152371 32.507160 8.146024 - H61 73.795767 31.854920 8.558197 - C1 3.373699 54.238281 13.902213 - C2 3.404318 54.331873 12.505734 - C3 2.209402 54.449002 11.785771 - C4 0.983867 54.472539 12.462286 - C5 0.953341 54.378003 13.858447 - C6 2.148257 54.260874 14.578411 - H11 4.295299 54.147552 14.457402 - H21 4.349789 54.314348 11.983701 - H31 2.233272 54.522205 10.708548 - H41 0.062360 54.562324 11.906779 - H51 0.007870 54.395528 14.380480 - H61 2.124293 54.188614 15.655951 - C1 29.981592 70.250084 35.299537 - C2 30.991594 69.371013 35.708171 - C3 30.712067 68.008253 35.865153 - C4 29.422539 67.524566 35.613501 - C5 28.412579 68.403739 35.205862 - C6 28.692105 69.766498 35.048880 - H11 30.197149 71.301173 35.178861 - H21 31.986677 69.743935 35.901764 - H31 31.491594 67.330088 36.179422 - H41 29.207024 66.473579 35.735171 - H51 27.417495 68.030816 35.012269 - H61 27.912537 70.444563 34.733617 - C1 50.200637 54.475558 41.235313 - C2 49.896533 55.166083 42.414528 - C3 50.184208 54.589359 43.657317 - C4 50.775988 53.322111 43.720891 - C5 51.079119 52.631417 42.541829 - C6 50.791443 53.208141 41.299040 - H11 49.978381 54.920251 40.276843 - H21 49.440532 56.144047 42.365630 - H31 49.950463 55.122631 44.566889 - H41 50.997270 52.877250 44.679513 - H51 51.535119 51.653453 42.590727 - H61 51.026162 52.675038 40.389315 - C1 56.478571 7.615103 2.222979 - C2 56.099177 8.411601 1.136010 - C3 55.958719 9.795112 1.297435 - C4 56.197655 10.382126 2.545829 - C5 56.576055 9.585538 3.632749 - C6 56.716513 8.202027 3.471324 - H11 56.586502 6.548017 2.098507 - H21 55.915400 7.958935 0.172650 - H31 55.667011 10.409533 0.458548 - H41 56.088730 11.449122 2.670252 - H51 56.759832 10.038204 4.596108 - H61 57.009216 7.587697 4.310260 - C1 56.209725 8.807083 77.212447 - C2 55.098566 9.464995 76.671773 - C3 53.882205 8.785932 76.533091 - C4 53.777004 7.448959 76.935084 - C5 54.888295 6.791003 77.474768 - C6 56.104656 7.470065 77.613450 - H11 57.147928 9.330755 77.319016 - H21 55.179409 10.496665 76.362157 - H31 53.024846 9.293931 76.116906 - H41 52.838933 6.925242 76.827525 - H51 54.807452 5.759332 77.784384 - H61 56.961883 6.962111 78.030625 - C1 67.403457 15.356949 31.710777 - C2 67.672414 14.482328 30.651271 - C3 68.762792 14.720997 29.806284 - C4 69.584214 15.834286 30.020803 - C5 69.314636 16.709189 31.079578 - C6 68.224257 16.470521 31.924565 - H11 66.562249 15.173032 32.362204 - H21 67.039132 13.623034 30.486016 - H31 68.970719 14.045619 28.989602 - H41 70.424801 16.018486 29.368645 - H51 69.947917 17.568483 31.244833 - H61 68.016952 17.145615 32.741977 - C1 13.507865 78.575849 17.709509 - C2 14.261208 78.761746 18.874742 - C3 15.659631 78.771733 18.809898 - C4 16.304711 78.595823 17.579820 - C5 15.551400 78.409025 16.415018 - C6 14.152977 78.399038 16.479863 - H11 12.429332 78.567767 17.759649 - H21 13.763654 78.898090 19.823737 - H31 16.240611 78.916159 19.708753 - H41 17.383276 78.603004 17.530111 - H51 16.048954 78.272681 15.466023 - H61 13.571966 78.255513 15.580576 - C1 42.755665 53.202628 72.377177 - C2 43.668017 54.245910 72.179625 - C3 44.296637 54.400267 70.938294 - C4 44.012905 53.511342 69.894516 - C5 43.101412 52.467726 70.092457 - C6 42.472792 52.313369 71.333787 - H11 42.271167 53.083401 73.334706 - H21 43.886556 54.932172 72.984625 - H31 44.999674 55.205755 70.785766 - H41 44.498262 53.630235 68.937375 - H51 42.882873 51.781464 69.287456 - H61 41.768896 51.508215 71.485927 - C1 2.490606 1.657863 15.811401 - C2 2.055402 2.949156 15.490447 - C3 1.205970 3.638727 16.363858 - C4 0.791741 3.037005 17.558224 - C5 1.226179 1.745576 17.878549 - C6 2.075611 1.056005 17.005138 - H11 3.145421 1.125931 15.137547 - H21 2.375395 3.413759 14.569312 - H31 0.871147 4.635262 16.116577 - H41 0.136160 3.568801 18.231449 - H51 0.906187 1.280973 18.799684 - H61 2.411200 0.059606 17.253048 - C1 55.094197 23.613600 21.969764 - C2 55.898028 24.100361 20.932088 - C3 57.275466 23.850314 20.937606 - C4 57.849075 23.113507 21.980799 - C5 57.045422 22.627700 23.018714 - C6 55.667983 22.877747 23.013197 - H11 54.031906 23.806820 21.965651 - H21 55.455533 24.668304 20.126868 - H31 57.895263 24.225038 20.136499 - H41 58.911544 22.921242 21.985152 - H51 57.487917 22.059757 23.823934 - H61 55.048009 22.502069 23.814064 - C1 66.676458 35.096853 52.764137 - C2 67.491764 35.569714 51.728989 - C3 67.472794 34.938878 50.479358 - C4 66.638519 33.835182 50.264874 - C5 65.824112 33.361925 51.300202 - C6 65.843082 33.992761 52.549833 - H11 66.691426 35.583193 53.728016 - H21 68.135011 36.421595 51.894131 - H31 68.101073 35.304420 49.680620 - H41 66.624450 33.348446 49.301176 - H51 65.180865 32.510044 51.135061 - H61 65.213903 33.627616 53.348390 - C1 28.647745 15.524374 59.009318 - C2 29.952631 15.870751 58.638985 - C3 30.213327 17.132978 58.092440 - C4 29.169137 18.048828 57.916227 - C5 27.864379 17.702039 58.285657 - C6 27.603683 16.439812 58.832203 - H11 28.446685 14.550714 59.430476 - H21 30.758437 15.164497 58.775446 - H31 31.220193 17.400384 57.807742 - H41 29.370325 19.022077 57.494166 - H51 27.058573 18.408294 58.149196 - H61 26.596689 16.172818 59.117802 - C1 20.298295 52.504730 8.362804 - C2 20.317495 51.166069 8.772034 - C3 19.169180 50.376623 8.637724 - C4 18.001666 50.925837 8.094183 - C5 17.982322 52.264530 7.685941 - C6 19.130637 53.053976 7.820252 - H11 21.183858 53.113648 8.466781 - H21 21.218353 50.742034 9.190830 - H31 19.184476 49.343669 8.952542 - H41 17.115960 50.316951 7.991194 - H51 17.081464 52.688565 7.267146 - H61 19.115485 54.086898 7.504445 - C1 28.209917 54.723345 6.517911 - C2 26.922038 54.249376 6.794625 - C3 25.811352 54.843401 6.183558 - C4 25.988546 55.911394 5.295776 - C5 27.276174 56.385795 5.019928 - C6 28.386860 55.791770 5.630995 - H11 29.066468 54.265409 6.989536 - H21 26.785220 53.425016 7.479062 - H31 24.817983 54.476976 6.396369 - H41 25.131744 56.369762 4.825017 - H51 27.412992 57.210155 4.335492 - H61 29.380480 56.157762 5.417318 - C1 48.725519 57.400910 71.951784 - C2 50.033116 57.077196 72.332900 - C3 50.464736 55.746054 72.292217 - C4 49.588759 54.738625 71.870418 - C5 48.281134 55.062293 71.490301 - C6 47.849514 56.393436 71.530984 - H11 48.392572 58.427531 71.983557 - H21 50.709245 57.854408 72.657757 - H31 51.473812 55.496645 72.585300 - H41 49.921678 53.711959 71.839643 - H51 47.605005 54.285081 71.165444 - H61 46.840465 56.642890 71.236902 - C1 73.615895 43.458700 43.476979 - C2 73.559052 42.673217 44.634405 - C3 72.743921 41.535558 44.668829 - C4 71.985634 41.183382 43.545825 - C5 72.041833 41.969339 42.388999 - C6 72.856964 43.106998 42.354576 - H11 74.244290 44.336333 43.450631 - H21 74.144493 42.944452 45.500679 - H31 72.700967 40.929160 45.561451 - H41 71.356594 40.306223 43.572773 - H51 71.456391 41.698103 41.522725 - H61 72.900562 43.712921 41.461353 - C1 11.957475 53.953938 13.483098 - C2 12.749102 52.799464 13.502223 - C3 14.141602 52.903968 13.402656 - C4 14.742475 54.162947 13.283965 - C5 13.950812 55.317071 13.263904 - C6 12.558312 55.212567 13.363470 - H11 10.883480 53.873244 13.559500 - H21 12.285707 51.828120 13.594409 - H31 14.752202 52.013319 13.418441 - H41 15.816434 54.243291 13.206627 - H51 14.414207 56.288414 13.171717 - H61 11.947747 56.103566 13.348621 - C1 47.656168 61.831850 33.043157 - C2 47.091475 61.698549 34.317207 - C3 46.190040 60.659660 34.578004 - C4 45.853298 59.754072 33.564752 - C5 46.417235 59.888027 32.290717 - C6 47.318670 60.926916 32.029919 - H11 48.351099 62.633356 32.841974 - H21 47.351651 62.396774 35.099211 - H31 45.755285 60.556379 35.561192 - H41 45.157611 58.953220 33.765950 - H51 46.157059 59.189802 31.508713 - H61 47.754181 61.029543 31.046717 - C1 31.213970 18.588010 12.142762 - C2 32.018866 17.445638 12.059208 - C3 33.369682 17.513288 12.420609 - C4 33.915602 18.723309 12.865563 - C5 33.110971 19.865624 12.948154 - C6 31.760155 19.797974 12.586754 - H11 30.172247 18.535859 11.863642 - H21 31.597675 16.511878 11.716526 - H31 33.990214 16.631678 12.357046 - H41 34.957590 18.775403 13.143721 - H51 33.532162 20.799384 13.290836 - H61 31.139357 20.679641 12.651278 - C1 48.410572 32.090168 63.800955 - C2 47.556669 32.186369 62.695765 - C3 47.146790 31.027893 62.025076 - C4 47.590814 29.773216 62.459577 - C5 48.445316 29.677241 63.564000 - C6 48.855195 30.835717 64.234689 - H11 48.726969 32.983717 64.317944 - H21 47.213525 33.154250 62.360804 - H31 46.487249 31.102225 61.173127 - H41 47.275017 28.879893 61.941821 - H51 48.788461 28.709360 63.898960 - H61 49.514137 30.761158 65.087406 - C1 57.577782 8.032593 27.130294 - C2 58.675325 7.576452 26.390574 - C3 59.382220 8.462251 25.568655 - C4 58.991571 9.804190 25.486455 - C5 57.893630 10.259903 26.225363 - C6 57.186735 9.374104 27.047282 - H11 57.032388 7.349274 27.763884 - H21 58.977210 6.541301 26.454365 - H31 60.229498 8.110418 24.998856 - H41 59.536567 10.487081 24.852053 - H51 57.591745 11.295053 26.161572 - H61 56.339855 9.726364 27.617893 - C1 73.853763 33.975716 25.008289 - C2 75.061633 34.386127 24.431691 - C3 75.215474 35.707350 23.995122 - C4 74.161445 36.618163 24.135151 - C5 72.953522 36.207450 24.710798 - C6 72.799680 34.886226 25.147367 - H11 73.735043 32.956598 25.344618 - H21 75.875128 33.683701 24.324154 - H31 76.147689 36.024043 23.551256 - H41 74.280111 37.636979 23.797871 - H51 72.140026 36.909876 24.818335 - H61 71.867519 34.569836 25.592185 - C1 21.492454 7.717084 65.910157 - C2 22.070858 6.878625 66.870515 - C3 23.058172 7.375360 67.729792 - C4 23.467080 8.710553 67.628713 - C5 22.889374 9.548496 66.667859 - C6 21.902061 9.051762 65.808581 - H11 20.731266 7.333805 65.247205 - H21 21.755045 5.848655 66.949026 - H31 23.503546 6.728668 68.471256 - H41 24.228966 9.093316 68.291168 - H51 23.205187 10.578467 66.589347 - H61 21.455988 9.698969 65.067614 - C1 11.092265 66.809133 71.511128 - C2 10.200039 67.886968 71.465816 - C3 10.366676 68.970545 72.336440 - C4 11.425540 68.976285 73.252376 - C5 12.316975 67.898149 73.298221 - C6 12.150337 66.814573 72.427597 - H11 10.963458 65.973270 70.839893 - H21 9.383431 67.882963 70.758797 - H31 9.678875 69.802402 72.300655 - H41 11.553556 69.811848 73.924143 - H51 13.133583 67.902155 74.005240 - H61 12.838930 65.983016 72.462848 - C1 51.310233 62.257698 12.156564 - C2 52.682191 62.195101 12.427976 - C3 53.495027 61.299731 11.722639 - C4 52.935906 60.466958 10.745891 - C5 51.564023 60.528976 10.475291 - C6 50.751186 61.424346 11.180628 - H11 50.683317 62.948004 12.700871 - H21 53.113806 62.837966 13.181085 - H31 54.553558 61.252291 11.931442 - H41 53.562897 59.776074 10.202396 - H51 51.132408 59.886111 9.722181 - H61 49.692581 61.472366 10.971013 - C1 35.596489 26.684390 77.491307 - C2 36.225063 27.610503 76.650438 - C3 36.078456 28.982559 76.886784 - C4 35.303274 29.428503 77.963999 - C5 34.674096 28.502467 78.804074 - C6 34.820703 27.130411 78.567728 - H11 35.709283 25.626204 77.308735 - H21 36.823658 27.266595 75.819684 - H31 36.564257 29.696838 76.238602 - H41 35.189876 30.486766 78.145777 - H51 34.075501 28.846375 79.634829 - H61 34.335506 26.416055 79.216704 - C1 77.382228 27.773106 51.205029 - C2 78.145157 26.615733 51.400676 - C3 79.083175 26.562953 52.438572 - C4 79.258264 27.667546 53.280820 - C5 78.496080 28.824988 53.084510 - C6 77.558062 28.877768 52.046614 - H11 76.659070 27.813888 50.404283 - H21 78.009749 25.763228 50.751338 - H31 79.670925 25.669665 52.589979 - H41 79.982167 27.626833 54.080903 - H51 78.631488 29.677493 53.733848 - H61 76.969567 29.770987 51.895870 - C1 48.283853 21.883190 73.274306 - C2 47.109849 22.558060 72.919178 - C3 45.886196 21.877968 72.913013 - C4 45.836547 20.523005 73.261976 - C5 47.010549 19.848137 73.616104 - C6 48.234202 20.528229 73.622270 - H11 49.227628 22.407675 73.278662 - H21 47.147907 23.603582 72.650522 - H31 44.980480 22.399004 72.640001 - H41 44.892771 19.998522 73.256620 - H51 46.972491 18.802615 73.884761 - H61 49.139920 20.007191 73.896282 - C1 8.162701 33.290998 17.857823 - C2 8.078225 32.015973 18.429686 - C3 8.361648 30.882705 17.658150 - C4 8.729547 31.024463 16.314751 - C5 8.813050 32.299258 15.742860 - C6 8.529627 33.432525 16.514396 - H11 7.943716 34.164973 18.452825 - H21 7.794999 31.906484 19.466284 - H31 8.297407 29.899241 18.099747 - H41 8.947559 30.150258 15.719721 - H51 9.096276 32.408747 14.706262 - H61 8.594841 34.416219 16.072828 - C1 18.103123 74.692029 55.441913 - C2 17.657595 74.399997 54.147281 - C3 18.125235 73.257363 53.487286 - C4 19.038404 72.406762 54.121924 - C5 19.484494 72.699365 55.415957 - C6 19.016854 73.841998 56.075952 - H11 17.742713 75.573518 55.950731 - H21 16.952607 75.055819 53.657761 - H31 17.780658 73.031697 52.488949 - H41 19.399377 71.525844 53.612507 - H51 20.189483 72.043542 55.905477 - H61 19.360870 74.067094 57.074888 - C1 20.503610 11.064309 24.549826 - C2 19.686706 9.928388 24.502889 - C3 18.294673 10.064439 24.563081 - C4 17.719542 11.336411 24.670209 - C5 18.536447 12.471977 24.718081 - C6 19.928480 12.335926 24.657890 - H11 21.577232 10.959282 24.503793 - H21 20.130257 8.947027 24.419619 - H31 17.664601 9.188106 24.525844 - H41 16.645921 11.441084 24.717178 - H51 18.092896 13.453338 24.801351 - H61 20.558551 13.212615 24.694192 - C1 27.543165 21.398238 52.520320 - C2 26.824660 22.583883 52.325779 - C3 26.002102 22.727410 51.202084 - C4 25.898050 21.685292 50.272930 - C5 26.617213 20.500282 50.467065 - C6 27.439771 20.356754 51.590759 - H11 28.177854 21.287758 53.386795 - H21 26.904358 23.387736 53.042863 - H31 25.447112 23.641744 51.052693 - H41 25.264019 21.796407 49.406049 - H51 26.537515 19.696429 49.749981 - H61 27.994103 19.441787 51.740557 - C1 16.629410 75.104030 24.629045 - C2 17.959590 75.513273 24.477416 - C3 18.856367 74.722687 23.748954 - C4 18.422963 73.522858 23.172122 - C5 17.093235 73.113337 23.324600 - C6 16.196458 73.903923 24.053061 - H11 15.937914 75.713628 25.191219 - H21 18.293957 76.439233 24.921869 - H31 19.882229 75.039049 23.631234 - H41 19.114910 72.912983 22.610797 - H51 16.758867 72.187378 22.880147 - H61 15.170144 73.587839 24.169934 - C1 22.438861 78.612509 21.439918 - C2 23.312921 77.519048 21.454440 - C3 22.803439 76.216577 21.516786 - C4 21.419896 76.007567 21.564609 - C5 20.546134 77.100951 21.551038 - C6 21.055616 78.403423 21.488693 - H11 22.831880 79.617037 21.392228 - H21 24.380343 77.680122 21.416928 - H31 23.477842 75.373123 21.526964 - H41 21.027176 75.002962 21.613251 - H51 19.478712 76.939878 21.588551 - H61 20.380915 79.246953 21.477564 - C1 43.159456 5.863302 61.446379 - C2 41.813219 6.236138 61.354237 - C3 41.471703 7.526875 60.933220 - C4 42.476424 8.444777 60.604347 - C5 43.822396 8.072181 60.697424 - C6 44.163913 6.781443 61.118440 - H11 43.422792 4.867921 61.771473 - H21 41.037944 5.527882 61.607341 - H31 40.433091 7.814000 60.861232 - H41 42.212823 9.440397 60.280188 - H51 44.597672 8.780437 60.444319 - H61 45.202789 6.494079 61.189494 - C1 53.533160 4.557902 37.703240 - C2 54.718776 4.704336 36.973362 - C3 54.858678 4.073200 35.731594 - C4 53.812963 3.295630 35.219706 - C5 52.627979 3.148534 35.949986 - C6 52.488078 3.779670 37.191754 - H11 53.425475 5.044377 38.661133 - H21 55.525405 5.304709 37.367877 - H31 55.772992 4.187097 35.168217 - H41 53.921280 2.808492 34.262215 - H51 51.821350 2.548161 35.555471 - H61 51.573131 3.666435 37.754729 - C1 64.549941 71.051462 3.372399 - C2 65.102840 71.942027 2.444473 - C3 65.860233 71.455059 1.372508 - C4 66.064726 70.077526 1.228468 - C5 65.512664 69.187294 2.156827 - C6 64.755271 69.674263 3.228792 - H11 63.966135 71.427131 4.199355 - H21 64.944642 73.004793 2.555124 - H31 66.285840 72.142156 0.656202 - H41 66.649369 69.702191 0.401945 - H51 65.670862 68.124529 2.046176 - H61 64.328826 68.986832 3.944665 - C1 61.461412 26.303792 47.878340 - C2 60.982638 25.174118 47.204201 - C3 60.195648 25.325349 46.056305 - C4 59.887431 26.606255 45.582547 - C5 60.365393 27.735649 46.257199 - C6 61.152384 27.584418 47.405095 - H11 62.068052 26.187087 48.763880 - H21 61.220860 24.185816 47.569238 - H31 59.827230 24.453752 45.535801 - H41 59.279980 26.722679 44.697520 - H51 60.127171 28.723950 45.892162 - H61 61.521613 28.456295 47.925086 - C1 29.518714 33.310423 29.565156 - C2 29.440557 32.065584 28.929454 - C3 30.572972 31.245927 28.854021 - C4 31.783544 31.671110 29.414289 - C5 31.861789 32.916154 30.049015 - C6 30.729374 33.735810 30.124449 - H11 28.645393 33.942709 29.622956 - H21 28.506503 31.737150 28.497696 - H31 30.512238 30.285208 28.364462 - H41 32.656953 31.039028 29.355513 - H51 32.795843 33.244587 30.480773 - H61 30.790019 34.696326 30.614982 - C1 67.286549 45.867330 70.822879 - C2 66.283968 46.658736 70.249852 - C3 65.817267 46.372593 68.961363 - C4 66.353146 45.295044 68.245901 - C5 67.356206 44.504440 68.818571 - C6 67.822908 44.790584 70.107060 - H11 67.646726 46.088313 71.816485 - H21 65.870002 47.489732 70.801956 - H31 65.043124 46.982606 68.519861 - H41 65.993449 45.074863 67.251938 - H51 67.770172 43.673444 68.266467 - H61 68.596571 44.179769 70.548919 - C1 23.124387 56.815299 41.573481 - C2 23.810824 57.882608 40.982291 - C3 25.210166 57.915063 41.008360 - C4 25.923071 56.880209 41.625618 - C5 25.236609 55.813630 42.217490 - C6 23.837267 55.781175 42.191422 - H11 22.045124 56.790527 41.553683 - H21 23.260966 58.680770 40.505495 - H31 25.739571 58.737997 40.551361 - H41 27.002309 56.905711 41.646099 - H51 25.786467 55.015468 42.694287 - H61 23.307887 54.957511 42.647738 - C1 72.924372 41.150195 15.263180 - C2 72.191006 42.282065 15.638542 - C3 72.747178 43.557964 15.488061 - C4 74.036716 43.701994 14.962217 - C5 74.770205 42.570192 14.587845 - C6 74.214033 41.294293 14.738326 - H11 72.495512 40.166156 15.379631 - H21 71.195866 42.171139 16.043676 - H31 72.180898 44.431077 15.776744 - H41 74.465699 44.686101 14.846756 - H51 75.765345 42.681119 14.182711 - H61 74.780190 40.421112 14.448653 - C1 41.920383 73.609361 16.397827 - C2 40.662113 74.131504 16.720275 - C3 39.792596 73.404902 17.542395 - C4 40.181349 72.156157 18.042066 - C5 41.439044 71.633801 17.718829 - C6 42.308561 72.360403 16.896710 - H11 42.590801 74.169634 15.763439 - H21 40.362290 75.095185 16.335351 - H31 38.822355 73.808310 17.791859 - H41 39.510356 71.595671 18.675666 - H51 41.738867 70.670121 18.103753 - H61 43.279377 71.957208 16.648034 - C1 33.392839 24.609942 71.160918 - C2 32.849981 23.671319 70.275399 - C3 33.592201 23.242376 69.168598 - C4 34.877278 23.752057 68.947315 - C5 35.419546 24.691212 69.832226 - C6 34.677326 25.120154 70.939027 - H11 32.820190 24.941017 72.014309 - H21 31.858787 23.277545 70.446332 - H31 33.173655 22.517527 68.486139 - H41 35.449337 23.421514 68.093316 - H51 36.410740 25.084986 69.661294 - H61 35.096461 25.844472 71.622094 - C1 39.673762 10.740774 57.745950 - C2 40.333924 11.962996 57.919761 - C3 39.812615 13.128016 57.344559 - C4 38.631145 13.070813 56.595546 - C5 37.971714 11.848587 56.421053 - C6 38.493023 10.683567 56.996255 - H11 40.076090 9.842215 58.189278 - H21 41.245116 12.007391 58.498121 - H31 40.321480 14.070969 57.479591 - H41 38.229548 13.969368 56.151536 - H51 37.060523 11.804192 55.842694 - H61 37.983428 9.740618 56.861906 - C1 25.625217 50.380970 42.419476 - C2 26.448216 49.320379 42.816553 - C3 26.017702 47.999072 42.647153 - C4 24.764189 47.738356 42.080676 - C5 23.941043 48.798863 41.684584 - C6 24.371557 50.120170 41.853984 - H11 25.957151 51.400020 42.550515 - H21 27.415597 49.521356 43.253044 - H31 26.653149 47.180999 42.952605 - H41 24.432109 46.719222 41.950623 - H51 22.973663 48.597886 41.248094 - H61 23.736257 50.938327 41.547547 - C1 19.473331 37.744027 24.312297 - C2 19.024258 36.545220 24.878907 - C3 17.994216 35.823288 24.264320 - C4 17.413247 36.300163 23.083121 - C5 17.861686 37.499249 22.517233 - C6 18.891728 38.221181 23.131821 - H11 20.267494 38.300972 24.786565 - H21 19.472805 36.176866 25.789875 - H31 17.648599 34.897989 24.701019 - H41 16.618450 35.743496 22.609575 - H51 17.413140 37.867603 21.606265 - H61 19.237978 39.146201 22.694399 - C1 57.828157 63.729494 14.029911 - C2 56.946759 62.744689 14.491591 - C3 55.581026 63.028172 14.611176 - C4 55.096690 64.296460 14.269081 - C5 55.978175 65.281289 13.808396 - C6 57.343908 64.997806 13.688811 - H11 58.881534 63.510912 13.938075 - H21 57.320191 61.765955 14.754974 - H31 54.901081 62.268020 14.966395 - H41 54.043401 64.515066 14.361913 - H51 55.604744 66.260023 13.545013 - H61 58.023767 65.757933 13.332597 - C1 54.541745 47.045496 79.662012 - C2 53.708048 45.926700 79.776448 - C3 52.323032 46.094842 79.891990 - C4 51.771713 47.381780 79.893095 - C5 52.605455 48.500321 79.779624 - C6 53.990471 48.332179 79.664083 - H11 55.609973 46.915759 79.573298 - H21 54.133196 44.933730 79.774991 - H31 51.679951 45.231610 79.979247 - H41 50.703529 47.511262 79.982775 - H51 52.180307 49.493291 79.781082 - H61 54.633507 49.195666 79.575860 - C1 8.134336 55.974229 10.992234 - C2 7.550592 55.332851 12.091202 - C3 7.354708 56.033214 13.287451 - C4 7.742568 57.374953 13.384733 - C5 8.327059 58.015821 12.286192 - C6 8.522943 57.315459 11.089943 - H11 8.285743 55.433899 10.069773 - H21 7.250741 54.297868 12.016102 - H31 6.903450 55.538560 14.134813 - H41 7.591909 57.914774 14.307621 - H51 8.626911 59.050804 12.361292 - H61 8.973454 57.810622 10.242155 - C1 45.194771 25.252295 77.371635 - C2 45.820445 24.004882 77.260539 - C3 45.167345 22.949536 76.612776 - C4 43.888571 23.141604 76.076109 - C5 43.262736 24.388571 76.188085 - C6 43.915836 25.443916 76.835848 - H11 45.698373 26.066084 77.871582 - H21 46.807281 23.856724 77.673992 - H31 45.650579 21.987590 76.526282 - H41 43.384807 22.327368 75.577042 - H51 42.275899 24.536728 75.774632 - H61 43.432762 26.406309 76.921462 - C1 35.238876 58.277199 17.814216 - C2 35.400508 59.147732 18.898604 - C3 34.331313 59.947454 19.319505 - C4 33.100487 59.876644 18.656017 - C5 32.939302 59.006919 17.571245 - C6 34.008496 58.207197 17.150344 - H11 36.063657 57.660721 17.489398 - H21 36.349858 59.202022 19.410978 - H31 34.455883 60.618222 20.156697 - H41 32.276153 60.493930 18.980451 - H51 31.989951 58.952629 17.058870 - H61 33.883480 57.535621 16.313536 - C1 43.086755 79.047610 74.222329 - C2 42.084520 78.072873 74.149772 - C3 42.331018 76.863407 73.489225 - C4 43.579750 76.628679 72.901234 - C5 44.581401 77.603704 72.973033 - C6 44.334903 78.813170 73.633580 - H11 42.896446 79.980554 74.731457 - H21 41.121266 78.253576 74.603897 - H31 41.558072 76.111166 73.434222 - H41 43.769474 75.696023 72.391348 - H51 45.544655 77.423001 72.518908 - H61 45.108433 79.565122 73.689342 - C1 18.118996 68.829559 30.667644 - C2 18.265525 67.790722 31.594575 - C3 19.443005 67.033808 31.617169 - C4 20.473957 67.315729 30.712834 - C5 20.326944 68.353790 29.785499 - C6 19.149463 69.110705 29.762904 - H11 17.210673 69.413042 30.650013 - H21 17.470471 67.573499 32.292748 - H31 19.556275 66.233101 32.332974 - H41 21.381796 66.731471 30.730061 - H51 21.121997 68.571014 29.087326 - H61 19.036678 69.912186 29.047504 - C1 57.976991 59.115864 26.251704 - C2 58.502488 59.960335 27.236880 - C3 59.609310 59.552314 27.990774 - C4 60.190634 58.299823 27.759492 - C5 59.664549 57.455213 26.775113 - C6 58.557727 57.863233 26.021219 - H11 57.123104 59.430452 25.670562 - H21 58.054479 60.926926 27.415009 - H31 60.015188 60.204318 28.750045 - H41 61.043933 57.985096 28.341431 - H51 60.112558 56.488621 26.596984 - H61 58.152438 57.211369 25.261151 - C1 45.169907 44.200419 57.209261 - C2 44.811740 42.916290 56.781968 - C3 45.791522 41.925874 56.644143 - C4 47.129470 42.219588 56.933612 - C5 47.487573 43.503786 57.359910 - C6 46.507792 44.494202 57.497735 - H11 44.414252 44.964346 57.315163 - H21 43.779452 42.689367 56.559194 - H31 45.514889 40.935024 56.315467 - H41 47.885062 41.455730 56.826714 - H51 48.519861 43.730709 57.582683 - H61 46.784488 45.484983 57.827406 - C1 26.166410 55.965961 33.777711 - C2 26.302497 56.827457 32.682651 - C3 26.668939 58.163447 32.884493 - C4 26.899293 58.637943 34.181395 - C5 26.762273 57.776740 35.276242 - C6 26.395832 56.440749 35.074400 - H11 25.883405 54.935681 33.622000 - H21 26.125410 56.461366 31.681972 - H31 26.774857 58.827637 32.039525 - H41 27.181365 59.668516 34.336893 - H51 26.939360 58.142831 36.276921 - H61 26.290846 55.776267 35.919581 - C1 55.616296 28.326116 11.519131 - C2 56.061880 28.036741 12.814341 - C3 55.139930 27.915129 13.860815 - C4 53.772395 28.082893 13.612080 - C5 53.327109 28.373147 12.317242 - C6 54.249060 28.494759 11.270768 - H11 56.327443 28.420283 10.712151 - H21 57.116861 27.906674 13.006278 - H31 55.483763 27.690895 14.859732 - H41 53.061546 27.989605 14.419432 - H51 52.272129 28.503214 12.125305 - H61 53.904928 28.718114 10.271480 - C1 2.881510 45.252494 57.989247 - C2 1.831376 46.152944 58.204329 - C3 1.913472 47.088894 59.242187 - C4 3.045701 47.124393 60.064964 - C5 4.095158 46.223427 59.850408 - C6 4.013062 45.287478 58.812549 - H11 2.817959 44.530405 57.189021 - H21 0.958057 46.126082 57.569244 - H31 1.103704 47.784121 59.407329 - H41 3.108576 47.845966 60.865716 - H51 4.968477 46.250289 60.485493 - H61 4.823507 44.592766 58.646882 - C1 35.418299 18.237704 7.652086 - C2 36.592245 17.475415 7.676932 - C3 37.740133 17.978209 8.300985 - C4 37.714075 19.243292 8.900192 - C5 36.540553 20.005735 8.874454 - C6 35.392665 19.502940 8.250401 - H11 34.533133 17.850025 7.170423 - H21 36.612322 16.499116 7.215218 - H31 38.645377 17.389589 8.320934 - H41 38.599666 19.631124 9.380963 - H51 36.520476 20.982033 9.336168 - H61 34.486998 20.091407 8.231344 - C1 71.465473 35.354920 44.926839 - C2 72.771636 34.954695 44.620883 - C3 73.802774 35.900846 44.582876 - C4 73.527749 37.247222 44.850824 - C5 72.221609 37.647389 45.155782 - C6 71.190471 36.701238 45.193790 - H11 70.670177 34.625206 44.955752 - H21 72.984085 33.915892 44.414741 - H31 74.810519 35.591757 44.347821 - H41 74.323068 37.976878 44.820914 - H51 72.009160 38.686192 45.361925 - H61 70.182703 37.010386 45.429843 - C1 53.780925 67.036331 35.759522 - C2 55.179663 67.048007 35.816499 - C3 55.905478 65.916213 35.426465 - C4 55.232556 64.772744 34.979455 - C5 53.834037 64.760874 34.923434 - C6 53.108221 65.892668 35.313468 - H11 53.221182 67.909131 36.060724 - H21 55.698990 67.930345 36.160766 - H31 56.984548 65.925751 35.469531 - H41 55.792518 63.899749 34.679209 - H51 53.314710 63.878536 34.579167 - H61 52.028932 65.883324 35.269446 - C1 51.517009 40.744155 13.821994 - C2 51.725955 39.744231 14.779252 - C3 50.690035 39.378717 15.647100 - C4 49.445168 40.013127 15.557689 - C5 49.236686 41.013513 14.601186 - C6 50.272606 41.379027 13.733339 - H11 52.316132 41.026285 13.152950 - H21 52.686137 39.254258 14.847945 - H31 50.851093 38.606614 16.384836 - H41 48.646509 39.731459 16.227488 - H51 48.276504 41.503486 14.532493 - H61 50.111084 42.150668 12.994846 - C1 40.958733 34.812440 57.382882 - C2 39.975947 35.809371 57.393490 - C3 40.215169 37.020988 58.052768 - C4 41.437177 37.235674 58.701437 - C5 42.419333 36.238476 58.691559 - C6 42.180111 35.026859 58.032282 - H11 40.774017 33.877844 56.874724 - H21 39.033346 35.644121 56.892556 - H31 39.457284 37.790335 58.059991 - H41 41.621264 38.170003 59.210325 - H51 43.361935 36.403725 59.192494 - H61 42.938626 34.257779 58.024328 - C1 10.339182 16.367123 26.016480 - C2 11.442499 15.566676 25.697373 - C3 11.487196 14.893194 24.470867 - C4 10.428577 15.020159 23.563469 - C5 9.325091 15.819737 23.883042 - C6 9.280394 16.493219 25.109548 - H11 10.304594 16.886211 26.962612 - H21 12.259589 15.469116 26.397077 - H31 12.338874 14.276546 24.224440 - H41 10.462995 14.500203 22.617803 - H51 8.508001 15.917297 23.183337 - H61 8.428886 17.110736 25.355510 - C1 6.626795 4.500477 18.398518 - C2 7.203743 5.259391 17.373319 - C3 7.132221 4.814342 16.047910 - C4 6.483751 3.610380 15.747701 - C5 5.907775 2.851230 16.772921 - C6 5.979297 3.296278 18.098329 - H11 6.682334 4.843586 19.420773 - H21 7.703540 6.188586 17.604705 - H31 7.576479 5.400429 15.257042 - H41 6.429185 3.267035 14.725467 - H51 5.407979 1.922034 16.541535 - H61 5.534067 2.710428 18.889177 - C1 1.571241 25.371628 35.268130 - C2 2.737145 26.038428 35.662968 - C3 3.988440 25.562076 35.254017 - C4 4.073831 24.418924 34.450229 - C5 2.908110 23.751794 34.056317 - C6 1.656815 24.228146 34.465268 - H11 0.606223 25.738844 35.583894 - H21 2.671392 26.920748 36.282587 - H31 4.887704 26.077180 35.557872 - H41 5.039032 24.051378 34.135391 - H51 2.973863 22.869474 33.436698 - H61 0.757368 23.713371 34.160487 - C1 54.780664 51.926807 53.255057 - C2 53.805104 50.945652 53.041821 - C3 53.005114 50.511317 54.105428 - C4 53.180685 51.058136 55.382271 - C5 54.156743 52.038423 55.595534 - C6 54.956733 52.472759 54.531927 - H11 55.397892 52.261464 52.434784 - H21 53.669117 50.524127 52.056648 - H31 52.251900 49.755134 53.940529 - H41 52.563955 50.722611 56.202571 - H51 54.292730 52.459948 56.580707 - H61 55.709450 53.229808 54.696799 - C1 37.895452 23.160450 37.916403 - C2 39.103349 23.749758 37.524544 - C3 40.226614 22.949726 37.283472 - C4 40.141982 21.560386 37.434259 - C5 38.934503 20.971399 37.826968 - C6 37.811238 21.771431 38.068040 - H11 37.029271 23.777572 38.102694 - H21 39.168628 24.821578 37.407572 - H31 41.158074 23.404424 36.980209 - H41 41.008580 20.943585 37.248818 - H51 38.869223 19.899579 37.943940 - H61 36.879360 21.316413 38.370452 - C1 57.132566 37.840406 74.581207 - C2 58.086804 38.665019 73.973510 - C3 57.817397 39.248336 72.729705 - C4 56.593752 39.007041 72.093596 - C5 55.640155 38.181798 72.700853 - C6 55.909562 37.598481 73.944659 - H11 57.340568 37.390236 75.540319 - H21 59.030656 38.851767 74.464438 - H31 58.553246 39.885255 72.261521 - H41 56.386390 39.456581 71.134045 - H51 54.696303 37.995049 72.209926 - H61 55.173072 36.962191 74.413283 - C1 20.234252 42.049114 47.812115 - C2 21.333568 41.293286 48.236473 - C3 21.614482 40.064053 47.628227 - C4 20.796081 39.590648 46.595623 - C5 19.696446 40.345993 46.172080 - C6 19.415531 41.575227 46.780326 - H11 20.017423 42.996977 48.281536 - H21 21.965421 41.658681 49.032707 - H31 22.463165 39.481586 47.955039 - H41 21.012590 38.642303 46.127017 - H51 19.064592 39.980598 45.375847 - H61 18.567168 42.158176 46.452699 - C1 42.996351 30.022517 65.508670 - C2 42.311445 28.802117 65.471546 - C3 42.991131 27.609465 65.746318 - C4 44.355724 27.637214 66.058215 - C5 45.040599 28.857367 66.094370 - C6 44.360913 30.050018 65.819598 - H11 42.472167 30.942282 65.296356 - H21 41.258509 28.780610 65.231534 - H31 42.462380 26.668194 65.718620 - H41 44.879877 26.717202 66.269560 - H51 46.093535 28.878873 66.334382 - H61 44.889695 30.991537 65.848265 - C1 77.587848 21.877382 68.893964 - C2 78.676493 22.181176 69.720046 - C3 78.498314 22.278251 71.105224 - C4 77.231491 22.071533 71.664321 - C5 76.142938 21.768734 70.838186 - C6 76.321116 21.671658 69.453007 - H11 77.725259 21.802912 67.825607 - H21 79.654043 22.340080 69.288901 - H31 79.338454 22.511625 71.742437 - H41 77.094172 22.146997 72.732625 - H51 75.165387 21.609829 71.269330 - H61 75.480885 21.437290 68.815848 - C1 20.549664 28.033434 43.912514 - C2 21.539780 28.989398 44.168744 - C3 22.852589 28.583042 44.435763 - C4 23.175282 27.220721 44.446550 - C5 22.185049 26.264996 44.191283 - C6 20.872240 26.671352 43.924265 - H11 19.537088 28.346890 43.706967 - H21 21.291102 30.040503 44.159848 - H31 23.616487 29.320690 44.632413 - H41 24.187741 26.907504 44.653060 - H51 22.433727 25.213891 44.200179 - H61 20.108459 25.933465 43.726651 - C1 49.994096 56.057151 13.332737 - C2 49.365404 56.721238 14.392731 - C3 48.815972 57.993470 14.194138 - C4 48.895232 58.601617 12.935552 - C5 49.524670 57.937940 11.876083 - C6 50.074102 56.665708 12.074675 - H11 50.418173 55.076100 13.486072 - H21 49.303635 56.251914 15.363638 - H31 48.330126 58.505198 15.011711 - H41 48.471902 59.583078 12.782742 - H51 49.586440 58.407264 10.905175 - H61 50.559203 56.153570 11.256578 - C1 54.650385 20.566400 37.777243 - C2 54.655128 19.734232 36.651487 - C3 53.558568 19.727921 35.781194 - C4 52.457267 20.553776 36.036658 - C5 52.452251 21.385045 37.162758 - C6 53.548810 21.391357 38.033050 - H11 55.495979 20.570930 38.448633 - H21 55.504983 19.097477 36.453929 - H31 53.562830 19.086634 34.912246 - H41 51.611399 20.548348 35.365611 - H51 51.602395 22.021801 37.360315 - H61 53.544822 22.033542 38.901654 - C1 79.906262 32.191730 74.243867 - C2 79.898860 31.412527 73.080837 - C3 79.899297 32.030250 71.824529 - C4 79.907135 33.427175 71.731251 - C5 79.913579 34.206123 72.894149 - C6 79.913142 33.588401 74.150457 - H11 79.905530 31.715246 75.212771 - H21 79.893435 30.334772 73.152642 - H31 79.894604 31.428979 70.927429 - H41 79.906910 33.903404 70.762214 - H51 79.919004 35.283878 72.822344 - H61 79.918793 34.189927 75.047688 - C1 60.122357 41.681859 50.981130 - C2 61.003454 42.119889 51.976946 - C3 62.385217 42.081137 51.755315 - C4 62.885883 41.604355 50.537868 - C5 62.004870 41.165550 49.542679 - C6 60.623107 41.204303 49.764310 - H11 59.056689 41.711408 51.152278 - H21 60.617313 42.488333 52.916033 - H31 63.064744 42.420032 52.523254 - H41 63.951635 41.574032 50.367346 - H51 62.391011 40.797107 48.603592 - H61 59.943496 40.866182 48.995744 - C1 29.472355 75.406739 69.300511 - C2 29.015180 74.095224 69.125095 - C3 27.790681 73.860143 68.488519 - C4 27.023356 74.936576 68.027359 - C5 27.480117 76.247844 68.203651 - C6 28.704617 76.482926 68.840228 - H11 30.416582 75.587994 69.791832 - H21 29.607359 73.264617 69.480281 - H31 27.438632 72.848280 68.352385 - H41 26.078715 74.755074 67.536915 - H51 26.887939 77.078451 67.848465 - H61 29.057079 77.495035 68.975486 - C1 47.452041 49.527847 26.886852 - C2 47.124116 50.887636 26.944212 - C3 48.118452 51.855746 26.759957 - C4 49.440713 51.464068 26.518342 - C5 49.768615 50.104496 26.461958 - C6 48.774279 49.136386 26.646213 - H11 46.685177 48.781238 27.029358 - H21 46.103912 51.189971 27.130000 - H31 47.865112 52.904690 26.803239 - H41 50.207554 52.210894 26.376813 - H51 50.788819 49.802161 26.276170 - H61 49.027642 48.087225 26.601955 - C1 56.823756 14.963628 26.252281 - C2 58.032970 14.397801 25.830981 - C3 59.231546 14.762459 26.455745 - C4 59.220909 15.692944 27.501808 - C5 58.011960 16.259301 27.922302 - C6 56.813384 15.894644 27.297538 - H11 55.899429 14.682634 25.770124 - H21 58.041260 13.679448 25.024358 - H31 60.164164 14.325101 26.131278 - H41 60.145501 15.974469 27.983160 - H51 58.003669 16.977654 28.728926 - H61 55.880501 16.331471 27.622811 - C1 69.885667 50.356980 8.091714 - C2 70.036774 51.672972 7.638745 - C3 69.491070 52.056491 6.407887 - C4 68.794259 51.124017 5.629998 - C5 68.644068 49.808053 6.082565 - C6 69.189772 49.424535 7.313423 - H11 70.306906 50.061154 9.040850 - H21 70.573814 52.392655 8.239067 - H31 69.606870 53.071999 6.059073 - H41 68.373935 51.419872 4.680460 - H51 68.107028 49.088371 5.482243 - H61 69.073056 48.408998 7.662639 - C1 33.051002 32.908351 6.315088 - C2 32.457033 31.727693 6.776714 - C3 33.257944 30.663271 7.207340 - C4 34.652824 30.779507 7.176338 - C5 35.246566 31.959651 6.713884 - C6 34.445655 33.024073 6.283259 - H11 32.433240 33.729109 5.982612 - H21 31.380877 31.638099 6.801269 - H31 32.799550 29.752919 7.564370 - H41 35.270358 29.958235 7.507986 - H51 36.322722 32.049245 6.689329 - H61 34.904277 33.934939 5.927056 - C1 35.791037 65.158216 15.749496 - C2 35.853228 64.607398 14.463968 - C3 36.759162 65.118142 13.526784 - C4 37.602906 66.179706 13.875128 - C5 37.539963 66.730955 15.160156 - C6 36.634029 66.220210 16.097340 - H11 35.092033 64.764512 16.472133 - H21 35.202765 63.787984 14.195267 - H31 36.807704 64.692433 12.535446 - H41 38.301158 66.573840 13.151991 - H51 38.190426 67.550369 15.428858 - H61 36.586239 66.645489 17.089179 - C1 26.942378 10.783186 72.709441 - C2 27.506670 11.990430 73.138379 - C3 28.092187 12.858505 72.209128 - C4 28.113411 12.519336 70.850939 - C5 27.550029 11.311845 70.422336 - C6 26.964512 10.443770 71.351587 - H11 26.491159 10.113543 73.426234 - H21 27.489823 12.252522 74.186122 - H31 28.526558 13.790240 72.540077 - H41 28.565540 13.188732 70.134480 - H51 27.566876 11.049753 69.374593 - H61 26.529231 9.512281 71.020302 - C1 57.913277 77.660462 56.724257 - C2 57.808717 76.743956 57.777316 - C3 56.550965 76.274542 58.174308 - C4 55.397775 76.721633 57.518241 - C5 55.502384 77.638695 56.466011 - C6 56.760136 78.108110 56.069019 - H11 58.883326 78.022759 56.418381 - H21 58.698372 76.398460 58.283168 - H31 56.470572 75.566748 58.986036 - H41 54.427775 76.359892 57.824946 - H51 54.612729 77.984192 55.960159 - H61 56.840480 78.815347 55.256461 - C1 54.057542 9.323766 34.264385 - C2 53.504787 10.122975 33.256626 - C3 54.338995 10.893275 32.437709 - C4 55.725958 10.864367 32.626551 - C5 56.278413 10.065990 33.634778 - C6 55.444205 9.295689 34.453695 - H11 53.414069 8.729992 34.896199 - H21 52.434796 10.144906 33.110413 - H31 53.912477 11.508980 31.659682 - H41 56.369132 11.458972 31.995205 - H51 57.348405 10.044058 33.780992 - H61 55.871024 8.679153 35.231255 - C1 20.022918 77.298950 36.776102 - C2 21.418726 77.212743 36.711769 - C3 22.040658 76.801317 35.526939 - C4 21.266782 76.476099 34.406443 - C5 19.871196 76.561425 34.471192 - C6 19.249264 76.972850 35.656022 - H11 19.543295 77.615895 37.690061 - H21 22.015939 77.464210 37.575969 - H31 23.117493 76.735840 35.477180 - H41 21.746627 76.158272 33.492900 - H51 19.273983 76.309957 33.606992 - H61 18.172207 77.039209 35.705364 - C1 15.233187 45.033339 43.875657 - C2 15.496136 44.390628 45.091235 - C3 16.716887 44.599872 45.743827 - C4 17.674688 45.451827 45.180839 - C5 17.412038 46.093618 43.965005 - C6 16.191287 45.884374 43.312414 - H11 14.291812 44.871608 43.372198 - H21 14.757035 43.733790 45.526015 - H31 16.919160 44.104764 46.682065 - H41 18.616363 45.612638 45.684042 - H51 18.151140 46.750456 43.530226 - H61 15.988714 46.380401 42.374431 - C1 66.778740 11.801111 67.494966 - C2 66.711108 13.166922 67.794696 - C3 67.874742 13.867461 68.133946 - C4 69.106008 13.202189 68.173467 - C5 69.173344 11.836417 67.874692 - C6 68.009710 11.135878 67.535441 - H11 65.881182 11.260789 67.233706 - H21 65.761340 13.680456 67.763647 - H31 67.822532 14.921318 68.364158 - H41 70.003270 13.742550 68.435682 - H51 70.123112 11.322883 67.905741 - H61 68.062216 10.081983 67.304276 - C1 72.786348 67.558598 61.587857 - C2 73.699820 66.661091 62.153455 - C3 75.066729 66.787515 61.878741 - C4 75.520166 67.811447 61.038428 - C5 74.606655 68.708145 60.472244 - C6 73.239746 68.581720 60.746958 - H11 71.732084 67.460797 61.799461 - H21 73.350204 65.871444 62.802274 - H31 75.771377 66.095669 62.315956 - H41 76.574392 67.908438 60.826238 - H51 74.956272 69.497792 59.823424 - H61 72.535137 69.274375 60.310329 - C1 37.159105 15.175545 60.732042 - C2 36.957607 14.682450 62.026688 - C3 37.953511 14.838892 62.998075 - C4 39.150912 15.488429 62.674817 - C5 39.352628 15.980550 61.380112 - C6 38.356724 15.824108 60.408724 - H11 36.391126 15.054508 59.982794 - H21 36.033604 14.181848 62.276401 - H31 37.797486 14.459327 63.997036 - H41 39.919109 15.608492 63.424005 - H51 40.276631 16.481152 61.130398 - H61 38.512531 16.204647 59.409823 - C1 24.542236 64.499765 62.145147 - C2 25.330588 63.497777 62.723396 - C3 24.794669 62.673364 63.719902 - C4 23.470399 62.850939 64.138160 - C5 22.682595 63.853399 63.560602 - C6 23.218513 64.677812 62.564096 - H11 24.955750 65.135819 61.376866 - H21 26.352099 63.360254 62.400374 - H31 25.402667 61.899787 64.165162 - H41 23.057432 62.215356 64.907132 - H51 21.661083 63.990921 63.883624 - H61 22.609968 65.450917 62.118145 - C1 68.185137 74.891025 25.613490 - C2 67.547775 75.960966 26.252900 - C3 68.243436 77.153987 26.482353 - C4 69.576459 77.277066 26.072396 - C5 70.213877 76.206910 25.433961 - C6 69.518216 75.013890 25.204508 - H11 67.648667 73.970790 25.436904 - H21 66.519149 75.866375 26.568690 - H31 67.751281 77.979630 26.974729 - H41 70.112985 78.197086 26.249957 - H51 71.242502 76.301502 25.118171 - H61 70.010315 74.188461 24.711157 - C1 33.434384 26.659359 5.335937 - C2 32.470872 25.703880 4.991620 - C3 32.803213 24.343940 4.989849 - C4 34.099067 23.939479 5.332395 - C5 35.062570 24.894952 5.675712 - C6 34.730229 26.254892 5.677483 - H11 33.178106 27.708232 5.336903 - H21 31.470896 26.015731 4.727917 - H31 32.059516 23.606918 4.725180 - H41 34.355336 22.890600 5.330429 - H51 36.062546 24.583101 5.939415 - H61 35.473935 26.991920 5.943152 - C1 75.439101 58.855608 3.681973 - C2 76.479726 59.520869 3.022899 - C3 77.132143 58.907191 1.946961 - C4 76.743936 57.628253 1.530098 - C5 75.704118 56.962836 2.189744 - C6 75.051700 57.576514 3.265681 - H11 74.936223 59.328808 4.512040 - H21 76.778931 60.507838 3.344005 - H31 77.934227 59.420961 1.438001 - H41 77.247620 57.154898 0.700603 - H51 75.404912 55.975867 1.868637 - H61 74.248810 57.062900 3.774070 - C1 24.241260 77.660641 65.860020 - C2 23.181723 78.467570 65.428627 - C3 22.437481 78.101599 64.300771 - C4 22.752776 76.928700 63.604307 - C5 23.812745 76.122502 64.035172 - C6 24.556987 76.488472 65.163028 - H11 24.815469 77.943160 66.729664 - H21 22.937961 79.372180 65.966216 - H31 21.619510 78.723691 63.968715 - H41 22.178999 76.646912 62.734135 - H51 24.056507 75.217892 63.497583 - H61 25.374526 75.865650 65.495612 - C1 67.881675 60.322936 60.276791 - C2 67.441663 60.403624 58.950244 - C3 66.534022 59.459645 58.455287 - C4 66.066394 58.434977 59.286878 - C5 66.507135 58.353864 60.612888 - C6 67.414775 59.297843 61.107845 - H11 68.582001 61.050789 60.658353 - H21 67.801880 61.194470 58.308723 - H31 66.193914 59.522637 57.432206 - H41 65.366797 57.706699 58.904779 - H51 66.146918 57.563018 61.254409 - H61 67.754155 59.235276 62.131464 - C1 44.062085 78.639301 44.504656 - C2 45.019869 78.404954 45.498428 - C3 45.153814 77.126899 46.053878 - C4 44.329976 76.083190 45.615555 - C5 43.371766 76.317854 44.622630 - C6 43.237820 77.595910 44.067180 - H11 43.958565 79.625125 44.076582 - H21 45.655957 79.209940 45.836262 - H31 45.893422 76.946060 46.819786 - H41 44.433069 75.097683 46.044476 - H51 42.735678 75.512869 44.284796 - H61 42.498639 77.776431 43.300426 - C1 9.256028 52.257765 0.338357 - C2 9.857280 53.479306 0.664215 - C3 11.234999 53.538903 0.905525 - C4 12.011465 52.376958 0.820976 - C5 11.410041 51.155534 0.496097 - C6 10.032322 51.095937 0.254787 - H11 8.193384 52.211800 0.152642 - H21 9.258460 54.375952 0.728878 - H31 11.698822 54.481514 1.155903 - H41 13.073937 52.423040 1.007670 - H51 12.008861 50.258888 0.431434 - H61 9.568670 50.153209 0.003430 - C1 66.932796 21.257229 38.653554 - C2 65.671701 21.354775 39.253533 - C3 65.292769 22.538601 39.897627 - C4 66.174933 23.624881 39.941743 - C5 67.436132 23.526891 39.342653 - C6 67.815064 22.343065 38.698559 - H11 67.225137 20.344031 38.157148 - H21 64.990759 20.516998 39.219045 - H31 64.319486 22.614023 40.359546 - H41 65.882696 24.537635 40.439038 - H51 68.117074 24.364668 39.377141 - H61 68.788243 22.268088 38.235751 - C1 56.996012 45.094167 30.891291 - C2 55.694758 44.696120 31.220152 - C3 55.457409 43.399022 31.690357 - C4 56.521314 42.499971 31.831703 - C5 57.822146 42.897773 31.501969 - C6 58.059495 44.194871 31.031764 - H11 57.178943 46.094452 30.528277 - H21 54.873933 45.389830 31.111739 - H31 54.453653 43.092447 31.944959 - H41 56.337961 41.499441 32.193844 - H51 58.642971 42.204063 31.610382 - H61 59.063673 44.501691 30.778035 - C1 30.163329 42.787509 40.137740 - C2 29.029731 41.971827 40.235045 - C3 28.507030 41.360380 39.089267 - C4 29.117928 41.564615 37.846184 - C5 30.250754 42.380931 37.748886 - C6 30.773454 42.992379 38.894664 - H11 30.566183 43.259376 41.021405 - H21 28.558674 41.813670 41.194124 - H31 27.633120 40.730356 39.164680 - H41 28.714302 41.093382 36.962526 - H51 30.721811 42.539088 36.789807 - H61 31.648137 43.621768 38.819243 - C1 60.038843 37.153238 37.547719 - C2 61.411651 36.930816 37.387166 - C3 62.111247 36.165009 38.327377 - C4 61.438034 35.621624 39.428141 - C5 60.065663 35.844872 39.589050 - C6 59.366068 36.610679 38.648839 - H11 59.499413 37.744207 36.822747 - H21 61.931055 37.349463 36.537640 - H31 63.170080 35.992687 38.202823 - H41 61.977901 35.031481 40.153469 - H51 59.546260 35.426225 40.438576 - H61 58.306797 36.782175 38.773038 - C1 16.113322 66.338301 69.374060 - C2 15.794153 65.481714 70.434362 - C3 16.162212 64.132140 70.378938 - C4 16.849439 63.639152 69.263211 - C5 17.167655 64.495481 68.202752 - C6 16.799596 65.845055 68.258176 - H11 15.829080 67.379072 69.416696 - H21 15.264496 65.862051 71.295494 - H31 15.916796 63.471706 71.197433 - H41 17.132728 62.598123 69.220418 - H51 17.697312 64.115144 67.341620 - H61 17.045965 66.505748 67.439837 - C1 59.655522 24.584875 62.095327 - C2 58.355286 25.085386 61.958489 - C3 57.413236 24.872785 62.972015 - C4 57.771423 24.159672 64.122378 - C5 59.071186 23.658492 64.258643 - C6 60.013235 23.871093 63.245117 - H11 60.381923 24.748543 61.313427 - H21 58.078970 25.636109 61.071305 - H31 56.410519 25.259839 62.866730 - H41 57.044548 23.995335 64.903705 - H51 59.347501 23.107769 65.145827 - H61 61.016426 23.484708 63.350975 - C1 71.212557 32.005289 0.620171 - C2 70.396530 32.816293 1.417807 - C3 70.967442 33.818470 2.211275 - C4 72.354381 34.009644 2.207107 - C5 73.170231 33.198097 1.410292 - C6 72.599319 32.195920 0.616824 - H11 70.772209 31.232115 0.008526 - H21 69.326421 32.669325 1.420658 - H31 70.337681 34.444676 2.825771 - H41 72.794552 34.782275 2.819573 - H51 74.240340 33.345065 1.407442 - H61 73.229257 31.570257 0.001507 - C1 8.624146 73.812144 10.554632 - C2 8.080690 74.279667 11.757100 - C3 7.545376 73.375003 12.681716 - C4 7.553518 72.002817 12.403863 - C5 8.096049 71.535592 11.201160 - C6 8.631363 72.440256 10.276544 - H11 9.036640 74.509958 9.841387 - H21 8.074895 75.338240 11.971877 - H31 7.127087 73.735762 13.609737 - H41 7.140099 71.305301 13.116872 - H51 8.101844 70.477019 10.986383 - H61 9.050576 72.079198 9.348758 - C1 36.806818 31.727776 9.493526 - C2 37.795638 30.773030 9.227924 - C3 39.147463 31.134056 9.273983 - C4 39.510467 32.449830 9.585644 - C5 38.521698 33.404531 9.850248 - C6 37.169873 33.043504 9.804189 - H11 35.764221 31.449360 9.457603 - H21 37.515749 29.757711 8.988065 - H31 39.910170 30.397155 9.070048 - H41 40.553115 32.728201 9.620569 - H51 38.801586 34.419849 10.090107 - H61 36.407114 33.780451 10.009122 - C1 63.520468 49.012220 6.218200 - C2 64.612494 49.704778 5.681830 - C3 65.233204 50.716104 6.424683 - C4 64.761888 51.034870 7.703907 - C5 63.669458 50.343005 8.239680 - C6 63.048748 49.331680 7.496827 - H11 63.041541 48.232507 5.645059 - H21 64.976618 49.458539 4.695158 - H31 66.076255 51.249577 6.011153 - H41 65.240411 51.815277 8.276451 - H51 63.305334 50.589245 9.226352 - H61 62.206101 48.797513 7.910954 - C1 47.823860 21.905371 53.771242 - C2 46.892511 21.209225 54.550870 - C3 47.307968 20.130754 55.340927 - C4 48.654773 19.748431 55.351355 - C5 49.585684 20.443939 54.571093 - C6 49.170227 21.522409 53.781037 - H11 47.503302 22.736892 53.161627 - H21 45.853512 21.504463 54.543402 - H31 46.589526 19.594472 55.943073 - H41 48.974893 18.916271 55.960336 - H51 50.624683 20.148700 54.578561 - H61 49.889107 22.059330 53.179523 - C1 17.235036 72.436523 15.575068 - C2 17.581447 73.738120 15.956768 - C3 16.580409 74.686906 16.196808 - C4 15.232959 74.334095 16.055147 - C5 14.886777 73.032963 15.672591 - C6 15.887815 72.084177 15.432552 - H11 18.007154 71.704923 15.389571 - H21 18.620955 74.010294 16.066700 - H31 16.847799 75.690680 16.492236 - H41 14.461070 75.066160 16.239788 - H51 13.847269 72.760789 15.562660 - H61 15.620196 71.079938 15.137979 - C1 24.880710 61.374869 50.969120 - C2 25.787292 62.186963 51.660832 - C3 26.027592 61.965682 53.022148 - C4 25.361311 60.932307 53.691753 - C5 24.454211 60.121037 53.000271 - C6 24.213911 60.342318 51.638955 - H11 24.695130 61.545837 49.919290 - H21 26.301870 62.983868 51.144216 - H31 26.727750 62.591620 53.555363 - H41 25.546373 60.762164 54.741814 - H51 23.939633 59.324132 53.516888 - H61 23.514271 59.715557 51.105511 - C1 46.278175 63.259182 9.530068 - C2 46.578877 61.913026 9.769433 - C3 45.859811 61.195906 10.733059 - C4 44.840044 61.824941 11.457319 - C5 44.540133 63.171115 11.218566 - C6 45.259199 63.888235 10.254940 - H11 46.833060 63.812315 8.787128 - H21 47.365197 61.427416 9.210305 - H31 46.091246 60.157162 10.916870 - H41 44.285950 61.271826 12.200871 - H51 43.753813 63.656725 11.777694 - H61 45.026973 64.926960 10.070517 - C1 20.921143 60.305485 45.129755 - C2 20.784913 61.282945 46.122661 - C3 21.915176 61.752406 46.802368 - C4 23.181670 61.244405 46.489170 - C5 23.317623 60.266441 45.497082 - C6 22.187359 59.796981 44.817375 - H11 20.049333 59.943171 44.605837 - H21 19.807939 61.675413 46.363977 - H31 21.810013 62.507186 47.567603 - H41 24.053203 61.606216 47.013906 - H51 24.294596 59.873974 45.255766 - H61 22.292799 59.042703 44.051321 - C1 71.580467 26.488640 15.594849 - C2 72.407909 25.474092 16.090715 - C3 73.756825 25.738287 16.356267 - C4 74.278299 27.017030 16.125954 - C5 73.451125 28.031049 15.629283 - C6 72.102209 27.766854 15.363730 - H11 70.540210 26.284707 15.389692 - H21 72.005583 24.487646 16.269035 - H31 74.394756 24.955775 16.739745 - H41 75.318824 27.220435 16.330306 - H51 73.853451 29.017496 15.450962 - H61 71.464011 28.549896 14.981058 - C1 19.039140 31.035984 3.557097 - C2 17.939580 30.324050 4.051027 - C3 16.641714 30.802153 3.834570 - C4 16.443410 31.992191 3.124183 - C5 17.542903 32.704392 2.631214 - C6 18.840769 32.226288 2.847671 - H11 20.040120 30.667392 3.724414 - H21 18.092386 29.405588 4.598584 - H31 15.793542 30.252283 4.214810 - H41 15.442363 32.361049 2.957827 - H51 17.390097 33.622854 2.083657 - H61 19.689009 32.775892 2.466470 - C1 51.314302 58.008105 52.781792 - C2 52.658611 58.135407 53.151225 - C3 53.327614 57.056209 53.740850 - C4 52.652308 55.849709 53.961042 - C5 51.307980 55.722871 53.592495 - C6 50.638977 56.802070 53.002870 - H11 50.798279 58.840609 52.327403 - H21 53.179920 59.065970 52.980844 - H31 54.364947 57.154267 54.024858 - H41 53.168312 55.017669 54.416317 - H51 50.786670 54.792308 53.762876 - H61 49.601664 56.703546 52.717976 - C1 40.219865 49.776697 54.622184 - C2 41.093198 48.778491 54.174160 - C3 40.843267 47.437306 54.488245 - C4 39.720005 47.094328 55.250354 - C5 38.847428 48.092541 55.699034 - C6 39.097358 49.433726 55.384949 - H11 40.412897 50.811113 54.380240 - H21 41.959510 49.042889 53.585656 - H31 41.516548 46.667289 54.141685 - H41 39.527728 46.059920 55.492954 - H51 37.981115 47.828143 56.287538 - H61 38.423322 50.203736 55.730853 - C1 60.916098 56.467350 21.750696 - C2 60.257349 55.258508 21.496529 - C3 60.987740 54.066897 21.416011 - C4 62.376881 54.084129 21.589662 - C5 63.035501 55.292953 21.842838 - C6 62.305110 56.484563 21.923355 - H11 60.352767 57.386407 21.812395 - H21 59.185543 55.244969 21.363146 - H31 60.479266 53.134302 21.220930 - H41 62.940084 53.165054 21.526972 - H51 64.107307 55.306492 21.976221 - H61 62.813713 57.417177 22.119428 - C1 70.916535 4.466493 43.021271 - C2 70.479201 3.242111 43.540383 - C3 69.158094 2.826792 43.335256 - C4 68.274321 3.635857 42.611016 - C5 68.711441 4.860428 42.092862 - C6 70.032548 5.275747 42.297989 - H11 71.935352 4.786931 43.179847 - H21 71.161097 2.617519 44.098635 - H31 68.821173 1.881763 43.734931 - H41 67.255290 3.315608 42.453397 - H51 68.029545 5.485020 41.534610 - H61 70.369683 6.220587 41.897356 - C1 11.773565 28.153065 55.259044 - C2 10.524010 28.379085 54.669654 - C3 9.455619 28.838975 55.448713 - C4 9.636782 29.072846 56.817160 - C5 10.885908 28.845924 57.406503 - C6 11.954300 28.386033 56.627445 - H11 12.597422 27.797998 54.658210 - H21 10.384254 28.199284 53.613775 - H31 8.492005 29.014242 54.993667 - H41 8.812497 29.427011 57.417947 - H51 11.025665 29.025724 58.462382 - H61 12.918342 28.211669 57.082537 - C1 10.597526 38.286228 43.875867 - C2 10.788329 39.663163 44.041678 - C3 11.877356 40.134369 44.784562 - C4 12.775579 39.228639 45.361635 - C5 12.584161 37.851959 45.196570 - C6 11.495135 37.380754 44.453686 - H11 9.757366 37.922866 43.303229 - H21 10.095773 40.362077 43.596004 - H31 12.024959 41.196645 44.911526 - H41 13.615125 39.592257 45.935020 - H51 13.276718 37.153045 45.642244 - H61 11.348146 36.318222 44.325976 - C1 53.454123 48.616581 60.007947 - C2 52.325376 48.994272 59.270971 - C3 51.231211 48.126507 59.172595 - C4 51.265793 46.881052 59.811195 - C5 52.394775 46.503163 60.547219 - C6 53.488940 47.370928 60.645595 - H11 54.298128 49.285736 60.083455 - H21 52.298303 49.955374 58.778742 - H31 50.360133 48.418455 58.604858 - H41 50.422024 46.211698 59.734735 - H51 52.421849 45.542060 61.039449 - H61 54.359782 47.079178 61.214284 - C1 9.690336 53.313935 5.186417 - C2 8.908390 52.174901 5.412277 - C3 9.327412 50.930676 4.926256 - C4 10.528380 50.825486 4.214376 - C5 11.309618 51.964551 3.987810 - C6 10.890596 53.208776 4.473831 - H11 9.366909 54.273587 5.560953 - H21 7.982114 52.255796 5.962014 - H31 8.724563 50.051919 5.101457 - H41 10.851098 49.865865 3.839134 - H51 12.235893 51.883656 3.438073 - H61 11.494153 54.087502 4.299335 - C1 66.918703 24.841404 22.095118 - C2 68.210298 24.321345 21.949610 - C3 68.438491 22.952476 22.134044 - C4 67.375089 22.103665 22.463985 - C5 66.083946 22.623912 22.610365 - C6 65.855753 23.992781 22.425931 - H11 66.742845 25.897226 21.953243 - H21 69.030713 24.975987 21.694456 - H31 69.434763 22.551296 22.020765 - H41 67.551398 21.048031 22.606733 - H51 65.263530 21.969270 22.865520 - H61 64.859028 24.393774 22.538339 - C1 24.687387 3.999210 33.351374 - C2 25.679135 3.054676 33.641447 - C3 25.351833 1.695341 33.711954 - C4 24.032782 1.280539 33.492388 - C5 23.041128 2.225097 33.203311 - C6 23.368430 3.584432 33.132804 - H11 24.939813 5.047629 33.297396 - H21 26.696959 3.374488 33.810259 - H31 26.117231 0.966734 33.934744 - H41 23.780451 0.232144 33.547362 - H51 22.023305 1.905285 33.034499 - H61 22.602939 4.313015 32.909018 - C1 12.646554 54.969645 39.444305 - C2 12.383384 54.088858 38.388461 - C3 11.079683 53.956637 37.895741 - C4 10.039153 54.705203 38.458864 - C5 10.302246 55.585090 39.515138 - C6 11.605947 55.717312 40.007858 - H11 13.651995 55.071284 39.824530 - H21 13.186168 53.511723 37.953496 - H31 10.877026 53.277864 37.080551 - H41 9.033635 54.602665 38.079069 - H51 9.499462 56.162225 39.950103 - H61 11.808680 56.396984 40.822618 - C1 41.011583 51.293190 13.956194 - C2 41.427210 52.578750 13.589530 - C3 42.790323 52.897717 13.580829 - C4 43.737808 51.931126 13.938791 - C5 43.322061 50.646119 14.306279 - C6 41.958949 50.327151 14.314980 - H11 39.960234 51.047366 13.963261 - H21 40.696373 53.324407 13.312741 - H31 43.110834 53.889199 13.296973 - H41 44.789038 52.177503 13.932548 - H51 44.052899 49.900462 14.583068 - H61 41.638557 49.335117 14.598012 - C1 38.844262 51.681866 6.069330 - C2 37.453212 51.559017 5.970638 - C3 36.845142 50.313008 6.164557 - C4 37.628121 49.189849 6.457169 - C5 39.018988 49.312630 6.554881 - C6 39.627058 50.558638 6.360961 - H11 39.313210 52.642810 5.919370 - H21 36.848952 52.425575 5.745499 - H31 35.771933 50.218623 6.089379 - H41 37.158990 48.228836 6.606148 - H51 39.623248 48.446071 6.780019 - H61 40.700449 50.653093 6.437121 - C1 60.144991 4.762001 68.688396 - C2 61.030161 3.975674 69.435399 - C3 62.261355 4.502835 69.843020 - C4 62.607379 5.816323 69.503636 - C5 61.722681 6.602083 68.755957 - C6 60.491487 6.074922 68.348337 - H11 59.195608 4.355234 68.373714 - H21 60.763077 2.962494 69.697839 - H31 62.943655 3.896423 70.420141 - H41 63.557235 6.222523 69.817643 - H51 61.989765 7.615263 68.493518 - H61 59.808716 6.681901 67.771891 - C1 67.720680 57.652624 75.985954 - C2 66.551046 56.928643 76.246067 - C3 65.315953 57.586320 76.289617 - C4 65.250494 58.967978 76.073053 - C5 66.420104 59.691859 75.813935 - C6 67.655197 59.034182 75.770386 - H11 68.673268 57.145388 75.952768 - H21 66.601317 55.862578 76.412557 - H31 64.413635 57.027491 76.489294 - H41 64.297882 59.475115 76.107235 - H51 66.369833 60.757924 75.647445 - H61 68.557538 59.593111 75.569714 - C1 30.565599 21.955565 43.172259 - C2 31.728426 22.199158 43.912763 - C3 31.712790 23.137168 44.951889 - C4 30.534327 23.831584 45.250512 - C5 29.372032 23.588626 44.509448 - C6 29.387668 22.650616 43.470322 - H11 30.577830 21.232390 42.370584 - H21 32.637534 21.663040 43.682890 - H31 32.609667 23.324225 45.523692 - H41 30.522628 24.555395 46.051627 - H51 28.462924 24.124744 44.739321 - H61 28.490259 22.462924 42.899079 - C1 70.849628 9.943158 71.703177 - C2 69.472444 10.185485 71.770203 - C3 68.999477 11.490560 71.951783 - C4 69.903693 12.553309 72.066336 - C5 71.280624 12.310764 72.000253 - C6 71.753592 11.005689 71.818673 - H11 71.214351 8.936536 71.563523 - H21 68.774696 9.365746 71.681223 - H31 67.937006 11.677444 72.002456 - H41 69.538718 13.559713 72.206933 - H51 71.978372 13.130502 72.089233 - H61 72.816315 10.819022 71.767057 - C1 33.310724 7.105224 60.668848 - C2 33.237237 5.962928 59.862865 - C3 32.835607 6.074041 58.526363 - C4 32.507465 7.327451 57.995844 - C5 32.580071 8.469331 58.802052 - C6 32.981701 8.358218 60.138554 - H11 33.620115 7.019404 61.699735 - H21 33.490963 4.995926 60.271853 - H31 32.779943 5.192859 57.904465 - H41 32.197193 7.412854 56.965182 - H51 32.326345 9.436333 58.393063 - H61 33.038246 9.239816 60.760227 - C1 39.202136 56.013163 37.501632 - C2 39.760222 55.912961 36.221652 - C3 41.149533 55.834762 36.068057 - C4 41.980758 55.856765 37.194443 - C5 41.422691 55.957906 38.474078 - C6 40.033380 56.036105 38.627673 - H11 38.130633 56.073865 37.620000 - H21 39.119021 55.895353 35.352576 - H31 41.579835 55.756452 35.080613 - H41 43.052280 55.797001 37.075729 - H51 42.063892 55.975513 39.343154 - H61 39.603059 56.113476 39.615462 - C1 23.950648 52.847805 57.211048 - C2 25.019617 53.648837 57.629980 - C3 26.280374 53.497865 57.040412 - C4 26.472162 52.545861 56.031913 - C5 25.403533 51.744388 55.613812 - C6 24.142776 51.895360 56.203380 - H11 22.978402 52.964025 57.666071 - H21 24.871654 54.383783 58.407605 - H31 27.104656 54.116592 57.363014 - H41 27.444748 52.429200 55.577720 - H51 25.551496 51.009441 54.836186 - H61 23.318153 51.277074 55.879947 - C1 5.476256 78.998547 55.689914 - C2 4.173748 79.037640 55.178253 - C3 3.409783 77.866022 55.118602 - C4 3.948326 76.655310 55.570612 - C5 5.250947 76.616187 56.081279 - C6 6.014912 77.787806 56.140930 - H11 6.065555 79.902129 55.735529 - H21 3.757902 79.971756 54.830057 - H31 2.404638 77.896555 54.724790 - H41 3.359140 75.751698 55.524003 - H51 5.666793 75.682071 56.429475 - H61 7.019944 77.757301 56.535735 - C1 59.602767 40.143603 28.911443 - C2 60.052988 39.016109 28.214371 - C3 61.374128 38.958779 27.754814 - C4 62.245047 40.028943 27.992329 - C5 61.794511 41.156573 28.688462 - C6 60.473370 41.213903 29.148019 - H11 58.583706 40.187921 29.265511 - H21 59.381357 38.190129 28.031588 - H31 61.721559 38.088481 27.217962 - H41 63.263793 39.984761 27.637321 - H51 62.466141 41.982553 28.871245 - H61 60.126255 42.084065 29.685810 - C1 51.373050 52.562388 35.774344 - C2 50.354835 53.510625 35.929058 - C3 49.224785 53.465079 35.103950 - C4 49.112950 52.471296 34.124128 - C5 50.131487 51.523865 33.968918 - C6 51.261537 51.569411 34.794026 - H11 52.244762 52.597809 36.410487 - H21 50.440692 54.277024 36.685366 - H31 48.438930 54.196057 35.224115 - H41 48.241561 52.436681 33.487489 - H51 50.045630 50.757466 33.212610 - H61 52.047069 50.837627 34.674356 - C1 68.196005 39.525804 19.218613 - C2 68.638679 38.208864 19.046685 - C3 67.711250 37.178875 18.849485 - C4 66.341146 37.465825 18.824213 - C5 65.898641 38.782429 18.997069 - C6 66.826070 39.812418 19.194269 - H11 68.911325 40.320085 19.371092 - H21 69.695725 37.987415 19.065542 - H31 68.052976 36.163145 18.715864 - H41 65.625996 36.671208 18.672662 - H51 64.841595 39.003877 18.978211 - H61 66.484175 40.828484 19.326963 - C1 5.451105 13.202297 22.159646 - C2 4.500080 14.223633 22.048856 - C3 4.522765 15.084333 20.944967 - C4 5.496476 14.923697 19.951868 - C5 6.447851 13.903100 20.063234 - C6 6.425165 13.042400 21.167123 - H11 5.433793 12.538756 23.011249 - H21 3.748414 14.347302 22.814653 - H31 3.788412 15.871543 20.859161 - H41 5.514138 15.587977 19.100841 - H51 7.199517 13.779431 19.297437 - H61 7.159170 12.254451 21.252352 - C1 14.790888 71.751187 48.536374 - C2 13.891702 72.806735 48.729074 - C3 14.332730 74.130817 48.618661 - C4 15.672945 74.399351 48.315548 - C5 16.572072 73.343911 48.123841 - C6 16.131043 72.019829 48.234254 - H11 14.450763 70.730007 48.621931 - H21 12.857548 72.599709 48.962327 - H31 13.638701 74.944971 48.766357 - H41 16.013010 75.420640 48.230984 - H51 17.606226 73.550938 47.890588 - H61 16.825132 71.205567 48.085566 - C1 46.152357 28.115253 21.675058 - C2 46.223848 28.576305 22.994971 - C3 45.501860 29.712408 23.379543 - C4 44.708382 30.387458 22.444202 - C5 44.637738 29.926936 21.124329 - C6 45.359726 28.790834 20.739757 - H11 46.709528 27.239249 21.378424 - H21 46.835496 28.055243 23.716858 - H31 45.556338 30.067349 24.398064 - H41 44.152058 31.263992 22.740877 - H51 44.026089 30.447998 20.402442 - H61 45.304401 28.435361 19.721195 - C1 48.095759 29.013510 71.194289 - C2 46.765521 28.828261 70.799319 - C3 46.147562 27.585537 70.982767 - C4 46.859841 26.528061 71.561185 - C5 48.190125 26.713135 71.955171 - C6 48.808084 27.955860 71.771723 - H11 48.572426 29.971880 71.052417 - H21 46.215672 29.644199 70.353615 - H31 45.121045 27.443104 70.678935 - H41 46.383220 25.569516 71.702074 - H51 48.739974 25.897197 72.400876 - H61 49.834554 28.098467 72.076539 - C1 70.028489 21.531330 25.105786 - C2 70.489360 22.807327 24.760413 - C3 71.231217 22.989706 23.587265 - C4 71.512204 21.896089 22.759489 - C5 71.052165 20.620219 23.105402 - C6 70.310308 20.437840 24.278551 - H11 69.456667 21.390672 26.010799 - H21 70.272129 23.651262 25.398633 - H31 71.585808 23.974299 23.320472 - H41 72.084858 22.036873 21.855016 - H51 71.269396 19.776284 22.467182 - H61 69.954885 19.453120 24.544803 - C1 5.413008 26.087021 70.106312 - C2 5.139400 27.332533 69.528654 - C3 4.217057 28.196142 70.131443 - C4 3.568321 27.814238 71.311890 - C5 3.841267 26.568533 71.888824 - C6 4.763610 25.704924 71.286035 - H11 6.124091 25.420843 69.641143 - H21 5.640286 27.627569 68.618265 - H31 4.006860 29.157356 69.686222 - H41 2.856577 28.480223 71.776334 - H51 3.340382 26.273496 72.799213 - H61 4.974469 24.743903 71.731980 - C1 29.724857 76.927574 76.791810 - C2 30.857152 77.368786 76.096762 - C3 32.079333 77.506428 76.765507 - C4 32.169219 77.202858 78.129300 - C5 31.036834 76.762642 78.824317 - C6 29.814653 76.625000 78.155572 - H11 28.782182 76.821813 76.276066 - H21 30.788101 77.602441 75.044442 - H31 32.952957 77.845844 76.228931 - H41 33.111804 77.309615 78.645014 - H51 31.105885 76.528987 79.876637 - H61 28.941118 76.284589 78.692179 - C1 77.982605 41.849060 64.494783 - C2 77.055397 42.890307 64.368522 - C3 76.456807 43.436673 65.510040 - C4 76.785424 42.941792 66.777821 - C5 77.711770 41.900094 66.903852 - C6 78.310360 41.353728 65.762333 - H11 78.443942 41.427454 63.614312 - H21 76.802227 43.272632 63.390527 - H31 75.742301 44.240605 65.412517 - H41 76.323225 43.362948 67.658062 - H51 77.964940 41.517769 67.881847 - H61 79.025729 40.550247 65.860087 - C1 71.774785 45.180997 58.369056 - C2 71.803605 45.880803 57.156913 - C3 72.999165 46.454646 56.708325 - C4 74.165905 46.328682 57.471879 - C5 74.136736 45.629786 58.684244 - C6 72.941176 45.055944 59.132832 - H11 70.852579 44.738776 58.715165 - H21 70.903675 45.977542 56.567414 - H31 73.021441 46.993606 55.772716 - H41 75.087762 46.771814 57.125991 - H51 75.036666 45.533047 59.273743 - H61 72.919248 44.516073 60.068219 - C1 27.304060 68.165394 31.744005 - C2 27.951729 67.348336 30.809772 - C3 27.670581 67.486454 29.445305 - C4 26.741765 68.441631 29.015071 - C5 26.093585 69.257830 29.949317 - C6 26.374733 69.119712 31.313785 - H11 27.520654 68.058551 32.796377 - H21 28.668799 66.611784 31.141500 - H31 28.171058 66.856746 28.724661 - H41 26.524660 68.547615 27.962713 - H51 25.376515 69.994381 29.617590 - H61 25.874767 69.750279 32.034415 - C1 33.206213 41.080710 58.354796 - C2 33.967933 42.208486 58.683059 - C3 34.598931 42.288068 59.930215 - C4 34.468209 41.239875 60.849109 - C5 33.705822 40.112781 60.521147 - C6 33.074824 40.033199 59.273991 - H11 32.719257 41.019569 57.393054 - H21 34.069384 43.016983 57.973988 - H31 35.187338 43.157707 60.182887 - H41 34.954499 41.301698 61.811152 - H51 33.604371 39.304284 61.230218 - H61 32.487084 39.162879 59.021019 - C1 56.551491 54.162130 64.972376 - C2 56.324388 55.490218 64.592300 - C3 55.316701 56.234488 65.217216 - C4 54.536117 55.650670 66.222209 - C5 54.762656 54.322520 66.601461 - C6 55.770343 53.578250 65.976544 - H11 57.328432 53.588041 64.490093 - H21 56.926943 55.940966 63.817385 - H31 55.142315 57.259326 64.924584 - H41 53.758612 56.224698 66.703668 - H51 54.160101 53.871772 67.376376 - H61 55.945293 52.553474 66.270000 - C1 5.704075 11.655231 53.032838 - C2 5.200345 12.950577 52.864953 - C3 5.675023 13.995469 53.666684 - C4 6.653431 13.745015 54.636300 - C5 7.156300 12.449676 54.804693 - C6 6.681621 11.404784 54.002962 - H11 5.337650 10.849321 52.414730 - H21 4.445938 13.144077 52.116509 - H31 5.287041 14.994878 53.536347 - H41 7.018995 14.550932 55.254916 - H51 7.910707 12.256176 55.553137 - H61 7.070465 10.405367 54.132790 - C1 65.712730 19.873042 17.722943 - C2 65.850013 18.549110 17.289114 - C3 67.090350 18.087116 16.833026 - C4 68.193404 18.949056 16.810766 - C5 68.055782 20.272990 17.243654 - C6 66.815445 20.734983 17.699743 - H11 64.755990 20.229403 18.074325 - H21 64.999234 17.883824 17.306809 - H31 67.196312 17.065470 16.499339 - H41 69.149805 18.592696 16.458444 - H51 68.906560 20.938275 17.225960 - H61 66.709822 21.756628 18.034371 - C1 74.903687 60.737457 7.817129 - C2 75.759724 61.799952 8.130427 - C3 75.330399 63.120510 7.952389 - C4 74.045037 63.378573 7.461053 - C5 73.189596 62.316170 7.146958 - C6 73.618921 60.995612 7.324996 - H11 75.235009 59.718988 7.954096 - H21 76.751199 61.601016 8.510088 - H31 75.990552 63.940043 8.195083 - H41 73.714311 64.397134 7.323289 - H51 72.198121 62.515106 6.767298 - H61 72.958171 60.175987 7.083100 - C1 78.292946 51.499946 29.356971 - C2 77.083814 52.090102 28.970231 - C3 75.966279 51.288746 28.707865 - C4 76.057877 49.897234 28.832239 - C5 77.267109 49.307250 29.217998 - C6 78.384643 50.108606 29.480364 - H11 79.154921 52.118029 29.558928 - H21 77.012823 53.163694 28.874831 - H31 75.033313 51.744256 28.410508 - H41 75.196002 49.279324 28.629301 - H51 77.338100 48.233658 29.313399 - H61 79.317509 49.652925 29.778702 - C1 11.056140 41.581516 19.811073 - C2 11.654407 42.639187 20.506243 - C3 13.029575 42.869818 20.381292 - C4 13.806476 42.042780 19.561173 - C5 13.208357 40.984758 18.866927 - C6 11.833189 40.754126 18.991877 - H11 9.995596 41.403456 19.907793 - H21 11.055043 43.277716 21.138527 - H31 13.490756 43.686409 20.916857 - H41 14.867168 42.220489 19.465377 - H51 13.807721 40.346228 18.234643 - H61 11.371860 39.937887 18.455389 - C1 12.902255 29.081108 73.842898 - C2 13.907721 28.275198 74.390073 - C3 13.627495 26.949948 74.743734 - C4 12.341804 26.430607 74.550221 - C5 11.336367 27.236764 74.004015 - C6 11.616592 28.562014 73.650353 - H11 13.118345 30.103325 73.570519 - H21 14.899852 28.675548 74.538857 - H31 14.403536 26.328081 75.164898 - H41 12.125742 25.408637 74.823569 - H51 10.344235 26.836414 73.855231 - H61 10.840523 29.183634 73.228221 - C1 10.051219 66.221031 78.241910 - C2 8.866628 65.896353 78.913610 - C3 8.079727 66.909459 79.474228 - C4 8.477416 68.247244 79.363147 - C5 9.662298 68.571649 78.692364 - C6 10.449200 67.558542 78.131746 - H11 10.658276 65.439586 77.809892 - H21 8.559362 64.864335 78.998857 - H31 7.165404 66.658886 79.991493 - H41 7.870651 69.028415 79.796082 - H51 9.969564 69.603667 78.607117 - H61 11.363231 67.809389 77.613564 - C1 28.473744 73.698924 64.142937 - C2 28.764124 74.142752 65.438524 - C3 29.182323 75.462096 65.649078 - C4 29.310142 76.337612 64.564044 - C5 29.020693 75.893465 63.268634 - C6 28.602494 74.574121 63.058080 - H11 28.151587 72.681248 63.980570 - H21 28.664965 73.467576 66.275809 - H31 29.405321 75.804596 66.648729 - H41 29.633231 77.354970 64.726588 - H51 29.119853 76.568642 62.431349 - H61 28.378565 74.231939 62.058252 - C1 5.867596 69.153092 37.428669 - C2 7.094524 69.086131 38.099501 - C3 7.174399 69.446455 39.449937 - C4 6.027347 69.873740 40.129541 - C5 4.800894 69.941546 39.458462 - C6 4.721018 69.581222 38.108026 - H11 5.806138 68.875549 36.387033 - H21 7.979448 68.755907 37.575476 - H31 8.120782 69.393775 39.967549 - H41 6.089279 70.152128 41.170930 - H51 3.915969 70.271769 39.982486 - H61 3.774161 69.633057 37.590662 - C1 46.904425 66.806742 35.648845 - C2 48.187212 67.248017 35.303034 - C3 48.534079 68.593577 35.473449 - C4 47.598160 69.497862 35.989673 - C5 46.315339 69.056727 36.334494 - C6 45.968471 67.711166 36.164080 - H11 46.636840 65.769035 35.517021 - H21 48.909587 66.550346 34.905328 - H31 49.524039 68.933613 35.207566 - H41 47.865710 70.535709 36.120508 - H51 45.592964 69.754398 36.732201 - H61 44.978546 67.370991 36.430952 - C1 61.912769 62.277308 26.345194 - C2 62.918880 61.336815 26.596318 - C3 62.872486 60.080780 25.979783 - C4 61.819982 59.765239 25.112123 - C5 60.813616 60.705310 24.861868 - C6 60.860009 61.961345 25.478403 - H11 61.948402 63.245873 26.821037 - H21 63.731287 61.580337 27.265221 - H31 63.649261 59.355738 26.172842 - H41 61.784094 58.796252 24.637149 - H51 60.001208 60.461788 24.192965 - H61 60.083490 62.686810 25.284474 - C1 26.833024 62.362063 37.465391 - C2 25.964750 61.309971 37.150663 - C3 25.149337 60.754526 38.143877 - C4 25.202198 61.251173 39.451819 - C5 26.071044 62.302446 39.766566 - C6 26.886457 62.857891 38.773352 - H11 27.462173 62.790148 36.699409 - H21 25.923410 60.927109 36.141481 - H31 24.478848 59.943579 37.900677 - H41 24.573621 60.822269 40.217820 - H51 26.112384 62.685308 40.775748 - H61 27.556374 63.669657 39.016533 - C1 18.099966 43.917223 15.683530 - C2 19.041514 43.082154 15.070345 - C3 18.661435 41.813460 14.616641 - C4 17.339807 41.379836 14.776121 - C5 16.398756 42.214481 15.390063 - C6 16.778835 43.483174 15.843767 - H11 18.393264 44.895545 16.033782 - H21 20.061053 43.416803 14.946680 - H31 19.387675 41.169787 14.142724 - H41 17.047006 40.401089 14.426626 - H51 15.379218 41.879832 15.513728 - H61 16.052098 44.127272 16.316928 - C1 71.064430 61.181145 65.793477 - C2 70.618434 62.048074 66.798152 - C3 71.175563 63.326870 66.917237 - C4 72.178687 63.738736 66.031646 - C5 72.625176 62.871521 65.027793 - C6 72.068047 61.592726 64.908708 - H11 70.634974 60.194737 65.701933 - H21 69.844088 61.730681 67.481080 - H31 70.830673 63.995884 67.691709 - H41 72.608636 64.724858 66.124012 - H51 73.399522 63.188914 64.344865 - H61 72.412444 60.923996 64.133414 - C1 49.657084 34.131784 37.753645 - C2 48.507813 33.356872 37.557326 - C3 48.535288 31.983410 37.827023 - C4 49.712033 31.384859 38.293040 - C5 50.861292 32.159572 38.488379 - C6 50.833817 33.533035 38.218682 - H11 49.635937 35.190999 37.545247 - H21 47.599695 33.818631 37.198381 - H31 47.648317 31.385953 37.676476 - H41 49.733168 30.325445 38.500458 - H51 51.769410 31.697813 38.847324 - H61 51.720800 34.130689 38.370209 - C1 33.132563 36.949848 68.635132 - C2 34.107766 37.638699 67.904163 - C3 34.331049 38.999725 68.144256 - C4 33.579130 39.671900 69.115318 - C5 32.603483 38.983280 69.845421 - C6 32.380200 37.622254 69.605328 - H11 32.960135 35.900242 68.449635 - H21 34.688382 37.120099 67.155377 - H31 35.084094 39.530730 67.580968 - H41 33.751114 40.721737 69.299949 - H51 32.022867 39.501880 70.594206 - H61 31.627599 37.091018 70.169482 - C1 70.691734 22.141298 2.920700 - C2 71.706663 22.580827 3.778944 - C3 71.378965 23.193985 4.994075 - C4 70.036338 23.367613 5.350962 - C5 69.021687 22.928971 4.492351 - C6 69.349385 22.315814 3.277220 - H11 70.944540 21.668757 1.983359 - H21 72.742560 22.446385 3.504020 - H31 72.162056 23.532083 5.656492 - H41 69.783810 23.841041 6.287936 - H51 67.985790 23.063414 4.767275 - H61 68.566015 21.976828 2.615170 - C1 10.560593 41.198222 39.085513 - C2 10.379742 39.902416 38.587486 - C3 9.108152 39.479420 38.182489 - C4 8.017412 40.352229 38.275520 - C5 8.198191 41.647456 38.774359 - C6 9.469782 42.070452 39.179356 - H11 11.541269 41.524267 39.398218 - H21 11.221278 39.229129 38.515077 - H31 8.969012 38.480088 37.797375 - H41 7.036665 40.025605 37.963627 - H51 7.356656 42.320743 38.846769 - H61 9.608993 43.070364 39.563658 - C1 72.964218 26.210510 36.263389 - C2 73.653236 25.031941 36.573356 - C3 73.367863 23.850881 35.877978 - C4 72.393471 23.848391 34.872633 - C5 71.703985 25.026593 34.563471 - C6 71.989358 26.207653 35.258849 - H11 73.184086 27.121284 36.800010 - H21 74.405450 25.033852 37.348541 - H31 73.900208 22.942018 36.116542 - H41 72.173135 22.937250 34.336816 - H51 70.951771 25.024683 33.788285 - H61 71.457481 27.116883 35.019480 - C1 64.689684 27.179347 73.964368 - C2 64.232768 26.112896 74.747797 - C3 63.699997 24.972389 74.135186 - C4 63.624143 24.898334 72.739147 - C5 64.080140 25.965053 71.956006 - C6 64.612910 27.105560 72.568616 - H11 65.100215 28.059102 74.436922 - H21 64.291792 26.169630 75.824847 - H31 63.348491 24.149368 74.739683 - H41 63.212692 24.018846 72.266880 - H51 64.021115 25.908319 70.878955 - H61 64.965336 27.928313 71.963832 - C1 16.098409 78.126963 4.353269 - C2 14.791467 77.711362 4.072147 - C3 14.293634 77.802305 2.766857 - C4 15.102743 78.308850 1.742689 - C5 16.409107 78.725222 2.024080 - C6 16.906940 78.634279 3.329370 - H11 16.482172 78.057160 5.360080 - H21 14.167323 77.319963 4.862078 - H31 13.285728 77.480709 2.549977 - H41 14.718403 78.379424 0.736147 - H51 17.033252 79.116622 1.234149 - H61 17.915425 78.955105 3.545981 - C1 35.880346 72.337949 59.110120 - C2 36.945107 71.442510 59.266082 - C3 37.969250 71.400033 58.312553 - C4 37.928632 72.252995 57.203062 - C5 36.863524 73.147561 57.046759 - C6 35.839381 73.190038 58.000288 - H11 35.090301 72.370384 59.845370 - H21 36.976896 70.784811 60.122331 - H31 38.791084 70.709899 58.433553 - H41 38.718329 72.219686 56.467471 - H51 36.831734 73.805260 56.190510 - H61 35.017894 73.881045 57.879630 - C1 37.157976 36.121675 39.559525 - C2 37.257214 37.491123 39.286367 - C3 38.483656 38.148416 39.440302 - C4 39.610861 37.436261 39.867395 - C5 39.511284 36.067264 40.141378 - C6 38.284841 35.409972 39.987443 - H11 36.211954 35.614877 39.441157 - H21 36.387795 38.040562 38.956261 - H31 38.560260 39.204653 39.228564 - H41 40.556544 37.943511 39.986588 - H51 40.380702 35.517826 40.471484 - H61 38.208577 34.353284 40.198356 - C1 69.819782 20.545611 68.281871 - C2 68.565738 20.042021 68.647413 - C3 67.447287 20.884010 68.650748 - C4 67.582880 22.229590 68.288542 - C5 68.836926 22.733188 67.924000 - C6 69.955378 21.891198 67.920664 - H11 70.682426 19.896261 68.279697 - H21 68.460858 19.003768 68.926289 - H31 66.479763 20.495107 68.931798 - H41 66.720239 22.878947 68.291716 - H51 68.941807 23.771441 67.645124 - H61 70.922899 22.280094 67.638614 - C1 51.397624 5.495732 64.781657 - C2 50.051775 5.186211 64.552012 - C3 49.102767 6.211735 64.464966 - C4 49.499610 7.546780 64.607566 - C5 50.845097 7.856050 64.838108 - C6 51.794104 6.830526 64.925153 - H11 52.129439 4.704719 64.849170 - H21 49.745553 4.156296 64.441361 - H31 48.064731 5.972833 64.286802 - H41 48.767432 8.337542 64.540950 - H51 51.151319 8.885965 64.948759 - H61 52.832503 7.069680 65.102420 - C1 38.299410 38.673992 61.327110 - C2 39.398513 37.906890 61.731311 - C3 39.330901 36.509272 61.686746 - C4 38.164186 35.878757 61.237979 - C5 37.065020 36.645826 60.834775 - C6 37.132631 38.043443 60.879341 - H11 38.351483 39.751903 61.361877 - H21 40.298931 38.393204 62.076980 - H31 40.179246 35.917675 61.997648 - H41 38.112049 34.800812 61.204210 - H51 36.164602 36.159511 60.489107 - H61 36.284350 38.635074 60.567441 - C1 63.267884 54.470577 59.640670 - C2 64.610448 54.451659 60.036921 - C3 65.029228 55.223116 61.127502 - C4 64.105445 56.013491 61.821833 - C5 62.763340 56.033046 61.424962 - C6 62.344560 55.261589 60.334380 - H11 62.945039 53.875865 58.799300 - H21 65.323151 53.841451 59.501719 - H31 66.064776 55.207620 61.433670 - H41 64.428748 56.608840 62.662582 - H51 62.050637 56.643254 61.960164 - H61 61.308553 55.276449 60.028833 - C1 64.286764 25.673678 10.015094 - C2 63.090309 26.390091 9.892222 - C3 61.863491 25.717645 9.943447 - C4 61.833128 24.328785 10.117544 - C5 63.029464 23.612504 10.239433 - C6 64.256282 24.284950 10.188208 - H11 65.232932 26.192319 9.975186 - H21 63.113559 27.461690 9.758517 - H31 60.940574 26.270602 9.849650 - H41 60.886841 23.810277 10.156469 - H51 63.006214 22.540905 10.373138 - H61 65.179319 23.731860 10.282989 - C1 39.769083 42.590974 68.610707 - C2 40.208900 43.683183 67.853416 - C3 40.134654 44.977117 68.382675 - C4 39.620592 45.178840 69.669225 - C5 39.180012 44.086842 70.425905 - C6 39.254258 42.792909 69.896646 - H11 39.826011 41.593087 68.202302 - H21 40.606100 43.527643 66.861055 - H31 40.474926 45.819464 67.798719 - H41 39.562901 46.176939 70.077019 - H51 38.782813 44.242382 71.418266 - H61 38.914749 41.950350 70.481213 - C1 66.966311 27.148334 44.417979 - C2 66.565872 27.868050 45.550017 - C3 66.613168 29.267193 45.542722 - C4 67.060902 29.946620 44.403391 - C5 67.462134 29.226885 43.271963 - C6 67.414839 27.827743 43.279257 - H11 66.930180 26.069226 44.423810 - H21 66.219835 27.344023 46.428877 - H31 66.303262 29.822274 46.415752 - H41 67.097826 31.025710 44.398169 - H51 67.808171 29.750912 42.393102 - H61 67.723951 27.272680 42.405618 - C1 38.237498 65.368405 36.308645 - C2 39.324526 64.690668 35.743938 - C3 40.631987 65.077640 36.061254 - C4 40.852420 66.142351 36.943277 - C5 39.765500 66.820489 37.507074 - C6 38.458039 66.433516 37.189758 - H11 37.229136 65.070151 36.063566 - H21 39.154617 63.868818 35.063912 - H31 41.470441 64.554044 35.626307 - H41 41.860890 66.441005 37.187446 - H51 39.935408 67.642339 38.187100 - H61 37.619478 66.956712 37.625615 - C1 7.318099 53.114999 27.391999 - C2 6.367327 52.861650 26.396158 - C3 5.156669 53.564609 26.389305 - C4 4.896783 54.520918 27.378293 - C5 5.847071 54.773448 28.374443 - C6 7.057729 54.070489 28.381296 - H11 8.251642 52.572523 27.397453 - H21 6.567948 52.124318 25.632722 - H31 4.423746 53.369754 25.620415 - H41 3.962756 55.062575 27.373148 - H51 5.646451 55.510780 29.137879 - H61 7.791135 54.266163 29.149877 - C1 5.462864 73.462177 21.913126 - C2 5.560445 74.751154 21.375662 - C3 4.486882 75.641866 21.493919 - C4 3.315737 75.243601 22.149639 - C5 3.217950 73.954512 22.686130 - C6 4.291513 73.063800 22.567873 - H11 6.290747 72.775128 21.821542 - H21 6.464161 75.058770 20.870280 - H31 4.562715 76.636530 21.080121 - H41 2.487648 75.930539 22.240251 - H51 2.314234 73.646897 23.191512 - H61 4.215886 72.069247 22.982644 - C1 45.851183 3.623096 46.192765 - C2 45.433219 4.266369 45.021716 - C3 45.484493 5.662620 44.933719 - C4 45.953732 6.415599 46.016771 - C5 46.370700 5.772372 47.187895 - C6 46.319426 4.376120 47.275892 - H11 45.811244 2.546247 46.260711 - H21 45.071752 3.685537 44.185823 - H31 45.162966 6.158637 44.029880 - H41 45.992675 7.492493 45.948900 - H51 46.732167 6.353204 48.023788 - H61 46.641949 3.880058 48.179656 - C1 73.527891 11.179236 52.962937 - C2 74.618123 10.772023 52.184848 - C3 75.357591 11.718915 51.466186 - C4 75.006826 13.073019 51.525613 - C5 73.916191 13.479904 52.302848 - C6 73.176723 12.533012 53.021510 - H11 72.957374 10.448839 53.516875 - H21 74.889238 9.727432 52.139390 - H31 76.199222 11.404720 50.866791 - H41 75.576940 13.803088 50.970821 - H51 73.645076 14.524495 52.348305 - H61 72.335494 12.847534 53.621760 - C1 37.323830 38.883603 13.693313 - C2 38.658498 38.860702 14.115201 - C3 39.424819 37.700763 13.950326 - C4 38.856473 36.563725 13.363564 - C5 37.521761 36.586450 12.942660 - C6 36.755439 37.746389 13.107535 - H11 36.732741 39.778119 13.820860 - H21 39.097301 39.738060 14.567348 - H31 40.454711 37.683604 14.274927 - H41 39.447517 35.669033 13.237000 - H51 37.082958 35.709092 12.490512 - H61 35.725592 37.763723 12.781950 - C1 23.555555 26.479036 40.921627 - C2 24.710725 26.568723 41.707367 - C3 25.730109 27.460780 41.353842 - C4 25.594324 28.263150 40.214575 - C5 24.439726 28.172699 39.428537 - C6 23.420341 27.280642 39.782063 - H11 22.769556 25.790729 41.194123 - H21 24.815358 25.950195 42.586694 - H31 26.620741 27.530559 41.960672 - H41 26.380894 28.950693 39.941781 - H51 24.335092 28.791227 38.549210 - H61 22.529137 27.211627 39.175530 - C1 49.407398 24.202634 19.834982 - C2 50.007977 23.471334 18.803306 - C3 51.126792 22.673379 19.070534 - C4 51.645029 22.606724 20.369439 - C5 51.045037 23.338682 21.400643 - C6 49.926221 24.136637 21.133415 - H11 48.544744 24.818348 19.628733 - H21 49.607892 23.522176 17.801264 - H31 51.589361 22.108507 18.274741 - H41 52.508270 21.991667 20.575216 - H51 51.445122 23.287839 22.402685 - H61 49.463065 24.700851 21.929680 - C1 61.659015 3.679677 1.538924 - C2 60.363337 3.876064 1.046478 - C3 59.260263 3.416784 1.775984 - C4 59.452866 2.761117 2.997937 - C5 60.748406 2.563993 3.489722 - C6 61.851480 3.023273 2.760215 - H11 62.509743 4.033578 0.976049 - H21 60.214555 4.382446 0.104043 - H31 58.260752 3.569265 1.396426 - H41 58.602000 2.406479 3.560151 - H51 60.897188 2.057612 4.432156 - H61 62.851128 2.871530 3.140436 - C1 27.051196 41.953004 4.053285 - C2 28.421824 41.678786 4.130974 - C3 28.879439 40.360676 4.016662 - C4 27.966427 39.316785 3.824661 - C5 26.596002 39.590984 3.747951 - C6 26.138386 40.909093 3.862263 - H11 26.698294 42.969582 4.141848 - H21 29.126390 42.484123 4.278485 - H31 29.936907 40.149436 4.075610 - H41 28.319532 38.300188 3.737077 - H51 25.891436 38.785646 3.600440 - H61 25.080716 41.120353 3.802335 - C1 5.679458 38.899321 47.232556 - C2 7.009196 39.043048 47.646065 - C3 7.451606 40.264262 48.168368 - C4 6.564279 41.341748 48.277162 - C5 5.235052 41.198201 47.862813 - C6 4.792642 39.976987 47.340510 - H11 5.338411 37.957544 46.829372 - H21 7.693736 38.211659 47.562762 - H31 8.477193 40.374650 48.488249 - H41 6.905837 42.283705 48.679506 - H51 4.550513 42.029589 47.946115 - H61 3.766544 39.866419 47.021468 - C1 48.492489 27.048823 27.426323 - C2 49.468124 26.370240 26.686382 - C3 49.901581 25.103491 27.095470 - C4 49.359404 24.515326 28.244500 - C5 48.384638 25.194299 28.984744 - C6 47.951181 26.461048 28.575656 - H11 48.158510 28.025976 27.110975 - H21 49.886065 26.823624 25.799528 - H31 50.653502 24.579722 26.523965 - H41 49.694252 23.538563 28.560152 - H51 47.966697 24.740915 29.871598 - H61 47.198391 26.984427 29.146858 - C1 71.266222 63.327385 72.634331 - C2 71.610829 62.156917 71.947962 - C3 72.855530 62.057501 71.314931 - C4 73.755624 63.128552 71.368270 - C5 73.410575 64.299107 72.053747 - C6 72.165874 64.398523 72.686777 - H11 70.306066 63.404142 73.122207 - H21 70.916750 61.330276 71.907245 - H31 73.121607 61.154102 70.786339 - H41 74.715338 63.051882 70.879502 - H51 74.104654 65.125749 72.094463 - H61 71.900239 65.301836 73.216262 - C1 7.433405 58.058348 40.714332 - C2 7.915685 57.705530 39.448324 - C3 8.848991 58.524503 38.801706 - C4 9.300017 59.696294 39.421097 - C5 8.817032 60.049421 40.686467 - C6 7.883726 59.230447 41.333085 - H11 6.713294 57.426867 41.212816 - H21 7.568271 56.801194 38.970599 - H31 9.221688 58.251648 37.825498 - H41 10.019423 60.328083 38.921975 - H51 9.164446 60.953757 41.164192 - H61 7.511734 59.502994 42.309932 - C1 71.405937 43.215796 30.744180 - C2 70.462199 43.679734 29.820075 - C3 70.227679 45.053684 29.689098 - C4 70.936898 45.963695 30.482227 - C5 71.879755 45.499655 31.406792 - C6 72.114275 44.125705 31.537769 - H11 71.586482 42.156094 30.845422 - H21 69.915396 42.977807 29.207665 - H31 69.500332 45.411458 28.975446 - H41 70.755472 47.023295 30.381445 - H51 72.426557 46.201582 32.019203 - H61 72.842503 43.768032 32.250961 - C1 35.009200 22.800117 46.784026 - C2 34.606749 21.459798 46.821803 - C3 35.245826 20.514047 46.011230 - C4 36.287354 20.908617 45.162880 - C5 36.689001 22.248894 45.124510 - C6 36.049924 23.194644 45.935083 - H11 34.516004 23.529552 47.408923 - H21 33.803627 21.155123 47.476716 - H31 34.935900 19.479938 46.041246 - H41 36.779746 20.179139 44.537391 - H51 37.492122 22.553568 44.469598 - H61 36.360654 24.228796 45.905660 - C1 20.081384 41.352379 26.137276 - C2 20.190521 40.514037 27.253127 - C3 19.318094 40.673508 28.336331 - C4 18.336529 41.671320 28.303684 - C5 18.228132 42.510055 27.188378 - C6 19.100560 42.350585 26.105174 - H11 20.754534 41.229587 25.302048 - H21 20.947359 39.743771 27.278196 - H31 19.401781 40.026034 29.196628 - H41 17.664119 41.794505 29.139456 - H51 17.471295 43.280321 27.163308 - H61 19.016132 42.997665 25.244332 - C1 54.371889 31.183187 51.268942 - C2 53.967791 31.972778 50.185843 - C3 54.837177 32.934933 49.658286 - C4 56.110660 33.107497 50.213827 - C5 56.514206 32.318635 51.297332 - C6 55.644820 31.356480 51.824889 - H11 53.701175 30.441406 51.676026 - H21 52.985548 31.839334 49.756738 - H31 54.525647 33.543270 48.822097 - H41 56.780822 33.850007 49.807149 - H51 57.496449 32.452079 51.726436 - H61 55.956902 30.747414 52.660672 - C1 23.896703 39.251324 44.229888 - C2 23.687467 39.563787 42.881394 - C3 24.058890 40.820301 42.388333 - C4 24.639549 41.764351 43.243767 - C5 24.847823 41.452157 44.592207 - C6 24.476400 40.195643 45.085268 - H11 23.609859 38.282352 44.610188 - H21 23.240059 38.835324 42.221159 - H31 23.898326 41.060810 41.347799 - H41 24.925431 42.733592 42.863413 - H51 25.295231 42.180619 45.252441 - H61 24.637926 39.954865 46.125856 - C1 79.056517 27.511768 44.552530 - C2 77.873312 26.782374 44.719441 - C3 76.701254 27.192409 44.072878 - C4 76.712403 28.331838 43.259403 - C5 77.895233 29.061549 43.093363 - C6 79.067290 28.651514 43.739927 - H11 79.960344 27.195696 45.051537 - H21 77.864704 25.902921 45.346521 - H31 75.788820 26.629028 44.200951 - H41 75.808200 28.648227 42.761267 - H51 77.903840 29.941002 42.466283 - H61 79.980100 29.214578 43.610983 - C1 17.043808 42.625124 62.067772 - C2 18.230564 41.883083 62.096679 - C3 18.585283 41.174964 63.251076 - C4 17.753247 41.208887 64.376566 - C5 16.567207 41.951598 64.347856 - C6 16.212488 42.659717 63.193459 - H11 16.770483 43.171559 61.177538 - H21 18.872282 41.856317 61.228219 - H31 19.500326 40.601763 63.272850 - H41 18.027288 40.663121 65.266996 - H51 15.925489 41.978364 65.216316 - H61 15.296728 43.232248 63.171488 - C1 75.514566 74.849132 44.100891 - C2 76.595478 75.551862 43.555317 - C3 77.538242 74.882919 42.765633 - C4 77.400094 73.511246 42.521521 - C5 76.319851 72.808572 43.067836 - C6 75.377087 73.477515 43.857521 - H11 74.787703 75.365040 44.710254 - H21 76.701855 76.610248 43.743056 - H31 78.371482 75.425396 42.344008 - H41 78.127626 72.995395 41.912899 - H51 76.213474 71.750187 42.880097 - H61 74.543178 72.934981 44.278404 - C1 34.328678 33.555695 71.668889 - C2 34.337273 32.417744 72.484269 - C3 33.144287 31.731561 72.740838 - C4 31.942705 32.183329 72.182027 - C5 31.934101 33.321635 71.367582 - C6 33.127087 34.007817 71.111012 - H11 35.248749 34.085097 71.471366 - H21 35.264325 32.068724 72.914967 - H31 33.151267 30.853138 73.369059 - H41 31.022625 31.654281 72.380484 - H51 31.007049 33.670655 70.936884 - H61 33.120115 34.885886 70.481857 - C1 7.626629 39.337758 63.587717 - C2 7.228440 38.072126 63.141093 - C3 8.144071 37.013152 63.131886 - C4 9.457891 37.219809 63.569303 - C5 9.856136 38.485491 64.014930 - C6 8.940505 39.544466 64.024137 - H11 6.920500 40.154551 63.594424 - H21 6.214681 37.912384 62.804172 - H31 7.836441 36.036617 62.788258 - H41 10.164076 36.403067 63.561599 - H51 10.869895 38.645233 64.351852 - H61 9.248079 40.520950 64.368763 - C1 17.112913 47.134257 70.144882 - C2 17.183235 48.295142 70.924146 - C3 16.079659 49.152903 71.003236 - C4 14.905760 48.849780 70.303064 - C5 14.835909 47.689562 69.523223 - C6 15.939486 46.831801 69.444133 - H11 17.964224 46.472948 70.083614 - H21 18.088629 48.528819 71.464883 - H31 16.133742 50.047890 71.605242 - H41 14.054921 49.511756 70.363755 - H51 13.930515 47.455885 68.982486 - H61 15.884931 45.936147 68.842703 - C1 13.416602 27.204287 52.299202 - C2 13.048021 28.539052 52.093288 - C3 14.032987 29.516551 51.908276 - C4 15.386533 29.159285 51.929179 - C5 15.754935 27.824881 52.136009 - C6 14.769970 26.847381 52.321021 - H11 12.656902 26.450497 52.442277 - H21 12.003772 28.814738 52.076521 - H31 13.748438 30.546027 51.748435 - H41 16.146055 29.913436 51.787020 - H51 16.799185 27.549195 52.152776 - H61 15.054698 25.817545 52.479947 - C1 33.690191 44.225294 46.311882 - C2 34.056261 42.875579 46.376012 - C3 35.339785 42.518196 46.805819 - C4 36.257238 43.510527 47.171498 - C5 35.891420 44.860000 47.106431 - C6 34.607896 45.217384 46.676624 - H11 32.700379 44.500877 45.980009 - H21 33.348341 42.109847 46.094507 - H31 35.621677 41.476881 46.856188 - H41 37.247302 43.234702 47.502434 - H51 36.599340 45.625732 47.387936 - H61 34.325752 46.258941 46.627192 - C1 43.389548 76.918996 60.870578 - C2 44.062829 75.744298 61.226429 - C3 43.366128 74.532010 61.296101 - C4 41.996145 74.494418 61.009923 - C5 41.322912 75.669140 60.655070 - C6 42.019613 76.881428 60.585398 - H11 43.926862 77.854016 60.817242 - H21 45.119910 75.773036 61.446647 - H31 43.885895 73.625727 61.569655 - H41 41.458879 73.559422 61.064257 - H51 40.265831 75.640402 60.434852 - H61 41.499799 77.787687 60.310846 - C1 59.306718 35.894985 72.140055 - C2 59.722014 34.962090 71.182408 - C3 59.865009 33.614563 71.533996 - C4 59.592709 33.199931 72.843231 - C5 59.178408 34.132917 73.800845 - C6 59.035413 35.480444 73.449257 - H11 59.196829 36.934324 71.868923 - H21 59.931539 35.281730 70.172125 - H31 60.184423 32.894863 70.794845 - H41 59.703593 32.160683 73.114330 - H51 58.968883 33.813278 74.811128 - H61 58.715004 36.200052 74.188441 - C1 55.185160 74.126793 42.521939 - C2 55.777331 72.890759 42.236625 - C3 57.168589 72.792544 42.115606 - C4 57.967676 73.930363 42.279900 - C5 57.375416 75.166293 42.564223 - C6 55.984158 75.264508 42.685243 - H11 54.112109 74.202548 42.614876 - H21 55.161003 72.012715 42.110453 - H31 57.625312 71.838745 41.896497 - H41 59.040638 73.854503 42.185973 - H51 57.991744 76.044337 42.690395 - H61 55.527524 76.218411 42.905342 - C1 74.984872 49.494297 24.669348 - C2 75.734250 50.561681 24.160451 - C3 75.088061 51.721126 23.715459 - C4 73.692495 51.813188 23.779364 - C5 72.943309 50.745553 24.287311 - C6 73.589498 49.586108 24.732304 - H11 75.483285 48.599942 25.012171 - H21 76.810990 50.491044 24.111658 - H31 75.666389 52.544844 23.323842 - H41 73.194274 52.707292 23.435592 - H51 71.866569 50.816190 24.336105 - H61 73.010978 48.762641 25.124869 - C1 72.873477 22.488039 13.493099 - C2 72.198615 21.321748 13.113391 - C3 72.345826 20.151134 13.866970 - C4 73.167900 20.146810 15.000258 - C5 73.843328 21.312701 15.379244 - C6 73.696116 22.483315 14.625664 - H11 72.760204 23.390743 12.911628 - H21 71.563858 21.325097 12.239427 - H31 71.824343 19.251779 13.574477 - H41 73.281739 19.243706 15.581007 - H51 74.478085 21.309352 16.253208 - H61 74.217035 23.383070 14.918879 - C1 8.765960 63.370544 25.863927 - C2 7.727392 63.551546 24.942805 - C3 7.981702 64.173350 23.714564 - C4 9.274581 64.614152 23.407445 - C5 10.312670 64.433971 24.328878 - C6 10.058360 63.812167 25.557119 - H11 8.569671 62.891318 26.811359 - H21 6.730001 63.210962 25.179356 - H31 7.180601 64.311992 23.003683 - H41 9.470391 65.094199 22.460324 - H51 11.310061 64.774555 24.092327 - H61 10.859940 63.672704 26.267689 - C1 60.276635 55.977928 56.556839 - C2 59.136701 56.186793 55.771488 - C3 58.702942 57.489896 55.500068 - C4 59.409118 58.584133 56.014000 - C5 60.548282 58.375147 56.799979 - C6 60.982041 57.072045 57.071398 - H11 60.610894 54.972869 56.766460 - H21 58.592131 55.342690 55.374404 - H31 57.824113 57.650852 54.893364 - H41 59.074089 59.589072 55.805007 - H51 61.092852 59.219250 57.197062 - H61 61.861639 56.911209 57.677475 - C1 3.671452 29.179967 13.954912 - C2 2.390966 29.133810 13.390930 - C3 2.134606 29.791379 12.181892 - C4 3.158733 30.495106 11.536836 - C5 4.438699 30.541966 12.101305 - C6 4.695059 29.884396 13.310343 - H11 3.869004 28.673118 14.887591 - H21 1.600899 28.590403 13.888167 - H31 1.146988 29.754822 11.746450 - H41 2.960661 31.002658 10.604643 - H51 5.228766 31.085372 11.604067 - H61 5.683197 29.920251 13.745298 - C1 52.117348 53.328068 48.301526 - C2 53.456738 53.564633 47.969982 - C3 54.347711 54.028482 48.945123 - C4 53.899295 54.255766 50.251810 - C5 52.559907 54.020105 50.582928 - C6 51.668934 53.556256 49.607786 - H11 51.430142 52.970695 47.549298 - H21 53.802982 53.388740 46.962054 - H31 55.381162 54.209962 48.689424 - H41 54.586503 54.614044 51.003612 - H51 52.213663 54.195998 51.590855 - H61 50.635481 53.373871 49.863912 - C1 22.935443 14.823465 38.852005 - C2 21.909098 15.272393 39.691607 - C3 21.585508 14.552559 40.847902 - C4 22.288262 13.383797 41.164596 - C5 23.313763 12.934546 40.324563 - C6 23.637354 13.654380 39.168268 - H11 23.184702 15.378475 37.960014 - H21 21.367241 16.174422 39.447729 - H31 20.794392 14.899577 41.496015 - H41 22.038160 12.828464 42.056156 - H51 23.855620 12.032517 40.568441 - H61 24.429313 13.307684 38.520585 - C1 56.826285 57.861019 51.199287 - C2 56.125181 59.066071 51.072190 - C3 56.585652 60.215868 51.724743 - C4 57.747227 60.160613 52.504393 - C5 58.447583 58.955492 52.632149 - C6 57.987112 57.805696 51.979597 - H11 56.470873 56.974175 50.696292 - H21 55.229342 59.109001 50.470218 - H31 56.045226 61.145642 51.625766 - H41 58.101891 61.047388 53.008047 - H51 59.343422 58.912562 53.234121 - H61 58.528287 56.875990 52.077914 - C1 21.581643 72.615201 64.678678 - C2 22.305461 71.451879 64.966116 - C3 21.670740 70.204729 64.925667 - C4 20.312202 70.120900 64.597781 - C5 19.588405 71.284173 64.311342 - C6 20.223126 72.531324 64.351790 - H11 22.071142 73.577078 64.710274 - H21 23.353740 71.516340 65.218498 - H31 22.229521 69.307313 65.146453 - H41 19.822724 69.158975 64.567183 - H51 18.540126 71.219713 64.058960 - H61 19.664324 73.428789 64.130006 - C1 65.155266 75.432847 30.522010 - C2 63.826655 75.026676 30.349763 - C3 63.426454 73.749456 30.760176 - C4 64.354864 72.878406 31.342835 - C5 65.683418 73.284283 31.514128 - C6 66.083619 74.561503 31.103716 - H11 65.463947 76.417781 30.205098 - H21 63.110124 75.698813 29.900814 - H31 62.401241 73.436658 30.628140 - H41 64.046126 71.893177 31.658794 - H51 66.399950 72.612145 31.963077 - H61 67.108889 74.874594 31.236706 - C1 55.984562 51.276022 4.708160 - C2 55.660427 50.270576 5.626780 - C3 54.390064 49.682830 5.601821 - C4 53.443836 50.100530 4.658242 - C5 53.767724 51.106465 3.740458 - C6 55.038087 51.694211 3.765417 - H11 56.964225 51.729557 4.727717 - H21 56.390553 49.947781 6.354420 - H31 54.140528 48.906500 6.309904 - H41 52.463926 49.647483 4.639522 - H51 53.037598 51.429260 3.012818 - H61 55.287870 52.470053 3.056497 - C1 10.296562 30.314499 35.211973 - C2 9.140980 31.069149 35.446462 - C3 8.012603 30.463793 36.012325 - C4 8.039808 29.103787 36.343699 - C5 9.194922 28.349172 36.108327 - C6 10.323299 28.954528 35.542464 - H11 11.166662 30.781355 34.775184 - H21 9.120050 32.118558 35.191426 - H31 7.121573 31.046346 36.194078 - H41 7.169240 28.636966 36.779605 - H51 9.215852 27.299763 36.363364 - H61 11.214797 28.371940 35.361595 - C1 45.117477 39.658047 76.319698 - C2 43.908931 40.065850 76.896729 - C3 43.622869 41.429602 77.031780 - C4 44.545353 42.385552 76.589799 - C5 45.754053 41.977689 76.013754 - C6 46.040114 40.613936 75.878704 - H11 45.338211 38.606229 76.215926 - H21 43.196860 39.328441 77.237206 - H31 42.690063 41.744012 77.476028 - H41 44.324772 43.437310 76.694557 - H51 46.466124 42.715097 75.673277 - H61 46.972767 40.299587 75.433469 - C1 39.963799 51.541199 31.322601 - C2 40.349847 52.873667 31.510611 - C3 39.609215 53.906416 30.923428 - C4 38.482534 53.606698 30.148235 - C5 38.097216 52.274382 29.959559 - C6 38.837849 51.241633 30.546742 - H11 40.535288 50.744712 31.775174 - H21 41.218710 53.105089 32.109161 - H31 39.906588 54.934325 31.069404 - H41 37.911775 54.403336 29.694995 - H51 37.228354 52.042960 29.361009 - H61 38.539745 50.213572 30.401431 - C1 43.534580 70.667586 11.483116 - C2 42.975412 71.108369 12.688476 - C3 41.585296 71.114874 12.854081 - C4 40.754347 70.680596 11.814325 - C5 41.313507 70.240811 10.608894 - C6 42.703623 70.234305 10.443290 - H11 44.606709 70.662963 11.355317 - H21 43.616393 71.442866 13.490970 - H31 41.154147 71.453994 13.784374 - H41 39.682210 70.686216 11.942053 - H51 40.672526 69.906313 9.806400 - H61 43.134780 69.894187 9.513068 - C1 58.592924 60.580112 67.040904 - C2 58.684167 61.879185 66.527157 - C3 57.709397 62.830197 66.851645 - C4 56.643386 62.482136 67.689879 - C5 56.551767 61.183000 68.202701 - C6 57.526536 60.231988 67.878213 - H11 59.344543 59.846577 66.790286 - H21 59.506880 62.148037 65.880936 - H31 57.780492 63.832584 66.456041 - H41 55.891391 63.215608 67.939572 - H51 55.729054 60.914148 68.848922 - H61 57.455818 59.229664 68.274741 - C1 53.182985 2.454441 51.343689 - C2 52.422358 2.069483 50.233236 - C3 52.568529 2.745912 49.016285 - C4 53.475326 3.807298 48.909786 - C5 54.235065 4.192696 50.020371 - C6 54.088895 3.516268 51.237322 - H11 53.069918 1.932953 52.282347 - H21 51.723163 1.250234 50.315080 - H31 51.982401 2.448151 48.159471 - H41 53.587505 4.329227 47.971261 - H51 54.934260 5.011945 49.938527 - H61 54.675910 3.813588 52.094004 - C1 3.518979 21.966275 71.227745 - C2 2.335427 21.270144 71.500616 - C3 2.030111 20.103216 70.790015 - C4 2.908347 19.632419 69.806544 - C5 4.091190 20.329039 69.533164 - C6 4.396506 21.495967 70.243765 - H11 3.754206 22.866484 71.775564 - H21 1.658061 21.632908 72.259772 - H31 1.117518 19.565771 71.001353 - H41 2.672412 18.732699 69.258216 - H51 4.768556 19.966275 68.774008 - H61 5.309808 22.032923 70.032936 - C1 62.145134 3.247417 26.873133 - C2 61.349722 4.363647 27.158091 - C3 61.907125 5.647395 27.123686 - C4 63.259940 5.814914 26.804324 - C5 64.055322 4.698729 26.520366 - C6 63.497919 3.414981 26.554770 - H11 61.715265 2.257316 26.900069 - H21 60.305849 4.234611 27.403895 - H31 61.293121 6.508460 27.342555 - H41 63.689779 6.805060 26.778388 - H51 65.099195 4.827765 26.274561 - H61 64.111953 2.553870 26.334902 - C1 49.983759 12.940995 75.889237 - C2 48.977954 13.759544 76.416670 - C3 48.541440 13.571652 77.733500 - C4 49.110730 12.565211 78.522898 - C5 50.115680 11.746266 77.995131 - C6 50.552195 11.934158 76.678301 - H11 50.320104 13.085707 74.873489 - H21 48.539079 14.536465 75.807963 - H31 47.766220 14.203862 78.140542 - H41 48.773530 12.420104 79.538312 - H51 50.554555 10.969345 78.603838 - H61 51.328269 11.302345 76.271594 - C1 70.351832 66.093737 52.522323 - C2 69.026204 66.540922 52.471447 - C3 68.136221 65.988050 51.542925 - C4 68.571866 64.987993 50.665278 - C5 69.897527 64.541649 50.715613 - C6 70.787510 65.094522 51.644136 - H11 71.038288 66.520462 53.238212 - H21 68.689792 67.312033 53.148911 - H31 67.113353 66.332436 51.504499 - H41 67.885443 64.562109 49.948848 - H51 70.233939 63.770539 50.038150 - H61 71.810344 64.749295 51.683102 - C1 54.138628 4.659273 74.520466 - C2 55.520840 4.457795 74.614000 - C3 56.387917 5.145051 73.756242 - C4 55.872782 6.033783 72.804951 - C5 54.490742 6.234418 72.710907 - C6 53.623665 5.547162 73.568665 - H11 53.469920 4.128896 75.181786 - H21 55.918458 3.772627 75.348292 - H31 57.454243 4.990259 73.829214 - H41 56.541662 6.563317 72.143121 - H51 54.093124 6.919586 71.976615 - H61 52.557167 5.702797 73.496203 - C1 56.534195 23.817034 73.062111 - C2 57.520639 23.203453 73.843326 - C3 57.561618 21.808154 73.949873 - C4 56.616153 21.026436 73.275205 - C5 55.629365 21.640074 72.494927 - C6 55.588387 23.035373 72.388380 - H11 56.502408 24.893189 72.980293 - H21 58.250517 23.806396 74.363401 - H31 58.323283 21.334942 74.551766 - H41 56.647596 19.950337 73.357960 - H51 54.899488 21.037130 71.974852 - H61 54.827065 23.508528 71.785550 - C1 41.610132 28.580710 16.064269 - C2 42.109452 28.258162 14.796794 - C3 41.923708 29.140671 13.726015 - C4 41.238643 30.345727 13.922710 - C5 40.738641 30.667660 15.189790 - C6 40.924385 29.785151 16.260569 - H11 41.753082 27.899846 16.889983 - H21 42.638543 27.328770 14.645029 - H31 42.309849 28.892142 12.748535 - H41 41.095011 31.025976 13.096601 - H51 40.209550 31.597053 15.341556 - H61 40.538926 30.034295 17.238444 - C1 16.795976 43.987244 49.696822 - C2 16.915044 45.357079 49.433719 - C3 15.766676 46.147048 49.302990 - C4 14.499239 45.567182 49.435365 - C5 14.380318 44.197405 49.697481 - C6 15.528687 43.407436 49.828210 - H11 17.681696 43.377958 49.797248 - H21 17.892826 45.804710 49.332176 - H31 15.858737 47.203964 49.101022 - H41 13.613666 46.176526 49.333952 - H51 13.402537 43.749775 49.799023 - H61 15.436478 42.350461 50.031165 - C1 58.338681 72.086677 7.271152 - C2 59.069924 73.162959 7.787633 - C3 58.440257 74.108509 8.605768 - C4 57.079347 73.977778 8.907423 - C5 56.348133 72.902166 8.390200 - C6 56.977800 71.956616 7.572065 - H11 58.824285 71.357666 6.639848 - H21 60.120029 73.263612 7.555493 - H31 59.004758 74.938174 9.004933 - H41 56.593772 74.707458 9.537985 - H51 55.298028 72.801512 8.622340 - H61 56.413269 71.126281 7.173643 - C1 43.045756 68.319042 22.269155 - C2 41.907367 67.512822 22.387178 - C3 41.558511 66.972133 23.630499 - C4 42.348044 67.237665 24.755796 - C5 43.486727 68.042980 24.637467 - C6 43.835583 68.583669 23.394146 - H11 43.314975 68.735700 21.310128 - H21 41.297793 67.308377 21.519213 - H31 40.679718 66.351031 23.721560 - H41 42.079119 66.820102 25.714517 - H51 44.096301 68.247425 25.505432 - H61 44.714082 69.205677 23.303391 - C1 21.213559 33.883823 61.501741 - C2 20.275195 32.849207 61.407442 - C3 18.910673 33.126554 61.552524 - C4 18.484515 34.438519 61.791906 - C5 19.422882 35.472703 61.887107 - C6 20.787404 35.195355 61.742025 - H11 22.265969 33.669787 61.390225 - H21 20.603783 31.837062 61.222146 - H31 18.186851 32.328447 61.478745 - H41 17.432108 34.652123 61.904324 - H51 19.094294 36.484848 62.072403 - H61 21.511222 35.993895 61.814902 - C1 65.264675 37.288792 36.083919 - C2 64.770985 37.130963 34.783453 - C3 65.297241 36.135981 33.951014 - C4 66.317187 35.298827 34.419040 - C5 66.811350 35.457352 35.718966 - C6 66.285094 36.452335 36.551405 - H11 64.859022 38.056454 36.725757 - H21 63.983664 37.776357 34.422437 - H31 64.915572 36.013713 32.948160 - H41 66.723313 34.531862 33.776662 - H51 67.598672 34.811958 36.079982 - H61 66.666290 36.573907 37.554799 - C1 54.507362 10.074095 72.273031 - C2 53.150855 9.941015 72.592450 - C3 52.406443 11.065889 72.967151 - C4 53.018538 12.323842 73.022434 - C5 54.375036 12.456606 72.703964 - C6 55.119447 11.331732 72.329263 - H11 55.081532 9.206426 71.984427 - H21 52.678330 8.970657 72.549248 - H31 51.359748 10.963200 73.212554 - H41 52.444358 13.191195 73.311988 - H51 54.847560 13.426964 72.747166 - H61 56.166152 11.434737 72.082912 - C1 29.793443 57.227241 19.838026 - C2 30.107213 57.044695 21.190090 - C3 30.092773 58.137030 22.065582 - C4 29.764563 59.411911 21.589010 - C5 29.451792 59.594450 20.236979 - C6 29.466233 58.502115 19.361487 - H11 29.804981 56.384796 19.162772 - H21 30.359850 56.061065 21.558040 - H31 30.333872 57.995844 23.108786 - H41 29.754025 60.254349 22.264297 - H51 29.199156 60.578081 19.869029 - H61 29.224134 58.643308 18.318250 - C1 37.762172 41.730901 21.220463 - C2 36.729165 40.797386 21.366395 - C3 35.396681 41.198258 21.212516 - C4 35.097204 42.532647 20.912706 - C5 36.130070 43.466088 20.767762 - C6 37.462554 43.065216 20.921641 - H11 38.789817 41.421742 21.339542 - H21 36.960090 39.767729 21.597092 - H31 34.599961 40.477761 21.324134 - H41 34.069418 42.841733 20.794615 - H51 35.899144 44.495745 20.537065 - H61 38.259415 43.785787 20.809035 - C1 26.521756 47.088030 36.367133 - C2 26.993868 47.491802 37.621697 - C3 27.939722 46.711917 38.297738 - C4 28.413464 45.528260 37.719215 - C5 27.940651 45.124188 36.465298 - C6 26.994797 45.904073 35.789257 - H11 25.791969 47.689365 35.845961 - H21 26.628923 48.405297 38.067884 - H31 28.304564 47.024077 39.265097 - H41 29.142549 44.926625 38.241034 - H51 28.305596 44.210693 36.019111 - H61 26.630657 45.592213 34.821252 - C1 3.663369 21.089868 24.012437 - C2 2.369602 20.917828 24.518817 - C3 1.780846 19.647688 24.517951 - C4 2.485857 18.549587 24.010705 - C5 3.779018 18.721903 23.503580 - C6 4.367774 19.992044 23.504446 - H11 4.117242 22.069569 24.012776 - H21 1.825792 21.764819 24.910760 - H31 0.783163 19.514977 24.909556 - H41 2.031378 17.570163 24.009621 - H51 4.322828 17.874913 23.111637 - H61 5.366063 20.124478 23.113587 - C1 70.094324 70.656792 57.622892 - C2 71.396103 70.593928 58.134040 - C3 72.012423 71.751656 58.623637 - C4 71.326965 72.972249 58.602087 - C5 70.025779 73.035144 58.090134 - C6 69.409459 71.877416 57.600537 - H11 69.619187 69.763925 57.244943 - H21 71.924837 69.652183 58.151298 - H31 73.016295 71.702779 59.018845 - H41 71.802695 73.865147 58.979231 - H51 69.497045 73.976889 58.072876 - H61 68.404994 71.926262 57.206134 - C1 34.335726 62.826794 41.019752 - C2 35.433813 63.109271 41.840887 - C3 36.396583 62.122903 42.085925 - C4 36.261266 60.854059 41.509828 - C5 35.162836 60.571473 40.689627 - C6 34.200066 61.557840 40.444589 - H11 33.593015 63.587461 40.831122 - H21 35.538669 64.088341 42.284923 - H31 37.244150 62.341307 42.718591 - H41 37.003634 60.093283 41.699392 - H51 35.057980 59.592403 40.245591 - H61 33.352841 61.339546 39.810989 - C1 30.259121 64.050060 70.477872 - C2 30.286607 64.683049 71.726239 - C3 31.493476 65.180114 72.232484 - C4 32.672859 65.044190 71.490363 - C5 32.645407 64.410455 70.242661 - C6 31.438538 63.913389 69.736415 - H11 29.328352 63.666370 70.087660 - H21 29.376673 64.788537 72.298632 - H31 31.514311 65.669292 73.195089 - H41 33.603662 65.427134 71.881239 - H51 33.555341 64.304967 69.670268 - H61 31.417669 63.424958 68.773146 - C1 61.521735 55.010091 47.119708 - C2 62.759080 55.334009 46.550581 - C3 63.435394 54.393719 45.764232 - C4 62.874363 53.129511 45.547010 - C5 61.637683 52.805450 46.116870 - C6 60.961368 53.745740 46.903219 - H11 61.000360 55.735205 47.726496 - H21 63.191756 56.309533 46.717574 - H31 64.389445 54.644128 45.324437 - H41 63.396403 52.404254 44.940955 - H51 61.205007 51.829926 45.949877 - H61 60.006653 53.495473 47.342280 - C1 50.469199 44.047652 22.609309 - C2 49.926061 42.937325 21.952022 - C3 48.765534 42.330022 22.446240 - C4 48.148146 42.833045 23.597745 - C5 48.691823 43.942593 24.255355 - C6 49.852349 44.549897 23.761137 - H11 51.364485 44.515751 22.228311 - H21 50.401922 42.549504 21.063264 - H31 48.346109 41.474101 21.938480 - H41 47.253398 42.364168 23.979066 - H51 48.215961 44.330415 25.144113 - H61 50.271236 45.406595 24.268574 - C1 30.257340 16.416614 14.689523 - C2 29.094136 17.183039 14.550239 - C3 29.126382 18.557935 14.811984 - C4 30.321832 19.166407 15.213014 - C5 31.484530 18.399837 15.353149 - C6 31.452285 17.024941 15.091404 - H11 30.232310 15.356151 14.488013 - H21 28.171905 16.713847 14.240253 - H31 28.229182 19.149206 14.703509 - H41 30.346357 20.226725 15.415375 - H51 32.406761 18.869029 15.663135 - H61 32.349991 16.433814 15.199029 - C1 14.457869 48.395322 22.298637 - C2 14.553331 47.546101 23.407493 - C3 13.402939 46.939210 23.925345 - C4 12.157084 47.181539 23.334342 - C5 12.061648 48.031373 22.226277 - C6 13.212040 48.638264 21.708424 - H11 15.345101 48.863668 21.899531 - H21 15.514536 47.358560 23.863184 - H31 13.476912 46.283323 24.780143 - H41 11.269878 46.713806 23.734238 - H51 11.100443 48.218914 21.770585 - H61 13.138041 49.293539 20.852837 - C1 38.174289 56.463321 43.601197 - C2 39.067526 57.452714 43.173319 - C3 38.849699 58.790762 43.522705 - C4 37.738634 59.139417 44.299969 - C5 36.845121 58.150229 44.726907 - C6 37.062948 56.812182 44.377521 - H11 38.342134 55.431414 43.331366 - H21 39.925104 57.183796 42.574166 - H31 39.539431 59.553752 43.193382 - H41 37.570513 60.171530 44.568860 - H51 35.987543 58.419147 45.326060 - H61 36.373492 56.048986 44.707783 - C1 13.169277 41.853304 26.248255 - C2 13.606472 43.117342 25.834833 - C3 14.885614 43.270875 25.287007 - C4 15.727561 42.160368 25.152602 - C5 15.290676 40.896780 25.566861 - C6 14.011534 40.743248 26.114687 - H11 12.182865 41.735028 26.671122 - H21 12.956784 43.974095 25.937897 - H31 15.222338 44.245903 24.967203 - H41 16.714283 42.279095 24.730572 - H51 15.940364 40.040028 25.463797 - H61 13.674500 39.767769 26.433654 - C1 42.900912 16.236991 40.244785 - C2 44.273213 16.024123 40.421780 - C3 44.721248 14.917136 41.152351 - C4 43.796982 14.023017 41.705929 - C5 42.424937 14.236484 41.529693 - C6 41.976902 15.343471 40.799121 - H11 42.555420 17.090997 39.681647 - H21 44.986427 16.713518 39.994227 - H31 45.779954 14.752525 41.287937 - H41 44.142730 13.169610 42.269825 - H51 41.711724 13.547088 41.957245 - H61 40.917940 15.507482 40.662777 - C1 44.128554 39.642266 39.156689 - C2 43.374796 40.552777 39.906802 - C3 44.000197 41.652060 40.507087 - C4 45.379357 41.840832 40.357259 - C5 46.133016 40.929893 39.608045 - C6 45.507615 39.830610 39.007760 - H11 43.646212 38.794244 38.694068 - H21 42.310652 40.407608 40.021971 - H31 43.418395 42.354912 41.084878 - H41 45.861600 42.688426 40.820779 - H51 47.197160 41.075063 39.492876 - H61 46.089516 39.128186 38.429071 - C1 12.198502 50.519004 66.525659 - C2 12.772554 51.199415 65.445216 - C3 14.164851 51.306515 65.345566 - C4 14.983096 50.733203 66.326359 - C5 14.408992 50.053759 67.407050 - C6 13.016695 49.946659 67.506700 - H11 11.124666 50.436776 66.602660 - H21 12.141417 51.641251 64.688124 - H31 14.607550 51.830578 64.511473 - H41 16.056880 50.816398 66.249607 - H51 15.040129 49.611924 68.164143 - H61 12.574048 49.421629 68.340545 - C1 41.976441 43.629626 38.246569 - C2 43.349383 43.762171 38.007171 - C3 44.173068 44.359295 38.968877 - C4 43.623811 44.823873 40.169980 - C5 42.250951 44.692144 40.408806 - C6 41.427266 44.095020 39.447100 - H11 41.341162 43.169434 37.504640 - H21 43.773383 43.403237 37.080818 - H31 45.232347 44.460552 38.784452 - H41 44.259173 45.284881 40.911338 - H51 41.826951 45.051078 41.335159 - H61 40.367904 43.992946 39.632096 - C1 33.399640 53.402375 14.325407 - C2 32.095265 52.901287 14.411247 - C3 31.622685 52.009869 13.440715 - C4 32.454480 51.619538 12.384342 - C5 33.758278 52.121345 12.298115 - C6 34.230858 53.012763 13.268647 - H11 33.763926 54.090187 15.073753 - H21 31.453618 53.201860 15.226530 - H31 30.616752 51.622629 13.507651 - H41 32.089616 50.932445 11.635609 - H51 34.399924 51.820772 11.482832 - H61 35.237368 53.399284 13.202098 - C1 31.604879 60.065236 53.043048 - C2 30.497332 59.371372 53.544789 - C3 29.621929 60.001810 54.437038 - C4 29.854073 61.326113 54.827546 - C5 30.961981 62.019426 54.326556 - C6 31.837384 61.388988 53.434307 - H11 32.280217 59.578820 52.355202 - H21 30.317759 58.349858 53.243121 - H31 28.767018 59.466712 54.823216 - H41 29.179096 61.811978 55.516143 - H51 31.141554 63.040940 54.628224 - H61 32.691934 61.924636 53.047377 - C1 21.557257 19.182298 43.906479 - C2 20.906102 20.305437 44.430319 - C3 19.695596 20.735513 43.873901 - C4 19.136245 20.042451 42.793644 - C5 19.787864 18.920095 42.269388 - C6 20.998370 18.490019 42.825806 - H11 22.491062 18.850885 44.335416 - H21 21.337212 20.839876 45.264141 - H31 19.192900 21.601366 44.278787 - H41 18.202903 20.374647 42.364292 - H51 19.356753 18.385655 41.435566 - H61 21.500601 17.623383 42.421336 - C1 47.281679 17.985834 63.256937 - C2 48.596896 18.312349 63.608282 - C3 49.587380 17.322989 63.608649 - C4 49.262647 16.007114 63.257671 - C5 47.947436 15.680598 62.907326 - C6 46.956952 16.669958 62.906960 - H11 46.517729 18.748851 63.257053 - H21 48.847709 19.327642 63.878492 - H31 50.602142 17.575266 63.878743 - H41 50.026602 15.244097 63.258555 - H51 47.696623 14.665305 62.637117 - H61 45.942183 16.417682 62.635866 - C1 39.540343 48.434226 41.302974 - C2 40.287495 49.212786 40.411089 - C3 41.686059 49.154203 40.432999 - C4 42.337469 48.317060 41.346792 - C5 41.590353 47.539406 42.239096 - C6 40.191790 47.597989 42.217187 - H11 38.461704 48.479750 41.286287 - H21 39.785054 49.858234 39.705617 - H31 42.262256 49.754127 39.744213 - H41 43.416145 48.272443 41.363899 - H51 42.092795 46.893959 42.944568 - H61 39.615556 46.997159 42.905553 - C1 56.163218 27.753557 53.631537 - C2 56.685938 28.860115 54.311348 - C3 58.059617 28.937792 54.569928 - C4 58.910576 27.908910 54.148697 - C5 58.387689 26.802160 53.469854 - C6 57.014010 26.724483 53.211274 - H11 55.103695 27.693525 53.432483 - H21 56.029626 29.654278 54.635850 - H31 58.462827 29.791986 55.093484 - H41 59.969932 27.968751 54.348719 - H51 59.044002 26.007998 53.145352 - H61 56.610967 25.870481 52.686750 - C1 4.836105 75.922636 71.000881 - C2 4.859251 77.135022 71.700478 - C3 4.543973 78.329359 71.041654 - C4 4.205550 78.311310 69.683233 - C5 4.183367 77.099193 68.983651 - C6 4.498645 75.904856 69.642476 - H11 5.079657 75.001580 71.508968 - H21 5.119729 77.149029 72.748665 - H31 4.560900 79.264422 71.581754 - H41 3.962961 79.232635 69.175161 - H51 3.922889 77.085186 67.935464 - H61 4.480755 74.969524 69.102360 - C1 33.924233 24.241700 62.107512 - C2 34.342948 25.402466 62.768687 - C3 35.022642 26.402927 62.063716 - C4 35.283622 26.242622 60.697569 - C5 34.865762 25.081600 60.036846 - C6 34.186068 24.081139 60.741817 - H11 33.400364 23.469954 62.651372 - H21 34.141129 25.526557 63.822543 - H31 35.344692 27.298764 62.573712 - H41 35.808346 27.014112 60.154161 - H51 35.067581 24.957509 58.982990 - H61 33.863163 23.185558 60.231370 - C1 16.890544 65.991037 20.983917 - C2 17.087044 64.947744 20.071350 - C3 17.702061 65.201817 18.839648 - C4 18.120580 66.499183 18.520512 - C5 17.923201 67.542374 19.432614 - C6 17.308184 67.288301 20.664316 - H11 16.415848 65.795087 21.933697 - H21 16.764763 63.946645 20.317679 - H31 17.854476 64.396669 18.136197 - H41 18.594397 66.695031 17.570267 - H51 18.245483 68.543472 19.186285 - H61 17.156648 68.093551 21.368233 - C1 45.344571 46.394896 60.820699 - C2 44.367407 47.292617 61.266904 - C3 44.742853 48.549051 61.757114 - C4 46.095463 48.907763 61.801119 - C5 47.072414 48.009748 61.355845 - C6 46.696968 46.753315 60.865635 - H11 45.054966 45.425730 60.442997 - H21 43.323773 47.016245 61.232442 - H31 43.988825 49.241846 62.100353 - H41 46.384856 49.876636 62.179752 - H51 48.116048 48.286120 61.390308 - H61 47.451209 46.060814 60.521464 - C1 70.490598 60.900385 16.952376 - C2 71.683631 61.291560 16.333098 - C3 71.757441 61.360661 14.936793 - C4 70.638217 61.038587 14.159766 - C5 69.445747 60.646587 14.779028 - C6 69.371937 60.577486 16.175333 - H11 70.433857 60.846734 18.029277 - H21 72.547020 61.540666 16.932469 - H31 72.677571 61.663418 14.459263 - H41 70.695521 61.091412 13.082849 - H51 68.582358 60.397480 14.179657 - H61 68.451244 60.275554 16.652879 - C1 30.918878 44.032873 64.181918 - C2 30.040047 43.302916 63.372801 - C3 28.829801 43.873800 62.961356 - C4 28.498386 45.174640 63.359029 - C5 29.376717 45.904005 64.168779 - C6 30.586963 45.333121 64.580223 - H11 31.852095 43.592372 64.499534 - H21 30.295880 42.299523 63.065405 - H31 28.152417 43.310907 62.336344 - H41 27.564669 45.614549 63.042045 - H51 29.120884 46.907398 64.476174 - H61 31.264847 45.896605 65.204603 - C1 21.021822 50.162047 5.303626 - C2 20.405023 51.379978 5.613551 - C3 21.128920 52.574658 5.520787 - C4 22.469616 52.551406 5.118097 - C5 23.086452 51.333535 4.809169 - C6 22.362556 50.138855 4.901934 - H11 20.463567 49.240641 5.375569 - H21 19.370495 51.398137 5.923651 - H31 20.652647 53.514223 5.758943 - H41 23.027909 53.472872 5.047151 - H51 24.120981 51.315376 4.499070 - H61 22.838791 49.199230 4.662780 - C1 28.399572 27.457107 24.347976 - C2 27.977747 28.179488 23.225443 - C3 27.724725 29.552331 23.331148 - C4 27.893528 30.202792 24.559386 - C5 28.314369 29.480240 25.681859 - C6 28.567392 28.107397 25.576154 - H11 28.594323 26.398219 24.266473 - H21 27.848064 27.677909 22.277634 - H31 27.400290 30.109639 22.464842 - H41 27.697794 31.261509 24.640828 - H51 28.444053 29.981819 26.629668 - H61 28.892810 27.550260 26.442520 - C1 2.534110 6.580821 55.321587 - C2 3.871401 6.560078 55.735197 - C3 4.893177 6.817045 54.813333 - C4 4.577661 7.094755 53.477859 - C5 3.240623 7.114531 53.064252 - C6 2.218847 6.857563 53.986116 - H11 1.746128 6.382239 56.032547 - H21 4.114947 6.346445 56.765628 - H31 5.924704 6.801994 55.132804 - H41 5.365896 7.292370 52.766902 - H51 2.997077 7.328164 52.033821 - H61 1.187067 6.873582 53.666642 - C1 3.802660 8.599062 58.517529 - C2 5.056441 8.667233 59.136589 - C3 6.115022 9.328497 58.502533 - C4 5.919822 9.921591 57.249417 - C5 4.666474 9.852542 56.630154 - C6 3.607894 9.191278 57.264210 - H11 2.986371 8.088705 59.006427 - H21 5.207026 8.210235 60.103656 - H31 7.081896 9.381857 58.980702 - H41 6.736545 10.431071 56.760317 - H51 4.515890 10.309540 55.663087 - H61 2.640586 9.138796 56.786243 - C1 58.216416 73.808730 68.566555 - C2 58.650855 72.893950 69.533143 - C3 57.738845 72.359804 70.451193 - C4 56.392395 72.740438 70.402655 - C5 55.958350 73.655780 69.436795 - C6 56.870361 74.189927 68.518745 - H11 58.919937 74.220954 67.858782 - H21 59.689503 72.599724 69.570322 - H31 58.073971 71.653354 71.196146 - H41 55.689268 72.328776 71.111156 - H51 54.919702 73.950007 69.399615 - H61 56.534840 74.895815 67.773065 - C1 49.579213 74.198356 75.612850 - C2 49.670263 74.538754 74.257974 - C3 50.905191 74.474566 73.601679 - C4 52.049070 74.069980 74.300261 - C5 51.958071 73.730580 75.655127 - C6 50.723143 73.794768 76.311421 - H11 48.626808 74.248259 76.119061 - H21 48.787723 74.850322 73.718724 - H31 50.975057 74.736231 72.556219 - H41 53.001526 74.021075 73.794040 - H51 52.840611 73.419012 76.194377 - H61 50.653225 73.532104 77.356892 - C1 35.774794 37.238951 6.309901 - C2 37.096493 36.941091 5.957421 - C3 38.118277 37.856877 6.235240 - C4 37.818362 39.070524 6.865540 - C5 36.496728 39.368614 7.217049 - C6 35.474944 38.452828 6.939229 - H11 34.986729 36.532770 6.095249 - H21 37.328122 36.004526 5.471690 - H31 39.137971 37.626493 5.964161 - H41 38.606492 39.776935 7.079221 - H51 36.265099 40.305179 7.702780 - H61 34.455185 38.682982 7.211279 - C1 53.363427 63.852088 26.607486 - C2 52.858849 62.921812 27.523913 - C3 53.736762 62.177700 28.321069 - C4 55.119253 62.363865 28.201798 - C5 55.623639 63.293325 27.284828 - C6 54.745726 64.037436 26.487672 - H11 52.686290 64.425675 25.992428 - H21 51.792248 62.778517 27.616480 - H31 53.347298 61.460818 29.028695 - H41 55.796199 61.789461 28.816313 - H51 56.690241 63.436620 27.192261 - H61 55.135382 64.755136 25.780589 - C1 39.272952 57.007287 77.920404 - C2 40.634983 57.194215 78.184566 - C3 41.340371 56.242230 78.930251 - C4 40.683727 55.103319 79.411773 - C5 39.321723 54.917015 79.148392 - C6 38.616336 55.869000 78.402707 - H11 38.728886 57.741743 77.345617 - H21 41.141868 58.072541 77.812610 - H31 42.391322 56.386101 79.133082 - H41 41.227820 54.369487 79.987341 - H51 38.814839 54.038689 79.520348 - H61 37.565358 55.724505 78.199095 - C1 22.767189 68.938635 36.216157 - C2 22.244204 69.253675 34.956360 - C3 20.911521 69.664824 34.834684 - C4 20.101824 69.760931 35.972803 - C5 20.624568 69.445009 37.232194 - C6 21.957251 69.033861 37.353871 - H11 23.794925 68.621164 36.309882 - H21 22.868947 69.180168 34.078275 - H31 20.508528 69.908786 33.862873 - H41 19.073847 70.077520 35.878672 - H51 19.999825 69.518517 38.110279 - H61 22.360484 68.790780 38.326087 - C1 47.939961 58.668974 22.283362 - C2 48.851264 59.321315 21.444418 - C3 50.203800 59.389997 21.799132 - C4 50.645031 58.806337 22.992790 - C5 49.733627 58.154967 23.831952 - C6 48.381091 58.086285 23.477238 - H11 46.896756 58.616379 22.009918 - H21 48.511104 59.771126 20.523167 - H31 50.906844 59.892403 21.151325 - H41 51.688135 58.859903 23.266451 - H51 50.073787 57.705156 24.753202 - H61 47.678148 57.582908 24.124827 - C1 7.514701 67.860694 75.334604 - C2 6.598187 67.610485 76.362829 - C3 5.642099 66.598271 76.217195 - C4 5.602526 65.836266 75.043335 - C5 6.518324 66.087162 74.014988 - C6 7.474412 67.099376 74.160622 - H11 8.251813 68.641646 75.446829 - H21 6.628990 68.197887 77.268782 - H31 4.935790 66.404721 77.010923 - H41 4.864698 65.056001 74.930988 - H51 6.487521 65.499760 73.109035 - H61 8.181437 67.292239 73.367016 - C1 69.731390 58.191733 10.643892 - C2 69.602137 56.847823 10.273691 - C3 70.724974 56.011690 10.270367 - C4 71.977063 56.519468 10.637244 - C5 72.106324 57.863386 11.006446 - C6 70.983487 58.699518 11.009770 - H11 68.865425 58.836648 10.646058 - H21 68.636093 56.455772 9.991210 - H31 70.624893 54.974724 9.985721 - H41 72.843036 55.874560 10.634079 - H51 73.072368 58.255436 11.288926 - H61 71.083559 59.736477 11.295416 - C1 12.640894 53.229744 18.969565 - C2 12.937187 52.153887 19.814902 - C3 13.881674 52.306354 20.836953 - C4 14.529868 53.534678 21.013668 - C5 14.234229 54.609978 20.167818 - C6 13.289741 54.457511 19.145767 - H11 11.912728 53.111970 18.181074 - H21 12.436730 51.206346 19.679076 - H31 14.109382 51.476587 21.489619 - H41 15.258687 53.651896 21.801646 - H51 14.734686 55.557520 20.303644 - H61 13.061380 55.287835 18.493615 - C1 69.115319 47.330280 11.470295 - C2 69.757526 46.307938 12.178983 - C3 70.933427 46.579943 12.888321 - C4 71.467121 47.874291 12.888972 - C5 70.825447 48.896141 12.179598 - C6 69.649547 48.624135 11.470259 - H11 68.208615 47.120338 10.922914 - H21 69.345560 45.309427 12.179078 - H31 71.428164 45.791374 13.435798 - H41 72.374359 48.083741 13.435667 - H51 71.237414 49.894652 12.179502 - H61 69.154275 49.413196 10.923470 - C1 48.159230 19.424629 37.180055 - C2 47.499103 19.084035 38.366680 - C3 47.745988 17.847447 38.974783 - C4 48.652999 16.951453 38.396261 - C5 49.312228 17.291718 37.209344 - C6 49.065343 18.528307 36.601241 - H11 47.968479 20.378210 36.710895 - H21 46.799771 19.775454 38.813463 - H31 47.237406 17.585285 39.890727 - H41 48.842852 15.997544 38.865130 - H51 50.011561 16.600300 36.762561 - H61 49.574824 18.790797 35.685589 - C1 55.722026 52.518840 76.408589 - C2 55.919722 52.462272 75.023827 - C3 56.133735 51.228801 74.397218 - C4 56.150053 50.051898 75.155372 - C5 55.953322 50.108694 76.540004 - C6 55.739309 51.342165 77.166612 - H11 55.557361 53.470235 76.891856 - H21 55.906546 53.370115 74.438687 - H31 56.285224 51.185249 73.328812 - H41 56.315682 49.100731 74.671975 - H51 55.966498 49.200851 77.125143 - H61 55.586855 51.385489 78.235149 - C1 48.846132 30.008624 17.283436 - C2 48.080387 31.122731 16.919771 - C3 46.685084 31.024304 16.862021 - C4 46.055527 29.811769 17.167935 - C5 46.821308 28.697683 17.530600 - C6 48.216610 28.796110 17.588350 - H11 49.922286 30.084497 17.327577 - H21 48.565917 32.058448 16.684326 - H31 46.094460 31.884148 16.582435 - H41 44.979408 29.735916 17.122794 - H51 46.335777 27.761966 17.766044 - H61 48.807199 27.936246 17.868935 - C1 47.761644 67.871490 16.066984 - C2 47.079300 66.718706 16.473611 - C3 45.679582 66.705119 16.495837 - C4 44.962207 67.844318 16.111436 - C5 45.644561 68.997137 15.705808 - C6 47.044280 69.010724 15.683583 - H11 48.841192 67.882030 16.050240 - H21 47.632618 65.839524 16.769620 - H31 45.153352 65.815398 16.808590 - H41 43.882670 67.833813 16.129180 - H51 45.091244 69.876319 15.409800 - H61 47.570500 69.900410 15.369830 - C1 34.802252 68.284974 48.575480 - C2 33.545950 68.294501 47.957853 - C3 32.840484 67.097274 47.787981 - C4 33.391321 65.890519 48.235737 - C5 34.647820 65.881009 48.852384 - C6 35.353285 67.078236 49.022256 - H11 35.346466 69.208326 48.706112 - H21 33.120574 69.225527 47.612907 - H31 31.870894 67.104947 47.312404 - H41 32.847303 64.967184 48.104125 - H51 35.073196 64.949983 49.197330 - H61 36.322679 67.070546 49.498813 - C1 16.191619 25.092838 34.494567 - C2 15.675703 24.155041 33.592225 - C3 14.297273 24.097265 33.354563 - C4 13.434758 24.977285 34.019242 - C5 13.950615 25.914230 34.922104 - C6 15.329045 25.972006 35.159767 - H11 17.254712 25.137084 34.678113 - H21 16.341079 23.476444 33.078882 - H31 13.899556 23.374422 32.657672 - H41 12.371606 24.932188 33.836216 - H51 13.285239 26.592827 35.435448 - H61 15.726821 26.695701 35.856136 - C1 8.334510 22.371804 54.889749 - C2 7.871848 21.051743 54.946628 - C3 8.712517 20.035059 55.415158 - C4 10.015847 20.338435 55.826809 - C5 10.478614 21.658147 55.768998 - C6 9.637946 22.674831 55.300468 - H11 7.686218 23.155818 54.528014 - H21 6.866136 20.817630 54.629650 - H31 8.355097 19.016931 55.459915 - H41 10.664245 19.554071 56.187612 - H51 11.484326 21.892260 56.085976 - H61 9.995260 23.693308 55.256643 - C1 3.244292 9.640680 47.988626 - C2 2.990775 10.973556 48.333621 - C3 4.051286 11.823296 48.669996 - C4 5.365314 11.340160 48.661376 - C5 5.618558 10.007253 48.317343 - C6 4.558046 9.157512 47.980968 - H11 2.426284 8.985261 47.729584 - H21 1.977101 11.346608 48.339718 - H31 3.855620 12.851768 48.935135 - H41 6.183049 11.995548 48.921379 - H51 6.632232 9.634201 48.311246 - H61 4.753986 8.129073 47.714868 - C1 9.299047 4.083580 41.555745 - C2 10.201745 3.737336 42.568218 - C3 10.813492 2.478135 42.559896 - C4 10.522540 1.565177 41.539103 - C5 9.619268 1.911133 40.527396 - C6 9.007521 3.170334 40.535718 - H11 8.826971 5.054618 41.562437 - H21 10.426785 4.441815 43.355496 - H31 11.510607 2.211576 43.340482 - H41 10.994042 0.593851 41.533177 - H51 9.394228 1.206653 39.740118 - H61 8.310979 3.437181 39.754365 - C1 19.477278 61.759726 54.629163 - C2 18.342017 61.349386 55.338145 - C3 17.067542 61.723686 54.895986 - C4 16.928328 62.508327 53.744847 - C5 18.063511 62.919315 53.036622 - C6 19.337986 62.545015 53.478781 - H11 20.460215 61.471337 54.970456 - H21 18.449233 60.743511 56.225929 - H31 16.191821 61.406200 55.442478 - H41 15.945313 62.797364 53.404311 - H51 17.956294 63.525190 52.148838 - H61 20.213784 62.861853 52.931532 - C1 77.288769 64.094196 31.040583 - C2 76.169647 63.962655 31.871315 - C3 75.457192 65.099566 32.270980 - C4 75.863858 66.368017 31.839914 - C5 76.983354 66.499474 31.010106 - C6 77.695810 65.362564 30.610441 - H11 77.838442 63.217340 30.732694 - H21 75.855415 62.984047 32.203465 - H31 74.593287 64.997814 32.911020 - H41 75.314559 67.244790 32.148727 - H51 77.297586 67.478083 30.677956 - H61 78.559340 65.464400 29.969477 - C1 9.923175 23.295118 3.589397 - C2 9.347323 24.458532 3.065268 - C3 8.102483 24.895519 3.533572 - C4 7.433497 24.169092 4.526006 - C5 8.008921 23.005388 5.049279 - C6 9.253760 22.568401 4.580975 - H11 10.883088 22.957930 3.227891 - H21 9.863616 25.019420 2.300032 - H31 7.658865 25.793596 3.129842 - H41 6.473156 24.505990 4.886656 - H51 7.492627 22.444500 5.814515 - H61 9.697808 21.670614 4.985561 - C1 75.910475 17.106200 76.986813 - C2 75.193619 16.870332 75.807688 - C3 75.036362 15.562368 75.333988 - C4 75.595960 14.490272 76.039413 - C5 76.313466 14.726324 77.217802 - C6 76.470724 16.034287 77.691501 - H11 76.032056 18.115036 77.351892 - H21 74.761302 17.697306 75.263668 - H31 74.482464 15.380506 74.424890 - H41 75.475029 13.481620 75.673598 - H51 76.745783 13.899350 77.761821 - H61 77.023971 16.215966 78.601337 - C1 33.974128 71.593254 62.756540 - C2 32.833281 72.128303 63.366491 - C3 32.661440 72.014557 64.751201 - C4 33.630448 71.365761 65.525961 - C5 34.770584 70.830024 64.915870 - C6 34.942424 70.943771 63.531160 - H11 34.106410 71.680673 61.688517 - H21 32.085894 72.629423 62.768968 - H31 31.781772 72.428258 65.221702 - H41 33.497454 71.277654 66.593844 - H51 35.517971 70.328904 65.513393 - H61 35.822805 70.530758 63.060799 - C1 18.876598 51.646165 26.656781 - C2 18.325631 51.501319 25.377990 - C3 17.067426 50.907851 25.221124 - C4 16.360188 50.459229 26.343050 - C5 16.911584 50.603252 27.621468 - C6 18.169789 51.196720 27.778334 - H11 19.847172 52.103535 26.777660 - H21 18.870883 51.847945 24.512373 - H31 16.642103 50.797106 24.234629 - H41 15.390042 50.001036 26.221798 - H51 16.366332 50.256626 28.487085 - H61 18.594682 51.308288 28.765202 - C1 2.257962 31.783602 75.287983 - C2 3.614807 31.811041 75.631599 - C3 4.430131 30.707982 75.351601 - C4 3.888610 29.577484 74.727988 - C5 2.531790 29.549810 74.385343 - C6 1.716466 30.652869 74.665341 - H11 1.629108 32.634224 75.504315 - H21 4.032873 32.683402 76.112170 - H31 5.477051 30.729722 75.615840 - H41 4.517488 28.726627 74.512627 - H51 2.113723 28.677449 73.904772 - H61 0.669522 30.631365 74.400130 - C1 38.195204 27.389115 73.245481 - C2 36.809311 27.517224 73.396273 - C3 36.044609 26.416553 73.800803 - C4 36.665801 25.187772 74.054540 - C5 38.051326 25.059572 73.902822 - C6 38.816028 26.160243 73.498292 - H11 38.784875 28.237951 72.933103 - H21 36.329995 28.465339 73.201145 - H31 34.975622 26.515832 73.918052 - H41 36.075761 24.338845 74.365992 - H51 38.530642 24.111457 74.097951 - H61 39.885383 26.061055 73.381969 - C1 39.816510 65.282451 61.990685 - C2 41.159660 65.212124 62.379082 - C3 41.822033 63.978804 62.387799 - C4 41.141256 62.815813 62.008119 - C5 39.798083 62.886130 61.620723 - C6 39.135710 64.119449 61.612005 - H11 39.305598 66.233631 61.984359 - H21 41.685192 66.109387 62.671443 - H31 42.858477 63.924888 62.686486 - H41 41.652145 61.864622 62.015445 - H51 39.272551 61.988866 61.328361 - H61 38.099288 64.173376 61.312318 - C1 53.852729 74.558168 79.814099 - C2 52.597125 75.133422 79.585207 - C3 51.484531 74.315944 79.353356 - C4 51.627541 72.923212 79.350396 - C5 52.883152 72.348213 79.578321 - C6 53.995747 73.165691 79.810173 - H11 54.710858 75.188719 79.992521 - H21 52.486519 76.207898 79.588072 - H31 50.515796 74.759870 79.177798 - H41 50.769420 72.292917 79.171007 - H51 52.993758 71.273737 79.575457 - H61 54.964474 72.721510 79.986698 - C1 20.528451 50.668154 36.476923 - C2 20.633319 50.540741 37.867110 - C3 21.634471 49.735083 38.422538 - C4 22.530755 49.056837 37.587780 - C5 22.425203 49.183562 36.197840 - C6 21.424052 49.989220 35.642411 - H11 19.756039 51.289228 36.048601 - H21 19.942285 51.064442 38.511277 - H31 21.715849 49.637709 39.495028 - H41 23.302484 48.435075 38.016349 - H51 23.116237 48.659861 35.553673 - H61 21.343356 50.087282 34.569676 - C1 39.884594 46.779280 45.707693 - C2 39.855486 45.513086 45.111240 - C3 38.660554 45.019893 44.573849 - C4 37.494730 45.792893 44.632911 - C5 37.523754 47.058446 45.230128 - C6 38.718686 47.551639 45.767519 - H11 40.806137 47.159435 46.122489 - H21 40.754991 44.916849 45.065049 - H31 38.638517 44.043500 44.112862 - H41 36.573104 45.412097 44.218878 - H51 36.624249 47.654683 45.276319 - H61 38.740808 48.528673 46.227742 - C1 14.347531 78.137420 72.241668 - C2 15.106784 78.946979 71.388438 - C3 16.403010 78.560781 71.027135 - C4 16.939984 77.365025 71.519061 - C5 16.181113 76.556177 72.372884 - C6 14.884887 76.942374 72.734187 - H11 13.347960 78.435530 72.520599 - H21 14.692411 79.869238 71.008341 - H31 16.988208 79.184931 70.368107 - H41 17.939937 77.067625 71.240723 - H51 16.595486 75.633918 72.752981 - H61 14.299307 76.317515 73.392623 - C1 8.826853 32.351552 77.329061 - C2 7.764466 32.780102 76.524367 - C3 7.380214 34.126281 76.531004 - C4 8.058348 35.043909 77.342334 - C5 9.119910 34.615127 78.147544 - C6 9.504163 33.268948 78.140908 - H11 9.122906 31.313215 77.324189 - H21 7.241584 32.072375 75.897903 - H31 6.561278 34.456891 75.909411 - H41 7.761471 36.082013 77.347722 - H51 9.642793 35.322854 78.774009 - H61 10.323922 32.938571 78.761984 - C1 7.627575 68.568432 4.676913 - C2 8.982856 68.525894 4.328698 - C3 9.543463 69.560644 3.570474 - C4 8.748789 70.637932 3.160466 - C5 7.393548 70.679869 3.507882 - C6 6.832941 69.645119 4.266105 - H11 7.195175 67.770148 5.261367 - H21 9.596224 67.695127 4.645474 - H31 10.589231 69.528161 3.302796 - H41 9.181230 71.435615 2.575213 - H51 6.780180 71.510636 3.191106 - H61 5.787132 69.678203 4.534582 - C1 24.159422 73.785873 60.328352 - C2 22.771092 73.665581 60.194482 - C3 21.972462 74.813388 60.126510 - C4 22.562162 76.081487 60.192410 - C5 23.950159 76.201608 60.327207 - C6 24.748789 75.053801 60.395179 - H11 24.775275 72.900576 60.381163 - H21 22.316050 72.687303 60.143007 - H31 20.901567 74.720407 60.022225 - H41 21.945977 76.966613 60.140526 - H51 24.405201 77.179886 60.378682 - H61 25.820017 75.146953 60.498537 - C1 50.190881 17.690601 70.635851 - C2 49.580104 16.599663 70.006045 - C3 48.728603 15.758839 70.732579 - C4 48.487878 16.008953 72.088919 - C5 49.099352 17.099175 72.718722 - C6 49.950853 17.939999 71.992188 - H11 50.847903 18.338824 70.075546 - H21 49.765245 16.406930 68.959471 - H31 48.256721 14.917883 70.246310 - H41 47.831552 15.360013 72.649221 - H51 48.914211 17.291907 73.765296 - H61 50.422038 18.781672 72.478460 - C1 45.454972 39.774691 62.686602 - C2 45.538201 38.442484 62.264528 - C3 46.196398 37.496366 63.059217 - C4 46.771366 37.882457 64.275979 - C5 46.688900 39.214648 64.697408 - C6 46.030703 40.160765 63.902719 - H11 44.947659 40.504420 62.073459 - H21 45.094123 38.144336 61.326102 - H31 46.259633 36.468490 62.733934 - H41 47.279443 37.152711 64.888477 - H51 47.132979 39.512795 65.635834 - H61 45.966705 41.188658 64.228647 - C1 32.932766 75.947525 73.322448 - C2 34.322763 76.020059 73.172448 - C3 34.873833 76.490387 71.974531 - C4 34.034907 76.888181 70.926615 - C5 32.645191 76.814718 71.076375 - C6 32.094121 76.344389 72.274291 - H11 32.507819 75.584403 74.246232 - H21 34.970123 75.713773 73.981061 - H31 35.946140 76.547223 71.859360 - H41 34.460135 77.250373 70.002590 - H51 31.997831 77.121003 70.267762 - H61 31.021533 76.288483 72.389704 - C1 32.341923 39.248954 46.154709 - C2 32.272056 37.871150 46.392672 - C3 31.072835 37.182946 46.173280 - C4 29.943479 37.872545 45.715924 - C5 30.013207 39.250266 45.478948 - C6 31.212429 39.938470 45.698340 - H11 33.266753 39.779745 46.324310 - H21 33.143452 37.338873 46.744938 - H31 31.019400 36.119877 46.355944 - H41 29.018511 37.341670 45.547310 - H51 29.141812 39.782543 45.126682 - H61 31.266002 41.001622 45.514689 - C1 62.484066 4.307450 30.925730 - C2 61.408771 4.191100 30.036880 - C3 60.293306 5.025737 30.174761 - C4 60.253136 5.976723 31.201491 - C5 61.327893 6.092305 32.090688 - C6 62.443358 5.257669 31.952808 - H11 63.344175 3.663435 30.819572 - H21 61.439885 3.457871 29.244323 - H31 59.464310 4.936522 29.488361 - H41 59.392488 6.619970 31.307996 - H51 61.296779 6.825535 32.883245 - H61 63.272892 5.347651 32.638859 - C1 53.847601 2.540910 26.160109 - C2 55.019480 2.716150 25.414560 - C3 55.530031 4.002789 25.205299 - C4 54.868704 5.114187 25.741588 - C5 53.696529 4.938914 26.486182 - C6 53.185978 3.652275 26.695442 - H11 53.453675 1.548586 26.321134 - H21 55.530148 1.858743 25.001266 - H31 56.434626 4.137705 24.630980 - H41 55.262334 6.106478 25.579607 - H51 53.185861 5.796321 26.899475 - H61 52.281679 3.517391 27.270716 - C1 20.777886 46.462688 40.527701 - C2 21.616092 45.360180 40.731997 - C3 21.109405 44.061817 40.600042 - C4 19.764511 43.865962 40.263790 - C5 18.926335 44.968352 40.060487 - C6 19.433022 46.266715 40.192442 - H11 21.168640 47.464031 40.629872 - H21 22.653862 45.511130 40.990819 - H31 21.756421 43.211424 40.756693 - H41 19.373788 42.864502 40.162612 - H51 17.888565 44.817402 39.801665 - H61 18.785976 47.117226 40.034799 - C1 12.936730 51.983868 41.562177 - C2 13.814800 53.052006 41.781089 - C3 15.196111 52.858343 41.661227 - C4 15.699350 51.596540 41.322452 - C5 14.821378 50.528453 41.104534 - C6 13.440068 50.722117 41.224396 - H11 11.871417 52.133205 41.655022 - H21 13.426663 54.025705 42.041860 - H31 15.873286 53.682703 41.829153 - H41 16.764762 51.447254 41.230601 - H51 15.209516 49.554754 40.843763 - H61 12.762794 49.897704 41.055476 - C1 17.002868 61.136811 9.593658 - C2 18.368066 61.424895 9.708085 - C3 19.237665 60.482127 10.269224 - C4 18.742066 59.251276 10.715937 - C5 17.376945 58.963749 10.602337 - C6 16.507346 59.906516 10.041198 - H11 16.332176 61.864127 9.161224 - H21 18.750670 62.374220 9.362923 - H31 20.290961 60.704137 10.356496 - H41 19.412834 58.524517 11.149199 - H51 16.994341 58.014423 10.947499 - H61 15.453973 59.683950 9.953098 - C1 66.980413 37.286297 30.107572 - C2 65.893880 38.002666 30.623434 - C3 65.715585 39.347871 30.279161 - C4 66.623822 39.976708 29.419025 - C5 67.710643 39.260618 28.904079 - C6 67.888938 37.915412 29.248352 - H11 67.118084 36.248910 30.373445 - H21 65.192739 37.517477 31.286558 - H31 64.876772 39.900069 30.676411 - H41 66.486438 41.014373 29.154068 - H51 68.411784 39.745807 28.240955 - H61 68.727463 37.362937 28.850186 - C1 43.851099 53.377295 65.404455 - C2 43.812985 52.042297 64.984719 - C3 44.955770 51.241154 65.094735 - C4 46.136670 51.775010 65.624487 - C5 46.174913 53.110047 66.043233 - C6 45.032128 53.911189 65.933217 - H11 42.969796 53.995236 65.319215 - H21 42.901806 51.630108 64.576560 - H31 44.925894 50.211024 64.771817 - H41 47.018103 51.157107 65.708737 - H51 47.086093 53.522235 66.451392 - H61 45.061875 54.941281 66.257126 - C1 3.701299 37.918010 8.634022 - C2 2.431770 37.516330 8.201817 - C3 1.768421 36.470786 8.855038 - C4 2.374601 35.826922 9.940464 - C5 3.644303 36.227998 10.371889 - C6 4.307652 37.273542 9.718668 - H11 4.213022 38.724139 8.129930 - H21 1.963707 38.013392 7.364806 - H31 0.788636 36.161719 8.522119 - H41 1.863051 35.020190 10.443777 - H51 4.112365 35.730937 11.208901 - H61 5.287264 37.583213 10.052367 - C1 10.774699 19.157968 48.376860 - C2 10.384435 18.567819 47.168858 - C3 10.854420 17.293831 46.828326 - C4 11.714668 16.609994 47.695796 - C5 12.105535 17.200545 48.903110 - C6 11.635550 18.474532 49.243642 - H11 10.412495 20.140705 48.639256 - H21 9.720261 19.095026 46.499780 - H31 10.552449 16.838303 45.896852 - H41 12.077475 15.627659 47.432711 - H51 12.769709 16.673337 49.572188 - H61 11.936917 18.929660 50.175804 - C1 75.265676 76.881054 52.842322 - C2 74.628463 77.751224 53.734855 - C3 73.735628 77.246184 54.687574 - C4 73.480007 75.870975 54.747759 - C5 74.116450 75.001182 53.854711 - C6 75.009284 75.506222 52.901992 - H11 75.953971 77.270679 52.107300 - H21 74.826046 78.812164 53.688945 - H31 73.244917 77.917499 55.376685 - H41 72.790942 75.481727 55.482265 - H51 73.918866 73.940242 53.900620 - H61 75.500766 74.834530 52.213395 - C1 11.851791 49.614216 51.783968 - C2 11.926956 50.893060 52.348555 - C3 10.962581 51.306789 53.275216 - C4 9.923042 50.441674 53.637290 - C5 9.847472 49.163436 53.072019 - C6 10.811847 48.749707 52.145357 - H11 12.595382 49.295330 51.068986 - H21 12.729261 51.560390 52.069773 - H31 11.021295 52.293004 53.711415 - H41 9.179047 50.761166 54.351587 - H51 9.045168 48.496107 53.350801 - H61 10.753538 47.762886 51.709842 - C1 35.596455 33.430015 53.846758 - C2 35.327719 33.994804 52.594302 - C3 34.108681 34.644374 52.366494 - C4 33.158379 34.729156 53.391142 - C5 33.426808 34.163602 54.643032 - C6 34.645846 33.514032 54.870840 - H11 36.536506 32.928703 54.022270 - H21 36.061039 33.930011 51.803869 - H31 33.901950 35.080894 51.400549 - H41 32.218021 35.229703 53.215064 - H51 32.693488 34.228394 55.433465 - H61 34.852884 33.078277 55.837351 - C1 29.905010 55.748659 1.505518 - C2 29.093569 54.619062 1.346066 - C3 29.109442 53.604178 2.310249 - C4 29.936756 53.718891 3.433885 - C5 30.748703 54.847895 3.592712 - C6 30.732830 55.862779 2.628528 - H11 29.893011 56.531177 0.761653 - H21 28.454778 54.530706 0.479533 - H31 28.482650 52.733304 2.187582 - H41 29.949261 52.935780 4.177125 - H51 31.387494 54.936252 4.459245 - H61 31.359115 56.734246 2.751822 - C1 58.730976 18.735286 12.503408 - C2 58.547090 20.122121 12.451181 - C3 57.994659 20.712322 11.308214 - C4 57.626113 19.915688 10.217474 - C5 57.810894 18.529222 10.269453 - C6 58.363325 17.939021 11.412419 - H11 59.157409 18.280197 13.384805 - H21 58.830809 20.736793 13.292859 - H31 57.851944 21.782084 11.268495 - H41 57.200575 20.371146 9.335828 - H51 57.527175 17.914550 9.427774 - H61 58.505145 16.868891 11.452388 - C1 39.350750 30.539015 36.571059 - C2 40.668757 30.068364 36.536464 - C3 41.315134 29.709319 37.725234 - C4 40.643504 29.820926 38.948599 - C5 39.326063 30.292401 38.983141 - C6 38.679686 30.651445 37.794371 - H11 38.852419 30.816284 35.654215 - H21 41.186844 29.981621 35.592641 - H31 42.331552 29.345308 37.698255 - H41 41.142400 29.544481 39.865390 - H51 38.807976 30.379143 39.926965 - H61 37.662703 31.014633 37.821404 - C1 51.286373 68.307449 39.090517 - C2 50.967874 69.610912 38.691276 - C3 51.987098 70.504062 38.340053 - C4 53.324821 70.093748 38.388071 - C5 53.643180 68.790788 38.788166 - C6 52.623956 67.897638 39.139389 - H11 50.500265 67.618773 39.361763 - H21 49.935819 69.927426 38.653588 - H31 51.741150 71.509252 38.031120 - H41 54.110789 70.782926 38.117679 - H51 54.675235 68.474273 38.825853 - H61 52.870043 66.891946 39.447469 - C1 45.166475 41.009232 72.151657 - C2 46.344637 41.580709 72.646834 - C3 47.474937 40.782099 72.857867 - C4 47.427076 39.412014 72.573723 - C5 46.248776 38.840594 72.079534 - C6 45.118475 39.639203 71.868501 - H11 44.294639 41.625149 71.989289 - H21 46.381902 42.637841 72.865518 - H31 48.384038 41.223315 73.238920 - H41 48.298773 38.796153 72.737079 - H51 46.211510 37.783461 71.860850 - H61 44.209513 39.197931 71.486460 - C1 59.975724 46.805462 40.158970 - C2 58.659000 46.334348 40.223335 - C3 57.737786 46.946578 41.081491 - C4 58.133296 48.029922 41.875281 - C5 59.450059 48.500247 41.811529 - C6 60.371272 47.888017 40.953374 - H11 60.686268 46.332981 39.497380 - H21 58.353552 45.498941 39.610525 - H31 56.721793 46.583652 41.130270 - H41 57.422790 48.501614 42.537484 - H51 59.755507 49.335654 42.424339 - H61 61.387226 48.251732 40.903981 - C1 78.415534 40.128607 77.310164 - C2 77.065905 39.987826 77.654448 - C3 76.218085 41.101647 77.632233 - C4 76.719895 42.356251 77.265734 - C5 78.069512 42.497049 76.922449 - C6 78.917331 41.383227 76.944664 - H11 79.069455 39.269599 77.327696 - H21 76.678471 39.019834 77.936631 - H31 75.176730 40.992663 77.896884 - H41 76.065961 43.215275 77.249201 - H51 78.456946 43.465041 76.640266 - H61 79.958699 41.492194 76.679014 - C1 67.854150 23.856106 77.997120 - C2 67.116434 25.029543 77.800466 - C3 67.766375 26.209022 77.417978 - C4 69.154033 26.215064 77.232145 - C5 69.891617 25.042004 77.429716 - C6 69.241675 23.862525 77.812203 - H11 67.352867 22.946556 78.292495 - H21 66.045759 25.024885 77.943201 - H31 67.196983 27.113914 77.265338 - H41 69.655184 27.124991 76.937686 - H51 70.962292 25.046662 77.286981 - H61 69.811200 22.957256 77.963927 - C1 57.566273 45.221994 67.701897 - C2 57.677832 44.097410 66.875630 - C3 56.860420 42.982590 67.096781 - C4 55.931451 42.992355 68.144199 - C5 55.820674 44.116431 68.970828 - C6 56.638085 45.231251 68.749676 - H11 58.197010 46.081620 67.531521 - H21 58.394065 44.089968 66.067116 - H31 56.945917 42.115522 66.458643 - H41 55.301496 42.132221 68.314937 - H51 55.104441 44.123873 69.779342 - H61 56.551806 46.098826 69.387453 - C1 56.122027 11.238654 49.191552 - C2 56.872432 12.394781 49.436733 - C3 56.224189 13.613011 49.672502 - C4 54.825540 13.675114 49.663090 - C5 54.075407 12.519313 49.417004 - C6 54.723650 11.301083 49.181235 - H11 56.622058 10.299197 49.009334 - H21 57.951499 12.346900 49.444636 - H31 56.803225 14.504587 49.862623 - H41 54.325781 14.614897 49.844402 - H51 52.996340 12.567194 49.409101 - H61 54.144342 10.409181 48.992019 - C1 66.572646 30.834141 20.526408 - C2 65.174829 30.789781 20.463235 - C3 64.432378 31.973436 20.550515 - C4 65.087745 33.201452 20.700968 - C5 66.485271 33.245568 20.765065 - C6 67.227721 32.061912 20.677785 - H11 67.145188 29.921163 20.459479 - H21 64.669093 29.842492 20.346543 - H31 63.354100 31.939126 20.500751 - H41 64.514911 34.114186 20.768821 - H51 66.991006 34.192856 20.881758 - H61 68.306290 32.096467 20.726624 - C1 68.201610 58.855535 52.010869 - C2 68.520495 60.139486 51.553013 - C3 67.545915 61.144515 51.552662 - C4 66.252448 60.865593 52.010167 - C5 65.933495 59.581583 52.467027 - C6 66.908076 58.576554 52.467378 - H11 68.953202 58.080342 52.010747 - H21 69.518542 60.354991 51.200590 - H31 67.792369 62.135212 51.200361 - H41 65.500789 61.640727 52.009293 - H51 64.935449 59.366078 52.819450 - H61 66.661689 57.585915 52.820675 - C1 11.678710 20.699025 71.435605 - C2 12.010628 19.349924 71.263534 - C3 11.080397 18.353952 71.583849 - C4 9.818248 18.707081 72.076235 - C5 9.486860 20.055943 72.249120 - C6 10.417091 21.051914 71.928805 - H11 12.396344 21.467111 71.188910 - H21 12.984126 19.077348 70.883082 - H31 11.336262 17.313289 71.450091 - H41 9.101144 17.938755 72.323744 - H51 8.513361 20.328519 72.629572 - H61 10.160697 22.092817 72.061748 - C1 72.301584 4.851604 21.435050 - C2 72.403280 4.600250 20.061613 - C3 71.244910 4.469353 19.286412 - C4 69.984844 4.589809 19.884649 - C5 69.883299 4.840177 21.258017 - C6 71.041669 4.971075 22.033217 - H11 73.195020 4.952160 22.032941 - H21 73.375368 4.507905 19.599815 - H31 71.323562 4.276451 18.226724 - H41 69.091559 4.488268 19.286688 - H51 68.911211 4.932523 21.719814 - H61 70.962865 5.164963 23.092975 - C1 68.766933 5.347804 3.141368 - C2 68.481768 4.959358 1.826971 - C3 67.611994 5.727050 1.043367 - C4 67.027386 6.883187 1.574161 - C5 67.311844 7.270931 2.888647 - C6 68.181617 6.503240 3.672250 - H11 69.437454 4.755458 3.745803 - H21 68.933205 4.067750 1.417117 - H31 67.392910 5.427788 0.029078 - H41 66.356158 7.474832 0.969814 - H51 66.860407 8.162540 3.298501 - H61 68.401408 6.803204 4.686451 - C1 67.125489 62.477693 64.884730 - C2 66.211355 61.913568 65.782490 - C3 64.913140 61.605711 65.358520 - C4 64.529057 61.861980 64.036789 - C5 65.442831 62.426880 63.139550 - C6 66.741047 62.734737 63.563520 - H11 68.126610 62.715468 65.211889 - H21 66.507723 61.715227 66.802082 - H31 64.208386 61.169596 66.050952 - H41 63.527577 61.624980 63.710151 - H51 65.146464 62.625220 62.119958 - H61 67.446160 63.170077 62.870567 - C1 62.742745 36.731337 70.462036 - C2 63.146542 37.223480 71.708870 - C3 62.492296 38.325927 72.271422 - C4 61.434254 38.936230 71.587140 - C5 61.031250 38.444663 70.340110 - C6 61.685496 37.342217 69.777558 - H11 63.247635 35.881307 70.028043 - H21 63.962412 36.752348 72.237199 - H31 62.803277 38.704825 73.233744 - H41 60.930157 39.786837 72.020937 - H51 60.215380 38.915796 69.811781 - H61 61.373723 36.962742 68.815432 - C1 58.352128 63.526848 42.012852 - C2 58.894938 64.469492 42.894119 - C3 60.223837 64.347966 43.317379 - C4 61.009926 63.283795 42.859373 - C5 60.466806 62.340863 41.979013 - C6 59.137907 62.462389 41.555753 - H11 57.327081 63.620415 41.686756 - H21 58.288771 65.290908 43.247076 - H31 60.642717 65.075814 43.996432 - H41 62.034663 63.189940 43.186375 - H51 61.072973 61.519447 41.626056 - H61 58.719337 61.734829 40.875793 - C1 53.168794 64.326337 9.981384 - C2 52.598650 65.586334 9.764141 - C3 51.588837 65.742000 8.807095 - C4 51.149168 64.637670 8.067292 - C5 51.719953 63.378143 8.283928 - C6 52.729765 63.222476 9.240974 - H11 53.947887 64.206424 10.719251 - H21 52.937325 66.438308 10.335263 - H31 51.148419 66.713887 8.640350 - H41 50.370715 64.758053 7.328818 - H51 51.381277 62.526169 7.712806 - H61 53.169543 62.250119 9.408326 - C1 39.493785 34.563114 19.728196 - C2 40.317522 35.547551 20.286939 - C3 39.886946 36.878973 20.329478 - C4 38.632634 37.225959 19.813275 - C5 37.809542 36.241759 19.253806 - C6 38.240118 34.910337 19.211267 - H11 39.826093 33.536329 19.695065 - H21 41.285003 35.279899 20.685791 - H31 40.522119 37.638106 20.761461 - H41 38.300971 38.252981 19.845679 - H51 36.842061 36.509412 18.854954 - H61 37.604300 34.150967 18.780010 - C1 3.174496 30.752925 42.901568 - C2 1.912062 30.148338 42.925817 - C3 0.977939 30.517397 43.901062 - C4 1.306250 31.491042 44.852057 - C5 2.568824 32.094758 44.828279 - C6 3.502947 31.725700 43.853035 - H11 3.895036 30.467959 42.149618 - H21 1.658405 29.397590 42.191804 - H31 0.003741 30.051615 43.918998 - H41 0.585850 31.775138 45.604479 - H51 2.822482 32.845507 45.562293 - H61 4.477004 32.192352 43.834626 - C1 20.146883 10.181185 20.496316 - C2 20.519196 11.112343 19.519495 - C3 19.548734 11.924517 18.920774 - C4 18.205958 11.805533 19.298874 - C5 17.833715 10.873846 20.274849 - C6 18.804178 10.061672 20.873571 - H11 20.895354 9.554550 20.957763 - H21 21.555207 11.204684 19.228127 - H31 19.836274 12.643494 18.167959 - H41 17.457558 12.431639 18.836582 - H51 16.797704 10.781505 20.566218 - H61 18.516567 9.343225 21.627231 - C1 24.912711 48.641116 60.711033 - C2 24.082343 49.148621 61.717402 - C3 23.300957 48.277338 62.485641 - C4 23.349940 46.898549 62.247512 - C5 24.179486 46.391352 61.240666 - C6 24.960872 47.262636 60.472427 - H11 25.515039 49.313189 60.118300 - H21 24.044911 50.212291 61.901647 - H31 22.661197 48.668935 63.262620 - H41 22.746789 46.226784 62.839768 - H51 24.216918 45.327682 61.056421 - H61 25.601454 46.870730 59.695925 - C1 60.944536 42.839509 74.678331 - C2 60.232489 43.693759 75.528683 - C3 60.363371 45.081314 75.396576 - C4 61.206298 45.614619 74.414118 - C5 61.918885 44.760403 73.564607 - C6 61.788003 43.372848 73.696714 - H11 60.843848 41.769354 74.780529 - H21 59.581651 43.282463 76.286301 - H31 59.813220 45.740173 76.051997 - H41 61.307526 46.684808 74.312761 - H51 62.569723 45.171699 72.806988 - H61 62.337614 42.713955 73.040452 - C1 22.921892 7.029901 13.070638 - C2 23.003542 5.632906 13.110496 - C3 21.862223 4.858042 12.872027 - C4 20.639254 5.480173 12.593700 - C5 20.557554 6.876936 12.554813 - C6 21.698873 7.651800 12.793282 - H11 23.802095 7.627467 13.254954 - H21 23.947136 5.152775 13.324607 - H31 21.925615 3.780345 12.901822 - H41 19.759000 4.882375 12.410355 - H51 19.613959 7.357067 12.340702 - H61 21.635532 8.729729 12.762516 - C1 16.188788 19.895434 75.407860 - C2 16.107239 20.078032 74.022270 - C3 14.948861 19.699211 73.333397 - C4 13.872033 19.137792 74.030113 - C5 13.954065 18.954410 75.415312 - C6 15.112442 19.333231 76.104185 - H11 17.082375 20.187263 75.939040 - H21 16.937702 20.511727 73.484701 - H31 14.885737 19.841077 72.264647 - H41 12.978929 18.845179 73.498542 - H51 13.123602 18.520715 75.952882 - H61 15.175084 19.192149 77.173326 - C1 44.184038 44.751574 28.937039 - C2 42.968410 45.222739 29.447042 - C3 41.958407 45.642335 28.573129 - C4 42.164032 45.590766 27.189213 - C5 43.379837 45.120554 26.679456 - C6 44.389840 44.700958 27.553369 - H11 44.963113 44.428341 29.611114 - H21 42.809393 45.262005 30.514709 - H31 41.020315 46.004835 28.966721 - H41 41.385134 45.914953 26.515383 - H51 43.538854 45.081288 25.611789 - H61 45.327755 44.337506 27.159531 - C1 42.780196 29.389619 45.814511 - C2 43.635334 30.485731 45.649800 - C3 43.103410 31.771746 45.497771 - C4 41.716348 31.961650 45.510455 - C5 40.861454 30.865530 45.674197 - C6 41.393379 29.579514 45.826225 - H11 43.190501 28.397748 45.931367 - H21 44.705502 30.339455 45.640610 - H31 43.763273 32.617341 45.371727 - H41 41.306287 32.953513 45.392630 - H51 39.791286 31.011806 45.683386 - H61 40.733272 28.733928 45.953240 - C1 15.092446 17.581072 10.479527 - C2 14.902390 18.899258 10.910938 - C3 15.345731 19.965502 10.119442 - C4 15.979128 19.713559 8.896537 - C5 16.169932 18.395544 8.465767 - C6 15.726592 17.329300 9.257263 - H11 14.750843 16.758762 11.090205 - H21 14.413184 19.093805 11.854108 - H31 15.198128 20.982359 10.451935 - H41 16.321480 20.536040 8.286500 - H51 16.659138 18.200997 7.522597 - H61 15.873446 16.312272 8.924129 - C1 30.125131 44.068367 15.540116 - C2 29.165011 43.070412 15.334918 - C3 29.079984 41.988560 16.219372 - C4 29.955076 41.904664 17.309023 - C5 30.915596 42.902016 17.513529 - C6 31.000623 43.983868 16.629076 - H11 30.190913 44.902524 14.857715 - H21 28.489396 43.135321 14.494637 - H31 28.338587 41.219313 16.061491 - H41 29.889694 41.069905 17.990732 - H51 31.591211 42.837108 18.353811 - H61 31.741620 44.753718 16.787648 - C1 79.127367 32.467222 48.065859 - C2 78.705011 33.801338 48.105892 - C3 77.586558 34.203859 47.366344 - C4 76.890461 33.272266 46.586764 - C5 77.313411 31.938627 46.546082 - C6 78.431864 31.536105 47.285630 - H11 79.990222 32.156925 48.635956 - H21 79.241587 34.520053 48.707785 - H31 77.260279 35.232873 47.398140 - H41 76.028200 33.583040 46.016018 - H51 76.776835 31.219911 45.944190 - H61 78.757549 30.506615 47.254483 - C1 58.949325 45.893095 53.907888 - C2 59.570172 45.672074 55.143020 - C3 59.671897 44.372096 55.652529 - C4 59.152775 43.293139 54.926908 - C5 58.531226 43.514365 53.692457 - C6 58.429501 44.814343 53.182947 - H11 58.870555 46.895780 53.515165 - H21 59.971273 46.504330 55.702670 - H31 60.151769 44.201667 56.604902 - H41 59.230842 42.290660 55.320311 - H51 58.130124 42.682109 53.132807 - H61 57.950331 44.984566 52.229893 - C1 50.865020 58.288178 28.566798 - C2 50.020513 59.337004 28.183884 - C3 48.747526 59.059223 27.671796 - C4 48.319047 57.732617 27.542622 - C5 49.163862 56.684047 27.924619 - C6 50.436849 56.961827 28.436708 - H11 51.846956 58.502475 28.961376 - H21 50.350713 60.360563 28.284060 - H31 48.095791 59.868485 27.377393 - H41 47.337418 57.518575 27.147127 - H51 48.833662 55.660487 27.824443 - H61 51.088277 56.152310 28.732026 - C1 38.260028 22.995914 1.403308 - C2 37.440599 22.072326 0.743480 - C3 37.886896 20.761165 0.539601 - C4 39.152622 20.373592 0.995550 - C5 39.972181 21.297370 1.654405 - C6 39.525885 22.608531 1.858284 - H11 37.915916 24.007247 1.560172 - H21 36.463808 22.371027 0.392200 - H31 37.254217 20.048533 0.031458 - H41 39.496865 19.362449 0.837713 - H51 40.948973 20.998669 2.005685 - H61 40.158433 23.320973 2.367401 - C1 30.906254 56.619399 67.794873 - C2 31.176744 57.618681 66.852471 - C3 30.315494 57.806634 65.764899 - C4 29.183754 56.995305 65.619730 - C5 28.913943 55.995620 66.561518 - C6 29.775193 55.807667 67.649090 - H11 31.570752 56.474234 68.633434 - H21 32.049520 58.245111 66.964672 - H31 30.523772 58.578229 65.038539 - H41 28.519935 57.140067 64.780555 - H51 28.041167 55.369190 66.449318 - H61 29.566236 55.036475 68.376064 - C1 67.198694 58.909230 8.795679 - C2 66.598884 57.838319 9.468902 - C3 66.171624 57.994996 10.792832 - C4 66.344175 59.222582 11.443540 - C5 66.944748 60.292930 10.770636 - C6 67.372008 60.136254 9.446705 - H11 67.528553 58.788207 7.774718 - H21 66.465133 56.891351 8.966803 - H31 65.708015 57.169050 11.311695 - H41 66.015079 59.343043 12.464819 - H51 67.078498 61.239899 11.272734 - H61 67.834854 60.962762 8.927525 - C1 69.291281 48.872254 22.068552 - C2 70.405638 48.179927 22.557167 - C3 70.387124 46.781656 22.623392 - C4 69.254254 46.075711 22.201003 - C5 68.139810 46.768082 21.713384 - C6 68.158324 48.166353 21.647158 - H11 69.305477 49.950699 22.017868 - H21 71.279962 48.724402 22.882504 - H31 71.247253 46.247686 22.999414 - H41 69.239971 44.997310 22.252683 - H51 67.265486 46.223607 21.388047 - H61 67.298283 48.700279 21.270142 - C1 74.697220 37.114282 78.284834 - C2 74.035080 38.215449 77.729089 - C3 72.643900 38.325093 77.840836 - C4 71.914860 37.333570 78.508329 - C5 72.576900 36.232179 79.063104 - C6 73.968080 36.122535 78.951357 - H11 75.770135 37.029583 78.198272 - H21 74.597474 38.980808 77.214618 - H31 72.133378 39.175151 77.412928 - H41 70.841844 37.418045 78.593921 - H51 72.014506 35.466820 79.577574 - H61 74.478702 35.272700 79.380235 - C1 54.868107 38.653568 48.597497 - C2 55.294183 39.808421 49.264299 - C3 55.714134 39.732054 50.597604 - C4 55.708008 38.500835 51.264106 - C5 55.281090 37.346432 50.597600 - C6 54.861140 37.422799 49.264296 - H11 54.543860 38.712603 47.569299 - H21 55.299547 40.758282 48.750028 - H31 56.043745 40.622881 51.111531 - H41 56.031414 38.442250 52.292601 - H51 55.275726 36.396571 51.111872 - H61 54.532370 36.531522 48.750072 - C1 67.763621 2.479212 71.819703 - C2 68.191231 2.990033 73.050988 - C3 67.286805 3.661539 73.882242 - C4 65.954770 3.822226 73.482211 - C5 65.527596 3.312277 72.250704 - C6 66.432022 2.640771 71.419450 - H11 68.461311 1.961661 71.178466 - H21 69.218730 2.865601 73.360025 - H31 67.616615 4.054658 74.832516 - H41 65.257516 4.340649 74.123226 - H51 64.500097 3.436710 71.941667 - H61 66.101776 2.246780 70.469398 - C1 22.241493 66.794740 54.856384 - C2 21.046016 67.454082 54.546615 - C3 20.944250 68.839002 54.724187 - C4 22.037959 69.564580 55.211527 - C5 23.232850 68.905098 55.522094 - C6 23.334617 67.520178 55.344522 - H11 22.319786 65.726554 54.719777 - H21 20.202325 66.894515 54.170037 - H31 20.022265 69.347622 54.484215 - H41 21.959081 70.632626 55.348932 - H51 24.076542 69.464665 55.898672 - H61 24.257187 67.011699 55.583695 - C1 7.935514 4.738571 32.735389 - C2 7.650495 3.891006 33.812537 - C3 7.172533 4.424430 35.015409 - C4 6.979589 5.805419 35.141133 - C5 7.265493 6.652813 34.064418 - C6 7.743455 6.119389 32.861545 - H11 8.304514 4.327139 31.807824 - H21 7.798719 2.825477 33.715485 - H31 6.951756 3.770333 35.845922 - H41 6.611474 6.216680 36.069131 - H51 7.117270 7.718342 34.161470 - H61 7.963347 6.773657 32.030599 - C1 51.708834 28.866050 5.359652 - C2 50.960928 27.757401 5.773641 - C3 49.571419 27.861538 5.908955 - C4 48.929815 29.074324 5.630279 - C5 49.677811 30.182959 5.217286 - C6 51.067321 30.078822 5.081973 - H11 52.780543 28.785775 5.255688 - H21 51.455720 26.821487 5.988084 - H31 48.994501 27.005898 6.227362 - H41 47.858196 29.154584 5.735239 - H51 49.183019 31.118873 5.002843 - H61 51.644147 30.934475 4.762570 - C1 71.792832 54.213394 66.093174 - C2 72.203399 52.920322 66.438503 - C3 71.448131 51.814083 66.031445 - C4 70.282295 52.000915 65.279060 - C5 69.871404 53.293856 64.934668 - C6 70.626672 54.400096 65.341725 - H11 72.375172 55.066566 66.407485 - H21 73.103162 52.775988 67.018446 - H31 71.765554 50.816577 66.297078 - H41 69.699631 51.147613 64.965686 - H51 68.971640 53.438190 64.354724 - H61 70.309572 55.397732 65.075155 - C1 13.763145 70.551672 5.512055 - C2 12.644901 69.782075 5.854259 - C3 12.662878 68.998684 7.014374 - C4 13.799099 68.984888 7.832283 - C5 14.917422 69.753656 7.489524 - C6 14.899445 70.537048 6.329410 - H11 13.749359 71.155542 4.617088 - H21 11.767996 69.793095 5.223659 - H31 11.799759 68.405834 7.278740 - H41 13.812964 68.380190 8.726695 - H51 15.794328 69.742636 8.120124 - H61 15.762486 71.130726 6.065598 - C1 55.204930 25.324298 28.688362 - C2 54.578315 26.576141 28.698012 - C3 54.800907 27.462060 29.758904 - C4 55.650115 27.096135 30.810146 - C5 56.275808 25.844115 30.800844 - C6 56.053216 24.958196 29.739952 - H11 55.032903 24.640920 27.870307 - H21 53.923601 26.858840 27.886734 - H31 54.318220 28.428136 29.765681 - H41 55.821220 27.779336 31.628550 - H51 56.930522 25.561416 31.612123 - H61 56.536824 23.992296 29.732827 - C1 29.378247 23.811382 9.330534 - C2 30.570979 23.249257 9.800912 - C3 30.722139 21.857974 9.837949 - C4 29.680565 21.028815 9.404608 - C5 28.487746 21.590952 8.935227 - C6 28.336587 22.982235 8.898190 - H11 29.261582 24.884420 9.302363 - H21 31.374883 23.888843 10.134694 - H31 31.642707 21.424522 10.199903 - H41 29.797144 19.955789 9.433776 - H51 27.683843 20.951366 8.601445 - H61 27.416105 23.415675 8.535240 - C1 78.967029 11.686827 26.682102 - C2 78.730548 12.911713 27.317383 - C3 77.435027 13.440791 27.357306 - C4 76.375988 12.744983 26.761948 - C5 76.612726 11.520789 26.125993 - C6 77.908247 10.991712 26.086070 - H11 79.966299 11.279019 26.651007 - H21 79.547400 13.448352 27.777288 - H31 77.252610 14.385239 27.848305 - H41 75.376975 13.153484 26.792369 - H51 75.795874 10.984151 25.666088 - H61 78.090407 10.046572 25.595745 - C1 5.222112 44.633218 38.718534 - C2 6.019760 44.350319 37.603377 - C3 5.768427 43.207423 36.834929 - C4 4.719445 42.347427 37.181638 - C5 3.922614 42.629889 38.297169 - C6 4.173947 43.772784 39.065617 - H11 5.416255 45.514492 39.311391 - H21 6.828708 45.014048 37.335404 - H31 6.383231 42.989878 35.974099 - H41 4.526120 41.465716 36.589155 - H51 3.113667 41.966160 38.565141 - H61 3.558325 43.990766 39.926072 - C1 36.720489 49.806267 16.448096 - C2 36.179413 49.498471 15.194162 - C3 36.978552 48.894359 14.216247 - C4 38.318766 48.598042 14.492267 - C5 38.859874 48.906697 15.745689 - C6 38.060735 49.510809 16.723604 - H11 36.104199 50.272548 17.202141 - H21 35.145275 49.726461 14.981275 - H31 36.560703 48.656067 13.249316 - H41 38.935088 48.132620 13.737711 - H51 39.894012 48.678707 15.958576 - H61 38.478551 49.748242 17.691047 - C1 55.041644 44.996472 34.017970 - C2 55.814140 43.891420 34.394745 - C3 55.241376 42.614321 34.423902 - C4 53.896115 42.442274 34.076284 - C5 53.123621 43.547343 33.700508 - C6 53.696385 44.824442 33.671351 - H11 55.483350 45.981471 33.995881 - H21 56.852198 44.023912 34.662369 - H31 55.837728 41.761814 34.713615 - H41 53.454411 41.457292 34.099373 - H51 52.085563 43.414851 33.432884 - H61 53.100031 45.676932 33.380638 - C1 7.907062 43.732061 33.766385 - C2 7.823911 43.336073 32.426187 - C3 7.581114 44.288084 31.428883 - C4 7.421468 45.636083 31.771777 - C5 7.503687 46.031727 33.111866 - C6 7.746484 45.079716 34.109171 - H11 8.093934 42.997709 34.535554 - H21 7.947670 42.296205 32.161425 - H31 7.518001 43.982568 30.394952 - H41 7.233663 46.370091 31.002500 - H51 7.379927 47.071595 33.376629 - H61 7.810529 45.385576 35.143210 - C1 13.834675 62.995255 31.630445 - C2 15.112219 62.518007 31.314268 - C3 15.357198 61.139950 31.285353 - C4 14.324634 60.239142 31.572614 - C5 13.047608 60.716459 31.889643 - C6 12.802628 62.094515 31.918558 - H11 13.645899 64.058111 31.653111 - H21 15.908796 63.212853 31.092019 - H31 16.342551 60.771939 31.040437 - H41 14.513927 59.176354 31.550800 - H51 12.251030 60.021613 32.111892 - H61 11.816757 62.462457 32.162621 - C1 71.467076 24.321086 20.188365 - C2 70.683358 23.318198 19.605398 - C3 71.295432 22.206393 19.014513 - C4 72.691225 22.097476 19.006593 - C5 73.474714 23.100715 19.588652 - C6 72.862640 24.212520 20.179537 - H11 70.994959 25.178737 20.643726 - H21 69.606459 23.401788 19.611976 - H31 70.690650 21.432332 18.565729 - H41 73.163112 21.240175 18.550324 - H51 74.551612 23.017124 19.582074 - H61 73.467651 24.986230 20.629229 - C1 74.854391 15.783596 15.518567 - C2 76.031800 15.585025 14.787725 - C3 76.082888 15.937131 13.433730 - C4 74.956568 16.487808 12.810577 - C5 73.779141 16.685413 13.541161 - C6 73.728053 16.333307 14.895156 - H11 74.814934 15.511647 16.562741 - H21 76.901040 15.160753 15.268513 - H31 76.991585 15.784808 12.870343 - H41 74.996007 16.758791 11.766145 - H51 72.909902 17.109685 13.060373 - H61 72.819374 16.486596 15.458800 - C1 73.122618 7.854637 19.294659 - C2 72.297384 7.250458 18.338725 - C3 72.567047 7.417799 16.975212 - C4 73.661943 8.189320 16.567631 - C5 74.486391 8.794112 17.523479 - C6 74.216728 8.626771 18.886993 - H11 72.914353 7.725855 20.346255 - H21 71.452986 6.654687 18.653035 - H31 71.930913 6.950810 16.237924 - H41 73.869422 8.318714 15.515949 - H51 75.330789 9.389883 17.209169 - H61 74.853647 9.093147 19.624365 - C1 2.985176 15.612917 64.586507 - C2 2.282687 15.000754 63.541702 - C3 2.901074 14.809130 62.300425 - C4 4.221948 15.229669 62.103952 - C5 4.923879 15.842561 63.148361 - C6 4.305493 16.034185 64.389639 - H11 2.508052 15.761032 65.543706 - H21 1.263821 14.675696 63.693321 - H31 2.359330 14.335957 61.494845 - H41 4.698514 15.082283 61.146358 - H51 5.942746 16.167619 62.996743 - H61 4.847794 16.506628 65.195615 - C1 5.006051 77.680375 26.601879 - C2 6.131870 78.057097 27.343809 - C3 7.213237 77.177030 27.470379 - C4 7.168783 75.920241 26.855018 - C5 6.042714 75.543342 26.114039 - C6 4.961348 76.423409 25.987469 - H11 4.171911 78.359027 26.504626 - H21 6.166568 79.026930 27.818110 - H31 8.082074 77.468211 28.041932 - H41 8.002673 75.241412 26.953222 - H51 6.008016 74.573509 25.639738 - H61 4.092760 76.132405 25.414964 - C1 74.943486 27.716123 28.576874 - C2 74.440202 26.443085 28.283738 - C3 73.178649 26.063187 28.757083 - C4 72.420381 26.956329 29.523563 - C5 72.924094 28.228762 29.817369 - C6 74.185646 28.608659 29.344025 - H11 75.916639 28.008916 28.212103 - H21 75.024835 25.754133 27.691885 - H31 72.790129 25.081442 28.530001 - H41 71.447656 26.662930 29.889005 - H51 72.339460 28.917713 30.409223 - H61 74.573738 29.591009 29.570436 - C1 23.719511 40.242223 11.064073 - C2 24.323332 39.218357 10.324513 - C3 25.335655 39.521658 9.406308 - C4 25.744157 40.848827 9.227662 - C5 25.139708 41.872519 9.966464 - C6 24.127385 41.569218 10.884669 - H11 22.938485 40.008276 11.771944 - H21 24.008701 38.194316 10.462678 - H31 25.802050 38.731565 8.836602 - H41 26.524555 41.082600 8.519033 - H51 25.454339 42.896560 9.828299 - H61 23.661618 42.359485 11.455133 - C1 75.550908 48.414066 3.044270 - C2 76.727555 47.725722 3.362917 - C3 77.624638 48.265909 4.292074 - C4 77.345073 49.494439 4.902584 - C5 76.169063 50.183007 4.583199 - C6 75.271980 49.642821 3.654042 - H11 74.859260 47.997575 2.327352 - H21 76.943080 46.777595 2.892445 - H31 78.531811 47.734271 4.538520 - H41 78.037358 49.911154 5.618765 - H51 75.953538 51.131135 5.053671 - H61 74.364171 50.174233 3.408334 - C1 2.118900 68.274556 65.655093 - C2 3.301933 67.768490 65.103566 - C3 3.293418 66.535948 64.439745 - C4 2.101870 65.809472 64.327451 - C5 0.919318 66.315115 64.879746 - C6 0.927833 67.547657 65.543567 - H11 2.125618 69.224984 66.167397 - H21 4.221174 68.329149 65.189587 - H31 4.205941 66.146179 64.013461 - H41 2.095633 64.858621 63.815915 - H51 0.000077 65.754457 64.793726 - H61 0.014829 67.937850 65.969083 - C1 75.899323 69.201341 7.124091 - C2 75.601985 69.394991 8.478322 - C3 75.378498 68.291644 9.310529 - C4 75.452350 66.994647 8.788506 - C5 75.748711 66.801204 7.434296 - C6 75.972197 67.904552 6.602089 - H11 76.071293 70.052361 6.482214 - H21 75.545580 70.395556 8.881346 - H31 75.150124 68.441189 10.355430 - H41 75.279403 66.143834 9.430403 - H51 75.805115 65.800639 7.031271 - H61 76.201549 67.754799 5.557167 - C1 51.945333 67.492308 17.935227 - C2 51.765445 67.428284 19.322091 - C3 51.774692 68.602730 20.083986 - C4 51.963825 69.841199 19.459016 - C5 52.144613 69.904985 18.072516 - C6 52.135366 68.730539 17.310622 - H11 51.938581 66.586436 17.347719 - H21 51.618901 66.472922 19.804324 - H31 51.634899 68.553239 21.153726 - H41 51.971477 70.746833 20.046888 - H51 52.291157 70.860347 17.590283 - H61 52.274259 68.780267 16.240516 - C1 63.199160 29.800629 49.859610 - C2 63.888360 29.106168 50.860900 - C3 65.287511 29.136626 50.897500 - C4 65.997463 29.861545 49.932810 - C5 65.308297 30.555058 48.931199 - C6 63.909146 30.524600 48.894600 - H11 62.120069 29.776776 49.831209 - H21 63.340742 28.547349 51.605598 - H31 65.818984 28.601660 51.670600 - H41 67.076588 29.884451 49.960890 - H51 65.855915 31.113878 48.186501 - H61 63.377639 31.060513 48.121821 - C1 36.483801 75.804887 14.595253 - C2 35.278751 76.374641 14.167369 - C3 34.928335 76.335689 12.812532 - C4 35.782970 75.726983 11.885579 - C5 36.988214 75.158206 12.313380 - C6 37.338630 75.197158 13.668217 - H11 36.754185 75.835308 15.640136 - H21 34.619002 76.843754 14.882494 - H31 33.998203 76.774380 12.482774 - H41 35.512780 75.697539 10.840613 - H51 37.647963 74.689093 11.598254 - H61 38.268569 74.757489 13.998058 - C1 70.698397 43.827631 66.227920 - C2 71.014925 45.120813 66.660752 - C3 72.331057 45.436591 67.018481 - C4 73.330662 44.459189 66.943379 - C5 73.013872 43.166027 66.511512 - C6 71.697739 42.850248 66.153783 - H11 69.683226 43.584045 65.952407 - H21 70.243948 45.875160 66.718158 - H31 72.575252 46.434525 67.351400 - H41 74.345571 44.702794 67.219857 - H51 73.784849 42.411679 66.454106 - H61 71.453807 41.852296 65.819899 - C1 57.208831 27.297751 7.825242 - C2 57.530329 25.950944 8.031642 - C3 56.546531 24.965961 7.883850 - C4 55.241236 25.327786 7.529658 - C5 54.919705 26.674470 7.324250 - C6 55.903502 27.659453 7.472042 - H11 57.967545 28.057411 7.939627 - H21 58.537480 25.671584 8.304306 - H31 56.794968 23.926941 8.042129 - H41 54.482489 24.568003 7.416265 - H51 53.912554 26.953831 7.051586 - H61 55.655099 28.698596 7.312771 - C1 44.040163 74.312204 76.314010 - C2 42.819789 74.390229 76.995516 - C3 42.452239 75.577945 77.639045 - C4 43.305064 76.687635 77.601067 - C5 44.525613 76.609188 76.920451 - C6 44.893163 75.421472 76.276922 - H11 44.323754 73.396016 75.818036 - H21 42.161445 73.534372 77.024381 - H31 41.510305 75.638276 78.163884 - H41 43.021648 77.603401 78.097931 - H51 45.183957 77.465045 76.891586 - H61 45.834922 75.361563 75.751194 - C1 21.348389 54.169732 52.154683 - C2 21.701005 52.880255 52.570331 - C3 23.050659 52.525957 52.683456 - C4 24.047697 53.461135 52.380933 - C5 23.695007 54.750048 51.964462 - C6 22.345353 55.104346 51.851337 - H11 20.307440 54.442800 52.067079 - H21 20.931893 52.158840 52.804358 - H31 23.322495 51.531474 53.005087 - H41 25.088572 53.187503 52.467714 - H51 24.464119 55.471463 51.730435 - H61 22.073591 56.099393 51.530529 - C1 26.197950 69.277423 8.235662 - C2 27.259753 69.918617 7.586590 - C3 28.327724 69.167228 7.081869 - C4 28.333892 67.774644 7.226220 - C5 27.272677 67.133782 7.876030 - C6 26.204706 67.885171 8.380751 - H11 25.374490 69.857033 8.625253 - H21 27.254836 70.992943 7.474602 - H31 29.146266 69.661944 6.580290 - H41 29.157939 67.195366 6.837367 - H51 27.277594 66.059456 7.988018 - H61 25.385575 67.390124 8.881593 - C1 67.455021 39.524735 72.123171 - C2 68.519078 40.144181 71.456897 - C3 69.110328 39.521178 70.351374 - C4 68.637522 38.278730 69.912124 - C5 67.574272 37.659067 70.578947 - C6 66.983022 38.282069 71.684470 - H11 66.999317 40.005102 72.976046 - H21 68.883558 41.103027 71.795289 - H31 69.930512 39.999658 69.836890 - H41 69.094033 37.798145 69.059798 - H51 67.209793 36.700220 70.240555 - H61 66.162031 37.803807 72.198405 - C1 4.772877 61.080316 30.441400 - C2 5.330659 61.713812 29.324524 - C3 5.046592 63.060692 29.069354 - C4 4.204744 63.774076 29.931060 - C5 3.646374 63.140317 31.047172 - C6 3.930440 61.793437 31.302342 - H11 4.991693 60.041417 30.637927 - H21 5.980663 61.163728 28.659961 - H31 5.477780 63.549507 28.208264 - H41 3.985340 64.812711 29.733769 - H51 2.996370 63.690401 31.711735 - H61 3.499841 61.304886 32.164196 - C1 76.374200 27.099629 38.604675 - C2 77.400333 26.149561 38.670050 - C3 77.533476 25.340145 39.804514 - C4 76.640487 25.480795 40.873603 - C5 75.615163 26.431378 40.808507 - C6 75.482020 27.240795 39.674043 - H11 76.271807 27.724133 37.729847 - H21 78.088983 26.040509 37.845059 - H31 78.324519 24.606588 39.854351 - H41 76.743689 24.856807 41.748710 - H51 74.926514 26.540431 41.633498 - H61 74.690168 27.973836 39.623927 - C1 47.762159 7.110335 60.494537 - C2 48.347009 5.929705 60.967733 - C3 48.816273 4.969746 60.063212 - C4 48.700688 5.190416 58.685493 - C5 48.115067 6.370450 58.212521 - C6 47.645802 7.330409 59.117043 - H11 47.399902 7.850494 61.192211 - H21 48.436811 5.759592 62.030625 - H31 49.268333 4.059474 60.428429 - H41 49.062174 4.449662 57.988044 - H51 48.025265 6.540563 57.149630 - H61 47.194514 8.241277 58.751601 - C1 23.350138 77.181586 56.994509 - C2 23.602396 78.262954 57.847071 - C3 24.637143 79.159069 57.553528 - C4 25.419632 78.973817 56.407423 - C5 25.167923 77.892067 55.555604 - C6 24.133176 76.995952 55.849147 - H11 22.552320 76.490266 57.221172 - H21 22.998387 78.406357 58.731010 - H31 24.830952 79.993792 58.210804 - H41 26.217999 79.664755 56.181503 - H51 25.771932 77.748664 54.671665 - H61 23.938818 76.161611 55.191128 - C1 61.748925 34.659583 28.793291 - C2 62.183774 34.457279 30.108521 - C3 61.303398 34.666471 31.176729 - C4 59.988173 35.077966 30.929707 - C5 59.553810 35.281110 29.614718 - C6 60.434185 35.071918 28.546510 - H11 62.428086 34.498602 27.969495 - H21 63.198272 34.139213 30.299225 - H31 61.638735 34.509385 32.191229 - H41 59.309497 35.239787 31.753744 - H51 58.539311 35.599177 29.424014 - H61 60.098363 35.228164 27.531769 - C1 20.424924 22.860619 14.405888 - C2 19.964320 21.541982 14.311586 - C3 20.787183 20.482828 14.712808 - C4 22.070651 20.742310 15.208332 - C5 22.531401 22.060691 15.301678 - C6 21.708538 23.119845 14.900456 - H11 19.790381 23.677427 14.096059 - H21 18.973906 21.341673 13.929881 - H31 20.431312 19.465711 14.640932 - H41 22.705340 19.925247 15.517205 - H51 23.521815 22.261000 15.683383 - H61 22.064263 24.137217 14.973288 diff --git a/tools/moltemplate/examples/force_field_OPLSAA/hexadecane/README_visualize.txt b/tools/moltemplate/examples/force_field_OPLSAA/hexadecane/README_visualize.txt deleted file mode 100644 index 019afc1444a48409143b5c170318479ceb27a391..0000000000000000000000000000000000000000 --- a/tools/moltemplate/examples/force_field_OPLSAA/hexadecane/README_visualize.txt +++ /dev/null @@ -1,87 +0,0 @@ - - ------- To view a lammps trajectory in VMD -------- - - -1) Build a PSF file for use in viewing with VMD. - -This step works with VMD 1.9 and topotools 1.2. -(Older versions, like VMD 1.8.6, don't support this.) - - -a) Start VMD -b) Menu Extensions->Tk Console -c) Enter: - -(I assume that the the DATA file is called "system.data") - - topo readlammpsdata system.data full - animate write psf system.psf - -2) - -Later, to Load a trajectory in VMD: - - Start VMD - Select menu: File->New Molecule - -Browse to select the PSF file you created above, and load it. - (Don't close the window yet.) - -Browse to select the trajectory file. - If necessary, for "file type" select: "LAMMPS Trajectory" - Load it. - - ---- A note on trajectory format: ----- -If the trajectory is a DUMP file, then make sure the it contains the -information you need for pbctools (see below. I've been using this -command in my LAMMPS scripts to create the trajectories: - - dump 1 all custom 5000 DUMP_FILE.lammpstrj id mol type x y z ix iy iz - -It's a good idea to use an atom_style which supports molecule-ID numbers -so that you can assign a molecule-ID number to each atom. (I think this -is needed to wrap atom coordinates without breaking molecules in half.) - -Of course, you don't have to save your trajectories in DUMP format, -(other formats like DCD work fine) I just mention dump files -because these are the files I'm familiar with. - -3) ----- Wrap the coordinates to the unit cell - (without cutting the molecules in half) - -a) Start VMD -b) Load the trajectory in VMD (see above) -c) Menu Extensions->Tk Console -d) Try entering these commands: - - pbc wrap -compound res -all - pbc box - - ----- Optional ---- - Sometimes the solvent or membrane obscures the view of the solute. - It can help to shift the location of the periodic boundary box - To shift the box in the y direction (for example) do this: - - pbc wrap -compound res -all -shiftcenterrel {0.0 0.15 0.0} - pbc box -shiftcenterrel {0.0 0.15 0.0} - - Distances are measured in units of box-length fractions, not Angstroms. - - Alternately if you have a solute whose atoms are all of type 1, - then you can also try this to center the box around it: - - pbc wrap -sel type=1 -all -centersel type=2 -center com - -4) - You should check if your periodic boundary conditions are too small. - To do that: - select Graphics->Representations menu option - click on the "Periodic" tab, and - click on the "+x", "-x", "+y", "-y", "+z", "-z" checkboxes. - -5) Optional: If you like, change the atom types in the PSF file so - that VMD recognizes the atom types, use something like: - -sed -e 's/ 1 1 / C C /g' < system.psf > temp1.psf -sed -e 's/ 2 2 / H H /g' < temp1.psf > temp2.psf -sed -e 's/ 3 3 / P P /g' < temp2.psf > system.psf - -(If you do this, it might effect step 2 above.) diff --git a/tools/moltemplate/examples/force_field_OPLSAA/hexadecane/moltemplate_files/oplsaa_lt_generator/AUTHOR.TXT b/tools/moltemplate/examples/force_field_OPLSAA/hexadecane/moltemplate_files/oplsaa_lt_generator/AUTHOR.TXT deleted file mode 100644 index d5e469af37a84991fe0c172f6d7a7301ed0fcb60..0000000000000000000000000000000000000000 --- a/tools/moltemplate/examples/force_field_OPLSAA/hexadecane/moltemplate_files/oplsaa_lt_generator/AUTHOR.TXT +++ /dev/null @@ -1,3 +0,0 @@ - -OPLSAA force-field conversion tools provided by Jason Lambert. - diff --git a/tools/moltemplate/examples/force_field_OPLSAA/hexadecane/moltemplate_files/oplsaa_lt_generator/README.TXT b/tools/moltemplate/examples/force_field_OPLSAA/hexadecane/moltemplate_files/oplsaa_lt_generator/README.TXT deleted file mode 100644 index 5b6e32d8456948cef12fc8da214d7050c1e245f4..0000000000000000000000000000000000000000 --- a/tools/moltemplate/examples/force_field_OPLSAA/hexadecane/moltemplate_files/oplsaa_lt_generator/README.TXT +++ /dev/null @@ -1,108 +0,0 @@ -This directory contains instructions for creating a a moltemplate file -("oplsaa.lt") containing force-field definitions relevant to the -"ethylene" example. (However, these instructions should work -for other molecules too.) - -First, check and see if there is an "oplsaa_subset.prm" file present. -If not, then download this file: - -http://dasher.wustl.edu/tinker/distribution/params/oplsaa.prm - This file is also available here: -http://dasher.wustl.edu/ffe/distribution/params/oplsaa.prm - -and save this file as "oplsaa_subset.prm". Then you must EDIT THIS FILE -so that it only contains atom types you plan to have in your simulation -(see below for details). Then run the opls_moltemplate.py script this way: - - -oplsaa_moltemplate.py oplsaa_subset.prm - - -This will create a file named "oplsaa.lt" -Look over the newly created "oplsaa.lt" file. -Then move this file to wherever you plan to run moltemplate. For example: - -mv -f oplsaa.lt .. - ------ DETAILS: Editing the "oplsaa_subset.prm" file ------- - -Again, before you run "oplsaa_moltemplate.py", you must edit the "oplsaa.prm" -file (or "oplsaa_subset.prm file) and eliminate atom types which do not -correspond to any of the atoms in your simulation. This means you must -look for lines near the beginning of this file which begin with the word "atom" -and refer to atom types which appear in the simulation you plan to run. All -other lines (beginning with the word "atom") must be deleted or commented out. -(Leave the rest of the file alone.) - -For example: -If you were working with ethylene, you would delete every line -beginning with the word "atom", except for these two lines: - - -atom 80 13 CT "Alkane CH3-" 6 12.011 4 -atom 81 13 CT "Alkane -CH2-" 6 12.011 4 -atom 85 46 HC "Alkane H-C" 1 1.008 1 - - -Then you are ready to run oplsaa_moltemplate.py on this file. - -(Note: Atom type numbers, like "88", "89", "47", etc... may vary depending on - when you downloaded "oplsaa.prm".) - - ------ Using the "oplsaa.lt" file ----- - -Once you have created the "oplsaa.lt" file, you can create files (like -ethylene.lt) which define molecules that refer to these atom types. -Here is an excerpt from "ethyelene.lt": - -import "oplsaa.lt" -Ethylene inherits OPLSAA { - write('Data Atoms') { - list of atoms goes here ... - } - write('Data Bond List') { - list of bonds goes here ... - } -} - -And then run moltemplate. - - ------------ CHARGE: ----------- - -By default, the OPLSAA force-field assigns atom charge according to atom type. -When you run moltemplate, it will create a file named "system.in.charges", -containing commands like: - -set type 2 charge -0.42 -set type 3 charge 0.21 - -(This assumes your main moltemplate file is named "system.lt". If it was -named something else, eg "polymer.lt", then the file created by moltemplate -will be named "polymer.in.charges".) - -Include these commands somewhere in your LAMMPS input script -(or use the LAMMPS "include" command to load the commands in system.in.charges) - -Note that the atom numbers (eg "2", "3") in this file will not match the -OPLS atom numbers. (Check the output_ttree/ttree_assignments.txt file, -created by moltemplate, to see a table of "@atom" type numbers translated -from OPLSAA into LAMMPS.) - ------------ CREDIT ----------- - -If you use these tools and you publish a paper using OPLSAA, please also cite -the TINKER program. (Because these examples use the "oplsaa.prm" file which -is distributed with TINKER.) I think these are the relevant citations: - -1) Ponder, J. W., & Richards, F. M. (1987). "An efficient newton‐like method for molecular mechanics energy minimization of large molecules. Journal of Computational Chemistry", 8(7), 1016-1024. - -2) Ponder, J. W, (2004) "TINKER: Software tools for molecular design", http://dasher.wustl.edu/tinker/ - -------------------------------- - -Jason Lambert and Andrew Jewett -December 14 2014 - -Please email bugs to jewett.aij@gmail.com and jlamber9@gmail.com diff --git a/tools/moltemplate/examples/force_field_OPLSAA/hexadecane/moltemplate_files/oplsaa_lt_generator/oplsaa_subset.prm b/tools/moltemplate/examples/force_field_OPLSAA/hexadecane/moltemplate_files/oplsaa_lt_generator/oplsaa_subset.prm deleted file mode 100644 index 1260acdbd3f60163752da06379a5bae2fc047a5a..0000000000000000000000000000000000000000 --- a/tools/moltemplate/examples/force_field_OPLSAA/hexadecane/moltemplate_files/oplsaa_lt_generator/oplsaa_subset.prm +++ /dev/null @@ -1,151 +0,0 @@ -# This file is a heavily redacted version of the "oplsaa.prm" file distributed -# with TINKER (Downloaded April, 2014). This version only contains information -# relevant to alkane chains. The complete version of that file works with most -# small organic molecules and you can use that file with moltemplate too. -# Unfortunately, I do not own or have permission to distribute that file. -# You can download the latest complete version of that file here: -# -# http://dasher.wustl.edu/tinker/distribution/params/oplsaa.prm -# -# When building your own molecules, you should download this file, and delete -# only the lines from the "atoms" section which you don't need. (But leave the -# rest of that file alone. I deleted other sections of this file here in order -# to reduce the file size, but this is not necessary.) -# -# Rename the resulting file "oplsaa_subset.prm" -# -# Then you can create an oplsaa.lt file (which moltemplate.sh needs) this way: -# oplsaa_moltemplate.py oplsaa_subset.prm -# -# Then copy the newly created "oplsa.lt" file to the directory where you -# plan to run moltemplate, and run moltemplate: -# moltemplate system.lt - - - ############################## - ## ## - ## Force Field Definition ## - ## ## - ############################## - - -forcefield OPLS-AA - -vdwindex TYPE -vdwtype LENNARD-JONES -radiusrule GEOMETRIC -radiustype SIGMA -radiussize DIAMETER -epsilonrule GEOMETRIC -torsionunit 0.5 -imptorunit 0.5 -vdw-14-scale 2.0 -chg-14-scale 2.0 -electric 332.06 -dielectric 1.0 - - - ############################# - ## ## - ## Literature References ## - ## ## - ############################# - - -The parameters supplied with TINKER are from "OPLS All-Atom Parameters -for Organic Molecules, Ions, Peptides & Nucleic Acids, July 2008" as -provided by W. L. Jorgensen, Yale University during June 2009. These -parameters are taken from those distributed with BOSS Version 4.8. - -Note that "atom type" numbers and not "atom class" numbers are used -to index van der Waals parameters, see the "vdwindex" keyword above - -The atom types with (UA) in the description are "united atom" values, -ie, OPLS-UA, where any nonpolar hydrogen atoms are combined onto their -attached atoms. All other parameters are "all-atom", OPLS-AA, including -explicit hydrogen atoms. - - - ############################# - ## ## - ## Atom Type Definitions ## - ## ## - ############################# - - -atom 80 13 CT "Alkane CH3-" 6 12.011 4 -atom 81 13 CT "Alkane -CH2-" 6 12.011 4 -atom 85 46 HC "Alkane H-C" 1 1.008 1 - - - ################################ - ## ## - ## Van der Waals Parameters ## - ## ## - ################################ - - -vdw 80 3.5000 0.0660 -vdw 81 3.5000 0.0660 -vdw 85 2.5000 0.0300 - - -bond 13 13 268.00 1.5290 -bond 13 46 340.00 1.0900 - - - ################################ - ## ## - ## Angle Bending Parameters ## - ## ## - ################################ - - -angle 13 13 13 58.35 112.70 -angle 46 13 46 33.00 107.80 -angle 13 13 46 37.50 110.70 - - - ############################ - ## ## - ## Torsional Parameters ## - ## ## - ############################ - - - ################################################################### - ## ## - ## Alternative Torsional Parameter Values for Use with OPLS-AA ## - ## ## - ## For some torsions, OPLS-AA has multiple possible parameter ## - ## values; the list below shows functional groups for which ## - ## these alternate (commented) values should be preferred; the ## - ## values are in the same order as in the full parameter list ## - ## ## - ## 13 13 13 13 hydrocarbon (default) ## - ## 13 13 13 13 perfluoroalkane ## - ## ## - ################################################################### - - -torsion 0 13 13 13 1.711 0.0 1 -0.500 180.0 2 0.663 0.0 3 -#torsion 0 13 13 13 -1.336 0.0 1 0.000 180.0 2 0.000 0.0 3 -torsion 13 13 13 13 1.300 0.0 1 -0.050 180.0 2 0.200 0.0 3 -#torsion 13 13 13 13 6.622 0. 1 0.948 180. 2 -1.388 0. 3 -2.118 180. 4 -torsion 13 13 13 46 0.000 0.0 1 0.000 180.0 2 0.300 0.0 3 -torsion 46 13 13 46 0.000 0.0 1 0.000 180.0 2 0.300 0.0 3 - - - - - ######################################## - ## ## - ## Atomic Partial Charge Parameters ## - ## ## - ######################################## - - -charge 80 -0.1800 -charge 81 -0.1200 -charge 85 0.0600 - diff --git a/tools/moltemplate/examples/force_field_OPLSAA/methane/README_visualize.txt b/tools/moltemplate/examples/force_field_OPLSAA/methane/README_visualize.txt deleted file mode 100644 index 019afc1444a48409143b5c170318479ceb27a391..0000000000000000000000000000000000000000 --- a/tools/moltemplate/examples/force_field_OPLSAA/methane/README_visualize.txt +++ /dev/null @@ -1,87 +0,0 @@ - - ------- To view a lammps trajectory in VMD -------- - - -1) Build a PSF file for use in viewing with VMD. - -This step works with VMD 1.9 and topotools 1.2. -(Older versions, like VMD 1.8.6, don't support this.) - - -a) Start VMD -b) Menu Extensions->Tk Console -c) Enter: - -(I assume that the the DATA file is called "system.data") - - topo readlammpsdata system.data full - animate write psf system.psf - -2) - -Later, to Load a trajectory in VMD: - - Start VMD - Select menu: File->New Molecule - -Browse to select the PSF file you created above, and load it. - (Don't close the window yet.) - -Browse to select the trajectory file. - If necessary, for "file type" select: "LAMMPS Trajectory" - Load it. - - ---- A note on trajectory format: ----- -If the trajectory is a DUMP file, then make sure the it contains the -information you need for pbctools (see below. I've been using this -command in my LAMMPS scripts to create the trajectories: - - dump 1 all custom 5000 DUMP_FILE.lammpstrj id mol type x y z ix iy iz - -It's a good idea to use an atom_style which supports molecule-ID numbers -so that you can assign a molecule-ID number to each atom. (I think this -is needed to wrap atom coordinates without breaking molecules in half.) - -Of course, you don't have to save your trajectories in DUMP format, -(other formats like DCD work fine) I just mention dump files -because these are the files I'm familiar with. - -3) ----- Wrap the coordinates to the unit cell - (without cutting the molecules in half) - -a) Start VMD -b) Load the trajectory in VMD (see above) -c) Menu Extensions->Tk Console -d) Try entering these commands: - - pbc wrap -compound res -all - pbc box - - ----- Optional ---- - Sometimes the solvent or membrane obscures the view of the solute. - It can help to shift the location of the periodic boundary box - To shift the box in the y direction (for example) do this: - - pbc wrap -compound res -all -shiftcenterrel {0.0 0.15 0.0} - pbc box -shiftcenterrel {0.0 0.15 0.0} - - Distances are measured in units of box-length fractions, not Angstroms. - - Alternately if you have a solute whose atoms are all of type 1, - then you can also try this to center the box around it: - - pbc wrap -sel type=1 -all -centersel type=2 -center com - -4) - You should check if your periodic boundary conditions are too small. - To do that: - select Graphics->Representations menu option - click on the "Periodic" tab, and - click on the "+x", "-x", "+y", "-y", "+z", "-z" checkboxes. - -5) Optional: If you like, change the atom types in the PSF file so - that VMD recognizes the atom types, use something like: - -sed -e 's/ 1 1 / C C /g' < system.psf > temp1.psf -sed -e 's/ 2 2 / H H /g' < temp1.psf > temp2.psf -sed -e 's/ 3 3 / P P /g' < temp2.psf > system.psf - -(If you do this, it might effect step 2 above.) diff --git a/tools/moltemplate/examples/force_field_OPLSAA/methane/moltemplate_files/oplsaa_lt_generator/AUTHOR.TXT b/tools/moltemplate/examples/force_field_OPLSAA/methane/moltemplate_files/oplsaa_lt_generator/AUTHOR.TXT deleted file mode 100644 index d5e469af37a84991fe0c172f6d7a7301ed0fcb60..0000000000000000000000000000000000000000 --- a/tools/moltemplate/examples/force_field_OPLSAA/methane/moltemplate_files/oplsaa_lt_generator/AUTHOR.TXT +++ /dev/null @@ -1,3 +0,0 @@ - -OPLSAA force-field conversion tools provided by Jason Lambert. - diff --git a/tools/moltemplate/examples/force_field_OPLSAA/methane/moltemplate_files/oplsaa_lt_generator/README.TXT b/tools/moltemplate/examples/force_field_OPLSAA/methane/moltemplate_files/oplsaa_lt_generator/README.TXT deleted file mode 100644 index 3336341da8181fb389db78f59e080d3328e7eb62..0000000000000000000000000000000000000000 --- a/tools/moltemplate/examples/force_field_OPLSAA/methane/moltemplate_files/oplsaa_lt_generator/README.TXT +++ /dev/null @@ -1,108 +0,0 @@ -This directory contains instructions for creating a a moltemplate file -("oplsaa.lt") containing force-field definitions relevant to the "Methane" -molecule. (However, these instructions should work for other molecules too.) - ---- Instructions --- - -First, check and see if there is an "oplsaa_subset.prm" file present. -If not, then download this file: - -http://dasher.wustl.edu/tinker/distribution/params/oplsaa.prm - This file is also available here: -http://dasher.wustl.edu/ffe/distribution/params/oplsaa.prm - -and save this file as "oplsaa_subset.prm". Then you must EDIT THIS FILE -so that it only contains atom types you plan to have in your simulation -(see below for details). Then run the opls_moltemplate.py script this way: - - -oplsaa_moltemplate.py oplsaa_subset.prm - - -This will create a file named "oplsaa.lt" -Look over the newly created "oplsaa.lt" file. -Then move this file to wherever you plan to run moltemplate. For example: - -mv -f oplsaa.lt .. - ------ DETAILS: Editing the "oplsaa_subset.prm" file ------- - -Again, before you run "oplsaa_moltemplate.py", you must edit the "oplsaa.prm" -file (or "oplsaa_subset.prm file) and eliminate atom types which do not -correspond to any of the atoms in your simulation. This means you must -look for lines near the beginning of this file which begin with the word "atom" -and refer to atom types which appear in the simulation you plan to run. All -other lines (beginning with the word "atom") must be deleted or commented out. -(Leave the rest of the file alone.) - -For example: -If you were working with methane, you would delete every line -beginning with the word "atom", except for these two lines: - - -atom 83 13 CT "Methane CH4" 6 12.011 4 -atom 85 46 HC "Alkane H-C" 1 1.008 1 - - -Then you are ready to run oplsaa_moltemplate.py on this file. - -(Note: Atom type numbers, like "83", "85", "46", etc... may vary depending on - when you downloaded "oplsaa.prm".) - - ------ Using the "oplsaa.lt" file ----- - -Once you have created the "oplsaa.lt" file, you can create files (like -ethylene.lt) which define molecules that refer to these atom types. -Here is an excerpt from "methane.lt": - -import "oplsaa.lt" -Methane inherits OPLSAA { - write('Data Atoms') { - list of atoms goes here ... - } - write('Data Bond List') { - list of bonds goes here ... - } -} - -And then run moltemplate. - - ------------ CHARGE: ----------- - -By default, the OPLSAA force-field assigns atom charge according to atom type. -When you run moltemplate, it will create a file named "system.in.charges", -containing commands like: - -set type 2 charge -0.42 -set type 3 charge 0.21 - -(This assumes your main moltemplate file is named "system.lt". If it was -named something else, eg "polymer.lt", then the file created by moltemplate -will be named "polymer.in.charges".) - -Include these commands somewhere in your LAMMPS input script -(or use the LAMMPS "include" command to load the commands in system.in.charges) - -Note that the atom numbers (eg "2", "3") in this file will not match the -OPLS atom numbers. (Check the output_ttree/ttree_assignments.txt file, -created by moltemplate, to see a table of "@atom" type numbers translated -from OPLSAA into LAMMPS.) - ------------ CREDIT ----------- - -If you use these tools and you publish a paper using OPLSAA, please also cite -the TINKER program. (Because these examples use the "oplsaa.prm" file which -is distributed with TINKER.) I think these are the relevant citations: - -1) Ponder, J. W., & Richards, F. M. (1987). "An efficient newton‐like method for molecular mechanics energy minimization of large molecules. Journal of Computational Chemistry", 8(7), 1016-1024. - -2) Ponder, J. W, (2004) "TINKER: Software tools for molecular design", http://dasher.wustl.edu/tinker/ - -------------------------------- - -Andrew Jewett and Jason Lambert -May, 2014 - -Please email bugs to jewett.aij@gmail.com and jlamber9@gmail.com diff --git a/tools/moltemplate/examples/force_field_OPLSAA/methane/moltemplate_files/oplsaa_lt_generator/oplsaa_subset.prm b/tools/moltemplate/examples/force_field_OPLSAA/methane/moltemplate_files/oplsaa_lt_generator/oplsaa_subset.prm deleted file mode 100644 index 5f982059b3a0de25bad35e14fc974abca52e3e86..0000000000000000000000000000000000000000 --- a/tools/moltemplate/examples/force_field_OPLSAA/methane/moltemplate_files/oplsaa_lt_generator/oplsaa_subset.prm +++ /dev/null @@ -1,115 +0,0 @@ -# This is a modified version of the file "oplsaa.prm" distributed with TINKER -# http://dasher.wustl.edu/tinker/distribution/params/oplsaa.prm -# In this version, all of the lines beginning with "atom" have been deleted -# except for the atom types we will be using in this simulation -# (I also deleted some other lines from that file data to reduce the file size, -# but doing that is not necessary.) -# -# If you use this file, please also cite the software this file comes from: -# -# Ponder, J. W., and Richards, F. M. J. Comput. Chem. (1987) 8(7), 1016-1024 -# "An efficient newton‐like method for molecular mechanics energy -# minimization of large molecules." -# -# Ponder, J. W, (2004) -# "TINKER: Software tools for molecular design" -# http://dasher.wustl.edu/tinker/ - - ############################## - ## ## - ## Force Field Definition ## - ## ## - ############################## - - -forcefield OPLS-AA - -vdwindex TYPE -vdwtype LENNARD-JONES -radiusrule GEOMETRIC -radiustype SIGMA -radiussize DIAMETER -epsilonrule GEOMETRIC -torsionunit 0.5 -imptorunit 0.5 -vdw-14-scale 2.0 -chg-14-scale 2.0 -electric 332.06 -dielectric 1.0 - - - ############################# - ## ## - ## Literature References ## - ## ## - ############################# - - -The parameters supplied with TINKER are from "OPLS All-Atom Parameters -for Organic Molecules, Ions, Peptides & Nucleic Acids, July 2008" as -provided by W. L. Jorgensen, Yale University during June 2009. These -parameters are taken from those distributed with BOSS Version 4.8. - -Note that "atom type" numbers and not "atom class" numbers are used -to index van der Waals parameters, see the "vdwindex" keyword above - -The atom types with (UA) in the description are "united atom" values, -ie, OPLS-UA, where any nonpolar hydrogen atoms are combined onto their -attached atoms. All other parameters are "all-atom", OPLS-AA, including -explicit hydrogen atoms. - - - ############################# - ## ## - ## Atom Type Definitions ## - ## ## - ############################# - -# Note: -# In this example, I am only using OPLSAA to lookup force-field parameters -# for methane. (The water molecules in this example do not need OPLSAA.) -# So I deleted all of the lines beginning with "atom" except these two: - -atom 83 13 CT "Methane CH4" 6 12.011 4 -atom 85 46 HC "Alkane H-C" 1 1.008 1 - - ################################ - ## ## - ## Van der Waals Parameters ## - ## ## - ################################ - - -vdw 83 3.5000 0.0660 -vdw 85 2.5000 0.0300 - - - ################################## - ## ## - ## Bond Stretching Parameters ## - ## ## - ################################## - - -bond 13 46 340.00 1.0900 - - - ################################ - ## ## - ## Angle Bending Parameters ## - ## ## - ################################ - - -angle 46 13 46 33.00 107.80 - - - ######################################## - ## ## - ## Atomic Partial Charge Parameters ## - ## ## - ######################################## - - -charge 83 -0.2400 -charge 85 0.0600 diff --git a/tools/moltemplate/examples/force_field_OPLSAA/waterSPCE+methane/README_run.sh b/tools/moltemplate/examples/force_field_OPLSAA/waterSPCE+methane/README_run.sh deleted file mode 100755 index 5f8286664451cb48a67c8d6ba855727ec8de1735..0000000000000000000000000000000000000000 --- a/tools/moltemplate/examples/force_field_OPLSAA/waterSPCE+methane/README_run.sh +++ /dev/null @@ -1,34 +0,0 @@ -# --- Running LAMMPS --- -# -# The 2 files "run.in.npt", and "run.in.nvt" are LAMMPS -# input scripts which link to the input scripts and data files -# you hopefully have created earlier with moltemplate.sh: -# system.in.init, system.in.settings, system.data -# If not, carry out the instructions in "README_setup.sh". -# -# -- Instructions: -- -# If "lmp_mpi" is the name of the command you use to invoke lammps, -# then you would run lammps on these files this way: - - -lmp_mpi -i run.in.npt # minimization and simulation at constant pressure -lmp_mpi -i run.in.nvt # minimization and simulation at constant volume - -#(Note: The constant volume simulation lacks pressure equilibration. These are -# completely separate simulations. The results of the constant pressure -# simulation might be ignored when beginning the simulation at constant -# volume. (This is because restart files in LAMMPS don't always work, -# and I was spending a lot of time trying to convince people it was a -# LAMMPS bug, instead of a moltemplate bug, so I disabled restart files.) -# Read the "run.in.nvt" file to find out how to use the "read_restart" -# command to load the results of the pressure-equilibration simulation, -# before beginning a constant-volume run. - - - - - -# If you have compiled the MPI version of lammps, you can run lammps in parallel -#mpirun -np 4 lmp_mpi -i run.in.npt -#mpirun -np 4 lmp_mpi -i run.in.nvt -# (assuming you have 4 processors available) diff --git a/tools/moltemplate/examples/force_field_OPLSAA/waterSPCE+methane/README_visualize.txt b/tools/moltemplate/examples/force_field_OPLSAA/waterSPCE+methane/README_visualize.txt deleted file mode 100644 index 019afc1444a48409143b5c170318479ceb27a391..0000000000000000000000000000000000000000 --- a/tools/moltemplate/examples/force_field_OPLSAA/waterSPCE+methane/README_visualize.txt +++ /dev/null @@ -1,87 +0,0 @@ - - ------- To view a lammps trajectory in VMD -------- - - -1) Build a PSF file for use in viewing with VMD. - -This step works with VMD 1.9 and topotools 1.2. -(Older versions, like VMD 1.8.6, don't support this.) - - -a) Start VMD -b) Menu Extensions->Tk Console -c) Enter: - -(I assume that the the DATA file is called "system.data") - - topo readlammpsdata system.data full - animate write psf system.psf - -2) - -Later, to Load a trajectory in VMD: - - Start VMD - Select menu: File->New Molecule - -Browse to select the PSF file you created above, and load it. - (Don't close the window yet.) - -Browse to select the trajectory file. - If necessary, for "file type" select: "LAMMPS Trajectory" - Load it. - - ---- A note on trajectory format: ----- -If the trajectory is a DUMP file, then make sure the it contains the -information you need for pbctools (see below. I've been using this -command in my LAMMPS scripts to create the trajectories: - - dump 1 all custom 5000 DUMP_FILE.lammpstrj id mol type x y z ix iy iz - -It's a good idea to use an atom_style which supports molecule-ID numbers -so that you can assign a molecule-ID number to each atom. (I think this -is needed to wrap atom coordinates without breaking molecules in half.) - -Of course, you don't have to save your trajectories in DUMP format, -(other formats like DCD work fine) I just mention dump files -because these are the files I'm familiar with. - -3) ----- Wrap the coordinates to the unit cell - (without cutting the molecules in half) - -a) Start VMD -b) Load the trajectory in VMD (see above) -c) Menu Extensions->Tk Console -d) Try entering these commands: - - pbc wrap -compound res -all - pbc box - - ----- Optional ---- - Sometimes the solvent or membrane obscures the view of the solute. - It can help to shift the location of the periodic boundary box - To shift the box in the y direction (for example) do this: - - pbc wrap -compound res -all -shiftcenterrel {0.0 0.15 0.0} - pbc box -shiftcenterrel {0.0 0.15 0.0} - - Distances are measured in units of box-length fractions, not Angstroms. - - Alternately if you have a solute whose atoms are all of type 1, - then you can also try this to center the box around it: - - pbc wrap -sel type=1 -all -centersel type=2 -center com - -4) - You should check if your periodic boundary conditions are too small. - To do that: - select Graphics->Representations menu option - click on the "Periodic" tab, and - click on the "+x", "-x", "+y", "-y", "+z", "-z" checkboxes. - -5) Optional: If you like, change the atom types in the PSF file so - that VMD recognizes the atom types, use something like: - -sed -e 's/ 1 1 / C C /g' < system.psf > temp1.psf -sed -e 's/ 2 2 / H H /g' < temp1.psf > temp2.psf -sed -e 's/ 3 3 / P P /g' < temp2.psf > system.psf - -(If you do this, it might effect step 2 above.) diff --git a/tools/moltemplate/examples/force_field_OPLSAA/waterSPCE+methane/moltemplate_files/oplsaa_lt_generator/AUTHOR.TXT b/tools/moltemplate/examples/force_field_OPLSAA/waterSPCE+methane/moltemplate_files/oplsaa_lt_generator/AUTHOR.TXT deleted file mode 100644 index d5e469af37a84991fe0c172f6d7a7301ed0fcb60..0000000000000000000000000000000000000000 --- a/tools/moltemplate/examples/force_field_OPLSAA/waterSPCE+methane/moltemplate_files/oplsaa_lt_generator/AUTHOR.TXT +++ /dev/null @@ -1,3 +0,0 @@ - -OPLSAA force-field conversion tools provided by Jason Lambert. - diff --git a/tools/moltemplate/examples/force_field_OPLSAA/waterSPCE+methane/moltemplate_files/oplsaa_lt_generator/README.TXT b/tools/moltemplate/examples/force_field_OPLSAA/waterSPCE+methane/moltemplate_files/oplsaa_lt_generator/README.TXT deleted file mode 100644 index 0bc46d88c8db8211b60d0cc2106d83a8d8d3c37a..0000000000000000000000000000000000000000 --- a/tools/moltemplate/examples/force_field_OPLSAA/waterSPCE+methane/moltemplate_files/oplsaa_lt_generator/README.TXT +++ /dev/null @@ -1,111 +0,0 @@ -This directory contains instructions for creating a a moltemplate file -("oplsaa.lt") containing force-field definitions relevant to the "Methane" -molecule. (However, these instructions should work for other molecules too.) -Note that the "SPCE" (water) molecules in this example, do NOT use the OPLSAA -database to look up the force-field parameters, so I did not include water -atom types in the "oplsaa_subset.prm". - ---- Instructions --- - -First, check and see if there is an "oplsaa_subset.prm" file present. -If not, then download this file: - -http://dasher.wustl.edu/tinker/distribution/params/oplsaa.prm - This file is also available here: -http://dasher.wustl.edu/ffe/distribution/params/oplsaa.prm - -and save this file as "oplsaa_subset.prm". Then you must EDIT THIS FILE -so that it only contains atom types you plan to have in your simulation -(see below for details). Then run the opls_moltemplate.py script this way: - - -oplsaa_moltemplate.py oplsaa_subset.prm - - -This will create a file named "oplsaa.lt" -Look over the newly created "oplsaa.lt" file. -Then move this file to wherever you plan to run moltemplate. For example: - -mv -f oplsaa.lt .. - ------ DETAILS: Editing the "oplsaa_subset.prm" file ------- - -Again, before you run "oplsaa_moltemplate.py", you must edit the "oplsaa.prm" -file (or "oplsaa_subset.prm file) and eliminate atom types which do not -correspond to any of the atoms in your simulation. This means you must -look for lines near the beginning of this file which begin with the word "atom" -and refer to atom types which appear in the simulation you plan to run. All -other lines (beginning with the word "atom") must be deleted or commented out. -(Leave the rest of the file alone.) - -For example: -If you were working with methane, you would delete every line -beginning with the word "atom", except for these two lines: - - -atom 83 13 CT "Methane CH4" 6 12.011 4 -atom 85 46 HC "Alkane H-C" 1 1.008 1 - - -Then you are ready to run oplsaa_moltemplate.py on this file. - -(Note: Atom type numbers, like "83", "85", "46", etc... may vary depending on - when you downloaded "oplsaa.prm".) - - ------ Using the "oplsaa.lt" file ----- - -Once you have created the "oplsaa.lt" file, you can create files (like -ethylene.lt) which define molecules that refer to these atom types. -Here is an excerpt from "methane.lt": - -import "oplsaa.lt" -Methane inherits OPLSAA { - write('Data Atoms') { - list of atoms goes here ... - } - write('Data Bond List') { - list of bonds goes here ... - } -} - -And then run moltemplate. - - ------------ CHARGE: ----------- - -By default, the OPLSAA force-field assigns atom charge according to atom type. -When you run moltemplate, it will create a file named "system.in.charges", -containing commands like: - -set type 2 charge -0.42 -set type 3 charge 0.21 - -(This assumes your main moltemplate file is named "system.lt". If it was -named something else, eg "polymer.lt", then the file created by moltemplate -will be named "polymer.in.charges".) - -Include these commands somewhere in your LAMMPS input script -(or use the LAMMPS "include" command to load the commands in system.in.charges) - -Note that the atom numbers (eg "2", "3") in this file will not match the -OPLS atom numbers. (Check the output_ttree/ttree_assignments.txt file, -created by moltemplate, to see a table of "@atom" type numbers translated -from OPLSAA into LAMMPS.) - ------------ CREDIT ----------- - -If you use these tools and you publish a paper using OPLSAA, please also cite -the TINKER program. (Because these examples use the "oplsaa.prm" file which -is distributed with TINKER.) I think these are the relevant citations: - -1) Ponder, J. W., & Richards, F. M. (1987). "An efficient newton‐like method for molecular mechanics energy minimization of large molecules. Journal of Computational Chemistry", 8(7), 1016-1024. - -2) Ponder, J. W, (2004) "TINKER: Software tools for molecular design", http://dasher.wustl.edu/tinker/ - -------------------------------- - -Andrew Jewett and Jason Lambert -May, 2014 - -Please email bugs to jewett.aij@gmail.com and jlamber9@gmail.com diff --git a/tools/moltemplate/examples/force_field_OPLSAA/waterSPCE+methane/moltemplate_files/oplsaa_lt_generator/oplsaa_subset.prm b/tools/moltemplate/examples/force_field_OPLSAA/waterSPCE+methane/moltemplate_files/oplsaa_lt_generator/oplsaa_subset.prm deleted file mode 100644 index fee34956bca1e5de2238b9a1ba975eea8198022b..0000000000000000000000000000000000000000 --- a/tools/moltemplate/examples/force_field_OPLSAA/waterSPCE+methane/moltemplate_files/oplsaa_lt_generator/oplsaa_subset.prm +++ /dev/null @@ -1,126 +0,0 @@ -# This is a modified version of the file "oplsaa.prm" distributed with TINKER -# http://dasher.wustl.edu/tinker/distribution/params/oplsaa.prm -# In this version, all of the lines beginning with "atom" have been deleted -# except for the atom types we will be using in this simulation. -# (I also deleted some other lines from that file data to reduce the file size, -# but doing that is not necessary.) -# -# If you use this file, please also cite the software this file comes from: -# -# Ponder, J. W., and Richards, F. M. J. Comput. Chem. (1987) 8(7), 1016-1024 -# "An efficient newton‐like method for molecular mechanics energy -# minimization of large molecules." -# -# Ponder, J. W, (2004) -# "TINKER: Software tools for molecular design" -# http://dasher.wustl.edu/tinker/ - - ############################## - ## ## - ## Force Field Definition ## - ## ## - ############################## - - -forcefield OPLS-AA - -vdwindex TYPE -vdwtype LENNARD-JONES -radiusrule GEOMETRIC -radiustype SIGMA -radiussize DIAMETER -epsilonrule GEOMETRIC -torsionunit 0.5 -imptorunit 0.5 -vdw-14-scale 2.0 -chg-14-scale 2.0 -electric 332.06 -dielectric 1.0 - - - ############################# - ## ## - ## Literature References ## - ## ## - ############################# - - -The parameters supplied with TINKER are from "OPLS All-Atom Parameters -for Organic Molecules, Ions, Peptides & Nucleic Acids, July 2008" as -provided by W. L. Jorgensen, Yale University during June 2009. These -parameters are taken from those distributed with BOSS Version 4.8. - -Note that "atom type" numbers and not "atom class" numbers are used -to index van der Waals parameters, see the "vdwindex" keyword above - -The atom types with (UA) in the description are "united atom" values, -ie, OPLS-UA, where any nonpolar hydrogen atoms are combined onto their -attached atoms. All other parameters are "all-atom", OPLS-AA, including -explicit hydrogen atoms. - - - ############################# - ## ## - ## Atom Type Definitions ## - ## ## - ############################# - -# Note: -# In this example, I am only using OPLSAA to lookup force-field parameters -# for methane. (The water molecules in this example do not need OPLSAA.) -# So I deleted all of the lines beginning with "atom" except these two: - -atom 83 13 CT "Methane CH4" 6 12.011 4 -atom 85 46 HC "Alkane H-C" 1 1.008 1 - -# NOTE: You can use the OPLSAA force field to look up SPC water parameters as -# In that case, you could do this by uncommenting these next two lines: -# atom 76 42 OW "SPC Water O" 8 15.999 2 -# atom 77 43 HW "SPC Water H" 1 1.008 1 - - - - ################################ - ## ## - ## Van der Waals Parameters ## - ## ## - ################################ - - -vdw 83 3.5000 0.0660 -vdw 85 2.5000 0.0300 - - - ################################## - ## ## - ## Bond Stretching Parameters ## - ## ## - ################################## - - -bond 13 46 340.00 1.0900 -bond 42 43 600.00 1.0000 - - - ################################ - ## ## - ## Angle Bending Parameters ## - ## ## - ################################ - - -angle 46 13 46 33.00 107.80 -angle 43 42 43 75.00 109.47 - - - ######################################## - ## ## - ## Atomic Partial Charge Parameters ## - ## ## - ######################################## - - -charge 76 -0.8200 -charge 77 0.4100 -charge 83 -0.2400 -charge 85 0.0600 diff --git a/tools/moltemplate/examples/force_field_OPLSAA/waterSPC_using_OPLSAA/README_visualize.txt b/tools/moltemplate/examples/force_field_OPLSAA/waterSPC_using_OPLSAA/README_visualize.txt deleted file mode 100644 index 019afc1444a48409143b5c170318479ceb27a391..0000000000000000000000000000000000000000 --- a/tools/moltemplate/examples/force_field_OPLSAA/waterSPC_using_OPLSAA/README_visualize.txt +++ /dev/null @@ -1,87 +0,0 @@ - - ------- To view a lammps trajectory in VMD -------- - - -1) Build a PSF file for use in viewing with VMD. - -This step works with VMD 1.9 and topotools 1.2. -(Older versions, like VMD 1.8.6, don't support this.) - - -a) Start VMD -b) Menu Extensions->Tk Console -c) Enter: - -(I assume that the the DATA file is called "system.data") - - topo readlammpsdata system.data full - animate write psf system.psf - -2) - -Later, to Load a trajectory in VMD: - - Start VMD - Select menu: File->New Molecule - -Browse to select the PSF file you created above, and load it. - (Don't close the window yet.) - -Browse to select the trajectory file. - If necessary, for "file type" select: "LAMMPS Trajectory" - Load it. - - ---- A note on trajectory format: ----- -If the trajectory is a DUMP file, then make sure the it contains the -information you need for pbctools (see below. I've been using this -command in my LAMMPS scripts to create the trajectories: - - dump 1 all custom 5000 DUMP_FILE.lammpstrj id mol type x y z ix iy iz - -It's a good idea to use an atom_style which supports molecule-ID numbers -so that you can assign a molecule-ID number to each atom. (I think this -is needed to wrap atom coordinates without breaking molecules in half.) - -Of course, you don't have to save your trajectories in DUMP format, -(other formats like DCD work fine) I just mention dump files -because these are the files I'm familiar with. - -3) ----- Wrap the coordinates to the unit cell - (without cutting the molecules in half) - -a) Start VMD -b) Load the trajectory in VMD (see above) -c) Menu Extensions->Tk Console -d) Try entering these commands: - - pbc wrap -compound res -all - pbc box - - ----- Optional ---- - Sometimes the solvent or membrane obscures the view of the solute. - It can help to shift the location of the periodic boundary box - To shift the box in the y direction (for example) do this: - - pbc wrap -compound res -all -shiftcenterrel {0.0 0.15 0.0} - pbc box -shiftcenterrel {0.0 0.15 0.0} - - Distances are measured in units of box-length fractions, not Angstroms. - - Alternately if you have a solute whose atoms are all of type 1, - then you can also try this to center the box around it: - - pbc wrap -sel type=1 -all -centersel type=2 -center com - -4) - You should check if your periodic boundary conditions are too small. - To do that: - select Graphics->Representations menu option - click on the "Periodic" tab, and - click on the "+x", "-x", "+y", "-y", "+z", "-z" checkboxes. - -5) Optional: If you like, change the atom types in the PSF file so - that VMD recognizes the atom types, use something like: - -sed -e 's/ 1 1 / C C /g' < system.psf > temp1.psf -sed -e 's/ 2 2 / H H /g' < temp1.psf > temp2.psf -sed -e 's/ 3 3 / P P /g' < temp2.psf > system.psf - -(If you do this, it might effect step 2 above.) diff --git a/tools/moltemplate/examples/force_field_OPLSAA/waterSPC_using_OPLSAA/moltemplate_files/oplsaa_lt_generator/AUTHOR.TXT b/tools/moltemplate/examples/force_field_OPLSAA/waterSPC_using_OPLSAA/moltemplate_files/oplsaa_lt_generator/AUTHOR.TXT deleted file mode 100644 index d5e469af37a84991fe0c172f6d7a7301ed0fcb60..0000000000000000000000000000000000000000 --- a/tools/moltemplate/examples/force_field_OPLSAA/waterSPC_using_OPLSAA/moltemplate_files/oplsaa_lt_generator/AUTHOR.TXT +++ /dev/null @@ -1,3 +0,0 @@ - -OPLSAA force-field conversion tools provided by Jason Lambert. - diff --git a/tools/moltemplate/examples/force_field_OPLSAA/waterSPC_using_OPLSAA/moltemplate_files/oplsaa_lt_generator/README.TXT b/tools/moltemplate/examples/force_field_OPLSAA/waterSPC_using_OPLSAA/moltemplate_files/oplsaa_lt_generator/README.TXT deleted file mode 100644 index 8ae373d713053763d38c01e496bbe7c0b5e6ff0a..0000000000000000000000000000000000000000 --- a/tools/moltemplate/examples/force_field_OPLSAA/waterSPC_using_OPLSAA/moltemplate_files/oplsaa_lt_generator/README.TXT +++ /dev/null @@ -1,115 +0,0 @@ -This directory contains instructions for creating a a moltemplate file -("oplsaa.lt") containing force-field definitions relevant to the "Methane" -molecule. (However, these instructions should work for other molecules too.) -Note that the "SPCE" (water) molecules in this example, do NOT use the OPLSAA -database to look up the force-field parameters, so I did not include water -atom types in the "oplsaa_subset.prm". - ---- Instructions --- - -First, check and see if there is an "oplsaa_subset.prm" file present. -If not, then download this file: - -http://dasher.wustl.edu/tinker/distribution/params/oplsaa.prm - This file is also available here: -http://dasher.wustl.edu/ffe/distribution/params/oplsaa.prm - -and save this file as "oplsaa_subset.prm". Then you must EDIT THIS FILE -so that it only contains atom types you plan to have in your simulation -(see below for details). Then run the opls_moltemplate.py script this way: - - -oplsaa_moltemplate.py oplsaa_subset.prm - - -This will create a file named "oplsaa.lt" -Look over the newly created "oplsaa.lt" file. -Then move this file to wherever you plan to run moltemplate. For example: - -mv -f oplsaa.lt .. - ------ DETAILS: Editing the "oplsaa_subset.prm" file ------- - -Again, before you run "oplsaa_moltemplate.py", you must edit the "oplsaa.prm" -file (or "oplsaa_subset.prm file) and eliminate atom types which do not -correspond to any of the atoms in your simulation. This means you must -look for lines near the beginning of this file which begin with the word "atom" -and refer to atom types which appear in the simulation you plan to run. All -other lines (beginning with the word "atom") must be deleted or commented out. -(Leave the rest of the file alone.) - -For example: -If you were working with methane and SPC water, you would delete every line -beginning with the word "atom", except for these two lines: - - -atom 76 42 OW "SPC Water O" 8 15.999 2 -atom 77 43 HW "SPC Water H" 1 1.008 1 -atom 83 13 CT "Methane CH4" 6 12.011 4 -atom 85 46 HC "Alkane H-C" 1 1.008 1 - - -Then you are ready to run oplsaa_moltemplate.py on this file. - -(Note: Atom type numbers, like "83", "85", "46", etc... may vary depending on - when you downloaded "oplsaa.prm".) - - ------ Using the "oplsaa.lt" file ----- - -Once you have created the "oplsaa.lt" file, you can create files (like -ethylene.lt) which define molecules that refer to these atom types. -Here is an excerpt from "methane.lt": - -import "oplsaa.lt" -Methane inherits OPLSAA { - write('Data Atoms') { - list of atoms goes here ... - } - write('Data Bond List') { - list of bonds goes here ... - } -} - -And then run moltemplate. - - ------------ CHARGE: ----------- - -By default, the OPLSAA force-field assigns atom charge according to atom type. -When you run moltemplate, it will create a file named "system.in.charges", -containing commands like: - -set type 1 charge -0.82 -set type 2 charge 0.41 -set type 3 charge -0.42 -set type 4 charge 0.21 - -(This assumes your main moltemplate file is named "system.lt". If it was -named something else, eg "polymer.lt", then the file created by moltemplate -will be named "polymer.in.charges".) - -Include these commands somewhere in your LAMMPS input script -(or use the LAMMPS "include" command to load the commands in system.in.charges) - -Note that the atom numbers (eg "2", "3") in this file will not match the -OPLS atom numbers. (Check the output_ttree/ttree_assignments.txt file, -created by moltemplate, to see a table of "@atom" type numbers translated -from OPLSAA into LAMMPS.) - ------------ CREDIT ----------- - -If you use these tools and you publish a paper using OPLSAA, please also cite -the TINKER program. (Because these examples use the "oplsaa.prm" file which -is distributed with TINKER.) I think these are the relevant citations: - -1) Ponder, J. W., & Richards, F. M. (1987). "An efficient newton‐like method for molecular mechanics energy minimization of large molecules. Journal of Computational Chemistry", 8(7), 1016-1024. - -2) Ponder, J. W, (2004) "TINKER: Software tools for molecular design", http://dasher.wustl.edu/tinker/ - -------------------------------- - -Andrew Jewett and Jason Lambert -May, 2014 - -Please email bugs to jewett.aij@gmail.com and jlamber9@gmail.com diff --git a/tools/moltemplate/examples/force_field_OPLSAA/waterSPC_using_OPLSAA/moltemplate_files/oplsaa_lt_generator/oplsaa_subset.prm b/tools/moltemplate/examples/force_field_OPLSAA/waterSPC_using_OPLSAA/moltemplate_files/oplsaa_lt_generator/oplsaa_subset.prm deleted file mode 100644 index 60bf1d855e6a4891fd71eccebdc595c025e17edc..0000000000000000000000000000000000000000 --- a/tools/moltemplate/examples/force_field_OPLSAA/waterSPC_using_OPLSAA/moltemplate_files/oplsaa_lt_generator/oplsaa_subset.prm +++ /dev/null @@ -1,112 +0,0 @@ -# This is a modified version of the file "oplsaa.prm" distributed with TINKER -# http://dasher.wustl.edu/tinker/distribution/params/oplsaa.prm -# In this version, all of the lines beginning with "atom" have been deleted -# except for the atom types we will be using in this simulation. -# (That's all you need to do, but in this version, I also deleted -# everything else we don't need to reduce the file size.) -# -# If you use this file, please also cite the software this file comes from: -# -# Ponder, J. W., and Richards, F. M. J. Comput. Chem. (1987) 8(7), 1016-1024 -# "An efficient newton‐like method for molecular mechanics energy -# minimization of large molecules." -# -# Ponder, J. W, (2004) -# "TINKER: Software tools for molecular design" -# http://dasher.wustl.edu/tinker/ - - ############################## - ## ## - ## Force Field Definition ## - ## ## - ############################## - - -forcefield OPLS-AA - -vdwindex TYPE -vdwtype LENNARD-JONES -radiusrule GEOMETRIC -radiustype SIGMA -radiussize DIAMETER -epsilonrule GEOMETRIC -torsionunit 0.5 -imptorunit 0.5 -vdw-14-scale 2.0 -chg-14-scale 2.0 -electric 332.06 -dielectric 1.0 - - - ############################# - ## ## - ## Literature References ## - ## ## - ############################# - - -The parameters supplied with TINKER are from "OPLS All-Atom Parameters -for Organic Molecules, Ions, Peptides & Nucleic Acids, July 2008" as -provided by W. L. Jorgensen, Yale University during June 2009. These -parameters are taken from those distributed with BOSS Version 4.8. - -Note that "atom type" numbers and not "atom class" numbers are used -to index van der Waals parameters, see the "vdwindex" keyword above - -The atom types with (UA) in the description are "united atom" values, -ie, OPLS-UA, where any nonpolar hydrogen atoms are combined onto their -attached atoms. All other parameters are "all-atom", OPLS-AA, including -explicit hydrogen atoms. - - - ############################# - ## ## - ## Atom Type Definitions ## - ## ## - ############################# - - -atom 76 42 OW "SPC Water O" 8 15.999 2 -atom 77 43 HW "SPC Water H" 1 1.008 1 - - - ################################ - ## ## - ## Van der Waals Parameters ## - ## ## - ################################ - - -vdw 76 3.16557 0.1554 -vdw 77 0.0000 0.0000 - - - ################################## - ## ## - ## Bond Stretching Parameters ## - ## ## - ################################## - - -bond 42 43 600.00 1.0000 - - - ################################ - ## ## - ## Angle Bending Parameters ## - ## ## - ################################ - - -angle 43 42 43 75.00 109.47 - - - ######################################## - ## ## - ## Atomic Partial Charge Parameters ## - ## ## - ######################################## - - -charge 76 -0.8200 -charge 77 0.4100 diff --git a/tools/moltemplate/examples/force_field_OPLSUA_united_atom/propane/README_run.sh b/tools/moltemplate/examples/force_field_OPLSUA_united_atom/propane/README_run.sh deleted file mode 100755 index 5f8286664451cb48a67c8d6ba855727ec8de1735..0000000000000000000000000000000000000000 --- a/tools/moltemplate/examples/force_field_OPLSUA_united_atom/propane/README_run.sh +++ /dev/null @@ -1,34 +0,0 @@ -# --- Running LAMMPS --- -# -# The 2 files "run.in.npt", and "run.in.nvt" are LAMMPS -# input scripts which link to the input scripts and data files -# you hopefully have created earlier with moltemplate.sh: -# system.in.init, system.in.settings, system.data -# If not, carry out the instructions in "README_setup.sh". -# -# -- Instructions: -- -# If "lmp_mpi" is the name of the command you use to invoke lammps, -# then you would run lammps on these files this way: - - -lmp_mpi -i run.in.npt # minimization and simulation at constant pressure -lmp_mpi -i run.in.nvt # minimization and simulation at constant volume - -#(Note: The constant volume simulation lacks pressure equilibration. These are -# completely separate simulations. The results of the constant pressure -# simulation might be ignored when beginning the simulation at constant -# volume. (This is because restart files in LAMMPS don't always work, -# and I was spending a lot of time trying to convince people it was a -# LAMMPS bug, instead of a moltemplate bug, so I disabled restart files.) -# Read the "run.in.nvt" file to find out how to use the "read_restart" -# command to load the results of the pressure-equilibration simulation, -# before beginning a constant-volume run. - - - - - -# If you have compiled the MPI version of lammps, you can run lammps in parallel -#mpirun -np 4 lmp_mpi -i run.in.npt -#mpirun -np 4 lmp_mpi -i run.in.nvt -# (assuming you have 4 processors available) diff --git a/tools/moltemplate/examples/force_field_OPLSUA_united_atom/propane/README_visualize.txt b/tools/moltemplate/examples/force_field_OPLSUA_united_atom/propane/README_visualize.txt deleted file mode 100644 index 019afc1444a48409143b5c170318479ceb27a391..0000000000000000000000000000000000000000 --- a/tools/moltemplate/examples/force_field_OPLSUA_united_atom/propane/README_visualize.txt +++ /dev/null @@ -1,87 +0,0 @@ - - ------- To view a lammps trajectory in VMD -------- - - -1) Build a PSF file for use in viewing with VMD. - -This step works with VMD 1.9 and topotools 1.2. -(Older versions, like VMD 1.8.6, don't support this.) - - -a) Start VMD -b) Menu Extensions->Tk Console -c) Enter: - -(I assume that the the DATA file is called "system.data") - - topo readlammpsdata system.data full - animate write psf system.psf - -2) - -Later, to Load a trajectory in VMD: - - Start VMD - Select menu: File->New Molecule - -Browse to select the PSF file you created above, and load it. - (Don't close the window yet.) - -Browse to select the trajectory file. - If necessary, for "file type" select: "LAMMPS Trajectory" - Load it. - - ---- A note on trajectory format: ----- -If the trajectory is a DUMP file, then make sure the it contains the -information you need for pbctools (see below. I've been using this -command in my LAMMPS scripts to create the trajectories: - - dump 1 all custom 5000 DUMP_FILE.lammpstrj id mol type x y z ix iy iz - -It's a good idea to use an atom_style which supports molecule-ID numbers -so that you can assign a molecule-ID number to each atom. (I think this -is needed to wrap atom coordinates without breaking molecules in half.) - -Of course, you don't have to save your trajectories in DUMP format, -(other formats like DCD work fine) I just mention dump files -because these are the files I'm familiar with. - -3) ----- Wrap the coordinates to the unit cell - (without cutting the molecules in half) - -a) Start VMD -b) Load the trajectory in VMD (see above) -c) Menu Extensions->Tk Console -d) Try entering these commands: - - pbc wrap -compound res -all - pbc box - - ----- Optional ---- - Sometimes the solvent or membrane obscures the view of the solute. - It can help to shift the location of the periodic boundary box - To shift the box in the y direction (for example) do this: - - pbc wrap -compound res -all -shiftcenterrel {0.0 0.15 0.0} - pbc box -shiftcenterrel {0.0 0.15 0.0} - - Distances are measured in units of box-length fractions, not Angstroms. - - Alternately if you have a solute whose atoms are all of type 1, - then you can also try this to center the box around it: - - pbc wrap -sel type=1 -all -centersel type=2 -center com - -4) - You should check if your periodic boundary conditions are too small. - To do that: - select Graphics->Representations menu option - click on the "Periodic" tab, and - click on the "+x", "-x", "+y", "-y", "+z", "-z" checkboxes. - -5) Optional: If you like, change the atom types in the PSF file so - that VMD recognizes the atom types, use something like: - -sed -e 's/ 1 1 / C C /g' < system.psf > temp1.psf -sed -e 's/ 2 2 / H H /g' < temp1.psf > temp2.psf -sed -e 's/ 3 3 / P P /g' < temp2.psf > system.psf - -(If you do this, it might effect step 2 above.) diff --git a/tools/moltemplate/examples/force_field_explicit_parameters/aluminum_crystal_strain/README_visualize.txt b/tools/moltemplate/examples/force_field_explicit_parameters/aluminum_crystal_strain/README_visualize.txt deleted file mode 100644 index 019afc1444a48409143b5c170318479ceb27a391..0000000000000000000000000000000000000000 --- a/tools/moltemplate/examples/force_field_explicit_parameters/aluminum_crystal_strain/README_visualize.txt +++ /dev/null @@ -1,87 +0,0 @@ - - ------- To view a lammps trajectory in VMD -------- - - -1) Build a PSF file for use in viewing with VMD. - -This step works with VMD 1.9 and topotools 1.2. -(Older versions, like VMD 1.8.6, don't support this.) - - -a) Start VMD -b) Menu Extensions->Tk Console -c) Enter: - -(I assume that the the DATA file is called "system.data") - - topo readlammpsdata system.data full - animate write psf system.psf - -2) - -Later, to Load a trajectory in VMD: - - Start VMD - Select menu: File->New Molecule - -Browse to select the PSF file you created above, and load it. - (Don't close the window yet.) - -Browse to select the trajectory file. - If necessary, for "file type" select: "LAMMPS Trajectory" - Load it. - - ---- A note on trajectory format: ----- -If the trajectory is a DUMP file, then make sure the it contains the -information you need for pbctools (see below. I've been using this -command in my LAMMPS scripts to create the trajectories: - - dump 1 all custom 5000 DUMP_FILE.lammpstrj id mol type x y z ix iy iz - -It's a good idea to use an atom_style which supports molecule-ID numbers -so that you can assign a molecule-ID number to each atom. (I think this -is needed to wrap atom coordinates without breaking molecules in half.) - -Of course, you don't have to save your trajectories in DUMP format, -(other formats like DCD work fine) I just mention dump files -because these are the files I'm familiar with. - -3) ----- Wrap the coordinates to the unit cell - (without cutting the molecules in half) - -a) Start VMD -b) Load the trajectory in VMD (see above) -c) Menu Extensions->Tk Console -d) Try entering these commands: - - pbc wrap -compound res -all - pbc box - - ----- Optional ---- - Sometimes the solvent or membrane obscures the view of the solute. - It can help to shift the location of the periodic boundary box - To shift the box in the y direction (for example) do this: - - pbc wrap -compound res -all -shiftcenterrel {0.0 0.15 0.0} - pbc box -shiftcenterrel {0.0 0.15 0.0} - - Distances are measured in units of box-length fractions, not Angstroms. - - Alternately if you have a solute whose atoms are all of type 1, - then you can also try this to center the box around it: - - pbc wrap -sel type=1 -all -centersel type=2 -center com - -4) - You should check if your periodic boundary conditions are too small. - To do that: - select Graphics->Representations menu option - click on the "Periodic" tab, and - click on the "+x", "-x", "+y", "-y", "+z", "-z" checkboxes. - -5) Optional: If you like, change the atom types in the PSF file so - that VMD recognizes the atom types, use something like: - -sed -e 's/ 1 1 / C C /g' < system.psf > temp1.psf -sed -e 's/ 2 2 / H H /g' < temp1.psf > temp2.psf -sed -e 's/ 3 3 / P P /g' < temp2.psf > system.psf - -(If you do this, it might effect step 2 above.) diff --git a/tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/README_realistic_junctions.txt b/tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/README_realistic_junctions.txt deleted file mode 100644 index 432a7b7ad143b0d86ad5ce775d02680eee5761ef..0000000000000000000000000000000000000000 --- a/tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/README_realistic_junctions.txt +++ /dev/null @@ -1,22 +0,0 @@ - WARNING: A reader has emailed me to point out: - - THIS IS NOT A REALISTIC MODEL OF A GRAPHENE-NANOTUBE JUNCTION. - A real junction would likely be curved near the boundary, - not a 90 degree junction. (Although both graphene and nanotubes - consist of hexagons of carbon atoms, you would need 6 heptagons - near the junction between the nanotube and the graphene - to account for the negative Gaussian curvature there). - - To solve this problem: - Moltemplate allows you to move, add, customize or delete individual - atoms near the boundary. You can move atoms by overwriting their - coordinates using additional write("Data Atoms") statements (after - the walls and tube are created). You can also adjust their partial charge. - - Alternately, you could start with the structure provided here, add or delete - atoms if necessary, and relax/minimize the coordinates of the carbon - atoms using LAMMPS. You could also run a high temperature annealing - simulation to relax their positions. If it helps, the AIREBO - force-field has used in LAMMPS to simulate carbon nanotubes breaking: - http://scitation.aip.org/content/aip/journal/jcp/134/20/10.1063/1.3594197 - http://lammps.sandia.gov/pictures.html#cnt diff --git a/tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/README_setup.sh b/tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/README_setup.sh deleted file mode 100755 index acc5fbbaad49b3a92ac95ce1afd7eab2b952c70b..0000000000000000000000000000000000000000 --- a/tools/moltemplate/examples/force_field_explicit_parameters/nanotube+water/README_setup.sh +++ /dev/null @@ -1,23 +0,0 @@ -# Use these commands to generate the LAMMPS input script and data file -# (and other auxilliary files): - - -# Create LAMMPS input files this way: -cd moltemplate_files - - # run moltemplate - - moltemplate.sh system.lt - - # This will generate various files with names ending in *.in* and *.data. - # These files are the input files directly read by LAMMPS. Move them to - # the parent directory (or wherever you plan to run the simulation). - - mv -f system.in* system.data ../ - - # Optional: - # The "./output_ttree/" directory is full of temporary files generated by - # moltemplate. They can be useful for debugging, but are usually thrown away. - rm -rf output_ttree/ - -cd ../ diff --git a/tools/moltemplate/examples/force_field_explicit_parameters/waterSPCE+Na+Cl/README_visualize.txt b/tools/moltemplate/examples/force_field_explicit_parameters/waterSPCE+Na+Cl/README_visualize.txt deleted file mode 100644 index 019afc1444a48409143b5c170318479ceb27a391..0000000000000000000000000000000000000000 --- a/tools/moltemplate/examples/force_field_explicit_parameters/waterSPCE+Na+Cl/README_visualize.txt +++ /dev/null @@ -1,87 +0,0 @@ - - ------- To view a lammps trajectory in VMD -------- - - -1) Build a PSF file for use in viewing with VMD. - -This step works with VMD 1.9 and topotools 1.2. -(Older versions, like VMD 1.8.6, don't support this.) - - -a) Start VMD -b) Menu Extensions->Tk Console -c) Enter: - -(I assume that the the DATA file is called "system.data") - - topo readlammpsdata system.data full - animate write psf system.psf - -2) - -Later, to Load a trajectory in VMD: - - Start VMD - Select menu: File->New Molecule - -Browse to select the PSF file you created above, and load it. - (Don't close the window yet.) - -Browse to select the trajectory file. - If necessary, for "file type" select: "LAMMPS Trajectory" - Load it. - - ---- A note on trajectory format: ----- -If the trajectory is a DUMP file, then make sure the it contains the -information you need for pbctools (see below. I've been using this -command in my LAMMPS scripts to create the trajectories: - - dump 1 all custom 5000 DUMP_FILE.lammpstrj id mol type x y z ix iy iz - -It's a good idea to use an atom_style which supports molecule-ID numbers -so that you can assign a molecule-ID number to each atom. (I think this -is needed to wrap atom coordinates without breaking molecules in half.) - -Of course, you don't have to save your trajectories in DUMP format, -(other formats like DCD work fine) I just mention dump files -because these are the files I'm familiar with. - -3) ----- Wrap the coordinates to the unit cell - (without cutting the molecules in half) - -a) Start VMD -b) Load the trajectory in VMD (see above) -c) Menu Extensions->Tk Console -d) Try entering these commands: - - pbc wrap -compound res -all - pbc box - - ----- Optional ---- - Sometimes the solvent or membrane obscures the view of the solute. - It can help to shift the location of the periodic boundary box - To shift the box in the y direction (for example) do this: - - pbc wrap -compound res -all -shiftcenterrel {0.0 0.15 0.0} - pbc box -shiftcenterrel {0.0 0.15 0.0} - - Distances are measured in units of box-length fractions, not Angstroms. - - Alternately if you have a solute whose atoms are all of type 1, - then you can also try this to center the box around it: - - pbc wrap -sel type=1 -all -centersel type=2 -center com - -4) - You should check if your periodic boundary conditions are too small. - To do that: - select Graphics->Representations menu option - click on the "Periodic" tab, and - click on the "+x", "-x", "+y", "-y", "+z", "-z" checkboxes. - -5) Optional: If you like, change the atom types in the PSF file so - that VMD recognizes the atom types, use something like: - -sed -e 's/ 1 1 / C C /g' < system.psf > temp1.psf -sed -e 's/ 2 2 / H H /g' < temp1.psf > temp2.psf -sed -e 's/ 3 3 / P P /g' < temp2.psf > system.psf - -(If you do this, it might effect step 2 above.) diff --git a/tools/moltemplate/examples/misc_examples/menger_sponge/README.TXT b/tools/moltemplate/examples/misc_examples/menger_sponge/README.txt similarity index 57% rename from tools/moltemplate/examples/misc_examples/menger_sponge/README.TXT rename to tools/moltemplate/examples/misc_examples/menger_sponge/README.txt index 4d3a9d2f85a04820d13af7de3bbb687d54c87eec..5046c978dac5fb2b8dc56a208826dfbc595b37ed 100644 --- a/tools/moltemplate/examples/misc_examples/menger_sponge/README.TXT +++ b/tools/moltemplate/examples/misc_examples/menger_sponge/README.txt @@ -6,25 +6,39 @@ NOTE: This example requires the "Al99.eam.alloy" file. ------------------------------------------------------------------------ 3D fractal test -Moltemplate is useful for building larger molecular structures from -smaller pieces. Although this simulation is of no scientific value, thiss -example illustrates how to build large (many-level) heirarchical objects -(Serpinski cubes) using moltemplate. (This is also called a "Menger Sponge".) - -The files in this directory demonstrate a way to build a periodic lattice of -3-dimensional Serpinski-cubes (with 3 levels of recursive self-similarity). - -In this example, the basic indivisible units are 4-atoms of Aluminum +Moltemplate is useful for building larger molecular structures from smaller +pieces. The purpose of this example is to show how to build large (many-level) +heirarchical objects (a Menger sponge) using moltemplate. + +A Menger sponge is a fractal composed of subunits that resemble a Rubik's-cubes +with a hollow interior: + + ___ + ###| + # #| + ###' + + | + \|/ + V + + _________ + / /| + ######### | + # ## ## # | + ######### | + ### ### | + # # # # | + ### ### | + ######### | + # ## ## #/ + ######### + +In this example, we will build a periodic lattice of Menger sponges. + +The smallest cube subunits consist of 4 atoms of Aluminum (arranged in a cubic FCC unit-cell for bulk Aluminum). This was an arbitrary choice. The resulting construct is not stable. -(But it makes pretty movies while collapsing.) - -To understand what is going on with this example, look at this file: - -./moltemplate_files/elegant_inefficient_version/serpinski_cubes.lt - -(This approach uses too much memory to be practical for large simulaions. -The version I actually use is here: ./moltemplate_files/serpinski_cubes.lt) --- To build the system --- diff --git a/tools/moltemplate/examples/misc_examples/menger_sponge/README_setup.sh b/tools/moltemplate/examples/misc_examples/menger_sponge/README_setup.sh index 2af3d7372c3ed6300524c0404ef878410b9048bf..ac4251694268d2ff541c805ec2d1d26b452d3589 100755 --- a/tools/moltemplate/examples/misc_examples/menger_sponge/README_setup.sh +++ b/tools/moltemplate/examples/misc_examples/menger_sponge/README_setup.sh @@ -9,8 +9,8 @@ cd moltemplate_files moltemplate.sh -atomstyle full system.lt - # This will generate various files with names ending in *.in* and *.data. - # These files are the input files directly read by LAMMPS. Move them to + # This will generate various files with names ending in *.in* and *.data. + # These files are the input files directly read by LAMMPS. Move them to # the parent directory (or wherever you plan to run the simulation). mv -f system.in* system.data ../ @@ -22,7 +22,7 @@ cd moltemplate_files # Optional: - # The "./output_ttree/" directory is full of temporary files generated by + # The "./output_ttree/" directory is full of temporary files generated by # moltemplate. They can be useful for debugging, but are usually thrown away. rm -rf output_ttree/ diff --git a/tools/moltemplate/examples/misc_examples/menger_sponge/README_visualize.txt b/tools/moltemplate/examples/misc_examples/menger_sponge/README_visualize.txt index 019afc1444a48409143b5c170318479ceb27a391..9cf2aa715765a7d978859a600fde00013a862935 100644 --- a/tools/moltemplate/examples/misc_examples/menger_sponge/README_visualize.txt +++ b/tools/moltemplate/examples/misc_examples/menger_sponge/README_visualize.txt @@ -4,7 +4,7 @@ 1) Build a PSF file for use in viewing with VMD. -This step works with VMD 1.9 and topotools 1.2. +This step works with VMD 1.9 and topotools 1.2. (Older versions, like VMD 1.8.6, don't support this.) @@ -17,7 +17,7 @@ c) Enter: topo readlammpsdata system.data full animate write psf system.psf -2) +2) Later, to Load a trajectory in VMD: @@ -31,17 +31,17 @@ Later, to Load a trajectory in VMD: ---- A note on trajectory format: ----- If the trajectory is a DUMP file, then make sure the it contains the -information you need for pbctools (see below. I've been using this +information you need for pbctools (see below. I've been using this command in my LAMMPS scripts to create the trajectories: dump 1 all custom 5000 DUMP_FILE.lammpstrj id mol type x y z ix iy iz -It's a good idea to use an atom_style which supports molecule-ID numbers -so that you can assign a molecule-ID number to each atom. (I think this +It's a good idea to use an atom_style which supports molecule-ID numbers +so that you can assign a molecule-ID number to each atom. (I think this is needed to wrap atom coordinates without breaking molecules in half.) -Of course, you don't have to save your trajectories in DUMP format, -(other formats like DCD work fine) I just mention dump files +Of course, you don't have to save your trajectories in DUMP format, +(other formats like DCD work fine) I just mention dump files because these are the files I'm familiar with. 3) ----- Wrap the coordinates to the unit cell @@ -56,28 +56,26 @@ d) Try entering these commands: pbc box ----- Optional ---- - Sometimes the solvent or membrane obscures the view of the solute. - It can help to shift the location of the periodic boundary box - To shift the box in the y direction (for example) do this: + Sometimes it is useful to shift the location of the periodic boundary box + and its contents: - pbc wrap -compound res -all -shiftcenterrel {0.0 0.15 0.0} - pbc box -shiftcenterrel {0.0 0.15 0.0} + pbc wrap -compound res -all -shiftcenterrel {0.5 0.5 0.5} + pbc box -shiftcenterrel {0.5 0.5 0.5} Distances are measured in units of box-length fractions, not Angstroms. - Alternately if you have a solute whose atoms are all of type 1, - then you can also try this to center the box around it: + (If you want to focus the box on a system of atoms which are all of type 1, + then you can also try this to center the box around it: + pbc wrap -sel type=1 -all -centersel type=2 -center com) - pbc wrap -sel type=1 -all -centersel type=2 -center com - -4) +4) You should check if your periodic boundary conditions are too small. To do that: select Graphics->Representations menu option - click on the "Periodic" tab, and + click on the "Periodic" tab, and click on the "+x", "-x", "+y", "-y", "+z", "-z" checkboxes. -5) Optional: If you like, change the atom types in the PSF file so +5) Optional: If you like, change the atom types in the PSF file so that VMD recognizes the atom types, use something like: sed -e 's/ 1 1 / C C /g' < system.psf > temp1.psf diff --git a/tools/moltemplate/examples/misc_examples/menger_sponge/images/README.txt b/tools/moltemplate/examples/misc_examples/menger_sponge/images/README.txt new file mode 100644 index 0000000000000000000000000000000000000000..ce504acd7cf244c909fceba8146f1efd752af7dd --- /dev/null +++ b/tools/moltemplate/examples/misc_examples/menger_sponge/images/README.txt @@ -0,0 +1,9 @@ +This is not a simulation of a single menger sponge. +Instead it is a simulation of a periodic lattice of Menger sponges. +(See "../moltemplate_files/system.lt" for details.) +To demonstrate this, several of the images in this directory show the system +after it has been replicated (twice) in the x,y,z directions. Please note that +the system is actually 8 times smaller than it appears in these images. + +(Note: In VMD you can visualize the system this way by selecting the +"Graphics"->"Representations" menu option and clicking on the "Periodic" tab.) diff --git a/tools/moltemplate/examples/misc_examples/menger_sponge/moltemplate_files/README.txt b/tools/moltemplate/examples/misc_examples/menger_sponge/moltemplate_files/README.txt new file mode 100644 index 0000000000000000000000000000000000000000..ce94a83d4574ac73ef595db924fb08ff8e56393f --- /dev/null +++ b/tools/moltemplate/examples/misc_examples/menger_sponge/moltemplate_files/README.txt @@ -0,0 +1,28 @@ +A Menger cube is a fractal composed of subunits that resemble +a Rubik's-cubes with a hollow interior: + _________ + / /| + ######### | + # ## ## # | + ######### | + ### ### | + # # # # | + ### ### | + ######### | + # ## ## #/ + ######### + +There are several ways to build them in moltemplate: +1) You can define each cube as a 3x3x3 array of smaller cubes, and then delete + the 7 interior cubes using the "delete" command. (Each smaller cube is a + similar structure containing an array of 3x3x3 even smaller cubes...) +2) You can define each cube as a list of 20 smaller cubes corresponding to the + cubes that would have remained after deleting the 7 interior cubes. + +Method 1 is a little bit simpler, but method 2 is much more efficient because +it never has to create sub-cubes which will be deleted later. + +This example uses method 1. + +If you are running out of memory, or if moltemplate is taking too long use +method2. It is located in the "memory_efficient_but_ugly_version/" subdirectory. diff --git a/tools/moltemplate/examples/misc_examples/menger_sponge/moltemplate_files/elegant_inefficient_version/menger_cubes.lt b/tools/moltemplate/examples/misc_examples/menger_sponge/moltemplate_files/elegant_inefficient_version/menger_cubes.lt deleted file mode 100644 index afafd46e9f8c54badb63af497f3c6b560a3d4233..0000000000000000000000000000000000000000 --- a/tools/moltemplate/examples/misc_examples/menger_sponge/moltemplate_files/elegant_inefficient_version/menger_cubes.lt +++ /dev/null @@ -1,34 +0,0 @@ -import "al_cell.lt" # <- defines the 4-atom "AlCell" FCC Aluminum unit cell - -# This approach uses the "delete" command. -# It works and it is elegant, but because the majority of atoms will be -# deleted, (and because memory is allocated for all atoms, including -# deleted atoms) this approach is not very memory efficient. - -MengerCubeLvl1 { - cells = new AlCell [3].move(0.00, 0.00, 4.05) - [3].move(0.00, 4.05, 0.00) - [3].move(4.05, 0.00, 0.00) - delete cells[*][1][1] - delete cells[1][*][1] - delete cells[1][1][*] -} - -MengerCubeLvl2 { - cells = new MengerCubeLvl1 [3].move(0.00, 0.00, 12.15) - [3].move(0.00, 12.15, 0.00) - [3].move(12.15, 0.00, 0.00) - delete cells[*][1][1] - delete cells[1][*][1] - delete cells[1][1][*] -} - -MengerCubeLvl3 { - cells = new MengerCubeLvl2 [3].move(0.00, 0.00, 36.45) - [3].move(0.00, 36.45, 0.00) - [3].move(36.45, 0.00, 0.00) - delete cells[*][1][1] - delete cells[1][*][1] - delete cells[1][1][*] -} - diff --git a/tools/moltemplate/examples/misc_examples/menger_sponge/moltemplate_files/memory_efficient_but_ugly_version/README.txt b/tools/moltemplate/examples/misc_examples/menger_sponge/moltemplate_files/memory_efficient_but_ugly_version/README.txt new file mode 100644 index 0000000000000000000000000000000000000000..0d4f00eddb298fa5b8b4f6cf5ff9c76702b691b0 --- /dev/null +++ b/tools/moltemplate/examples/misc_examples/menger_sponge/moltemplate_files/memory_efficient_but_ugly_version/README.txt @@ -0,0 +1,29 @@ +A Menger cube is a fractal composed of subunits that resemble +a Rubik's-cubes with a hollow interior: + _________ + / /| + ######### | + # ## ## # | + ######### | + ### ### | + # # # # | + ### ### | + ######### | + # ## ## #/ + ######### + +There are several ways to build them in moltemplate: +1) You can define each cube as a 3x3x3 array of smaller cubes, and then delete + the 7 interior cubes using the "delete" command. (Each smaller cube is a + similar structure containing an array of 3x3x3 even smaller cubes...) +2) You can define each cube as a list of 20 smaller cubes corresponding to the + cubes that would have remained after deleting the 7 interior cubes. + +Method 1 is a little bit simpler, but method 2 is much more efficient because +it never has to create sub-cubes which will be deleted later. + +This example uses method 2. + + + + diff --git a/tools/moltemplate/examples/misc_examples/menger_sponge/moltemplate_files/elegant_inefficient_version/al_cell.lt b/tools/moltemplate/examples/misc_examples/menger_sponge/moltemplate_files/memory_efficient_but_ugly_version/al_cell.lt similarity index 100% rename from tools/moltemplate/examples/misc_examples/menger_sponge/moltemplate_files/elegant_inefficient_version/al_cell.lt rename to tools/moltemplate/examples/misc_examples/menger_sponge/moltemplate_files/memory_efficient_but_ugly_version/al_cell.lt diff --git a/tools/moltemplate/examples/misc_examples/menger_sponge/moltemplate_files/memory_efficient_but_ugly_version/menger_cubes.lt b/tools/moltemplate/examples/misc_examples/menger_sponge/moltemplate_files/memory_efficient_but_ugly_version/menger_cubes.lt new file mode 100644 index 0000000000000000000000000000000000000000..797d899a633bc3247ad78206aca8a23b1785f409 --- /dev/null +++ b/tools/moltemplate/examples/misc_examples/menger_sponge/moltemplate_files/memory_efficient_but_ugly_version/menger_cubes.lt @@ -0,0 +1,60 @@ +import "al_cell.lt" # <- defines the 4-atom "AlCell" FCC Aluminum unit cell + + + + +MengerCubeLvl1 { + # Again, a Menger-cube is constructed of 20 smaller cube-shaped objects. + # Here, the small cube-shaped objects are "AlCells" (defined in "al_cell.lt"). + # I could list out the positions of all 20 AlCells, (and this would be clearer + # for the reader). However instead I built it from a combination of + # two-dimensional and three-dimensional arrays of AlCells (explained below). + + # The next command creates 12 AlCells (2x2x3) at: + # (0.0, 0.0, 0.0), (0.0, 0.0, 4.05), (0.0, 0.0, 8.1) + # (0.0, 8.1, 0.0), (0.0, 8.1, 4.05), (0.0, 8.1, 8.1) + # (8.1, 8.1, 0.0), (8.1, 8.1, 4.05), (8.1, 8.1, 8.1) + + cells_z = new AlCell [2].move(8.10, 0.00, 0.00) + [2].move(0.00, 8.10, 0.00) + [3].move(0.00, 0.00, 4.05) + + # The next command creates 4 AlCells at: (0, 4.05, 0.0), (8.1, 4.05, 0.0), + # (0, 4.05, 8.1), (8.1, 4.05, 8.1) + + cells_xz= new AlCell.move(0.00, 4.05, 0.00) [2].move(8.10, 0.0, 0.0 ) + [2].move(0.0, 0.0, 8.10) + + # The next command creates 4 AlCells at: (4.05, 0, 0.0), (4.05, 8.1, 0.0), + # (4.05, 0, 8.1), (4.05, 8.1, 8.1) + + cells_yz = new AlCell.move(4.05, 0.00, 0.00) [2].move(0.0, 8.10, 0.0 ) + [2].move(0.0, 0.0, 8.10) +} + + + +MengerCubeLvl2 { + # Identical arrangement to MengerCube1 (with 3x larger length scales) + cells_z = new MengerCubeLvl1 [2].move(24.3, 0.00, 0.00) + [2].move(0.00, 24.3, 0.00) + [3].move(0.00, 0.00, 12.15) + cells_xz = new MengerCubeLvl1.move(0.0,12.15,0.0) [2].move(24.3, 0.0, 0.0 ) + [2].move(0.0, 0.0, 24.3) + cells_yz = new MengerCubeLvl1.move(12.15,0.0,0.0) [2].move(0.0, 24.3, 0.0 ) + [2].move(0.0, 0.0, 24.3) +} + + + +MengerCubeLvl3 { + # Identical arrangement to MengerCube2 (with 3x larger length scales) + cells_z = new MengerCubeLvl2 [2].move(72.9, 0.00, 0.00) + [2].move(0.00, 72.9, 0.00) + [3].move(0.00, 0.00, 36.45) + cells_xz = new MengerCubeLvl2.move(0.0,36.45,0.0) [2].move(72.9, 0.0, 0.0 ) + [2].move(0.0, 0.0, 72.9) + cells_yz = new MengerCubeLvl2.move(36.45,0.0,0.0) [2].move(0.0, 72.9, 0.0 ) + [2].move(0.0, 0.0, 72.9) +} + diff --git a/tools/moltemplate/examples/misc_examples/menger_sponge/moltemplate_files/elegant_inefficient_version/system.lt b/tools/moltemplate/examples/misc_examples/menger_sponge/moltemplate_files/memory_efficient_but_ugly_version/system.lt similarity index 74% rename from tools/moltemplate/examples/misc_examples/menger_sponge/moltemplate_files/elegant_inefficient_version/system.lt rename to tools/moltemplate/examples/misc_examples/menger_sponge/moltemplate_files/memory_efficient_but_ugly_version/system.lt index 8da5f2d9c9ffb08320e1d3ebaad2fd01364374bf..51313b9d7cc559b04d29badc3221a2509ec4f58c 100644 --- a/tools/moltemplate/examples/misc_examples/menger_sponge/moltemplate_files/elegant_inefficient_version/system.lt +++ b/tools/moltemplate/examples/misc_examples/menger_sponge/moltemplate_files/memory_efficient_but_ugly_version/system.lt @@ -26,9 +26,8 @@ cube_at_001 = new MengerCubeLvl3.move(0.0000, 0.0000, 109.35) ################################################################ -# The next command is not necessary: +# The next command is not necessary. Commenting out: # - create_var { $mol } # <-This forces all of the Al atoms in the crystal +# create_var { $mol } # <-This forces all of the Al atoms in the crystal # # to share the same molecule ID number. -# # Molecule ID numbers are not necessary. Ignore this. -# +# # (Molecule ID numbers are not necessary.) diff --git a/tools/moltemplate/examples/misc_examples/menger_sponge/moltemplate_files/menger_cubes.lt b/tools/moltemplate/examples/misc_examples/menger_sponge/moltemplate_files/menger_cubes.lt index 0d2922d415761da1e9bba7a8471326db6074a4f2..afafd46e9f8c54badb63af497f3c6b560a3d4233 100644 --- a/tools/moltemplate/examples/misc_examples/menger_sponge/moltemplate_files/menger_cubes.lt +++ b/tools/moltemplate/examples/misc_examples/menger_sponge/moltemplate_files/menger_cubes.lt @@ -1,66 +1,34 @@ import "al_cell.lt" # <- defines the 4-atom "AlCell" FCC Aluminum unit cell -# A Menger cube is a fractal which resembles a 3x3x3 Rubik's-cube. It has a -# cube in each central face (and in the interior) removed. There are 3x3x3-7=20 -# remaining sub-cubes. Each of these 20 sub-cubes is a smaller MengerCube. -# To build a MengerCube, you can list all 20 sub-cubes, or you can fill a -# 3x3x3 cube with sub-cubes and delete the interior sub-cubes. (The later -# approach is used in file "elegant_inefficient_version/menger_cubes.lt") - - +# This approach uses the "delete" command. +# It works and it is elegant, but because the majority of atoms will be +# deleted, (and because memory is allocated for all atoms, including +# deleted atoms) this approach is not very memory efficient. MengerCubeLvl1 { - # Again, a Menger-cube is constructed of 20 smaller cube-shaped objects. - # Here, the small cube-shaped objects are "AlCells" (defined in "al_cell.lt"). - # I could list out the positions of all 20 AlCells, (and this would be clearer - # for the reader). However instead I built it from a combination of - # two-dimensional and three-dimensional arrays of AlCells (explained below). - - # The next command creates 12 AlCells (2x2x3) at: - # (0.0, 0.0, 0.0), (0.0, 0.0, 4.05), (0.0, 0.0, 8.1) - # (0.0, 8.1, 0.0), (0.0, 8.1, 4.05), (0.0, 8.1, 8.1) - # (8.1, 8.1, 0.0), (8.1, 8.1, 4.05), (8.1, 8.1, 8.1) - - cells_z = new AlCell [2].move(8.10, 0.00, 0.00) - [2].move(0.00, 8.10, 0.00) - [3].move(0.00, 0.00, 4.05) - - # The next command creates 4 AlCells at: (0, 4.05, 0.0), (8.1, 4.05, 0.0), - # (0, 4.05, 8.1), (8.1, 4.05, 8.1) - - cells_xz = new AlCell.move(0.00, 4.05, 0.00) [2].move(8.10, 0.0, 0.0 ) - [2].move(0.0, 0.0, 8.10) - - # The next command creates 4 AlCells at: (4.05, 0, 0.0), (4.05, 8.1, 0.0), - # (4.05, 0, 8.1), (4.05, 8.1, 8.1) - - cells_yz = new AlCell.move(4.05, 0.00, 0.00) [2].move(0.0, 8.10, 0.0 ) - [2].move(0.0, 0.0, 8.10) + cells = new AlCell [3].move(0.00, 0.00, 4.05) + [3].move(0.00, 4.05, 0.00) + [3].move(4.05, 0.00, 0.00) + delete cells[*][1][1] + delete cells[1][*][1] + delete cells[1][1][*] } - - MengerCubeLvl2 { - # Identical arrangement to MengerCube1 (with 3x larger length scales) - cells_z = new MengerCubeLvl1 [2].move(24.3, 0.00, 0.00) - [2].move(0.00, 24.3, 0.00) - [3].move(0.00, 0.00, 12.15) - cells_xz= new MengerCubeLvl1.move(0.0,12.15,0.0) [2].move(24.3, 0.0, 0.0 ) - [2].move(0.0, 0.0, 24.3) - cells_yz= new MengerCubeLvl1.move(12.15,0.0,0.0) [2].move(0.0, 24.3, 0.0 ) - [2].move(0.0, 0.0, 24.3) + cells = new MengerCubeLvl1 [3].move(0.00, 0.00, 12.15) + [3].move(0.00, 12.15, 0.00) + [3].move(12.15, 0.00, 0.00) + delete cells[*][1][1] + delete cells[1][*][1] + delete cells[1][1][*] } - - MengerCubeLvl3 { - # Identical arrangement to MengerCube2 (with 3x larger length scales) - cells_z = new MengerCubeLvl2 [2].move(72.9, 0.00, 0.00) - [2].move(0.00, 72.9, 0.00) - [3].move(0.00, 0.00, 36.45) - cells_xz= new MengerCubeLvl2.move(0.0,36.45,0.0) [2].move(72.9, 0.0, 0.0 ) - [2].move(0.0, 0.0, 72.9) - cells_yz= new MengerCubeLvl2.move(36.45,0.0,0.0) [2].move(0.0, 72.9, 0.0 ) - [2].move(0.0, 0.0, 72.9) + cells = new MengerCubeLvl2 [3].move(0.00, 0.00, 36.45) + [3].move(0.00, 36.45, 0.00) + [3].move(36.45, 0.00, 0.00) + delete cells[*][1][1] + delete cells[1][*][1] + delete cells[1][1][*] } diff --git a/tools/moltemplate/examples/misc_examples/menger_sponge/moltemplate_files/system.lt b/tools/moltemplate/examples/misc_examples/menger_sponge/moltemplate_files/system.lt index 8da5f2d9c9ffb08320e1d3ebaad2fd01364374bf..75ae976b34724353c74aeefeb82caf4f975b98ed 100644 --- a/tools/moltemplate/examples/misc_examples/menger_sponge/moltemplate_files/system.lt +++ b/tools/moltemplate/examples/misc_examples/menger_sponge/moltemplate_files/system.lt @@ -26,9 +26,9 @@ cube_at_001 = new MengerCubeLvl3.move(0.0000, 0.0000, 109.35) ################################################################ -# The next command is not necessary: +# The next command is not necessary. Commenting out: # - create_var { $mol } # <-This forces all of the Al atoms in the crystal +# create_var { $mol } # <-This forces all of the Al atoms in the crystal # # to share the same molecule ID number. -# # Molecule ID numbers are not necessary. Ignore this. +# # (Molecule ID numbers are not necessary.) # diff --git a/tools/moltemplate/examples/misc_examples/pyramids_vs_gravity/README.TXT b/tools/moltemplate/examples/misc_examples/pyramids_vs_LAMMPS/README.txt similarity index 93% rename from tools/moltemplate/examples/misc_examples/pyramids_vs_gravity/README.TXT rename to tools/moltemplate/examples/misc_examples/pyramids_vs_LAMMPS/README.txt index 68f7c2ab035380245b58368e76b87f22db78410b..3e126b04aa758e09c43c0e4060e2b1a03c894f22 100644 --- a/tools/moltemplate/examples/misc_examples/pyramids_vs_gravity/README.TXT +++ b/tools/moltemplate/examples/misc_examples/pyramids_vs_LAMMPS/README.txt @@ -2,22 +2,22 @@ This is a simulation of pyramid-shaped objects resting on an immobile surface (resembling graphene). Each pyramid is built from spherical particles stacked -like cannon-balls (or fruit). Ordinarily, the stack does not move -because the particles at the ground layer are immobilized. However, +like cannon-balls (or fruit). Ordinarily, the stack does not move +because the particles at the ground layer are immobilized. However, given an initial (small) perturbation the pyramids collapse in an avalanche. (In this example, the perturbation is due to shock because we (intentionally) - did not minimize the system before starting the simulation. This shock + did not minimize the system before starting the simulation. This shock causes an avalanche to begin approximately 5000 timesteps later.) The particles roll down the pyramid and bounce off the "ground". The bouncing is due to a repulsive external force which is added artificially. -(See the "run.in" file.) The simulation looks weird without something -to bounce off of. So I added a graphene surface at the bottom as scenery. +(See the "run.in" file.) The simulation looks weird without something +to bounce off of. So I added a graphene surface at the bottom as scenery. (It does not exert any force on the atoms.) (Random comment: This could be a fun example to illustrate the Boltzmann - distribution. Because there is no damping, in a small region, I'm guessing - the particle heights should eventually approach the Boltzmann distribution - for some temperature consistent with the initial potential energy of the + distribution. Because there is no damping, in a small region, I'm guessing + the particle heights should eventually approach the Boltzmann distribution + for some temperature consistent with the initial potential energy of the system.) diff --git a/tools/moltemplate/examples/misc_examples/pyramids_vs_gravity/README_VMD_graphene.txt b/tools/moltemplate/examples/misc_examples/pyramids_vs_LAMMPS/README_VMD_graphene.txt similarity index 97% rename from tools/moltemplate/examples/misc_examples/pyramids_vs_gravity/README_VMD_graphene.txt rename to tools/moltemplate/examples/misc_examples/pyramids_vs_LAMMPS/README_VMD_graphene.txt index 096674f7ff7805d7ffb4ae016d8df38407520229..8bb1bc89f640f67859c49600ed71b1fe73fcb6c6 100644 --- a/tools/moltemplate/examples/misc_examples/pyramids_vs_gravity/README_VMD_graphene.txt +++ b/tools/moltemplate/examples/misc_examples/pyramids_vs_LAMMPS/README_VMD_graphene.txt @@ -8,9 +8,9 @@ made of graphene. The instructions in this file explain how to build the graphene (representing the "ground") using VMD instead of with moltemplate. Why do this? VMD can create graphene sheets with bonds connecting neighboring carbon atoms, -(which looks more pretty). However, as of 2013-4-29, moltemplate currently -can not generate these bonds. It does not matter physically in this case, -because the graphene sheet used here does not move. It is only used as +(which looks more pretty). However, as of 2013-4-29, moltemplate currently +can not generate these bonds. It does not matter physically in this case, +because the graphene sheet used here does not move. It is only used as scenery, to graphically represent the ground surface. Select "Extensions"->"Modeling"->"Carbon Nanotube Builder" diff --git a/tools/moltemplate/examples/misc_examples/pyramids_vs_LAMMPS/README_setup.sh b/tools/moltemplate/examples/misc_examples/pyramids_vs_LAMMPS/README_setup.sh new file mode 100755 index 0000000000000000000000000000000000000000..cf22ee0fa1868664c5f3cc786d382d1b511097d5 --- /dev/null +++ b/tools/moltemplate/examples/misc_examples/pyramids_vs_LAMMPS/README_setup.sh @@ -0,0 +1,23 @@ +# Use these commands to generate the LAMMPS input script and data file +# (and other auxilliary files): + + +# Create LAMMPS input files this way: +cd moltemplate_files + + # run moltemplate + + moltemplate.sh system.lt + + # This will generate various files with names ending in *.in* and *.data. + # These files are the input files directly read by LAMMPS. Move them to + # the parent directory (or wherever you plan to run the simulation). + + mv -f system.in* system.data ../ + + # Optional: + # The "./output_ttree/" directory is full of temporary files generated by + # moltemplate. They can be useful for debugging, but are usually thrown away. + rm -rf output_ttree/ + +cd ../ diff --git a/tools/moltemplate/examples/misc_examples/pyramids_vs_gravity/README_visualize.txt b/tools/moltemplate/examples/misc_examples/pyramids_vs_LAMMPS/README_visualize.txt similarity index 93% rename from tools/moltemplate/examples/misc_examples/pyramids_vs_gravity/README_visualize.txt rename to tools/moltemplate/examples/misc_examples/pyramids_vs_LAMMPS/README_visualize.txt index 10198fc92f2c3948c3e99d4eb07b357ba0511c1d..e2c77bafb5796280979f76cc9014af5dfce45f7a 100644 --- a/tools/moltemplate/examples/misc_examples/pyramids_vs_gravity/README_visualize.txt +++ b/tools/moltemplate/examples/misc_examples/pyramids_vs_LAMMPS/README_visualize.txt @@ -3,7 +3,7 @@ 1) Build a PSF file for use in viewing with VMD. -This step works with VMD 1.9 and topotools 1.2. +This step works with VMD 1.9 and topotools 1.2. (Older versions, like VMD 1.8.6, don't support this.) @@ -16,7 +16,7 @@ c) Enter: topo readlammpsdata system.data full animate write psf system.psf -2) +2) Later, to Load a trajectory in VMD: @@ -30,17 +30,17 @@ Later, to Load a trajectory in VMD: ---- A note on trajectory format: ----- If the trajectory is a DUMP file, then make sure the it contains the -information you need for pbctools (see below. I've been using this +information you need for pbctools (see below. I've been using this command in my LAMMPS scripts to create the trajectories: dump 1 all custom 5000 DUMP_FILE.lammpstrj id mol type x y z ix iy iz -It's a good idea to use an atom_style which supports molecule-ID numbers -so that you can assign a molecule-ID number to each atom. (I think this +It's a good idea to use an atom_style which supports molecule-ID numbers +so that you can assign a molecule-ID number to each atom. (I think this is needed to wrap atom coordinates without breaking molecules in half.) -Of course, you don't have to save your trajectories in DUMP format, -(other formats like DCD work fine) I just mention dump files +Of course, you don't have to save your trajectories in DUMP format, +(other formats like DCD work fine) I just mention dump files because these are the files I'm familiar with. 3) ----- Wrap the coordinates to the unit cell @@ -61,12 +61,12 @@ d) Try entering these commands: pbc wrap -compound res -all -shiftcenterrel {-0.50 -0.52 0.0 } pbc box -shiftcenterrel {-0.50 -0.52 0.0 } - # Alternately if you have a solute whose atoms are all of type 1, + # Alternately if you have a solute whose atoms are all of type 1, # then you can also try this to center the box around it: pbc wrap -sel type=1 -all -centersel type=2 -center com -4) Optional: If you like, change the atom types in the PSF file so +4) Optional: If you like, change the atom types in the PSF file so that VMD recognizes the atom types, use something like: sed -e 's/ 1 1 / C C /g' < system.psf > temp1.psf diff --git a/tools/moltemplate/examples/misc_examples/pyramids_vs_gravity/images/pyramids_vs_gravity_t=04800steps_LR.jpg b/tools/moltemplate/examples/misc_examples/pyramids_vs_LAMMPS/images/pyramids_vs_gravity_t=04800steps_LR.jpg similarity index 100% rename from tools/moltemplate/examples/misc_examples/pyramids_vs_gravity/images/pyramids_vs_gravity_t=04800steps_LR.jpg rename to tools/moltemplate/examples/misc_examples/pyramids_vs_LAMMPS/images/pyramids_vs_gravity_t=04800steps_LR.jpg diff --git a/tools/moltemplate/examples/misc_examples/pyramids_vs_gravity/images/pyramids_vs_gravity_t=12200steps_LR.jpg b/tools/moltemplate/examples/misc_examples/pyramids_vs_LAMMPS/images/pyramids_vs_gravity_t=12200steps_LR.jpg similarity index 100% rename from tools/moltemplate/examples/misc_examples/pyramids_vs_gravity/images/pyramids_vs_gravity_t=12200steps_LR.jpg rename to tools/moltemplate/examples/misc_examples/pyramids_vs_LAMMPS/images/pyramids_vs_gravity_t=12200steps_LR.jpg diff --git a/tools/moltemplate/examples/misc_examples/pyramids_vs_gravity/images/pyramids_vs_gravity_t=33000steps_LR.jpg b/tools/moltemplate/examples/misc_examples/pyramids_vs_LAMMPS/images/pyramids_vs_gravity_t=33000steps_LR.jpg similarity index 100% rename from tools/moltemplate/examples/misc_examples/pyramids_vs_gravity/images/pyramids_vs_gravity_t=33000steps_LR.jpg rename to tools/moltemplate/examples/misc_examples/pyramids_vs_LAMMPS/images/pyramids_vs_gravity_t=33000steps_LR.jpg diff --git a/tools/moltemplate/examples/misc_examples/pyramids_vs_gravity/moltemplate_files/README.sh b/tools/moltemplate/examples/misc_examples/pyramids_vs_LAMMPS/moltemplate_files/README.sh similarity index 98% rename from tools/moltemplate/examples/misc_examples/pyramids_vs_gravity/moltemplate_files/README.sh rename to tools/moltemplate/examples/misc_examples/pyramids_vs_LAMMPS/moltemplate_files/README.sh index 365ab9fb03f39a7b595febe2fee327baef6e5bd2..1f083af18e430235608acdfb2553ec5ca1e9aa96 100755 --- a/tools/moltemplate/examples/misc_examples/pyramids_vs_gravity/moltemplate_files/README.sh +++ b/tools/moltemplate/examples/misc_examples/pyramids_vs_LAMMPS/moltemplate_files/README.sh @@ -8,8 +8,8 @@ moltemplate.sh system.lt # This will generate:system.data, system.in, system.in.init, system.in.settings -# +# # The output_ttree/ directory will contain files like "Data Atoms", "Data Bonds" # which contain the corresponding structures of the system.data file. -# (This might make it slightly easier to combine them with atom data and +# (This might make it slightly easier to combine them with atom data and # bond data generated by other programs, such as topotools, for example.) diff --git a/tools/moltemplate/examples/misc_examples/pyramids_vs_gravity/moltemplate_files/graphene.lt b/tools/moltemplate/examples/misc_examples/pyramids_vs_LAMMPS/moltemplate_files/graphene.lt similarity index 100% rename from tools/moltemplate/examples/misc_examples/pyramids_vs_gravity/moltemplate_files/graphene.lt rename to tools/moltemplate/examples/misc_examples/pyramids_vs_LAMMPS/moltemplate_files/graphene.lt diff --git a/tools/moltemplate/examples/misc_examples/pyramids_vs_gravity/moltemplate_files/graphene_wall.lt b/tools/moltemplate/examples/misc_examples/pyramids_vs_LAMMPS/moltemplate_files/graphene_wall.lt similarity index 100% rename from tools/moltemplate/examples/misc_examples/pyramids_vs_gravity/moltemplate_files/graphene_wall.lt rename to tools/moltemplate/examples/misc_examples/pyramids_vs_LAMMPS/moltemplate_files/graphene_wall.lt diff --git a/tools/moltemplate/examples/misc_examples/pyramids_vs_gravity/moltemplate_files/pyramids.lt b/tools/moltemplate/examples/misc_examples/pyramids_vs_LAMMPS/moltemplate_files/pyramids.lt similarity index 100% rename from tools/moltemplate/examples/misc_examples/pyramids_vs_gravity/moltemplate_files/pyramids.lt rename to tools/moltemplate/examples/misc_examples/pyramids_vs_LAMMPS/moltemplate_files/pyramids.lt diff --git a/tools/moltemplate/examples/misc_examples/pyramids_vs_gravity/moltemplate_files/system.lt b/tools/moltemplate/examples/misc_examples/pyramids_vs_LAMMPS/moltemplate_files/system.lt similarity index 100% rename from tools/moltemplate/examples/misc_examples/pyramids_vs_gravity/moltemplate_files/system.lt rename to tools/moltemplate/examples/misc_examples/pyramids_vs_LAMMPS/moltemplate_files/system.lt diff --git a/tools/moltemplate/examples/misc_examples/pyramids_vs_gravity/run.in b/tools/moltemplate/examples/misc_examples/pyramids_vs_LAMMPS/run.in similarity index 100% rename from tools/moltemplate/examples/misc_examples/pyramids_vs_gravity/run.in rename to tools/moltemplate/examples/misc_examples/pyramids_vs_LAMMPS/run.in diff --git a/tools/moltemplate/examples/misc_examples/pyramids_vs_gravity/README_setup.sh b/tools/moltemplate/examples/misc_examples/pyramids_vs_gravity/README_setup.sh deleted file mode 100755 index acc5fbbaad49b3a92ac95ce1afd7eab2b952c70b..0000000000000000000000000000000000000000 --- a/tools/moltemplate/examples/misc_examples/pyramids_vs_gravity/README_setup.sh +++ /dev/null @@ -1,23 +0,0 @@ -# Use these commands to generate the LAMMPS input script and data file -# (and other auxilliary files): - - -# Create LAMMPS input files this way: -cd moltemplate_files - - # run moltemplate - - moltemplate.sh system.lt - - # This will generate various files with names ending in *.in* and *.data. - # These files are the input files directly read by LAMMPS. Move them to - # the parent directory (or wherever you plan to run the simulation). - - mv -f system.in* system.data ../ - - # Optional: - # The "./output_ttree/" directory is full of temporary files generated by - # moltemplate. They can be useful for debugging, but are usually thrown away. - rm -rf output_ttree/ - -cd ../ diff --git a/tools/moltemplate/examples/misc_examples/twelve_days/README.sh b/tools/moltemplate/examples/misc_examples/twelve_days/README.sh new file mode 100644 index 0000000000000000000000000000000000000000..c6c839dc58287bbeeaf4bf55833cbd982ddd2c45 --- /dev/null +++ b/tools/moltemplate/examples/misc_examples/twelve_days/README.sh @@ -0,0 +1,9 @@ +# Try this: + +moltemplate.sh twelve_days.lt + +# Moltemplate is a hierarchical template renderer. It can be used +# to create other kinds of text files which are not related to LAMMPS. +# +# Happy holidays +# -andrew 2016-12-20 diff --git a/tools/moltemplate/examples/misc_examples/twelve_days/twelve_days.lt b/tools/moltemplate/examples/misc_examples/twelve_days/twelve_days.lt new file mode 100644 index 0000000000000000000000000000000000000000..6610649cb25e1b23ffe8d767d597435f7be55236 --- /dev/null +++ b/tools/moltemplate/examples/misc_examples/twelve_days/twelve_days.lt @@ -0,0 +1,19 @@ +Msg {write() { On the ${day}th day of Christmas, my true love gave to me: +} +} +Gifts1 {write(){@day partridge in a pear tree. + +}} Gifts2 {write(){@day turtle doves, and +} gifts = new Gifts1 } Gifts3 {write(){@day french hens, +} gifts = new Gifts2 } Gifts4 {write(){@day calling birds, +} gifts = new Gifts3 } Gifts5 {write(){@day golden rings, +} gifts = new Gifts4 } Gifts6 {write(){@day geese a-laying, +} gifts = new Gifts5 } Gifts7 {write(){@day swans a-swimming, +} gifts = new Gifts6 } Gifts8 {write(){@day maids a-milking, +} gifts = new Gifts7 } Gifts9 {write(){@day ladies dancing, +} gifts = new Gifts8 } Gifts10 {write(){@day lords a-leaping, +} gifts = new Gifts9 } Gifts11 {write(){@day pipers piping, +} gifts = new Gifts10 } Gifts12 {write(){@day drummers drumming, +} gifts = new Gifts11 } +Msg1 inherits Msg{g = new Gifts1} Msg2 inherits Msg{g = new Gifts2} Msg3 inherits Msg{g = new Gifts3} Msg4 inherits Msg{g = new Gifts4} Msg5 inherits Msg{g = new Gifts5} Msg6 inherits Msg{g = new Gifts6} Msg7 inherits Msg{g = new Gifts7} Msg8 inherits Msg{g = new Gifts8} Msg9 inherits Msg{g = new Gifts9} Msg10 inherits Msg{g = new Gifts10} Msg11 inherits Msg{g = new Gifts11} Msg12 inherits Msg{g = new Gifts12} +msg1 = new Msg1 msg2 = new Msg2 msg3 = new Msg3 msg4 = new Msg4 msg5 = new Msg5 msg6 = new Msg6 msg7 = new Msg7 msg8 = new Msg8 msg9 = new Msg9 msg10 = new Msg10 msg11 = new Msg11 msg12 = new Msg12 diff --git a/tools/moltemplate/moltemplate/__init__.py b/tools/moltemplate/moltemplate/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..b9601769e1f1d1d62ac8e0c28facb6f1b9263047 --- /dev/null +++ b/tools/moltemplate/moltemplate/__init__.py @@ -0,0 +1,18 @@ +from .ttree import BasicUISettings, BasicUIParseArgs, EraseTemplateFiles, \ + StackableCommand, PopCommand, PopRightCommand, PopLeftCommand, \ + PushCommand, PushLeftCommand, PushRightCommand, ScopeCommand, \ + WriteVarBindingsFile, StaticObj, InstanceObj, \ + BasicUI, ScopeBegin, ScopeEnd, WriteFileCommand, Render +from .ttree_lex import TtreeShlex, split, LineLex, SplitQuotedString, \ + EscCharStrToChar, SafelyEncodeString, RemoveOuterQuotes, MaxLenStr, \ + HasWildCard, InputError, ErrorLeader, SrcLoc, OSrcLoc, TextBlock, VarRef, \ + VarNPtr, VarBinding, SplitTemplate, SplitTemplateMulti, TableFromTemplate, \ + ExtractCatName, DeleteLinesWithBadVars, TemplateLexer +from .lttree_styles import AtomStyle2ColNames, ColNames2AidAtypeMolid, \ + ColNames2Coords, ColNames2Vects, ColNames2Vects, data_atoms, data_masses +from .ettree_styles import \ + LinesWSlashes, SplitMultiDelims, SplitAtomLine, \ + iEsptAtomCoords, iEsptAtomVects, iEsptAtomType, iEsptAtomID +from .ttree_matrix_stack import MultMat, MatToStr, LinTransform, \ + AffineTransform, AffineCompose, CopyMat, ScaleMat, RotMatAXYZ, \ + CrossProd, DotProd, Length, Normalize, RotMatXYZXYZ, MultiAffineStack diff --git a/tools/moltemplate/src/bonds_by_type.py b/tools/moltemplate/moltemplate/bonds_by_type.py old mode 100644 new mode 100755 similarity index 57% rename from tools/moltemplate/src/bonds_by_type.py rename to tools/moltemplate/moltemplate/bonds_by_type.py index 919cfa51af7369094d92d642d333099a4de96a74..6b36911f21d65d4dff6a222e9443370fdc6f3290 --- a/tools/moltemplate/src/bonds_by_type.py +++ b/tools/moltemplate/moltemplate/bonds_by_type.py @@ -21,15 +21,21 @@ """ -# -bonds-ids-atom-pairs bonds_ids_atom_pairs.data \\ + +g_program_name = __file__.split('/')[-1] # = 'bonds_by_type.py' +g_date_str = '2016-12-21' +g_version_str = '0.12.0' + import sys -#from extract_lammps_data import * -#from nbody_by_type_lib import GenInteractions_str -import ttree_lex -#from ttree_lex import * -from lttree_styles import AtomStyle2ColNames, ColNames2AidAtypeMolid +try: + from . import ttree_lex + from .lttree_styles import AtomStyle2ColNames, ColNames2AidAtypeMolid +except (SystemError, ValueError): + # not installed as a package + import ttree_lex + from lttree_styles import AtomStyle2ColNames, ColNames2AidAtypeMolid def LookupBondTypes(bond_types, @@ -43,13 +49,13 @@ def LookupBondTypes(bond_types, prefix='', suffix='', bond_ids_offset=0): - #report_progress = False): + # report_progress = False): """ LookupBondTypes() looks up bond types. Output: - ...It looks up the corresponding type of each bond and store it in the - "bond_types" list. (If the bond_ids were not specified by the user, + ...It looks up the corresponding type of each bond and store it in the + "bond_types" list. (If the bond_ids were not specified by the user, generate them and store them in the bond_ids list.) @@ -63,7 +69,7 @@ def LookupBondTypes(bond_types, ...and a list of bond-types-as-a-function-of-atom-types stored in the lines_bondsbytype (from the "Data Bonds By Type" section) - Generated bond_ids (if applicable) are of the form + Generated bond_ids (if applicable) are of the form prefix + str(number) + suffix (where "number" begins at bond_ids_offset+1) @@ -84,8 +90,9 @@ def LookupBondTypes(bond_types, if len(line) > 0: tokens = ttree_lex.SplitQuotedString(line) if ((len(tokens) <= i_atomid) or (len(tokens) <= i_atomtype)): - sys.stderr.write("\""+line+"\"\n") - raise(ttree_lex.InputError('Error not enough columns on line '+str(iv+1)+' of \"Atoms\" section.')) + sys.stderr.write("\"" + line + "\"\n") + raise(ttree_lex.InputError( + 'Error not enough columns on line ' + str(iv + 1) + ' of \"Atoms\" section.')) tokens = ttree_lex.SplitQuotedString(line) atomid = ttree_lex.EscCharStrToChar(tokens[i_atomid]) atomids.append(atomid) @@ -93,7 +100,6 @@ def LookupBondTypes(bond_types, atomtypes.append(atomtype) atomids2types[atomid] = atomtype - assert(isinstance(bond_ids, list)) assert(isinstance(bond_types, list)) assert(isinstance(bond_pairs, list)) @@ -116,23 +122,25 @@ def LookupBondTypes(bond_types, if section_name == "Data Bonds AtomId AtomId": if len(tokens) == 2: bondid_n = bond_ids_offset + len(bond_ids) + 1 - bond_ids.append(prefix+str(bondid_n)+suffix) - bond_pairs.append( (ttree_lex.EscCharStrToChar(tokens[0]), - ttree_lex.EscCharStrToChar(tokens[1])) ) + bond_ids.append(prefix + str(bondid_n) + suffix) + bond_pairs.append((ttree_lex.EscCharStrToChar(tokens[0]), + ttree_lex.EscCharStrToChar(tokens[1]))) else: - raise(ttree_lex.InputError('Incorrect number of columns on line '+str(ie+1)+' of \"'+section_name+'\" section.')) + raise(ttree_lex.InputError('Incorrect number of columns on line ' + + str(ie + 1) + ' of \"' + section_name + '\" section.')) elif section_name == "Data Bond List": if len(tokens) == 3: bond_ids.append(ttree_lex.EscCharStrToChar(tokens[0])) - bond_pairs.append( (ttree_lex.EscCharStrToChar(tokens[1]), - ttree_lex.EscCharStrToChar(tokens[2])) ) + bond_pairs.append((ttree_lex.EscCharStrToChar(tokens[1]), + ttree_lex.EscCharStrToChar(tokens[2]))) else: - raise(ttree_lex.InputError('Incorrect number of columns on line '+str(ie+1)+' of \"'+section_name+'\" section.')) + raise(ttree_lex.InputError('Incorrect number of columns on line ' + + str(ie + 1) + ' of \"' + section_name + '\" section.')) else: - raise(ttree_lex.InputError('Internal Error ('+g_program_name+'): Unknown section name: \"'+section_name+'\"')) - + raise(ttree_lex.InputError('Internal Error (' + g_program_name + + '): Unknown section name: \"' + section_name + '\"')) assert(len(bond_types) == 0) typepattern_to_coefftypes = [] @@ -147,28 +155,26 @@ def LookupBondTypes(bond_types, if (len(tokens) != 3): raise(ttree_lex.InputError('Error: Wrong number of columns in the \"Bonds By Type\" section of data file.\n' - 'Offending line:\n'+ - '\"'+line+'\"\n' - 'Expected 3 columns\n')) + 'Offending line:\n' + + '\"' + line + '\"\n' + 'Expected 3 columns\n')) coefftype = ttree_lex.EscCharStrToChar(tokens[0]) typepattern = [] for typestr in tokens[1:]: - if ((len(typestr) >= 2) and - (typestr[0] == '/') and (typestr[-1] == '/')): + if ((len(typestr) >= 2) and + (typestr[0] == '/') and (typestr[-1] == '/')): regex_str = typestr[1:-1] - typepattern.append( re.compile(regex_str) ) + typepattern.append(re.compile(regex_str)) else: typepattern.append(ttree_lex.EscCharStrToChar(typestr)) typepattern_to_coefftypes.append([typepattern, coefftype]) - - assert(len(bond_ids) == len(bond_pairs)) - for ie in range(0,len(bond_ids)): + for ie in range(0, len(bond_ids)): bond_types.append(None) for ie in range(0, len(bond_ids)): @@ -176,20 +182,20 @@ def LookupBondTypes(bond_types, (atomid1, atomid2) = bond_pairs[ie] if atomid1 not in atomids2types: - raise ttree_lex.InputError('Error: atom \"'+atomid1+'\" not defined in \"Data Atoms\".\n' + raise ttree_lex.InputError('Error: atom \"' + atomid1 + '\" not defined in \"Data Atoms\".\n' ' This usually happens when the user mistypes one of the names of the\n' ' $atoms in either a \"Data Atoms\" or \"Data Bond List\" section.\n' ' To find out where the mistake occured, search the \n' ' \"ttree_assignments.txt\" file for:\n' - ' \"'+atomid1+'\"\n') + ' \"' + atomid1 + '\"\n') if atomid2 not in atomids2types: - raise ttree_lex.InputError('Error: atom \"'+atomid2+'\" not defined in \"Data Atoms\".\n' + raise ttree_lex.InputError('Error: atom \"' + atomid2 + '\" not defined in \"Data Atoms\".\n' ' This usually happens when the user mistypes one of the names of the\n' ' $atoms in either a \"Data Atoms\" or \"Data Bond List\" section.\n' ' To find out where the mistake occured, search the \n' ' \"ttree_assignments.txt\" file for:\n' - ' \"'+atomid2+'\"\n') + ' \"' + atomid2 + '\"\n') atomtype1 = atomids2types[atomid1] atomtype2 = atomids2types[atomid2] @@ -198,7 +204,7 @@ def LookupBondTypes(bond_types, # use string comparisons to check if atom types match the pattern if (ttree_lex.MatchesAll((atomtype1, atomtype2), typepattern) or - ttree_lex.MatchesAll((atomtype2, atomtype1), typepattern)): + ttree_lex.MatchesAll((atomtype2, atomtype1), typepattern)): # ("MatchesAll()" defined in "ttree_lex.py") bond_types[ie] = coefftype @@ -209,20 +215,14 @@ def LookupBondTypes(bond_types, atomtype1 = atomids2types[atomid1] atomtype2 = atomids2types[atomid2] raise ttree_lex.InputError('Error: No bond types defined for the bond between\n' - ' atoms '+atomid1+' (type '+atomtype1+')\n' - ' and '+atomid2+' (type '+atomtype2+')\n') - - + ' atoms ' + atomid1 + + ' (type ' + atomtype1 + ')\n' + ' and ' + atomid2 + ' (type ' + atomtype2 + ')\n') -if __name__ == "__main__": - - g_program_name = __file__.split('/')[-1] # = 'nbody_by_type.py' - g_date_str = '2015-11-09' - g_version_str = '0.11' - - ####### Main Code Below: ####### - sys.stderr.write(g_program_name+' v'+g_version_str+' '+g_date_str+' ') +def main(): + sys.stderr.write(g_program_name + ' v' + + g_version_str + ' ' + g_date_str + ' ') if sys.version < '3': sys.stderr.write(' (python version < 3)\n') else: @@ -234,13 +234,12 @@ if __name__ == "__main__": fname_bondsbytype = None section_name = 'Data Bond List' # (This will be replaced later.) atom_style = 'full' - prefix='' - suffix='' + prefix = '' + suffix = '' bond_lack_types = False argv = [arg for arg in sys.argv] - # Loop over the remaining arguments not processed yet. # These arguments are specific to the lttree.py program # and are not understood by ttree.py: @@ -248,85 +247,88 @@ if __name__ == "__main__": while i < len(argv): #sys.stderr.write('argv['+str(i)+'] = \"'+argv[i]+'\"\n') if ((argv[i].lower() == '-?') or - (argv[i].lower() == '--?') or - (argv[i].lower() == '-help') or - (argv[i].lower() == '-help')): - if i+1 >= len(argv): - sys.stdout.write(man_page_text+'\n') + (argv[i].lower() == '--?') or + (argv[i].lower() == '-help') or + (argv[i].lower() == '-help')): + if i + 1 >= len(argv): + sys.stdout.write(man_page_text + '\n') sys.exit(0) elif argv[i].lower() == '-atoms': - if i+1 >= len(argv): - raise ttree_lex.InputError('Error: '+argv[i]+' flag should be followed by a file name containing lines of\n' - ' text which might appear in the "Atoms" section of a LAMMPS data file.\n') - fname_atoms = argv[i+1] - del(argv[i:i+2]) + if i + 1 >= len(argv): + raise ttree_lex.InputError('Error: ' + argv[i] + ' flag should be followed by a file name containing lines of\n' + ' text which might appear in the "Atoms" section of a LAMMPS data file.\n') + fname_atoms = argv[i + 1] + del(argv[i:i + 2]) elif argv[i].lower() == '-bonds': - if i+1 >= len(argv): - raise ttree_lex.InputError('Error: '+argv[i]+' flag should be followed by a file name containing lines of\n' - ' text which might appear in the "Bonds" section of a LAMMPS data file.\n') - fname_bond_list = argv[i+1] - del(argv[i:i+2]) + if i + 1 >= len(argv): + raise ttree_lex.InputError('Error: ' + argv[i] + ' flag should be followed by a file name containing lines of\n' + ' text which might appear in the "Bonds" section of a LAMMPS data file.\n') + fname_bond_list = argv[i + 1] + del(argv[i:i + 2]) elif argv[i].lower() == '-bond-list': - if i+1 >= len(argv): - raise ttree_lex.InputError('Error: '+argv[i]+' flag should be followed by a file name\n') - #raise ttree_lex.InputError('Error: '+argv[i]+' flag should be followed by a file name containing lines of\n' + if i + 1 >= len(argv): + raise ttree_lex.InputError( + 'Error: ' + argv[i] + ' flag should be followed by a file name\n') + # raise ttree_lex.InputError('Error: '+argv[i]+' flag should be followed by a file name containing lines of\n' # ' text which might appear in the "Bonds No Types" section of a LAMMPS data file.\n') - fname_bond_list = argv[i+1] + fname_bond_list = argv[i + 1] section_name = "Data Bond List" - del(argv[i:i+2]) + del(argv[i:i + 2]) elif argv[i].lower() == '-bondsbytype': - if i+1 >= len(argv): - raise ttree_lex.InputError('Error: '+argv[i]+' flag should be followed by a file name\n') + if i + 1 >= len(argv): + raise ttree_lex.InputError( + 'Error: ' + argv[i] + ' flag should be followed by a file name\n') - #raise ttree_lex.InputError('Error: '+argv[i]+' flag should be followed by a file name containing\n' + # raise ttree_lex.InputError('Error: '+argv[i]+' flag should be followed by a file name containing\n' # ' text which might appear in the "'+section_name+' By Type" section\n' # ' of a LAMMPS data file.\n') - fname_bondsbytype = argv[i+1] - del(argv[i:i+2]) - - elif ((argv[i].lower() == '-atom-style') or - (argv[i].lower() == '-atom_style')): - if i+1 >= len(argv): - raise ttree_lex.InputError('Error: '+argv[i]+' flag should be followed by a an atom_style name.\n' - ' (Or single quoted string which includes a space-separated\n' - ' list of column names.)\n') - atom_style = argv[i+1] - del(argv[i:i+2]) + fname_bondsbytype = argv[i + 1] + del(argv[i:i + 2]) + + elif ((argv[i].lower() == '-atom-style') or + (argv[i].lower() == '-atom_style')): + if i + 1 >= len(argv): + raise ttree_lex.InputError('Error: ' + argv[i] + ' flag should be followed by a an atom_style name.\n' + ' (Or single quoted string which includes a space-separated\n' + ' list of column names.)\n') + atom_style = argv[i + 1] + del(argv[i:i + 2]) elif argv[i].lower() == '-prefix': - if i+1 >= len(argv): - raise ttree_lex.InputError('Error: '+argv[i]+' flag should be followed by a prefix string\n' - ' (a string you want to appear to the left of the integer\n' - ' which counts the bonded interactions you have generated.)\n') - prefix = argv[i+1] - del(argv[i:i+2]) + if i + 1 >= len(argv): + raise ttree_lex.InputError('Error: ' + argv[i] + ' flag should be followed by a prefix string\n' + ' (a string you want to appear to the left of the integer\n' + ' which counts the bonded interactions you have generated.)\n') + prefix = argv[i + 1] + del(argv[i:i + 2]) elif argv[i].lower() == '-suffix': - if i+1 >= len(argv): - raise ttree_lex.InputError('Error: '+argv[i]+' flag should be followed by a suffix string\n' - ' (a string you want to appear to the right of the integer\n' - ' which counts the bonded interactions you have generated.)\n') - prefix = argv[i+1] - del(argv[i:i+2]) + if i + 1 >= len(argv): + raise ttree_lex.InputError('Error: ' + argv[i] + ' flag should be followed by a suffix string\n' + ' (a string you want to appear to the right of the integer\n' + ' which counts the bonded interactions you have generated.)\n') + prefix = argv[i + 1] + del(argv[i:i + 2]) elif argv[i][0] == '-': - raise ttree_lex.InputError('Error('+g_program_name+'):\n' - 'Unrecognized command line argument \"'+argv[i]+'\"\n') + raise ttree_lex.InputError('Error(' + g_program_name + '):\n' + 'Unrecogized command line argument \"' + argv[i] + '\"\n') else: i += 1 if len(argv) != 1: # if there are more than 2 remaining arguments, - problem_args = ['\"'+arg+'\"' for arg in argv[1:]] - raise ttree_lex.InputError('Syntax Error('+g_program_name+'):\n\n' - ' Problem with argument list.\n' - ' The remaining arguments are:\n\n' - ' '+(' '.join(problem_args))+'\n\n' - ' (The actual problem may be earlier in the argument list.)\n') + problem_args = ['\"' + arg + '\"' for arg in argv[1:]] + raise ttree_lex.InputError('Syntax Error(' + g_program_name + '):\n\n' + ' Problem with argument list.\n' + ' The remaining arguments are:\n\n' + ' ' + + (' '.join(problem_args)) + '\n\n' + ' (The actual problem may be earlier in the argument list.)\n') bond_types = [] bond_ids = [] @@ -355,7 +357,7 @@ if __name__ == "__main__": assert(len(bond_types) == len(bond_ids) == len(bond_pairs)) - ie=0 + ie = 0 N = len(bond_types) for ie in range(0, N): sys.stdout.write(bond_ids[ie] + ' ' + @@ -363,8 +365,12 @@ if __name__ == "__main__": bond_pairs[ie][0] + ' ' + bond_pairs[ie][1] + '\n') - except (ValueError, ttree_lex.InputError) as err: - sys.stderr.write('\n'+str(err)+'\n') + sys.stderr.write('\n' + str(err) + '\n') sys.exit(-1) + return + + +if __name__ == "__main__": + main() diff --git a/tools/moltemplate/src/chargepairs_by_type.py b/tools/moltemplate/moltemplate/charge_by_bond.py old mode 100644 new mode 100755 similarity index 61% rename from tools/moltemplate/src/chargepairs_by_type.py rename to tools/moltemplate/moltemplate/charge_by_bond.py index 3de8131141ee9342ade0b81c3a30dd39bc786ce7..b8d7c756461d2d4229b871d7ee030e9390e92ab7 --- a/tools/moltemplate/src/chargepairs_by_type.py +++ b/tools/moltemplate/moltemplate/charge_by_bond.py @@ -6,46 +6,34 @@ # Copyright (c) 2011, Regents of the University of California # All rights reserved. -""" - chargepairs_by_type.py reads a LAMMPS data file (or an excerpt of a LAMMPS) - data file containing bonded many-body interactions by atom type - (and bond type), and generates a list of atom charges in LAMMPS input - script format consistent with those types (to the standard out). - - Typical Usage: - - chargepairs_by_type.py -atoms atoms.data \\ - -bonds bonds.data \\ - -chargepairsbytype chargepairs_by_type.data \\ - > list_of_atom_charges.in - -""" - -# -bonds-ids-atom-pairs bonds_ids_atom_pairs.data \\ import sys +import re from collections import defaultdict -#from extract_lammps_data import * -#from nbody_by_type_lib import GenInteractions_str -import ttree_lex -#from ttree_lex import * -from lttree_styles import AtomStyle2ColNames, ColNames2AidAtypeMolid + +try: + from . import ttree_lex + from .lttree_styles import AtomStyle2ColNames, ColNames2AidAtypeMolid +except (SystemError, ValueError): + # not installed as a package + import ttree_lex + from lttree_styles import AtomStyle2ColNames, ColNames2AidAtypeMolid def LookupChargePairs(chargebyatomid, - #bond_ids, - #bond_pairs, + # bond_ids, + # bond_pairs, lines_atoms, lines_bonds, lines_bond_list, - lines_chargepairsbytype, + lines_chargebybond, atom_style, section_name, prefix='', suffix=''): - #bond_ids_offset=0): - #report_progress = False): + # bond_ids_offset=0): + # report_progress = False): """ LookupChargePairs() looks up partial-charge pair contributions from the types of atoms participating in a bond. @@ -63,7 +51,7 @@ def LookupChargePairs(chargebyatomid, stored in the lines_atoms variable (from the "Data Atoms" section) ...and a list of charge-pairs-as-a-function-of-atom-types - stored in the lines_chargepairsbytype (from the "Data Bonds By Type" section) + stored in the lines_chargebybond (from the "Data Bonds By Type" section) """ @@ -82,8 +70,9 @@ def LookupChargePairs(chargebyatomid, if len(line) > 0: tokens = ttree_lex.SplitQuotedString(line) if ((len(tokens) <= i_atomid) or (len(tokens) <= i_atomtype)): - sys.stderr.write("\""+line+"\"\n") - raise(ttree_lex.InputError('Error not enough columns on line '+str(iv+1)+' of \"Atoms\" section.')) + sys.stderr.write("\"" + line + "\"\n") + raise(ttree_lex.InputError( + 'Error not enough columns on line ' + str(iv + 1) + ' of \"Atoms\" section.')) tokens = ttree_lex.SplitQuotedString(line) atomid = ttree_lex.EscCharStrToChar(tokens[i_atomid]) atomids.append(atomid) @@ -91,7 +80,6 @@ def LookupChargePairs(chargebyatomid, atomtypes.append(atomtype) atomids2types[atomid] = atomtype - #assert(isinstance(bond_ids, list)) #assert(isinstance(bond_types, list)) #assert(isinstance(bond_pairs, list)) @@ -109,12 +97,12 @@ def LookupChargePairs(chargebyatomid, continue tokens = ttree_lex.SplitQuotedString(line) if len(tokens) == 3: - #bond_ids.append(ttree_lex.EscCharStrToChar(tokens[0])) - bond_pairs.append( (ttree_lex.EscCharStrToChar(tokens[1]), - ttree_lex.EscCharStrToChar(tokens[2])) ) + # bond_ids.append(ttree_lex.EscCharStrToChar(tokens[0])) + bond_pairs.append((ttree_lex.EscCharStrToChar(tokens[1]), + ttree_lex.EscCharStrToChar(tokens[2]))) else: - raise(ttree_lex.InputError('Incorrect number of columns on line '+str(ie+1)+' of \"'+section_name+'\" section.')) - + raise(ttree_lex.InputError('Incorrect number of columns on line ' + + str(ie + 1) + ' of \"' + section_name + '\" section.')) for ie in range(0, len(lines_bonds)): line = lines_bonds[ie].strip() @@ -125,16 +113,15 @@ def LookupChargePairs(chargebyatomid, continue tokens = ttree_lex.SplitQuotedString(line) if len(tokens) == 4: - #bond_ids.append(ttree_lex.EscCharStrToChar(tokens[0])) - #bond_types.append(ttree_lex.EscCharStrToChar(tokens[1])) - bond_pairs.append( (ttree_lex.EscCharStrToChar(tokens[2]), - ttree_lex.EscCharStrToChar(tokens[3])) ) + # bond_ids.append(ttree_lex.EscCharStrToChar(tokens[0])) + # bond_types.append(ttree_lex.EscCharStrToChar(tokens[1])) + bond_pairs.append((ttree_lex.EscCharStrToChar(tokens[2]), + ttree_lex.EscCharStrToChar(tokens[3]))) else: - raise(ttree_lex.InputError('Incorrect number of columns on line '+str(ie+1)+' of \"'+section_name+'\" section.')) - + raise(ttree_lex.InputError('Incorrect number of columns on line ' + + str(ie + 1) + ' of \"' + section_name + '\" section.')) - - #for ie in range(0, len(lines_bonds_atomid_atomid)): + # for ie in range(0, len(lines_bonds_atomid_atomid)): # line = lines_bonds_atomid_atomid[ie].strip() # if '#' in line: # icomment = line.find('#') @@ -150,14 +137,12 @@ def LookupChargePairs(chargebyatomid, # else: # raise(ttree_lex.InputError('Incorrect number of columns on line '+str(ie+1)+' of \"'+section_name+'\" section.')) - - assert(len(bond_types) == 0) typepattern_to_chargepairs = [] warning_unassigned_chargepairs = None - for i in range(0, len(lines_chargepairsbytype)): - line = lines_chargepairsbytype[i].strip() + for i in range(0, len(lines_chargebybond)): + line = lines_chargebybond[i].strip() if '#' in line: icomment = line.find('#') line = (line[:icomment]).strip() @@ -166,44 +151,42 @@ def LookupChargePairs(chargebyatomid, if (len(tokens) != 4): raise(ttree_lex.InputError('Error: Wrong number of columns in the \"Charge Pairs By Type\" section of data file.\n' - 'Offending line:\n'+ - '\"'+line+'\"\n' - 'Expected 4 columns\n')) + 'Offending line:\n' + + '\"' + line + '\"\n' + 'Expected 4 columns\n')) chargepair = (float(tokens[2]), float(tokens[3])) - + typepattern = [] for typestr in tokens[:2]: - if ((len(typestr) >= 2) and - (typestr[0] == '/') and (typestr[-1] == '/')): + if ((len(typestr) >= 2) and + (typestr[0] == '/') and (typestr[-1] == '/')): regex_str = typestr[1:-1] - typepattern.append( re.compile(regex_str) ) + typepattern.append(re.compile(regex_str)) else: typepattern.append(ttree_lex.EscCharStrToChar(typestr)) typepattern_to_chargepairs.append([typepattern, chargepair]) - for atomid1, atomid2 in bond_pairs: if atomid1 not in atomids2types: - raise ttree_lex.InputError('Error: atom \"'+atomid1+'\" not defined in \"Data Atoms\".\n' + raise ttree_lex.InputError('Error: atom \"' + atomid1 + '\" not defined in \"Data Atoms\".\n' ' This usually happens when the user mistypes one of the names of the\n' ' $atoms in either a \"Data Atoms\" or \"Data Bond List\" section.\n' ' To find out where the mistake occured, search the \n' ' \"ttree_assignments.txt\" file for:\n' - ' \"'+atomid1+'\"\n') + ' \"' + atomid1 + '\"\n') if atomid2 not in atomids2types: - raise ttree_lex.InputError('Error: atom \"'+atomid2+'\" not defined in \"Data Atoms\".\n' + raise ttree_lex.InputError('Error: atom \"' + atomid2 + '\" not defined in \"Data Atoms\".\n' ' This usually happens when the user mistypes one of the names of the\n' ' $atoms in either a \"Data Atoms\" or \"Data Bond List\" section.\n' ' To find out where the mistake occured, search the \n' ' \"ttree_assignments.txt\" file for:\n' - ' \"'+atomid2+'\"\n') - + ' \"' + atomid2 + '\"\n') atomtype1 = atomids2types[atomid1] atomtype2 = atomids2types[atomid2] @@ -221,7 +204,6 @@ def LookupChargePairs(chargebyatomid, if not warning_unassigned_chargepairs: warning_unassigned_chargepairs = (atomid1, atomid2) - if warning_unassigned_chargepairs: sys.stderr.write('---------------------------------------------------------------------------\n' 'Warning: bonds found between atoms with no partial-charge rules.\n' @@ -233,22 +215,37 @@ def LookupChargePairs(chargebyatomid, ' OR if you are defining the charges for these atoms manually\n' ' In the later case, it is not a problem.\n' ' The first bond with this problem is between this pair of atoms:\n' - ' '+str(warning_unassigned_chargepairs[0])+'\n' - ' '+str(warning_unassigned_chargepairs[1])+'\n' - '---------------------------------------------------------------------------\n') - + ' ' + + str(warning_unassigned_chargepairs[0]) + '\n' + ' ' + + str(warning_unassigned_chargepairs[1]) + '\n' + '---------------------------------------------------------------------------\n') +def main(): + """ + This is is a "main module" wrapper for invoking chargepairs_by_type.py + as a stand alone program. This program: + This program reads a LAMMPS data file (or an excerpt of a LAMMPS) + data file containing bonded many-body interactions by atom type + (and bond type), and generates a list of atom charges in LAMMPS input + script format consistent with those types (to the standard out). + Typical Usage: + chargepairs_by_type.py -atoms atoms.data \\ + -bonds bonds.data \\ + -chargebybond chargepairs_by_type.data \\ + > list_of_atom_charges.in -if __name__ == "__main__": + """ - g_program_name = __file__.split('/')[-1] # = 'nbody_by_type.py' - g_date_str = '2016-10-16' - g_version_str = '0.11' + g_program_name = __file__.split('/')[-1] # = 'charge_pairs_by_type.py' + g_date_str = '2016-12-22' + g_version_str = '0.13.0' ####### Main Code Below: ####### - sys.stderr.write(g_program_name+' v'+g_version_str+' '+g_date_str+' ') + sys.stderr.write(g_program_name + ' v' + + g_version_str + ' ' + g_date_str + ' ') if sys.version < '3': sys.stderr.write(' (python version < 3)\n') else: @@ -258,16 +255,15 @@ if __name__ == "__main__": fname_atoms = None fname_bonds = None fname_bond_list = None - fname_chargepairsbytype = None + fname_chargebybond = None section_name = 'Data Bond List' # (This will be replaced later.) atom_style = 'full' - prefix='' - suffix='' + prefix = '' + suffix = '' bond_lack_types = False argv = [arg for arg in sys.argv] - # Loop over the remaining arguments not processed yet. # These arguments are specific to the lttree.py program # and are not understood by ttree.py: @@ -275,71 +271,78 @@ if __name__ == "__main__": while i < len(argv): #sys.stderr.write('argv['+str(i)+'] = \"'+argv[i]+'\"\n') if ((argv[i].lower() == '-?') or - (argv[i].lower() == '--?') or - (argv[i].lower() == '-help') or - (argv[i].lower() == '-help')): - if i+1 >= len(argv): - sys.stdout.write(man_page_text+'\n') + (argv[i].lower() == '--?') or + (argv[i].lower() == '-help') or + (argv[i].lower() == '-help')): + if i + 1 >= len(argv): + sys.stdout.write(man_page_text + '\n') sys.exit(0) elif argv[i].lower() == '-atoms': - if i+1 >= len(argv): - raise ttree_lex.InputError('Error: '+argv[i]+' flag should be followed by a file name containing lines of\n' - ' text which might appear in the "Atoms" section of a LAMMPS data file.\n') - fname_atoms = argv[i+1] - del(argv[i:i+2]) + if i + 1 >= len(argv): + raise ttree_lex.InputError('Error: ' + argv[i] + ' flag should be followed by a file name containing lines of\n' + ' text which might appear in the "Atoms" section of a LAMMPS data file.\n') + fname_atoms = argv[i + 1] + del(argv[i:i + 2]) elif argv[i].lower() == '-bonds': - if i+1 >= len(argv): - raise ttree_lex.InputError('Error: '+argv[i]+' flag should be followed by a file name containing lines of\n' - ' text which might appear in the "Bonds" section of a LAMMPS data file.\n') - fname_bonds = argv[i+1] - del(argv[i:i+2]) + if i + 1 >= len(argv): + raise ttree_lex.InputError('Error: ' + argv[i] + ' flag should be followed by a file name containing lines of\n' + ' text which might appear in the "Bonds" section of a LAMMPS data file.\n') + fname_bonds = argv[i + 1] + del(argv[i:i + 2]) elif argv[i].lower() == '-bond-list': - if i+1 >= len(argv): - raise ttree_lex.InputError('Error: '+argv[i]+' flag should be followed by a file name\n') - #raise ttree_lex.InputError('Error: '+argv[i]+' flag should be followed by a file name containing lines of\n' + if i + 1 >= len(argv): + raise ttree_lex.InputError( + 'Error: ' + argv[i] + ' flag should be followed by a file name\n') + # raise ttree_lex.InputError('Error: '+argv[i]+' flag should be followed by a file name containing lines of\n' # ' text which might appear in the "Bonds No Types" section of a LAMMPS data file.\n') - fname_bond_list = argv[i+1] + fname_bond_list = argv[i + 1] section_name = "Data Bond List" - del(argv[i:i+2]) - - elif ((argv[i].lower() == '-chargepairsbytype') or - (argv[i].lower() == '-chargepairs-by-type') or + del(argv[i:i + 2]) + + elif ((argv[i].lower() == '-chargebybond') or + (argv[i].lower() == '-chargesbybond') or + (argv[i].lower() == '-charge-by-bond') or + (argv[i].lower() == '-charges-by-bond') or + (argv[i].lower() == '-chargepairsbytype') or + (argv[i].lower() == '-chargepairs-by-type') or (argv[i].lower() == '-charge-pairs-by-type')): - if i+1 >= len(argv): - raise ttree_lex.InputError('Error: '+argv[i]+' flag should be followed by a file name\n') + if i + 1 >= len(argv): + raise ttree_lex.InputError( + 'Error: ' + argv[i] + ' flag should be followed by a file name\n') - #raise ttree_lex.InputError('Error: '+argv[i]+' flag should be followed by a file name containing\n' + # raise ttree_lex.InputError('Error: '+argv[i]+' flag should be followed by a file name containing\n' # ' text which might appear in the "'+section_name+' By Type" section\n' # ' of a LAMMPS data file.\n') - fname_chargepairsbytype = argv[i+1] - del(argv[i:i+2]) - - elif ((argv[i].lower() == '-atom-style') or - (argv[i].lower() == '-atom_style')): - if i+1 >= len(argv): - raise ttree_lex.InputError('Error: '+argv[i]+' flag should be followed by a an atom_style name.\n' - ' (Or single quoted string which includes a space-separated\n' - ' list of column names.)\n') - atom_style = argv[i+1] - del(argv[i:i+2]) + fname_chargebybond = argv[i + 1] + del(argv[i:i + 2]) + + elif ((argv[i].lower() == '-atom-style') or + (argv[i].lower() == '-atom_style')): + if i + 1 >= len(argv): + raise ttree_lex.InputError('Error: ' + argv[i] + ' flag should be followed by a an atom_style name.\n' + ' (Or single quoted string which includes a space-separated\n' + ' list of column names.)\n') + atom_style = argv[i + 1] + del(argv[i:i + 2]) elif argv[i][0] == '-': - raise ttree_lex.InputError('Error('+g_program_name+'):\n' - 'Unrecognized command line argument \"'+argv[i]+'\"\n') + raise ttree_lex.InputError('Error(' + g_program_name + '):\n' + 'Unrecogized command line argument \"' + argv[i] + '\"\n') else: i += 1 if len(argv) != 1: # if there are more than 2 remaining arguments, - problem_args = ['\"'+arg+'\"' for arg in argv[1:]] - raise ttree_lex.InputError('Syntax Error('+g_program_name+'):\n\n' - ' Problem with argument list.\n' - ' The remaining arguments are:\n\n' - ' '+(' '.join(problem_args))+'\n\n' - ' (The actual problem may be earlier in the argument list.)\n') + problem_args = ['\"' + arg + '\"' for arg in argv[1:]] + raise ttree_lex.InputError('Syntax Error(' + g_program_name + '):\n\n' + ' Problem with argument list.\n' + ' The remaining arguments are:\n\n' + ' ' + + (' '.join(problem_args)) + '\n\n' + ' (The actual problem may be earlier in the argument list.)\n') bond_types = [] fatoms = open(fname_atoms, 'r') @@ -351,31 +354,31 @@ if __name__ == "__main__": fbonds = open(fname_bonds, 'r') lines_bonds = fbonds.readlines() fbonds.close() - except IOError: + except IOError: pass try: if fname_bond_list != None: fbond_list = open(fname_bond_list, 'r') lines_bond_list = fbond_list.readlines() fbond_list.close() - except IOError: + except IOError: pass if ((len(lines_bonds) == 0) and (len(lines_bond_list) == 0)): - sys.stderr.write('Error('+g_program_name+'): No bonds defined for this system\n' + sys.stderr.write('Error(' + g_program_name + '): No bonds defined for this system\n' ' (This error may be a bug in moltemplate.)\n') - fchargepairsbytype = open(fname_chargepairsbytype, 'r') + fchargebybond = open(fname_chargebybond, 'r') lines_atoms = fatoms.readlines() - - lines_chargepairsbytype = fchargepairsbytype.readlines() + + lines_chargebybond = fchargebybond.readlines() fatoms.close() - fchargepairsbytype.close() + fchargebybond.close() chargebyatomid = defaultdict(float) LookupChargePairs(chargebyatomid, lines_atoms, lines_bonds, lines_bond_list, - lines_chargepairsbytype, + lines_chargebybond, atom_style, section_name) @@ -384,6 +387,11 @@ if __name__ == "__main__": ' charge ' + str(charge) + '\n') except (ValueError, ttree_lex.InputError) as err: - sys.stderr.write('\n'+str(err)+'\n') + sys.stderr.write('\n' + str(err) + '\n') sys.exit(-1) + + +if __name__ == "__main__": + main() + diff --git a/tools/moltemplate/src/moltemplate_scripts_depreciated/oplsaa_moltemplate.py b/tools/moltemplate/moltemplate/depreciated/oplsaa_moltemplate.py old mode 100755 new mode 100644 similarity index 93% rename from tools/moltemplate/src/moltemplate_scripts_depreciated/oplsaa_moltemplate.py rename to tools/moltemplate/moltemplate/depreciated/oplsaa_moltemplate.py index 5a2ce05c4a1ce26479d313e2de6d1d6068baf673..984dc6415db7c44bd432d12198b75741b104266c --- a/tools/moltemplate/src/moltemplate_scripts_depreciated/oplsaa_moltemplate.py +++ b/tools/moltemplate/moltemplate/depreciated/oplsaa_moltemplate.py @@ -19,7 +19,7 @@ g_program_name = __file__.split('/')[-1] # First make a copy of the \"oplsaa.prm\" file # (which can be downloaded from the TINKER web site). # The lines in this file beginning with the word \"atoms\" should -# define the atoms which you plan to put in your simulation. All other +# define the atoms which you plan to put in your simulation. All other # lines beginning with the word \"atoms\" should be deleted. # (Leave the other sections of this file alone.) #""") @@ -75,14 +75,14 @@ for i in range(0, len(lines)): # As of late 2014, there appear to be 906 atom types, but we don't assume this. -# First try to infer out how many atom types there were in the original +# First try to infer out how many atom types there were in the original # oplsaa.prm file, or at least find an upper bound on the atom-type numbers. # (Keep track of the maximum value of the first column in the "atom" section.) max_atomType = 0 num_atomTypes = 0 for line in lines: # skip over text after a # comment character - ic = line.find('#') + ic = line.find('#') if ic != -1: line = (line[:ic]).strip() else: @@ -109,13 +109,13 @@ atom_lookup={} #this dictionary contains all the atom ffid's as a key and the nu #atom=[[10000,10000] for i in range(906)] <- don't assume there are 906 atoms atom=[[-10000,-10000] for i in range(0,max_atomType+1)] #charge_by_type={} # lookup charge by atom type -#vdw_by_type={} # lookup epsilon & sigma parameters by atom type +#vdw_by_type={} # lookup epsilon & sigma paramters by atom type charge_by_type=[0.0 for i in range(0,max_atomType+1)] # lookup charge by atom vdw_by_type=[(0.0,0.0) for i in range(0,max_atomType+1)] # lookup epsilon & sigma -#atom is declared this way so for sorting purposes. +#atom is declared this way so for sorting purposes. #atom contains the following data upon allocation #atom[][0]=atom_id( Important for partial charges and non_bonded interactions) #atom[][1]=atom_ffid( Important for stretches, bending, torsions and impropers) @@ -160,7 +160,7 @@ improper=[] for line in lines: # skip over text after a # comment character - ic = line.find('#') + ic = line.find('#') if ic != -1: line = (line[:ic]).strip() else: @@ -169,7 +169,7 @@ for line in lines: if line.find("atom") == 0: line=line.split() atom[int(line[1])-1]=[int(line[1]),int(line[2]),float(line[-2]), - 0.0,0.0,0.0," ".join(line[3:-2])] + 0.0,0.0,0.0," ".join(line[3:-2])] elif line.find("vdw") == 0: line=line.split() #vdw_temp.append([float(line[1]),float(line[2]),float(line[3])]) @@ -193,7 +193,7 @@ for line in lines: charge_by_type[int(line[1])] = float(line[2]) elif line.find("imptors") == 0: line=line.split() - improper.append([int(line[1]), int(line[2]), + improper.append([int(line[1]), int(line[2]), int(line[3]), int(line[4]), float(line[5]), float(line[6])]) @@ -237,7 +237,7 @@ for i in range(0,len(atom)): vdw_params = vdw_by_type[atom_type_num] atom[i][4] = vdw_params[0] atom[i][5] = vdw_params[1] - + del(charge_by_type) del(vdw_by_type) @@ -292,7 +292,7 @@ g.write(" } #(end of atom charges)\n\n") #-----------------------------------------------------------# # This part of the code creates a lookup dictionary -# that allows you to find every type of atom by its +# that allows you to find every type of atom by its # force field id. force field id is the id number # relevant to bonds, angles, dihedrals, and impropers. # This greatly increases the speed of angle, bond, dihedral @@ -331,7 +331,7 @@ if might_have_bonds: g.write(" bond_coeff @bond:{}-{} harmonic {} {}\n".format(y,z,x[2],x[3])) h.write(" @bond:{0}-{1} @atom:{0} @atom:{1}\n".format(y,z)) g.write(" } #(end of bond_coeffs)\n\n") - h.seek(0,0) + h.seek(0,0) g.write(" write_once(\"Data Bonds By Type\") {\n") for line in h.readlines(): g.write(line) @@ -342,7 +342,7 @@ if might_have_bonds: #-----------------------------------------------------------# #writing out angle coefficients and angles by type.---------# -#-----------------------------------------------------------# +#-----------------------------------------------------------# # First check if the atoms in system can potentially form angle interactions might_have_angles = False @@ -365,13 +365,13 @@ if might_have_angles: h.write(" angle_coeff @angle:{}-{}-{} harmonic {} {}\n".format(y,z,u,x[3],x[4])) g.write(" @angle:{0}-{1}-{2} @atom:{0} @atom:{1} @atom:{2}\n".format(y,z,u)) - g.write(" } #(end of angles by type)\n\n") + g.write(" } #(end of angles by type)\n\n") h.seek(0,0) g.write(" write_once(\"In Settings\" ){\n") for line in h.readlines(): g.write(line) - g.write(" } #(end of angle_coeffs)\n\n") - del(angle) + g.write(" } #(end of angle_coeffs)\n\n") + del(angle) h.close() #----------------------------------------------------------# @@ -383,7 +383,7 @@ might_have_dihedrals = False for x in dihedral: for y in atom_lookup.get(x[0],[]): for z in atom_lookup.get(x[1],[]): - for u in atom_lookup.get(x[2],[]): + for u in atom_lookup.get(x[2],[]): for v in atom_lookup.get(x[3],[]): might_have_dihedrals = True @@ -394,7 +394,7 @@ if might_have_dihedrals: for x in dihedral: for y in atom_lookup.get(x[0],[]): for z in atom_lookup.get(x[1],[]): - for u in atom_lookup.get(x[2],[]): + for u in atom_lookup.get(x[2],[]): for v in atom_lookup.get(x[3],[]): if x[0]!=0 and x[3]!=0: g.write(" @dihedral:{0}-{1}-{2}-{3} @atom:{0} @atom:{1} @atom:{2} @atom:{3}\n".format(y,z,u,v)) @@ -405,20 +405,20 @@ if might_have_dihedrals: h.write(" dihedral_coeff @dihedral:0-{}-{}-{} opls {} {} {} {}\n".format(z,u,v,x[4],x[5],x[6],x[7])) elif x[0]==0 and x[3]==0: g.write(" @dihedral:0-{1}-{2}-0 @atom:{0} @atom:{1} @atom:{2} @atom:{3}\n".format(y,z,u,v)) - #h.write(" dihedral_coeff @dihedral:0-{}-{}-0 harmonic {} {} {} {}\n".format(z,u,x[4],x[5],x[6],x[7])) - h.write(" dihedral_coeff @dihedral:0-{}-{}-0 opls {} {} {} {}\n".format(z,u,x[4],x[5],x[6],x[7])) - + #h.write(" dihedral_coeff @dihedral:0-{}-{}-0 harmonic {} {} {} {}\n".format(z,u,x[4],x[5],x[6],x[7])) + h.write(" dihedral_coeff @dihedral:0-{}-{}-0 opls {} {} {} {}\n".format(z,u,x[4],x[5],x[6],x[7])) + del(dihedral) - g.write(" } #(end of Dihedrals by type)\n\n") - h.seek(0,0) - g.write(" write_once(\"In Settings\") {\n") + g.write(" } #(end of Dihedrals by type)\n\n") + h.seek(0,0) + g.write(" write_once(\"In Settings\") {\n") for line in h.readlines(): g.write(line) g.write(" } #(end of dihedral_coeffs)\n\n") h.close() #-----------------------------------------------------------------------# -#----writing out improper coefficients and impropers by type------------# +#----writing out improper coefficients and impropers by type------------# #-----------------------------------------------------------------------# # First check if the atoms in system can potentially form improper interactions @@ -426,7 +426,7 @@ might_have_impropers = False for x in improper: for y in atom_lookup.get(x[0],[]): for z in atom_lookup.get(x[1],[]): - for u in atom_lookup.get(x[2],[]): + for u in atom_lookup.get(x[2],[]): for v in atom_lookup.get(x[3],[]): might_have_impropers = True @@ -436,9 +436,9 @@ if might_have_impropers: for x in improper: for y in atom_lookup.get(x[0],[]): for z in atom_lookup.get(x[1],[]): - for u in atom_lookup.get(x[2],[]): + for u in atom_lookup.get(x[2],[]): for v in atom_lookup.get(x[3],[]): - # Notation: let I,J,K,L denote the atom types ("biotypes") + # Notation: let I,J,K,L denote the atom types ("biotypes") # listed in the order they appear in the "oplsaa.prm" file. # (I think J and L are represented by "u" and "v" in the code here.) # It looks like the "oplsaa.prm" file distributed with tinker @@ -453,9 +453,9 @@ if might_have_impropers: h.write(" improper_coeff @improper:0-0-{2}-{3} harmonic {4} {5} \n".format(y,z,u,v,x[4]/2,180)) - g.write(" } #(end of impropers by type)\n\n") - h.seek(0,0) - g.write(" write_once(\"In Settings\") {\n") + g.write(" } #(end of impropers by type)\n\n") + h.seek(0,0) + g.write(" write_once(\"In Settings\") {\n") for line in h.readlines(): g.write(line) g.write(" } #(end of improp_coeffs)\n\n") @@ -476,7 +476,7 @@ g.write(" dihedral_style hybrid opls\n") g.write(" improper_style hybrid harmonic\n") g.write(pair_style_command) g.write(" pair_modify mix geometric\n") -g.write(" special_bonds lj/coul 0.0 0.0 0.5\n") +g.write(" special_bonds lj/coul 0.0 0.0 0.5\n") g.write(kspace_style) g.write(" } #end of init parameters\n\n") g.write("} # OPLSAA\n") @@ -486,4 +486,3 @@ os.remove("temp.txt") sys.stderr.write("...finished.\n") - diff --git a/tools/moltemplate/src/dump2data.py b/tools/moltemplate/moltemplate/dump2data.py old mode 100644 new mode 100755 similarity index 65% rename from tools/moltemplate/src/dump2data.py rename to tools/moltemplate/moltemplate/dump2data.py index 25c73219dd04226859dcccdb260825689e601b65..4c122d8ebad869c2a99e37280a43a0d62b3b7a46 --- a/tools/moltemplate/src/dump2data.py +++ b/tools/moltemplate/moltemplate/dump2data.py @@ -7,7 +7,7 @@ Extract dynamical degrees of freedom from a lammps DUMP file (from the stdin) and construct a new DATA file (to the stdout). A reference DATA file is needed (argument). - basic usage + basic usage ./dump2data.py orig_file.data < dump.lammpstrj > new_file.data (This extract last frame, uses "full" atom_style.) @@ -21,6 +21,9 @@ A reference DATA file is needed (argument). # Copyright (c) 2014 # All rights reserved. +g_program_name = 'dump2data.py' +g_date_str = '2017-7-27' +g_version_str = '0.53.0' import sys from collections import defaultdict @@ -28,17 +31,20 @@ from operator import itemgetter, attrgetter class InputError(Exception): + def __init__(self, err_msg): self.err_msg = err_msg + def __str__(self): return self.err_msg def ErrorLeader(infile, lineno): - return '\"'+infile+'\", line '+str(lineno)+': ' + return '\"' + infile + '\", line ' + str(lineno) + ': ' class MiscSettings(object): + def __init__(self): self.tstart = None self.tstop = None @@ -53,46 +59,56 @@ class MiscSettings(object): class AtomStyleSettings(object): + def __init__(self): # The following new member data indicate which columns store - # LAMMPS-specific information. - # The next 6 members store keep track of the different columns + # LAMMPS-specific information. + # The next 6 members store keep track of the different columns # of the "Atoms" section of a LAMMPS data file: - self.column_names = [] #<--A list of column names (optional) - self.i_coords=[] #<--A triplet of integers indicating which columns store coordinate data - #self.ii_coords= [] #<--A list of triplets of column indexes storing coordinate data - self.ii_vects=[] #<--A list of triplets of column indexes storing directional data - # (such as dipole or ellipsoid orientations) - self.i_atomid=None #<--An integer indicating which column has the atomid - self.i_atomtype=None #<--An integer indicating which column has the atomtype - self.i_molid=None #<--An integer indicating which column has the molid, if applicable - + self.column_names = [] # <--A list of column names (optional) + # <--A triplet of integers indicating which columns store coordinate data + self.i_coords = [] + # self.ii_coords= [] #<--A list of triplets of column indexes storing + # coordinate data + self.ii_vects = [] # <--A list of triplets of column indexes storing directional data + # (such as dipole or ellipsoid orientations) + self.i_atomid = None # <--An integer indicating which column has the atomid + self.i_atomtype = None # <--An integer indicating which column has the atomtype + self.i_molid = None # <--An integer indicating which column has the molid, if applicable class DataSettings(AtomStyleSettings): + def __init__(self): AtomStyleSettings.__init__(self) - self.contents = '' + self.contents = '' self.file_name = '' - # Atom Styles in LAMMPS as of 2011-7-29 -g_style_map = {'angle': ['atom-ID','molecule-ID','atom-type','x','y','z'], - 'atomic': ['atom-ID','atom-type','x','y','z'], - 'bond': ['atom-ID','molecule-ID','atom-type','x','y','z'], - 'charge': ['atom-ID','atom-type','q','x','y','z'], - 'colloid': ['atom-ID','atom-type','x','y','z'], - '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','x','y','z','quatw','quati','quatj','quatk'], - 'full': ['atom-ID','molecule-ID','atom-type','q','x','y','z'], - 'granular': ['atom-ID','atom-type','diameter','density','x','y','z'], - 'molecular':['atom-ID','molecule-ID','atom-type','x','y','z'], - 'peri': ['atom-ID','atom-type','volume','density','x','y','z'], - 'hybrid': ['atom-ID','atom-type','x','y','z']} - - +g_style_map = {'angle': ['atom-ID', 'molecule-ID', 'atom-type', 'x', 'y', 'z'], + 'atomic': ['atom-ID', 'atom-type', 'x', 'y', 'z'], + 'body': ['atom-ID', 'atom-type', 'bodyflag', 'mass', 'x', 'y', 'z'], + 'bond': ['atom-ID', 'molecule-ID', 'atom-type', 'x', 'y', 'z'], + 'charge': ['atom-ID', 'atom-type', 'q', 'x', 'y', 'z'], + 'dipole': ['atom-ID', 'atom-type', 'q', 'x', 'y', 'z', 'mux', 'muy', 'muz'], + 'dpd': ['atom-ID', 'atom-type', 'theta', 'x', 'y', 'z'], + 'electron': ['atom-ID', 'atom-type', 'q', 'spin', 'eradius', 'x', 'y', 'z'], + 'ellipsoid': ['atom-ID', 'atom-type', 'x', 'y', 'z', 'quatw', 'quati', 'quatj', 'quatk'], + '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'], + 'smd': ['atom-ID', 'atom-type', 'molecule-ID' 'volume', 'mass', 'kernel-radius', 'contact-radius', 'x', 'y', 'z'], + 'sphere': ['atom-ID', 'atom-type', 'diameter', 'density', 'x', 'y', 'z'], + 'template': ['atom-ID', 'molecule-ID', 'template-index', 'template-atom', 'atom-type', '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'], + # The following styles were removed from LAMMPS as of 2012-3 + 'colloid': ['atom-ID', 'atom-type', 'x', 'y', 'z'], + 'granular': ['atom-ID', 'atom-type', 'diameter', 'density', 'x', 'y', 'z']} def AtomStyle2ColNames(atom_style_string): @@ -102,26 +118,30 @@ def AtomStyle2ColNames(atom_style_string): raise InputError('Error(dump2data): Invalid atom_style\n' ' (The atom_style command was followed by an empty string.)\n') atom_style_args = atom_style_string.split() - atom_style = atom_style_args[0] + atom_style = atom_style_args[0] + + hybrid_args = atom_style_args[1:] - hybrid_args = atom_style_args[1:] if (atom_style not in g_style_map): if (len(atom_style_args) >= 2): - # If the atom_style_string includes at least 2 words, then we + # If the atom_style_string includes at least 2 words, then we # interpret this as a list of the individual column names return atom_style_args else: - raise InputError('Error(dump2data): Unrecognized atom_style: \"'+atom_style+'\"\n') + raise InputError( + 'Error(dump2data): Unrecognized atom_style: \"' + atom_style + '\"\n') if (atom_style != 'hybrid'): return g_style_map[atom_style] else: - column_names = ['atom-ID','atom-type','x','y','z'] - if (len(hybrid_args)==0): - raise InputError('Error(dump2data): atom_style hybrid must be followed by a sub_style.\n') + column_names = ['atom-ID', 'atom-type', 'x', 'y', 'z'] + if (len(hybrid_args) == 0): + raise InputError( + 'Error(dump2data): atom_style hybrid must be followed by a sub_style.\n') for sub_style in hybrid_args: if (sub_style not in g_style_map): - raise InputError('Error(dump2data): Unrecognized atom_style: \"'+sub_style+'\"\n') + raise InputError( + 'Error(dump2data): Unrecognized atom_style: \"' + sub_style + '\"\n') for cname in g_style_map[sub_style]: if cname not in column_names: column_names.append(cname) @@ -130,7 +150,7 @@ def AtomStyle2ColNames(atom_style_string): def ColNames2AidAtypeMolid(column_names): - # Because of the diversity of ways that these + # Because of the diversity of ways that these # numbers are referred to in the LAMMPS documentation, # we have to be flexible and allow the user to refer # to these quantities in a variety of ways. @@ -139,7 +159,7 @@ def ColNames2AidAtypeMolid(column_names): i_atomid = None if 'atom-ID' in column_names: i_atomid = column_names.index('atom-ID') - elif 'atom−ID' in column_names: # (− is the character used in the manual) + elif 'atom−ID' in column_names: # (− is the character used in the manual) i_atomid = column_names.index('atom−ID') elif 'atomID' in column_names: i_atomid = column_names.index('atomID') @@ -152,12 +172,13 @@ def ColNames2AidAtypeMolid(column_names): elif '$atom' in column_names: i_atomid = column_names.index('$atom') else: - raise InputError('Error(dump2data): List of column names lacks an \"atom-ID\"\n') + raise InputError( + 'Error(dump2data): List of column names lacks an \"atom-ID\"\n') i_atomtype = None if 'atom-type' in column_names: i_atomtype = column_names.index('atom-type') - elif 'atom−type' in column_names: # (− hyphen character used in manual) + elif 'atom−type' in column_names: # (− hyphen character used in manual) i_atomtype = column_names.index('atom−type') elif 'atomtype' in column_names: i_atomtype = column_names.index('atomtype') @@ -166,12 +187,13 @@ def ColNames2AidAtypeMolid(column_names): elif '@atom' in column_names: i_atomtype = column_names.index('@atom') else: - raise InputError('Error(dump2data): List of column names lacks an \"atom-type\"\n') + raise InputError( + 'Error(dump2data): List of column names lacks an \"atom-type\"\n') i_molid = None if 'molecule-ID' in column_names: i_molid = column_names.index('molecule-ID') - elif 'molecule−ID' in column_names: # (− hyphen character used in manual) + elif 'molecule−ID' in column_names: # (− hyphen character used in manual) i_molid = column_names.index('molecule−ID') elif 'moleculeID' in column_names: i_molid = column_names.index('moleculeID') @@ -188,15 +210,14 @@ def ColNames2AidAtypeMolid(column_names): elif '$mol' in column_names: i_molid = column_names.index('$mol') else: - pass # some atom_types do not have a valid molecule-ID + pass # some atom_types do not have a valid molecule-ID return i_atomid, i_atomtype, i_molid - def ColNames2Coords(column_names): - """ Which of the columns correspond to coordinates - which must be transformed using rigid-body + """ Which of the columns correspond to coordinates + which must be transformed using rigid-body (affine: rotation + translation) transformations? This function outputs a list of lists of triplets of integers. @@ -211,16 +232,17 @@ def ColNames2Coords(column_names): if 'z' in column_names: i_z = column_names.index('z') if (((i_x != None) != (i_y != None)) or - ((i_y != None) != (i_z != None)) or - ((i_z != None) != (i_x != None))): - raise InputError('Error(dump2data): columns must include \"x\", \"y\", and \"z\".\n') + ((i_y != None) != (i_z != None)) or + ((i_z != None) != (i_x != None))): + raise InputError( + 'Error(dump2data): columns must include \"x\", \"y\", and \"z\".\n') return [[i_x, i_y, i_z]] def ColNames2Vects(column_names): - """ Which of the columns correspond to coordinates + """ Which of the columns correspond to coordinates which must be transformed using rotations? - Some coordinates like dipole moments and + Some coordinates like dipole moments and ellipsoid orientations should only be rotated (not translated). This function outputs a list of lists of triplets of integers. @@ -237,9 +259,10 @@ def ColNames2Vects(column_names): if 'muz' in column_names: i_muz = column_names.index('muz') if (((i_mux != None) != (i_muy != None)) or - ((i_muy != None) != (i_muz != None)) or - ((i_muz != None) != (i_mux != None))): - raise InputError('Error(dump2data): custom atom_style list must define mux, muy, and muz or none.\n') + ((i_muy != None) != (i_muz != None)) or + ((i_muz != None) != (i_mux != None))): + raise InputError( + 'Error(dump2data): custom atom_style list must define mux, muy, and muz or none.\n') if i_mux != None: vects.append([i_mux, i_muy, i_muz]) i_quati = None @@ -252,20 +275,18 @@ def ColNames2Vects(column_names): if 'quatk' in column_names: i_quatk = column_names.index('quatk') if (((i_quati != None) != (i_quatj != None)) or - ((i_quatj != None) != (i_quatk != None)) or - ((i_quatk != None) != (i_quati != None))): - raise InputError('Error(dump2data): custom atom_style list must define quati, quatj, and quatk or none.\n') + ((i_quatj != None) != (i_quatk != None)) or + ((i_quatk != None) != (i_quati != None))): + raise InputError( + 'Error(dump2data): custom atom_style list must define quati, quatj, and quatk or none.\n') if i_quati != None: vects.append([i_quati, i_quatj, i_quatk]) return vects - - - -def ParseArgs(argv, - misc_settings, - data_settings, +def ParseArgs(argv, + misc_settings, + data_settings, warning_strings=None): # Loop over the remaining arguments not processed yet. @@ -274,17 +295,18 @@ def ParseArgs(argv, i = 1 while i < len(argv): #sys.stderr.write('argv['+str(i)+'] = \"'+argv[i]+'\"\n') - if ((argv[i].lower() == '-atomstyle') or - (argv[i].lower() == '-atom_style') or - (argv[i].lower() == '-atom-style')): + if ((argv[i].lower() == '-atomstyle') or + (argv[i].lower() == '-atom_style') or + (argv[i].lower() == '-atom-style')): in_init = [] - if i+1 >= len(argv): - raise InputError('Error(dump2data): '+argv[i]+' flag should be followed by a an atom_style name.\n' + if i + 1 >= len(argv): + raise InputError('Error(dump2data): ' + argv[i] + ' flag should be followed by a an atom_style name.\n' ' (Or single quoted string which includes a space-separated\n' ' list of column names.)\n') - data_settings.column_names = AtomStyle2ColNames(argv[i+1]) + data_settings.column_names = AtomStyle2ColNames(argv[i + 1]) sys.stderr.write(' \"Atoms\" column format:\n') - sys.stderr.write(' '+(' '.join(data_settings.column_names))+'\n') + sys.stderr.write( + ' ' + (' '.join(data_settings.column_names)) + '\n') # ColNames2Coords() and ColNames2Vects() generate lists of # triplets of integers, storing the column numbers containing @@ -296,52 +318,56 @@ def ParseArgs(argv, assert(len(ii_coords) == 1) data_settings.i_coords = ii_coords[0] - # Now figure out which columns correspond to atomid, atomtype, molid - data_settings.i_atomid, data_settings.i_atomtype, data_settings.i_molid = ColNames2AidAtypeMolid(data_settings.column_names) - del(argv[i:i+2]) + # Now figure out which columns correspond to atomid, atomtype, + # molid + data_settings.i_atomid, data_settings.i_atomtype, data_settings.i_molid = ColNames2AidAtypeMolid( + data_settings.column_names) + del(argv[i:i + 2]) elif (argv[i].lower() == '-icoord'): - if i+1 >= len(argv): - raise InputError('Error(dump2data): '+argv[i]+' flag should be followed by list of integers\n' + if i + 1 >= len(argv): + raise InputError('Error(dump2data): ' + argv[i] + ' flag should be followed by list of integers\n' ' corresponding to column numbers for coordinates in\n' - ' the \"Atoms\" section of a LAMMPS data file.\n') - ilist = argv[i+1].split() + ' the \"Atoms\" section of a LAMMPS data file.\n') + ilist = argv[i + 1].split() if (len(ilist) % 3) != 0: - raise InputError('Error(dump2data): '+argv[i]+' flag should be followed by list of integers.\n' + raise InputError('Error(dump2data): ' + argv[i] + ' flag should be followed by list of integers.\n' ' This is usually a list of 3 intebers, but it can contain more.\n' ' The number of cooridnate columns must be divisible by 3,\n' ' (even if the simulation is in 2 dimensions)\n') #ii_coords = [] - #for i in range(0, len(ilist)/3): + # for i in range(0, len(ilist)/3): # cols = [ilist[3*i]+1, ilist[3*i+1]+1, ilist[3*i+2]+1] # ii_coords.append(cols) - #if ((len(ii_coords) != 0) or (len(ii_coords[0]) != 3)): + # if ((len(ii_coords) != 0) or (len(ii_coords[0]) != 3)): # raise InputError('Error(dump2data): Argument \"'+argv[i]+'\" must be followed by exactly 3 integers.\n') data_settings.i_coords = ilist if (len(i_coords) != 3): - raise InputError('Error(dump2data): Argument \"'+argv[i]+'\" must be followed by exactly 3 integers.\n') + raise InputError('Error(dump2data): Argument \"' + + argv[i] + '\" must be followed by exactly 3 integers.\n') data_settings.i_coords = ii_coords[0] - del(argv[i:i+2]) + del(argv[i:i + 2]) elif (argv[i].lower() == '-ivect'): - if i+1 >= len(argv): - raise InputError('Error(dump2data): '+argv[i]+' flag should be followed by list of integers\n' + if i + 1 >= len(argv): + raise InputError('Error(dump2data): ' + argv[i] + ' flag should be followed by list of integers\n' ' corresponding to column numbers for direction vectors in\n' - ' the \"Atoms\" section of a LAMMPS data file.\n') - ilist = argv[i+1].split() + ' the \"Atoms\" section of a LAMMPS data file.\n') + ilist = argv[i + 1].split() if (len(ilist) % 3) != 0: - raise InputError('Error(dump2data): '+argv[i]+' flag should be followed by list of integers.\n' + raise InputError('Error(dump2data): ' + argv[i] + ' flag should be followed by list of integers.\n' ' This is usually a list of 3 intebers, but it can contain more.\n' ' The number of cooridnate columns must be divisible by 3,\n' ' (even if the simulation is in 2 dimensions)\n') data_settings.ii_vects = [] - for i in range(0, len(ilist)/3): - cols = [ilist[3*i]+1, ilist[3*i+1]+1, ilist[3*i+2]+1] + for i in range(0, len(ilist) / 3): + cols = [ilist[3 * i] + 1, ilist[3 * i + 1] + + 1, ilist[3 * i + 2] + 1] setting.ii_vects.append(cols) # This should override any earlier settings as a result of the # -atomstyle argument. So you can specify a custom list of column @@ -352,125 +378,127 @@ def ParseArgs(argv, # new custom atom-styles that have not been invented yet. # (Although I haven't tested this.) - del(argv[i:i+2]) + del(argv[i:i + 2]) # i_atomid is not really needed for this program, but I load it anyway - elif ((argv[i].lower() == '-iatomid') or - (argv[i].lower() == '-iid') or + elif ((argv[i].lower() == '-iatomid') or + (argv[i].lower() == '-iid') or (argv[i].lower() == '-iatom-id')): - if ((i+1 >= len(argv)) or (not str.isdigit(argv[i+1]))): - raise InputError('Error(dump2data): '+argv[i]+' flag should be followed by an integer\n' + if ((i + 1 >= len(argv)) or (not str.isdigit(argv[i + 1]))): + raise InputError('Error(dump2data): ' + argv[i] + ' flag should be followed by an integer\n' ' (>=1) indicating which column in the \"Atoms\" section of a\n' ' LAMMPS data file contains the atom id number (typically 1).\n' ' (This argument is unnecessary if you use the -atomstyle argument.)\n') - i_atomid = int(argv[i+1])-1 - del(argv[i:i+2]) - # i_atomtype is not really needed for this program, but I load it anyway - elif ((argv[i].lower() == '-iatomtype') or - (argv[i].lower() == '-itype') or + i_atomid = int(argv[i + 1]) - 1 + del(argv[i:i + 2]) + # i_atomtype is not really needed for this program, but I load it + # anyway + elif ((argv[i].lower() == '-iatomtype') or + (argv[i].lower() == '-itype') or (argv[i].lower() == '-iatom-type')): - if ((i+1 >= len(argv)) or (not str.isdigit(argv[i+1]))): - raise InputError('Error(dump2data): '+argv[i]+' flag should be followed by an integer\n' + if ((i + 1 >= len(argv)) or (not str.isdigit(argv[i + 1]))): + raise InputError('Error(dump2data): ' + argv[i] + ' flag should be followed by an integer\n' ' (>=1) indicating which column in the \"Atoms\" section of a\n' ' LAMMPS data file contains the atom type.\n' ' (This argument is unnecessary if you use the -atomstyle argument.)\n') - i_atomtype = int(argv[i+1])-1 - del(argv[i:i+2]) + i_atomtype = int(argv[i + 1]) - 1 + del(argv[i:i + 2]) # i_molid is not really needed for this program, but I load it anyway - elif ((argv[i].lower() == '-imolid') or - (argv[i].lower() == '-imol') or - (argv[i].lower() == '-imol-id') or - (argv[i].lower() == '-imoleculeid') or + elif ((argv[i].lower() == '-imolid') or + (argv[i].lower() == '-imol') or + (argv[i].lower() == '-imol-id') or + (argv[i].lower() == '-imoleculeid') or (argv[i].lower() == '-imolecule-id')): - if ((i+1 >= len(argv)) or (not str.isdigit(argv[i+1]))): - raise InputError('Error(dump2data): '+argv[i]+' flag should be followed by an integer\n' + if ((i + 1 >= len(argv)) or (not str.isdigit(argv[i + 1]))): + raise InputError('Error(dump2data): ' + argv[i] + ' flag should be followed by an integer\n' ' (>=1) indicating which column in the \"Atoms\" section of a\n' ' LAMMPS data file contains the molecule id number.\n' ' (This argument is unnecessary if you use the -atomstyle argument.)\n') - del(argv[i:i+2]) + del(argv[i:i + 2]) # Which frame do we want? elif (argv[i].lower() == '-t'): - if ((i+1 >= len(argv)) or (not str.isdigit(argv[i+1]))): - raise InputError('Error(dump2data): '+argv[i]+' flag should be followed by an integer indicating\n' + if ((i + 1 >= len(argv)) or (not str.isdigit(argv[i + 1]))): + raise InputError('Error(dump2data): ' + argv[i] + ' flag should be followed by an integer indicating\n' ' the frame you want to extract from the dump file (trajectory).\n' ' This integer should match the timestep corresponding to the frame\n' ' whose coordinates you wish to extract.\n') - misc_settings.timestep_str = argv[i+1] - del(argv[i:i+2]) + misc_settings.timestep_str = argv[i + 1] + del(argv[i:i + 2]) misc_settings.multi = False misc_settings.last_frame = False elif (argv[i].lower() == '-tstart'): - if ((i+1 >= len(argv)) or (not str.isdigit(argv[i+1]))): - raise InputError('Error(dump2data): '+argv[i]+' flag should be followed by an integer indicating\n' + if ((i + 1 >= len(argv)) or (not str.isdigit(argv[i + 1]))): + raise InputError('Error(dump2data): ' + argv[i] + ' flag should be followed by an integer indicating\n' ' the first frame you want to extract from the dump file (trajectory).\n' ' This integer should match the timestep corresponding to the frame\n' ' (after which) you wish to extract coordinates.\n') - misc_settings.tstart = float(argv[i+1]) - del(argv[i:i+2]) + misc_settings.tstart = float(argv[i + 1]) + del(argv[i:i + 2]) misc_settings.multi = True elif (argv[i].lower() == '-tstop'): - if ((i+1 >= len(argv)) or (not str.isdigit(argv[i+1]))): - raise InputError('Error(dump2data): '+argv[i]+' flag should be followed by an number indicating\n' + if ((i + 1 >= len(argv)) or (not str.isdigit(argv[i + 1]))): + raise InputError('Error(dump2data): ' + argv[i] + ' flag should be followed by an number indicating\n' ' the first frame you want to extract from the dump file (trajectory).\n' ' Frames after this timestep will be ignored.\n') - misc_settings.tstop = float(argv[i+1]) - del(argv[i:i+2]) + misc_settings.tstop = float(argv[i + 1]) + del(argv[i:i + 2]) misc_settings.multi = True elif (argv[i].lower() == '-center'): misc_settings.center_frame = True - del(argv[i:i+1]) + del(argv[i:i + 1]) elif ((argv[i].lower() == '-raw') or (argv[i].lower() == '-rawout')): misc_settings.output_format = 'raw' - del(argv[i:i+1]) + del(argv[i:i + 1]) elif (argv[i].lower() == '-rawin'): misc_settings.input_format = 'raw' misc_settings.multi = False - del(argv[i:i+1]) + del(argv[i:i + 1]) elif ((argv[i].lower() == '-xyz') or (argv[i].lower() == '-xyzout')): misc_settings.output_format = 'xyz' - del(argv[i:i+1]) + del(argv[i:i + 1]) elif (argv[i].lower() == '-xyzin'): misc_settings.input_format = 'xyz' misc_settings.multi = False - del(argv[i:i+1]) + del(argv[i:i + 1]) elif (argv[i].lower() == '-multi'): misc_settings.multi = True - del(argv[i:i+1]) + del(argv[i:i + 1]) elif (argv[i].lower() == '-last'): misc_settings.last_frame = True misc_settings.multi = False - del(argv[i:i+1]) + del(argv[i:i + 1]) elif (argv[i].lower() == '-interval'): - misc_settings.skip_interval = int(argv[i+1]) - del(argv[i:i+2]) + misc_settings.skip_interval = int(argv[i + 1]) + del(argv[i:i + 2]) elif (argv[i].lower() == '-scale'): - misc_settings.scale = float(argv[i+1]) - del(argv[i:i+2]) + misc_settings.scale = float(argv[i + 1]) + del(argv[i:i + 2]) elif ((argv[i][0] == '-') and (__name__ == "__main__")): - raise InputError('Error(dump2data): Unrecognized command line argument \"'+argv[i]+'\"\n') + raise InputError( + 'Error(dump2data): Unrecogized command line argument \"' + argv[i] + '\"\n') else: i += 1 usage_examples = \ -""" Typical usage: + """ Typical usage: dump2data.py orig_file.data < dump.lammpstrj > new_file.data (This extracts last frame, uses "full" atom_style.) Additional options: dump2data.py -t t -atomstyle style orig.data < dump.lammpstrj > new.data """ - #if __name__ == "__main__": + # if __name__ == "__main__": if (len(argv) > 2): # if there are more than 2 remaining arguments, @@ -480,27 +508,28 @@ dump2data.py -t t -atomstyle style orig.data < dump.lammpstrj > new.data # THEN raise InputError(' ----\n' 'ERROR(dump2data): You have too many arguments (or unrecognized arguments):\n' - ' \"'+(' '.join(argv))+'\"\n' + ' \"' + (' '.join(argv)) + '\"\n' ' ----\n' - +usage_examples) + + usage_examples) elif (len(argv) < 2): if misc_settings.output_format == 'data': raise InputError(' ----\n' 'ERROR(dump2data): Problem with argument list:\n' ' Expected a LAMMPS .data file as an argument.\n' ' ----\n' - +usage_examples) + + usage_examples) else: - in_data_file = open(argv[1], 'r') - data_settings.file_name = argv[1]; - data_settings.contents = in_data_file.readlines() + in_data_file = open(argv[1], 'r') + data_settings.file_name = argv[1] + data_settings.contents = in_data_file.readlines() in_data_file.close() - #end of if-then statement for "if __name__ == "__main__"" + # end of if-then statement for "if __name__ == "__main__"" if len(data_settings.i_coords) == 0: if warning_strings != None: - warning_strings.append('WARNING(dump2data): atom_style unknown. (Use -atomstyle style. Assuming \"full\")') + warning_strings.append( + 'WARNING(dump2data): atom_style unknown. (Use -atomstyle style. Assuming \"full\")') warn_atom_style_unspecified = True # The default atom_style is "full" data_settings.column_names = AtomStyle2ColNames('full') @@ -510,49 +539,47 @@ dump2data.py -t t -atomstyle style orig.data < dump.lammpstrj > new.data assert(len(ii_coords) == 1) data_settings.i_coords = ii_coords[0] data_settings.ii_vects = ColNames2Vects(data_settings.column_names) - data_settings.i_atomid, data_settings.i_atomtype, data_settings.i_molid = ColNames2AidAtypeMolid(data_settings.column_names) - - ### sys.stderr.write('########################################################\n' - ### '## WARNING: atom_style unspecified ##\n' - ### '## --> \"Atoms\" column data has an unknown format. ##\n' - ### '## Assuming atom_style = \"full\" ##\n' - ### '########################################################\n' - ### '## To specify the \"Atoms\" column format you can: ##\n' - ### '## 1) Use the -atom_style \"STYLE\" argument ##\n' - ### '## where \"STYLE\" is a string indicating a LAMMPS ##\n' - ### '## atom_style, including hybrid styles.(Standard ##\n' - ### '## atom styles defined in 2011 are supported.) ##\n' - ### '## 2) Use the -atom_style \"COL_LIST\" argument ##\n' - ### '## where \"COL_LIST" is a quoted list of strings ##\n' - ### '## indicating the name of each column. ##\n' - ### '## Names \"x\",\"y\",\"z\" are interpreted as ##\n' - ### '## atomic coordinates. \"mux\",\"muy\",\"muz\" ##\n' - ### '## and \"quati\",\"quatj\",\"quatk\" are ##\n' - ### '## interpreted as direction vectors. ##\n' - ### '## 3) Use the -icoord \"cx cy cz...\" argument ##\n' - ### '## where \"cx cy cz\" is a list of integers ##\n' - ### '## indicating the column numbers for the x,y,z ##\n' - ### '## coordinates of each atom. ##\n' - ### '## 4) Use the -ivect \"cmux cmuy cmuz...\" argument ##\n' - ### '## where \"cmux cmuy cmuz...\" is a list of ##\n' - ### '## integers indicating the column numbers for ##\n' - ### '## the vector that determines the direction of a ##\n' - ### '## dipole or ellipsoid (ie. a rotateable vector).##\n' - ### '## (More than one triplet can be specified. The ##\n' - ### '## number of entries must be divisible by 3.) ##\n' - ### '## 5) Include a ##\n' - ### '## write(\"in_init.txt\"){atom_style ...} ##\n' - ### '## statement in your .ttree file. ##\n' - ### '########################################################\n') - - + data_settings.i_atomid, data_settings.i_atomtype, data_settings.i_molid = ColNames2AidAtypeMolid( + data_settings.column_names) + + # sys.stderr.write('########################################################\n' + # '## WARNING: atom_style unspecified ##\n' + # '## --> \"Atoms\" column data has an unknown format. ##\n' + # '## Assuming atom_style = \"full\" ##\n' + # '########################################################\n' + # '## To specify the \"Atoms\" column format you can: ##\n' + # '## 1) Use the -atom_style \"STYLE\" argument ##\n' + # '## where \"STYLE\" is a string indicating a LAMMPS ##\n' + # '## atom_style, including hybrid styles.(Standard ##\n' + # '## atom styles defined in 2011 are supported.) ##\n' + # '## 2) Use the -atom_style \"COL_LIST\" argument ##\n' + # '## where \"COL_LIST" is a quoted list of strings ##\n' + # '## indicating the name of each column. ##\n' + # '## Names \"x\",\"y\",\"z\" are interpreted as ##\n' + # '## atomic coordinates. \"mux\",\"muy\",\"muz\" ##\n' + # '## and \"quati\",\"quatj\",\"quatk\" are ##\n' + # '## interpreted as direction vectors. ##\n' + # '## 3) Use the -icoord \"cx cy cz...\" argument ##\n' + # '## where \"cx cy cz\" is a list of integers ##\n' + # '## indicating the column numbers for the x,y,z ##\n' + # '## coordinates of each atom. ##\n' + # '## 4) Use the -ivect \"cmux cmuy cmuz...\" argument ##\n' + # '## where \"cmux cmuy cmuz...\" is a list of ##\n' + # '## integers indicating the column numbers for ##\n' + # '## the vector that determines the direction of a ##\n' + # '## dipole or ellipsoid (ie. a rotateable vector).##\n' + # '## (More than one triplet can be specified. The ##\n' + # '## number of entries must be divisible by 3.) ##\n' + # '## 5) Include a ##\n' + # '## write(\"in_init.txt\"){atom_style ...} ##\n' + # '## statement in your .ttree file. ##\n' + # '########################################################\n') def GetIntAtomID(pair): return int(pair[0]) - def WriteFrameToData(out_file, descr_str, misc_settings, @@ -564,11 +591,10 @@ def WriteFrameToData(out_file, velocities, atomtypes, molids, - xlo_str, xhi_str, - ylo_str, yhi_str, + xlo_str, xhi_str, + ylo_str, yhi_str, zlo_str, zhi_str, xy_str, xz_str, yz_str): - """ Open a data file. Read the LAMMPS DATA file line by line. When the line contains information which is also in the dump file, @@ -586,20 +612,20 @@ def WriteFrameToData(out_file, line = line[:ic] line = line.strip() - if firstline: # Construct a new descriptive header line: + if firstline: # Construct a new descriptive header line: if descr_str != None: line = descr_str firstline = False if (len(line) > 0): - # The initial section (section='') is assumed to be + # The initial section (section='') is assumed to be # the "LAMMPS Description" section. This is where the # box boundaries are specified. if section == '': tokens = line.split() if ((len(tokens) >= 2) and - ((tokens[-2] == 'xlo') and (tokens[-1] == 'xhi')) and - ((xlo_str != None) and (xhi_str != None))): + ((tokens[-2] == 'xlo') and (tokens[-1] == 'xhi')) and + ((xlo_str != None) and (xhi_str != None))): tokens[0] = xlo_str tokens[1] = xhi_str line = ' '.join(tokens) @@ -650,35 +676,39 @@ def WriteFrameToData(out_file, # or quat_i, quat_j, quat_k) # In principle, depending on the atom_style, # there could be multiple vectors per atom. - for I in range(0,len(data_settings.ii_vects)): - vxvyvz = vects[atomid][I] - i_vx = data_settings.ii_vects[I][0] - i_vy = data_settings.ii_vects[I][1] - i_vz = data_settings.ii_vects[I][2] - if ((i_vx >= len(tokens)) or - (i_vy >= len(tokens)) or - (i_vz >= len(tokens))): - raise InputError('Error(dump2data): Atom style incompatible with data file.\n' - ' Specify the atom_style using -atomstyle style.\n') - if ((vxvyvz == None) or - (type(vxvyvz) is not tuple)): - assert(data_settings.column_names[i_vx] not in dump_column_names) - raise InputError('Error(dump2data): You have a vector coordinate in your DATA file named \"'+data_settings.column_names[i_vx]+'\"\n' - ' However there are no columns with this name in your DUMP file\n' - ' (or the column was not in the expected place).\n' - ' Hence, the atom styles in the dump and data files do not match.') - - # Replace the vector components with numbers - # from the dump file - tokens[i_vx] = vxvyvz[0] - tokens[i_vy] = vxvyvz[1] - tokens[i_vz] = vxvyvz[2] + for I in range(0, len(data_settings.ii_vects)): + if atomid in vects: + vxvyvz = vects[atomid][I] + assert((type(vxvyvz) is tuple) and + (len(vxvyvz) == 3)) + i_vx = data_settings.ii_vects[I][0] + i_vy = data_settings.ii_vects[I][1] + i_vz = data_settings.ii_vects[I][2] + if ((i_vx >= len(tokens)) or + (i_vy >= len(tokens)) or + (i_vz >= len(tokens))): + raise InputError('Error(dump2data): Atom style incompatible with data file.\n' + ' Specify the atom_style using -atomstyle style.\n') + + # Replace the vector components with numbers + # from the dump file + tokens[i_vx] = vxvyvz[0] + tokens[i_vy] = vxvyvz[1] + tokens[i_vz] = vxvyvz[2] + + else: + if data_settings.column_names[ + i_vx] not in dump_column_names: + raise InputError('Error(dump2data): You have a vector coordinate in your DATA file named \"' + data_settings.column_names[i_vx] + '\"\n' + ' However there are no columns with this name in your DUMP file\n' + ' (or the column was not in the expected place).\n' + ' Hence, the atom styles in the dump and data files do not match.') # Now loop over the coordinates of each atom. - #for I in range(0,len(data_settings.ii_coords)): + # for I in range(0,len(data_settings.ii_coords)): # xyz = coords[atomid][I] # THIS LOOP IS SILLY. - # EACH ATOM ONLY HAS ONE SET OF X,Y,Z + # EACH ATOM ONLY HAS ONE SET OF X,Y,Z # COORDINATES. COMMENTING OUT THIS LOOP: # i_x = data_settings.ii_coords[I][0] # i_y = data_settings.ii_coords[I][1] @@ -694,18 +724,18 @@ def WriteFrameToData(out_file, (i_z >= len(tokens))): raise InputError('Error(dump2data): Atom style incompatible with data file.\n' ' Specify the atom_style using -atomstyle style.\n') - # Replace the coordinates with coordinates from + # Replace the coordinates with coordinates from # the dump file into tokens[i_x]... tokens[i_x] = str(xyz[0]) tokens[i_y] = str(xyz[1]) tokens[i_z] = str(xyz[2]) - # Are there there any integer coords + # Are there there any integer coords # (ix, iy, iz) in the dump file? if coords_ixiyiz[atomid]: assert(len(coords_ixiyiz[atomid]) == 3) # Integer coords stored in the DATA file too? - if len(tokens)==(len(data_settings.column_names)+3): + if len(tokens) == (len(data_settings.column_names) + 3): # Then replace the last 3 columns of the # line in the data file with: ix iy iz tokens[-3] = coords_ixiyiz[atomid][0] @@ -721,7 +751,6 @@ def WriteFrameToData(out_file, # Now finally paste all the tokens together: line = ' '.join(tokens) - elif (section == 'Velocities'): tokens = line.split() atomid = tokens[0] @@ -729,8 +758,9 @@ def WriteFrameToData(out_file, vxvyvz = velocities[atomid] if len(tokens) < 4: - raise InputError('Error(dump2data): Not enough columns in the \"Velocities\" file.\n') - # Replace the coordinates with coordinates from + raise InputError( + 'Error(dump2data): Not enough columns in the \"Velocities\" file.\n') + # Replace the coordinates with coordinates from # the dump file into tokens[i_x]... tokens[1] = str(vxvyvz[0]) tokens[2] = str(vxvyvz[1]) @@ -739,43 +769,26 @@ def WriteFrameToData(out_file, # Now finally paste all the tokens together: line = ' '.join(tokens) + out_file.write(line + '\n') - out_file.write(line+'\n') - - - - - - + return - - - - - - - -if __name__ == "__main__": - - g_program_name = 'dump2data.py' - g_date_str = '2015-8-11' - g_version_str = 'v0.51' - - ####### Main Code Below: ####### - sys.stderr.write(g_program_name+' '+g_version_str+' '+g_date_str+' ') - #if sys.version < '3': +def main(): + sys.stderr.write(g_program_name + ' v' + + g_version_str + ' ' + g_date_str + ' ') + # if sys.version < '3': # sys.stderr.write(' (python version < 3)\n') - #else: + # else: sys.stderr.write('\n') try: data_settings = DataSettings() misc_settings = MiscSettings() warning_strings = [] - ParseArgs(sys.argv, - misc_settings, - data_settings, + ParseArgs(sys.argv, + misc_settings, + data_settings, warning_strings) # Open the lammps dump file (trajectory file) @@ -804,11 +817,11 @@ if __name__ == "__main__": frame_xlo_str = frame_xhi_str = None frame_ylo_str = frame_yhi_str = None frame_zlo_str = frame_zhi_str = None - frame_xy_str = frame_xz_str = frame_yz_str = None + frame_xy_str = frame_xz_str = frame_yz_str = None frame_natoms = -1 frame_timestep_str = '' i_atomid = i_atomtype = i_molid = -1 - i_x = i_y = i_z = i_xu = i_yu = i_zu = -1 + i_x = i_y = i_z = i_xu = i_yu = i_zu = -1 i_xs = i_ys = i_zs = i_xsu = i_ysu = i_zsu = -1 dump_column_names = [] @@ -818,14 +831,13 @@ if __name__ == "__main__": finished_reading_frame = False read_last_frame = False - #in_coord_file = open('traj_nvt.lammpstrj','r') - #in_coord_file = open('deleteme.lammpstrj','r') + #in_coord_file = open('tmp_atom_coords.dat','r') in_coord_file = sys.stdin while True: line = in_coord_file.readline() - if line == '': # if EOF + if line == '': # if EOF if len(frame_coords) > 0: finished_reading_frame = True read_last_frame = True @@ -836,7 +848,7 @@ if __name__ == "__main__": if (section.find('ITEM: ATOMS ') == 0): dump_column_names = line[12:].split() i_atomid, i_atomtype, i_molid = \ - ColNames2AidAtypeMolid(dump_column_names) + ColNames2AidAtypeMolid(dump_column_names) #ii_coords = ColNames2Coords(dump_column_names) x_already_unwrapped = False @@ -854,7 +866,7 @@ if __name__ == "__main__": i_xsu = dump_column_names.index('xsu') x_already_unwrapped = True else: - raise InputError('Error(dump2data): \"ATOMS\" section of dump file lacks a \"x\" column.\n'+ + raise InputError('Error(dump2data): \"ATOMS\" section of dump file lacks a \"x\" column.\n' + ' (excerpt below)\n' + line) if 'y' in dump_column_names: @@ -868,7 +880,7 @@ if __name__ == "__main__": i_ysu = dump_column_names.index('ysu') y_already_unwrapped = True else: - raise InputError('Error(dump2data): \"ATOMS\" section of dump file lacks a \"y\" column.\n'+ + raise InputError('Error(dump2data): \"ATOMS\" section of dump file lacks a \"y\" column.\n' + ' (excerpt below)\n' + line) if 'z' in dump_column_names: @@ -882,14 +894,10 @@ if __name__ == "__main__": i_zsu = dump_column_names.index('zsu') z_already_unwrapped = True else: - raise InputError('Error(dump2data): \"ATOMS\" section of dump file lacks a \"z\" column.\n'+ + raise InputError('Error(dump2data): \"ATOMS\" section of dump file lacks a \"z\" column.\n' + ' (excerpt below)\n' + line) - - - - - ii_vects = ColNames2Vects(dump_column_names) + ii_vects = ColNames2Vects(dump_column_names) if (len(ii_vects) != len(data_settings.ii_vects)): raise InputError('Error(dump2data): atom styles in data and dump files differ.\n' ' Some needed columns from the atom_styles are missing in the dump file.') @@ -902,7 +910,6 @@ if __name__ == "__main__": if 'iz' in dump_column_names: i_iz = dump_column_names.index('iz') - i_vx = i_vy = i_vz = -1 if 'vx' in dump_column_names: i_vx = dump_column_names.index('vx') @@ -912,9 +919,9 @@ if __name__ == "__main__": i_vz = dump_column_names.index('vz') elif (section.find('ITEM: BOX BOUNDS') == 0): - avec=[1.0, 0.0, 0.0] - bvec=[0.0, 1.0, 0.0] - cvec=[0.0, 0.0, 1.0] + avec = [1.0, 0.0, 0.0] + bvec = [0.0, 1.0, 0.0] + cvec = [0.0, 0.0, 1.0] elif (section.find('ITEM: TIMESTEP') == 0): if len(frame_coords) > 0: @@ -923,17 +930,17 @@ if __name__ == "__main__": elif ((len(line) > 0) and (line[0] != '#')): if (section.find('ITEM: TIMESTEP') == 0): finished_reading_frame = False - frame_timestep_str = line + frame_timestep_str = line frame_coords = defaultdict(list) frame_coords_ixiyiz = defaultdict(list) - frame_vects = defaultdict(list) + frame_vects = defaultdict(list) frame_velocities = defaultdict(list) frame_atomtypes = defaultdict(list) frame_molids = defaultdict(list) frame_xlo_str = frame_xhi_str = None frame_ylo_str = frame_yhi_str = None frame_zlo_str = frame_zhi_str = None - frame_xy_str = frame_xz_str = frame_yz_str = None + frame_xy_str = frame_xz_str = frame_yz_str = None elif (section == 'ITEM: NUMBER OF ATOMS'): frame_natoms = int(line) @@ -950,8 +957,8 @@ if __name__ == "__main__": if (is_triclinic and (len(tokens) > 2)): frame_xy_str = tokens[2] bvec[0] = float(frame_xy_str) - #See http://lammps.sandia.gov/doc/Section-howto.html#howto_12 - #sys.stderr.write('avec='+str(avec)+'\n') + # See http://lammps.sandia.gov/doc/Section-howto.html#howto_12 + # sys.stderr.write('avec='+str(avec)+'\n') elif not frame_ylo_str: assert(not frame_yhi_str) @@ -961,19 +968,20 @@ if __name__ == "__main__": if (is_triclinic and (len(tokens) > 2)): frame_xz_str = tokens[2] cvec[0] = float(frame_xz_str) - #See http://lammps.sandia.gov/doc/Section-howto.html#howto_12 - #sys.stderr.write('bvec='+str(bvec)+'\n') + # See http://lammps.sandia.gov/doc/Section-howto.html#howto_12 + # sys.stderr.write('bvec='+str(bvec)+'\n') elif not frame_zlo_str: assert(not frame_zhi_str) frame_zlo_str = tokens[0] frame_zhi_str = tokens[1] - cvec = [0.0, 0.0, float(frame_zhi_str) - float(frame_zlo_str)] + cvec = [0.0, 0.0, float( + frame_zhi_str) - float(frame_zlo_str)] if (is_triclinic and (len(tokens) > 2)): frame_yz_str = tokens[2] cvec[1] = float(frame_yz_str) - #See http://lammps.sandia.gov/doc/Section-howto.html#howto_12 - #sys.stderr.write('cvec='+str(cvec)+'\n') + # See http://lammps.sandia.gov/doc/Section-howto.html#howto_12 + # sys.stderr.write('cvec='+str(cvec)+'\n') elif (section.find('ITEM: ATOMS') == 0): tokens = line.split() @@ -985,45 +993,51 @@ if __name__ == "__main__": frame_molids[atomid] = molid if ((i_x != -1) and (i_y != -1) and (i_z != -1)): - x = float(tokens[i_x]) #i_x determined above - y = float(tokens[i_y]) - z = float(tokens[i_z]) + x = float(tokens[i_x]) # i_x determined above + y = float(tokens[i_y]) + z = float(tokens[i_z]) elif ((i_xu != -1) and (i_yu != -1) and (i_zu != -1)): - x = float(tokens[i_xu]) #i_x determined above - y = float(tokens[i_yu]) - z = float(tokens[i_zu]) + x = float(tokens[i_xu]) # i_x determined above + y = float(tokens[i_yu]) + z = float(tokens[i_zu]) elif ((i_xs != -1) and (i_ys != -1) and (i_zs != -1)): - xs = float(tokens[i_xs]) #i_xs determined above + xs = float(tokens[i_xs]) # i_xs determined above ys = float(tokens[i_ys]) zs = float(tokens[i_zs]) - x = float(xlo_str) + xs*avec[0] + ys*bvec[0] + zs*cvec[0] - y = float(ylo_str) + xs*avec[1] + ys*bvec[1] + zs*cvec[1] - z = float(zlo_str) + xs*avec[2] + ys*bvec[2] + zs*cvec[2] + x = float(xlo_str) + xs * \ + avec[0] + ys * bvec[0] + zs * cvec[0] + y = float(ylo_str) + xs * \ + avec[1] + ys * bvec[1] + zs * cvec[1] + z = float(zlo_str) + xs * \ + avec[2] + ys * bvec[2] + zs * cvec[2] # avec, bvec, cvec described here: - #http://lammps.sandia.gov/doc/Section-howto.html#howto_12 + # http://lammps.sandia.gov/doc/Section-howto.html#howto_12 elif ((i_xsu != -1) and (i_ysu != -1) and (i_zsu != -1)): - xsu = float(tokens[i_xsu]) #i_xs determined above + xsu = float(tokens[i_xsu]) # i_xs determined above ysu = float(tokens[i_ysu]) zsu = float(tokens[i_zsu]) - x = float(xlo_str) + xsu*avec[0] + ysu*bvec[0] + zsu*cvec[0] - y = float(ylo_str) + xsu*avec[1] + ysu*bvec[1] + zsu*cvec[1] - z = float(zlo_str) + xsu*avec[2] + ysu*bvec[2] + zsu*cvec[2] + x = float(xlo_str) + xsu * \ + avec[0] + ysu * bvec[0] + zsu * cvec[0] + y = float(ylo_str) + xsu * \ + avec[1] + ysu * bvec[1] + zsu * cvec[1] + z = float(zlo_str) + xsu * \ + avec[2] + ysu * bvec[2] + zsu * cvec[2] # Now deal with ix, iy, iz if (i_ix != -1) and (not x_already_unwrapped): ix = int(tokens[i_ix]) if (misc_settings.center_frame or - (misc_settings.output_format != 'data')): + (misc_settings.output_format != 'data')): #sys.stderr.write('atomid='+str(atomid)+', ix = '+str(ix)+', avec='+str(avec)+'\n') - x += ix*avec[0] - y += ix*avec[1] - z += ix*avec[2] + x += ix * avec[0] + y += ix * avec[1] + z += ix * avec[2] else: if atomid not in frame_coords_ixiyiz: frame_coords_ixiyiz[atomid] = ["0", "0", "0"] @@ -1032,11 +1046,11 @@ if __name__ == "__main__": if (i_iy != -1) and (not y_already_unwrapped): iy = int(tokens[i_iy]) if (misc_settings.center_frame or - (misc_settings.output_format != 'data')): + (misc_settings.output_format != 'data')): #sys.stderr.write('atomid='+str(atomid)+', iy = '+str(iy)+', bvec='+str(bvec)+'\n') - x += iy*bvec[0] - y += iy*bvec[1] - z += iy*bvec[2] + x += iy * bvec[0] + y += iy * bvec[1] + z += iy * bvec[2] else: if atomid not in frame_coords_ixiyiz: frame_coords_ixiyiz[atomid] = ["0", "0", "0"] @@ -1045,11 +1059,11 @@ if __name__ == "__main__": if (i_iz != -1) and (not z_already_unwrapped): iz = int(tokens[i_iz]) if (misc_settings.center_frame or - (misc_settings.output_format != 'data')): + (misc_settings.output_format != 'data')): #sys.stderr.write('atomid='+str(atomid)+', iz = '+str(iz)+', cvec='+str(cvec)+'\n') - x += iz*cvec[0] - y += iz*cvec[1] - z += iz*cvec[2] + x += iz * cvec[0] + y += iz * cvec[1] + z += iz * cvec[2] else: if atomid not in frame_coords_ixiyiz: frame_coords_ixiyiz[atomid] = ["0", "0", "0"] @@ -1070,17 +1084,18 @@ if __name__ == "__main__": frame_velocities[atomid] = [vx, vy, vz] - # Ugly detail: + # NOTE: # There can be multiple "vects" associated with each atom # (for example, dipole moments, ellipsoid directions, etc..) if atomid not in frame_vects: - frame_vects[atomid] = [None for I in range(0,len(ii_vects))] + frame_vects[atomid] = [ + None for I in range(0, len(ii_vects))] for I in range(0, len(ii_vects)): - i_vx = ii_vects[I][0] - i_vy = ii_vects[I][1] - i_vz = ii_vects[I][2] + i_vx = ii_vects[I][0] + i_vy = ii_vects[I][1] + i_vz = ii_vects[I][2] vx_str = tokens[i_vx] vy_str = tokens[i_vy] vz_str = tokens[i_vz] @@ -1097,7 +1112,8 @@ if __name__ == "__main__": i_vx_data = 0 I_data = -1 # This code is ugly and inneficient. - # I never want to touch this code again. (Hope it works) + # I never want to touch this code again. (Hope it + # works) while i_vx_data < len(data_settings.column_names): if name_vx == data_settings.column_names[i_vx_data]: I_data = 0 @@ -1106,27 +1122,28 @@ if __name__ == "__main__": break I_data += 1 - if (0= + # if (float(frame_timestep_str) >= # float(misc_settings.timestep_str)): # num_frames_in = 1 # if not misc_settings.multi: @@ -1160,8 +1176,6 @@ if __name__ == "__main__": # else: # num_frames_in = 1 - - # Should we write out the coordinates in this frame? write_this_frame = False @@ -1169,10 +1183,10 @@ if __name__ == "__main__": write_this_frame = True if (misc_settings.tstart and - (int(frame_timestep_str) < misc_settings.tstart)): + (int(frame_timestep_str) < misc_settings.tstart)): write_this_frame = False if (misc_settings.tstop and - (int(frame_timestep_str) > misc_settings.tstop)): + (int(frame_timestep_str) > misc_settings.tstop)): write_this_frame = False read_last_frame = True @@ -1182,8 +1196,8 @@ if __name__ == "__main__": tstart = 0 if ((int(frame_timestep_str) - tstart) - % - misc_settings.skip_interval) != 0: + % + misc_settings.skip_interval) != 0: write_this_frame = False else: @@ -1192,61 +1206,65 @@ if __name__ == "__main__": write_this_frame = True else: assert(misc_settings.timestep_str) - if (int(frame_timestep_str) >= - int(misc_settings.timestep_str)): + if (int(frame_timestep_str) >= + int(misc_settings.timestep_str)): write_this_frame = True - read_last_frame = True - + read_last_frame = True if write_this_frame: num_frames_out += 1 - sys.stderr.write(' (writing frame '+str(num_frames_out)+ - ' at timestep '+frame_timestep_str+')\n') - + sys.stderr.write(' (writing frame ' + str(num_frames_out) + + ' at timestep ' + frame_timestep_str + ')\n') # Print the frame # First check which format to output the data: if misc_settings.output_format == 'raw': - # Print out the coordinates in simple 3-column text format + # Print out the coordinates in simple 3-column text + # format for atomid, xyz in iter(sorted(frame_coords.items(), key=GetIntAtomID)): if misc_settings.scale == None: - sys.stdout.write(str(xyz[0])+' '+str(xyz[1])+' '+str(xyz[2])+'\n') + sys.stdout.write( + str(xyz[0]) + ' ' + str(xyz[1]) + ' ' + str(xyz[2]) + '\n') else: - # Only convert to float and back if misc_settings.scale != None - sys.stdout.write(str(misc_settings.scale*float(xyz[0]))+' '+ - str(misc_settings.scale*float(xyz[1]))+' '+ - str(misc_settings.scale*float(xyz[2]))+'\n') + # Only convert to float and back if + # misc_settings.scale != None + sys.stdout.write(str(misc_settings.scale * float(xyz[0])) + ' ' + + str(misc_settings.scale * float(xyz[1])) + ' ' + + str(misc_settings.scale * float(xyz[2])) + '\n') sys.stdout.write('\n') elif misc_settings.output_format == 'xyz': - # Print out the coordinates in simple 3-column text format - sys.stdout.write(str(len(frame_coords))+'\n') - descr_str = 'LAMMPS data from timestep '+frame_timestep_str - sys.stdout.write(descr_str+'\n') + # Print out the coordinates in simple 3-column text + # format + sys.stdout.write(str(len(frame_coords)) + '\n') + descr_str = 'LAMMPS data from timestep ' + frame_timestep_str + sys.stdout.write(descr_str + '\n') for atomid, xyz in iter(sorted(frame_coords.items(), key=GetIntAtomID)): if misc_settings.scale == None: - sys.stdout.write(str(atomid)+' '+ - str(xyz[0])+' '+ - str(xyz[1])+' '+ - str(xyz[2])+'\n') + sys.stdout.write(str(atomid) + ' ' + + str(xyz[0]) + ' ' + + str(xyz[1]) + ' ' + + str(xyz[2]) + '\n') else: - # Only convert to float and back if misc_settings.scale != None - sys.stdout.write(str(atomid)+' '+ - str(misc_settings.scale*float(xyz[0]))+' '+ - str(misc_settings.scale*float(xyz[1]))+' '+ - str(misc_settings.scale*float(xyz[2]))+'\n') + # Only convert to float and back if + # misc_settings.scale != None + sys.stdout.write(str(atomid) + ' ' + + str(misc_settings.scale * float(xyz[0])) + ' ' + + str(misc_settings.scale * float(xyz[1])) + ' ' + + str(misc_settings.scale * float(xyz[2])) + '\n') else: # Parse the DATA file specified by the user # and replace appropriate lines or fields with # the corresponding text from the DUMP file. - descr_str = 'LAMMPS data from timestep '+frame_timestep_str + descr_str = 'LAMMPS data from timestep ' + frame_timestep_str if misc_settings.multi and (misc_settings.output_format == 'data'): out_file_name = data_settings.file_name + '.'\ + str(num_frames_out) - sys.stderr.write(' (creating file \"'+out_file_name+'\")\n') + sys.stderr.write( + ' (creating file \"' + out_file_name + '\")\n') out_file = open(out_file_name, 'w') else: out_file = sys.stdout @@ -1262,29 +1280,29 @@ if __name__ == "__main__": frame_velocities, frame_atomtypes, frame_molids, - frame_xlo_str, frame_xhi_str, - frame_ylo_str, frame_yhi_str, + frame_xlo_str, frame_xhi_str, + frame_ylo_str, frame_yhi_str, frame_zlo_str, frame_zhi_str, frame_xy_str, frame_xz_str, frame_yz_str) - #if misc_settings.multi: + # if misc_settings.multi: # out_file.close() - - #if num_frames_in >= 0: + # if num_frames_in >= 0: # num_frames_in += 1 - if read_last_frame: exit(0) - for warning_str in warning_strings: - sys.stderr.write(warning_str+'\n') - - + sys.stderr.write(warning_str + '\n') except (ValueError, InputError) as err: - sys.stderr.write('\n'+str(err)+'\n') + sys.stderr.write('\n' + str(err) + '\n') sys.exit(-1) + return + + +if __name__ == '__main__': + main() diff --git a/tools/moltemplate/moltemplate/ettree.py b/tools/moltemplate/moltemplate/ettree.py new file mode 100755 index 0000000000000000000000000000000000000000..c8d90c7e42b7125964074a46441f9b33466b885b --- /dev/null +++ b/tools/moltemplate/moltemplate/ettree.py @@ -0,0 +1,580 @@ +#!/usr/bin/env python + +# Author: Andrew Jewett (jewett.aij at g mail) +# http://www.chem.ucsb.edu/~sheagroup +# License: 3-clause BSD License (See LICENSE.TXT) +# Copyright (c) 2011, Regents of the University of California +# All rights reserved. + +""" +ettree.py + +ettree.py is an extension of the generic ttree.py program. +This version can understand and manipulate ttree-style templates which +are specialized for storing molecule-specific data for use in ESPresSo/TCL. + +The main difference between ettree.py and ttree.py is: +Unlike ttree.py, ettree.py understands rigid-body movement commands like +"rot()" and "move()" which allows it to reorient and move each copy +of a molecule to a new location. (ttree.py just ignores these commands. +Consequently ESPresSo/TCL input file (fragments) created with ttree.py have +invalid (overlapping) atomic coordinates and must be modified or aguemted +later (by loading atomic coordinates from a PDB file or an XYZ file). +ettree.py understands and can manipulate atomic coordinates. + +Additional ESPresSo/TCL-specific features may be added in the future. + +""" + +import sys + +# Problem: +# One of the python files I need is in a different git repository +# which is linked to the parent directory using "git subtree". +# The result of this is that he python code I need to access is in +# a directory which is outside the current one (in "../moltemplate/src") +# For now, I'm willing to resort to using a hack to import this file. + +import os, inspect +# use this if you want to include modules from a subfolder +# http://stackoverflow.com/questions/279237/import-a-module-from-a-relative-path +cmd_subfolder = os.path.realpath(os.path.abspath(os.path.join(os.path.split(inspect.getfile( inspect.currentframe() ))[0],"..","moltemplate","src"))) +if cmd_subfolder not in sys.path: + sys.path.insert(0, cmd_subfolder) + + +try: + from .ttree import BasicUISettings, BasicUIParseArgs, EraseTemplateFiles, \ + StackableCommand, PopCommand, PopRightCommand, PopLeftCommand, \ + PushCommand, PushLeftCommand, PushRightCommand, ScopeCommand, \ + WriteVarBindingsFile, StaticObj, InstanceObj, \ + BasicUI, ScopeBegin, ScopeEnd, WriteFileCommand, Render + from .ttree_lex import InputError, TextBlock, DeleteLinesWithBadVars, \ + TemplateLexer + from .ettree_styles import espt_delim_atom_fields, \ + LinesWSlashes, SplitMultiDelims, SplitAtomLine, \ + iEsptAtomCoords, iEsptAtomVects, iEsptAtomType, iEsptAtomID + from .ttree_matrix_stack import AffineTransform, MultiAffineStack, \ + LinTransform +except (SystemError, ValueError): + # not installed as a package + from ttree import * + from ttree_lex import * + from ettree_styles import * + from ttree_matrix_stack import * + +try: + unicode +except NameError: + # Python 3 + basestring = unicode = str + + +data_atoms = 'Data Atoms' # <-- The name of the file/section storing Atom data. + + + +class EttreeSettings(BasicUISettings): + """ Currently EttreeSettings is identical to BasicUISettings. + Later on, if I find I need to add custom settings specific to ESPresSoTCL, + I will add them here. + (See "class LttreeSettings" in "lttree.py" for comparison.) + + """ + + def __init__(self, + user_bindings_x=None, + user_bindings=None, + order_method='by_command'): + + BasicUISettings.__init__(self, + user_bindings_x, + user_bindings, + order_method) + + + +def EttreeParseArgs(argv, settings): + """ + This function currently does nothing except invoke BasicUIParseArgs() + (and throw an error message if the user forgot to specify an file name). + Later on, if I think of some command-line arguments specific + to ESPresSo(tcl), then I will deal with them here. + (See the "LttreeParseArgs()" function in "lttree.py" for comparison.) + + """ + + BasicUIParseArgs(argv, settings) + + # Loop over the remaining arguments not processed yet. + # These arguments are specific to the ettree.py program + # and are not understood by ttree.py: + i = 1 + while i < len(argv): + #sys.stderr.write('argv['+str(i)+'] = \"'+argv[i]+'\"\n') + if ((argv[i][0] == '-') and (__name__ == "__main__")): + #elif (__name__ == "__main__"): + raise InputError('Error('+__file__+'):\n' + 'Unrecogized command line argument \"'+argv[i]+'\"\n') + else: + i += 1 + + + if __name__ == "__main__": + + # Instantiate the lexer we will be using. + # (The lexer's __init__() function requires an openned file. + # Assuming __name__ == "__main__", then the name of that file should + # be the last remaining (unprocessed) argument in the argument list. + # Otherwise, then name of that file will be determined later by the + # python script which imports this module, so we let them handle it.) + + if len(argv) == 1: + raise InputError('Error: This program requires at least one argument\n' + ' the name of a file containing ttree template commands\n') + elif len(argv) == 2: + try: + # Parse text from the file named argv[1] + settings.lex.infile = argv[1] + settings.lex.instream = open(argv[1], 'r') + except IOError: + sys.stderr.write('Error: unable to open file\n' + ' \"'+argv[1]+'\"\n' + ' for reading.\n') + sys.exit(1) + del(argv[1:2]) + + else: + # if there are more than 2 remaining arguments, + problem_args = ['\"'+arg+'\"' for arg in argv[1:]] + raise InputError('Syntax Error('+__file__+'):\n\n' + ' Problem with argument list.\n' + ' The remaining arguments are:\n\n' + ' '+(' '.join(problem_args))+'\n\n' + ' (The actual problem may be earlier in the argument list.\n' + ' If these arguments are source files, then keep in mind\n' + ' that this program can not parse multiple source files.)\n' + ' Check the syntax of the entire argument list.\n') + + + + + +def TransformAtomText(text, matrix): + """ Apply transformations to the coordinates and other vector degrees + of freedom stored in the atom declaration section. + This is the \"text\" argument. + The \"matrix\" stores the aggregate sum of combined transformations + to be applied. + + """ + + #sys.stderr.write('matrix_stack.M = \n'+ MatToStr(matrix) + '\n') + + # lines = text.split('\n') <-- this does not work because a backslash at + # the end of a line can merge multiple lines + + lines = [line for line in LinesWSlashes(text)] # <-- handles backslashes + for i in range(0, len(lines)): + line = lines[i] + tokens = SplitAtomLine(line) + if len(tokens) > 0: + x0 = [0.0, 0.0, 0.0] + x = [0.0, 0.0, 0.0] + for icrd in iEsptAtomCoords(tokens): + coords_str = tokens[icrd].split() + for d in range(0,3): + x0[d] = float(coords_str[d]) + AffineTransform(x, matrix, x0) # x = matrix * x0 + b + for d in range(0,3): # ("b" is part of "matrix") + coords_str[d] = str(x[d]) + tokens[icrd] = ' '.join(coords_str) + + for ivect in iEsptAtomVects(tokens): + coords_str = tokens[ivect].split() + for d in range(0,3): + x0[d] = float(coords_str[d]) + LinearTransform(x, matrix, x0) # x = matrix * x0 + for d in range(0,3): + coords_str[d] = str(x[d]) + tokens[ivect] = ' '.join(coords_str) + line = ' '.join(tokens) + lines[i] = line + return '\n'.join(lines)+'\n' + + +# NOT IMPLEMENTED YET: +def CalcCM(text_Atoms, + text_Masses=None, + settings=None): + # FILL IN THE CONTENTS OF THIS FUNCTION LATER + xcm = [0.0, 0.0, 0.0] + return xcm + + + +def _ExecCommands(command_list, + index, + global_files_content, + settings, + matrix_stack, + current_scope_id=None, + substitute_vars=True): + """ + _ExecCommands(): + The argument "commands" is a nested list of lists of + "Command" data structures (defined in ttree.py). + + Carry out the write() and write_once() commands (which + write out the contents of the templates contain inside them). + Instead of writing the files, save their contents in a string. + + The argument "global_files_content" should be of type defaultdict(list) + It is an associative array whose key is a string (a filename) + and whose value is a lists of strings (of rendered templates). + + """ + files_content = defaultdict(list) + postprocessing_commands = [] + + while index < len(command_list): + command = command_list[index] + index += 1 + + # For debugging only + # sys.stderr.write(str(command)+'\n') + + if isinstance(command, PopCommand): + assert(current_scope_id != None) + if command.context_node == None: + command.context_node = current_scope_id + if isinstance(command, PopRightCommand): + matrix_stack.PopRight(which_stack = command.context_node) + elif isinstance(command, PopLeftCommand): + matrix_stack.PopLeft(which_stack = command.context_node) + else: + assert(False) + + elif isinstance(command, PushCommand): + assert(current_scope_id != None) + if command.context_node == None: + command.context_node = current_scope_id + # Some commands are post-processing commands, and must be + # carried out AFTER all the text has been rendered. For example + # the "movecm(0,0,0)" waits until all of the coordinates have + # been rendered, calculates the center-of-mass, and then applies + # a translation moving the center of mass to the origin (0,0,0). + # We need to figure out which of these commands need to be + # postponed, and which commands can be carried out now. + # ("now"=pushing transformation matrices onto the matrix stack). + # UNFORTUNATELY POSTPONING SOME COMMANDS MAKES THE CODE UGLY + transform_list = command.contents.split('.') + transform_blocks = [] + i_post_process = -1 + # Example: Suppose: + #command.contents = '.rot(30,0,0,1).movecm(0,0,0).rot(45,1,0,0).scalecm(2.0).move(-2,1,0)' + # then + #transform_list = ['rot(30,0,0,1)', 'movecm(0,0,0)', 'rot(45,1,0,0)', 'scalecm(2.0)', 'move(-2,1,0)'] + # Note: the first command 'rot(30,0,0,1)' is carried out now. + # The remaining commands are carried out during post-processing, + # (when processing the "ScopeEnd" command. + # + # We break up the commands into "blocks" separated by center- + # of-mass transformations ('movecm', 'rotcm', or 'scalecm') + # + # transform_blocks = ['.rot(30,0,0,1)', + # '.movecm(0,0,0).rot(45,1,0,0)', + # '.scalecm(2.0).move(-2,1,0)'] + + i = 0 + while i < len(transform_list): + transform_block = '' + while i < len(transform_list): + transform = transform_list[i] + i += 1 + if transform != '': + transform_block += '.' + transform + transform = transform.split('(')[0] + if ((transform == 'movecm') or + (transform == 'rotcm') or + (transform == 'scalecm')): + + #break + + raise InputError("Error: center-of-mass transformations are not yet implemented\n" + " Avoid using \""+transform+"()\" transformations.\n") + + transform_blocks.append(transform_block) + + if len(postprocessing_commands) == 0: + # The first block (before movecm, rotcm, or scalecm) + # can be executed now by modifying the matrix stack. + if isinstance(command, PushRightCommand): + matrix_stack.PushCommandsRight(transform_blocks[0].strip('.'), + command.srcloc, + which_stack=command.context_node) + elif isinstance(command, PushLeftCommand): + matrix_stack.PushCommandsLeft(transform_blocks[0].strip('.'), + command.srcloc, + which_stack=command.context_node) + # Everything else must be saved for later. + postprocessing_blocks = transform_blocks[1:] + else: + # If we already encountered a "movecm" "rotcm" or "scalecm" + # then all of the command blocks must be handled during + # postprocessing. + postprocessing_blocks = transform_blocks + + for transform_block in postprocessing_blocks: + assert(isinstance(block, basestring)) + if isinstance(command, PushRightCommand): + postprocessing_commands.append(PushRightCommand(transform_block, + command.srcloc, + command.context_node)) + elif isinstance(command, PushLeftCommand): + postprocessing_commands.append(PushLeftCommand(transform_block, + command.srcloc, + command.context_node)) + + + elif isinstance(command, WriteFileCommand): + + # --- Throw away lines containin references to deleted variables:--- + + # First: To edit the content of a template, + # you need to make a deep local copy of it + tmpl_list = [] + for entry in command.tmpl_list: + if isinstance(entry, TextBlock): + tmpl_list.append(TextBlock(entry.text, + entry.srcloc)) #, entry.srcloc_end)) + else: + tmpl_list.append(entry) + + + # --- Now throw away lines with deleted variables --- + + DeleteLinesWithBadVars(tmpl_list) + + # --- Now render the text --- + text = Render(tmpl_list, + substitute_vars) + + # ---- Coordinates of the atoms, must be rotated + # and translated after rendering. + # In addition, other vectors (dipoles, ellipsoid orientations) + # must be processed. + # This requires us to re-parse the contents of this text + # (after it has been rendered), and apply these transformations + # before passing them on to the caller. + if command.filename == data_atoms: + text = TransformAtomText(text, matrix_stack.M) + + files_content[command.filename].append(text) + + + elif isinstance(command, ScopeBegin): + + if isinstance(command.node, InstanceObj): + if ((command.node.children != None) and + (len(command.node.children) > 0)): + matrix_stack.PushStack(command.node) + + # "command_list" is a long list of commands. + # ScopeBegin and ScopeEnd are (usually) used to demarcate/enclose + # the commands which are issued for a single class or + # class instance. _ExecCommands() carries out the commands for + # a single class/instance. If we reach a ScopeBegin(), + # then recursively process the commands belonging to the child. + index = _ExecCommands(command_list, + index, + files_content, + settings, + matrix_stack, + command.node, + substitute_vars) + + elif isinstance(command, ScopeEnd): + if 'Data Atoms' in files_content: + for ppcommand in postprocessing_commands: + if 'Data Masses' in files_content: + pass + #xcm = CalcCM(files_content['Data Atoms'], + # files_content['Data Masses'], + # settings) + else: + pass + #xcm = CalcCM(files_content['Data Atoms']) + + if isinstance(ppcommand, PushRightCommand): + matrix_stack.PushCommandsRight(ppcommand.contents, + ppcommand.srcloc, + xcm, + which_stack=command.context_node) + elif isinstance(ppcommand, PushLeftCommand): + matrix_stack.PushCommandsLeft(ppcommand.contents, + ppcommand.srcloc, + xcm, + which_stack=command.context_node) + files_content['Data Atoms'] = \ + TransformAtomText(Files_content['Data Atoms'], + matrix_stack.M) + + for ppcommand in postprocessing_commands: + matrix_stack.Pop(which_stack = command.context_node) + #(same as PopRight()) + + if isinstance(command.node, InstanceObj): + if ((command.node.children != None) and + (len(command.node.children) > 0)): + matrix_stack.PopStack() + + # "ScopeEnd" means we're done with this class/instance. + break + + else: + assert(False) + # no other command types allowed at this point + + + # After processing the commands in this list, + # merge the templates with the callers template list + for file_name, tmpl_list in files_content.items(): + global_files_content[file_name] += \ + files_content[file_name] + + return index + + + +def ExecCommands(commands, + files_content, + settings, + substitute_vars=True): + + matrix_stack = MultiAffineStack() + + index = _ExecCommands(commands, + 0, + files_content, + settings, + matrix_stack, + None, + substitute_vars) + assert(index == len(commands)) + + + + +def WriteFiles(files_content, suffix='', write_to_stdout=True): + for file_name, str_list in files_content.items(): + if file_name != None: + out_file = None + if file_name == '': + if write_to_stdout: + out_file = sys.stdout + else: + out_file = open(file_name+suffix, 'a') + if out_file != None: + out_file.write(''.join(str_list)) + if file_name != '': + out_file.close() + + + +def main() + """ + This is is a "main module" wrapper for invoking ettree.py + as a stand alone program. This program: + + 1)reads a ttree file, + 2)constructs a tree of class definitions (g_objectdefs) + 3)constructs a tree of instantiated class objects (g_objects), + 4)automatically assigns values to the variables, + 5)and carries out the "write" commands to write the templates a file(s). + + """ + g_program_name = 'ettree.py' + g_date_str = '2016-12-22' + g_version_str = '0.36.0' + + SimpleCounter.default_n0 = 0 # counters in Espresso begin at 0, not 1 + + ####### Main Code Below: ####### + sys.stderr.write(g_program_name+' v'+g_version_str+' '+g_date_str+' ') + sys.stderr.write('\n(python version '+str(sys.version)+')\n') + if sys.version < '2.6': + raise InputError('Error: Alas, you must upgrade to a newever version of python.') + + try: + + #settings = BasicUISettings() + #BasicUIParseArgs(sys.argv, settings) + settings = EttreeSettings() + EttreeParseArgs(sys.argv, settings) + + # Data structures to store the class definitionss and instances + g_objectdefs = StaticObj('', None) # The root of the static tree + # has name '' (equivalent to '/') + g_objects = InstanceObj('', None) # The root of the instance tree + # has name '' (equivalent to '/') + + # A list of commands to carry out + g_static_commands = [] + g_instance_commands = [] + + + BasicUI(settings, + g_objectdefs, + g_objects, + g_static_commands, + g_instance_commands) + + # Now, carry out the commands + # This involves rendering the templates and post-processing them. + + sys.stderr.write(' done\nbuilding templates...') + + files_content = defaultdict(list) + + ExecCommands(g_static_commands, + files_content, + settings, + False) + ExecCommands(g_instance_commands, + files_content, + settings, + False) + + # Erase the files that will be written to: + sys.stderr.write(' done\nwriting templates...') + EraseTemplateFiles(g_static_commands) + EraseTemplateFiles(g_instance_commands) + + # Write the files as templates + # (with the original variable names present) + WriteFiles(files_content, suffix=".template", write_to_stdout=False) + + # Write the files with the variables substituted by values + sys.stderr.write(' done\nbuilding and rendering templates...') + files_content = defaultdict(list) + ExecCommands(g_static_commands, files_content, settings, True) + ExecCommands(g_instance_commands, files_content, settings, True) + sys.stderr.write(' done\nwriting rendered templates...\n') + WriteFiles(files_content) + + # Now write the variable bindings/assignments table. + sys.stderr.write('writing \"ttree_assignments.txt\" file...') + open('ttree_assignments.txt', 'w').close() # <-- erase previous version. + WriteVarBindingsFile(g_objectdefs) + WriteVarBindingsFile(g_objects) + sys.stderr.write(' done\n') + + except (ValueError, InputError) as err: + sys.stderr.write('\n\n'+str(err)+'\n') + sys.exit(-1) + + + +if __name__ == "__main__": + main() diff --git a/tools/moltemplate/moltemplate/ettree_styles.py b/tools/moltemplate/moltemplate/ettree_styles.py new file mode 100644 index 0000000000000000000000000000000000000000..e5a842b5e133942d8e7126d90f02dc00ebdd2c99 --- /dev/null +++ b/tools/moltemplate/moltemplate/ettree_styles.py @@ -0,0 +1,115 @@ + + +espt_delim_atom_fields = set(["pos", "type", "v", "f", + "bond", + "temp", "gamma", + "q", + "quat", "omega", "torque", + "rinertia", "fix", "unfix", "ext_force", + "exclude", "delete", + "mass", + "dipm", "dip", "virtual", + "vs_relative", "distance", "vs_auto_relate_to"]) + + + +def LinesWSlashes(text): + """ + Iterate over the lines contained in a string of text. + Merge lines ending in backslashes. + + """ + + current_line = '' + for line in text.split('\n'): + current_line += line + if (len(line) > 0) and (line[-1] != '\\'): + yield current_line + current_line = '' + if len(current_line) > 0: + yield current_line + + + + +def SplitMultiDelims(line, delimiters): + """ + Split a string into tokens using one or more (multi-character) delimiters. + (Bug: The current version of this function does not preserve white space, + but this should not matter.) + + """ + + token = '' + for sub_token in line.strip().split(): + if sub_token in delimiters: + yield token + yield sub_token + token = '' + elif len(token) > 0: + token += ' ' + sub_token + else: + token += sub_token + if len(token) > 0: + yield token + + + +def SplitAtomLine(line): + l = [] + for token in SplitMultiDelims(line, espt_delim_atom_fields): + l.append(token) + return l + + # In this type of TCL command, all of the delimiters + # (like 'pos', 'type', 'q', ...) + # are supposed to be followed by an argument. If the last + # token on this line IS a delimiter, then this is a syntax error. + + if token in espt_delim_atom_fields: + raise InputError("Error: Incomplete line:\n" + "\""+line+"\"\n") + + + +def iEsptAtomCoords(tokens): + #tokens = SplitMultiDelims(line) + i = 0 + while i < len(tokens): + if tokens[i] in set(['pos', 'fix', 'unfix']): + assert(i+1 < len(tokens)) + yield i+1 + i += 1 + i += 1 + + + + +def iEsptAtomVects(tokens): + #tokens = SplitMultiDelims(line) + i = 0 + while i < len(tokens): + if tokens[i] in set(['dip', 'rinertia', 'v', 'f', 'omega', 'torque']): + assert(i+1 < len(tokens)) + yield i+1 + i += 1 + i += 1 + + +def iEsptAtomType(tokens): + #tokens = SplitMultiDelims(line) + i = 0 + while i < len(tokens): + if tokens[i] == 'type': + assert(i+1 < len(tokens)) + yield i+1 + i += 1 + i += 1 + +def iEsptAtomID(tokens): + if len(tokens) > 1: + return 1 + else: + raise InputError("Error: Incomplete line:\n" + "\""+line+"\"\n") + diff --git a/tools/moltemplate/moltemplate/extract_espresso_atom_types.py b/tools/moltemplate/moltemplate/extract_espresso_atom_types.py new file mode 100755 index 0000000000000000000000000000000000000000..8d95928cec0b5d839c184db188275336324d6a33 --- /dev/null +++ b/tools/moltemplate/moltemplate/extract_espresso_atom_types.py @@ -0,0 +1,30 @@ +#!/usr/bin/env python + +import sys + +def main(): + for line_orig in sys.stdin: + line = line_orig.rstrip('\n') + comment = '' + if '#' in line_orig: + ic = line.find('#') + line = line_orig[:ic] + comment = ' '+line_orig[ic:].rstrip('\n') + + tokens = line.strip().split() + if len(tokens) > 2: + atomid = -1 + atomtype = -1 + pos_found = False + for i in range(0,len(tokens)): + if (tokens[i] == 'part') and (i+1 < len(tokens)): + atomid = tokens[i+1] + elif (tokens[i] == 'type') and (i+1 < len(tokens)): + atomtype = tokens[i+1] + elif (tokens[i] == 'pos') and (i+2 < len(tokens)): + pos_found = True + if (atomid != -1) and (atomtype != -1) and pos_found: + sys.stdout.write(atomid+' '+atomtype+'\n') + +if __name__ == "__main__": + main() diff --git a/tools/moltemplate/src/extract_lammps_data.py b/tools/moltemplate/moltemplate/extract_lammps_data.py old mode 100644 new mode 100755 similarity index 75% rename from tools/moltemplate/src/extract_lammps_data.py rename to tools/moltemplate/moltemplate/extract_lammps_data.py index 4fe3ec743d774ec389eee9aa193fc0b161080db0..23f5f172cf2c5a9f259b7f694e806f9884402aac --- a/tools/moltemplate/src/extract_lammps_data.py +++ b/tools/moltemplate/moltemplate/extract_lammps_data.py @@ -1,4 +1,22 @@ #!/usr/bin/env python +""" +extract_lammps_data.py is a simple script which extracts sections of text from +a LAMMPS data file. + +Typical usage: + +extract_lammps_data.py SECTION_NAME < FILE.DATA > EXCERPT.TXT + +This extracts a section from a LAMMPS data file and saves it in EXCERPT.TXT. + +More general usage: + +extract_lammps_data.py [-n] SECTION_LIST < FILE.DATA > EXCERPT.TXT + +For more details, see "doc/utils/docs_extract_lammps_data.txt" +""" + +import sys lammps_data_sections = set(['Atoms', 'Masses', @@ -12,22 +30,22 @@ lammps_data_sections = set(['Atoms', 'Improper Coeffs', 'BondBond Coeffs', # class2 angles 'BondAngle Coeffs', # class2 angles - 'MiddleBondTorsion Coeffs', # class2 dihedrals + 'MiddleBondTorsion Coeffs', # class2 dihedrals 'EndBondTorsion Coeffs', # class2 dihedrals 'AngleTorsion Coeffs', # class2 dihedrals - 'AngleAngleTorsion Coeffs', # class2 dihedrals + 'AngleAngleTorsion Coeffs', # class2 dihedrals 'BondBond13 Coeffs', # class2 dihedrals 'AngleAngle Coeffs', # class2 impropers 'Angles By Type', # new. not standard LAMMPS - 'Dihedrals By Type',# new. not standard LAMMPS + 'Dihedrals By Type', # new. not standard LAMMPS 'Angles By Type']) # new. not standard LAMMPS -def DeleteComments(string, - escape='\\', +def DeleteComments(string, + escape='\\', comment_char='#'): escaped_state = False - for i in range(0,len(string)): + for i in range(0, len(string)): if string[i] in escape: if escaped_state: escaped_state = False @@ -39,15 +57,14 @@ def DeleteComments(string, return string - def ExtractDataSection(f, - section_name, - comment_char = '#', - include_section_name = False, - return_line_nums = False): + section_name, + comment_char='#', + include_section_name=False, + return_line_nums=False): inside_section = False - if section_name in ('header','Header'): #"Header" section includes beginning + if section_name in ('header', 'Header'): # "Header" section includes beginning inside_section = True nonblank_encountered = False @@ -88,14 +105,11 @@ def ExtractDataSection(f, yield i else: yield line_orig - - i += 1 - + i += 1 -if __name__ == "__main__": - import sys +def main(): lines = sys.stdin.readlines() exclude_sections = False if sys.argv[1] == '-n': @@ -109,11 +123,16 @@ if __name__ == "__main__": else: line_nums_exclude = set([]) for section_name in sys.argv[1:]: - for line_num in ExtractDataSection(lines, - section_name, + for line_num in ExtractDataSection(lines, + section_name, include_section_name=True, return_line_nums=True): line_nums_exclude.add(line_num) for i in range(0, len(lines)): if i not in line_nums_exclude: sys.stdout.write(lines[i]) + + return + +if __name__ == "__main__": + main() diff --git a/tools/moltemplate/moltemplate/force_fields/SDK_lipid+chol.lt b/tools/moltemplate/moltemplate/force_fields/SDK_lipid+chol.lt new file mode 100644 index 0000000000000000000000000000000000000000..dd54c6b697121a2fa52cfa709cf7f36a4abd8067 --- /dev/null +++ b/tools/moltemplate/moltemplate/force_fields/SDK_lipid+chol.lt @@ -0,0 +1,423 @@ +# Autogenerated by EMC 2 LT tool v0.2 on 2017-02-28 +# +# ./emcprm2lt.py --pair-style=lj/sdk/coul/long --bond-style=harmonic --angle-style=sdk sdk_lipids.prm sdk_cholesterol.prm --name=SDK_lipid+chol --units +# +# Adapted from EMC by Pieter J. in 't Veld +# Originally written as, FFNAME:SDK STYLE:COARSE VERSION:1.0 on Oct 2014 + +SDK { + write_once("Data Masses") { + @atom:CM 42.080400 # CM + @atom:CMD2 26.037800 # CMD2 + @atom:CT 43.088300 # CT + @atom:CT2 29.061500 # CT2 + @atom:EST1 58.036600 # EST1 + @atom:EST2 58.036600 # EST2 + @atom:GL 41.072500 # GL + @atom:NC 87.164400 # NC + @atom:NH 44.076100 # NH + @atom:PH 94.971600 # PH + @atom:PHE 94.971600 # PHE + @atom:W 54.045600 # W + @atom:C2T 43.090000 # C2T + @atom:CM2 28.050000 # CM2 + @atom:CM2R 28.050000 # CM2R + @atom:CMDB 39.060000 # CMDB + @atom:CMB 40.060000 # CMB + @atom:CMR 41.070000 # CMR + @atom:CMR5 41.070000 # CMR5 + @atom:CTB 42.080000 # CTB + @atom:CTBA 27.050000 # CTBA + @atom:CTBB 27.050000 # CTBB + @atom:OAB 30.030000 # OAB + } # end of atom masses + + # ----- EQUIVALENCE CATEGORIES for bonded interaction lookup ----- + replace{ @atom:CM @atom:CM_bCM_aCM_dCM_iCM} + replace{ @atom:CMD2 @atom:CMD2_bCMD2_aCMD2_dCMD2_iCMD2} + replace{ @atom:CT @atom:CT_bCT_aCT_dCT_iCT} + replace{ @atom:CT2 @atom:CT2_bCT2_aCT2_dCT2_iCT2} + replace{ @atom:EST1 @atom:EST1_bEST1_aEST1_dEST1_iEST1} + replace{ @atom:EST2 @atom:EST2_bEST2_aEST2_dEST2_iEST2} + replace{ @atom:GL @atom:GL_bGL_aGL_dGL_iGL} + replace{ @atom:NC @atom:NC_bNC_aNC_dNC_iNC} + replace{ @atom:NH @atom:NH_bNH_aNH_dNH_iNH} + replace{ @atom:PH @atom:PH_bPH_aPH_dPH_iPH} + replace{ @atom:PHE @atom:PHE_bPHE_aPHE_dPHE_iPHE} + replace{ @atom:W @atom:W_bW_aW_dW_iW} + replace{ @atom:C2T @atom:C2T_bC2T_aC2T_dC2T_iC2T} + replace{ @atom:CM2 @atom:CM2_bCM2_aCM2_dCM2_iCM2} + replace{ @atom:CM2R @atom:CM2R_bCM2R_aCM2R_dCM2R_iCM2R} + replace{ @atom:CMDB @atom:CMDB_bCMDB_aCMDB_dCMDB_iCMDB} + replace{ @atom:CMB @atom:CMB_bCMB_aCMB_dCMB_iCMB} + replace{ @atom:CMR @atom:CMR_bCMR_aCMR_dCMR_iCMR} + replace{ @atom:CMR5 @atom:CMR5_bCMR5_aCMR5_dCMR5_iCMR5} + replace{ @atom:CTB @atom:CTB_bCTB_aCTB_dCTB_iCTB} + replace{ @atom:CTBA @atom:CTBA_bCTBA_aCTBA_dCTBA_iCTBA} + replace{ @atom:CTBB @atom:CTBB_bCTBB_aCTBB_dCTBB_iCTBB} + replace{ @atom:OAB @atom:OAB_bOAB_aOAB_dOAB_iOAB} + # END EQUIVALENCE + + write_once("In Settings") { + # ----- Non-Bonded interactions ----- + pair_coeff @atom:CM_bCM_aCM_dCM_iCM @atom:CM_bCM_aCM_dCM_iCM lj9_6 0.420000 4.506000 # CM-CM + pair_coeff @atom:CM_bCM_aCM_dCM_iCM @atom:CMD2_bCMD2_aCMD2_dCMD2_iCMD2 lj9_6 0.312000 4.255500 # CM-CMD2 + pair_coeff @atom:CM_bCM_aCM_dCM_iCM @atom:CT_bCT_aCT_dCT_iCT lj9_6 0.444000 4.545500 # CM-CT + pair_coeff @atom:CM_bCM_aCM_dCM_iCM @atom:CT2_bCT2_aCT2_dCT2_iCT2 lj9_6 0.362000 4.363500 # CM-CT2 + pair_coeff @atom:CM_bCM_aCM_dCM_iCM @atom:EST1_bEST1_aEST1_dEST1_iEST1 lj9_6 0.470000 4.403000 # CM-EST1 + pair_coeff @atom:CM_bCM_aCM_dCM_iCM @atom:EST2_bEST2_aEST2_dEST2_iEST2 lj9_6 0.470000 4.403000 # CM-EST2 + pair_coeff @atom:CM_bCM_aCM_dCM_iCM @atom:GL_bGL_aGL_dGL_iGL lj9_6 0.420000 4.506000 # CM-GL + pair_coeff @atom:CM_bCM_aCM_dCM_iCM @atom:NC_bNC_aNC_dNC_iNC lj9_6 0.400000 5.128000 # CM-NC + pair_coeff @atom:CM_bCM_aCM_dCM_iCM @atom:NH_bNH_aNH_dNH_iNH lj9_6 0.330000 4.553000 # CM-NH + pair_coeff @atom:CM_bCM_aCM_dCM_iCM @atom:PH_bPH_aPH_dPH_iPH lj9_6 0.300000 4.953000 # CM-PH + pair_coeff @atom:CM_bCM_aCM_dCM_iCM @atom:PHE_bPHE_aPHE_dPHE_iPHE lj9_6 0.300000 4.953000 # CM-PHE + pair_coeff @atom:CM_bCM_aCM_dCM_iCM @atom:W_bW_aW_dW_iW lj12_4 0.340000 4.438500 # CM-W + pair_coeff @atom:CMD2_bCMD2_aCMD2_dCMD2_iCMD2 @atom:CMD2_bCMD2_aCMD2_dCMD2_iCMD2 lj9_6 0.232000 4.005000 # CMD2-CMD2 + pair_coeff @atom:CMD2_bCMD2_aCMD2_dCMD2_iCMD2 @atom:CT_bCT_aCT_dCT_iCT lj9_6 0.330000 4.295000 # CMD2-CT + pair_coeff @atom:CMD2_bCMD2_aCMD2_dCMD2_iCMD2 @atom:CT2_bCT2_aCT2_dCT2_iCT2 lj9_6 0.269000 4.113000 # CMD2-CT2 + pair_coeff @atom:CMD2_bCMD2_aCMD2_dCMD2_iCMD2 @atom:EST1_bEST1_aEST1_dEST1_iEST1 lj9_6 0.440000 4.005000 # CMD2-EST1 + pair_coeff @atom:CMD2_bCMD2_aCMD2_dCMD2_iCMD2 @atom:EST2_bEST2_aEST2_dEST2_iEST2 lj9_6 0.440000 4.005000 # CMD2-EST2 + pair_coeff @atom:CMD2_bCMD2_aCMD2_dCMD2_iCMD2 @atom:GL_bGL_aGL_dGL_iGL lj9_6 0.312000 4.255500 # CMD2-GL + pair_coeff @atom:CMD2_bCMD2_aCMD2_dCMD2_iCMD2 @atom:NC_bNC_aNC_dNC_iNC lj9_6 0.350000 4.877500 # CMD2-NC + pair_coeff @atom:CMD2_bCMD2_aCMD2_dCMD2_iCMD2 @atom:NH_bNH_aNH_dNH_iNH lj9_6 0.300000 4.302500 # CMD2-NH + pair_coeff @atom:CMD2_bCMD2_aCMD2_dCMD2_iCMD2 @atom:PH_bPH_aPH_dPH_iPH lj9_6 0.300000 4.702500 # CMD2-PH + pair_coeff @atom:CMD2_bCMD2_aCMD2_dCMD2_iCMD2 @atom:PHE_bPHE_aPHE_dPHE_iPHE lj9_6 0.300000 4.702500 # CMD2-PHE + pair_coeff @atom:CMD2_bCMD2_aCMD2_dCMD2_iCMD2 @atom:W_bW_aW_dW_iW lj12_4 0.270000 4.188000 # CMD2-W + pair_coeff @atom:CT_bCT_aCT_dCT_iCT @atom:CT_bCT_aCT_dCT_iCT lj9_6 0.469000 4.585000 # CT-CT + pair_coeff @atom:CT_bCT_aCT_dCT_iCT @atom:CT2_bCT2_aCT2_dCT2_iCT2 lj9_6 0.383000 4.403000 # CT-CT2 + pair_coeff @atom:CT_bCT_aCT_dCT_iCT @atom:EST1_bEST1_aEST1_dEST1_iEST1 lj9_6 0.470000 4.442500 # CT-EST1 + pair_coeff @atom:CT_bCT_aCT_dCT_iCT @atom:EST2_bEST2_aEST2_dEST2_iEST2 lj9_6 0.470000 4.442500 # CT-EST2 + pair_coeff @atom:CT_bCT_aCT_dCT_iCT @atom:GL_bGL_aGL_dGL_iGL lj9_6 0.444000 4.545500 # CT-GL + pair_coeff @atom:CT_bCT_aCT_dCT_iCT @atom:NC_bNC_aNC_dNC_iNC lj9_6 0.420000 5.167500 # CT-NC + pair_coeff @atom:CT_bCT_aCT_dCT_iCT @atom:NH_bNH_aNH_dNH_iNH lj9_6 0.340000 4.925000 # CT-NH + pair_coeff @atom:CT_bCT_aCT_dCT_iCT @atom:PH_bPH_aPH_dPH_iPH lj9_6 0.320000 4.992500 # CT-PH + pair_coeff @atom:CT_bCT_aCT_dCT_iCT @atom:PHE_bPHE_aPHE_dPHE_iPHE lj9_6 0.320000 4.992500 # CT-PHE + pair_coeff @atom:CT_bCT_aCT_dCT_iCT @atom:W_bW_aW_dW_iW lj12_4 0.360000 4.478000 # CT-W + pair_coeff @atom:CT2_bCT2_aCT2_dCT2_iCT2 @atom:CT2_bCT2_aCT2_dCT2_iCT2 lj9_6 0.312000 4.221000 # CT2-CT2 + pair_coeff @atom:CT2_bCT2_aCT2_dCT2_iCT2 @atom:EST1_bEST1_aEST1_dEST1_iEST1 lj9_6 0.390000 4.260500 # CT2-EST1 + pair_coeff @atom:CT2_bCT2_aCT2_dCT2_iCT2 @atom:EST2_bEST2_aEST2_dEST2_iEST2 lj9_6 0.390000 4.260500 # CT2-EST2 + pair_coeff @atom:CT2_bCT2_aCT2_dCT2_iCT2 @atom:GL_bGL_aGL_dGL_iGL lj9_6 0.362000 4.365000 # CT2-GL + pair_coeff @atom:CT2_bCT2_aCT2_dCT2_iCT2 @atom:NC_bNC_aNC_dNC_iNC lj9_6 0.320000 4.985500 # CT2-NC + pair_coeff @atom:CT2_bCT2_aCT2_dCT2_iCT2 @atom:NH_bNH_aNH_dNH_iNH lj9_6 0.320000 4.410500 # CT2-NH + pair_coeff @atom:CT2_bCT2_aCT2_dCT2_iCT2 @atom:PH_bPH_aPH_dPH_iPH lj9_6 0.280000 4.810500 # CT2-PH + pair_coeff @atom:CT2_bCT2_aCT2_dCT2_iCT2 @atom:PHE_bPHE_aPHE_dPHE_iPHE lj9_6 0.280000 4.810500 # CT2-PHE + pair_coeff @atom:CT2_bCT2_aCT2_dCT2_iCT2 @atom:W_bW_aW_dW_iW lj12_4 0.290000 4.296000 # CT2-W + pair_coeff @atom:EST1_bEST1_aEST1_dEST1_iEST1 @atom:EST1_bEST1_aEST1_dEST1_iEST1 lj9_6 0.495000 4.300000 # EST1-EST1 + pair_coeff @atom:EST1_bEST1_aEST1_dEST1_iEST1 @atom:EST2_bEST2_aEST2_dEST2_iEST2 lj9_6 0.495000 4.300000 # EST1-EST2 + pair_coeff @atom:EST1_bEST1_aEST1_dEST1_iEST1 @atom:GL_bGL_aGL_dGL_iGL lj9_6 0.470000 4.403000 # EST1-GL + pair_coeff @atom:EST1_bEST1_aEST1_dEST1_iEST1 @atom:NC_bNC_aNC_dNC_iNC lj9_6 0.750000 4.475000 # EST1-NC + pair_coeff @atom:EST1_bEST1_aEST1_dEST1_iEST1 @atom:NH_bNH_aNH_dNH_iNH lj9_6 0.850000 4.110000 # EST1-NH + pair_coeff @atom:EST1_bEST1_aEST1_dEST1_iEST1 @atom:PH_bPH_aPH_dPH_iPH lj9_6 0.500000 4.550000 # EST1-PH + pair_coeff @atom:EST1_bEST1_aEST1_dEST1_iEST1 @atom:PHE_bPHE_aPHE_dPHE_iPHE lj9_6 0.500000 4.550000 # EST1-PHE + pair_coeff @atom:EST1_bEST1_aEST1_dEST1_iEST1 @atom:W_bW_aW_dW_iW lj12_4 0.820000 4.290000 # EST1-W + pair_coeff @atom:EST2_bEST2_aEST2_dEST2_iEST2 @atom:EST2_bEST2_aEST2_dEST2_iEST2 lj9_6 0.495000 4.300000 # EST2-EST2 + pair_coeff @atom:EST2_bEST2_aEST2_dEST2_iEST2 @atom:GL_bGL_aGL_dGL_iGL lj9_6 0.470000 4.403000 # EST2-GL + pair_coeff @atom:EST2_bEST2_aEST2_dEST2_iEST2 @atom:NC_bNC_aNC_dNC_iNC lj9_6 0.750000 4.475000 # EST2-NC + pair_coeff @atom:EST2_bEST2_aEST2_dEST2_iEST2 @atom:NH_bNH_aNH_dNH_iNH lj9_6 0.850000 4.110000 # EST2-NH + pair_coeff @atom:EST2_bEST2_aEST2_dEST2_iEST2 @atom:PH_bPH_aPH_dPH_iPH lj9_6 0.500000 4.550000 # EST2-PH + pair_coeff @atom:EST2_bEST2_aEST2_dEST2_iEST2 @atom:PHE_bPHE_aPHE_dPHE_iPHE lj9_6 0.500000 4.550000 # EST2-PHE + pair_coeff @atom:EST2_bEST2_aEST2_dEST2_iEST2 @atom:W_bW_aW_dW_iW lj12_4 0.820000 4.290000 # EST2-W + pair_coeff @atom:GL_bGL_aGL_dGL_iGL @atom:GL_bGL_aGL_dGL_iGL lj9_6 0.420000 4.506000 # GL-GL + pair_coeff @atom:GL_bGL_aGL_dGL_iGL @atom:NC_bNC_aNC_dNC_iNC lj9_6 0.650000 4.620000 # GL-NC + pair_coeff @atom:GL_bGL_aGL_dGL_iGL @atom:NH_bNH_aNH_dNH_iNH lj9_6 0.750000 4.190000 # GL-NH + pair_coeff @atom:GL_bGL_aGL_dGL_iGL @atom:PH_bPH_aPH_dPH_iPH lj9_6 0.300000 4.750000 # GL-PH + pair_coeff @atom:GL_bGL_aGL_dGL_iGL @atom:PHE_bPHE_aPHE_dPHE_iPHE lj9_6 0.300000 4.750000 # GL-PHE + pair_coeff @atom:GL_bGL_aGL_dGL_iGL @atom:W_bW_aW_dW_iW lj12_4 0.640000 4.438500 # GL-W + pair_coeff @atom:NC_bNC_aNC_dNC_iNC @atom:NC_bNC_aNC_dNC_iNC lj9_6 0.700000 5.750000 # NC-NC + pair_coeff @atom:NC_bNC_aNC_dNC_iNC @atom:NH_bNH_aNH_dNH_iNH lj9_6 0.880000 5.175000 # NC-NH + pair_coeff @atom:NC_bNC_aNC_dNC_iNC @atom:PH_bPH_aPH_dPH_iPH lj9_6 1.150000 4.200000 # NC-PH + pair_coeff @atom:NC_bNC_aNC_dNC_iNC @atom:PHE_bPHE_aPHE_dPHE_iPHE lj9_6 1.150000 4.200000 # NC-PHE + pair_coeff @atom:NC_bNC_aNC_dNC_iNC @atom:W_bW_aW_dW_iW lj12_4 0.900000 4.610000 # NC-W + pair_coeff @atom:NH_bNH_aNH_dNH_iNH @atom:NH_bNH_aNH_dNH_iNH lj9_6 1.100000 4.600000 # NH-NH + pair_coeff @atom:NH_bNH_aNH_dNH_iNH @atom:PH_bPH_aPH_dPH_iPH lj9_6 1.200000 3.800000 # NH-PH + pair_coeff @atom:NH_bNH_aNH_dNH_iNH @atom:PHE_bPHE_aPHE_dPHE_iPHE lj9_6 1.200000 3.800000 # NH-PHE + pair_coeff @atom:NH_bNH_aNH_dNH_iNH @atom:W_bW_aW_dW_iW lj12_4 0.800000 3.950000 # NH-W + pair_coeff @atom:PH_bPH_aPH_dPH_iPH @atom:PH_bPH_aPH_dPH_iPH lj9_6 1.400000 5.400000 # PH-PH + pair_coeff @atom:PH_bPH_aPH_dPH_iPH @atom:PHE_bPHE_aPHE_dPHE_iPHE lj9_6 1.400000 5.000000 # PH-PHE + pair_coeff @atom:PH_bPH_aPH_dPH_iPH @atom:W_bW_aW_dW_iW lj12_4 1.000000 4.030000 # PH-W + pair_coeff @atom:PHE_bPHE_aPHE_dPHE_iPHE @atom:PHE_bPHE_aPHE_dPHE_iPHE lj9_6 1.400000 4.600000 # PHE-PHE + pair_coeff @atom:PHE_bPHE_aPHE_dPHE_iPHE @atom:W_bW_aW_dW_iW lj12_4 1.000000 4.030000 # PHE-W + pair_coeff @atom:W_bW_aW_dW_iW @atom:W_bW_aW_dW_iW lj12_4 0.895000 4.371000 # W-W + pair_coeff @atom:C2T_bC2T_aC2T_dC2T_iC2T @atom:NC_bNC_aNC_dNC_iNC lj9_6 0.420000 5.167500 # C2T-NC + pair_coeff @atom:CMR5_bCMR5_aCMR5_dCMR5_iCMR5 @atom:CT_bCT_aCT_dCT_iCT lj9_6 0.444000 4.545500 # CMR5-CT + pair_coeff @atom:C2T_bC2T_aC2T_dC2T_iC2T @atom:CTBA_bCTBA_aCTBA_dCTBA_iCTBA lj9_6 0.252000 4.767700 # C2T-CTBA + pair_coeff @atom:CT_bCT_aCT_dCT_iCT @atom:CTB_bCTB_aCTB_dCTB_iCTB lj9_6 0.469000 4.585000 # CT-CTB + pair_coeff @atom:C2T_bC2T_aC2T_dC2T_iC2T @atom:CMR_bCMR_aCMR_dCMR_iCMR lj9_6 0.331000 4.771400 # C2T-CMR + pair_coeff @atom:CT_bCT_aCT_dCT_iCT @atom:CTBA_bCTBA_aCTBA_dCTBA_iCTBA lj9_6 0.383000 4.403000 # CT-CTBA + pair_coeff @atom:C2T_bC2T_aC2T_dC2T_iC2T @atom:CTBB_bCTBB_aCTBB_dCTBB_iCTBB lj9_6 0.252000 4.767700 # C2T-CTBB + pair_coeff @atom:CT_bCT_aCT_dCT_iCT @atom:CTBB_bCTBB_aCTBB_dCTBB_iCTBB lj9_6 0.383000 4.403000 # CT-CTBB + pair_coeff @atom:C2T_bC2T_aC2T_dC2T_iC2T @atom:GL_bGL_aGL_dGL_iGL lj9_6 0.444000 4.545500 # C2T-GL + pair_coeff @atom:CT_bCT_aCT_dCT_iCT @atom:OAB_bOAB_aOAB_dOAB_iOAB lj9_6 0.437000 4.033000 # CT-OAB + pair_coeff @atom:C2T_bC2T_aC2T_dC2T_iC2T @atom:CM2R_bCM2R_aCM2R_dCM2R_iCM2R lj9_6 0.254000 4.610100 # C2T-CM2R + pair_coeff @atom:CT2_bCT2_aCT2_dCT2_iCT2 @atom:CTB_bCTB_aCTB_dCTB_iCTB lj9_6 0.383000 4.403000 # CT2-CTB + pair_coeff @atom:C2T_bC2T_aC2T_dC2T_iC2T @atom:CMD2_bCMD2_aCMD2_dCMD2_iCMD2 lj9_6 0.330000 4.295000 # C2T-CMD2 + pair_coeff @atom:CT2_bCT2_aCT2_dCT2_iCT2 @atom:CTBA_bCTBA_aCTBA_dCTBA_iCTBA lj9_6 0.312000 4.221000 # CT2-CTBA + pair_coeff @atom:C2T_bC2T_aC2T_dC2T_iC2T @atom:CMR5_bCMR5_aCMR5_dCMR5_iCMR5 lj9_6 0.331000 4.771400 # C2T-CMR5 + pair_coeff @atom:CT2_bCT2_aCT2_dCT2_iCT2 @atom:CTBB_bCTBB_aCTBB_dCTBB_iCTBB lj9_6 0.312000 4.221000 # CT2-CTBB + pair_coeff @atom:C2T_bC2T_aC2T_dC2T_iC2T @atom:W_bW_aW_dW_iW lj12_4 0.360000 4.478000 # C2T-W + pair_coeff @atom:CT2_bCT2_aCT2_dCT2_iCT2 @atom:OAB_bOAB_aOAB_dOAB_iOAB lj9_6 0.415000 3.950500 # CT2-OAB + pair_coeff @atom:C2T_bC2T_aC2T_dC2T_iC2T @atom:C2T_bC2T_aC2T_dC2T_iC2T lj9_6 0.400000 4.811500 # C2T-C2T + pair_coeff @atom:CTB_bCTB_aCTB_dCTB_iCTB @atom:CTB_bCTB_aCTB_dCTB_iCTB lj9_6 0.269000 5.015500 # CTB-CTB + pair_coeff @atom:C2T_bC2T_aC2T_dC2T_iC2T @atom:OAB_bOAB_aOAB_dOAB_iOAB lj9_6 0.437000 4.033000 # C2T-OAB + pair_coeff @atom:CTB_bCTB_aCTB_dCTB_iCTB @atom:EST1_bEST1_aEST1_dEST1_iEST1 lj9_6 0.470000 4.442500 # CTB-EST1 + pair_coeff @atom:C2T_bC2T_aC2T_dC2T_iC2T @atom:PH_bPH_aPH_dPH_iPH lj9_6 0.320000 4.992500 # C2T-PH + pair_coeff @atom:CTB_bCTB_aCTB_dCTB_iCTB @atom:EST2_bEST2_aEST2_dEST2_iEST2 lj9_6 0.470000 4.442500 # CTB-EST2 + pair_coeff @atom:C2T_bC2T_aC2T_dC2T_iC2T @atom:CMDB_bCMDB_aCMDB_dCMDB_iCMDB lj9_6 0.354000 4.894100 # C2T-CMDB + pair_coeff @atom:CTB_bCTB_aCTB_dCTB_iCTB @atom:NC_bNC_aNC_dNC_iNC lj9_6 0.420000 5.167500 # CTB-NC + pair_coeff @atom:C2T_bC2T_aC2T_dC2T_iC2T @atom:CT2_bCT2_aCT2_dCT2_iCT2 lj9_6 0.297000 4.527200 # C2T-CT2 + pair_coeff @atom:CTB_bCTB_aCTB_dCTB_iCTB @atom:CTBA_bCTBA_aCTBA_dCTBA_iCTBA lj9_6 0.265000 4.464800 # CTB-CTBA + pair_coeff @atom:C2T_bC2T_aC2T_dC2T_iC2T @atom:CM2_bCM2_aCM2_dCM2_iCM2 lj9_6 0.291000 4.588000 # C2T-CM2 + pair_coeff @atom:CTB_bCTB_aCTB_dCTB_iCTB @atom:CTBB_bCTBB_aCTBB_dCTBB_iCTBB lj9_6 0.265000 4.464800 # CTB-CTBB + pair_coeff @atom:C2T_bC2T_aC2T_dC2T_iC2T @atom:CM_bCM_aCM_dCM_iCM lj9_6 0.391000 4.545500 # C2T-CM + pair_coeff @atom:CTB_bCTB_aCTB_dCTB_iCTB @atom:GL_bGL_aGL_dGL_iGL lj9_6 0.444000 4.545500 # CTB-GL + pair_coeff @atom:C2T_bC2T_aC2T_dC2T_iC2T @atom:CT_bCT_aCT_dCT_iCT lj9_6 0.409000 4.860100 # C2T-CT + pair_coeff @atom:CTB_bCTB_aCTB_dCTB_iCTB @atom:W_bW_aW_dW_iW lj12_4 0.360000 4.478000 # CTB-W + pair_coeff @atom:C2T_bC2T_aC2T_dC2T_iC2T @atom:CTB_bCTB_aCTB_dCTB_iCTB lj9_6 0.283000 4.910900 # C2T-CTB + pair_coeff @atom:CTB_bCTB_aCTB_dCTB_iCTB @atom:OAB_bOAB_aOAB_dOAB_iOAB lj9_6 0.437000 4.033000 # CTB-OAB + pair_coeff @atom:C2T_bC2T_aC2T_dC2T_iC2T @atom:CMB_bCMB_aCMB_dCMB_iCMB lj9_6 0.310000 4.656400 # C2T-CMB + pair_coeff @atom:CTB_bCTB_aCTB_dCTB_iCTB @atom:PH_bPH_aPH_dPH_iPH lj9_6 0.320000 4.992500 # CTB-PH + pair_coeff @atom:C2T_bC2T_aC2T_dC2T_iC2T @atom:EST1_bEST1_aEST1_dEST1_iEST1 lj9_6 0.470000 4.442500 # C2T-EST1 + pair_coeff @atom:CTBA_bCTBA_aCTBA_dCTBA_iCTBA @atom:NC_bNC_aNC_dNC_iNC lj9_6 0.320000 4.985500 # CTBA-NC + pair_coeff @atom:C2T_bC2T_aC2T_dC2T_iC2T @atom:EST2_bEST2_aEST2_dEST2_iEST2 lj9_6 0.470000 4.442500 # C2T-EST2 + pair_coeff @atom:CTBA_bCTBA_aCTBA_dCTBA_iCTBA @atom:EST1_bEST1_aEST1_dEST1_iEST1 lj9_6 0.390000 4.260500 # CTBA-EST1 + pair_coeff @atom:CM_bCM_aCM_dCM_iCM @atom:CMR_bCMR_aCMR_dCMR_iCMR lj9_6 0.420000 4.506000 # CM-CMR + pair_coeff @atom:CTBA_bCTBA_aCTBA_dCTBA_iCTBA @atom:EST2_bEST2_aEST2_dEST2_iEST2 lj9_6 0.390000 4.260500 # CTBA-EST2 + pair_coeff @atom:CM_bCM_aCM_dCM_iCM @atom:CM2R_bCM2R_aCM2R_dCM2R_iCM2R lj9_6 0.390000 4.434200 # CM-CM2R + pair_coeff @atom:CTBA_bCTBA_aCTBA_dCTBA_iCTBA @atom:W_bW_aW_dW_iW lj12_4 0.290000 4.296000 # CTBA-W + pair_coeff @atom:CM_bCM_aCM_dCM_iCM @atom:CMR5_bCMR5_aCMR5_dCMR5_iCMR5 lj9_6 0.420000 4.506000 # CM-CMR5 + pair_coeff @atom:CTBA_bCTBA_aCTBA_dCTBA_iCTBA @atom:GL_bGL_aGL_dGL_iGL lj9_6 0.362000 4.363500 # CTBA-GL + pair_coeff @atom:CM_bCM_aCM_dCM_iCM @atom:OAB_bOAB_aOAB_dOAB_iOAB lj9_6 0.561000 4.093000 # CM-OAB + pair_coeff @atom:CTBA_bCTBA_aCTBA_dCTBA_iCTBA @atom:CTBA_bCTBA_aCTBA_dCTBA_iCTBA lj9_6 0.265000 4.461000 # CTBA-CTBA + pair_coeff @atom:CM_bCM_aCM_dCM_iCM @atom:CMDB_bCMDB_aCMDB_dCMDB_iCMDB lj9_6 0.362000 4.379000 # CM-CMDB + pair_coeff @atom:CTBA_bCTBA_aCTBA_dCTBA_iCTBA @atom:CTBB_bCTBB_aCTBB_dCTBB_iCTBB lj9_6 0.265000 4.461000 # CTBA-CTBB + pair_coeff @atom:CM_bCM_aCM_dCM_iCM @atom:CM2_bCM2_aCM2_dCM2_iCM2 lj9_6 0.336000 4.461900 # CM-CM2 + pair_coeff @atom:CTBA_bCTBA_aCTBA_dCTBA_iCTBA @atom:PH_bPH_aPH_dPH_iPH lj9_6 0.280000 4.810500 # CTBA-PH + pair_coeff @atom:CM_bCM_aCM_dCM_iCM @atom:CTB_bCTB_aCTB_dCTB_iCTB lj9_6 0.444000 4.545500 # CM-CTB + pair_coeff @atom:CTBA_bCTBA_aCTBA_dCTBA_iCTBA @atom:OAB_bOAB_aOAB_dOAB_iOAB lj9_6 0.380000 3.840000 # CTBA-OAB + pair_coeff @atom:CM_bCM_aCM_dCM_iCM @atom:CMB_bCMB_aCMB_dCMB_iCMB lj9_6 0.420000 4.506000 # CM-CMB + pair_coeff @atom:CTBB_bCTBB_aCTBB_dCTBB_iCTBB @atom:W_bW_aW_dW_iW lj12_4 0.290000 4.296000 # CTBB-W + pair_coeff @atom:CM_bCM_aCM_dCM_iCM @atom:CTBA_bCTBA_aCTBA_dCTBA_iCTBA lj9_6 0.362000 4.363500 # CM-CTBA + pair_coeff @atom:CTBB_bCTBB_aCTBB_dCTBB_iCTBB @atom:NC_bNC_aNC_dNC_iNC lj9_6 0.320000 4.985500 # CTBB-NC + pair_coeff @atom:CM_bCM_aCM_dCM_iCM @atom:CTBB_bCTBB_aCTBB_dCTBB_iCTBB lj9_6 0.362000 4.363500 # CM-CTBB + pair_coeff @atom:CTBB_bCTBB_aCTBB_dCTBB_iCTBB @atom:GL_bGL_aGL_dGL_iGL lj9_6 0.362000 4.363500 # CTBB-GL + pair_coeff @atom:CM2_bCM2_aCM2_dCM2_iCM2 @atom:PH_bPH_aPH_dPH_iPH lj9_6 0.248000 4.936800 # CM2-PH + pair_coeff @atom:CTBB_bCTBB_aCTBB_dCTBB_iCTBB @atom:EST1_bEST1_aEST1_dEST1_iEST1 lj9_6 0.390000 4.260500 # CTBB-EST1 + pair_coeff @atom:CM2_bCM2_aCM2_dCM2_iCM2 @atom:OAB_bOAB_aOAB_dOAB_iOAB lj9_6 0.413000 4.066900 # CM2-OAB + pair_coeff @atom:CTBB_bCTBB_aCTBB_dCTBB_iCTBB @atom:EST2_bEST2_aEST2_dEST2_iEST2 lj9_6 0.390000 4.260500 # CTBB-EST2 + pair_coeff @atom:CM2_bCM2_aCM2_dCM2_iCM2 @atom:CM2R_bCM2R_aCM2R_dCM2R_iCM2R lj9_6 0.237000 4.440300 # CM2-CM2R + pair_coeff @atom:CTBB_bCTBB_aCTBB_dCTBB_iCTBB @atom:PH_bPH_aPH_dPH_iPH lj9_6 0.280000 4.810500 # CTBB-PH + pair_coeff @atom:CM2_bCM2_aCM2_dCM2_iCM2 @atom:CMD2_bCMD2_aCMD2_dCMD2_iCMD2 lj9_6 0.248000 4.231300 # CM2-CMD2 + pair_coeff @atom:CTBB_bCTBB_aCTBB_dCTBB_iCTBB @atom:OAB_bOAB_aOAB_dOAB_iOAB lj9_6 0.380000 3.840000 # CTBB-OAB + pair_coeff @atom:CM2_bCM2_aCM2_dCM2_iCM2 @atom:CMR5_bCMR5_aCMR5_dCMR5_iCMR5 lj9_6 0.333000 4.484600 # CM2-CMR5 + pair_coeff @atom:CTBB_bCTBB_aCTBB_dCTBB_iCTBB @atom:CTBB_bCTBB_aCTBB_dCTBB_iCTBB lj9_6 0.265000 4.461000 # CTBB-CTBB + pair_coeff @atom:CM2_bCM2_aCM2_dCM2_iCM2 @atom:CT2_bCT2_aCT2_dCT2_iCT2 lj9_6 0.228000 4.319900 # CM2-CT2 + pair_coeff @atom:EST1_bEST1_aEST1_dEST1_iEST1 @atom:OAB_bOAB_aOAB_dOAB_iOAB lj9_6 1.100000 3.990000 # EST1-OAB + pair_coeff @atom:CM2_bCM2_aCM2_dCM2_iCM2 @atom:CM2_bCM2_aCM2_dCM2_iCM2 lj9_6 0.265000 4.461000 # CM2-CM2 + pair_coeff @atom:EST2_bEST2_aEST2_dEST2_iEST2 @atom:OAB_bOAB_aOAB_dOAB_iOAB lj9_6 1.100000 3.990000 # EST2-OAB + pair_coeff @atom:CM2_bCM2_aCM2_dCM2_iCM2 @atom:CMDB_bCMDB_aCMDB_dCMDB_iCMDB lj9_6 0.267000 4.369700 # CM2-CMDB + pair_coeff @atom:GL_bGL_aGL_dGL_iGL @atom:OAB_bOAB_aOAB_dOAB_iOAB lj9_6 0.669000 4.093000 # GL-OAB + pair_coeff @atom:CM2_bCM2_aCM2_dCM2_iCM2 @atom:CT_bCT_aCT_dCT_iCT lj9_6 0.301000 4.454600 # CM2-CT + pair_coeff @atom:NC_bNC_aNC_dNC_iNC @atom:OAB_bOAB_aOAB_dOAB_iOAB lj9_6 0.637000 3.931900 # NC-OAB + pair_coeff @atom:CM2_bCM2_aCM2_dCM2_iCM2 @atom:CTB_bCTB_aCTB_dCTB_iCTB lj9_6 0.353000 4.524600 # CM2-CTB + pair_coeff @atom:OAB_bOAB_aOAB_dOAB_iOAB @atom:W_bW_aW_dW_iW lj9_6 1.026000 4.025500 # OAB-W + pair_coeff @atom:CM2_bCM2_aCM2_dCM2_iCM2 @atom:CMB_bCMB_aCMB_dCMB_iCMB lj9_6 0.333000 4.484600 # CM2-CMB + pair_coeff @atom:OAB_bOAB_aOAB_dOAB_iOAB @atom:PH_bPH_aPH_dPH_iPH lj9_6 0.928000 3.616600 # OAB-PH + pair_coeff @atom:CM2_bCM2_aCM2_dCM2_iCM2 @atom:NC_bNC_aNC_dNC_iNC lj9_6 0.306000 5.113800 # CM2-NC + pair_coeff @atom:OAB_bOAB_aOAB_dOAB_iOAB @atom:OAB_bOAB_aOAB_dOAB_iOAB lj9_6 0.580000 3.680000 # OAB-OAB + pair_coeff @atom:CM2_bCM2_aCM2_dCM2_iCM2 @atom:EST1_bEST1_aEST1_dEST1_iEST1 lj9_6 0.366000 4.380500 # CM2-EST1 + pair_coeff @atom:CM2_bCM2_aCM2_dCM2_iCM2 @atom:EST2_bEST2_aEST2_dEST2_iEST2 lj9_6 0.366000 4.380500 # CM2-EST2 + } # end of nonbonded parameters + + write_once("In Settings") { + # ----- Bonds ----- + bond_coeff @bond:CM-CM harmonic 6.160000 3.640000 + bond_coeff @bond:CM-CMD2 harmonic 8.000000 3.030000 + bond_coeff @bond:CM-CT harmonic 6.160000 3.650000 + bond_coeff @bond:CM-CT2 harmonic 9.000000 3.130000 + bond_coeff @bond:CM-EST1 harmonic 4.700000 3.550000 + bond_coeff @bond:CM-EST2 harmonic 5.100000 3.610000 + bond_coeff @bond:CM-PHE harmonic 12.000000 3.690000 + bond_coeff @bond:CM-SO4 harmonic 11.000000 3.630000 + bond_coeff @bond:CMD2-CT harmonic 8.000000 3.090000 + bond_coeff @bond:CMD2-CT2 harmonic 60.000000 2.540000 + bond_coeff @bond:CT-CT harmonic 6.955000 3.710000 + bond_coeff @bond:EST1-GL harmonic 30.000000 2.880000 + bond_coeff @bond:EST2-GL harmonic 8.400000 3.480000 + bond_coeff @bond:GL-PHE harmonic 8.900000 3.520000 + bond_coeff @bond:NC-PHE harmonic 4.800000 4.250000 + bond_coeff @bond:NH-PHE harmonic 9.400000 3.600000 + bond_coeff @bond:PHE1-PHE2 harmonic 2.500000 150.000000 + bond_coeff @bond:C2T-CM2 harmonic 55.000000 2.500000 + bond_coeff @bond:CM2-CTB harmonic 42.500000 2.900000 + bond_coeff @bond:CM2R-CTBA harmonic 45.000000 2.400000 + bond_coeff @bond:CM2R-OAB harmonic 50.000000 2.600000 + bond_coeff @bond:CMB-CMDB harmonic 75.000000 3.500000 + bond_coeff @bond:CMB-CMR5 harmonic 50.000000 3.000000 + bond_coeff @bond:CMB-CTBA harmonic 35.000000 3.400000 + bond_coeff @bond:CMB-CTBB harmonic 50.000000 3.000000 + bond_coeff @bond:CMDB-CTBA harmonic 40.000000 2.500000 + bond_coeff @bond:CMDB-OAB harmonic 55.000000 3.100000 + bond_coeff @bond:CMR5-CTBB harmonic 60.000000 2.300000 + bond_coeff @bond:CMR-CTBA harmonic 50.000000 3.000000 + bond_coeff @bond:CMR-CTBB harmonic 55.000000 2.500000 + bond_coeff @bond:CTB-CTBB harmonic 22.500000 3.400000 + bond_coeff @bond:CMR5-CTB harmonic 35.000000 3.100000 + } + + write_once("Data Bonds By Type") { + @bond:CM-CM @atom:*_bCM_a*_d*_i* @atom:*_bCM_a*_d*_i* + @bond:CM-CMD2 @atom:*_bCM_a*_d*_i* @atom:*_bCMD2_a*_d*_i* + @bond:CM-CT @atom:*_bCM_a*_d*_i* @atom:*_bCT_a*_d*_i* + @bond:CM-CT2 @atom:*_bCM_a*_d*_i* @atom:*_bCT2_a*_d*_i* + @bond:CM-EST1 @atom:*_bCM_a*_d*_i* @atom:*_bEST1_a*_d*_i* + @bond:CM-EST2 @atom:*_bCM_a*_d*_i* @atom:*_bEST2_a*_d*_i* + @bond:CM-PHE @atom:*_bCM_a*_d*_i* @atom:*_bPHE_a*_d*_i* + @bond:CM-SO4 @atom:*_bCM_a*_d*_i* @atom:*_bSO4_a*_d*_i* + @bond:CMD2-CT @atom:*_bCMD2_a*_d*_i* @atom:*_bCT_a*_d*_i* + @bond:CMD2-CT2 @atom:*_bCMD2_a*_d*_i* @atom:*_bCT2_a*_d*_i* + @bond:CT-CT @atom:*_bCT_a*_d*_i* @atom:*_bCT_a*_d*_i* + @bond:EST1-GL @atom:*_bEST1_a*_d*_i* @atom:*_bGL_a*_d*_i* + @bond:EST2-GL @atom:*_bEST2_a*_d*_i* @atom:*_bGL_a*_d*_i* + @bond:GL-PHE @atom:*_bGL_a*_d*_i* @atom:*_bPHE_a*_d*_i* + @bond:NC-PHE @atom:*_bNC_a*_d*_i* @atom:*_bPHE_a*_d*_i* + @bond:NH-PHE @atom:*_bNH_a*_d*_i* @atom:*_bPHE_a*_d*_i* + @bond:PHE1-PHE2 @atom:*_bPHE1_a*_d*_i* @atom:*_bPHE2_a*_d*_i* + @bond:C2T-CM2 @atom:*_bC2T_a*_d*_i* @atom:*_bCM2_a*_d*_i* + @bond:CM2-CTB @atom:*_bCM2_a*_d*_i* @atom:*_bCTB_a*_d*_i* + @bond:CM2R-CTBA @atom:*_bCM2R_a*_d*_i* @atom:*_bCTBA_a*_d*_i* + @bond:CM2R-OAB @atom:*_bCM2R_a*_d*_i* @atom:*_bOAB_a*_d*_i* + @bond:CMB-CMDB @atom:*_bCMB_a*_d*_i* @atom:*_bCMDB_a*_d*_i* + @bond:CMB-CMR5 @atom:*_bCMB_a*_d*_i* @atom:*_bCMR5_a*_d*_i* + @bond:CMB-CTBA @atom:*_bCMB_a*_d*_i* @atom:*_bCTBA_a*_d*_i* + @bond:CMB-CTBB @atom:*_bCMB_a*_d*_i* @atom:*_bCTBB_a*_d*_i* + @bond:CMDB-CTBA @atom:*_bCMDB_a*_d*_i* @atom:*_bCTBA_a*_d*_i* + @bond:CMDB-OAB @atom:*_bCMDB_a*_d*_i* @atom:*_bOAB_a*_d*_i* + @bond:CMR5-CTBB @atom:*_bCMR5_a*_d*_i* @atom:*_bCTBB_a*_d*_i* + @bond:CMR-CTBA @atom:*_bCMR_a*_d*_i* @atom:*_bCTBA_a*_d*_i* + @bond:CMR-CTBB @atom:*_bCMR_a*_d*_i* @atom:*_bCTBB_a*_d*_i* + @bond:CTB-CTBB @atom:*_bCTB_a*_d*_i* @atom:*_bCTBB_a*_d*_i* + @bond:CMR5-CTB @atom:*_bCMR5_a*_d*_i* @atom:*_bCTB_a*_d*_i* + } # end of bonds + + write_once("In Settings") { + # ----- Angles ----- + angle_coeff @angle:CM-CM-CM sdk 1.190000 173.000000 + angle_coeff @angle:CM-CM-CMD2 sdk 1.900000 161.000000 + angle_coeff @angle:CM-CM-CT sdk 1.190000 175.000000 + angle_coeff @angle:CM-CM-CT2 sdk 1.600000 172.000000 + angle_coeff @angle:CM-CM-EST1 sdk 1.000000 178.000000 + angle_coeff @angle:CM-CM-EST2 sdk 1.000000 178.000000 + angle_coeff @angle:CM-CM-PHE sdk 1.100000 178.000000 + angle_coeff @angle:CM-CMD2-CM sdk 6.000000 110.000000 + angle_coeff @angle:CM-EST1-GL sdk 0.800000 168.000000 + angle_coeff @angle:CM-EST2-GL sdk 0.800000 172.000000 + angle_coeff @angle:CM-PHE-NC sdk 3.300000 112.000000 + angle_coeff @angle:CT-CM-CT sdk 1.093000 175.500000 + angle_coeff @angle:CT-CM-CT2 sdk 1.600000 172.000000 + angle_coeff @angle:CT-CMD2-CT sdk 7.700000 116.000000 + angle_coeff @angle:CT2-CM-CT2 sdk 1.700000 173.000000 + angle_coeff @angle:CT2-CMD2-CT2 sdk 12.000000 110.000000 + angle_coeff @angle:EST1-GL-EST2 sdk 1.000000 95.000000 + angle_coeff @angle:EST1-GL-PHE sdk 1.400000 124.000000 + angle_coeff @angle:EST2-GL-PHE sdk 2.000000 138.000000 + angle_coeff @angle:GL-PHE-NC sdk 3.100000 112.000000 + angle_coeff @angle:GL-PHE-NH sdk 4.000000 102.000000 + angle_coeff @angle:C2T-CM2-CTB sdk 8.000000 160.000000 + angle_coeff @angle:CM2-CTB-CTBB sdk 4.000000 130.000000 + angle_coeff @angle:CM2R-CTBA-CMB harmonic 40.000000 112.500000 + angle_coeff @angle:CM2R-CTBA-CMDB harmonic 22.500000 75.900000 + angle_coeff @angle:CM2R-CTBA-CMR harmonic 35.000000 98.700000 + angle_coeff @angle:CM2R-OAB-CMDB harmonic 40.000000 63.900000 + angle_coeff @angle:CMB-CMDB-CTBA harmonic 45.000000 68.600000 + angle_coeff @angle:CMB-CMDB-OAB harmonic 65.000000 146.600000 + angle_coeff @angle:CMB-CMR5-CTBB harmonic 35.000000 67.800000 + angle_coeff @angle:CMB-CTBA-CMDB harmonic 25.000000 68.900000 + angle_coeff @angle:CMB-CTBA-CMR harmonic 75.000000 47.800000 + angle_coeff @angle:CMB-CTBB-CMR5 harmonic 25.000000 68.200000 + angle_coeff @angle:CMB-CTBB-CMR harmonic 50.000000 56.300000 + angle_coeff @angle:CMB-CTBB-CTB sdk 35.000000 120.700000 + angle_coeff @angle:CMDB-CMB-CMR5 harmonic 150.000000 175.600000 + angle_coeff @angle:CMDB-CMB-CTBA harmonic 62.500000 42.500000 + angle_coeff @angle:CMDB-CMB-CTBB harmonic 25.000000 134.200000 + angle_coeff @angle:CMDB-CTBA-CMR harmonic 50.000000 108.600000 + angle_coeff @angle:CMR5-CNB-CTBA harmonic 15.000000 135.800000 + angle_coeff @angle:CMR5-CMB-CTBB harmonic 45.000000 44.000000 + angle_coeff @angle:CMR5-CTBB-CTB harmonic 20.000000 62.700000 + angle_coeff @angle:CMR-CTBB-CMR5 harmonic 75.000000 107.000000 + angle_coeff @angle:CMR-CTBB-CTB sdk 37.500000 110.100000 + angle_coeff @angle:CTBA-CM2R-OAB harmonic 25.000000 107.400000 + angle_coeff @angle:CTBA-CMB-CTBB harmonic 20.000000 92.200000 + angle_coeff @angle:CTBA-CMDB-OAB harmonic 20.000000 91.800000 + angle_coeff @angle:CTBA-CMR-CTBB harmonic 15.000000 115.000000 + angle_coeff @angle:CMB-CMR5-CTB harmonic 88.000000 131.700000 + angle_coeff @angle:CTBB-CMR5-CTB harmonic 20.000000 77.400000 + angle_coeff @angle:CM2-CTB-CMR5 sdk 20.000000 118.000000 + angle_coeff @angle:CMR5-CTB-CTBB harmonic 62.500000 39.700000 + } + + write_once("Data Angles By Type") { + @angle:CM-CM-CM @atom:*_b*_aCM_d*_i* @atom:*_b*_aCM_d*_i* @atom:*_b*_aCM_d*_i* + @angle:CM-CM-CMD2 @atom:*_b*_aCM_d*_i* @atom:*_b*_aCM_d*_i* @atom:*_b*_aCMD2_d*_i* + @angle:CM-CM-CT @atom:*_b*_aCM_d*_i* @atom:*_b*_aCM_d*_i* @atom:*_b*_aCT_d*_i* + @angle:CM-CM-CT2 @atom:*_b*_aCM_d*_i* @atom:*_b*_aCM_d*_i* @atom:*_b*_aCT2_d*_i* + @angle:CM-CM-EST1 @atom:*_b*_aCM_d*_i* @atom:*_b*_aCM_d*_i* @atom:*_b*_aEST1_d*_i* + @angle:CM-CM-EST2 @atom:*_b*_aCM_d*_i* @atom:*_b*_aCM_d*_i* @atom:*_b*_aEST2_d*_i* + @angle:CM-CM-PHE @atom:*_b*_aCM_d*_i* @atom:*_b*_aCM_d*_i* @atom:*_b*_aPHE_d*_i* + @angle:CM-CMD2-CM @atom:*_b*_aCM_d*_i* @atom:*_b*_aCMD2_d*_i* @atom:*_b*_aCM_d*_i* + @angle:CM-EST1-GL @atom:*_b*_aCM_d*_i* @atom:*_b*_aEST1_d*_i* @atom:*_b*_aGL_d*_i* + @angle:CM-EST2-GL @atom:*_b*_aCM_d*_i* @atom:*_b*_aEST2_d*_i* @atom:*_b*_aGL_d*_i* + @angle:CM-PHE-NC @atom:*_b*_aCM_d*_i* @atom:*_b*_aPHE_d*_i* @atom:*_b*_aNC_d*_i* + @angle:CT-CM-CT @atom:*_b*_aCT_d*_i* @atom:*_b*_aCM_d*_i* @atom:*_b*_aCT_d*_i* + @angle:CT-CM-CT2 @atom:*_b*_aCT_d*_i* @atom:*_b*_aCM_d*_i* @atom:*_b*_aCT2_d*_i* + @angle:CT-CMD2-CT @atom:*_b*_aCT_d*_i* @atom:*_b*_aCMD2_d*_i* @atom:*_b*_aCT_d*_i* + @angle:CT2-CM-CT2 @atom:*_b*_aCT2_d*_i* @atom:*_b*_aCM_d*_i* @atom:*_b*_aCT2_d*_i* + @angle:CT2-CMD2-CT2 @atom:*_b*_aCT2_d*_i* @atom:*_b*_aCMD2_d*_i* @atom:*_b*_aCT2_d*_i* + @angle:EST1-GL-EST2 @atom:*_b*_aEST1_d*_i* @atom:*_b*_aGL_d*_i* @atom:*_b*_aEST2_d*_i* + @angle:EST1-GL-PHE @atom:*_b*_aEST1_d*_i* @atom:*_b*_aGL_d*_i* @atom:*_b*_aPHE_d*_i* + @angle:EST2-GL-PHE @atom:*_b*_aEST2_d*_i* @atom:*_b*_aGL_d*_i* @atom:*_b*_aPHE_d*_i* + @angle:GL-PHE-NC @atom:*_b*_aGL_d*_i* @atom:*_b*_aPHE_d*_i* @atom:*_b*_aNC_d*_i* + @angle:GL-PHE-NH @atom:*_b*_aGL_d*_i* @atom:*_b*_aPHE_d*_i* @atom:*_b*_aNH_d*_i* + @angle:C2T-CM2-CTB @atom:*_b*_aC2T_d*_i* @atom:*_b*_aCM2_d*_i* @atom:*_b*_aCTB_d*_i* + @angle:CM2-CTB-CTBB @atom:*_b*_aCM2_d*_i* @atom:*_b*_aCTB_d*_i* @atom:*_b*_aCTBB_d*_i* + @angle:CM2R-CTBA-CMB @atom:*_b*_aCM2R_d*_i* @atom:*_b*_aCTBA_d*_i* @atom:*_b*_aCMB_d*_i* + @angle:CM2R-CTBA-CMDB @atom:*_b*_aCM2R_d*_i* @atom:*_b*_aCTBA_d*_i* @atom:*_b*_aCMDB_d*_i* + @angle:CM2R-CTBA-CMR @atom:*_b*_aCM2R_d*_i* @atom:*_b*_aCTBA_d*_i* @atom:*_b*_aCMR_d*_i* + @angle:CM2R-OAB-CMDB @atom:*_b*_aCM2R_d*_i* @atom:*_b*_aOAB_d*_i* @atom:*_b*_aCMDB_d*_i* + @angle:CMB-CMDB-CTBA @atom:*_b*_aCMB_d*_i* @atom:*_b*_aCMDB_d*_i* @atom:*_b*_aCTBA_d*_i* + @angle:CMB-CMDB-OAB @atom:*_b*_aCMB_d*_i* @atom:*_b*_aCMDB_d*_i* @atom:*_b*_aOAB_d*_i* + @angle:CMB-CMR5-CTBB @atom:*_b*_aCMB_d*_i* @atom:*_b*_aCMR5_d*_i* @atom:*_b*_aCTBB_d*_i* + @angle:CMB-CTBA-CMDB @atom:*_b*_aCMB_d*_i* @atom:*_b*_aCTBA_d*_i* @atom:*_b*_aCMDB_d*_i* + @angle:CMB-CTBA-CMR @atom:*_b*_aCMB_d*_i* @atom:*_b*_aCTBA_d*_i* @atom:*_b*_aCMR_d*_i* + @angle:CMB-CTBB-CMR5 @atom:*_b*_aCMB_d*_i* @atom:*_b*_aCTBB_d*_i* @atom:*_b*_aCMR5_d*_i* + @angle:CMB-CTBB-CMR @atom:*_b*_aCMB_d*_i* @atom:*_b*_aCTBB_d*_i* @atom:*_b*_aCMR_d*_i* + @angle:CMB-CTBB-CTB @atom:*_b*_aCMB_d*_i* @atom:*_b*_aCTBB_d*_i* @atom:*_b*_aCTB_d*_i* + @angle:CMDB-CMB-CMR5 @atom:*_b*_aCMDB_d*_i* @atom:*_b*_aCMB_d*_i* @atom:*_b*_aCMR5_d*_i* + @angle:CMDB-CMB-CTBA @atom:*_b*_aCMDB_d*_i* @atom:*_b*_aCMB_d*_i* @atom:*_b*_aCTBA_d*_i* + @angle:CMDB-CMB-CTBB @atom:*_b*_aCMDB_d*_i* @atom:*_b*_aCMB_d*_i* @atom:*_b*_aCTBB_d*_i* + @angle:CMDB-CTBA-CMR @atom:*_b*_aCMDB_d*_i* @atom:*_b*_aCTBA_d*_i* @atom:*_b*_aCMR_d*_i* + @angle:CMR5-CNB-CTBA @atom:*_b*_aCMR5_d*_i* @atom:*_b*_aCNB_d*_i* @atom:*_b*_aCTBA_d*_i* + @angle:CMR5-CMB-CTBB @atom:*_b*_aCMR5_d*_i* @atom:*_b*_aCMB_d*_i* @atom:*_b*_aCTBB_d*_i* + @angle:CMR5-CTBB-CTB @atom:*_b*_aCMR5_d*_i* @atom:*_b*_aCTBB_d*_i* @atom:*_b*_aCTB_d*_i* + @angle:CMR-CTBB-CMR5 @atom:*_b*_aCMR_d*_i* @atom:*_b*_aCTBB_d*_i* @atom:*_b*_aCMR5_d*_i* + @angle:CMR-CTBB-CTB @atom:*_b*_aCMR_d*_i* @atom:*_b*_aCTBB_d*_i* @atom:*_b*_aCTB_d*_i* + @angle:CTBA-CM2R-OAB @atom:*_b*_aCTBA_d*_i* @atom:*_b*_aCM2R_d*_i* @atom:*_b*_aOAB_d*_i* + @angle:CTBA-CMB-CTBB @atom:*_b*_aCTBA_d*_i* @atom:*_b*_aCMB_d*_i* @atom:*_b*_aCTBB_d*_i* + @angle:CTBA-CMDB-OAB @atom:*_b*_aCTBA_d*_i* @atom:*_b*_aCMDB_d*_i* @atom:*_b*_aOAB_d*_i* + @angle:CTBA-CMR-CTBB @atom:*_b*_aCTBA_d*_i* @atom:*_b*_aCMR_d*_i* @atom:*_b*_aCTBB_d*_i* + @angle:CMB-CMR5-CTB @atom:*_b*_aCMB_d*_i* @atom:*_b*_aCMR5_d*_i* @atom:*_b*_aCTB_d*_i* + @angle:CTBB-CMR5-CTB @atom:*_b*_aCTBB_d*_i* @atom:*_b*_aCMR5_d*_i* @atom:*_b*_aCTB_d*_i* + @angle:CM2-CTB-CMR5 @atom:*_b*_aCM2_d*_i* @atom:*_b*_aCTB_d*_i* @atom:*_b*_aCMR5_d*_i* + @angle:CMR5-CTB-CTBB @atom:*_b*_aCMR5_d*_i* @atom:*_b*_aCTB_d*_i* @atom:*_b*_aCTBB_d*_i* + } # end of angles + + write_once("In Init") { + # Warning: This is a very generic "In Init" section, further + # modification prior to any simulation is extremely likely + units real + atom_style full + bond_style hybrid harmonic + angle_style hybrid sdk + pair_style hybrid lj/sdk/coul/long 9.000000 12.000000 + special_bonds lj/coul 0.0 0.0 0.0 + } # end init +} # SDK diff --git a/tools/moltemplate/src/moltemplate_force_fields/amber/README.TXT b/tools/moltemplate/moltemplate/force_fields/amber/README.txt similarity index 96% rename from tools/moltemplate/src/moltemplate_force_fields/amber/README.TXT rename to tools/moltemplate/moltemplate/force_fields/amber/README.txt index 20b4d7ed2da3a77b966322406a4b95a2b5e21c93..226e0eb297f4f9dd0a981cc74e03ab4bc6b086c3 100644 --- a/tools/moltemplate/src/moltemplate_force_fields/amber/README.TXT +++ b/tools/moltemplate/moltemplate/force_fields/amber/README.txt @@ -8,7 +8,7 @@ file into fragments which (it thinks) correspond to the mass, pair, bond, angle, dihedral, and improper section of the original .dat file. (However sometimes it gets this wrong and you have to split it up manually!) -Then this bash script invokes the relevant python script to convert +Then this bash script invokes the relevant python script to convert each section into .LT format: amberparm_to_mass.py amberparm_to_pair.py @@ -29,7 +29,7 @@ BEFORE YOU RUN THIS SCRIPT, BE SURE TO CHANGE THE ORDER OF THE IMPROPER DIHEDRAL PARAMETERS SO THAT THE "SPECIFIC" IMPROPER DIHEDRALS APPEAR LAST, AND THE "GENERIC" IMPROPER DIHEDRALS APPEAR FIRST. -For example replace these two lines: +For example replace these two lines: X -o -c -o 1.1 180. 2. JCC,7,(1986),230 X -X -c -o 10.5 180. 2. JCC,7,(1986),230 @@ -64,11 +64,10 @@ excerpt: > > "specific" torsions are search for first, and used if a match is found. If > no match is found, then a search is made to see if a "generic" (aka wild-card) -> torsion with match. -> ...good luck...dac +> torsion with match. +> ...good luck...dac Good luck -Andrew 2014-4-19 - diff --git a/tools/moltemplate/src/moltemplate_force_fields/amber/amberparm2lt.sh b/tools/moltemplate/moltemplate/force_fields/amber/amberparm2lt.sh similarity index 99% rename from tools/moltemplate/src/moltemplate_force_fields/amber/amberparm2lt.sh rename to tools/moltemplate/moltemplate/force_fields/amber/amberparm2lt.sh index 92e7e2c42a71203c4a2131c3ab72cf99c0694676..07442dbee7982b2df79235d543e8591583eb7298 100755 --- a/tools/moltemplate/src/moltemplate_force_fields/amber/amberparm2lt.sh +++ b/tools/moltemplate/moltemplate/force_fields/amber/amberparm2lt.sh @@ -29,7 +29,7 @@ MOLTEMPLATE_USAGE_MSG=$(cat <CH-" + set type @atom:CT charge 0.0 # "Alkane >C<" + set type @atom:HCal charge 0.06 # "Alkane H-C" + set type @atom:CH2en charge -0.23 # "Alkene H2-C=" + set type @atom:HCen charge 0.115 # "Alkene H-C=" + } #(end of atom partial charges) + + # NOTE: In addition to setting atom charge by atom type, you can add + # write_once("Data Charge By Bond") { + # @atom:A @atom:B 0.05 -0.05 + # } + # sections to your force-field file. This defines rules to assign + # incremental charges to pairs of atoms depending on who they are bonded to. + # (These are also called "bond_increments".) + + + write_once("Data Masses") { + @atom:CT3 12.011 + @atom:CT2 12.011 + @atom:CTH 12.011 + @atom:CT 12.011 + @atom:HCal 1.008 + @atom:CH2en 12.011 + @atom:HCen 1.008 + } #(end of atom masses) + + + + # ---------- EQUIVALENCE CATEGORIES for bonded interaction lookup ---------- + # Each type of atom has a separate ID used for looking up bond parameters + # and a separate ID for looking up 3-body angle interaction parameters + # and a separate ID for looking up 4-body dihedral interaction parameters + # and a separate ID for looking up 4-body improper interaction parameters + # The complete @atom type name includes ALL of these ID numbers. There's + # no need to force the end-user to type the complete name of each atom. + # The "replace" command used below informs moltemplate that the short + # @atom names we have been using above are equivalent to the complete + # @atom names used below: + + replace{ @atom:CT3 @atom:CT3_b13_a13_d13_i13 } + replace{ @atom:CT2 @atom:CT2_b13_a13_d13_i13 } + replace{ @atom:CTH @atom:CTH_b13_a13_d13_i13 } + replace{ @atom:CT @atom:CT_b13_a13_d13_i13 } + replace{ @atom:HCal @atom:HCal_b46_a46_d46_i46 } + replace{ @atom:CH2en @atom:CH2en_b47_a47_d47_i47 } + replace{ @atom:HCen @atom:HCen_b46_a46_d46_i46 } + + + # ------------------ Non-Bonded Interactions: ------------------------- + # http://lammps.sandia.gov/doc/pair_lj.html + # Syntax: + # pair_coeff AtomType1 AtomType2 pair_style_name parameters... + + write_once("In Settings") { + pair_coeff @atom:CT3_b13_a13_d13_i13 @atom:CT3_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:CT2_b13_a13_d13_i13 @atom:CT2_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:CTH_b13_a13_d13_i13 @atom:CTH_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:CT_b13_a13_d13_i13 @atom:CT_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:HCal_b46_a46_d46_i46 @atom:HCal_b46_a46_d46_i46 lj/cut/coul/long 0.03 2.5 + pair_coeff @atom:CH2en_b47_a47_d47_i47 @atom:CH2en_b47_a47_d47_i47 lj/cut/coul/long 0.076 3.55 + pair_coeff @atom:HCen_b46_a46_d46_i46 @atom:HCen_b46_a46_d46_i46 lj/cut/coul/long 0.03 2.42 + } #(end of pair_coeffs) + + + + # ------- Bonded Interactions: ------- + # http://lammps.sandia.gov/doc/bond_harmonic.html + # Syntax: + # bond_coeff BondTypeName BondStyle parameters... + + write_once("In Settings") { + bond_coeff @bond:13-13 harmonic 268.0 1.529 + bond_coeff @bond:13-46 harmonic 340.0 1.09 + bond_coeff @bond:13-47 harmonic 317.0 1.51 + bond_coeff @bond:46-47 harmonic 340.0 1.08 + bond_coeff @bond:47-47 harmonic 549.0 1.34 + } #(end of bond_coeffs) + + # Rules for assigning bond types by atom type: + # BondTypeName AtomType1 AtomType2 + # (* = wildcard) + + write_once("Data Bonds By Type") { + @bond:13-13 @atom:*_b13_a*_d*_i* @atom:*_b13_a*_d*_i* + @bond:13-46 @atom:*_b13_a*_d*_i* @atom:*_b46_a*_d*_i* + @bond:13-47 @atom:*_b13_a*_d*_i* @atom:*_b47_a*_d*_i* + @bond:46-47 @atom:*_b46_a*_d*_i* @atom:*_b47_a*_d*_i* + @bond:47-47 @atom:*_b47_a*_d*_i* @atom:*_b47_a*_d*_i* + } #(end of bonds by type) + + + + # ------- Angle Interactions ------- + # http://lammps.sandia.gov/doc/angle_harmonic.html + # Syntax: + # angle_coeff AngleTypeName AngleStyle parameters... + + write_once("In Settings") { + angle_coeff @angle:13-13-13 harmonic 58.35 112.7 + angle_coeff @angle:13-13-46 harmonic 37.5 110.7 + angle_coeff @angle:13-13-47 harmonic 63.0 111.1 + angle_coeff @angle:13-47-13 harmonic 70.0 130.0 + angle_coeff @angle:13-47-46 harmonic 35.0 117.0 + angle_coeff @angle:13-47-47 harmonic 70.0 124.0 + angle_coeff @angle:46-13-46 harmonic 33.0 107.8 + angle_coeff @angle:46-13-47 harmonic 35.0 109.5 + angle_coeff @angle:46-47-46 harmonic 35.0 117.0 + angle_coeff @angle:46-47-47 harmonic 35.0 120.0 + angle_coeff @angle:47-13-47 harmonic 63.0 112.4 + } #(end of angle_coeffs) + + # Rules for creating angle interactions according to atom type: + # AngleTypeName AtomType1 AtomType2 AtomType3 + # (* = wildcard) + + write_once("Data Angles By Type") { + @angle:13-13-13 @atom:*_b*_a13_d*_i* @atom:*_b*_a13_d*_i* @atom:*_b*_a13_d*_i* + @angle:13-13-46 @atom:*_b*_a13_d*_i* @atom:*_b*_a13_d*_i* @atom:*_b*_a46_d*_i* + @angle:13-13-47 @atom:*_b*_a13_d*_i* @atom:*_b*_a13_d*_i* @atom:*_b*_a47_d*_i* + @angle:13-47-13 @atom:*_b*_a13_d*_i* @atom:*_b*_a47_d*_i* @atom:*_b*_a13_d*_i* + @angle:13-47-46 @atom:*_b*_a13_d*_i* @atom:*_b*_a47_d*_i* @atom:*_b*_a46_d*_i* + @angle:13-47-47 @atom:*_b*_a13_d*_i* @atom:*_b*_a47_d*_i* @atom:*_b*_a47_d*_i* + @angle:46-13-46 @atom:*_b*_a46_d*_i* @atom:*_b*_a13_d*_i* @atom:*_b*_a46_d*_i* + @angle:46-13-47 @atom:*_b*_a46_d*_i* @atom:*_b*_a13_d*_i* @atom:*_b*_a47_d*_i* + @angle:46-47-46 @atom:*_b*_a46_d*_i* @atom:*_b*_a47_d*_i* @atom:*_b*_a46_d*_i* + @angle:46-47-47 @atom:*_b*_a46_d*_i* @atom:*_b*_a47_d*_i* @atom:*_b*_a47_d*_i* + @angle:47-13-47 @atom:*_b*_a47_d*_i* @atom:*_b*_a13_d*_i* @atom:*_b*_a47_d*_i* + } #(end of angles by type) + + + + # ----------- Dihedral Interactions ------------ + # http://lammps.sandia.gov/doc/dihedral_opls.html + # Syntax: + # dihedral_coeff DihedralTypeName DihedralStyle parameters... + + write_once("In Settings") { + # General rules: + dihedral_coeff @dihedral:X-47-47-X opls 0.0 14.0 0.0 0.0 + dihedral_coeff @dihedral:X-13-13-13 opls 1.711 -0.5 0.663 0.0 + dihedral_coeff @dihedral:X-13-47-13 opls 1.711 -0.5 0.663 0.0 + dihedral_coeff @dihedral:X-13-47-46 opls 0.0 0.0 0.468 0.0 + dihedral_coeff @dihedral:X-13-47-47 opls 0.5 0.0 0.0 0.0 + + # Specific rules (which override the general rules): + dihedral_coeff @dihedral:13-13-13-13 opls 1.3 -0.05 0.2 0.0 + dihedral_coeff @dihedral:13-13-13-47 opls 1.3 -0.05 0.2 0.0 + dihedral_coeff @dihedral:13-13-47-13 opls 2.817 -0.169 0.543 0.0 + dihedral_coeff @dihedral:13-13-47-47 opls 0.346 0.405 -0.904 0.0 + dihedral_coeff @dihedral:13-47-47-13 opls 0.0 14.0 0.0 0.0 + dihedral_coeff @dihedral:13-47-47-46 opls 0.0 14.0 0.0 0.0 + dihedral_coeff @dihedral:46-13-13-46 opls 0.0 0.0 0.3 0.0 + dihedral_coeff @dihedral:46-13-13-47 opls 0.0 0.0 0.366 0.0 + dihedral_coeff @dihedral:46-13-47-13 opls 0.0 0.0 0.3 0.0 + dihedral_coeff @dihedral:46-13-47-46 opls 0.0 0.0 0.318 0.0 + dihedral_coeff @dihedral:46-13-47-47 opls 0.0 0.0 -0.372 0.0 + dihedral_coeff @dihedral:46-47-47-46 opls 0.0 14.0 0.0 0.0 + dihedral_coeff @dihedral:47-13-47-13 opls 0.0 -8.0 0.0 0.0 + dihedral_coeff @dihedral:47-13-47-46 opls 0.0 -8.0 0.0 0.0 + dihedral_coeff @dihedral:47-46-47-13 opls 0.0 -8.0 0.0 0.0 + dihedral_coeff @dihedral:47-46-47-46 opls 0.0 -8.0 0.0 0.0 + } #(end of dihedral_coeffs) + + # Rules for creating dihedral interactions according to atom type: + # DihedralTypeName AtomType1 AtomType2 AtomType3 AtomType4 + # (* = wildcard) + + write_once("Data Dihedrals By Type") { + @dihedral:X-47-47-X @atom:* @atom:*_b*_a*_d47_i* @atom:*_b*_a*_d47_i* @atom:* + @dihedral:X-13-13-13 @atom:* @atom:*_b*_a*_d13_i* @atom:*_b*_a*_d13_i* @atom:*_b*_a*_d13_i* + @dihedral:X-13-47-13 @atom:* @atom:*_b*_a*_d13_i* @atom:*_b*_a*_d47_i* @atom:*_b*_a*_d13_i* + @dihedral:X-13-47-46 @atom:* @atom:*_b*_a*_d13_i* @atom:*_b*_a*_d47_i* @atom:*_b*_a*_d46_i* + @dihedral:X-13-47-47 @atom:* @atom:*_b*_a*_d13_i* @atom:*_b*_a*_d47_i* @atom:*_b*_a*_d47_i* + @dihedral:13-13-13-13 @atom:*_b*_a*_d13_i* @atom:*_b*_a*_d13_i* @atom:*_b*_a*_d13_i* @atom:*_b*_a*_d13_i* + @dihedral:13-13-13-47 @atom:*_b*_a*_d13_i* @atom:*_b*_a*_d13_i* @atom:*_b*_a*_d13_i* @atom:*_b*_a*_d47_i* + @dihedral:13-13-47-13 @atom:*_b*_a*_d13_i* @atom:*_b*_a*_d13_i* @atom:*_b*_a*_d47_i* @atom:*_b*_a*_d13_i* + @dihedral:13-13-47-47 @atom:*_b*_a*_d13_i* @atom:*_b*_a*_d13_i* @atom:*_b*_a*_d47_i* @atom:*_b*_a*_d47_i* + @dihedral:13-47-47-13 @atom:*_b*_a*_d13_i* @atom:*_b*_a*_d47_i* @atom:*_b*_a*_d47_i* @atom:*_b*_a*_d13_i* + @dihedral:13-47-47-46 @atom:*_b*_a*_d13_i* @atom:*_b*_a*_d47_i* @atom:*_b*_a*_d47_i* @atom:*_b*_a*_d46_i* + @dihedral:46-13-13-46 @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d13_i* @atom:*_b*_a*_d13_i* @atom:*_b*_a*_d46_i* + @dihedral:46-13-13-47 @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d13_i* @atom:*_b*_a*_d13_i* @atom:*_b*_a*_d47_i* + @dihedral:46-13-47-13 @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d13_i* @atom:*_b*_a*_d47_i* @atom:*_b*_a*_d13_i* + @dihedral:46-13-47-46 @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d13_i* @atom:*_b*_a*_d47_i* @atom:*_b*_a*_d46_i* + @dihedral:46-13-47-47 @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d13_i* @atom:*_b*_a*_d47_i* @atom:*_b*_a*_d47_i* + @dihedral:46-47-47-46 @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d47_i* @atom:*_b*_a*_d47_i* @atom:*_b*_a*_d46_i* + @dihedral:47-13-47-13 @atom:*_b*_a*_d47_i* @atom:*_b*_a*_d13_i* @atom:*_b*_a*_d47_i* @atom:*_b*_a*_d13_i* + @dihedral:47-13-47-46 @atom:*_b*_a*_d47_i* @atom:*_b*_a*_d13_i* @atom:*_b*_a*_d47_i* @atom:*_b*_a*_d46_i* + @dihedral:47-46-47-13 @atom:*_b*_a*_d47_i* @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d47_i* @atom:*_b*_a*_d13_i* + @dihedral:47-46-47-46 @atom:*_b*_a*_d47_i* @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d47_i* @atom:*_b*_a*_d46_i* + } #(end of dihedrals by type) + + + + + # ---------- Improper Interactions ---------- + # http://lammps.sandia.gov/doc/improper_harmonic.html + + write_once("In Settings") { + improper_coeff @improper:X-X-47-X harmonic 15.0 180.0 + } + + # ImproperTypeName AtomType1 AtomType2 AtomType3 AtomType4 + # (* = wildcard) + + write_once("Data Impropers By Type (opls_imp.py)") { + @improper:X-X-47-X @atom:* @atom:* @atom:*_b*_a*_d*_i47 @atom:* + } + + # NOTE: Sometimes the default improper-creation rules do not work for a + # particular force-field. The "(opls_imp.py)" text above tells + # moltemplate to look for a file named "opls_imp.py" (normally found in + # "src/nbody_alternate_symmetry/") which tells moltemplate to change + # the order in the list of atoms in an improper interaction, or the + # criteria used to decide whether a new improper interaction should + # be created. The default rules are located in "src/nbody_Impropers.py" + + + # ------- Choosing LAMMPS Interaction Styles ------- + # LAMMPS supports many different kinds of bonded and non-bonded interactions + # which can be selected at run time. Although we specified these above in the + # pair_coeff, bond_coeff, angle_coeff, dihedral_coeff, and improper_coeff + # commands, we must also specify this in the "In Init" section: + + write_once("In Init") { + units real + atom_style full + bond_style hybrid harmonic + angle_style hybrid harmonic + dihedral_style hybrid opls + improper_style hybrid harmonic + pair_style hybrid lj/cut/coul/long 10.0 10.0 + pair_modify mix geometric + special_bonds lj/coul 0.0 0.0 0.5 + kspace_style pppm 0.0001 + } #end of init parameters + + # Optional: + # I use "hybrid" styles in case the user later wishes to + # combine the molecules built using this force-field with other + # molecules that use other styles. (This is not necessarily + # a good idea, but LAMMPS and moltemplate both allow it.) + # For more information: + # http://lammps.sandia.gov/doc/pair_hybrid.html + # http://lammps.sandia.gov/doc/bond_hybrid.html + # http://lammps.sandia.gov/doc/angle_hybrid.html + # http://lammps.sandia.gov/doc/dihedral_hybrid.html + # http://lammps.sandia.gov/doc/improper_hybrid.html + + +} # OPLSAA + diff --git a/tools/moltemplate/moltemplate/force_fields/build_your_own_force_field/usage_example/alkane50.lt b/tools/moltemplate/moltemplate/force_fields/build_your_own_force_field/usage_example/alkane50.lt new file mode 100644 index 0000000000000000000000000000000000000000..b15ef139fd53387019779153d72df7a9cdffdf7f --- /dev/null +++ b/tools/moltemplate/moltemplate/force_fields/build_your_own_force_field/usage_example/alkane50.lt @@ -0,0 +1,137 @@ +# This is a simple example showing how to build a long polymer +# (in this case, an alkane chain). I split the +# hexadecane molecule into individual CH2 and CH3 monomers. +# I defined it this way so that you can easily modify +# it to change the length of the alkane chain. + + +import "ch2group.lt" # load the definition of the "CH2" object +import "ch3group.lt" # load the definition of the "CH3" object + + + +Alkane50 inherits OPLSAA { + + + create_var {$mol} # optional:force all monomers to share the same molecule-ID + + # This is a long polymer consisting of 48 CH2 groups and 2 CH3 end-caps. + # Rather than create them one-by-one, I decided to create them all + # using a single "new" command. Later, I can modify this array. + + # Create an array of 50 "CH2" objects distributed along the X axis + + monomers = new CH2 [50].rot(180,1,0,0).move(1.2533223,0,0) + + # NOTE: the ".rot(180,1,0,0).move(1.2533223,0,0)" means that each + # successive monomer is rotated 180 degrees (with respect to the previous + # monomer), and then moved 1.2533223 Angstroms down the X axis. + # Alternately, if you are reading the coordinates from a file, you don't have + # to indicate the position & orientation of each monomer. In that case, use: + # monomers = new CH2 [50] + + + # ---- Now, modify the ends: --- + # Delete the CH2 groups at the beginning and end, and replace them with CH3. + + delete monomers[0] + delete monomers[49] + + monomers[0] = new CH3 + monomers[49] = new CH3 + + # Move the CH3 groups to the correct location at either end of the chain: + + #monomers[0].move(0,0,0) # <--(this monomer is already in the correct place) + monomers[49].rot(180.0,0,0,1).move(61.4127927,0,0) #61.4127927=49*1.2533223 + + + ## NOTE: Alternately, you can define the polymer without deleting the ends: + # monomers[0] = new CH3 + # monomers[1-48] = new CH2[48].rot(180,1,0,0).move(1.2533223,0,0) + ## Note: monomers[0] and monomers[1] overlap, so we move 1-48 to make room: + # monomers[1-48].rot(180,1,0,0).move(1.2533223,0,0) # move many monomers + ## Now add the final monomer at the end: + # monomers[49] = new CH3.rot(180.0,0,0,1).move(61.4127927,0,0) + # + ## NOTE: Alternately, you can read the coordinates from a file. + ## In that case, you can use simpler commands: + # monomers[0] = new CH3 + # monomers[1-48] = new CH2[48] + # monomers[49] = new CH3 + + + + # Now add a list of bonds connecting the carbon atoms together: + # (Angles, dihedrals, impropers will be automatically added later.) + + write('Data Bond List') { + $bond:b1 $atom:monomers[0]/C $atom:monomers[1]/C + $bond:b2 $atom:monomers[1]/C $atom:monomers[2]/C + $bond:b3 $atom:monomers[2]/C $atom:monomers[3]/C + $bond:b4 $atom:monomers[3]/C $atom:monomers[4]/C + $bond:b5 $atom:monomers[4]/C $atom:monomers[5]/C + $bond:b6 $atom:monomers[5]/C $atom:monomers[6]/C + $bond:b7 $atom:monomers[6]/C $atom:monomers[7]/C + $bond:b8 $atom:monomers[7]/C $atom:monomers[8]/C + $bond:b9 $atom:monomers[8]/C $atom:monomers[9]/C + $bond:b10 $atom:monomers[9]/C $atom:monomers[10]/C + $bond:b11 $atom:monomers[10]/C $atom:monomers[11]/C + $bond:b12 $atom:monomers[11]/C $atom:monomers[12]/C + $bond:b13 $atom:monomers[12]/C $atom:monomers[13]/C + $bond:b14 $atom:monomers[13]/C $atom:monomers[14]/C + $bond:b15 $atom:monomers[14]/C $atom:monomers[15]/C + $bond:b16 $atom:monomers[15]/C $atom:monomers[16]/C + $bond:b17 $atom:monomers[16]/C $atom:monomers[17]/C + $bond:b18 $atom:monomers[17]/C $atom:monomers[18]/C + $bond:b19 $atom:monomers[18]/C $atom:monomers[19]/C + $bond:b20 $atom:monomers[19]/C $atom:monomers[20]/C + $bond:b21 $atom:monomers[20]/C $atom:monomers[21]/C + $bond:b22 $atom:monomers[21]/C $atom:monomers[22]/C + $bond:b23 $atom:monomers[22]/C $atom:monomers[23]/C + $bond:b24 $atom:monomers[23]/C $atom:monomers[24]/C + $bond:b25 $atom:monomers[24]/C $atom:monomers[25]/C + $bond:b26 $atom:monomers[25]/C $atom:monomers[26]/C + $bond:b27 $atom:monomers[26]/C $atom:monomers[27]/C + $bond:b28 $atom:monomers[27]/C $atom:monomers[28]/C + $bond:b29 $atom:monomers[28]/C $atom:monomers[29]/C + $bond:b30 $atom:monomers[29]/C $atom:monomers[30]/C + $bond:b31 $atom:monomers[30]/C $atom:monomers[31]/C + $bond:b32 $atom:monomers[31]/C $atom:monomers[32]/C + $bond:b33 $atom:monomers[32]/C $atom:monomers[33]/C + $bond:b34 $atom:monomers[33]/C $atom:monomers[34]/C + $bond:b35 $atom:monomers[34]/C $atom:monomers[35]/C + $bond:b36 $atom:monomers[35]/C $atom:monomers[36]/C + $bond:b37 $atom:monomers[36]/C $atom:monomers[37]/C + $bond:b38 $atom:monomers[37]/C $atom:monomers[38]/C + $bond:b39 $atom:monomers[38]/C $atom:monomers[39]/C + $bond:b40 $atom:monomers[39]/C $atom:monomers[40]/C + $bond:b41 $atom:monomers[40]/C $atom:monomers[41]/C + $bond:b42 $atom:monomers[41]/C $atom:monomers[42]/C + $bond:b43 $atom:monomers[42]/C $atom:monomers[43]/C + $bond:b44 $atom:monomers[43]/C $atom:monomers[44]/C + $bond:b45 $atom:monomers[44]/C $atom:monomers[45]/C + $bond:b46 $atom:monomers[45]/C $atom:monomers[46]/C + $bond:b47 $atom:monomers[46]/C $atom:monomers[47]/C + $bond:b48 $atom:monomers[47]/C $atom:monomers[48]/C + $bond:b49 $atom:monomers[48]/C $atom:monomers[49]/C + } + +} # Alkane50 + + + + + + + + +######### (scratchwork calculations for the atomic coordinates) ######### +# Lcc = 1.5350 # length of the C-C bond (Sp3) +# Lch = 1.0930 # length of the C-H bond +# theta=2*atan(sqrt(2)) # ~= 109.5 degrees = tetrahedronal angle (C-C-C angle) +# DeltaXc = Lcc*sin(theta/2) # = 1.2533222517240594 +# DeltaYc = Lcc*cos(theta/2) # = 0.8862326632060754 +# # 0.5*DeltaYc = 0.4431163316030377 +# DeltaZh = Lch*sin(theta/2) # = 0.8924307629540046 +# DeltaYh = Lch*cos(theta/2) # = 0.6310438442242609 diff --git a/tools/moltemplate/moltemplate/force_fields/build_your_own_force_field/usage_example/ch2group.lt b/tools/moltemplate/moltemplate/force_fields/build_your_own_force_field/usage_example/ch2group.lt new file mode 100644 index 0000000000000000000000000000000000000000..3431892f4ebccb74052afceebd551651c11c986a --- /dev/null +++ b/tools/moltemplate/moltemplate/force_fields/build_your_own_force_field/usage_example/ch2group.lt @@ -0,0 +1,74 @@ +# This file contains a definition for the "CH2" molecular subunit. + + + +import "oplsaa_simple.lt" # Load the force field settings we will need + + + +# Then define "CH2": + + +CH2 inherits OPLSAA { + + # atom-id mol-id atom-type charge x y z + + write("Data Atoms") { + $atom:C $mol:... @atom:CT2 0.0 0.000000 0.000000 0.000000 + $atom:H1 $mol:... @atom:HCal 0.0 0.000000 0.631044 0.892431 + $atom:H2 $mol:... @atom:HCal 0.0 0.000000 0.631044 -0.892431 + } + + write('Data Bond List') { + $bond:CH1 $atom:C $atom:H1 + $bond:CH2 $atom:C $atom:H2 + } + + # Atom type numbers (@atom:80L,@atom:85LCH3) are defined in "loplsaa.lt": + # @atom:80L "Alkane CH3- (LOPLS CT_CH3)" + # @atom:81L "Alkane -CH2- (LOPLS CT_CH2)" + # @atom:85LCH3 "Alkane H-C CH3 (LOPLS HC_CH3)" + # @atom:85LCH2 "Alkane H-C CH2 (LOPLS HC_CH2)" + # In this example, atomic charges are generated by atom type (according to the + # rules in loplsaa.lt), and can be omitted. Just leave them as "0.00" for now. + # The "..." in "$mol:..." tells moltemplate that this molecule may be part + # of a larger molecule, and (if so) to use the larger parent object's + # molecule id number as it's own. + +} # CH2 + + + + + + + + + + + + + + + +# Optional: Shift all the coordinates in the +Y direction by 0.4431163. +# This way, the carbon atom is no longer located at 0,0,0, but the +# axis of an alkane chain containing this monomer is at 0,0,0. +# (This makes it more convenient to construct a polymer later. +# If this is confusing, then simply add 0.4431163 to the Y +# coordinates in the "Data Atoms" section above.) + +CH2.move(0,0.4431163,0) + + + + +######### (scratchwork calculations for the atomic coordinates) ######### +# Lcc = 1.5350 # length of the C-C bond (Sp3) +# Lch = 1.0930 # length of the C-H bond +# theta=2*atan(sqrt(2)) # ~= 109.5 degrees = tetrahedronal angle (C-C-C angle) +# DeltaXc = Lcc*sin(theta/2) # = 1.2533222517240594 +# DeltaYc = Lcc*cos(theta/2) # = 0.8862326632060754 +# # 0.5*DeltaYc = 0.4431163 +# DeltaZh = Lch*sin(theta/2) # = 0.892431 +# DeltaYh = Lch*cos(theta/2) # = 0.631044 diff --git a/tools/moltemplate/moltemplate/force_fields/build_your_own_force_field/usage_example/ch3group.lt b/tools/moltemplate/moltemplate/force_fields/build_your_own_force_field/usage_example/ch3group.lt new file mode 100644 index 0000000000000000000000000000000000000000..686715e895b5f6a48033167adac0e85fd07c2a1f --- /dev/null +++ b/tools/moltemplate/moltemplate/force_fields/build_your_own_force_field/usage_example/ch3group.lt @@ -0,0 +1,65 @@ +# This file contains a definition for the "CH3" molecular subunit. + + + +import "oplsaa_simple.lt" # Load the force field settings we will need + + + +# Then define "CH3": + + +CH3 inherits OPLSAA { + + # atom-id mol-id atom-type charge x y z + + write("Data Atoms") { + $atom:C $mol:... @atom:CT3 0.0 0.000000 0.000000 0.000000 + $atom:H1 $mol:... @atom:HCal 0.0 0.000000 0.631044 0.892431 + $atom:H2 $mol:... @atom:HCal 0.0 0.000000 0.631044 -0.892431 + $atom:H3 $mol:... @atom:HCal 0.0 -0.892431 -0.631044 0.000000 + } + + write('Data Bond List') { + $bond:CH1 $atom:C $atom:H1 + $bond:CH2 $atom:C $atom:H2 + $bond:CH3 $atom:C $atom:H3 + } + +} # CH3 + + + + + + + + + + + + + + + +# Optional: Shift all the coordinates in the +Y direction by 0.4431163. +# This way, the carbon atom is no longer located at 0,0,0, but the +# axis of an alkane chain containing this monomer is at 0,0,0. +# (This makes it more convenient to construct a polymer later. +# If this is confusing, then simply add 0.4431163 to the Y +# coordinates in the "Data Atoms" section above.) + +CH3.move(0,0.4431163,0) + + + + +######### (scratchwork calculations for the atomic coordinates) ######### +# Lcc = 1.5350 # length of the C-C bond (Sp3) +# Lch = 1.0930 # length of the C-H bond +# theta=2*atan(sqrt(2)) # ~= 109.5 degrees = tetrahedronal angle (C-C-C angle) +# DeltaXc = Lcc*sin(theta/2) # = 1.2533222517240594 +# DeltaYc = Lcc*cos(theta/2) # = 0.8862326632060754 +# # 0.5*DeltaYc = 0.4431163 +# DeltaZh = Lch*sin(theta/2) # = 0.892431 +# DeltaYh = Lch*cos(theta/2) # = 0.631044 diff --git a/tools/moltemplate/moltemplate/force_fields/build_your_own_force_field/usage_example/run.in.min b/tools/moltemplate/moltemplate/force_fields/build_your_own_force_field/usage_example/run.in.min new file mode 100644 index 0000000000000000000000000000000000000000..5d0bcffd8eccb8f9854b7d39a612f466e63b2871 --- /dev/null +++ b/tools/moltemplate/moltemplate/force_fields/build_your_own_force_field/usage_example/run.in.min @@ -0,0 +1,37 @@ +# PREREQUISITES: +# +# You must use moltemplate.sh to create 3 files: +# system.data system.in.init system.in.settings +# +# ------------------------------- Initialization Section -------------------- + +include "system.in.init" + +# ------------------------------- Atom Definition Section ------------------- + +read_data "system.data" + +# ------------------------------- Settings Section -------------------------- + +include "system.in.settings" +include "system.in.charges" + +# ------------------------------- Run Section ------------------------------- + + +# -- minimization protocol -- + +# Note: The minimization step is not necessary in this example. However +# in general, it's always a good idea to minimize the system beforehand. + +thermo 50 +dump 1 all custom 50 traj_min.lammpstrj id mol type x y z ix iy iz +minimize 1.0e-4 1.0e-6 100000 400000 + + +# (The "write_restart" and "read_restart" commands were buggy in 2012, +# but they should work also. I prefer "write_data" and "read_data".) + +write_data system_after_min.data + + diff --git a/tools/moltemplate/moltemplate/force_fields/build_your_own_force_field/usage_example/run.in.nvt b/tools/moltemplate/moltemplate/force_fields/build_your_own_force_field/usage_example/run.in.nvt new file mode 100644 index 0000000000000000000000000000000000000000..676cd8ec90bae3025b6c27f50481296f933eb5e4 --- /dev/null +++ b/tools/moltemplate/moltemplate/force_fields/build_your_own_force_field/usage_example/run.in.nvt @@ -0,0 +1,36 @@ +# PREREQUISITES: +# +# 1) You must use moltemplate.sh to create 3 files: +# system.data system.in.init system.in.settings +# 2) You must minimize the system beforehand by using "run.in.min". +# This will create the file "system_after_min.data" which this file reads. + +# ------------------------------- Initialization Section -------------------- + +include "system.in.init" + +# ------------------------------- Atom Definition Section ------------------- + +# Read the coordinates generated by an earlier simulation + +read_data "system_after_min.data" + +# ------------------------------- Settings Section -------------------------- + +include "system.in.settings" +include "system.in.charges" + +# ------------------------------- Run Section ------------------------------- + +# -- simulation protocol -- + + +timestep 1.0 +dump 1 all custom 1000 traj_nvt.lammpstrj id mol type x y z ix iy iz +fix fxnvt all nvt temp 300.0 300.0 500.0 tchain 1 +thermo 500 +#thermo_modify flush yes + +run 1000000 + +write_data system_after_nvt.data diff --git a/tools/moltemplate/moltemplate/force_fields/build_your_own_force_field/usage_example/system.lt b/tools/moltemplate/moltemplate/force_fields/build_your_own_force_field/usage_example/system.lt new file mode 100644 index 0000000000000000000000000000000000000000..f62ecc09b6572d8dbd6cb91c9cbd637f83c21fb2 --- /dev/null +++ b/tools/moltemplate/moltemplate/force_fields/build_your_own_force_field/usage_example/system.lt @@ -0,0 +1,31 @@ +import "alkane50.lt" # Defines the "Alkane50" molecule + + +polymer = new Alkane50 + + + +# Specify the size of the world the polymer lives in: +write_once("Data Boundary") { + 0.0 72.0 xlo xhi + 0.0 72.0 ylo yhi + 0.0 72.0 zlo zhi +} + + + + + +############################################################################### +# Note: If you want to create multiple polymers, and/or mix them with other +# molecules, just add more "new" commands, for example: +# polymer1 = new Alkane50.move(0,0,10) +# polymer2 = new Alkane50.move(0,0,20) +# : +# ...or use array notation, for example: +# polymers = new Alkane50[20].move(0,0,10) +# +# Note: Multidimensional arrays can be used to fill a planar region or a volume +# polymers = new Alkane50 [4].move(0, 0, 30.0) +# [4].move(0, 30.0, 0) +# [2].move(70.0, 0, 0) diff --git a/tools/moltemplate/moltemplate/force_fields/cooke_deserno/README b/tools/moltemplate/moltemplate/force_fields/cooke_deserno/README new file mode 100644 index 0000000000000000000000000000000000000000..6713725d0b90e2a2b11f86e1efd50c2fe409e0cc --- /dev/null +++ b/tools/moltemplate/moltemplate/force_fields/cooke_deserno/README @@ -0,0 +1,16 @@ +---Cooke Deserno coarse-grained bilayer model--- + +This folder contains an lt file for a Cooke-type 3-bead lipid, as described in: + +"Tunable generic model for fluid bilayer membranes" + Cooke IR, Kremer K, Deserno M, Physical Review E, 2005 + +Due to the form of the forcefield, this requires a 'tabulated potential' style in lammps. This is easily generated using the included python script. Usage as follows: + + gen_potential-cooke.py w_c + +where w_c is an optional parameter as described in the original paper (10.1103/PhysRevE.72.011506) with default value of 1.6 + +This creates the 'tabulated_potential' file which is needed by lammps during the simulation. + +--- diff --git a/tools/moltemplate/moltemplate/force_fields/cooke_deserno/gen_potential-cooke.py b/tools/moltemplate/moltemplate/force_fields/cooke_deserno/gen_potential-cooke.py new file mode 100755 index 0000000000000000000000000000000000000000..7240296584d1efda2c0937c92658df11b17c5134 --- /dev/null +++ b/tools/moltemplate/moltemplate/force_fields/cooke_deserno/gen_potential-cooke.py @@ -0,0 +1,144 @@ +#!/usr/bin/python2.7 + +import os,sys +from fractions import Fraction +from numpy import * + +### PARAMETERS ### +sigma = 1.00 +epsilon = 1.00 + +b_hh = 0.95 * sigma +b_ht = 0.95 * sigma +b_tt = 1.00 * sigma + +r_init = 0.000001 +r_max = sigma * 3. +r_space = 0.01 +################## + +### INPUTS ### +if len(sys.argv) == 2: + w_cut = float(sys.argv[1]) +else: + w_cut = 1.6 +# 1.6 seems to be 'good' for vesicles, bilayers 1.4 +############## + +def WCA_energy(b, r): +# Calculate WCA energy + E_pot = 0 + val1 = math.pow((b / r), 12) + val2 = -math.pow((b / r), 6) + E_pot = 4 * epsilon * (val1 + val2 + 0.25) + return E_pot + +def WCA_forces(b, r): +# Calculate WCA forces + Force = 0 + val1 = 24 * math.pow(b, 6) / math.pow(r, 7) + val2 = -48 * math.pow(b, 12) / math.pow(r, 13) + Force = -(val1 + val2) + return Force + +def Tail_energy(b, r, r_cut): +# Calculate extra Tail energy + E_pot = 0 + if (r < r_cut): + E_pot = -1 * epsilon + else: + val1 = math.cos((math.pi * (r - r_cut)) / (2 * w_cut)) + E_pot = -1 * epsilon * math.pow(val1, 2) + return E_pot + +def Tail_forces(b, r, r_cut): + Force = 0 + if (r < r_cut): + Force = 0; + else: + val1 = math.sin((math.pi * (r - r_cut)) / w_cut) + Force = -math.pi * val1 / (2 * w_cut) + return Force + + +############## +ofile = open('tabulated_potential.dat', 'w') +tot_potential_hh = zeros((int(r_max / r_space) + 1, 4)) +tot_potential_ht = zeros((int(r_max / r_space) + 1, 4)) +tot_potential_tt = zeros((int(r_max / r_space) + 1, 4)) + +# Setup up formatting & distances in all arrays +for i in range(int(r_max / r_space)+1): + tot_potential_hh[:,0][i] = i+1 + tot_potential_ht[:,0][i] = i+1 + tot_potential_tt[:,0][i] = i+1 +for i in range(1, int(r_max / r_space)+1): + tot_potential_hh[:,1][i] = tot_potential_hh[:,1][i-1] + r_space + tot_potential_ht[:,1][i] = tot_potential_ht[:,1][i-1] + r_space + tot_potential_tt[:,1][i] = tot_potential_tt[:,1][i-1] + r_space +tot_potential_hh[:,1][0] = r_init +tot_potential_ht[:,1][0] = r_init +tot_potential_tt[:,1][0] = r_init + + + +ofile.write("# Tabulated potential for Cooke 3-bead lipid model, Wc = %f\n\n" % w_cut) +num = len(tot_potential_hh[:,0]) + +### Calcaulte first potential, H-H +ofile.write("HEAD_HEAD\n") +r_cut = 2**Fraction('1/6') * b_hh +rmax = int(r_cut / r_space) +ofile.write("N %d R %f %f\n\n" % (num, r_init, r_max)) +ofile.write("1 %f %f %f\n" % (tot_potential_hh[:,1][0], tot_potential_hh[:,2][0], tot_potential_hh[:,3][0])) + +for i in range(1, rmax+1): + tot_potential_hh[:,2][i] = WCA_energy(b_hh, tot_potential_hh[:,1][i]) + tot_potential_hh[:,3][i] = WCA_forces(b_hh, tot_potential_hh[:,1][i]) + +for i in range(1, int(r_max / r_space)+1): + ofile.write("%d %f %f %f\n" % (i+1, tot_potential_hh[:,1][i], tot_potential_hh[:,2][i], tot_potential_hh[:,3][i])) +ofile.write("\n") + + + +### Calcaulte second potential, H-T +ofile.write("HEAD_TAIL\n") +r_cut = 2**Fraction('1/6') * b_ht +rmax = int(r_cut / r_space) +ofile.write("N %d R %f %f\n\n" % (num, r_init, r_max)) +ofile.write("1 %f %f %f\n" % (tot_potential_ht[:,1][0], tot_potential_ht[:,2][0], tot_potential_ht[:,3][0])) + +for i in range(1, rmax+1): + tot_potential_ht[:,2][i] = WCA_energy(b_ht, tot_potential_ht[:,1][i]) + tot_potential_ht[:,3][i] = WCA_forces(b_ht, tot_potential_ht[:,1][i]) + +for i in range(1, int(r_max / r_space)+1): + ofile.write("%d %f %f %f\n" % (i+1, tot_potential_ht[:,1][i], tot_potential_ht[:,2][i], tot_potential_ht[:,3][i])) +ofile.write("\n") + + + +### Calcaulte third potential, T-T +# Also include extra tail-tail attraction term +ofile.write("TAIL_TAIL\n") +r_cut = 2**Fraction('1/6') * b_tt +rmax = int(r_cut / r_space) +ofile.write("N %d R %f %f\n\n" % (num, r_init, r_max)) +ofile.write("1 %f %f %f\n" % (tot_potential_tt[:,1][0], tot_potential_tt[:,2][0], tot_potential_tt[:,3][0])) + +for i in range(1, rmax+1): + tot_potential_tt[:,2][i] = WCA_energy(b_tt, tot_potential_tt[:,1][i]) + tot_potential_tt[:,3][i] = WCA_forces(b_tt, tot_potential_tt[:,1][i]) + +max2 = int( (r_cut + w_cut) / r_space) +for i in range(1, max2+1): + tot_potential_tt[:,2][i] = tot_potential_tt[:,2][i] + Tail_energy(b_tt, tot_potential_tt[:,1][i], r_cut) + tot_potential_tt[:,3][i] = tot_potential_tt[:,3][i] + Tail_forces(b_tt, tot_potential_tt[:,1][i], r_cut) + +for i in range(1, int(r_max / r_space)+1): + ofile.write("%d %f %f %f\n" % (i+1, tot_potential_tt[:,1][i], tot_potential_tt[:,2][i], tot_potential_tt[:,3][i])) +ofile.write("\n") + + +sys.exit() diff --git a/tools/moltemplate/moltemplate/force_fields/cooke_deserno/tabulated_potential.dat b/tools/moltemplate/moltemplate/force_fields/cooke_deserno/tabulated_potential.dat new file mode 100644 index 0000000000000000000000000000000000000000..cd8dd4db7d6a0ce874229eb3787d6fe4827bf5ac --- /dev/null +++ b/tools/moltemplate/moltemplate/force_fields/cooke_deserno/tabulated_potential.dat @@ -0,0 +1,4589 @@ +# Tabulated potential for Cooke 3-bead lipid model, with various values of Wc + +HEAD_HEAD +N 301 R 0.000001 3.000000 + +1 0.000001 0.000000 0.000000 +2 0.010000 2161440350647607518822400.000000 2593728420778890895481110528.000000 +3 0.020000 527695398062100709376.000000 316617238851043104653312.000000 +4 0.030000 4067131343850062336.000000 1626852538346708926464.000000 +5 0.040000 128831883585858496.000000 38649565183436988416.000000 +6 0.050000 8853259488081101.000000 2124782299721489152.000000 +7 0.060000 992951926207085.500000 198590391543644928.000000 +8 0.070000 156158887055179.062500 26770097065977256.000000 +9 0.080000 31453085537227.195312 4717963671829832.000000 +10 0.090000 7653019634383.599609 1020402986772367.875000 +11 0.100000 2161437410283.985352 259372665656012.125000 +12 0.110000 688699846600.110840 75130982888675.812500 +13 0.120000 242418934523.303925 24241942688387.753906 +14 0.130000 92772695554.949768 8563661551482.013672 +15 0.140000 38124343876.568542 3267817639811.164551 +16 0.150000 16658711862.666004 1332707274503.870850 +17 0.160000 7678803441.103481 575916830241.413208 +18 0.170000 3709726886.129636 261867373669.903687 +19 0.180000 1868327898.144181 124558074820.194244 +20 0.190000 976500000.999998 61675657894.736687 +21 0.200000 527649455.864879 31660345589.187614 +22 0.210000 293806260.511241 16789908645.082933 +23 0.220000 168114083.438129 9170566326.526011 +24 0.230000 98610181.495127 5145397135.359623 +25 0.240000 59169165.297856 2958842872.372237 +26 0.250000 36250908.888444 1740332628.538169 +27 0.260000 22640215.252607 1045152619.667436 +28 0.270000 14392928.420337 639854320.962319 +29 0.280000 9301695.744822 398774811.984595 +30 0.290000 6104017.717125 252682276.475626 +31 0.300000 4063098.921872 162604585.395105 +32 0.310000 2740806.847436 106159834.284035 +33 0.320000 1872013.228410 70251804.140783 +34 0.330000 1293637.623279 47082727.461649 +35 0.340000 903822.389327 31933167.708250 +36 0.350000 638028.370186 21902644.696022 +37 0.360000 454806.060338 15182681.781435 +38 0.370000 327194.054124 10630250.689058 +39 0.380000 237443.016602 7513588.353207 +40 0.390000 173734.710287 5358508.469115 +41 0.400000 128115.021129 3854188.581495 +42 0.410000 95175.694590 2794659.517251 +43 0.420000 71203.733281 2042016.387369 +44 0.430000 53626.450912 1503014.644703 +45 0.440000 40645.593596 1114014.575978 +46 0.450000 30993.690585 831193.088925 +47 0.460000 23770.248288 624115.416996 +48 0.470000 18330.617960 471472.559289 +49 0.480000 14209.942248 358228.692769 +50 0.490000 11070.674537 273695.309628 +51 0.500000 8666.076152 210220.029942 +52 0.510000 6814.633252 162286.683398 +53 0.520000 5381.995700 125892.872001 +54 0.530000 4268.136868 98116.253151 +55 0.540000 3398.163685 76810.165684 +56 0.550000 2715.696677 60388.560510 +57 0.560000 2178.071621 47673.030759 +58 0.570000 1752.840750 37783.319810 +59 0.580000 1415.206838 30058.470465 +60 0.590000 1146.130977 23999.705760 +61 0.600000 930.929708 19228.816970 +62 0.610000 758.229563 15457.682582 +63 0.620000 619.184089 12465.822566 +64 0.630000 506.884625 10083.785213 +65 0.640000 415.914818 8180.790148 +66 0.650000 342.012307 6655.493196 +67 0.660000 281.810669 5429.052488 +68 0.670000 232.641766 4439.899069 +69 0.680000 192.383722 3639.775908 +70 0.690000 159.343555 2990.725059 +71 0.700000 132.166200 2462.786676 +72 0.710000 109.763738 2032.234764 +73 0.720000 91.260139 1680.219270 +74 0.730000 75.947974 1391.717054 +75 0.740000 63.254382 1154.718549 +76 0.750000 52.714228 959.594954 +77 0.760000 43.948872 798.604206 +78 0.770000 36.649308 665.504021 +79 0.780000 30.562750 555.247832 +80 0.790000 25.481924 463.745109 +81 0.800000 21.236485 387.671861 +82 0.810000 17.686136 324.320364 +83 0.820000 14.715086 271.479665 +84 0.830000 12.227574 227.340274 +85 0.840000 10.144253 190.417955 +86 0.850000 8.399249 159.492629 +87 0.860000 6.937780 133.559247 +88 0.870000 5.714205 111.788215 +89 0.880000 4.690441 93.493410 +90 0.890000 3.834655 78.106288 +91 0.900000 3.120205 65.154867 +92 0.910000 2.524755 54.246625 +93 0.920000 2.029558 45.054564 +94 0.930000 1.618857 37.305814 +95 0.940000 1.279395 30.772315 +96 0.950000 1.000000 25.263158 +97 0.960000 0.771253 20.618297 +98 0.970000 0.585203 16.703371 +99 0.980000 0.435131 13.405424 +100 0.990000 0.315357 10.629373 +101 1.000000 0.221073 8.295079 +102 1.010000 0.148209 6.334918 +103 1.020000 0.093319 4.691763 +104 1.030000 0.053479 3.317301 +105 1.040000 0.026214 2.170635 +106 1.050000 0.009423 1.217110 +107 1.060000 0.001327 0.427337 +108 1.070000 0.000000 0.000000 +109 1.080000 0.000000 0.000000 +110 1.090000 0.000000 0.000000 +111 1.100000 0.000000 0.000000 +112 1.110000 0.000000 0.000000 +113 1.120000 0.000000 0.000000 +114 1.130000 0.000000 0.000000 +115 1.140000 0.000000 0.000000 +116 1.150000 0.000000 0.000000 +117 1.160000 0.000000 0.000000 +118 1.170000 0.000000 0.000000 +119 1.180000 0.000000 0.000000 +120 1.190000 0.000000 0.000000 +121 1.200000 0.000000 0.000000 +122 1.210000 0.000000 0.000000 +123 1.220000 0.000000 0.000000 +124 1.230000 0.000000 0.000000 +125 1.240000 0.000000 0.000000 +126 1.250000 0.000000 0.000000 +127 1.260000 0.000000 0.000000 +128 1.270000 0.000000 0.000000 +129 1.280000 0.000000 0.000000 +130 1.290000 0.000000 0.000000 +131 1.300000 0.000000 0.000000 +132 1.310000 0.000000 0.000000 +133 1.320000 0.000000 0.000000 +134 1.330000 0.000000 0.000000 +135 1.340000 0.000000 0.000000 +136 1.350000 0.000000 0.000000 +137 1.360000 0.000000 0.000000 +138 1.370000 0.000000 0.000000 +139 1.380000 0.000000 0.000000 +140 1.390000 0.000000 0.000000 +141 1.400000 0.000000 0.000000 +142 1.410000 0.000000 0.000000 +143 1.420000 0.000000 0.000000 +144 1.430000 0.000000 0.000000 +145 1.440000 0.000000 0.000000 +146 1.450000 0.000000 0.000000 +147 1.460000 0.000000 0.000000 +148 1.470000 0.000000 0.000000 +149 1.480000 0.000000 0.000000 +150 1.490000 0.000000 0.000000 +151 1.500000 0.000000 0.000000 +152 1.510000 0.000000 0.000000 +153 1.520000 0.000000 0.000000 +154 1.530000 0.000000 0.000000 +155 1.540000 0.000000 0.000000 +156 1.550000 0.000000 0.000000 +157 1.560000 0.000000 0.000000 +158 1.570000 0.000000 0.000000 +159 1.580000 0.000000 0.000000 +160 1.590000 0.000000 0.000000 +161 1.600000 0.000000 0.000000 +162 1.610000 0.000000 0.000000 +163 1.620000 0.000000 0.000000 +164 1.630000 0.000000 0.000000 +165 1.640000 0.000000 0.000000 +166 1.650000 0.000000 0.000000 +167 1.660000 0.000000 0.000000 +168 1.670000 0.000000 0.000000 +169 1.680000 0.000000 0.000000 +170 1.690000 0.000000 0.000000 +171 1.700000 0.000000 0.000000 +172 1.710000 0.000000 0.000000 +173 1.720000 0.000000 0.000000 +174 1.730000 0.000000 0.000000 +175 1.740000 0.000000 0.000000 +176 1.750000 0.000000 0.000000 +177 1.760000 0.000000 0.000000 +178 1.770000 0.000000 0.000000 +179 1.780000 0.000000 0.000000 +180 1.790000 0.000000 0.000000 +181 1.800000 0.000000 0.000000 +182 1.810000 0.000000 0.000000 +183 1.820000 0.000000 0.000000 +184 1.830000 0.000000 0.000000 +185 1.840000 0.000000 0.000000 +186 1.850000 0.000000 0.000000 +187 1.860000 0.000000 0.000000 +188 1.870000 0.000000 0.000000 +189 1.880000 0.000000 0.000000 +190 1.890000 0.000000 0.000000 +191 1.900000 0.000000 0.000000 +192 1.910000 0.000000 0.000000 +193 1.920000 0.000000 0.000000 +194 1.930000 0.000000 0.000000 +195 1.940000 0.000000 0.000000 +196 1.950000 0.000000 0.000000 +197 1.960000 0.000000 0.000000 +198 1.970000 0.000000 0.000000 +199 1.980000 0.000000 0.000000 +200 1.990000 0.000000 0.000000 +201 2.000000 0.000000 0.000000 +202 2.010000 0.000000 0.000000 +203 2.020000 0.000000 0.000000 +204 2.030000 0.000000 0.000000 +205 2.040000 0.000000 0.000000 +206 2.050000 0.000000 0.000000 +207 2.060000 0.000000 0.000000 +208 2.070000 0.000000 0.000000 +209 2.080000 0.000000 0.000000 +210 2.090000 0.000000 0.000000 +211 2.100000 0.000000 0.000000 +212 2.110000 0.000000 0.000000 +213 2.120000 0.000000 0.000000 +214 2.130000 0.000000 0.000000 +215 2.140000 0.000000 0.000000 +216 2.150000 0.000000 0.000000 +217 2.160000 0.000000 0.000000 +218 2.170000 0.000000 0.000000 +219 2.180000 0.000000 0.000000 +220 2.190000 0.000000 0.000000 +221 2.200000 0.000000 0.000000 +222 2.210000 0.000000 0.000000 +223 2.220000 0.000000 0.000000 +224 2.230000 0.000000 0.000000 +225 2.240000 0.000000 0.000000 +226 2.250000 0.000000 0.000000 +227 2.260000 0.000000 0.000000 +228 2.270000 0.000000 0.000000 +229 2.280000 0.000000 0.000000 +230 2.290000 0.000000 0.000000 +231 2.300000 0.000000 0.000000 +232 2.310000 0.000000 0.000000 +233 2.320000 0.000000 0.000000 +234 2.330000 0.000000 0.000000 +235 2.340000 0.000000 0.000000 +236 2.350000 0.000000 0.000000 +237 2.360000 0.000000 0.000000 +238 2.370000 0.000000 0.000000 +239 2.380000 0.000000 0.000000 +240 2.390000 0.000000 0.000000 +241 2.400000 0.000000 0.000000 +242 2.410000 0.000000 0.000000 +243 2.420000 0.000000 0.000000 +244 2.430000 0.000000 0.000000 +245 2.440000 0.000000 0.000000 +246 2.450000 0.000000 0.000000 +247 2.460000 0.000000 0.000000 +248 2.470000 0.000000 0.000000 +249 2.480000 0.000000 0.000000 +250 2.490000 0.000000 0.000000 +251 2.500000 0.000000 0.000000 +252 2.510000 0.000000 0.000000 +253 2.520000 0.000000 0.000000 +254 2.530000 0.000000 0.000000 +255 2.540000 0.000000 0.000000 +256 2.550000 0.000000 0.000000 +257 2.560000 0.000000 0.000000 +258 2.570000 0.000000 0.000000 +259 2.580000 0.000000 0.000000 +260 2.590000 0.000000 0.000000 +261 2.600000 0.000000 0.000000 +262 2.610000 0.000000 0.000000 +263 2.620000 0.000000 0.000000 +264 2.630000 0.000000 0.000000 +265 2.640000 0.000000 0.000000 +266 2.650000 0.000000 0.000000 +267 2.660000 0.000000 0.000000 +268 2.670000 0.000000 0.000000 +269 2.680000 0.000000 0.000000 +270 2.690000 0.000000 0.000000 +271 2.700000 0.000000 0.000000 +272 2.710000 0.000000 0.000000 +273 2.720000 0.000000 0.000000 +274 2.730000 0.000000 0.000000 +275 2.740000 0.000000 0.000000 +276 2.750000 0.000000 0.000000 +277 2.760000 0.000000 0.000000 +278 2.770000 0.000000 0.000000 +279 2.780000 0.000000 0.000000 +280 2.790000 0.000000 0.000000 +281 2.800000 0.000000 0.000000 +282 2.810000 0.000000 0.000000 +283 2.820000 0.000000 0.000000 +284 2.830000 0.000000 0.000000 +285 2.840000 0.000000 0.000000 +286 2.850000 0.000000 0.000000 +287 2.860000 0.000000 0.000000 +288 2.870000 0.000000 0.000000 +289 2.880000 0.000000 0.000000 +290 2.890000 0.000000 0.000000 +291 2.900000 0.000000 0.000000 +292 2.910000 0.000000 0.000000 +293 2.920000 0.000000 0.000000 +294 2.930000 0.000000 0.000000 +295 2.940000 0.000000 0.000000 +296 2.950000 0.000000 0.000000 +297 2.960000 0.000000 0.000000 +298 2.970000 0.000000 0.000000 +299 2.980000 0.000000 0.000000 +300 2.990000 0.000000 0.000000 +301 3.000000 0.000000 0.000000 + +HEAD_TAIL +N 301 R 0.000001 3.000000 + +1 0.000001 0.000000 0.000000 +2 0.010000 2161440350647607518822400.000000 2593728420778890895481110528.000000 +3 0.020000 527695398062100709376.000000 316617238851043104653312.000000 +4 0.030000 4067131343850062336.000000 1626852538346708926464.000000 +5 0.040000 128831883585858496.000000 38649565183436988416.000000 +6 0.050000 8853259488081101.000000 2124782299721489152.000000 +7 0.060000 992951926207085.500000 198590391543644928.000000 +8 0.070000 156158887055179.062500 26770097065977256.000000 +9 0.080000 31453085537227.195312 4717963671829832.000000 +10 0.090000 7653019634383.599609 1020402986772367.875000 +11 0.100000 2161437410283.985352 259372665656012.125000 +12 0.110000 688699846600.110840 75130982888675.812500 +13 0.120000 242418934523.303925 24241942688387.753906 +14 0.130000 92772695554.949768 8563661551482.013672 +15 0.140000 38124343876.568542 3267817639811.164551 +16 0.150000 16658711862.666004 1332707274503.870850 +17 0.160000 7678803441.103481 575916830241.413208 +18 0.170000 3709726886.129636 261867373669.903687 +19 0.180000 1868327898.144181 124558074820.194244 +20 0.190000 976500000.999998 61675657894.736687 +21 0.200000 527649455.864879 31660345589.187614 +22 0.210000 293806260.511241 16789908645.082933 +23 0.220000 168114083.438129 9170566326.526011 +24 0.230000 98610181.495127 5145397135.359623 +25 0.240000 59169165.297856 2958842872.372237 +26 0.250000 36250908.888444 1740332628.538169 +27 0.260000 22640215.252607 1045152619.667436 +28 0.270000 14392928.420337 639854320.962319 +29 0.280000 9301695.744822 398774811.984595 +30 0.290000 6104017.717125 252682276.475626 +31 0.300000 4063098.921872 162604585.395105 +32 0.310000 2740806.847436 106159834.284035 +33 0.320000 1872013.228410 70251804.140783 +34 0.330000 1293637.623279 47082727.461649 +35 0.340000 903822.389327 31933167.708250 +36 0.350000 638028.370186 21902644.696022 +37 0.360000 454806.060338 15182681.781435 +38 0.370000 327194.054124 10630250.689058 +39 0.380000 237443.016602 7513588.353207 +40 0.390000 173734.710287 5358508.469115 +41 0.400000 128115.021129 3854188.581495 +42 0.410000 95175.694590 2794659.517251 +43 0.420000 71203.733281 2042016.387369 +44 0.430000 53626.450912 1503014.644703 +45 0.440000 40645.593596 1114014.575978 +46 0.450000 30993.690585 831193.088925 +47 0.460000 23770.248288 624115.416996 +48 0.470000 18330.617960 471472.559289 +49 0.480000 14209.942248 358228.692769 +50 0.490000 11070.674537 273695.309628 +51 0.500000 8666.076152 210220.029942 +52 0.510000 6814.633252 162286.683398 +53 0.520000 5381.995700 125892.872001 +54 0.530000 4268.136868 98116.253151 +55 0.540000 3398.163685 76810.165684 +56 0.550000 2715.696677 60388.560510 +57 0.560000 2178.071621 47673.030759 +58 0.570000 1752.840750 37783.319810 +59 0.580000 1415.206838 30058.470465 +60 0.590000 1146.130977 23999.705760 +61 0.600000 930.929708 19228.816970 +62 0.610000 758.229563 15457.682582 +63 0.620000 619.184089 12465.822566 +64 0.630000 506.884625 10083.785213 +65 0.640000 415.914818 8180.790148 +66 0.650000 342.012307 6655.493196 +67 0.660000 281.810669 5429.052488 +68 0.670000 232.641766 4439.899069 +69 0.680000 192.383722 3639.775908 +70 0.690000 159.343555 2990.725059 +71 0.700000 132.166200 2462.786676 +72 0.710000 109.763738 2032.234764 +73 0.720000 91.260139 1680.219270 +74 0.730000 75.947974 1391.717054 +75 0.740000 63.254382 1154.718549 +76 0.750000 52.714228 959.594954 +77 0.760000 43.948872 798.604206 +78 0.770000 36.649308 665.504021 +79 0.780000 30.562750 555.247832 +80 0.790000 25.481924 463.745109 +81 0.800000 21.236485 387.671861 +82 0.810000 17.686136 324.320364 +83 0.820000 14.715086 271.479665 +84 0.830000 12.227574 227.340274 +85 0.840000 10.144253 190.417955 +86 0.850000 8.399249 159.492629 +87 0.860000 6.937780 133.559247 +88 0.870000 5.714205 111.788215 +89 0.880000 4.690441 93.493410 +90 0.890000 3.834655 78.106288 +91 0.900000 3.120205 65.154867 +92 0.910000 2.524755 54.246625 +93 0.920000 2.029558 45.054564 +94 0.930000 1.618857 37.305814 +95 0.940000 1.279395 30.772315 +96 0.950000 1.000000 25.263158 +97 0.960000 0.771253 20.618297 +98 0.970000 0.585203 16.703371 +99 0.980000 0.435131 13.405424 +100 0.990000 0.315357 10.629373 +101 1.000000 0.221073 8.295079 +102 1.010000 0.148209 6.334918 +103 1.020000 0.093319 4.691763 +104 1.030000 0.053479 3.317301 +105 1.040000 0.026214 2.170635 +106 1.050000 0.009423 1.217110 +107 1.060000 0.001327 0.427337 +108 1.070000 0.000000 0.000000 +109 1.080000 0.000000 0.000000 +110 1.090000 0.000000 0.000000 +111 1.100000 0.000000 0.000000 +112 1.110000 0.000000 0.000000 +113 1.120000 0.000000 0.000000 +114 1.130000 0.000000 0.000000 +115 1.140000 0.000000 0.000000 +116 1.150000 0.000000 0.000000 +117 1.160000 0.000000 0.000000 +118 1.170000 0.000000 0.000000 +119 1.180000 0.000000 0.000000 +120 1.190000 0.000000 0.000000 +121 1.200000 0.000000 0.000000 +122 1.210000 0.000000 0.000000 +123 1.220000 0.000000 0.000000 +124 1.230000 0.000000 0.000000 +125 1.240000 0.000000 0.000000 +126 1.250000 0.000000 0.000000 +127 1.260000 0.000000 0.000000 +128 1.270000 0.000000 0.000000 +129 1.280000 0.000000 0.000000 +130 1.290000 0.000000 0.000000 +131 1.300000 0.000000 0.000000 +132 1.310000 0.000000 0.000000 +133 1.320000 0.000000 0.000000 +134 1.330000 0.000000 0.000000 +135 1.340000 0.000000 0.000000 +136 1.350000 0.000000 0.000000 +137 1.360000 0.000000 0.000000 +138 1.370000 0.000000 0.000000 +139 1.380000 0.000000 0.000000 +140 1.390000 0.000000 0.000000 +141 1.400000 0.000000 0.000000 +142 1.410000 0.000000 0.000000 +143 1.420000 0.000000 0.000000 +144 1.430000 0.000000 0.000000 +145 1.440000 0.000000 0.000000 +146 1.450000 0.000000 0.000000 +147 1.460000 0.000000 0.000000 +148 1.470000 0.000000 0.000000 +149 1.480000 0.000000 0.000000 +150 1.490000 0.000000 0.000000 +151 1.500000 0.000000 0.000000 +152 1.510000 0.000000 0.000000 +153 1.520000 0.000000 0.000000 +154 1.530000 0.000000 0.000000 +155 1.540000 0.000000 0.000000 +156 1.550000 0.000000 0.000000 +157 1.560000 0.000000 0.000000 +158 1.570000 0.000000 0.000000 +159 1.580000 0.000000 0.000000 +160 1.590000 0.000000 0.000000 +161 1.600000 0.000000 0.000000 +162 1.610000 0.000000 0.000000 +163 1.620000 0.000000 0.000000 +164 1.630000 0.000000 0.000000 +165 1.640000 0.000000 0.000000 +166 1.650000 0.000000 0.000000 +167 1.660000 0.000000 0.000000 +168 1.670000 0.000000 0.000000 +169 1.680000 0.000000 0.000000 +170 1.690000 0.000000 0.000000 +171 1.700000 0.000000 0.000000 +172 1.710000 0.000000 0.000000 +173 1.720000 0.000000 0.000000 +174 1.730000 0.000000 0.000000 +175 1.740000 0.000000 0.000000 +176 1.750000 0.000000 0.000000 +177 1.760000 0.000000 0.000000 +178 1.770000 0.000000 0.000000 +179 1.780000 0.000000 0.000000 +180 1.790000 0.000000 0.000000 +181 1.800000 0.000000 0.000000 +182 1.810000 0.000000 0.000000 +183 1.820000 0.000000 0.000000 +184 1.830000 0.000000 0.000000 +185 1.840000 0.000000 0.000000 +186 1.850000 0.000000 0.000000 +187 1.860000 0.000000 0.000000 +188 1.870000 0.000000 0.000000 +189 1.880000 0.000000 0.000000 +190 1.890000 0.000000 0.000000 +191 1.900000 0.000000 0.000000 +192 1.910000 0.000000 0.000000 +193 1.920000 0.000000 0.000000 +194 1.930000 0.000000 0.000000 +195 1.940000 0.000000 0.000000 +196 1.950000 0.000000 0.000000 +197 1.960000 0.000000 0.000000 +198 1.970000 0.000000 0.000000 +199 1.980000 0.000000 0.000000 +200 1.990000 0.000000 0.000000 +201 2.000000 0.000000 0.000000 +202 2.010000 0.000000 0.000000 +203 2.020000 0.000000 0.000000 +204 2.030000 0.000000 0.000000 +205 2.040000 0.000000 0.000000 +206 2.050000 0.000000 0.000000 +207 2.060000 0.000000 0.000000 +208 2.070000 0.000000 0.000000 +209 2.080000 0.000000 0.000000 +210 2.090000 0.000000 0.000000 +211 2.100000 0.000000 0.000000 +212 2.110000 0.000000 0.000000 +213 2.120000 0.000000 0.000000 +214 2.130000 0.000000 0.000000 +215 2.140000 0.000000 0.000000 +216 2.150000 0.000000 0.000000 +217 2.160000 0.000000 0.000000 +218 2.170000 0.000000 0.000000 +219 2.180000 0.000000 0.000000 +220 2.190000 0.000000 0.000000 +221 2.200000 0.000000 0.000000 +222 2.210000 0.000000 0.000000 +223 2.220000 0.000000 0.000000 +224 2.230000 0.000000 0.000000 +225 2.240000 0.000000 0.000000 +226 2.250000 0.000000 0.000000 +227 2.260000 0.000000 0.000000 +228 2.270000 0.000000 0.000000 +229 2.280000 0.000000 0.000000 +230 2.290000 0.000000 0.000000 +231 2.300000 0.000000 0.000000 +232 2.310000 0.000000 0.000000 +233 2.320000 0.000000 0.000000 +234 2.330000 0.000000 0.000000 +235 2.340000 0.000000 0.000000 +236 2.350000 0.000000 0.000000 +237 2.360000 0.000000 0.000000 +238 2.370000 0.000000 0.000000 +239 2.380000 0.000000 0.000000 +240 2.390000 0.000000 0.000000 +241 2.400000 0.000000 0.000000 +242 2.410000 0.000000 0.000000 +243 2.420000 0.000000 0.000000 +244 2.430000 0.000000 0.000000 +245 2.440000 0.000000 0.000000 +246 2.450000 0.000000 0.000000 +247 2.460000 0.000000 0.000000 +248 2.470000 0.000000 0.000000 +249 2.480000 0.000000 0.000000 +250 2.490000 0.000000 0.000000 +251 2.500000 0.000000 0.000000 +252 2.510000 0.000000 0.000000 +253 2.520000 0.000000 0.000000 +254 2.530000 0.000000 0.000000 +255 2.540000 0.000000 0.000000 +256 2.550000 0.000000 0.000000 +257 2.560000 0.000000 0.000000 +258 2.570000 0.000000 0.000000 +259 2.580000 0.000000 0.000000 +260 2.590000 0.000000 0.000000 +261 2.600000 0.000000 0.000000 +262 2.610000 0.000000 0.000000 +263 2.620000 0.000000 0.000000 +264 2.630000 0.000000 0.000000 +265 2.640000 0.000000 0.000000 +266 2.650000 0.000000 0.000000 +267 2.660000 0.000000 0.000000 +268 2.670000 0.000000 0.000000 +269 2.680000 0.000000 0.000000 +270 2.690000 0.000000 0.000000 +271 2.700000 0.000000 0.000000 +272 2.710000 0.000000 0.000000 +273 2.720000 0.000000 0.000000 +274 2.730000 0.000000 0.000000 +275 2.740000 0.000000 0.000000 +276 2.750000 0.000000 0.000000 +277 2.760000 0.000000 0.000000 +278 2.770000 0.000000 0.000000 +279 2.780000 0.000000 0.000000 +280 2.790000 0.000000 0.000000 +281 2.800000 0.000000 0.000000 +282 2.810000 0.000000 0.000000 +283 2.820000 0.000000 0.000000 +284 2.830000 0.000000 0.000000 +285 2.840000 0.000000 0.000000 +286 2.850000 0.000000 0.000000 +287 2.860000 0.000000 0.000000 +288 2.870000 0.000000 0.000000 +289 2.880000 0.000000 0.000000 +290 2.890000 0.000000 0.000000 +291 2.900000 0.000000 0.000000 +292 2.910000 0.000000 0.000000 +293 2.920000 0.000000 0.000000 +294 2.930000 0.000000 0.000000 +295 2.940000 0.000000 0.000000 +296 2.950000 0.000000 0.000000 +297 2.960000 0.000000 0.000000 +298 2.970000 0.000000 0.000000 +299 2.980000 0.000000 0.000000 +300 2.990000 0.000000 0.000000 +301 3.000000 0.000000 0.000000 + +TAIL_TAIL_Wc_0.6 +N 301 R 0.000001 3.000000 + +1 0.000001 0.000000 0.000000 +2 0.010000 3999999999995999707725824.000000 4799999999997598070678224896.000000 +3 0.020000 976562499937500004352.000000 585937499981249777762304.000000 +4 0.030000 7526705687148720128.000000 3010682275956881096704.000000 +5 0.040000 238418578125000000.000000 71525573583984353280.000000 +6 0.050000 16383999744000000.000000 3932159969279997440.000000 +7 0.060000 1837574546257248.500000 367514917824838144.000000 +8 0.070000 288990429236596.312500 49541219354796968.000000 +9 0.080000 58207645654678.343750 8731147992610928.000000 +10 0.090000 14162817119182.900391 1888376117671434.750000 +11 0.100000 3999996000000.000000 479999760000000.500000 +12 0.110000 1274521012945.708496 139038779115662.093750 +13 0.120000 448625279546.553955 44862594934250.781250 +14 0.130000 171687100967.122345 15848078337188.726562 +15 0.140000 70553781072.250778 6047489716531.549805 +16 0.150000 30829035351.054977 2466336874723.629883 +17 0.160000 14210616296.622902 1065805162943.433594 +18 0.170000 6865346349.879549 484618532348.129211 +19 0.180000 3457603256.036191 230510803894.961182 +20 0.190000 1807158928.004511 114139038296.617722 +21 0.200000 976499999.999998 58591874999.999847 +22 0.210000 543739902.726732 31072184111.878654 +23 0.220000 311127628.299641 16971560078.724821 +24 0.230000 182499493.379421 9522417580.006592 +25 0.240000 109507052.064558 5475875881.316449 +26 0.250000 67092480.000000 3220832255.999991 +27 0.260000 41903049.941880 1934285732.237306 +28 0.270000 26639528.522336 1184208483.196407 +29 0.280000 17216873.260370 738043867.822060 +30 0.290000 11298625.429098 467668459.533016 +31 0.300000 7521218.724186 300958488.336427 +32 0.310000 5073808.319410 196492716.046068 +33 0.320000 3465721.661655 130034411.505164 +34 0.330000 2395143.138865 87152427.788625 +35 0.340000 1673561.082347 59112555.692539 +36 0.350000 1181528.973318 40546867.041137 +37 0.360000 842332.557402 28108378.157278 +38 0.370000 606071.119890 19681641.931764 +39 0.380000 439893.177446 13912339.662092 +40 0.390000 321924.360071 9922853.684245 +41 0.400000 237442.016602 7137908.935547 +42 0.410000 176435.450812 5176287.635225 +43 0.420000 132031.660059 3782743.515595 +44 0.430000 99468.250044 2784687.558254 +45 0.440000 75416.262744 2064324.130372 +46 0.450000 57529.220585 1540535.337797 +47 0.460000 44139.942254 1156983.644674 +48 0.470000 34054.846645 874222.695500 +49 0.480000 26413.181465 664417.646696 +50 0.490000 20589.881497 507780.654581 +51 0.500000 16128.000000 390144.000000 +52 0.510000 12691.351515 301294.396513 +53 0.520000 10031.077542 233820.872331 +54 0.530000 7961.876154 182311.949517 +55 0.540000 6344.988397 142792.224654 +56 0.550000 5075.941991 112324.247003 +57 0.560000 4075.667156 88725.341557 +58 0.570000 3284.018178 70364.910655 +59 0.580000 2655.022026 56018.454503 +60 0.590000 2153.374227 44761.819610 +61 0.600000 1751.840750 35894.153820 +62 0.610000 1429.321668 28881.467437 +63 0.620000 1169.400839 23315.070198 +64 0.630000 959.254371 18880.806522 +65 0.640000 788.825286 15336.170940 +66 0.650000 650.196650 12493.203783 +67 0.660000 537.113366 10205.647944 +68 0.670000 444.615844 8359.261950 +69 0.680000 368.758212 6864.481939 +70 0.690000 306.390715 5650.839586 +71 0.700000 254.991024 4662.698464 +72 0.710000 212.532986 3855.984565 +73 0.720000 177.384120 3195.669530 +74 0.730000 148.225307 2653.826099 +75 0.740000 123.987627 2208.120224 +76 0.750000 103.802544 1840.637693 +77 0.760000 86.962472 1536.967937 +78 0.770000 72.889471 1285.486272 +79 0.780000 61.110325 1076.789779 +80 0.790000 51.236635 903.252555 +81 0.800000 42.948872 758.673996 +82 0.810000 35.983576 637.999825 +83 0.820000 30.123043 537.100183 +84 0.830000 25.186999 452.592612 +85 0.840000 21.025860 381.700456 +86 0.850000 17.515264 322.139305 +87 0.860000 14.551619 272.025666 +88 0.870000 12.048476 229.803356 +89 0.880000 9.933566 194.184004 +90 0.890000 8.146368 164.098852 +91 0.900000 6.636119 138.659624 +92 0.910000 5.360169 117.126674 +93 0.920000 4.282632 98.883003 +94 0.930000 3.373272 83.413022 +95 0.940000 2.606573 70.285155 +96 0.950000 1.960975 59.137553 +97 0.960000 1.418239 49.666347 +98 0.970000 0.962916 41.615965 +99 0.980000 0.581905 34.771137 +100 0.990000 0.264083 28.950277 +101 1.000000 -0.000000 24.000000 +102 1.010000 -0.218384 19.790571 +103 1.020000 -0.397913 16.212117 +104 1.030000 -0.544418 13.171468 +105 1.040000 -0.662870 10.589529 +106 1.050000 -0.757512 8.399073 +107 1.060000 -0.831965 6.542902 +108 1.070000 -0.889321 4.972300 +109 1.080000 -0.932223 3.645731 +110 1.090000 -0.962930 2.527753 +111 1.100000 -0.983372 1.588095 +112 1.110000 -0.995200 0.800882 +113 1.120000 -0.999824 0.143980 +114 1.130000 -0.999611 -0.103302 +115 1.140000 -0.997893 -0.240069 +116 1.150000 -0.994811 -0.376178 +117 1.160000 -0.990373 -0.511255 +118 1.170000 -0.984591 -0.644932 +119 1.180000 -0.977480 -0.776841 +120 1.190000 -0.969061 -0.906620 +121 1.200000 -0.959356 -1.033915 +122 1.210000 -0.948392 -1.158376 +123 1.220000 -0.936199 -1.279661 +124 1.230000 -0.922811 -1.397439 +125 1.240000 -0.908263 -1.511387 +126 1.250000 -0.892597 -1.621193 +127 1.260000 -0.875854 -1.726554 +128 1.270000 -0.858082 -1.827184 +129 1.280000 -0.839327 -1.922805 +130 1.290000 -0.819643 -2.013156 +131 1.300000 -0.799083 -2.097989 +132 1.310000 -0.777702 -2.177071 +133 1.320000 -0.755561 -2.250187 +134 1.330000 -0.732719 -2.317134 +135 1.340000 -0.709240 -2.377731 +136 1.350000 -0.685186 -2.431810 +137 1.360000 -0.660626 -2.479224 +138 1.370000 -0.635625 -2.519843 +139 1.380000 -0.610252 -2.553555 +140 1.390000 -0.584577 -2.580268 +141 1.400000 -0.558670 -2.599908 +142 1.410000 -0.532602 -2.612423 +143 1.420000 -0.506445 -2.617776 +144 1.430000 -0.480271 -2.615955 +145 1.440000 -0.454150 -2.606964 +146 1.450000 -0.428155 -2.590827 +147 1.460000 -0.402357 -2.567588 +148 1.470000 -0.376827 -2.537312 +149 1.480000 -0.351634 -2.500082 +150 1.490000 -0.326848 -2.455999 +151 1.500000 -0.302537 -2.405184 +152 1.510000 -0.278767 -2.347777 +153 1.520000 -0.255603 -2.283935 +154 1.530000 -0.233109 -2.213833 +155 1.540000 -0.211346 -2.137662 +156 1.550000 -0.190375 -2.055633 +157 1.560000 -0.170252 -1.967969 +158 1.570000 -0.151034 -1.874911 +159 1.580000 -0.132771 -1.776714 +160 1.590000 -0.115516 -1.673647 +161 1.600000 -0.099314 -1.565993 +162 1.610000 -0.084210 -1.454047 +163 1.620000 -0.070246 -1.338115 +164 1.630000 -0.057460 -1.218516 +165 1.640000 -0.045887 -1.095576 +166 1.650000 -0.035558 -0.969634 +167 1.660000 -0.026503 -0.841034 +168 1.670000 -0.018745 -0.710129 +169 1.680000 -0.012307 -0.577277 +170 1.690000 -0.007205 -0.442843 +171 1.700000 -0.003454 -0.307196 +172 1.710000 -0.001064 -0.170706 +173 1.720000 -0.000042 -0.033748 +174 1.730000 0.000000 0.000000 +175 1.740000 0.000000 0.000000 +176 1.750000 0.000000 0.000000 +177 1.760000 0.000000 0.000000 +178 1.770000 0.000000 0.000000 +179 1.780000 0.000000 0.000000 +180 1.790000 0.000000 0.000000 +181 1.800000 0.000000 0.000000 +182 1.810000 0.000000 0.000000 +183 1.820000 0.000000 0.000000 +184 1.830000 0.000000 0.000000 +185 1.840000 0.000000 0.000000 +186 1.850000 0.000000 0.000000 +187 1.860000 0.000000 0.000000 +188 1.870000 0.000000 0.000000 +189 1.880000 0.000000 0.000000 +190 1.890000 0.000000 0.000000 +191 1.900000 0.000000 0.000000 +192 1.910000 0.000000 0.000000 +193 1.920000 0.000000 0.000000 +194 1.930000 0.000000 0.000000 +195 1.940000 0.000000 0.000000 +196 1.950000 0.000000 0.000000 +197 1.960000 0.000000 0.000000 +198 1.970000 0.000000 0.000000 +199 1.980000 0.000000 0.000000 +200 1.990000 0.000000 0.000000 +201 2.000000 0.000000 0.000000 +202 2.010000 0.000000 0.000000 +203 2.020000 0.000000 0.000000 +204 2.030000 0.000000 0.000000 +205 2.040000 0.000000 0.000000 +206 2.050000 0.000000 0.000000 +207 2.060000 0.000000 0.000000 +208 2.070000 0.000000 0.000000 +209 2.080000 0.000000 0.000000 +210 2.090000 0.000000 0.000000 +211 2.100000 0.000000 0.000000 +212 2.110000 0.000000 0.000000 +213 2.120000 0.000000 0.000000 +214 2.130000 0.000000 0.000000 +215 2.140000 0.000000 0.000000 +216 2.150000 0.000000 0.000000 +217 2.160000 0.000000 0.000000 +218 2.170000 0.000000 0.000000 +219 2.180000 0.000000 0.000000 +220 2.190000 0.000000 0.000000 +221 2.200000 0.000000 0.000000 +222 2.210000 0.000000 0.000000 +223 2.220000 0.000000 0.000000 +224 2.230000 0.000000 0.000000 +225 2.240000 0.000000 0.000000 +226 2.250000 0.000000 0.000000 +227 2.260000 0.000000 0.000000 +228 2.270000 0.000000 0.000000 +229 2.280000 0.000000 0.000000 +230 2.290000 0.000000 0.000000 +231 2.300000 0.000000 0.000000 +232 2.310000 0.000000 0.000000 +233 2.320000 0.000000 0.000000 +234 2.330000 0.000000 0.000000 +235 2.340000 0.000000 0.000000 +236 2.350000 0.000000 0.000000 +237 2.360000 0.000000 0.000000 +238 2.370000 0.000000 0.000000 +239 2.380000 0.000000 0.000000 +240 2.390000 0.000000 0.000000 +241 2.400000 0.000000 0.000000 +242 2.410000 0.000000 0.000000 +243 2.420000 0.000000 0.000000 +244 2.430000 0.000000 0.000000 +245 2.440000 0.000000 0.000000 +246 2.450000 0.000000 0.000000 +247 2.460000 0.000000 0.000000 +248 2.470000 0.000000 0.000000 +249 2.480000 0.000000 0.000000 +250 2.490000 0.000000 0.000000 +251 2.500000 0.000000 0.000000 +252 2.510000 0.000000 0.000000 +253 2.520000 0.000000 0.000000 +254 2.530000 0.000000 0.000000 +255 2.540000 0.000000 0.000000 +256 2.550000 0.000000 0.000000 +257 2.560000 0.000000 0.000000 +258 2.570000 0.000000 0.000000 +259 2.580000 0.000000 0.000000 +260 2.590000 0.000000 0.000000 +261 2.600000 0.000000 0.000000 +262 2.610000 0.000000 0.000000 +263 2.620000 0.000000 0.000000 +264 2.630000 0.000000 0.000000 +265 2.640000 0.000000 0.000000 +266 2.650000 0.000000 0.000000 +267 2.660000 0.000000 0.000000 +268 2.670000 0.000000 0.000000 +269 2.680000 0.000000 0.000000 +270 2.690000 0.000000 0.000000 +271 2.700000 0.000000 0.000000 +272 2.710000 0.000000 0.000000 +273 2.720000 0.000000 0.000000 +274 2.730000 0.000000 0.000000 +275 2.740000 0.000000 0.000000 +276 2.750000 0.000000 0.000000 +277 2.760000 0.000000 0.000000 +278 2.770000 0.000000 0.000000 +279 2.780000 0.000000 0.000000 +280 2.790000 0.000000 0.000000 +281 2.800000 0.000000 0.000000 +282 2.810000 0.000000 0.000000 +283 2.820000 0.000000 0.000000 +284 2.830000 0.000000 0.000000 +285 2.840000 0.000000 0.000000 +286 2.850000 0.000000 0.000000 +287 2.860000 0.000000 0.000000 +288 2.870000 0.000000 0.000000 +289 2.880000 0.000000 0.000000 +290 2.890000 0.000000 0.000000 +291 2.900000 0.000000 0.000000 +292 2.910000 0.000000 0.000000 +293 2.920000 0.000000 0.000000 +294 2.930000 0.000000 0.000000 +295 2.940000 0.000000 0.000000 +296 2.950000 0.000000 0.000000 +297 2.960000 0.000000 0.000000 +298 2.970000 0.000000 0.000000 +299 2.980000 0.000000 0.000000 +300 2.990000 0.000000 0.000000 +301 3.000000 0.000000 0.000000 + + +TAIL_TAIL_Wc_0.7 +N 301 R 0.000001 3.000000 + +1 0.000001 0.000000 0.000000 +2 0.010000 3999999999995999707725824.000000 4799999999997598070678224896.000000 +3 0.020000 976562499937500004352.000000 585937499981249777762304.000000 +4 0.030000 7526705687148720128.000000 3010682275956881096704.000000 +5 0.040000 238418578125000000.000000 71525573583984353280.000000 +6 0.050000 16383999744000000.000000 3932159969279997440.000000 +7 0.060000 1837574546257248.500000 367514917824838144.000000 +8 0.070000 288990429236596.312500 49541219354796968.000000 +9 0.080000 58207645654678.343750 8731147992610928.000000 +10 0.090000 14162817119182.900391 1888376117671434.750000 +11 0.100000 3999996000000.000000 479999760000000.500000 +12 0.110000 1274521012945.708496 139038779115662.093750 +13 0.120000 448625279546.553955 44862594934250.781250 +14 0.130000 171687100967.122345 15848078337188.726562 +15 0.140000 70553781072.250778 6047489716531.549805 +16 0.150000 30829035351.054977 2466336874723.629883 +17 0.160000 14210616296.622902 1065805162943.433594 +18 0.170000 6865346349.879549 484618532348.129211 +19 0.180000 3457603256.036191 230510803894.961182 +20 0.190000 1807158928.004511 114139038296.617722 +21 0.200000 976499999.999998 58591874999.999847 +22 0.210000 543739902.726732 31072184111.878654 +23 0.220000 311127628.299641 16971560078.724821 +24 0.230000 182499493.379421 9522417580.006592 +25 0.240000 109507052.064558 5475875881.316449 +26 0.250000 67092480.000000 3220832255.999991 +27 0.260000 41903049.941880 1934285732.237306 +28 0.270000 26639528.522336 1184208483.196407 +29 0.280000 17216873.260370 738043867.822060 +30 0.290000 11298625.429098 467668459.533016 +31 0.300000 7521218.724186 300958488.336427 +32 0.310000 5073808.319410 196492716.046068 +33 0.320000 3465721.661655 130034411.505164 +34 0.330000 2395143.138865 87152427.788625 +35 0.340000 1673561.082347 59112555.692539 +36 0.350000 1181528.973318 40546867.041137 +37 0.360000 842332.557402 28108378.157278 +38 0.370000 606071.119890 19681641.931764 +39 0.380000 439893.177446 13912339.662092 +40 0.390000 321924.360071 9922853.684245 +41 0.400000 237442.016602 7137908.935547 +42 0.410000 176435.450812 5176287.635225 +43 0.420000 132031.660059 3782743.515595 +44 0.430000 99468.250044 2784687.558254 +45 0.440000 75416.262744 2064324.130372 +46 0.450000 57529.220585 1540535.337797 +47 0.460000 44139.942254 1156983.644674 +48 0.470000 34054.846645 874222.695500 +49 0.480000 26413.181465 664417.646696 +50 0.490000 20589.881497 507780.654581 +51 0.500000 16128.000000 390144.000000 +52 0.510000 12691.351515 301294.396513 +53 0.520000 10031.077542 233820.872331 +54 0.530000 7961.876154 182311.949517 +55 0.540000 6344.988397 142792.224654 +56 0.550000 5075.941991 112324.247003 +57 0.560000 4075.667156 88725.341557 +58 0.570000 3284.018178 70364.910655 +59 0.580000 2655.022026 56018.454503 +60 0.590000 2153.374227 44761.819610 +61 0.600000 1751.840750 35894.153820 +62 0.610000 1429.321668 28881.467437 +63 0.620000 1169.400839 23315.070198 +64 0.630000 959.254371 18880.806522 +65 0.640000 788.825286 15336.170940 +66 0.650000 650.196650 12493.203783 +67 0.660000 537.113366 10205.647944 +68 0.670000 444.615844 8359.261950 +69 0.680000 368.758212 6864.481939 +70 0.690000 306.390715 5650.839586 +71 0.700000 254.991024 4662.698464 +72 0.710000 212.532986 3855.984565 +73 0.720000 177.384120 3195.669530 +74 0.730000 148.225307 2653.826099 +75 0.740000 123.987627 2208.120224 +76 0.750000 103.802544 1840.637693 +77 0.760000 86.962472 1536.967937 +78 0.770000 72.889471 1285.486272 +79 0.780000 61.110325 1076.789779 +80 0.790000 51.236635 903.252555 +81 0.800000 42.948872 758.673996 +82 0.810000 35.983576 637.999825 +83 0.820000 30.123043 537.100183 +84 0.830000 25.186999 452.592612 +85 0.840000 21.025860 381.700456 +86 0.850000 17.515264 322.139305 +87 0.860000 14.551619 272.025666 +88 0.870000 12.048476 229.803356 +89 0.880000 9.933566 194.184004 +90 0.890000 8.146368 164.098852 +91 0.900000 6.636119 138.659624 +92 0.910000 5.360169 117.126674 +93 0.920000 4.282632 98.883003 +94 0.930000 3.373272 83.413022 +95 0.940000 2.606573 70.285155 +96 0.950000 1.960975 59.137553 +97 0.960000 1.418239 49.666347 +98 0.970000 0.962916 41.615965 +99 0.980000 0.581905 34.771137 +100 0.990000 0.264083 28.950277 +101 1.000000 -0.000000 24.000000 +102 1.010000 -0.218384 19.790571 +103 1.020000 -0.397913 16.212117 +104 1.030000 -0.544418 13.171468 +105 1.040000 -0.662870 10.589529 +106 1.050000 -0.757512 8.399073 +107 1.060000 -0.831965 6.542902 +108 1.070000 -0.889321 4.972300 +109 1.080000 -0.932223 3.645731 +110 1.090000 -0.962930 2.527753 +111 1.100000 -0.983372 1.588095 +112 1.110000 -0.995200 0.800882 +113 1.120000 -0.999824 0.143980 +114 1.130000 -0.999714 -0.075900 +115 1.140000 -0.998452 -0.176443 +116 1.150000 -0.996186 -0.276630 +117 1.160000 -0.992921 -0.376260 +118 1.170000 -0.988664 -0.475132 +119 1.180000 -0.983422 -0.573048 +120 1.190000 -0.977206 -0.669809 +121 1.200000 -0.970030 -0.765221 +122 1.210000 -0.961907 -0.859093 +123 1.220000 -0.952854 -0.951234 +124 1.230000 -0.942889 -1.041460 +125 1.240000 -0.932032 -1.129588 +126 1.250000 -0.920305 -1.215441 +127 1.260000 -0.907731 -1.298847 +128 1.270000 -0.894336 -1.379637 +129 1.280000 -0.880148 -1.457649 +130 1.290000 -0.865193 -1.532725 +131 1.300000 -0.849503 -1.604714 +132 1.310000 -0.833110 -1.673472 +133 1.320000 -0.816045 -1.738859 +134 1.330000 -0.798344 -1.800745 +135 1.340000 -0.780042 -1.859004 +136 1.350000 -0.761177 -1.913520 +137 1.360000 -0.741785 -1.964182 +138 1.370000 -0.721906 -2.010888 +139 1.380000 -0.701581 -2.053545 +140 1.390000 -0.680849 -2.092066 +141 1.400000 -0.659753 -2.126374 +142 1.410000 -0.638336 -2.156399 +143 1.420000 -0.616640 -2.182082 +144 1.430000 -0.594709 -2.203371 +145 1.440000 -0.572587 -2.220222 +146 1.450000 -0.550319 -2.232602 +147 1.460000 -0.527950 -2.240486 +148 1.470000 -0.505525 -2.243858 +149 1.480000 -0.483088 -2.242711 +150 1.490000 -0.460686 -2.237047 +151 1.500000 -0.438362 -2.226879 +152 1.510000 -0.416163 -2.212225 +153 1.520000 -0.394133 -2.193117 +154 1.530000 -0.372315 -2.169592 +155 1.540000 -0.350755 -2.141698 +156 1.550000 -0.329496 -2.109490 +157 1.560000 -0.308580 -2.073035 +158 1.570000 -0.288049 -2.032404 +159 1.580000 -0.267945 -1.987681 +160 1.590000 -0.248309 -1.938954 +161 1.600000 -0.229179 -1.886323 +162 1.610000 -0.210595 -1.829893 +163 1.620000 -0.192594 -1.769778 +164 1.630000 -0.175211 -1.706099 +165 1.640000 -0.158483 -1.638984 +166 1.650000 -0.142443 -1.568568 +167 1.660000 -0.127122 -1.494993 +168 1.670000 -0.112553 -1.418408 +169 1.680000 -0.098764 -1.338966 +170 1.690000 -0.085782 -1.256828 +171 1.700000 -0.073635 -1.172158 +172 1.710000 -0.062347 -1.085128 +173 1.720000 -0.051940 -0.995913 +174 1.730000 -0.042436 -0.904692 +175 1.740000 -0.033852 -0.811649 +176 1.750000 -0.026208 -0.716971 +177 1.760000 -0.019518 -0.620850 +178 1.770000 -0.013795 -0.523479 +179 1.780000 -0.009052 -0.425053 +180 1.790000 -0.005297 -0.325771 +181 1.800000 -0.002538 -0.225833 +182 1.810000 -0.000782 -0.125440 +183 1.820000 -0.000031 -0.024795 +184 1.830000 0.000000 0.000000 +185 1.840000 0.000000 0.000000 +186 1.850000 0.000000 0.000000 +187 1.860000 0.000000 0.000000 +188 1.870000 0.000000 0.000000 +189 1.880000 0.000000 0.000000 +190 1.890000 0.000000 0.000000 +191 1.900000 0.000000 0.000000 +192 1.910000 0.000000 0.000000 +193 1.920000 0.000000 0.000000 +194 1.930000 0.000000 0.000000 +195 1.940000 0.000000 0.000000 +196 1.950000 0.000000 0.000000 +197 1.960000 0.000000 0.000000 +198 1.970000 0.000000 0.000000 +199 1.980000 0.000000 0.000000 +200 1.990000 0.000000 0.000000 +201 2.000000 0.000000 0.000000 +202 2.010000 0.000000 0.000000 +203 2.020000 0.000000 0.000000 +204 2.030000 0.000000 0.000000 +205 2.040000 0.000000 0.000000 +206 2.050000 0.000000 0.000000 +207 2.060000 0.000000 0.000000 +208 2.070000 0.000000 0.000000 +209 2.080000 0.000000 0.000000 +210 2.090000 0.000000 0.000000 +211 2.100000 0.000000 0.000000 +212 2.110000 0.000000 0.000000 +213 2.120000 0.000000 0.000000 +214 2.130000 0.000000 0.000000 +215 2.140000 0.000000 0.000000 +216 2.150000 0.000000 0.000000 +217 2.160000 0.000000 0.000000 +218 2.170000 0.000000 0.000000 +219 2.180000 0.000000 0.000000 +220 2.190000 0.000000 0.000000 +221 2.200000 0.000000 0.000000 +222 2.210000 0.000000 0.000000 +223 2.220000 0.000000 0.000000 +224 2.230000 0.000000 0.000000 +225 2.240000 0.000000 0.000000 +226 2.250000 0.000000 0.000000 +227 2.260000 0.000000 0.000000 +228 2.270000 0.000000 0.000000 +229 2.280000 0.000000 0.000000 +230 2.290000 0.000000 0.000000 +231 2.300000 0.000000 0.000000 +232 2.310000 0.000000 0.000000 +233 2.320000 0.000000 0.000000 +234 2.330000 0.000000 0.000000 +235 2.340000 0.000000 0.000000 +236 2.350000 0.000000 0.000000 +237 2.360000 0.000000 0.000000 +238 2.370000 0.000000 0.000000 +239 2.380000 0.000000 0.000000 +240 2.390000 0.000000 0.000000 +241 2.400000 0.000000 0.000000 +242 2.410000 0.000000 0.000000 +243 2.420000 0.000000 0.000000 +244 2.430000 0.000000 0.000000 +245 2.440000 0.000000 0.000000 +246 2.450000 0.000000 0.000000 +247 2.460000 0.000000 0.000000 +248 2.470000 0.000000 0.000000 +249 2.480000 0.000000 0.000000 +250 2.490000 0.000000 0.000000 +251 2.500000 0.000000 0.000000 +252 2.510000 0.000000 0.000000 +253 2.520000 0.000000 0.000000 +254 2.530000 0.000000 0.000000 +255 2.540000 0.000000 0.000000 +256 2.550000 0.000000 0.000000 +257 2.560000 0.000000 0.000000 +258 2.570000 0.000000 0.000000 +259 2.580000 0.000000 0.000000 +260 2.590000 0.000000 0.000000 +261 2.600000 0.000000 0.000000 +262 2.610000 0.000000 0.000000 +263 2.620000 0.000000 0.000000 +264 2.630000 0.000000 0.000000 +265 2.640000 0.000000 0.000000 +266 2.650000 0.000000 0.000000 +267 2.660000 0.000000 0.000000 +268 2.670000 0.000000 0.000000 +269 2.680000 0.000000 0.000000 +270 2.690000 0.000000 0.000000 +271 2.700000 0.000000 0.000000 +272 2.710000 0.000000 0.000000 +273 2.720000 0.000000 0.000000 +274 2.730000 0.000000 0.000000 +275 2.740000 0.000000 0.000000 +276 2.750000 0.000000 0.000000 +277 2.760000 0.000000 0.000000 +278 2.770000 0.000000 0.000000 +279 2.780000 0.000000 0.000000 +280 2.790000 0.000000 0.000000 +281 2.800000 0.000000 0.000000 +282 2.810000 0.000000 0.000000 +283 2.820000 0.000000 0.000000 +284 2.830000 0.000000 0.000000 +285 2.840000 0.000000 0.000000 +286 2.850000 0.000000 0.000000 +287 2.860000 0.000000 0.000000 +288 2.870000 0.000000 0.000000 +289 2.880000 0.000000 0.000000 +290 2.890000 0.000000 0.000000 +291 2.900000 0.000000 0.000000 +292 2.910000 0.000000 0.000000 +293 2.920000 0.000000 0.000000 +294 2.930000 0.000000 0.000000 +295 2.940000 0.000000 0.000000 +296 2.950000 0.000000 0.000000 +297 2.960000 0.000000 0.000000 +298 2.970000 0.000000 0.000000 +299 2.980000 0.000000 0.000000 +300 2.990000 0.000000 0.000000 +301 3.000000 0.000000 0.000000 + + +TAIL_TAIL_Wc_0.8 +N 301 R 0.000001 3.000000 + +1 0.000001 0.000000 0.000000 +2 0.010000 3999999999995999707725824.000000 4799999999997598070678224896.000000 +3 0.020000 976562499937500004352.000000 585937499981249777762304.000000 +4 0.030000 7526705687148720128.000000 3010682275956881096704.000000 +5 0.040000 238418578125000000.000000 71525573583984353280.000000 +6 0.050000 16383999744000000.000000 3932159969279997440.000000 +7 0.060000 1837574546257248.500000 367514917824838144.000000 +8 0.070000 288990429236596.312500 49541219354796968.000000 +9 0.080000 58207645654678.343750 8731147992610928.000000 +10 0.090000 14162817119182.900391 1888376117671434.750000 +11 0.100000 3999996000000.000000 479999760000000.500000 +12 0.110000 1274521012945.708496 139038779115662.093750 +13 0.120000 448625279546.553955 44862594934250.781250 +14 0.130000 171687100967.122345 15848078337188.726562 +15 0.140000 70553781072.250778 6047489716531.549805 +16 0.150000 30829035351.054977 2466336874723.629883 +17 0.160000 14210616296.622902 1065805162943.433594 +18 0.170000 6865346349.879549 484618532348.129211 +19 0.180000 3457603256.036191 230510803894.961182 +20 0.190000 1807158928.004511 114139038296.617722 +21 0.200000 976499999.999998 58591874999.999847 +22 0.210000 543739902.726732 31072184111.878654 +23 0.220000 311127628.299641 16971560078.724821 +24 0.230000 182499493.379421 9522417580.006592 +25 0.240000 109507052.064558 5475875881.316449 +26 0.250000 67092480.000000 3220832255.999991 +27 0.260000 41903049.941880 1934285732.237306 +28 0.270000 26639528.522336 1184208483.196407 +29 0.280000 17216873.260370 738043867.822060 +30 0.290000 11298625.429098 467668459.533016 +31 0.300000 7521218.724186 300958488.336427 +32 0.310000 5073808.319410 196492716.046068 +33 0.320000 3465721.661655 130034411.505164 +34 0.330000 2395143.138865 87152427.788625 +35 0.340000 1673561.082347 59112555.692539 +36 0.350000 1181528.973318 40546867.041137 +37 0.360000 842332.557402 28108378.157278 +38 0.370000 606071.119890 19681641.931764 +39 0.380000 439893.177446 13912339.662092 +40 0.390000 321924.360071 9922853.684245 +41 0.400000 237442.016602 7137908.935547 +42 0.410000 176435.450812 5176287.635225 +43 0.420000 132031.660059 3782743.515595 +44 0.430000 99468.250044 2784687.558254 +45 0.440000 75416.262744 2064324.130372 +46 0.450000 57529.220585 1540535.337797 +47 0.460000 44139.942254 1156983.644674 +48 0.470000 34054.846645 874222.695500 +49 0.480000 26413.181465 664417.646696 +50 0.490000 20589.881497 507780.654581 +51 0.500000 16128.000000 390144.000000 +52 0.510000 12691.351515 301294.396513 +53 0.520000 10031.077542 233820.872331 +54 0.530000 7961.876154 182311.949517 +55 0.540000 6344.988397 142792.224654 +56 0.550000 5075.941991 112324.247003 +57 0.560000 4075.667156 88725.341557 +58 0.570000 3284.018178 70364.910655 +59 0.580000 2655.022026 56018.454503 +60 0.590000 2153.374227 44761.819610 +61 0.600000 1751.840750 35894.153820 +62 0.610000 1429.321668 28881.467437 +63 0.620000 1169.400839 23315.070198 +64 0.630000 959.254371 18880.806522 +65 0.640000 788.825286 15336.170940 +66 0.650000 650.196650 12493.203783 +67 0.660000 537.113366 10205.647944 +68 0.670000 444.615844 8359.261950 +69 0.680000 368.758212 6864.481939 +70 0.690000 306.390715 5650.839586 +71 0.700000 254.991024 4662.698464 +72 0.710000 212.532986 3855.984565 +73 0.720000 177.384120 3195.669530 +74 0.730000 148.225307 2653.826099 +75 0.740000 123.987627 2208.120224 +76 0.750000 103.802544 1840.637693 +77 0.760000 86.962472 1536.967937 +78 0.770000 72.889471 1285.486272 +79 0.780000 61.110325 1076.789779 +80 0.790000 51.236635 903.252555 +81 0.800000 42.948872 758.673996 +82 0.810000 35.983576 637.999825 +83 0.820000 30.123043 537.100183 +84 0.830000 25.186999 452.592612 +85 0.840000 21.025860 381.700456 +86 0.850000 17.515264 322.139305 +87 0.860000 14.551619 272.025666 +88 0.870000 12.048476 229.803356 +89 0.880000 9.933566 194.184004 +90 0.890000 8.146368 164.098852 +91 0.900000 6.636119 138.659624 +92 0.910000 5.360169 117.126674 +93 0.920000 4.282632 98.883003 +94 0.930000 3.373272 83.413022 +95 0.940000 2.606573 70.285155 +96 0.950000 1.960975 59.137553 +97 0.960000 1.418239 49.666347 +98 0.970000 0.962916 41.615965 +99 0.980000 0.581905 34.771137 +100 0.990000 0.264083 28.950277 +101 1.000000 -0.000000 24.000000 +102 1.010000 -0.218384 19.790571 +103 1.020000 -0.397913 16.212117 +104 1.030000 -0.544418 13.171468 +105 1.040000 -0.662870 10.589529 +106 1.050000 -0.757512 8.399073 +107 1.060000 -0.831965 6.542902 +108 1.070000 -0.889321 4.972300 +109 1.080000 -0.932223 3.645731 +110 1.090000 -0.962930 2.527753 +111 1.100000 -0.983372 1.588095 +112 1.110000 -0.995200 0.800882 +113 1.120000 -0.999824 0.143980 +114 1.130000 -0.999781 -0.058114 +115 1.140000 -0.998815 -0.135122 +116 1.150000 -0.997079 -0.211921 +117 1.160000 -0.994577 -0.288394 +118 1.170000 -0.991313 -0.364422 +119 1.180000 -0.987291 -0.439888 +120 1.190000 -0.982517 -0.514676 +121 1.200000 -0.977000 -0.588671 +122 1.210000 -0.970747 -0.661757 +123 1.220000 -0.963768 -0.733823 +124 1.230000 -0.956074 -0.804758 +125 1.240000 -0.947677 -0.874452 +126 1.250000 -0.938590 -0.942798 +127 1.260000 -0.928826 -1.009689 +128 1.270000 -0.918401 -1.075024 +129 1.280000 -0.907331 -1.138702 +130 1.290000 -0.895633 -1.200623 +131 1.300000 -0.883325 -1.260693 +132 1.310000 -0.870426 -1.318820 +133 1.320000 -0.856955 -1.374913 +134 1.330000 -0.842934 -1.428885 +135 1.340000 -0.828385 -1.480655 +136 1.350000 -0.813329 -1.530141 +137 1.360000 -0.797790 -1.577269 +138 1.370000 -0.781792 -1.621964 +139 1.380000 -0.765359 -1.664158 +140 1.390000 -0.748517 -1.703786 +141 1.400000 -0.731292 -1.740787 +142 1.410000 -0.713710 -1.775104 +143 1.420000 -0.695799 -1.806684 +144 1.430000 -0.677586 -1.835478 +145 1.440000 -0.659099 -1.861442 +146 1.450000 -0.640367 -1.884535 +147 1.460000 -0.621418 -1.904723 +148 1.470000 -0.602282 -1.921974 +149 1.480000 -0.582988 -1.936261 +150 1.490000 -0.563567 -1.947563 +151 1.500000 -0.544047 -1.955862 +152 1.510000 -0.524459 -1.961145 +153 1.520000 -0.504834 -1.963404 +154 1.530000 -0.485201 -1.962635 +155 1.540000 -0.465592 -1.958841 +156 1.550000 -0.446035 -1.952026 +157 1.560000 -0.426561 -1.942201 +158 1.570000 -0.407201 -1.929381 +159 1.580000 -0.387983 -1.913586 +160 1.590000 -0.368939 -1.894841 +161 1.600000 -0.350096 -1.873174 +162 1.610000 -0.331485 -1.848619 +163 1.620000 -0.313133 -1.821213 +164 1.630000 -0.295070 -1.790999 +165 1.640000 -0.277323 -1.758024 +166 1.650000 -0.259919 -1.722338 +167 1.660000 -0.242885 -1.683996 +168 1.670000 -0.226247 -1.643057 +169 1.680000 -0.210032 -1.599585 +170 1.690000 -0.194264 -1.553647 +171 1.700000 -0.178967 -1.505313 +172 1.710000 -0.164165 -1.454658 +173 1.720000 -0.149881 -1.401759 +174 1.730000 -0.136137 -1.346700 +175 1.740000 -0.122954 -1.289564 +176 1.750000 -0.110353 -1.230439 +177 1.760000 -0.098352 -1.169418 +178 1.770000 -0.086970 -1.106593 +179 1.780000 -0.076226 -1.042062 +180 1.790000 -0.066134 -0.975924 +181 1.800000 -0.056712 -0.908281 +182 1.810000 -0.047973 -0.839238 +183 1.820000 -0.039932 -0.768901 +184 1.830000 -0.032599 -0.697378 +185 1.840000 -0.025988 -0.624780 +186 1.850000 -0.020107 -0.551218 +187 1.860000 -0.014966 -0.476807 +188 1.870000 -0.010573 -0.401660 +189 1.880000 -0.006935 -0.325894 +190 1.890000 -0.004057 -0.249625 +191 1.900000 -0.001944 -0.172972 +192 1.910000 -0.000599 -0.096052 +193 1.920000 -0.000023 -0.018984 +194 1.930000 0.000000 0.000000 +195 1.940000 0.000000 0.000000 +196 1.950000 0.000000 0.000000 +197 1.960000 0.000000 0.000000 +198 1.970000 0.000000 0.000000 +199 1.980000 0.000000 0.000000 +200 1.990000 0.000000 0.000000 +201 2.000000 0.000000 0.000000 +202 2.010000 0.000000 0.000000 +203 2.020000 0.000000 0.000000 +204 2.030000 0.000000 0.000000 +205 2.040000 0.000000 0.000000 +206 2.050000 0.000000 0.000000 +207 2.060000 0.000000 0.000000 +208 2.070000 0.000000 0.000000 +209 2.080000 0.000000 0.000000 +210 2.090000 0.000000 0.000000 +211 2.100000 0.000000 0.000000 +212 2.110000 0.000000 0.000000 +213 2.120000 0.000000 0.000000 +214 2.130000 0.000000 0.000000 +215 2.140000 0.000000 0.000000 +216 2.150000 0.000000 0.000000 +217 2.160000 0.000000 0.000000 +218 2.170000 0.000000 0.000000 +219 2.180000 0.000000 0.000000 +220 2.190000 0.000000 0.000000 +221 2.200000 0.000000 0.000000 +222 2.210000 0.000000 0.000000 +223 2.220000 0.000000 0.000000 +224 2.230000 0.000000 0.000000 +225 2.240000 0.000000 0.000000 +226 2.250000 0.000000 0.000000 +227 2.260000 0.000000 0.000000 +228 2.270000 0.000000 0.000000 +229 2.280000 0.000000 0.000000 +230 2.290000 0.000000 0.000000 +231 2.300000 0.000000 0.000000 +232 2.310000 0.000000 0.000000 +233 2.320000 0.000000 0.000000 +234 2.330000 0.000000 0.000000 +235 2.340000 0.000000 0.000000 +236 2.350000 0.000000 0.000000 +237 2.360000 0.000000 0.000000 +238 2.370000 0.000000 0.000000 +239 2.380000 0.000000 0.000000 +240 2.390000 0.000000 0.000000 +241 2.400000 0.000000 0.000000 +242 2.410000 0.000000 0.000000 +243 2.420000 0.000000 0.000000 +244 2.430000 0.000000 0.000000 +245 2.440000 0.000000 0.000000 +246 2.450000 0.000000 0.000000 +247 2.460000 0.000000 0.000000 +248 2.470000 0.000000 0.000000 +249 2.480000 0.000000 0.000000 +250 2.490000 0.000000 0.000000 +251 2.500000 0.000000 0.000000 +252 2.510000 0.000000 0.000000 +253 2.520000 0.000000 0.000000 +254 2.530000 0.000000 0.000000 +255 2.540000 0.000000 0.000000 +256 2.550000 0.000000 0.000000 +257 2.560000 0.000000 0.000000 +258 2.570000 0.000000 0.000000 +259 2.580000 0.000000 0.000000 +260 2.590000 0.000000 0.000000 +261 2.600000 0.000000 0.000000 +262 2.610000 0.000000 0.000000 +263 2.620000 0.000000 0.000000 +264 2.630000 0.000000 0.000000 +265 2.640000 0.000000 0.000000 +266 2.650000 0.000000 0.000000 +267 2.660000 0.000000 0.000000 +268 2.670000 0.000000 0.000000 +269 2.680000 0.000000 0.000000 +270 2.690000 0.000000 0.000000 +271 2.700000 0.000000 0.000000 +272 2.710000 0.000000 0.000000 +273 2.720000 0.000000 0.000000 +274 2.730000 0.000000 0.000000 +275 2.740000 0.000000 0.000000 +276 2.750000 0.000000 0.000000 +277 2.760000 0.000000 0.000000 +278 2.770000 0.000000 0.000000 +279 2.780000 0.000000 0.000000 +280 2.790000 0.000000 0.000000 +281 2.800000 0.000000 0.000000 +282 2.810000 0.000000 0.000000 +283 2.820000 0.000000 0.000000 +284 2.830000 0.000000 0.000000 +285 2.840000 0.000000 0.000000 +286 2.850000 0.000000 0.000000 +287 2.860000 0.000000 0.000000 +288 2.870000 0.000000 0.000000 +289 2.880000 0.000000 0.000000 +290 2.890000 0.000000 0.000000 +291 2.900000 0.000000 0.000000 +292 2.910000 0.000000 0.000000 +293 2.920000 0.000000 0.000000 +294 2.930000 0.000000 0.000000 +295 2.940000 0.000000 0.000000 +296 2.950000 0.000000 0.000000 +297 2.960000 0.000000 0.000000 +298 2.970000 0.000000 0.000000 +299 2.980000 0.000000 0.000000 +300 2.990000 0.000000 0.000000 +301 3.000000 0.000000 0.000000 + + +TAIL_TAIL_Wc_0.9 +N 301 R 0.000001 3.000000 + +1 0.000001 0.000000 0.000000 +2 0.010000 3999999999995999707725824.000000 4799999999997598070678224896.000000 +3 0.020000 976562499937500004352.000000 585937499981249777762304.000000 +4 0.030000 7526705687148720128.000000 3010682275956881096704.000000 +5 0.040000 238418578125000000.000000 71525573583984353280.000000 +6 0.050000 16383999744000000.000000 3932159969279997440.000000 +7 0.060000 1837574546257248.500000 367514917824838144.000000 +8 0.070000 288990429236596.312500 49541219354796968.000000 +9 0.080000 58207645654678.343750 8731147992610928.000000 +10 0.090000 14162817119182.900391 1888376117671434.750000 +11 0.100000 3999996000000.000000 479999760000000.500000 +12 0.110000 1274521012945.708496 139038779115662.093750 +13 0.120000 448625279546.553955 44862594934250.781250 +14 0.130000 171687100967.122345 15848078337188.726562 +15 0.140000 70553781072.250778 6047489716531.549805 +16 0.150000 30829035351.054977 2466336874723.629883 +17 0.160000 14210616296.622902 1065805162943.433594 +18 0.170000 6865346349.879549 484618532348.129211 +19 0.180000 3457603256.036191 230510803894.961182 +20 0.190000 1807158928.004511 114139038296.617722 +21 0.200000 976499999.999998 58591874999.999847 +22 0.210000 543739902.726732 31072184111.878654 +23 0.220000 311127628.299641 16971560078.724821 +24 0.230000 182499493.379421 9522417580.006592 +25 0.240000 109507052.064558 5475875881.316449 +26 0.250000 67092480.000000 3220832255.999991 +27 0.260000 41903049.941880 1934285732.237306 +28 0.270000 26639528.522336 1184208483.196407 +29 0.280000 17216873.260370 738043867.822060 +30 0.290000 11298625.429098 467668459.533016 +31 0.300000 7521218.724186 300958488.336427 +32 0.310000 5073808.319410 196492716.046068 +33 0.320000 3465721.661655 130034411.505164 +34 0.330000 2395143.138865 87152427.788625 +35 0.340000 1673561.082347 59112555.692539 +36 0.350000 1181528.973318 40546867.041137 +37 0.360000 842332.557402 28108378.157278 +38 0.370000 606071.119890 19681641.931764 +39 0.380000 439893.177446 13912339.662092 +40 0.390000 321924.360071 9922853.684245 +41 0.400000 237442.016602 7137908.935547 +42 0.410000 176435.450812 5176287.635225 +43 0.420000 132031.660059 3782743.515595 +44 0.430000 99468.250044 2784687.558254 +45 0.440000 75416.262744 2064324.130372 +46 0.450000 57529.220585 1540535.337797 +47 0.460000 44139.942254 1156983.644674 +48 0.470000 34054.846645 874222.695500 +49 0.480000 26413.181465 664417.646696 +50 0.490000 20589.881497 507780.654581 +51 0.500000 16128.000000 390144.000000 +52 0.510000 12691.351515 301294.396513 +53 0.520000 10031.077542 233820.872331 +54 0.530000 7961.876154 182311.949517 +55 0.540000 6344.988397 142792.224654 +56 0.550000 5075.941991 112324.247003 +57 0.560000 4075.667156 88725.341557 +58 0.570000 3284.018178 70364.910655 +59 0.580000 2655.022026 56018.454503 +60 0.590000 2153.374227 44761.819610 +61 0.600000 1751.840750 35894.153820 +62 0.610000 1429.321668 28881.467437 +63 0.620000 1169.400839 23315.070198 +64 0.630000 959.254371 18880.806522 +65 0.640000 788.825286 15336.170940 +66 0.650000 650.196650 12493.203783 +67 0.660000 537.113366 10205.647944 +68 0.670000 444.615844 8359.261950 +69 0.680000 368.758212 6864.481939 +70 0.690000 306.390715 5650.839586 +71 0.700000 254.991024 4662.698464 +72 0.710000 212.532986 3855.984565 +73 0.720000 177.384120 3195.669530 +74 0.730000 148.225307 2653.826099 +75 0.740000 123.987627 2208.120224 +76 0.750000 103.802544 1840.637693 +77 0.760000 86.962472 1536.967937 +78 0.770000 72.889471 1285.486272 +79 0.780000 61.110325 1076.789779 +80 0.790000 51.236635 903.252555 +81 0.800000 42.948872 758.673996 +82 0.810000 35.983576 637.999825 +83 0.820000 30.123043 537.100183 +84 0.830000 25.186999 452.592612 +85 0.840000 21.025860 381.700456 +86 0.850000 17.515264 322.139305 +87 0.860000 14.551619 272.025666 +88 0.870000 12.048476 229.803356 +89 0.880000 9.933566 194.184004 +90 0.890000 8.146368 164.098852 +91 0.900000 6.636119 138.659624 +92 0.910000 5.360169 117.126674 +93 0.920000 4.282632 98.883003 +94 0.930000 3.373272 83.413022 +95 0.940000 2.606573 70.285155 +96 0.950000 1.960975 59.137553 +97 0.960000 1.418239 49.666347 +98 0.970000 0.962916 41.615965 +99 0.980000 0.581905 34.771137 +100 0.990000 0.264083 28.950277 +101 1.000000 -0.000000 24.000000 +102 1.010000 -0.218384 19.790571 +103 1.020000 -0.397913 16.212117 +104 1.030000 -0.544418 13.171468 +105 1.040000 -0.662870 10.589529 +106 1.050000 -0.757512 8.399073 +107 1.060000 -0.831965 6.542902 +108 1.070000 -0.889321 4.972300 +109 1.080000 -0.932223 3.645731 +110 1.090000 -0.962930 2.527753 +111 1.100000 -0.983372 1.588095 +112 1.110000 -0.995200 0.800882 +113 1.120000 -0.999824 0.143980 +114 1.130000 -0.999827 -0.045919 +115 1.140000 -0.999063 -0.106781 +116 1.150000 -0.997692 -0.167513 +117 1.160000 -0.995714 -0.228040 +118 1.170000 -0.993132 -0.288290 +119 1.180000 -0.989949 -0.348189 +120 1.190000 -0.986169 -0.407664 +121 1.200000 -0.981798 -0.466642 +122 1.210000 -0.976839 -0.525051 +123 1.220000 -0.971299 -0.582821 +124 1.230000 -0.965185 -0.639880 +125 1.240000 -0.958504 -0.696160 +126 1.250000 -0.951264 -0.751592 +127 1.260000 -0.943475 -0.806108 +128 1.270000 -0.935145 -0.859642 +129 1.280000 -0.926285 -0.912129 +130 1.290000 -0.916906 -0.963505 +131 1.300000 -0.907019 -1.013706 +132 1.310000 -0.896636 -1.062673 +133 1.320000 -0.885770 -1.110344 +134 1.330000 -0.874434 -1.156663 +135 1.340000 -0.862642 -1.201573 +136 1.350000 -0.850407 -1.245019 +137 1.360000 -0.837746 -1.286948 +138 1.370000 -0.824674 -1.327309 +139 1.380000 -0.811205 -1.366053 +140 1.390000 -0.797358 -1.403132 +141 1.400000 -0.783149 -1.438502 +142 1.410000 -0.768594 -1.472120 +143 1.420000 -0.753712 -1.503944 +144 1.430000 -0.738521 -1.533936 +145 1.440000 -0.723040 -1.562058 +146 1.450000 -0.707286 -1.588278 +147 1.460000 -0.691281 -1.612562 +148 1.470000 -0.675042 -1.634882 +149 1.480000 -0.658590 -1.655210 +150 1.490000 -0.641944 -1.673522 +151 1.500000 -0.625126 -1.689794 +152 1.510000 -0.608155 -1.704008 +153 1.520000 -0.591053 -1.716146 +154 1.530000 -0.573839 -1.726192 +155 1.540000 -0.556536 -1.734136 +156 1.550000 -0.539164 -1.739967 +157 1.560000 -0.521744 -1.743678 +158 1.570000 -0.504297 -1.745265 +159 1.580000 -0.486845 -1.744725 +160 1.590000 -0.469410 -1.742060 +161 1.600000 -0.452011 -1.737272 +162 1.610000 -0.434671 -1.730368 +163 1.620000 -0.417411 -1.721355 +164 1.630000 -0.400251 -1.710245 +165 1.640000 -0.383213 -1.697052 +166 1.650000 -0.366317 -1.681791 +167 1.660000 -0.349584 -1.664481 +168 1.670000 -0.333034 -1.645143 +169 1.680000 -0.316688 -1.623800 +170 1.690000 -0.300565 -1.600480 +171 1.700000 -0.284685 -1.575209 +172 1.710000 -0.269067 -1.548019 +173 1.720000 -0.253731 -1.518943 +174 1.730000 -0.238694 -1.488017 +175 1.740000 -0.223976 -1.455278 +176 1.750000 -0.209595 -1.420765 +177 1.760000 -0.195567 -1.384522 +178 1.770000 -0.181910 -1.346592 +179 1.780000 -0.168640 -1.307021 +180 1.790000 -0.155775 -1.265858 +181 1.800000 -0.143328 -1.223153 +182 1.810000 -0.131317 -1.178957 +183 1.820000 -0.119754 -1.133325 +184 1.830000 -0.108655 -1.086312 +185 1.840000 -0.098032 -1.037976 +186 1.850000 -0.087899 -0.988375 +187 1.860000 -0.078269 -0.937570 +188 1.870000 -0.069152 -0.885622 +189 1.880000 -0.060560 -0.832596 +190 1.890000 -0.052503 -0.778555 +191 1.900000 -0.044992 -0.723566 +192 1.910000 -0.038035 -0.667695 +193 1.920000 -0.031641 -0.611011 +194 1.930000 -0.025817 -0.553582 +195 1.940000 -0.020571 -0.495479 +196 1.950000 -0.015910 -0.436772 +197 1.960000 -0.011838 -0.377533 +198 1.970000 -0.008360 -0.317834 +199 1.980000 -0.005482 -0.257747 +200 1.990000 -0.003207 -0.197347 +201 2.000000 -0.001536 -0.136706 +202 2.010000 -0.000473 -0.075899 +203 2.020000 -0.000018 -0.014999 +204 2.030000 0.000000 0.000000 +205 2.040000 0.000000 0.000000 +206 2.050000 0.000000 0.000000 +207 2.060000 0.000000 0.000000 +208 2.070000 0.000000 0.000000 +209 2.080000 0.000000 0.000000 +210 2.090000 0.000000 0.000000 +211 2.100000 0.000000 0.000000 +212 2.110000 0.000000 0.000000 +213 2.120000 0.000000 0.000000 +214 2.130000 0.000000 0.000000 +215 2.140000 0.000000 0.000000 +216 2.150000 0.000000 0.000000 +217 2.160000 0.000000 0.000000 +218 2.170000 0.000000 0.000000 +219 2.180000 0.000000 0.000000 +220 2.190000 0.000000 0.000000 +221 2.200000 0.000000 0.000000 +222 2.210000 0.000000 0.000000 +223 2.220000 0.000000 0.000000 +224 2.230000 0.000000 0.000000 +225 2.240000 0.000000 0.000000 +226 2.250000 0.000000 0.000000 +227 2.260000 0.000000 0.000000 +228 2.270000 0.000000 0.000000 +229 2.280000 0.000000 0.000000 +230 2.290000 0.000000 0.000000 +231 2.300000 0.000000 0.000000 +232 2.310000 0.000000 0.000000 +233 2.320000 0.000000 0.000000 +234 2.330000 0.000000 0.000000 +235 2.340000 0.000000 0.000000 +236 2.350000 0.000000 0.000000 +237 2.360000 0.000000 0.000000 +238 2.370000 0.000000 0.000000 +239 2.380000 0.000000 0.000000 +240 2.390000 0.000000 0.000000 +241 2.400000 0.000000 0.000000 +242 2.410000 0.000000 0.000000 +243 2.420000 0.000000 0.000000 +244 2.430000 0.000000 0.000000 +245 2.440000 0.000000 0.000000 +246 2.450000 0.000000 0.000000 +247 2.460000 0.000000 0.000000 +248 2.470000 0.000000 0.000000 +249 2.480000 0.000000 0.000000 +250 2.490000 0.000000 0.000000 +251 2.500000 0.000000 0.000000 +252 2.510000 0.000000 0.000000 +253 2.520000 0.000000 0.000000 +254 2.530000 0.000000 0.000000 +255 2.540000 0.000000 0.000000 +256 2.550000 0.000000 0.000000 +257 2.560000 0.000000 0.000000 +258 2.570000 0.000000 0.000000 +259 2.580000 0.000000 0.000000 +260 2.590000 0.000000 0.000000 +261 2.600000 0.000000 0.000000 +262 2.610000 0.000000 0.000000 +263 2.620000 0.000000 0.000000 +264 2.630000 0.000000 0.000000 +265 2.640000 0.000000 0.000000 +266 2.650000 0.000000 0.000000 +267 2.660000 0.000000 0.000000 +268 2.670000 0.000000 0.000000 +269 2.680000 0.000000 0.000000 +270 2.690000 0.000000 0.000000 +271 2.700000 0.000000 0.000000 +272 2.710000 0.000000 0.000000 +273 2.720000 0.000000 0.000000 +274 2.730000 0.000000 0.000000 +275 2.740000 0.000000 0.000000 +276 2.750000 0.000000 0.000000 +277 2.760000 0.000000 0.000000 +278 2.770000 0.000000 0.000000 +279 2.780000 0.000000 0.000000 +280 2.790000 0.000000 0.000000 +281 2.800000 0.000000 0.000000 +282 2.810000 0.000000 0.000000 +283 2.820000 0.000000 0.000000 +284 2.830000 0.000000 0.000000 +285 2.840000 0.000000 0.000000 +286 2.850000 0.000000 0.000000 +287 2.860000 0.000000 0.000000 +288 2.870000 0.000000 0.000000 +289 2.880000 0.000000 0.000000 +290 2.890000 0.000000 0.000000 +291 2.900000 0.000000 0.000000 +292 2.910000 0.000000 0.000000 +293 2.920000 0.000000 0.000000 +294 2.930000 0.000000 0.000000 +295 2.940000 0.000000 0.000000 +296 2.950000 0.000000 0.000000 +297 2.960000 0.000000 0.000000 +298 2.970000 0.000000 0.000000 +299 2.980000 0.000000 0.000000 +300 2.990000 0.000000 0.000000 +301 3.000000 0.000000 0.000000 + + +TAIL_TAIL_Wc_1.0 +N 301 R 0.000001 3.000000 + +1 0.000001 0.000000 0.000000 +2 0.010000 3999999999995999707725824.000000 4799999999997598070678224896.000000 +3 0.020000 976562499937500004352.000000 585937499981249777762304.000000 +4 0.030000 7526705687148720128.000000 3010682275956881096704.000000 +5 0.040000 238418578125000000.000000 71525573583984353280.000000 +6 0.050000 16383999744000000.000000 3932159969279997440.000000 +7 0.060000 1837574546257248.500000 367514917824838144.000000 +8 0.070000 288990429236596.312500 49541219354796968.000000 +9 0.080000 58207645654678.343750 8731147992610928.000000 +10 0.090000 14162817119182.900391 1888376117671434.750000 +11 0.100000 3999996000000.000000 479999760000000.500000 +12 0.110000 1274521012945.708496 139038779115662.093750 +13 0.120000 448625279546.553955 44862594934250.781250 +14 0.130000 171687100967.122345 15848078337188.726562 +15 0.140000 70553781072.250778 6047489716531.549805 +16 0.150000 30829035351.054977 2466336874723.629883 +17 0.160000 14210616296.622902 1065805162943.433594 +18 0.170000 6865346349.879549 484618532348.129211 +19 0.180000 3457603256.036191 230510803894.961182 +20 0.190000 1807158928.004511 114139038296.617722 +21 0.200000 976499999.999998 58591874999.999847 +22 0.210000 543739902.726732 31072184111.878654 +23 0.220000 311127628.299641 16971560078.724821 +24 0.230000 182499493.379421 9522417580.006592 +25 0.240000 109507052.064558 5475875881.316449 +26 0.250000 67092480.000000 3220832255.999991 +27 0.260000 41903049.941880 1934285732.237306 +28 0.270000 26639528.522336 1184208483.196407 +29 0.280000 17216873.260370 738043867.822060 +30 0.290000 11298625.429098 467668459.533016 +31 0.300000 7521218.724186 300958488.336427 +32 0.310000 5073808.319410 196492716.046068 +33 0.320000 3465721.661655 130034411.505164 +34 0.330000 2395143.138865 87152427.788625 +35 0.340000 1673561.082347 59112555.692539 +36 0.350000 1181528.973318 40546867.041137 +37 0.360000 842332.557402 28108378.157278 +38 0.370000 606071.119890 19681641.931764 +39 0.380000 439893.177446 13912339.662092 +40 0.390000 321924.360071 9922853.684245 +41 0.400000 237442.016602 7137908.935547 +42 0.410000 176435.450812 5176287.635225 +43 0.420000 132031.660059 3782743.515595 +44 0.430000 99468.250044 2784687.558254 +45 0.440000 75416.262744 2064324.130372 +46 0.450000 57529.220585 1540535.337797 +47 0.460000 44139.942254 1156983.644674 +48 0.470000 34054.846645 874222.695500 +49 0.480000 26413.181465 664417.646696 +50 0.490000 20589.881497 507780.654581 +51 0.500000 16128.000000 390144.000000 +52 0.510000 12691.351515 301294.396513 +53 0.520000 10031.077542 233820.872331 +54 0.530000 7961.876154 182311.949517 +55 0.540000 6344.988397 142792.224654 +56 0.550000 5075.941991 112324.247003 +57 0.560000 4075.667156 88725.341557 +58 0.570000 3284.018178 70364.910655 +59 0.580000 2655.022026 56018.454503 +60 0.590000 2153.374227 44761.819610 +61 0.600000 1751.840750 35894.153820 +62 0.610000 1429.321668 28881.467437 +63 0.620000 1169.400839 23315.070198 +64 0.630000 959.254371 18880.806522 +65 0.640000 788.825286 15336.170940 +66 0.650000 650.196650 12493.203783 +67 0.660000 537.113366 10205.647944 +68 0.670000 444.615844 8359.261950 +69 0.680000 368.758212 6864.481939 +70 0.690000 306.390715 5650.839586 +71 0.700000 254.991024 4662.698464 +72 0.710000 212.532986 3855.984565 +73 0.720000 177.384120 3195.669530 +74 0.730000 148.225307 2653.826099 +75 0.740000 123.987627 2208.120224 +76 0.750000 103.802544 1840.637693 +77 0.760000 86.962472 1536.967937 +78 0.770000 72.889471 1285.486272 +79 0.780000 61.110325 1076.789779 +80 0.790000 51.236635 903.252555 +81 0.800000 42.948872 758.673996 +82 0.810000 35.983576 637.999825 +83 0.820000 30.123043 537.100183 +84 0.830000 25.186999 452.592612 +85 0.840000 21.025860 381.700456 +86 0.850000 17.515264 322.139305 +87 0.860000 14.551619 272.025666 +88 0.870000 12.048476 229.803356 +89 0.880000 9.933566 194.184004 +90 0.890000 8.146368 164.098852 +91 0.900000 6.636119 138.659624 +92 0.910000 5.360169 117.126674 +93 0.920000 4.282632 98.883003 +94 0.930000 3.373272 83.413022 +95 0.940000 2.606573 70.285155 +96 0.950000 1.960975 59.137553 +97 0.960000 1.418239 49.666347 +98 0.970000 0.962916 41.615965 +99 0.980000 0.581905 34.771137 +100 0.990000 0.264083 28.950277 +101 1.000000 -0.000000 24.000000 +102 1.010000 -0.218384 19.790571 +103 1.020000 -0.397913 16.212117 +104 1.030000 -0.544418 13.171468 +105 1.040000 -0.662870 10.589529 +106 1.050000 -0.757512 8.399073 +107 1.060000 -0.831965 6.542902 +108 1.070000 -0.889321 4.972300 +109 1.080000 -0.932223 3.645731 +110 1.090000 -0.962930 2.527753 +111 1.100000 -0.983372 1.588095 +112 1.110000 -0.995200 0.800882 +113 1.120000 -0.999824 0.143980 +114 1.130000 -0.999860 -0.037195 +115 1.140000 -0.999241 -0.086503 +116 1.150000 -0.998130 -0.135725 +117 1.160000 -0.996527 -0.184813 +118 1.170000 -0.994434 -0.233719 +119 1.180000 -0.991854 -0.282395 +120 1.190000 -0.988787 -0.330791 +121 1.200000 -0.985239 -0.378862 +122 1.210000 -0.981211 -0.426558 +123 1.220000 -0.976709 -0.473833 +124 1.230000 -0.971736 -0.520641 +125 1.240000 -0.966298 -0.566935 +126 1.250000 -0.960399 -0.612669 +127 1.260000 -0.954047 -0.657799 +128 1.270000 -0.947246 -0.702280 +129 1.280000 -0.940003 -0.746067 +130 1.290000 -0.932327 -0.789119 +131 1.300000 -0.924224 -0.831391 +132 1.310000 -0.915702 -0.872843 +133 1.320000 -0.906770 -0.913434 +134 1.330000 -0.897436 -0.953123 +135 1.340000 -0.887710 -0.991872 +136 1.350000 -0.877602 -1.029642 +137 1.360000 -0.867121 -1.066395 +138 1.370000 -0.856277 -1.102096 +139 1.380000 -0.845082 -1.136710 +140 1.390000 -0.833547 -1.170202 +141 1.400000 -0.821682 -1.202539 +142 1.410000 -0.809500 -1.233689 +143 1.420000 -0.797013 -1.263622 +144 1.430000 -0.784232 -1.292307 +145 1.440000 -0.771171 -1.319717 +146 1.450000 -0.757842 -1.345825 +147 1.460000 -0.744259 -1.370605 +148 1.470000 -0.730434 -1.394032 +149 1.480000 -0.716383 -1.416083 +150 1.490000 -0.702117 -1.436737 +151 1.500000 -0.687653 -1.455973 +152 1.510000 -0.673003 -1.473772 +153 1.520000 -0.658182 -1.490117 +154 1.530000 -0.643205 -1.504991 +155 1.540000 -0.628087 -1.518380 +156 1.550000 -0.612843 -1.530270 +157 1.560000 -0.597487 -1.540650 +158 1.570000 -0.582035 -1.549510 +159 1.580000 -0.566502 -1.556841 +160 1.590000 -0.550903 -1.562635 +161 1.600000 -0.535254 -1.566887 +162 1.610000 -0.519570 -1.569593 +163 1.620000 -0.503867 -1.570749 +164 1.630000 -0.488161 -1.570356 +165 1.640000 -0.472465 -1.568413 +166 1.650000 -0.456797 -1.564922 +167 1.660000 -0.441172 -1.559886 +168 1.670000 -0.425605 -1.553311 +169 1.680000 -0.410111 -1.545204 +170 1.690000 -0.394706 -1.535571 +171 1.700000 -0.379405 -1.524423 +172 1.710000 -0.364222 -1.511770 +173 1.720000 -0.349174 -1.497626 +174 1.730000 -0.334275 -1.482003 +175 1.740000 -0.319539 -1.464918 +176 1.750000 -0.304981 -1.446388 +177 1.760000 -0.290616 -1.426430 +178 1.770000 -0.276457 -1.405064 +179 1.780000 -0.262519 -1.382311 +180 1.790000 -0.248816 -1.358195 +181 1.800000 -0.235360 -1.332738 +182 1.810000 -0.222165 -1.305965 +183 1.820000 -0.209245 -1.277904 +184 1.830000 -0.196611 -1.248582 +185 1.840000 -0.184277 -1.218028 +186 1.850000 -0.172255 -1.186271 +187 1.860000 -0.160556 -1.153344 +188 1.870000 -0.149192 -1.119279 +189 1.880000 -0.138174 -1.084109 +190 1.890000 -0.127513 -1.047869 +191 1.900000 -0.117220 -1.010595 +192 1.910000 -0.107305 -0.972323 +193 1.920000 -0.097777 -0.933093 +194 1.930000 -0.088646 -0.892941 +195 1.940000 -0.079921 -0.851908 +196 1.950000 -0.071610 -0.810034 +197 1.960000 -0.063723 -0.767361 +198 1.970000 -0.056266 -0.723931 +199 1.980000 -0.049247 -0.679786 +200 1.990000 -0.042672 -0.634970 +201 2.000000 -0.036549 -0.589528 +202 2.010000 -0.030884 -0.543504 +203 2.020000 -0.025681 -0.496943 +204 2.030000 -0.020946 -0.449892 +205 2.040000 -0.016685 -0.402397 +206 2.050000 -0.012900 -0.354505 +207 2.060000 -0.009596 -0.306263 +208 2.070000 -0.006776 -0.257719 +209 2.080000 -0.004442 -0.208921 +210 2.090000 -0.002598 -0.159916 +211 2.100000 -0.001244 -0.110754 +212 2.110000 -0.000383 -0.061482 +213 2.120000 -0.000015 -0.012150 +214 2.130000 0.000000 0.000000 +215 2.140000 0.000000 0.000000 +216 2.150000 0.000000 0.000000 +217 2.160000 0.000000 0.000000 +218 2.170000 0.000000 0.000000 +219 2.180000 0.000000 0.000000 +220 2.190000 0.000000 0.000000 +221 2.200000 0.000000 0.000000 +222 2.210000 0.000000 0.000000 +223 2.220000 0.000000 0.000000 +224 2.230000 0.000000 0.000000 +225 2.240000 0.000000 0.000000 +226 2.250000 0.000000 0.000000 +227 2.260000 0.000000 0.000000 +228 2.270000 0.000000 0.000000 +229 2.280000 0.000000 0.000000 +230 2.290000 0.000000 0.000000 +231 2.300000 0.000000 0.000000 +232 2.310000 0.000000 0.000000 +233 2.320000 0.000000 0.000000 +234 2.330000 0.000000 0.000000 +235 2.340000 0.000000 0.000000 +236 2.350000 0.000000 0.000000 +237 2.360000 0.000000 0.000000 +238 2.370000 0.000000 0.000000 +239 2.380000 0.000000 0.000000 +240 2.390000 0.000000 0.000000 +241 2.400000 0.000000 0.000000 +242 2.410000 0.000000 0.000000 +243 2.420000 0.000000 0.000000 +244 2.430000 0.000000 0.000000 +245 2.440000 0.000000 0.000000 +246 2.450000 0.000000 0.000000 +247 2.460000 0.000000 0.000000 +248 2.470000 0.000000 0.000000 +249 2.480000 0.000000 0.000000 +250 2.490000 0.000000 0.000000 +251 2.500000 0.000000 0.000000 +252 2.510000 0.000000 0.000000 +253 2.520000 0.000000 0.000000 +254 2.530000 0.000000 0.000000 +255 2.540000 0.000000 0.000000 +256 2.550000 0.000000 0.000000 +257 2.560000 0.000000 0.000000 +258 2.570000 0.000000 0.000000 +259 2.580000 0.000000 0.000000 +260 2.590000 0.000000 0.000000 +261 2.600000 0.000000 0.000000 +262 2.610000 0.000000 0.000000 +263 2.620000 0.000000 0.000000 +264 2.630000 0.000000 0.000000 +265 2.640000 0.000000 0.000000 +266 2.650000 0.000000 0.000000 +267 2.660000 0.000000 0.000000 +268 2.670000 0.000000 0.000000 +269 2.680000 0.000000 0.000000 +270 2.690000 0.000000 0.000000 +271 2.700000 0.000000 0.000000 +272 2.710000 0.000000 0.000000 +273 2.720000 0.000000 0.000000 +274 2.730000 0.000000 0.000000 +275 2.740000 0.000000 0.000000 +276 2.750000 0.000000 0.000000 +277 2.760000 0.000000 0.000000 +278 2.770000 0.000000 0.000000 +279 2.780000 0.000000 0.000000 +280 2.790000 0.000000 0.000000 +281 2.800000 0.000000 0.000000 +282 2.810000 0.000000 0.000000 +283 2.820000 0.000000 0.000000 +284 2.830000 0.000000 0.000000 +285 2.840000 0.000000 0.000000 +286 2.850000 0.000000 0.000000 +287 2.860000 0.000000 0.000000 +288 2.870000 0.000000 0.000000 +289 2.880000 0.000000 0.000000 +290 2.890000 0.000000 0.000000 +291 2.900000 0.000000 0.000000 +292 2.910000 0.000000 0.000000 +293 2.920000 0.000000 0.000000 +294 2.930000 0.000000 0.000000 +295 2.940000 0.000000 0.000000 +296 2.950000 0.000000 0.000000 +297 2.960000 0.000000 0.000000 +298 2.970000 0.000000 0.000000 +299 2.980000 0.000000 0.000000 +300 2.990000 0.000000 0.000000 +301 3.000000 0.000000 0.000000 + + +TAIL_TAIL_Wc_1.1 +N 301 R 0.000001 3.000000 + +1 0.000001 0.000000 0.000000 +2 0.010000 3999999999995999707725824.000000 4799999999997598070678224896.000000 +3 0.020000 976562499937500004352.000000 585937499981249777762304.000000 +4 0.030000 7526705687148720128.000000 3010682275956881096704.000000 +5 0.040000 238418578125000000.000000 71525573583984353280.000000 +6 0.050000 16383999744000000.000000 3932159969279997440.000000 +7 0.060000 1837574546257248.500000 367514917824838144.000000 +8 0.070000 288990429236596.312500 49541219354796968.000000 +9 0.080000 58207645654678.343750 8731147992610928.000000 +10 0.090000 14162817119182.900391 1888376117671434.750000 +11 0.100000 3999996000000.000000 479999760000000.500000 +12 0.110000 1274521012945.708496 139038779115662.093750 +13 0.120000 448625279546.553955 44862594934250.781250 +14 0.130000 171687100967.122345 15848078337188.726562 +15 0.140000 70553781072.250778 6047489716531.549805 +16 0.150000 30829035351.054977 2466336874723.629883 +17 0.160000 14210616296.622902 1065805162943.433594 +18 0.170000 6865346349.879549 484618532348.129211 +19 0.180000 3457603256.036191 230510803894.961182 +20 0.190000 1807158928.004511 114139038296.617722 +21 0.200000 976499999.999998 58591874999.999847 +22 0.210000 543739902.726732 31072184111.878654 +23 0.220000 311127628.299641 16971560078.724821 +24 0.230000 182499493.379421 9522417580.006592 +25 0.240000 109507052.064558 5475875881.316449 +26 0.250000 67092480.000000 3220832255.999991 +27 0.260000 41903049.941880 1934285732.237306 +28 0.270000 26639528.522336 1184208483.196407 +29 0.280000 17216873.260370 738043867.822060 +30 0.290000 11298625.429098 467668459.533016 +31 0.300000 7521218.724186 300958488.336427 +32 0.310000 5073808.319410 196492716.046068 +33 0.320000 3465721.661655 130034411.505164 +34 0.330000 2395143.138865 87152427.788625 +35 0.340000 1673561.082347 59112555.692539 +36 0.350000 1181528.973318 40546867.041137 +37 0.360000 842332.557402 28108378.157278 +38 0.370000 606071.119890 19681641.931764 +39 0.380000 439893.177446 13912339.662092 +40 0.390000 321924.360071 9922853.684245 +41 0.400000 237442.016602 7137908.935547 +42 0.410000 176435.450812 5176287.635225 +43 0.420000 132031.660059 3782743.515595 +44 0.430000 99468.250044 2784687.558254 +45 0.440000 75416.262744 2064324.130372 +46 0.450000 57529.220585 1540535.337797 +47 0.460000 44139.942254 1156983.644674 +48 0.470000 34054.846645 874222.695500 +49 0.480000 26413.181465 664417.646696 +50 0.490000 20589.881497 507780.654581 +51 0.500000 16128.000000 390144.000000 +52 0.510000 12691.351515 301294.396513 +53 0.520000 10031.077542 233820.872331 +54 0.530000 7961.876154 182311.949517 +55 0.540000 6344.988397 142792.224654 +56 0.550000 5075.941991 112324.247003 +57 0.560000 4075.667156 88725.341557 +58 0.570000 3284.018178 70364.910655 +59 0.580000 2655.022026 56018.454503 +60 0.590000 2153.374227 44761.819610 +61 0.600000 1751.840750 35894.153820 +62 0.610000 1429.321668 28881.467437 +63 0.620000 1169.400839 23315.070198 +64 0.630000 959.254371 18880.806522 +65 0.640000 788.825286 15336.170940 +66 0.650000 650.196650 12493.203783 +67 0.660000 537.113366 10205.647944 +68 0.670000 444.615844 8359.261950 +69 0.680000 368.758212 6864.481939 +70 0.690000 306.390715 5650.839586 +71 0.700000 254.991024 4662.698464 +72 0.710000 212.532986 3855.984565 +73 0.720000 177.384120 3195.669530 +74 0.730000 148.225307 2653.826099 +75 0.740000 123.987627 2208.120224 +76 0.750000 103.802544 1840.637693 +77 0.760000 86.962472 1536.967937 +78 0.770000 72.889471 1285.486272 +79 0.780000 61.110325 1076.789779 +80 0.790000 51.236635 903.252555 +81 0.800000 42.948872 758.673996 +82 0.810000 35.983576 637.999825 +83 0.820000 30.123043 537.100183 +84 0.830000 25.186999 452.592612 +85 0.840000 21.025860 381.700456 +86 0.850000 17.515264 322.139305 +87 0.860000 14.551619 272.025666 +88 0.870000 12.048476 229.803356 +89 0.880000 9.933566 194.184004 +90 0.890000 8.146368 164.098852 +91 0.900000 6.636119 138.659624 +92 0.910000 5.360169 117.126674 +93 0.920000 4.282632 98.883003 +94 0.930000 3.373272 83.413022 +95 0.940000 2.606573 70.285155 +96 0.950000 1.960975 59.137553 +97 0.960000 1.418239 49.666347 +98 0.970000 0.962916 41.615965 +99 0.980000 0.581905 34.771137 +100 0.990000 0.264083 28.950277 +101 1.000000 -0.000000 24.000000 +102 1.010000 -0.218384 19.790571 +103 1.020000 -0.397913 16.212117 +104 1.030000 -0.544418 13.171468 +105 1.040000 -0.662870 10.589529 +106 1.050000 -0.757512 8.399073 +107 1.060000 -0.831965 6.542902 +108 1.070000 -0.889321 4.972300 +109 1.080000 -0.932223 3.645731 +110 1.090000 -0.962930 2.527753 +111 1.100000 -0.983372 1.588095 +112 1.110000 -0.995200 0.800882 +113 1.120000 -0.999824 0.143980 +114 1.130000 -0.999884 -0.030740 +115 1.140000 -0.999373 -0.071496 +116 1.150000 -0.998454 -0.112194 +117 1.160000 -0.997129 -0.152800 +118 1.170000 -0.995399 -0.193281 +119 1.180000 -0.993264 -0.233605 +120 1.190000 -0.990727 -0.273738 +121 1.200000 -0.987790 -0.313649 +122 1.210000 -0.984455 -0.353303 +123 1.220000 -0.980725 -0.392669 +124 1.230000 -0.976603 -0.431715 +125 1.240000 -0.972092 -0.470408 +126 1.250000 -0.967196 -0.508719 +127 1.260000 -0.961919 -0.546614 +128 1.270000 -0.956265 -0.584063 +129 1.280000 -0.950239 -0.621036 +130 1.290000 -0.943846 -0.657502 +131 1.300000 -0.937091 -0.693432 +132 1.310000 -0.929979 -0.728797 +133 1.320000 -0.922517 -0.763567 +134 1.330000 -0.914710 -0.797715 +135 1.340000 -0.906565 -0.831211 +136 1.350000 -0.898088 -0.864030 +137 1.360000 -0.889287 -0.896144 +138 1.370000 -0.880168 -0.927527 +139 1.380000 -0.870739 -0.958154 +140 1.390000 -0.861007 -0.987999 +141 1.400000 -0.850981 -1.017039 +142 1.410000 -0.840669 -1.045248 +143 1.420000 -0.830079 -1.072606 +144 1.430000 -0.819220 -1.099088 +145 1.440000 -0.808101 -1.124674 +146 1.450000 -0.796730 -1.149343 +147 1.460000 -0.785117 -1.173074 +148 1.470000 -0.773271 -1.195849 +149 1.480000 -0.761203 -1.217648 +150 1.490000 -0.748922 -1.238454 +151 1.500000 -0.736437 -1.258250 +152 1.510000 -0.723760 -1.277020 +153 1.520000 -0.710900 -1.294748 +154 1.530000 -0.697869 -1.311420 +155 1.540000 -0.684676 -1.327023 +156 1.550000 -0.671332 -1.341543 +157 1.560000 -0.657848 -1.354969 +158 1.570000 -0.644236 -1.367290 +159 1.580000 -0.630506 -1.378496 +160 1.590000 -0.616670 -1.388577 +161 1.600000 -0.602739 -1.397526 +162 1.610000 -0.588723 -1.405335 +163 1.620000 -0.574636 -1.411998 +164 1.630000 -0.560487 -1.417509 +165 1.640000 -0.546289 -1.421864 +166 1.650000 -0.532054 -1.425059 +167 1.660000 -0.517792 -1.427092 +168 1.670000 -0.503516 -1.427961 +169 1.680000 -0.489237 -1.427666 +170 1.690000 -0.474966 -1.426206 +171 1.700000 -0.460716 -1.423582 +172 1.710000 -0.446499 -1.419798 +173 1.720000 -0.432324 -1.414856 +174 1.730000 -0.418205 -1.408759 +175 1.740000 -0.404153 -1.401514 +176 1.750000 -0.390179 -1.393126 +177 1.760000 -0.376294 -1.383601 +178 1.770000 -0.362511 -1.372948 +179 1.780000 -0.348839 -1.361175 +180 1.790000 -0.335291 -1.348292 +181 1.800000 -0.321877 -1.334309 +182 1.810000 -0.308608 -1.319238 +183 1.820000 -0.295496 -1.303091 +184 1.830000 -0.282550 -1.285881 +185 1.840000 -0.269782 -1.267622 +186 1.850000 -0.257201 -1.248329 +187 1.860000 -0.244818 -1.228018 +188 1.870000 -0.232644 -1.206706 +189 1.880000 -0.220688 -1.184410 +190 1.890000 -0.208959 -1.161147 +191 1.900000 -0.197468 -1.136937 +192 1.910000 -0.186223 -1.111800 +193 1.920000 -0.175235 -1.085757 +194 1.930000 -0.164511 -1.058827 +195 1.940000 -0.154061 -1.031034 +196 1.950000 -0.143893 -1.002401 +197 1.960000 -0.134016 -0.972949 +198 1.970000 -0.124437 -0.942704 +199 1.980000 -0.115164 -0.911690 +200 1.990000 -0.106206 -0.879933 +201 2.000000 -0.097568 -0.847458 +202 2.010000 -0.089259 -0.814292 +203 2.020000 -0.081284 -0.780461 +204 2.030000 -0.073652 -0.745994 +205 2.040000 -0.066367 -0.710919 +206 2.050000 -0.059435 -0.675264 +207 2.060000 -0.052863 -0.639057 +208 2.070000 -0.046656 -0.602330 +209 2.080000 -0.040818 -0.565112 +210 2.090000 -0.035355 -0.527432 +211 2.100000 -0.030271 -0.489323 +212 2.110000 -0.025570 -0.450814 +213 2.120000 -0.021256 -0.411937 +214 2.130000 -0.017332 -0.372725 +215 2.140000 -0.013802 -0.333209 +216 2.150000 -0.010669 -0.293421 +217 2.160000 -0.007935 -0.253393 +218 2.170000 -0.005602 -0.213159 +219 2.180000 -0.003672 -0.172751 +220 2.190000 -0.002147 -0.132202 +221 2.200000 -0.001028 -0.091545 +222 2.210000 -0.000317 -0.050814 +223 2.220000 -0.000012 -0.010041 +224 2.230000 0.000000 0.000000 +225 2.240000 0.000000 0.000000 +226 2.250000 0.000000 0.000000 +227 2.260000 0.000000 0.000000 +228 2.270000 0.000000 0.000000 +229 2.280000 0.000000 0.000000 +230 2.290000 0.000000 0.000000 +231 2.300000 0.000000 0.000000 +232 2.310000 0.000000 0.000000 +233 2.320000 0.000000 0.000000 +234 2.330000 0.000000 0.000000 +235 2.340000 0.000000 0.000000 +236 2.350000 0.000000 0.000000 +237 2.360000 0.000000 0.000000 +238 2.370000 0.000000 0.000000 +239 2.380000 0.000000 0.000000 +240 2.390000 0.000000 0.000000 +241 2.400000 0.000000 0.000000 +242 2.410000 0.000000 0.000000 +243 2.420000 0.000000 0.000000 +244 2.430000 0.000000 0.000000 +245 2.440000 0.000000 0.000000 +246 2.450000 0.000000 0.000000 +247 2.460000 0.000000 0.000000 +248 2.470000 0.000000 0.000000 +249 2.480000 0.000000 0.000000 +250 2.490000 0.000000 0.000000 +251 2.500000 0.000000 0.000000 +252 2.510000 0.000000 0.000000 +253 2.520000 0.000000 0.000000 +254 2.530000 0.000000 0.000000 +255 2.540000 0.000000 0.000000 +256 2.550000 0.000000 0.000000 +257 2.560000 0.000000 0.000000 +258 2.570000 0.000000 0.000000 +259 2.580000 0.000000 0.000000 +260 2.590000 0.000000 0.000000 +261 2.600000 0.000000 0.000000 +262 2.610000 0.000000 0.000000 +263 2.620000 0.000000 0.000000 +264 2.630000 0.000000 0.000000 +265 2.640000 0.000000 0.000000 +266 2.650000 0.000000 0.000000 +267 2.660000 0.000000 0.000000 +268 2.670000 0.000000 0.000000 +269 2.680000 0.000000 0.000000 +270 2.690000 0.000000 0.000000 +271 2.700000 0.000000 0.000000 +272 2.710000 0.000000 0.000000 +273 2.720000 0.000000 0.000000 +274 2.730000 0.000000 0.000000 +275 2.740000 0.000000 0.000000 +276 2.750000 0.000000 0.000000 +277 2.760000 0.000000 0.000000 +278 2.770000 0.000000 0.000000 +279 2.780000 0.000000 0.000000 +280 2.790000 0.000000 0.000000 +281 2.800000 0.000000 0.000000 +282 2.810000 0.000000 0.000000 +283 2.820000 0.000000 0.000000 +284 2.830000 0.000000 0.000000 +285 2.840000 0.000000 0.000000 +286 2.850000 0.000000 0.000000 +287 2.860000 0.000000 0.000000 +288 2.870000 0.000000 0.000000 +289 2.880000 0.000000 0.000000 +290 2.890000 0.000000 0.000000 +291 2.900000 0.000000 0.000000 +292 2.910000 0.000000 0.000000 +293 2.920000 0.000000 0.000000 +294 2.930000 0.000000 0.000000 +295 2.940000 0.000000 0.000000 +296 2.950000 0.000000 0.000000 +297 2.960000 0.000000 0.000000 +298 2.970000 0.000000 0.000000 +299 2.980000 0.000000 0.000000 +300 2.990000 0.000000 0.000000 +301 3.000000 0.000000 0.000000 + + +TAIL_TAIL_Wc_1.2 +N 301 R 0.000001 3.000000 + +1 0.000001 0.000000 0.000000 +2 0.010000 3999999999995999707725824.000000 4799999999997598070678224896.000000 +3 0.020000 976562499937500004352.000000 585937499981249777762304.000000 +4 0.030000 7526705687148720128.000000 3010682275956881096704.000000 +5 0.040000 238418578125000000.000000 71525573583984353280.000000 +6 0.050000 16383999744000000.000000 3932159969279997440.000000 +7 0.060000 1837574546257248.500000 367514917824838144.000000 +8 0.070000 288990429236596.312500 49541219354796968.000000 +9 0.080000 58207645654678.343750 8731147992610928.000000 +10 0.090000 14162817119182.900391 1888376117671434.750000 +11 0.100000 3999996000000.000000 479999760000000.500000 +12 0.110000 1274521012945.708496 139038779115662.093750 +13 0.120000 448625279546.553955 44862594934250.781250 +14 0.130000 171687100967.122345 15848078337188.726562 +15 0.140000 70553781072.250778 6047489716531.549805 +16 0.150000 30829035351.054977 2466336874723.629883 +17 0.160000 14210616296.622902 1065805162943.433594 +18 0.170000 6865346349.879549 484618532348.129211 +19 0.180000 3457603256.036191 230510803894.961182 +20 0.190000 1807158928.004511 114139038296.617722 +21 0.200000 976499999.999998 58591874999.999847 +22 0.210000 543739902.726732 31072184111.878654 +23 0.220000 311127628.299641 16971560078.724821 +24 0.230000 182499493.379421 9522417580.006592 +25 0.240000 109507052.064558 5475875881.316449 +26 0.250000 67092480.000000 3220832255.999991 +27 0.260000 41903049.941880 1934285732.237306 +28 0.270000 26639528.522336 1184208483.196407 +29 0.280000 17216873.260370 738043867.822060 +30 0.290000 11298625.429098 467668459.533016 +31 0.300000 7521218.724186 300958488.336427 +32 0.310000 5073808.319410 196492716.046068 +33 0.320000 3465721.661655 130034411.505164 +34 0.330000 2395143.138865 87152427.788625 +35 0.340000 1673561.082347 59112555.692539 +36 0.350000 1181528.973318 40546867.041137 +37 0.360000 842332.557402 28108378.157278 +38 0.370000 606071.119890 19681641.931764 +39 0.380000 439893.177446 13912339.662092 +40 0.390000 321924.360071 9922853.684245 +41 0.400000 237442.016602 7137908.935547 +42 0.410000 176435.450812 5176287.635225 +43 0.420000 132031.660059 3782743.515595 +44 0.430000 99468.250044 2784687.558254 +45 0.440000 75416.262744 2064324.130372 +46 0.450000 57529.220585 1540535.337797 +47 0.460000 44139.942254 1156983.644674 +48 0.470000 34054.846645 874222.695500 +49 0.480000 26413.181465 664417.646696 +50 0.490000 20589.881497 507780.654581 +51 0.500000 16128.000000 390144.000000 +52 0.510000 12691.351515 301294.396513 +53 0.520000 10031.077542 233820.872331 +54 0.530000 7961.876154 182311.949517 +55 0.540000 6344.988397 142792.224654 +56 0.550000 5075.941991 112324.247003 +57 0.560000 4075.667156 88725.341557 +58 0.570000 3284.018178 70364.910655 +59 0.580000 2655.022026 56018.454503 +60 0.590000 2153.374227 44761.819610 +61 0.600000 1751.840750 35894.153820 +62 0.610000 1429.321668 28881.467437 +63 0.620000 1169.400839 23315.070198 +64 0.630000 959.254371 18880.806522 +65 0.640000 788.825286 15336.170940 +66 0.650000 650.196650 12493.203783 +67 0.660000 537.113366 10205.647944 +68 0.670000 444.615844 8359.261950 +69 0.680000 368.758212 6864.481939 +70 0.690000 306.390715 5650.839586 +71 0.700000 254.991024 4662.698464 +72 0.710000 212.532986 3855.984565 +73 0.720000 177.384120 3195.669530 +74 0.730000 148.225307 2653.826099 +75 0.740000 123.987627 2208.120224 +76 0.750000 103.802544 1840.637693 +77 0.760000 86.962472 1536.967937 +78 0.770000 72.889471 1285.486272 +79 0.780000 61.110325 1076.789779 +80 0.790000 51.236635 903.252555 +81 0.800000 42.948872 758.673996 +82 0.810000 35.983576 637.999825 +83 0.820000 30.123043 537.100183 +84 0.830000 25.186999 452.592612 +85 0.840000 21.025860 381.700456 +86 0.850000 17.515264 322.139305 +87 0.860000 14.551619 272.025666 +88 0.870000 12.048476 229.803356 +89 0.880000 9.933566 194.184004 +90 0.890000 8.146368 164.098852 +91 0.900000 6.636119 138.659624 +92 0.910000 5.360169 117.126674 +93 0.920000 4.282632 98.883003 +94 0.930000 3.373272 83.413022 +95 0.940000 2.606573 70.285155 +96 0.950000 1.960975 59.137553 +97 0.960000 1.418239 49.666347 +98 0.970000 0.962916 41.615965 +99 0.980000 0.581905 34.771137 +100 0.990000 0.264083 28.950277 +101 1.000000 -0.000000 24.000000 +102 1.010000 -0.218384 19.790571 +103 1.020000 -0.397913 16.212117 +104 1.030000 -0.544418 13.171468 +105 1.040000 -0.662870 10.589529 +106 1.050000 -0.757512 8.399073 +107 1.060000 -0.831965 6.542902 +108 1.070000 -0.889321 4.972300 +109 1.080000 -0.932223 3.645731 +110 1.090000 -0.962930 2.527753 +111 1.100000 -0.983372 1.588095 +112 1.110000 -0.995200 0.800882 +113 1.120000 -0.999824 0.143980 +114 1.130000 -0.999903 -0.025830 +115 1.140000 -0.999473 -0.060080 +116 1.150000 -0.998701 -0.094289 +117 1.160000 -0.997587 -0.128434 +118 1.170000 -0.996133 -0.162490 +119 1.180000 -0.994338 -0.196435 +120 1.190000 -0.992205 -0.230245 +121 1.200000 -0.989734 -0.263897 +122 1.210000 -0.986927 -0.297369 +123 1.220000 -0.983787 -0.330637 +124 1.230000 -0.980315 -0.363678 +125 1.240000 -0.976514 -0.396470 +126 1.250000 -0.972387 -0.428990 +127 1.260000 -0.967935 -0.461216 +128 1.270000 -0.963163 -0.493126 +129 1.280000 -0.958074 -0.524698 +130 1.290000 -0.952671 -0.555911 +131 1.300000 -0.946957 -0.586742 +132 1.310000 -0.940937 -0.617172 +133 1.320000 -0.934615 -0.647178 +134 1.330000 -0.927995 -0.676741 +135 1.340000 -0.921082 -0.705840 +136 1.350000 -0.913880 -0.734455 +137 1.360000 -0.906394 -0.762567 +138 1.370000 -0.898630 -0.790157 +139 1.380000 -0.890593 -0.817204 +140 1.390000 -0.882288 -0.843692 +141 1.400000 -0.873721 -0.869602 +142 1.410000 -0.864898 -0.894915 +143 1.420000 -0.855825 -0.919615 +144 1.430000 -0.846508 -0.943685 +145 1.440000 -0.836953 -0.967108 +146 1.450000 -0.827168 -0.989869 +147 1.460000 -0.817158 -1.011951 +148 1.470000 -0.806931 -1.033339 +149 1.480000 -0.796494 -1.054019 +150 1.490000 -0.785853 -1.073977 +151 1.500000 -0.775017 -1.093199 +152 1.510000 -0.763992 -1.111672 +153 1.520000 -0.752786 -1.129382 +154 1.530000 -0.741407 -1.146319 +155 1.540000 -0.729862 -1.162470 +156 1.550000 -0.718160 -1.177825 +157 1.560000 -0.706308 -1.192372 +158 1.570000 -0.694315 -1.206102 +159 1.580000 -0.682189 -1.219005 +160 1.590000 -0.669938 -1.231073 +161 1.600000 -0.657570 -1.242297 +162 1.610000 -0.645095 -1.252670 +163 1.620000 -0.632520 -1.262184 +164 1.630000 -0.619854 -1.270833 +165 1.640000 -0.607106 -1.278611 +166 1.650000 -0.594285 -1.285513 +167 1.660000 -0.581399 -1.291534 +168 1.670000 -0.568457 -1.296670 +169 1.680000 -0.555468 -1.300917 +170 1.690000 -0.542442 -1.304273 +171 1.700000 -0.529386 -1.306734 +172 1.710000 -0.516310 -1.308300 +173 1.720000 -0.503223 -1.308970 +174 1.730000 -0.490133 -1.308742 +175 1.740000 -0.477051 -1.307617 +176 1.750000 -0.463984 -1.305597 +177 1.760000 -0.450942 -1.302681 +178 1.770000 -0.437933 -1.298873 +179 1.780000 -0.424968 -1.294174 +180 1.790000 -0.412053 -1.288588 +181 1.800000 -0.399199 -1.282120 +182 1.810000 -0.386413 -1.274772 +183 1.820000 -0.373706 -1.266551 +184 1.830000 -0.361085 -1.257462 +185 1.840000 -0.348560 -1.247511 +186 1.850000 -0.336138 -1.236706 +187 1.860000 -0.323828 -1.225052 +188 1.870000 -0.311640 -1.212559 +189 1.880000 -0.299580 -1.199235 +190 1.890000 -0.287658 -1.185089 +191 1.900000 -0.275881 -1.170131 +192 1.910000 -0.264258 -1.154371 +193 1.920000 -0.252796 -1.137820 +194 1.930000 -0.241504 -1.120489 +195 1.940000 -0.230389 -1.102390 +196 1.950000 -0.219459 -1.083535 +197 1.960000 -0.208721 -1.063938 +198 1.970000 -0.198182 -1.043612 +199 1.980000 -0.187851 -1.022570 +200 1.990000 -0.177733 -1.000828 +201 2.000000 -0.167837 -0.978400 +202 2.010000 -0.158168 -0.955301 +203 2.020000 -0.148733 -0.931547 +204 2.030000 -0.139539 -0.907155 +205 2.040000 -0.130592 -0.882142 +206 2.050000 -0.121898 -0.856524 +207 2.060000 -0.113463 -0.830318 +208 2.070000 -0.105293 -0.803544 +209 2.080000 -0.097394 -0.776219 +210 2.090000 -0.089771 -0.748362 +211 2.100000 -0.082429 -0.719992 +212 2.110000 -0.075373 -0.691129 +213 2.120000 -0.068608 -0.661792 +214 2.130000 -0.062138 -0.632001 +215 2.140000 -0.055969 -0.601777 +216 2.150000 -0.050104 -0.571141 +217 2.160000 -0.044548 -0.540114 +218 2.170000 -0.039303 -0.508716 +219 2.180000 -0.034374 -0.476970 +220 2.190000 -0.029765 -0.444896 +221 2.200000 -0.025478 -0.412518 +222 2.210000 -0.021515 -0.379857 +223 2.220000 -0.017881 -0.346936 +224 2.230000 -0.014577 -0.313777 +225 2.240000 -0.011606 -0.280403 +226 2.250000 -0.008970 -0.246837 +227 2.260000 -0.006670 -0.213101 +228 2.270000 -0.004709 -0.179220 +229 2.280000 -0.003086 -0.145216 +230 2.290000 -0.001805 -0.111112 +231 2.300000 -0.000864 -0.076932 +232 2.310000 -0.000266 -0.042699 +233 2.320000 -0.000010 -0.008437 +234 2.330000 0.000000 0.000000 +235 2.340000 0.000000 0.000000 +236 2.350000 0.000000 0.000000 +237 2.360000 0.000000 0.000000 +238 2.370000 0.000000 0.000000 +239 2.380000 0.000000 0.000000 +240 2.390000 0.000000 0.000000 +241 2.400000 0.000000 0.000000 +242 2.410000 0.000000 0.000000 +243 2.420000 0.000000 0.000000 +244 2.430000 0.000000 0.000000 +245 2.440000 0.000000 0.000000 +246 2.450000 0.000000 0.000000 +247 2.460000 0.000000 0.000000 +248 2.470000 0.000000 0.000000 +249 2.480000 0.000000 0.000000 +250 2.490000 0.000000 0.000000 +251 2.500000 0.000000 0.000000 +252 2.510000 0.000000 0.000000 +253 2.520000 0.000000 0.000000 +254 2.530000 0.000000 0.000000 +255 2.540000 0.000000 0.000000 +256 2.550000 0.000000 0.000000 +257 2.560000 0.000000 0.000000 +258 2.570000 0.000000 0.000000 +259 2.580000 0.000000 0.000000 +260 2.590000 0.000000 0.000000 +261 2.600000 0.000000 0.000000 +262 2.610000 0.000000 0.000000 +263 2.620000 0.000000 0.000000 +264 2.630000 0.000000 0.000000 +265 2.640000 0.000000 0.000000 +266 2.650000 0.000000 0.000000 +267 2.660000 0.000000 0.000000 +268 2.670000 0.000000 0.000000 +269 2.680000 0.000000 0.000000 +270 2.690000 0.000000 0.000000 +271 2.700000 0.000000 0.000000 +272 2.710000 0.000000 0.000000 +273 2.720000 0.000000 0.000000 +274 2.730000 0.000000 0.000000 +275 2.740000 0.000000 0.000000 +276 2.750000 0.000000 0.000000 +277 2.760000 0.000000 0.000000 +278 2.770000 0.000000 0.000000 +279 2.780000 0.000000 0.000000 +280 2.790000 0.000000 0.000000 +281 2.800000 0.000000 0.000000 +282 2.810000 0.000000 0.000000 +283 2.820000 0.000000 0.000000 +284 2.830000 0.000000 0.000000 +285 2.840000 0.000000 0.000000 +286 2.850000 0.000000 0.000000 +287 2.860000 0.000000 0.000000 +288 2.870000 0.000000 0.000000 +289 2.880000 0.000000 0.000000 +290 2.890000 0.000000 0.000000 +291 2.900000 0.000000 0.000000 +292 2.910000 0.000000 0.000000 +293 2.920000 0.000000 0.000000 +294 2.930000 0.000000 0.000000 +295 2.940000 0.000000 0.000000 +296 2.950000 0.000000 0.000000 +297 2.960000 0.000000 0.000000 +298 2.970000 0.000000 0.000000 +299 2.980000 0.000000 0.000000 +300 2.990000 0.000000 0.000000 +301 3.000000 0.000000 0.000000 + + +TAIL_TAIL_Wc_1.3 +N 301 R 0.000001 3.000000 + +1 0.000001 0.000000 0.000000 +2 0.010000 3999999999995999707725824.000000 4799999999997598070678224896.000000 +3 0.020000 976562499937500004352.000000 585937499981249777762304.000000 +4 0.030000 7526705687148720128.000000 3010682275956881096704.000000 +5 0.040000 238418578125000000.000000 71525573583984353280.000000 +6 0.050000 16383999744000000.000000 3932159969279997440.000000 +7 0.060000 1837574546257248.500000 367514917824838144.000000 +8 0.070000 288990429236596.312500 49541219354796968.000000 +9 0.080000 58207645654678.343750 8731147992610928.000000 +10 0.090000 14162817119182.900391 1888376117671434.750000 +11 0.100000 3999996000000.000000 479999760000000.500000 +12 0.110000 1274521012945.708496 139038779115662.093750 +13 0.120000 448625279546.553955 44862594934250.781250 +14 0.130000 171687100967.122345 15848078337188.726562 +15 0.140000 70553781072.250778 6047489716531.549805 +16 0.150000 30829035351.054977 2466336874723.629883 +17 0.160000 14210616296.622902 1065805162943.433594 +18 0.170000 6865346349.879549 484618532348.129211 +19 0.180000 3457603256.036191 230510803894.961182 +20 0.190000 1807158928.004511 114139038296.617722 +21 0.200000 976499999.999998 58591874999.999847 +22 0.210000 543739902.726732 31072184111.878654 +23 0.220000 311127628.299641 16971560078.724821 +24 0.230000 182499493.379421 9522417580.006592 +25 0.240000 109507052.064558 5475875881.316449 +26 0.250000 67092480.000000 3220832255.999991 +27 0.260000 41903049.941880 1934285732.237306 +28 0.270000 26639528.522336 1184208483.196407 +29 0.280000 17216873.260370 738043867.822060 +30 0.290000 11298625.429098 467668459.533016 +31 0.300000 7521218.724186 300958488.336427 +32 0.310000 5073808.319410 196492716.046068 +33 0.320000 3465721.661655 130034411.505164 +34 0.330000 2395143.138865 87152427.788625 +35 0.340000 1673561.082347 59112555.692539 +36 0.350000 1181528.973318 40546867.041137 +37 0.360000 842332.557402 28108378.157278 +38 0.370000 606071.119890 19681641.931764 +39 0.380000 439893.177446 13912339.662092 +40 0.390000 321924.360071 9922853.684245 +41 0.400000 237442.016602 7137908.935547 +42 0.410000 176435.450812 5176287.635225 +43 0.420000 132031.660059 3782743.515595 +44 0.430000 99468.250044 2784687.558254 +45 0.440000 75416.262744 2064324.130372 +46 0.450000 57529.220585 1540535.337797 +47 0.460000 44139.942254 1156983.644674 +48 0.470000 34054.846645 874222.695500 +49 0.480000 26413.181465 664417.646696 +50 0.490000 20589.881497 507780.654581 +51 0.500000 16128.000000 390144.000000 +52 0.510000 12691.351515 301294.396513 +53 0.520000 10031.077542 233820.872331 +54 0.530000 7961.876154 182311.949517 +55 0.540000 6344.988397 142792.224654 +56 0.550000 5075.941991 112324.247003 +57 0.560000 4075.667156 88725.341557 +58 0.570000 3284.018178 70364.910655 +59 0.580000 2655.022026 56018.454503 +60 0.590000 2153.374227 44761.819610 +61 0.600000 1751.840750 35894.153820 +62 0.610000 1429.321668 28881.467437 +63 0.620000 1169.400839 23315.070198 +64 0.630000 959.254371 18880.806522 +65 0.640000 788.825286 15336.170940 +66 0.650000 650.196650 12493.203783 +67 0.660000 537.113366 10205.647944 +68 0.670000 444.615844 8359.261950 +69 0.680000 368.758212 6864.481939 +70 0.690000 306.390715 5650.839586 +71 0.700000 254.991024 4662.698464 +72 0.710000 212.532986 3855.984565 +73 0.720000 177.384120 3195.669530 +74 0.730000 148.225307 2653.826099 +75 0.740000 123.987627 2208.120224 +76 0.750000 103.802544 1840.637693 +77 0.760000 86.962472 1536.967937 +78 0.770000 72.889471 1285.486272 +79 0.780000 61.110325 1076.789779 +80 0.790000 51.236635 903.252555 +81 0.800000 42.948872 758.673996 +82 0.810000 35.983576 637.999825 +83 0.820000 30.123043 537.100183 +84 0.830000 25.186999 452.592612 +85 0.840000 21.025860 381.700456 +86 0.850000 17.515264 322.139305 +87 0.860000 14.551619 272.025666 +88 0.870000 12.048476 229.803356 +89 0.880000 9.933566 194.184004 +90 0.890000 8.146368 164.098852 +91 0.900000 6.636119 138.659624 +92 0.910000 5.360169 117.126674 +93 0.920000 4.282632 98.883003 +94 0.930000 3.373272 83.413022 +95 0.940000 2.606573 70.285155 +96 0.950000 1.960975 59.137553 +97 0.960000 1.418239 49.666347 +98 0.970000 0.962916 41.615965 +99 0.980000 0.581905 34.771137 +100 0.990000 0.264083 28.950277 +101 1.000000 -0.000000 24.000000 +102 1.010000 -0.218384 19.790571 +103 1.020000 -0.397913 16.212117 +104 1.030000 -0.544418 13.171468 +105 1.040000 -0.662870 10.589529 +106 1.050000 -0.757512 8.399073 +107 1.060000 -0.831965 6.542902 +108 1.070000 -0.889321 4.972300 +109 1.080000 -0.932223 3.645731 +110 1.090000 -0.962930 2.527753 +111 1.100000 -0.983372 1.588095 +112 1.110000 -0.995200 0.800882 +113 1.120000 -0.999824 0.143980 +114 1.130000 -0.999917 -0.022010 +115 1.140000 -0.999551 -0.051196 +116 1.150000 -0.998893 -0.080352 +117 1.160000 -0.997944 -0.109461 +118 1.170000 -0.996704 -0.138506 +119 1.180000 -0.995174 -0.167470 +120 1.190000 -0.993355 -0.196337 +121 1.200000 -0.991248 -0.225088 +122 1.210000 -0.988854 -0.253709 +123 1.220000 -0.986174 -0.282181 +124 1.230000 -0.983211 -0.310488 +125 1.240000 -0.979965 -0.338614 +126 1.250000 -0.976439 -0.366543 +127 1.260000 -0.972635 -0.394257 +128 1.270000 -0.968555 -0.421741 +129 1.280000 -0.964201 -0.448979 +130 1.290000 -0.959576 -0.475955 +131 1.300000 -0.954683 -0.502652 +132 1.310000 -0.949524 -0.529056 +133 1.320000 -0.944103 -0.555152 +134 1.330000 -0.938422 -0.580923 +135 1.340000 -0.932485 -0.606354 +136 1.350000 -0.926296 -0.631432 +137 1.360000 -0.919858 -0.656141 +138 1.370000 -0.913175 -0.680467 +139 1.380000 -0.906250 -0.704395 +140 1.390000 -0.899088 -0.727912 +141 1.400000 -0.891693 -0.751004 +142 1.410000 -0.884069 -0.773657 +143 1.420000 -0.876221 -0.795859 +144 1.430000 -0.868154 -0.817596 +145 1.440000 -0.859871 -0.838855 +146 1.450000 -0.851378 -0.859625 +147 1.460000 -0.842680 -0.879892 +148 1.470000 -0.833782 -0.899646 +149 1.480000 -0.824689 -0.918874 +150 1.490000 -0.815407 -0.937566 +151 1.500000 -0.805940 -0.955710 +152 1.510000 -0.796294 -0.973296 +153 1.520000 -0.786476 -0.990314 +154 1.530000 -0.776490 -1.006753 +155 1.540000 -0.766343 -1.022605 +156 1.550000 -0.756040 -1.037859 +157 1.560000 -0.745587 -1.052507 +158 1.570000 -0.734992 -1.066541 +159 1.580000 -0.724259 -1.079952 +160 1.590000 -0.713395 -1.092732 +161 1.600000 -0.702406 -1.104874 +162 1.610000 -0.691299 -1.116371 +163 1.620000 -0.680081 -1.127215 +164 1.630000 -0.668757 -1.137402 +165 1.640000 -0.657335 -1.146924 +166 1.650000 -0.645821 -1.155777 +167 1.660000 -0.634222 -1.163955 +168 1.670000 -0.622544 -1.171452 +169 1.680000 -0.610795 -1.178266 +170 1.690000 -0.598981 -1.184392 +171 1.700000 -0.587109 -1.189826 +172 1.710000 -0.575187 -1.194565 +173 1.720000 -0.563220 -1.198607 +174 1.730000 -0.551217 -1.201949 +175 1.740000 -0.539184 -1.204589 +176 1.750000 -0.527128 -1.206525 +177 1.760000 -0.515056 -1.207757 +178 1.770000 -0.502975 -1.208283 +179 1.780000 -0.490892 -1.208104 +180 1.790000 -0.478815 -1.207220 +181 1.800000 -0.466750 -1.205630 +182 1.810000 -0.454705 -1.203337 +183 1.820000 -0.442686 -1.200340 +184 1.830000 -0.430700 -1.196643 +185 1.840000 -0.418755 -1.192247 +186 1.850000 -0.406858 -1.187155 +187 1.860000 -0.395015 -1.181369 +188 1.870000 -0.383233 -1.174893 +189 1.880000 -0.371519 -1.167732 +190 1.890000 -0.359880 -1.159888 +191 1.900000 -0.348324 -1.151367 +192 1.910000 -0.336855 -1.142174 +193 1.920000 -0.325482 -1.132314 +194 1.930000 -0.314211 -1.121793 +195 1.940000 -0.303049 -1.110616 +196 1.950000 -0.292001 -1.098791 +197 1.960000 -0.281075 -1.086324 +198 1.970000 -0.270277 -1.073223 +199 1.980000 -0.259613 -1.059495 +200 1.990000 -0.249089 -1.045148 +201 2.000000 -0.238712 -1.030191 +202 2.010000 -0.228487 -1.014633 +203 2.020000 -0.218421 -0.998482 +204 2.030000 -0.208519 -0.981748 +205 2.040000 -0.198788 -0.964440 +206 2.050000 -0.189232 -0.946569 +207 2.060000 -0.179858 -0.928146 +208 2.070000 -0.170671 -0.909180 +209 2.080000 -0.161677 -0.889684 +210 2.090000 -0.152879 -0.869668 +211 2.100000 -0.144285 -0.849144 +212 2.110000 -0.135898 -0.828125 +213 2.120000 -0.127724 -0.806621 +214 2.130000 -0.119767 -0.784647 +215 2.140000 -0.112033 -0.762214 +216 2.150000 -0.104524 -0.739337 +217 2.160000 -0.097247 -0.716027 +218 2.170000 -0.090205 -0.692300 +219 2.180000 -0.083403 -0.668168 +220 2.190000 -0.076843 -0.643646 +221 2.200000 -0.070531 -0.618748 +222 2.210000 -0.064469 -0.593489 +223 2.220000 -0.058662 -0.567883 +224 2.230000 -0.053113 -0.541946 +225 2.240000 -0.047824 -0.515692 +226 2.250000 -0.042800 -0.489137 +227 2.260000 -0.038043 -0.462296 +228 2.270000 -0.033555 -0.435185 +229 2.280000 -0.029340 -0.407820 +230 2.290000 -0.025399 -0.380217 +231 2.300000 -0.021736 -0.352392 +232 2.310000 -0.018352 -0.324362 +233 2.320000 -0.015250 -0.296141 +234 2.330000 -0.012430 -0.267748 +235 2.340000 -0.009895 -0.239199 +236 2.350000 -0.007647 -0.210510 +237 2.360000 -0.005685 -0.181697 +238 2.370000 -0.004013 -0.152779 +239 2.380000 -0.002630 -0.123772 +240 2.390000 -0.001538 -0.094692 +241 2.400000 -0.000736 -0.065557 +242 2.410000 -0.000227 -0.036384 +243 2.420000 -0.000009 -0.007189 +244 2.430000 0.000000 0.000000 +245 2.440000 0.000000 0.000000 +246 2.450000 0.000000 0.000000 +247 2.460000 0.000000 0.000000 +248 2.470000 0.000000 0.000000 +249 2.480000 0.000000 0.000000 +250 2.490000 0.000000 0.000000 +251 2.500000 0.000000 0.000000 +252 2.510000 0.000000 0.000000 +253 2.520000 0.000000 0.000000 +254 2.530000 0.000000 0.000000 +255 2.540000 0.000000 0.000000 +256 2.550000 0.000000 0.000000 +257 2.560000 0.000000 0.000000 +258 2.570000 0.000000 0.000000 +259 2.580000 0.000000 0.000000 +260 2.590000 0.000000 0.000000 +261 2.600000 0.000000 0.000000 +262 2.610000 0.000000 0.000000 +263 2.620000 0.000000 0.000000 +264 2.630000 0.000000 0.000000 +265 2.640000 0.000000 0.000000 +266 2.650000 0.000000 0.000000 +267 2.660000 0.000000 0.000000 +268 2.670000 0.000000 0.000000 +269 2.680000 0.000000 0.000000 +270 2.690000 0.000000 0.000000 +271 2.700000 0.000000 0.000000 +272 2.710000 0.000000 0.000000 +273 2.720000 0.000000 0.000000 +274 2.730000 0.000000 0.000000 +275 2.740000 0.000000 0.000000 +276 2.750000 0.000000 0.000000 +277 2.760000 0.000000 0.000000 +278 2.770000 0.000000 0.000000 +279 2.780000 0.000000 0.000000 +280 2.790000 0.000000 0.000000 +281 2.800000 0.000000 0.000000 +282 2.810000 0.000000 0.000000 +283 2.820000 0.000000 0.000000 +284 2.830000 0.000000 0.000000 +285 2.840000 0.000000 0.000000 +286 2.850000 0.000000 0.000000 +287 2.860000 0.000000 0.000000 +288 2.870000 0.000000 0.000000 +289 2.880000 0.000000 0.000000 +290 2.890000 0.000000 0.000000 +291 2.900000 0.000000 0.000000 +292 2.910000 0.000000 0.000000 +293 2.920000 0.000000 0.000000 +294 2.930000 0.000000 0.000000 +295 2.940000 0.000000 0.000000 +296 2.950000 0.000000 0.000000 +297 2.960000 0.000000 0.000000 +298 2.970000 0.000000 0.000000 +299 2.980000 0.000000 0.000000 +300 2.990000 0.000000 0.000000 +301 3.000000 0.000000 0.000000 + + +TAIL_TAIL_Wc_1.4 +N 301 R 0.000001 3.000000 + +1 0.000001 0.000000 0.000000 +2 0.010000 3999999999995999707725824.000000 4799999999997598070678224896.000000 +3 0.020000 976562499937500004352.000000 585937499981249777762304.000000 +4 0.030000 7526705687148720128.000000 3010682275956881096704.000000 +5 0.040000 238418578125000000.000000 71525573583984353280.000000 +6 0.050000 16383999744000000.000000 3932159969279997440.000000 +7 0.060000 1837574546257248.500000 367514917824838144.000000 +8 0.070000 288990429236596.312500 49541219354796968.000000 +9 0.080000 58207645654678.343750 8731147992610928.000000 +10 0.090000 14162817119182.900391 1888376117671434.750000 +11 0.100000 3999996000000.000000 479999760000000.500000 +12 0.110000 1274521012945.708496 139038779115662.093750 +13 0.120000 448625279546.553955 44862594934250.781250 +14 0.130000 171687100967.122345 15848078337188.726562 +15 0.140000 70553781072.250778 6047489716531.549805 +16 0.150000 30829035351.054977 2466336874723.629883 +17 0.160000 14210616296.622902 1065805162943.433594 +18 0.170000 6865346349.879549 484618532348.129211 +19 0.180000 3457603256.036191 230510803894.961182 +20 0.190000 1807158928.004511 114139038296.617722 +21 0.200000 976499999.999998 58591874999.999847 +22 0.210000 543739902.726732 31072184111.878654 +23 0.220000 311127628.299641 16971560078.724821 +24 0.230000 182499493.379421 9522417580.006592 +25 0.240000 109507052.064558 5475875881.316449 +26 0.250000 67092480.000000 3220832255.999991 +27 0.260000 41903049.941880 1934285732.237306 +28 0.270000 26639528.522336 1184208483.196407 +29 0.280000 17216873.260370 738043867.822060 +30 0.290000 11298625.429098 467668459.533016 +31 0.300000 7521218.724186 300958488.336427 +32 0.310000 5073808.319410 196492716.046068 +33 0.320000 3465721.661655 130034411.505164 +34 0.330000 2395143.138865 87152427.788625 +35 0.340000 1673561.082347 59112555.692539 +36 0.350000 1181528.973318 40546867.041137 +37 0.360000 842332.557402 28108378.157278 +38 0.370000 606071.119890 19681641.931764 +39 0.380000 439893.177446 13912339.662092 +40 0.390000 321924.360071 9922853.684245 +41 0.400000 237442.016602 7137908.935547 +42 0.410000 176435.450812 5176287.635225 +43 0.420000 132031.660059 3782743.515595 +44 0.430000 99468.250044 2784687.558254 +45 0.440000 75416.262744 2064324.130372 +46 0.450000 57529.220585 1540535.337797 +47 0.460000 44139.942254 1156983.644674 +48 0.470000 34054.846645 874222.695500 +49 0.480000 26413.181465 664417.646696 +50 0.490000 20589.881497 507780.654581 +51 0.500000 16128.000000 390144.000000 +52 0.510000 12691.351515 301294.396513 +53 0.520000 10031.077542 233820.872331 +54 0.530000 7961.876154 182311.949517 +55 0.540000 6344.988397 142792.224654 +56 0.550000 5075.941991 112324.247003 +57 0.560000 4075.667156 88725.341557 +58 0.570000 3284.018178 70364.910655 +59 0.580000 2655.022026 56018.454503 +60 0.590000 2153.374227 44761.819610 +61 0.600000 1751.840750 35894.153820 +62 0.610000 1429.321668 28881.467437 +63 0.620000 1169.400839 23315.070198 +64 0.630000 959.254371 18880.806522 +65 0.640000 788.825286 15336.170940 +66 0.650000 650.196650 12493.203783 +67 0.660000 537.113366 10205.647944 +68 0.670000 444.615844 8359.261950 +69 0.680000 368.758212 6864.481939 +70 0.690000 306.390715 5650.839586 +71 0.700000 254.991024 4662.698464 +72 0.710000 212.532986 3855.984565 +73 0.720000 177.384120 3195.669530 +74 0.730000 148.225307 2653.826099 +75 0.740000 123.987627 2208.120224 +76 0.750000 103.802544 1840.637693 +77 0.760000 86.962472 1536.967937 +78 0.770000 72.889471 1285.486272 +79 0.780000 61.110325 1076.789779 +80 0.790000 51.236635 903.252555 +81 0.800000 42.948872 758.673996 +82 0.810000 35.983576 637.999825 +83 0.820000 30.123043 537.100183 +84 0.830000 25.186999 452.592612 +85 0.840000 21.025860 381.700456 +86 0.850000 17.515264 322.139305 +87 0.860000 14.551619 272.025666 +88 0.870000 12.048476 229.803356 +89 0.880000 9.933566 194.184004 +90 0.890000 8.146368 164.098852 +91 0.900000 6.636119 138.659624 +92 0.910000 5.360169 117.126674 +93 0.920000 4.282632 98.883003 +94 0.930000 3.373272 83.413022 +95 0.940000 2.606573 70.285155 +96 0.950000 1.960975 59.137553 +97 0.960000 1.418239 49.666347 +98 0.970000 0.962916 41.615965 +99 0.980000 0.581905 34.771137 +100 0.990000 0.264083 28.950277 +101 1.000000 -0.000000 24.000000 +102 1.010000 -0.218384 19.790571 +103 1.020000 -0.397913 16.212117 +104 1.030000 -0.544418 13.171468 +105 1.040000 -0.662870 10.589529 +106 1.050000 -0.757512 8.399073 +107 1.060000 -0.831965 6.542902 +108 1.070000 -0.889321 4.972300 +109 1.080000 -0.932223 3.645731 +110 1.090000 -0.962930 2.527753 +111 1.100000 -0.983372 1.588095 +112 1.110000 -0.995200 0.800882 +113 1.120000 -0.999824 0.143980 +114 1.130000 -0.999928 -0.018978 +115 1.140000 -0.999613 -0.044145 +116 1.150000 -0.999046 -0.069290 +117 1.160000 -0.998227 -0.094400 +118 1.170000 -0.997158 -0.119462 +119 1.180000 -0.995838 -0.144464 +120 1.190000 -0.994269 -0.169394 +121 1.200000 -0.992451 -0.194238 +122 1.210000 -0.990384 -0.218985 +123 1.220000 -0.988071 -0.243621 +124 1.230000 -0.985512 -0.268134 +125 1.240000 -0.982709 -0.292513 +126 1.250000 -0.979663 -0.316744 +127 1.260000 -0.976375 -0.340816 +128 1.270000 -0.972847 -0.364716 +129 1.280000 -0.969081 -0.388432 +130 1.290000 -0.965079 -0.411953 +131 1.300000 -0.960843 -0.435266 +132 1.310000 -0.956374 -0.458361 +133 1.320000 -0.951676 -0.481224 +134 1.330000 -0.946751 -0.503845 +135 1.340000 -0.941600 -0.526213 +136 1.350000 -0.936227 -0.548315 +137 1.360000 -0.930635 -0.570142 +138 1.370000 -0.924825 -0.591681 +139 1.380000 -0.918802 -0.612922 +140 1.390000 -0.912568 -0.633855 +141 1.400000 -0.906126 -0.654469 +142 1.410000 -0.899480 -0.674753 +143 1.420000 -0.892632 -0.694697 +144 1.430000 -0.885587 -0.714291 +145 1.440000 -0.878347 -0.733526 +146 1.450000 -0.870918 -0.752392 +147 1.460000 -0.863301 -0.770878 +148 1.470000 -0.855501 -0.788977 +149 1.480000 -0.847523 -0.806678 +150 1.490000 -0.839369 -0.823973 +151 1.500000 -0.831045 -0.840853 +152 1.510000 -0.822553 -0.857310 +153 1.520000 -0.813900 -0.873335 +154 1.530000 -0.805088 -0.888920 +155 1.540000 -0.796123 -0.904058 +156 1.550000 -0.787009 -0.918740 +157 1.560000 -0.777750 -0.932960 +158 1.570000 -0.768351 -0.946710 +159 1.580000 -0.758817 -0.959983 +160 1.590000 -0.749153 -0.972773 +161 1.600000 -0.739363 -0.985073 +162 1.610000 -0.729453 -0.996878 +163 1.620000 -0.719427 -1.008180 +164 1.630000 -0.709291 -1.018974 +165 1.640000 -0.699050 -1.029256 +166 1.650000 -0.688708 -1.039019 +167 1.660000 -0.678271 -1.048259 +168 1.670000 -0.667744 -1.056971 +169 1.680000 -0.657133 -1.065151 +170 1.690000 -0.646443 -1.072795 +171 1.700000 -0.635679 -1.079898 +172 1.710000 -0.624847 -1.086458 +173 1.720000 -0.613952 -1.092471 +174 1.730000 -0.602999 -1.097933 +175 1.740000 -0.591995 -1.102843 +176 1.750000 -0.580944 -1.107197 +177 1.760000 -0.569853 -1.110994 +178 1.770000 -0.558726 -1.114231 +179 1.780000 -0.547570 -1.116908 +180 1.790000 -0.536390 -1.119022 +181 1.800000 -0.525192 -1.120572 +182 1.810000 -0.513981 -1.121559 +183 1.820000 -0.502762 -1.121980 +184 1.830000 -0.491543 -1.121837 +185 1.840000 -0.480328 -1.121129 +186 1.850000 -0.469122 -1.119856 +187 1.860000 -0.457932 -1.118019 +188 1.870000 -0.446764 -1.115620 +189 1.880000 -0.435622 -1.112658 +190 1.890000 -0.424512 -1.109137 +191 1.900000 -0.413441 -1.105056 +192 1.910000 -0.402413 -1.100420 +193 1.920000 -0.391434 -1.095229 +194 1.930000 -0.380510 -1.089487 +195 1.940000 -0.369646 -1.083196 +196 1.950000 -0.358848 -1.076360 +197 1.960000 -0.348121 -1.068982 +198 1.970000 -0.337470 -1.061066 +199 1.980000 -0.326902 -1.052615 +200 1.990000 -0.316420 -1.043634 +201 2.000000 -0.306031 -1.034128 +202 2.010000 -0.295739 -1.024101 +203 2.020000 -0.285550 -1.013559 +204 2.030000 -0.275470 -1.002506 +205 2.040000 -0.265502 -0.990948 +206 2.050000 -0.255652 -0.978892 +207 2.060000 -0.245926 -0.966342 +208 2.070000 -0.236327 -0.953306 +209 2.080000 -0.226861 -0.939790 +210 2.090000 -0.217533 -0.925800 +211 2.100000 -0.208347 -0.911345 +212 2.110000 -0.199307 -0.896430 +213 2.120000 -0.190420 -0.881064 +214 2.130000 -0.181688 -0.865255 +215 2.140000 -0.173116 -0.849010 +216 2.150000 -0.164709 -0.832337 +217 2.160000 -0.156471 -0.815245 +218 2.170000 -0.148405 -0.797743 +219 2.180000 -0.140517 -0.779839 +220 2.190000 -0.132810 -0.761542 +221 2.200000 -0.125288 -0.742862 +222 2.210000 -0.117954 -0.723808 +223 2.220000 -0.110813 -0.704390 +224 2.230000 -0.103867 -0.684616 +225 2.240000 -0.097121 -0.664498 +226 2.250000 -0.090578 -0.644046 +227 2.260000 -0.084242 -0.623269 +228 2.270000 -0.078114 -0.602178 +229 2.280000 -0.072199 -0.580784 +230 2.290000 -0.066499 -0.559098 +231 2.300000 -0.061018 -0.537130 +232 2.310000 -0.055758 -0.514892 +233 2.320000 -0.050721 -0.492394 +234 2.330000 -0.045911 -0.469648 +235 2.340000 -0.041329 -0.446666 +236 2.350000 -0.036978 -0.423459 +237 2.360000 -0.032860 -0.400039 +238 2.370000 -0.028978 -0.376418 +239 2.380000 -0.025333 -0.352606 +240 2.390000 -0.021926 -0.328618 +241 2.400000 -0.018761 -0.304464 +242 2.410000 -0.015838 -0.280156 +243 2.420000 -0.013158 -0.255707 +244 2.430000 -0.010724 -0.231130 +245 2.440000 -0.008536 -0.206436 +246 2.450000 -0.006596 -0.181639 +247 2.460000 -0.004903 -0.156750 +248 2.470000 -0.003461 -0.131782 +249 2.480000 -0.002268 -0.106747 +250 2.490000 -0.001326 -0.081659 +251 2.500000 -0.000635 -0.056530 +252 2.510000 -0.000195 -0.031372 +253 2.520000 -0.000008 -0.006199 +254 2.530000 0.000000 0.000000 +255 2.540000 0.000000 0.000000 +256 2.550000 0.000000 0.000000 +257 2.560000 0.000000 0.000000 +258 2.570000 0.000000 0.000000 +259 2.580000 0.000000 0.000000 +260 2.590000 0.000000 0.000000 +261 2.600000 0.000000 0.000000 +262 2.610000 0.000000 0.000000 +263 2.620000 0.000000 0.000000 +264 2.630000 0.000000 0.000000 +265 2.640000 0.000000 0.000000 +266 2.650000 0.000000 0.000000 +267 2.660000 0.000000 0.000000 +268 2.670000 0.000000 0.000000 +269 2.680000 0.000000 0.000000 +270 2.690000 0.000000 0.000000 +271 2.700000 0.000000 0.000000 +272 2.710000 0.000000 0.000000 +273 2.720000 0.000000 0.000000 +274 2.730000 0.000000 0.000000 +275 2.740000 0.000000 0.000000 +276 2.750000 0.000000 0.000000 +277 2.760000 0.000000 0.000000 +278 2.770000 0.000000 0.000000 +279 2.780000 0.000000 0.000000 +280 2.790000 0.000000 0.000000 +281 2.800000 0.000000 0.000000 +282 2.810000 0.000000 0.000000 +283 2.820000 0.000000 0.000000 +284 2.830000 0.000000 0.000000 +285 2.840000 0.000000 0.000000 +286 2.850000 0.000000 0.000000 +287 2.860000 0.000000 0.000000 +288 2.870000 0.000000 0.000000 +289 2.880000 0.000000 0.000000 +290 2.890000 0.000000 0.000000 +291 2.900000 0.000000 0.000000 +292 2.910000 0.000000 0.000000 +293 2.920000 0.000000 0.000000 +294 2.930000 0.000000 0.000000 +295 2.940000 0.000000 0.000000 +296 2.950000 0.000000 0.000000 +297 2.960000 0.000000 0.000000 +298 2.970000 0.000000 0.000000 +299 2.980000 0.000000 0.000000 +300 2.990000 0.000000 0.000000 +301 3.000000 0.000000 0.000000 + + +TAIL_TAIL_Wc_1.5 +N 301 R 0.000001 3.000000 + +1 0.000001 0.000000 0.000000 +2 0.010000 3999999999995999707725824.000000 4799999999997598070678224896.000000 +3 0.020000 976562499937500004352.000000 585937499981249777762304.000000 +4 0.030000 7526705687148720128.000000 3010682275956881096704.000000 +5 0.040000 238418578125000000.000000 71525573583984353280.000000 +6 0.050000 16383999744000000.000000 3932159969279997440.000000 +7 0.060000 1837574546257248.500000 367514917824838144.000000 +8 0.070000 288990429236596.312500 49541219354796968.000000 +9 0.080000 58207645654678.343750 8731147992610928.000000 +10 0.090000 14162817119182.900391 1888376117671434.750000 +11 0.100000 3999996000000.000000 479999760000000.500000 +12 0.110000 1274521012945.708496 139038779115662.093750 +13 0.120000 448625279546.553955 44862594934250.781250 +14 0.130000 171687100967.122345 15848078337188.726562 +15 0.140000 70553781072.250778 6047489716531.549805 +16 0.150000 30829035351.054977 2466336874723.629883 +17 0.160000 14210616296.622902 1065805162943.433594 +18 0.170000 6865346349.879549 484618532348.129211 +19 0.180000 3457603256.036191 230510803894.961182 +20 0.190000 1807158928.004511 114139038296.617722 +21 0.200000 976499999.999998 58591874999.999847 +22 0.210000 543739902.726732 31072184111.878654 +23 0.220000 311127628.299641 16971560078.724821 +24 0.230000 182499493.379421 9522417580.006592 +25 0.240000 109507052.064558 5475875881.316449 +26 0.250000 67092480.000000 3220832255.999991 +27 0.260000 41903049.941880 1934285732.237306 +28 0.270000 26639528.522336 1184208483.196407 +29 0.280000 17216873.260370 738043867.822060 +30 0.290000 11298625.429098 467668459.533016 +31 0.300000 7521218.724186 300958488.336427 +32 0.310000 5073808.319410 196492716.046068 +33 0.320000 3465721.661655 130034411.505164 +34 0.330000 2395143.138865 87152427.788625 +35 0.340000 1673561.082347 59112555.692539 +36 0.350000 1181528.973318 40546867.041137 +37 0.360000 842332.557402 28108378.157278 +38 0.370000 606071.119890 19681641.931764 +39 0.380000 439893.177446 13912339.662092 +40 0.390000 321924.360071 9922853.684245 +41 0.400000 237442.016602 7137908.935547 +42 0.410000 176435.450812 5176287.635225 +43 0.420000 132031.660059 3782743.515595 +44 0.430000 99468.250044 2784687.558254 +45 0.440000 75416.262744 2064324.130372 +46 0.450000 57529.220585 1540535.337797 +47 0.460000 44139.942254 1156983.644674 +48 0.470000 34054.846645 874222.695500 +49 0.480000 26413.181465 664417.646696 +50 0.490000 20589.881497 507780.654581 +51 0.500000 16128.000000 390144.000000 +52 0.510000 12691.351515 301294.396513 +53 0.520000 10031.077542 233820.872331 +54 0.530000 7961.876154 182311.949517 +55 0.540000 6344.988397 142792.224654 +56 0.550000 5075.941991 112324.247003 +57 0.560000 4075.667156 88725.341557 +58 0.570000 3284.018178 70364.910655 +59 0.580000 2655.022026 56018.454503 +60 0.590000 2153.374227 44761.819610 +61 0.600000 1751.840750 35894.153820 +62 0.610000 1429.321668 28881.467437 +63 0.620000 1169.400839 23315.070198 +64 0.630000 959.254371 18880.806522 +65 0.640000 788.825286 15336.170940 +66 0.650000 650.196650 12493.203783 +67 0.660000 537.113366 10205.647944 +68 0.670000 444.615844 8359.261950 +69 0.680000 368.758212 6864.481939 +70 0.690000 306.390715 5650.839586 +71 0.700000 254.991024 4662.698464 +72 0.710000 212.532986 3855.984565 +73 0.720000 177.384120 3195.669530 +74 0.730000 148.225307 2653.826099 +75 0.740000 123.987627 2208.120224 +76 0.750000 103.802544 1840.637693 +77 0.760000 86.962472 1536.967937 +78 0.770000 72.889471 1285.486272 +79 0.780000 61.110325 1076.789779 +80 0.790000 51.236635 903.252555 +81 0.800000 42.948872 758.673996 +82 0.810000 35.983576 637.999825 +83 0.820000 30.123043 537.100183 +84 0.830000 25.186999 452.592612 +85 0.840000 21.025860 381.700456 +86 0.850000 17.515264 322.139305 +87 0.860000 14.551619 272.025666 +88 0.870000 12.048476 229.803356 +89 0.880000 9.933566 194.184004 +90 0.890000 8.146368 164.098852 +91 0.900000 6.636119 138.659624 +92 0.910000 5.360169 117.126674 +93 0.920000 4.282632 98.883003 +94 0.930000 3.373272 83.413022 +95 0.940000 2.606573 70.285155 +96 0.950000 1.960975 59.137553 +97 0.960000 1.418239 49.666347 +98 0.970000 0.962916 41.615965 +99 0.980000 0.581905 34.771137 +100 0.990000 0.264083 28.950277 +101 1.000000 -0.000000 24.000000 +102 1.010000 -0.218384 19.790571 +103 1.020000 -0.397913 16.212117 +104 1.030000 -0.544418 13.171468 +105 1.040000 -0.662870 10.589529 +106 1.050000 -0.757512 8.399073 +107 1.060000 -0.831965 6.542902 +108 1.070000 -0.889321 4.972300 +109 1.080000 -0.932223 3.645731 +110 1.090000 -0.962930 2.527753 +111 1.100000 -0.983372 1.588095 +112 1.110000 -0.995200 0.800882 +113 1.120000 -0.999824 0.143980 +114 1.130000 -0.999938 -0.016532 +115 1.140000 -0.999663 -0.038456 +116 1.150000 -0.999169 -0.060364 +117 1.160000 -0.998456 -0.082245 +118 1.170000 -0.997524 -0.104090 +119 1.180000 -0.996374 -0.125890 +120 1.190000 -0.995006 -0.147634 +121 1.200000 -0.993421 -0.169313 +122 1.210000 -0.991620 -0.190918 +123 1.220000 -0.989603 -0.212440 +124 1.230000 -0.987372 -0.233868 +125 1.240000 -0.984926 -0.255194 +126 1.250000 -0.982268 -0.276407 +127 1.260000 -0.979399 -0.297500 +128 1.270000 -0.976319 -0.318462 +129 1.280000 -0.973030 -0.339284 +130 1.290000 -0.969533 -0.359958 +131 1.300000 -0.965831 -0.380473 +132 1.310000 -0.961925 -0.400822 +133 1.320000 -0.957815 -0.420995 +134 1.330000 -0.953505 -0.440983 +135 1.340000 -0.948996 -0.460778 +136 1.350000 -0.944290 -0.480371 +137 1.360000 -0.939390 -0.499753 +138 1.370000 -0.934296 -0.518915 +139 1.380000 -0.929012 -0.537851 +140 1.390000 -0.923540 -0.556550 +141 1.400000 -0.917882 -0.575005 +142 1.410000 -0.912041 -0.593208 +143 1.420000 -0.906019 -0.611151 +144 1.430000 -0.899818 -0.628825 +145 1.440000 -0.893443 -0.646224 +146 1.450000 -0.886895 -0.663339 +147 1.460000 -0.880177 -0.680164 +148 1.470000 -0.873293 -0.696690 +149 1.480000 -0.866244 -0.712910 +150 1.490000 -0.859035 -0.728818 +151 1.500000 -0.851669 -0.744406 +152 1.510000 -0.844148 -0.759668 +153 1.520000 -0.836477 -0.774596 +154 1.530000 -0.828658 -0.789184 +155 1.540000 -0.820694 -0.803427 +156 1.550000 -0.812590 -0.817317 +157 1.560000 -0.804349 -0.830848 +158 1.570000 -0.795975 -0.844015 +159 1.580000 -0.787470 -0.856812 +160 1.590000 -0.778840 -0.869233 +161 1.600000 -0.770087 -0.881273 +162 1.610000 -0.761215 -0.892926 +163 1.620000 -0.752229 -0.904188 +164 1.630000 -0.743133 -0.915053 +165 1.640000 -0.733930 -0.925516 +166 1.650000 -0.724624 -0.935574 +167 1.660000 -0.715220 -0.945221 +168 1.670000 -0.705721 -0.954454 +169 1.680000 -0.696132 -0.963267 +170 1.690000 -0.686457 -0.971659 +171 1.700000 -0.676700 -0.979624 +172 1.710000 -0.666866 -0.987160 +173 1.720000 -0.656958 -0.994262 +174 1.730000 -0.646982 -1.000929 +175 1.740000 -0.636941 -1.007156 +176 1.750000 -0.626841 -1.012942 +177 1.760000 -0.616684 -1.018283 +178 1.770000 -0.606476 -1.023177 +179 1.780000 -0.596222 -1.027623 +180 1.790000 -0.585925 -1.031618 +181 1.800000 -0.575591 -1.035161 +182 1.810000 -0.565224 -1.038249 +183 1.820000 -0.554828 -1.040883 +184 1.830000 -0.544408 -1.043059 +185 1.840000 -0.533968 -1.044778 +186 1.850000 -0.523514 -1.046039 +187 1.860000 -0.513049 -1.046841 +188 1.870000 -0.502578 -1.047184 +189 1.880000 -0.492107 -1.047067 +190 1.890000 -0.481638 -1.046491 +191 1.900000 -0.471178 -1.045456 +192 1.910000 -0.460731 -1.043963 +193 1.920000 -0.450301 -1.042011 +194 1.930000 -0.439892 -1.039603 +195 1.940000 -0.429510 -1.036739 +196 1.950000 -0.419159 -1.033419 +197 1.960000 -0.408843 -1.029647 +198 1.970000 -0.398567 -1.025423 +199 1.980000 -0.388336 -1.020749 +200 1.990000 -0.378154 -1.015627 +201 2.000000 -0.368025 -1.010060 +202 2.010000 -0.357954 -1.004050 +203 2.020000 -0.347946 -0.997599 +204 2.030000 -0.338004 -0.990711 +205 2.040000 -0.328133 -0.983389 +206 2.050000 -0.318337 -0.975635 +207 2.060000 -0.308622 -0.967453 +208 2.070000 -0.298990 -0.958846 +209 2.080000 -0.289446 -0.949819 +210 2.090000 -0.279995 -0.940376 +211 2.100000 -0.270640 -0.930520 +212 2.110000 -0.261386 -0.920255 +213 2.120000 -0.252236 -0.909588 +214 2.130000 -0.243195 -0.898521 +215 2.140000 -0.234267 -0.887060 +216 2.150000 -0.225455 -0.875210 +217 2.160000 -0.216764 -0.862976 +218 2.170000 -0.208197 -0.850363 +219 2.180000 -0.199758 -0.837378 +220 2.190000 -0.191451 -0.824025 +221 2.200000 -0.183279 -0.810311 +222 2.210000 -0.175246 -0.796241 +223 2.220000 -0.167355 -0.781822 +224 2.230000 -0.159610 -0.767060 +225 2.240000 -0.152015 -0.751962 +226 2.250000 -0.144572 -0.736534 +227 2.260000 -0.137285 -0.720783 +228 2.270000 -0.130158 -0.704715 +229 2.280000 -0.123192 -0.688339 +230 2.290000 -0.116392 -0.671661 +231 2.300000 -0.109760 -0.654688 +232 2.310000 -0.103299 -0.637427 +233 2.320000 -0.097012 -0.619888 +234 2.330000 -0.090902 -0.602076 +235 2.340000 -0.084972 -0.584000 +236 2.350000 -0.079223 -0.565668 +237 2.360000 -0.073659 -0.547088 +238 2.370000 -0.068282 -0.528268 +239 2.380000 -0.063095 -0.509216 +240 2.390000 -0.058099 -0.489941 +241 2.400000 -0.053296 -0.470451 +242 2.410000 -0.048690 -0.450755 +243 2.420000 -0.044282 -0.430861 +244 2.430000 -0.040074 -0.410778 +245 2.440000 -0.036067 -0.390515 +246 2.450000 -0.032264 -0.370080 +247 2.460000 -0.028666 -0.349483 +248 2.470000 -0.025275 -0.328733 +249 2.480000 -0.022092 -0.307839 +250 2.490000 -0.019118 -0.286809 +251 2.500000 -0.016356 -0.265654 +252 2.510000 -0.013806 -0.244382 +253 2.520000 -0.011469 -0.223004 +254 2.530000 -0.009346 -0.201527 +255 2.540000 -0.007439 -0.179962 +256 2.550000 -0.005747 -0.158318 +257 2.560000 -0.004272 -0.136604 +258 2.570000 -0.003015 -0.114831 +259 2.580000 -0.001976 -0.093007 +260 2.590000 -0.001155 -0.071142 +261 2.600000 -0.000553 -0.049247 +262 2.610000 -0.000170 -0.027329 +263 2.620000 -0.000007 -0.005400 +264 2.630000 0.000000 0.000000 +265 2.640000 0.000000 0.000000 +266 2.650000 0.000000 0.000000 +267 2.660000 0.000000 0.000000 +268 2.670000 0.000000 0.000000 +269 2.680000 0.000000 0.000000 +270 2.690000 0.000000 0.000000 +271 2.700000 0.000000 0.000000 +272 2.710000 0.000000 0.000000 +273 2.720000 0.000000 0.000000 +274 2.730000 0.000000 0.000000 +275 2.740000 0.000000 0.000000 +276 2.750000 0.000000 0.000000 +277 2.760000 0.000000 0.000000 +278 2.770000 0.000000 0.000000 +279 2.780000 0.000000 0.000000 +280 2.790000 0.000000 0.000000 +281 2.800000 0.000000 0.000000 +282 2.810000 0.000000 0.000000 +283 2.820000 0.000000 0.000000 +284 2.830000 0.000000 0.000000 +285 2.840000 0.000000 0.000000 +286 2.850000 0.000000 0.000000 +287 2.860000 0.000000 0.000000 +288 2.870000 0.000000 0.000000 +289 2.880000 0.000000 0.000000 +290 2.890000 0.000000 0.000000 +291 2.900000 0.000000 0.000000 +292 2.910000 0.000000 0.000000 +293 2.920000 0.000000 0.000000 +294 2.930000 0.000000 0.000000 +295 2.940000 0.000000 0.000000 +296 2.950000 0.000000 0.000000 +297 2.960000 0.000000 0.000000 +298 2.970000 0.000000 0.000000 +299 2.980000 0.000000 0.000000 +300 2.990000 0.000000 0.000000 +301 3.000000 0.000000 0.000000 + + +TAIL_TAIL_Wc_1.6 +N 301 R 0.000001 3.000000 + +1 0.000001 0.000000 0.000000 +2 0.010000 3999999999995999707725824.000000 4799999999997598070678224896.000000 +3 0.020000 976562499937500004352.000000 585937499981249777762304.000000 +4 0.030000 7526705687148720128.000000 3010682275956881096704.000000 +5 0.040000 238418578125000000.000000 71525573583984353280.000000 +6 0.050000 16383999744000000.000000 3932159969279997440.000000 +7 0.060000 1837574546257248.500000 367514917824838144.000000 +8 0.070000 288990429236596.312500 49541219354796968.000000 +9 0.080000 58207645654678.343750 8731147992610928.000000 +10 0.090000 14162817119182.900391 1888376117671434.750000 +11 0.100000 3999996000000.000000 479999760000000.500000 +12 0.110000 1274521012945.708496 139038779115662.093750 +13 0.120000 448625279546.553955 44862594934250.781250 +14 0.130000 171687100967.122345 15848078337188.726562 +15 0.140000 70553781072.250778 6047489716531.549805 +16 0.150000 30829035351.054977 2466336874723.629883 +17 0.160000 14210616296.622902 1065805162943.433594 +18 0.170000 6865346349.879549 484618532348.129211 +19 0.180000 3457603256.036191 230510803894.961182 +20 0.190000 1807158928.004511 114139038296.617722 +21 0.200000 976499999.999998 58591874999.999847 +22 0.210000 543739902.726732 31072184111.878654 +23 0.220000 311127628.299641 16971560078.724821 +24 0.230000 182499493.379421 9522417580.006592 +25 0.240000 109507052.064558 5475875881.316449 +26 0.250000 67092480.000000 3220832255.999991 +27 0.260000 41903049.941880 1934285732.237306 +28 0.270000 26639528.522336 1184208483.196407 +29 0.280000 17216873.260370 738043867.822060 +30 0.290000 11298625.429098 467668459.533016 +31 0.300000 7521218.724186 300958488.336427 +32 0.310000 5073808.319410 196492716.046068 +33 0.320000 3465721.661655 130034411.505164 +34 0.330000 2395143.138865 87152427.788625 +35 0.340000 1673561.082347 59112555.692539 +36 0.350000 1181528.973318 40546867.041137 +37 0.360000 842332.557402 28108378.157278 +38 0.370000 606071.119890 19681641.931764 +39 0.380000 439893.177446 13912339.662092 +40 0.390000 321924.360071 9922853.684245 +41 0.400000 237442.016602 7137908.935547 +42 0.410000 176435.450812 5176287.635225 +43 0.420000 132031.660059 3782743.515595 +44 0.430000 99468.250044 2784687.558254 +45 0.440000 75416.262744 2064324.130372 +46 0.450000 57529.220585 1540535.337797 +47 0.460000 44139.942254 1156983.644674 +48 0.470000 34054.846645 874222.695500 +49 0.480000 26413.181465 664417.646696 +50 0.490000 20589.881497 507780.654581 +51 0.500000 16128.000000 390144.000000 +52 0.510000 12691.351515 301294.396513 +53 0.520000 10031.077542 233820.872331 +54 0.530000 7961.876154 182311.949517 +55 0.540000 6344.988397 142792.224654 +56 0.550000 5075.941991 112324.247003 +57 0.560000 4075.667156 88725.341557 +58 0.570000 3284.018178 70364.910655 +59 0.580000 2655.022026 56018.454503 +60 0.590000 2153.374227 44761.819610 +61 0.600000 1751.840750 35894.153820 +62 0.610000 1429.321668 28881.467437 +63 0.620000 1169.400839 23315.070198 +64 0.630000 959.254371 18880.806522 +65 0.640000 788.825286 15336.170940 +66 0.650000 650.196650 12493.203783 +67 0.660000 537.113366 10205.647944 +68 0.670000 444.615844 8359.261950 +69 0.680000 368.758212 6864.481939 +70 0.690000 306.390715 5650.839586 +71 0.700000 254.991024 4662.698464 +72 0.710000 212.532986 3855.984565 +73 0.720000 177.384120 3195.669530 +74 0.730000 148.225307 2653.826099 +75 0.740000 123.987627 2208.120224 +76 0.750000 103.802544 1840.637693 +77 0.760000 86.962472 1536.967937 +78 0.770000 72.889471 1285.486272 +79 0.780000 61.110325 1076.789779 +80 0.790000 51.236635 903.252555 +81 0.800000 42.948872 758.673996 +82 0.810000 35.983576 637.999825 +83 0.820000 30.123043 537.100183 +84 0.830000 25.186999 452.592612 +85 0.840000 21.025860 381.700456 +86 0.850000 17.515264 322.139305 +87 0.860000 14.551619 272.025666 +88 0.870000 12.048476 229.803356 +89 0.880000 9.933566 194.184004 +90 0.890000 8.146368 164.098852 +91 0.900000 6.636119 138.659624 +92 0.910000 5.360169 117.126674 +93 0.920000 4.282632 98.883003 +94 0.930000 3.373272 83.413022 +95 0.940000 2.606573 70.285155 +96 0.950000 1.960975 59.137553 +97 0.960000 1.418239 49.666347 +98 0.970000 0.962916 41.615965 +99 0.980000 0.581905 34.771137 +100 0.990000 0.264083 28.950277 +101 1.000000 -0.000000 24.000000 +102 1.010000 -0.218384 19.790571 +103 1.020000 -0.397913 16.212117 +104 1.030000 -0.544418 13.171468 +105 1.040000 -0.662870 10.589529 +106 1.050000 -0.757512 8.399073 +107 1.060000 -0.831965 6.542902 +108 1.070000 -0.889321 4.972300 +109 1.080000 -0.932223 3.645731 +110 1.090000 -0.962930 2.527753 +111 1.100000 -0.983372 1.588095 +112 1.110000 -0.995200 0.800882 +113 1.120000 -0.999824 0.143980 +114 1.130000 -0.999945 -0.014530 +115 1.140000 -0.999704 -0.033800 +116 1.150000 -0.999269 -0.053058 +117 1.160000 -0.998642 -0.072295 +118 1.170000 -0.997823 -0.091504 +119 1.180000 -0.996813 -0.110678 +120 1.190000 -0.995610 -0.129809 +121 1.200000 -0.994217 -0.148890 +122 1.210000 -0.992632 -0.167914 +123 1.220000 -0.990858 -0.186872 +124 1.230000 -0.988895 -0.205759 +125 1.240000 -0.986744 -0.224567 +126 1.250000 -0.984404 -0.243288 +127 1.260000 -0.981878 -0.261915 +128 1.270000 -0.979166 -0.280441 +129 1.280000 -0.976270 -0.298859 +130 1.290000 -0.973189 -0.317162 +131 1.300000 -0.969927 -0.335343 +132 1.310000 -0.966483 -0.353394 +133 1.320000 -0.962859 -0.371309 +134 1.330000 -0.959057 -0.389081 +135 1.340000 -0.955078 -0.406703 +136 1.350000 -0.950924 -0.424169 +137 1.360000 -0.946595 -0.441470 +138 1.370000 -0.942095 -0.458602 +139 1.380000 -0.937424 -0.475556 +140 1.390000 -0.932584 -0.492328 +141 1.400000 -0.927578 -0.508909 +142 1.410000 -0.922407 -0.525294 +143 1.420000 -0.917073 -0.541477 +144 1.430000 -0.911578 -0.557451 +145 1.440000 -0.905925 -0.573211 +146 1.450000 -0.900115 -0.588749 +147 1.460000 -0.894150 -0.604060 +148 1.470000 -0.888034 -0.619138 +149 1.480000 -0.881768 -0.633978 +150 1.490000 -0.875355 -0.648573 +151 1.500000 -0.868798 -0.662918 +152 1.510000 -0.862098 -0.677008 +153 1.520000 -0.855258 -0.690836 +154 1.530000 -0.848282 -0.704399 +155 1.540000 -0.841171 -0.717689 +156 1.550000 -0.833929 -0.730703 +157 1.560000 -0.826558 -0.743436 +158 1.570000 -0.819061 -0.755882 +159 1.580000 -0.811442 -0.768036 +160 1.590000 -0.803702 -0.779894 +161 1.600000 -0.795845 -0.791452 +162 1.610000 -0.787874 -0.802704 +163 1.620000 -0.779792 -0.813647 +164 1.630000 -0.771602 -0.824276 +165 1.640000 -0.763307 -0.834588 +166 1.650000 -0.754911 -0.844578 +167 1.660000 -0.746417 -0.854242 +168 1.670000 -0.737827 -0.863577 +169 1.680000 -0.729146 -0.872579 +170 1.690000 -0.720377 -0.881244 +171 1.700000 -0.711522 -0.889570 +172 1.710000 -0.702587 -0.897553 +173 1.720000 -0.693573 -0.905190 +174 1.730000 -0.684484 -0.912478 +175 1.740000 -0.675324 -0.919414 +176 1.750000 -0.666097 -0.925995 +177 1.760000 -0.656805 -0.932220 +178 1.770000 -0.647454 -0.938085 +179 1.780000 -0.638045 -0.943589 +180 1.790000 -0.628583 -0.948729 +181 1.800000 -0.619072 -0.953503 +182 1.810000 -0.609514 -0.957909 +183 1.820000 -0.599915 -0.961947 +184 1.830000 -0.590277 -0.965613 +185 1.840000 -0.580604 -0.968907 +186 1.850000 -0.570900 -0.971828 +187 1.860000 -0.561168 -0.974373 +188 1.870000 -0.551413 -0.976544 +189 1.880000 -0.541639 -0.978338 +190 1.890000 -0.531848 -0.979754 +191 1.900000 -0.522045 -0.980793 +192 1.910000 -0.512233 -0.981454 +193 1.920000 -0.502417 -0.981736 +194 1.930000 -0.492600 -0.981640 +195 1.940000 -0.482786 -0.981166 +196 1.950000 -0.472978 -0.980313 +197 1.960000 -0.463181 -0.979082 +198 1.970000 -0.453397 -0.977474 +199 1.980000 -0.443632 -0.975489 +200 1.990000 -0.433889 -0.973128 +201 2.000000 -0.424171 -0.970392 +202 2.010000 -0.414482 -0.967282 +203 2.020000 -0.404827 -0.963798 +204 2.030000 -0.395208 -0.959944 +205 2.040000 -0.385629 -0.955719 +206 2.050000 -0.376094 -0.951125 +207 2.060000 -0.366608 -0.946165 +208 2.070000 -0.357172 -0.940841 +209 2.080000 -0.347792 -0.935153 +210 2.090000 -0.338471 -0.929105 +211 2.100000 -0.329211 -0.922699 +212 2.110000 -0.320018 -0.915937 +213 2.120000 -0.310894 -0.908822 +214 2.130000 -0.301842 -0.901357 +215 2.140000 -0.292868 -0.893544 +216 2.150000 -0.283973 -0.885387 +217 2.160000 -0.275161 -0.876888 +218 2.170000 -0.266436 -0.868051 +219 2.180000 -0.257801 -0.858880 +220 2.190000 -0.249260 -0.849377 +221 2.200000 -0.240815 -0.839548 +222 2.210000 -0.232470 -0.829394 +223 2.220000 -0.224228 -0.818921 +224 2.230000 -0.216092 -0.808132 +225 2.240000 -0.208066 -0.797031 +226 2.250000 -0.200153 -0.785623 +227 2.260000 -0.192355 -0.773912 +228 2.270000 -0.184676 -0.761903 +229 2.280000 -0.177118 -0.749600 +230 2.290000 -0.169684 -0.737009 +231 2.300000 -0.162379 -0.724133 +232 2.310000 -0.155203 -0.710977 +233 2.320000 -0.148160 -0.697548 +234 2.330000 -0.141253 -0.683850 +235 2.340000 -0.134484 -0.669888 +236 2.350000 -0.127856 -0.655668 +237 2.360000 -0.121371 -0.641196 +238 2.370000 -0.115033 -0.626476 +239 2.380000 -0.108843 -0.611514 +240 2.390000 -0.102803 -0.596317 +241 2.400000 -0.096917 -0.580890 +242 2.410000 -0.091186 -0.565239 +243 2.420000 -0.085613 -0.549370 +244 2.430000 -0.080199 -0.533289 +245 2.440000 -0.074948 -0.517002 +246 2.450000 -0.069860 -0.500517 +247 2.460000 -0.064938 -0.483838 +248 2.470000 -0.060184 -0.466973 +249 2.480000 -0.055599 -0.449928 +250 2.490000 -0.051186 -0.432709 +251 2.500000 -0.046946 -0.415323 +252 2.510000 -0.042880 -0.397778 +253 2.520000 -0.038991 -0.380079 +254 2.530000 -0.035279 -0.362233 +255 2.540000 -0.031746 -0.344248 +256 2.550000 -0.028394 -0.326130 +257 2.560000 -0.025224 -0.307887 +258 2.570000 -0.022237 -0.289525 +259 2.580000 -0.019434 -0.271051 +260 2.590000 -0.016816 -0.252472 +261 2.600000 -0.014385 -0.233797 +262 2.610000 -0.012141 -0.215031 +263 2.620000 -0.010085 -0.196182 +264 2.630000 -0.008217 -0.177258 +265 2.640000 -0.006540 -0.158265 +266 2.650000 -0.005052 -0.139211 +267 2.660000 -0.003756 -0.120104 +268 2.670000 -0.002650 -0.100950 +269 2.680000 -0.001737 -0.081757 +270 2.690000 -0.001015 -0.062533 +271 2.700000 -0.000486 -0.043285 +272 2.710000 -0.000150 -0.024020 +273 2.720000 -0.000006 -0.004746 +274 2.730000 0.000000 0.000000 +275 2.740000 0.000000 0.000000 +276 2.750000 0.000000 0.000000 +277 2.760000 0.000000 0.000000 +278 2.770000 0.000000 0.000000 +279 2.780000 0.000000 0.000000 +280 2.790000 0.000000 0.000000 +281 2.800000 0.000000 0.000000 +282 2.810000 0.000000 0.000000 +283 2.820000 0.000000 0.000000 +284 2.830000 0.000000 0.000000 +285 2.840000 0.000000 0.000000 +286 2.850000 0.000000 0.000000 +287 2.860000 0.000000 0.000000 +288 2.870000 0.000000 0.000000 +289 2.880000 0.000000 0.000000 +290 2.890000 0.000000 0.000000 +291 2.900000 0.000000 0.000000 +292 2.910000 0.000000 0.000000 +293 2.920000 0.000000 0.000000 +294 2.930000 0.000000 0.000000 +295 2.940000 0.000000 0.000000 +296 2.950000 0.000000 0.000000 +297 2.960000 0.000000 0.000000 +298 2.970000 0.000000 0.000000 +299 2.980000 0.000000 0.000000 +300 2.990000 0.000000 0.000000 +301 3.000000 0.000000 0.000000 + + +TAIL_TAIL_Wc_1.7 +N 301 R 0.000001 3.000000 + +1 0.000001 0.000000 0.000000 +2 0.010000 3999999999995999707725824.000000 4799999999997598070678224896.000000 +3 0.020000 976562499937500004352.000000 585937499981249777762304.000000 +4 0.030000 7526705687148720128.000000 3010682275956881096704.000000 +5 0.040000 238418578125000000.000000 71525573583984353280.000000 +6 0.050000 16383999744000000.000000 3932159969279997440.000000 +7 0.060000 1837574546257248.500000 367514917824838144.000000 +8 0.070000 288990429236596.312500 49541219354796968.000000 +9 0.080000 58207645654678.343750 8731147992610928.000000 +10 0.090000 14162817119182.900391 1888376117671434.750000 +11 0.100000 3999996000000.000000 479999760000000.500000 +12 0.110000 1274521012945.708496 139038779115662.093750 +13 0.120000 448625279546.553955 44862594934250.781250 +14 0.130000 171687100967.122345 15848078337188.726562 +15 0.140000 70553781072.250778 6047489716531.549805 +16 0.150000 30829035351.054977 2466336874723.629883 +17 0.160000 14210616296.622902 1065805162943.433594 +18 0.170000 6865346349.879549 484618532348.129211 +19 0.180000 3457603256.036191 230510803894.961182 +20 0.190000 1807158928.004511 114139038296.617722 +21 0.200000 976499999.999998 58591874999.999847 +22 0.210000 543739902.726732 31072184111.878654 +23 0.220000 311127628.299641 16971560078.724821 +24 0.230000 182499493.379421 9522417580.006592 +25 0.240000 109507052.064558 5475875881.316449 +26 0.250000 67092480.000000 3220832255.999991 +27 0.260000 41903049.941880 1934285732.237306 +28 0.270000 26639528.522336 1184208483.196407 +29 0.280000 17216873.260370 738043867.822060 +30 0.290000 11298625.429098 467668459.533016 +31 0.300000 7521218.724186 300958488.336427 +32 0.310000 5073808.319410 196492716.046068 +33 0.320000 3465721.661655 130034411.505164 +34 0.330000 2395143.138865 87152427.788625 +35 0.340000 1673561.082347 59112555.692539 +36 0.350000 1181528.973318 40546867.041137 +37 0.360000 842332.557402 28108378.157278 +38 0.370000 606071.119890 19681641.931764 +39 0.380000 439893.177446 13912339.662092 +40 0.390000 321924.360071 9922853.684245 +41 0.400000 237442.016602 7137908.935547 +42 0.410000 176435.450812 5176287.635225 +43 0.420000 132031.660059 3782743.515595 +44 0.430000 99468.250044 2784687.558254 +45 0.440000 75416.262744 2064324.130372 +46 0.450000 57529.220585 1540535.337797 +47 0.460000 44139.942254 1156983.644674 +48 0.470000 34054.846645 874222.695500 +49 0.480000 26413.181465 664417.646696 +50 0.490000 20589.881497 507780.654581 +51 0.500000 16128.000000 390144.000000 +52 0.510000 12691.351515 301294.396513 +53 0.520000 10031.077542 233820.872331 +54 0.530000 7961.876154 182311.949517 +55 0.540000 6344.988397 142792.224654 +56 0.550000 5075.941991 112324.247003 +57 0.560000 4075.667156 88725.341557 +58 0.570000 3284.018178 70364.910655 +59 0.580000 2655.022026 56018.454503 +60 0.590000 2153.374227 44761.819610 +61 0.600000 1751.840750 35894.153820 +62 0.610000 1429.321668 28881.467437 +63 0.620000 1169.400839 23315.070198 +64 0.630000 959.254371 18880.806522 +65 0.640000 788.825286 15336.170940 +66 0.650000 650.196650 12493.203783 +67 0.660000 537.113366 10205.647944 +68 0.670000 444.615844 8359.261950 +69 0.680000 368.758212 6864.481939 +70 0.690000 306.390715 5650.839586 +71 0.700000 254.991024 4662.698464 +72 0.710000 212.532986 3855.984565 +73 0.720000 177.384120 3195.669530 +74 0.730000 148.225307 2653.826099 +75 0.740000 123.987627 2208.120224 +76 0.750000 103.802544 1840.637693 +77 0.760000 86.962472 1536.967937 +78 0.770000 72.889471 1285.486272 +79 0.780000 61.110325 1076.789779 +80 0.790000 51.236635 903.252555 +81 0.800000 42.948872 758.673996 +82 0.810000 35.983576 637.999825 +83 0.820000 30.123043 537.100183 +84 0.830000 25.186999 452.592612 +85 0.840000 21.025860 381.700456 +86 0.850000 17.515264 322.139305 +87 0.860000 14.551619 272.025666 +88 0.870000 12.048476 229.803356 +89 0.880000 9.933566 194.184004 +90 0.890000 8.146368 164.098852 +91 0.900000 6.636119 138.659624 +92 0.910000 5.360169 117.126674 +93 0.920000 4.282632 98.883003 +94 0.930000 3.373272 83.413022 +95 0.940000 2.606573 70.285155 +96 0.950000 1.960975 59.137553 +97 0.960000 1.418239 49.666347 +98 0.970000 0.962916 41.615965 +99 0.980000 0.581905 34.771137 +100 0.990000 0.264083 28.950277 +101 1.000000 -0.000000 24.000000 +102 1.010000 -0.218384 19.790571 +103 1.020000 -0.397913 16.212117 +104 1.030000 -0.544418 13.171468 +105 1.040000 -0.662870 10.589529 +106 1.050000 -0.757512 8.399073 +107 1.060000 -0.831965 6.542902 +108 1.070000 -0.889321 4.972300 +109 1.080000 -0.932223 3.645731 +110 1.090000 -0.962930 2.527753 +111 1.100000 -0.983372 1.588095 +112 1.110000 -0.995200 0.800882 +113 1.120000 -0.999824 0.143980 +114 1.130000 -0.999951 -0.012871 +115 1.140000 -0.999737 -0.029942 +116 1.150000 -0.999353 -0.047002 +117 1.160000 -0.998797 -0.064046 +118 1.170000 -0.998072 -0.081069 +119 1.180000 -0.997176 -0.098064 +120 1.190000 -0.996111 -0.115025 +121 1.200000 -0.994876 -0.131947 +122 1.210000 -0.993472 -0.148824 +123 1.220000 -0.991899 -0.165650 +124 1.230000 -0.990159 -0.182419 +125 1.240000 -0.988251 -0.199127 +126 1.250000 -0.986177 -0.215766 +127 1.260000 -0.983936 -0.232332 +128 1.270000 -0.981530 -0.248818 +129 1.280000 -0.978960 -0.265219 +130 1.290000 -0.976226 -0.281530 +131 1.300000 -0.973330 -0.297744 +132 1.310000 -0.970272 -0.313857 +133 1.320000 -0.967053 -0.329863 +134 1.330000 -0.963675 -0.345756 +135 1.340000 -0.960138 -0.361531 +136 1.350000 -0.956445 -0.377182 +137 1.360000 -0.952595 -0.392705 +138 1.370000 -0.948591 -0.408094 +139 1.380000 -0.944434 -0.423343 +140 1.390000 -0.940125 -0.438448 +141 1.400000 -0.935665 -0.453403 +142 1.410000 -0.931057 -0.468203 +143 1.420000 -0.926302 -0.482843 +144 1.430000 -0.921401 -0.497318 +145 1.440000 -0.916356 -0.511624 +146 1.450000 -0.911169 -0.525754 +147 1.460000 -0.905841 -0.539706 +148 1.470000 -0.900375 -0.553472 +149 1.480000 -0.894773 -0.567050 +150 1.490000 -0.889035 -0.580435 +151 1.500000 -0.883165 -0.593621 +152 1.510000 -0.877163 -0.606604 +153 1.520000 -0.871033 -0.619380 +154 1.530000 -0.864776 -0.631945 +155 1.540000 -0.858395 -0.644294 +156 1.550000 -0.851891 -0.656422 +157 1.560000 -0.845267 -0.668327 +158 1.570000 -0.838526 -0.680003 +159 1.580000 -0.831668 -0.691448 +160 1.590000 -0.824697 -0.702656 +161 1.600000 -0.817616 -0.713624 +162 1.610000 -0.810426 -0.724348 +163 1.620000 -0.803130 -0.734825 +164 1.630000 -0.795730 -0.745051 +165 1.640000 -0.788229 -0.755023 +166 1.650000 -0.780630 -0.764737 +167 1.660000 -0.772936 -0.774189 +168 1.670000 -0.765148 -0.783378 +169 1.680000 -0.757269 -0.792298 +170 1.690000 -0.749302 -0.800948 +171 1.700000 -0.741251 -0.809325 +172 1.710000 -0.733117 -0.817425 +173 1.720000 -0.724903 -0.825246 +174 1.730000 -0.716613 -0.832786 +175 1.740000 -0.708249 -0.840041 +176 1.750000 -0.699813 -0.847009 +177 1.760000 -0.691309 -0.853687 +178 1.770000 -0.682740 -0.860075 +179 1.780000 -0.674109 -0.866168 +180 1.790000 -0.665418 -0.871966 +181 1.800000 -0.656670 -0.877466 +182 1.810000 -0.647870 -0.882666 +183 1.820000 -0.639018 -0.887565 +184 1.830000 -0.630119 -0.892161 +185 1.840000 -0.621176 -0.896452 +186 1.850000 -0.612191 -0.900437 +187 1.860000 -0.603168 -0.904114 +188 1.870000 -0.594110 -0.907483 +189 1.880000 -0.585020 -0.910542 +190 1.890000 -0.575900 -0.913290 +191 1.900000 -0.566755 -0.915726 +192 1.910000 -0.557587 -0.917849 +193 1.920000 -0.548399 -0.919659 +194 1.930000 -0.539195 -0.921155 +195 1.940000 -0.529977 -0.922336 +196 1.950000 -0.520749 -0.923202 +197 1.960000 -0.511514 -0.923753 +198 1.970000 -0.502275 -0.923988 +199 1.980000 -0.493035 -0.923908 +200 1.990000 -0.483798 -0.923513 +201 2.000000 -0.474566 -0.922802 +202 2.010000 -0.465343 -0.921776 +203 2.020000 -0.456132 -0.920435 +204 2.030000 -0.446935 -0.918779 +205 2.040000 -0.437757 -0.916810 +206 2.050000 -0.428600 -0.914528 +207 2.060000 -0.419467 -0.911934 +208 2.070000 -0.410362 -0.909028 +209 2.080000 -0.401288 -0.905812 +210 2.090000 -0.392247 -0.902286 +211 2.100000 -0.383243 -0.898453 +212 2.110000 -0.374279 -0.894312 +213 2.120000 -0.365358 -0.889866 +214 2.130000 -0.356483 -0.885116 +215 2.140000 -0.347657 -0.880064 +216 2.150000 -0.338883 -0.874712 +217 2.160000 -0.330163 -0.869060 +218 2.170000 -0.321502 -0.863112 +219 2.180000 -0.312902 -0.856869 +220 2.190000 -0.304366 -0.850334 +221 2.200000 -0.295896 -0.843508 +222 2.210000 -0.287497 -0.836394 +223 2.220000 -0.279170 -0.828994 +224 2.230000 -0.270918 -0.821312 +225 2.240000 -0.262744 -0.813348 +226 2.250000 -0.254652 -0.805108 +227 2.260000 -0.246643 -0.796592 +228 2.270000 -0.238721 -0.787804 +229 2.280000 -0.230888 -0.778747 +230 2.290000 -0.223147 -0.769424 +231 2.300000 -0.215500 -0.759838 +232 2.310000 -0.207951 -0.749993 +233 2.320000 -0.200501 -0.739892 +234 2.330000 -0.193154 -0.729538 +235 2.340000 -0.185911 -0.718935 +236 2.350000 -0.178776 -0.708087 +237 2.360000 -0.171750 -0.696996 +238 2.370000 -0.164837 -0.685668 +239 2.380000 -0.158038 -0.674105 +240 2.390000 -0.151356 -0.662313 +241 2.400000 -0.144792 -0.650294 +242 2.410000 -0.138350 -0.638053 +243 2.420000 -0.132032 -0.625594 +244 2.430000 -0.125839 -0.612921 +245 2.440000 -0.119774 -0.600039 +246 2.450000 -0.113839 -0.586953 +247 2.460000 -0.108036 -0.573665 +248 2.470000 -0.102366 -0.560182 +249 2.480000 -0.096833 -0.546508 +250 2.490000 -0.091437 -0.532647 +251 2.500000 -0.086181 -0.518604 +252 2.510000 -0.081065 -0.504384 +253 2.520000 -0.076093 -0.489991 +254 2.530000 -0.071266 -0.475432 +255 2.540000 -0.066585 -0.460710 +256 2.550000 -0.062052 -0.445831 +257 2.560000 -0.057669 -0.430799 +258 2.570000 -0.053437 -0.415620 +259 2.580000 -0.049357 -0.400300 +260 2.590000 -0.045431 -0.384842 +261 2.600000 -0.041661 -0.369254 +262 2.610000 -0.038047 -0.353539 +263 2.620000 -0.034591 -0.337703 +264 2.630000 -0.031293 -0.321752 +265 2.640000 -0.028156 -0.305692 +266 2.650000 -0.025180 -0.289526 +267 2.660000 -0.022366 -0.273262 +268 2.670000 -0.019715 -0.256905 +269 2.680000 -0.017228 -0.240460 +270 2.690000 -0.014906 -0.223933 +271 2.700000 -0.012749 -0.207329 +272 2.710000 -0.010759 -0.190654 +273 2.720000 -0.008937 -0.173915 +274 2.730000 -0.007281 -0.157116 +275 2.740000 -0.005794 -0.140263 +276 2.750000 -0.004476 -0.123363 +277 2.760000 -0.003327 -0.106420 +278 2.770000 -0.002348 -0.089441 +279 2.780000 -0.001539 -0.072431 +280 2.790000 -0.000899 -0.055397 +281 2.800000 -0.000431 -0.038344 +282 2.810000 -0.000133 -0.021278 +283 2.820000 -0.000005 -0.004204 +284 2.830000 0.000000 0.000000 +285 2.840000 0.000000 0.000000 +286 2.850000 0.000000 0.000000 +287 2.860000 0.000000 0.000000 +288 2.870000 0.000000 0.000000 +289 2.880000 0.000000 0.000000 +290 2.890000 0.000000 0.000000 +291 2.900000 0.000000 0.000000 +292 2.910000 0.000000 0.000000 +293 2.920000 0.000000 0.000000 +294 2.930000 0.000000 0.000000 +295 2.940000 0.000000 0.000000 +296 2.950000 0.000000 0.000000 +297 2.960000 0.000000 0.000000 +298 2.970000 0.000000 0.000000 +299 2.980000 0.000000 0.000000 +300 2.990000 0.000000 0.000000 +301 3.000000 0.000000 0.000000 + + +TAIL_TAIL_Wc_1.8 +N 301 R 0.000001 3.000000 + +1 0.000001 0.000000 0.000000 +2 0.010000 3999999999995999707725824.000000 4799999999997598070678224896.000000 +3 0.020000 976562499937500004352.000000 585937499981249777762304.000000 +4 0.030000 7526705687148720128.000000 3010682275956881096704.000000 +5 0.040000 238418578125000000.000000 71525573583984353280.000000 +6 0.050000 16383999744000000.000000 3932159969279997440.000000 +7 0.060000 1837574546257248.500000 367514917824838144.000000 +8 0.070000 288990429236596.312500 49541219354796968.000000 +9 0.080000 58207645654678.343750 8731147992610928.000000 +10 0.090000 14162817119182.900391 1888376117671434.750000 +11 0.100000 3999996000000.000000 479999760000000.500000 +12 0.110000 1274521012945.708496 139038779115662.093750 +13 0.120000 448625279546.553955 44862594934250.781250 +14 0.130000 171687100967.122345 15848078337188.726562 +15 0.140000 70553781072.250778 6047489716531.549805 +16 0.150000 30829035351.054977 2466336874723.629883 +17 0.160000 14210616296.622902 1065805162943.433594 +18 0.170000 6865346349.879549 484618532348.129211 +19 0.180000 3457603256.036191 230510803894.961182 +20 0.190000 1807158928.004511 114139038296.617722 +21 0.200000 976499999.999998 58591874999.999847 +22 0.210000 543739902.726732 31072184111.878654 +23 0.220000 311127628.299641 16971560078.724821 +24 0.230000 182499493.379421 9522417580.006592 +25 0.240000 109507052.064558 5475875881.316449 +26 0.250000 67092480.000000 3220832255.999991 +27 0.260000 41903049.941880 1934285732.237306 +28 0.270000 26639528.522336 1184208483.196407 +29 0.280000 17216873.260370 738043867.822060 +30 0.290000 11298625.429098 467668459.533016 +31 0.300000 7521218.724186 300958488.336427 +32 0.310000 5073808.319410 196492716.046068 +33 0.320000 3465721.661655 130034411.505164 +34 0.330000 2395143.138865 87152427.788625 +35 0.340000 1673561.082347 59112555.692539 +36 0.350000 1181528.973318 40546867.041137 +37 0.360000 842332.557402 28108378.157278 +38 0.370000 606071.119890 19681641.931764 +39 0.380000 439893.177446 13912339.662092 +40 0.390000 321924.360071 9922853.684245 +41 0.400000 237442.016602 7137908.935547 +42 0.410000 176435.450812 5176287.635225 +43 0.420000 132031.660059 3782743.515595 +44 0.430000 99468.250044 2784687.558254 +45 0.440000 75416.262744 2064324.130372 +46 0.450000 57529.220585 1540535.337797 +47 0.460000 44139.942254 1156983.644674 +48 0.470000 34054.846645 874222.695500 +49 0.480000 26413.181465 664417.646696 +50 0.490000 20589.881497 507780.654581 +51 0.500000 16128.000000 390144.000000 +52 0.510000 12691.351515 301294.396513 +53 0.520000 10031.077542 233820.872331 +54 0.530000 7961.876154 182311.949517 +55 0.540000 6344.988397 142792.224654 +56 0.550000 5075.941991 112324.247003 +57 0.560000 4075.667156 88725.341557 +58 0.570000 3284.018178 70364.910655 +59 0.580000 2655.022026 56018.454503 +60 0.590000 2153.374227 44761.819610 +61 0.600000 1751.840750 35894.153820 +62 0.610000 1429.321668 28881.467437 +63 0.620000 1169.400839 23315.070198 +64 0.630000 959.254371 18880.806522 +65 0.640000 788.825286 15336.170940 +66 0.650000 650.196650 12493.203783 +67 0.660000 537.113366 10205.647944 +68 0.670000 444.615844 8359.261950 +69 0.680000 368.758212 6864.481939 +70 0.690000 306.390715 5650.839586 +71 0.700000 254.991024 4662.698464 +72 0.710000 212.532986 3855.984565 +73 0.720000 177.384120 3195.669530 +74 0.730000 148.225307 2653.826099 +75 0.740000 123.987627 2208.120224 +76 0.750000 103.802544 1840.637693 +77 0.760000 86.962472 1536.967937 +78 0.770000 72.889471 1285.486272 +79 0.780000 61.110325 1076.789779 +80 0.790000 51.236635 903.252555 +81 0.800000 42.948872 758.673996 +82 0.810000 35.983576 637.999825 +83 0.820000 30.123043 537.100183 +84 0.830000 25.186999 452.592612 +85 0.840000 21.025860 381.700456 +86 0.850000 17.515264 322.139305 +87 0.860000 14.551619 272.025666 +88 0.870000 12.048476 229.803356 +89 0.880000 9.933566 194.184004 +90 0.890000 8.146368 164.098852 +91 0.900000 6.636119 138.659624 +92 0.910000 5.360169 117.126674 +93 0.920000 4.282632 98.883003 +94 0.930000 3.373272 83.413022 +95 0.940000 2.606573 70.285155 +96 0.950000 1.960975 59.137553 +97 0.960000 1.418239 49.666347 +98 0.970000 0.962916 41.615965 +99 0.980000 0.581905 34.771137 +100 0.990000 0.264083 28.950277 +101 1.000000 -0.000000 24.000000 +102 1.010000 -0.218384 19.790571 +103 1.020000 -0.397913 16.212117 +104 1.030000 -0.544418 13.171468 +105 1.040000 -0.662870 10.589529 +106 1.050000 -0.757512 8.399073 +107 1.060000 -0.831965 6.542902 +108 1.070000 -0.889321 4.972300 +109 1.080000 -0.932223 3.645731 +110 1.090000 -0.962930 2.527753 +111 1.100000 -0.983372 1.588095 +112 1.110000 -0.995200 0.800882 +113 1.120000 -0.999824 0.143980 +114 1.130000 -0.999957 -0.011481 +115 1.140000 -0.999766 -0.026708 +116 1.150000 -0.999423 -0.041927 +117 1.160000 -0.998927 -0.057133 +118 1.170000 -0.998280 -0.072321 +119 1.180000 -0.997481 -0.087488 +120 1.190000 -0.996530 -0.102628 +121 1.200000 -0.995428 -0.117737 +122 1.210000 -0.994176 -0.132810 +123 1.220000 -0.992772 -0.147842 +124 1.230000 -0.991219 -0.162830 +125 1.240000 -0.989516 -0.177768 +126 1.250000 -0.987664 -0.192651 +127 1.260000 -0.985663 -0.207476 +128 1.270000 -0.983515 -0.222238 +129 1.280000 -0.981219 -0.236932 +130 1.290000 -0.978776 -0.251554 +131 1.300000 -0.976188 -0.266099 +132 1.310000 -0.973454 -0.280564 +133 1.320000 -0.970577 -0.294942 +134 1.330000 -0.967556 -0.309231 +135 1.340000 -0.964393 -0.323426 +136 1.350000 -0.961088 -0.337522 +137 1.360000 -0.957642 -0.351516 +138 1.370000 -0.954058 -0.365402 +139 1.380000 -0.950335 -0.379177 +140 1.390000 -0.946475 -0.392837 +141 1.400000 -0.942478 -0.406376 +142 1.410000 -0.938347 -0.419793 +143 1.420000 -0.934083 -0.433081 +144 1.430000 -0.929686 -0.446237 +145 1.440000 -0.925159 -0.459257 +146 1.450000 -0.920502 -0.472138 +147 1.460000 -0.915716 -0.484875 +148 1.470000 -0.910805 -0.497464 +149 1.480000 -0.905768 -0.509901 +150 1.490000 -0.900607 -0.522183 +151 1.500000 -0.895325 -0.534306 +152 1.510000 -0.889922 -0.546266 +153 1.520000 -0.884400 -0.558060 +154 1.530000 -0.878761 -0.569684 +155 1.540000 -0.873007 -0.581134 +156 1.550000 -0.867139 -0.592408 +157 1.560000 -0.861159 -0.603501 +158 1.570000 -0.855069 -0.614410 +159 1.580000 -0.848872 -0.625132 +160 1.590000 -0.842567 -0.635663 +161 1.600000 -0.836159 -0.646001 +162 1.610000 -0.829648 -0.656142 +163 1.620000 -0.823037 -0.666083 +164 1.630000 -0.816327 -0.675822 +165 1.640000 -0.809521 -0.685354 +166 1.650000 -0.802621 -0.694678 +167 1.660000 -0.795628 -0.703790 +168 1.670000 -0.788546 -0.712688 +169 1.680000 -0.781375 -0.721368 +170 1.690000 -0.774119 -0.729829 +171 1.700000 -0.766779 -0.738068 +172 1.710000 -0.759358 -0.746081 +173 1.720000 -0.751858 -0.753868 +174 1.730000 -0.744282 -0.761425 +175 1.740000 -0.736631 -0.768750 +176 1.750000 -0.728908 -0.775840 +177 1.760000 -0.721115 -0.782695 +178 1.770000 -0.713254 -0.789311 +179 1.780000 -0.705329 -0.795686 +180 1.790000 -0.697341 -0.801819 +181 1.800000 -0.689294 -0.807708 +182 1.810000 -0.681188 -0.813351 +183 1.820000 -0.673027 -0.818746 +184 1.830000 -0.664814 -0.823892 +185 1.840000 -0.656550 -0.828787 +186 1.850000 -0.648239 -0.833429 +187 1.860000 -0.639883 -0.837818 +188 1.870000 -0.631484 -0.841951 +189 1.880000 -0.623045 -0.845828 +190 1.890000 -0.614568 -0.849447 +191 1.900000 -0.606056 -0.852807 +192 1.910000 -0.597513 -0.855908 +193 1.920000 -0.588939 -0.858748 +194 1.930000 -0.580339 -0.861326 +195 1.940000 -0.571714 -0.863642 +196 1.950000 -0.563067 -0.865695 +197 1.960000 -0.554401 -0.867484 +198 1.970000 -0.545718 -0.869009 +199 1.980000 -0.537021 -0.870269 +200 1.990000 -0.528313 -0.871264 +201 2.000000 -0.519597 -0.871994 +202 2.010000 -0.510874 -0.872458 +203 2.020000 -0.502149 -0.872657 +204 2.030000 -0.493422 -0.872589 +205 2.040000 -0.484698 -0.872256 +206 2.050000 -0.475978 -0.871657 +207 2.060000 -0.467265 -0.870792 +208 2.070000 -0.458563 -0.869663 +209 2.080000 -0.449873 -0.868268 +210 2.090000 -0.441198 -0.866609 +211 2.100000 -0.432542 -0.864686 +212 2.110000 -0.423906 -0.862499 +213 2.120000 -0.415293 -0.860050 +214 2.130000 -0.406705 -0.857339 +215 2.140000 -0.398147 -0.854367 +216 2.150000 -0.389619 -0.851134 +217 2.160000 -0.381125 -0.847642 +218 2.170000 -0.372667 -0.843892 +219 2.180000 -0.364248 -0.839885 +220 2.190000 -0.355870 -0.835622 +221 2.200000 -0.347536 -0.831105 +222 2.210000 -0.339249 -0.826334 +223 2.220000 -0.331010 -0.821311 +224 2.230000 -0.322824 -0.816039 +225 2.240000 -0.314691 -0.810518 +226 2.250000 -0.306614 -0.804750 +227 2.260000 -0.298596 -0.798737 +228 2.270000 -0.290640 -0.792480 +229 2.280000 -0.282748 -0.785982 +230 2.290000 -0.274921 -0.779245 +231 2.300000 -0.267163 -0.772270 +232 2.310000 -0.259477 -0.765061 +233 2.320000 -0.251863 -0.757618 +234 2.330000 -0.244325 -0.749944 +235 2.340000 -0.236865 -0.742042 +236 2.350000 -0.229485 -0.733914 +237 2.360000 -0.222187 -0.725562 +238 2.370000 -0.214974 -0.716989 +239 2.380000 -0.207848 -0.708198 +240 2.390000 -0.200811 -0.699191 +241 2.400000 -0.193865 -0.689971 +242 2.410000 -0.187012 -0.680541 +243 2.420000 -0.180255 -0.670904 +244 2.430000 -0.173595 -0.661062 +245 2.440000 -0.167034 -0.651019 +246 2.450000 -0.160575 -0.640778 +247 2.460000 -0.154220 -0.630342 +248 2.470000 -0.147969 -0.619713 +249 2.480000 -0.141826 -0.608896 +250 2.490000 -0.135792 -0.597893 +251 2.500000 -0.129869 -0.586708 +252 2.510000 -0.124058 -0.575344 +253 2.520000 -0.118362 -0.563805 +254 2.530000 -0.112783 -0.552095 +255 2.540000 -0.107321 -0.540216 +256 2.550000 -0.101979 -0.528173 +257 2.560000 -0.096758 -0.515968 +258 2.570000 -0.091660 -0.503607 +259 2.580000 -0.086686 -0.491092 +260 2.590000 -0.081839 -0.478428 +261 2.600000 -0.077118 -0.465618 +262 2.610000 -0.072527 -0.452666 +263 2.620000 -0.068066 -0.439576 +264 2.630000 -0.063736 -0.426352 +265 2.640000 -0.059539 -0.412998 +266 2.650000 -0.055476 -0.399519 +267 2.660000 -0.051549 -0.385918 +268 2.670000 -0.047758 -0.372199 +269 2.680000 -0.044105 -0.358367 +270 2.690000 -0.040591 -0.344426 +271 2.700000 -0.037217 -0.330380 +272 2.710000 -0.033984 -0.316233 +273 2.720000 -0.030893 -0.301990 +274 2.730000 -0.027945 -0.287655 +275 2.740000 -0.025140 -0.273232 +276 2.750000 -0.022480 -0.258726 +277 2.760000 -0.019966 -0.244141 +278 2.770000 -0.017598 -0.229482 +279 2.780000 -0.015376 -0.214753 +280 2.790000 -0.013303 -0.199959 +281 2.800000 -0.011377 -0.185103 +282 2.810000 -0.009601 -0.170192 +283 2.820000 -0.007974 -0.155228 +284 2.830000 -0.006496 -0.140217 +285 2.840000 -0.005170 -0.125164 +286 2.850000 -0.003993 -0.110072 +287 2.860000 -0.002968 -0.094947 +288 2.870000 -0.002095 -0.079793 +289 2.880000 -0.001372 -0.064614 +290 2.890000 -0.000802 -0.049416 +291 2.900000 -0.000384 -0.034203 +292 2.910000 -0.000118 -0.018979 +293 2.920000 -0.000005 -0.003750 +294 2.930000 0.000000 0.000000 +295 2.940000 0.000000 0.000000 +296 2.950000 0.000000 0.000000 +297 2.960000 0.000000 0.000000 +298 2.970000 0.000000 0.000000 +299 2.980000 0.000000 0.000000 +300 2.990000 0.000000 0.000000 +301 3.000000 0.000000 0.000000 + diff --git a/tools/moltemplate/moltemplate/force_fields/cooke_deserno_lipid.lt b/tools/moltemplate/moltemplate/force_fields/cooke_deserno_lipid.lt new file mode 100644 index 0000000000000000000000000000000000000000..949a81b1e7488106e690a9b46fab6f60bdec48ef --- /dev/null +++ b/tools/moltemplate/moltemplate/force_fields/cooke_deserno_lipid.lt @@ -0,0 +1,43 @@ +# CDlipid is a lipid model from: +# "Tunable generic model for fluid bilayer membranes" +# Cooke IR, Kremer K, Deserno M, Physical Review E, 2005 +# (Author: David Stelter, BU) + +CDlipid { + # 3-bead model of COOKE, KREMER, DESERNO + write_once("In Init") { + units lj + atom_style full + + bond_style hybrid harmonic fene + pair_style hybrid table linear 600 + pair_modify shift yes + special_bonds lj 0.0 1.0 1.0 + + neigh_modify every 1 delay 1 + neighbor 0.3 bin + } + write_once("In Settings") { + pair_coeff @atom:H @atom:H table tabulated_potential.dat HEAD_HEAD + pair_coeff @atom:H @atom:T table tabulated_potential.dat HEAD_TAIL + # (Note: The "HEAD_TAIL" table is the same as the "HEAD_HEAD" table.) + pair_coeff @atom:T @atom:T table tabulated_potential.dat TAIL_TAIL_Wc_1.5 + bond_coeff @bond:har harmonic 10.0 4.0 + bond_coeff @bond:fene fene 30.0 1.5 0.0 0.0 + } + write("Data Atoms") { + $atom:1 $mol:. @atom:H 0.0 0.00 0.00 2.20 + $atom:2 $mol:. @atom:T 0.0 0.00 0.00 1.10 + $atom:3 $mol:. @atom:T 0.0 0.00 0.00 0.00 + } + write("Data Bonds") { + $bond:b1 @bond:fene $atom:1 $atom:2 + $bond:b2 @bond:fene $atom:2 $atom:3 + $bond:b3 @bond:har $atom:1 $atom:3 + } + write_once("Data Masses") { + @atom:H 1.0 ## Head Bead + @atom:T 1.0 ## Tail Bead + } +} # CDlipid + diff --git a/tools/moltemplate/src/moltemplate_force_fields/gaff.lt b/tools/moltemplate/moltemplate/force_fields/gaff.lt similarity index 100% rename from tools/moltemplate/src/moltemplate_force_fields/gaff.lt rename to tools/moltemplate/moltemplate/force_fields/gaff.lt diff --git a/tools/moltemplate/src/moltemplate_force_fields/graphene.lt b/tools/moltemplate/moltemplate/force_fields/graphene.lt similarity index 78% rename from tools/moltemplate/src/moltemplate_force_fields/graphene.lt rename to tools/moltemplate/moltemplate/force_fields/graphene.lt index c54a380f62ec40951e3be65d4bcf9371b72b0841..3bc476c3ab06b27c2f3bd31b0716873755165485 100644 --- a/tools/moltemplate/src/moltemplate_force_fields/graphene.lt +++ b/tools/moltemplate/moltemplate/force_fields/graphene.lt @@ -17,9 +17,15 @@ Graphene { # i j epsilon sigma pair_coeff @atom:C @atom:C lj/cut/coul/long 0.068443 3.407 - # These Lennard-Jones parameters come from + # The Lennard-Jones parameters above were chosen to realistically model + # the interaction between graphene and water # R. Saito, R. Matsuo, T. Kimura, G. Dresselhaus, M.S. Dresselhaus, # Chem Phys Lett, 348:187 (2001) + # NOTE: If you want to simulate movement of the carbon atoms, then you must + # choose a more appropriate force field for the carbon atoms, such as + # AIREBO or Tersoff. You can do this by editing the "pair_coeff" above. + # (The paper by C.F. Cornwell, C.R. Welch, J. Chem. Phys. (2011), Vol 134, + # demonstrates how to use the AIREBO potential in LAMMPS.) # Define a group consisting of only carbon atoms in graphene molecules group Cgraphene type @atom:C diff --git a/tools/moltemplate/src/moltemplate_force_fields/graphite.lt b/tools/moltemplate/moltemplate/force_fields/graphite.lt similarity index 100% rename from tools/moltemplate/src/moltemplate_force_fields/graphite.lt rename to tools/moltemplate/moltemplate/force_fields/graphite.lt diff --git a/tools/moltemplate/src/moltemplate_force_fields/images/graphene_unit_cell.jpg b/tools/moltemplate/moltemplate/force_fields/images/graphene_unit_cell.jpg similarity index 100% rename from tools/moltemplate/src/moltemplate_force_fields/images/graphene_unit_cell.jpg rename to tools/moltemplate/moltemplate/force_fields/images/graphene_unit_cell.jpg diff --git a/tools/moltemplate/src/moltemplate_force_fields/images/ice_rect8_unitcell.png b/tools/moltemplate/moltemplate/force_fields/images/ice_rect8_unitcell.png similarity index 100% rename from tools/moltemplate/src/moltemplate_force_fields/images/ice_rect8_unitcell.png rename to tools/moltemplate/moltemplate/force_fields/images/ice_rect8_unitcell.png diff --git a/tools/moltemplate/src/moltemplate_force_fields/images/spce_ball_and_stick.jpg b/tools/moltemplate/moltemplate/force_fields/images/spce_ball_and_stick.jpg similarity index 100% rename from tools/moltemplate/src/moltemplate_force_fields/images/spce_ball_and_stick.jpg rename to tools/moltemplate/moltemplate/force_fields/images/spce_ball_and_stick.jpg diff --git a/tools/moltemplate/moltemplate/force_fields/loplsaa.lt b/tools/moltemplate/moltemplate/force_fields/loplsaa.lt new file mode 100644 index 0000000000000000000000000000000000000000..0c9614632c6b38eab4c72debbcf8ee60368d7f14 --- /dev/null +++ b/tools/moltemplate/moltemplate/force_fields/loplsaa.lt @@ -0,0 +1,633 @@ +########################################################################### +## Extra OPLSAA parameters and atom types for long hydrocarbon chains ## +## SOURCE: Sui, Pluhackova, Böckmann, J.Chem.Theory.Comp (2012), 8, 1459 ## +## CREDIT: Sebastian Echeverri (file format conversion) ## +########################################################################### +# This file was generated using: +# tinkerparm2lt.py -name LOPLSAA -file loplsaa_ext.prm -dihedral-style opls +# (and then edited manually to make sure the +# bond, angle, and improper interactions for these atoms +# remain unchanged) + + +import "oplsaa.lt" # <-- Load the ordinary OPLS parameters + # We will extend and override them below + + + +OPLSAA { + + # Additional atom types and parameters appended to the OPLSAA force-field: + + write_once("In Charges") { + set type @atom:80L charge -0.222 # "Alkane CH3- (LOPLS CT_CH3)" + set type @atom:81L charge -0.148 # "Alkane -CH2- (LOPLS CT_CH2)" + set type @atom:85LCH3 charge 0.074 # "Alkane H-C CH3 (LOPLS HC_CH3)" + set type @atom:85LCH2 charge 0.074 # "Alkane H-C CH2 (LOPLS HC_CH2)" + set type @atom:87L charge -0.16 # "Alkene RH-C= (LOPLS CM_CH)" + set type @atom:89L charge 0.16 # "Alkene H-C= (LOPLS HC_CH)" + set type @atom:86L charge 0.0 # "Alkene R2-C= (LOPLS)" + set type @atom:88L charge -0.23 # "Alkene H2-C= (LOPLS)" + set type @atom:169L charge 0.005 # "Chloroalkene Cl-CH= (LOPLS)" + set type @atom:266L charge -0.07 # "Uracil & Thymine C5 (LOPLS)" + set type @atom:267L charge 0.08 # "Uracil & Thymine C6 (LOPLS)" + set type @atom:280L charge -0.06 # "Cytosine C5 (LOPLS)" + set type @atom:281L charge 0.1 # "Cytosine C6 (LOPLS)" + set type @atom:324L charge -0.06 # "CytosineH+ C5 (LOPLS)" + set type @atom:325L charge 0.1 # "CytosineH+ C6 (LOPLS)" + set type @atom:340L charge 0.18 # "Trifluorothymine CF3- (LOPLS)" + set type @atom:342L charge 0.12 # "Chloroalkene Cl2-C= (LOPLS)" + set type @atom:458L charge -0.03 # "Vinyl Ether =CH-OR (LOPLS)" + set type @atom:459L charge 0.085 # "Vinyl Ether =CR-OR (LOPLS)" + set type @atom:649L charge -0.344 # "Cl..CH3..Cl- Sn2 TS (LOPLS)" + set type @atom:900L charge -0.25 # "Allene/Ketene H2C=C=X (LOPLS)" + set type @atom:901L charge -0.1 # "Allene/Ketene HRC=C=X (LOPLS)" + set type @atom:902L charge 0.05 # "Allene/Ketene R2C=C=X (LOPLS)" + } #(end of atom partial charges) + + + write_once("Data Masses") { + @atom:80L 12.011 + @atom:81L 12.011 + @atom:85LCH3 1.008 + @atom:85LCH2 1.008 + @atom:87L 12.011 + @atom:89L 1.008 + @atom:86L 12.011 + @atom:88L 12.011 + @atom:169L 12.011 + @atom:266L 12.011 + @atom:267L 12.011 + @atom:280L 12.011 + @atom:281L 12.011 + @atom:324L 12.011 + @atom:325L 12.011 + @atom:340L 12.011 + @atom:342L 12.011 + @atom:458L 12.011 + @atom:459L 12.011 + @atom:649L 12.011 + @atom:900L 12.011 + @atom:901L 12.011 + @atom:902L 12.011 + } #(end of atom masses) + + # ------- force-field-IDs for bonded interaction lookup ------- + # (First append the "force-field-ID" to the atom type name. + # Later use these expanded names for force-field lookup.) + replace{ @atom:80L @atom:80L_b13_a13_d13L_i13 } + replace{ @atom:81L @atom:81L_b13_a13_d13L_i13 } + replace{ @atom:85LCH3 @atom:85LCH3_b46_a46_d46_i46 } + replace{ @atom:85LCH2 @atom:85LCH2_b46_a46_d46_i46 } + replace{ @atom:87L @atom:87L_b47_a47_d47L_i47 } + replace{ @atom:89L @atom:89L_b46_a46_d46_i46 } + replace{ @atom:86L @atom:86L_b47_a47_d47L_i47 } + replace{ @atom:88L @atom:88L_b47_a47_d47L_i47 } + replace{ @atom:169L @atom:169L_b47_a47_d47L_i47 } + replace{ @atom:266L @atom:266L_b47_a47_d47L_i47 } + replace{ @atom:267L @atom:267L_b47_a47_d47L_i47 } + replace{ @atom:280L @atom:280L_b47_a47_d47L_i47 } + replace{ @atom:281L @atom:281L_b47_a47_d47L_i47 } + replace{ @atom:324L @atom:324L_b47_a47_d47L_i47 } + replace{ @atom:325L @atom:325L_b47_a47_d47L_i47 } + replace{ @atom:340L @atom:340L_b47_a47_d47L_i47 } + replace{ @atom:342L @atom:342L_b47_a47_d47L_i47 } + replace{ @atom:458L @atom:458L_b47_a47_d47L_i47 } + replace{ @atom:459L @atom:459L_b47_a47_d47L_i47 } + replace{ @atom:649L @atom:649L_b47_a47_d47L_i47 } + replace{ @atom:900L @atom:900L_b47_a47_d47L_i47 } + replace{ @atom:901L @atom:901L_b47_a47_d47L_i47 } + replace{ @atom:902L @atom:902L_b47_a47_d47L_i47 } + #(end of force-field-IDs) + + write_once("In Settings") { + pair_coeff @atom:80L_b13_a13_d13L_i13 @atom:80L_b13_a13_d13L_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:81L_b13_a13_d13L_i13 @atom:81L_b13_a13_d13L_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:85LCH3_b46_a46_d46_i46 @atom:85LCH3_b46_a46_d46_i46 lj/cut/coul/long 0.03 2.5 + pair_coeff @atom:85LCH2_b46_a46_d46_i46 @atom:85LCH2_b46_a46_d46_i46 lj/cut/coul/long 0.026290630975 2.5 + pair_coeff @atom:87L_b47_a47_d47L_i47 @atom:87L_b47_a47_d47L_i47 lj/cut/coul/long 0.076 3.55 + pair_coeff @atom:89L_b46_a46_d46_i46 @atom:89L_b46_a46_d46_i46 lj/cut/coul/long 0.03 2.42 + pair_coeff @atom:86L_b47_a47_d47L_i47 @atom:86L_b47_a47_d47L_i47 lj/cut/coul/long 0.076 3.55 + pair_coeff @atom:88L_b47_a47_d47L_i47 @atom:88L_b47_a47_d47L_i47 lj/cut/coul/long 0.076 3.55 + pair_coeff @atom:169L_b47_a47_d47L_i47 @atom:169L_b47_a47_d47L_i47 lj/cut/coul/long 0.076 3.55 + pair_coeff @atom:266L_b47_a47_d47L_i47 @atom:266L_b47_a47_d47L_i47 lj/cut/coul/long 0.08 3.5 + pair_coeff @atom:267L_b47_a47_d47L_i47 @atom:267L_b47_a47_d47L_i47 lj/cut/coul/long 0.08 3.5 + pair_coeff @atom:280L_b47_a47_d47L_i47 @atom:280L_b47_a47_d47L_i47 lj/cut/coul/long 0.08 3.5 + pair_coeff @atom:281L_b47_a47_d47L_i47 @atom:281L_b47_a47_d47L_i47 lj/cut/coul/long 0.08 3.5 + pair_coeff @atom:324L_b47_a47_d47L_i47 @atom:324L_b47_a47_d47L_i47 lj/cut/coul/long 0.08 3.5 + pair_coeff @atom:325L_b47_a47_d47L_i47 @atom:325L_b47_a47_d47L_i47 lj/cut/coul/long 0.08 3.5 + pair_coeff @atom:340L_b47_a47_d47L_i47 @atom:340L_b47_a47_d47L_i47 lj/cut/coul/long 0.08 3.5 + pair_coeff @atom:342L_b47_a47_d47L_i47 @atom:342L_b47_a47_d47L_i47 lj/cut/coul/long 0.076 3.55 + pair_coeff @atom:458L_b47_a47_d47L_i47 @atom:458L_b47_a47_d47L_i47 lj/cut/coul/long 0.076 3.55 + pair_coeff @atom:459L_b47_a47_d47L_i47 @atom:459L_b47_a47_d47L_i47 lj/cut/coul/long 0.076 3.55 + pair_coeff @atom:649L_b47_a47_d47L_i47 @atom:649L_b47_a47_d47L_i47 lj/cut/coul/long 0.076 3.55 + pair_coeff @atom:900L_b47_a47_d47L_i47 @atom:900L_b47_a47_d47L_i47 lj/cut/coul/long 0.086 3.3 + pair_coeff @atom:901L_b47_a47_d47L_i47 @atom:901L_b47_a47_d47L_i47 lj/cut/coul/long 0.086 3.3 + pair_coeff @atom:902L_b47_a47_d47L_i47 @atom:902L_b47_a47_d47L_i47 lj/cut/coul/long 0.086 3.3 + } #(end of pair_coeffs) + + + # Bond parameters for these atoms are not modified + + # Angle parameters for these atoms are not modified + + # Improper parameters for these atoms are not modified + + # Dihedral parameters for some of these atoms are modified: + + write_once("In Settings") { + dihedral_coeff @dihedral:13L-13L-13L-13L opls 0.6446926386 -0.2143420172 0.1782194073 0.0 + dihedral_coeff @dihedral:X-47L-47L-X opls 0.0 12.2502629063 0.0 0.0 + dihedral_coeff @dihedral:47L-47L-13L-13L opls -0.8050121893 0.3218905354 -0.1032768881 0.0 + dihedral_coeff @dihedral:13L-13L-13L-47L opls 0.4821902486 0.1343683078 0.1777461759 0.0 + } #(end of dihedral_coeffs) + + + # First we must slightly loosen the requirements to generate dihedrals + # involving atom types d13 or d47. We want the same rules to apply + # for atoms of type d13L and d47L. To cover both of these cases, + # I replaced "d13_" with "d13*_" in the lines below: + # (Later I will add the custom dihedrals for these atom types.) + + write_once("Data Dihedrals By Type") { + @dihedral:2-2-2-13 @atom:*_b*_a*_d2_i* @atom:*_b*_a*_d2_i* @atom:*_b*_a*_d2_i* @atom:*_b*_a*_d13*_i* + @dihedral:2-2-13-2 @atom:*_b*_a*_d2_i* @atom:*_b*_a*_d2_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d2_i* + @dihedral:4-3-3-13 @atom:*_b*_a*_d4_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d13*_i* + @dihedral:13-3-3-13 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d13*_i* + @dihedral:13-3-3-24 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d24_i* + @dihedral:13-3-3-46 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d46_i* + @dihedral:13-3-5-7 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d5_i* @atom:*_b*_a*_d7_i* + @dihedral:1-3-13-13 @atom:*_b*_a*_d1_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* + @dihedral:1-3-13-46 @atom:*_b*_a*_d1_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d46_i* + @dihedral:3-3-13-46 @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d46_i* + @dihedral:4-3-13-X @atom:*_b*_a*_d4_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d13*_i* @atom:* + @dihedral:4-3-13-13 @atom:*_b*_a*_d4_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* + @dihedral:4-3-13-21 @atom:*_b*_a*_d4_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d21_i* + @dihedral:4-3-13-44 @atom:*_b*_a*_d4_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d44_i* + @dihedral:4-3-13-24 @atom:*_b*_a*_d4_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d24_i* + @dihedral:4-3-13-46 @atom:*_b*_a*_d4_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d46_i* + @dihedral:4-3-13-48 @atom:*_b*_a*_d4_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d48_i* + @dihedral:5-3-13-13 @atom:*_b*_a*_d5_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* + @dihedral:5-3-13-44 @atom:*_b*_a*_d5_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d44_i* + @dihedral:5-3-13-46 @atom:*_b*_a*_d5_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d46_i* + @dihedral:13-3-13-13 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* + @dihedral:13-3-13-46 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d46_i* + @dihedral:20-3-13-13 @atom:*_b*_a*_d20_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* + @dihedral:20-3-13-46 @atom:*_b*_a*_d20_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d46_i* + @dihedral:21-3-13-13 @atom:*_b*_a*_d21_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* + @dihedral:21-3-13-46 @atom:*_b*_a*_d21_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d46_i* + @dihedral:24-3-13-13 @atom:*_b*_a*_d24_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* + @dihedral:24-3-13-21 @atom:*_b*_a*_d24_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d21_i* + @dihedral:24-3-13-24 @atom:*_b*_a*_d24_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d24_i* + @dihedral:24-3-13-46 @atom:*_b*_a*_d24_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d46_i* + @dihedral:46-3-13-13 @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* + @dihedral:46-3-13-46 @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d46_i* + @dihedral:48-3-13-46 @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d46_i* + @dihedral:52-3-13-13 @atom:*_b*_a*_d52_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* + @dihedral:52-3-13-44 @atom:*_b*_a*_d52_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d44_i* + @dihedral:52-3-13-46 @atom:*_b*_a*_d52_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d46_i* + @dihedral:65-3-13-13 @atom:*_b*_a*_d65_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* + @dihedral:65-3-13-46 @atom:*_b*_a*_d65_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d46_i* + @dihedral:107-3-13-46 @atom:*_b*_a*_d107_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d46_i* + @dihedral:4-3-20-13 @atom:*_b*_a*_d4_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d20_i* @atom:*_b*_a*_d13*_i* + @dihedral:13-3-20-13 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d20_i* @atom:*_b*_a*_d13*_i* + @dihedral:13-3-20-48 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d20_i* @atom:*_b*_a*_d48_i* + @dihedral:24-3-20-13 @atom:*_b*_a*_d24_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d20_i* @atom:*_b*_a*_d13*_i* + @dihedral:46-3-20-13 @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d20_i* @atom:*_b*_a*_d13*_i* + @dihedral:48-3-20-13 @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d20_i* @atom:*_b*_a*_d13*_i* + @dihedral:3-3-24-13 @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d24_i* @atom:*_b*_a*_d13*_i* + @dihedral:4-3-24-13 @atom:*_b*_a*_d4_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d24_i* @atom:*_b*_a*_d13*_i* + @dihedral:4-3-24-47 @atom:*_b*_a*_d4_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d24_i* @atom:*_b*_a*_d47*_i* + @dihedral:5-3-24-13 @atom:*_b*_a*_d5_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d24_i* @atom:*_b*_a*_d13*_i* + @dihedral:13-3-24-5 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d24_i* @atom:*_b*_a*_d5_i* + @dihedral:13-3-24-13 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d24_i* @atom:*_b*_a*_d13*_i* + @dihedral:13-3-24-45 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d24_i* @atom:*_b*_a*_d45_i* + @dihedral:13-3-24-48 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d24_i* @atom:*_b*_a*_d48_i* + @dihedral:20-3-24-13 @atom:*_b*_a*_d20_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d24_i* @atom:*_b*_a*_d13*_i* + @dihedral:24-3-24-13 @atom:*_b*_a*_d24_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d24_i* @atom:*_b*_a*_d13*_i* + @dihedral:46-3-24-13 @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d24_i* @atom:*_b*_a*_d13*_i* + @dihedral:47-3-24-45 @atom:*_b*_a*_d47*_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d24_i* @atom:*_b*_a*_d45_i* + @dihedral:X-3-47-13 @atom:* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d47*_i* @atom:*_b*_a*_d13*_i* + @dihedral:4-3-47-46 @atom:*_b*_a*_d4_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d47*_i* @atom:*_b*_a*_d46_i* + @dihedral:4-3-47-47 @atom:*_b*_a*_d4_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d47*_i* @atom:*_b*_a*_d47*_i* + @dihedral:5-3-47-47 @atom:*_b*_a*_d5_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d47*_i* @atom:*_b*_a*_d47*_i* + @dihedral:24-3-47-46 @atom:*_b*_a*_d24_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d47*_i* @atom:*_b*_a*_d46_i* + @dihedral:24-3-47-47 @atom:*_b*_a*_d24_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d47*_i* @atom:*_b*_a*_d47*_i* + @dihedral:107-3-47-46 @atom:*_b*_a*_d107_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d47*_i* @atom:*_b*_a*_d46_i* + @dihedral:107-3-47-47 @atom:*_b*_a*_d107_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d47*_i* @atom:*_b*_a*_d47*_i* + @dihedral:13-3-48-48 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d48_i* + @dihedral:X-3-50-13 @atom:* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d50_i* @atom:*_b*_a*_d13*_i* + @dihedral:4-3-50-47 @atom:*_b*_a*_d4_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d50_i* @atom:*_b*_a*_d47*_i* + @dihedral:5-3-50-47 @atom:*_b*_a*_d5_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d50_i* @atom:*_b*_a*_d47*_i* + @dihedral:13-3-50-47 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d50_i* @atom:*_b*_a*_d47*_i* + @dihedral:13-3-56-X @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d56_i* @atom:* + @dihedral:13-3-56-13 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d56_i* @atom:*_b*_a*_d13*_i* + @dihedral:4-3-107-13 @atom:*_b*_a*_d4_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d107_i* @atom:*_b*_a*_d13*_i* + @dihedral:13-3-107-13 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d107_i* @atom:*_b*_a*_d13*_i* + @dihedral:7-5-13-2 @atom:*_b*_a*_d7_i* @atom:*_b*_a*_d5_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d2_i* + @dihedral:7-5-13-6 @atom:*_b*_a*_d7_i* @atom:*_b*_a*_d5_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d6_i* + @dihedral:7-5-13-13 @atom:*_b*_a*_d7_i* @atom:*_b*_a*_d5_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* + @dihedral:7-5-13-46 @atom:*_b*_a*_d7_i* @atom:*_b*_a*_d5_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d46_i* + @dihedral:7-5-13-47 @atom:*_b*_a*_d7_i* @atom:*_b*_a*_d5_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d47*_i* + @dihedral:7-5-13-48 @atom:*_b*_a*_d7_i* @atom:*_b*_a*_d5_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d48_i* + @dihedral:7-5-13-50 @atom:*_b*_a*_d7_i* @atom:*_b*_a*_d5_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d50_i* + @dihedral:7-5-44-13 @atom:*_b*_a*_d7_i* @atom:*_b*_a*_d5_i* @atom:*_b*_a*_d44_i* @atom:*_b*_a*_d13*_i* + @dihedral:7-5-47-47 @atom:*_b*_a*_d7_i* @atom:*_b*_a*_d5_i* @atom:*_b*_a*_d47*_i* @atom:*_b*_a*_d47*_i* + @dihedral:7-5-79-13 @atom:*_b*_a*_d7_i* @atom:*_b*_a*_d5_i* @atom:*_b*_a*_d79_i* @atom:*_b*_a*_d13*_i* + @dihedral:X-13-13-3 @atom:* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d3_i* + @dihedral:X-13-13-13 @atom:* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* + @dihedral:X-13-13-24 @atom:* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d24_i* + @dihedral:1-13-13-1 @atom:*_b*_a*_d1_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d1_i* + @dihedral:1-13-13-5 @atom:*_b*_a*_d1_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d5_i* + @dihedral:1-13-13-13 @atom:*_b*_a*_d1_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* + @dihedral:1-13-13-46 @atom:*_b*_a*_d1_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d46_i* + @dihedral:3-13-13-3 @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d3_i* + @dihedral:3-13-13-5 @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d5_i* + @dihedral:3-13-13-13 @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* + @dihedral:3-13-13-15 @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d15_i* + @dihedral:3-13-13-16 @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d16_i* + @dihedral:3-13-13-24 @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d24_i* + @dihedral:3-13-13-46 @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d46_i* + @dihedral:3-13-13-48 @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d48_i* + @dihedral:3-13-13-80 @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d80_i* + @dihedral:5-13-13-5 @atom:*_b*_a*_d5_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d5_i* + @dihedral:5-13-13-13 @atom:*_b*_a*_d5_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* + @dihedral:5-13-13-20 @atom:*_b*_a*_d5_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d20_i* + @dihedral:5-13-13-44 @atom:*_b*_a*_d5_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d44_i* + @dihedral:5-13-13-24 @atom:*_b*_a*_d5_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d24_i* + @dihedral:5-13-13-46 @atom:*_b*_a*_d5_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d46_i* + @dihedral:13-13-13-13 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* + @dihedral:13-13-13-15 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d15_i* + @dihedral:13-13-13-16 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d16_i* + @dihedral:13-13-13-19 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d19_i* + @dihedral:13-13-13-21 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d21_i* + @dihedral:13-13-13-44 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d44_i* + @dihedral:13-13-13-24 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d24_i* + @dihedral:13-13-13-46 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d46_i* + @dihedral:13-13-13-51 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d51_i* + @dihedral:13-13-13-53 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d53_i* + @dihedral:13-13-13-65 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d65_i* + @dihedral:13-13-13-66 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d66_i* + @dihedral:13-13-13-79 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d79_i* + @dihedral:13-13-13-107 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d107_i* + @dihedral:13-13-13-108 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d108_i* + @dihedral:15-13-13-46 @atom:*_b*_a*_d15_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d46_i* + @dihedral:16-13-13-46 @atom:*_b*_a*_d16_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d46_i* + @dihedral:19-13-13-46 @atom:*_b*_a*_d19_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d46_i* + @dihedral:20-13-13-20 @atom:*_b*_a*_d20_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d20_i* + @dihedral:20-13-13-46 @atom:*_b*_a*_d20_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d46_i* + @dihedral:21-13-13-21 @atom:*_b*_a*_d21_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d21_i* + @dihedral:21-13-13-44 @atom:*_b*_a*_d21_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d44_i* + @dihedral:21-13-13-46 @atom:*_b*_a*_d21_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d46_i* + @dihedral:44-13-13-44 @atom:*_b*_a*_d44_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d44_i* + @dihedral:44-13-13-46 @atom:*_b*_a*_d44_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d46_i* + @dihedral:44-13-13-48 @atom:*_b*_a*_d44_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d48_i* + @dihedral:24-13-13-46 @atom:*_b*_a*_d24_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d46_i* + @dihedral:24-13-13-48 @atom:*_b*_a*_d24_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d48_i* + @dihedral:24-13-13-80 @atom:*_b*_a*_d24_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d80_i* + @dihedral:46-13-13-46 @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d46_i* + @dihedral:46-13-13-47 @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d47*_i* + @dihedral:46-13-13-48 @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d48_i* + @dihedral:46-13-13-51 @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d51_i* + @dihedral:46-13-13-53 @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d53_i* + @dihedral:46-13-13-55 @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d55_i* + @dihedral:46-13-13-59 @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d59_i* + @dihedral:46-13-13-62 @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d62_i* + @dihedral:46-13-13-65 @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d65_i* + @dihedral:46-13-13-66 @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d66_i* + @dihedral:46-13-13-79 @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d79_i* + @dihedral:46-13-13-80 @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d80_i* + @dihedral:46-13-13-82 @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d82_i* + @dihedral:46-13-13-83 @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d83_i* + @dihedral:46-13-13-84 @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d84_i* + @dihedral:46-13-13-87 @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d87_i* + @dihedral:46-13-13-88 @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d88_i* + @dihedral:46-13-13-102 @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d102_i* + @dihedral:46-13-13-104 @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d104_i* + @dihedral:46-13-13-107 @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d107_i* + @dihedral:46-13-13-108 @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d108_i* + @dihedral:46-13-13-109 @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d109_i* + @dihedral:48-13-13-53 @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d53_i* + @dihedral:108-13-13-108 @atom:*_b*_a*_d108_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d108_i* + @dihedral:13-13-15-17 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d15_i* @atom:*_b*_a*_d17_i* + @dihedral:46-13-15-17 @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d15_i* @atom:*_b*_a*_d17_i* + @dihedral:13-13-16-13 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d16_i* @atom:*_b*_a*_d13*_i* + @dihedral:13-13-16-16 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d16_i* @atom:*_b*_a*_d16_i* + @dihedral:46-13-16-13 @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d16_i* @atom:*_b*_a*_d13*_i* + @dihedral:46-13-16-16 @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d16_i* @atom:*_b*_a*_d16_i* + @dihedral:46-13-16-48 @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d16_i* @atom:*_b*_a*_d48_i* + @dihedral:X-13-18-19 @atom:* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d18_i* @atom:*_b*_a*_d19_i* + @dihedral:46-13-18-19 @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d18_i* @atom:*_b*_a*_d19_i* + @dihedral:X-13-19-18 @atom:* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d19_i* @atom:*_b*_a*_d18_i* + @dihedral:X-13-19-19 @atom:* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d19_i* @atom:*_b*_a*_d19_i* + @dihedral:13-13-19-19 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d19_i* @atom:*_b*_a*_d19_i* + @dihedral:46-13-19-19 @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d19_i* @atom:*_b*_a*_d19_i* + @dihedral:X-13-20-13 @atom:* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d20_i* @atom:*_b*_a*_d13*_i* + @dihedral:56-13-20-13 @atom:*_b*_a*_d56_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d20_i* @atom:*_b*_a*_d13*_i* + @dihedral:57-13-20-13 @atom:*_b*_a*_d57_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d20_i* @atom:*_b*_a*_d13*_i* + @dihedral:13-13-20-3 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d20_i* @atom:*_b*_a*_d3_i* + @dihedral:13-13-20-13 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d20_i* @atom:*_b*_a*_d13*_i* + @dihedral:13-13-20-64 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d20_i* @atom:*_b*_a*_d64_i* + @dihedral:46-13-20-X @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d20_i* @atom:* + @dihedral:46-13-20-3 @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d20_i* @atom:*_b*_a*_d3_i* + @dihedral:46-13-20-47 @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d20_i* @atom:*_b*_a*_d47*_i* + @dihedral:46-13-20-48 @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d20_i* @atom:*_b*_a*_d48_i* + @dihedral:46-13-20-51 @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d20_i* @atom:*_b*_a*_d51_i* + @dihedral:46-13-20-64 @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d20_i* @atom:*_b*_a*_d64_i* + @dihedral:13-13-44-13 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d44_i* @atom:*_b*_a*_d13*_i* + @dihedral:13-13-44-45 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d44_i* @atom:*_b*_a*_d45_i* + @dihedral:46-13-44-13 @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d44_i* @atom:*_b*_a*_d13*_i* + @dihedral:46-13-44-45 @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d44_i* @atom:*_b*_a*_d45_i* + @dihedral:46-13-44-48 @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d44_i* @atom:*_b*_a*_d48_i* + @dihedral:X-13-24-45 @atom:* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d24_i* @atom:*_b*_a*_d45_i* + @dihedral:3-13-24-3 @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d24_i* @atom:*_b*_a*_d3_i* + @dihedral:3-13-24-13 @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d24_i* @atom:*_b*_a*_d13*_i* + @dihedral:3-13-24-45 @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d24_i* @atom:*_b*_a*_d45_i* + @dihedral:13-13-24-3 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d24_i* @atom:*_b*_a*_d3_i* + @dihedral:13-13-24-13 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d24_i* @atom:*_b*_a*_d13*_i* + @dihedral:13-13-24-45 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d24_i* @atom:*_b*_a*_d45_i* + @dihedral:13-13-24-59 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d24_i* @atom:*_b*_a*_d59_i* + @dihedral:13-13-24-79 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d24_i* @atom:*_b*_a*_d79_i* + @dihedral:13-13-24-91 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d24_i* @atom:*_b*_a*_d91_i* + @dihedral:46-13-24-3 @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d24_i* @atom:*_b*_a*_d3_i* + @dihedral:46-13-24-13 @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d24_i* @atom:*_b*_a*_d13*_i* + @dihedral:46-13-24-45 @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d24_i* @atom:*_b*_a*_d45_i* + @dihedral:46-13-24-48 @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d24_i* @atom:*_b*_a*_d48_i* + @dihedral:46-13-24-79 @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d24_i* @atom:*_b*_a*_d79_i* + @dihedral:48-13-24-59 @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d24_i* @atom:*_b*_a*_d59_i* + @dihedral:X-13-47-13 @atom:* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d47*_i* @atom:*_b*_a*_d13*_i* + @dihedral:X-13-47-46 @atom:* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d47*_i* @atom:*_b*_a*_d46_i* + @dihedral:X-13-47-47 @atom:* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d47*_i* @atom:*_b*_a*_d47*_i* + @dihedral:X-13-47-50 @atom:* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d47*_i* @atom:*_b*_a*_d50_i* + @dihedral:1-13-47-47 @atom:*_b*_a*_d1_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d47*_i* @atom:*_b*_a*_d47*_i* + @dihedral:13-13-47-13 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d47*_i* @atom:*_b*_a*_d13*_i* + @dihedral:13-13-47-47 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d47*_i* @atom:*_b*_a*_d47*_i* + @dihedral:13-13-47-50 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d47*_i* @atom:*_b*_a*_d50_i* + @dihedral:46-13-47-13 @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d47*_i* @atom:*_b*_a*_d13*_i* + @dihedral:46-13-47-46 @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d47*_i* @atom:*_b*_a*_d46_i* + @dihedral:46-13-47-47 @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d47*_i* @atom:*_b*_a*_d47*_i* + @dihedral:46-13-47-50 @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d47*_i* @atom:*_b*_a*_d50_i* + @dihedral:46-13-47-110 @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d47*_i* @atom:*_b*_a*_d110_i* + @dihedral:47-13-47-13 @atom:*_b*_a*_d47*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d47*_i* @atom:*_b*_a*_d13*_i* + @dihedral:47-13-47-46 @atom:*_b*_a*_d47*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d47*_i* @atom:*_b*_a*_d46_i* + @dihedral:X-13-48-48 @atom:* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d48_i* + @dihedral:1-13-48-48 @atom:*_b*_a*_d1_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d48_i* + @dihedral:13-13-48-48 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d48_i* + @dihedral:13-13-48-56 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d56_i* + @dihedral:21-13-48-48 @atom:*_b*_a*_d21_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d48_i* + @dihedral:46-13-48-48 @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d48_i* + @dihedral:64-13-48-48 @atom:*_b*_a*_d64_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d48_i* + @dihedral:65-13-48-48 @atom:*_b*_a*_d65_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d48_i* + @dihedral:X-13-50-47 @atom:* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d50_i* @atom:*_b*_a*_d47*_i* + @dihedral:13-13-50-50 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d50_i* @atom:*_b*_a*_d50_i* + @dihedral:46-13-50-47 @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d50_i* @atom:*_b*_a*_d47*_i* + @dihedral:46-13-50-50 @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d50_i* @atom:*_b*_a*_d50_i* + @dihedral:46-13-50-109 @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d50_i* @atom:*_b*_a*_d109_i* + @dihedral:13-13-51-X @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d51_i* @atom:* + @dihedral:13-13-51-46 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d51_i* @atom:*_b*_a*_d46_i* + @dihedral:46-13-51-20 @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d51_i* @atom:*_b*_a*_d20_i* + @dihedral:13-13-53-13 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d53_i* @atom:*_b*_a*_d13*_i* + @dihedral:13-13-53-45 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d53_i* @atom:*_b*_a*_d45_i* + @dihedral:46-13-53-13 @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d53_i* @atom:*_b*_a*_d13*_i* + @dihedral:46-13-53-45 @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d53_i* @atom:*_b*_a*_d45_i* + @dihedral:46-13-53-48 @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d53_i* @atom:*_b*_a*_d48_i* + @dihedral:46-13-53-54 @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d53_i* @atom:*_b*_a*_d54_i* + @dihedral:13-13-55-45 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d55_i* @atom:*_b*_a*_d45_i* + @dihedral:13-13-55-48 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d55_i* @atom:*_b*_a*_d48_i* + @dihedral:13-13-55-54 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d55_i* @atom:*_b*_a*_d54_i* + @dihedral:46-13-55-13 @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d55_i* @atom:*_b*_a*_d13*_i* + @dihedral:46-13-55-45 @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d55_i* @atom:*_b*_a*_d45_i* + @dihedral:46-13-55-48 @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d55_i* @atom:*_b*_a*_d48_i* + @dihedral:13-13-56-18 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d56_i* @atom:*_b*_a*_d18_i* + @dihedral:X-13-57-X @atom:* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d57_i* @atom:* + @dihedral:13-13-57-X @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d57_i* @atom:* + @dihedral:13-13-57-62 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d57_i* @atom:*_b*_a*_d62_i* + @dihedral:13-13-57-82 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d57_i* @atom:*_b*_a*_d82_i* + @dihedral:20-13-57-X @atom:*_b*_a*_d20_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d57_i* @atom:* + @dihedral:20-13-57-62 @atom:*_b*_a*_d20_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d57_i* @atom:*_b*_a*_d62_i* + @dihedral:20-13-57-82 @atom:*_b*_a*_d20_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d57_i* @atom:*_b*_a*_d82_i* + @dihedral:13-13-59-X @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d59_i* @atom:* + @dihedral:13-13-59-56 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d59_i* @atom:*_b*_a*_d56_i* + @dihedral:46-13-59-X @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d59_i* @atom:* + @dihedral:13-13-62-X @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d62_i* @atom:* + @dihedral:46-13-62-X @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d62_i* @atom:* + @dihedral:46-13-64-20 @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d64_i* @atom:*_b*_a*_d20_i* + @dihedral:46-13-64-52 @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d64_i* @atom:*_b*_a*_d52_i* + @dihedral:48-13-64-20 @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d64_i* @atom:*_b*_a*_d20_i* + @dihedral:48-13-64-52 @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d64_i* @atom:*_b*_a*_d52_i* + @dihedral:X-13-79-23 @atom:* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d79_i* @atom:*_b*_a*_d23_i* + @dihedral:X-13-79-24 @atom:* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d79_i* @atom:*_b*_a*_d24_i* + @dihedral:13-13-79-13 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d79_i* @atom:*_b*_a*_d13*_i* + @dihedral:13-13-79-23 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d79_i* @atom:*_b*_a*_d23_i* + @dihedral:46-13-79-5 @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d79_i* @atom:*_b*_a*_d5_i* + @dihedral:46-13-79-13 @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d79_i* @atom:*_b*_a*_d13*_i* + @dihedral:46-13-79-23 @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d79_i* @atom:*_b*_a*_d23_i* + @dihedral:46-13-79-48 @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d79_i* @atom:*_b*_a*_d48_i* + @dihedral:13-13-80-X @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d80_i* @atom:* + @dihedral:13-13-80-60 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d80_i* @atom:*_b*_a*_d60_i* + @dihedral:13-13-80-84 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d80_i* @atom:*_b*_a*_d84_i* + @dihedral:46-13-80-X @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d80_i* @atom:* + @dihedral:46-13-80-60 @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d80_i* @atom:*_b*_a*_d60_i* + @dihedral:46-13-80-84 @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d80_i* @atom:*_b*_a*_d84_i* + @dihedral:13-13-82-X @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d82_i* @atom:* + @dihedral:46-13-82-X @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d82_i* @atom:* + @dihedral:13-13-83-X @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d83_i* @atom:* + @dihedral:46-13-83-X @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d83_i* @atom:* + @dihedral:1-13-84-X @atom:*_b*_a*_d1_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d84_i* @atom:* + @dihedral:13-13-84-X @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d84_i* @atom:* + @dihedral:13-13-84-57 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d84_i* @atom:*_b*_a*_d57_i* + @dihedral:21-13-84-X @atom:*_b*_a*_d21_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d84_i* @atom:* + @dihedral:46-13-84-X @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d84_i* @atom:* + @dihedral:1-13-87-X @atom:*_b*_a*_d1_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d87_i* @atom:* + @dihedral:13-13-87-X @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d87_i* @atom:* + @dihedral:21-13-87-X @atom:*_b*_a*_d21_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d87_i* @atom:* + @dihedral:46-13-87-X @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d87_i* @atom:* + @dihedral:13-13-88-X @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d88_i* @atom:* + @dihedral:46-13-88-X @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d88_i* @atom:* + @dihedral:X-13-90-X @atom:* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d90_i* @atom:* + @dihedral:46-13-90-X @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d90_i* @atom:* + @dihedral:46-13-91-91 @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d91_i* @atom:*_b*_a*_d91_i* + @dihedral:13-13-95-13 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d95_i* @atom:*_b*_a*_d13*_i* + @dihedral:13-13-95-46 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d95_i* @atom:*_b*_a*_d46_i* + @dihedral:13-13-102-103 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d102_i* @atom:*_b*_a*_d103_i* + @dihedral:46-13-102-103 @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d102_i* @atom:*_b*_a*_d103_i* + @dihedral:13-13-104-13 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d104_i* @atom:*_b*_a*_d13*_i* + @dihedral:46-13-104-13 @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d104_i* @atom:*_b*_a*_d13*_i* + @dihedral:X-13-105-X @atom:* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d105_i* @atom:* + @dihedral:13-13-105-X @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d105_i* @atom:* + @dihedral:13-13-105-62 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d105_i* @atom:*_b*_a*_d62_i* + @dihedral:13-13-105-82 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d105_i* @atom:*_b*_a*_d82_i* + @dihedral:20-13-105-X @atom:*_b*_a*_d20_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d105_i* @atom:* + @dihedral:20-13-105-62 @atom:*_b*_a*_d20_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d105_i* @atom:*_b*_a*_d62_i* + @dihedral:20-13-105-82 @atom:*_b*_a*_d20_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d105_i* @atom:*_b*_a*_d82_i* + @dihedral:3-13-107-13 @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d107_i* @atom:*_b*_a*_d13*_i* + @dihedral:13-13-107-3 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d107_i* @atom:*_b*_a*_d3_i* + @dihedral:13-13-107-13 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d107_i* @atom:*_b*_a*_d13*_i* + @dihedral:46-13-107-3 @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d107_i* @atom:*_b*_a*_d3_i* + @dihedral:46-13-107-13 @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d107_i* @atom:*_b*_a*_d13*_i* + @dihedral:46-13-107-48 @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d107_i* @atom:*_b*_a*_d48_i* + @dihedral:13-13-108-13 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d108_i* @atom:*_b*_a*_d13*_i* + @dihedral:13-13-108-45 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d108_i* @atom:*_b*_a*_d45_i* + @dihedral:46-13-108-13 @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d108_i* @atom:*_b*_a*_d13*_i* + @dihedral:46-13-108-20 @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d108_i* @atom:*_b*_a*_d20_i* + @dihedral:46-13-108-45 @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d108_i* @atom:*_b*_a*_d45_i* + @dihedral:13-13-109-109 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d109_i* @atom:*_b*_a*_d109_i* + @dihedral:46-13-109-13 @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d109_i* @atom:*_b*_a*_d13*_i* + @dihedral:46-13-109-46 @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d109_i* @atom:*_b*_a*_d46_i* + @dihedral:46-13-109-109 @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d109_i* @atom:*_b*_a*_d109_i* + @dihedral:13-16-16-13 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d16_i* @atom:*_b*_a*_d16_i* @atom:*_b*_a*_d13*_i* + @dihedral:13-16-48-48 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d16_i* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d48_i* + @dihedral:13-16-48-56 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d16_i* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d56_i* + @dihedral:13-16-59-56 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d16_i* @atom:*_b*_a*_d59_i* @atom:*_b*_a*_d56_i* + @dihedral:18-18-56-13 @atom:*_b*_a*_d18_i* @atom:*_b*_a*_d18_i* @atom:*_b*_a*_d56_i* @atom:*_b*_a*_d13*_i* + @dihedral:13-19-19-13 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d19_i* @atom:*_b*_a*_d19_i* @atom:*_b*_a*_d13*_i* + @dihedral:13-19-19-46 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d19_i* @atom:*_b*_a*_d19_i* @atom:*_b*_a*_d46_i* + @dihedral:13-19-19-47 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d19_i* @atom:*_b*_a*_d19_i* @atom:*_b*_a*_d47*_i* + @dihedral:13-19-19-109 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d19_i* @atom:*_b*_a*_d19_i* @atom:*_b*_a*_d109_i* + @dihedral:46-19-19-47 @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d19_i* @atom:*_b*_a*_d19_i* @atom:*_b*_a*_d47*_i* + @dihedral:19-19-47-13 @atom:*_b*_a*_d19_i* @atom:*_b*_a*_d19_i* @atom:*_b*_a*_d47*_i* @atom:*_b*_a*_d13*_i* + @dihedral:19-19-47-46 @atom:*_b*_a*_d19_i* @atom:*_b*_a*_d19_i* @atom:*_b*_a*_d47*_i* @atom:*_b*_a*_d46_i* + @dihedral:19-19-47-47 @atom:*_b*_a*_d19_i* @atom:*_b*_a*_d19_i* @atom:*_b*_a*_d47*_i* @atom:*_b*_a*_d47*_i* + @dihedral:13-20-44-13 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d20_i* @atom:*_b*_a*_d44_i* @atom:*_b*_a*_d13*_i* + @dihedral:13-20-44-45 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d20_i* @atom:*_b*_a*_d44_i* @atom:*_b*_a*_d45_i* + @dihedral:13-20-47-13 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d20_i* @atom:*_b*_a*_d47*_i* @atom:*_b*_a*_d13*_i* + @dihedral:13-20-47-46 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d20_i* @atom:*_b*_a*_d47*_i* @atom:*_b*_a*_d46_i* + @dihedral:13-20-47-47 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d20_i* @atom:*_b*_a*_d47*_i* @atom:*_b*_a*_d47*_i* + @dihedral:13-20-47-50 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d20_i* @atom:*_b*_a*_d47*_i* @atom:*_b*_a*_d50_i* + @dihedral:13-20-48-48 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d20_i* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d48_i* + @dihedral:13-20-48-56 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d20_i* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d56_i* + @dihedral:13-20-51-5 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d20_i* @atom:*_b*_a*_d51_i* @atom:*_b*_a*_d5_i* + @dihedral:13-20-51-13 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d20_i* @atom:*_b*_a*_d51_i* @atom:*_b*_a*_d13*_i* + @dihedral:13-20-51-20 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d20_i* @atom:*_b*_a*_d51_i* @atom:*_b*_a*_d20_i* + @dihedral:13-20-51-46 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d20_i* @atom:*_b*_a*_d51_i* @atom:*_b*_a*_d46_i* + @dihedral:13-20-56-3 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d20_i* @atom:*_b*_a*_d56_i* @atom:*_b*_a*_d3_i* + @dihedral:13-20-59-56 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d20_i* @atom:*_b*_a*_d59_i* @atom:*_b*_a*_d56_i* + @dihedral:13-20-64-13 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d20_i* @atom:*_b*_a*_d64_i* @atom:*_b*_a*_d13*_i* + @dihedral:13-20-64-52 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d20_i* @atom:*_b*_a*_d64_i* @atom:*_b*_a*_d52_i* + @dihedral:108-20-108-13 @atom:*_b*_a*_d108_i* @atom:*_b*_a*_d20_i* @atom:*_b*_a*_d108_i* @atom:*_b*_a*_d13*_i* + @dihedral:13-44-44-13 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d44_i* @atom:*_b*_a*_d44_i* @atom:*_b*_a*_d13*_i* + @dihedral:13-44-44-45 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d44_i* @atom:*_b*_a*_d44_i* @atom:*_b*_a*_d45_i* + @dihedral:13-44-48-48 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d44_i* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d48_i* + @dihedral:13-24-48-48 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d24_i* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d48_i* + @dihedral:13-24-79-48 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d24_i* @atom:*_b*_a*_d79_i* @atom:*_b*_a*_d48_i* + @dihedral:13-24-82-61 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d24_i* @atom:*_b*_a*_d82_i* @atom:*_b*_a*_d61_i* + @dihedral:47-24-86-48 @atom:*_b*_a*_d47*_i* @atom:*_b*_a*_d24_i* @atom:*_b*_a*_d86_i* @atom:*_b*_a*_d48_i* + @dihedral:47-24-86-56 @atom:*_b*_a*_d47*_i* @atom:*_b*_a*_d24_i* @atom:*_b*_a*_d86_i* @atom:*_b*_a*_d56_i* + @dihedral:47-46-47-13 @atom:*_b*_a*_d47*_i* @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d47*_i* @atom:*_b*_a*_d13*_i* + @dihedral:47-46-47-46 @atom:*_b*_a*_d47*_i* @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d47*_i* @atom:*_b*_a*_d46_i* + @dihedral:X-47-47-X @atom:* @atom:*_b*_a*_d47*_i* @atom:*_b*_a*_d47*_i* @atom:* + @dihedral:X-47-47-19 @atom:* @atom:*_b*_a*_d47*_i* @atom:*_b*_a*_d47*_i* @atom:*_b*_a*_d19_i* + @dihedral:3-47-47-24 @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d47*_i* @atom:*_b*_a*_d47*_i* @atom:*_b*_a*_d24_i* + @dihedral:3-47-47-46 @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d47*_i* @atom:*_b*_a*_d47*_i* @atom:*_b*_a*_d46_i* + @dihedral:5-47-47-13 @atom:*_b*_a*_d5_i* @atom:*_b*_a*_d47*_i* @atom:*_b*_a*_d47*_i* @atom:*_b*_a*_d13*_i* + @dihedral:5-47-47-46 @atom:*_b*_a*_d5_i* @atom:*_b*_a*_d47*_i* @atom:*_b*_a*_d47*_i* @atom:*_b*_a*_d46_i* + @dihedral:13-47-47-13 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d47*_i* @atom:*_b*_a*_d47*_i* @atom:*_b*_a*_d13*_i* + @dihedral:13-47-47-19 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d47*_i* @atom:*_b*_a*_d47*_i* @atom:*_b*_a*_d19_i* + @dihedral:13-47-47-20 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d47*_i* @atom:*_b*_a*_d47*_i* @atom:*_b*_a*_d20_i* + @dihedral:13-47-47-46 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d47*_i* @atom:*_b*_a*_d47*_i* @atom:*_b*_a*_d46_i* + @dihedral:19-47-47-46 @atom:*_b*_a*_d19_i* @atom:*_b*_a*_d47*_i* @atom:*_b*_a*_d47*_i* @atom:*_b*_a*_d46_i* + @dihedral:20-47-47-46 @atom:*_b*_a*_d20_i* @atom:*_b*_a*_d47*_i* @atom:*_b*_a*_d47*_i* @atom:*_b*_a*_d46_i* + @dihedral:21-47-47-21 @atom:*_b*_a*_d21_i* @atom:*_b*_a*_d47*_i* @atom:*_b*_a*_d47*_i* @atom:*_b*_a*_d21_i* + @dihedral:21-47-47-46 @atom:*_b*_a*_d21_i* @atom:*_b*_a*_d47*_i* @atom:*_b*_a*_d47*_i* @atom:*_b*_a*_d46_i* + @dihedral:46-47-47-46 @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d47*_i* @atom:*_b*_a*_d47*_i* @atom:*_b*_a*_d46_i* + @dihedral:46-47-47-48 @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d47*_i* @atom:*_b*_a*_d47*_i* @atom:*_b*_a*_d48_i* + @dihedral:13-47-48-48 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d47*_i* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d48_i* + @dihedral:46-47-48-48 @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d47*_i* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d48_i* + @dihedral:46-47-48-56 @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d47*_i* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d56_i* + @dihedral:47-47-48-48 @atom:*_b*_a*_d47*_i* @atom:*_b*_a*_d47*_i* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d48_i* + @dihedral:13-47-50-13 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d47*_i* @atom:*_b*_a*_d50_i* @atom:*_b*_a*_d13*_i* + @dihedral:13-47-50-46 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d47*_i* @atom:*_b*_a*_d50_i* @atom:*_b*_a*_d46_i* + @dihedral:13-47-50-48 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d47*_i* @atom:*_b*_a*_d50_i* @atom:*_b*_a*_d48_i* + @dihedral:13-47-50-50 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d47*_i* @atom:*_b*_a*_d50_i* @atom:*_b*_a*_d50_i* + @dihedral:13-47-50-109 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d47*_i* @atom:*_b*_a*_d50_i* @atom:*_b*_a*_d109_i* + @dihedral:24-47-50-3 @atom:*_b*_a*_d24_i* @atom:*_b*_a*_d47*_i* @atom:*_b*_a*_d50_i* @atom:*_b*_a*_d3_i* + @dihedral:46-47-50-13 @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d47*_i* @atom:*_b*_a*_d50_i* @atom:*_b*_a*_d13*_i* + @dihedral:46-47-50-46 @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d47*_i* @atom:*_b*_a*_d50_i* @atom:*_b*_a*_d46_i* + @dihedral:46-47-50-48 @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d47*_i* @atom:*_b*_a*_d50_i* @atom:*_b*_a*_d48_i* + @dihedral:46-47-50-50 @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d47*_i* @atom:*_b*_a*_d50_i* @atom:*_b*_a*_d50_i* + @dihedral:46-47-50-109 @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d47*_i* @atom:*_b*_a*_d50_i* @atom:*_b*_a*_d109_i* + @dihedral:X-47-84-X @atom:* @atom:*_b*_a*_d47*_i* @atom:*_b*_a*_d84_i* @atom:* + @dihedral:X-47-86-48 @atom:* @atom:*_b*_a*_d47*_i* @atom:*_b*_a*_d86_i* @atom:*_b*_a*_d48_i* + @dihedral:3-47-86-86 @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d47*_i* @atom:*_b*_a*_d86_i* @atom:*_b*_a*_d86_i* + @dihedral:49-47-86-X @atom:*_b*_a*_d49_i* @atom:*_b*_a*_d47*_i* @atom:*_b*_a*_d86_i* @atom:* + @dihedral:49-47-86-24 @atom:*_b*_a*_d49_i* @atom:*_b*_a*_d47*_i* @atom:*_b*_a*_d86_i* @atom:*_b*_a*_d24_i* + @dihedral:X-47-87-X @atom:* @atom:*_b*_a*_d47*_i* @atom:*_b*_a*_d87_i* @atom:* + @dihedral:X-47-88-X @atom:* @atom:*_b*_a*_d47*_i* @atom:*_b*_a*_d88_i* @atom:* + @dihedral:13-47-110-47 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d47*_i* @atom:*_b*_a*_d110_i* @atom:*_b*_a*_d47*_i* + @dihedral:46-47-110-47 @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d47*_i* @atom:*_b*_a*_d110_i* @atom:*_b*_a*_d47*_i* + @dihedral:X-48-48-13 @atom:* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d13*_i* + @dihedral:13-48-48-13 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d13*_i* + @dihedral:13-48-48-48 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d48_i* + @dihedral:13-48-48-49 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d49_i* + @dihedral:13-48-48-50 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d50_i* + @dihedral:47-48-48-49 @atom:*_b*_a*_d47*_i* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d49_i* + @dihedral:48-48-50-47 @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d50_i* @atom:*_b*_a*_d47*_i* + @dihedral:56-48-50-47 @atom:*_b*_a*_d56_i* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d50_i* @atom:*_b*_a*_d47*_i* + @dihedral:48-48-53-13 @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d53_i* @atom:*_b*_a*_d13*_i* + @dihedral:55-48-55-13 @atom:*_b*_a*_d55_i* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d55_i* @atom:*_b*_a*_d13*_i* + @dihedral:48-48-79-13 @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d79_i* @atom:*_b*_a*_d13*_i* + @dihedral:56-48-101-13 @atom:*_b*_a*_d56_i* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d101_i* @atom:*_b*_a*_d13*_i* + @dihedral:48-48-109-13 @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d109_i* @atom:*_b*_a*_d13*_i* + @dihedral:13-50-50-13 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d50_i* @atom:*_b*_a*_d50_i* @atom:*_b*_a*_d13*_i* + @dihedral:13-50-50-46 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d50_i* @atom:*_b*_a*_d50_i* @atom:*_b*_a*_d46_i* + @dihedral:13-50-50-47 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d50_i* @atom:*_b*_a*_d50_i* @atom:*_b*_a*_d47*_i* + @dihedral:46-50-50-47 @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d50_i* @atom:*_b*_a*_d50_i* @atom:*_b*_a*_d47*_i* + @dihedral:47-50-50-47 @atom:*_b*_a*_d47*_i* @atom:*_b*_a*_d50_i* @atom:*_b*_a*_d50_i* @atom:*_b*_a*_d47*_i* + @dihedral:13-50-109-13 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d50_i* @atom:*_b*_a*_d109_i* @atom:*_b*_a*_d13*_i* + @dihedral:13-50-109-109 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d50_i* @atom:*_b*_a*_d109_i* @atom:*_b*_a*_d109_i* + @dihedral:46-50-109-13 @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d50_i* @atom:*_b*_a*_d109_i* @atom:*_b*_a*_d13*_i* + @dihedral:47-50-109-13 @atom:*_b*_a*_d47*_i* @atom:*_b*_a*_d50_i* @atom:*_b*_a*_d109_i* @atom:*_b*_a*_d13*_i* + @dihedral:47-50-109-46 @atom:*_b*_a*_d47*_i* @atom:*_b*_a*_d50_i* @atom:*_b*_a*_d109_i* @atom:*_b*_a*_d46_i* + @dihedral:47-50-109-109 @atom:*_b*_a*_d47*_i* @atom:*_b*_a*_d50_i* @atom:*_b*_a*_d109_i* @atom:*_b*_a*_d109_i* + @dihedral:13-53-82-61 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d53_i* @atom:*_b*_a*_d82_i* @atom:*_b*_a*_d61_i* + @dihedral:13-56-56-13 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d56_i* @atom:*_b*_a*_d56_i* @atom:*_b*_a*_d13*_i* + @dihedral:13-56-56-48 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d56_i* @atom:*_b*_a*_d56_i* @atom:*_b*_a*_d48_i* + @dihedral:4-89-90-13 @atom:*_b*_a*_d4_i* @atom:*_b*_a*_d89_i* @atom:*_b*_a*_d90_i* @atom:*_b*_a*_d13*_i* + @dihedral:91-89-90-13 @atom:*_b*_a*_d91_i* @atom:*_b*_a*_d89_i* @atom:*_b*_a*_d90_i* @atom:*_b*_a*_d13*_i* + @dihedral:13-91-91-13 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d91_i* @atom:*_b*_a*_d91_i* @atom:*_b*_a*_d13*_i* + @dihedral:13-91-91-46 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d91_i* @atom:*_b*_a*_d91_i* @atom:*_b*_a*_d46_i* + @dihedral:13-109-109-13 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d109_i* @atom:*_b*_a*_d109_i* @atom:*_b*_a*_d13*_i* + @dihedral:13-109-109-46 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d109_i* @atom:*_b*_a*_d109_i* @atom:*_b*_a*_d46_i* + @dihedral:13-109-109-48 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d109_i* @atom:*_b*_a*_d109_i* @atom:*_b*_a*_d48_i* + @dihedral:13-109-109-50 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d109_i* @atom:*_b*_a*_d109_i* @atom:*_b*_a*_d50_i* + @dihedral:13-109-109-109 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d109_i* @atom:*_b*_a*_d109_i* @atom:*_b*_a*_d109_i* + @dihedral:24-3-13-53 @atom:*_b*_a*_d24_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d53_i* + @dihedral:52-3-13-24 @atom:*_b*_a*_d52_i* @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d24_i* + @dihedral:3-13-13-53 @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d53_i* + @dihedral:3-13-13-83 @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d83_i* + @dihedral:3-13-13-84 @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d84_i* + @dihedral:3-13-13-85 @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d85_i* + @dihedral:5-13-13-53 @atom:*_b*_a*_d5_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d53_i* + @dihedral:15-13-13-53 @atom:*_b*_a*_d15_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d53_i* + @dihedral:16-13-13-53 @atom:*_b*_a*_d16_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d53_i* + @dihedral:13-13-13-55 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d55_i* + @dihedral:24-13-13-83 @atom:*_b*_a*_d24_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d83_i* + @dihedral:53-13-13-83 @atom:*_b*_a*_d53_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d83_i* + @dihedral:24-13-13-84 @atom:*_b*_a*_d24_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d84_i* + @dihedral:53-13-13-84 @atom:*_b*_a*_d53_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d84_i* + @dihedral:24-13-13-85 @atom:*_b*_a*_d24_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d85_i* + @dihedral:46-13-13-85 @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d85_i* + @dihedral:53-13-13-85 @atom:*_b*_a*_d53_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d85_i* + @dihedral:3-13-53-13 @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d53_i* @atom:*_b*_a*_d13*_i* + @dihedral:3-13-53-54 @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d53_i* @atom:*_b*_a*_d54_i* + @dihedral:13-13-53-54 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d53_i* @atom:*_b*_a*_d54_i* + @dihedral:46-13-55-54 @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d55_i* @atom:*_b*_a*_d54_i* + @dihedral:13-13-85-X @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d85_i* @atom:* + @dihedral:13-13-85-57 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d85_i* @atom:*_b*_a*_d57_i* + @dihedral:46-13-85-X @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d85_i* @atom:* + @dihedral:13-13-13-20 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d20_i* + @dihedral:13-13-13-47 @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d13*_i* @atom:*_b*_a*_d47*_i* + } #(end of dihedrals by type) + + + # New dihedrals which have been customized: + # (These will override the rules above) + + write_once("Data Dihedrals By Type") { + @dihedral:13L-13L-13L-13L @atom:*_b*_a*_d13L_i* @atom:*_b*_a*_d13L_i* @atom:*_b*_a*_d13L_i* @atom:*_b*_a*_d13L_i* + @dihedral:X-47L-47L-X @atom:* @atom:*_b*_a*_d47L_i* @atom:*_b*_a*_d47L_i* @atom:* + @dihedral:47L-47L-13L-13L @atom:*_b*_a*_d47L_i* @atom:*_b*_a*_d47L_i* @atom:*_b*_a*_d13L_i* @atom:*_b*_a*_d13L_i* + @dihedral:13L-13L-13L-47L @atom:*_b*_a*_d13L_i* @atom:*_b*_a*_d13L_i* @atom:*_b*_a*_d13L_i* @atom:*_b*_a*_d47L_i* + } #(end of dihedrals by type) + +} # end of additional parameters appended to the "OPLSAA" object diff --git a/tools/moltemplate/moltemplate/force_fields/martini.lt b/tools/moltemplate/moltemplate/force_fields/martini.lt new file mode 100644 index 0000000000000000000000000000000000000000..3279e55dbc026b2fb8c5119105ff857b47b0ed4a --- /dev/null +++ b/tools/moltemplate/moltemplate/force_fields/martini.lt @@ -0,0 +1,2213 @@ +# Autogenerated by EMC 2 LT tool v0.1 on 2017-06-28 +# +# cd martini/ +# ./emcprm2lt.py martini.prm lipids.prm cholesterol.prm --bond-style=harmonic --angle-style=cosine/squared --pair-style=lj/gromacs/coul/gromacs --name=martini +# mv -f martini.lt ../ +# +# Adapted from EMC by Pieter J. in 't Veld +# Originally written as, FFNAME:MARTINI STYLE:COARSE VERSION:V2.0 on Feb 2014 + +MARTINI { + write_once("Data Masses") { + @atom:BP4 72.000000 # BP4 + @atom:C1 72.000000 # C1 + @atom:C2 72.000000 # C2 + @atom:C3 72.000000 # C3 + @atom:C4 72.000000 # C4 + @atom:C5 72.000000 # C5 + @atom:N0 72.000000 # N0 + @atom:Na 72.000000 # Na + @atom:Nd 72.000000 # Nd + @atom:Nda 72.000000 # Nda + @atom:P1 72.000000 # P1 + @atom:P2 72.000000 # P2 + @atom:P3 72.000000 # P3 + @atom:P4 72.000000 # P4 + @atom:P5 72.000000 # P5 + @atom:Q0 72.000000 # Q0 + @atom:Qa 72.000000 # Qa + @atom:Qd 72.000000 # Qd + @atom:Qda 72.000000 # Qda + @atom:SC1 54.000000 # SC1 + @atom:SC2 54.000000 # SC2 + @atom:SC3 54.000000 # SC3 + @atom:SC4 54.000000 # SC4 + @atom:SC5 54.000000 # SC5 + @atom:SN0 54.000000 # SN0 + @atom:SNa 54.000000 # SNa + @atom:SNd 54.000000 # SNd + @atom:SNda 54.000000 # SNda + @atom:SP1 54.000000 # SP1 + @atom:SP2 54.000000 # SP2 + @atom:SP3 54.000000 # SP3 + @atom:SP4 54.000000 # SP4 + @atom:SP5 54.000000 # SP5 + @atom:SQ0 54.000000 # SQ0 + @atom:SQa 54.000000 # SQa + @atom:SQd 54.000000 # SQd + @atom:SQda 54.000000 # SQda + @atom:C41 72.000000 # C41 + @atom:C42 72.000000 # C42 + @atom:Na1 72.000000 # Na1 + @atom:Na2 72.000000 # Na2 + @atom:Qa1 72.000000 # Qa1 + @atom:Qa2 72.000000 # Qa2 + @atom:SC11 54.000000 # SC11 + @atom:SC110 54.000000 # SC110 + @atom:SC111 54.000000 # SC111 + @atom:SC112 54.000000 # SC112 + @atom:SC12 54.000000 # SC12 + @atom:SC13 54.000000 # SC13 + @atom:SC14 54.000000 # SC14 + @atom:SC15 54.000000 # SC15 + @atom:SC16 54.000000 # SC16 + @atom:SC17 54.000000 # SC17 + @atom:SC18 54.000000 # SC18 + @atom:SC19 54.000000 # SC19 + @atom:SC31 54.000000 # SC31 + @atom:SC32 54.000000 # SC32 + @atom:SC33 54.000000 # SC33 + @atom:SP11 54.000000 # SP11 + @atom:SP12 54.000000 # SP12 + } # end of atom masses + + # ----- EQUIVALENCE CATEGORIES for bonded interaction lookup ----- + replace{ @atom:BP4 @atom:BP4_bBP4_aBP4_dBP4_iBP4} + replace{ @atom:C1 @atom:C1_bC1_aC1_dC1_iC1} + replace{ @atom:C2 @atom:C2_bC2_aC2_dC2_iC2} + replace{ @atom:C3 @atom:C3_bC3_aC3_dC3_iC3} + replace{ @atom:C4 @atom:C4_bC4_aC4_dC4_iC4} + replace{ @atom:C5 @atom:C5_bC5_aC5_dC5_iC5} + replace{ @atom:N0 @atom:N0_bN0_aN0_dN0_iN0} + replace{ @atom:Na @atom:Na_bNa_aNa_dNa_iNa} + replace{ @atom:Nd @atom:Nd_bNd_aNd_dNd_iNd} + replace{ @atom:Nda @atom:Nda_bNda_aNda_dNda_iNda} + replace{ @atom:P1 @atom:P1_bP1_aP1_dP1_iP1} + replace{ @atom:P2 @atom:P2_bP2_aP2_dP2_iP2} + replace{ @atom:P3 @atom:P3_bP3_aP3_dP3_iP3} + replace{ @atom:P4 @atom:P4_bP4_aP4_dP4_iP4} + replace{ @atom:P5 @atom:P5_bP5_aP5_dP5_iP5} + replace{ @atom:Q0 @atom:Q0_bQ0_aQ0_dQ0_iQ0} + replace{ @atom:Qa @atom:Qa_bQa_aQa_dQa_iQa} + replace{ @atom:Qd @atom:Qd_bQd_aQd_dQd_iQd} + replace{ @atom:Qda @atom:Qda_bQda_aQda_dQda_iQda} + replace{ @atom:SC1 @atom:SC1_bSC1_aSC1_dSC1_iSC1} + replace{ @atom:SC2 @atom:SC2_bSC2_aSC2_dSC2_iSC2} + replace{ @atom:SC3 @atom:SC3_bSC3_aSC3_dSC3_iSC3} + replace{ @atom:SC4 @atom:SC4_bSC4_aSC4_dSC4_iSC4} + replace{ @atom:SC5 @atom:SC5_bSC5_aSC5_dSC5_iSC5} + replace{ @atom:SN0 @atom:SN0_bSN0_aSN0_dSN0_iSN0} + replace{ @atom:SNa @atom:SNa_bSNa_aSNa_dSNa_iSNa} + replace{ @atom:SNd @atom:SNd_bSNd_aSNd_dSNd_iSNd} + replace{ @atom:SNda @atom:SNda_bSNda_aSNda_dSNda_iSNda} + replace{ @atom:SP1 @atom:SP1_bSP1_aSP1_dSP1_iSP1} + replace{ @atom:SP2 @atom:SP2_bSP2_aSP2_dSP2_iSP2} + replace{ @atom:SP3 @atom:SP3_bSP3_aSP3_dSP3_iSP3} + replace{ @atom:SP4 @atom:SP4_bSP4_aSP4_dSP4_iSP4} + replace{ @atom:SP5 @atom:SP5_bSP5_aSP5_dSP5_iSP5} + replace{ @atom:SQ0 @atom:SQ0_bSQ0_aSQ0_dSQ0_iSQ0} + replace{ @atom:SQa @atom:SQa_bSQa_aSQa_dSQa_iSQa} + replace{ @atom:SQd @atom:SQd_bSQd_aSQd_dSQd_iSQd} + replace{ @atom:SQda @atom:SQda_bSQda_aSQda_dSQda_iSQda} + replace{ @atom:C41 @atom:C41_bC4_aC41_dC41_iC41} + replace{ @atom:C42 @atom:C42_bC4_aC42_dC42_iC42} + replace{ @atom:Na1 @atom:Na1_bNa1_aNa1_dNa1_iNa1} + replace{ @atom:Na2 @atom:Na2_bNa2_aNa2_dNa2_iNa2} + replace{ @atom:Qa1 @atom:Qa1_bQa1_aQa1_dQa1_iQa1} + replace{ @atom:Qa2 @atom:Qa2_bQa2_aQa2_dQa2_iQa2} + replace{ @atom:SC11 @atom:SC11_bSC11_aSC11_dSC11_iSC11} + replace{ @atom:SC110 @atom:SC110_bSC110_aSC110_dSC110_iSC110} + replace{ @atom:SC111 @atom:SC111_bSC111_aSC111_dSC111_iSC111} + replace{ @atom:SC112 @atom:SC112_bSC112_aSC112_dSC112_iSC112} + replace{ @atom:SC12 @atom:SC12_bSC12_aSC12_dSC12_iSC12} + replace{ @atom:SC13 @atom:SC13_bSC13_aSC13_dSC13_iSC13} + replace{ @atom:SC14 @atom:SC14_bSC14_aSC14_dSC14_iSC14} + replace{ @atom:SC15 @atom:SC15_bSC15_aSC15_dSC15_iSC15} + replace{ @atom:SC16 @atom:SC16_bSC16_aSC16_dSC16_iSC16} + replace{ @atom:SC17 @atom:SC17_bSC17_aSC17_dSC17_iSC17} + replace{ @atom:SC18 @atom:SC18_bSC18_aSC18_dSC18_iSC18} + replace{ @atom:SC19 @atom:SC19_bSC19_aSC19_dSC19_iSC19} + replace{ @atom:SC31 @atom:SC31_bSC31_aSC31_dSC31_iSC31} + replace{ @atom:SC32 @atom:SC32_bSC32_aSC32_dSC32_iSC32} + replace{ @atom:SC33 @atom:SC33_bSC33_aSC33_dSC33_iSC33} + replace{ @atom:SP11 @atom:SP11_bSP11_aSP11_dSP11_iSP11} + replace{ @atom:SP12 @atom:SP12_bSP12_aSP12_dSP12_iSP12} + # END EQUIVALENCE + + write_once("In Settings") { + # ----- Non-Bonded interactions ----- + pair_coeff @atom:BP4_bBP4_aBP4_dBP4_iBP4 @atom:BP4_bBP4_aBP4_dBP4_iBP4 lj/gromacs/coul/gromacs 1.195030 4.700000 # BP4-BP4 + pair_coeff @atom:BP4_bBP4_aBP4_dBP4_iBP4 @atom:C1_bC1_aC1_dC1_iC1 lj/gromacs/coul/gromacs 0.478012 4.700000 # BP4-C1 + pair_coeff @atom:BP4_bBP4_aBP4_dBP4_iBP4 @atom:C2_bC2_aC2_dC2_iC2 lj/gromacs/coul/gromacs 0.549714 4.700000 # BP4-C2 + pair_coeff @atom:BP4_bBP4_aBP4_dBP4_iBP4 @atom:C3_bC3_aC3_dC3_iC3 lj/gromacs/coul/gromacs 0.645316 4.700000 # BP4-C3 + pair_coeff @atom:BP4_bBP4_aBP4_dBP4_iBP4 @atom:C4_bC4_aC4_dC4_iC4 lj/gromacs/coul/gromacs 0.645316 4.700000 # BP4-C4 + pair_coeff @atom:BP4_bBP4_aBP4_dBP4_iBP4 @atom:C5_bC5_aC5_dC5_iC5 lj/gromacs/coul/gromacs 0.740919 4.700000 # BP4-C5 + pair_coeff @atom:BP4_bBP4_aBP4_dBP4_iBP4 @atom:N0_bN0_aN0_dN0_iN0 lj/gromacs/coul/gromacs 0.836521 4.700000 # BP4-N0 + pair_coeff @atom:BP4_bBP4_aBP4_dBP4_iBP4 @atom:Na_bNa_aNa_dNa_iNa lj/gromacs/coul/gromacs 0.956024 4.700000 # BP4-Na + pair_coeff @atom:BP4_bBP4_aBP4_dBP4_iBP4 @atom:Nd_bNd_aNd_dNd_iNd lj/gromacs/coul/gromacs 0.956024 4.700000 # BP4-Nd + pair_coeff @atom:BP4_bBP4_aBP4_dBP4_iBP4 @atom:Nda_bNda_aNda_dNda_iNda lj/gromacs/coul/gromacs 0.956024 4.700000 # BP4-Nda + pair_coeff @atom:BP4_bBP4_aBP4_dBP4_iBP4 @atom:P1_bP1_aP1_dP1_iP1 lj/gromacs/coul/gromacs 1.075527 4.700000 # BP4-P1 + pair_coeff @atom:BP4_bBP4_aBP4_dBP4_iBP4 @atom:P2_bP2_aP2_dP2_iP2 lj/gromacs/coul/gromacs 1.075527 4.700000 # BP4-P2 + pair_coeff @atom:BP4_bBP4_aBP4_dBP4_iBP4 @atom:P3_bP3_aP3_dP3_iP3 lj/gromacs/coul/gromacs 1.195030 4.700000 # BP4-P3 + pair_coeff @atom:BP4_bBP4_aBP4_dBP4_iBP4 @atom:P4_bP4_aP4_dP4_iP4 lj/gromacs/coul/gromacs 1.338434 5.700000 # BP4-P4 + pair_coeff @atom:BP4_bBP4_aBP4_dBP4_iBP4 @atom:P5_bP5_aP5_dP5_iP5 lj/gromacs/coul/gromacs 1.338434 4.700000 # BP4-P5 + pair_coeff @atom:BP4_bBP4_aBP4_dBP4_iBP4 @atom:Q0_bQ0_aQ0_dQ0_iQ0 lj/gromacs/coul/gromacs 1.338434 4.700000 # BP4-Q0 + pair_coeff @atom:BP4_bBP4_aBP4_dBP4_iBP4 @atom:Qa_bQa_aQa_dQa_iQa lj/gromacs/coul/gromacs 1.338434 4.700000 # BP4-Qa + pair_coeff @atom:BP4_bBP4_aBP4_dBP4_iBP4 @atom:Qd_bQd_aQd_dQd_iQd lj/gromacs/coul/gromacs 1.338434 4.700000 # BP4-Qd + pair_coeff @atom:BP4_bBP4_aBP4_dBP4_iBP4 @atom:Qda_bQda_aQda_dQda_iQda lj/gromacs/coul/gromacs 1.338434 4.700000 # BP4-Qda + pair_coeff @atom:BP4_bBP4_aBP4_dBP4_iBP4 @atom:SC1_bSC1_aSC1_dSC1_iSC1 lj/gromacs/coul/gromacs 0.478012 4.700000 # BP4-SC1 + pair_coeff @atom:BP4_bBP4_aBP4_dBP4_iBP4 @atom:SC2_bSC2_aSC2_dSC2_iSC2 lj/gromacs/coul/gromacs 0.549714 4.700000 # BP4-SC2 + pair_coeff @atom:BP4_bBP4_aBP4_dBP4_iBP4 @atom:SC3_bSC3_aSC3_dSC3_iSC3 lj/gromacs/coul/gromacs 0.645316 4.700000 # BP4-SC3 + pair_coeff @atom:BP4_bBP4_aBP4_dBP4_iBP4 @atom:SC4_bSC4_aSC4_dSC4_iSC4 lj/gromacs/coul/gromacs 0.645316 4.700000 # BP4-SC4 + pair_coeff @atom:BP4_bBP4_aBP4_dBP4_iBP4 @atom:SC5_bSC5_aSC5_dSC5_iSC5 lj/gromacs/coul/gromacs 0.740919 4.700000 # BP4-SC5 + pair_coeff @atom:BP4_bBP4_aBP4_dBP4_iBP4 @atom:SN0_bSN0_aSN0_dSN0_iSN0 lj/gromacs/coul/gromacs 0.836521 4.700000 # BP4-SN0 + pair_coeff @atom:BP4_bBP4_aBP4_dBP4_iBP4 @atom:SNa_bSNa_aSNa_dSNa_iSNa lj/gromacs/coul/gromacs 0.956024 4.700000 # BP4-SNa + pair_coeff @atom:BP4_bBP4_aBP4_dBP4_iBP4 @atom:SNd_bSNd_aSNd_dSNd_iSNd lj/gromacs/coul/gromacs 0.956024 4.700000 # BP4-SNd + pair_coeff @atom:BP4_bBP4_aBP4_dBP4_iBP4 @atom:SNda_bSNda_aSNda_dSNda_iSNda lj/gromacs/coul/gromacs 0.956024 4.700000 # BP4-SNda + pair_coeff @atom:BP4_bBP4_aBP4_dBP4_iBP4 @atom:SP1_bSP1_aSP1_dSP1_iSP1 lj/gromacs/coul/gromacs 1.075527 4.700000 # BP4-SP1 + pair_coeff @atom:BP4_bBP4_aBP4_dBP4_iBP4 @atom:SP2_bSP2_aSP2_dSP2_iSP2 lj/gromacs/coul/gromacs 1.075527 4.700000 # BP4-SP2 + pair_coeff @atom:BP4_bBP4_aBP4_dBP4_iBP4 @atom:SP3_bSP3_aSP3_dSP3_iSP3 lj/gromacs/coul/gromacs 1.195030 4.700000 # BP4-SP3 + pair_coeff @atom:BP4_bBP4_aBP4_dBP4_iBP4 @atom:SP4_bSP4_aSP4_dSP4_iSP4 lj/gromacs/coul/gromacs 1.195030 4.700000 # BP4-SP4 + pair_coeff @atom:BP4_bBP4_aBP4_dBP4_iBP4 @atom:SP5_bSP5_aSP5_dSP5_iSP5 lj/gromacs/coul/gromacs 1.338434 4.700000 # BP4-SP5 + pair_coeff @atom:BP4_bBP4_aBP4_dBP4_iBP4 @atom:SQ0_bSQ0_aSQ0_dSQ0_iSQ0 lj/gromacs/coul/gromacs 1.338434 4.700000 # BP4-SQ0 + pair_coeff @atom:BP4_bBP4_aBP4_dBP4_iBP4 @atom:SQa_bSQa_aSQa_dSQa_iSQa lj/gromacs/coul/gromacs 1.338434 4.700000 # BP4-SQa + pair_coeff @atom:BP4_bBP4_aBP4_dBP4_iBP4 @atom:SQd_bSQd_aSQd_dSQd_iSQd lj/gromacs/coul/gromacs 1.338434 4.700000 # BP4-SQd + pair_coeff @atom:BP4_bBP4_aBP4_dBP4_iBP4 @atom:SQda_bSQda_aSQda_dSQda_iSQda lj/gromacs/coul/gromacs 1.338434 4.700000 # BP4-SQda + pair_coeff @atom:C1_bC1_aC1_dC1_iC1 @atom:C1_bC1_aC1_dC1_iC1 lj/gromacs/coul/gromacs 0.836521 4.700000 # C1-C1 + pair_coeff @atom:C1_bC1_aC1_dC1_iC1 @atom:C2_bC2_aC2_dC2_iC2 lj/gromacs/coul/gromacs 0.836521 4.700000 # C1-C2 + pair_coeff @atom:C1_bC1_aC1_dC1_iC1 @atom:C3_bC3_aC3_dC3_iC3 lj/gromacs/coul/gromacs 0.836521 4.700000 # C1-C3 + pair_coeff @atom:C1_bC1_aC1_dC1_iC1 @atom:C4_bC4_aC4_dC4_iC4 lj/gromacs/coul/gromacs 0.740919 4.700000 # C1-C4 + pair_coeff @atom:C1_bC1_aC1_dC1_iC1 @atom:C5_bC5_aC5_dC5_iC5 lj/gromacs/coul/gromacs 0.740919 4.700000 # C1-C5 + pair_coeff @atom:C1_bC1_aC1_dC1_iC1 @atom:N0_bN0_aN0_dN0_iN0 lj/gromacs/coul/gromacs 0.645316 4.700000 # C1-N0 + pair_coeff @atom:C1_bC1_aC1_dC1_iC1 @atom:Na_bNa_aNa_dNa_iNa lj/gromacs/coul/gromacs 0.645316 4.700000 # C1-Na + pair_coeff @atom:C1_bC1_aC1_dC1_iC1 @atom:Nd_bNd_aNd_dNd_iNd lj/gromacs/coul/gromacs 0.645316 4.700000 # C1-Nd + pair_coeff @atom:C1_bC1_aC1_dC1_iC1 @atom:Nda_bNda_aNda_dNda_iNda lj/gromacs/coul/gromacs 0.645316 4.700000 # C1-Nda + pair_coeff @atom:C1_bC1_aC1_dC1_iC1 @atom:P1_bP1_aP1_dP1_iP1 lj/gromacs/coul/gromacs 0.645316 4.700000 # C1-P1 + pair_coeff @atom:C1_bC1_aC1_dC1_iC1 @atom:P2_bP2_aP2_dP2_iP2 lj/gromacs/coul/gromacs 0.549714 4.700000 # C1-P2 + pair_coeff @atom:C1_bC1_aC1_dC1_iC1 @atom:P3_bP3_aP3_dP3_iP3 lj/gromacs/coul/gromacs 0.549714 4.700000 # C1-P3 + pair_coeff @atom:C1_bC1_aC1_dC1_iC1 @atom:P4_bP4_aP4_dP4_iP4 lj/gromacs/coul/gromacs 0.478012 4.700000 # C1-P4 + pair_coeff @atom:C1_bC1_aC1_dC1_iC1 @atom:P5_bP5_aP5_dP5_iP5 lj/gromacs/coul/gromacs 0.478012 4.700000 # C1-P5 + pair_coeff @atom:C1_bC1_aC1_dC1_iC1 @atom:Q0_bQ0_aQ0_dQ0_iQ0 lj/gromacs/coul/gromacs 0.478012 6.200000 # C1-Q0 + pair_coeff @atom:C1_bC1_aC1_dC1_iC1 @atom:Qa_bQa_aQa_dQa_iQa lj/gromacs/coul/gromacs 0.478012 6.200000 # C1-Qa + pair_coeff @atom:C1_bC1_aC1_dC1_iC1 @atom:Qd_bQd_aQd_dQd_iQd lj/gromacs/coul/gromacs 0.478012 6.200000 # C1-Qd + pair_coeff @atom:C1_bC1_aC1_dC1_iC1 @atom:Qda_bQda_aQda_dQda_iQda lj/gromacs/coul/gromacs 0.478012 6.200000 # C1-Qda + pair_coeff @atom:C1_bC1_aC1_dC1_iC1 @atom:SC1_bSC1_aSC1_dSC1_iSC1 lj/gromacs/coul/gromacs 0.836521 4.700000 # C1-SC1 + pair_coeff @atom:C1_bC1_aC1_dC1_iC1 @atom:SC2_bSC2_aSC2_dSC2_iSC2 lj/gromacs/coul/gromacs 0.836521 4.700000 # C1-SC2 + pair_coeff @atom:C1_bC1_aC1_dC1_iC1 @atom:SC3_bSC3_aSC3_dSC3_iSC3 lj/gromacs/coul/gromacs 0.836521 4.700000 # C1-SC3 + pair_coeff @atom:C1_bC1_aC1_dC1_iC1 @atom:SC4_bSC4_aSC4_dSC4_iSC4 lj/gromacs/coul/gromacs 0.740919 4.700000 # C1-SC4 + pair_coeff @atom:C1_bC1_aC1_dC1_iC1 @atom:SC5_bSC5_aSC5_dSC5_iSC5 lj/gromacs/coul/gromacs 0.740919 4.700000 # C1-SC5 + pair_coeff @atom:C1_bC1_aC1_dC1_iC1 @atom:SN0_bSN0_aSN0_dSN0_iSN0 lj/gromacs/coul/gromacs 0.645316 4.700000 # C1-SN0 + pair_coeff @atom:C1_bC1_aC1_dC1_iC1 @atom:SNa_bSNa_aSNa_dSNa_iSNa lj/gromacs/coul/gromacs 0.645316 4.700000 # C1-SNa + pair_coeff @atom:C1_bC1_aC1_dC1_iC1 @atom:SNd_bSNd_aSNd_dSNd_iSNd lj/gromacs/coul/gromacs 0.645316 4.700000 # C1-SNd + pair_coeff @atom:C1_bC1_aC1_dC1_iC1 @atom:SNda_bSNda_aSNda_dSNda_iSNda lj/gromacs/coul/gromacs 0.645316 4.700000 # C1-SNda + pair_coeff @atom:C1_bC1_aC1_dC1_iC1 @atom:SP1_bSP1_aSP1_dSP1_iSP1 lj/gromacs/coul/gromacs 0.645316 4.700000 # C1-SP1 + pair_coeff @atom:C1_bC1_aC1_dC1_iC1 @atom:SP2_bSP2_aSP2_dSP2_iSP2 lj/gromacs/coul/gromacs 0.549714 4.700000 # C1-SP2 + pair_coeff @atom:C1_bC1_aC1_dC1_iC1 @atom:SP3_bSP3_aSP3_dSP3_iSP3 lj/gromacs/coul/gromacs 0.549714 4.700000 # C1-SP3 + pair_coeff @atom:C1_bC1_aC1_dC1_iC1 @atom:SP4_bSP4_aSP4_dSP4_iSP4 lj/gromacs/coul/gromacs 0.478012 4.700000 # C1-SP4 + pair_coeff @atom:C1_bC1_aC1_dC1_iC1 @atom:SP5_bSP5_aSP5_dSP5_iSP5 lj/gromacs/coul/gromacs 0.478012 4.700000 # C1-SP5 + pair_coeff @atom:C1_bC1_aC1_dC1_iC1 @atom:SQ0_bSQ0_aSQ0_dSQ0_iSQ0 lj/gromacs/coul/gromacs 0.478012 6.200000 # C1-SQ0 + pair_coeff @atom:C1_bC1_aC1_dC1_iC1 @atom:SQa_bSQa_aSQa_dSQa_iSQa lj/gromacs/coul/gromacs 0.478012 6.200000 # C1-SQa + pair_coeff @atom:C1_bC1_aC1_dC1_iC1 @atom:SQd_bSQd_aSQd_dSQd_iSQd lj/gromacs/coul/gromacs 0.478012 6.200000 # C1-SQd + pair_coeff @atom:C1_bC1_aC1_dC1_iC1 @atom:SQda_bSQda_aSQda_dSQda_iSQda lj/gromacs/coul/gromacs 0.478012 6.200000 # C1-SQda + pair_coeff @atom:C2_bC2_aC2_dC2_iC2 @atom:C2_bC2_aC2_dC2_iC2 lj/gromacs/coul/gromacs 0.836521 4.700000 # C2-C2 + pair_coeff @atom:C2_bC2_aC2_dC2_iC2 @atom:C3_bC3_aC3_dC3_iC3 lj/gromacs/coul/gromacs 0.836521 4.700000 # C2-C3 + pair_coeff @atom:C2_bC2_aC2_dC2_iC2 @atom:C4_bC4_aC4_dC4_iC4 lj/gromacs/coul/gromacs 0.740919 4.700000 # C2-C4 + pair_coeff @atom:C2_bC2_aC2_dC2_iC2 @atom:C5_bC5_aC5_dC5_iC5 lj/gromacs/coul/gromacs 0.740919 4.700000 # C2-C5 + pair_coeff @atom:C2_bC2_aC2_dC2_iC2 @atom:N0_bN0_aN0_dN0_iN0 lj/gromacs/coul/gromacs 0.740919 4.700000 # C2-N0 + pair_coeff @atom:C2_bC2_aC2_dC2_iC2 @atom:Na_bNa_aNa_dNa_iNa lj/gromacs/coul/gromacs 0.645316 4.700000 # C2-Na + pair_coeff @atom:C2_bC2_aC2_dC2_iC2 @atom:Nd_bNd_aNd_dNd_iNd lj/gromacs/coul/gromacs 0.645316 4.700000 # C2-Nd + pair_coeff @atom:C2_bC2_aC2_dC2_iC2 @atom:Nda_bNda_aNda_dNda_iNda lj/gromacs/coul/gromacs 0.645316 4.700000 # C2-Nda + pair_coeff @atom:C2_bC2_aC2_dC2_iC2 @atom:P1_bP1_aP1_dP1_iP1 lj/gromacs/coul/gromacs 0.740919 4.700000 # C2-P1 + pair_coeff @atom:C2_bC2_aC2_dC2_iC2 @atom:P2_bP2_aP2_dP2_iP2 lj/gromacs/coul/gromacs 0.645316 4.700000 # C2-P2 + pair_coeff @atom:C2_bC2_aC2_dC2_iC2 @atom:P3_bP3_aP3_dP3_iP3 lj/gromacs/coul/gromacs 0.645316 4.700000 # C2-P3 + pair_coeff @atom:C2_bC2_aC2_dC2_iC2 @atom:P4_bP4_aP4_dP4_iP4 lj/gromacs/coul/gromacs 0.549714 4.700000 # C2-P4 + pair_coeff @atom:C2_bC2_aC2_dC2_iC2 @atom:P5_bP5_aP5_dP5_iP5 lj/gromacs/coul/gromacs 0.549714 4.700000 # C2-P5 + pair_coeff @atom:C2_bC2_aC2_dC2_iC2 @atom:Q0_bQ0_aQ0_dQ0_iQ0 lj/gromacs/coul/gromacs 0.478012 6.200000 # C2-Q0 + pair_coeff @atom:C2_bC2_aC2_dC2_iC2 @atom:Qa_bQa_aQa_dQa_iQa lj/gromacs/coul/gromacs 0.478012 6.200000 # C2-Qa + pair_coeff @atom:C2_bC2_aC2_dC2_iC2 @atom:Qd_bQd_aQd_dQd_iQd lj/gromacs/coul/gromacs 0.478012 6.200000 # C2-Qd + pair_coeff @atom:C2_bC2_aC2_dC2_iC2 @atom:Qda_bQda_aQda_dQda_iQda lj/gromacs/coul/gromacs 0.478012 6.200000 # C2-Qda + pair_coeff @atom:C2_bC2_aC2_dC2_iC2 @atom:SC1_bSC1_aSC1_dSC1_iSC1 lj/gromacs/coul/gromacs 0.836521 4.700000 # C2-SC1 + pair_coeff @atom:C2_bC2_aC2_dC2_iC2 @atom:SC2_bSC2_aSC2_dSC2_iSC2 lj/gromacs/coul/gromacs 0.836521 4.700000 # C2-SC2 + pair_coeff @atom:C2_bC2_aC2_dC2_iC2 @atom:SC3_bSC3_aSC3_dSC3_iSC3 lj/gromacs/coul/gromacs 0.836521 4.700000 # C2-SC3 + pair_coeff @atom:C2_bC2_aC2_dC2_iC2 @atom:SC4_bSC4_aSC4_dSC4_iSC4 lj/gromacs/coul/gromacs 0.740919 4.700000 # C2-SC4 + pair_coeff @atom:C2_bC2_aC2_dC2_iC2 @atom:SC5_bSC5_aSC5_dSC5_iSC5 lj/gromacs/coul/gromacs 0.740919 4.700000 # C2-SC5 + pair_coeff @atom:C2_bC2_aC2_dC2_iC2 @atom:SN0_bSN0_aSN0_dSN0_iSN0 lj/gromacs/coul/gromacs 0.740919 4.700000 # C2-SN0 + pair_coeff @atom:C2_bC2_aC2_dC2_iC2 @atom:SNa_bSNa_aSNa_dSNa_iSNa lj/gromacs/coul/gromacs 0.645316 4.700000 # C2-SNa + pair_coeff @atom:C2_bC2_aC2_dC2_iC2 @atom:SNd_bSNd_aSNd_dSNd_iSNd lj/gromacs/coul/gromacs 0.645316 4.700000 # C2-SNd + pair_coeff @atom:C2_bC2_aC2_dC2_iC2 @atom:SNda_bSNda_aSNda_dSNda_iSNda lj/gromacs/coul/gromacs 0.645316 4.700000 # C2-SNda + pair_coeff @atom:C2_bC2_aC2_dC2_iC2 @atom:SP1_bSP1_aSP1_dSP1_iSP1 lj/gromacs/coul/gromacs 0.740919 4.700000 # C2-SP1 + pair_coeff @atom:C2_bC2_aC2_dC2_iC2 @atom:SP2_bSP2_aSP2_dSP2_iSP2 lj/gromacs/coul/gromacs 0.645316 4.700000 # C2-SP2 + pair_coeff @atom:C2_bC2_aC2_dC2_iC2 @atom:SP3_bSP3_aSP3_dSP3_iSP3 lj/gromacs/coul/gromacs 0.645316 4.700000 # C2-SP3 + pair_coeff @atom:C2_bC2_aC2_dC2_iC2 @atom:SP4_bSP4_aSP4_dSP4_iSP4 lj/gromacs/coul/gromacs 0.549714 4.700000 # C2-SP4 + pair_coeff @atom:C2_bC2_aC2_dC2_iC2 @atom:SP5_bSP5_aSP5_dSP5_iSP5 lj/gromacs/coul/gromacs 0.549714 4.700000 # C2-SP5 + pair_coeff @atom:C2_bC2_aC2_dC2_iC2 @atom:SQ0_bSQ0_aSQ0_dSQ0_iSQ0 lj/gromacs/coul/gromacs 0.478012 6.200000 # C2-SQ0 + pair_coeff @atom:C2_bC2_aC2_dC2_iC2 @atom:SQa_bSQa_aSQa_dSQa_iSQa lj/gromacs/coul/gromacs 0.478012 6.200000 # C2-SQa + pair_coeff @atom:C2_bC2_aC2_dC2_iC2 @atom:SQd_bSQd_aSQd_dSQd_iSQd lj/gromacs/coul/gromacs 0.478012 6.200000 # C2-SQd + pair_coeff @atom:C2_bC2_aC2_dC2_iC2 @atom:SQda_bSQda_aSQda_dSQda_iSQda lj/gromacs/coul/gromacs 0.478012 6.200000 # C2-SQda + pair_coeff @atom:C3_bC3_aC3_dC3_iC3 @atom:C3_bC3_aC3_dC3_iC3 lj/gromacs/coul/gromacs 0.836521 4.700000 # C3-C3 + pair_coeff @atom:C3_bC3_aC3_dC3_iC3 @atom:C4_bC4_aC4_dC4_iC4 lj/gromacs/coul/gromacs 0.836521 4.700000 # C3-C4 + pair_coeff @atom:C3_bC3_aC3_dC3_iC3 @atom:C5_bC5_aC5_dC5_iC5 lj/gromacs/coul/gromacs 0.836521 4.700000 # C3-C5 + pair_coeff @atom:C3_bC3_aC3_dC3_iC3 @atom:N0_bN0_aN0_dN0_iN0 lj/gromacs/coul/gromacs 0.836521 4.700000 # C3-N0 + pair_coeff @atom:C3_bC3_aC3_dC3_iC3 @atom:Na_bNa_aNa_dNa_iNa lj/gromacs/coul/gromacs 0.645316 4.700000 # C3-Na + pair_coeff @atom:C3_bC3_aC3_dC3_iC3 @atom:Nd_bNd_aNd_dNd_iNd lj/gromacs/coul/gromacs 0.645316 4.700000 # C3-Nd + pair_coeff @atom:C3_bC3_aC3_dC3_iC3 @atom:Nda_bNda_aNda_dNda_iNda lj/gromacs/coul/gromacs 0.645316 4.700000 # C3-Nda + pair_coeff @atom:C3_bC3_aC3_dC3_iC3 @atom:P1_bP1_aP1_dP1_iP1 lj/gromacs/coul/gromacs 0.836521 4.700000 # C3-P1 + pair_coeff @atom:C3_bC3_aC3_dC3_iC3 @atom:P2_bP2_aP2_dP2_iP2 lj/gromacs/coul/gromacs 0.740919 4.700000 # C3-P2 + pair_coeff @atom:C3_bC3_aC3_dC3_iC3 @atom:P3_bP3_aP3_dP3_iP3 lj/gromacs/coul/gromacs 0.740919 4.700000 # C3-P3 + pair_coeff @atom:C3_bC3_aC3_dC3_iC3 @atom:P4_bP4_aP4_dP4_iP4 lj/gromacs/coul/gromacs 0.645316 4.700000 # C3-P4 + pair_coeff @atom:C3_bC3_aC3_dC3_iC3 @atom:P5_bP5_aP5_dP5_iP5 lj/gromacs/coul/gromacs 0.645316 4.700000 # C3-P5 + pair_coeff @atom:C3_bC3_aC3_dC3_iC3 @atom:Q0_bQ0_aQ0_dQ0_iQ0 lj/gromacs/coul/gromacs 0.549714 4.700000 # C3-Q0 + pair_coeff @atom:C3_bC3_aC3_dC3_iC3 @atom:Qa_bQa_aQa_dQa_iQa lj/gromacs/coul/gromacs 0.549714 4.700000 # C3-Qa + pair_coeff @atom:C3_bC3_aC3_dC3_iC3 @atom:Qd_bQd_aQd_dQd_iQd lj/gromacs/coul/gromacs 0.549714 4.700000 # C3-Qd + pair_coeff @atom:C3_bC3_aC3_dC3_iC3 @atom:Qda_bQda_aQda_dQda_iQda lj/gromacs/coul/gromacs 0.549714 4.700000 # C3-Qda + pair_coeff @atom:C3_bC3_aC3_dC3_iC3 @atom:SC1_bSC1_aSC1_dSC1_iSC1 lj/gromacs/coul/gromacs 0.836521 4.700000 # C3-SC1 + pair_coeff @atom:C3_bC3_aC3_dC3_iC3 @atom:SC2_bSC2_aSC2_dSC2_iSC2 lj/gromacs/coul/gromacs 0.836521 4.700000 # C3-SC2 + pair_coeff @atom:C3_bC3_aC3_dC3_iC3 @atom:SC3_bSC3_aSC3_dSC3_iSC3 lj/gromacs/coul/gromacs 0.836521 4.700000 # C3-SC3 + pair_coeff @atom:C3_bC3_aC3_dC3_iC3 @atom:SC4_bSC4_aSC4_dSC4_iSC4 lj/gromacs/coul/gromacs 0.836521 4.700000 # C3-SC4 + pair_coeff @atom:C3_bC3_aC3_dC3_iC3 @atom:SC5_bSC5_aSC5_dSC5_iSC5 lj/gromacs/coul/gromacs 0.836521 4.700000 # C3-SC5 + pair_coeff @atom:C3_bC3_aC3_dC3_iC3 @atom:SN0_bSN0_aSN0_dSN0_iSN0 lj/gromacs/coul/gromacs 0.836521 4.700000 # C3-SN0 + pair_coeff @atom:C3_bC3_aC3_dC3_iC3 @atom:SNa_bSNa_aSNa_dSNa_iSNa lj/gromacs/coul/gromacs 0.645316 4.700000 # C3-SNa + pair_coeff @atom:C3_bC3_aC3_dC3_iC3 @atom:SNd_bSNd_aSNd_dSNd_iSNd lj/gromacs/coul/gromacs 0.645316 4.700000 # C3-SNd + pair_coeff @atom:C3_bC3_aC3_dC3_iC3 @atom:SNda_bSNda_aSNda_dSNda_iSNda lj/gromacs/coul/gromacs 0.645316 4.700000 # C3-SNda + pair_coeff @atom:C3_bC3_aC3_dC3_iC3 @atom:SP1_bSP1_aSP1_dSP1_iSP1 lj/gromacs/coul/gromacs 0.836521 4.700000 # C3-SP1 + pair_coeff @atom:C3_bC3_aC3_dC3_iC3 @atom:SP2_bSP2_aSP2_dSP2_iSP2 lj/gromacs/coul/gromacs 0.740919 4.700000 # C3-SP2 + pair_coeff @atom:C3_bC3_aC3_dC3_iC3 @atom:SP3_bSP3_aSP3_dSP3_iSP3 lj/gromacs/coul/gromacs 0.740919 4.700000 # C3-SP3 + pair_coeff @atom:C3_bC3_aC3_dC3_iC3 @atom:SP4_bSP4_aSP4_dSP4_iSP4 lj/gromacs/coul/gromacs 0.645316 4.700000 # C3-SP4 + pair_coeff @atom:C3_bC3_aC3_dC3_iC3 @atom:SP5_bSP5_aSP5_dSP5_iSP5 lj/gromacs/coul/gromacs 0.645316 4.700000 # C3-SP5 + pair_coeff @atom:C3_bC3_aC3_dC3_iC3 @atom:SQ0_bSQ0_aSQ0_dSQ0_iSQ0 lj/gromacs/coul/gromacs 0.549714 4.700000 # C3-SQ0 + pair_coeff @atom:C3_bC3_aC3_dC3_iC3 @atom:SQa_bSQa_aSQa_dSQa_iSQa lj/gromacs/coul/gromacs 0.549714 4.700000 # C3-SQa + pair_coeff @atom:C3_bC3_aC3_dC3_iC3 @atom:SQd_bSQd_aSQd_dSQd_iSQd lj/gromacs/coul/gromacs 0.549714 4.700000 # C3-SQd + pair_coeff @atom:C3_bC3_aC3_dC3_iC3 @atom:SQda_bSQda_aSQda_dSQda_iSQda lj/gromacs/coul/gromacs 0.549714 4.700000 # C3-SQda + pair_coeff @atom:C4_bC4_aC4_dC4_iC4 @atom:C4_bC4_aC4_dC4_iC4 lj/gromacs/coul/gromacs 0.836521 4.700000 # C4-C4 + pair_coeff @atom:C4_bC4_aC4_dC4_iC4 @atom:C5_bC5_aC5_dC5_iC5 lj/gromacs/coul/gromacs 0.836521 4.700000 # C4-C5 + pair_coeff @atom:C4_bC4_aC4_dC4_iC4 @atom:N0_bN0_aN0_dN0_iN0 lj/gromacs/coul/gromacs 0.836521 4.700000 # C4-N0 + pair_coeff @atom:C4_bC4_aC4_dC4_iC4 @atom:Na_bNa_aNa_dNa_iNa lj/gromacs/coul/gromacs 0.740919 4.700000 # C4-Na + pair_coeff @atom:C4_bC4_aC4_dC4_iC4 @atom:Nd_bNd_aNd_dNd_iNd lj/gromacs/coul/gromacs 0.740919 4.700000 # C4-Nd + pair_coeff @atom:C4_bC4_aC4_dC4_iC4 @atom:Nda_bNda_aNda_dNda_iNda lj/gromacs/coul/gromacs 0.740919 4.700000 # C4-Nda + pair_coeff @atom:C4_bC4_aC4_dC4_iC4 @atom:P1_bP1_aP1_dP1_iP1 lj/gromacs/coul/gromacs 0.836521 4.700000 # C4-P1 + pair_coeff @atom:C4_bC4_aC4_dC4_iC4 @atom:P2_bP2_aP2_dP2_iP2 lj/gromacs/coul/gromacs 0.836521 4.700000 # C4-P2 + pair_coeff @atom:C4_bC4_aC4_dC4_iC4 @atom:P3_bP3_aP3_dP3_iP3 lj/gromacs/coul/gromacs 0.740919 4.700000 # C4-P3 + pair_coeff @atom:C4_bC4_aC4_dC4_iC4 @atom:P4_bP4_aP4_dP4_iP4 lj/gromacs/coul/gromacs 0.645316 4.700000 # C4-P4 + pair_coeff @atom:C4_bC4_aC4_dC4_iC4 @atom:P5_bP5_aP5_dP5_iP5 lj/gromacs/coul/gromacs 0.645316 4.700000 # C4-P5 + pair_coeff @atom:C4_bC4_aC4_dC4_iC4 @atom:Q0_bQ0_aQ0_dQ0_iQ0 lj/gromacs/coul/gromacs 0.645316 4.700000 # C4-Q0 + pair_coeff @atom:C4_bC4_aC4_dC4_iC4 @atom:Qa_bQa_aQa_dQa_iQa lj/gromacs/coul/gromacs 0.645316 4.700000 # C4-Qa + pair_coeff @atom:C4_bC4_aC4_dC4_iC4 @atom:Qd_bQd_aQd_dQd_iQd lj/gromacs/coul/gromacs 0.645316 4.700000 # C4-Qd + pair_coeff @atom:C4_bC4_aC4_dC4_iC4 @atom:Qda_bQda_aQda_dQda_iQda lj/gromacs/coul/gromacs 0.645316 4.700000 # C4-Qda + pair_coeff @atom:C4_bC4_aC4_dC4_iC4 @atom:SC1_bSC1_aSC1_dSC1_iSC1 lj/gromacs/coul/gromacs 0.740919 4.700000 # C4-SC1 + pair_coeff @atom:C4_bC4_aC4_dC4_iC4 @atom:SC2_bSC2_aSC2_dSC2_iSC2 lj/gromacs/coul/gromacs 0.740919 4.700000 # C4-SC2 + pair_coeff @atom:C4_bC4_aC4_dC4_iC4 @atom:SC3_bSC3_aSC3_dSC3_iSC3 lj/gromacs/coul/gromacs 0.836521 4.700000 # C4-SC3 + pair_coeff @atom:C4_bC4_aC4_dC4_iC4 @atom:SC4_bSC4_aSC4_dSC4_iSC4 lj/gromacs/coul/gromacs 0.836521 4.700000 # C4-SC4 + pair_coeff @atom:C4_bC4_aC4_dC4_iC4 @atom:SC5_bSC5_aSC5_dSC5_iSC5 lj/gromacs/coul/gromacs 0.836521 4.700000 # C4-SC5 + pair_coeff @atom:C4_bC4_aC4_dC4_iC4 @atom:SN0_bSN0_aSN0_dSN0_iSN0 lj/gromacs/coul/gromacs 0.836521 4.700000 # C4-SN0 + pair_coeff @atom:C4_bC4_aC4_dC4_iC4 @atom:SNa_bSNa_aSNa_dSNa_iSNa lj/gromacs/coul/gromacs 0.740919 4.700000 # C4-SNa + pair_coeff @atom:C4_bC4_aC4_dC4_iC4 @atom:SNd_bSNd_aSNd_dSNd_iSNd lj/gromacs/coul/gromacs 0.740919 4.700000 # C4-SNd + pair_coeff @atom:C4_bC4_aC4_dC4_iC4 @atom:SNda_bSNda_aSNda_dSNda_iSNda lj/gromacs/coul/gromacs 0.740919 4.700000 # C4-SNda + pair_coeff @atom:C4_bC4_aC4_dC4_iC4 @atom:SP1_bSP1_aSP1_dSP1_iSP1 lj/gromacs/coul/gromacs 0.836521 4.700000 # C4-SP1 + pair_coeff @atom:C4_bC4_aC4_dC4_iC4 @atom:SP2_bSP2_aSP2_dSP2_iSP2 lj/gromacs/coul/gromacs 0.836521 4.700000 # C4-SP2 + pair_coeff @atom:C4_bC4_aC4_dC4_iC4 @atom:SP3_bSP3_aSP3_dSP3_iSP3 lj/gromacs/coul/gromacs 0.740919 4.700000 # C4-SP3 + pair_coeff @atom:C4_bC4_aC4_dC4_iC4 @atom:SP4_bSP4_aSP4_dSP4_iSP4 lj/gromacs/coul/gromacs 0.645316 4.700000 # C4-SP4 + pair_coeff @atom:C4_bC4_aC4_dC4_iC4 @atom:SP5_bSP5_aSP5_dSP5_iSP5 lj/gromacs/coul/gromacs 0.645316 4.700000 # C4-SP5 + pair_coeff @atom:C4_bC4_aC4_dC4_iC4 @atom:SQ0_bSQ0_aSQ0_dSQ0_iSQ0 lj/gromacs/coul/gromacs 0.645316 4.700000 # C4-SQ0 + pair_coeff @atom:C4_bC4_aC4_dC4_iC4 @atom:SQa_bSQa_aSQa_dSQa_iSQa lj/gromacs/coul/gromacs 0.645316 4.700000 # C4-SQa + pair_coeff @atom:C4_bC4_aC4_dC4_iC4 @atom:SQd_bSQd_aSQd_dSQd_iSQd lj/gromacs/coul/gromacs 0.645316 4.700000 # C4-SQd + pair_coeff @atom:C4_bC4_aC4_dC4_iC4 @atom:SQda_bSQda_aSQda_dSQda_iSQda lj/gromacs/coul/gromacs 0.645316 4.700000 # C4-SQda + pair_coeff @atom:C5_bC5_aC5_dC5_iC5 @atom:C5_bC5_aC5_dC5_iC5 lj/gromacs/coul/gromacs 0.836521 4.700000 # C5-C5 + pair_coeff @atom:C5_bC5_aC5_dC5_iC5 @atom:N0_bN0_aN0_dN0_iN0 lj/gromacs/coul/gromacs 0.836521 4.700000 # C5-N0 + pair_coeff @atom:C5_bC5_aC5_dC5_iC5 @atom:Na_bNa_aNa_dNa_iNa lj/gromacs/coul/gromacs 0.836521 4.700000 # C5-Na + pair_coeff @atom:C5_bC5_aC5_dC5_iC5 @atom:Nd_bNd_aNd_dNd_iNd lj/gromacs/coul/gromacs 0.836521 4.700000 # C5-Nd + pair_coeff @atom:C5_bC5_aC5_dC5_iC5 @atom:Nda_bNda_aNda_dNda_iNda lj/gromacs/coul/gromacs 0.836521 4.700000 # C5-Nda + pair_coeff @atom:C5_bC5_aC5_dC5_iC5 @atom:P1_bP1_aP1_dP1_iP1 lj/gromacs/coul/gromacs 0.836521 4.700000 # C5-P1 + pair_coeff @atom:C5_bC5_aC5_dC5_iC5 @atom:P2_bP2_aP2_dP2_iP2 lj/gromacs/coul/gromacs 0.836521 4.700000 # C5-P2 + pair_coeff @atom:C5_bC5_aC5_dC5_iC5 @atom:P3_bP3_aP3_dP3_iP3 lj/gromacs/coul/gromacs 0.836521 4.700000 # C5-P3 + pair_coeff @atom:C5_bC5_aC5_dC5_iC5 @atom:P4_bP4_aP4_dP4_iP4 lj/gromacs/coul/gromacs 0.740919 4.700000 # C5-P4 + pair_coeff @atom:C5_bC5_aC5_dC5_iC5 @atom:P5_bP5_aP5_dP5_iP5 lj/gromacs/coul/gromacs 0.740919 4.700000 # C5-P5 + pair_coeff @atom:C5_bC5_aC5_dC5_iC5 @atom:Q0_bQ0_aQ0_dQ0_iQ0 lj/gromacs/coul/gromacs 0.740919 4.700000 # C5-Q0 + pair_coeff @atom:C5_bC5_aC5_dC5_iC5 @atom:Qa_bQa_aQa_dQa_iQa lj/gromacs/coul/gromacs 0.740919 4.700000 # C5-Qa + pair_coeff @atom:C5_bC5_aC5_dC5_iC5 @atom:Qd_bQd_aQd_dQd_iQd lj/gromacs/coul/gromacs 0.740919 4.700000 # C5-Qd + pair_coeff @atom:C5_bC5_aC5_dC5_iC5 @atom:Qda_bQda_aQda_dQda_iQda lj/gromacs/coul/gromacs 0.740919 4.700000 # C5-Qda + pair_coeff @atom:C5_bC5_aC5_dC5_iC5 @atom:SC1_bSC1_aSC1_dSC1_iSC1 lj/gromacs/coul/gromacs 0.740919 4.700000 # C5-SC1 + pair_coeff @atom:C5_bC5_aC5_dC5_iC5 @atom:SC2_bSC2_aSC2_dSC2_iSC2 lj/gromacs/coul/gromacs 0.740919 4.700000 # C5-SC2 + pair_coeff @atom:C5_bC5_aC5_dC5_iC5 @atom:SC3_bSC3_aSC3_dSC3_iSC3 lj/gromacs/coul/gromacs 0.836521 4.700000 # C5-SC3 + pair_coeff @atom:C5_bC5_aC5_dC5_iC5 @atom:SC4_bSC4_aSC4_dSC4_iSC4 lj/gromacs/coul/gromacs 0.836521 4.700000 # C5-SC4 + pair_coeff @atom:C5_bC5_aC5_dC5_iC5 @atom:SC5_bSC5_aSC5_dSC5_iSC5 lj/gromacs/coul/gromacs 0.836521 4.700000 # C5-SC5 + pair_coeff @atom:C5_bC5_aC5_dC5_iC5 @atom:SN0_bSN0_aSN0_dSN0_iSN0 lj/gromacs/coul/gromacs 0.836521 4.700000 # C5-SN0 + pair_coeff @atom:C5_bC5_aC5_dC5_iC5 @atom:SNa_bSNa_aSNa_dSNa_iSNa lj/gromacs/coul/gromacs 0.836521 4.700000 # C5-SNa + pair_coeff @atom:C5_bC5_aC5_dC5_iC5 @atom:SNd_bSNd_aSNd_dSNd_iSNd lj/gromacs/coul/gromacs 0.836521 4.700000 # C5-SNd + pair_coeff @atom:C5_bC5_aC5_dC5_iC5 @atom:SNda_bSNda_aSNda_dSNda_iSNda lj/gromacs/coul/gromacs 0.836521 4.700000 # C5-SNda + pair_coeff @atom:C5_bC5_aC5_dC5_iC5 @atom:SP1_bSP1_aSP1_dSP1_iSP1 lj/gromacs/coul/gromacs 0.836521 4.700000 # C5-SP1 + pair_coeff @atom:C5_bC5_aC5_dC5_iC5 @atom:SP2_bSP2_aSP2_dSP2_iSP2 lj/gromacs/coul/gromacs 0.836521 4.700000 # C5-SP2 + pair_coeff @atom:C5_bC5_aC5_dC5_iC5 @atom:SP3_bSP3_aSP3_dSP3_iSP3 lj/gromacs/coul/gromacs 0.836521 4.700000 # C5-SP3 + pair_coeff @atom:C5_bC5_aC5_dC5_iC5 @atom:SP4_bSP4_aSP4_dSP4_iSP4 lj/gromacs/coul/gromacs 0.740919 4.700000 # C5-SP4 + pair_coeff @atom:C5_bC5_aC5_dC5_iC5 @atom:SP5_bSP5_aSP5_dSP5_iSP5 lj/gromacs/coul/gromacs 0.740919 4.700000 # C5-SP5 + pair_coeff @atom:C5_bC5_aC5_dC5_iC5 @atom:SQ0_bSQ0_aSQ0_dSQ0_iSQ0 lj/gromacs/coul/gromacs 0.740919 4.700000 # C5-SQ0 + pair_coeff @atom:C5_bC5_aC5_dC5_iC5 @atom:SQa_bSQa_aSQa_dSQa_iSQa lj/gromacs/coul/gromacs 0.740919 4.700000 # C5-SQa + pair_coeff @atom:C5_bC5_aC5_dC5_iC5 @atom:SQd_bSQd_aSQd_dSQd_iSQd lj/gromacs/coul/gromacs 0.740919 4.700000 # C5-SQd + pair_coeff @atom:C5_bC5_aC5_dC5_iC5 @atom:SQda_bSQda_aSQda_dSQda_iSQda lj/gromacs/coul/gromacs 0.740919 4.700000 # C5-SQda + pair_coeff @atom:N0_bN0_aN0_dN0_iN0 @atom:N0_bN0_aN0_dN0_iN0 lj/gromacs/coul/gromacs 0.836521 4.700000 # N0-N0 + pair_coeff @atom:N0_bN0_aN0_dN0_iN0 @atom:Na_bNa_aNa_dNa_iNa lj/gromacs/coul/gromacs 0.836521 4.700000 # N0-Na + pair_coeff @atom:N0_bN0_aN0_dN0_iN0 @atom:Nd_bNd_aNd_dNd_iNd lj/gromacs/coul/gromacs 0.836521 4.700000 # N0-Nd + pair_coeff @atom:N0_bN0_aN0_dN0_iN0 @atom:Nda_bNda_aNda_dNda_iNda lj/gromacs/coul/gromacs 0.836521 4.700000 # N0-Nda + pair_coeff @atom:N0_bN0_aN0_dN0_iN0 @atom:P1_bP1_aP1_dP1_iP1 lj/gromacs/coul/gromacs 0.956024 4.700000 # N0-P1 + pair_coeff @atom:N0_bN0_aN0_dN0_iN0 @atom:P2_bP2_aP2_dP2_iP2 lj/gromacs/coul/gromacs 0.956024 4.700000 # N0-P2 + pair_coeff @atom:N0_bN0_aN0_dN0_iN0 @atom:P3_bP3_aP3_dP3_iP3 lj/gromacs/coul/gromacs 0.836521 4.700000 # N0-P3 + pair_coeff @atom:N0_bN0_aN0_dN0_iN0 @atom:P4_bP4_aP4_dP4_iP4 lj/gromacs/coul/gromacs 0.836521 4.700000 # N0-P4 + pair_coeff @atom:N0_bN0_aN0_dN0_iN0 @atom:P5_bP5_aP5_dP5_iP5 lj/gromacs/coul/gromacs 0.836521 4.700000 # N0-P5 + pair_coeff @atom:N0_bN0_aN0_dN0_iN0 @atom:Q0_bQ0_aQ0_dQ0_iQ0 lj/gromacs/coul/gromacs 0.836521 4.700000 # N0-Q0 + pair_coeff @atom:N0_bN0_aN0_dN0_iN0 @atom:Qa_bQa_aQa_dQa_iQa lj/gromacs/coul/gromacs 0.836521 4.700000 # N0-Qa + pair_coeff @atom:N0_bN0_aN0_dN0_iN0 @atom:Qd_bQd_aQd_dQd_iQd lj/gromacs/coul/gromacs 0.836521 4.700000 # N0-Qd + pair_coeff @atom:N0_bN0_aN0_dN0_iN0 @atom:Qda_bQda_aQda_dQda_iQda lj/gromacs/coul/gromacs 0.836521 4.700000 # N0-Qda + pair_coeff @atom:N0_bN0_aN0_dN0_iN0 @atom:SC1_bSC1_aSC1_dSC1_iSC1 lj/gromacs/coul/gromacs 0.645316 4.700000 # N0-SC1 + pair_coeff @atom:N0_bN0_aN0_dN0_iN0 @atom:SC2_bSC2_aSC2_dSC2_iSC2 lj/gromacs/coul/gromacs 0.740919 4.700000 # N0-SC2 + pair_coeff @atom:N0_bN0_aN0_dN0_iN0 @atom:SC3_bSC3_aSC3_dSC3_iSC3 lj/gromacs/coul/gromacs 0.836521 4.700000 # N0-SC3 + pair_coeff @atom:N0_bN0_aN0_dN0_iN0 @atom:SC4_bSC4_aSC4_dSC4_iSC4 lj/gromacs/coul/gromacs 0.836521 4.700000 # N0-SC4 + pair_coeff @atom:N0_bN0_aN0_dN0_iN0 @atom:SC5_bSC5_aSC5_dSC5_iSC5 lj/gromacs/coul/gromacs 0.836521 4.700000 # N0-SC5 + pair_coeff @atom:N0_bN0_aN0_dN0_iN0 @atom:SN0_bSN0_aSN0_dSN0_iSN0 lj/gromacs/coul/gromacs 0.836521 4.700000 # N0-SN0 + pair_coeff @atom:N0_bN0_aN0_dN0_iN0 @atom:SNa_bSNa_aSNa_dSNa_iSNa lj/gromacs/coul/gromacs 0.836521 4.700000 # N0-SNa + pair_coeff @atom:N0_bN0_aN0_dN0_iN0 @atom:SNd_bSNd_aSNd_dSNd_iSNd lj/gromacs/coul/gromacs 0.836521 4.700000 # N0-SNd + pair_coeff @atom:N0_bN0_aN0_dN0_iN0 @atom:SNda_bSNda_aSNda_dSNda_iSNda lj/gromacs/coul/gromacs 0.836521 4.700000 # N0-SNda + pair_coeff @atom:N0_bN0_aN0_dN0_iN0 @atom:SP1_bSP1_aSP1_dSP1_iSP1 lj/gromacs/coul/gromacs 0.956024 4.700000 # N0-SP1 + pair_coeff @atom:N0_bN0_aN0_dN0_iN0 @atom:SP2_bSP2_aSP2_dSP2_iSP2 lj/gromacs/coul/gromacs 0.956024 4.700000 # N0-SP2 + pair_coeff @atom:N0_bN0_aN0_dN0_iN0 @atom:SP3_bSP3_aSP3_dSP3_iSP3 lj/gromacs/coul/gromacs 0.836521 4.700000 # N0-SP3 + pair_coeff @atom:N0_bN0_aN0_dN0_iN0 @atom:SP4_bSP4_aSP4_dSP4_iSP4 lj/gromacs/coul/gromacs 0.836521 4.700000 # N0-SP4 + pair_coeff @atom:N0_bN0_aN0_dN0_iN0 @atom:SP5_bSP5_aSP5_dSP5_iSP5 lj/gromacs/coul/gromacs 0.836521 4.700000 # N0-SP5 + pair_coeff @atom:N0_bN0_aN0_dN0_iN0 @atom:SQ0_bSQ0_aSQ0_dSQ0_iSQ0 lj/gromacs/coul/gromacs 0.836521 4.700000 # N0-SQ0 + pair_coeff @atom:N0_bN0_aN0_dN0_iN0 @atom:SQa_bSQa_aSQa_dSQa_iSQa lj/gromacs/coul/gromacs 0.836521 4.700000 # N0-SQa + pair_coeff @atom:N0_bN0_aN0_dN0_iN0 @atom:SQd_bSQd_aSQd_dSQd_iSQd lj/gromacs/coul/gromacs 0.836521 4.700000 # N0-SQd + pair_coeff @atom:N0_bN0_aN0_dN0_iN0 @atom:SQda_bSQda_aSQda_dSQda_iSQda lj/gromacs/coul/gromacs 0.836521 4.700000 # N0-SQda + pair_coeff @atom:Na_bNa_aNa_dNa_iNa @atom:Na_bNa_aNa_dNa_iNa lj/gromacs/coul/gromacs 0.956024 4.700000 # Na-Na + pair_coeff @atom:Na_bNa_aNa_dNa_iNa @atom:Nd_bNd_aNd_dNd_iNd lj/gromacs/coul/gromacs 1.075527 4.700000 # Na-Nd + pair_coeff @atom:Na_bNa_aNa_dNa_iNa @atom:Nda_bNda_aNda_dNda_iNda lj/gromacs/coul/gromacs 1.075527 4.700000 # Na-Nda + pair_coeff @atom:Na_bNa_aNa_dNa_iNa @atom:P1_bP1_aP1_dP1_iP1 lj/gromacs/coul/gromacs 1.075527 4.700000 # Na-P1 + pair_coeff @atom:Na_bNa_aNa_dNa_iNa @atom:P2_bP2_aP2_dP2_iP2 lj/gromacs/coul/gromacs 1.075527 4.700000 # Na-P2 + pair_coeff @atom:Na_bNa_aNa_dNa_iNa @atom:P3_bP3_aP3_dP3_iP3 lj/gromacs/coul/gromacs 1.075527 4.700000 # Na-P3 + pair_coeff @atom:Na_bNa_aNa_dNa_iNa @atom:P4_bP4_aP4_dP4_iP4 lj/gromacs/coul/gromacs 0.956024 4.700000 # Na-P4 + pair_coeff @atom:Na_bNa_aNa_dNa_iNa @atom:P5_bP5_aP5_dP5_iP5 lj/gromacs/coul/gromacs 1.195030 4.700000 # Na-P5 + pair_coeff @atom:Na_bNa_aNa_dNa_iNa @atom:Q0_bQ0_aQ0_dQ0_iQ0 lj/gromacs/coul/gromacs 0.956024 4.700000 # Na-Q0 + pair_coeff @atom:Na_bNa_aNa_dNa_iNa @atom:Qa_bQa_aQa_dQa_iQa lj/gromacs/coul/gromacs 0.956024 4.700000 # Na-Qa + pair_coeff @atom:Na_bNa_aNa_dNa_iNa @atom:Qd_bQd_aQd_dQd_iQd lj/gromacs/coul/gromacs 1.195030 4.700000 # Na-Qd + pair_coeff @atom:Na_bNa_aNa_dNa_iNa @atom:Qda_bQda_aQda_dQda_iQda lj/gromacs/coul/gromacs 1.195030 4.700000 # Na-Qda + pair_coeff @atom:Na_bNa_aNa_dNa_iNa @atom:SC1_bSC1_aSC1_dSC1_iSC1 lj/gromacs/coul/gromacs 0.645316 4.700000 # Na-SC1 + pair_coeff @atom:Na_bNa_aNa_dNa_iNa @atom:SC2_bSC2_aSC2_dSC2_iSC2 lj/gromacs/coul/gromacs 0.645316 4.700000 # Na-SC2 + pair_coeff @atom:Na_bNa_aNa_dNa_iNa @atom:SC3_bSC3_aSC3_dSC3_iSC3 lj/gromacs/coul/gromacs 0.645316 4.700000 # Na-SC3 + pair_coeff @atom:Na_bNa_aNa_dNa_iNa @atom:SC4_bSC4_aSC4_dSC4_iSC4 lj/gromacs/coul/gromacs 0.740919 4.700000 # Na-SC4 + pair_coeff @atom:Na_bNa_aNa_dNa_iNa @atom:SC5_bSC5_aSC5_dSC5_iSC5 lj/gromacs/coul/gromacs 0.836521 4.700000 # Na-SC5 + pair_coeff @atom:Na_bNa_aNa_dNa_iNa @atom:SN0_bSN0_aSN0_dSN0_iSN0 lj/gromacs/coul/gromacs 0.836521 4.700000 # Na-SN0 + pair_coeff @atom:Na_bNa_aNa_dNa_iNa @atom:SNa_bSNa_aSNa_dSNa_iSNa lj/gromacs/coul/gromacs 0.956024 4.700000 # Na-SNa + pair_coeff @atom:Na_bNa_aNa_dNa_iNa @atom:SNd_bSNd_aSNd_dSNd_iSNd lj/gromacs/coul/gromacs 1.075527 4.700000 # Na-SNd + pair_coeff @atom:Na_bNa_aNa_dNa_iNa @atom:SNda_bSNda_aSNda_dSNda_iSNda lj/gromacs/coul/gromacs 1.075527 4.700000 # Na-SNda + pair_coeff @atom:Na_bNa_aNa_dNa_iNa @atom:SP1_bSP1_aSP1_dSP1_iSP1 lj/gromacs/coul/gromacs 1.075527 4.700000 # Na-SP1 + pair_coeff @atom:Na_bNa_aNa_dNa_iNa @atom:SP2_bSP2_aSP2_dSP2_iSP2 lj/gromacs/coul/gromacs 1.075527 4.700000 # Na-SP2 + pair_coeff @atom:Na_bNa_aNa_dNa_iNa @atom:SP3_bSP3_aSP3_dSP3_iSP3 lj/gromacs/coul/gromacs 1.075527 4.700000 # Na-SP3 + pair_coeff @atom:Na_bNa_aNa_dNa_iNa @atom:SP4_bSP4_aSP4_dSP4_iSP4 lj/gromacs/coul/gromacs 0.956024 4.700000 # Na-SP4 + pair_coeff @atom:Na_bNa_aNa_dNa_iNa @atom:SP5_bSP5_aSP5_dSP5_iSP5 lj/gromacs/coul/gromacs 1.195030 4.700000 # Na-SP5 + pair_coeff @atom:Na_bNa_aNa_dNa_iNa @atom:SQ0_bSQ0_aSQ0_dSQ0_iSQ0 lj/gromacs/coul/gromacs 0.956024 4.700000 # Na-SQ0 + pair_coeff @atom:Na_bNa_aNa_dNa_iNa @atom:SQa_bSQa_aSQa_dSQa_iSQa lj/gromacs/coul/gromacs 0.956024 4.700000 # Na-SQa + pair_coeff @atom:Na_bNa_aNa_dNa_iNa @atom:SQd_bSQd_aSQd_dSQd_iSQd lj/gromacs/coul/gromacs 1.195030 4.700000 # Na-SQd + pair_coeff @atom:Na_bNa_aNa_dNa_iNa @atom:SQda_bSQda_aSQda_dSQda_iSQda lj/gromacs/coul/gromacs 1.195030 4.700000 # Na-SQda + pair_coeff @atom:Nd_bNd_aNd_dNd_iNd @atom:Nd_bNd_aNd_dNd_iNd lj/gromacs/coul/gromacs 0.956024 4.700000 # Nd-Nd + pair_coeff @atom:Nd_bNd_aNd_dNd_iNd @atom:Nda_bNda_aNda_dNda_iNda lj/gromacs/coul/gromacs 1.075527 4.700000 # Nd-Nda + pair_coeff @atom:Nd_bNd_aNd_dNd_iNd @atom:P1_bP1_aP1_dP1_iP1 lj/gromacs/coul/gromacs 1.075527 4.700000 # Nd-P1 + pair_coeff @atom:Nd_bNd_aNd_dNd_iNd @atom:P2_bP2_aP2_dP2_iP2 lj/gromacs/coul/gromacs 1.075527 4.700000 # Nd-P2 + pair_coeff @atom:Nd_bNd_aNd_dNd_iNd @atom:P3_bP3_aP3_dP3_iP3 lj/gromacs/coul/gromacs 1.075527 4.700000 # Nd-P3 + pair_coeff @atom:Nd_bNd_aNd_dNd_iNd @atom:P4_bP4_aP4_dP4_iP4 lj/gromacs/coul/gromacs 0.956024 4.700000 # Nd-P4 + pair_coeff @atom:Nd_bNd_aNd_dNd_iNd @atom:P5_bP5_aP5_dP5_iP5 lj/gromacs/coul/gromacs 1.195030 4.700000 # Nd-P5 + pair_coeff @atom:Nd_bNd_aNd_dNd_iNd @atom:Q0_bQ0_aQ0_dQ0_iQ0 lj/gromacs/coul/gromacs 0.956024 4.700000 # Nd-Q0 + pair_coeff @atom:Nd_bNd_aNd_dNd_iNd @atom:Qa_bQa_aQa_dQa_iQa lj/gromacs/coul/gromacs 1.195030 4.700000 # Nd-Qa + pair_coeff @atom:Nd_bNd_aNd_dNd_iNd @atom:Qd_bQd_aQd_dQd_iQd lj/gromacs/coul/gromacs 0.956024 4.700000 # Nd-Qd + pair_coeff @atom:Nd_bNd_aNd_dNd_iNd @atom:Qda_bQda_aQda_dQda_iQda lj/gromacs/coul/gromacs 1.195030 4.700000 # Nd-Qda + pair_coeff @atom:Nd_bNd_aNd_dNd_iNd @atom:SC1_bSC1_aSC1_dSC1_iSC1 lj/gromacs/coul/gromacs 0.645316 4.700000 # Nd-SC1 + pair_coeff @atom:Nd_bNd_aNd_dNd_iNd @atom:SC2_bSC2_aSC2_dSC2_iSC2 lj/gromacs/coul/gromacs 0.645316 4.700000 # Nd-SC2 + pair_coeff @atom:Nd_bNd_aNd_dNd_iNd @atom:SC3_bSC3_aSC3_dSC3_iSC3 lj/gromacs/coul/gromacs 0.645316 4.700000 # Nd-SC3 + pair_coeff @atom:Nd_bNd_aNd_dNd_iNd @atom:SC4_bSC4_aSC4_dSC4_iSC4 lj/gromacs/coul/gromacs 0.740919 4.700000 # Nd-SC4 + pair_coeff @atom:Nd_bNd_aNd_dNd_iNd @atom:SC5_bSC5_aSC5_dSC5_iSC5 lj/gromacs/coul/gromacs 0.836521 4.700000 # Nd-SC5 + pair_coeff @atom:Nd_bNd_aNd_dNd_iNd @atom:SN0_bSN0_aSN0_dSN0_iSN0 lj/gromacs/coul/gromacs 0.836521 4.700000 # Nd-SN0 + pair_coeff @atom:Nd_bNd_aNd_dNd_iNd @atom:SNa_bSNa_aSNa_dSNa_iSNa lj/gromacs/coul/gromacs 1.075527 4.700000 # Nd-SNa + pair_coeff @atom:Nd_bNd_aNd_dNd_iNd @atom:SNd_bSNd_aSNd_dSNd_iSNd lj/gromacs/coul/gromacs 0.956024 4.700000 # Nd-SNd + pair_coeff @atom:Nd_bNd_aNd_dNd_iNd @atom:SNda_bSNda_aSNda_dSNda_iSNda lj/gromacs/coul/gromacs 1.075527 4.700000 # Nd-SNda + pair_coeff @atom:Nd_bNd_aNd_dNd_iNd @atom:SP1_bSP1_aSP1_dSP1_iSP1 lj/gromacs/coul/gromacs 1.075527 4.700000 # Nd-SP1 + pair_coeff @atom:Nd_bNd_aNd_dNd_iNd @atom:SP2_bSP2_aSP2_dSP2_iSP2 lj/gromacs/coul/gromacs 1.075527 4.700000 # Nd-SP2 + pair_coeff @atom:Nd_bNd_aNd_dNd_iNd @atom:SP3_bSP3_aSP3_dSP3_iSP3 lj/gromacs/coul/gromacs 1.075527 4.700000 # Nd-SP3 + pair_coeff @atom:Nd_bNd_aNd_dNd_iNd @atom:SP4_bSP4_aSP4_dSP4_iSP4 lj/gromacs/coul/gromacs 0.956024 4.700000 # Nd-SP4 + pair_coeff @atom:Nd_bNd_aNd_dNd_iNd @atom:SP5_bSP5_aSP5_dSP5_iSP5 lj/gromacs/coul/gromacs 1.195030 4.700000 # Nd-SP5 + pair_coeff @atom:Nd_bNd_aNd_dNd_iNd @atom:SQ0_bSQ0_aSQ0_dSQ0_iSQ0 lj/gromacs/coul/gromacs 0.956024 4.700000 # Nd-SQ0 + pair_coeff @atom:Nd_bNd_aNd_dNd_iNd @atom:SQa_bSQa_aSQa_dSQa_iSQa lj/gromacs/coul/gromacs 1.195030 4.700000 # Nd-SQa + pair_coeff @atom:Nd_bNd_aNd_dNd_iNd @atom:SQd_bSQd_aSQd_dSQd_iSQd lj/gromacs/coul/gromacs 0.956024 4.700000 # Nd-SQd + pair_coeff @atom:Nd_bNd_aNd_dNd_iNd @atom:SQda_bSQda_aSQda_dSQda_iSQda lj/gromacs/coul/gromacs 1.195030 4.700000 # Nd-SQda + pair_coeff @atom:Nda_bNda_aNda_dNda_iNda @atom:Nda_bNda_aNda_dNda_iNda lj/gromacs/coul/gromacs 1.075527 4.700000 # Nda-Nda + pair_coeff @atom:Nda_bNda_aNda_dNda_iNda @atom:P1_bP1_aP1_dP1_iP1 lj/gromacs/coul/gromacs 1.075527 4.700000 # Nda-P1 + pair_coeff @atom:Nda_bNda_aNda_dNda_iNda @atom:P2_bP2_aP2_dP2_iP2 lj/gromacs/coul/gromacs 1.075527 4.700000 # Nda-P2 + pair_coeff @atom:Nda_bNda_aNda_dNda_iNda @atom:P3_bP3_aP3_dP3_iP3 lj/gromacs/coul/gromacs 1.075527 4.700000 # Nda-P3 + pair_coeff @atom:Nda_bNda_aNda_dNda_iNda @atom:P4_bP4_aP4_dP4_iP4 lj/gromacs/coul/gromacs 0.956024 4.700000 # Nda-P4 + pair_coeff @atom:Nda_bNda_aNda_dNda_iNda @atom:P5_bP5_aP5_dP5_iP5 lj/gromacs/coul/gromacs 1.195030 4.700000 # Nda-P5 + pair_coeff @atom:Nda_bNda_aNda_dNda_iNda @atom:Q0_bQ0_aQ0_dQ0_iQ0 lj/gromacs/coul/gromacs 0.956024 4.700000 # Nda-Q0 + pair_coeff @atom:Nda_bNda_aNda_dNda_iNda @atom:Qa_bQa_aQa_dQa_iQa lj/gromacs/coul/gromacs 1.195030 4.700000 # Nda-Qa + pair_coeff @atom:Nda_bNda_aNda_dNda_iNda @atom:Qd_bQd_aQd_dQd_iQd lj/gromacs/coul/gromacs 1.195030 4.700000 # Nda-Qd + pair_coeff @atom:Nda_bNda_aNda_dNda_iNda @atom:Qda_bQda_aQda_dQda_iQda lj/gromacs/coul/gromacs 1.195030 4.700000 # Nda-Qda + pair_coeff @atom:Nda_bNda_aNda_dNda_iNda @atom:SC1_bSC1_aSC1_dSC1_iSC1 lj/gromacs/coul/gromacs 0.645316 4.700000 # Nda-SC1 + pair_coeff @atom:Nda_bNda_aNda_dNda_iNda @atom:SC2_bSC2_aSC2_dSC2_iSC2 lj/gromacs/coul/gromacs 0.645316 4.700000 # Nda-SC2 + pair_coeff @atom:Nda_bNda_aNda_dNda_iNda @atom:SC3_bSC3_aSC3_dSC3_iSC3 lj/gromacs/coul/gromacs 0.645316 4.700000 # Nda-SC3 + pair_coeff @atom:Nda_bNda_aNda_dNda_iNda @atom:SC4_bSC4_aSC4_dSC4_iSC4 lj/gromacs/coul/gromacs 0.740919 4.700000 # Nda-SC4 + pair_coeff @atom:Nda_bNda_aNda_dNda_iNda @atom:SC5_bSC5_aSC5_dSC5_iSC5 lj/gromacs/coul/gromacs 0.836521 4.700000 # Nda-SC5 + pair_coeff @atom:Nda_bNda_aNda_dNda_iNda @atom:SN0_bSN0_aSN0_dSN0_iSN0 lj/gromacs/coul/gromacs 0.836521 4.700000 # Nda-SN0 + pair_coeff @atom:Nda_bNda_aNda_dNda_iNda @atom:SNa_bSNa_aSNa_dSNa_iSNa lj/gromacs/coul/gromacs 1.075527 4.700000 # Nda-SNa + pair_coeff @atom:Nda_bNda_aNda_dNda_iNda @atom:SNd_bSNd_aSNd_dSNd_iSNd lj/gromacs/coul/gromacs 1.075527 4.700000 # Nda-SNd + pair_coeff @atom:Nda_bNda_aNda_dNda_iNda @atom:SNda_bSNda_aSNda_dSNda_iSNda lj/gromacs/coul/gromacs 1.075527 4.700000 # Nda-SNda + pair_coeff @atom:Nda_bNda_aNda_dNda_iNda @atom:SP1_bSP1_aSP1_dSP1_iSP1 lj/gromacs/coul/gromacs 1.075527 4.700000 # Nda-SP1 + pair_coeff @atom:Nda_bNda_aNda_dNda_iNda @atom:SP2_bSP2_aSP2_dSP2_iSP2 lj/gromacs/coul/gromacs 1.075527 4.700000 # Nda-SP2 + pair_coeff @atom:Nda_bNda_aNda_dNda_iNda @atom:SP3_bSP3_aSP3_dSP3_iSP3 lj/gromacs/coul/gromacs 1.075527 4.700000 # Nda-SP3 + pair_coeff @atom:Nda_bNda_aNda_dNda_iNda @atom:SP4_bSP4_aSP4_dSP4_iSP4 lj/gromacs/coul/gromacs 0.956024 4.700000 # Nda-SP4 + pair_coeff @atom:Nda_bNda_aNda_dNda_iNda @atom:SP5_bSP5_aSP5_dSP5_iSP5 lj/gromacs/coul/gromacs 1.195030 4.700000 # Nda-SP5 + pair_coeff @atom:Nda_bNda_aNda_dNda_iNda @atom:SQ0_bSQ0_aSQ0_dSQ0_iSQ0 lj/gromacs/coul/gromacs 0.956024 4.700000 # Nda-SQ0 + pair_coeff @atom:Nda_bNda_aNda_dNda_iNda @atom:SQa_bSQa_aSQa_dSQa_iSQa lj/gromacs/coul/gromacs 1.195030 4.700000 # Nda-SQa + pair_coeff @atom:Nda_bNda_aNda_dNda_iNda @atom:SQd_bSQd_aSQd_dSQd_iSQd lj/gromacs/coul/gromacs 1.195030 4.700000 # Nda-SQd + pair_coeff @atom:Nda_bNda_aNda_dNda_iNda @atom:SQda_bSQda_aSQda_dSQda_iSQda lj/gromacs/coul/gromacs 1.195030 4.700000 # Nda-SQda + pair_coeff @atom:P1_bP1_aP1_dP1_iP1 @atom:P1_bP1_aP1_dP1_iP1 lj/gromacs/coul/gromacs 1.075527 4.700000 # P1-P1 + pair_coeff @atom:P1_bP1_aP1_dP1_iP1 @atom:P2_bP2_aP2_dP2_iP2 lj/gromacs/coul/gromacs 1.075527 4.700000 # P1-P2 + pair_coeff @atom:P1_bP1_aP1_dP1_iP1 @atom:P3_bP3_aP3_dP3_iP3 lj/gromacs/coul/gromacs 1.075527 4.700000 # P1-P3 + pair_coeff @atom:P1_bP1_aP1_dP1_iP1 @atom:P4_bP4_aP4_dP4_iP4 lj/gromacs/coul/gromacs 1.075527 4.700000 # P1-P4 + pair_coeff @atom:P1_bP1_aP1_dP1_iP1 @atom:P5_bP5_aP5_dP5_iP5 lj/gromacs/coul/gromacs 1.338434 4.700000 # P1-P5 + pair_coeff @atom:P1_bP1_aP1_dP1_iP1 @atom:Q0_bQ0_aQ0_dQ0_iQ0 lj/gromacs/coul/gromacs 0.956024 4.700000 # P1-Q0 + pair_coeff @atom:P1_bP1_aP1_dP1_iP1 @atom:Qa_bQa_aQa_dQa_iQa lj/gromacs/coul/gromacs 1.195030 4.700000 # P1-Qa + pair_coeff @atom:P1_bP1_aP1_dP1_iP1 @atom:Qd_bQd_aQd_dQd_iQd lj/gromacs/coul/gromacs 1.195030 4.700000 # P1-Qd + pair_coeff @atom:P1_bP1_aP1_dP1_iP1 @atom:Qda_bQda_aQda_dQda_iQda lj/gromacs/coul/gromacs 1.195030 4.700000 # P1-Qda + pair_coeff @atom:P1_bP1_aP1_dP1_iP1 @atom:SC1_bSC1_aSC1_dSC1_iSC1 lj/gromacs/coul/gromacs 0.645316 4.700000 # P1-SC1 + pair_coeff @atom:P1_bP1_aP1_dP1_iP1 @atom:SC2_bSC2_aSC2_dSC2_iSC2 lj/gromacs/coul/gromacs 0.740919 4.700000 # P1-SC2 + pair_coeff @atom:P1_bP1_aP1_dP1_iP1 @atom:SC3_bSC3_aSC3_dSC3_iSC3 lj/gromacs/coul/gromacs 0.836521 4.700000 # P1-SC3 + pair_coeff @atom:P1_bP1_aP1_dP1_iP1 @atom:SC4_bSC4_aSC4_dSC4_iSC4 lj/gromacs/coul/gromacs 0.836521 4.700000 # P1-SC4 + pair_coeff @atom:P1_bP1_aP1_dP1_iP1 @atom:SC5_bSC5_aSC5_dSC5_iSC5 lj/gromacs/coul/gromacs 0.836521 4.700000 # P1-SC5 + pair_coeff @atom:P1_bP1_aP1_dP1_iP1 @atom:SN0_bSN0_aSN0_dSN0_iSN0 lj/gromacs/coul/gromacs 0.956024 4.700000 # P1-SN0 + pair_coeff @atom:P1_bP1_aP1_dP1_iP1 @atom:SNa_bSNa_aSNa_dSNa_iSNa lj/gromacs/coul/gromacs 1.075527 4.700000 # P1-SNa + pair_coeff @atom:P1_bP1_aP1_dP1_iP1 @atom:SNd_bSNd_aSNd_dSNd_iSNd lj/gromacs/coul/gromacs 1.075527 4.700000 # P1-SNd + pair_coeff @atom:P1_bP1_aP1_dP1_iP1 @atom:SNda_bSNda_aSNda_dSNda_iSNda lj/gromacs/coul/gromacs 1.075527 4.700000 # P1-SNda + pair_coeff @atom:P1_bP1_aP1_dP1_iP1 @atom:SP1_bSP1_aSP1_dSP1_iSP1 lj/gromacs/coul/gromacs 1.075527 4.700000 # P1-SP1 + pair_coeff @atom:P1_bP1_aP1_dP1_iP1 @atom:SP2_bSP2_aSP2_dSP2_iSP2 lj/gromacs/coul/gromacs 1.075527 4.700000 # P1-SP2 + pair_coeff @atom:P1_bP1_aP1_dP1_iP1 @atom:SP3_bSP3_aSP3_dSP3_iSP3 lj/gromacs/coul/gromacs 1.075527 4.700000 # P1-SP3 + pair_coeff @atom:P1_bP1_aP1_dP1_iP1 @atom:SP4_bSP4_aSP4_dSP4_iSP4 lj/gromacs/coul/gromacs 1.075527 4.700000 # P1-SP4 + pair_coeff @atom:P1_bP1_aP1_dP1_iP1 @atom:SP5_bSP5_aSP5_dSP5_iSP5 lj/gromacs/coul/gromacs 1.338434 4.700000 # P1-SP5 + pair_coeff @atom:P1_bP1_aP1_dP1_iP1 @atom:SQ0_bSQ0_aSQ0_dSQ0_iSQ0 lj/gromacs/coul/gromacs 0.956024 4.700000 # P1-SQ0 + pair_coeff @atom:P1_bP1_aP1_dP1_iP1 @atom:SQa_bSQa_aSQa_dSQa_iSQa lj/gromacs/coul/gromacs 1.195030 4.700000 # P1-SQa + pair_coeff @atom:P1_bP1_aP1_dP1_iP1 @atom:SQd_bSQd_aSQd_dSQd_iSQd lj/gromacs/coul/gromacs 1.195030 4.700000 # P1-SQd + pair_coeff @atom:P1_bP1_aP1_dP1_iP1 @atom:SQda_bSQda_aSQda_dSQda_iSQda lj/gromacs/coul/gromacs 1.195030 4.700000 # P1-SQda + pair_coeff @atom:P2_bP2_aP2_dP2_iP2 @atom:P2_bP2_aP2_dP2_iP2 lj/gromacs/coul/gromacs 1.075527 4.700000 # P2-P2 + pair_coeff @atom:P2_bP2_aP2_dP2_iP2 @atom:P3_bP3_aP3_dP3_iP3 lj/gromacs/coul/gromacs 1.075527 4.700000 # P2-P3 + pair_coeff @atom:P2_bP2_aP2_dP2_iP2 @atom:P4_bP4_aP4_dP4_iP4 lj/gromacs/coul/gromacs 1.075527 4.700000 # P2-P4 + pair_coeff @atom:P2_bP2_aP2_dP2_iP2 @atom:P5_bP5_aP5_dP5_iP5 lj/gromacs/coul/gromacs 1.338434 4.700000 # P2-P5 + pair_coeff @atom:P2_bP2_aP2_dP2_iP2 @atom:Q0_bQ0_aQ0_dQ0_iQ0 lj/gromacs/coul/gromacs 1.075527 4.700000 # P2-Q0 + pair_coeff @atom:P2_bP2_aP2_dP2_iP2 @atom:Qa_bQa_aQa_dQa_iQa lj/gromacs/coul/gromacs 1.195030 4.700000 # P2-Qa + pair_coeff @atom:P2_bP2_aP2_dP2_iP2 @atom:Qd_bQd_aQd_dQd_iQd lj/gromacs/coul/gromacs 1.195030 4.700000 # P2-Qd + pair_coeff @atom:P2_bP2_aP2_dP2_iP2 @atom:Qda_bQda_aQda_dQda_iQda lj/gromacs/coul/gromacs 1.195030 4.700000 # P2-Qda + pair_coeff @atom:P2_bP2_aP2_dP2_iP2 @atom:SC1_bSC1_aSC1_dSC1_iSC1 lj/gromacs/coul/gromacs 0.549714 4.700000 # P2-SC1 + pair_coeff @atom:P2_bP2_aP2_dP2_iP2 @atom:SC2_bSC2_aSC2_dSC2_iSC2 lj/gromacs/coul/gromacs 0.645316 4.700000 # P2-SC2 + pair_coeff @atom:P2_bP2_aP2_dP2_iP2 @atom:SC3_bSC3_aSC3_dSC3_iSC3 lj/gromacs/coul/gromacs 0.740919 4.700000 # P2-SC3 + pair_coeff @atom:P2_bP2_aP2_dP2_iP2 @atom:SC4_bSC4_aSC4_dSC4_iSC4 lj/gromacs/coul/gromacs 0.836521 4.700000 # P2-SC4 + pair_coeff @atom:P2_bP2_aP2_dP2_iP2 @atom:SC5_bSC5_aSC5_dSC5_iSC5 lj/gromacs/coul/gromacs 0.836521 4.700000 # P2-SC5 + pair_coeff @atom:P2_bP2_aP2_dP2_iP2 @atom:SN0_bSN0_aSN0_dSN0_iSN0 lj/gromacs/coul/gromacs 0.956024 4.700000 # P2-SN0 + pair_coeff @atom:P2_bP2_aP2_dP2_iP2 @atom:SNa_bSNa_aSNa_dSNa_iSNa lj/gromacs/coul/gromacs 1.075527 4.700000 # P2-SNa + pair_coeff @atom:P2_bP2_aP2_dP2_iP2 @atom:SNd_bSNd_aSNd_dSNd_iSNd lj/gromacs/coul/gromacs 1.075527 4.700000 # P2-SNd + pair_coeff @atom:P2_bP2_aP2_dP2_iP2 @atom:SNda_bSNda_aSNda_dSNda_iSNda lj/gromacs/coul/gromacs 1.075527 4.700000 # P2-SNda + pair_coeff @atom:P2_bP2_aP2_dP2_iP2 @atom:SP1_bSP1_aSP1_dSP1_iSP1 lj/gromacs/coul/gromacs 1.075527 4.700000 # P2-SP1 + pair_coeff @atom:P2_bP2_aP2_dP2_iP2 @atom:SP2_bSP2_aSP2_dSP2_iSP2 lj/gromacs/coul/gromacs 1.075527 4.700000 # P2-SP2 + pair_coeff @atom:P2_bP2_aP2_dP2_iP2 @atom:SP3_bSP3_aSP3_dSP3_iSP3 lj/gromacs/coul/gromacs 1.075527 4.700000 # P2-SP3 + pair_coeff @atom:P2_bP2_aP2_dP2_iP2 @atom:SP4_bSP4_aSP4_dSP4_iSP4 lj/gromacs/coul/gromacs 1.075527 4.700000 # P2-SP4 + pair_coeff @atom:P2_bP2_aP2_dP2_iP2 @atom:SP5_bSP5_aSP5_dSP5_iSP5 lj/gromacs/coul/gromacs 1.338434 4.700000 # P2-SP5 + pair_coeff @atom:P2_bP2_aP2_dP2_iP2 @atom:SQ0_bSQ0_aSQ0_dSQ0_iSQ0 lj/gromacs/coul/gromacs 1.075527 4.700000 # P2-SQ0 + pair_coeff @atom:P2_bP2_aP2_dP2_iP2 @atom:SQa_bSQa_aSQa_dSQa_iSQa lj/gromacs/coul/gromacs 1.195030 4.700000 # P2-SQa + pair_coeff @atom:P2_bP2_aP2_dP2_iP2 @atom:SQd_bSQd_aSQd_dSQd_iSQd lj/gromacs/coul/gromacs 1.195030 4.700000 # P2-SQd + pair_coeff @atom:P2_bP2_aP2_dP2_iP2 @atom:SQda_bSQda_aSQda_dSQda_iSQda lj/gromacs/coul/gromacs 1.195030 4.700000 # P2-SQda + pair_coeff @atom:P3_bP3_aP3_dP3_iP3 @atom:P3_bP3_aP3_dP3_iP3 lj/gromacs/coul/gromacs 1.195030 4.700000 # P3-P3 + pair_coeff @atom:P3_bP3_aP3_dP3_iP3 @atom:P4_bP4_aP4_dP4_iP4 lj/gromacs/coul/gromacs 1.195030 4.700000 # P3-P4 + pair_coeff @atom:P3_bP3_aP3_dP3_iP3 @atom:P5_bP5_aP5_dP5_iP5 lj/gromacs/coul/gromacs 1.338434 4.700000 # P3-P5 + pair_coeff @atom:P3_bP3_aP3_dP3_iP3 @atom:Q0_bQ0_aQ0_dQ0_iQ0 lj/gromacs/coul/gromacs 1.195030 4.700000 # P3-Q0 + pair_coeff @atom:P3_bP3_aP3_dP3_iP3 @atom:Qa_bQa_aQa_dQa_iQa lj/gromacs/coul/gromacs 1.338434 4.700000 # P3-Qa + pair_coeff @atom:P3_bP3_aP3_dP3_iP3 @atom:Qd_bQd_aQd_dQd_iQd lj/gromacs/coul/gromacs 1.338434 4.700000 # P3-Qd + pair_coeff @atom:P3_bP3_aP3_dP3_iP3 @atom:Qda_bQda_aQda_dQda_iQda lj/gromacs/coul/gromacs 1.338434 4.700000 # P3-Qda + pair_coeff @atom:P3_bP3_aP3_dP3_iP3 @atom:SC1_bSC1_aSC1_dSC1_iSC1 lj/gromacs/coul/gromacs 0.549714 4.700000 # P3-SC1 + pair_coeff @atom:P3_bP3_aP3_dP3_iP3 @atom:SC2_bSC2_aSC2_dSC2_iSC2 lj/gromacs/coul/gromacs 0.645316 4.700000 # P3-SC2 + pair_coeff @atom:P3_bP3_aP3_dP3_iP3 @atom:SC3_bSC3_aSC3_dSC3_iSC3 lj/gromacs/coul/gromacs 0.740919 4.700000 # P3-SC3 + pair_coeff @atom:P3_bP3_aP3_dP3_iP3 @atom:SC4_bSC4_aSC4_dSC4_iSC4 lj/gromacs/coul/gromacs 0.740919 4.700000 # P3-SC4 + pair_coeff @atom:P3_bP3_aP3_dP3_iP3 @atom:SC5_bSC5_aSC5_dSC5_iSC5 lj/gromacs/coul/gromacs 0.836521 4.700000 # P3-SC5 + pair_coeff @atom:P3_bP3_aP3_dP3_iP3 @atom:SN0_bSN0_aSN0_dSN0_iSN0 lj/gromacs/coul/gromacs 0.836521 4.700000 # P3-SN0 + pair_coeff @atom:P3_bP3_aP3_dP3_iP3 @atom:SNa_bSNa_aSNa_dSNa_iSNa lj/gromacs/coul/gromacs 1.075527 4.700000 # P3-SNa + pair_coeff @atom:P3_bP3_aP3_dP3_iP3 @atom:SNd_bSNd_aSNd_dSNd_iSNd lj/gromacs/coul/gromacs 1.075527 4.700000 # P3-SNd + pair_coeff @atom:P3_bP3_aP3_dP3_iP3 @atom:SNda_bSNda_aSNda_dSNda_iSNda lj/gromacs/coul/gromacs 1.075527 4.700000 # P3-SNda + pair_coeff @atom:P3_bP3_aP3_dP3_iP3 @atom:SP1_bSP1_aSP1_dSP1_iSP1 lj/gromacs/coul/gromacs 1.075527 4.700000 # P3-SP1 + pair_coeff @atom:P3_bP3_aP3_dP3_iP3 @atom:SP2_bSP2_aSP2_dSP2_iSP2 lj/gromacs/coul/gromacs 1.075527 4.700000 # P3-SP2 + pair_coeff @atom:P3_bP3_aP3_dP3_iP3 @atom:SP3_bSP3_aSP3_dSP3_iSP3 lj/gromacs/coul/gromacs 1.195030 4.700000 # P3-SP3 + pair_coeff @atom:P3_bP3_aP3_dP3_iP3 @atom:SP4_bSP4_aSP4_dSP4_iSP4 lj/gromacs/coul/gromacs 1.195030 4.700000 # P3-SP4 + pair_coeff @atom:P3_bP3_aP3_dP3_iP3 @atom:SP5_bSP5_aSP5_dSP5_iSP5 lj/gromacs/coul/gromacs 1.338434 4.700000 # P3-SP5 + pair_coeff @atom:P3_bP3_aP3_dP3_iP3 @atom:SQ0_bSQ0_aSQ0_dSQ0_iSQ0 lj/gromacs/coul/gromacs 1.195030 4.700000 # P3-SQ0 + pair_coeff @atom:P3_bP3_aP3_dP3_iP3 @atom:SQa_bSQa_aSQa_dSQa_iSQa lj/gromacs/coul/gromacs 1.338434 4.700000 # P3-SQa + pair_coeff @atom:P3_bP3_aP3_dP3_iP3 @atom:SQd_bSQd_aSQd_dSQd_iSQd lj/gromacs/coul/gromacs 1.338434 4.700000 # P3-SQd + pair_coeff @atom:P3_bP3_aP3_dP3_iP3 @atom:SQda_bSQda_aSQda_dSQda_iSQda lj/gromacs/coul/gromacs 1.338434 4.700000 # P3-SQda + pair_coeff @atom:P4_bP4_aP4_dP4_iP4 @atom:P4_bP4_aP4_dP4_iP4 lj/gromacs/coul/gromacs 1.195030 4.700000 # P4-P4 + pair_coeff @atom:P4_bP4_aP4_dP4_iP4 @atom:P5_bP5_aP5_dP5_iP5 lj/gromacs/coul/gromacs 1.338434 4.700000 # P4-P5 + pair_coeff @atom:P4_bP4_aP4_dP4_iP4 @atom:Q0_bQ0_aQ0_dQ0_iQ0 lj/gromacs/coul/gromacs 1.338434 4.700000 # P4-Q0 + pair_coeff @atom:P4_bP4_aP4_dP4_iP4 @atom:Qa_bQa_aQa_dQa_iQa lj/gromacs/coul/gromacs 1.338434 4.700000 # P4-Qa + pair_coeff @atom:P4_bP4_aP4_dP4_iP4 @atom:Qd_bQd_aQd_dQd_iQd lj/gromacs/coul/gromacs 1.338434 4.700000 # P4-Qd + pair_coeff @atom:P4_bP4_aP4_dP4_iP4 @atom:Qda_bQda_aQda_dQda_iQda lj/gromacs/coul/gromacs 1.338434 4.700000 # P4-Qda + pair_coeff @atom:P4_bP4_aP4_dP4_iP4 @atom:SC1_bSC1_aSC1_dSC1_iSC1 lj/gromacs/coul/gromacs 0.478012 4.700000 # P4-SC1 + pair_coeff @atom:P4_bP4_aP4_dP4_iP4 @atom:SC2_bSC2_aSC2_dSC2_iSC2 lj/gromacs/coul/gromacs 0.549714 4.700000 # P4-SC2 + pair_coeff @atom:P4_bP4_aP4_dP4_iP4 @atom:SC3_bSC3_aSC3_dSC3_iSC3 lj/gromacs/coul/gromacs 0.645316 4.700000 # P4-SC3 + pair_coeff @atom:P4_bP4_aP4_dP4_iP4 @atom:SC4_bSC4_aSC4_dSC4_iSC4 lj/gromacs/coul/gromacs 0.645316 4.700000 # P4-SC4 + pair_coeff @atom:P4_bP4_aP4_dP4_iP4 @atom:SC5_bSC5_aSC5_dSC5_iSC5 lj/gromacs/coul/gromacs 0.740919 4.700000 # P4-SC5 + pair_coeff @atom:P4_bP4_aP4_dP4_iP4 @atom:SN0_bSN0_aSN0_dSN0_iSN0 lj/gromacs/coul/gromacs 0.836521 4.700000 # P4-SN0 + pair_coeff @atom:P4_bP4_aP4_dP4_iP4 @atom:SNa_bSNa_aSNa_dSNa_iSNa lj/gromacs/coul/gromacs 0.956024 4.700000 # P4-SNa + pair_coeff @atom:P4_bP4_aP4_dP4_iP4 @atom:SNd_bSNd_aSNd_dSNd_iSNd lj/gromacs/coul/gromacs 0.956024 4.700000 # P4-SNd + pair_coeff @atom:P4_bP4_aP4_dP4_iP4 @atom:SNda_bSNda_aSNda_dSNda_iSNda lj/gromacs/coul/gromacs 0.956024 4.700000 # P4-SNda + pair_coeff @atom:P4_bP4_aP4_dP4_iP4 @atom:SP1_bSP1_aSP1_dSP1_iSP1 lj/gromacs/coul/gromacs 1.075527 4.700000 # P4-SP1 + pair_coeff @atom:P4_bP4_aP4_dP4_iP4 @atom:SP2_bSP2_aSP2_dSP2_iSP2 lj/gromacs/coul/gromacs 1.075527 4.700000 # P4-SP2 + pair_coeff @atom:P4_bP4_aP4_dP4_iP4 @atom:SP3_bSP3_aSP3_dSP3_iSP3 lj/gromacs/coul/gromacs 1.195030 4.700000 # P4-SP3 + pair_coeff @atom:P4_bP4_aP4_dP4_iP4 @atom:SP4_bSP4_aSP4_dSP4_iSP4 lj/gromacs/coul/gromacs 1.195030 4.700000 # P4-SP4 + pair_coeff @atom:P4_bP4_aP4_dP4_iP4 @atom:SP5_bSP5_aSP5_dSP5_iSP5 lj/gromacs/coul/gromacs 1.338434 4.700000 # P4-SP5 + pair_coeff @atom:P4_bP4_aP4_dP4_iP4 @atom:SQ0_bSQ0_aSQ0_dSQ0_iSQ0 lj/gromacs/coul/gromacs 1.338434 4.700000 # P4-SQ0 + pair_coeff @atom:P4_bP4_aP4_dP4_iP4 @atom:SQa_bSQa_aSQa_dSQa_iSQa lj/gromacs/coul/gromacs 1.338434 4.700000 # P4-SQa + pair_coeff @atom:P4_bP4_aP4_dP4_iP4 @atom:SQd_bSQd_aSQd_dSQd_iSQd lj/gromacs/coul/gromacs 1.338434 4.700000 # P4-SQd + pair_coeff @atom:P4_bP4_aP4_dP4_iP4 @atom:SQda_bSQda_aSQda_dSQda_iSQda lj/gromacs/coul/gromacs 1.338434 4.700000 # P4-SQda + pair_coeff @atom:P5_bP5_aP5_dP5_iP5 @atom:P5_bP5_aP5_dP5_iP5 lj/gromacs/coul/gromacs 1.338434 4.700000 # P5-P5 + pair_coeff @atom:P5_bP5_aP5_dP5_iP5 @atom:Q0_bQ0_aQ0_dQ0_iQ0 lj/gromacs/coul/gromacs 1.195030 4.700000 # P5-Q0 + pair_coeff @atom:P5_bP5_aP5_dP5_iP5 @atom:Qa_bQa_aQa_dQa_iQa lj/gromacs/coul/gromacs 1.338434 4.700000 # P5-Qa + pair_coeff @atom:P5_bP5_aP5_dP5_iP5 @atom:Qd_bQd_aQd_dQd_iQd lj/gromacs/coul/gromacs 1.338434 4.700000 # P5-Qd + pair_coeff @atom:P5_bP5_aP5_dP5_iP5 @atom:Qda_bQda_aQda_dQda_iQda lj/gromacs/coul/gromacs 1.338434 4.700000 # P5-Qda + pair_coeff @atom:P5_bP5_aP5_dP5_iP5 @atom:SC1_bSC1_aSC1_dSC1_iSC1 lj/gromacs/coul/gromacs 0.478012 4.700000 # P5-SC1 + pair_coeff @atom:P5_bP5_aP5_dP5_iP5 @atom:SC2_bSC2_aSC2_dSC2_iSC2 lj/gromacs/coul/gromacs 0.549714 4.700000 # P5-SC2 + pair_coeff @atom:P5_bP5_aP5_dP5_iP5 @atom:SC3_bSC3_aSC3_dSC3_iSC3 lj/gromacs/coul/gromacs 0.645316 4.700000 # P5-SC3 + pair_coeff @atom:P5_bP5_aP5_dP5_iP5 @atom:SC4_bSC4_aSC4_dSC4_iSC4 lj/gromacs/coul/gromacs 0.645316 4.700000 # P5-SC4 + pair_coeff @atom:P5_bP5_aP5_dP5_iP5 @atom:SC5_bSC5_aSC5_dSC5_iSC5 lj/gromacs/coul/gromacs 0.740919 4.700000 # P5-SC5 + pair_coeff @atom:P5_bP5_aP5_dP5_iP5 @atom:SN0_bSN0_aSN0_dSN0_iSN0 lj/gromacs/coul/gromacs 0.836521 4.700000 # P5-SN0 + pair_coeff @atom:P5_bP5_aP5_dP5_iP5 @atom:SNa_bSNa_aSNa_dSNa_iSNa lj/gromacs/coul/gromacs 1.195030 4.700000 # P5-SNa + pair_coeff @atom:P5_bP5_aP5_dP5_iP5 @atom:SNd_bSNd_aSNd_dSNd_iSNd lj/gromacs/coul/gromacs 1.195030 4.700000 # P5-SNd + pair_coeff @atom:P5_bP5_aP5_dP5_iP5 @atom:SNda_bSNda_aSNda_dSNda_iSNda lj/gromacs/coul/gromacs 1.195030 4.700000 # P5-SNda + pair_coeff @atom:P5_bP5_aP5_dP5_iP5 @atom:SP1_bSP1_aSP1_dSP1_iSP1 lj/gromacs/coul/gromacs 1.338434 4.700000 # P5-SP1 + pair_coeff @atom:P5_bP5_aP5_dP5_iP5 @atom:SP2_bSP2_aSP2_dSP2_iSP2 lj/gromacs/coul/gromacs 1.338434 4.700000 # P5-SP2 + pair_coeff @atom:P5_bP5_aP5_dP5_iP5 @atom:SP3_bSP3_aSP3_dSP3_iSP3 lj/gromacs/coul/gromacs 1.338434 4.700000 # P5-SP3 + pair_coeff @atom:P5_bP5_aP5_dP5_iP5 @atom:SP4_bSP4_aSP4_dSP4_iSP4 lj/gromacs/coul/gromacs 1.338434 4.700000 # P5-SP4 + pair_coeff @atom:P5_bP5_aP5_dP5_iP5 @atom:SP5_bSP5_aSP5_dSP5_iSP5 lj/gromacs/coul/gromacs 1.338434 4.700000 # P5-SP5 + pair_coeff @atom:P5_bP5_aP5_dP5_iP5 @atom:SQ0_bSQ0_aSQ0_dSQ0_iSQ0 lj/gromacs/coul/gromacs 1.195030 4.700000 # P5-SQ0 + pair_coeff @atom:P5_bP5_aP5_dP5_iP5 @atom:SQa_bSQa_aSQa_dSQa_iSQa lj/gromacs/coul/gromacs 1.338434 4.700000 # P5-SQa + pair_coeff @atom:P5_bP5_aP5_dP5_iP5 @atom:SQd_bSQd_aSQd_dSQd_iSQd lj/gromacs/coul/gromacs 1.338434 4.700000 # P5-SQd + pair_coeff @atom:P5_bP5_aP5_dP5_iP5 @atom:SQda_bSQda_aSQda_dSQda_iSQda lj/gromacs/coul/gromacs 1.338434 4.700000 # P5-SQda + pair_coeff @atom:Q0_bQ0_aQ0_dQ0_iQ0 @atom:Q0_bQ0_aQ0_dQ0_iQ0 lj/gromacs/coul/gromacs 0.836521 4.700000 # Q0-Q0 + pair_coeff @atom:Q0_bQ0_aQ0_dQ0_iQ0 @atom:Qa_bQa_aQa_dQa_iQa lj/gromacs/coul/gromacs 1.075527 4.700000 # Q0-Qa + pair_coeff @atom:Q0_bQ0_aQ0_dQ0_iQ0 @atom:Qd_bQd_aQd_dQd_iQd lj/gromacs/coul/gromacs 1.075527 4.700000 # Q0-Qd + pair_coeff @atom:Q0_bQ0_aQ0_dQ0_iQ0 @atom:Qda_bQda_aQda_dQda_iQda lj/gromacs/coul/gromacs 1.075527 4.700000 # Q0-Qda + pair_coeff @atom:Q0_bQ0_aQ0_dQ0_iQ0 @atom:SC1_bSC1_aSC1_dSC1_iSC1 lj/gromacs/coul/gromacs 0.478012 6.200000 # Q0-SC1 + pair_coeff @atom:Q0_bQ0_aQ0_dQ0_iQ0 @atom:SC2_bSC2_aSC2_dSC2_iSC2 lj/gromacs/coul/gromacs 0.478012 6.200000 # Q0-SC2 + pair_coeff @atom:Q0_bQ0_aQ0_dQ0_iQ0 @atom:SC3_bSC3_aSC3_dSC3_iSC3 lj/gromacs/coul/gromacs 0.549714 4.700000 # Q0-SC3 + pair_coeff @atom:Q0_bQ0_aQ0_dQ0_iQ0 @atom:SC4_bSC4_aSC4_dSC4_iSC4 lj/gromacs/coul/gromacs 0.645316 4.700000 # Q0-SC4 + pair_coeff @atom:Q0_bQ0_aQ0_dQ0_iQ0 @atom:SC5_bSC5_aSC5_dSC5_iSC5 lj/gromacs/coul/gromacs 0.740919 4.700000 # Q0-SC5 + pair_coeff @atom:Q0_bQ0_aQ0_dQ0_iQ0 @atom:SN0_bSN0_aSN0_dSN0_iSN0 lj/gromacs/coul/gromacs 0.836521 4.700000 # Q0-SN0 + pair_coeff @atom:Q0_bQ0_aQ0_dQ0_iQ0 @atom:SNa_bSNa_aSNa_dSNa_iSNa lj/gromacs/coul/gromacs 0.956024 4.700000 # Q0-SNa + pair_coeff @atom:Q0_bQ0_aQ0_dQ0_iQ0 @atom:SNd_bSNd_aSNd_dSNd_iSNd lj/gromacs/coul/gromacs 0.956024 4.700000 # Q0-SNd + pair_coeff @atom:Q0_bQ0_aQ0_dQ0_iQ0 @atom:SNda_bSNda_aSNda_dSNda_iSNda lj/gromacs/coul/gromacs 0.956024 4.700000 # Q0-SNda + pair_coeff @atom:Q0_bQ0_aQ0_dQ0_iQ0 @atom:SP1_bSP1_aSP1_dSP1_iSP1 lj/gromacs/coul/gromacs 0.956024 4.700000 # Q0-SP1 + pair_coeff @atom:Q0_bQ0_aQ0_dQ0_iQ0 @atom:SP2_bSP2_aSP2_dSP2_iSP2 lj/gromacs/coul/gromacs 1.075527 4.700000 # Q0-SP2 + pair_coeff @atom:Q0_bQ0_aQ0_dQ0_iQ0 @atom:SP3_bSP3_aSP3_dSP3_iSP3 lj/gromacs/coul/gromacs 1.195030 4.700000 # Q0-SP3 + pair_coeff @atom:Q0_bQ0_aQ0_dQ0_iQ0 @atom:SP4_bSP4_aSP4_dSP4_iSP4 lj/gromacs/coul/gromacs 1.338434 4.700000 # Q0-SP4 + pair_coeff @atom:Q0_bQ0_aQ0_dQ0_iQ0 @atom:SP5_bSP5_aSP5_dSP5_iSP5 lj/gromacs/coul/gromacs 1.195030 4.700000 # Q0-SP5 + pair_coeff @atom:Q0_bQ0_aQ0_dQ0_iQ0 @atom:SQ0_bSQ0_aSQ0_dSQ0_iSQ0 lj/gromacs/coul/gromacs 0.836521 4.700000 # Q0-SQ0 + pair_coeff @atom:Q0_bQ0_aQ0_dQ0_iQ0 @atom:SQa_bSQa_aSQa_dSQa_iSQa lj/gromacs/coul/gromacs 1.075527 4.700000 # Q0-SQa + pair_coeff @atom:Q0_bQ0_aQ0_dQ0_iQ0 @atom:SQd_bSQd_aSQd_dSQd_iSQd lj/gromacs/coul/gromacs 1.075527 4.700000 # Q0-SQd + pair_coeff @atom:Q0_bQ0_aQ0_dQ0_iQ0 @atom:SQda_bSQda_aSQda_dSQda_iSQda lj/gromacs/coul/gromacs 1.075527 4.700000 # Q0-SQda + pair_coeff @atom:Qa_bQa_aQa_dQa_iQa @atom:Qa_bQa_aQa_dQa_iQa lj/gromacs/coul/gromacs 1.195030 4.700000 # Qa-Qa + pair_coeff @atom:Qa_bQa_aQa_dQa_iQa @atom:Qd_bQd_aQd_dQd_iQd lj/gromacs/coul/gromacs 1.338434 4.700000 # Qa-Qd + pair_coeff @atom:Qa_bQa_aQa_dQa_iQa @atom:Qda_bQda_aQda_dQda_iQda lj/gromacs/coul/gromacs 1.338434 4.700000 # Qa-Qda + pair_coeff @atom:Qa_bQa_aQa_dQa_iQa @atom:SC1_bSC1_aSC1_dSC1_iSC1 lj/gromacs/coul/gromacs 0.478012 6.200000 # Qa-SC1 + pair_coeff @atom:Qa_bQa_aQa_dQa_iQa @atom:SC2_bSC2_aSC2_dSC2_iSC2 lj/gromacs/coul/gromacs 0.478012 6.200000 # Qa-SC2 + pair_coeff @atom:Qa_bQa_aQa_dQa_iQa @atom:SC3_bSC3_aSC3_dSC3_iSC3 lj/gromacs/coul/gromacs 0.549714 4.700000 # Qa-SC3 + pair_coeff @atom:Qa_bQa_aQa_dQa_iQa @atom:SC4_bSC4_aSC4_dSC4_iSC4 lj/gromacs/coul/gromacs 0.645316 4.700000 # Qa-SC4 + pair_coeff @atom:Qa_bQa_aQa_dQa_iQa @atom:SC5_bSC5_aSC5_dSC5_iSC5 lj/gromacs/coul/gromacs 0.740919 4.700000 # Qa-SC5 + pair_coeff @atom:Qa_bQa_aQa_dQa_iQa @atom:SN0_bSN0_aSN0_dSN0_iSN0 lj/gromacs/coul/gromacs 0.836521 4.700000 # Qa-SN0 + pair_coeff @atom:Qa_bQa_aQa_dQa_iQa @atom:SNa_bSNa_aSNa_dSNa_iSNa lj/gromacs/coul/gromacs 0.956024 4.700000 # Qa-SNa + pair_coeff @atom:Qa_bQa_aQa_dQa_iQa @atom:SNd_bSNd_aSNd_dSNd_iSNd lj/gromacs/coul/gromacs 1.195030 4.700000 # Qa-SNd + pair_coeff @atom:Qa_bQa_aQa_dQa_iQa @atom:SNda_bSNda_aSNda_dSNda_iSNda lj/gromacs/coul/gromacs 1.195030 4.700000 # Qa-SNda + pair_coeff @atom:Qa_bQa_aQa_dQa_iQa @atom:SP1_bSP1_aSP1_dSP1_iSP1 lj/gromacs/coul/gromacs 1.195030 4.700000 # Qa-SP1 + pair_coeff @atom:Qa_bQa_aQa_dQa_iQa @atom:SP2_bSP2_aSP2_dSP2_iSP2 lj/gromacs/coul/gromacs 1.195030 4.700000 # Qa-SP2 + pair_coeff @atom:Qa_bQa_aQa_dQa_iQa @atom:SP3_bSP3_aSP3_dSP3_iSP3 lj/gromacs/coul/gromacs 1.338434 4.700000 # Qa-SP3 + pair_coeff @atom:Qa_bQa_aQa_dQa_iQa @atom:SP4_bSP4_aSP4_dSP4_iSP4 lj/gromacs/coul/gromacs 1.338434 4.700000 # Qa-SP4 + pair_coeff @atom:Qa_bQa_aQa_dQa_iQa @atom:SP5_bSP5_aSP5_dSP5_iSP5 lj/gromacs/coul/gromacs 1.338434 4.700000 # Qa-SP5 + pair_coeff @atom:Qa_bQa_aQa_dQa_iQa @atom:SQ0_bSQ0_aSQ0_dSQ0_iSQ0 lj/gromacs/coul/gromacs 1.075527 4.700000 # Qa-SQ0 + pair_coeff @atom:Qa_bQa_aQa_dQa_iQa @atom:SQa_bSQa_aSQa_dSQa_iSQa lj/gromacs/coul/gromacs 1.195030 4.700000 # Qa-SQa + pair_coeff @atom:Qa_bQa_aQa_dQa_iQa @atom:SQd_bSQd_aSQd_dSQd_iSQd lj/gromacs/coul/gromacs 1.338434 4.700000 # Qa-SQd + pair_coeff @atom:Qa_bQa_aQa_dQa_iQa @atom:SQda_bSQda_aSQda_dSQda_iSQda lj/gromacs/coul/gromacs 1.338434 4.700000 # Qa-SQda + pair_coeff @atom:Qd_bQd_aQd_dQd_iQd @atom:Qd_bQd_aQd_dQd_iQd lj/gromacs/coul/gromacs 1.195030 4.700000 # Qd-Qd + pair_coeff @atom:Qd_bQd_aQd_dQd_iQd @atom:Qda_bQda_aQda_dQda_iQda lj/gromacs/coul/gromacs 1.338434 4.700000 # Qd-Qda + pair_coeff @atom:Qd_bQd_aQd_dQd_iQd @atom:SC1_bSC1_aSC1_dSC1_iSC1 lj/gromacs/coul/gromacs 0.478012 6.200000 # Qd-SC1 + pair_coeff @atom:Qd_bQd_aQd_dQd_iQd @atom:SC2_bSC2_aSC2_dSC2_iSC2 lj/gromacs/coul/gromacs 0.478012 6.200000 # Qd-SC2 + pair_coeff @atom:Qd_bQd_aQd_dQd_iQd @atom:SC3_bSC3_aSC3_dSC3_iSC3 lj/gromacs/coul/gromacs 0.549714 4.700000 # Qd-SC3 + pair_coeff @atom:Qd_bQd_aQd_dQd_iQd @atom:SC4_bSC4_aSC4_dSC4_iSC4 lj/gromacs/coul/gromacs 0.645316 4.700000 # Qd-SC4 + pair_coeff @atom:Qd_bQd_aQd_dQd_iQd @atom:SC5_bSC5_aSC5_dSC5_iSC5 lj/gromacs/coul/gromacs 0.740919 4.700000 # Qd-SC5 + pair_coeff @atom:Qd_bQd_aQd_dQd_iQd @atom:SN0_bSN0_aSN0_dSN0_iSN0 lj/gromacs/coul/gromacs 0.836521 4.700000 # Qd-SN0 + pair_coeff @atom:Qd_bQd_aQd_dQd_iQd @atom:SNa_bSNa_aSNa_dSNa_iSNa lj/gromacs/coul/gromacs 1.195030 4.700000 # Qd-SNa + pair_coeff @atom:Qd_bQd_aQd_dQd_iQd @atom:SNd_bSNd_aSNd_dSNd_iSNd lj/gromacs/coul/gromacs 0.956024 4.700000 # Qd-SNd + pair_coeff @atom:Qd_bQd_aQd_dQd_iQd @atom:SNda_bSNda_aSNda_dSNda_iSNda lj/gromacs/coul/gromacs 1.195030 4.700000 # Qd-SNda + pair_coeff @atom:Qd_bQd_aQd_dQd_iQd @atom:SP1_bSP1_aSP1_dSP1_iSP1 lj/gromacs/coul/gromacs 1.195030 4.700000 # Qd-SP1 + pair_coeff @atom:Qd_bQd_aQd_dQd_iQd @atom:SP2_bSP2_aSP2_dSP2_iSP2 lj/gromacs/coul/gromacs 1.195030 4.700000 # Qd-SP2 + pair_coeff @atom:Qd_bQd_aQd_dQd_iQd @atom:SP3_bSP3_aSP3_dSP3_iSP3 lj/gromacs/coul/gromacs 1.338434 4.700000 # Qd-SP3 + pair_coeff @atom:Qd_bQd_aQd_dQd_iQd @atom:SP4_bSP4_aSP4_dSP4_iSP4 lj/gromacs/coul/gromacs 1.338434 4.700000 # Qd-SP4 + pair_coeff @atom:Qd_bQd_aQd_dQd_iQd @atom:SP5_bSP5_aSP5_dSP5_iSP5 lj/gromacs/coul/gromacs 1.338434 4.700000 # Qd-SP5 + pair_coeff @atom:Qd_bQd_aQd_dQd_iQd @atom:SQ0_bSQ0_aSQ0_dSQ0_iSQ0 lj/gromacs/coul/gromacs 1.075527 4.700000 # Qd-SQ0 + pair_coeff @atom:Qd_bQd_aQd_dQd_iQd @atom:SQa_bSQa_aSQa_dSQa_iSQa lj/gromacs/coul/gromacs 1.338434 4.700000 # Qd-SQa + pair_coeff @atom:Qd_bQd_aQd_dQd_iQd @atom:SQd_bSQd_aSQd_dSQd_iSQd lj/gromacs/coul/gromacs 1.195030 4.700000 # Qd-SQd + pair_coeff @atom:Qd_bQd_aQd_dQd_iQd @atom:SQda_bSQda_aSQda_dSQda_iSQda lj/gromacs/coul/gromacs 1.338434 4.700000 # Qd-SQda + pair_coeff @atom:Qda_bQda_aQda_dQda_iQda @atom:Qda_bQda_aQda_dQda_iQda lj/gromacs/coul/gromacs 1.338434 4.700000 # Qda-Qda + pair_coeff @atom:Qda_bQda_aQda_dQda_iQda @atom:SC1_bSC1_aSC1_dSC1_iSC1 lj/gromacs/coul/gromacs 0.478012 6.200000 # Qda-SC1 + pair_coeff @atom:Qda_bQda_aQda_dQda_iQda @atom:SC2_bSC2_aSC2_dSC2_iSC2 lj/gromacs/coul/gromacs 0.478012 6.200000 # Qda-SC2 + pair_coeff @atom:Qda_bQda_aQda_dQda_iQda @atom:SC3_bSC3_aSC3_dSC3_iSC3 lj/gromacs/coul/gromacs 0.549714 4.700000 # Qda-SC3 + pair_coeff @atom:Qda_bQda_aQda_dQda_iQda @atom:SC4_bSC4_aSC4_dSC4_iSC4 lj/gromacs/coul/gromacs 0.645316 4.700000 # Qda-SC4 + pair_coeff @atom:Qda_bQda_aQda_dQda_iQda @atom:SC5_bSC5_aSC5_dSC5_iSC5 lj/gromacs/coul/gromacs 0.740919 4.700000 # Qda-SC5 + pair_coeff @atom:Qda_bQda_aQda_dQda_iQda @atom:SN0_bSN0_aSN0_dSN0_iSN0 lj/gromacs/coul/gromacs 0.836521 4.700000 # Qda-SN0 + pair_coeff @atom:Qda_bQda_aQda_dQda_iQda @atom:SNa_bSNa_aSNa_dSNa_iSNa lj/gromacs/coul/gromacs 1.195030 4.700000 # Qda-SNa + pair_coeff @atom:Qda_bQda_aQda_dQda_iQda @atom:SNd_bSNd_aSNd_dSNd_iSNd lj/gromacs/coul/gromacs 1.195030 4.700000 # Qda-SNd + pair_coeff @atom:Qda_bQda_aQda_dQda_iQda @atom:SNda_bSNda_aSNda_dSNda_iSNda lj/gromacs/coul/gromacs 1.195030 4.700000 # Qda-SNda + pair_coeff @atom:Qda_bQda_aQda_dQda_iQda @atom:SP1_bSP1_aSP1_dSP1_iSP1 lj/gromacs/coul/gromacs 1.195030 4.700000 # Qda-SP1 + pair_coeff @atom:Qda_bQda_aQda_dQda_iQda @atom:SP2_bSP2_aSP2_dSP2_iSP2 lj/gromacs/coul/gromacs 1.195030 4.700000 # Qda-SP2 + pair_coeff @atom:Qda_bQda_aQda_dQda_iQda @atom:SP3_bSP3_aSP3_dSP3_iSP3 lj/gromacs/coul/gromacs 1.338434 4.700000 # Qda-SP3 + pair_coeff @atom:Qda_bQda_aQda_dQda_iQda @atom:SP4_bSP4_aSP4_dSP4_iSP4 lj/gromacs/coul/gromacs 1.338434 4.700000 # Qda-SP4 + pair_coeff @atom:Qda_bQda_aQda_dQda_iQda @atom:SP5_bSP5_aSP5_dSP5_iSP5 lj/gromacs/coul/gromacs 1.338434 4.700000 # Qda-SP5 + pair_coeff @atom:Qda_bQda_aQda_dQda_iQda @atom:SQ0_bSQ0_aSQ0_dSQ0_iSQ0 lj/gromacs/coul/gromacs 1.075527 4.700000 # Qda-SQ0 + pair_coeff @atom:Qda_bQda_aQda_dQda_iQda @atom:SQa_bSQa_aSQa_dSQa_iSQa lj/gromacs/coul/gromacs 1.338434 4.700000 # Qda-SQa + pair_coeff @atom:Qda_bQda_aQda_dQda_iQda @atom:SQd_bSQd_aSQd_dSQd_iSQd lj/gromacs/coul/gromacs 1.338434 4.700000 # Qda-SQd + pair_coeff @atom:Qda_bQda_aQda_dQda_iQda @atom:SQda_bSQda_aSQda_dSQda_iSQda lj/gromacs/coul/gromacs 1.338434 4.700000 # Qda-SQda + pair_coeff @atom:SC1_bSC1_aSC1_dSC1_iSC1 @atom:SC1_bSC1_aSC1_dSC1_iSC1 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC1-SC1 + pair_coeff @atom:SC1_bSC1_aSC1_dSC1_iSC1 @atom:SC2_bSC2_aSC2_dSC2_iSC2 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC1-SC2 + pair_coeff @atom:SC1_bSC1_aSC1_dSC1_iSC1 @atom:SC3_bSC3_aSC3_dSC3_iSC3 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC1-SC3 + pair_coeff @atom:SC1_bSC1_aSC1_dSC1_iSC1 @atom:SC4_bSC4_aSC4_dSC4_iSC4 lj/gromacs/coul/gromacs 0.555689 4.300000 # SC1-SC4 + pair_coeff @atom:SC1_bSC1_aSC1_dSC1_iSC1 @atom:SC5_bSC5_aSC5_dSC5_iSC5 lj/gromacs/coul/gromacs 0.555689 4.300000 # SC1-SC5 + pair_coeff @atom:SC1_bSC1_aSC1_dSC1_iSC1 @atom:SN0_bSN0_aSN0_dSN0_iSN0 lj/gromacs/coul/gromacs 0.483987 4.300000 # SC1-SN0 + pair_coeff @atom:SC1_bSC1_aSC1_dSC1_iSC1 @atom:SNa_bSNa_aSNa_dSNa_iSNa lj/gromacs/coul/gromacs 0.483987 4.300000 # SC1-SNa + pair_coeff @atom:SC1_bSC1_aSC1_dSC1_iSC1 @atom:SNd_bSNd_aSNd_dSNd_iSNd lj/gromacs/coul/gromacs 0.483987 4.300000 # SC1-SNd + pair_coeff @atom:SC1_bSC1_aSC1_dSC1_iSC1 @atom:SNda_bSNda_aSNda_dSNda_iSNda lj/gromacs/coul/gromacs 0.483987 4.300000 # SC1-SNda + pair_coeff @atom:SC1_bSC1_aSC1_dSC1_iSC1 @atom:SP1_bSP1_aSP1_dSP1_iSP1 lj/gromacs/coul/gromacs 0.483987 4.300000 # SC1-SP1 + pair_coeff @atom:SC1_bSC1_aSC1_dSC1_iSC1 @atom:SP2_bSP2_aSP2_dSP2_iSP2 lj/gromacs/coul/gromacs 0.412285 4.300000 # SC1-SP2 + pair_coeff @atom:SC1_bSC1_aSC1_dSC1_iSC1 @atom:SP3_bSP3_aSP3_dSP3_iSP3 lj/gromacs/coul/gromacs 0.412285 4.300000 # SC1-SP3 + pair_coeff @atom:SC1_bSC1_aSC1_dSC1_iSC1 @atom:SP4_bSP4_aSP4_dSP4_iSP4 lj/gromacs/coul/gromacs 0.358509 4.300000 # SC1-SP4 + pair_coeff @atom:SC1_bSC1_aSC1_dSC1_iSC1 @atom:SP5_bSP5_aSP5_dSP5_iSP5 lj/gromacs/coul/gromacs 0.358509 4.300000 # SC1-SP5 + pair_coeff @atom:SC1_bSC1_aSC1_dSC1_iSC1 @atom:SQ0_bSQ0_aSQ0_dSQ0_iSQ0 lj/gromacs/coul/gromacs 0.478012 6.200000 # SC1-SQ0 + pair_coeff @atom:SC1_bSC1_aSC1_dSC1_iSC1 @atom:SQa_bSQa_aSQa_dSQa_iSQa lj/gromacs/coul/gromacs 0.478012 6.200000 # SC1-SQa + pair_coeff @atom:SC1_bSC1_aSC1_dSC1_iSC1 @atom:SQd_bSQd_aSQd_dSQd_iSQd lj/gromacs/coul/gromacs 0.478012 6.200000 # SC1-SQd + pair_coeff @atom:SC1_bSC1_aSC1_dSC1_iSC1 @atom:SQda_bSQda_aSQda_dSQda_iSQda lj/gromacs/coul/gromacs 0.478012 6.200000 # SC1-SQda + pair_coeff @atom:SC2_bSC2_aSC2_dSC2_iSC2 @atom:SC2_bSC2_aSC2_dSC2_iSC2 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC2-SC2 + pair_coeff @atom:SC2_bSC2_aSC2_dSC2_iSC2 @atom:SC3_bSC3_aSC3_dSC3_iSC3 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC2-SC3 + pair_coeff @atom:SC2_bSC2_aSC2_dSC2_iSC2 @atom:SC4_bSC4_aSC4_dSC4_iSC4 lj/gromacs/coul/gromacs 0.555689 4.300000 # SC2-SC4 + pair_coeff @atom:SC2_bSC2_aSC2_dSC2_iSC2 @atom:SC5_bSC5_aSC5_dSC5_iSC5 lj/gromacs/coul/gromacs 0.555689 4.300000 # SC2-SC5 + pair_coeff @atom:SC2_bSC2_aSC2_dSC2_iSC2 @atom:SN0_bSN0_aSN0_dSN0_iSN0 lj/gromacs/coul/gromacs 0.555689 4.300000 # SC2-SN0 + pair_coeff @atom:SC2_bSC2_aSC2_dSC2_iSC2 @atom:SNa_bSNa_aSNa_dSNa_iSNa lj/gromacs/coul/gromacs 0.483987 4.300000 # SC2-SNa + pair_coeff @atom:SC2_bSC2_aSC2_dSC2_iSC2 @atom:SNd_bSNd_aSNd_dSNd_iSNd lj/gromacs/coul/gromacs 0.483987 4.300000 # SC2-SNd + pair_coeff @atom:SC2_bSC2_aSC2_dSC2_iSC2 @atom:SNda_bSNda_aSNda_dSNda_iSNda lj/gromacs/coul/gromacs 0.483987 4.300000 # SC2-SNda + pair_coeff @atom:SC2_bSC2_aSC2_dSC2_iSC2 @atom:SP1_bSP1_aSP1_dSP1_iSP1 lj/gromacs/coul/gromacs 0.555689 4.300000 # SC2-SP1 + pair_coeff @atom:SC2_bSC2_aSC2_dSC2_iSC2 @atom:SP2_bSP2_aSP2_dSP2_iSP2 lj/gromacs/coul/gromacs 0.483987 4.300000 # SC2-SP2 + pair_coeff @atom:SC2_bSC2_aSC2_dSC2_iSC2 @atom:SP3_bSP3_aSP3_dSP3_iSP3 lj/gromacs/coul/gromacs 0.483987 4.300000 # SC2-SP3 + pair_coeff @atom:SC2_bSC2_aSC2_dSC2_iSC2 @atom:SP4_bSP4_aSP4_dSP4_iSP4 lj/gromacs/coul/gromacs 0.412285 4.300000 # SC2-SP4 + pair_coeff @atom:SC2_bSC2_aSC2_dSC2_iSC2 @atom:SP5_bSP5_aSP5_dSP5_iSP5 lj/gromacs/coul/gromacs 0.412285 4.300000 # SC2-SP5 + pair_coeff @atom:SC2_bSC2_aSC2_dSC2_iSC2 @atom:SQ0_bSQ0_aSQ0_dSQ0_iSQ0 lj/gromacs/coul/gromacs 0.478012 6.200000 # SC2-SQ0 + pair_coeff @atom:SC2_bSC2_aSC2_dSC2_iSC2 @atom:SQa_bSQa_aSQa_dSQa_iSQa lj/gromacs/coul/gromacs 0.478012 6.200000 # SC2-SQa + pair_coeff @atom:SC2_bSC2_aSC2_dSC2_iSC2 @atom:SQd_bSQd_aSQd_dSQd_iSQd lj/gromacs/coul/gromacs 0.478012 6.200000 # SC2-SQd + pair_coeff @atom:SC2_bSC2_aSC2_dSC2_iSC2 @atom:SQda_bSQda_aSQda_dSQda_iSQda lj/gromacs/coul/gromacs 0.478012 6.200000 # SC2-SQda + pair_coeff @atom:SC3_bSC3_aSC3_dSC3_iSC3 @atom:SC3_bSC3_aSC3_dSC3_iSC3 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC3-SC3 + pair_coeff @atom:SC3_bSC3_aSC3_dSC3_iSC3 @atom:SC4_bSC4_aSC4_dSC4_iSC4 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC3-SC4 + pair_coeff @atom:SC3_bSC3_aSC3_dSC3_iSC3 @atom:SC5_bSC5_aSC5_dSC5_iSC5 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC3-SC5 + pair_coeff @atom:SC3_bSC3_aSC3_dSC3_iSC3 @atom:SN0_bSN0_aSN0_dSN0_iSN0 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC3-SN0 + pair_coeff @atom:SC3_bSC3_aSC3_dSC3_iSC3 @atom:SNa_bSNa_aSNa_dSNa_iSNa lj/gromacs/coul/gromacs 0.483987 4.300000 # SC3-SNa + pair_coeff @atom:SC3_bSC3_aSC3_dSC3_iSC3 @atom:SNd_bSNd_aSNd_dSNd_iSNd lj/gromacs/coul/gromacs 0.483987 4.300000 # SC3-SNd + pair_coeff @atom:SC3_bSC3_aSC3_dSC3_iSC3 @atom:SNda_bSNda_aSNda_dSNda_iSNda lj/gromacs/coul/gromacs 0.483987 4.300000 # SC3-SNda + pair_coeff @atom:SC3_bSC3_aSC3_dSC3_iSC3 @atom:SP1_bSP1_aSP1_dSP1_iSP1 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC3-SP1 + pair_coeff @atom:SC3_bSC3_aSC3_dSC3_iSC3 @atom:SP2_bSP2_aSP2_dSP2_iSP2 lj/gromacs/coul/gromacs 0.555689 4.300000 # SC3-SP2 + pair_coeff @atom:SC3_bSC3_aSC3_dSC3_iSC3 @atom:SP3_bSP3_aSP3_dSP3_iSP3 lj/gromacs/coul/gromacs 0.555689 4.300000 # SC3-SP3 + pair_coeff @atom:SC3_bSC3_aSC3_dSC3_iSC3 @atom:SP4_bSP4_aSP4_dSP4_iSP4 lj/gromacs/coul/gromacs 0.483987 4.300000 # SC3-SP4 + pair_coeff @atom:SC3_bSC3_aSC3_dSC3_iSC3 @atom:SP5_bSP5_aSP5_dSP5_iSP5 lj/gromacs/coul/gromacs 0.483987 4.300000 # SC3-SP5 + pair_coeff @atom:SC3_bSC3_aSC3_dSC3_iSC3 @atom:SQ0_bSQ0_aSQ0_dSQ0_iSQ0 lj/gromacs/coul/gromacs 0.412285 4.300000 # SC3-SQ0 + pair_coeff @atom:SC3_bSC3_aSC3_dSC3_iSC3 @atom:SQa_bSQa_aSQa_dSQa_iSQa lj/gromacs/coul/gromacs 0.412285 4.300000 # SC3-SQa + pair_coeff @atom:SC3_bSC3_aSC3_dSC3_iSC3 @atom:SQd_bSQd_aSQd_dSQd_iSQd lj/gromacs/coul/gromacs 0.412285 4.300000 # SC3-SQd + pair_coeff @atom:SC3_bSC3_aSC3_dSC3_iSC3 @atom:SQda_bSQda_aSQda_dSQda_iSQda lj/gromacs/coul/gromacs 0.412285 4.300000 # SC3-SQda + pair_coeff @atom:SC4_bSC4_aSC4_dSC4_iSC4 @atom:SC4_bSC4_aSC4_dSC4_iSC4 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC4-SC4 + pair_coeff @atom:SC4_bSC4_aSC4_dSC4_iSC4 @atom:SC5_bSC5_aSC5_dSC5_iSC5 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC4-SC5 + pair_coeff @atom:SC4_bSC4_aSC4_dSC4_iSC4 @atom:SN0_bSN0_aSN0_dSN0_iSN0 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC4-SN0 + pair_coeff @atom:SC4_bSC4_aSC4_dSC4_iSC4 @atom:SNa_bSNa_aSNa_dSNa_iSNa lj/gromacs/coul/gromacs 0.555689 4.300000 # SC4-SNa + pair_coeff @atom:SC4_bSC4_aSC4_dSC4_iSC4 @atom:SNd_bSNd_aSNd_dSNd_iSNd lj/gromacs/coul/gromacs 0.555689 4.300000 # SC4-SNd + pair_coeff @atom:SC4_bSC4_aSC4_dSC4_iSC4 @atom:SNda_bSNda_aSNda_dSNda_iSNda lj/gromacs/coul/gromacs 0.555689 4.300000 # SC4-SNda + pair_coeff @atom:SC4_bSC4_aSC4_dSC4_iSC4 @atom:SP1_bSP1_aSP1_dSP1_iSP1 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC4-SP1 + pair_coeff @atom:SC4_bSC4_aSC4_dSC4_iSC4 @atom:SP2_bSP2_aSP2_dSP2_iSP2 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC4-SP2 + pair_coeff @atom:SC4_bSC4_aSC4_dSC4_iSC4 @atom:SP3_bSP3_aSP3_dSP3_iSP3 lj/gromacs/coul/gromacs 0.555689 4.300000 # SC4-SP3 + pair_coeff @atom:SC4_bSC4_aSC4_dSC4_iSC4 @atom:SP4_bSP4_aSP4_dSP4_iSP4 lj/gromacs/coul/gromacs 0.483987 4.300000 # SC4-SP4 + pair_coeff @atom:SC4_bSC4_aSC4_dSC4_iSC4 @atom:SP5_bSP5_aSP5_dSP5_iSP5 lj/gromacs/coul/gromacs 0.483987 4.300000 # SC4-SP5 + pair_coeff @atom:SC4_bSC4_aSC4_dSC4_iSC4 @atom:SQ0_bSQ0_aSQ0_dSQ0_iSQ0 lj/gromacs/coul/gromacs 0.483987 4.300000 # SC4-SQ0 + pair_coeff @atom:SC4_bSC4_aSC4_dSC4_iSC4 @atom:SQa_bSQa_aSQa_dSQa_iSQa lj/gromacs/coul/gromacs 0.483987 4.300000 # SC4-SQa + pair_coeff @atom:SC4_bSC4_aSC4_dSC4_iSC4 @atom:SQd_bSQd_aSQd_dSQd_iSQd lj/gromacs/coul/gromacs 0.483987 4.300000 # SC4-SQd + pair_coeff @atom:SC4_bSC4_aSC4_dSC4_iSC4 @atom:SQda_bSQda_aSQda_dSQda_iSQda lj/gromacs/coul/gromacs 0.483987 4.300000 # SC4-SQda + pair_coeff @atom:SC5_bSC5_aSC5_dSC5_iSC5 @atom:SC5_bSC5_aSC5_dSC5_iSC5 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC5-SC5 + pair_coeff @atom:SC5_bSC5_aSC5_dSC5_iSC5 @atom:SN0_bSN0_aSN0_dSN0_iSN0 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC5-SN0 + pair_coeff @atom:SC5_bSC5_aSC5_dSC5_iSC5 @atom:SNa_bSNa_aSNa_dSNa_iSNa lj/gromacs/coul/gromacs 0.627391 4.300000 # SC5-SNa + pair_coeff @atom:SC5_bSC5_aSC5_dSC5_iSC5 @atom:SNd_bSNd_aSNd_dSNd_iSNd lj/gromacs/coul/gromacs 0.627391 4.300000 # SC5-SNd + pair_coeff @atom:SC5_bSC5_aSC5_dSC5_iSC5 @atom:SNda_bSNda_aSNda_dSNda_iSNda lj/gromacs/coul/gromacs 0.627391 4.300000 # SC5-SNda + pair_coeff @atom:SC5_bSC5_aSC5_dSC5_iSC5 @atom:SP1_bSP1_aSP1_dSP1_iSP1 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC5-SP1 + pair_coeff @atom:SC5_bSC5_aSC5_dSC5_iSC5 @atom:SP2_bSP2_aSP2_dSP2_iSP2 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC5-SP2 + pair_coeff @atom:SC5_bSC5_aSC5_dSC5_iSC5 @atom:SP3_bSP3_aSP3_dSP3_iSP3 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC5-SP3 + pair_coeff @atom:SC5_bSC5_aSC5_dSC5_iSC5 @atom:SP4_bSP4_aSP4_dSP4_iSP4 lj/gromacs/coul/gromacs 0.555689 4.300000 # SC5-SP4 + pair_coeff @atom:SC5_bSC5_aSC5_dSC5_iSC5 @atom:SP5_bSP5_aSP5_dSP5_iSP5 lj/gromacs/coul/gromacs 0.555689 4.300000 # SC5-SP5 + pair_coeff @atom:SC5_bSC5_aSC5_dSC5_iSC5 @atom:SQ0_bSQ0_aSQ0_dSQ0_iSQ0 lj/gromacs/coul/gromacs 0.555689 4.300000 # SC5-SQ0 + pair_coeff @atom:SC5_bSC5_aSC5_dSC5_iSC5 @atom:SQa_bSQa_aSQa_dSQa_iSQa lj/gromacs/coul/gromacs 0.555689 4.300000 # SC5-SQa + pair_coeff @atom:SC5_bSC5_aSC5_dSC5_iSC5 @atom:SQd_bSQd_aSQd_dSQd_iSQd lj/gromacs/coul/gromacs 0.555689 4.300000 # SC5-SQd + pair_coeff @atom:SC5_bSC5_aSC5_dSC5_iSC5 @atom:SQda_bSQda_aSQda_dSQda_iSQda lj/gromacs/coul/gromacs 0.555689 4.300000 # SC5-SQda + pair_coeff @atom:SN0_bSN0_aSN0_dSN0_iSN0 @atom:SN0_bSN0_aSN0_dSN0_iSN0 lj/gromacs/coul/gromacs 0.627391 4.300000 # SN0-SN0 + pair_coeff @atom:SN0_bSN0_aSN0_dSN0_iSN0 @atom:SNa_bSNa_aSNa_dSNa_iSNa lj/gromacs/coul/gromacs 0.627391 4.300000 # SN0-SNa + pair_coeff @atom:SN0_bSN0_aSN0_dSN0_iSN0 @atom:SNd_bSNd_aSNd_dSNd_iSNd lj/gromacs/coul/gromacs 0.627391 4.300000 # SN0-SNd + pair_coeff @atom:SN0_bSN0_aSN0_dSN0_iSN0 @atom:SNda_bSNda_aSNda_dSNda_iSNda lj/gromacs/coul/gromacs 0.627391 4.300000 # SN0-SNda + pair_coeff @atom:SN0_bSN0_aSN0_dSN0_iSN0 @atom:SP1_bSP1_aSP1_dSP1_iSP1 lj/gromacs/coul/gromacs 0.717018 4.300000 # SN0-SP1 + pair_coeff @atom:SN0_bSN0_aSN0_dSN0_iSN0 @atom:SP2_bSP2_aSP2_dSP2_iSP2 lj/gromacs/coul/gromacs 0.717018 4.300000 # SN0-SP2 + pair_coeff @atom:SN0_bSN0_aSN0_dSN0_iSN0 @atom:SP3_bSP3_aSP3_dSP3_iSP3 lj/gromacs/coul/gromacs 0.627391 4.300000 # SN0-SP3 + pair_coeff @atom:SN0_bSN0_aSN0_dSN0_iSN0 @atom:SP4_bSP4_aSP4_dSP4_iSP4 lj/gromacs/coul/gromacs 0.627391 4.300000 # SN0-SP4 + pair_coeff @atom:SN0_bSN0_aSN0_dSN0_iSN0 @atom:SP5_bSP5_aSP5_dSP5_iSP5 lj/gromacs/coul/gromacs 0.627391 4.300000 # SN0-SP5 + pair_coeff @atom:SN0_bSN0_aSN0_dSN0_iSN0 @atom:SQ0_bSQ0_aSQ0_dSQ0_iSQ0 lj/gromacs/coul/gromacs 0.627391 4.300000 # SN0-SQ0 + pair_coeff @atom:SN0_bSN0_aSN0_dSN0_iSN0 @atom:SQa_bSQa_aSQa_dSQa_iSQa lj/gromacs/coul/gromacs 0.627391 4.300000 # SN0-SQa + pair_coeff @atom:SN0_bSN0_aSN0_dSN0_iSN0 @atom:SQd_bSQd_aSQd_dSQd_iSQd lj/gromacs/coul/gromacs 0.627391 4.300000 # SN0-SQd + pair_coeff @atom:SN0_bSN0_aSN0_dSN0_iSN0 @atom:SQda_bSQda_aSQda_dSQda_iSQda lj/gromacs/coul/gromacs 0.627391 4.300000 # SN0-SQda + pair_coeff @atom:SNa_bSNa_aSNa_dSNa_iSNa @atom:SNa_bSNa_aSNa_dSNa_iSNa lj/gromacs/coul/gromacs 0.717018 4.300000 # SNa-SNa + pair_coeff @atom:SNa_bSNa_aSNa_dSNa_iSNa @atom:SNd_bSNd_aSNd_dSNd_iSNd lj/gromacs/coul/gromacs 0.806645 4.300000 # SNa-SNd + pair_coeff @atom:SNa_bSNa_aSNa_dSNa_iSNa @atom:SNda_bSNda_aSNda_dSNda_iSNda lj/gromacs/coul/gromacs 0.806645 4.300000 # SNa-SNda + pair_coeff @atom:SNa_bSNa_aSNa_dSNa_iSNa @atom:SP1_bSP1_aSP1_dSP1_iSP1 lj/gromacs/coul/gromacs 0.806645 4.300000 # SNa-SP1 + pair_coeff @atom:SNa_bSNa_aSNa_dSNa_iSNa @atom:SP2_bSP2_aSP2_dSP2_iSP2 lj/gromacs/coul/gromacs 0.806645 4.300000 # SNa-SP2 + pair_coeff @atom:SNa_bSNa_aSNa_dSNa_iSNa @atom:SP3_bSP3_aSP3_dSP3_iSP3 lj/gromacs/coul/gromacs 0.806645 4.300000 # SNa-SP3 + pair_coeff @atom:SNa_bSNa_aSNa_dSNa_iSNa @atom:SP4_bSP4_aSP4_dSP4_iSP4 lj/gromacs/coul/gromacs 0.717018 4.300000 # SNa-SP4 + pair_coeff @atom:SNa_bSNa_aSNa_dSNa_iSNa @atom:SP5_bSP5_aSP5_dSP5_iSP5 lj/gromacs/coul/gromacs 0.896273 4.300000 # SNa-SP5 + pair_coeff @atom:SNa_bSNa_aSNa_dSNa_iSNa @atom:SQ0_bSQ0_aSQ0_dSQ0_iSQ0 lj/gromacs/coul/gromacs 0.717018 4.300000 # SNa-SQ0 + pair_coeff @atom:SNa_bSNa_aSNa_dSNa_iSNa @atom:SQa_bSQa_aSQa_dSQa_iSQa lj/gromacs/coul/gromacs 0.717018 4.300000 # SNa-SQa + pair_coeff @atom:SNa_bSNa_aSNa_dSNa_iSNa @atom:SQd_bSQd_aSQd_dSQd_iSQd lj/gromacs/coul/gromacs 0.896273 4.300000 # SNa-SQd + pair_coeff @atom:SNa_bSNa_aSNa_dSNa_iSNa @atom:SQda_bSQda_aSQda_dSQda_iSQda lj/gromacs/coul/gromacs 0.896273 4.300000 # SNa-SQda + pair_coeff @atom:SNd_bSNd_aSNd_dSNd_iSNd @atom:SNd_bSNd_aSNd_dSNd_iSNd lj/gromacs/coul/gromacs 0.717018 4.300000 # SNd-SNd + pair_coeff @atom:SNd_bSNd_aSNd_dSNd_iSNd @atom:SNda_bSNda_aSNda_dSNda_iSNda lj/gromacs/coul/gromacs 0.806645 4.300000 # SNd-SNda + pair_coeff @atom:SNd_bSNd_aSNd_dSNd_iSNd @atom:SP1_bSP1_aSP1_dSP1_iSP1 lj/gromacs/coul/gromacs 0.806645 4.300000 # SNd-SP1 + pair_coeff @atom:SNd_bSNd_aSNd_dSNd_iSNd @atom:SP2_bSP2_aSP2_dSP2_iSP2 lj/gromacs/coul/gromacs 0.806645 4.300000 # SNd-SP2 + pair_coeff @atom:SNd_bSNd_aSNd_dSNd_iSNd @atom:SP3_bSP3_aSP3_dSP3_iSP3 lj/gromacs/coul/gromacs 0.806645 4.300000 # SNd-SP3 + pair_coeff @atom:SNd_bSNd_aSNd_dSNd_iSNd @atom:SP4_bSP4_aSP4_dSP4_iSP4 lj/gromacs/coul/gromacs 0.717018 4.300000 # SNd-SP4 + pair_coeff @atom:SNd_bSNd_aSNd_dSNd_iSNd @atom:SP5_bSP5_aSP5_dSP5_iSP5 lj/gromacs/coul/gromacs 0.896273 4.300000 # SNd-SP5 + pair_coeff @atom:SNd_bSNd_aSNd_dSNd_iSNd @atom:SQ0_bSQ0_aSQ0_dSQ0_iSQ0 lj/gromacs/coul/gromacs 0.717018 4.300000 # SNd-SQ0 + pair_coeff @atom:SNd_bSNd_aSNd_dSNd_iSNd @atom:SQa_bSQa_aSQa_dSQa_iSQa lj/gromacs/coul/gromacs 0.896273 4.300000 # SNd-SQa + pair_coeff @atom:SNd_bSNd_aSNd_dSNd_iSNd @atom:SQd_bSQd_aSQd_dSQd_iSQd lj/gromacs/coul/gromacs 0.717018 4.300000 # SNd-SQd + pair_coeff @atom:SNd_bSNd_aSNd_dSNd_iSNd @atom:SQda_bSQda_aSQda_dSQda_iSQda lj/gromacs/coul/gromacs 0.896273 4.300000 # SNd-SQda + pair_coeff @atom:SNda_bSNda_aSNda_dSNda_iSNda @atom:SNda_bSNda_aSNda_dSNda_iSNda lj/gromacs/coul/gromacs 0.806645 4.300000 # SNda-SNda + pair_coeff @atom:SNda_bSNda_aSNda_dSNda_iSNda @atom:SP1_bSP1_aSP1_dSP1_iSP1 lj/gromacs/coul/gromacs 0.806645 4.300000 # SNda-SP1 + pair_coeff @atom:SNda_bSNda_aSNda_dSNda_iSNda @atom:SP2_bSP2_aSP2_dSP2_iSP2 lj/gromacs/coul/gromacs 0.806645 4.300000 # SNda-SP2 + pair_coeff @atom:SNda_bSNda_aSNda_dSNda_iSNda @atom:SP3_bSP3_aSP3_dSP3_iSP3 lj/gromacs/coul/gromacs 0.806645 4.300000 # SNda-SP3 + pair_coeff @atom:SNda_bSNda_aSNda_dSNda_iSNda @atom:SP4_bSP4_aSP4_dSP4_iSP4 lj/gromacs/coul/gromacs 0.717018 4.300000 # SNda-SP4 + pair_coeff @atom:SNda_bSNda_aSNda_dSNda_iSNda @atom:SP5_bSP5_aSP5_dSP5_iSP5 lj/gromacs/coul/gromacs 0.896273 4.300000 # SNda-SP5 + pair_coeff @atom:SNda_bSNda_aSNda_dSNda_iSNda @atom:SQ0_bSQ0_aSQ0_dSQ0_iSQ0 lj/gromacs/coul/gromacs 0.717018 4.300000 # SNda-SQ0 + pair_coeff @atom:SNda_bSNda_aSNda_dSNda_iSNda @atom:SQa_bSQa_aSQa_dSQa_iSQa lj/gromacs/coul/gromacs 0.896273 4.300000 # SNda-SQa + pair_coeff @atom:SNda_bSNda_aSNda_dSNda_iSNda @atom:SQd_bSQd_aSQd_dSQd_iSQd lj/gromacs/coul/gromacs 0.896273 4.300000 # SNda-SQd + pair_coeff @atom:SNda_bSNda_aSNda_dSNda_iSNda @atom:SQda_bSQda_aSQda_dSQda_iSQda lj/gromacs/coul/gromacs 0.896273 4.300000 # SNda-SQda + pair_coeff @atom:SP1_bSP1_aSP1_dSP1_iSP1 @atom:SP1_bSP1_aSP1_dSP1_iSP1 lj/gromacs/coul/gromacs 0.806645 4.300000 # SP1-SP1 + pair_coeff @atom:SP1_bSP1_aSP1_dSP1_iSP1 @atom:SP2_bSP2_aSP2_dSP2_iSP2 lj/gromacs/coul/gromacs 0.806645 4.300000 # SP1-SP2 + pair_coeff @atom:SP1_bSP1_aSP1_dSP1_iSP1 @atom:SP3_bSP3_aSP3_dSP3_iSP3 lj/gromacs/coul/gromacs 0.806645 4.300000 # SP1-SP3 + pair_coeff @atom:SP1_bSP1_aSP1_dSP1_iSP1 @atom:SP4_bSP4_aSP4_dSP4_iSP4 lj/gromacs/coul/gromacs 0.806645 4.300000 # SP1-SP4 + pair_coeff @atom:SP1_bSP1_aSP1_dSP1_iSP1 @atom:SP5_bSP5_aSP5_dSP5_iSP5 lj/gromacs/coul/gromacs 1.003825 4.300000 # SP1-SP5 + pair_coeff @atom:SP1_bSP1_aSP1_dSP1_iSP1 @atom:SQ0_bSQ0_aSQ0_dSQ0_iSQ0 lj/gromacs/coul/gromacs 0.717018 4.300000 # SP1-SQ0 + pair_coeff @atom:SP1_bSP1_aSP1_dSP1_iSP1 @atom:SQa_bSQa_aSQa_dSQa_iSQa lj/gromacs/coul/gromacs 0.896273 4.300000 # SP1-SQa + pair_coeff @atom:SP1_bSP1_aSP1_dSP1_iSP1 @atom:SQd_bSQd_aSQd_dSQd_iSQd lj/gromacs/coul/gromacs 0.896273 4.300000 # SP1-SQd + pair_coeff @atom:SP1_bSP1_aSP1_dSP1_iSP1 @atom:SQda_bSQda_aSQda_dSQda_iSQda lj/gromacs/coul/gromacs 0.896273 4.300000 # SP1-SQda + pair_coeff @atom:SP2_bSP2_aSP2_dSP2_iSP2 @atom:SP2_bSP2_aSP2_dSP2_iSP2 lj/gromacs/coul/gromacs 0.806645 4.300000 # SP2-SP2 + pair_coeff @atom:SP2_bSP2_aSP2_dSP2_iSP2 @atom:SP3_bSP3_aSP3_dSP3_iSP3 lj/gromacs/coul/gromacs 0.806645 4.300000 # SP2-SP3 + pair_coeff @atom:SP2_bSP2_aSP2_dSP2_iSP2 @atom:SP4_bSP4_aSP4_dSP4_iSP4 lj/gromacs/coul/gromacs 0.806645 4.300000 # SP2-SP4 + pair_coeff @atom:SP2_bSP2_aSP2_dSP2_iSP2 @atom:SP5_bSP5_aSP5_dSP5_iSP5 lj/gromacs/coul/gromacs 1.003825 4.300000 # SP2-SP5 + pair_coeff @atom:SP2_bSP2_aSP2_dSP2_iSP2 @atom:SQ0_bSQ0_aSQ0_dSQ0_iSQ0 lj/gromacs/coul/gromacs 0.806645 4.300000 # SP2-SQ0 + pair_coeff @atom:SP2_bSP2_aSP2_dSP2_iSP2 @atom:SQa_bSQa_aSQa_dSQa_iSQa lj/gromacs/coul/gromacs 0.896273 4.300000 # SP2-SQa + pair_coeff @atom:SP2_bSP2_aSP2_dSP2_iSP2 @atom:SQd_bSQd_aSQd_dSQd_iSQd lj/gromacs/coul/gromacs 0.896273 4.300000 # SP2-SQd + pair_coeff @atom:SP2_bSP2_aSP2_dSP2_iSP2 @atom:SQda_bSQda_aSQda_dSQda_iSQda lj/gromacs/coul/gromacs 0.896273 4.300000 # SP2-SQda + pair_coeff @atom:SP3_bSP3_aSP3_dSP3_iSP3 @atom:SP3_bSP3_aSP3_dSP3_iSP3 lj/gromacs/coul/gromacs 0.896273 4.300000 # SP3-SP3 + pair_coeff @atom:SP3_bSP3_aSP3_dSP3_iSP3 @atom:SP4_bSP4_aSP4_dSP4_iSP4 lj/gromacs/coul/gromacs 0.896273 4.300000 # SP3-SP4 + pair_coeff @atom:SP3_bSP3_aSP3_dSP3_iSP3 @atom:SP5_bSP5_aSP5_dSP5_iSP5 lj/gromacs/coul/gromacs 1.003825 4.300000 # SP3-SP5 + pair_coeff @atom:SP3_bSP3_aSP3_dSP3_iSP3 @atom:SQ0_bSQ0_aSQ0_dSQ0_iSQ0 lj/gromacs/coul/gromacs 0.896273 4.300000 # SP3-SQ0 + pair_coeff @atom:SP3_bSP3_aSP3_dSP3_iSP3 @atom:SQa_bSQa_aSQa_dSQa_iSQa lj/gromacs/coul/gromacs 1.003825 4.300000 # SP3-SQa + pair_coeff @atom:SP3_bSP3_aSP3_dSP3_iSP3 @atom:SQd_bSQd_aSQd_dSQd_iSQd lj/gromacs/coul/gromacs 1.003825 4.300000 # SP3-SQd + pair_coeff @atom:SP3_bSP3_aSP3_dSP3_iSP3 @atom:SQda_bSQda_aSQda_dSQda_iSQda lj/gromacs/coul/gromacs 1.003825 4.300000 # SP3-SQda + pair_coeff @atom:SP4_bSP4_aSP4_dSP4_iSP4 @atom:SP4_bSP4_aSP4_dSP4_iSP4 lj/gromacs/coul/gromacs 0.896273 4.300000 # SP4-SP4 + pair_coeff @atom:SP4_bSP4_aSP4_dSP4_iSP4 @atom:SP5_bSP5_aSP5_dSP5_iSP5 lj/gromacs/coul/gromacs 1.003825 4.300000 # SP4-SP5 + pair_coeff @atom:SP4_bSP4_aSP4_dSP4_iSP4 @atom:SQ0_bSQ0_aSQ0_dSQ0_iSQ0 lj/gromacs/coul/gromacs 1.003825 4.300000 # SP4-SQ0 + pair_coeff @atom:SP4_bSP4_aSP4_dSP4_iSP4 @atom:SQa_bSQa_aSQa_dSQa_iSQa lj/gromacs/coul/gromacs 1.003825 4.300000 # SP4-SQa + pair_coeff @atom:SP4_bSP4_aSP4_dSP4_iSP4 @atom:SQd_bSQd_aSQd_dSQd_iSQd lj/gromacs/coul/gromacs 1.003825 4.300000 # SP4-SQd + pair_coeff @atom:SP4_bSP4_aSP4_dSP4_iSP4 @atom:SQda_bSQda_aSQda_dSQda_iSQda lj/gromacs/coul/gromacs 1.003825 4.300000 # SP4-SQda + pair_coeff @atom:SP5_bSP5_aSP5_dSP5_iSP5 @atom:SP5_bSP5_aSP5_dSP5_iSP5 lj/gromacs/coul/gromacs 1.003825 4.300000 # SP5-SP5 + pair_coeff @atom:SP5_bSP5_aSP5_dSP5_iSP5 @atom:SQ0_bSQ0_aSQ0_dSQ0_iSQ0 lj/gromacs/coul/gromacs 0.896273 4.300000 # SP5-SQ0 + pair_coeff @atom:SP5_bSP5_aSP5_dSP5_iSP5 @atom:SQa_bSQa_aSQa_dSQa_iSQa lj/gromacs/coul/gromacs 1.003825 4.300000 # SP5-SQa + pair_coeff @atom:SP5_bSP5_aSP5_dSP5_iSP5 @atom:SQd_bSQd_aSQd_dSQd_iSQd lj/gromacs/coul/gromacs 1.003825 4.300000 # SP5-SQd + pair_coeff @atom:SP5_bSP5_aSP5_dSP5_iSP5 @atom:SQda_bSQda_aSQda_dSQda_iSQda lj/gromacs/coul/gromacs 1.003825 4.300000 # SP5-SQda + pair_coeff @atom:SQ0_bSQ0_aSQ0_dSQ0_iSQ0 @atom:SQ0_bSQ0_aSQ0_dSQ0_iSQ0 lj/gromacs/coul/gromacs 0.627391 4.300000 # SQ0-SQ0 + pair_coeff @atom:SQ0_bSQ0_aSQ0_dSQ0_iSQ0 @atom:SQa_bSQa_aSQa_dSQa_iSQa lj/gromacs/coul/gromacs 0.806645 4.300000 # SQ0-SQa + pair_coeff @atom:SQ0_bSQ0_aSQ0_dSQ0_iSQ0 @atom:SQd_bSQd_aSQd_dSQd_iSQd lj/gromacs/coul/gromacs 0.806645 4.300000 # SQ0-SQd + pair_coeff @atom:SQ0_bSQ0_aSQ0_dSQ0_iSQ0 @atom:SQda_bSQda_aSQda_dSQda_iSQda lj/gromacs/coul/gromacs 0.806645 4.300000 # SQ0-SQda + pair_coeff @atom:SQa_bSQa_aSQa_dSQa_iSQa @atom:SQa_bSQa_aSQa_dSQa_iSQa lj/gromacs/coul/gromacs 0.896273 4.300000 # SQa-SQa + pair_coeff @atom:SQa_bSQa_aSQa_dSQa_iSQa @atom:SQd_bSQd_aSQd_dSQd_iSQd lj/gromacs/coul/gromacs 1.003825 4.300000 # SQa-SQd + pair_coeff @atom:SQa_bSQa_aSQa_dSQa_iSQa @atom:SQda_bSQda_aSQda_dSQda_iSQda lj/gromacs/coul/gromacs 1.003825 4.300000 # SQa-SQda + pair_coeff @atom:SQd_bSQd_aSQd_dSQd_iSQd @atom:SQd_bSQd_aSQd_dSQd_iSQd lj/gromacs/coul/gromacs 0.896273 4.300000 # SQd-SQd + pair_coeff @atom:SQd_bSQd_aSQd_dSQd_iSQd @atom:SQda_bSQda_aSQda_dSQda_iSQda lj/gromacs/coul/gromacs 1.003825 4.300000 # SQd-SQda + pair_coeff @atom:SQda_bSQda_aSQda_dSQda_iSQda @atom:SQda_bSQda_aSQda_dSQda_iSQda lj/gromacs/coul/gromacs 1.003825 4.300000 # SQda-SQda + pair_coeff @atom:C41_bC4_aC41_dC41_iC41 @atom:BP4_bBP4_aBP4_dBP4_iBP4 lj/gromacs/coul/gromacs 0.645316 4.700000 # C41-BP4 + pair_coeff @atom:C41_bC4_aC41_dC41_iC41 @atom:C1_bC1_aC1_dC1_iC1 lj/gromacs/coul/gromacs 0.740919 4.700000 # C41-C1 + pair_coeff @atom:C41_bC4_aC41_dC41_iC41 @atom:C2_bC2_aC2_dC2_iC2 lj/gromacs/coul/gromacs 0.740919 4.700000 # C41-C2 + pair_coeff @atom:C41_bC4_aC41_dC41_iC41 @atom:C3_bC3_aC3_dC3_iC3 lj/gromacs/coul/gromacs 0.836521 4.700000 # C41-C3 + pair_coeff @atom:C41_bC4_aC41_dC41_iC41 @atom:C41_bC4_aC41_dC41_iC41 lj/gromacs/coul/gromacs 0.836521 4.700000 # C41-C41 + pair_coeff @atom:C41_bC4_aC41_dC41_iC41 @atom:C4_bC4_aC4_dC4_iC4 lj/gromacs/coul/gromacs 0.836521 4.700000 # C41-C4 + pair_coeff @atom:C41_bC4_aC41_dC41_iC41 @atom:C5_bC5_aC5_dC5_iC5 lj/gromacs/coul/gromacs 0.836521 4.700000 # C41-C5 + pair_coeff @atom:C41_bC4_aC41_dC41_iC41 @atom:N0_bN0_aN0_dN0_iN0 lj/gromacs/coul/gromacs 0.836521 4.700000 # C41-N0 + pair_coeff @atom:C41_bC4_aC41_dC41_iC41 @atom:Na_bNa_aNa_dNa_iNa lj/gromacs/coul/gromacs 0.740919 4.700000 # C41-Na + pair_coeff @atom:C41_bC4_aC41_dC41_iC41 @atom:Nd_bNd_aNd_dNd_iNd lj/gromacs/coul/gromacs 0.740919 4.700000 # C41-Nd + pair_coeff @atom:C41_bC4_aC41_dC41_iC41 @atom:Nda_bNda_aNda_dNda_iNda lj/gromacs/coul/gromacs 0.740919 4.700000 # C41-Nda + pair_coeff @atom:C41_bC4_aC41_dC41_iC41 @atom:P1_bP1_aP1_dP1_iP1 lj/gromacs/coul/gromacs 0.836521 4.700000 # C41-P1 + pair_coeff @atom:C41_bC4_aC41_dC41_iC41 @atom:P2_bP2_aP2_dP2_iP2 lj/gromacs/coul/gromacs 0.836521 4.700000 # C41-P2 + pair_coeff @atom:C41_bC4_aC41_dC41_iC41 @atom:P3_bP3_aP3_dP3_iP3 lj/gromacs/coul/gromacs 0.740919 4.700000 # C41-P3 + pair_coeff @atom:C41_bC4_aC41_dC41_iC41 @atom:P4_bP4_aP4_dP4_iP4 lj/gromacs/coul/gromacs 0.645316 4.700000 # C41-P4 + pair_coeff @atom:C41_bC4_aC41_dC41_iC41 @atom:P5_bP5_aP5_dP5_iP5 lj/gromacs/coul/gromacs 0.645316 4.700000 # C41-P5 + pair_coeff @atom:C41_bC4_aC41_dC41_iC41 @atom:Q0_bQ0_aQ0_dQ0_iQ0 lj/gromacs/coul/gromacs 0.645316 4.700000 # C41-Q0 + pair_coeff @atom:C41_bC4_aC41_dC41_iC41 @atom:Qa_bQa_aQa_dQa_iQa lj/gromacs/coul/gromacs 0.645316 4.700000 # C41-Qa + pair_coeff @atom:C41_bC4_aC41_dC41_iC41 @atom:Qd_bQd_aQd_dQd_iQd lj/gromacs/coul/gromacs 0.645316 4.700000 # C41-Qd + pair_coeff @atom:C41_bC4_aC41_dC41_iC41 @atom:Qda_bQda_aQda_dQda_iQda lj/gromacs/coul/gromacs 0.645316 4.700000 # C41-Qda + pair_coeff @atom:C41_bC4_aC41_dC41_iC41 @atom:SC1_bSC1_aSC1_dSC1_iSC1 lj/gromacs/coul/gromacs 0.740919 4.700000 # C41-SC1 + pair_coeff @atom:C41_bC4_aC41_dC41_iC41 @atom:SC2_bSC2_aSC2_dSC2_iSC2 lj/gromacs/coul/gromacs 0.740919 4.700000 # C41-SC2 + pair_coeff @atom:C41_bC4_aC41_dC41_iC41 @atom:SC3_bSC3_aSC3_dSC3_iSC3 lj/gromacs/coul/gromacs 0.836521 4.700000 # C41-SC3 + pair_coeff @atom:C41_bC4_aC41_dC41_iC41 @atom:SC4_bSC4_aSC4_dSC4_iSC4 lj/gromacs/coul/gromacs 0.836521 4.700000 # C41-SC4 + pair_coeff @atom:C41_bC4_aC41_dC41_iC41 @atom:SC5_bSC5_aSC5_dSC5_iSC5 lj/gromacs/coul/gromacs 0.836521 4.700000 # C41-SC5 + pair_coeff @atom:C41_bC4_aC41_dC41_iC41 @atom:SN0_bSN0_aSN0_dSN0_iSN0 lj/gromacs/coul/gromacs 0.836521 4.700000 # C41-SN0 + pair_coeff @atom:C41_bC4_aC41_dC41_iC41 @atom:SNa_bSNa_aSNa_dSNa_iSNa lj/gromacs/coul/gromacs 0.740919 4.700000 # C41-SNa + pair_coeff @atom:C41_bC4_aC41_dC41_iC41 @atom:SNd_bSNd_aSNd_dSNd_iSNd lj/gromacs/coul/gromacs 0.740919 4.700000 # C41-SNd + pair_coeff @atom:C41_bC4_aC41_dC41_iC41 @atom:SNda_bSNda_aSNda_dSNda_iSNda lj/gromacs/coul/gromacs 0.740919 4.700000 # C41-SNda + pair_coeff @atom:C41_bC4_aC41_dC41_iC41 @atom:SP1_bSP1_aSP1_dSP1_iSP1 lj/gromacs/coul/gromacs 0.836521 4.700000 # C41-SP1 + pair_coeff @atom:C41_bC4_aC41_dC41_iC41 @atom:SP2_bSP2_aSP2_dSP2_iSP2 lj/gromacs/coul/gromacs 0.836521 4.700000 # C41-SP2 + pair_coeff @atom:C41_bC4_aC41_dC41_iC41 @atom:SP3_bSP3_aSP3_dSP3_iSP3 lj/gromacs/coul/gromacs 0.740919 4.700000 # C41-SP3 + pair_coeff @atom:C41_bC4_aC41_dC41_iC41 @atom:SP4_bSP4_aSP4_dSP4_iSP4 lj/gromacs/coul/gromacs 0.645316 4.700000 # C41-SP4 + pair_coeff @atom:C41_bC4_aC41_dC41_iC41 @atom:SP5_bSP5_aSP5_dSP5_iSP5 lj/gromacs/coul/gromacs 0.645316 4.700000 # C41-SP5 + pair_coeff @atom:C41_bC4_aC41_dC41_iC41 @atom:SQ0_bSQ0_aSQ0_dSQ0_iSQ0 lj/gromacs/coul/gromacs 0.645316 4.700000 # C41-SQ0 + pair_coeff @atom:C41_bC4_aC41_dC41_iC41 @atom:SQa_bSQa_aSQa_dSQa_iSQa lj/gromacs/coul/gromacs 0.645316 4.700000 # C41-SQa + pair_coeff @atom:C41_bC4_aC41_dC41_iC41 @atom:SQd_bSQd_aSQd_dSQd_iSQd lj/gromacs/coul/gromacs 0.645316 4.700000 # C41-SQd + pair_coeff @atom:C41_bC4_aC41_dC41_iC41 @atom:SQda_bSQda_aSQda_dSQda_iSQda lj/gromacs/coul/gromacs 0.645316 4.700000 # C41-SQda + pair_coeff @atom:C42_bC4_aC42_dC42_iC42 @atom:BP4_bBP4_aBP4_dBP4_iBP4 lj/gromacs/coul/gromacs 0.645316 4.700000 # C42-BP4 + pair_coeff @atom:C42_bC4_aC42_dC42_iC42 @atom:C1_bC1_aC1_dC1_iC1 lj/gromacs/coul/gromacs 0.740919 4.700000 # C42-C1 + pair_coeff @atom:C42_bC4_aC42_dC42_iC42 @atom:C2_bC2_aC2_dC2_iC2 lj/gromacs/coul/gromacs 0.740919 4.700000 # C42-C2 + pair_coeff @atom:C42_bC4_aC42_dC42_iC42 @atom:C3_bC3_aC3_dC3_iC3 lj/gromacs/coul/gromacs 0.836521 4.700000 # C42-C3 + pair_coeff @atom:C42_bC4_aC42_dC42_iC42 @atom:C42_bC4_aC42_dC42_iC42 lj/gromacs/coul/gromacs 0.836521 4.700000 # C42-C42 + pair_coeff @atom:C42_bC4_aC42_dC42_iC42 @atom:C4_bC4_aC4_dC4_iC4 lj/gromacs/coul/gromacs 0.836521 4.700000 # C42-C4 + pair_coeff @atom:C42_bC4_aC42_dC42_iC42 @atom:C5_bC5_aC5_dC5_iC5 lj/gromacs/coul/gromacs 0.836521 4.700000 # C42-C5 + pair_coeff @atom:C42_bC4_aC42_dC42_iC42 @atom:N0_bN0_aN0_dN0_iN0 lj/gromacs/coul/gromacs 0.836521 4.700000 # C42-N0 + pair_coeff @atom:C42_bC4_aC42_dC42_iC42 @atom:Na_bNa_aNa_dNa_iNa lj/gromacs/coul/gromacs 0.740919 4.700000 # C42-Na + pair_coeff @atom:C42_bC4_aC42_dC42_iC42 @atom:Nd_bNd_aNd_dNd_iNd lj/gromacs/coul/gromacs 0.740919 4.700000 # C42-Nd + pair_coeff @atom:C42_bC4_aC42_dC42_iC42 @atom:Nda_bNda_aNda_dNda_iNda lj/gromacs/coul/gromacs 0.740919 4.700000 # C42-Nda + pair_coeff @atom:C42_bC4_aC42_dC42_iC42 @atom:P1_bP1_aP1_dP1_iP1 lj/gromacs/coul/gromacs 0.836521 4.700000 # C42-P1 + pair_coeff @atom:C42_bC4_aC42_dC42_iC42 @atom:P2_bP2_aP2_dP2_iP2 lj/gromacs/coul/gromacs 0.836521 4.700000 # C42-P2 + pair_coeff @atom:C42_bC4_aC42_dC42_iC42 @atom:P3_bP3_aP3_dP3_iP3 lj/gromacs/coul/gromacs 0.740919 4.700000 # C42-P3 + pair_coeff @atom:C42_bC4_aC42_dC42_iC42 @atom:P4_bP4_aP4_dP4_iP4 lj/gromacs/coul/gromacs 0.645316 4.700000 # C42-P4 + pair_coeff @atom:C42_bC4_aC42_dC42_iC42 @atom:P5_bP5_aP5_dP5_iP5 lj/gromacs/coul/gromacs 0.645316 4.700000 # C42-P5 + pair_coeff @atom:C42_bC4_aC42_dC42_iC42 @atom:Q0_bQ0_aQ0_dQ0_iQ0 lj/gromacs/coul/gromacs 0.645316 4.700000 # C42-Q0 + pair_coeff @atom:C42_bC4_aC42_dC42_iC42 @atom:Qa_bQa_aQa_dQa_iQa lj/gromacs/coul/gromacs 0.645316 4.700000 # C42-Qa + pair_coeff @atom:C42_bC4_aC42_dC42_iC42 @atom:Qd_bQd_aQd_dQd_iQd lj/gromacs/coul/gromacs 0.645316 4.700000 # C42-Qd + pair_coeff @atom:C42_bC4_aC42_dC42_iC42 @atom:Qda_bQda_aQda_dQda_iQda lj/gromacs/coul/gromacs 0.645316 4.700000 # C42-Qda + pair_coeff @atom:C42_bC4_aC42_dC42_iC42 @atom:SC1_bSC1_aSC1_dSC1_iSC1 lj/gromacs/coul/gromacs 0.740919 4.700000 # C42-SC1 + pair_coeff @atom:C42_bC4_aC42_dC42_iC42 @atom:SC2_bSC2_aSC2_dSC2_iSC2 lj/gromacs/coul/gromacs 0.740919 4.700000 # C42-SC2 + pair_coeff @atom:C42_bC4_aC42_dC42_iC42 @atom:SC3_bSC3_aSC3_dSC3_iSC3 lj/gromacs/coul/gromacs 0.836521 4.700000 # C42-SC3 + pair_coeff @atom:C42_bC4_aC42_dC42_iC42 @atom:SC4_bSC4_aSC4_dSC4_iSC4 lj/gromacs/coul/gromacs 0.836521 4.700000 # C42-SC4 + pair_coeff @atom:C42_bC4_aC42_dC42_iC42 @atom:SC5_bSC5_aSC5_dSC5_iSC5 lj/gromacs/coul/gromacs 0.836521 4.700000 # C42-SC5 + pair_coeff @atom:C42_bC4_aC42_dC42_iC42 @atom:SN0_bSN0_aSN0_dSN0_iSN0 lj/gromacs/coul/gromacs 0.836521 4.700000 # C42-SN0 + pair_coeff @atom:C42_bC4_aC42_dC42_iC42 @atom:SNa_bSNa_aSNa_dSNa_iSNa lj/gromacs/coul/gromacs 0.740919 4.700000 # C42-SNa + pair_coeff @atom:C42_bC4_aC42_dC42_iC42 @atom:SNd_bSNd_aSNd_dSNd_iSNd lj/gromacs/coul/gromacs 0.740919 4.700000 # C42-SNd + pair_coeff @atom:C42_bC4_aC42_dC42_iC42 @atom:SNda_bSNda_aSNda_dSNda_iSNda lj/gromacs/coul/gromacs 0.740919 4.700000 # C42-SNda + pair_coeff @atom:C42_bC4_aC42_dC42_iC42 @atom:SP1_bSP1_aSP1_dSP1_iSP1 lj/gromacs/coul/gromacs 0.836521 4.700000 # C42-SP1 + pair_coeff @atom:C42_bC4_aC42_dC42_iC42 @atom:SP2_bSP2_aSP2_dSP2_iSP2 lj/gromacs/coul/gromacs 0.836521 4.700000 # C42-SP2 + pair_coeff @atom:C42_bC4_aC42_dC42_iC42 @atom:SP3_bSP3_aSP3_dSP3_iSP3 lj/gromacs/coul/gromacs 0.740919 4.700000 # C42-SP3 + pair_coeff @atom:C42_bC4_aC42_dC42_iC42 @atom:SP4_bSP4_aSP4_dSP4_iSP4 lj/gromacs/coul/gromacs 0.645316 4.700000 # C42-SP4 + pair_coeff @atom:C42_bC4_aC42_dC42_iC42 @atom:SP5_bSP5_aSP5_dSP5_iSP5 lj/gromacs/coul/gromacs 0.645316 4.700000 # C42-SP5 + pair_coeff @atom:C42_bC4_aC42_dC42_iC42 @atom:SQ0_bSQ0_aSQ0_dSQ0_iSQ0 lj/gromacs/coul/gromacs 0.645316 4.700000 # C42-SQ0 + pair_coeff @atom:C42_bC4_aC42_dC42_iC42 @atom:SQa_bSQa_aSQa_dSQa_iSQa lj/gromacs/coul/gromacs 0.645316 4.700000 # C42-SQa + pair_coeff @atom:C42_bC4_aC42_dC42_iC42 @atom:SQd_bSQd_aSQd_dSQd_iSQd lj/gromacs/coul/gromacs 0.645316 4.700000 # C42-SQd + pair_coeff @atom:C42_bC4_aC42_dC42_iC42 @atom:SQda_bSQda_aSQda_dSQda_iSQda lj/gromacs/coul/gromacs 0.645316 4.700000 # C42-SQda + pair_coeff @atom:C42_bC4_aC42_dC42_iC42 @atom:C41_bC4_aC41_dC41_iC41 lj/gromacs/coul/gromacs 0.836521 4.700000 # C42-C41 + pair_coeff @atom:Na1_bNa1_aNa1_dNa1_iNa1 @atom:BP4_bBP4_aBP4_dBP4_iBP4 lj/gromacs/coul/gromacs 0.956024 4.700000 # Na1-BP4 + pair_coeff @atom:Na1_bNa1_aNa1_dNa1_iNa1 @atom:C1_bC1_aC1_dC1_iC1 lj/gromacs/coul/gromacs 0.645316 4.700000 # Na1-C1 + pair_coeff @atom:Na1_bNa1_aNa1_dNa1_iNa1 @atom:C2_bC2_aC2_dC2_iC2 lj/gromacs/coul/gromacs 0.645316 4.700000 # Na1-C2 + pair_coeff @atom:Na1_bNa1_aNa1_dNa1_iNa1 @atom:C3_bC3_aC3_dC3_iC3 lj/gromacs/coul/gromacs 0.645316 4.700000 # Na1-C3 + pair_coeff @atom:Na1_bNa1_aNa1_dNa1_iNa1 @atom:C4_bC4_aC4_dC4_iC4 lj/gromacs/coul/gromacs 0.740919 4.700000 # Na1-C4 + pair_coeff @atom:Na1_bNa1_aNa1_dNa1_iNa1 @atom:C5_bC5_aC5_dC5_iC5 lj/gromacs/coul/gromacs 0.836521 4.700000 # Na1-C5 + pair_coeff @atom:Na1_bNa1_aNa1_dNa1_iNa1 @atom:N0_bN0_aN0_dN0_iN0 lj/gromacs/coul/gromacs 0.836521 4.700000 # Na1-N0 + pair_coeff @atom:Na1_bNa1_aNa1_dNa1_iNa1 @atom:Na1_bNa1_aNa1_dNa1_iNa1 lj/gromacs/coul/gromacs 0.956024 4.700000 # Na1-Na1 + pair_coeff @atom:Na1_bNa1_aNa1_dNa1_iNa1 @atom:Na_bNa_aNa_dNa_iNa lj/gromacs/coul/gromacs 0.956024 4.700000 # Na1-Na + pair_coeff @atom:Na1_bNa1_aNa1_dNa1_iNa1 @atom:Nd_bNd_aNd_dNd_iNd lj/gromacs/coul/gromacs 1.075527 4.700000 # Na1-Nd + pair_coeff @atom:Na1_bNa1_aNa1_dNa1_iNa1 @atom:Nda_bNda_aNda_dNda_iNda lj/gromacs/coul/gromacs 1.075527 4.700000 # Na1-Nda + pair_coeff @atom:Na1_bNa1_aNa1_dNa1_iNa1 @atom:P1_bP1_aP1_dP1_iP1 lj/gromacs/coul/gromacs 1.075527 4.700000 # Na1-P1 + pair_coeff @atom:Na1_bNa1_aNa1_dNa1_iNa1 @atom:P2_bP2_aP2_dP2_iP2 lj/gromacs/coul/gromacs 1.075527 4.700000 # Na1-P2 + pair_coeff @atom:Na1_bNa1_aNa1_dNa1_iNa1 @atom:P3_bP3_aP3_dP3_iP3 lj/gromacs/coul/gromacs 1.075527 4.700000 # Na1-P3 + pair_coeff @atom:Na1_bNa1_aNa1_dNa1_iNa1 @atom:P4_bP4_aP4_dP4_iP4 lj/gromacs/coul/gromacs 0.956024 4.700000 # Na1-P4 + pair_coeff @atom:Na1_bNa1_aNa1_dNa1_iNa1 @atom:P5_bP5_aP5_dP5_iP5 lj/gromacs/coul/gromacs 1.195030 4.700000 # Na1-P5 + pair_coeff @atom:Na1_bNa1_aNa1_dNa1_iNa1 @atom:Q0_bQ0_aQ0_dQ0_iQ0 lj/gromacs/coul/gromacs 0.956024 4.700000 # Na1-Q0 + pair_coeff @atom:Na1_bNa1_aNa1_dNa1_iNa1 @atom:Qa_bQa_aQa_dQa_iQa lj/gromacs/coul/gromacs 0.956024 4.700000 # Na1-Qa + pair_coeff @atom:Na1_bNa1_aNa1_dNa1_iNa1 @atom:Qd_bQd_aQd_dQd_iQd lj/gromacs/coul/gromacs 1.195030 4.700000 # Na1-Qd + pair_coeff @atom:Na1_bNa1_aNa1_dNa1_iNa1 @atom:Qda_bQda_aQda_dQda_iQda lj/gromacs/coul/gromacs 1.195030 4.700000 # Na1-Qda + pair_coeff @atom:Na1_bNa1_aNa1_dNa1_iNa1 @atom:SC1_bSC1_aSC1_dSC1_iSC1 lj/gromacs/coul/gromacs 0.645316 4.700000 # Na1-SC1 + pair_coeff @atom:Na1_bNa1_aNa1_dNa1_iNa1 @atom:SC2_bSC2_aSC2_dSC2_iSC2 lj/gromacs/coul/gromacs 0.645316 4.700000 # Na1-SC2 + pair_coeff @atom:Na1_bNa1_aNa1_dNa1_iNa1 @atom:SC3_bSC3_aSC3_dSC3_iSC3 lj/gromacs/coul/gromacs 0.645316 4.700000 # Na1-SC3 + pair_coeff @atom:Na1_bNa1_aNa1_dNa1_iNa1 @atom:SC4_bSC4_aSC4_dSC4_iSC4 lj/gromacs/coul/gromacs 0.740919 4.700000 # Na1-SC4 + pair_coeff @atom:Na1_bNa1_aNa1_dNa1_iNa1 @atom:SC5_bSC5_aSC5_dSC5_iSC5 lj/gromacs/coul/gromacs 0.836521 4.700000 # Na1-SC5 + pair_coeff @atom:Na1_bNa1_aNa1_dNa1_iNa1 @atom:SN0_bSN0_aSN0_dSN0_iSN0 lj/gromacs/coul/gromacs 0.836521 4.700000 # Na1-SN0 + pair_coeff @atom:Na1_bNa1_aNa1_dNa1_iNa1 @atom:SNa_bSNa_aSNa_dSNa_iSNa lj/gromacs/coul/gromacs 0.956024 4.700000 # Na1-SNa + pair_coeff @atom:Na1_bNa1_aNa1_dNa1_iNa1 @atom:SNd_bSNd_aSNd_dSNd_iSNd lj/gromacs/coul/gromacs 1.075527 4.700000 # Na1-SNd + pair_coeff @atom:Na1_bNa1_aNa1_dNa1_iNa1 @atom:SNda_bSNda_aSNda_dSNda_iSNda lj/gromacs/coul/gromacs 1.075527 4.700000 # Na1-SNda + pair_coeff @atom:Na1_bNa1_aNa1_dNa1_iNa1 @atom:SP1_bSP1_aSP1_dSP1_iSP1 lj/gromacs/coul/gromacs 1.075527 4.700000 # Na1-SP1 + pair_coeff @atom:Na1_bNa1_aNa1_dNa1_iNa1 @atom:SP2_bSP2_aSP2_dSP2_iSP2 lj/gromacs/coul/gromacs 1.075527 4.700000 # Na1-SP2 + pair_coeff @atom:Na1_bNa1_aNa1_dNa1_iNa1 @atom:SP3_bSP3_aSP3_dSP3_iSP3 lj/gromacs/coul/gromacs 1.075527 4.700000 # Na1-SP3 + pair_coeff @atom:Na1_bNa1_aNa1_dNa1_iNa1 @atom:SP4_bSP4_aSP4_dSP4_iSP4 lj/gromacs/coul/gromacs 0.956024 4.700000 # Na1-SP4 + pair_coeff @atom:Na1_bNa1_aNa1_dNa1_iNa1 @atom:SP5_bSP5_aSP5_dSP5_iSP5 lj/gromacs/coul/gromacs 1.195030 4.700000 # Na1-SP5 + pair_coeff @atom:Na1_bNa1_aNa1_dNa1_iNa1 @atom:SQ0_bSQ0_aSQ0_dSQ0_iSQ0 lj/gromacs/coul/gromacs 0.956024 4.700000 # Na1-SQ0 + pair_coeff @atom:Na1_bNa1_aNa1_dNa1_iNa1 @atom:SQa_bSQa_aSQa_dSQa_iSQa lj/gromacs/coul/gromacs 0.956024 4.700000 # Na1-SQa + pair_coeff @atom:Na1_bNa1_aNa1_dNa1_iNa1 @atom:SQd_bSQd_aSQd_dSQd_iSQd lj/gromacs/coul/gromacs 1.195030 4.700000 # Na1-SQd + pair_coeff @atom:Na1_bNa1_aNa1_dNa1_iNa1 @atom:SQda_bSQda_aSQda_dSQda_iSQda lj/gromacs/coul/gromacs 1.195030 4.700000 # Na1-SQda + pair_coeff @atom:Na1_bNa1_aNa1_dNa1_iNa1 @atom:C41_bC4_aC41_dC41_iC41 lj/gromacs/coul/gromacs 0.740919 4.700000 # Na1-C41 + pair_coeff @atom:Na1_bNa1_aNa1_dNa1_iNa1 @atom:C42_bC4_aC42_dC42_iC42 lj/gromacs/coul/gromacs 0.740919 4.700000 # Na1-C42 + pair_coeff @atom:Na2_bNa2_aNa2_dNa2_iNa2 @atom:BP4_bBP4_aBP4_dBP4_iBP4 lj/gromacs/coul/gromacs 0.956024 4.700000 # Na2-BP4 + pair_coeff @atom:Na2_bNa2_aNa2_dNa2_iNa2 @atom:C1_bC1_aC1_dC1_iC1 lj/gromacs/coul/gromacs 0.645316 4.700000 # Na2-C1 + pair_coeff @atom:Na2_bNa2_aNa2_dNa2_iNa2 @atom:C2_bC2_aC2_dC2_iC2 lj/gromacs/coul/gromacs 0.645316 4.700000 # Na2-C2 + pair_coeff @atom:Na2_bNa2_aNa2_dNa2_iNa2 @atom:C3_bC3_aC3_dC3_iC3 lj/gromacs/coul/gromacs 0.645316 4.700000 # Na2-C3 + pair_coeff @atom:Na2_bNa2_aNa2_dNa2_iNa2 @atom:C4_bC4_aC4_dC4_iC4 lj/gromacs/coul/gromacs 0.740919 4.700000 # Na2-C4 + pair_coeff @atom:Na2_bNa2_aNa2_dNa2_iNa2 @atom:C5_bC5_aC5_dC5_iC5 lj/gromacs/coul/gromacs 0.836521 4.700000 # Na2-C5 + pair_coeff @atom:Na2_bNa2_aNa2_dNa2_iNa2 @atom:N0_bN0_aN0_dN0_iN0 lj/gromacs/coul/gromacs 0.836521 4.700000 # Na2-N0 + pair_coeff @atom:Na2_bNa2_aNa2_dNa2_iNa2 @atom:Na2_bNa2_aNa2_dNa2_iNa2 lj/gromacs/coul/gromacs 0.956024 4.700000 # Na2-Na2 + pair_coeff @atom:Na2_bNa2_aNa2_dNa2_iNa2 @atom:Na_bNa_aNa_dNa_iNa lj/gromacs/coul/gromacs 0.956024 4.700000 # Na2-Na + pair_coeff @atom:Na2_bNa2_aNa2_dNa2_iNa2 @atom:Nd_bNd_aNd_dNd_iNd lj/gromacs/coul/gromacs 1.075527 4.700000 # Na2-Nd + pair_coeff @atom:Na2_bNa2_aNa2_dNa2_iNa2 @atom:Nda_bNda_aNda_dNda_iNda lj/gromacs/coul/gromacs 1.075527 4.700000 # Na2-Nda + pair_coeff @atom:Na2_bNa2_aNa2_dNa2_iNa2 @atom:P1_bP1_aP1_dP1_iP1 lj/gromacs/coul/gromacs 1.075527 4.700000 # Na2-P1 + pair_coeff @atom:Na2_bNa2_aNa2_dNa2_iNa2 @atom:P2_bP2_aP2_dP2_iP2 lj/gromacs/coul/gromacs 1.075527 4.700000 # Na2-P2 + pair_coeff @atom:Na2_bNa2_aNa2_dNa2_iNa2 @atom:P3_bP3_aP3_dP3_iP3 lj/gromacs/coul/gromacs 1.075527 4.700000 # Na2-P3 + pair_coeff @atom:Na2_bNa2_aNa2_dNa2_iNa2 @atom:P4_bP4_aP4_dP4_iP4 lj/gromacs/coul/gromacs 0.956024 4.700000 # Na2-P4 + pair_coeff @atom:Na2_bNa2_aNa2_dNa2_iNa2 @atom:P5_bP5_aP5_dP5_iP5 lj/gromacs/coul/gromacs 1.195030 4.700000 # Na2-P5 + pair_coeff @atom:Na2_bNa2_aNa2_dNa2_iNa2 @atom:Q0_bQ0_aQ0_dQ0_iQ0 lj/gromacs/coul/gromacs 0.956024 4.700000 # Na2-Q0 + pair_coeff @atom:Na2_bNa2_aNa2_dNa2_iNa2 @atom:Qa_bQa_aQa_dQa_iQa lj/gromacs/coul/gromacs 0.956024 4.700000 # Na2-Qa + pair_coeff @atom:Na2_bNa2_aNa2_dNa2_iNa2 @atom:Qd_bQd_aQd_dQd_iQd lj/gromacs/coul/gromacs 1.195030 4.700000 # Na2-Qd + pair_coeff @atom:Na2_bNa2_aNa2_dNa2_iNa2 @atom:Qda_bQda_aQda_dQda_iQda lj/gromacs/coul/gromacs 1.195030 4.700000 # Na2-Qda + pair_coeff @atom:Na2_bNa2_aNa2_dNa2_iNa2 @atom:SC1_bSC1_aSC1_dSC1_iSC1 lj/gromacs/coul/gromacs 0.645316 4.700000 # Na2-SC1 + pair_coeff @atom:Na2_bNa2_aNa2_dNa2_iNa2 @atom:SC2_bSC2_aSC2_dSC2_iSC2 lj/gromacs/coul/gromacs 0.645316 4.700000 # Na2-SC2 + pair_coeff @atom:Na2_bNa2_aNa2_dNa2_iNa2 @atom:SC3_bSC3_aSC3_dSC3_iSC3 lj/gromacs/coul/gromacs 0.645316 4.700000 # Na2-SC3 + pair_coeff @atom:Na2_bNa2_aNa2_dNa2_iNa2 @atom:SC4_bSC4_aSC4_dSC4_iSC4 lj/gromacs/coul/gromacs 0.740919 4.700000 # Na2-SC4 + pair_coeff @atom:Na2_bNa2_aNa2_dNa2_iNa2 @atom:SC5_bSC5_aSC5_dSC5_iSC5 lj/gromacs/coul/gromacs 0.836521 4.700000 # Na2-SC5 + pair_coeff @atom:Na2_bNa2_aNa2_dNa2_iNa2 @atom:SN0_bSN0_aSN0_dSN0_iSN0 lj/gromacs/coul/gromacs 0.836521 4.700000 # Na2-SN0 + pair_coeff @atom:Na2_bNa2_aNa2_dNa2_iNa2 @atom:SNa_bSNa_aSNa_dSNa_iSNa lj/gromacs/coul/gromacs 0.956024 4.700000 # Na2-SNa + pair_coeff @atom:Na2_bNa2_aNa2_dNa2_iNa2 @atom:SNd_bSNd_aSNd_dSNd_iSNd lj/gromacs/coul/gromacs 1.075527 4.700000 # Na2-SNd + pair_coeff @atom:Na2_bNa2_aNa2_dNa2_iNa2 @atom:SNda_bSNda_aSNda_dSNda_iSNda lj/gromacs/coul/gromacs 1.075527 4.700000 # Na2-SNda + pair_coeff @atom:Na2_bNa2_aNa2_dNa2_iNa2 @atom:SP1_bSP1_aSP1_dSP1_iSP1 lj/gromacs/coul/gromacs 1.075527 4.700000 # Na2-SP1 + pair_coeff @atom:Na2_bNa2_aNa2_dNa2_iNa2 @atom:SP2_bSP2_aSP2_dSP2_iSP2 lj/gromacs/coul/gromacs 1.075527 4.700000 # Na2-SP2 + pair_coeff @atom:Na2_bNa2_aNa2_dNa2_iNa2 @atom:SP3_bSP3_aSP3_dSP3_iSP3 lj/gromacs/coul/gromacs 1.075527 4.700000 # Na2-SP3 + pair_coeff @atom:Na2_bNa2_aNa2_dNa2_iNa2 @atom:SP4_bSP4_aSP4_dSP4_iSP4 lj/gromacs/coul/gromacs 0.956024 4.700000 # Na2-SP4 + pair_coeff @atom:Na2_bNa2_aNa2_dNa2_iNa2 @atom:SP5_bSP5_aSP5_dSP5_iSP5 lj/gromacs/coul/gromacs 1.195030 4.700000 # Na2-SP5 + pair_coeff @atom:Na2_bNa2_aNa2_dNa2_iNa2 @atom:SQ0_bSQ0_aSQ0_dSQ0_iSQ0 lj/gromacs/coul/gromacs 0.956024 4.700000 # Na2-SQ0 + pair_coeff @atom:Na2_bNa2_aNa2_dNa2_iNa2 @atom:SQa_bSQa_aSQa_dSQa_iSQa lj/gromacs/coul/gromacs 0.956024 4.700000 # Na2-SQa + pair_coeff @atom:Na2_bNa2_aNa2_dNa2_iNa2 @atom:SQd_bSQd_aSQd_dSQd_iSQd lj/gromacs/coul/gromacs 1.195030 4.700000 # Na2-SQd + pair_coeff @atom:Na2_bNa2_aNa2_dNa2_iNa2 @atom:SQda_bSQda_aSQda_dSQda_iSQda lj/gromacs/coul/gromacs 1.195030 4.700000 # Na2-SQda + pair_coeff @atom:Na2_bNa2_aNa2_dNa2_iNa2 @atom:C41_bC4_aC41_dC41_iC41 lj/gromacs/coul/gromacs 0.740919 4.700000 # Na2-C41 + pair_coeff @atom:Na2_bNa2_aNa2_dNa2_iNa2 @atom:C42_bC4_aC42_dC42_iC42 lj/gromacs/coul/gromacs 0.740919 4.700000 # Na2-C42 + pair_coeff @atom:Na2_bNa2_aNa2_dNa2_iNa2 @atom:Na1_bNa1_aNa1_dNa1_iNa1 lj/gromacs/coul/gromacs 0.956024 4.700000 # Na2-Na1 + pair_coeff @atom:Qa1_bQa1_aQa1_dQa1_iQa1 @atom:BP4_bBP4_aBP4_dBP4_iBP4 lj/gromacs/coul/gromacs 1.338434 4.700000 # Qa1-BP4 + pair_coeff @atom:Qa1_bQa1_aQa1_dQa1_iQa1 @atom:C1_bC1_aC1_dC1_iC1 lj/gromacs/coul/gromacs 0.478012 6.200000 # Qa1-C1 + pair_coeff @atom:Qa1_bQa1_aQa1_dQa1_iQa1 @atom:C2_bC2_aC2_dC2_iC2 lj/gromacs/coul/gromacs 0.478012 6.200000 # Qa1-C2 + pair_coeff @atom:Qa1_bQa1_aQa1_dQa1_iQa1 @atom:C3_bC3_aC3_dC3_iC3 lj/gromacs/coul/gromacs 0.549714 4.700000 # Qa1-C3 + pair_coeff @atom:Qa1_bQa1_aQa1_dQa1_iQa1 @atom:C4_bC4_aC4_dC4_iC4 lj/gromacs/coul/gromacs 0.645316 4.700000 # Qa1-C4 + pair_coeff @atom:Qa1_bQa1_aQa1_dQa1_iQa1 @atom:C5_bC5_aC5_dC5_iC5 lj/gromacs/coul/gromacs 0.740919 4.700000 # Qa1-C5 + pair_coeff @atom:Qa1_bQa1_aQa1_dQa1_iQa1 @atom:N0_bN0_aN0_dN0_iN0 lj/gromacs/coul/gromacs 0.836521 4.700000 # Qa1-N0 + pair_coeff @atom:Qa1_bQa1_aQa1_dQa1_iQa1 @atom:Na_bNa_aNa_dNa_iNa lj/gromacs/coul/gromacs 0.956024 4.700000 # Qa1-Na + pair_coeff @atom:Qa1_bQa1_aQa1_dQa1_iQa1 @atom:Nd_bNd_aNd_dNd_iNd lj/gromacs/coul/gromacs 1.195030 4.700000 # Qa1-Nd + pair_coeff @atom:Qa1_bQa1_aQa1_dQa1_iQa1 @atom:Nda_bNda_aNda_dNda_iNda lj/gromacs/coul/gromacs 1.195030 4.700000 # Qa1-Nda + pair_coeff @atom:Qa1_bQa1_aQa1_dQa1_iQa1 @atom:P1_bP1_aP1_dP1_iP1 lj/gromacs/coul/gromacs 1.195030 4.700000 # Qa1-P1 + pair_coeff @atom:Qa1_bQa1_aQa1_dQa1_iQa1 @atom:P2_bP2_aP2_dP2_iP2 lj/gromacs/coul/gromacs 1.195030 4.700000 # Qa1-P2 + pair_coeff @atom:Qa1_bQa1_aQa1_dQa1_iQa1 @atom:P3_bP3_aP3_dP3_iP3 lj/gromacs/coul/gromacs 1.338434 4.700000 # Qa1-P3 + pair_coeff @atom:Qa1_bQa1_aQa1_dQa1_iQa1 @atom:P4_bP4_aP4_dP4_iP4 lj/gromacs/coul/gromacs 1.338434 4.700000 # Qa1-P4 + pair_coeff @atom:Qa1_bQa1_aQa1_dQa1_iQa1 @atom:P5_bP5_aP5_dP5_iP5 lj/gromacs/coul/gromacs 1.338434 4.700000 # Qa1-P5 + pair_coeff @atom:Qa1_bQa1_aQa1_dQa1_iQa1 @atom:Q0_bQ0_aQ0_dQ0_iQ0 lj/gromacs/coul/gromacs 1.075527 4.700000 # Qa1-Q0 + pair_coeff @atom:Qa1_bQa1_aQa1_dQa1_iQa1 @atom:Qa1_bQa1_aQa1_dQa1_iQa1 lj/gromacs/coul/gromacs 1.195030 4.700000 # Qa1-Qa1 + pair_coeff @atom:Qa1_bQa1_aQa1_dQa1_iQa1 @atom:Qa_bQa_aQa_dQa_iQa lj/gromacs/coul/gromacs 1.195030 4.700000 # Qa1-Qa + pair_coeff @atom:Qa1_bQa1_aQa1_dQa1_iQa1 @atom:Qd_bQd_aQd_dQd_iQd lj/gromacs/coul/gromacs 1.338434 4.700000 # Qa1-Qd + pair_coeff @atom:Qa1_bQa1_aQa1_dQa1_iQa1 @atom:Qda_bQda_aQda_dQda_iQda lj/gromacs/coul/gromacs 1.338434 4.700000 # Qa1-Qda + pair_coeff @atom:Qa1_bQa1_aQa1_dQa1_iQa1 @atom:SC1_bSC1_aSC1_dSC1_iSC1 lj/gromacs/coul/gromacs 0.478012 6.200000 # Qa1-SC1 + pair_coeff @atom:Qa1_bQa1_aQa1_dQa1_iQa1 @atom:SC2_bSC2_aSC2_dSC2_iSC2 lj/gromacs/coul/gromacs 0.478012 6.200000 # Qa1-SC2 + pair_coeff @atom:Qa1_bQa1_aQa1_dQa1_iQa1 @atom:SC3_bSC3_aSC3_dSC3_iSC3 lj/gromacs/coul/gromacs 0.549714 4.700000 # Qa1-SC3 + pair_coeff @atom:Qa1_bQa1_aQa1_dQa1_iQa1 @atom:SC4_bSC4_aSC4_dSC4_iSC4 lj/gromacs/coul/gromacs 0.645316 4.700000 # Qa1-SC4 + pair_coeff @atom:Qa1_bQa1_aQa1_dQa1_iQa1 @atom:SC5_bSC5_aSC5_dSC5_iSC5 lj/gromacs/coul/gromacs 0.740919 4.700000 # Qa1-SC5 + pair_coeff @atom:Qa1_bQa1_aQa1_dQa1_iQa1 @atom:SN0_bSN0_aSN0_dSN0_iSN0 lj/gromacs/coul/gromacs 0.836521 4.700000 # Qa1-SN0 + pair_coeff @atom:Qa1_bQa1_aQa1_dQa1_iQa1 @atom:SNa_bSNa_aSNa_dSNa_iSNa lj/gromacs/coul/gromacs 0.956024 4.700000 # Qa1-SNa + pair_coeff @atom:Qa1_bQa1_aQa1_dQa1_iQa1 @atom:SNd_bSNd_aSNd_dSNd_iSNd lj/gromacs/coul/gromacs 1.195030 4.700000 # Qa1-SNd + pair_coeff @atom:Qa1_bQa1_aQa1_dQa1_iQa1 @atom:SNda_bSNda_aSNda_dSNda_iSNda lj/gromacs/coul/gromacs 1.195030 4.700000 # Qa1-SNda + pair_coeff @atom:Qa1_bQa1_aQa1_dQa1_iQa1 @atom:SP1_bSP1_aSP1_dSP1_iSP1 lj/gromacs/coul/gromacs 1.195030 4.700000 # Qa1-SP1 + pair_coeff @atom:Qa1_bQa1_aQa1_dQa1_iQa1 @atom:SP2_bSP2_aSP2_dSP2_iSP2 lj/gromacs/coul/gromacs 1.195030 4.700000 # Qa1-SP2 + pair_coeff @atom:Qa1_bQa1_aQa1_dQa1_iQa1 @atom:SP3_bSP3_aSP3_dSP3_iSP3 lj/gromacs/coul/gromacs 1.338434 4.700000 # Qa1-SP3 + pair_coeff @atom:Qa1_bQa1_aQa1_dQa1_iQa1 @atom:SP4_bSP4_aSP4_dSP4_iSP4 lj/gromacs/coul/gromacs 1.338434 4.700000 # Qa1-SP4 + pair_coeff @atom:Qa1_bQa1_aQa1_dQa1_iQa1 @atom:SP5_bSP5_aSP5_dSP5_iSP5 lj/gromacs/coul/gromacs 1.338434 4.700000 # Qa1-SP5 + pair_coeff @atom:Qa1_bQa1_aQa1_dQa1_iQa1 @atom:SQ0_bSQ0_aSQ0_dSQ0_iSQ0 lj/gromacs/coul/gromacs 1.075527 4.700000 # Qa1-SQ0 + pair_coeff @atom:Qa1_bQa1_aQa1_dQa1_iQa1 @atom:SQa_bSQa_aSQa_dSQa_iSQa lj/gromacs/coul/gromacs 1.195030 4.700000 # Qa1-SQa + pair_coeff @atom:Qa1_bQa1_aQa1_dQa1_iQa1 @atom:SQd_bSQd_aSQd_dSQd_iSQd lj/gromacs/coul/gromacs 1.338434 4.700000 # Qa1-SQd + pair_coeff @atom:Qa1_bQa1_aQa1_dQa1_iQa1 @atom:SQda_bSQda_aSQda_dSQda_iSQda lj/gromacs/coul/gromacs 1.338434 4.700000 # Qa1-SQda + pair_coeff @atom:Qa1_bQa1_aQa1_dQa1_iQa1 @atom:C41_bC4_aC41_dC41_iC41 lj/gromacs/coul/gromacs 0.645316 4.700000 # Qa1-C41 + pair_coeff @atom:Qa1_bQa1_aQa1_dQa1_iQa1 @atom:C42_bC4_aC42_dC42_iC42 lj/gromacs/coul/gromacs 0.645316 4.700000 # Qa1-C42 + pair_coeff @atom:Qa1_bQa1_aQa1_dQa1_iQa1 @atom:Na1_bNa1_aNa1_dNa1_iNa1 lj/gromacs/coul/gromacs 0.956024 4.700000 # Qa1-Na1 + pair_coeff @atom:Qa1_bQa1_aQa1_dQa1_iQa1 @atom:Na2_bNa2_aNa2_dNa2_iNa2 lj/gromacs/coul/gromacs 0.956024 4.700000 # Qa1-Na2 + pair_coeff @atom:Qa2_bQa2_aQa2_dQa2_iQa2 @atom:BP4_bBP4_aBP4_dBP4_iBP4 lj/gromacs/coul/gromacs 1.338434 4.700000 # Qa2-BP4 + pair_coeff @atom:Qa2_bQa2_aQa2_dQa2_iQa2 @atom:C1_bC1_aC1_dC1_iC1 lj/gromacs/coul/gromacs 0.478012 6.200000 # Qa2-C1 + pair_coeff @atom:Qa2_bQa2_aQa2_dQa2_iQa2 @atom:C2_bC2_aC2_dC2_iC2 lj/gromacs/coul/gromacs 0.478012 6.200000 # Qa2-C2 + pair_coeff @atom:Qa2_bQa2_aQa2_dQa2_iQa2 @atom:C3_bC3_aC3_dC3_iC3 lj/gromacs/coul/gromacs 0.549714 4.700000 # Qa2-C3 + pair_coeff @atom:Qa2_bQa2_aQa2_dQa2_iQa2 @atom:C4_bC4_aC4_dC4_iC4 lj/gromacs/coul/gromacs 0.645316 4.700000 # Qa2-C4 + pair_coeff @atom:Qa2_bQa2_aQa2_dQa2_iQa2 @atom:C5_bC5_aC5_dC5_iC5 lj/gromacs/coul/gromacs 0.740919 4.700000 # Qa2-C5 + pair_coeff @atom:Qa2_bQa2_aQa2_dQa2_iQa2 @atom:N0_bN0_aN0_dN0_iN0 lj/gromacs/coul/gromacs 0.836521 4.700000 # Qa2-N0 + pair_coeff @atom:Qa2_bQa2_aQa2_dQa2_iQa2 @atom:Na_bNa_aNa_dNa_iNa lj/gromacs/coul/gromacs 0.956024 4.700000 # Qa2-Na + pair_coeff @atom:Qa2_bQa2_aQa2_dQa2_iQa2 @atom:Nd_bNd_aNd_dNd_iNd lj/gromacs/coul/gromacs 1.195030 4.700000 # Qa2-Nd + pair_coeff @atom:Qa2_bQa2_aQa2_dQa2_iQa2 @atom:Nda_bNda_aNda_dNda_iNda lj/gromacs/coul/gromacs 1.195030 4.700000 # Qa2-Nda + pair_coeff @atom:Qa2_bQa2_aQa2_dQa2_iQa2 @atom:P1_bP1_aP1_dP1_iP1 lj/gromacs/coul/gromacs 1.195030 4.700000 # Qa2-P1 + pair_coeff @atom:Qa2_bQa2_aQa2_dQa2_iQa2 @atom:P2_bP2_aP2_dP2_iP2 lj/gromacs/coul/gromacs 1.195030 4.700000 # Qa2-P2 + pair_coeff @atom:Qa2_bQa2_aQa2_dQa2_iQa2 @atom:P3_bP3_aP3_dP3_iP3 lj/gromacs/coul/gromacs 1.338434 4.700000 # Qa2-P3 + pair_coeff @atom:Qa2_bQa2_aQa2_dQa2_iQa2 @atom:P4_bP4_aP4_dP4_iP4 lj/gromacs/coul/gromacs 1.338434 4.700000 # Qa2-P4 + pair_coeff @atom:Qa2_bQa2_aQa2_dQa2_iQa2 @atom:P5_bP5_aP5_dP5_iP5 lj/gromacs/coul/gromacs 1.338434 4.700000 # Qa2-P5 + pair_coeff @atom:Qa2_bQa2_aQa2_dQa2_iQa2 @atom:Q0_bQ0_aQ0_dQ0_iQ0 lj/gromacs/coul/gromacs 1.075527 4.700000 # Qa2-Q0 + pair_coeff @atom:Qa2_bQa2_aQa2_dQa2_iQa2 @atom:Qa2_bQa2_aQa2_dQa2_iQa2 lj/gromacs/coul/gromacs 1.195030 4.700000 # Qa2-Qa2 + pair_coeff @atom:Qa2_bQa2_aQa2_dQa2_iQa2 @atom:Qa_bQa_aQa_dQa_iQa lj/gromacs/coul/gromacs 1.195030 4.700000 # Qa2-Qa + pair_coeff @atom:Qa2_bQa2_aQa2_dQa2_iQa2 @atom:Qd_bQd_aQd_dQd_iQd lj/gromacs/coul/gromacs 1.338434 4.700000 # Qa2-Qd + pair_coeff @atom:Qa2_bQa2_aQa2_dQa2_iQa2 @atom:Qda_bQda_aQda_dQda_iQda lj/gromacs/coul/gromacs 1.338434 4.700000 # Qa2-Qda + pair_coeff @atom:Qa2_bQa2_aQa2_dQa2_iQa2 @atom:SC1_bSC1_aSC1_dSC1_iSC1 lj/gromacs/coul/gromacs 0.478012 6.200000 # Qa2-SC1 + pair_coeff @atom:Qa2_bQa2_aQa2_dQa2_iQa2 @atom:SC2_bSC2_aSC2_dSC2_iSC2 lj/gromacs/coul/gromacs 0.478012 6.200000 # Qa2-SC2 + pair_coeff @atom:Qa2_bQa2_aQa2_dQa2_iQa2 @atom:SC3_bSC3_aSC3_dSC3_iSC3 lj/gromacs/coul/gromacs 0.549714 4.700000 # Qa2-SC3 + pair_coeff @atom:Qa2_bQa2_aQa2_dQa2_iQa2 @atom:SC4_bSC4_aSC4_dSC4_iSC4 lj/gromacs/coul/gromacs 0.645316 4.700000 # Qa2-SC4 + pair_coeff @atom:Qa2_bQa2_aQa2_dQa2_iQa2 @atom:SC5_bSC5_aSC5_dSC5_iSC5 lj/gromacs/coul/gromacs 0.740919 4.700000 # Qa2-SC5 + pair_coeff @atom:Qa2_bQa2_aQa2_dQa2_iQa2 @atom:SN0_bSN0_aSN0_dSN0_iSN0 lj/gromacs/coul/gromacs 0.836521 4.700000 # Qa2-SN0 + pair_coeff @atom:Qa2_bQa2_aQa2_dQa2_iQa2 @atom:SNa_bSNa_aSNa_dSNa_iSNa lj/gromacs/coul/gromacs 0.956024 4.700000 # Qa2-SNa + pair_coeff @atom:Qa2_bQa2_aQa2_dQa2_iQa2 @atom:SNd_bSNd_aSNd_dSNd_iSNd lj/gromacs/coul/gromacs 1.195030 4.700000 # Qa2-SNd + pair_coeff @atom:Qa2_bQa2_aQa2_dQa2_iQa2 @atom:SNda_bSNda_aSNda_dSNda_iSNda lj/gromacs/coul/gromacs 1.195030 4.700000 # Qa2-SNda + pair_coeff @atom:Qa2_bQa2_aQa2_dQa2_iQa2 @atom:SP1_bSP1_aSP1_dSP1_iSP1 lj/gromacs/coul/gromacs 1.195030 4.700000 # Qa2-SP1 + pair_coeff @atom:Qa2_bQa2_aQa2_dQa2_iQa2 @atom:SP2_bSP2_aSP2_dSP2_iSP2 lj/gromacs/coul/gromacs 1.195030 4.700000 # Qa2-SP2 + pair_coeff @atom:Qa2_bQa2_aQa2_dQa2_iQa2 @atom:SP3_bSP3_aSP3_dSP3_iSP3 lj/gromacs/coul/gromacs 1.338434 4.700000 # Qa2-SP3 + pair_coeff @atom:Qa2_bQa2_aQa2_dQa2_iQa2 @atom:SP4_bSP4_aSP4_dSP4_iSP4 lj/gromacs/coul/gromacs 1.338434 4.700000 # Qa2-SP4 + pair_coeff @atom:Qa2_bQa2_aQa2_dQa2_iQa2 @atom:SP5_bSP5_aSP5_dSP5_iSP5 lj/gromacs/coul/gromacs 1.338434 4.700000 # Qa2-SP5 + pair_coeff @atom:Qa2_bQa2_aQa2_dQa2_iQa2 @atom:SQ0_bSQ0_aSQ0_dSQ0_iSQ0 lj/gromacs/coul/gromacs 1.075527 4.700000 # Qa2-SQ0 + pair_coeff @atom:Qa2_bQa2_aQa2_dQa2_iQa2 @atom:SQa_bSQa_aSQa_dSQa_iSQa lj/gromacs/coul/gromacs 1.195030 4.700000 # Qa2-SQa + pair_coeff @atom:Qa2_bQa2_aQa2_dQa2_iQa2 @atom:SQd_bSQd_aSQd_dSQd_iSQd lj/gromacs/coul/gromacs 1.338434 4.700000 # Qa2-SQd + pair_coeff @atom:Qa2_bQa2_aQa2_dQa2_iQa2 @atom:SQda_bSQda_aSQda_dSQda_iSQda lj/gromacs/coul/gromacs 1.338434 4.700000 # Qa2-SQda + pair_coeff @atom:Qa2_bQa2_aQa2_dQa2_iQa2 @atom:C41_bC4_aC41_dC41_iC41 lj/gromacs/coul/gromacs 0.645316 4.700000 # Qa2-C41 + pair_coeff @atom:Qa2_bQa2_aQa2_dQa2_iQa2 @atom:C42_bC4_aC42_dC42_iC42 lj/gromacs/coul/gromacs 0.645316 4.700000 # Qa2-C42 + pair_coeff @atom:Qa2_bQa2_aQa2_dQa2_iQa2 @atom:Na1_bNa1_aNa1_dNa1_iNa1 lj/gromacs/coul/gromacs 0.956024 4.700000 # Qa2-Na1 + pair_coeff @atom:Qa2_bQa2_aQa2_dQa2_iQa2 @atom:Na2_bNa2_aNa2_dNa2_iNa2 lj/gromacs/coul/gromacs 0.956024 4.700000 # Qa2-Na2 + pair_coeff @atom:Qa2_bQa2_aQa2_dQa2_iQa2 @atom:Qa1_bQa1_aQa1_dQa1_iQa1 lj/gromacs/coul/gromacs 1.195030 4.700000 # Qa2-Qa1 + pair_coeff @atom:SC11_bSC11_aSC11_dSC11_iSC11 @atom:BP4_bBP4_aBP4_dBP4_iBP4 lj/gromacs/coul/gromacs 0.478012 4.700000 # SC11-BP4 + pair_coeff @atom:SC11_bSC11_aSC11_dSC11_iSC11 @atom:C1_bC1_aC1_dC1_iC1 lj/gromacs/coul/gromacs 0.836521 4.700000 # SC11-C1 + pair_coeff @atom:SC11_bSC11_aSC11_dSC11_iSC11 @atom:C2_bC2_aC2_dC2_iC2 lj/gromacs/coul/gromacs 0.836521 4.700000 # SC11-C2 + pair_coeff @atom:SC11_bSC11_aSC11_dSC11_iSC11 @atom:C3_bC3_aC3_dC3_iC3 lj/gromacs/coul/gromacs 0.836521 4.700000 # SC11-C3 + pair_coeff @atom:SC11_bSC11_aSC11_dSC11_iSC11 @atom:C4_bC4_aC4_dC4_iC4 lj/gromacs/coul/gromacs 0.740919 4.700000 # SC11-C4 + pair_coeff @atom:SC11_bSC11_aSC11_dSC11_iSC11 @atom:C5_bC5_aC5_dC5_iC5 lj/gromacs/coul/gromacs 0.740919 4.700000 # SC11-C5 + pair_coeff @atom:SC11_bSC11_aSC11_dSC11_iSC11 @atom:N0_bN0_aN0_dN0_iN0 lj/gromacs/coul/gromacs 0.645316 4.700000 # SC11-N0 + pair_coeff @atom:SC11_bSC11_aSC11_dSC11_iSC11 @atom:Na_bNa_aNa_dNa_iNa lj/gromacs/coul/gromacs 0.645316 4.700000 # SC11-Na + pair_coeff @atom:SC11_bSC11_aSC11_dSC11_iSC11 @atom:Nd_bNd_aNd_dNd_iNd lj/gromacs/coul/gromacs 0.645316 4.700000 # SC11-Nd + pair_coeff @atom:SC11_bSC11_aSC11_dSC11_iSC11 @atom:Nda_bNda_aNda_dNda_iNda lj/gromacs/coul/gromacs 0.645316 4.700000 # SC11-Nda + pair_coeff @atom:SC11_bSC11_aSC11_dSC11_iSC11 @atom:P1_bP1_aP1_dP1_iP1 lj/gromacs/coul/gromacs 0.645316 4.700000 # SC11-P1 + pair_coeff @atom:SC11_bSC11_aSC11_dSC11_iSC11 @atom:P2_bP2_aP2_dP2_iP2 lj/gromacs/coul/gromacs 0.549714 4.700000 # SC11-P2 + pair_coeff @atom:SC11_bSC11_aSC11_dSC11_iSC11 @atom:P3_bP3_aP3_dP3_iP3 lj/gromacs/coul/gromacs 0.549714 4.700000 # SC11-P3 + pair_coeff @atom:SC11_bSC11_aSC11_dSC11_iSC11 @atom:P4_bP4_aP4_dP4_iP4 lj/gromacs/coul/gromacs 0.478012 4.700000 # SC11-P4 + pair_coeff @atom:SC11_bSC11_aSC11_dSC11_iSC11 @atom:P5_bP5_aP5_dP5_iP5 lj/gromacs/coul/gromacs 0.478012 4.700000 # SC11-P5 + pair_coeff @atom:SC11_bSC11_aSC11_dSC11_iSC11 @atom:Q0_bQ0_aQ0_dQ0_iQ0 lj/gromacs/coul/gromacs 0.478012 6.200000 # SC11-Q0 + pair_coeff @atom:SC11_bSC11_aSC11_dSC11_iSC11 @atom:Qa_bQa_aQa_dQa_iQa lj/gromacs/coul/gromacs 0.478012 6.200000 # SC11-Qa + pair_coeff @atom:SC11_bSC11_aSC11_dSC11_iSC11 @atom:Qd_bQd_aQd_dQd_iQd lj/gromacs/coul/gromacs 0.478012 6.200000 # SC11-Qd + pair_coeff @atom:SC11_bSC11_aSC11_dSC11_iSC11 @atom:Qda_bQda_aQda_dQda_iQda lj/gromacs/coul/gromacs 0.478012 6.200000 # SC11-Qda + pair_coeff @atom:SC11_bSC11_aSC11_dSC11_iSC11 @atom:SC11_bSC11_aSC11_dSC11_iSC11 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC11-SC11 + pair_coeff @atom:SC11_bSC11_aSC11_dSC11_iSC11 @atom:SC1_bSC1_aSC1_dSC1_iSC1 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC11-SC1 + pair_coeff @atom:SC11_bSC11_aSC11_dSC11_iSC11 @atom:SC2_bSC2_aSC2_dSC2_iSC2 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC11-SC2 + pair_coeff @atom:SC11_bSC11_aSC11_dSC11_iSC11 @atom:SC3_bSC3_aSC3_dSC3_iSC3 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC11-SC3 + pair_coeff @atom:SC11_bSC11_aSC11_dSC11_iSC11 @atom:SC4_bSC4_aSC4_dSC4_iSC4 lj/gromacs/coul/gromacs 0.555689 4.300000 # SC11-SC4 + pair_coeff @atom:SC11_bSC11_aSC11_dSC11_iSC11 @atom:SC5_bSC5_aSC5_dSC5_iSC5 lj/gromacs/coul/gromacs 0.555689 4.300000 # SC11-SC5 + pair_coeff @atom:SC11_bSC11_aSC11_dSC11_iSC11 @atom:SN0_bSN0_aSN0_dSN0_iSN0 lj/gromacs/coul/gromacs 0.483987 4.300000 # SC11-SN0 + pair_coeff @atom:SC11_bSC11_aSC11_dSC11_iSC11 @atom:SNa_bSNa_aSNa_dSNa_iSNa lj/gromacs/coul/gromacs 0.483987 4.300000 # SC11-SNa + pair_coeff @atom:SC11_bSC11_aSC11_dSC11_iSC11 @atom:SNd_bSNd_aSNd_dSNd_iSNd lj/gromacs/coul/gromacs 0.483987 4.300000 # SC11-SNd + pair_coeff @atom:SC11_bSC11_aSC11_dSC11_iSC11 @atom:SNda_bSNda_aSNda_dSNda_iSNda lj/gromacs/coul/gromacs 0.483987 4.300000 # SC11-SNda + pair_coeff @atom:SC11_bSC11_aSC11_dSC11_iSC11 @atom:SP1_bSP1_aSP1_dSP1_iSP1 lj/gromacs/coul/gromacs 0.483987 4.300000 # SC11-SP1 + pair_coeff @atom:SC11_bSC11_aSC11_dSC11_iSC11 @atom:SP2_bSP2_aSP2_dSP2_iSP2 lj/gromacs/coul/gromacs 0.412285 4.300000 # SC11-SP2 + pair_coeff @atom:SC11_bSC11_aSC11_dSC11_iSC11 @atom:SP3_bSP3_aSP3_dSP3_iSP3 lj/gromacs/coul/gromacs 0.412285 4.300000 # SC11-SP3 + pair_coeff @atom:SC11_bSC11_aSC11_dSC11_iSC11 @atom:SP4_bSP4_aSP4_dSP4_iSP4 lj/gromacs/coul/gromacs 0.358509 4.300000 # SC11-SP4 + pair_coeff @atom:SC11_bSC11_aSC11_dSC11_iSC11 @atom:SP5_bSP5_aSP5_dSP5_iSP5 lj/gromacs/coul/gromacs 0.358509 4.300000 # SC11-SP5 + pair_coeff @atom:SC11_bSC11_aSC11_dSC11_iSC11 @atom:SQ0_bSQ0_aSQ0_dSQ0_iSQ0 lj/gromacs/coul/gromacs 0.478012 6.200000 # SC11-SQ0 + pair_coeff @atom:SC11_bSC11_aSC11_dSC11_iSC11 @atom:SQa_bSQa_aSQa_dSQa_iSQa lj/gromacs/coul/gromacs 0.478012 6.200000 # SC11-SQa + pair_coeff @atom:SC11_bSC11_aSC11_dSC11_iSC11 @atom:SQd_bSQd_aSQd_dSQd_iSQd lj/gromacs/coul/gromacs 0.478012 6.200000 # SC11-SQd + pair_coeff @atom:SC11_bSC11_aSC11_dSC11_iSC11 @atom:SQda_bSQda_aSQda_dSQda_iSQda lj/gromacs/coul/gromacs 0.478012 6.200000 # SC11-SQda + pair_coeff @atom:SC11_bSC11_aSC11_dSC11_iSC11 @atom:C41_bC4_aC41_dC41_iC41 lj/gromacs/coul/gromacs 0.740919 4.700000 # SC11-C41 + pair_coeff @atom:SC11_bSC11_aSC11_dSC11_iSC11 @atom:C42_bC4_aC42_dC42_iC42 lj/gromacs/coul/gromacs 0.740919 4.700000 # SC11-C42 + pair_coeff @atom:SC11_bSC11_aSC11_dSC11_iSC11 @atom:Na1_bNa1_aNa1_dNa1_iNa1 lj/gromacs/coul/gromacs 0.645316 4.700000 # SC11-Na1 + pair_coeff @atom:SC11_bSC11_aSC11_dSC11_iSC11 @atom:Na2_bNa2_aNa2_dNa2_iNa2 lj/gromacs/coul/gromacs 0.645316 4.700000 # SC11-Na2 + pair_coeff @atom:SC11_bSC11_aSC11_dSC11_iSC11 @atom:Qa1_bQa1_aQa1_dQa1_iQa1 lj/gromacs/coul/gromacs 0.478012 6.200000 # SC11-Qa1 + pair_coeff @atom:SC11_bSC11_aSC11_dSC11_iSC11 @atom:Qa2_bQa2_aQa2_dQa2_iQa2 lj/gromacs/coul/gromacs 0.478012 6.200000 # SC11-Qa2 + pair_coeff @atom:SC110_bSC110_aSC110_dSC110_iSC110 @atom:BP4_bBP4_aBP4_dBP4_iBP4 lj/gromacs/coul/gromacs 0.478012 4.700000 # SC110-BP4 + pair_coeff @atom:SC110_bSC110_aSC110_dSC110_iSC110 @atom:C1_bC1_aC1_dC1_iC1 lj/gromacs/coul/gromacs 0.836521 4.700000 # SC110-C1 + pair_coeff @atom:SC110_bSC110_aSC110_dSC110_iSC110 @atom:C2_bC2_aC2_dC2_iC2 lj/gromacs/coul/gromacs 0.836521 4.700000 # SC110-C2 + pair_coeff @atom:SC110_bSC110_aSC110_dSC110_iSC110 @atom:C3_bC3_aC3_dC3_iC3 lj/gromacs/coul/gromacs 0.836521 4.700000 # SC110-C3 + pair_coeff @atom:SC110_bSC110_aSC110_dSC110_iSC110 @atom:C4_bC4_aC4_dC4_iC4 lj/gromacs/coul/gromacs 0.740919 4.700000 # SC110-C4 + pair_coeff @atom:SC110_bSC110_aSC110_dSC110_iSC110 @atom:C5_bC5_aC5_dC5_iC5 lj/gromacs/coul/gromacs 0.740919 4.700000 # SC110-C5 + pair_coeff @atom:SC110_bSC110_aSC110_dSC110_iSC110 @atom:N0_bN0_aN0_dN0_iN0 lj/gromacs/coul/gromacs 0.645316 4.700000 # SC110-N0 + pair_coeff @atom:SC110_bSC110_aSC110_dSC110_iSC110 @atom:Na_bNa_aNa_dNa_iNa lj/gromacs/coul/gromacs 0.645316 4.700000 # SC110-Na + pair_coeff @atom:SC110_bSC110_aSC110_dSC110_iSC110 @atom:Nd_bNd_aNd_dNd_iNd lj/gromacs/coul/gromacs 0.645316 4.700000 # SC110-Nd + pair_coeff @atom:SC110_bSC110_aSC110_dSC110_iSC110 @atom:Nda_bNda_aNda_dNda_iNda lj/gromacs/coul/gromacs 0.645316 4.700000 # SC110-Nda + pair_coeff @atom:SC110_bSC110_aSC110_dSC110_iSC110 @atom:P1_bP1_aP1_dP1_iP1 lj/gromacs/coul/gromacs 0.645316 4.700000 # SC110-P1 + pair_coeff @atom:SC110_bSC110_aSC110_dSC110_iSC110 @atom:P2_bP2_aP2_dP2_iP2 lj/gromacs/coul/gromacs 0.549714 4.700000 # SC110-P2 + pair_coeff @atom:SC110_bSC110_aSC110_dSC110_iSC110 @atom:P3_bP3_aP3_dP3_iP3 lj/gromacs/coul/gromacs 0.549714 4.700000 # SC110-P3 + pair_coeff @atom:SC110_bSC110_aSC110_dSC110_iSC110 @atom:P4_bP4_aP4_dP4_iP4 lj/gromacs/coul/gromacs 0.478012 4.700000 # SC110-P4 + pair_coeff @atom:SC110_bSC110_aSC110_dSC110_iSC110 @atom:P5_bP5_aP5_dP5_iP5 lj/gromacs/coul/gromacs 0.478012 4.700000 # SC110-P5 + pair_coeff @atom:SC110_bSC110_aSC110_dSC110_iSC110 @atom:Q0_bQ0_aQ0_dQ0_iQ0 lj/gromacs/coul/gromacs 0.478012 6.200000 # SC110-Q0 + pair_coeff @atom:SC110_bSC110_aSC110_dSC110_iSC110 @atom:Qa_bQa_aQa_dQa_iQa lj/gromacs/coul/gromacs 0.478012 6.200000 # SC110-Qa + pair_coeff @atom:SC110_bSC110_aSC110_dSC110_iSC110 @atom:Qd_bQd_aQd_dQd_iQd lj/gromacs/coul/gromacs 0.478012 6.200000 # SC110-Qd + pair_coeff @atom:SC110_bSC110_aSC110_dSC110_iSC110 @atom:Qda_bQda_aQda_dQda_iQda lj/gromacs/coul/gromacs 0.478012 6.200000 # SC110-Qda + pair_coeff @atom:SC110_bSC110_aSC110_dSC110_iSC110 @atom:SC110_bSC110_aSC110_dSC110_iSC110 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC110-SC110 + pair_coeff @atom:SC110_bSC110_aSC110_dSC110_iSC110 @atom:SC1_bSC1_aSC1_dSC1_iSC1 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC110-SC1 + pair_coeff @atom:SC110_bSC110_aSC110_dSC110_iSC110 @atom:SC2_bSC2_aSC2_dSC2_iSC2 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC110-SC2 + pair_coeff @atom:SC110_bSC110_aSC110_dSC110_iSC110 @atom:SC3_bSC3_aSC3_dSC3_iSC3 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC110-SC3 + pair_coeff @atom:SC110_bSC110_aSC110_dSC110_iSC110 @atom:SC4_bSC4_aSC4_dSC4_iSC4 lj/gromacs/coul/gromacs 0.555689 4.300000 # SC110-SC4 + pair_coeff @atom:SC110_bSC110_aSC110_dSC110_iSC110 @atom:SC5_bSC5_aSC5_dSC5_iSC5 lj/gromacs/coul/gromacs 0.555689 4.300000 # SC110-SC5 + pair_coeff @atom:SC110_bSC110_aSC110_dSC110_iSC110 @atom:SN0_bSN0_aSN0_dSN0_iSN0 lj/gromacs/coul/gromacs 0.483987 4.300000 # SC110-SN0 + pair_coeff @atom:SC110_bSC110_aSC110_dSC110_iSC110 @atom:SNa_bSNa_aSNa_dSNa_iSNa lj/gromacs/coul/gromacs 0.483987 4.300000 # SC110-SNa + pair_coeff @atom:SC110_bSC110_aSC110_dSC110_iSC110 @atom:SNd_bSNd_aSNd_dSNd_iSNd lj/gromacs/coul/gromacs 0.483987 4.300000 # SC110-SNd + pair_coeff @atom:SC110_bSC110_aSC110_dSC110_iSC110 @atom:SNda_bSNda_aSNda_dSNda_iSNda lj/gromacs/coul/gromacs 0.483987 4.300000 # SC110-SNda + pair_coeff @atom:SC110_bSC110_aSC110_dSC110_iSC110 @atom:SP1_bSP1_aSP1_dSP1_iSP1 lj/gromacs/coul/gromacs 0.483987 4.300000 # SC110-SP1 + pair_coeff @atom:SC110_bSC110_aSC110_dSC110_iSC110 @atom:SP2_bSP2_aSP2_dSP2_iSP2 lj/gromacs/coul/gromacs 0.412285 4.300000 # SC110-SP2 + pair_coeff @atom:SC110_bSC110_aSC110_dSC110_iSC110 @atom:SP3_bSP3_aSP3_dSP3_iSP3 lj/gromacs/coul/gromacs 0.412285 4.300000 # SC110-SP3 + pair_coeff @atom:SC110_bSC110_aSC110_dSC110_iSC110 @atom:SP4_bSP4_aSP4_dSP4_iSP4 lj/gromacs/coul/gromacs 0.358509 4.300000 # SC110-SP4 + pair_coeff @atom:SC110_bSC110_aSC110_dSC110_iSC110 @atom:SP5_bSP5_aSP5_dSP5_iSP5 lj/gromacs/coul/gromacs 0.358509 4.300000 # SC110-SP5 + pair_coeff @atom:SC110_bSC110_aSC110_dSC110_iSC110 @atom:SQ0_bSQ0_aSQ0_dSQ0_iSQ0 lj/gromacs/coul/gromacs 0.478012 6.200000 # SC110-SQ0 + pair_coeff @atom:SC110_bSC110_aSC110_dSC110_iSC110 @atom:SQa_bSQa_aSQa_dSQa_iSQa lj/gromacs/coul/gromacs 0.478012 6.200000 # SC110-SQa + pair_coeff @atom:SC110_bSC110_aSC110_dSC110_iSC110 @atom:SQd_bSQd_aSQd_dSQd_iSQd lj/gromacs/coul/gromacs 0.478012 6.200000 # SC110-SQd + pair_coeff @atom:SC110_bSC110_aSC110_dSC110_iSC110 @atom:SQda_bSQda_aSQda_dSQda_iSQda lj/gromacs/coul/gromacs 0.478012 6.200000 # SC110-SQda + pair_coeff @atom:SC110_bSC110_aSC110_dSC110_iSC110 @atom:C41_bC4_aC41_dC41_iC41 lj/gromacs/coul/gromacs 0.740919 4.700000 # SC110-C41 + pair_coeff @atom:SC110_bSC110_aSC110_dSC110_iSC110 @atom:C42_bC4_aC42_dC42_iC42 lj/gromacs/coul/gromacs 0.740919 4.700000 # SC110-C42 + pair_coeff @atom:SC110_bSC110_aSC110_dSC110_iSC110 @atom:Na1_bNa1_aNa1_dNa1_iNa1 lj/gromacs/coul/gromacs 0.645316 4.700000 # SC110-Na1 + pair_coeff @atom:SC110_bSC110_aSC110_dSC110_iSC110 @atom:Na2_bNa2_aNa2_dNa2_iNa2 lj/gromacs/coul/gromacs 0.645316 4.700000 # SC110-Na2 + pair_coeff @atom:SC110_bSC110_aSC110_dSC110_iSC110 @atom:Qa1_bQa1_aQa1_dQa1_iQa1 lj/gromacs/coul/gromacs 0.478012 6.200000 # SC110-Qa1 + pair_coeff @atom:SC110_bSC110_aSC110_dSC110_iSC110 @atom:Qa2_bQa2_aQa2_dQa2_iQa2 lj/gromacs/coul/gromacs 0.478012 6.200000 # SC110-Qa2 + pair_coeff @atom:SC110_bSC110_aSC110_dSC110_iSC110 @atom:SC11_bSC11_aSC11_dSC11_iSC11 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC110-SC11 + pair_coeff @atom:SC111_bSC111_aSC111_dSC111_iSC111 @atom:BP4_bBP4_aBP4_dBP4_iBP4 lj/gromacs/coul/gromacs 0.478012 4.700000 # SC111-BP4 + pair_coeff @atom:SC111_bSC111_aSC111_dSC111_iSC111 @atom:C1_bC1_aC1_dC1_iC1 lj/gromacs/coul/gromacs 0.836521 4.700000 # SC111-C1 + pair_coeff @atom:SC111_bSC111_aSC111_dSC111_iSC111 @atom:C2_bC2_aC2_dC2_iC2 lj/gromacs/coul/gromacs 0.836521 4.700000 # SC111-C2 + pair_coeff @atom:SC111_bSC111_aSC111_dSC111_iSC111 @atom:C3_bC3_aC3_dC3_iC3 lj/gromacs/coul/gromacs 0.836521 4.700000 # SC111-C3 + pair_coeff @atom:SC111_bSC111_aSC111_dSC111_iSC111 @atom:C4_bC4_aC4_dC4_iC4 lj/gromacs/coul/gromacs 0.740919 4.700000 # SC111-C4 + pair_coeff @atom:SC111_bSC111_aSC111_dSC111_iSC111 @atom:C5_bC5_aC5_dC5_iC5 lj/gromacs/coul/gromacs 0.740919 4.700000 # SC111-C5 + pair_coeff @atom:SC111_bSC111_aSC111_dSC111_iSC111 @atom:N0_bN0_aN0_dN0_iN0 lj/gromacs/coul/gromacs 0.645316 4.700000 # SC111-N0 + pair_coeff @atom:SC111_bSC111_aSC111_dSC111_iSC111 @atom:Na_bNa_aNa_dNa_iNa lj/gromacs/coul/gromacs 0.645316 4.700000 # SC111-Na + pair_coeff @atom:SC111_bSC111_aSC111_dSC111_iSC111 @atom:Nd_bNd_aNd_dNd_iNd lj/gromacs/coul/gromacs 0.645316 4.700000 # SC111-Nd + pair_coeff @atom:SC111_bSC111_aSC111_dSC111_iSC111 @atom:Nda_bNda_aNda_dNda_iNda lj/gromacs/coul/gromacs 0.645316 4.700000 # SC111-Nda + pair_coeff @atom:SC111_bSC111_aSC111_dSC111_iSC111 @atom:P1_bP1_aP1_dP1_iP1 lj/gromacs/coul/gromacs 0.645316 4.700000 # SC111-P1 + pair_coeff @atom:SC111_bSC111_aSC111_dSC111_iSC111 @atom:P2_bP2_aP2_dP2_iP2 lj/gromacs/coul/gromacs 0.549714 4.700000 # SC111-P2 + pair_coeff @atom:SC111_bSC111_aSC111_dSC111_iSC111 @atom:P3_bP3_aP3_dP3_iP3 lj/gromacs/coul/gromacs 0.549714 4.700000 # SC111-P3 + pair_coeff @atom:SC111_bSC111_aSC111_dSC111_iSC111 @atom:P4_bP4_aP4_dP4_iP4 lj/gromacs/coul/gromacs 0.478012 4.700000 # SC111-P4 + pair_coeff @atom:SC111_bSC111_aSC111_dSC111_iSC111 @atom:P5_bP5_aP5_dP5_iP5 lj/gromacs/coul/gromacs 0.478012 4.700000 # SC111-P5 + pair_coeff @atom:SC111_bSC111_aSC111_dSC111_iSC111 @atom:Q0_bQ0_aQ0_dQ0_iQ0 lj/gromacs/coul/gromacs 0.478012 6.200000 # SC111-Q0 + pair_coeff @atom:SC111_bSC111_aSC111_dSC111_iSC111 @atom:Qa_bQa_aQa_dQa_iQa lj/gromacs/coul/gromacs 0.478012 6.200000 # SC111-Qa + pair_coeff @atom:SC111_bSC111_aSC111_dSC111_iSC111 @atom:Qd_bQd_aQd_dQd_iQd lj/gromacs/coul/gromacs 0.478012 6.200000 # SC111-Qd + pair_coeff @atom:SC111_bSC111_aSC111_dSC111_iSC111 @atom:Qda_bQda_aQda_dQda_iQda lj/gromacs/coul/gromacs 0.478012 6.200000 # SC111-Qda + pair_coeff @atom:SC111_bSC111_aSC111_dSC111_iSC111 @atom:SC111_bSC111_aSC111_dSC111_iSC111 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC111-SC111 + pair_coeff @atom:SC111_bSC111_aSC111_dSC111_iSC111 @atom:SC1_bSC1_aSC1_dSC1_iSC1 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC111-SC1 + pair_coeff @atom:SC111_bSC111_aSC111_dSC111_iSC111 @atom:SC2_bSC2_aSC2_dSC2_iSC2 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC111-SC2 + pair_coeff @atom:SC111_bSC111_aSC111_dSC111_iSC111 @atom:SC3_bSC3_aSC3_dSC3_iSC3 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC111-SC3 + pair_coeff @atom:SC111_bSC111_aSC111_dSC111_iSC111 @atom:SC4_bSC4_aSC4_dSC4_iSC4 lj/gromacs/coul/gromacs 0.555689 4.300000 # SC111-SC4 + pair_coeff @atom:SC111_bSC111_aSC111_dSC111_iSC111 @atom:SC5_bSC5_aSC5_dSC5_iSC5 lj/gromacs/coul/gromacs 0.555689 4.300000 # SC111-SC5 + pair_coeff @atom:SC111_bSC111_aSC111_dSC111_iSC111 @atom:SN0_bSN0_aSN0_dSN0_iSN0 lj/gromacs/coul/gromacs 0.483987 4.300000 # SC111-SN0 + pair_coeff @atom:SC111_bSC111_aSC111_dSC111_iSC111 @atom:SNa_bSNa_aSNa_dSNa_iSNa lj/gromacs/coul/gromacs 0.483987 4.300000 # SC111-SNa + pair_coeff @atom:SC111_bSC111_aSC111_dSC111_iSC111 @atom:SNd_bSNd_aSNd_dSNd_iSNd lj/gromacs/coul/gromacs 0.483987 4.300000 # SC111-SNd + pair_coeff @atom:SC111_bSC111_aSC111_dSC111_iSC111 @atom:SNda_bSNda_aSNda_dSNda_iSNda lj/gromacs/coul/gromacs 0.483987 4.300000 # SC111-SNda + pair_coeff @atom:SC111_bSC111_aSC111_dSC111_iSC111 @atom:SP1_bSP1_aSP1_dSP1_iSP1 lj/gromacs/coul/gromacs 0.483987 4.300000 # SC111-SP1 + pair_coeff @atom:SC111_bSC111_aSC111_dSC111_iSC111 @atom:SP2_bSP2_aSP2_dSP2_iSP2 lj/gromacs/coul/gromacs 0.412285 4.300000 # SC111-SP2 + pair_coeff @atom:SC111_bSC111_aSC111_dSC111_iSC111 @atom:SP3_bSP3_aSP3_dSP3_iSP3 lj/gromacs/coul/gromacs 0.412285 4.300000 # SC111-SP3 + pair_coeff @atom:SC111_bSC111_aSC111_dSC111_iSC111 @atom:SP4_bSP4_aSP4_dSP4_iSP4 lj/gromacs/coul/gromacs 0.358509 4.300000 # SC111-SP4 + pair_coeff @atom:SC111_bSC111_aSC111_dSC111_iSC111 @atom:SP5_bSP5_aSP5_dSP5_iSP5 lj/gromacs/coul/gromacs 0.358509 4.300000 # SC111-SP5 + pair_coeff @atom:SC111_bSC111_aSC111_dSC111_iSC111 @atom:SQ0_bSQ0_aSQ0_dSQ0_iSQ0 lj/gromacs/coul/gromacs 0.478012 6.200000 # SC111-SQ0 + pair_coeff @atom:SC111_bSC111_aSC111_dSC111_iSC111 @atom:SQa_bSQa_aSQa_dSQa_iSQa lj/gromacs/coul/gromacs 0.478012 6.200000 # SC111-SQa + pair_coeff @atom:SC111_bSC111_aSC111_dSC111_iSC111 @atom:SQd_bSQd_aSQd_dSQd_iSQd lj/gromacs/coul/gromacs 0.478012 6.200000 # SC111-SQd + pair_coeff @atom:SC111_bSC111_aSC111_dSC111_iSC111 @atom:SQda_bSQda_aSQda_dSQda_iSQda lj/gromacs/coul/gromacs 0.478012 6.200000 # SC111-SQda + pair_coeff @atom:SC111_bSC111_aSC111_dSC111_iSC111 @atom:C41_bC4_aC41_dC41_iC41 lj/gromacs/coul/gromacs 0.740919 4.700000 # SC111-C41 + pair_coeff @atom:SC111_bSC111_aSC111_dSC111_iSC111 @atom:C42_bC4_aC42_dC42_iC42 lj/gromacs/coul/gromacs 0.740919 4.700000 # SC111-C42 + pair_coeff @atom:SC111_bSC111_aSC111_dSC111_iSC111 @atom:Na1_bNa1_aNa1_dNa1_iNa1 lj/gromacs/coul/gromacs 0.645316 4.700000 # SC111-Na1 + pair_coeff @atom:SC111_bSC111_aSC111_dSC111_iSC111 @atom:Na2_bNa2_aNa2_dNa2_iNa2 lj/gromacs/coul/gromacs 0.645316 4.700000 # SC111-Na2 + pair_coeff @atom:SC111_bSC111_aSC111_dSC111_iSC111 @atom:Qa1_bQa1_aQa1_dQa1_iQa1 lj/gromacs/coul/gromacs 0.478012 6.200000 # SC111-Qa1 + pair_coeff @atom:SC111_bSC111_aSC111_dSC111_iSC111 @atom:Qa2_bQa2_aQa2_dQa2_iQa2 lj/gromacs/coul/gromacs 0.478012 6.200000 # SC111-Qa2 + pair_coeff @atom:SC111_bSC111_aSC111_dSC111_iSC111 @atom:SC11_bSC11_aSC11_dSC11_iSC11 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC111-SC11 + pair_coeff @atom:SC111_bSC111_aSC111_dSC111_iSC111 @atom:SC110_bSC110_aSC110_dSC110_iSC110 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC111-SC110 + pair_coeff @atom:SC112_bSC112_aSC112_dSC112_iSC112 @atom:BP4_bBP4_aBP4_dBP4_iBP4 lj/gromacs/coul/gromacs 0.478012 4.700000 # SC112-BP4 + pair_coeff @atom:SC112_bSC112_aSC112_dSC112_iSC112 @atom:C1_bC1_aC1_dC1_iC1 lj/gromacs/coul/gromacs 0.836521 4.700000 # SC112-C1 + pair_coeff @atom:SC112_bSC112_aSC112_dSC112_iSC112 @atom:C2_bC2_aC2_dC2_iC2 lj/gromacs/coul/gromacs 0.836521 4.700000 # SC112-C2 + pair_coeff @atom:SC112_bSC112_aSC112_dSC112_iSC112 @atom:C3_bC3_aC3_dC3_iC3 lj/gromacs/coul/gromacs 0.836521 4.700000 # SC112-C3 + pair_coeff @atom:SC112_bSC112_aSC112_dSC112_iSC112 @atom:C4_bC4_aC4_dC4_iC4 lj/gromacs/coul/gromacs 0.740919 4.700000 # SC112-C4 + pair_coeff @atom:SC112_bSC112_aSC112_dSC112_iSC112 @atom:C5_bC5_aC5_dC5_iC5 lj/gromacs/coul/gromacs 0.740919 4.700000 # SC112-C5 + pair_coeff @atom:SC112_bSC112_aSC112_dSC112_iSC112 @atom:N0_bN0_aN0_dN0_iN0 lj/gromacs/coul/gromacs 0.645316 4.700000 # SC112-N0 + pair_coeff @atom:SC112_bSC112_aSC112_dSC112_iSC112 @atom:Na_bNa_aNa_dNa_iNa lj/gromacs/coul/gromacs 0.645316 4.700000 # SC112-Na + pair_coeff @atom:SC112_bSC112_aSC112_dSC112_iSC112 @atom:Nd_bNd_aNd_dNd_iNd lj/gromacs/coul/gromacs 0.645316 4.700000 # SC112-Nd + pair_coeff @atom:SC112_bSC112_aSC112_dSC112_iSC112 @atom:Nda_bNda_aNda_dNda_iNda lj/gromacs/coul/gromacs 0.645316 4.700000 # SC112-Nda + pair_coeff @atom:SC112_bSC112_aSC112_dSC112_iSC112 @atom:P1_bP1_aP1_dP1_iP1 lj/gromacs/coul/gromacs 0.645316 4.700000 # SC112-P1 + pair_coeff @atom:SC112_bSC112_aSC112_dSC112_iSC112 @atom:P2_bP2_aP2_dP2_iP2 lj/gromacs/coul/gromacs 0.549714 4.700000 # SC112-P2 + pair_coeff @atom:SC112_bSC112_aSC112_dSC112_iSC112 @atom:P3_bP3_aP3_dP3_iP3 lj/gromacs/coul/gromacs 0.549714 4.700000 # SC112-P3 + pair_coeff @atom:SC112_bSC112_aSC112_dSC112_iSC112 @atom:P4_bP4_aP4_dP4_iP4 lj/gromacs/coul/gromacs 0.478012 4.700000 # SC112-P4 + pair_coeff @atom:SC112_bSC112_aSC112_dSC112_iSC112 @atom:P5_bP5_aP5_dP5_iP5 lj/gromacs/coul/gromacs 0.478012 4.700000 # SC112-P5 + pair_coeff @atom:SC112_bSC112_aSC112_dSC112_iSC112 @atom:Q0_bQ0_aQ0_dQ0_iQ0 lj/gromacs/coul/gromacs 0.478012 6.200000 # SC112-Q0 + pair_coeff @atom:SC112_bSC112_aSC112_dSC112_iSC112 @atom:Qa_bQa_aQa_dQa_iQa lj/gromacs/coul/gromacs 0.478012 6.200000 # SC112-Qa + pair_coeff @atom:SC112_bSC112_aSC112_dSC112_iSC112 @atom:Qd_bQd_aQd_dQd_iQd lj/gromacs/coul/gromacs 0.478012 6.200000 # SC112-Qd + pair_coeff @atom:SC112_bSC112_aSC112_dSC112_iSC112 @atom:Qda_bQda_aQda_dQda_iQda lj/gromacs/coul/gromacs 0.478012 6.200000 # SC112-Qda + pair_coeff @atom:SC112_bSC112_aSC112_dSC112_iSC112 @atom:SC112_bSC112_aSC112_dSC112_iSC112 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC112-SC112 + pair_coeff @atom:SC112_bSC112_aSC112_dSC112_iSC112 @atom:SC1_bSC1_aSC1_dSC1_iSC1 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC112-SC1 + pair_coeff @atom:SC112_bSC112_aSC112_dSC112_iSC112 @atom:SC2_bSC2_aSC2_dSC2_iSC2 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC112-SC2 + pair_coeff @atom:SC112_bSC112_aSC112_dSC112_iSC112 @atom:SC3_bSC3_aSC3_dSC3_iSC3 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC112-SC3 + pair_coeff @atom:SC112_bSC112_aSC112_dSC112_iSC112 @atom:SC4_bSC4_aSC4_dSC4_iSC4 lj/gromacs/coul/gromacs 0.555689 4.300000 # SC112-SC4 + pair_coeff @atom:SC112_bSC112_aSC112_dSC112_iSC112 @atom:SC5_bSC5_aSC5_dSC5_iSC5 lj/gromacs/coul/gromacs 0.555689 4.300000 # SC112-SC5 + pair_coeff @atom:SC112_bSC112_aSC112_dSC112_iSC112 @atom:SN0_bSN0_aSN0_dSN0_iSN0 lj/gromacs/coul/gromacs 0.483987 4.300000 # SC112-SN0 + pair_coeff @atom:SC112_bSC112_aSC112_dSC112_iSC112 @atom:SNa_bSNa_aSNa_dSNa_iSNa lj/gromacs/coul/gromacs 0.483987 4.300000 # SC112-SNa + pair_coeff @atom:SC112_bSC112_aSC112_dSC112_iSC112 @atom:SNd_bSNd_aSNd_dSNd_iSNd lj/gromacs/coul/gromacs 0.483987 4.300000 # SC112-SNd + pair_coeff @atom:SC112_bSC112_aSC112_dSC112_iSC112 @atom:SNda_bSNda_aSNda_dSNda_iSNda lj/gromacs/coul/gromacs 0.483987 4.300000 # SC112-SNda + pair_coeff @atom:SC112_bSC112_aSC112_dSC112_iSC112 @atom:SP1_bSP1_aSP1_dSP1_iSP1 lj/gromacs/coul/gromacs 0.483987 4.300000 # SC112-SP1 + pair_coeff @atom:SC112_bSC112_aSC112_dSC112_iSC112 @atom:SP2_bSP2_aSP2_dSP2_iSP2 lj/gromacs/coul/gromacs 0.412285 4.300000 # SC112-SP2 + pair_coeff @atom:SC112_bSC112_aSC112_dSC112_iSC112 @atom:SP3_bSP3_aSP3_dSP3_iSP3 lj/gromacs/coul/gromacs 0.412285 4.300000 # SC112-SP3 + pair_coeff @atom:SC112_bSC112_aSC112_dSC112_iSC112 @atom:SP4_bSP4_aSP4_dSP4_iSP4 lj/gromacs/coul/gromacs 0.358509 4.300000 # SC112-SP4 + pair_coeff @atom:SC112_bSC112_aSC112_dSC112_iSC112 @atom:SP5_bSP5_aSP5_dSP5_iSP5 lj/gromacs/coul/gromacs 0.358509 4.300000 # SC112-SP5 + pair_coeff @atom:SC112_bSC112_aSC112_dSC112_iSC112 @atom:SQ0_bSQ0_aSQ0_dSQ0_iSQ0 lj/gromacs/coul/gromacs 0.478012 6.200000 # SC112-SQ0 + pair_coeff @atom:SC112_bSC112_aSC112_dSC112_iSC112 @atom:SQa_bSQa_aSQa_dSQa_iSQa lj/gromacs/coul/gromacs 0.478012 6.200000 # SC112-SQa + pair_coeff @atom:SC112_bSC112_aSC112_dSC112_iSC112 @atom:SQd_bSQd_aSQd_dSQd_iSQd lj/gromacs/coul/gromacs 0.478012 6.200000 # SC112-SQd + pair_coeff @atom:SC112_bSC112_aSC112_dSC112_iSC112 @atom:SQda_bSQda_aSQda_dSQda_iSQda lj/gromacs/coul/gromacs 0.478012 6.200000 # SC112-SQda + pair_coeff @atom:SC112_bSC112_aSC112_dSC112_iSC112 @atom:C41_bC4_aC41_dC41_iC41 lj/gromacs/coul/gromacs 0.740919 4.700000 # SC112-C41 + pair_coeff @atom:SC112_bSC112_aSC112_dSC112_iSC112 @atom:C42_bC4_aC42_dC42_iC42 lj/gromacs/coul/gromacs 0.740919 4.700000 # SC112-C42 + pair_coeff @atom:SC112_bSC112_aSC112_dSC112_iSC112 @atom:Na1_bNa1_aNa1_dNa1_iNa1 lj/gromacs/coul/gromacs 0.645316 4.700000 # SC112-Na1 + pair_coeff @atom:SC112_bSC112_aSC112_dSC112_iSC112 @atom:Na2_bNa2_aNa2_dNa2_iNa2 lj/gromacs/coul/gromacs 0.645316 4.700000 # SC112-Na2 + pair_coeff @atom:SC112_bSC112_aSC112_dSC112_iSC112 @atom:Qa1_bQa1_aQa1_dQa1_iQa1 lj/gromacs/coul/gromacs 0.478012 6.200000 # SC112-Qa1 + pair_coeff @atom:SC112_bSC112_aSC112_dSC112_iSC112 @atom:Qa2_bQa2_aQa2_dQa2_iQa2 lj/gromacs/coul/gromacs 0.478012 6.200000 # SC112-Qa2 + pair_coeff @atom:SC112_bSC112_aSC112_dSC112_iSC112 @atom:SC11_bSC11_aSC11_dSC11_iSC11 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC112-SC11 + pair_coeff @atom:SC112_bSC112_aSC112_dSC112_iSC112 @atom:SC110_bSC110_aSC110_dSC110_iSC110 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC112-SC110 + pair_coeff @atom:SC112_bSC112_aSC112_dSC112_iSC112 @atom:SC111_bSC111_aSC111_dSC111_iSC111 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC112-SC111 + pair_coeff @atom:SC12_bSC12_aSC12_dSC12_iSC12 @atom:BP4_bBP4_aBP4_dBP4_iBP4 lj/gromacs/coul/gromacs 0.478012 4.700000 # SC12-BP4 + pair_coeff @atom:SC12_bSC12_aSC12_dSC12_iSC12 @atom:C1_bC1_aC1_dC1_iC1 lj/gromacs/coul/gromacs 0.836521 4.700000 # SC12-C1 + pair_coeff @atom:SC12_bSC12_aSC12_dSC12_iSC12 @atom:C2_bC2_aC2_dC2_iC2 lj/gromacs/coul/gromacs 0.836521 4.700000 # SC12-C2 + pair_coeff @atom:SC12_bSC12_aSC12_dSC12_iSC12 @atom:C3_bC3_aC3_dC3_iC3 lj/gromacs/coul/gromacs 0.836521 4.700000 # SC12-C3 + pair_coeff @atom:SC12_bSC12_aSC12_dSC12_iSC12 @atom:C4_bC4_aC4_dC4_iC4 lj/gromacs/coul/gromacs 0.740919 4.700000 # SC12-C4 + pair_coeff @atom:SC12_bSC12_aSC12_dSC12_iSC12 @atom:C5_bC5_aC5_dC5_iC5 lj/gromacs/coul/gromacs 0.740919 4.700000 # SC12-C5 + pair_coeff @atom:SC12_bSC12_aSC12_dSC12_iSC12 @atom:N0_bN0_aN0_dN0_iN0 lj/gromacs/coul/gromacs 0.645316 4.700000 # SC12-N0 + pair_coeff @atom:SC12_bSC12_aSC12_dSC12_iSC12 @atom:Na_bNa_aNa_dNa_iNa lj/gromacs/coul/gromacs 0.645316 4.700000 # SC12-Na + pair_coeff @atom:SC12_bSC12_aSC12_dSC12_iSC12 @atom:Nd_bNd_aNd_dNd_iNd lj/gromacs/coul/gromacs 0.645316 4.700000 # SC12-Nd + pair_coeff @atom:SC12_bSC12_aSC12_dSC12_iSC12 @atom:Nda_bNda_aNda_dNda_iNda lj/gromacs/coul/gromacs 0.645316 4.700000 # SC12-Nda + pair_coeff @atom:SC12_bSC12_aSC12_dSC12_iSC12 @atom:P1_bP1_aP1_dP1_iP1 lj/gromacs/coul/gromacs 0.645316 4.700000 # SC12-P1 + pair_coeff @atom:SC12_bSC12_aSC12_dSC12_iSC12 @atom:P2_bP2_aP2_dP2_iP2 lj/gromacs/coul/gromacs 0.549714 4.700000 # SC12-P2 + pair_coeff @atom:SC12_bSC12_aSC12_dSC12_iSC12 @atom:P3_bP3_aP3_dP3_iP3 lj/gromacs/coul/gromacs 0.549714 4.700000 # SC12-P3 + pair_coeff @atom:SC12_bSC12_aSC12_dSC12_iSC12 @atom:P4_bP4_aP4_dP4_iP4 lj/gromacs/coul/gromacs 0.478012 4.700000 # SC12-P4 + pair_coeff @atom:SC12_bSC12_aSC12_dSC12_iSC12 @atom:P5_bP5_aP5_dP5_iP5 lj/gromacs/coul/gromacs 0.478012 4.700000 # SC12-P5 + pair_coeff @atom:SC12_bSC12_aSC12_dSC12_iSC12 @atom:Q0_bQ0_aQ0_dQ0_iQ0 lj/gromacs/coul/gromacs 0.478012 6.200000 # SC12-Q0 + pair_coeff @atom:SC12_bSC12_aSC12_dSC12_iSC12 @atom:Qa_bQa_aQa_dQa_iQa lj/gromacs/coul/gromacs 0.478012 6.200000 # SC12-Qa + pair_coeff @atom:SC12_bSC12_aSC12_dSC12_iSC12 @atom:Qd_bQd_aQd_dQd_iQd lj/gromacs/coul/gromacs 0.478012 6.200000 # SC12-Qd + pair_coeff @atom:SC12_bSC12_aSC12_dSC12_iSC12 @atom:Qda_bQda_aQda_dQda_iQda lj/gromacs/coul/gromacs 0.478012 6.200000 # SC12-Qda + pair_coeff @atom:SC12_bSC12_aSC12_dSC12_iSC12 @atom:SC12_bSC12_aSC12_dSC12_iSC12 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC12-SC12 + pair_coeff @atom:SC12_bSC12_aSC12_dSC12_iSC12 @atom:SC1_bSC1_aSC1_dSC1_iSC1 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC12-SC1 + pair_coeff @atom:SC12_bSC12_aSC12_dSC12_iSC12 @atom:SC2_bSC2_aSC2_dSC2_iSC2 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC12-SC2 + pair_coeff @atom:SC12_bSC12_aSC12_dSC12_iSC12 @atom:SC3_bSC3_aSC3_dSC3_iSC3 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC12-SC3 + pair_coeff @atom:SC12_bSC12_aSC12_dSC12_iSC12 @atom:SC4_bSC4_aSC4_dSC4_iSC4 lj/gromacs/coul/gromacs 0.555689 4.300000 # SC12-SC4 + pair_coeff @atom:SC12_bSC12_aSC12_dSC12_iSC12 @atom:SC5_bSC5_aSC5_dSC5_iSC5 lj/gromacs/coul/gromacs 0.555689 4.300000 # SC12-SC5 + pair_coeff @atom:SC12_bSC12_aSC12_dSC12_iSC12 @atom:SN0_bSN0_aSN0_dSN0_iSN0 lj/gromacs/coul/gromacs 0.483987 4.300000 # SC12-SN0 + pair_coeff @atom:SC12_bSC12_aSC12_dSC12_iSC12 @atom:SNa_bSNa_aSNa_dSNa_iSNa lj/gromacs/coul/gromacs 0.483987 4.300000 # SC12-SNa + pair_coeff @atom:SC12_bSC12_aSC12_dSC12_iSC12 @atom:SNd_bSNd_aSNd_dSNd_iSNd lj/gromacs/coul/gromacs 0.483987 4.300000 # SC12-SNd + pair_coeff @atom:SC12_bSC12_aSC12_dSC12_iSC12 @atom:SNda_bSNda_aSNda_dSNda_iSNda lj/gromacs/coul/gromacs 0.483987 4.300000 # SC12-SNda + pair_coeff @atom:SC12_bSC12_aSC12_dSC12_iSC12 @atom:SP1_bSP1_aSP1_dSP1_iSP1 lj/gromacs/coul/gromacs 0.483987 4.300000 # SC12-SP1 + pair_coeff @atom:SC12_bSC12_aSC12_dSC12_iSC12 @atom:SP2_bSP2_aSP2_dSP2_iSP2 lj/gromacs/coul/gromacs 0.412285 4.300000 # SC12-SP2 + pair_coeff @atom:SC12_bSC12_aSC12_dSC12_iSC12 @atom:SP3_bSP3_aSP3_dSP3_iSP3 lj/gromacs/coul/gromacs 0.412285 4.300000 # SC12-SP3 + pair_coeff @atom:SC12_bSC12_aSC12_dSC12_iSC12 @atom:SP4_bSP4_aSP4_dSP4_iSP4 lj/gromacs/coul/gromacs 0.358509 4.300000 # SC12-SP4 + pair_coeff @atom:SC12_bSC12_aSC12_dSC12_iSC12 @atom:SP5_bSP5_aSP5_dSP5_iSP5 lj/gromacs/coul/gromacs 0.358509 4.300000 # SC12-SP5 + pair_coeff @atom:SC12_bSC12_aSC12_dSC12_iSC12 @atom:SQ0_bSQ0_aSQ0_dSQ0_iSQ0 lj/gromacs/coul/gromacs 0.478012 6.200000 # SC12-SQ0 + pair_coeff @atom:SC12_bSC12_aSC12_dSC12_iSC12 @atom:SQa_bSQa_aSQa_dSQa_iSQa lj/gromacs/coul/gromacs 0.478012 6.200000 # SC12-SQa + pair_coeff @atom:SC12_bSC12_aSC12_dSC12_iSC12 @atom:SQd_bSQd_aSQd_dSQd_iSQd lj/gromacs/coul/gromacs 0.478012 6.200000 # SC12-SQd + pair_coeff @atom:SC12_bSC12_aSC12_dSC12_iSC12 @atom:SQda_bSQda_aSQda_dSQda_iSQda lj/gromacs/coul/gromacs 0.478012 6.200000 # SC12-SQda + pair_coeff @atom:SC12_bSC12_aSC12_dSC12_iSC12 @atom:C41_bC4_aC41_dC41_iC41 lj/gromacs/coul/gromacs 0.740919 4.700000 # SC12-C41 + pair_coeff @atom:SC12_bSC12_aSC12_dSC12_iSC12 @atom:C42_bC4_aC42_dC42_iC42 lj/gromacs/coul/gromacs 0.740919 4.700000 # SC12-C42 + pair_coeff @atom:SC12_bSC12_aSC12_dSC12_iSC12 @atom:Na1_bNa1_aNa1_dNa1_iNa1 lj/gromacs/coul/gromacs 0.645316 4.700000 # SC12-Na1 + pair_coeff @atom:SC12_bSC12_aSC12_dSC12_iSC12 @atom:Na2_bNa2_aNa2_dNa2_iNa2 lj/gromacs/coul/gromacs 0.645316 4.700000 # SC12-Na2 + pair_coeff @atom:SC12_bSC12_aSC12_dSC12_iSC12 @atom:Qa1_bQa1_aQa1_dQa1_iQa1 lj/gromacs/coul/gromacs 0.478012 6.200000 # SC12-Qa1 + pair_coeff @atom:SC12_bSC12_aSC12_dSC12_iSC12 @atom:Qa2_bQa2_aQa2_dQa2_iQa2 lj/gromacs/coul/gromacs 0.478012 6.200000 # SC12-Qa2 + pair_coeff @atom:SC12_bSC12_aSC12_dSC12_iSC12 @atom:SC11_bSC11_aSC11_dSC11_iSC11 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC12-SC11 + pair_coeff @atom:SC12_bSC12_aSC12_dSC12_iSC12 @atom:SC110_bSC110_aSC110_dSC110_iSC110 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC12-SC110 + pair_coeff @atom:SC12_bSC12_aSC12_dSC12_iSC12 @atom:SC111_bSC111_aSC111_dSC111_iSC111 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC12-SC111 + pair_coeff @atom:SC12_bSC12_aSC12_dSC12_iSC12 @atom:SC112_bSC112_aSC112_dSC112_iSC112 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC12-SC112 + pair_coeff @atom:SC13_bSC13_aSC13_dSC13_iSC13 @atom:BP4_bBP4_aBP4_dBP4_iBP4 lj/gromacs/coul/gromacs 0.478012 4.700000 # SC13-BP4 + pair_coeff @atom:SC13_bSC13_aSC13_dSC13_iSC13 @atom:C1_bC1_aC1_dC1_iC1 lj/gromacs/coul/gromacs 0.836521 4.700000 # SC13-C1 + pair_coeff @atom:SC13_bSC13_aSC13_dSC13_iSC13 @atom:C2_bC2_aC2_dC2_iC2 lj/gromacs/coul/gromacs 0.836521 4.700000 # SC13-C2 + pair_coeff @atom:SC13_bSC13_aSC13_dSC13_iSC13 @atom:C3_bC3_aC3_dC3_iC3 lj/gromacs/coul/gromacs 0.836521 4.700000 # SC13-C3 + pair_coeff @atom:SC13_bSC13_aSC13_dSC13_iSC13 @atom:C4_bC4_aC4_dC4_iC4 lj/gromacs/coul/gromacs 0.740919 4.700000 # SC13-C4 + pair_coeff @atom:SC13_bSC13_aSC13_dSC13_iSC13 @atom:C5_bC5_aC5_dC5_iC5 lj/gromacs/coul/gromacs 0.740919 4.700000 # SC13-C5 + pair_coeff @atom:SC13_bSC13_aSC13_dSC13_iSC13 @atom:N0_bN0_aN0_dN0_iN0 lj/gromacs/coul/gromacs 0.645316 4.700000 # SC13-N0 + pair_coeff @atom:SC13_bSC13_aSC13_dSC13_iSC13 @atom:Na_bNa_aNa_dNa_iNa lj/gromacs/coul/gromacs 0.645316 4.700000 # SC13-Na + pair_coeff @atom:SC13_bSC13_aSC13_dSC13_iSC13 @atom:Nd_bNd_aNd_dNd_iNd lj/gromacs/coul/gromacs 0.645316 4.700000 # SC13-Nd + pair_coeff @atom:SC13_bSC13_aSC13_dSC13_iSC13 @atom:Nda_bNda_aNda_dNda_iNda lj/gromacs/coul/gromacs 0.645316 4.700000 # SC13-Nda + pair_coeff @atom:SC13_bSC13_aSC13_dSC13_iSC13 @atom:P1_bP1_aP1_dP1_iP1 lj/gromacs/coul/gromacs 0.645316 4.700000 # SC13-P1 + pair_coeff @atom:SC13_bSC13_aSC13_dSC13_iSC13 @atom:P2_bP2_aP2_dP2_iP2 lj/gromacs/coul/gromacs 0.549714 4.700000 # SC13-P2 + pair_coeff @atom:SC13_bSC13_aSC13_dSC13_iSC13 @atom:P3_bP3_aP3_dP3_iP3 lj/gromacs/coul/gromacs 0.549714 4.700000 # SC13-P3 + pair_coeff @atom:SC13_bSC13_aSC13_dSC13_iSC13 @atom:P4_bP4_aP4_dP4_iP4 lj/gromacs/coul/gromacs 0.478012 4.700000 # SC13-P4 + pair_coeff @atom:SC13_bSC13_aSC13_dSC13_iSC13 @atom:P5_bP5_aP5_dP5_iP5 lj/gromacs/coul/gromacs 0.478012 4.700000 # SC13-P5 + pair_coeff @atom:SC13_bSC13_aSC13_dSC13_iSC13 @atom:Q0_bQ0_aQ0_dQ0_iQ0 lj/gromacs/coul/gromacs 0.478012 6.200000 # SC13-Q0 + pair_coeff @atom:SC13_bSC13_aSC13_dSC13_iSC13 @atom:Qa_bQa_aQa_dQa_iQa lj/gromacs/coul/gromacs 0.478012 6.200000 # SC13-Qa + pair_coeff @atom:SC13_bSC13_aSC13_dSC13_iSC13 @atom:Qd_bQd_aQd_dQd_iQd lj/gromacs/coul/gromacs 0.478012 6.200000 # SC13-Qd + pair_coeff @atom:SC13_bSC13_aSC13_dSC13_iSC13 @atom:Qda_bQda_aQda_dQda_iQda lj/gromacs/coul/gromacs 0.478012 6.200000 # SC13-Qda + pair_coeff @atom:SC13_bSC13_aSC13_dSC13_iSC13 @atom:SC13_bSC13_aSC13_dSC13_iSC13 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC13-SC13 + pair_coeff @atom:SC13_bSC13_aSC13_dSC13_iSC13 @atom:SC1_bSC1_aSC1_dSC1_iSC1 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC13-SC1 + pair_coeff @atom:SC13_bSC13_aSC13_dSC13_iSC13 @atom:SC2_bSC2_aSC2_dSC2_iSC2 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC13-SC2 + pair_coeff @atom:SC13_bSC13_aSC13_dSC13_iSC13 @atom:SC3_bSC3_aSC3_dSC3_iSC3 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC13-SC3 + pair_coeff @atom:SC13_bSC13_aSC13_dSC13_iSC13 @atom:SC4_bSC4_aSC4_dSC4_iSC4 lj/gromacs/coul/gromacs 0.555689 4.300000 # SC13-SC4 + pair_coeff @atom:SC13_bSC13_aSC13_dSC13_iSC13 @atom:SC5_bSC5_aSC5_dSC5_iSC5 lj/gromacs/coul/gromacs 0.555689 4.300000 # SC13-SC5 + pair_coeff @atom:SC13_bSC13_aSC13_dSC13_iSC13 @atom:SN0_bSN0_aSN0_dSN0_iSN0 lj/gromacs/coul/gromacs 0.483987 4.300000 # SC13-SN0 + pair_coeff @atom:SC13_bSC13_aSC13_dSC13_iSC13 @atom:SNa_bSNa_aSNa_dSNa_iSNa lj/gromacs/coul/gromacs 0.483987 4.300000 # SC13-SNa + pair_coeff @atom:SC13_bSC13_aSC13_dSC13_iSC13 @atom:SNd_bSNd_aSNd_dSNd_iSNd lj/gromacs/coul/gromacs 0.483987 4.300000 # SC13-SNd + pair_coeff @atom:SC13_bSC13_aSC13_dSC13_iSC13 @atom:SNda_bSNda_aSNda_dSNda_iSNda lj/gromacs/coul/gromacs 0.483987 4.300000 # SC13-SNda + pair_coeff @atom:SC13_bSC13_aSC13_dSC13_iSC13 @atom:SP1_bSP1_aSP1_dSP1_iSP1 lj/gromacs/coul/gromacs 0.483987 4.300000 # SC13-SP1 + pair_coeff @atom:SC13_bSC13_aSC13_dSC13_iSC13 @atom:SP2_bSP2_aSP2_dSP2_iSP2 lj/gromacs/coul/gromacs 0.412285 4.300000 # SC13-SP2 + pair_coeff @atom:SC13_bSC13_aSC13_dSC13_iSC13 @atom:SP3_bSP3_aSP3_dSP3_iSP3 lj/gromacs/coul/gromacs 0.412285 4.300000 # SC13-SP3 + pair_coeff @atom:SC13_bSC13_aSC13_dSC13_iSC13 @atom:SP4_bSP4_aSP4_dSP4_iSP4 lj/gromacs/coul/gromacs 0.358509 4.300000 # SC13-SP4 + pair_coeff @atom:SC13_bSC13_aSC13_dSC13_iSC13 @atom:SP5_bSP5_aSP5_dSP5_iSP5 lj/gromacs/coul/gromacs 0.358509 4.300000 # SC13-SP5 + pair_coeff @atom:SC13_bSC13_aSC13_dSC13_iSC13 @atom:SQ0_bSQ0_aSQ0_dSQ0_iSQ0 lj/gromacs/coul/gromacs 0.478012 6.200000 # SC13-SQ0 + pair_coeff @atom:SC13_bSC13_aSC13_dSC13_iSC13 @atom:SQa_bSQa_aSQa_dSQa_iSQa lj/gromacs/coul/gromacs 0.478012 6.200000 # SC13-SQa + pair_coeff @atom:SC13_bSC13_aSC13_dSC13_iSC13 @atom:SQd_bSQd_aSQd_dSQd_iSQd lj/gromacs/coul/gromacs 0.478012 6.200000 # SC13-SQd + pair_coeff @atom:SC13_bSC13_aSC13_dSC13_iSC13 @atom:SQda_bSQda_aSQda_dSQda_iSQda lj/gromacs/coul/gromacs 0.478012 6.200000 # SC13-SQda + pair_coeff @atom:SC13_bSC13_aSC13_dSC13_iSC13 @atom:C41_bC4_aC41_dC41_iC41 lj/gromacs/coul/gromacs 0.740919 4.700000 # SC13-C41 + pair_coeff @atom:SC13_bSC13_aSC13_dSC13_iSC13 @atom:C42_bC4_aC42_dC42_iC42 lj/gromacs/coul/gromacs 0.740919 4.700000 # SC13-C42 + pair_coeff @atom:SC13_bSC13_aSC13_dSC13_iSC13 @atom:Na1_bNa1_aNa1_dNa1_iNa1 lj/gromacs/coul/gromacs 0.645316 4.700000 # SC13-Na1 + pair_coeff @atom:SC13_bSC13_aSC13_dSC13_iSC13 @atom:Na2_bNa2_aNa2_dNa2_iNa2 lj/gromacs/coul/gromacs 0.645316 4.700000 # SC13-Na2 + pair_coeff @atom:SC13_bSC13_aSC13_dSC13_iSC13 @atom:Qa1_bQa1_aQa1_dQa1_iQa1 lj/gromacs/coul/gromacs 0.478012 6.200000 # SC13-Qa1 + pair_coeff @atom:SC13_bSC13_aSC13_dSC13_iSC13 @atom:Qa2_bQa2_aQa2_dQa2_iQa2 lj/gromacs/coul/gromacs 0.478012 6.200000 # SC13-Qa2 + pair_coeff @atom:SC13_bSC13_aSC13_dSC13_iSC13 @atom:SC11_bSC11_aSC11_dSC11_iSC11 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC13-SC11 + pair_coeff @atom:SC13_bSC13_aSC13_dSC13_iSC13 @atom:SC110_bSC110_aSC110_dSC110_iSC110 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC13-SC110 + pair_coeff @atom:SC13_bSC13_aSC13_dSC13_iSC13 @atom:SC111_bSC111_aSC111_dSC111_iSC111 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC13-SC111 + pair_coeff @atom:SC13_bSC13_aSC13_dSC13_iSC13 @atom:SC112_bSC112_aSC112_dSC112_iSC112 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC13-SC112 + pair_coeff @atom:SC13_bSC13_aSC13_dSC13_iSC13 @atom:SC12_bSC12_aSC12_dSC12_iSC12 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC13-SC12 + pair_coeff @atom:SC14_bSC14_aSC14_dSC14_iSC14 @atom:BP4_bBP4_aBP4_dBP4_iBP4 lj/gromacs/coul/gromacs 0.478012 4.700000 # SC14-BP4 + pair_coeff @atom:SC14_bSC14_aSC14_dSC14_iSC14 @atom:C1_bC1_aC1_dC1_iC1 lj/gromacs/coul/gromacs 0.836521 4.700000 # SC14-C1 + pair_coeff @atom:SC14_bSC14_aSC14_dSC14_iSC14 @atom:C2_bC2_aC2_dC2_iC2 lj/gromacs/coul/gromacs 0.836521 4.700000 # SC14-C2 + pair_coeff @atom:SC14_bSC14_aSC14_dSC14_iSC14 @atom:C3_bC3_aC3_dC3_iC3 lj/gromacs/coul/gromacs 0.836521 4.700000 # SC14-C3 + pair_coeff @atom:SC14_bSC14_aSC14_dSC14_iSC14 @atom:C4_bC4_aC4_dC4_iC4 lj/gromacs/coul/gromacs 0.740919 4.700000 # SC14-C4 + pair_coeff @atom:SC14_bSC14_aSC14_dSC14_iSC14 @atom:C5_bC5_aC5_dC5_iC5 lj/gromacs/coul/gromacs 0.740919 4.700000 # SC14-C5 + pair_coeff @atom:SC14_bSC14_aSC14_dSC14_iSC14 @atom:N0_bN0_aN0_dN0_iN0 lj/gromacs/coul/gromacs 0.645316 4.700000 # SC14-N0 + pair_coeff @atom:SC14_bSC14_aSC14_dSC14_iSC14 @atom:Na_bNa_aNa_dNa_iNa lj/gromacs/coul/gromacs 0.645316 4.700000 # SC14-Na + pair_coeff @atom:SC14_bSC14_aSC14_dSC14_iSC14 @atom:Nd_bNd_aNd_dNd_iNd lj/gromacs/coul/gromacs 0.645316 4.700000 # SC14-Nd + pair_coeff @atom:SC14_bSC14_aSC14_dSC14_iSC14 @atom:Nda_bNda_aNda_dNda_iNda lj/gromacs/coul/gromacs 0.645316 4.700000 # SC14-Nda + pair_coeff @atom:SC14_bSC14_aSC14_dSC14_iSC14 @atom:P1_bP1_aP1_dP1_iP1 lj/gromacs/coul/gromacs 0.645316 4.700000 # SC14-P1 + pair_coeff @atom:SC14_bSC14_aSC14_dSC14_iSC14 @atom:P2_bP2_aP2_dP2_iP2 lj/gromacs/coul/gromacs 0.549714 4.700000 # SC14-P2 + pair_coeff @atom:SC14_bSC14_aSC14_dSC14_iSC14 @atom:P3_bP3_aP3_dP3_iP3 lj/gromacs/coul/gromacs 0.549714 4.700000 # SC14-P3 + pair_coeff @atom:SC14_bSC14_aSC14_dSC14_iSC14 @atom:P4_bP4_aP4_dP4_iP4 lj/gromacs/coul/gromacs 0.478012 4.700000 # SC14-P4 + pair_coeff @atom:SC14_bSC14_aSC14_dSC14_iSC14 @atom:P5_bP5_aP5_dP5_iP5 lj/gromacs/coul/gromacs 0.478012 4.700000 # SC14-P5 + pair_coeff @atom:SC14_bSC14_aSC14_dSC14_iSC14 @atom:Q0_bQ0_aQ0_dQ0_iQ0 lj/gromacs/coul/gromacs 0.478012 6.200000 # SC14-Q0 + pair_coeff @atom:SC14_bSC14_aSC14_dSC14_iSC14 @atom:Qa_bQa_aQa_dQa_iQa lj/gromacs/coul/gromacs 0.478012 6.200000 # SC14-Qa + pair_coeff @atom:SC14_bSC14_aSC14_dSC14_iSC14 @atom:Qd_bQd_aQd_dQd_iQd lj/gromacs/coul/gromacs 0.478012 6.200000 # SC14-Qd + pair_coeff @atom:SC14_bSC14_aSC14_dSC14_iSC14 @atom:Qda_bQda_aQda_dQda_iQda lj/gromacs/coul/gromacs 0.478012 6.200000 # SC14-Qda + pair_coeff @atom:SC14_bSC14_aSC14_dSC14_iSC14 @atom:SC14_bSC14_aSC14_dSC14_iSC14 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC14-SC14 + pair_coeff @atom:SC14_bSC14_aSC14_dSC14_iSC14 @atom:SC1_bSC1_aSC1_dSC1_iSC1 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC14-SC1 + pair_coeff @atom:SC14_bSC14_aSC14_dSC14_iSC14 @atom:SC2_bSC2_aSC2_dSC2_iSC2 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC14-SC2 + pair_coeff @atom:SC14_bSC14_aSC14_dSC14_iSC14 @atom:SC3_bSC3_aSC3_dSC3_iSC3 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC14-SC3 + pair_coeff @atom:SC14_bSC14_aSC14_dSC14_iSC14 @atom:SC4_bSC4_aSC4_dSC4_iSC4 lj/gromacs/coul/gromacs 0.555689 4.300000 # SC14-SC4 + pair_coeff @atom:SC14_bSC14_aSC14_dSC14_iSC14 @atom:SC5_bSC5_aSC5_dSC5_iSC5 lj/gromacs/coul/gromacs 0.555689 4.300000 # SC14-SC5 + pair_coeff @atom:SC14_bSC14_aSC14_dSC14_iSC14 @atom:SN0_bSN0_aSN0_dSN0_iSN0 lj/gromacs/coul/gromacs 0.483987 4.300000 # SC14-SN0 + pair_coeff @atom:SC14_bSC14_aSC14_dSC14_iSC14 @atom:SNa_bSNa_aSNa_dSNa_iSNa lj/gromacs/coul/gromacs 0.483987 4.300000 # SC14-SNa + pair_coeff @atom:SC14_bSC14_aSC14_dSC14_iSC14 @atom:SNd_bSNd_aSNd_dSNd_iSNd lj/gromacs/coul/gromacs 0.483987 4.300000 # SC14-SNd + pair_coeff @atom:SC14_bSC14_aSC14_dSC14_iSC14 @atom:SNda_bSNda_aSNda_dSNda_iSNda lj/gromacs/coul/gromacs 0.483987 4.300000 # SC14-SNda + pair_coeff @atom:SC14_bSC14_aSC14_dSC14_iSC14 @atom:SP1_bSP1_aSP1_dSP1_iSP1 lj/gromacs/coul/gromacs 0.483987 4.300000 # SC14-SP1 + pair_coeff @atom:SC14_bSC14_aSC14_dSC14_iSC14 @atom:SP2_bSP2_aSP2_dSP2_iSP2 lj/gromacs/coul/gromacs 0.412285 4.300000 # SC14-SP2 + pair_coeff @atom:SC14_bSC14_aSC14_dSC14_iSC14 @atom:SP3_bSP3_aSP3_dSP3_iSP3 lj/gromacs/coul/gromacs 0.412285 4.300000 # SC14-SP3 + pair_coeff @atom:SC14_bSC14_aSC14_dSC14_iSC14 @atom:SP4_bSP4_aSP4_dSP4_iSP4 lj/gromacs/coul/gromacs 0.358509 4.300000 # SC14-SP4 + pair_coeff @atom:SC14_bSC14_aSC14_dSC14_iSC14 @atom:SP5_bSP5_aSP5_dSP5_iSP5 lj/gromacs/coul/gromacs 0.358509 4.300000 # SC14-SP5 + pair_coeff @atom:SC14_bSC14_aSC14_dSC14_iSC14 @atom:SQ0_bSQ0_aSQ0_dSQ0_iSQ0 lj/gromacs/coul/gromacs 0.478012 6.200000 # SC14-SQ0 + pair_coeff @atom:SC14_bSC14_aSC14_dSC14_iSC14 @atom:SQa_bSQa_aSQa_dSQa_iSQa lj/gromacs/coul/gromacs 0.478012 6.200000 # SC14-SQa + pair_coeff @atom:SC14_bSC14_aSC14_dSC14_iSC14 @atom:SQd_bSQd_aSQd_dSQd_iSQd lj/gromacs/coul/gromacs 0.478012 6.200000 # SC14-SQd + pair_coeff @atom:SC14_bSC14_aSC14_dSC14_iSC14 @atom:SQda_bSQda_aSQda_dSQda_iSQda lj/gromacs/coul/gromacs 0.478012 6.200000 # SC14-SQda + pair_coeff @atom:SC14_bSC14_aSC14_dSC14_iSC14 @atom:C41_bC4_aC41_dC41_iC41 lj/gromacs/coul/gromacs 0.740919 4.700000 # SC14-C41 + pair_coeff @atom:SC14_bSC14_aSC14_dSC14_iSC14 @atom:C42_bC4_aC42_dC42_iC42 lj/gromacs/coul/gromacs 0.740919 4.700000 # SC14-C42 + pair_coeff @atom:SC14_bSC14_aSC14_dSC14_iSC14 @atom:Na1_bNa1_aNa1_dNa1_iNa1 lj/gromacs/coul/gromacs 0.645316 4.700000 # SC14-Na1 + pair_coeff @atom:SC14_bSC14_aSC14_dSC14_iSC14 @atom:Na2_bNa2_aNa2_dNa2_iNa2 lj/gromacs/coul/gromacs 0.645316 4.700000 # SC14-Na2 + pair_coeff @atom:SC14_bSC14_aSC14_dSC14_iSC14 @atom:Qa1_bQa1_aQa1_dQa1_iQa1 lj/gromacs/coul/gromacs 0.478012 6.200000 # SC14-Qa1 + pair_coeff @atom:SC14_bSC14_aSC14_dSC14_iSC14 @atom:Qa2_bQa2_aQa2_dQa2_iQa2 lj/gromacs/coul/gromacs 0.478012 6.200000 # SC14-Qa2 + pair_coeff @atom:SC14_bSC14_aSC14_dSC14_iSC14 @atom:SC11_bSC11_aSC11_dSC11_iSC11 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC14-SC11 + pair_coeff @atom:SC14_bSC14_aSC14_dSC14_iSC14 @atom:SC110_bSC110_aSC110_dSC110_iSC110 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC14-SC110 + pair_coeff @atom:SC14_bSC14_aSC14_dSC14_iSC14 @atom:SC111_bSC111_aSC111_dSC111_iSC111 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC14-SC111 + pair_coeff @atom:SC14_bSC14_aSC14_dSC14_iSC14 @atom:SC112_bSC112_aSC112_dSC112_iSC112 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC14-SC112 + pair_coeff @atom:SC14_bSC14_aSC14_dSC14_iSC14 @atom:SC12_bSC12_aSC12_dSC12_iSC12 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC14-SC12 + pair_coeff @atom:SC14_bSC14_aSC14_dSC14_iSC14 @atom:SC13_bSC13_aSC13_dSC13_iSC13 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC14-SC13 + pair_coeff @atom:SC15_bSC15_aSC15_dSC15_iSC15 @atom:BP4_bBP4_aBP4_dBP4_iBP4 lj/gromacs/coul/gromacs 0.478012 4.700000 # SC15-BP4 + pair_coeff @atom:SC15_bSC15_aSC15_dSC15_iSC15 @atom:C1_bC1_aC1_dC1_iC1 lj/gromacs/coul/gromacs 0.836521 4.700000 # SC15-C1 + pair_coeff @atom:SC15_bSC15_aSC15_dSC15_iSC15 @atom:C2_bC2_aC2_dC2_iC2 lj/gromacs/coul/gromacs 0.836521 4.700000 # SC15-C2 + pair_coeff @atom:SC15_bSC15_aSC15_dSC15_iSC15 @atom:C3_bC3_aC3_dC3_iC3 lj/gromacs/coul/gromacs 0.836521 4.700000 # SC15-C3 + pair_coeff @atom:SC15_bSC15_aSC15_dSC15_iSC15 @atom:C4_bC4_aC4_dC4_iC4 lj/gromacs/coul/gromacs 0.740919 4.700000 # SC15-C4 + pair_coeff @atom:SC15_bSC15_aSC15_dSC15_iSC15 @atom:C5_bC5_aC5_dC5_iC5 lj/gromacs/coul/gromacs 0.740919 4.700000 # SC15-C5 + pair_coeff @atom:SC15_bSC15_aSC15_dSC15_iSC15 @atom:N0_bN0_aN0_dN0_iN0 lj/gromacs/coul/gromacs 0.645316 4.700000 # SC15-N0 + pair_coeff @atom:SC15_bSC15_aSC15_dSC15_iSC15 @atom:Na_bNa_aNa_dNa_iNa lj/gromacs/coul/gromacs 0.645316 4.700000 # SC15-Na + pair_coeff @atom:SC15_bSC15_aSC15_dSC15_iSC15 @atom:Nd_bNd_aNd_dNd_iNd lj/gromacs/coul/gromacs 0.645316 4.700000 # SC15-Nd + pair_coeff @atom:SC15_bSC15_aSC15_dSC15_iSC15 @atom:Nda_bNda_aNda_dNda_iNda lj/gromacs/coul/gromacs 0.645316 4.700000 # SC15-Nda + pair_coeff @atom:SC15_bSC15_aSC15_dSC15_iSC15 @atom:P1_bP1_aP1_dP1_iP1 lj/gromacs/coul/gromacs 0.645316 4.700000 # SC15-P1 + pair_coeff @atom:SC15_bSC15_aSC15_dSC15_iSC15 @atom:P2_bP2_aP2_dP2_iP2 lj/gromacs/coul/gromacs 0.549714 4.700000 # SC15-P2 + pair_coeff @atom:SC15_bSC15_aSC15_dSC15_iSC15 @atom:P3_bP3_aP3_dP3_iP3 lj/gromacs/coul/gromacs 0.549714 4.700000 # SC15-P3 + pair_coeff @atom:SC15_bSC15_aSC15_dSC15_iSC15 @atom:P4_bP4_aP4_dP4_iP4 lj/gromacs/coul/gromacs 0.478012 4.700000 # SC15-P4 + pair_coeff @atom:SC15_bSC15_aSC15_dSC15_iSC15 @atom:P5_bP5_aP5_dP5_iP5 lj/gromacs/coul/gromacs 0.478012 4.700000 # SC15-P5 + pair_coeff @atom:SC15_bSC15_aSC15_dSC15_iSC15 @atom:Q0_bQ0_aQ0_dQ0_iQ0 lj/gromacs/coul/gromacs 0.478012 6.200000 # SC15-Q0 + pair_coeff @atom:SC15_bSC15_aSC15_dSC15_iSC15 @atom:Qa_bQa_aQa_dQa_iQa lj/gromacs/coul/gromacs 0.478012 6.200000 # SC15-Qa + pair_coeff @atom:SC15_bSC15_aSC15_dSC15_iSC15 @atom:Qd_bQd_aQd_dQd_iQd lj/gromacs/coul/gromacs 0.478012 6.200000 # SC15-Qd + pair_coeff @atom:SC15_bSC15_aSC15_dSC15_iSC15 @atom:Qda_bQda_aQda_dQda_iQda lj/gromacs/coul/gromacs 0.478012 6.200000 # SC15-Qda + pair_coeff @atom:SC15_bSC15_aSC15_dSC15_iSC15 @atom:SC15_bSC15_aSC15_dSC15_iSC15 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC15-SC15 + pair_coeff @atom:SC15_bSC15_aSC15_dSC15_iSC15 @atom:SC1_bSC1_aSC1_dSC1_iSC1 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC15-SC1 + pair_coeff @atom:SC15_bSC15_aSC15_dSC15_iSC15 @atom:SC2_bSC2_aSC2_dSC2_iSC2 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC15-SC2 + pair_coeff @atom:SC15_bSC15_aSC15_dSC15_iSC15 @atom:SC3_bSC3_aSC3_dSC3_iSC3 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC15-SC3 + pair_coeff @atom:SC15_bSC15_aSC15_dSC15_iSC15 @atom:SC4_bSC4_aSC4_dSC4_iSC4 lj/gromacs/coul/gromacs 0.555689 4.300000 # SC15-SC4 + pair_coeff @atom:SC15_bSC15_aSC15_dSC15_iSC15 @atom:SC5_bSC5_aSC5_dSC5_iSC5 lj/gromacs/coul/gromacs 0.555689 4.300000 # SC15-SC5 + pair_coeff @atom:SC15_bSC15_aSC15_dSC15_iSC15 @atom:SN0_bSN0_aSN0_dSN0_iSN0 lj/gromacs/coul/gromacs 0.483987 4.300000 # SC15-SN0 + pair_coeff @atom:SC15_bSC15_aSC15_dSC15_iSC15 @atom:SNa_bSNa_aSNa_dSNa_iSNa lj/gromacs/coul/gromacs 0.483987 4.300000 # SC15-SNa + pair_coeff @atom:SC15_bSC15_aSC15_dSC15_iSC15 @atom:SNd_bSNd_aSNd_dSNd_iSNd lj/gromacs/coul/gromacs 0.483987 4.300000 # SC15-SNd + pair_coeff @atom:SC15_bSC15_aSC15_dSC15_iSC15 @atom:SNda_bSNda_aSNda_dSNda_iSNda lj/gromacs/coul/gromacs 0.483987 4.300000 # SC15-SNda + pair_coeff @atom:SC15_bSC15_aSC15_dSC15_iSC15 @atom:SP1_bSP1_aSP1_dSP1_iSP1 lj/gromacs/coul/gromacs 0.483987 4.300000 # SC15-SP1 + pair_coeff @atom:SC15_bSC15_aSC15_dSC15_iSC15 @atom:SP2_bSP2_aSP2_dSP2_iSP2 lj/gromacs/coul/gromacs 0.412285 4.300000 # SC15-SP2 + pair_coeff @atom:SC15_bSC15_aSC15_dSC15_iSC15 @atom:SP3_bSP3_aSP3_dSP3_iSP3 lj/gromacs/coul/gromacs 0.412285 4.300000 # SC15-SP3 + pair_coeff @atom:SC15_bSC15_aSC15_dSC15_iSC15 @atom:SP4_bSP4_aSP4_dSP4_iSP4 lj/gromacs/coul/gromacs 0.358509 4.300000 # SC15-SP4 + pair_coeff @atom:SC15_bSC15_aSC15_dSC15_iSC15 @atom:SP5_bSP5_aSP5_dSP5_iSP5 lj/gromacs/coul/gromacs 0.358509 4.300000 # SC15-SP5 + pair_coeff @atom:SC15_bSC15_aSC15_dSC15_iSC15 @atom:SQ0_bSQ0_aSQ0_dSQ0_iSQ0 lj/gromacs/coul/gromacs 0.478012 6.200000 # SC15-SQ0 + pair_coeff @atom:SC15_bSC15_aSC15_dSC15_iSC15 @atom:SQa_bSQa_aSQa_dSQa_iSQa lj/gromacs/coul/gromacs 0.478012 6.200000 # SC15-SQa + pair_coeff @atom:SC15_bSC15_aSC15_dSC15_iSC15 @atom:SQd_bSQd_aSQd_dSQd_iSQd lj/gromacs/coul/gromacs 0.478012 6.200000 # SC15-SQd + pair_coeff @atom:SC15_bSC15_aSC15_dSC15_iSC15 @atom:SQda_bSQda_aSQda_dSQda_iSQda lj/gromacs/coul/gromacs 0.478012 6.200000 # SC15-SQda + pair_coeff @atom:SC15_bSC15_aSC15_dSC15_iSC15 @atom:C41_bC4_aC41_dC41_iC41 lj/gromacs/coul/gromacs 0.740919 4.700000 # SC15-C41 + pair_coeff @atom:SC15_bSC15_aSC15_dSC15_iSC15 @atom:C42_bC4_aC42_dC42_iC42 lj/gromacs/coul/gromacs 0.740919 4.700000 # SC15-C42 + pair_coeff @atom:SC15_bSC15_aSC15_dSC15_iSC15 @atom:Na1_bNa1_aNa1_dNa1_iNa1 lj/gromacs/coul/gromacs 0.645316 4.700000 # SC15-Na1 + pair_coeff @atom:SC15_bSC15_aSC15_dSC15_iSC15 @atom:Na2_bNa2_aNa2_dNa2_iNa2 lj/gromacs/coul/gromacs 0.645316 4.700000 # SC15-Na2 + pair_coeff @atom:SC15_bSC15_aSC15_dSC15_iSC15 @atom:Qa1_bQa1_aQa1_dQa1_iQa1 lj/gromacs/coul/gromacs 0.478012 6.200000 # SC15-Qa1 + pair_coeff @atom:SC15_bSC15_aSC15_dSC15_iSC15 @atom:Qa2_bQa2_aQa2_dQa2_iQa2 lj/gromacs/coul/gromacs 0.478012 6.200000 # SC15-Qa2 + pair_coeff @atom:SC15_bSC15_aSC15_dSC15_iSC15 @atom:SC11_bSC11_aSC11_dSC11_iSC11 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC15-SC11 + pair_coeff @atom:SC15_bSC15_aSC15_dSC15_iSC15 @atom:SC110_bSC110_aSC110_dSC110_iSC110 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC15-SC110 + pair_coeff @atom:SC15_bSC15_aSC15_dSC15_iSC15 @atom:SC111_bSC111_aSC111_dSC111_iSC111 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC15-SC111 + pair_coeff @atom:SC15_bSC15_aSC15_dSC15_iSC15 @atom:SC112_bSC112_aSC112_dSC112_iSC112 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC15-SC112 + pair_coeff @atom:SC15_bSC15_aSC15_dSC15_iSC15 @atom:SC12_bSC12_aSC12_dSC12_iSC12 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC15-SC12 + pair_coeff @atom:SC15_bSC15_aSC15_dSC15_iSC15 @atom:SC13_bSC13_aSC13_dSC13_iSC13 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC15-SC13 + pair_coeff @atom:SC15_bSC15_aSC15_dSC15_iSC15 @atom:SC14_bSC14_aSC14_dSC14_iSC14 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC15-SC14 + pair_coeff @atom:SC16_bSC16_aSC16_dSC16_iSC16 @atom:BP4_bBP4_aBP4_dBP4_iBP4 lj/gromacs/coul/gromacs 0.478012 4.700000 # SC16-BP4 + pair_coeff @atom:SC16_bSC16_aSC16_dSC16_iSC16 @atom:C1_bC1_aC1_dC1_iC1 lj/gromacs/coul/gromacs 0.836521 4.700000 # SC16-C1 + pair_coeff @atom:SC16_bSC16_aSC16_dSC16_iSC16 @atom:C2_bC2_aC2_dC2_iC2 lj/gromacs/coul/gromacs 0.836521 4.700000 # SC16-C2 + pair_coeff @atom:SC16_bSC16_aSC16_dSC16_iSC16 @atom:C3_bC3_aC3_dC3_iC3 lj/gromacs/coul/gromacs 0.836521 4.700000 # SC16-C3 + pair_coeff @atom:SC16_bSC16_aSC16_dSC16_iSC16 @atom:C4_bC4_aC4_dC4_iC4 lj/gromacs/coul/gromacs 0.740919 4.700000 # SC16-C4 + pair_coeff @atom:SC16_bSC16_aSC16_dSC16_iSC16 @atom:C5_bC5_aC5_dC5_iC5 lj/gromacs/coul/gromacs 0.740919 4.700000 # SC16-C5 + pair_coeff @atom:SC16_bSC16_aSC16_dSC16_iSC16 @atom:N0_bN0_aN0_dN0_iN0 lj/gromacs/coul/gromacs 0.645316 4.700000 # SC16-N0 + pair_coeff @atom:SC16_bSC16_aSC16_dSC16_iSC16 @atom:Na_bNa_aNa_dNa_iNa lj/gromacs/coul/gromacs 0.645316 4.700000 # SC16-Na + pair_coeff @atom:SC16_bSC16_aSC16_dSC16_iSC16 @atom:Nd_bNd_aNd_dNd_iNd lj/gromacs/coul/gromacs 0.645316 4.700000 # SC16-Nd + pair_coeff @atom:SC16_bSC16_aSC16_dSC16_iSC16 @atom:Nda_bNda_aNda_dNda_iNda lj/gromacs/coul/gromacs 0.645316 4.700000 # SC16-Nda + pair_coeff @atom:SC16_bSC16_aSC16_dSC16_iSC16 @atom:P1_bP1_aP1_dP1_iP1 lj/gromacs/coul/gromacs 0.645316 4.700000 # SC16-P1 + pair_coeff @atom:SC16_bSC16_aSC16_dSC16_iSC16 @atom:P2_bP2_aP2_dP2_iP2 lj/gromacs/coul/gromacs 0.549714 4.700000 # SC16-P2 + pair_coeff @atom:SC16_bSC16_aSC16_dSC16_iSC16 @atom:P3_bP3_aP3_dP3_iP3 lj/gromacs/coul/gromacs 0.549714 4.700000 # SC16-P3 + pair_coeff @atom:SC16_bSC16_aSC16_dSC16_iSC16 @atom:P4_bP4_aP4_dP4_iP4 lj/gromacs/coul/gromacs 0.478012 4.700000 # SC16-P4 + pair_coeff @atom:SC16_bSC16_aSC16_dSC16_iSC16 @atom:P5_bP5_aP5_dP5_iP5 lj/gromacs/coul/gromacs 0.478012 4.700000 # SC16-P5 + pair_coeff @atom:SC16_bSC16_aSC16_dSC16_iSC16 @atom:Q0_bQ0_aQ0_dQ0_iQ0 lj/gromacs/coul/gromacs 0.478012 6.200000 # SC16-Q0 + pair_coeff @atom:SC16_bSC16_aSC16_dSC16_iSC16 @atom:Qa_bQa_aQa_dQa_iQa lj/gromacs/coul/gromacs 0.478012 6.200000 # SC16-Qa + pair_coeff @atom:SC16_bSC16_aSC16_dSC16_iSC16 @atom:Qd_bQd_aQd_dQd_iQd lj/gromacs/coul/gromacs 0.478012 6.200000 # SC16-Qd + pair_coeff @atom:SC16_bSC16_aSC16_dSC16_iSC16 @atom:Qda_bQda_aQda_dQda_iQda lj/gromacs/coul/gromacs 0.478012 6.200000 # SC16-Qda + pair_coeff @atom:SC16_bSC16_aSC16_dSC16_iSC16 @atom:SC16_bSC16_aSC16_dSC16_iSC16 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC16-SC16 + pair_coeff @atom:SC16_bSC16_aSC16_dSC16_iSC16 @atom:SC1_bSC1_aSC1_dSC1_iSC1 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC16-SC1 + pair_coeff @atom:SC16_bSC16_aSC16_dSC16_iSC16 @atom:SC2_bSC2_aSC2_dSC2_iSC2 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC16-SC2 + pair_coeff @atom:SC16_bSC16_aSC16_dSC16_iSC16 @atom:SC3_bSC3_aSC3_dSC3_iSC3 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC16-SC3 + pair_coeff @atom:SC16_bSC16_aSC16_dSC16_iSC16 @atom:SC4_bSC4_aSC4_dSC4_iSC4 lj/gromacs/coul/gromacs 0.555689 4.300000 # SC16-SC4 + pair_coeff @atom:SC16_bSC16_aSC16_dSC16_iSC16 @atom:SC5_bSC5_aSC5_dSC5_iSC5 lj/gromacs/coul/gromacs 0.555689 4.300000 # SC16-SC5 + pair_coeff @atom:SC16_bSC16_aSC16_dSC16_iSC16 @atom:SN0_bSN0_aSN0_dSN0_iSN0 lj/gromacs/coul/gromacs 0.483987 4.300000 # SC16-SN0 + pair_coeff @atom:SC16_bSC16_aSC16_dSC16_iSC16 @atom:SNa_bSNa_aSNa_dSNa_iSNa lj/gromacs/coul/gromacs 0.483987 4.300000 # SC16-SNa + pair_coeff @atom:SC16_bSC16_aSC16_dSC16_iSC16 @atom:SNd_bSNd_aSNd_dSNd_iSNd lj/gromacs/coul/gromacs 0.483987 4.300000 # SC16-SNd + pair_coeff @atom:SC16_bSC16_aSC16_dSC16_iSC16 @atom:SNda_bSNda_aSNda_dSNda_iSNda lj/gromacs/coul/gromacs 0.483987 4.300000 # SC16-SNda + pair_coeff @atom:SC16_bSC16_aSC16_dSC16_iSC16 @atom:SP1_bSP1_aSP1_dSP1_iSP1 lj/gromacs/coul/gromacs 0.483987 4.300000 # SC16-SP1 + pair_coeff @atom:SC16_bSC16_aSC16_dSC16_iSC16 @atom:SP2_bSP2_aSP2_dSP2_iSP2 lj/gromacs/coul/gromacs 0.412285 4.300000 # SC16-SP2 + pair_coeff @atom:SC16_bSC16_aSC16_dSC16_iSC16 @atom:SP3_bSP3_aSP3_dSP3_iSP3 lj/gromacs/coul/gromacs 0.412285 4.300000 # SC16-SP3 + pair_coeff @atom:SC16_bSC16_aSC16_dSC16_iSC16 @atom:SP4_bSP4_aSP4_dSP4_iSP4 lj/gromacs/coul/gromacs 0.358509 4.300000 # SC16-SP4 + pair_coeff @atom:SC16_bSC16_aSC16_dSC16_iSC16 @atom:SP5_bSP5_aSP5_dSP5_iSP5 lj/gromacs/coul/gromacs 0.358509 4.300000 # SC16-SP5 + pair_coeff @atom:SC16_bSC16_aSC16_dSC16_iSC16 @atom:SQ0_bSQ0_aSQ0_dSQ0_iSQ0 lj/gromacs/coul/gromacs 0.478012 6.200000 # SC16-SQ0 + pair_coeff @atom:SC16_bSC16_aSC16_dSC16_iSC16 @atom:SQa_bSQa_aSQa_dSQa_iSQa lj/gromacs/coul/gromacs 0.478012 6.200000 # SC16-SQa + pair_coeff @atom:SC16_bSC16_aSC16_dSC16_iSC16 @atom:SQd_bSQd_aSQd_dSQd_iSQd lj/gromacs/coul/gromacs 0.478012 6.200000 # SC16-SQd + pair_coeff @atom:SC16_bSC16_aSC16_dSC16_iSC16 @atom:SQda_bSQda_aSQda_dSQda_iSQda lj/gromacs/coul/gromacs 0.478012 6.200000 # SC16-SQda + pair_coeff @atom:SC16_bSC16_aSC16_dSC16_iSC16 @atom:C41_bC4_aC41_dC41_iC41 lj/gromacs/coul/gromacs 0.740919 4.700000 # SC16-C41 + pair_coeff @atom:SC16_bSC16_aSC16_dSC16_iSC16 @atom:C42_bC4_aC42_dC42_iC42 lj/gromacs/coul/gromacs 0.740919 4.700000 # SC16-C42 + pair_coeff @atom:SC16_bSC16_aSC16_dSC16_iSC16 @atom:Na1_bNa1_aNa1_dNa1_iNa1 lj/gromacs/coul/gromacs 0.645316 4.700000 # SC16-Na1 + pair_coeff @atom:SC16_bSC16_aSC16_dSC16_iSC16 @atom:Na2_bNa2_aNa2_dNa2_iNa2 lj/gromacs/coul/gromacs 0.645316 4.700000 # SC16-Na2 + pair_coeff @atom:SC16_bSC16_aSC16_dSC16_iSC16 @atom:Qa1_bQa1_aQa1_dQa1_iQa1 lj/gromacs/coul/gromacs 0.478012 6.200000 # SC16-Qa1 + pair_coeff @atom:SC16_bSC16_aSC16_dSC16_iSC16 @atom:Qa2_bQa2_aQa2_dQa2_iQa2 lj/gromacs/coul/gromacs 0.478012 6.200000 # SC16-Qa2 + pair_coeff @atom:SC16_bSC16_aSC16_dSC16_iSC16 @atom:SC11_bSC11_aSC11_dSC11_iSC11 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC16-SC11 + pair_coeff @atom:SC16_bSC16_aSC16_dSC16_iSC16 @atom:SC110_bSC110_aSC110_dSC110_iSC110 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC16-SC110 + pair_coeff @atom:SC16_bSC16_aSC16_dSC16_iSC16 @atom:SC111_bSC111_aSC111_dSC111_iSC111 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC16-SC111 + pair_coeff @atom:SC16_bSC16_aSC16_dSC16_iSC16 @atom:SC112_bSC112_aSC112_dSC112_iSC112 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC16-SC112 + pair_coeff @atom:SC16_bSC16_aSC16_dSC16_iSC16 @atom:SC12_bSC12_aSC12_dSC12_iSC12 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC16-SC12 + pair_coeff @atom:SC16_bSC16_aSC16_dSC16_iSC16 @atom:SC13_bSC13_aSC13_dSC13_iSC13 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC16-SC13 + pair_coeff @atom:SC16_bSC16_aSC16_dSC16_iSC16 @atom:SC14_bSC14_aSC14_dSC14_iSC14 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC16-SC14 + pair_coeff @atom:SC16_bSC16_aSC16_dSC16_iSC16 @atom:SC15_bSC15_aSC15_dSC15_iSC15 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC16-SC15 + pair_coeff @atom:SC17_bSC17_aSC17_dSC17_iSC17 @atom:BP4_bBP4_aBP4_dBP4_iBP4 lj/gromacs/coul/gromacs 0.478012 4.700000 # SC17-BP4 + pair_coeff @atom:SC17_bSC17_aSC17_dSC17_iSC17 @atom:C1_bC1_aC1_dC1_iC1 lj/gromacs/coul/gromacs 0.836521 4.700000 # SC17-C1 + pair_coeff @atom:SC17_bSC17_aSC17_dSC17_iSC17 @atom:C2_bC2_aC2_dC2_iC2 lj/gromacs/coul/gromacs 0.836521 4.700000 # SC17-C2 + pair_coeff @atom:SC17_bSC17_aSC17_dSC17_iSC17 @atom:C3_bC3_aC3_dC3_iC3 lj/gromacs/coul/gromacs 0.836521 4.700000 # SC17-C3 + pair_coeff @atom:SC17_bSC17_aSC17_dSC17_iSC17 @atom:C4_bC4_aC4_dC4_iC4 lj/gromacs/coul/gromacs 0.740919 4.700000 # SC17-C4 + pair_coeff @atom:SC17_bSC17_aSC17_dSC17_iSC17 @atom:C5_bC5_aC5_dC5_iC5 lj/gromacs/coul/gromacs 0.740919 4.700000 # SC17-C5 + pair_coeff @atom:SC17_bSC17_aSC17_dSC17_iSC17 @atom:N0_bN0_aN0_dN0_iN0 lj/gromacs/coul/gromacs 0.645316 4.700000 # SC17-N0 + pair_coeff @atom:SC17_bSC17_aSC17_dSC17_iSC17 @atom:Na_bNa_aNa_dNa_iNa lj/gromacs/coul/gromacs 0.645316 4.700000 # SC17-Na + pair_coeff @atom:SC17_bSC17_aSC17_dSC17_iSC17 @atom:Nd_bNd_aNd_dNd_iNd lj/gromacs/coul/gromacs 0.645316 4.700000 # SC17-Nd + pair_coeff @atom:SC17_bSC17_aSC17_dSC17_iSC17 @atom:Nda_bNda_aNda_dNda_iNda lj/gromacs/coul/gromacs 0.645316 4.700000 # SC17-Nda + pair_coeff @atom:SC17_bSC17_aSC17_dSC17_iSC17 @atom:P1_bP1_aP1_dP1_iP1 lj/gromacs/coul/gromacs 0.645316 4.700000 # SC17-P1 + pair_coeff @atom:SC17_bSC17_aSC17_dSC17_iSC17 @atom:P2_bP2_aP2_dP2_iP2 lj/gromacs/coul/gromacs 0.549714 4.700000 # SC17-P2 + pair_coeff @atom:SC17_bSC17_aSC17_dSC17_iSC17 @atom:P3_bP3_aP3_dP3_iP3 lj/gromacs/coul/gromacs 0.549714 4.700000 # SC17-P3 + pair_coeff @atom:SC17_bSC17_aSC17_dSC17_iSC17 @atom:P4_bP4_aP4_dP4_iP4 lj/gromacs/coul/gromacs 0.478012 4.700000 # SC17-P4 + pair_coeff @atom:SC17_bSC17_aSC17_dSC17_iSC17 @atom:P5_bP5_aP5_dP5_iP5 lj/gromacs/coul/gromacs 0.478012 4.700000 # SC17-P5 + pair_coeff @atom:SC17_bSC17_aSC17_dSC17_iSC17 @atom:Q0_bQ0_aQ0_dQ0_iQ0 lj/gromacs/coul/gromacs 0.478012 6.200000 # SC17-Q0 + pair_coeff @atom:SC17_bSC17_aSC17_dSC17_iSC17 @atom:Qa_bQa_aQa_dQa_iQa lj/gromacs/coul/gromacs 0.478012 6.200000 # SC17-Qa + pair_coeff @atom:SC17_bSC17_aSC17_dSC17_iSC17 @atom:Qd_bQd_aQd_dQd_iQd lj/gromacs/coul/gromacs 0.478012 6.200000 # SC17-Qd + pair_coeff @atom:SC17_bSC17_aSC17_dSC17_iSC17 @atom:Qda_bQda_aQda_dQda_iQda lj/gromacs/coul/gromacs 0.478012 6.200000 # SC17-Qda + pair_coeff @atom:SC17_bSC17_aSC17_dSC17_iSC17 @atom:SC17_bSC17_aSC17_dSC17_iSC17 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC17-SC17 + pair_coeff @atom:SC17_bSC17_aSC17_dSC17_iSC17 @atom:SC1_bSC1_aSC1_dSC1_iSC1 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC17-SC1 + pair_coeff @atom:SC17_bSC17_aSC17_dSC17_iSC17 @atom:SC2_bSC2_aSC2_dSC2_iSC2 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC17-SC2 + pair_coeff @atom:SC17_bSC17_aSC17_dSC17_iSC17 @atom:SC3_bSC3_aSC3_dSC3_iSC3 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC17-SC3 + pair_coeff @atom:SC17_bSC17_aSC17_dSC17_iSC17 @atom:SC4_bSC4_aSC4_dSC4_iSC4 lj/gromacs/coul/gromacs 0.555689 4.300000 # SC17-SC4 + pair_coeff @atom:SC17_bSC17_aSC17_dSC17_iSC17 @atom:SC5_bSC5_aSC5_dSC5_iSC5 lj/gromacs/coul/gromacs 0.555689 4.300000 # SC17-SC5 + pair_coeff @atom:SC17_bSC17_aSC17_dSC17_iSC17 @atom:SN0_bSN0_aSN0_dSN0_iSN0 lj/gromacs/coul/gromacs 0.483987 4.300000 # SC17-SN0 + pair_coeff @atom:SC17_bSC17_aSC17_dSC17_iSC17 @atom:SNa_bSNa_aSNa_dSNa_iSNa lj/gromacs/coul/gromacs 0.483987 4.300000 # SC17-SNa + pair_coeff @atom:SC17_bSC17_aSC17_dSC17_iSC17 @atom:SNd_bSNd_aSNd_dSNd_iSNd lj/gromacs/coul/gromacs 0.483987 4.300000 # SC17-SNd + pair_coeff @atom:SC17_bSC17_aSC17_dSC17_iSC17 @atom:SNda_bSNda_aSNda_dSNda_iSNda lj/gromacs/coul/gromacs 0.483987 4.300000 # SC17-SNda + pair_coeff @atom:SC17_bSC17_aSC17_dSC17_iSC17 @atom:SP1_bSP1_aSP1_dSP1_iSP1 lj/gromacs/coul/gromacs 0.483987 4.300000 # SC17-SP1 + pair_coeff @atom:SC17_bSC17_aSC17_dSC17_iSC17 @atom:SP2_bSP2_aSP2_dSP2_iSP2 lj/gromacs/coul/gromacs 0.412285 4.300000 # SC17-SP2 + pair_coeff @atom:SC17_bSC17_aSC17_dSC17_iSC17 @atom:SP3_bSP3_aSP3_dSP3_iSP3 lj/gromacs/coul/gromacs 0.412285 4.300000 # SC17-SP3 + pair_coeff @atom:SC17_bSC17_aSC17_dSC17_iSC17 @atom:SP4_bSP4_aSP4_dSP4_iSP4 lj/gromacs/coul/gromacs 0.358509 4.300000 # SC17-SP4 + pair_coeff @atom:SC17_bSC17_aSC17_dSC17_iSC17 @atom:SP5_bSP5_aSP5_dSP5_iSP5 lj/gromacs/coul/gromacs 0.358509 4.300000 # SC17-SP5 + pair_coeff @atom:SC17_bSC17_aSC17_dSC17_iSC17 @atom:SQ0_bSQ0_aSQ0_dSQ0_iSQ0 lj/gromacs/coul/gromacs 0.478012 6.200000 # SC17-SQ0 + pair_coeff @atom:SC17_bSC17_aSC17_dSC17_iSC17 @atom:SQa_bSQa_aSQa_dSQa_iSQa lj/gromacs/coul/gromacs 0.478012 6.200000 # SC17-SQa + pair_coeff @atom:SC17_bSC17_aSC17_dSC17_iSC17 @atom:SQd_bSQd_aSQd_dSQd_iSQd lj/gromacs/coul/gromacs 0.478012 6.200000 # SC17-SQd + pair_coeff @atom:SC17_bSC17_aSC17_dSC17_iSC17 @atom:SQda_bSQda_aSQda_dSQda_iSQda lj/gromacs/coul/gromacs 0.478012 6.200000 # SC17-SQda + pair_coeff @atom:SC17_bSC17_aSC17_dSC17_iSC17 @atom:C41_bC4_aC41_dC41_iC41 lj/gromacs/coul/gromacs 0.740919 4.700000 # SC17-C41 + pair_coeff @atom:SC17_bSC17_aSC17_dSC17_iSC17 @atom:C42_bC4_aC42_dC42_iC42 lj/gromacs/coul/gromacs 0.740919 4.700000 # SC17-C42 + pair_coeff @atom:SC17_bSC17_aSC17_dSC17_iSC17 @atom:Na1_bNa1_aNa1_dNa1_iNa1 lj/gromacs/coul/gromacs 0.645316 4.700000 # SC17-Na1 + pair_coeff @atom:SC17_bSC17_aSC17_dSC17_iSC17 @atom:Na2_bNa2_aNa2_dNa2_iNa2 lj/gromacs/coul/gromacs 0.645316 4.700000 # SC17-Na2 + pair_coeff @atom:SC17_bSC17_aSC17_dSC17_iSC17 @atom:Qa1_bQa1_aQa1_dQa1_iQa1 lj/gromacs/coul/gromacs 0.478012 6.200000 # SC17-Qa1 + pair_coeff @atom:SC17_bSC17_aSC17_dSC17_iSC17 @atom:Qa2_bQa2_aQa2_dQa2_iQa2 lj/gromacs/coul/gromacs 0.478012 6.200000 # SC17-Qa2 + pair_coeff @atom:SC17_bSC17_aSC17_dSC17_iSC17 @atom:SC11_bSC11_aSC11_dSC11_iSC11 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC17-SC11 + pair_coeff @atom:SC17_bSC17_aSC17_dSC17_iSC17 @atom:SC110_bSC110_aSC110_dSC110_iSC110 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC17-SC110 + pair_coeff @atom:SC17_bSC17_aSC17_dSC17_iSC17 @atom:SC111_bSC111_aSC111_dSC111_iSC111 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC17-SC111 + pair_coeff @atom:SC17_bSC17_aSC17_dSC17_iSC17 @atom:SC112_bSC112_aSC112_dSC112_iSC112 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC17-SC112 + pair_coeff @atom:SC17_bSC17_aSC17_dSC17_iSC17 @atom:SC12_bSC12_aSC12_dSC12_iSC12 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC17-SC12 + pair_coeff @atom:SC17_bSC17_aSC17_dSC17_iSC17 @atom:SC13_bSC13_aSC13_dSC13_iSC13 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC17-SC13 + pair_coeff @atom:SC17_bSC17_aSC17_dSC17_iSC17 @atom:SC14_bSC14_aSC14_dSC14_iSC14 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC17-SC14 + pair_coeff @atom:SC17_bSC17_aSC17_dSC17_iSC17 @atom:SC15_bSC15_aSC15_dSC15_iSC15 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC17-SC15 + pair_coeff @atom:SC17_bSC17_aSC17_dSC17_iSC17 @atom:SC16_bSC16_aSC16_dSC16_iSC16 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC17-SC16 + pair_coeff @atom:SC18_bSC18_aSC18_dSC18_iSC18 @atom:BP4_bBP4_aBP4_dBP4_iBP4 lj/gromacs/coul/gromacs 0.478012 4.700000 # SC18-BP4 + pair_coeff @atom:SC18_bSC18_aSC18_dSC18_iSC18 @atom:C1_bC1_aC1_dC1_iC1 lj/gromacs/coul/gromacs 0.836521 4.700000 # SC18-C1 + pair_coeff @atom:SC18_bSC18_aSC18_dSC18_iSC18 @atom:C2_bC2_aC2_dC2_iC2 lj/gromacs/coul/gromacs 0.836521 4.700000 # SC18-C2 + pair_coeff @atom:SC18_bSC18_aSC18_dSC18_iSC18 @atom:C3_bC3_aC3_dC3_iC3 lj/gromacs/coul/gromacs 0.836521 4.700000 # SC18-C3 + pair_coeff @atom:SC18_bSC18_aSC18_dSC18_iSC18 @atom:C4_bC4_aC4_dC4_iC4 lj/gromacs/coul/gromacs 0.740919 4.700000 # SC18-C4 + pair_coeff @atom:SC18_bSC18_aSC18_dSC18_iSC18 @atom:C5_bC5_aC5_dC5_iC5 lj/gromacs/coul/gromacs 0.740919 4.700000 # SC18-C5 + pair_coeff @atom:SC18_bSC18_aSC18_dSC18_iSC18 @atom:N0_bN0_aN0_dN0_iN0 lj/gromacs/coul/gromacs 0.645316 4.700000 # SC18-N0 + pair_coeff @atom:SC18_bSC18_aSC18_dSC18_iSC18 @atom:Na_bNa_aNa_dNa_iNa lj/gromacs/coul/gromacs 0.645316 4.700000 # SC18-Na + pair_coeff @atom:SC18_bSC18_aSC18_dSC18_iSC18 @atom:Nd_bNd_aNd_dNd_iNd lj/gromacs/coul/gromacs 0.645316 4.700000 # SC18-Nd + pair_coeff @atom:SC18_bSC18_aSC18_dSC18_iSC18 @atom:Nda_bNda_aNda_dNda_iNda lj/gromacs/coul/gromacs 0.645316 4.700000 # SC18-Nda + pair_coeff @atom:SC18_bSC18_aSC18_dSC18_iSC18 @atom:P1_bP1_aP1_dP1_iP1 lj/gromacs/coul/gromacs 0.645316 4.700000 # SC18-P1 + pair_coeff @atom:SC18_bSC18_aSC18_dSC18_iSC18 @atom:P2_bP2_aP2_dP2_iP2 lj/gromacs/coul/gromacs 0.549714 4.700000 # SC18-P2 + pair_coeff @atom:SC18_bSC18_aSC18_dSC18_iSC18 @atom:P3_bP3_aP3_dP3_iP3 lj/gromacs/coul/gromacs 0.549714 4.700000 # SC18-P3 + pair_coeff @atom:SC18_bSC18_aSC18_dSC18_iSC18 @atom:P4_bP4_aP4_dP4_iP4 lj/gromacs/coul/gromacs 0.478012 4.700000 # SC18-P4 + pair_coeff @atom:SC18_bSC18_aSC18_dSC18_iSC18 @atom:P5_bP5_aP5_dP5_iP5 lj/gromacs/coul/gromacs 0.478012 4.700000 # SC18-P5 + pair_coeff @atom:SC18_bSC18_aSC18_dSC18_iSC18 @atom:Q0_bQ0_aQ0_dQ0_iQ0 lj/gromacs/coul/gromacs 0.478012 6.200000 # SC18-Q0 + pair_coeff @atom:SC18_bSC18_aSC18_dSC18_iSC18 @atom:Qa_bQa_aQa_dQa_iQa lj/gromacs/coul/gromacs 0.478012 6.200000 # SC18-Qa + pair_coeff @atom:SC18_bSC18_aSC18_dSC18_iSC18 @atom:Qd_bQd_aQd_dQd_iQd lj/gromacs/coul/gromacs 0.478012 6.200000 # SC18-Qd + pair_coeff @atom:SC18_bSC18_aSC18_dSC18_iSC18 @atom:Qda_bQda_aQda_dQda_iQda lj/gromacs/coul/gromacs 0.478012 6.200000 # SC18-Qda + pair_coeff @atom:SC18_bSC18_aSC18_dSC18_iSC18 @atom:SC18_bSC18_aSC18_dSC18_iSC18 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC18-SC18 + pair_coeff @atom:SC18_bSC18_aSC18_dSC18_iSC18 @atom:SC1_bSC1_aSC1_dSC1_iSC1 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC18-SC1 + pair_coeff @atom:SC18_bSC18_aSC18_dSC18_iSC18 @atom:SC2_bSC2_aSC2_dSC2_iSC2 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC18-SC2 + pair_coeff @atom:SC18_bSC18_aSC18_dSC18_iSC18 @atom:SC3_bSC3_aSC3_dSC3_iSC3 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC18-SC3 + pair_coeff @atom:SC18_bSC18_aSC18_dSC18_iSC18 @atom:SC4_bSC4_aSC4_dSC4_iSC4 lj/gromacs/coul/gromacs 0.555689 4.300000 # SC18-SC4 + pair_coeff @atom:SC18_bSC18_aSC18_dSC18_iSC18 @atom:SC5_bSC5_aSC5_dSC5_iSC5 lj/gromacs/coul/gromacs 0.555689 4.300000 # SC18-SC5 + pair_coeff @atom:SC18_bSC18_aSC18_dSC18_iSC18 @atom:SN0_bSN0_aSN0_dSN0_iSN0 lj/gromacs/coul/gromacs 0.483987 4.300000 # SC18-SN0 + pair_coeff @atom:SC18_bSC18_aSC18_dSC18_iSC18 @atom:SNa_bSNa_aSNa_dSNa_iSNa lj/gromacs/coul/gromacs 0.483987 4.300000 # SC18-SNa + pair_coeff @atom:SC18_bSC18_aSC18_dSC18_iSC18 @atom:SNd_bSNd_aSNd_dSNd_iSNd lj/gromacs/coul/gromacs 0.483987 4.300000 # SC18-SNd + pair_coeff @atom:SC18_bSC18_aSC18_dSC18_iSC18 @atom:SNda_bSNda_aSNda_dSNda_iSNda lj/gromacs/coul/gromacs 0.483987 4.300000 # SC18-SNda + pair_coeff @atom:SC18_bSC18_aSC18_dSC18_iSC18 @atom:SP1_bSP1_aSP1_dSP1_iSP1 lj/gromacs/coul/gromacs 0.483987 4.300000 # SC18-SP1 + pair_coeff @atom:SC18_bSC18_aSC18_dSC18_iSC18 @atom:SP2_bSP2_aSP2_dSP2_iSP2 lj/gromacs/coul/gromacs 0.412285 4.300000 # SC18-SP2 + pair_coeff @atom:SC18_bSC18_aSC18_dSC18_iSC18 @atom:SP3_bSP3_aSP3_dSP3_iSP3 lj/gromacs/coul/gromacs 0.412285 4.300000 # SC18-SP3 + pair_coeff @atom:SC18_bSC18_aSC18_dSC18_iSC18 @atom:SP4_bSP4_aSP4_dSP4_iSP4 lj/gromacs/coul/gromacs 0.358509 4.300000 # SC18-SP4 + pair_coeff @atom:SC18_bSC18_aSC18_dSC18_iSC18 @atom:SP5_bSP5_aSP5_dSP5_iSP5 lj/gromacs/coul/gromacs 0.358509 4.300000 # SC18-SP5 + pair_coeff @atom:SC18_bSC18_aSC18_dSC18_iSC18 @atom:SQ0_bSQ0_aSQ0_dSQ0_iSQ0 lj/gromacs/coul/gromacs 0.478012 6.200000 # SC18-SQ0 + pair_coeff @atom:SC18_bSC18_aSC18_dSC18_iSC18 @atom:SQa_bSQa_aSQa_dSQa_iSQa lj/gromacs/coul/gromacs 0.478012 6.200000 # SC18-SQa + pair_coeff @atom:SC18_bSC18_aSC18_dSC18_iSC18 @atom:SQd_bSQd_aSQd_dSQd_iSQd lj/gromacs/coul/gromacs 0.478012 6.200000 # SC18-SQd + pair_coeff @atom:SC18_bSC18_aSC18_dSC18_iSC18 @atom:SQda_bSQda_aSQda_dSQda_iSQda lj/gromacs/coul/gromacs 0.478012 6.200000 # SC18-SQda + pair_coeff @atom:SC18_bSC18_aSC18_dSC18_iSC18 @atom:C41_bC4_aC41_dC41_iC41 lj/gromacs/coul/gromacs 0.740919 4.700000 # SC18-C41 + pair_coeff @atom:SC18_bSC18_aSC18_dSC18_iSC18 @atom:C42_bC4_aC42_dC42_iC42 lj/gromacs/coul/gromacs 0.740919 4.700000 # SC18-C42 + pair_coeff @atom:SC18_bSC18_aSC18_dSC18_iSC18 @atom:Na1_bNa1_aNa1_dNa1_iNa1 lj/gromacs/coul/gromacs 0.645316 4.700000 # SC18-Na1 + pair_coeff @atom:SC18_bSC18_aSC18_dSC18_iSC18 @atom:Na2_bNa2_aNa2_dNa2_iNa2 lj/gromacs/coul/gromacs 0.645316 4.700000 # SC18-Na2 + pair_coeff @atom:SC18_bSC18_aSC18_dSC18_iSC18 @atom:Qa1_bQa1_aQa1_dQa1_iQa1 lj/gromacs/coul/gromacs 0.478012 6.200000 # SC18-Qa1 + pair_coeff @atom:SC18_bSC18_aSC18_dSC18_iSC18 @atom:Qa2_bQa2_aQa2_dQa2_iQa2 lj/gromacs/coul/gromacs 0.478012 6.200000 # SC18-Qa2 + pair_coeff @atom:SC18_bSC18_aSC18_dSC18_iSC18 @atom:SC11_bSC11_aSC11_dSC11_iSC11 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC18-SC11 + pair_coeff @atom:SC18_bSC18_aSC18_dSC18_iSC18 @atom:SC110_bSC110_aSC110_dSC110_iSC110 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC18-SC110 + pair_coeff @atom:SC18_bSC18_aSC18_dSC18_iSC18 @atom:SC111_bSC111_aSC111_dSC111_iSC111 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC18-SC111 + pair_coeff @atom:SC18_bSC18_aSC18_dSC18_iSC18 @atom:SC112_bSC112_aSC112_dSC112_iSC112 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC18-SC112 + pair_coeff @atom:SC18_bSC18_aSC18_dSC18_iSC18 @atom:SC12_bSC12_aSC12_dSC12_iSC12 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC18-SC12 + pair_coeff @atom:SC18_bSC18_aSC18_dSC18_iSC18 @atom:SC13_bSC13_aSC13_dSC13_iSC13 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC18-SC13 + pair_coeff @atom:SC18_bSC18_aSC18_dSC18_iSC18 @atom:SC14_bSC14_aSC14_dSC14_iSC14 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC18-SC14 + pair_coeff @atom:SC18_bSC18_aSC18_dSC18_iSC18 @atom:SC15_bSC15_aSC15_dSC15_iSC15 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC18-SC15 + pair_coeff @atom:SC18_bSC18_aSC18_dSC18_iSC18 @atom:SC16_bSC16_aSC16_dSC16_iSC16 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC18-SC16 + pair_coeff @atom:SC18_bSC18_aSC18_dSC18_iSC18 @atom:SC17_bSC17_aSC17_dSC17_iSC17 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC18-SC17 + pair_coeff @atom:SC19_bSC19_aSC19_dSC19_iSC19 @atom:BP4_bBP4_aBP4_dBP4_iBP4 lj/gromacs/coul/gromacs 0.478012 4.700000 # SC19-BP4 + pair_coeff @atom:SC19_bSC19_aSC19_dSC19_iSC19 @atom:C1_bC1_aC1_dC1_iC1 lj/gromacs/coul/gromacs 0.836521 4.700000 # SC19-C1 + pair_coeff @atom:SC19_bSC19_aSC19_dSC19_iSC19 @atom:C2_bC2_aC2_dC2_iC2 lj/gromacs/coul/gromacs 0.836521 4.700000 # SC19-C2 + pair_coeff @atom:SC19_bSC19_aSC19_dSC19_iSC19 @atom:C3_bC3_aC3_dC3_iC3 lj/gromacs/coul/gromacs 0.836521 4.700000 # SC19-C3 + pair_coeff @atom:SC19_bSC19_aSC19_dSC19_iSC19 @atom:C4_bC4_aC4_dC4_iC4 lj/gromacs/coul/gromacs 0.740919 4.700000 # SC19-C4 + pair_coeff @atom:SC19_bSC19_aSC19_dSC19_iSC19 @atom:C5_bC5_aC5_dC5_iC5 lj/gromacs/coul/gromacs 0.740919 4.700000 # SC19-C5 + pair_coeff @atom:SC19_bSC19_aSC19_dSC19_iSC19 @atom:N0_bN0_aN0_dN0_iN0 lj/gromacs/coul/gromacs 0.645316 4.700000 # SC19-N0 + pair_coeff @atom:SC19_bSC19_aSC19_dSC19_iSC19 @atom:Na_bNa_aNa_dNa_iNa lj/gromacs/coul/gromacs 0.645316 4.700000 # SC19-Na + pair_coeff @atom:SC19_bSC19_aSC19_dSC19_iSC19 @atom:Nd_bNd_aNd_dNd_iNd lj/gromacs/coul/gromacs 0.645316 4.700000 # SC19-Nd + pair_coeff @atom:SC19_bSC19_aSC19_dSC19_iSC19 @atom:Nda_bNda_aNda_dNda_iNda lj/gromacs/coul/gromacs 0.645316 4.700000 # SC19-Nda + pair_coeff @atom:SC19_bSC19_aSC19_dSC19_iSC19 @atom:P1_bP1_aP1_dP1_iP1 lj/gromacs/coul/gromacs 0.645316 4.700000 # SC19-P1 + pair_coeff @atom:SC19_bSC19_aSC19_dSC19_iSC19 @atom:P2_bP2_aP2_dP2_iP2 lj/gromacs/coul/gromacs 0.549714 4.700000 # SC19-P2 + pair_coeff @atom:SC19_bSC19_aSC19_dSC19_iSC19 @atom:P3_bP3_aP3_dP3_iP3 lj/gromacs/coul/gromacs 0.549714 4.700000 # SC19-P3 + pair_coeff @atom:SC19_bSC19_aSC19_dSC19_iSC19 @atom:P4_bP4_aP4_dP4_iP4 lj/gromacs/coul/gromacs 0.478012 4.700000 # SC19-P4 + pair_coeff @atom:SC19_bSC19_aSC19_dSC19_iSC19 @atom:P5_bP5_aP5_dP5_iP5 lj/gromacs/coul/gromacs 0.478012 4.700000 # SC19-P5 + pair_coeff @atom:SC19_bSC19_aSC19_dSC19_iSC19 @atom:Q0_bQ0_aQ0_dQ0_iQ0 lj/gromacs/coul/gromacs 0.478012 6.200000 # SC19-Q0 + pair_coeff @atom:SC19_bSC19_aSC19_dSC19_iSC19 @atom:Qa_bQa_aQa_dQa_iQa lj/gromacs/coul/gromacs 0.478012 6.200000 # SC19-Qa + pair_coeff @atom:SC19_bSC19_aSC19_dSC19_iSC19 @atom:Qd_bQd_aQd_dQd_iQd lj/gromacs/coul/gromacs 0.478012 6.200000 # SC19-Qd + pair_coeff @atom:SC19_bSC19_aSC19_dSC19_iSC19 @atom:Qda_bQda_aQda_dQda_iQda lj/gromacs/coul/gromacs 0.478012 6.200000 # SC19-Qda + pair_coeff @atom:SC19_bSC19_aSC19_dSC19_iSC19 @atom:SC19_bSC19_aSC19_dSC19_iSC19 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC19-SC19 + pair_coeff @atom:SC19_bSC19_aSC19_dSC19_iSC19 @atom:SC1_bSC1_aSC1_dSC1_iSC1 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC19-SC1 + pair_coeff @atom:SC19_bSC19_aSC19_dSC19_iSC19 @atom:SC2_bSC2_aSC2_dSC2_iSC2 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC19-SC2 + pair_coeff @atom:SC19_bSC19_aSC19_dSC19_iSC19 @atom:SC3_bSC3_aSC3_dSC3_iSC3 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC19-SC3 + pair_coeff @atom:SC19_bSC19_aSC19_dSC19_iSC19 @atom:SC4_bSC4_aSC4_dSC4_iSC4 lj/gromacs/coul/gromacs 0.555689 4.300000 # SC19-SC4 + pair_coeff @atom:SC19_bSC19_aSC19_dSC19_iSC19 @atom:SC5_bSC5_aSC5_dSC5_iSC5 lj/gromacs/coul/gromacs 0.555689 4.300000 # SC19-SC5 + pair_coeff @atom:SC19_bSC19_aSC19_dSC19_iSC19 @atom:SN0_bSN0_aSN0_dSN0_iSN0 lj/gromacs/coul/gromacs 0.483987 4.300000 # SC19-SN0 + pair_coeff @atom:SC19_bSC19_aSC19_dSC19_iSC19 @atom:SNa_bSNa_aSNa_dSNa_iSNa lj/gromacs/coul/gromacs 0.483987 4.300000 # SC19-SNa + pair_coeff @atom:SC19_bSC19_aSC19_dSC19_iSC19 @atom:SNd_bSNd_aSNd_dSNd_iSNd lj/gromacs/coul/gromacs 0.483987 4.300000 # SC19-SNd + pair_coeff @atom:SC19_bSC19_aSC19_dSC19_iSC19 @atom:SNda_bSNda_aSNda_dSNda_iSNda lj/gromacs/coul/gromacs 0.483987 4.300000 # SC19-SNda + pair_coeff @atom:SC19_bSC19_aSC19_dSC19_iSC19 @atom:SP1_bSP1_aSP1_dSP1_iSP1 lj/gromacs/coul/gromacs 0.483987 4.300000 # SC19-SP1 + pair_coeff @atom:SC19_bSC19_aSC19_dSC19_iSC19 @atom:SP2_bSP2_aSP2_dSP2_iSP2 lj/gromacs/coul/gromacs 0.412285 4.300000 # SC19-SP2 + pair_coeff @atom:SC19_bSC19_aSC19_dSC19_iSC19 @atom:SP3_bSP3_aSP3_dSP3_iSP3 lj/gromacs/coul/gromacs 0.412285 4.300000 # SC19-SP3 + pair_coeff @atom:SC19_bSC19_aSC19_dSC19_iSC19 @atom:SP4_bSP4_aSP4_dSP4_iSP4 lj/gromacs/coul/gromacs 0.358509 4.300000 # SC19-SP4 + pair_coeff @atom:SC19_bSC19_aSC19_dSC19_iSC19 @atom:SP5_bSP5_aSP5_dSP5_iSP5 lj/gromacs/coul/gromacs 0.358509 4.300000 # SC19-SP5 + pair_coeff @atom:SC19_bSC19_aSC19_dSC19_iSC19 @atom:SQ0_bSQ0_aSQ0_dSQ0_iSQ0 lj/gromacs/coul/gromacs 0.478012 6.200000 # SC19-SQ0 + pair_coeff @atom:SC19_bSC19_aSC19_dSC19_iSC19 @atom:SQa_bSQa_aSQa_dSQa_iSQa lj/gromacs/coul/gromacs 0.478012 6.200000 # SC19-SQa + pair_coeff @atom:SC19_bSC19_aSC19_dSC19_iSC19 @atom:SQd_bSQd_aSQd_dSQd_iSQd lj/gromacs/coul/gromacs 0.478012 6.200000 # SC19-SQd + pair_coeff @atom:SC19_bSC19_aSC19_dSC19_iSC19 @atom:SQda_bSQda_aSQda_dSQda_iSQda lj/gromacs/coul/gromacs 0.478012 6.200000 # SC19-SQda + pair_coeff @atom:SC19_bSC19_aSC19_dSC19_iSC19 @atom:C41_bC4_aC41_dC41_iC41 lj/gromacs/coul/gromacs 0.740919 4.700000 # SC19-C41 + pair_coeff @atom:SC19_bSC19_aSC19_dSC19_iSC19 @atom:C42_bC4_aC42_dC42_iC42 lj/gromacs/coul/gromacs 0.740919 4.700000 # SC19-C42 + pair_coeff @atom:SC19_bSC19_aSC19_dSC19_iSC19 @atom:Na1_bNa1_aNa1_dNa1_iNa1 lj/gromacs/coul/gromacs 0.645316 4.700000 # SC19-Na1 + pair_coeff @atom:SC19_bSC19_aSC19_dSC19_iSC19 @atom:Na2_bNa2_aNa2_dNa2_iNa2 lj/gromacs/coul/gromacs 0.645316 4.700000 # SC19-Na2 + pair_coeff @atom:SC19_bSC19_aSC19_dSC19_iSC19 @atom:Qa1_bQa1_aQa1_dQa1_iQa1 lj/gromacs/coul/gromacs 0.478012 6.200000 # SC19-Qa1 + pair_coeff @atom:SC19_bSC19_aSC19_dSC19_iSC19 @atom:Qa2_bQa2_aQa2_dQa2_iQa2 lj/gromacs/coul/gromacs 0.478012 6.200000 # SC19-Qa2 + pair_coeff @atom:SC19_bSC19_aSC19_dSC19_iSC19 @atom:SC11_bSC11_aSC11_dSC11_iSC11 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC19-SC11 + pair_coeff @atom:SC19_bSC19_aSC19_dSC19_iSC19 @atom:SC110_bSC110_aSC110_dSC110_iSC110 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC19-SC110 + pair_coeff @atom:SC19_bSC19_aSC19_dSC19_iSC19 @atom:SC111_bSC111_aSC111_dSC111_iSC111 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC19-SC111 + pair_coeff @atom:SC19_bSC19_aSC19_dSC19_iSC19 @atom:SC112_bSC112_aSC112_dSC112_iSC112 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC19-SC112 + pair_coeff @atom:SC19_bSC19_aSC19_dSC19_iSC19 @atom:SC12_bSC12_aSC12_dSC12_iSC12 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC19-SC12 + pair_coeff @atom:SC19_bSC19_aSC19_dSC19_iSC19 @atom:SC13_bSC13_aSC13_dSC13_iSC13 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC19-SC13 + pair_coeff @atom:SC19_bSC19_aSC19_dSC19_iSC19 @atom:SC14_bSC14_aSC14_dSC14_iSC14 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC19-SC14 + pair_coeff @atom:SC19_bSC19_aSC19_dSC19_iSC19 @atom:SC15_bSC15_aSC15_dSC15_iSC15 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC19-SC15 + pair_coeff @atom:SC19_bSC19_aSC19_dSC19_iSC19 @atom:SC16_bSC16_aSC16_dSC16_iSC16 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC19-SC16 + pair_coeff @atom:SC19_bSC19_aSC19_dSC19_iSC19 @atom:SC17_bSC17_aSC17_dSC17_iSC17 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC19-SC17 + pair_coeff @atom:SC19_bSC19_aSC19_dSC19_iSC19 @atom:SC18_bSC18_aSC18_dSC18_iSC18 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC19-SC18 + pair_coeff @atom:SC31_bSC31_aSC31_dSC31_iSC31 @atom:BP4_bBP4_aBP4_dBP4_iBP4 lj/gromacs/coul/gromacs 0.645316 4.700000 # SC31-BP4 + pair_coeff @atom:SC31_bSC31_aSC31_dSC31_iSC31 @atom:C1_bC1_aC1_dC1_iC1 lj/gromacs/coul/gromacs 0.836521 4.700000 # SC31-C1 + pair_coeff @atom:SC31_bSC31_aSC31_dSC31_iSC31 @atom:C2_bC2_aC2_dC2_iC2 lj/gromacs/coul/gromacs 0.836521 4.700000 # SC31-C2 + pair_coeff @atom:SC31_bSC31_aSC31_dSC31_iSC31 @atom:C3_bC3_aC3_dC3_iC3 lj/gromacs/coul/gromacs 0.836521 4.700000 # SC31-C3 + pair_coeff @atom:SC31_bSC31_aSC31_dSC31_iSC31 @atom:C4_bC4_aC4_dC4_iC4 lj/gromacs/coul/gromacs 0.836521 4.700000 # SC31-C4 + pair_coeff @atom:SC31_bSC31_aSC31_dSC31_iSC31 @atom:C5_bC5_aC5_dC5_iC5 lj/gromacs/coul/gromacs 0.836521 4.700000 # SC31-C5 + pair_coeff @atom:SC31_bSC31_aSC31_dSC31_iSC31 @atom:N0_bN0_aN0_dN0_iN0 lj/gromacs/coul/gromacs 0.836521 4.700000 # SC31-N0 + pair_coeff @atom:SC31_bSC31_aSC31_dSC31_iSC31 @atom:Na_bNa_aNa_dNa_iNa lj/gromacs/coul/gromacs 0.645316 4.700000 # SC31-Na + pair_coeff @atom:SC31_bSC31_aSC31_dSC31_iSC31 @atom:Nd_bNd_aNd_dNd_iNd lj/gromacs/coul/gromacs 0.645316 4.700000 # SC31-Nd + pair_coeff @atom:SC31_bSC31_aSC31_dSC31_iSC31 @atom:Nda_bNda_aNda_dNda_iNda lj/gromacs/coul/gromacs 0.645316 4.700000 # SC31-Nda + pair_coeff @atom:SC31_bSC31_aSC31_dSC31_iSC31 @atom:P1_bP1_aP1_dP1_iP1 lj/gromacs/coul/gromacs 0.836521 4.700000 # SC31-P1 + pair_coeff @atom:SC31_bSC31_aSC31_dSC31_iSC31 @atom:P2_bP2_aP2_dP2_iP2 lj/gromacs/coul/gromacs 0.740919 4.700000 # SC31-P2 + pair_coeff @atom:SC31_bSC31_aSC31_dSC31_iSC31 @atom:P3_bP3_aP3_dP3_iP3 lj/gromacs/coul/gromacs 0.740919 4.700000 # SC31-P3 + pair_coeff @atom:SC31_bSC31_aSC31_dSC31_iSC31 @atom:P4_bP4_aP4_dP4_iP4 lj/gromacs/coul/gromacs 0.645316 4.700000 # SC31-P4 + pair_coeff @atom:SC31_bSC31_aSC31_dSC31_iSC31 @atom:P5_bP5_aP5_dP5_iP5 lj/gromacs/coul/gromacs 0.645316 4.700000 # SC31-P5 + pair_coeff @atom:SC31_bSC31_aSC31_dSC31_iSC31 @atom:Q0_bQ0_aQ0_dQ0_iQ0 lj/gromacs/coul/gromacs 0.549714 4.700000 # SC31-Q0 + pair_coeff @atom:SC31_bSC31_aSC31_dSC31_iSC31 @atom:Qa_bQa_aQa_dQa_iQa lj/gromacs/coul/gromacs 0.549714 4.700000 # SC31-Qa + pair_coeff @atom:SC31_bSC31_aSC31_dSC31_iSC31 @atom:Qd_bQd_aQd_dQd_iQd lj/gromacs/coul/gromacs 0.549714 4.700000 # SC31-Qd + pair_coeff @atom:SC31_bSC31_aSC31_dSC31_iSC31 @atom:Qda_bQda_aQda_dQda_iQda lj/gromacs/coul/gromacs 0.549714 4.700000 # SC31-Qda + pair_coeff @atom:SC31_bSC31_aSC31_dSC31_iSC31 @atom:SC1_bSC1_aSC1_dSC1_iSC1 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC31-SC1 + pair_coeff @atom:SC31_bSC31_aSC31_dSC31_iSC31 @atom:SC2_bSC2_aSC2_dSC2_iSC2 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC31-SC2 + pair_coeff @atom:SC31_bSC31_aSC31_dSC31_iSC31 @atom:SC31_bSC31_aSC31_dSC31_iSC31 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC31-SC31 + pair_coeff @atom:SC31_bSC31_aSC31_dSC31_iSC31 @atom:SC3_bSC3_aSC3_dSC3_iSC3 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC31-SC3 + pair_coeff @atom:SC31_bSC31_aSC31_dSC31_iSC31 @atom:SC4_bSC4_aSC4_dSC4_iSC4 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC31-SC4 + pair_coeff @atom:SC31_bSC31_aSC31_dSC31_iSC31 @atom:SC5_bSC5_aSC5_dSC5_iSC5 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC31-SC5 + pair_coeff @atom:SC31_bSC31_aSC31_dSC31_iSC31 @atom:SN0_bSN0_aSN0_dSN0_iSN0 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC31-SN0 + pair_coeff @atom:SC31_bSC31_aSC31_dSC31_iSC31 @atom:SNa_bSNa_aSNa_dSNa_iSNa lj/gromacs/coul/gromacs 0.483987 4.300000 # SC31-SNa + pair_coeff @atom:SC31_bSC31_aSC31_dSC31_iSC31 @atom:SNd_bSNd_aSNd_dSNd_iSNd lj/gromacs/coul/gromacs 0.483987 4.300000 # SC31-SNd + pair_coeff @atom:SC31_bSC31_aSC31_dSC31_iSC31 @atom:SNda_bSNda_aSNda_dSNda_iSNda lj/gromacs/coul/gromacs 0.483987 4.300000 # SC31-SNda + pair_coeff @atom:SC31_bSC31_aSC31_dSC31_iSC31 @atom:SP1_bSP1_aSP1_dSP1_iSP1 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC31-SP1 + pair_coeff @atom:SC31_bSC31_aSC31_dSC31_iSC31 @atom:SP2_bSP2_aSP2_dSP2_iSP2 lj/gromacs/coul/gromacs 0.555689 4.300000 # SC31-SP2 + pair_coeff @atom:SC31_bSC31_aSC31_dSC31_iSC31 @atom:SP3_bSP3_aSP3_dSP3_iSP3 lj/gromacs/coul/gromacs 0.555689 4.300000 # SC31-SP3 + pair_coeff @atom:SC31_bSC31_aSC31_dSC31_iSC31 @atom:SP4_bSP4_aSP4_dSP4_iSP4 lj/gromacs/coul/gromacs 0.483987 4.300000 # SC31-SP4 + pair_coeff @atom:SC31_bSC31_aSC31_dSC31_iSC31 @atom:SP5_bSP5_aSP5_dSP5_iSP5 lj/gromacs/coul/gromacs 0.483987 4.300000 # SC31-SP5 + pair_coeff @atom:SC31_bSC31_aSC31_dSC31_iSC31 @atom:SQ0_bSQ0_aSQ0_dSQ0_iSQ0 lj/gromacs/coul/gromacs 0.412285 4.300000 # SC31-SQ0 + pair_coeff @atom:SC31_bSC31_aSC31_dSC31_iSC31 @atom:SQa_bSQa_aSQa_dSQa_iSQa lj/gromacs/coul/gromacs 0.412285 4.300000 # SC31-SQa + pair_coeff @atom:SC31_bSC31_aSC31_dSC31_iSC31 @atom:SQd_bSQd_aSQd_dSQd_iSQd lj/gromacs/coul/gromacs 0.412285 4.300000 # SC31-SQd + pair_coeff @atom:SC31_bSC31_aSC31_dSC31_iSC31 @atom:SQda_bSQda_aSQda_dSQda_iSQda lj/gromacs/coul/gromacs 0.412285 4.300000 # SC31-SQda + pair_coeff @atom:SC31_bSC31_aSC31_dSC31_iSC31 @atom:C41_bC4_aC41_dC41_iC41 lj/gromacs/coul/gromacs 0.836521 4.700000 # SC31-C41 + pair_coeff @atom:SC31_bSC31_aSC31_dSC31_iSC31 @atom:C42_bC4_aC42_dC42_iC42 lj/gromacs/coul/gromacs 0.836521 4.700000 # SC31-C42 + pair_coeff @atom:SC31_bSC31_aSC31_dSC31_iSC31 @atom:Na1_bNa1_aNa1_dNa1_iNa1 lj/gromacs/coul/gromacs 0.645316 4.700000 # SC31-Na1 + pair_coeff @atom:SC31_bSC31_aSC31_dSC31_iSC31 @atom:Na2_bNa2_aNa2_dNa2_iNa2 lj/gromacs/coul/gromacs 0.645316 4.700000 # SC31-Na2 + pair_coeff @atom:SC31_bSC31_aSC31_dSC31_iSC31 @atom:Qa1_bQa1_aQa1_dQa1_iQa1 lj/gromacs/coul/gromacs 0.549714 4.700000 # SC31-Qa1 + pair_coeff @atom:SC31_bSC31_aSC31_dSC31_iSC31 @atom:Qa2_bQa2_aQa2_dQa2_iQa2 lj/gromacs/coul/gromacs 0.549714 4.700000 # SC31-Qa2 + pair_coeff @atom:SC31_bSC31_aSC31_dSC31_iSC31 @atom:SC11_bSC11_aSC11_dSC11_iSC11 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC31-SC11 + pair_coeff @atom:SC31_bSC31_aSC31_dSC31_iSC31 @atom:SC110_bSC110_aSC110_dSC110_iSC110 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC31-SC110 + pair_coeff @atom:SC31_bSC31_aSC31_dSC31_iSC31 @atom:SC111_bSC111_aSC111_dSC111_iSC111 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC31-SC111 + pair_coeff @atom:SC31_bSC31_aSC31_dSC31_iSC31 @atom:SC112_bSC112_aSC112_dSC112_iSC112 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC31-SC112 + pair_coeff @atom:SC31_bSC31_aSC31_dSC31_iSC31 @atom:SC12_bSC12_aSC12_dSC12_iSC12 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC31-SC12 + pair_coeff @atom:SC31_bSC31_aSC31_dSC31_iSC31 @atom:SC13_bSC13_aSC13_dSC13_iSC13 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC31-SC13 + pair_coeff @atom:SC31_bSC31_aSC31_dSC31_iSC31 @atom:SC14_bSC14_aSC14_dSC14_iSC14 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC31-SC14 + pair_coeff @atom:SC31_bSC31_aSC31_dSC31_iSC31 @atom:SC15_bSC15_aSC15_dSC15_iSC15 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC31-SC15 + pair_coeff @atom:SC31_bSC31_aSC31_dSC31_iSC31 @atom:SC16_bSC16_aSC16_dSC16_iSC16 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC31-SC16 + pair_coeff @atom:SC31_bSC31_aSC31_dSC31_iSC31 @atom:SC17_bSC17_aSC17_dSC17_iSC17 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC31-SC17 + pair_coeff @atom:SC31_bSC31_aSC31_dSC31_iSC31 @atom:SC18_bSC18_aSC18_dSC18_iSC18 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC31-SC18 + pair_coeff @atom:SC31_bSC31_aSC31_dSC31_iSC31 @atom:SC19_bSC19_aSC19_dSC19_iSC19 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC31-SC19 + pair_coeff @atom:SC32_bSC32_aSC32_dSC32_iSC32 @atom:BP4_bBP4_aBP4_dBP4_iBP4 lj/gromacs/coul/gromacs 0.645316 4.700000 # SC32-BP4 + pair_coeff @atom:SC32_bSC32_aSC32_dSC32_iSC32 @atom:C1_bC1_aC1_dC1_iC1 lj/gromacs/coul/gromacs 0.836521 4.700000 # SC32-C1 + pair_coeff @atom:SC32_bSC32_aSC32_dSC32_iSC32 @atom:C2_bC2_aC2_dC2_iC2 lj/gromacs/coul/gromacs 0.836521 4.700000 # SC32-C2 + pair_coeff @atom:SC32_bSC32_aSC32_dSC32_iSC32 @atom:C3_bC3_aC3_dC3_iC3 lj/gromacs/coul/gromacs 0.836521 4.700000 # SC32-C3 + pair_coeff @atom:SC32_bSC32_aSC32_dSC32_iSC32 @atom:C4_bC4_aC4_dC4_iC4 lj/gromacs/coul/gromacs 0.836521 4.700000 # SC32-C4 + pair_coeff @atom:SC32_bSC32_aSC32_dSC32_iSC32 @atom:C5_bC5_aC5_dC5_iC5 lj/gromacs/coul/gromacs 0.836521 4.700000 # SC32-C5 + pair_coeff @atom:SC32_bSC32_aSC32_dSC32_iSC32 @atom:N0_bN0_aN0_dN0_iN0 lj/gromacs/coul/gromacs 0.836521 4.700000 # SC32-N0 + pair_coeff @atom:SC32_bSC32_aSC32_dSC32_iSC32 @atom:Na_bNa_aNa_dNa_iNa lj/gromacs/coul/gromacs 0.645316 4.700000 # SC32-Na + pair_coeff @atom:SC32_bSC32_aSC32_dSC32_iSC32 @atom:Nd_bNd_aNd_dNd_iNd lj/gromacs/coul/gromacs 0.645316 4.700000 # SC32-Nd + pair_coeff @atom:SC32_bSC32_aSC32_dSC32_iSC32 @atom:Nda_bNda_aNda_dNda_iNda lj/gromacs/coul/gromacs 0.645316 4.700000 # SC32-Nda + pair_coeff @atom:SC32_bSC32_aSC32_dSC32_iSC32 @atom:P1_bP1_aP1_dP1_iP1 lj/gromacs/coul/gromacs 0.836521 4.700000 # SC32-P1 + pair_coeff @atom:SC32_bSC32_aSC32_dSC32_iSC32 @atom:P2_bP2_aP2_dP2_iP2 lj/gromacs/coul/gromacs 0.740919 4.700000 # SC32-P2 + pair_coeff @atom:SC32_bSC32_aSC32_dSC32_iSC32 @atom:P3_bP3_aP3_dP3_iP3 lj/gromacs/coul/gromacs 0.740919 4.700000 # SC32-P3 + pair_coeff @atom:SC32_bSC32_aSC32_dSC32_iSC32 @atom:P4_bP4_aP4_dP4_iP4 lj/gromacs/coul/gromacs 0.645316 4.700000 # SC32-P4 + pair_coeff @atom:SC32_bSC32_aSC32_dSC32_iSC32 @atom:P5_bP5_aP5_dP5_iP5 lj/gromacs/coul/gromacs 0.645316 4.700000 # SC32-P5 + pair_coeff @atom:SC32_bSC32_aSC32_dSC32_iSC32 @atom:Q0_bQ0_aQ0_dQ0_iQ0 lj/gromacs/coul/gromacs 0.549714 4.700000 # SC32-Q0 + pair_coeff @atom:SC32_bSC32_aSC32_dSC32_iSC32 @atom:Qa_bQa_aQa_dQa_iQa lj/gromacs/coul/gromacs 0.549714 4.700000 # SC32-Qa + pair_coeff @atom:SC32_bSC32_aSC32_dSC32_iSC32 @atom:Qd_bQd_aQd_dQd_iQd lj/gromacs/coul/gromacs 0.549714 4.700000 # SC32-Qd + pair_coeff @atom:SC32_bSC32_aSC32_dSC32_iSC32 @atom:Qda_bQda_aQda_dQda_iQda lj/gromacs/coul/gromacs 0.549714 4.700000 # SC32-Qda + pair_coeff @atom:SC32_bSC32_aSC32_dSC32_iSC32 @atom:SC1_bSC1_aSC1_dSC1_iSC1 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC32-SC1 + pair_coeff @atom:SC32_bSC32_aSC32_dSC32_iSC32 @atom:SC2_bSC2_aSC2_dSC2_iSC2 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC32-SC2 + pair_coeff @atom:SC32_bSC32_aSC32_dSC32_iSC32 @atom:SC32_bSC32_aSC32_dSC32_iSC32 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC32-SC32 + pair_coeff @atom:SC32_bSC32_aSC32_dSC32_iSC32 @atom:SC3_bSC3_aSC3_dSC3_iSC3 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC32-SC3 + pair_coeff @atom:SC32_bSC32_aSC32_dSC32_iSC32 @atom:SC4_bSC4_aSC4_dSC4_iSC4 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC32-SC4 + pair_coeff @atom:SC32_bSC32_aSC32_dSC32_iSC32 @atom:SC5_bSC5_aSC5_dSC5_iSC5 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC32-SC5 + pair_coeff @atom:SC32_bSC32_aSC32_dSC32_iSC32 @atom:SN0_bSN0_aSN0_dSN0_iSN0 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC32-SN0 + pair_coeff @atom:SC32_bSC32_aSC32_dSC32_iSC32 @atom:SNa_bSNa_aSNa_dSNa_iSNa lj/gromacs/coul/gromacs 0.483987 4.300000 # SC32-SNa + pair_coeff @atom:SC32_bSC32_aSC32_dSC32_iSC32 @atom:SNd_bSNd_aSNd_dSNd_iSNd lj/gromacs/coul/gromacs 0.483987 4.300000 # SC32-SNd + pair_coeff @atom:SC32_bSC32_aSC32_dSC32_iSC32 @atom:SNda_bSNda_aSNda_dSNda_iSNda lj/gromacs/coul/gromacs 0.483987 4.300000 # SC32-SNda + pair_coeff @atom:SC32_bSC32_aSC32_dSC32_iSC32 @atom:SP1_bSP1_aSP1_dSP1_iSP1 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC32-SP1 + pair_coeff @atom:SC32_bSC32_aSC32_dSC32_iSC32 @atom:SP2_bSP2_aSP2_dSP2_iSP2 lj/gromacs/coul/gromacs 0.555689 4.300000 # SC32-SP2 + pair_coeff @atom:SC32_bSC32_aSC32_dSC32_iSC32 @atom:SP3_bSP3_aSP3_dSP3_iSP3 lj/gromacs/coul/gromacs 0.555689 4.300000 # SC32-SP3 + pair_coeff @atom:SC32_bSC32_aSC32_dSC32_iSC32 @atom:SP4_bSP4_aSP4_dSP4_iSP4 lj/gromacs/coul/gromacs 0.483987 4.300000 # SC32-SP4 + pair_coeff @atom:SC32_bSC32_aSC32_dSC32_iSC32 @atom:SP5_bSP5_aSP5_dSP5_iSP5 lj/gromacs/coul/gromacs 0.483987 4.300000 # SC32-SP5 + pair_coeff @atom:SC32_bSC32_aSC32_dSC32_iSC32 @atom:SQ0_bSQ0_aSQ0_dSQ0_iSQ0 lj/gromacs/coul/gromacs 0.412285 4.300000 # SC32-SQ0 + pair_coeff @atom:SC32_bSC32_aSC32_dSC32_iSC32 @atom:SQa_bSQa_aSQa_dSQa_iSQa lj/gromacs/coul/gromacs 0.412285 4.300000 # SC32-SQa + pair_coeff @atom:SC32_bSC32_aSC32_dSC32_iSC32 @atom:SQd_bSQd_aSQd_dSQd_iSQd lj/gromacs/coul/gromacs 0.412285 4.300000 # SC32-SQd + pair_coeff @atom:SC32_bSC32_aSC32_dSC32_iSC32 @atom:SQda_bSQda_aSQda_dSQda_iSQda lj/gromacs/coul/gromacs 0.412285 4.300000 # SC32-SQda + pair_coeff @atom:SC32_bSC32_aSC32_dSC32_iSC32 @atom:C41_bC4_aC41_dC41_iC41 lj/gromacs/coul/gromacs 0.836521 4.700000 # SC32-C41 + pair_coeff @atom:SC32_bSC32_aSC32_dSC32_iSC32 @atom:C42_bC4_aC42_dC42_iC42 lj/gromacs/coul/gromacs 0.836521 4.700000 # SC32-C42 + pair_coeff @atom:SC32_bSC32_aSC32_dSC32_iSC32 @atom:Na1_bNa1_aNa1_dNa1_iNa1 lj/gromacs/coul/gromacs 0.645316 4.700000 # SC32-Na1 + pair_coeff @atom:SC32_bSC32_aSC32_dSC32_iSC32 @atom:Na2_bNa2_aNa2_dNa2_iNa2 lj/gromacs/coul/gromacs 0.645316 4.700000 # SC32-Na2 + pair_coeff @atom:SC32_bSC32_aSC32_dSC32_iSC32 @atom:Qa1_bQa1_aQa1_dQa1_iQa1 lj/gromacs/coul/gromacs 0.549714 4.700000 # SC32-Qa1 + pair_coeff @atom:SC32_bSC32_aSC32_dSC32_iSC32 @atom:Qa2_bQa2_aQa2_dQa2_iQa2 lj/gromacs/coul/gromacs 0.549714 4.700000 # SC32-Qa2 + pair_coeff @atom:SC32_bSC32_aSC32_dSC32_iSC32 @atom:SC11_bSC11_aSC11_dSC11_iSC11 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC32-SC11 + pair_coeff @atom:SC32_bSC32_aSC32_dSC32_iSC32 @atom:SC110_bSC110_aSC110_dSC110_iSC110 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC32-SC110 + pair_coeff @atom:SC32_bSC32_aSC32_dSC32_iSC32 @atom:SC111_bSC111_aSC111_dSC111_iSC111 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC32-SC111 + pair_coeff @atom:SC32_bSC32_aSC32_dSC32_iSC32 @atom:SC112_bSC112_aSC112_dSC112_iSC112 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC32-SC112 + pair_coeff @atom:SC32_bSC32_aSC32_dSC32_iSC32 @atom:SC12_bSC12_aSC12_dSC12_iSC12 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC32-SC12 + pair_coeff @atom:SC32_bSC32_aSC32_dSC32_iSC32 @atom:SC13_bSC13_aSC13_dSC13_iSC13 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC32-SC13 + pair_coeff @atom:SC32_bSC32_aSC32_dSC32_iSC32 @atom:SC14_bSC14_aSC14_dSC14_iSC14 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC32-SC14 + pair_coeff @atom:SC32_bSC32_aSC32_dSC32_iSC32 @atom:SC15_bSC15_aSC15_dSC15_iSC15 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC32-SC15 + pair_coeff @atom:SC32_bSC32_aSC32_dSC32_iSC32 @atom:SC16_bSC16_aSC16_dSC16_iSC16 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC32-SC16 + pair_coeff @atom:SC32_bSC32_aSC32_dSC32_iSC32 @atom:SC17_bSC17_aSC17_dSC17_iSC17 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC32-SC17 + pair_coeff @atom:SC32_bSC32_aSC32_dSC32_iSC32 @atom:SC18_bSC18_aSC18_dSC18_iSC18 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC32-SC18 + pair_coeff @atom:SC32_bSC32_aSC32_dSC32_iSC32 @atom:SC19_bSC19_aSC19_dSC19_iSC19 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC32-SC19 + pair_coeff @atom:SC32_bSC32_aSC32_dSC32_iSC32 @atom:SC31_bSC31_aSC31_dSC31_iSC31 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC32-SC31 + pair_coeff @atom:SC33_bSC33_aSC33_dSC33_iSC33 @atom:BP4_bBP4_aBP4_dBP4_iBP4 lj/gromacs/coul/gromacs 0.645316 4.700000 # SC33-BP4 + pair_coeff @atom:SC33_bSC33_aSC33_dSC33_iSC33 @atom:C1_bC1_aC1_dC1_iC1 lj/gromacs/coul/gromacs 0.836521 4.700000 # SC33-C1 + pair_coeff @atom:SC33_bSC33_aSC33_dSC33_iSC33 @atom:C2_bC2_aC2_dC2_iC2 lj/gromacs/coul/gromacs 0.836521 4.700000 # SC33-C2 + pair_coeff @atom:SC33_bSC33_aSC33_dSC33_iSC33 @atom:C3_bC3_aC3_dC3_iC3 lj/gromacs/coul/gromacs 0.836521 4.700000 # SC33-C3 + pair_coeff @atom:SC33_bSC33_aSC33_dSC33_iSC33 @atom:C4_bC4_aC4_dC4_iC4 lj/gromacs/coul/gromacs 0.836521 4.700000 # SC33-C4 + pair_coeff @atom:SC33_bSC33_aSC33_dSC33_iSC33 @atom:C5_bC5_aC5_dC5_iC5 lj/gromacs/coul/gromacs 0.836521 4.700000 # SC33-C5 + pair_coeff @atom:SC33_bSC33_aSC33_dSC33_iSC33 @atom:N0_bN0_aN0_dN0_iN0 lj/gromacs/coul/gromacs 0.836521 4.700000 # SC33-N0 + pair_coeff @atom:SC33_bSC33_aSC33_dSC33_iSC33 @atom:Na_bNa_aNa_dNa_iNa lj/gromacs/coul/gromacs 0.645316 4.700000 # SC33-Na + pair_coeff @atom:SC33_bSC33_aSC33_dSC33_iSC33 @atom:Nd_bNd_aNd_dNd_iNd lj/gromacs/coul/gromacs 0.645316 4.700000 # SC33-Nd + pair_coeff @atom:SC33_bSC33_aSC33_dSC33_iSC33 @atom:Nda_bNda_aNda_dNda_iNda lj/gromacs/coul/gromacs 0.645316 4.700000 # SC33-Nda + pair_coeff @atom:SC33_bSC33_aSC33_dSC33_iSC33 @atom:P1_bP1_aP1_dP1_iP1 lj/gromacs/coul/gromacs 0.836521 4.700000 # SC33-P1 + pair_coeff @atom:SC33_bSC33_aSC33_dSC33_iSC33 @atom:P2_bP2_aP2_dP2_iP2 lj/gromacs/coul/gromacs 0.740919 4.700000 # SC33-P2 + pair_coeff @atom:SC33_bSC33_aSC33_dSC33_iSC33 @atom:P3_bP3_aP3_dP3_iP3 lj/gromacs/coul/gromacs 0.740919 4.700000 # SC33-P3 + pair_coeff @atom:SC33_bSC33_aSC33_dSC33_iSC33 @atom:P4_bP4_aP4_dP4_iP4 lj/gromacs/coul/gromacs 0.645316 4.700000 # SC33-P4 + pair_coeff @atom:SC33_bSC33_aSC33_dSC33_iSC33 @atom:P5_bP5_aP5_dP5_iP5 lj/gromacs/coul/gromacs 0.645316 4.700000 # SC33-P5 + pair_coeff @atom:SC33_bSC33_aSC33_dSC33_iSC33 @atom:Q0_bQ0_aQ0_dQ0_iQ0 lj/gromacs/coul/gromacs 0.549714 4.700000 # SC33-Q0 + pair_coeff @atom:SC33_bSC33_aSC33_dSC33_iSC33 @atom:Qa_bQa_aQa_dQa_iQa lj/gromacs/coul/gromacs 0.549714 4.700000 # SC33-Qa + pair_coeff @atom:SC33_bSC33_aSC33_dSC33_iSC33 @atom:Qd_bQd_aQd_dQd_iQd lj/gromacs/coul/gromacs 0.549714 4.700000 # SC33-Qd + pair_coeff @atom:SC33_bSC33_aSC33_dSC33_iSC33 @atom:Qda_bQda_aQda_dQda_iQda lj/gromacs/coul/gromacs 0.549714 4.700000 # SC33-Qda + pair_coeff @atom:SC33_bSC33_aSC33_dSC33_iSC33 @atom:SC1_bSC1_aSC1_dSC1_iSC1 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC33-SC1 + pair_coeff @atom:SC33_bSC33_aSC33_dSC33_iSC33 @atom:SC2_bSC2_aSC2_dSC2_iSC2 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC33-SC2 + pair_coeff @atom:SC33_bSC33_aSC33_dSC33_iSC33 @atom:SC33_bSC33_aSC33_dSC33_iSC33 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC33-SC33 + pair_coeff @atom:SC33_bSC33_aSC33_dSC33_iSC33 @atom:SC3_bSC3_aSC3_dSC3_iSC3 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC33-SC3 + pair_coeff @atom:SC33_bSC33_aSC33_dSC33_iSC33 @atom:SC4_bSC4_aSC4_dSC4_iSC4 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC33-SC4 + pair_coeff @atom:SC33_bSC33_aSC33_dSC33_iSC33 @atom:SC5_bSC5_aSC5_dSC5_iSC5 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC33-SC5 + pair_coeff @atom:SC33_bSC33_aSC33_dSC33_iSC33 @atom:SN0_bSN0_aSN0_dSN0_iSN0 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC33-SN0 + pair_coeff @atom:SC33_bSC33_aSC33_dSC33_iSC33 @atom:SNa_bSNa_aSNa_dSNa_iSNa lj/gromacs/coul/gromacs 0.483987 4.300000 # SC33-SNa + pair_coeff @atom:SC33_bSC33_aSC33_dSC33_iSC33 @atom:SNd_bSNd_aSNd_dSNd_iSNd lj/gromacs/coul/gromacs 0.483987 4.300000 # SC33-SNd + pair_coeff @atom:SC33_bSC33_aSC33_dSC33_iSC33 @atom:SNda_bSNda_aSNda_dSNda_iSNda lj/gromacs/coul/gromacs 0.483987 4.300000 # SC33-SNda + pair_coeff @atom:SC33_bSC33_aSC33_dSC33_iSC33 @atom:SP1_bSP1_aSP1_dSP1_iSP1 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC33-SP1 + pair_coeff @atom:SC33_bSC33_aSC33_dSC33_iSC33 @atom:SP2_bSP2_aSP2_dSP2_iSP2 lj/gromacs/coul/gromacs 0.555689 4.300000 # SC33-SP2 + pair_coeff @atom:SC33_bSC33_aSC33_dSC33_iSC33 @atom:SP3_bSP3_aSP3_dSP3_iSP3 lj/gromacs/coul/gromacs 0.555689 4.300000 # SC33-SP3 + pair_coeff @atom:SC33_bSC33_aSC33_dSC33_iSC33 @atom:SP4_bSP4_aSP4_dSP4_iSP4 lj/gromacs/coul/gromacs 0.483987 4.300000 # SC33-SP4 + pair_coeff @atom:SC33_bSC33_aSC33_dSC33_iSC33 @atom:SP5_bSP5_aSP5_dSP5_iSP5 lj/gromacs/coul/gromacs 0.483987 4.300000 # SC33-SP5 + pair_coeff @atom:SC33_bSC33_aSC33_dSC33_iSC33 @atom:SQ0_bSQ0_aSQ0_dSQ0_iSQ0 lj/gromacs/coul/gromacs 0.412285 4.300000 # SC33-SQ0 + pair_coeff @atom:SC33_bSC33_aSC33_dSC33_iSC33 @atom:SQa_bSQa_aSQa_dSQa_iSQa lj/gromacs/coul/gromacs 0.412285 4.300000 # SC33-SQa + pair_coeff @atom:SC33_bSC33_aSC33_dSC33_iSC33 @atom:SQd_bSQd_aSQd_dSQd_iSQd lj/gromacs/coul/gromacs 0.412285 4.300000 # SC33-SQd + pair_coeff @atom:SC33_bSC33_aSC33_dSC33_iSC33 @atom:SQda_bSQda_aSQda_dSQda_iSQda lj/gromacs/coul/gromacs 0.412285 4.300000 # SC33-SQda + pair_coeff @atom:SC33_bSC33_aSC33_dSC33_iSC33 @atom:C41_bC4_aC41_dC41_iC41 lj/gromacs/coul/gromacs 0.836521 4.700000 # SC33-C41 + pair_coeff @atom:SC33_bSC33_aSC33_dSC33_iSC33 @atom:C42_bC4_aC42_dC42_iC42 lj/gromacs/coul/gromacs 0.836521 4.700000 # SC33-C42 + pair_coeff @atom:SC33_bSC33_aSC33_dSC33_iSC33 @atom:Na1_bNa1_aNa1_dNa1_iNa1 lj/gromacs/coul/gromacs 0.645316 4.700000 # SC33-Na1 + pair_coeff @atom:SC33_bSC33_aSC33_dSC33_iSC33 @atom:Na2_bNa2_aNa2_dNa2_iNa2 lj/gromacs/coul/gromacs 0.645316 4.700000 # SC33-Na2 + pair_coeff @atom:SC33_bSC33_aSC33_dSC33_iSC33 @atom:Qa1_bQa1_aQa1_dQa1_iQa1 lj/gromacs/coul/gromacs 0.549714 4.700000 # SC33-Qa1 + pair_coeff @atom:SC33_bSC33_aSC33_dSC33_iSC33 @atom:Qa2_bQa2_aQa2_dQa2_iQa2 lj/gromacs/coul/gromacs 0.549714 4.700000 # SC33-Qa2 + pair_coeff @atom:SC33_bSC33_aSC33_dSC33_iSC33 @atom:SC11_bSC11_aSC11_dSC11_iSC11 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC33-SC11 + pair_coeff @atom:SC33_bSC33_aSC33_dSC33_iSC33 @atom:SC110_bSC110_aSC110_dSC110_iSC110 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC33-SC110 + pair_coeff @atom:SC33_bSC33_aSC33_dSC33_iSC33 @atom:SC111_bSC111_aSC111_dSC111_iSC111 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC33-SC111 + pair_coeff @atom:SC33_bSC33_aSC33_dSC33_iSC33 @atom:SC112_bSC112_aSC112_dSC112_iSC112 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC33-SC112 + pair_coeff @atom:SC33_bSC33_aSC33_dSC33_iSC33 @atom:SC12_bSC12_aSC12_dSC12_iSC12 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC33-SC12 + pair_coeff @atom:SC33_bSC33_aSC33_dSC33_iSC33 @atom:SC13_bSC13_aSC13_dSC13_iSC13 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC33-SC13 + pair_coeff @atom:SC33_bSC33_aSC33_dSC33_iSC33 @atom:SC14_bSC14_aSC14_dSC14_iSC14 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC33-SC14 + pair_coeff @atom:SC33_bSC33_aSC33_dSC33_iSC33 @atom:SC15_bSC15_aSC15_dSC15_iSC15 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC33-SC15 + pair_coeff @atom:SC33_bSC33_aSC33_dSC33_iSC33 @atom:SC16_bSC16_aSC16_dSC16_iSC16 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC33-SC16 + pair_coeff @atom:SC33_bSC33_aSC33_dSC33_iSC33 @atom:SC17_bSC17_aSC17_dSC17_iSC17 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC33-SC17 + pair_coeff @atom:SC33_bSC33_aSC33_dSC33_iSC33 @atom:SC18_bSC18_aSC18_dSC18_iSC18 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC33-SC18 + pair_coeff @atom:SC33_bSC33_aSC33_dSC33_iSC33 @atom:SC19_bSC19_aSC19_dSC19_iSC19 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC33-SC19 + pair_coeff @atom:SC33_bSC33_aSC33_dSC33_iSC33 @atom:SC31_bSC31_aSC31_dSC31_iSC31 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC33-SC31 + pair_coeff @atom:SC33_bSC33_aSC33_dSC33_iSC33 @atom:SC32_bSC32_aSC32_dSC32_iSC32 lj/gromacs/coul/gromacs 0.627391 4.300000 # SC33-SC32 + pair_coeff @atom:SP11_bSP11_aSP11_dSP11_iSP11 @atom:BP4_bBP4_aBP4_dBP4_iBP4 lj/gromacs/coul/gromacs 1.075527 4.700000 # SP11-BP4 + pair_coeff @atom:SP11_bSP11_aSP11_dSP11_iSP11 @atom:C1_bC1_aC1_dC1_iC1 lj/gromacs/coul/gromacs 0.645316 4.700000 # SP11-C1 + pair_coeff @atom:SP11_bSP11_aSP11_dSP11_iSP11 @atom:C2_bC2_aC2_dC2_iC2 lj/gromacs/coul/gromacs 0.740919 4.700000 # SP11-C2 + pair_coeff @atom:SP11_bSP11_aSP11_dSP11_iSP11 @atom:C3_bC3_aC3_dC3_iC3 lj/gromacs/coul/gromacs 0.836521 4.700000 # SP11-C3 + pair_coeff @atom:SP11_bSP11_aSP11_dSP11_iSP11 @atom:C4_bC4_aC4_dC4_iC4 lj/gromacs/coul/gromacs 0.836521 4.700000 # SP11-C4 + pair_coeff @atom:SP11_bSP11_aSP11_dSP11_iSP11 @atom:C5_bC5_aC5_dC5_iC5 lj/gromacs/coul/gromacs 0.836521 4.700000 # SP11-C5 + pair_coeff @atom:SP11_bSP11_aSP11_dSP11_iSP11 @atom:N0_bN0_aN0_dN0_iN0 lj/gromacs/coul/gromacs 0.956024 4.700000 # SP11-N0 + pair_coeff @atom:SP11_bSP11_aSP11_dSP11_iSP11 @atom:Na_bNa_aNa_dNa_iNa lj/gromacs/coul/gromacs 1.075527 4.700000 # SP11-Na + pair_coeff @atom:SP11_bSP11_aSP11_dSP11_iSP11 @atom:Nd_bNd_aNd_dNd_iNd lj/gromacs/coul/gromacs 1.075527 4.700000 # SP11-Nd + pair_coeff @atom:SP11_bSP11_aSP11_dSP11_iSP11 @atom:Nda_bNda_aNda_dNda_iNda lj/gromacs/coul/gromacs 1.075527 4.700000 # SP11-Nda + pair_coeff @atom:SP11_bSP11_aSP11_dSP11_iSP11 @atom:P1_bP1_aP1_dP1_iP1 lj/gromacs/coul/gromacs 1.075527 4.700000 # SP11-P1 + pair_coeff @atom:SP11_bSP11_aSP11_dSP11_iSP11 @atom:P2_bP2_aP2_dP2_iP2 lj/gromacs/coul/gromacs 1.075527 4.700000 # SP11-P2 + pair_coeff @atom:SP11_bSP11_aSP11_dSP11_iSP11 @atom:P3_bP3_aP3_dP3_iP3 lj/gromacs/coul/gromacs 1.075527 4.700000 # SP11-P3 + pair_coeff @atom:SP11_bSP11_aSP11_dSP11_iSP11 @atom:P4_bP4_aP4_dP4_iP4 lj/gromacs/coul/gromacs 1.075527 4.700000 # SP11-P4 + pair_coeff @atom:SP11_bSP11_aSP11_dSP11_iSP11 @atom:P5_bP5_aP5_dP5_iP5 lj/gromacs/coul/gromacs 1.338434 4.700000 # SP11-P5 + pair_coeff @atom:SP11_bSP11_aSP11_dSP11_iSP11 @atom:Q0_bQ0_aQ0_dQ0_iQ0 lj/gromacs/coul/gromacs 0.956024 4.700000 # SP11-Q0 + pair_coeff @atom:SP11_bSP11_aSP11_dSP11_iSP11 @atom:Qa_bQa_aQa_dQa_iQa lj/gromacs/coul/gromacs 1.195030 4.700000 # SP11-Qa + pair_coeff @atom:SP11_bSP11_aSP11_dSP11_iSP11 @atom:Qd_bQd_aQd_dQd_iQd lj/gromacs/coul/gromacs 1.195030 4.700000 # SP11-Qd + pair_coeff @atom:SP11_bSP11_aSP11_dSP11_iSP11 @atom:Qda_bQda_aQda_dQda_iQda lj/gromacs/coul/gromacs 1.195030 4.700000 # SP11-Qda + pair_coeff @atom:SP11_bSP11_aSP11_dSP11_iSP11 @atom:SC1_bSC1_aSC1_dSC1_iSC1 lj/gromacs/coul/gromacs 0.483987 4.300000 # SP11-SC1 + pair_coeff @atom:SP11_bSP11_aSP11_dSP11_iSP11 @atom:SC2_bSC2_aSC2_dSC2_iSC2 lj/gromacs/coul/gromacs 0.555689 4.300000 # SP11-SC2 + pair_coeff @atom:SP11_bSP11_aSP11_dSP11_iSP11 @atom:SC3_bSC3_aSC3_dSC3_iSC3 lj/gromacs/coul/gromacs 0.627391 4.300000 # SP11-SC3 + pair_coeff @atom:SP11_bSP11_aSP11_dSP11_iSP11 @atom:SC4_bSC4_aSC4_dSC4_iSC4 lj/gromacs/coul/gromacs 0.627391 4.300000 # SP11-SC4 + pair_coeff @atom:SP11_bSP11_aSP11_dSP11_iSP11 @atom:SC5_bSC5_aSC5_dSC5_iSC5 lj/gromacs/coul/gromacs 0.627391 4.300000 # SP11-SC5 + pair_coeff @atom:SP11_bSP11_aSP11_dSP11_iSP11 @atom:SN0_bSN0_aSN0_dSN0_iSN0 lj/gromacs/coul/gromacs 0.717018 4.300000 # SP11-SN0 + pair_coeff @atom:SP11_bSP11_aSP11_dSP11_iSP11 @atom:SNa_bSNa_aSNa_dSNa_iSNa lj/gromacs/coul/gromacs 0.806645 4.300000 # SP11-SNa + pair_coeff @atom:SP11_bSP11_aSP11_dSP11_iSP11 @atom:SNd_bSNd_aSNd_dSNd_iSNd lj/gromacs/coul/gromacs 0.806645 4.300000 # SP11-SNd + pair_coeff @atom:SP11_bSP11_aSP11_dSP11_iSP11 @atom:SNda_bSNda_aSNda_dSNda_iSNda lj/gromacs/coul/gromacs 0.806645 4.300000 # SP11-SNda + pair_coeff @atom:SP11_bSP11_aSP11_dSP11_iSP11 @atom:SP11_bSP11_aSP11_dSP11_iSP11 lj/gromacs/coul/gromacs 0.806645 4.300000 # SP11-SP11 + pair_coeff @atom:SP11_bSP11_aSP11_dSP11_iSP11 @atom:SP1_bSP1_aSP1_dSP1_iSP1 lj/gromacs/coul/gromacs 0.806645 4.300000 # SP11-SP1 + pair_coeff @atom:SP11_bSP11_aSP11_dSP11_iSP11 @atom:SP2_bSP2_aSP2_dSP2_iSP2 lj/gromacs/coul/gromacs 0.806645 4.300000 # SP11-SP2 + pair_coeff @atom:SP11_bSP11_aSP11_dSP11_iSP11 @atom:SP3_bSP3_aSP3_dSP3_iSP3 lj/gromacs/coul/gromacs 0.806645 4.300000 # SP11-SP3 + pair_coeff @atom:SP11_bSP11_aSP11_dSP11_iSP11 @atom:SP4_bSP4_aSP4_dSP4_iSP4 lj/gromacs/coul/gromacs 0.806645 4.300000 # SP11-SP4 + pair_coeff @atom:SP11_bSP11_aSP11_dSP11_iSP11 @atom:SP5_bSP5_aSP5_dSP5_iSP5 lj/gromacs/coul/gromacs 1.003825 4.300000 # SP11-SP5 + pair_coeff @atom:SP11_bSP11_aSP11_dSP11_iSP11 @atom:SQ0_bSQ0_aSQ0_dSQ0_iSQ0 lj/gromacs/coul/gromacs 0.717018 4.300000 # SP11-SQ0 + pair_coeff @atom:SP11_bSP11_aSP11_dSP11_iSP11 @atom:SQa_bSQa_aSQa_dSQa_iSQa lj/gromacs/coul/gromacs 0.896273 4.300000 # SP11-SQa + pair_coeff @atom:SP11_bSP11_aSP11_dSP11_iSP11 @atom:SQd_bSQd_aSQd_dSQd_iSQd lj/gromacs/coul/gromacs 0.896273 4.300000 # SP11-SQd + pair_coeff @atom:SP11_bSP11_aSP11_dSP11_iSP11 @atom:SQda_bSQda_aSQda_dSQda_iSQda lj/gromacs/coul/gromacs 0.896273 4.300000 # SP11-SQda + pair_coeff @atom:SP11_bSP11_aSP11_dSP11_iSP11 @atom:C41_bC4_aC41_dC41_iC41 lj/gromacs/coul/gromacs 0.836521 4.700000 # SP11-C41 + pair_coeff @atom:SP11_bSP11_aSP11_dSP11_iSP11 @atom:C42_bC4_aC42_dC42_iC42 lj/gromacs/coul/gromacs 0.836521 4.700000 # SP11-C42 + pair_coeff @atom:SP11_bSP11_aSP11_dSP11_iSP11 @atom:Na1_bNa1_aNa1_dNa1_iNa1 lj/gromacs/coul/gromacs 1.075527 4.700000 # SP11-Na1 + pair_coeff @atom:SP11_bSP11_aSP11_dSP11_iSP11 @atom:Na2_bNa2_aNa2_dNa2_iNa2 lj/gromacs/coul/gromacs 1.075527 4.700000 # SP11-Na2 + pair_coeff @atom:SP11_bSP11_aSP11_dSP11_iSP11 @atom:Qa1_bQa1_aQa1_dQa1_iQa1 lj/gromacs/coul/gromacs 1.195030 4.700000 # SP11-Qa1 + pair_coeff @atom:SP11_bSP11_aSP11_dSP11_iSP11 @atom:Qa2_bQa2_aQa2_dQa2_iQa2 lj/gromacs/coul/gromacs 1.195030 4.700000 # SP11-Qa2 + pair_coeff @atom:SP11_bSP11_aSP11_dSP11_iSP11 @atom:SC11_bSC11_aSC11_dSC11_iSC11 lj/gromacs/coul/gromacs 0.483987 4.300000 # SP11-SC11 + pair_coeff @atom:SP11_bSP11_aSP11_dSP11_iSP11 @atom:SC110_bSC110_aSC110_dSC110_iSC110 lj/gromacs/coul/gromacs 0.483987 4.300000 # SP11-SC110 + pair_coeff @atom:SP11_bSP11_aSP11_dSP11_iSP11 @atom:SC111_bSC111_aSC111_dSC111_iSC111 lj/gromacs/coul/gromacs 0.483987 4.300000 # SP11-SC111 + pair_coeff @atom:SP11_bSP11_aSP11_dSP11_iSP11 @atom:SC112_bSC112_aSC112_dSC112_iSC112 lj/gromacs/coul/gromacs 0.483987 4.300000 # SP11-SC112 + pair_coeff @atom:SP11_bSP11_aSP11_dSP11_iSP11 @atom:SC12_bSC12_aSC12_dSC12_iSC12 lj/gromacs/coul/gromacs 0.483987 4.300000 # SP11-SC12 + pair_coeff @atom:SP11_bSP11_aSP11_dSP11_iSP11 @atom:SC13_bSC13_aSC13_dSC13_iSC13 lj/gromacs/coul/gromacs 0.483987 4.300000 # SP11-SC13 + pair_coeff @atom:SP11_bSP11_aSP11_dSP11_iSP11 @atom:SC14_bSC14_aSC14_dSC14_iSC14 lj/gromacs/coul/gromacs 0.483987 4.300000 # SP11-SC14 + pair_coeff @atom:SP11_bSP11_aSP11_dSP11_iSP11 @atom:SC15_bSC15_aSC15_dSC15_iSC15 lj/gromacs/coul/gromacs 0.483987 4.300000 # SP11-SC15 + pair_coeff @atom:SP11_bSP11_aSP11_dSP11_iSP11 @atom:SC16_bSC16_aSC16_dSC16_iSC16 lj/gromacs/coul/gromacs 0.483987 4.300000 # SP11-SC16 + pair_coeff @atom:SP11_bSP11_aSP11_dSP11_iSP11 @atom:SC17_bSC17_aSC17_dSC17_iSC17 lj/gromacs/coul/gromacs 0.483987 4.300000 # SP11-SC17 + pair_coeff @atom:SP11_bSP11_aSP11_dSP11_iSP11 @atom:SC18_bSC18_aSC18_dSC18_iSC18 lj/gromacs/coul/gromacs 0.483987 4.300000 # SP11-SC18 + pair_coeff @atom:SP11_bSP11_aSP11_dSP11_iSP11 @atom:SC19_bSC19_aSC19_dSC19_iSC19 lj/gromacs/coul/gromacs 0.483987 4.300000 # SP11-SC19 + pair_coeff @atom:SP11_bSP11_aSP11_dSP11_iSP11 @atom:SC31_bSC31_aSC31_dSC31_iSC31 lj/gromacs/coul/gromacs 0.627391 4.300000 # SP11-SC31 + pair_coeff @atom:SP11_bSP11_aSP11_dSP11_iSP11 @atom:SC32_bSC32_aSC32_dSC32_iSC32 lj/gromacs/coul/gromacs 0.627391 4.300000 # SP11-SC32 + pair_coeff @atom:SP11_bSP11_aSP11_dSP11_iSP11 @atom:SC33_bSC33_aSC33_dSC33_iSC33 lj/gromacs/coul/gromacs 0.627391 4.300000 # SP11-SC33 + pair_coeff @atom:SP12_bSP12_aSP12_dSP12_iSP12 @atom:BP4_bBP4_aBP4_dBP4_iBP4 lj/gromacs/coul/gromacs 1.075527 4.700000 # SP12-BP4 + pair_coeff @atom:SP12_bSP12_aSP12_dSP12_iSP12 @atom:C1_bC1_aC1_dC1_iC1 lj/gromacs/coul/gromacs 0.645316 4.700000 # SP12-C1 + pair_coeff @atom:SP12_bSP12_aSP12_dSP12_iSP12 @atom:C2_bC2_aC2_dC2_iC2 lj/gromacs/coul/gromacs 0.740919 4.700000 # SP12-C2 + pair_coeff @atom:SP12_bSP12_aSP12_dSP12_iSP12 @atom:C3_bC3_aC3_dC3_iC3 lj/gromacs/coul/gromacs 0.836521 4.700000 # SP12-C3 + pair_coeff @atom:SP12_bSP12_aSP12_dSP12_iSP12 @atom:C4_bC4_aC4_dC4_iC4 lj/gromacs/coul/gromacs 0.836521 4.700000 # SP12-C4 + pair_coeff @atom:SP12_bSP12_aSP12_dSP12_iSP12 @atom:C5_bC5_aC5_dC5_iC5 lj/gromacs/coul/gromacs 0.836521 4.700000 # SP12-C5 + pair_coeff @atom:SP12_bSP12_aSP12_dSP12_iSP12 @atom:N0_bN0_aN0_dN0_iN0 lj/gromacs/coul/gromacs 0.956024 4.700000 # SP12-N0 + pair_coeff @atom:SP12_bSP12_aSP12_dSP12_iSP12 @atom:Na_bNa_aNa_dNa_iNa lj/gromacs/coul/gromacs 1.075527 4.700000 # SP12-Na + pair_coeff @atom:SP12_bSP12_aSP12_dSP12_iSP12 @atom:Nd_bNd_aNd_dNd_iNd lj/gromacs/coul/gromacs 1.075527 4.700000 # SP12-Nd + pair_coeff @atom:SP12_bSP12_aSP12_dSP12_iSP12 @atom:Nda_bNda_aNda_dNda_iNda lj/gromacs/coul/gromacs 1.075527 4.700000 # SP12-Nda + pair_coeff @atom:SP12_bSP12_aSP12_dSP12_iSP12 @atom:P1_bP1_aP1_dP1_iP1 lj/gromacs/coul/gromacs 1.075527 4.700000 # SP12-P1 + pair_coeff @atom:SP12_bSP12_aSP12_dSP12_iSP12 @atom:P2_bP2_aP2_dP2_iP2 lj/gromacs/coul/gromacs 1.075527 4.700000 # SP12-P2 + pair_coeff @atom:SP12_bSP12_aSP12_dSP12_iSP12 @atom:P3_bP3_aP3_dP3_iP3 lj/gromacs/coul/gromacs 1.075527 4.700000 # SP12-P3 + pair_coeff @atom:SP12_bSP12_aSP12_dSP12_iSP12 @atom:P4_bP4_aP4_dP4_iP4 lj/gromacs/coul/gromacs 1.075527 4.700000 # SP12-P4 + pair_coeff @atom:SP12_bSP12_aSP12_dSP12_iSP12 @atom:P5_bP5_aP5_dP5_iP5 lj/gromacs/coul/gromacs 1.338434 4.700000 # SP12-P5 + pair_coeff @atom:SP12_bSP12_aSP12_dSP12_iSP12 @atom:Q0_bQ0_aQ0_dQ0_iQ0 lj/gromacs/coul/gromacs 0.956024 4.700000 # SP12-Q0 + pair_coeff @atom:SP12_bSP12_aSP12_dSP12_iSP12 @atom:Qa_bQa_aQa_dQa_iQa lj/gromacs/coul/gromacs 1.195030 4.700000 # SP12-Qa + pair_coeff @atom:SP12_bSP12_aSP12_dSP12_iSP12 @atom:Qd_bQd_aQd_dQd_iQd lj/gromacs/coul/gromacs 1.195030 4.700000 # SP12-Qd + pair_coeff @atom:SP12_bSP12_aSP12_dSP12_iSP12 @atom:Qda_bQda_aQda_dQda_iQda lj/gromacs/coul/gromacs 1.195030 4.700000 # SP12-Qda + pair_coeff @atom:SP12_bSP12_aSP12_dSP12_iSP12 @atom:SC1_bSC1_aSC1_dSC1_iSC1 lj/gromacs/coul/gromacs 0.483987 4.300000 # SP12-SC1 + pair_coeff @atom:SP12_bSP12_aSP12_dSP12_iSP12 @atom:SC2_bSC2_aSC2_dSC2_iSC2 lj/gromacs/coul/gromacs 0.555689 4.300000 # SP12-SC2 + pair_coeff @atom:SP12_bSP12_aSP12_dSP12_iSP12 @atom:SC3_bSC3_aSC3_dSC3_iSC3 lj/gromacs/coul/gromacs 0.627391 4.300000 # SP12-SC3 + pair_coeff @atom:SP12_bSP12_aSP12_dSP12_iSP12 @atom:SC4_bSC4_aSC4_dSC4_iSC4 lj/gromacs/coul/gromacs 0.627391 4.300000 # SP12-SC4 + pair_coeff @atom:SP12_bSP12_aSP12_dSP12_iSP12 @atom:SC5_bSC5_aSC5_dSC5_iSC5 lj/gromacs/coul/gromacs 0.627391 4.300000 # SP12-SC5 + pair_coeff @atom:SP12_bSP12_aSP12_dSP12_iSP12 @atom:SN0_bSN0_aSN0_dSN0_iSN0 lj/gromacs/coul/gromacs 0.717018 4.300000 # SP12-SN0 + pair_coeff @atom:SP12_bSP12_aSP12_dSP12_iSP12 @atom:SNa_bSNa_aSNa_dSNa_iSNa lj/gromacs/coul/gromacs 0.806645 4.300000 # SP12-SNa + pair_coeff @atom:SP12_bSP12_aSP12_dSP12_iSP12 @atom:SNd_bSNd_aSNd_dSNd_iSNd lj/gromacs/coul/gromacs 0.806645 4.300000 # SP12-SNd + pair_coeff @atom:SP12_bSP12_aSP12_dSP12_iSP12 @atom:SNda_bSNda_aSNda_dSNda_iSNda lj/gromacs/coul/gromacs 0.806645 4.300000 # SP12-SNda + pair_coeff @atom:SP12_bSP12_aSP12_dSP12_iSP12 @atom:SP12_bSP12_aSP12_dSP12_iSP12 lj/gromacs/coul/gromacs 0.806645 4.300000 # SP12-SP12 + pair_coeff @atom:SP12_bSP12_aSP12_dSP12_iSP12 @atom:SP1_bSP1_aSP1_dSP1_iSP1 lj/gromacs/coul/gromacs 0.806645 4.300000 # SP12-SP1 + pair_coeff @atom:SP12_bSP12_aSP12_dSP12_iSP12 @atom:SP2_bSP2_aSP2_dSP2_iSP2 lj/gromacs/coul/gromacs 0.806645 4.300000 # SP12-SP2 + pair_coeff @atom:SP12_bSP12_aSP12_dSP12_iSP12 @atom:SP3_bSP3_aSP3_dSP3_iSP3 lj/gromacs/coul/gromacs 0.806645 4.300000 # SP12-SP3 + pair_coeff @atom:SP12_bSP12_aSP12_dSP12_iSP12 @atom:SP4_bSP4_aSP4_dSP4_iSP4 lj/gromacs/coul/gromacs 0.806645 4.300000 # SP12-SP4 + pair_coeff @atom:SP12_bSP12_aSP12_dSP12_iSP12 @atom:SP5_bSP5_aSP5_dSP5_iSP5 lj/gromacs/coul/gromacs 1.003825 4.300000 # SP12-SP5 + pair_coeff @atom:SP12_bSP12_aSP12_dSP12_iSP12 @atom:SQ0_bSQ0_aSQ0_dSQ0_iSQ0 lj/gromacs/coul/gromacs 0.717018 4.300000 # SP12-SQ0 + pair_coeff @atom:SP12_bSP12_aSP12_dSP12_iSP12 @atom:SQa_bSQa_aSQa_dSQa_iSQa lj/gromacs/coul/gromacs 0.896273 4.300000 # SP12-SQa + pair_coeff @atom:SP12_bSP12_aSP12_dSP12_iSP12 @atom:SQd_bSQd_aSQd_dSQd_iSQd lj/gromacs/coul/gromacs 0.896273 4.300000 # SP12-SQd + pair_coeff @atom:SP12_bSP12_aSP12_dSP12_iSP12 @atom:SQda_bSQda_aSQda_dSQda_iSQda lj/gromacs/coul/gromacs 0.896273 4.300000 # SP12-SQda + pair_coeff @atom:SP12_bSP12_aSP12_dSP12_iSP12 @atom:C41_bC4_aC41_dC41_iC41 lj/gromacs/coul/gromacs 0.836521 4.700000 # SP12-C41 + pair_coeff @atom:SP12_bSP12_aSP12_dSP12_iSP12 @atom:C42_bC4_aC42_dC42_iC42 lj/gromacs/coul/gromacs 0.836521 4.700000 # SP12-C42 + pair_coeff @atom:SP12_bSP12_aSP12_dSP12_iSP12 @atom:Na1_bNa1_aNa1_dNa1_iNa1 lj/gromacs/coul/gromacs 1.075527 4.700000 # SP12-Na1 + pair_coeff @atom:SP12_bSP12_aSP12_dSP12_iSP12 @atom:Na2_bNa2_aNa2_dNa2_iNa2 lj/gromacs/coul/gromacs 1.075527 4.700000 # SP12-Na2 + pair_coeff @atom:SP12_bSP12_aSP12_dSP12_iSP12 @atom:Qa1_bQa1_aQa1_dQa1_iQa1 lj/gromacs/coul/gromacs 1.195030 4.700000 # SP12-Qa1 + pair_coeff @atom:SP12_bSP12_aSP12_dSP12_iSP12 @atom:Qa2_bQa2_aQa2_dQa2_iQa2 lj/gromacs/coul/gromacs 1.195030 4.700000 # SP12-Qa2 + pair_coeff @atom:SP12_bSP12_aSP12_dSP12_iSP12 @atom:SC11_bSC11_aSC11_dSC11_iSC11 lj/gromacs/coul/gromacs 0.483987 4.300000 # SP12-SC11 + pair_coeff @atom:SP12_bSP12_aSP12_dSP12_iSP12 @atom:SC110_bSC110_aSC110_dSC110_iSC110 lj/gromacs/coul/gromacs 0.483987 4.300000 # SP12-SC110 + pair_coeff @atom:SP12_bSP12_aSP12_dSP12_iSP12 @atom:SC111_bSC111_aSC111_dSC111_iSC111 lj/gromacs/coul/gromacs 0.483987 4.300000 # SP12-SC111 + pair_coeff @atom:SP12_bSP12_aSP12_dSP12_iSP12 @atom:SC112_bSC112_aSC112_dSC112_iSC112 lj/gromacs/coul/gromacs 0.483987 4.300000 # SP12-SC112 + pair_coeff @atom:SP12_bSP12_aSP12_dSP12_iSP12 @atom:SC12_bSC12_aSC12_dSC12_iSC12 lj/gromacs/coul/gromacs 0.483987 4.300000 # SP12-SC12 + pair_coeff @atom:SP12_bSP12_aSP12_dSP12_iSP12 @atom:SC13_bSC13_aSC13_dSC13_iSC13 lj/gromacs/coul/gromacs 0.483987 4.300000 # SP12-SC13 + pair_coeff @atom:SP12_bSP12_aSP12_dSP12_iSP12 @atom:SC14_bSC14_aSC14_dSC14_iSC14 lj/gromacs/coul/gromacs 0.483987 4.300000 # SP12-SC14 + pair_coeff @atom:SP12_bSP12_aSP12_dSP12_iSP12 @atom:SC15_bSC15_aSC15_dSC15_iSC15 lj/gromacs/coul/gromacs 0.483987 4.300000 # SP12-SC15 + pair_coeff @atom:SP12_bSP12_aSP12_dSP12_iSP12 @atom:SC16_bSC16_aSC16_dSC16_iSC16 lj/gromacs/coul/gromacs 0.483987 4.300000 # SP12-SC16 + pair_coeff @atom:SP12_bSP12_aSP12_dSP12_iSP12 @atom:SC17_bSC17_aSC17_dSC17_iSC17 lj/gromacs/coul/gromacs 0.483987 4.300000 # SP12-SC17 + pair_coeff @atom:SP12_bSP12_aSP12_dSP12_iSP12 @atom:SC18_bSC18_aSC18_dSC18_iSC18 lj/gromacs/coul/gromacs 0.483987 4.300000 # SP12-SC18 + pair_coeff @atom:SP12_bSP12_aSP12_dSP12_iSP12 @atom:SC19_bSC19_aSC19_dSC19_iSC19 lj/gromacs/coul/gromacs 0.483987 4.300000 # SP12-SC19 + pair_coeff @atom:SP12_bSP12_aSP12_dSP12_iSP12 @atom:SC31_bSC31_aSC31_dSC31_iSC31 lj/gromacs/coul/gromacs 0.627391 4.300000 # SP12-SC31 + pair_coeff @atom:SP12_bSP12_aSP12_dSP12_iSP12 @atom:SC32_bSC32_aSC32_dSC32_iSC32 lj/gromacs/coul/gromacs 0.627391 4.300000 # SP12-SC32 + pair_coeff @atom:SP12_bSP12_aSP12_dSP12_iSP12 @atom:SC33_bSC33_aSC33_dSC33_iSC33 lj/gromacs/coul/gromacs 0.627391 4.300000 # SP12-SC33 + pair_coeff @atom:SP12_bSP12_aSP12_dSP12_iSP12 @atom:SP11_bSP11_aSP11_dSP11_iSP11 lj/gromacs/coul/gromacs 0.806645 4.300000 # SP12-SP11 + } # end of nonbonded parameters + + write_once("In Settings") { + # ----- Bonds ----- + bond_coeff @bond:C1-C1 harmonic 1.493787 4.700000 # C1-C1 + bond_coeff @bond:C1-C3 harmonic 1.493787 4.700000 # C1-C3 + bond_coeff @bond:C1-C4 harmonic 1.493787 4.700000 # C1-C4 + bond_coeff @bond:C1-Na harmonic 1.493787 4.700000 # C1-Na + bond_coeff @bond:C1-Na1 harmonic 1.493787 4.700000 # C1-Na1 + bond_coeff @bond:C1-Na2 harmonic 1.493787 4.700000 # C1-Na2 + bond_coeff @bond:C1-P5 harmonic 1.493787 4.700000 # C1-P5 + bond_coeff @bond:C2-C4 harmonic 1.493787 4.700000 # C2-C4 + bond_coeff @bond:C3-P1 harmonic 1.493787 4.700000 # C3-P1 + bond_coeff @bond:C4-C4 harmonic 1.493787 4.700000 # C4-C4 + bond_coeff @bond:C4-Na harmonic 1.493787 4.700000 # C4-Na + bond_coeff @bond:Na-Na harmonic 1.493787 3.700000 # Na-Na + bond_coeff @bond:Na-Na1 harmonic 1.493787 3.700000 # Na-Na1 + bond_coeff @bond:Na-Na2 harmonic 1.493787 3.700000 # Na-Na2 + bond_coeff @bond:Na-Qa harmonic 1.493787 4.700000 # Na-Qa + bond_coeff @bond:Na-Qa1 harmonic 1.493787 3.700000 # Na-Qa1 + bond_coeff @bond:Na-Qa2 harmonic 1.493787 3.700000 # Na-Qa2 + bond_coeff @bond:Na1-Qa harmonic 1.493787 3.700000 # Na1-Qa + bond_coeff @bond:Na2-Qa harmonic 1.493787 3.700000 # Na2-Qa + bond_coeff @bond:P1-P5 harmonic 1.493787 3.700000 # P1-P5 + bond_coeff @bond:P4-Qa harmonic 1.493787 3.700000 # P4-Qa + bond_coeff @bond:P5-Qa harmonic 1.493787 4.700000 # P5-Qa + bond_coeff @bond:P5-Qa1 harmonic 1.493787 3.700000 # P5-Qa1 + bond_coeff @bond:P5-Qa2 harmonic 1.493787 3.700000 # P5-Qa2 + bond_coeff @bond:Q0-Qa harmonic 1.493787 4.700000 # Q0-Qa + bond_coeff @bond:Qa-Qd harmonic 1.493787 4.700000 # Qa-Qd + bond_coeff @bond:C1-C1 harmonic 1.493787 4.700000 # C1-C1 + bond_coeff @bond:C1-C3 harmonic 1.493787 4.700000 # C1-C3 + bond_coeff @bond:C1-Na harmonic 1.493787 4.700000 # C1-Na + bond_coeff @bond:C1-SC12 harmonic 1.493787 4.250000 # C1-SC12 + bond_coeff @bond:C1-SC17 harmonic 1.493787 4.250000 # C1-SC17 + bond_coeff @bond:Na-SC1 harmonic 1.493787 4.700000 # Na-SC1 + bond_coeff @bond:Qa-SC111 harmonic 1.493787 4.250000 # Qa-SC111 + bond_coeff @bond:SC1-SC11 harmonic 23.900600 3.410000 # SC1-SC11 + bond_coeff @bond:SC1-SC13 harmonic 23.900600 2.030000 # SC1-SC13 + bond_coeff @bond:SC1-SC15 harmonic 23.900600 2.420000 # SC1-SC15 + bond_coeff @bond:SC1-SC16 harmonic 23.900600 2.940000 # SC1-SC16 + bond_coeff @bond:SC1-SC17 harmonic 23.900600 4.060000 # SC1-SC17 + bond_coeff @bond:SC1-SC18 harmonic 23.900600 2.030000 # SC1-SC18 + bond_coeff @bond:SC1-SC3 harmonic 23.900600 2.600000 # SC1-SC3 + bond_coeff @bond:SC1-SC32 harmonic 23.900600 3.460000 # SC1-SC32 + bond_coeff @bond:SC1-SP1 harmonic 23.900600 2.420000 # SC1-SP1 + bond_coeff @bond:SC11-SC12 harmonic 23.900600 5.440000 # SC11-SC12 + bond_coeff @bond:SC11-SC13 harmonic 23.900600 2.130000 # SC11-SC13 + bond_coeff @bond:SC11-SC14 harmonic 23.900600 2.940000 # SC11-SC14 + bond_coeff @bond:SC11-SC31 harmonic 23.900600 2.720000 # SC11-SC31 + bond_coeff @bond:SC11-SP1 harmonic 23.900600 6.040000 # SC11-SP1 + bond_coeff @bond:SC110-SC3 harmonic 23.900600 2.600000 # SC110-SC3 + bond_coeff @bond:SC110-SP1 harmonic 23.900600 2.420000 # SC110-SP1 + bond_coeff @bond:SC110-SP11 harmonic 23.900600 3.410000 # SC110-SP11 + bond_coeff @bond:SC111-SC112 harmonic 23.900600 3.680000 # SC111-SC112 + bond_coeff @bond:SC111-SP11 harmonic 23.900600 5.440000 # SC111-SP11 + bond_coeff @bond:SC111-SP12 harmonic 23.900600 4.060000 # SC111-SP12 + bond_coeff @bond:SC112-SP1 harmonic 23.900600 2.030000 # SC112-SP1 + bond_coeff @bond:SC112-SP11 harmonic 23.900600 2.130000 # SC112-SP11 + bond_coeff @bond:SC12-SC13 harmonic 23.900600 3.680000 # SC12-SC13 + bond_coeff @bond:SC12-SC14 harmonic 23.900600 4.060000 # SC12-SC14 + bond_coeff @bond:SC14-SC31 harmonic 23.900600 3.460000 # SC14-SC31 + bond_coeff @bond:SC15-SC16 harmonic 23.900600 3.410000 # SC15-SC16 + bond_coeff @bond:SC15-SC3 harmonic 23.900600 2.600000 # SC15-SC3 + bond_coeff @bond:SC16-SC17 harmonic 23.900600 5.440000 # SC16-SC17 + bond_coeff @bond:SC16-SC18 harmonic 23.900600 2.130000 # SC16-SC18 + bond_coeff @bond:SC16-SC19 harmonic 23.900600 6.040000 # SC16-SC19 + bond_coeff @bond:SC16-SC32 harmonic 23.900600 2.720000 # SC16-SC32 + bond_coeff @bond:SC17-SC18 harmonic 23.900600 3.680000 # SC17-SC18 + bond_coeff @bond:SC19-SC32 harmonic 23.900600 4.930000 # SC19-SC32 + bond_coeff @bond:SC31-SP1 harmonic 23.900600 4.930000 # SC31-SP1 + bond_coeff @bond:SC33-SP1 harmonic 23.900600 4.930000 # SC33-SP1 + bond_coeff @bond:SC33-SP11 harmonic 23.900600 2.720000 # SC33-SP11 + bond_coeff @bond:SC33-SP12 harmonic 23.900600 3.460000 # SC33-SP12 + bond_coeff @bond:SP1-SP11 harmonic 23.900600 6.040000 # SP1-SP11 + bond_coeff @bond:SP11-SP12 harmonic 23.900600 2.940000 # SP11-SP12 + } + + write_once("Data Bonds By Type") { + @bond:C1-C1 @atom:*_bC1_a*_d*_i* @atom:*_bC1_a*_d*_i* + @bond:C1-C3 @atom:*_bC1_a*_d*_i* @atom:*_bC3_a*_d*_i* + @bond:C1-C4 @atom:*_bC1_a*_d*_i* @atom:*_bC4_a*_d*_i* + @bond:C1-Na @atom:*_bC1_a*_d*_i* @atom:*_bNa_a*_d*_i* + @bond:C1-Na1 @atom:*_bC1_a*_d*_i* @atom:*_bNa1_a*_d*_i* + @bond:C1-Na2 @atom:*_bC1_a*_d*_i* @atom:*_bNa2_a*_d*_i* + @bond:C1-P5 @atom:*_bC1_a*_d*_i* @atom:*_bP5_a*_d*_i* + @bond:C2-C4 @atom:*_bC2_a*_d*_i* @atom:*_bC4_a*_d*_i* + @bond:C3-P1 @atom:*_bC3_a*_d*_i* @atom:*_bP1_a*_d*_i* + @bond:C4-C4 @atom:*_bC4_a*_d*_i* @atom:*_bC4_a*_d*_i* + @bond:C4-Na @atom:*_bC4_a*_d*_i* @atom:*_bNa_a*_d*_i* + @bond:Na-Na @atom:*_bNa_a*_d*_i* @atom:*_bNa_a*_d*_i* + @bond:Na-Na1 @atom:*_bNa_a*_d*_i* @atom:*_bNa1_a*_d*_i* + @bond:Na-Na2 @atom:*_bNa_a*_d*_i* @atom:*_bNa2_a*_d*_i* + @bond:Na-Qa @atom:*_bNa_a*_d*_i* @atom:*_bQa_a*_d*_i* + @bond:Na-Qa1 @atom:*_bNa_a*_d*_i* @atom:*_bQa1_a*_d*_i* + @bond:Na-Qa2 @atom:*_bNa_a*_d*_i* @atom:*_bQa2_a*_d*_i* + @bond:Na1-Qa @atom:*_bNa1_a*_d*_i* @atom:*_bQa_a*_d*_i* + @bond:Na2-Qa @atom:*_bNa2_a*_d*_i* @atom:*_bQa_a*_d*_i* + @bond:P1-P5 @atom:*_bP1_a*_d*_i* @atom:*_bP5_a*_d*_i* + @bond:P4-Qa @atom:*_bP4_a*_d*_i* @atom:*_bQa_a*_d*_i* + @bond:P5-Qa @atom:*_bP5_a*_d*_i* @atom:*_bQa_a*_d*_i* + @bond:P5-Qa1 @atom:*_bP5_a*_d*_i* @atom:*_bQa1_a*_d*_i* + @bond:P5-Qa2 @atom:*_bP5_a*_d*_i* @atom:*_bQa2_a*_d*_i* + @bond:Q0-Qa @atom:*_bQ0_a*_d*_i* @atom:*_bQa_a*_d*_i* + @bond:Qa-Qd @atom:*_bQa_a*_d*_i* @atom:*_bQd_a*_d*_i* + @bond:C1-C1 @atom:*_bC1_a*_d*_i* @atom:*_bC1_a*_d*_i* + @bond:C1-C3 @atom:*_bC1_a*_d*_i* @atom:*_bC3_a*_d*_i* + @bond:C1-Na @atom:*_bC1_a*_d*_i* @atom:*_bNa_a*_d*_i* + @bond:C1-SC12 @atom:*_bC1_a*_d*_i* @atom:*_bSC12_a*_d*_i* + @bond:C1-SC17 @atom:*_bC1_a*_d*_i* @atom:*_bSC17_a*_d*_i* + @bond:Na-SC1 @atom:*_bNa_a*_d*_i* @atom:*_bSC1_a*_d*_i* + @bond:Qa-SC111 @atom:*_bQa_a*_d*_i* @atom:*_bSC111_a*_d*_i* + @bond:SC1-SC11 @atom:*_bSC1_a*_d*_i* @atom:*_bSC11_a*_d*_i* + @bond:SC1-SC13 @atom:*_bSC1_a*_d*_i* @atom:*_bSC13_a*_d*_i* + @bond:SC1-SC15 @atom:*_bSC1_a*_d*_i* @atom:*_bSC15_a*_d*_i* + @bond:SC1-SC16 @atom:*_bSC1_a*_d*_i* @atom:*_bSC16_a*_d*_i* + @bond:SC1-SC17 @atom:*_bSC1_a*_d*_i* @atom:*_bSC17_a*_d*_i* + @bond:SC1-SC18 @atom:*_bSC1_a*_d*_i* @atom:*_bSC18_a*_d*_i* + @bond:SC1-SC3 @atom:*_bSC1_a*_d*_i* @atom:*_bSC3_a*_d*_i* + @bond:SC1-SC32 @atom:*_bSC1_a*_d*_i* @atom:*_bSC32_a*_d*_i* + @bond:SC1-SP1 @atom:*_bSC1_a*_d*_i* @atom:*_bSP1_a*_d*_i* + @bond:SC11-SC12 @atom:*_bSC11_a*_d*_i* @atom:*_bSC12_a*_d*_i* + @bond:SC11-SC13 @atom:*_bSC11_a*_d*_i* @atom:*_bSC13_a*_d*_i* + @bond:SC11-SC14 @atom:*_bSC11_a*_d*_i* @atom:*_bSC14_a*_d*_i* + @bond:SC11-SC31 @atom:*_bSC11_a*_d*_i* @atom:*_bSC31_a*_d*_i* + @bond:SC11-SP1 @atom:*_bSC11_a*_d*_i* @atom:*_bSP1_a*_d*_i* + @bond:SC110-SC3 @atom:*_bSC110_a*_d*_i* @atom:*_bSC3_a*_d*_i* + @bond:SC110-SP1 @atom:*_bSC110_a*_d*_i* @atom:*_bSP1_a*_d*_i* + @bond:SC110-SP11 @atom:*_bSC110_a*_d*_i* @atom:*_bSP11_a*_d*_i* + @bond:SC111-SC112 @atom:*_bSC111_a*_d*_i* @atom:*_bSC112_a*_d*_i* + @bond:SC111-SP11 @atom:*_bSC111_a*_d*_i* @atom:*_bSP11_a*_d*_i* + @bond:SC111-SP12 @atom:*_bSC111_a*_d*_i* @atom:*_bSP12_a*_d*_i* + @bond:SC112-SP1 @atom:*_bSC112_a*_d*_i* @atom:*_bSP1_a*_d*_i* + @bond:SC112-SP11 @atom:*_bSC112_a*_d*_i* @atom:*_bSP11_a*_d*_i* + @bond:SC12-SC13 @atom:*_bSC12_a*_d*_i* @atom:*_bSC13_a*_d*_i* + @bond:SC12-SC14 @atom:*_bSC12_a*_d*_i* @atom:*_bSC14_a*_d*_i* + @bond:SC14-SC31 @atom:*_bSC14_a*_d*_i* @atom:*_bSC31_a*_d*_i* + @bond:SC15-SC16 @atom:*_bSC15_a*_d*_i* @atom:*_bSC16_a*_d*_i* + @bond:SC15-SC3 @atom:*_bSC15_a*_d*_i* @atom:*_bSC3_a*_d*_i* + @bond:SC16-SC17 @atom:*_bSC16_a*_d*_i* @atom:*_bSC17_a*_d*_i* + @bond:SC16-SC18 @atom:*_bSC16_a*_d*_i* @atom:*_bSC18_a*_d*_i* + @bond:SC16-SC19 @atom:*_bSC16_a*_d*_i* @atom:*_bSC19_a*_d*_i* + @bond:SC16-SC32 @atom:*_bSC16_a*_d*_i* @atom:*_bSC32_a*_d*_i* + @bond:SC17-SC18 @atom:*_bSC17_a*_d*_i* @atom:*_bSC18_a*_d*_i* + @bond:SC19-SC32 @atom:*_bSC19_a*_d*_i* @atom:*_bSC32_a*_d*_i* + @bond:SC31-SP1 @atom:*_bSC31_a*_d*_i* @atom:*_bSP1_a*_d*_i* + @bond:SC33-SP1 @atom:*_bSC33_a*_d*_i* @atom:*_bSP1_a*_d*_i* + @bond:SC33-SP11 @atom:*_bSC33_a*_d*_i* @atom:*_bSP11_a*_d*_i* + @bond:SC33-SP12 @atom:*_bSC33_a*_d*_i* @atom:*_bSP12_a*_d*_i* + @bond:SP1-SP11 @atom:*_bSP1_a*_d*_i* @atom:*_bSP11_a*_d*_i* + @bond:SP11-SP12 @atom:*_bSP11_a*_d*_i* @atom:*_bSP12_a*_d*_i* + } # end of bonds + + write_once("In Settings") { + # ----- Angles ----- + angle_coeff @angle:C1-C1-C1 cosine/squared 2.987575 180.000000 # C1-C1-C1 + angle_coeff @angle:C1-C1-C3 cosine/squared 2.987575 180.000000 # C1-C1-C3 + angle_coeff @angle:C1-C1-Na cosine/squared 2.987575 180.000000 # C1-C1-Na + angle_coeff @angle:C1-C1-Na1 cosine/squared 2.987575 180.000000 # C1-C1-Na1 + angle_coeff @angle:C1-C1-Na2 cosine/squared 2.987575 180.000000 # C1-C1-Na2 + angle_coeff @angle:C1-C1-P5 cosine/squared 2.987575 180.000000 # C1-C1-P5 + angle_coeff @angle:C1-C3-C1 cosine/squared 5.377635 120.000000 # C1-C3-C1 + angle_coeff @angle:C1-C3-P1 cosine/squared 5.377635 180.000000 # C1-C3-P1 + angle_coeff @angle:C1-C4-C41 cosine/squared 5.377635 120.000000 # C1-C4-C41 + angle_coeff @angle:C1-C4-C42 cosine/squared 5.377635 120.000000 # C1-C4-C42 + angle_coeff @angle:C1-C41-C4 cosine/squared 1.195030 100.000000 # C1-C41-C4 + angle_coeff @angle:C1-C42-C4 cosine/squared 1.195030 100.000000 # C1-C42-C4 + angle_coeff @angle:C1-Na-Qa cosine/squared 2.987575 180.000000 # C1-Na-Qa + angle_coeff @angle:C1-Na-Qa1 cosine/squared 2.987575 180.000000 # C1-Na-Qa1 + angle_coeff @angle:C1-Na-Qa2 cosine/squared 2.987575 180.000000 # C1-Na-Qa2 + angle_coeff @angle:C1-Na1-Qa cosine/squared 2.987575 180.000000 # C1-Na1-Qa + angle_coeff @angle:C1-Na2-Qa cosine/squared 2.987575 180.000000 # C1-Na2-Qa + angle_coeff @angle:C1-P5-Qa cosine/squared 2.987575 180.000000 # C1-P5-Qa + angle_coeff @angle:C2-C4-C4 cosine/squared 5.377635 120.000000 # C2-C4-C4 + angle_coeff @angle:C4-C4-C4 cosine/squared 1.195030 100.000000 # C4-C4-C4 + angle_coeff @angle:C4-C4-Na cosine/squared 1.195030 100.000000 # C4-C4-Na + angle_coeff @angle:C4-Na-Qa cosine/squared 2.987575 180.000000 # C4-Na-Qa + angle_coeff @angle:C41-C1-Na cosine/squared 2.987575 180.000000 # C41-C1-Na + angle_coeff @angle:C42-C1-Na cosine/squared 2.987575 180.000000 # C42-C1-Na + angle_coeff @angle:Na-Na-Qa cosine/squared 2.987575 120.000000 # Na-Na-Qa + angle_coeff @angle:Na-Na-Qa1 cosine/squared 2.987575 120.000000 # Na-Na-Qa1 + angle_coeff @angle:Na-Na-Qa2 cosine/squared 2.987575 120.000000 # Na-Na-Qa2 + angle_coeff @angle:Na-Na1-Qa cosine/squared 2.987575 120.000000 # Na-Na1-Qa + angle_coeff @angle:Na-Na2-Qa cosine/squared 2.987575 120.000000 # Na-Na2-Qa + angle_coeff @angle:P1-P5-Qa cosine/squared 2.987575 120.000000 # P1-P5-Qa + angle_coeff @angle:C1-C1-C3 cosine/squared 2.987575 180.000000 # C1-C1-C3 + angle_coeff @angle:C1-C3-C1 cosine/squared 5.377635 120.000000 # C1-C3-C1 + angle_coeff @angle:C1-Na-SC19 cosine/squared 2.987575 180.000000 # C1-Na-SC19 + angle_coeff @angle:C1-SC12-SC11 cosine/squared 2.987575 180.000000 # C1-SC12-SC11 + angle_coeff @angle:C1-SC17-SC16 cosine/squared 2.987575 180.000000 # C1-SC17-SC16 + angle_coeff @angle:C3-C1-Na cosine/squared 2.987575 180.000000 # C3-C1-Na + angle_coeff @angle:Qa-SC111-SP11 cosine/squared 2.987575 180.000000 # Qa-SC111-SP11 + } + + write_once("Data Angles By Type") { + @angle:C1-C1-C1 @atom:*_b*_aC1_d*_i* @atom:*_b*_aC1_d*_i* @atom:*_b*_aC1_d*_i* + @angle:C1-C1-C3 @atom:*_b*_aC1_d*_i* @atom:*_b*_aC1_d*_i* @atom:*_b*_aC3_d*_i* + @angle:C1-C1-Na @atom:*_b*_aC1_d*_i* @atom:*_b*_aC1_d*_i* @atom:*_b*_aNa_d*_i* + @angle:C1-C1-Na1 @atom:*_b*_aC1_d*_i* @atom:*_b*_aC1_d*_i* @atom:*_b*_aNa1_d*_i* + @angle:C1-C1-Na2 @atom:*_b*_aC1_d*_i* @atom:*_b*_aC1_d*_i* @atom:*_b*_aNa2_d*_i* + @angle:C1-C1-P5 @atom:*_b*_aC1_d*_i* @atom:*_b*_aC1_d*_i* @atom:*_b*_aP5_d*_i* + @angle:C1-C3-C1 @atom:*_b*_aC1_d*_i* @atom:*_b*_aC3_d*_i* @atom:*_b*_aC1_d*_i* + @angle:C1-C3-P1 @atom:*_b*_aC1_d*_i* @atom:*_b*_aC3_d*_i* @atom:*_b*_aP1_d*_i* + @angle:C1-C4-C41 @atom:*_b*_aC1_d*_i* @atom:*_b*_aC4_d*_i* @atom:*_b*_aC41_d*_i* + @angle:C1-C4-C42 @atom:*_b*_aC1_d*_i* @atom:*_b*_aC4_d*_i* @atom:*_b*_aC42_d*_i* + @angle:C1-C41-C4 @atom:*_b*_aC1_d*_i* @atom:*_b*_aC41_d*_i* @atom:*_b*_aC4_d*_i* + @angle:C1-C42-C4 @atom:*_b*_aC1_d*_i* @atom:*_b*_aC42_d*_i* @atom:*_b*_aC4_d*_i* + @angle:C1-Na-Qa @atom:*_b*_aC1_d*_i* @atom:*_b*_aNa_d*_i* @atom:*_b*_aQa_d*_i* + @angle:C1-Na-Qa1 @atom:*_b*_aC1_d*_i* @atom:*_b*_aNa_d*_i* @atom:*_b*_aQa1_d*_i* + @angle:C1-Na-Qa2 @atom:*_b*_aC1_d*_i* @atom:*_b*_aNa_d*_i* @atom:*_b*_aQa2_d*_i* + @angle:C1-Na1-Qa @atom:*_b*_aC1_d*_i* @atom:*_b*_aNa1_d*_i* @atom:*_b*_aQa_d*_i* + @angle:C1-Na2-Qa @atom:*_b*_aC1_d*_i* @atom:*_b*_aNa2_d*_i* @atom:*_b*_aQa_d*_i* + @angle:C1-P5-Qa @atom:*_b*_aC1_d*_i* @atom:*_b*_aP5_d*_i* @atom:*_b*_aQa_d*_i* + @angle:C2-C4-C4 @atom:*_b*_aC2_d*_i* @atom:*_b*_aC4_d*_i* @atom:*_b*_aC4_d*_i* + @angle:C4-C4-C4 @atom:*_b*_aC4_d*_i* @atom:*_b*_aC4_d*_i* @atom:*_b*_aC4_d*_i* + @angle:C4-C4-Na @atom:*_b*_aC4_d*_i* @atom:*_b*_aC4_d*_i* @atom:*_b*_aNa_d*_i* + @angle:C4-Na-Qa @atom:*_b*_aC4_d*_i* @atom:*_b*_aNa_d*_i* @atom:*_b*_aQa_d*_i* + @angle:C41-C1-Na @atom:*_b*_aC41_d*_i* @atom:*_b*_aC1_d*_i* @atom:*_b*_aNa_d*_i* + @angle:C42-C1-Na @atom:*_b*_aC42_d*_i* @atom:*_b*_aC1_d*_i* @atom:*_b*_aNa_d*_i* + @angle:Na-Na-Qa @atom:*_b*_aNa_d*_i* @atom:*_b*_aNa_d*_i* @atom:*_b*_aQa_d*_i* + @angle:Na-Na-Qa1 @atom:*_b*_aNa_d*_i* @atom:*_b*_aNa_d*_i* @atom:*_b*_aQa1_d*_i* + @angle:Na-Na-Qa2 @atom:*_b*_aNa_d*_i* @atom:*_b*_aNa_d*_i* @atom:*_b*_aQa2_d*_i* + @angle:Na-Na1-Qa @atom:*_b*_aNa_d*_i* @atom:*_b*_aNa1_d*_i* @atom:*_b*_aQa_d*_i* + @angle:Na-Na2-Qa @atom:*_b*_aNa_d*_i* @atom:*_b*_aNa2_d*_i* @atom:*_b*_aQa_d*_i* + @angle:P1-P5-Qa @atom:*_b*_aP1_d*_i* @atom:*_b*_aP5_d*_i* @atom:*_b*_aQa_d*_i* + @angle:C1-C1-C3 @atom:*_b*_aC1_d*_i* @atom:*_b*_aC1_d*_i* @atom:*_b*_aC3_d*_i* + @angle:C1-C3-C1 @atom:*_b*_aC1_d*_i* @atom:*_b*_aC3_d*_i* @atom:*_b*_aC1_d*_i* + @angle:C1-Na-SC19 @atom:*_b*_aC1_d*_i* @atom:*_b*_aNa_d*_i* @atom:*_b*_aSC19_d*_i* + @angle:C1-SC12-SC11 @atom:*_b*_aC1_d*_i* @atom:*_b*_aSC12_d*_i* @atom:*_b*_aSC11_d*_i* + @angle:C1-SC17-SC16 @atom:*_b*_aC1_d*_i* @atom:*_b*_aSC17_d*_i* @atom:*_b*_aSC16_d*_i* + @angle:C3-C1-Na @atom:*_b*_aC3_d*_i* @atom:*_b*_aC1_d*_i* @atom:*_b*_aNa_d*_i* + @angle:Qa-SC111-SP11 @atom:*_b*_aQa_d*_i* @atom:*_b*_aSC111_d*_i* @atom:*_b*_aSP11_d*_i* + } # end of angles + + write_once("In Init") { + # Warning: This is a very generic "In Init" section, further + # modification prior to any simulation is extremely likely + units real + atom_style full + bond_style hybrid harmonic + angle_style hybrid cosine/squared + pair_style hybrid lj/gromacs/coul/gromacs 9.000000 12.000000 + special_bonds lj/coul 0.0 0.0 0.0 + } # end init +} # MARTINI diff --git a/tools/moltemplate/moltemplate/force_fields/martini/aminoacids.prm b/tools/moltemplate/moltemplate/force_fields/martini/aminoacids.prm new file mode 100644 index 0000000000000000000000000000000000000000..844fafe10071c050c624d3d0bb9c37cef8ecd1de --- /dev/null +++ b/tools/moltemplate/moltemplate/force_fields/martini/aminoacids.prm @@ -0,0 +1,164 @@ +# +# Martini interaction parameters using martini.30634.tmp +# converted by martini.pl v1.2, February 10, 2014 by Pieter J. in 't Veld +# to be used in conjuction with EMC v9.3.7 or higher +# + +# Force field definition + +ITEM DEFINE + +FFNAME MARTINI +FFTYPE COARSE +VERSION 2011 +CREATED Feb 2014 +LENGTH NANOMETER +ENERGY KJ/MOL +DENSITY G/CC +MIX NONE +NBONDED 1 +INNER 0.9 +CUTOFF 1.2 +PAIR14 OFF +ANGLE WARN +TORSION IGNORE + +ITEM END + +# Masses + +ITEM MASS + +# type mass element ncons charge comment + +P51 72 P5 2 0 polar +P52 72 P5 2 0 polar +P53 72 P5 2 0 polar +P54 72 P5 2 0 polar +P55 72 P5 2 0 polar +P56 72 P5 2 0 polar +P57 72 P5 2 0 polar +P58 72 P5 2 0 polar +P59 72 P5 2 0 polar + +ITEM END + +# Typing equivalences + +ITEM EQUIVALENCE + +# type pair bond angle torsion improper + +P51 P5 P51 P51 P51 P51 +P52 P5 P52 P52 P52 P52 +P53 P5 P53 P53 P53 P53 +P54 P5 P54 P54 P54 P54 +P55 P5 P55 P55 P55 P55 +P56 P5 P56 P56 P56 P56 +P57 P5 P57 P57 P57 P57 +P58 P5 P58 P58 P58 P58 +P59 P5 P59 P59 P59 P59 + +ITEM END + +# Bond parameters + +ITEM BOND + +# type1 type2 k l0 + +AC1 P5 7500 0.33 +AC1 P51 20000 0.31 +AC2 P5 20000 0.265 +AC2 P53 7500 0.3 +C3 P1 5000 0.28 +C3 P5 5000 0.33 +C3 Qd 5000 0.28 +C5 P5 7500 0.31 +C5 P52 2500 0.4 +N0 P4 5000 0.34 +N0 P5 5000 0.33 +N0 Qd 5000 0.34 +P1 P5 5000 0.4 +P1 P55 20000 0.26 +P1 P56 7500 0.25 +P3 P5 7500 0.32 +P4 P5 5000 0.4 +P5 P5 5000 0.32 +P5 Qa 7500 0.32 +P5 SC4 7500 0.32 +P54 Qa 5000 0.4 +P57 SC4 7500 0.31 +P58 SC4 5000 0.32 +P59 SC4 5000 0.3 +SC4 SC4 20000 0.27 +SC4 SP1 20000 0.27 +SP1 SP1 20000 0.27 + +ITEM END + +# Angle parameters + +ITEM ANGLE + +# type1 type2 type3 k theta0 + +P1 C3 P5 25 180 +P4 N0 P5 25 180 +P5 C3 Qd 25 180 +P5 N0 Qd 25 180 +P5 SC4 SP1 50 150 +P57 SC4 SC4 50 150 +P58 SC4 SC4 50 150 +P58 SC4 SP1 50 150 +P59 SC4 SC4 50 90 +P59 SC4 SP1 50 210 + +ITEM END + +# Improper parameters + +ITEM IMPROPER + +# type1 type2 type3 type4 k psi0 + +P5 SC4 SP1 SP1 50 0 +P57 SC4 SC4 SC4 50 0 +P58 SC4 SC4 SP1 50 0 +P59 SC4 SC4 SP1 50 0 +SC4 SC4 SC4 SP1 200 0 + +ITEM END + +# Templates + +ITEM TEMPLATES + +# name smiles + +ALA [P4] +ARG [P5][N0][Qd+1] +ARG0 [P5][N0][P4] +ASN [P5][P5] +ASP [P5][Qa-1] +ASP0 [P5][P3] +CYS [P5][C5] +GLN [P5][P4] +GLU [P54][Qa-1] +GLU0 [P5][P1] +GLY [P5] +HIS [P5][SC4]1[SP1][SP1]1 +ILE [P51][AC1] +LEU [P5][AC1] +LYS [P5][C3][Qd+1] +LYS0 [P5][C3][P1] +MET [P52][C5] +PHE [P57][SC4]1[SC4][SC4]1 +PRO [P53][AC2] +SER [P56][P1] +THR [P55][P1] +TRP [P59][SC4]1[SP1]2[SC4]1[SC4]2 +TYR [P58][SC4]1[SC4][SP1]1 +VAL [P5][AC2] + +ITEM END diff --git a/tools/moltemplate/moltemplate/force_fields/martini/cholesterol.prm b/tools/moltemplate/moltemplate/force_fields/martini/cholesterol.prm new file mode 100644 index 0000000000000000000000000000000000000000..7d78eed759b161f9edb9f5f141d5de6822b0093e --- /dev/null +++ b/tools/moltemplate/moltemplate/force_fields/martini/cholesterol.prm @@ -0,0 +1,197 @@ +# +# Martini interaction parameters using martini.30636.tmp +# converted by martini.pl v1.2, February 10, 2014 by Pieter J. in 't Veld +# to be used in conjuction with EMC v9.3.7 or higher +# + +# Force field definition + +ITEM DEFINE + +FFNAME MARTINI +FFTYPE COARSE +VERSION 2011 +CREATED Feb 2014 +LENGTH NANOMETER +ENERGY KJ/MOL +DENSITY G/CC +MIX NONE +NBONDED 1 +INNER 0.9 +CUTOFF 1.2 +PAIR14 OFF +ANGLE WARN +TORSION IGNORE + +ITEM END + +# Masses + +ITEM MASS + +# type mass element ncons charge comment + +SC11 54 SC1 2 0 ring apolar +SC110 54 SC1 2 0 ring apolar +SC111 54 SC1 2 0 ring apolar +SC112 54 SC1 2 0 ring apolar +SC12 54 SC1 2 0 ring apolar +SC13 54 SC1 2 0 ring apolar +SC14 54 SC1 2 0 ring apolar +SC15 54 SC1 2 0 ring apolar +SC16 54 SC1 2 0 ring apolar +SC17 54 SC1 2 0 ring apolar +SC18 54 SC1 2 0 ring apolar +SC19 54 SC1 2 0 ring apolar +SC31 54 SC3 2 0 ring apolar +SC32 54 SC3 2 0 ring apolar +SC33 54 SC3 2 0 ring apolar +SP11 54 SP1 2 0 ring polar +SP12 54 SP1 2 0 ring polar + +ITEM END + +# Typing equivalences + +ITEM EQUIVALENCE + +# type pair bond angle torsion improper + +SC11 SC1 SC11 SC11 SC11 SC11 +SC110 SC1 SC110 SC110 SC110 SC110 +SC111 SC1 SC111 SC111 SC111 SC111 +SC112 SC1 SC112 SC112 SC112 SC112 +SC12 SC1 SC12 SC12 SC12 SC12 +SC13 SC1 SC13 SC13 SC13 SC13 +SC14 SC1 SC14 SC14 SC14 SC14 +SC15 SC1 SC15 SC15 SC15 SC15 +SC16 SC1 SC16 SC16 SC16 SC16 +SC17 SC1 SC17 SC17 SC17 SC17 +SC18 SC1 SC18 SC18 SC18 SC18 +SC19 SC1 SC19 SC19 SC19 SC19 +SC31 SC3 SC31 SC31 SC31 SC31 +SC32 SC3 SC32 SC32 SC32 SC32 +SC33 SC3 SC33 SC33 SC33 SC33 +SP11 SP1 SP11 SP11 SP11 SP11 +SP12 SP1 SP12 SP12 SP12 SP12 + +ITEM END + +# Bond parameters + +ITEM BOND + +# type1 type2 k l0 + +C1 C1 1250 0.47 +C1 C3 1250 0.47 +C1 Na 1250 0.47 +C1 SC12 1250 0.425 +C1 SC17 1250 0.425 +Na SC1 1250 0.47 +Qa SC111 1250 0.425 +SC1 SC11 20000 0.341 +SC1 SC13 20000 0.203 +SC1 SC15 20000 0.242 +SC1 SC16 20000 0.294 +SC1 SC17 20000 0.406 +SC1 SC18 20000 0.203 +SC1 SC3 20000 0.26 +SC1 SC32 20000 0.346 +SC1 SP1 20000 0.242 +SC11 SC12 20000 0.544 +SC11 SC13 20000 0.213 +SC11 SC14 20000 0.294 +SC11 SC31 20000 0.272 +SC11 SP1 20000 0.604 +SC110 SC3 20000 0.26 +SC110 SP1 20000 0.242 +SC110 SP11 20000 0.341 +SC111 SC112 20000 0.368 +SC111 SP11 20000 0.544 +SC111 SP12 20000 0.406 +SC112 SP1 20000 0.203 +SC112 SP11 20000 0.213 +SC12 SC13 20000 0.368 +SC12 SC14 20000 0.406 +SC14 SC31 20000 0.346 +SC15 SC16 20000 0.341 +SC15 SC3 20000 0.26 +SC16 SC17 20000 0.544 +SC16 SC18 20000 0.213 +SC16 SC19 20000 0.604 +SC16 SC32 20000 0.272 +SC17 SC18 20000 0.368 +SC19 SC32 20000 0.493 +SC31 SP1 20000 0.493 +SC33 SP1 20000 0.493 +SC33 SP11 20000 0.272 +SC33 SP12 20000 0.346 +SP1 SP11 20000 0.604 +SP11 SP12 20000 0.294 + +ITEM END + +# Angle parameters + +ITEM ANGLE + +# type1 type2 type3 k theta0 + +C1 C1 C3 25 180 +C1 C3 C1 45 120 +C1 Na SC19 25 180 +C1 SC12 SC11 25 180 +C1 SC17 SC16 25 180 +C3 C1 Na 25 180 +Qa SC111 SP11 25 180 + +ITEM END + +# Improper parameters + +ITEM IMPROPER + +# type1 type2 type3 type4 k psi0 + +SC1 SC11 SC31 SP1 300 45 +SC1 SC11 SP1 SC31 300 -45 +SC11 SC12 SC14 SC31 100 0 +SC110 SC33 SP1 SP11 300 45 +SC110 SC33 SP11 SP1 300 -45 +SC112 SC111 SP11 SP12 300 -45 +SC112 SC111 SP12 SP11 300 45 +SC13 SC11 SC12 SC14 300 45 +SC13 SC11 SC14 SC12 300 -45 +SC15 SC16 SC19 SC32 300 -45 +SC15 SC16 SC32 SC19 300 45 +SC16 SC1 SC32 SC17 100 0 +SC18 SC1 SC16 SC17 300 45 +SC18 SC1 SC17 SC16 300 -45 +SC19 SC1 SC16 SC32 100 0 +SC19 SC1 SC17 SC32 100 0 +SC19 SC1 SC32 SC16 100 0 +SC31 SC11 SC14 SC12 100 0 +SC32 SC1 SC17 SC16 100 0 +SC33 SC111 SP11 SP12 100 0 +SP1 SC11 SC14 SC31 100 0 +SP1 SC11 SC31 SC14 100 0 +SP1 SC111 SC33 SP12 100 0 +SP1 SC12 SC31 SC14 100 0 +SP1 SC33 SP11 SP12 100 0 +SP1 SC33 SP12 SP11 100 0 +SP11 SC111 SP12 SC33 100 0 + +ITEM END + +# Templates + +ITEM TEMPLATES + +# name smiles + +CHOA [SP1]1[SC110]3[SC33]2[SP11]1[SC112]6[SP12]4[SC111]5[Qa-1] +CHOL [SP1]1[SC1]3[SC31]2[SC11]1[SC13]6[SC14]4[SC12]5[C1] +CO [SC19]1([SC15]3[SC32]2[SC16]1[SC18]6[SC1]4[SC17]5[C1])[Na][C1][C3][C1][C1] + +ITEM END diff --git a/tools/moltemplate/moltemplate/force_fields/martini/emcprm2lt.py b/tools/moltemplate/moltemplate/force_fields/martini/emcprm2lt.py new file mode 100755 index 0000000000000000000000000000000000000000..81ed2358aa14a0ab7dcfe8795ef00b45ca4d3062 --- /dev/null +++ b/tools/moltemplate/moltemplate/force_fields/martini/emcprm2lt.py @@ -0,0 +1,580 @@ +#!/usr/bin/python + +import os, sys, getopt +import datetime + +__version__ = 0.1 + +#################### UNITS #################### +# Only used with --units flag +econv = 1.0 # Additional Factor for unit conversion if needed (energies) +lconv = 1.0 # Additional Factor for unit conversion if neededa (lengths) +dconv = 1.0 # Additional Factor for unit conversion if neededa (densities) +############################################### + +print('\nEMC 2 LT conversion tool: v%s\n' % __version__) + +def helpme(): + print 'Help for the EMC 2 LT conversion tool\n' + print 'Input takes a list of files in EMC .prm format to be read.' + print 'Additional styles (bond, angle, etc) can be modified via the',\ + 'command line. Any valid LAMMPS style can be used.\n' + print 'Styles include:' + print '--pair-style=' + print '--bond-style=' + print '--angle-style=' + print '--dihedral-style=' + print '--improper-style=\n' + print 'Default styles are lj/cut/coul/long, harmonic, harmonic, harmonic,',\ + 'harmonic \n' + print 'Other commands:' + print '--name= provides basename for output file if desired\n' + print '--units flag for manual units (no parameter needed)\n' + print 'Usage example:' + print 'emcprm2lt.py file1 file2 --bond-style=harmonic --angle-style=harmonic' + print '' + +def Abort(): + print 'Aborting...' + sys.exit() + +def WriteInit(): +# Write generic LAMMPS settings, likely need additional on a per-ff basis + foutput.write(' write_once("In Init") {\n') + foutput.write(' # Warning: This is a very generic "In Init" section, further\n') + foutput.write(' # modification prior to any simulation is extremely likely\n') + foutput.write(' units real\n') + foutput.write(' atom_style full\n') + foutput.write(' bond_style hybrid %s\n' % bstyle) + if angle_flag: + foutput.write(' angle_style hybrid %s\n' % astyle) + if torsion_flag: + foutput.write(' dihedral_style hybrid %s\n' % dstyle) + if improp_flag: + foutput.write(' improper_style hybrid %s\n' % istyle) + foutput.write(' pair_style hybrid %s %f %f\n' % (pstyle, + float(inner[0])*lconv, float(cutoff[0])*lconv)) + if pair14[0] == 'OFF': + foutput.write(' special_bonds lj/coul 0.0 0.0 0.0\n') + else: + print 'Warning: special_bonds needed, add to "In Init" section\n' + foutput.write(' } # end init\n') + +def Units(length_flag, energy_flag, density_flag): +# Check flags for all units, determine what conversions are needed, hard-coded for LAMMPS 'real' + print 'Attempting to auto-convert units... This should always be double-checked',\ + ' especially for unique potential styles' + global lconv; global econv; global dconv + if length_flag: + print 'Warning: length scale does not match LAMMPS real units, attempting conversion to angstroms' + if length[0] == 'NANOMETER': + lconv = 10.0 + print ' nanometer -> angstrom' + elif length[0] == 'MICROMETER': + lconv = 10000.0 + print ' micrometer -> angstrom' + elif length[0] == 'METER': + lconv = 10000000000.0 + print ' meter -> angstrom' + else: + print 'Length units NOT converted' + if energy_flag: + print 'Warning: energy units do not match LAMMPS real units, attempting conversion to kcal/mol' + if energy[0] == 'KJ/MOL': + econv = 0.239006 + print ' kj/mol -> kcal/mol' + elif energy[0] == 'J/MOL': + econv = 0.000239006 + print ' j/mol -> kcal/mol' + elif energy[0] == 'CAL/MOL': + econv = 0.001 + print ' cal/mol -> kcal/mol' + else: + print 'Energy units NOT converted' + if density_flag: + print 'Warning: density units do not match LAMMPS real units, attempting conversion to gram/cm^3' + if density[0] == 'KG/M^3': + dconv = 0.001 + print ' kg/m^3 -> g/cm^3' + else: + print 'Density units NOT converted' + return lconv, econv, dconv + +def ChkPotential(manual_flag, angle_flag, torsion_flag, improp_flag): +# Check type of potential, determine type of unit conversion is necessary + global beconv + if angle_flag: + global aeconv + if torsion_flag: + global deconv + if improp_flag: + global ieconv + if manual_flag == False: + # Chk bond potential + if bstyle == '' or bstyle == 'harmonic': + beconv = econv / (2*pow(lconv,2)) + else: + print 'Cannot find bond potential type, use manual units' + Abort() + if angle_flag: + if astyle == '' or astyle == 'harmonic': + aeconv = econv + elif astyle == 'cosine/squared': + aeconv = econv / 2 + else: + print 'Cannot find angle potential type, use manual units' + Abort() + # torsion and improper not implemented fully + elif torsion_flag: + if dstyle == '' or dstyle == 'harmonic': + deconv = econv + else: + print 'Cannot find torsion potential type, use manual units' + Abort() + elif improp_flag: + if istyle == '' or istyle == 'harmonic': + ieconv = econv + else: + print 'Cannot find improper potential type, use manual units' + Abort() + else: + # Modify as needed + print 'Warning: Manual units used, set potential conversion units in script' + beconv = 1 + if angle_flag: + aeconv = 1 + if torsion_flag: + deconv = 1 + if improp_flag: + ieconv = 1 + + +### Parse input ### +if len(sys.argv) == 1: + helpme() + sys.exit() +manual_units = False # Turned on via command line +args = list(sys.argv[1:]) +myopts, args = getopt.gnu_getopt(args, 'fh', ['pair-style=', 'bond-style=', 'angle-style=', + 'dihedral-style=', 'improper-style=', 'name=', 'units']) +filenames = list(args) +pstyle = ''; bstyle = ''; astyle = ''; dstyle = ''; istyle = '' +name = '' +for opt, arg in myopts: + if opt in ('-f'): + filenames = arg + elif opt in ('--pair-style'): + pstyle = arg + elif opt in ('--bond-style'): + bstyle = arg + elif opt in ('--angle-style'): + astyle = arg + elif opt in ('--dihedral-style'): + dstyle = arg + elif opt in ('--improper-style'): + istyle = arg + elif opt in ('--name'): + name = arg + elif opt in ('--units'): + manual_units = True + print 'Manual units enabled, modify python script accordingly' + elif opt in ('-h', '--help'): + helpme() + sys.exit() + +### Check input filenames, make sure they exist ### +print 'Converting: ' +for i in range(len(filenames)): + if os.path.isfile(filenames[i]): + print '', filenames[i] + else: + print 'invalid filename:', filenames[i] + Abort() +print 'from EMC .prm to moltemplate .lt format\n' + +### Open all files ### +f = [open(fname, 'r') for fname in filenames] + +### All these settings from DEFINE should be list of fixed size ### +ffname = [[] for i in range(len(f))] +fftype = [[] for i in range(len(f))] +version = [[] for i in range(len(f))] +created1 = [[] for i in range(len(f))] +created2 = [[] for i in range(len(f))] +length = [[] for i in range(len(f))] +energy = [[] for i in range(len(f))] +density = [[] for i in range(len(f))] +mix = [[] for i in range(len(f))] +nbonded = [[] for i in range(len(f))] +inner = [[] for i in range(len(f))] +cutoff = [[] for i in range(len(f))] +pair14 = [[] for i in range(len(f))] +angle_def = [[] for i in range(len(f))] +torsion_def = [[] for i in range(len(f))] +improp_def = [[] for i in range(len(f))] # not all prm have this + +### Parse DEFINE section, save info for each file ### +for i in range(len(f)): + grab = False + for line in f[i]: + if line.strip() == 'ITEM DEFINE': + grab = True + elif line.strip() == 'ITEM END': + grab = False + elif grab: + if line.startswith('FFNAME'): + ffname[i] = line.split()[1].strip() + if line.startswith('FFTYPE'): + fftype[i] = line.split()[1].strip() + if line.startswith('VERSION'): + version[i] = line.split()[1].strip() + if line.startswith('CREATED'): + created1[i] = line.split()[1].strip() + created2[i] = line.split()[2].strip() + if line.startswith('LENGTH'): + length[i] = line.split()[1].strip() + if line.startswith('ENERGY'): + energy[i] = line.split()[1].strip() + if line.startswith('DENSITY'): + density[i] = line.split()[1].strip() + if line.startswith('MIX'): + mix[i] = line.split()[1].strip() + if line.startswith('NBONDED'): + nbonded[i] = line.split()[1].strip() + if line.startswith('INNER'): + inner[i] = line.split()[1].strip() + if line.startswith('CUTOFF'): + cutoff[i] = line.split()[1].strip() + if line.startswith('PAIR14'): + pair14[i] = line.split()[1].strip() + if line.startswith('ANGLE'): + angle_def[i] = line.split()[1].strip() + if line.startswith('TORSION'): + torsion_def[i] = line.split()[1].strip() + if line.startswith('IMPROP'): + improp_def[i] = line.split()[1].strip() + +### Sanity Checks ### +for i in range(len(f)): + for j in range(len(f)): + if ffname[j] != ffname[i]: + print 'force field files do not match' + Abort() + if length[j] != length[i]: + print 'units not identical between files' + Abort() + if energy[j] != energy[i]: + print 'units not identical between files' + Abort() + if density[j] != density[i]: + print 'units not identical between files' + Abort() + if inner[j] != inner[i]: + print 'inner cutoff not identical between files' + Abort() + if cutoff[j] != cutoff[i]: + print 'cutoff not identical between files' + Abort() + if pair14[j] != pair14[i]: + print '1-4 pair interaction not consistent between files' + Abort() + +### Check if sections exist in PRM file ### +angle_flag = False; torsion_flag = False; improp_flag = False +for i in range(len(f)): + if angle_def[i] == 'WARN': + angle_flag = True + if torsion_def[i] == 'WARN': + torsion_flag = True + if improp_def[i] == 'WARN': + improp_flag = True + +### Check which units to use, trip convert flags ### +length_flag = False; energy_flag = False; density_flag = False +if length[0] != 'ANGSTROM': + length_flag = True +if energy[0] != 'KCAL/MOL': + energy_flag = True +if density[0] != 'G/CC': + density_flag = True +if manual_units == True: + length_flag = False + energy_flag = False + density_flag = False +Units(length_flag, energy_flag, density_flag) + +### Read Whole File, save to lists ### +# Non-crucial sections include +# BONDS, ANGLE, TORSION, IMPROP, NONBOND +# Read all sections every time, only output sections when flags tripped +f = [open(fname, 'r') for fname in filenames] +masses = []; nonbond = []; bond = []; angle = []; torsion = []; improp = [] +equiv = [] +for i in range(len(f)): + MASS = False + NONBOND = False + BOND = False + ANGLE = False + TORSION = False + IMPROP = False + EQUIV = False + for line in f[i]: + if line.strip() == 'ITEM MASS': + MASS = True + elif line.strip() == 'ITEM END': + MASS = False + elif MASS: + if not line.startswith('#'): + if not line.startswith('\n'): + masses.append(line.strip().split()) + if line.strip() == 'ITEM NONBOND': + NONBOND = True + elif line.strip() == 'ITEM END': + NONBOND = False + elif NONBOND: + if not line.startswith('#'): + if not line.startswith('\n'): + nonbond.append(line.strip().split()) + if line.strip() == 'ITEM BOND': + BOND = True + elif line.strip() == 'ITEM END': + BOND = False + elif BOND: + if not line.startswith('#'): + if not line.startswith('\n'): + bond.append(line.strip().split()) + if line.strip() == 'ITEM ANGLE': + ANGLE = True + elif line.strip() == 'ITEM END': + ANGLE = False + elif ANGLE: + if not line.startswith('#'): + if not line.startswith('\n'): + angle.append(line.strip().split()) + if line.strip() == 'ITEM TORSION': + TORSION = True + elif line.strip() == 'ITEM END': + TORSION = False + elif TORSION: + if not line.startswith('#'): + if not line.startswith('\n'): + torsion.append(line.strip().split()) + if line.strip() == 'ITEM IMPROP': + IMPROP = True + elif line.strip() == 'ITEM END': + IMPROP = False + elif IMPROP: + if not line.startswith('#'): + if not line.startswith('\n'): + improp.append(line.strip().split()) + if line.strip() == 'ITEM EQUIVALENCE': + EQUIV = True + elif line.strip() == 'ITEM END': + EQUIV = False + elif EQUIV: + if not line.startswith('#'): + if not line.startswith('\n'): + equiv.append(line.strip().split()) +### Close prm files ### +for fname in f: + fname.close() + +### Sanity checks before writing LT files ### +# Check Equiv +for i in range(len(equiv)): + for j in range(len(equiv)): + if (equiv[i][0] == equiv[j][0]) and (equiv[i] != equiv[j]): + print 'Error: Identical atom types with different equivalences' + Abort() +# Check Masses +for i in range(len(masses)): + for j in range(len(masses)): + if (masses[i][0] == masses[j][0]) and (masses[i][1] != masses[j][1]): + print 'Error: Identical types with different mass' + Abort() +# Check Nonbond +for i in range(len(nonbond)): + for j in range(len(nonbond)): + if (nonbond[i][0] == nonbond[j][0]) and (nonbond[i][1] == nonbond[j][1]) and ((nonbond[i][2] != nonbond[j][2]) or (nonbond[i][3] != nonbond[j][3])): + print 'Error: Identical types with different pair-interactions' + Abort() + +### Remove double equivalences ### +for i in range(len(equiv)): + once = True + for j in range(len(equiv)): + if (equiv[i][0] == equiv[j][0]) and once: + once = False + elif (equiv[i][0] == equiv[j][0]): + equiv[j][1] = None + equiv[j][2] = 'duplicate' + if len(equiv[i]) != 6: + print 'Warning: Incorrect equivalence formatting for type %s' % equiv[i][0],\ + 'skipping type, topology may not be complete' + equiv[i][1] = None + equiv[i][2] = 'invalid_format' + +### Check Potential Styles and Set Units ### +ChkPotential(manual_units, angle_flag, torsion_flag, improp_flag) + +### Set output LT file ### +fname = 'ff_output.lt' +if name == '': + fname = ffname[0] + '.lt' +else: + fname = name + '.lt' +foutput = open(fname, 'w') + +### Output to LT format ### +foutput.write('# Autogenerated by EMC 2 LT tool v%s on %s\n' % (__version__, str(datetime.date.today()))) +foutput.write('#\n# ') +for i in range(len(sys.argv)): + foutput.write('%s ' % sys.argv[i]) +foutput.write('\n') +foutput.write('#\n') +foutput.write('# Adapted from EMC by Pieter J. in \'t Veld\n') +foutput.write('# Originally written as, FFNAME:%s STYLE:%s VERSION:%s on %s %s\n' % + (ffname[0], fftype[0], version[0], created1[0], created2[0])) +foutput.write('\n') +foutput.write('%s {\n' % ffname[0]) + +# Charges not necessary? emc file assign charges in smiles, which would +# be in the per-molecule files created by moltemplate user... not here + +### Mass Info ### +foutput.write(' write_once("Data Masses") {\n') +for i in range(len(masses)): + if equiv[i][1] != None: + foutput.write(' @atom:%s %f # %s\n' % + (masses[i][0], float(masses[i][1]), masses[i][0])) +foutput.write(' } # end of atom masses\n\n') + +### Equiv Info ### +# Write Equivalence +foutput.write(' # ----- EQUIVALENCE CATEGORIES for bonded interaction lookup -----\n') +for i in range(len(equiv)): + if equiv[i][1] != None: + foutput.write(' replace{ @atom:%s @atom:%s_b%s_a%s_d%s_i%s}\n' % + (equiv[i][0], equiv[i][0], equiv[i][2], equiv[i][3], equiv[i][4], equiv[i][5])) +foutput.write(' # END EQUIVALENCE\n\n') + +### Nonbonded Info ### +if pstyle == '': + print 'Warning: no non-bonded potential provided, assuming lj/cut/coul/long' + pstyle = 'lj/cut/coul/long' +foutput.write(' write_once("In Settings") {\n') +foutput.write(' # ----- Non-Bonded interactions -----\n') +# Add new types from equivalence +for i in range(len(equiv)): + once = True + for j in range(len(nonbond)): + # Get terms for new types + if (equiv[i][0] != equiv[i][1]) and (equiv[i][1] == nonbond[j][0]): + if not equiv[i][1] == nonbond[j][1]: + line = '%s %s %s %s' % (equiv[i][0], nonbond[j][1], nonbond[j][2], nonbond[j][3]) + nonbond.append(line.split()) + if once: + once = False + line = '%s %s %s %s' % (equiv[i][0], equiv[i][0], nonbond[j][2], nonbond[j][3]) + nonbond.append(line.split()) + if (equiv[i][0] != equiv[i][1]) and (equiv[i][1] == nonbond[j][1]): + line = '%s %s %s %s' % (equiv[i][0], nonbond[j][0], nonbond[j][2], nonbond[j][3]) + if line.split() != nonbond[-1]: + nonbond.append(line.split()) +for i in range(len(nonbond)): + atom1name = None + atom2name = None + # Cross Terms + Diagonal, normal + for j in range(len(equiv)): + if nonbond[i][0] == equiv[j][0]: + atom1name = '%s_b%s_a%s_d%s_i%s' % (nonbond[i][0], equiv[j][2], equiv[j][3], equiv[j][4], equiv[j][5]) + if nonbond[i][1] == equiv[j][0]: + atom2name = '%s_b%s_a%s_d%s_i%s' % (nonbond[i][1], equiv[j][2], equiv[j][3], equiv[j][4], equiv[j][5]) + #foutput.write(' pair_coeff @atom:%s @atom:%s %s %f %f' % + # (nonbond[i][0], nonbond[i][1], pstyle, float(nonbond[i][2])*econv, float(nonbond[i][2])*lconv)) + foutput.write(' pair_coeff @atom:%s @atom:%s %s %f %f' % + (atom1name, atom2name, pstyle, float(nonbond[i][3])*econv, float(nonbond[i][2])*lconv)) + foutput.write(' # %s-%s\n' % (nonbond[i][0], nonbond[i][1])) +foutput.write(' } # end of nonbonded parameters\n\n') + +### Bond Info ### +if bstyle == '': + print 'Warning: no bond potential provided, assuming harmonic' + bstyle == 'harmonic' +foutput.write(' write_once("In Settings") {\n') +foutput.write(' # ----- Bonds -----\n') +for i in range(len(bond)): + foutput.write(' bond_coeff @bond:%s-%s %s %f %f' % + (bond[i][0], bond[i][1], bstyle, float(bond[i][2])*beconv, float(bond[i][3])*lconv)) + foutput.write(' # %s-%s\n' % (bond[i][0], bond[i][1])) +foutput.write(' }\n\n') +foutput.write(' write_once("Data Bonds By Type") {\n') +for i in range(len(bond)): + foutput.write(' @bond:%s-%s @atom:*_b%s_a*_d*_i* @atom:*_b%s_a*_d*_i*\n' % + (bond[i][0], bond[i][1], bond[i][0], bond[i][1])) +foutput.write(' } # end of bonds\n\n') + +### Angle Info ### +if angle_flag: + if astyle == '': + print 'Warning: no angle potential provided, assuming harmonic' + astyle == 'harmonic' + foutput.write(' write_once("In Settings") {\n') + foutput.write(' # ----- Angles -----\n') + for i in range(len(angle)): + foutput.write(' angle_coeff @angle:%s-%s-%s %s %f %f' % + (angle[i][0], angle[i][1], angle[i][2], astyle, float(angle[i][3])*aeconv, float(angle[i][4]))) + foutput.write(' # %s-%s-%s\n' % (angle[i][0], angle[i][1], angle[i][2])) + foutput.write(' }\n\n') + foutput.write(' write_once("Data Angles By Type") {\n') + for i in range(len(angle)): + foutput.write(' @angle:%s-%s-%s @atom:*_b*_a%s_d*_i* @atom:*_b*_a%s_d*_i* @atom:*_b*_a%s_d*_i*\n' % + (angle[i][0], angle[i][1], angle[i][2], angle[i][0], angle[i][1], angle[i][2])) + foutput.write(' } # end of angles\n\n') + +### Torsion/Dihedral Info ###a +# Incomplete +if torsion_flag: + if dstyle == '': + print 'Warning: no dihedral/torsion potential provided, assuming harmonic' + dstyle == 'harmonic' + foutput.write(' write_once("In Settings") {\n') + foutput.write(' # ----- Dihedrals -----\n') + for i in range(len(torsion)): + foutput.write(' dihedral_coeff @dihedral:%s-%s-%s-%s %s %f %f %f %f\n' % + (torsion[i][0], torsion[i][1], torsion[i][2], torsion[i][3], dstyle, float(torsion[i][4])*deconv, float(torsion[i][5]), float(torsion[i][6]))) + foutput.write(' }\n\n') + foutput.write(' write_once("Data Dihedrals By Type") {\n') + for i in range(len(torsion)): + foutput.write(' @dihedral:%s-%s-%s-%s @atom:*_b*_a*_d%s_i* @atom:*_b*_a*_d%s_i* @atom:*_b*_a*_d%s_i* @atom:*_b*_a*_d%s_i*' % + (torsion[i][0], torsion[i][1], torsion[i][2], torsion[i][3], torsion[i][0], torsion[i][1], torsion[i][2], torsion[i][3])) + foutput.write(' } # end of dihedrals\n\n') + +### Improper Info ### +# Incomplete +ieconv = econv # improper coeff conversion +if improp_flag: + if istyle == '': + print 'Warning: no improper potential provided, assuming harmonic' + istyle == 'harmonic' + foutput.write(' write_once("In Settings") {\n') + foutput.write(' # ----- Impropers -----\n') + # As discussed, a check for convention of impropers is probably needed here + for i in range(len(improp)): + foutput.write(' improper_coeff @improper:%s-%s-%s-%s %s %f %f\n' % + (improp[i][0], improp[i][1], improp[i][2], improp[i][3], istyle, + float(improp[i][4]), float(improp[i][5]))) + foutput.write(' }\n\n') + foutput.write(' write_once("Data Impropers By Type") {\n') + for i in range(len(improp)): + foutput.write(' @improper:%s-%s-%s-%s @atom:*_b*_a*_d*_i%s @atom:*_b*_a*_d*_i%s @atom:*_b*_a*_d*_i%s @atom:*_b*_a*_d*_i%s' % + (improp[i][0], improp[i][1], improp[i][2], improp[i][3], improp[i][0], improp[i][1], improp[i][2], improp[i][3])) + foutput.write(' } # end of impropers\n\n') + +### Initialization Info ### +print 'Warning: Attempting to write generic "In Init" section,',\ + 'further modification after this script is extremely likely' +WriteInit() + +foutput.write('} # %s\n' % ffname[0]) +sys.exit() diff --git a/tools/moltemplate/moltemplate/force_fields/martini/lipids.prm b/tools/moltemplate/moltemplate/force_fields/martini/lipids.prm new file mode 100644 index 0000000000000000000000000000000000000000..1139c421dab52f908931b71343210ef312aa5d85 --- /dev/null +++ b/tools/moltemplate/moltemplate/force_fields/martini/lipids.prm @@ -0,0 +1,160 @@ +# +# Martini interaction parameters using martini.30640.tmp +# converted by martini.pl v1.2, February 10, 2014 by Pieter J. in 't Veld +# to be used in conjuction with EMC v9.3.7 or higher +# + +# Force field definition + +ITEM DEFINE + +FFNAME MARTINI +FFTYPE COARSE +VERSION 2011 +CREATED Feb 2014 +LENGTH NANOMETER +ENERGY KJ/MOL +DENSITY G/CC +MIX NONE +NBONDED 1 +INNER 0.9 +CUTOFF 1.2 +PAIR14 OFF +ANGLE WARN +TORSION IGNORE + +ITEM END + +# Masses + +ITEM MASS + +# type mass element ncons charge comment + +C41 72 C4 2 0 apolar +C42 72 C4 2 0 apolar +Na1 72 Na 2 0 intermediate +Na2 72 Na 2 0 intermediate +Qa1 72 Qa 2 0 charged +Qa2 72 Qa 2 0 charged + +ITEM END + +# Typing equivalences + +ITEM EQUIVALENCE + +# type pair bond angle torsion improper + +C41 C4 C4 C41 C41 C41 +C42 C4 C4 C42 C42 C42 +Na1 Na Na1 Na1 Na1 Na1 +Na2 Na Na2 Na2 Na2 Na2 +Qa1 Qa Qa1 Qa1 Qa1 Qa1 +Qa2 Qa Qa2 Qa2 Qa2 Qa2 + +ITEM END + +# Bond parameters + +ITEM BOND + +# type1 type2 k l0 + +C1 C1 1250 0.47 +C1 C3 1250 0.47 +C1 C4 1250 0.47 +C1 Na 1250 0.47 +C1 Na1 1250 0.47 +C1 Na2 1250 0.47 +C1 P5 1250 0.47 +C2 C4 1250 0.47 +C3 P1 1250 0.47 +C4 C4 1250 0.47 +C4 Na 1250 0.47 +Na Na 1250 0.37 +Na Na1 1250 0.37 +Na Na2 1250 0.37 +Na Qa 1250 0.47 +Na Qa1 1250 0.37 +Na Qa2 1250 0.37 +Na1 Qa 1250 0.37 +Na2 Qa 1250 0.37 +P1 P5 1250 0.37 +P4 Qa 1250 0.37 +P5 Qa 1250 0.47 +P5 Qa1 1250 0.37 +P5 Qa2 1250 0.37 +Q0 Qa 1250 0.47 +Qa Qd 1250 0.47 + +ITEM END + +# Angle parameters + +ITEM ANGLE + +# type1 type2 type3 k theta0 + +C1 C1 C1 25 180 +C1 C1 C3 25 180 +C1 C1 Na 25 180 +C1 C1 Na1 25 180 +C1 C1 Na2 25 180 +C1 C1 P5 25 180 +C1 C3 C1 45 120 +C1 C3 P1 45 180 +C1 C4 C41 45 120 +C1 C4 C42 45 120 +C1 C41 C4 10 100 +C1 C42 C4 10 100 +C1 Na Qa 25 180 +C1 Na Qa1 25 180 +C1 Na Qa2 25 180 +C1 Na1 Qa 25 180 +C1 Na2 Qa 25 180 +C1 P5 Qa 25 180 +C2 C4 C4 45 120 +C4 C4 C4 10 100 +C4 C4 Na 10 100 +C4 Na Qa 25 180 +C41 C1 Na 25 180 +C42 C1 Na 25 180 +Na Na Qa 25 120 +Na Na Qa1 25 120 +Na Na Qa2 25 120 +Na Na1 Qa 25 120 +Na Na2 Qa 25 120 +P1 P5 Qa 25 120 + +ITEM END + +# Templates + +ITEM TEMPLATES + +# name smiles + +BOLA [Q0+1][Qa-1][Na][Na][C1][C1][C1][C1][C1][C1][C1][C1][Na][Na]([Qa-1][Q0+1])[C1][C1][C1][C1][C1][C1][C1][C1] +BOLB [Q0+1][Qa-1][Na]([Na][C1][C1][C1][C1])[C1][C1][C1][C1][C1][C1][C1][C1][Na]([Qa-1][Q0+1])[Na][C1][C1][C1][C1] +DAPC [Q0+1][Qa-1][Na]([Na][C4][C4][C4][C4][C2])[C4][C4][C4][C4][C2] +DHPC [Q0+1][Qa-1][Na]([Na][C1][C1])[C1][C1] +DHPE [Qd+1][Qa-1][Na]([Na][C1][C1])[C1][C1] +DLPC [Q0+1][Qa-1][Na]([Na][C1][C1][C1])[C1][C1][C1] +DLPE [Qd+1][Qa-1][Na]([Na][C1][C1][C1])[C1][C1][C1] +DOPC [Q0+1][Qa-1][Na]([Na][C1][C1][C3][C1][C1])[C1][C1][C3][C1][C1] +DOPE [Qd+1][Qa-1][Na]([Na][C1][C1][C3][C1][C1])[C1][C1][C3][C1][C1] +DOPG [P4][Qa-1][Na1]([Na][C1][C1][C3][C1][C1])[C1][C1][C3][C1][C1] +DOPS [P5][Qa1-1][Na]([Na][C1][C1][C3][C1][C1])[C1][C1][C3][C1][C1] +DPPC [Q0+1][Qa-1][Na]([Na][C1][C1][C1][C1])[C1][C1][C1][C1] +DPPE [Qd+1][Qa-1][Na]([Na][C1][C1][C1][C1])[C1][C1][C1][C1] +DSPC [Q0+1][Qa-1][Na]([Na][C1][C1][C1][C1][C1])[C1][C1][C1][C1][C1] +DSPE [Qd+1][Qa-1][Na]([Na][C1][C1][C1][C1][C1])[C1][C1][C1][C1][C1] +DUPC [Q0+1][Qa-1][Na]([Na][C1][C42][C4][C1])[C1][C41][C4][C1] +POPC [Q0+1][Qa-1][Na]([Na][C1][C1][C1][C1])[C1][C1][C3][C1][C1] +POPE [Qd+1][Qa-1][Na]([Na][C1][C1][C1][C1])[C1][C1][C3][C1][C1] +POPG [P4][Qa-1][Na2]([Na][C1][C1][C1][C1])[C1][C1][C3][C1][C1] +POPS [P5][Qa2-1][Na]([Na][C1][C1][C1][C1])[C1][C1][C3][C1][C1] +PPCS [Q0+1][Qa-1][P5]([P1][C3][C1][C1][C1])[C1][C1][C1][C1] + +ITEM END diff --git a/tools/moltemplate/moltemplate/force_fields/martini/martini.prm b/tools/moltemplate/moltemplate/force_fields/martini/martini.prm new file mode 100644 index 0000000000000000000000000000000000000000..dc2c1867646e9b68ddd58a9c786e83bcf8aafea8 --- /dev/null +++ b/tools/moltemplate/moltemplate/force_fields/martini/martini.prm @@ -0,0 +1,852 @@ +# +# Martini interaction parameters using martini.30642.tmp +# converted by martini.pl v1.2, February 10, 2014 by Pieter J. in 't Veld +# to be used in conjuction with EMC v9.3.7 or higher +# + +# Force field definition + +ITEM DEFINE + +FFNAME MARTINI +FFTYPE COARSE +VERSION V2.0 +CREATED Feb 2014 +LENGTH NANOMETER +ENERGY KJ/MOL +DENSITY G/CC +MIX NONE +NBONDED 1 +INNER 0.9 +CUTOFF 1.2 +PAIR14 OFF +ANGLE IGNORE +TORSION IGNORE +IMPROP IGNORE + +ITEM END + +# Masses + +ITEM MASS + +# type mass element ncons charge comment + +BP4 72.0 BP4 2 0.000 big particle +C1 72.0 C1 2 0.000 apolar +C2 72.0 C2 2 0.000 apolar +C3 72.0 C3 2 0.000 apolar +C4 72.0 C4 2 0.000 apolar +C5 72.0 C5 2 0.000 apolar +N0 72.0 N0 2 0.000 intermediate +Na 72.0 Na 2 0.000 intermediate +Nd 72.0 Nd 2 0.000 intermediate +Nda 72.0 Nda 2 0.000 intermediate +P1 72.0 P1 2 0.000 polar +P2 72.0 P2 2 0.000 polar +P3 72.0 P3 2 0.000 polar +P4 72.0 P4 2 0.000 polar +P5 72.0 P5 2 0.000 polar +Q0 72.0 Q0 2 0.000 charged +Qa 72.0 Qa 2 0.000 charged +Qd 72.0 Qd 2 0.000 charged +Qda 72.0 Qda 2 0.000 charged +SC1 54.0 SC1 2 0.000 ring apolar +SC2 54.0 SC2 2 0.000 ring apolar +SC3 54.0 SC3 2 0.000 ring apolar +SC4 54.0 SC4 2 0.000 ring apolar +SC5 54.0 SC5 2 0.000 ring apolar +SN0 54.0 SN0 2 0.000 ring intermediate +SNa 54.0 SNa 2 0.000 ring intermediate +SNd 54.0 SNd 2 0.000 ring intermediate +SNda 54.0 SNda 2 0.000 ring intermediate +SP1 54.0 SP1 2 0.000 ring polar +SP2 54.0 SP2 2 0.000 ring polar +SP3 54.0 SP3 2 0.000 ring polar +SP4 54.0 SP4 2 0.000 ring polar +SP5 54.0 SP5 2 0.000 ring polar +SQ0 54.0 SQ0 2 0.000 ring charged +SQa 54.0 SQa 2 0.000 ring charged +SQd 54.0 SQd 2 0.000 ring charged +SQda 54.0 SQda 2 0.000 ring charged + +ITEM END + +# Typing equivalences + +ITEM EQUIVALENCE + +# type pair bond angle torsion improper + +BP4 BP4 BP4 BP4 BP4 BP4 +C1 C1 C1 C1 C1 C1 +C2 C2 C2 C2 C2 C2 +C3 C3 C3 C3 C3 C3 +C4 C4 C4 C4 C4 C4 +C5 C5 C5 C5 C5 C5 +N0 N0 N0 N0 N0 N0 +Na Na Na Na Na Na +Nd Nd Nd Nd Nd Nd +Nda Nda Nda Nda Nda Nda +P1 P1 P1 P1 P1 P1 +P2 P2 P2 P2 P2 P2 +P3 P3 P3 P3 P3 P3 +P4 P4 P4 P4 P4 P4 +P5 P5 P5 P5 P5 P5 +Q0 Q0 Q0 Q0 Q0 Q0 +Qa Qa Qa Qa Qa Qa +Qd Qd Qd Qd Qd Qd +Qda Qda Qda Qda Qda Qda +SC1 SC1 SC1 SC1 SC1 SC1 +SC2 SC2 SC2 SC2 SC2 SC2 +SC3 SC3 SC3 SC3 SC3 SC3 +SC4 SC4 SC4 SC4 SC4 SC4 +SC5 SC5 SC5 SC5 SC5 SC5 +SN0 SN0 SN0 SN0 SN0 SN0 +SNa SNa SNa SNa SNa SNa +SNd SNd SNd SNd SNd SNd +SNda SNda SNda SNda SNda SNda +SP1 SP1 SP1 SP1 SP1 SP1 +SP2 SP2 SP2 SP2 SP2 SP2 +SP3 SP3 SP3 SP3 SP3 SP3 +SP4 SP4 SP4 SP4 SP4 SP4 +SP5 SP5 SP5 SP5 SP5 SP5 +SQ0 SQ0 SQ0 SQ0 SQ0 SQ0 +SQa SQa SQa SQa SQa SQa +SQd SQd SQd SQd SQd SQd +SQda SQda SQda SQda SQda SQda + +ITEM END + +# Nonbonded parameters + +ITEM NONBOND + +# type1 type2 sigma epsilon + +BP4 BP4 0.47 5 +BP4 C1 0.47 2 +BP4 C2 0.47 2.3 +BP4 C3 0.47 2.7 +BP4 C4 0.47 2.7 +BP4 C5 0.47 3.1 +BP4 N0 0.47 3.5 +BP4 Na 0.47 4 +BP4 Nd 0.47 4 +BP4 Nda 0.47 4 +BP4 P1 0.47 4.5 +BP4 P2 0.47 4.5 +BP4 P3 0.47 5 +BP4 P4 0.57 5.6 +BP4 P5 0.47 5.6 +BP4 Q0 0.47 5.6 +BP4 Qa 0.47 5.6 +BP4 Qd 0.47 5.6 +BP4 Qda 0.47 5.6 +BP4 SC1 0.47 2 +BP4 SC2 0.47 2.3 +BP4 SC3 0.47 2.7 +BP4 SC4 0.47 2.7 +BP4 SC5 0.47 3.1 +BP4 SN0 0.47 3.5 +BP4 SNa 0.47 4 +BP4 SNd 0.47 4 +BP4 SNda 0.47 4 +BP4 SP1 0.47 4.5 +BP4 SP2 0.47 4.5 +BP4 SP3 0.47 5 +BP4 SP4 0.47 5 +BP4 SP5 0.47 5.6 +BP4 SQ0 0.47 5.6 +BP4 SQa 0.47 5.6 +BP4 SQd 0.47 5.6 +BP4 SQda 0.47 5.6 +C1 C1 0.47 3.5 +C1 C2 0.47 3.5 +C1 C3 0.47 3.5 +C1 C4 0.47 3.1 +C1 C5 0.47 3.1 +C1 N0 0.47 2.7 +C1 Na 0.47 2.7 +C1 Nd 0.47 2.7 +C1 Nda 0.47 2.7 +C1 P1 0.47 2.7 +C1 P2 0.47 2.3 +C1 P3 0.47 2.3 +C1 P4 0.47 2 +C1 P5 0.47 2 +C1 Q0 0.62 2 +C1 Qa 0.62 2 +C1 Qd 0.62 2 +C1 Qda 0.62 2 +C1 SC1 0.47 3.5 +C1 SC2 0.47 3.5 +C1 SC3 0.47 3.5 +C1 SC4 0.47 3.1 +C1 SC5 0.47 3.1 +C1 SN0 0.47 2.7 +C1 SNa 0.47 2.7 +C1 SNd 0.47 2.7 +C1 SNda 0.47 2.7 +C1 SP1 0.47 2.7 +C1 SP2 0.47 2.3 +C1 SP3 0.47 2.3 +C1 SP4 0.47 2 +C1 SP5 0.47 2 +C1 SQ0 0.62 2 +C1 SQa 0.62 2 +C1 SQd 0.62 2 +C1 SQda 0.62 2 +C2 C2 0.47 3.5 +C2 C3 0.47 3.5 +C2 C4 0.47 3.1 +C2 C5 0.47 3.1 +C2 N0 0.47 3.1 +C2 Na 0.47 2.7 +C2 Nd 0.47 2.7 +C2 Nda 0.47 2.7 +C2 P1 0.47 3.1 +C2 P2 0.47 2.7 +C2 P3 0.47 2.7 +C2 P4 0.47 2.3 +C2 P5 0.47 2.3 +C2 Q0 0.62 2 +C2 Qa 0.62 2 +C2 Qd 0.62 2 +C2 Qda 0.62 2 +C2 SC1 0.47 3.5 +C2 SC2 0.47 3.5 +C2 SC3 0.47 3.5 +C2 SC4 0.47 3.1 +C2 SC5 0.47 3.1 +C2 SN0 0.47 3.1 +C2 SNa 0.47 2.7 +C2 SNd 0.47 2.7 +C2 SNda 0.47 2.7 +C2 SP1 0.47 3.1 +C2 SP2 0.47 2.7 +C2 SP3 0.47 2.7 +C2 SP4 0.47 2.3 +C2 SP5 0.47 2.3 +C2 SQ0 0.62 2 +C2 SQa 0.62 2 +C2 SQd 0.62 2 +C2 SQda 0.62 2 +C3 C3 0.47 3.5 +C3 C4 0.47 3.5 +C3 C5 0.47 3.5 +C3 N0 0.47 3.5 +C3 Na 0.47 2.7 +C3 Nd 0.47 2.7 +C3 Nda 0.47 2.7 +C3 P1 0.47 3.5 +C3 P2 0.47 3.1 +C3 P3 0.47 3.1 +C3 P4 0.47 2.7 +C3 P5 0.47 2.7 +C3 Q0 0.47 2.3 +C3 Qa 0.47 2.3 +C3 Qd 0.47 2.3 +C3 Qda 0.47 2.3 +C3 SC1 0.47 3.5 +C3 SC2 0.47 3.5 +C3 SC3 0.47 3.5 +C3 SC4 0.47 3.5 +C3 SC5 0.47 3.5 +C3 SN0 0.47 3.5 +C3 SNa 0.47 2.7 +C3 SNd 0.47 2.7 +C3 SNda 0.47 2.7 +C3 SP1 0.47 3.5 +C3 SP2 0.47 3.1 +C3 SP3 0.47 3.1 +C3 SP4 0.47 2.7 +C3 SP5 0.47 2.7 +C3 SQ0 0.47 2.3 +C3 SQa 0.47 2.3 +C3 SQd 0.47 2.3 +C3 SQda 0.47 2.3 +C4 C4 0.47 3.5 +C4 C5 0.47 3.5 +C4 N0 0.47 3.5 +C4 Na 0.47 3.1 +C4 Nd 0.47 3.1 +C4 Nda 0.47 3.1 +C4 P1 0.47 3.5 +C4 P2 0.47 3.5 +C4 P3 0.47 3.1 +C4 P4 0.47 2.7 +C4 P5 0.47 2.7 +C4 Q0 0.47 2.7 +C4 Qa 0.47 2.7 +C4 Qd 0.47 2.7 +C4 Qda 0.47 2.7 +C4 SC1 0.47 3.1 +C4 SC2 0.47 3.1 +C4 SC3 0.47 3.5 +C4 SC4 0.47 3.5 +C4 SC5 0.47 3.5 +C4 SN0 0.47 3.5 +C4 SNa 0.47 3.1 +C4 SNd 0.47 3.1 +C4 SNda 0.47 3.1 +C4 SP1 0.47 3.5 +C4 SP2 0.47 3.5 +C4 SP3 0.47 3.1 +C4 SP4 0.47 2.7 +C4 SP5 0.47 2.7 +C4 SQ0 0.47 2.7 +C4 SQa 0.47 2.7 +C4 SQd 0.47 2.7 +C4 SQda 0.47 2.7 +C5 C5 0.47 3.5 +C5 N0 0.47 3.5 +C5 Na 0.47 3.5 +C5 Nd 0.47 3.5 +C5 Nda 0.47 3.5 +C5 P1 0.47 3.5 +C5 P2 0.47 3.5 +C5 P3 0.47 3.5 +C5 P4 0.47 3.1 +C5 P5 0.47 3.1 +C5 Q0 0.47 3.1 +C5 Qa 0.47 3.1 +C5 Qd 0.47 3.1 +C5 Qda 0.47 3.1 +C5 SC1 0.47 3.1 +C5 SC2 0.47 3.1 +C5 SC3 0.47 3.5 +C5 SC4 0.47 3.5 +C5 SC5 0.47 3.5 +C5 SN0 0.47 3.5 +C5 SNa 0.47 3.5 +C5 SNd 0.47 3.5 +C5 SNda 0.47 3.5 +C5 SP1 0.47 3.5 +C5 SP2 0.47 3.5 +C5 SP3 0.47 3.5 +C5 SP4 0.47 3.1 +C5 SP5 0.47 3.1 +C5 SQ0 0.47 3.1 +C5 SQa 0.47 3.1 +C5 SQd 0.47 3.1 +C5 SQda 0.47 3.1 +N0 N0 0.47 3.5 +N0 Na 0.47 3.5 +N0 Nd 0.47 3.5 +N0 Nda 0.47 3.5 +N0 P1 0.47 4 +N0 P2 0.47 4 +N0 P3 0.47 3.5 +N0 P4 0.47 3.5 +N0 P5 0.47 3.5 +N0 Q0 0.47 3.5 +N0 Qa 0.47 3.5 +N0 Qd 0.47 3.5 +N0 Qda 0.47 3.5 +N0 SC1 0.47 2.7 +N0 SC2 0.47 3.1 +N0 SC3 0.47 3.5 +N0 SC4 0.47 3.5 +N0 SC5 0.47 3.5 +N0 SN0 0.47 3.5 +N0 SNa 0.47 3.5 +N0 SNd 0.47 3.5 +N0 SNda 0.47 3.5 +N0 SP1 0.47 4 +N0 SP2 0.47 4 +N0 SP3 0.47 3.5 +N0 SP4 0.47 3.5 +N0 SP5 0.47 3.5 +N0 SQ0 0.47 3.5 +N0 SQa 0.47 3.5 +N0 SQd 0.47 3.5 +N0 SQda 0.47 3.5 +Na Na 0.47 4 +Na Nd 0.47 4.5 +Na Nda 0.47 4.5 +Na P1 0.47 4.5 +Na P2 0.47 4.5 +Na P3 0.47 4.5 +Na P4 0.47 4 +Na P5 0.47 5 +Na Q0 0.47 4 +Na Qa 0.47 4 +Na Qd 0.47 5 +Na Qda 0.47 5 +Na SC1 0.47 2.7 +Na SC2 0.47 2.7 +Na SC3 0.47 2.7 +Na SC4 0.47 3.1 +Na SC5 0.47 3.5 +Na SN0 0.47 3.5 +Na SNa 0.47 4 +Na SNd 0.47 4.5 +Na SNda 0.47 4.5 +Na SP1 0.47 4.5 +Na SP2 0.47 4.5 +Na SP3 0.47 4.5 +Na SP4 0.47 4 +Na SP5 0.47 5 +Na SQ0 0.47 4 +Na SQa 0.47 4 +Na SQd 0.47 5 +Na SQda 0.47 5 +Nd Nd 0.47 4 +Nd Nda 0.47 4.5 +Nd P1 0.47 4.5 +Nd P2 0.47 4.5 +Nd P3 0.47 4.5 +Nd P4 0.47 4 +Nd P5 0.47 5 +Nd Q0 0.47 4 +Nd Qa 0.47 5 +Nd Qd 0.47 4 +Nd Qda 0.47 5 +Nd SC1 0.47 2.7 +Nd SC2 0.47 2.7 +Nd SC3 0.47 2.7 +Nd SC4 0.47 3.1 +Nd SC5 0.47 3.5 +Nd SN0 0.47 3.5 +Nd SNa 0.47 4.5 +Nd SNd 0.47 4 +Nd SNda 0.47 4.5 +Nd SP1 0.47 4.5 +Nd SP2 0.47 4.5 +Nd SP3 0.47 4.5 +Nd SP4 0.47 4 +Nd SP5 0.47 5 +Nd SQ0 0.47 4 +Nd SQa 0.47 5 +Nd SQd 0.47 4 +Nd SQda 0.47 5 +Nda Nda 0.47 4.5 +Nda P1 0.47 4.5 +Nda P2 0.47 4.5 +Nda P3 0.47 4.5 +Nda P4 0.47 4 +Nda P5 0.47 5 +Nda Q0 0.47 4 +Nda Qa 0.47 5 +Nda Qd 0.47 5 +Nda Qda 0.47 5 +Nda SC1 0.47 2.7 +Nda SC2 0.47 2.7 +Nda SC3 0.47 2.7 +Nda SC4 0.47 3.1 +Nda SC5 0.47 3.5 +Nda SN0 0.47 3.5 +Nda SNa 0.47 4.5 +Nda SNd 0.47 4.5 +Nda SNda 0.47 4.5 +Nda SP1 0.47 4.5 +Nda SP2 0.47 4.5 +Nda SP3 0.47 4.5 +Nda SP4 0.47 4 +Nda SP5 0.47 5 +Nda SQ0 0.47 4 +Nda SQa 0.47 5 +Nda SQd 0.47 5 +Nda SQda 0.47 5 +P1 P1 0.47 4.5 +P1 P2 0.47 4.5 +P1 P3 0.47 4.5 +P1 P4 0.47 4.5 +P1 P5 0.47 5.6 +P1 Q0 0.47 4 +P1 Qa 0.47 5 +P1 Qd 0.47 5 +P1 Qda 0.47 5 +P1 SC1 0.47 2.7 +P1 SC2 0.47 3.1 +P1 SC3 0.47 3.5 +P1 SC4 0.47 3.5 +P1 SC5 0.47 3.5 +P1 SN0 0.47 4 +P1 SNa 0.47 4.5 +P1 SNd 0.47 4.5 +P1 SNda 0.47 4.5 +P1 SP1 0.47 4.5 +P1 SP2 0.47 4.5 +P1 SP3 0.47 4.5 +P1 SP4 0.47 4.5 +P1 SP5 0.47 5.6 +P1 SQ0 0.47 4 +P1 SQa 0.47 5 +P1 SQd 0.47 5 +P1 SQda 0.47 5 +P2 P2 0.47 4.5 +P2 P3 0.47 4.5 +P2 P4 0.47 4.5 +P2 P5 0.47 5.6 +P2 Q0 0.47 4.5 +P2 Qa 0.47 5 +P2 Qd 0.47 5 +P2 Qda 0.47 5 +P2 SC1 0.47 2.3 +P2 SC2 0.47 2.7 +P2 SC3 0.47 3.1 +P2 SC4 0.47 3.5 +P2 SC5 0.47 3.5 +P2 SN0 0.47 4 +P2 SNa 0.47 4.5 +P2 SNd 0.47 4.5 +P2 SNda 0.47 4.5 +P2 SP1 0.47 4.5 +P2 SP2 0.47 4.5 +P2 SP3 0.47 4.5 +P2 SP4 0.47 4.5 +P2 SP5 0.47 5.6 +P2 SQ0 0.47 4.5 +P2 SQa 0.47 5 +P2 SQd 0.47 5 +P2 SQda 0.47 5 +P3 P3 0.47 5 +P3 P4 0.47 5 +P3 P5 0.47 5.6 +P3 Q0 0.47 5 +P3 Qa 0.47 5.6 +P3 Qd 0.47 5.6 +P3 Qda 0.47 5.6 +P3 SC1 0.47 2.3 +P3 SC2 0.47 2.7 +P3 SC3 0.47 3.1 +P3 SC4 0.47 3.1 +P3 SC5 0.47 3.5 +P3 SN0 0.47 3.5 +P3 SNa 0.47 4.5 +P3 SNd 0.47 4.5 +P3 SNda 0.47 4.5 +P3 SP1 0.47 4.5 +P3 SP2 0.47 4.5 +P3 SP3 0.47 5 +P3 SP4 0.47 5 +P3 SP5 0.47 5.6 +P3 SQ0 0.47 5 +P3 SQa 0.47 5.6 +P3 SQd 0.47 5.6 +P3 SQda 0.47 5.6 +P4 P4 0.47 5 +P4 P5 0.47 5.6 +P4 Q0 0.47 5.6 +P4 Qa 0.47 5.6 +P4 Qd 0.47 5.6 +P4 Qda 0.47 5.6 +P4 SC1 0.47 2 +P4 SC2 0.47 2.3 +P4 SC3 0.47 2.7 +P4 SC4 0.47 2.7 +P4 SC5 0.47 3.1 +P4 SN0 0.47 3.5 +P4 SNa 0.47 4 +P4 SNd 0.47 4 +P4 SNda 0.47 4 +P4 SP1 0.47 4.5 +P4 SP2 0.47 4.5 +P4 SP3 0.47 5 +P4 SP4 0.47 5 +P4 SP5 0.47 5.6 +P4 SQ0 0.47 5.6 +P4 SQa 0.47 5.6 +P4 SQd 0.47 5.6 +P4 SQda 0.47 5.6 +P5 P5 0.47 5.6 +P5 Q0 0.47 5 +P5 Qa 0.47 5.6 +P5 Qd 0.47 5.6 +P5 Qda 0.47 5.6 +P5 SC1 0.47 2 +P5 SC2 0.47 2.3 +P5 SC3 0.47 2.7 +P5 SC4 0.47 2.7 +P5 SC5 0.47 3.1 +P5 SN0 0.47 3.5 +P5 SNa 0.47 5 +P5 SNd 0.47 5 +P5 SNda 0.47 5 +P5 SP1 0.47 5.6 +P5 SP2 0.47 5.6 +P5 SP3 0.47 5.6 +P5 SP4 0.47 5.6 +P5 SP5 0.47 5.6 +P5 SQ0 0.47 5 +P5 SQa 0.47 5.6 +P5 SQd 0.47 5.6 +P5 SQda 0.47 5.6 +Q0 Q0 0.47 3.5 +Q0 Qa 0.47 4.5 +Q0 Qd 0.47 4.5 +Q0 Qda 0.47 4.5 +Q0 SC1 0.62 2 +Q0 SC2 0.62 2 +Q0 SC3 0.47 2.3 +Q0 SC4 0.47 2.7 +Q0 SC5 0.47 3.1 +Q0 SN0 0.47 3.5 +Q0 SNa 0.47 4 +Q0 SNd 0.47 4 +Q0 SNda 0.47 4 +Q0 SP1 0.47 4 +Q0 SP2 0.47 4.5 +Q0 SP3 0.47 5 +Q0 SP4 0.47 5.6 +Q0 SP5 0.47 5 +Q0 SQ0 0.47 3.5 +Q0 SQa 0.47 4.5 +Q0 SQd 0.47 4.5 +Q0 SQda 0.47 4.5 +Qa Qa 0.47 5 +Qa Qd 0.47 5.6 +Qa Qda 0.47 5.6 +Qa SC1 0.62 2 +Qa SC2 0.62 2 +Qa SC3 0.47 2.3 +Qa SC4 0.47 2.7 +Qa SC5 0.47 3.1 +Qa SN0 0.47 3.5 +Qa SNa 0.47 4 +Qa SNd 0.47 5 +Qa SNda 0.47 5 +Qa SP1 0.47 5 +Qa SP2 0.47 5 +Qa SP3 0.47 5.6 +Qa SP4 0.47 5.6 +Qa SP5 0.47 5.6 +Qa SQ0 0.47 4.5 +Qa SQa 0.47 5 +Qa SQd 0.47 5.6 +Qa SQda 0.47 5.6 +Qd Qd 0.47 5 +Qd Qda 0.47 5.6 +Qd SC1 0.62 2 +Qd SC2 0.62 2 +Qd SC3 0.47 2.3 +Qd SC4 0.47 2.7 +Qd SC5 0.47 3.1 +Qd SN0 0.47 3.5 +Qd SNa 0.47 5 +Qd SNd 0.47 4 +Qd SNda 0.47 5 +Qd SP1 0.47 5 +Qd SP2 0.47 5 +Qd SP3 0.47 5.6 +Qd SP4 0.47 5.6 +Qd SP5 0.47 5.6 +Qd SQ0 0.47 4.5 +Qd SQa 0.47 5.6 +Qd SQd 0.47 5 +Qd SQda 0.47 5.6 +Qda Qda 0.47 5.6 +Qda SC1 0.62 2 +Qda SC2 0.62 2 +Qda SC3 0.47 2.3 +Qda SC4 0.47 2.7 +Qda SC5 0.47 3.1 +Qda SN0 0.47 3.5 +Qda SNa 0.47 5 +Qda SNd 0.47 5 +Qda SNda 0.47 5 +Qda SP1 0.47 5 +Qda SP2 0.47 5 +Qda SP3 0.47 5.6 +Qda SP4 0.47 5.6 +Qda SP5 0.47 5.6 +Qda SQ0 0.47 4.5 +Qda SQa 0.47 5.6 +Qda SQd 0.47 5.6 +Qda SQda 0.47 5.6 +SC1 SC1 0.43 2.625 +SC1 SC2 0.43 2.625 +SC1 SC3 0.43 2.625 +SC1 SC4 0.43 2.325 +SC1 SC5 0.43 2.325 +SC1 SN0 0.43 2.025 +SC1 SNa 0.43 2.025 +SC1 SNd 0.43 2.025 +SC1 SNda 0.43 2.025 +SC1 SP1 0.43 2.025 +SC1 SP2 0.43 1.725 +SC1 SP3 0.43 1.725 +SC1 SP4 0.43 1.5 +SC1 SP5 0.43 1.5 +SC1 SQ0 0.62 2 +SC1 SQa 0.62 2 +SC1 SQd 0.62 2 +SC1 SQda 0.62 2 +SC2 SC2 0.43 2.625 +SC2 SC3 0.43 2.625 +SC2 SC4 0.43 2.325 +SC2 SC5 0.43 2.325 +SC2 SN0 0.43 2.325 +SC2 SNa 0.43 2.025 +SC2 SNd 0.43 2.025 +SC2 SNda 0.43 2.025 +SC2 SP1 0.43 2.325 +SC2 SP2 0.43 2.025 +SC2 SP3 0.43 2.025 +SC2 SP4 0.43 1.725 +SC2 SP5 0.43 1.725 +SC2 SQ0 0.62 2 +SC2 SQa 0.62 2 +SC2 SQd 0.62 2 +SC2 SQda 0.62 2 +SC3 SC3 0.43 2.625 +SC3 SC4 0.43 2.625 +SC3 SC5 0.43 2.625 +SC3 SN0 0.43 2.625 +SC3 SNa 0.43 2.025 +SC3 SNd 0.43 2.025 +SC3 SNda 0.43 2.025 +SC3 SP1 0.43 2.625 +SC3 SP2 0.43 2.325 +SC3 SP3 0.43 2.325 +SC3 SP4 0.43 2.025 +SC3 SP5 0.43 2.025 +SC3 SQ0 0.43 1.725 +SC3 SQa 0.43 1.725 +SC3 SQd 0.43 1.725 +SC3 SQda 0.43 1.725 +SC4 SC4 0.43 2.625 +SC4 SC5 0.43 2.625 +SC4 SN0 0.43 2.625 +SC4 SNa 0.43 2.325 +SC4 SNd 0.43 2.325 +SC4 SNda 0.43 2.325 +SC4 SP1 0.43 2.625 +SC4 SP2 0.43 2.625 +SC4 SP3 0.43 2.325 +SC4 SP4 0.43 2.025 +SC4 SP5 0.43 2.025 +SC4 SQ0 0.43 2.025 +SC4 SQa 0.43 2.025 +SC4 SQd 0.43 2.025 +SC4 SQda 0.43 2.025 +SC5 SC5 0.43 2.625 +SC5 SN0 0.43 2.625 +SC5 SNa 0.43 2.625 +SC5 SNd 0.43 2.625 +SC5 SNda 0.43 2.625 +SC5 SP1 0.43 2.625 +SC5 SP2 0.43 2.625 +SC5 SP3 0.43 2.625 +SC5 SP4 0.43 2.325 +SC5 SP5 0.43 2.325 +SC5 SQ0 0.43 2.325 +SC5 SQa 0.43 2.325 +SC5 SQd 0.43 2.325 +SC5 SQda 0.43 2.325 +SN0 SN0 0.43 2.625 +SN0 SNa 0.43 2.625 +SN0 SNd 0.43 2.625 +SN0 SNda 0.43 2.625 +SN0 SP1 0.43 3 +SN0 SP2 0.43 3 +SN0 SP3 0.43 2.625 +SN0 SP4 0.43 2.625 +SN0 SP5 0.43 2.625 +SN0 SQ0 0.43 2.625 +SN0 SQa 0.43 2.625 +SN0 SQd 0.43 2.625 +SN0 SQda 0.43 2.625 +SNa SNa 0.43 3 +SNa SNd 0.43 3.375 +SNa SNda 0.43 3.375 +SNa SP1 0.43 3.375 +SNa SP2 0.43 3.375 +SNa SP3 0.43 3.375 +SNa SP4 0.43 3 +SNa SP5 0.43 3.75 +SNa SQ0 0.43 3 +SNa SQa 0.43 3 +SNa SQd 0.43 3.75 +SNa SQda 0.43 3.75 +SNd SNd 0.43 3 +SNd SNda 0.43 3.375 +SNd SP1 0.43 3.375 +SNd SP2 0.43 3.375 +SNd SP3 0.43 3.375 +SNd SP4 0.43 3 +SNd SP5 0.43 3.75 +SNd SQ0 0.43 3 +SNd SQa 0.43 3.75 +SNd SQd 0.43 3 +SNd SQda 0.43 3.75 +SNda SNda 0.43 3.375 +SNda SP1 0.43 3.375 +SNda SP2 0.43 3.375 +SNda SP3 0.43 3.375 +SNda SP4 0.43 3 +SNda SP5 0.43 3.75 +SNda SQ0 0.43 3 +SNda SQa 0.43 3.75 +SNda SQd 0.43 3.75 +SNda SQda 0.43 3.75 +SP1 SP1 0.43 3.375 +SP1 SP2 0.43 3.375 +SP1 SP3 0.43 3.375 +SP1 SP4 0.43 3.375 +SP1 SP5 0.43 4.2 +SP1 SQ0 0.43 3 +SP1 SQa 0.43 3.75 +SP1 SQd 0.43 3.75 +SP1 SQda 0.43 3.75 +SP2 SP2 0.43 3.375 +SP2 SP3 0.43 3.375 +SP2 SP4 0.43 3.375 +SP2 SP5 0.43 4.2 +SP2 SQ0 0.43 3.375 +SP2 SQa 0.43 3.75 +SP2 SQd 0.43 3.75 +SP2 SQda 0.43 3.75 +SP3 SP3 0.43 3.75 +SP3 SP4 0.43 3.75 +SP3 SP5 0.43 4.2 +SP3 SQ0 0.43 3.75 +SP3 SQa 0.43 4.2 +SP3 SQd 0.43 4.2 +SP3 SQda 0.43 4.2 +SP4 SP4 0.43 3.75 +SP4 SP5 0.43 4.2 +SP4 SQ0 0.43 4.2 +SP4 SQa 0.43 4.2 +SP4 SQd 0.43 4.2 +SP4 SQda 0.43 4.2 +SP5 SP5 0.43 4.2 +SP5 SQ0 0.43 3.75 +SP5 SQa 0.43 4.2 +SP5 SQd 0.43 4.2 +SP5 SQda 0.43 4.2 +SQ0 SQ0 0.43 2.625 +SQ0 SQa 0.43 3.375 +SQ0 SQd 0.43 3.375 +SQ0 SQda 0.43 3.375 +SQa SQa 0.43 3.75 +SQa SQd 0.43 4.2 +SQa SQda 0.43 4.2 +SQd SQd 0.43 3.75 +SQd SQda 0.43 4.2 +SQda SQda 0.43 4.2 + +ITEM END + +# Bond wildcard parameters + +ITEM BOND_AUTO + +# type1 type2 k l0 + +* * 1250 0.47 + +ITEM END + +# Templates + +ITEM TEMPLATES + +# name smiles + +W [P4] +WF [BP4] + +ITEM END diff --git a/tools/moltemplate/moltemplate/force_fields/martini/polymers.prm b/tools/moltemplate/moltemplate/force_fields/martini/polymers.prm new file mode 100644 index 0000000000000000000000000000000000000000..eb039bde533308cd5d93be5bc86f3954c14e6585 --- /dev/null +++ b/tools/moltemplate/moltemplate/force_fields/martini/polymers.prm @@ -0,0 +1,376 @@ +# +# Martini interaction parameters using martini.30646.tmp +# converted by martini.pl v1.2, February 10, 2014 by Pieter J. in 't Veld +# to be used in conjuction with EMC v9.3.7 or higher +# + +# Force field definition + +ITEM DEFINE + +FFNAME MARTINI +FFTYPE COARSE +VERSION 2011 +CREATED Feb 2014 +LENGTH NANOMETER +ENERGY KJ/MOL +DENSITY G/CC +MIX NONE +NBONDED 1 +INNER 0.9 +CUTOFF 1.2 +PAIR14 OFF +ANGLE WARN +TORSION IGNORE + +ITEM END + +# Masses + +ITEM MASS + +# type mass element ncons charge comment + +SN01 54 SN0 2 0 ring intermediate +SN010 54 SN0 2 0 ring intermediate +SN011 54 SN0 2 0 ring intermediate +SN012 54 SN0 2 0 ring intermediate +SN013 54 SN0 2 0 ring intermediate +SN014 54 SN0 2 0 ring intermediate +SN015 54 SN0 2 0 ring intermediate +SN016 54 SN0 2 0 ring intermediate +SN017 54 SN0 2 0 ring intermediate +SN018 54 SN0 2 0 ring intermediate +SN019 54 SN0 2 0 ring intermediate +SN02 54 SN0 2 0 ring intermediate +SN020 54 SN0 2 0 ring intermediate +SN021 54 SN0 2 0 ring intermediate +SN022 54 SN0 2 0 ring intermediate +SN023 54 SN0 2 0 ring intermediate +SN024 54 SN0 2 0 ring intermediate +SN025 54 SN0 2 0 ring intermediate +SN026 54 SN0 2 0 ring intermediate +SN027 54 SN0 2 0 ring intermediate +SN028 54 SN0 2 0 ring intermediate +SN029 54 SN0 2 0 ring intermediate +SN03 54 SN0 2 0 ring intermediate +SN030 54 SN0 2 0 ring intermediate +SN031 54 SN0 2 0 ring intermediate +SN032 54 SN0 2 0 ring intermediate +SN033 54 SN0 2 0 ring intermediate +SN034 54 SN0 2 0 ring intermediate +SN035 54 SN0 2 0 ring intermediate +SN036 54 SN0 2 0 ring intermediate +SN037 54 SN0 2 0 ring intermediate +SN038 54 SN0 2 0 ring intermediate +SN039 54 SN0 2 0 ring intermediate +SN04 54 SN0 2 0 ring intermediate +SN040 54 SN0 2 0 ring intermediate +SN041 54 SN0 2 0 ring intermediate +SN042 54 SN0 2 0 ring intermediate +SN043 54 SN0 2 0 ring intermediate +SN044 54 SN0 2 0 ring intermediate +SN045 54 SN0 2 0 ring intermediate +SN046 54 SN0 2 0 ring intermediate +SN047 54 SN0 2 0 ring intermediate +SN048 54 SN0 2 0 ring intermediate +SN049 54 SN0 2 0 ring intermediate +SN05 54 SN0 2 0 ring intermediate +SN050 54 SN0 2 0 ring intermediate +SN051 54 SN0 2 0 ring intermediate +SN052 54 SN0 2 0 ring intermediate +SN053 54 SN0 2 0 ring intermediate +SN054 54 SN0 2 0 ring intermediate +SN055 54 SN0 2 0 ring intermediate +SN056 54 SN0 2 0 ring intermediate +SN057 54 SN0 2 0 ring intermediate +SN058 54 SN0 2 0 ring intermediate +SN059 54 SN0 2 0 ring intermediate +SN06 54 SN0 2 0 ring intermediate +SN060 54 SN0 2 0 ring intermediate +SN061 54 SN0 2 0 ring intermediate +SN062 54 SN0 2 0 ring intermediate +SN063 54 SN0 2 0 ring intermediate +SN064 54 SN0 2 0 ring intermediate +SN065 54 SN0 2 0 ring intermediate +SN066 54 SN0 2 0 ring intermediate +SN067 54 SN0 2 0 ring intermediate +SN068 54 SN0 2 0 ring intermediate +SN069 54 SN0 2 0 ring intermediate +SN07 54 SN0 2 0 ring intermediate +SN070 54 SN0 2 0 ring intermediate +SN071 54 SN0 2 0 ring intermediate +SN072 54 SN0 2 0 ring intermediate +SN073 54 SN0 2 0 ring intermediate +SN074 54 SN0 2 0 ring intermediate +SN08 54 SN0 2 0 ring intermediate +SN09 54 SN0 2 0 ring intermediate + +ITEM END + +# Typing equivalences + +ITEM EQUIVALENCE + +# type pair bond angle torsion improper + +SN01 SN0 SN0 SN0 SN01 SN01 +SN010 SN0 SN0 SN0 SN010 SN010 +SN011 SN0 SN0 SN0 SN011 SN011 +SN012 SN0 SN0 SN0 SN012 SN012 +SN013 SN0 SN0 SN0 SN013 SN013 +SN014 SN0 SN0 SN0 SN014 SN014 +SN015 SN0 SN0 SN0 SN015 SN015 +SN016 SN0 SN0 SN0 SN016 SN016 +SN017 SN0 SN0 SN0 SN017 SN017 +SN018 SN0 SN0 SN0 SN018 SN018 +SN019 SN0 SN0 SN0 SN019 SN019 +SN02 SN0 SN0 SN0 SN02 SN02 +SN020 SN0 SN0 SN0 SN020 SN020 +SN021 SN0 SN0 SN0 SN021 SN021 +SN022 SN0 SN0 SN0 SN022 SN022 +SN023 SN0 SN0 SN0 SN023 SN023 +SN024 SN0 SN0 SN0 SN024 SN024 +SN025 SN0 SN0 SN0 SN025 SN025 +SN026 SN0 SN0 SN0 SN026 SN026 +SN027 SN0 SN0 SN0 SN027 SN027 +SN028 SN0 SN0 SN0 SN028 SN028 +SN029 SN0 SN0 SN0 SN029 SN029 +SN03 SN0 SN0 SN0 SN03 SN03 +SN030 SN0 SN0 SN0 SN030 SN030 +SN031 SN0 SN0 SN0 SN031 SN031 +SN032 SN0 SN0 SN032 SN032 SN032 +SN033 SN0 SN0 SN033 SN033 SN033 +SN034 SN0 SN0 SN034 SN034 SN034 +SN035 SN0 SN0 SN035 SN035 SN035 +SN036 SN0 SN0 SN036 SN036 SN036 +SN037 SN0 SN0 SN037 SN037 SN037 +SN038 SN0 SN0 SN038 SN038 SN038 +SN039 SN0 SN0 SN039 SN039 SN039 +SN04 SN0 SN0 SN0 SN04 SN04 +SN040 SN0 SN0 SN040 SN040 SN040 +SN041 SN0 SN0 SN041 SN041 SN041 +SN042 SN0 SN0 SN042 SN042 SN042 +SN043 SN0 SN0 SN043 SN043 SN043 +SN044 SN0 SN0 SN044 SN044 SN044 +SN045 SN0 SN0 SN045 SN045 SN045 +SN046 SN0 SN0 SN046 SN046 SN046 +SN047 SN0 SN0 SN047 SN047 SN047 +SN048 SN0 SN0 SN048 SN048 SN048 +SN049 SN0 SN0 SN049 SN049 SN049 +SN05 SN0 SN0 SN0 SN05 SN05 +SN050 SN0 SN0 SN050 SN050 SN050 +SN051 SN0 SN0 SN051 SN051 SN051 +SN052 SN0 SN0 SN052 SN052 SN052 +SN053 SN0 SN0 SN053 SN053 SN053 +SN054 SN0 SN0 SN054 SN054 SN054 +SN055 SN0 SN0 SN055 SN055 SN055 +SN056 SN0 SN0 SN056 SN056 SN056 +SN057 SN0 SN0 SN057 SN057 SN057 +SN058 SN0 SN0 SN058 SN058 SN058 +SN059 SN0 SN0 SN059 SN059 SN059 +SN06 SN0 SN0 SN0 SN06 SN06 +SN060 SN0 SN0 SN060 SN060 SN060 +SN061 SN0 SN0 SN061 SN061 SN061 +SN062 SN0 SN0 SN062 SN062 SN062 +SN063 SN0 SN0 SN063 SN063 SN063 +SN064 SN0 SN0 SN064 SN064 SN064 +SN065 SN0 SN0 SN065 SN065 SN065 +SN066 SN0 SN0 SN066 SN066 SN066 +SN067 SN0 SN0 SN067 SN067 SN067 +SN068 SN0 SN0 SN068 SN068 SN068 +SN069 SN0 SN0 SN069 SN069 SN069 +SN07 SN0 SN0 SN0 SN07 SN07 +SN070 SN0 SN0 SN070 SN070 SN070 +SN071 SN0 SN0 SN071 SN071 SN071 +SN072 SN0 SN0 SN072 SN072 SN072 +SN073 SN0 SN0 SN073 SN073 SN073 +SN074 SN0 SN0 SN074 SN074 SN074 +SN08 SN0 SN0 SN0 SN08 SN08 +SN09 SN0 SN0 SN0 SN09 SN09 + +ITEM END + +# Bond parameters + +ITEM BOND + +# type1 type2 k l0 + +C1 C1 1250 0.47 +C1 Na 1250 0.47 +N0 N0 1250 0.38 +N0 Nda 1250 0.5 +Na Na 1250 0.37 +Na Qa 1250 0.47 +Nda Qd 1250 0.5 +P5 Qa 1250 0.47 +P5 SN0 17000 0.33 +SCY STY 8000 0.27 +SN0 SN0 17000 0.33 +STY STY 20000 0.27 + +ITEM END + +# Angle parameters + +ITEM ANGLE + +# type1 type2 type3 k theta0 + +C1 C1 C1 25 180 +C1 C1 Na 25 180 +C1 Na Qa 25 180 +N0 N0 Nda 150 120 +N0 Nda N0 150 180 +N0 Nda Qd 150 180 +Na Na Qa 25 120 +Nda N0 Nda 150 120 +P5 SN032 SN033 85 130 +SCY STY SCY 550 52 +SCY STY STY 100 136 +SN0 SN0 SN0 50 130 +SN0 SN0 SN074 85 130 +SN0 SN074 SN073 85 130 +SN032 SN033 SN034 85 130 +SN033 SN034 SN035 85 130 +SN034 SN035 SN036 85 130 +SN035 SN036 SN037 85 130 +SN036 SN037 SN038 85 130 +SN037 SN038 SN039 85 130 +SN038 SN039 SN040 85 130 +SN039 SN040 SN041 85 130 +SN040 SN041 SN042 85 130 +SN041 SN042 SN043 85 130 +SN042 SN043 SN044 85 130 +SN043 SN044 SN045 85 130 +SN044 SN045 SN046 85 130 +SN045 SN046 SN047 85 130 +SN046 SN047 SN048 85 130 +SN047 SN048 SN049 85 130 +SN048 SN049 SN050 85 130 +SN049 SN050 SN051 85 130 +SN050 SN051 SN052 85 130 +SN051 SN052 SN053 85 130 +SN052 SN053 SN054 85 130 +SN053 SN054 SN055 85 130 +SN054 SN055 SN056 85 130 +SN055 SN056 SN057 85 130 +SN056 SN057 SN058 85 130 +SN057 SN058 SN059 85 130 +SN058 SN059 SN060 85 130 +SN059 SN060 SN061 85 130 +SN060 SN061 SN062 85 130 +SN061 SN062 SN063 85 130 +SN062 SN063 SN064 85 130 +SN063 SN064 SN065 85 130 +SN064 SN065 SN066 85 130 +SN065 SN066 SN067 85 130 +SN066 SN067 SN068 85 130 +SN067 SN068 SN069 85 130 +SN068 SN069 SN070 85 130 +SN069 SN070 SN071 85 130 +SN070 SN071 SN072 85 130 +SN071 SN072 SN073 85 130 +SN072 SN073 SN074 85 130 +STY SCY STY 25 120 + +ITEM END + +# Torsion parameters + +ITEM TORSION + +# type1 type2 type3 type4 k n delta ... + +SN0 SN0 SN0 SN0 1.96 1 180 0.18 2 0 0.33 3 0 0.12 4 0 +SN0 SN0 SN0 SN031 1.96 1 180 0.18 2 0 0.33 3 0 0.12 4 0 +SN0 SN0 SN01 SN02 1.96 1 180 0.18 2 0 0.33 3 0 0.12 4 0 +SN0 SN0 SN031 SN030 1.96 1 180 0.18 2 0 0.33 3 0 0.12 4 0 +SN0 SN0 SN074 SN073 1.96 1 180 0.18 2 0 0.33 3 0 0.12 4 0 +SN0 SN01 SN02 SN03 1.96 1 180 0.18 2 0 0.33 3 0 0.12 4 0 +SN0 SN031 SN030 SN029 1.96 1 180 0.18 2 0 0.33 3 0 0.12 4 0 +SN0 SN074 SN073 SN072 1.96 1 180 0.18 2 0 0.33 3 0 0.12 4 0 +SN01 SN02 SN03 SN04 1.96 1 180 0.18 2 0 0.33 3 0 0.12 4 0 +SN010 SN011 SN012 SN013 1.96 1 180 0.18 2 0 0.33 3 0 0.12 4 0 +SN010 SN09 SN08 SN07 1.96 1 180 0.18 2 0 0.33 3 0 0.12 4 0 +SN011 SN010 SN09 SN08 1.96 1 180 0.18 2 0 0.33 3 0 0.12 4 0 +SN011 SN012 SN013 SN014 1.96 1 180 0.18 2 0 0.33 3 0 0.12 4 0 +SN012 SN011 SN010 SN09 1.96 1 180 0.18 2 0 0.33 3 0 0.12 4 0 +SN012 SN013 SN014 SN015 1.96 1 180 0.18 2 0 0.33 3 0 0.12 4 0 +SN013 SN014 SN015 SN016 1.96 1 180 0.18 2 0 0.33 3 0 0.12 4 0 +SN014 SN015 SN016 SN017 1.96 1 180 0.18 2 0 0.33 3 0 0.12 4 0 +SN015 SN016 SN017 SN018 1.96 1 180 0.18 2 0 0.33 3 0 0.12 4 0 +SN016 SN017 SN018 SN019 1.96 1 180 0.18 2 0 0.33 3 0 0.12 4 0 +SN017 SN018 SN019 SN020 1.96 1 180 0.18 2 0 0.33 3 0 0.12 4 0 +SN018 SN019 SN020 SN021 1.96 1 180 0.18 2 0 0.33 3 0 0.12 4 0 +SN019 SN020 SN021 SN022 1.96 1 180 0.18 2 0 0.33 3 0 0.12 4 0 +SN02 SN03 SN04 SN05 1.96 1 180 0.18 2 0 0.33 3 0 0.12 4 0 +SN020 SN021 SN022 SN023 1.96 1 180 0.18 2 0 0.33 3 0 0.12 4 0 +SN021 SN022 SN023 SN024 1.96 1 180 0.18 2 0 0.33 3 0 0.12 4 0 +SN022 SN023 SN024 SN025 1.96 1 180 0.18 2 0 0.33 3 0 0.12 4 0 +SN023 SN024 SN025 SN026 1.96 1 180 0.18 2 0 0.33 3 0 0.12 4 0 +SN024 SN025 SN026 SN027 1.96 1 180 0.18 2 0 0.33 3 0 0.12 4 0 +SN025 SN026 SN027 SN028 1.96 1 180 0.18 2 0 0.33 3 0 0.12 4 0 +SN026 SN027 SN028 SN029 1.96 1 180 0.18 2 0 0.33 3 0 0.12 4 0 +SN027 SN028 SN029 SN030 1.96 1 180 0.18 2 0 0.33 3 0 0.12 4 0 +SN028 SN029 SN030 SN031 1.96 1 180 0.18 2 0 0.33 3 0 0.12 4 0 +SN03 SN04 SN05 SN06 1.96 1 180 0.18 2 0 0.33 3 0 0.12 4 0 +SN032 SN033 SN034 SN035 1.96 1 180 0.18 2 0 0.33 3 0 0.12 4 0 +SN033 SN034 SN035 SN036 1.96 1 180 0.18 2 0 0.33 3 0 0.12 4 0 +SN034 SN035 SN036 SN037 1.96 1 180 0.18 2 0 0.33 3 0 0.12 4 0 +SN035 SN036 SN037 SN038 1.96 1 180 0.18 2 0 0.33 3 0 0.12 4 0 +SN036 SN037 SN038 SN039 1.96 1 180 0.18 2 0 0.33 3 0 0.12 4 0 +SN037 SN038 SN039 SN040 1.96 1 180 0.18 2 0 0.33 3 0 0.12 4 0 +SN038 SN039 SN040 SN041 1.96 1 180 0.18 2 0 0.33 3 0 0.12 4 0 +SN039 SN040 SN041 SN042 1.96 1 180 0.18 2 0 0.33 3 0 0.12 4 0 +SN04 SN05 SN06 SN07 1.96 1 180 0.18 2 0 0.33 3 0 0.12 4 0 +SN040 SN041 SN042 SN043 1.96 1 180 0.18 2 0 0.33 3 0 0.12 4 0 +SN041 SN042 SN043 SN044 1.96 1 180 0.18 2 0 0.33 3 0 0.12 4 0 +SN042 SN043 SN044 SN045 1.96 1 180 0.18 2 0 0.33 3 0 0.12 4 0 +SN043 SN044 SN045 SN046 1.96 1 180 0.18 2 0 0.33 3 0 0.12 4 0 +SN044 SN045 SN046 SN047 1.96 1 180 0.18 2 0 0.33 3 0 0.12 4 0 +SN045 SN046 SN047 SN048 1.96 1 180 0.18 2 0 0.33 3 0 0.12 4 0 +SN046 SN047 SN048 SN049 1.96 1 180 0.18 2 0 0.33 3 0 0.12 4 0 +SN047 SN048 SN049 SN050 1.96 1 180 0.18 2 0 0.33 3 0 0.12 4 0 +SN048 SN049 SN050 SN051 1.96 1 180 0.18 2 0 0.33 3 0 0.12 4 0 +SN049 SN050 SN051 SN052 1.96 1 180 0.18 2 0 0.33 3 0 0.12 4 0 +SN05 SN06 SN07 SN08 1.96 1 180 0.18 2 0 0.33 3 0 0.12 4 0 +SN050 SN051 SN052 SN053 1.96 1 180 0.18 2 0 0.33 3 0 0.12 4 0 +SN051 SN052 SN053 SN054 1.96 1 180 0.18 2 0 0.33 3 0 0.12 4 0 +SN052 SN053 SN054 SN055 1.96 1 180 0.18 2 0 0.33 3 0 0.12 4 0 +SN053 SN054 SN055 SN056 1.96 1 180 0.18 2 0 0.33 3 0 0.12 4 0 +SN054 SN055 SN056 SN057 1.96 1 180 0.18 2 0 0.33 3 0 0.12 4 0 +SN055 SN056 SN057 SN058 1.96 1 180 0.18 2 0 0.33 3 0 0.12 4 0 +SN056 SN057 SN058 SN059 1.96 1 180 0.18 2 0 0.33 3 0 0.12 4 0 +SN057 SN058 SN059 SN060 1.96 1 180 0.18 2 0 0.33 3 0 0.12 4 0 +SN058 SN059 SN060 SN061 1.96 1 180 0.18 2 0 0.33 3 0 0.12 4 0 +SN059 SN060 SN061 SN062 1.96 1 180 0.18 2 0 0.33 3 0 0.12 4 0 +SN06 SN07 SN08 SN09 1.96 1 180 0.18 2 0 0.33 3 0 0.12 4 0 +SN060 SN061 SN062 SN063 1.96 1 180 0.18 2 0 0.33 3 0 0.12 4 0 +SN061 SN062 SN063 SN064 1.96 1 180 0.18 2 0 0.33 3 0 0.12 4 0 +SN062 SN063 SN064 SN065 1.96 1 180 0.18 2 0 0.33 3 0 0.12 4 0 +SN063 SN064 SN065 SN066 1.96 1 180 0.18 2 0 0.33 3 0 0.12 4 0 +SN064 SN065 SN066 SN067 1.96 1 180 0.18 2 0 0.33 3 0 0.12 4 0 +SN065 SN066 SN067 SN068 1.96 1 180 0.18 2 0 0.33 3 0 0.12 4 0 +SN066 SN067 SN068 SN069 1.96 1 180 0.18 2 0 0.33 3 0 0.12 4 0 +SN067 SN068 SN069 SN070 1.96 1 180 0.18 2 0 0.33 3 0 0.12 4 0 +SN068 SN069 SN070 SN071 1.96 1 180 0.18 2 0 0.33 3 0 0.12 4 0 +SN069 SN070 SN071 SN072 1.96 1 180 0.18 2 0 0.33 3 0 0.12 4 0 +SN070 SN071 SN072 SN073 1.96 1 180 0.18 2 0 0.33 3 0 0.12 4 0 +SN071 SN072 SN073 SN074 1.96 1 180 0.18 2 0 0.33 3 0 0.12 4 0 + +ITEM END + +# Templates + +ITEM TEMPLATES + +# name smiles + +DEN [N0]([N0]([Nda][N0]([Nda][N0]([Nda][N0]([Nda][N0]([Nda][N0]([Nda][Qd+1])[Nda][Qd+1])[Nda][N0]([Nda][Qd+1])[Nda][Qd+1])[Nda][N0]([Nda][N0]([Nda][Qd+1])[Nda][Qd+1])[Nda][N0]([Nda][Qd+1])[Nda][Qd+1])[Nda][N0]([Nda][N0]([Nda][N0]([Nda][Qd+1])[Nda][Qd+1])[Nda][N0]([Nda][Qd+1])[Nda][Qd+1])[Nda][N0]([Nda][N0]([Nda][Qd+1])[Nda][Qd+1])[Nda][N0]([Nda][Qd+1])[Nda][Qd+1])[Nda][N0]([Nda][N0]([Nda][N0]([Nda][N0]([Nda][Qd+1])[Nda][Qd+1])[Nda][N0]([Nda][Qd+1])[Nda][Qd+1])[Nda][N0]([Nda][N0]([Nda][Qd+1])[Nda][Qd+1])[Nda][N0]([Nda][Qd+1])[Nda][Qd+1])[Nda][N0]([Nda][N0]([Nda][N0]([Nda][Qd+1])[Nda][Qd+1])[Nda][N0]([Nda][Qd+1])[Nda][Qd+1])[Nda][N0]([Nda][N0]([Nda][Qd+1])[Nda][Qd+1])[Nda][N0]([Nda][Qd+1])[Nda][Qd+1])[Nda][N0]([Nda][N0]([Nda][N0]([Nda][N0]([Nda][N0]([Nda][Qd+1])[Nda][Qd+1])[Nda][N0]([Nda][Qd+1])[Nda][Qd+1])[Nda][N0]([Nda][N0]([Nda][Qd+1])[Nda][Qd+1])[Nda][N0]([Nda][Qd+1])[Nda][Qd+1])[Nda][N0]([Nda][N0]([Nda][N0]([Nda][Qd+1])[Nda][Qd+1])[Nda][N0]([Nda][Qd+1])[Nda][Qd+1])[Nda][N0]([Nda][N0]([Nda][Qd+1])[Nda][Qd+1])[Nda][N0]([Nda][Qd+1])[Nda][Qd+1])[Nda][N0]([Nda][N0]([Nda][N0]([Nda][N0]([Nda][Qd+1])[Nda][Qd+1])[Nda][N0]([Nda][Qd+1])[Nda][Qd+1])[Nda][N0]([Nda][N0]([Nda][Qd+1])[Nda][Qd+1])[Nda][N0]([Nda][Qd+1])[Nda][Qd+1])[Nda][N0]([Nda][N0]([Nda][N0]([Nda][Qd+1])[Nda][Qd+1])[Nda][N0]([Nda][Qd+1])[Nda][Qd+1])[Nda][N0]([Nda][N0]([Nda][Qd+1])[Nda][Qd+1])[Nda][N0]([Nda][Qd+1])[Nda][Qd+1])([Nda][N0]([Nda][N0]([Nda][N0]([Nda][N0]([Nda][N0]([Nda][Qd+1])[Nda][Qd+1])[Nda][N0]([Nda][Qd+1])[Nda][Qd+1])[Nda][N0]([Nda][N0]([Nda][Qd+1])[Nda][Qd+1])[Nda][N0]([Nda][Qd+1])[Nda][Qd+1])[Nda][N0]([Nda][N0]([Nda][N0]([Nda][Qd+1])[Nda][Qd+1])[Nda][N0]([Nda][Qd+1])[Nda][Qd+1])[Nda][N0]([Nda][N0]([Nda][Qd+1])[Nda][Qd+1])[Nda][N0]([Nda][Qd+1])[Nda][Qd+1])[Nda][N0]([Nda][N0]([Nda][N0]([Nda][N0]([Nda][Qd+1])[Nda][Qd+1])[Nda][N0]([Nda][Qd+1])[Nda][Qd+1])[Nda][N0]([Nda][N0]([Nda][Qd+1])[Nda][Qd+1])[Nda][N0]([Nda][Qd+1])[Nda][Qd+1])[Nda][N0]([Nda][N0]([Nda][N0]([Nda][Qd+1])[Nda][Qd+1])[Nda][N0]([Nda][Qd+1])[Nda][Qd+1])[Nda][N0]([Nda][N0]([Nda][Qd+1])[Nda][Qd+1])[Nda][N0]([Nda][Qd+1])[Nda][Qd+1])[Nda][N0]([Nda][N0]([Nda][N0]([Nda][N0]([Nda][N0]([Nda][Qd+1])[Nda][Qd+1])[Nda][N0]([Nda][Qd+1])[Nda][Qd+1])[Nda][N0]([Nda][N0]([Nda][Qd+1])[Nda][Qd+1])[Nda][N0]([Nda][Qd+1])[Nda][Qd+1])[Nda][N0]([Nda][N0]([Nda][N0]([Nda][Qd+1])[Nda][Qd+1])[Nda][N0]([Nda][Qd+1])[Nda][Qd+1])[Nda][N0]([Nda][N0]([Nda][Qd+1])[Nda][Qd+1])[Nda][N0]([Nda][Qd+1])[Nda][Qd+1])[Nda][N0]([Nda][N0]([Nda][N0]([Nda][N0]([Nda][Qd+1])[Nda][Qd+1])[Nda][N0]([Nda][Qd+1])[Nda][Qd+1])[Nda][N0]([Nda][N0]([Nda][Qd+1])[Nda][Qd+1])[Nda][N0]([Nda][Qd+1])[Nda][Qd+1])[Nda][N0]([Nda][N0]([Nda][N0]([Nda][Qd+1])[Nda][Qd+1])[Nda][N0]([Nda][Qd+1])[Nda][Qd+1])[Nda][N0]([Nda][N0]([Nda][Qd+1])[Nda][Qd+1])[Nda][N0]([Nda][Qd+1])[Nda][Qd+1] +PEL [P5]([Qa-1][Na]([Na][C1][C1][C1][C1])[C1][C1][C1][C1])[SN032][SN033][SN034][SN035][SN036][SN037][SN038][SN039][SN040][SN041][SN042][SN043][SN044][SN045][SN046][SN047][SN048][SN049][SN050][SN051][SN052][SN053][SN054][SN055][SN056][SN057][SN058][SN059][SN060][SN061][SN062][SN063][SN064][SN065][SN066][SN067][SN068][SN069][SN070][SN071][SN072][SN073][SN074][SN0][SN0] +PEO [SN0][SN0][SN01][SN02][SN03][SN04][SN05][SN06][SN07][SN08][SN09][SN010][SN011][SN012][SN013][SN014][SN015][SN016][SN017][SN018][SN019][SN020][SN021][SN022][SN023][SN024][SN025][SN026][SN027][SN028][SN029][SN030][SN031][SN0][SN0][SN0][SN0] +PS100 [SCY]([STY]2[STY][STY]2)[STY]1([SCY][STY]([SCY][STY]([SCY][STY]([SCY][STY]([SCY][STY]([SCY][STY]([SCY][STY]([SCY][STY]([SCY][STY]([SCY][STY]([SCY][STY]([SCY][STY]([SCY][STY]([SCY][STY]([SCY][STY]([SCY][STY]([SCY][STY]([SCY][STY]([SCY][STY]([SCY][STY]([SCY][STY]([SCY][STY]([SCY][STY]([SCY][STY]([SCY][STY]([SCY][STY]([SCY][STY]([SCY][STY]([SCY][STY]([SCY][STY]([SCY][STY]([SCY][STY]([SCY][STY]([SCY][STY]([SCY][STY]([SCY][STY]([SCY][STY]([SCY][STY]([SCY][STY]([SCY][STY]([SCY][STY]([SCY][STY]([SCY][STY]([SCY][STY]([SCY][STY]([SCY][STY]([SCY][STY]([SCY][STY]([SCY][STY]([SCY][STY]([SCY][STY]([SCY][STY]([SCY][STY]([SCY][STY]([SCY][STY]([SCY][STY]([SCY][STY]([SCY][STY]([SCY][STY]([SCY][STY]([SCY][STY]([SCY][STY]([SCY][STY]([SCY][STY]([SCY][STY]([SCY][STY]([SCY][STY]([SCY][STY]([SCY][STY]([SCY][STY]([SCY][STY]([SCY][STY]([SCY][STY]([SCY][STY]([SCY][STY]([SCY][STY]([SCY][STY]([SCY][STY]([SCY][STY]([SCY][STY]([SCY][STY]([SCY][STY]([SCY][STY]([SCY][STY]([SCY][STY]([SCY][STY]([SCY][STY]([SCY][STY]([SCY][STY]([SCY][STY]([SCY][STY]([SCY][STY]([SCY][STY]([SCY][STY]([SCY][STY]([SCY][STY]([SCY][STY]([SCY][STY]([SCY])[STY][STY])[STY][STY])[STY][STY])[STY][STY])[STY][STY])[STY][STY])[STY][STY])[STY][STY])[STY][STY])[STY][STY])[STY][STY])[STY][STY])[STY][STY])[STY][STY])[STY][STY])[STY][STY])[STY][STY])[STY][STY])[STY][STY])[STY][STY])[STY][STY])[STY][STY])[STY][STY])[STY][STY])[STY][STY])[STY][STY])[STY][STY])[STY][STY])[STY][STY])[STY][STY])[STY][STY])[STY][STY])[STY][STY])[STY][STY])[STY][STY])[STY][STY])[STY][STY])[STY][STY])[STY][STY])[STY][STY])[STY][STY])[STY][STY])[STY][STY])[STY][STY])[STY][STY])[STY][STY])[STY][STY])[STY][STY])[STY][STY])[STY][STY])[STY][STY])[STY][STY])[STY][STY])[STY][STY])[STY][STY])[STY][STY])[STY][STY])[STY][STY])[STY][STY])[STY][STY])[STY][STY])[STY][STY])[STY][STY])[STY][STY])[STY][STY])[STY][STY])[STY][STY])[STY][STY])[STY][STY])[STY][STY])[STY][STY])[STY][STY])[STY][STY])[STY][STY])[STY][STY])[STY][STY])[STY][STY])[STY][STY])[STY][STY])[STY][STY])[STY][STY])[STY][STY])[STY][STY])[STY][STY])[STY][STY])[STY][STY])[STY][STY])[STY][STY])[STY][STY])[STY][STY])[STY][STY])[STY][STY])[STY][STY])[STY][STY])[STY][STY])[STY][STY])[STY][STY])[STY][STY])[STY][STY]1 + +ITEM END diff --git a/tools/moltemplate/moltemplate/force_fields/martini/sugars.prm b/tools/moltemplate/moltemplate/force_fields/martini/sugars.prm new file mode 100644 index 0000000000000000000000000000000000000000..a58b9ccd61f95cadc4a724d3518a8372e0b1e956 --- /dev/null +++ b/tools/moltemplate/moltemplate/force_fields/martini/sugars.prm @@ -0,0 +1,394 @@ +# +# Martini interaction parameters using martini.30651.tmp +# converted by martini.pl v1.2, February 10, 2014 by Pieter J. in 't Veld +# to be used in conjuction with EMC v9.3.7 or higher +# + +# Force field definition + +ITEM DEFINE + +FFNAME MARTINI +FFTYPE COARSE +VERSION 2011 +CREATED Feb 2014 +LENGTH NANOMETER +ENERGY KJ/MOL +DENSITY G/CC +MIX NONE +NBONDED 1 +INNER 0.9 +CUTOFF 1.2 +PAIR14 OFF +ANGLE WARN +TORSION IGNORE + +ITEM END + +# Masses + +ITEM MASS + +# type mass element ncons charge comment + +P11 60.0528 P1 2 0 polar +P12 60.0528 P1 2 0 polar +P13 60.0528 P1 2 0 polar +P14 59.0448 P1 2 0 polar +P15 44.0534 P1 2 0 polar +P16 43.0454 P1 2 0 polar +P21 60.0528 P2 2 0 polar +P210 75.0442 P2 2 0 polar +P211 60.0528 P2 2 0 polar +P212 59.0448 P2 2 0 polar +P213 43.0454 P2 2 0 polar +P214 75.0442 P2 2 0 polar +P215 44.0534 P2 2 0 polar +P216 75.0442 P2 2 0 polar +P217 58.0368 P2 2 0 polar +P218 58.0368 P2 2 0 polar +P219 58.0368 P2 2 0 polar +P22 59.0448 P2 2 0 polar +P220 58.0368 P2 2 0 polar +P221 58.0368 P2 2 0 polar +P222 59.0448 P2 2 0 polar +P223 60.0528 P2 2 0 polar +P224 43.0454 P2 2 0 polar +P225 60.0528 P2 2 0 polar +P226 43.0454 P2 2 0 polar +P227 60.0528 P2 2 0 polar +P228 43.0454 P2 2 0 polar +P23 43.0454 P2 2 0 polar +P24 75.0442 P2 2 0 polar +P25 58.0368 P2 2 0 polar +P26 59.1168 P2 2 0 polar +P27 75.0442 P2 2 0 polar +P28 75.0442 P2 2 0 polar +P29 59.1168 P2 2 0 polar +P31 60.0528 P3 2 0 polar +P41 60.0528 P4 2 0 polar +P42 60.0528 P4 2 0 polar +P43 43.0454 P4 2 0 polar + +ITEM END + +# Typing equivalences + +ITEM EQUIVALENCE + +# type pair bond angle torsion improper + +P11 P1 P11 P11 P11 P11 +P12 P1 P12 P12 P12 P12 +P13 P1 P13 P13 P13 P13 +P14 P1 P14 P14 P14 P14 +P15 P1 P15 P15 P15 P15 +P16 P1 P16 P16 P16 P16 +P21 P2 P21 P21 P21 P21 +P210 P2 P210 P210 P210 P210 +P211 P2 P211 P211 P211 P211 +P212 P2 P212 P212 P212 P212 +P213 P2 P213 P213 P213 P213 +P214 P2 P214 P214 P214 P214 +P215 P2 P215 P215 P215 P215 +P216 P2 P216 P216 P216 P216 +P217 P2 P217 P217 P217 P217 +P218 P2 P218 P218 P218 P218 +P219 P2 P219 P219 P219 P219 +P22 P2 P22 P22 P22 P22 +P220 P2 P220 P220 P220 P220 +P221 P2 P221 P221 P221 P221 +P222 P2 P222 P222 P222 P222 +P223 P2 P223 P223 P223 P223 +P224 P2 P224 P224 P224 P224 +P225 P2 P225 P225 P225 P225 +P226 P2 P226 P226 P226 P226 +P227 P2 P227 P227 P227 P227 +P228 P2 P228 P228 P228 P228 +P23 P2 P23 P23 P23 P23 +P24 P2 P24 P24 P24 P24 +P25 P2 P25 P25 P25 P25 +P26 P2 P26 P26 P26 P26 +P27 P2 P27 P27 P27 P27 +P28 P2 P28 P28 P28 P28 +P29 P2 P29 P29 P29 P29 +P31 P3 P31 P31 P31 P31 +P41 P4 P41 P41 P41 P41 +P42 P4 P42 P42 P42 P42 +P43 P4 P43 P43 P43 P43 + +ITEM END + +# Bond parameters + +ITEM BOND + +# type1 type2 k l0 + +P12 P31 10000 0.309 +P12 P41 35000 0.375 +P12 P42 35000 0.331 +P13 P13 30000 0.293 +P13 P21 30000 0.429 +P13 P212 30000 0.329 +P13 P213 30000 0.372 +P13 P22 30000 0.222 +P13 P222 30000 0.376 +P13 P223 30000 0.22 +P13 P224 30000 0.376 +P13 P225 30000 0.22 +P13 P226 30000 0.376 +P13 P227 30000 0.22 +P13 P228 30000 0.376 +P13 P23 30000 0.239 +P13 P42 35000 0.303 +P13 P43 30000 0.372 +P14 P21 30000 0.222 +P15 P210 30000 0.222 +P15 P214 30000 0.222 +P15 P215 30000 0.231 +P15 P216 30000 0.246 +P15 P217 30000 0.281 +P15 P218 30000 0.246 +P15 P219 30000 0.281 +P15 P220 30000 0.246 +P15 P221 30000 0.281 +P15 P222 30000 0.246 +P15 P24 30000 0.242 +P15 P25 30000 0.234 +P15 P26 30000 0.394 +P15 P27 30000 0.222 +P15 P28 30000 0.222 +P15 P29 30000 0.399 +P16 P211 30000 0.424 +P21 P42 30000 0.247 +P210 P211 30000 0.413 +P210 P42 30000 0.247 +P211 P42 30000 0.294 +P212 P213 30000 0.356 +P212 P42 30000 0.376 +P213 P42 30000 0.276 +P214 P215 30000 0.512 +P214 P42 30000 0.246 +P215 P42 30000 0.22 +P216 P217 30000 0.561 +P216 P42 30000 0.222 +P217 P218 30000 0.561 +P217 P42 30000 0.239 +P218 P219 30000 0.561 +P218 P42 30000 0.222 +P219 P220 30000 0.561 +P219 P42 30000 0.239 +P22 P23 30000 0.561 +P22 P42 30000 0.246 +P220 P221 30000 0.561 +P220 P42 30000 0.222 +P221 P222 30000 0.561 +P221 P42 30000 0.239 +P222 P223 30000 0.356 +P222 P41 30000 0.329 +P222 P42 30000 0.222 +P223 P224 30000 0.356 +P223 P41 30000 0.276 +P224 P225 30000 0.356 +P224 P41 30000 0.329 +P225 P226 30000 0.356 +P225 P41 30000 0.276 +P226 P227 30000 0.356 +P226 P41 30000 0.329 +P227 P228 30000 0.356 +P227 P41 30000 0.276 +P228 P41 30000 0.329 +P23 P42 30000 0.281 +P24 P25 30000 0.518 +P24 P42 30000 0.284 +P25 P42 30000 0.278 +P26 P27 30000 0.47 +P26 P42 30000 0.358 +P27 P42 30000 0.247 +P28 P29 30000 0.432 +P28 P42 30000 0.247 +P29 P42 30000 0.384 +P31 P42 50000 0.42 +P41 P42 50000 0.322 + +ITEM END + +# Angle parameters + +ITEM ANGLE + +# type1 type2 type3 k theta0 + +P13 P13 P21 50 20 +P13 P21 P14 10 130 +P13 P21 P42 150 110 +P13 P212 P213 80 54 +P13 P213 P212 800 67 +P13 P22 P23 50 150 +P13 P222 P223 200 124 +P13 P223 P222 800 67 +P13 P223 P224 200 124 +P13 P224 P223 800 67 +P13 P224 P225 200 124 +P13 P225 P224 800 67 +P13 P225 P226 200 124 +P13 P226 P225 800 67 +P13 P226 P227 200 124 +P13 P227 P226 800 67 +P13 P227 P228 200 124 +P13 P228 P227 800 67 +P13 P23 P22 100 70 +P15 P210 P211 5 87 +P15 P214 P215 100 150 +P15 P215 P214 80 120 +P15 P216 P217 50 140 +P15 P217 P216 25 50 +P15 P217 P218 50 140 +P15 P218 P217 25 50 +P15 P218 P219 50 140 +P15 P219 P218 25 50 +P15 P219 P220 50 140 +P15 P220 P219 25 50 +P15 P220 P221 50 140 +P15 P221 P220 25 50 +P15 P221 P222 50 140 +P15 P222 P221 25 50 +P15 P24 P25 50 126 +P15 P25 P24 100 60 +P15 P26 P27 200 120 +P15 P27 P26 50 127 +P15 P28 P29 20 90 +P15 P29 P28 300 125 +P16 P211 P210 250 96 +P21 P13 P43 150 85 +P210 P211 P42 250 50 +P211 P210 P42 125 130 +P212 P213 P42 500 44 +P213 P212 P42 200 124 +P214 P215 P42 180 65 +P215 P214 P42 250 95 +P216 P217 P218 100 154 +P216 P217 P42 100 70 +P217 P216 P42 50 150 +P217 P218 P219 100 154 +P217 P218 P42 100 70 +P218 P217 P42 50 150 +P218 P219 P220 100 154 +P218 P219 P42 100 70 +P219 P218 P42 50 150 +P219 P220 P221 100 154 +P219 P220 P42 100 70 +P22 P23 P42 25 50 +P220 P219 P42 50 150 +P220 P221 P222 100 154 +P220 P221 P42 100 70 +P221 P220 P42 50 150 +P221 P222 P42 100 70 +P222 P221 P42 50 150 +P222 P223 P224 500 136 +P222 P223 P41 500 44 +P223 P222 P41 80 54 +P223 P224 P225 500 136 +P223 P224 P41 500 44 +P224 P223 P41 80 54 +P224 P225 P226 500 136 +P224 P225 P41 500 44 +P225 P224 P41 80 54 +P225 P226 P227 500 136 +P225 P226 P41 500 44 +P226 P225 P41 80 54 +P226 P227 P228 500 136 +P226 P227 P41 500 44 +P227 P226 P41 80 54 +P227 P228 P41 500 44 +P228 P227 P41 80 54 +P23 P22 P42 50 140 +P24 P25 P42 25 65 +P25 P24 P42 50 120 +P26 P27 P42 200 81 +P27 P26 P42 400 75 +P28 P29 P42 350 90 +P29 P28 P42 200 125 + +ITEM END + +# Torsion parameters + +ITEM TORSION + +# type1 type2 type3 type4 k n delta ... + +P13 P13 P21 P14 25 1 130 +P13 P13 P21 P42 20 1 290 +P13 P212 P213 P13 5 1 55 +P13 P212 P213 P42 15 1 20 +P13 P22 P23 P13 8 1 110 +P13 P22 P23 P42 5 1 340 +P13 P223 P224 P41 5 1 42 +P13 P224 P223 P41 5 1 55 +P13 P225 P226 P41 5 1 42 +P13 P226 P225 P41 5 1 55 +P13 P227 P228 P41 5 1 42 +P13 P228 P227 P41 5 1 55 +P13 P23 P22 P42 5 1 280 +P14 P21 P13 P43 2 1 80 +P15 P210 P211 P16 15 1 338 +P15 P210 P211 P42 15 1 345 +P15 P214 P215 P15 8 1 280 +P15 P214 P215 P42 5 1 123 +P15 P215 P214 P42 20 1 320 +P15 P216 P217 P42 5 1 280 +P15 P217 P216 P42 5 1 340 +P15 P217 P218 P42 5 1 280 +P15 P218 P217 P42 5 1 340 +P15 P218 P219 P42 5 1 280 +P15 P219 P218 P42 5 1 340 +P15 P219 P220 P42 5 1 280 +P15 P220 P219 P42 5 1 340 +P15 P220 P221 P42 5 1 280 +P15 P221 P220 P42 5 1 340 +P15 P222 P221 P42 5 1 340 +P15 P24 P25 P15 8 1 30 +P15 P24 P25 P42 5 1 210 +P15 P25 P24 P42 5 1 210 +P15 P26 P27 P15 10 1 110 +P15 P27 P26 P42 8 1 165 +P15 P28 P29 P15 10 1 55 +P15 P28 P29 P42 8 1 40 +P41 P223 P224 P41 15 1 20 +P41 P225 P226 P41 15 1 20 +P41 P227 P228 P41 15 1 20 +P42 P210 P211 P42 1 1 160 +P42 P212 P213 P42 5 1 42 +P42 P216 P217 P42 8 1 110 +P42 P217 P218 P42 8 1 110 +P42 P218 P219 P42 8 1 110 +P42 P219 P220 P42 8 1 110 +P42 P220 P221 P42 8 1 110 +P42 P221 P222 P42 8 1 110 +P42 P26 P27 P42 30 1 5 +P42 P28 P29 P42 5 1 225 + +ITEM END + +# Templates + +ITEM TEMPLATES + +# name smiles + +CELL [P15][P24]([P42])[P25]([P15])[P42] +FRUC [P13]1[P31][P42]1 +GLUC [P12]1[P41][P42]1 +KOJI [P15][P27]([P42])[P26]([P42])[P15] +LAMI [P13][P212]([P42])[P213]([P42])[P13] +Laminaraheptabiose [P222]([P41])([P13])[P223]([P41])([P13])[P224]([P41])([P13])[P225]([P41])([P13])[P226]([P41])([P13])[P227]([P41])([P13])[P228]([P41])[P13] +MALT [P13][P22]([P42])[P23]([P13])[P42] +Maltoheptaose [P216]([P42])([P15])[P217]([P42])([P15])[P218]([P42])([P15])[P219]([P42])([P15])[P220]([P42])([P15])[P221]([P42])([P15])[P222]([P42])[P15] +NIGE [P15][P210]([P42])[P211]([P42])[P16] +SOPH [P15][P28]([P42])[P29]([P42])[P15] +SUCR [P14][P21]([P42])[P13]([P13])[P43] +TREH [P15][P214]([P42])[P215]([P15])[P42] + +ITEM END diff --git a/tools/moltemplate/src/moltemplate_force_fields/oplsaa.lt b/tools/moltemplate/moltemplate/force_fields/oplsaa.lt similarity index 99% rename from tools/moltemplate/src/moltemplate_force_fields/oplsaa.lt rename to tools/moltemplate/moltemplate/force_fields/oplsaa.lt index 48d6f9ec633520461a942b8f5a9ffd80e5cd13b5..92b2628df5688c65175142883f56baca52cd5f20 100644 --- a/tools/moltemplate/src/moltemplate_force_fields/oplsaa.lt +++ b/tools/moltemplate/moltemplate/force_fields/oplsaa.lt @@ -1,5 +1,6 @@ # This file contains OPLSAA parameters and rules for creating # angle, dihedral, and improper interactions according to OPLSAA conventions. +# These parameters are taken from those distributed with BOSS Version 4.8. # # USAGE: You can create molecules using this force-field this way: # @@ -20,8 +21,14 @@ # dihedral types, this means at least one of your atom types is incorrect. + + + OPLSAA { + # Below we will use lammps "set" command to assign atom charges + # by atom type. http://lammps.sandia.gov/doc/set.html + write_once("In Charges") { set type @atom:1 charge -0.22 # "Fluoride -CH2-F (UA)" set type @atom:2 charge 0.22 # "Fluoride -CH2-F (UA)" @@ -1842,919 +1849,17 @@ OPLSAA { } #(end of atom masses) - write_once("In Settings") { - pair_coeff @atom:1_b1_a1_d1_i1 @atom:1_b1_a1_d1_i1 lj/cut/coul/long 0.061 2.94 - pair_coeff @atom:2_b2_a2_d2_i2 @atom:2_b2_a2_d2_i2 lj/cut/coul/long 0.118 3.905 - pair_coeff @atom:3_b3_a3_d3_i3 @atom:3_b3_a3_d3_i3 lj/cut/coul/long 0.105 3.75 - pair_coeff @atom:4_b4_a4_d4_i4 @atom:4_b4_a4_d4_i4 lj/cut/coul/long 0.21 2.96 - pair_coeff @atom:5_b5_a5_d5_i5 @atom:5_b5_a5_d5_i5 lj/cut/coul/long 0.17 3.0 - pair_coeff @atom:6_b6_a6_d6_i6 @atom:6_b6_a6_d6_i6 lj/cut/coul/long 0.16 3.91 - pair_coeff @atom:7_b7_a7_d7_i7 @atom:7_b7_a7_d7_i7 lj/cut/coul/long 0.0 0.0 - pair_coeff @atom:8_b8_a8_d8_i8 @atom:8_b8_a8_d8_i8 lj/cut/coul/long 0.294 3.73 - pair_coeff @atom:9_b6_a6_d6_i6 @atom:9_b6_a6_d6_i6 lj/cut/coul/long 0.207 3.775 - pair_coeff @atom:10_b6_a6_d6_i6 @atom:10_b6_a6_d6_i6 lj/cut/coul/long 0.175 3.905 - pair_coeff @atom:11_b6_a6_d6_i6 @atom:11_b6_a6_d6_i6 lj/cut/coul/long 0.16 3.91 - pair_coeff @atom:12_b6_a6_d6_i6 @atom:12_b6_a6_d6_i6 lj/cut/coul/long 0.145 3.96 - pair_coeff @atom:13_b2_a2_d2_i2 @atom:13_b2_a2_d2_i2 lj/cut/coul/long 0.118 3.905 - pair_coeff @atom:14_b9_a9_d9_i9 @atom:14_b9_a9_d9_i9 lj/cut/coul/long 0.14 3.85 - pair_coeff @atom:15_b10_a10_d10_i10 @atom:15_b10_a10_d10_i10 lj/cut/coul/long 0.08 3.85 - pair_coeff @atom:16_b11_a11_d11_i11 @atom:16_b11_a11_d11_i11 lj/cut/coul/long 0.115 3.8 - pair_coeff @atom:17_b12_a12_d12_i12 @atom:17_b12_a12_d12_i12 lj/cut/coul/long 0.11 3.75 - pair_coeff @atom:18_b13_a13_d13_i13 @atom:18_b13_a13_d13_i13 lj/cut/coul/long 0.05 3.8 - pair_coeff @atom:19_b14_a14_d14_i14 @atom:19_b14_a14_d14_i14 lj/cut/coul/long 0.105 3.75 - pair_coeff @atom:20_b5_a5_d5_i5 @atom:20_b5_a5_d5_i5 lj/cut/coul/long 0.17 3.07 - pair_coeff @atom:21_b7_a7_d7_i7 @atom:21_b7_a7_d7_i7 lj/cut/coul/long 0.0 0.0 - pair_coeff @atom:22_b6_a6_d6_i6 @atom:22_b6_a6_d6_i6 lj/cut/coul/long 0.207 3.775 - pair_coeff @atom:23_b2_a2_d2_i2 @atom:23_b2_a2_d2_i2 lj/cut/coul/long 0.118 3.905 - pair_coeff @atom:24_b15_a15_d15_i15 @atom:24_b15_a15_d15_i15 lj/cut/coul/long 0.25 3.7 - pair_coeff @atom:25_b15_a15_d15_i15 @atom:25_b15_a15_d15_i15 lj/cut/coul/long 0.25 3.55 - pair_coeff @atom:26_b16_a16_d16_i16 @atom:26_b16_a16_d16_i16 lj/cut/coul/long 0.25 3.55 - pair_coeff @atom:27_b16_a16_d16_i16 @atom:27_b16_a16_d16_i16 lj/cut/coul/long 0.25 3.55 - pair_coeff @atom:28_b17_a17_d17_i17 @atom:28_b17_a17_d17_i17 lj/cut/coul/long 0.0 0.0 - pair_coeff @atom:29_b17_a17_d17_i17 @atom:29_b17_a17_d17_i17 lj/cut/coul/long 0.0 0.0 - pair_coeff @atom:30_b6_a6_d6_i6 @atom:30_b6_a6_d6_i6 lj/cut/coul/long 0.207 3.775 - pair_coeff @atom:31_b2_a2_d2_i2 @atom:31_b2_a2_d2_i2 lj/cut/coul/long 0.118 3.905 - pair_coeff @atom:32_b6_a6_d6_i6 @atom:32_b6_a6_d6_i6 lj/cut/coul/long 0.17 3.8 - pair_coeff @atom:33_b2_a2_d2_i2 @atom:33_b2_a2_d2_i2 lj/cut/coul/long 0.118 3.8 - pair_coeff @atom:34_b6_a6_d6_i6 @atom:34_b6_a6_d6_i6 lj/cut/coul/long 0.17 3.8 - pair_coeff @atom:35_b2_a2_d2_i2 @atom:35_b2_a2_d2_i2 lj/cut/coul/long 0.118 3.8 - pair_coeff @atom:36_b18_a18_d18_i18 @atom:36_b18_a18_d18_i18 lj/cut/coul/long 0.17 3.2 - pair_coeff @atom:37_b19_a19_d19_i19 @atom:37_b19_a19_d19_i19 lj/cut/coul/long 0.15 3.65 - pair_coeff @atom:38_b6_a6_d6_i6 @atom:38_b6_a6_d6_i6 lj/cut/coul/long 0.207 3.775 - pair_coeff @atom:39_b10_a10_d10_i10 @atom:39_b10_a10_d10_i10 lj/cut/coul/long 0.08 3.85 - pair_coeff @atom:40_b13_a13_d13_i13 @atom:40_b13_a13_d13_i13 lj/cut/coul/long 0.05 3.8 - pair_coeff @atom:41_b20_a20_d20_i20 @atom:41_b20_a20_d20_i20 lj/cut/coul/long 0.17 3.0 - pair_coeff @atom:42_b6_a6_d6_i6 @atom:42_b6_a6_d6_i6 lj/cut/coul/long 0.17 3.8 - pair_coeff @atom:43_b2_a2_d2_i2 @atom:43_b2_a2_d2_i2 lj/cut/coul/long 0.118 3.8 - pair_coeff @atom:44_b2_a2_d2_i2 @atom:44_b2_a2_d2_i2 lj/cut/coul/long 0.118 3.8 - pair_coeff @atom:45_b21_a21_d21_i21 @atom:45_b21_a21_d21_i21 lj/cut/coul/long 0.3 3.4 - pair_coeff @atom:46_b10_a10_d10_i10 @atom:46_b10_a10_d10_i10 lj/cut/coul/long 0.08 3.8 - pair_coeff @atom:47_b21_a21_d21_i21 @atom:47_b21_a21_d21_i21 lj/cut/coul/long 0.3 3.47 - pair_coeff @atom:48_b13_a13_d13_i13 @atom:48_b13_a13_d13_i13 lj/cut/coul/long 0.05 3.8 - pair_coeff @atom:49_b21_a21_d21_i21 @atom:49_b21_a21_d21_i21 lj/cut/coul/long 0.266 3.47 - pair_coeff @atom:50_b22_a22_d22_i22 @atom:50_b22_a22_d22_i22 lj/cut/coul/long 0.395 3.56 - pair_coeff @atom:51_b23_a23_d23_i23 @atom:51_b23_a23_d23_i23 lj/cut/coul/long 0.28 2.93 - pair_coeff @atom:52_b6_a6_d6_i6 @atom:52_b6_a6_d6_i6 lj/cut/coul/long 0.16 3.81 - pair_coeff @atom:53_b4_a4_d4_i4 @atom:53_b4_a4_d4_i4 lj/cut/coul/long 0.21 2.96 - pair_coeff @atom:54_b24_a24_d24_i24 @atom:54_b24_a24_d24_i24 lj/cut/coul/long 0.17 3.25 - pair_coeff @atom:55_b3_a3_d3_i3 @atom:55_b3_a3_d3_i3 lj/cut/coul/long 0.115 3.8 - pair_coeff @atom:56_b6_a6_d6_i6 @atom:56_b6_a6_d6_i6 lj/cut/coul/long 0.17 3.8 - pair_coeff @atom:57_b25_a25_d25_i25 @atom:57_b25_a25_d25_i25 lj/cut/coul/long 0.0 0.0 - pair_coeff @atom:58_b26_a26_d26_i26 @atom:58_b26_a26_d26_i26 lj/cut/coul/long 0.02 2.556 - pair_coeff @atom:59_b27_a27_d27_i27 @atom:59_b27_a27_d27_i27 lj/cut/coul/long 0.069 2.78 - pair_coeff @atom:60_b28_a28_d28_i28 @atom:60_b28_a28_d28_i28 lj/cut/coul/long 0.2339 3.401 - pair_coeff @atom:61_b29_a29_d29_i29 @atom:61_b29_a29_d29_i29 lj/cut/coul/long 0.317 3.624 - pair_coeff @atom:62_b30_a30_d30_i30 @atom:62_b30_a30_d30_i30 lj/cut/coul/long 0.433 3.935 - pair_coeff @atom:63_b31_a31_d31_i31 @atom:63_b31_a31_d31_i31 lj/cut/coul/long 0.1521 3.15061 - pair_coeff @atom:64_b32_a32_d32_i32 @atom:64_b32_a32_d32_i32 lj/cut/coul/long 0.0 0.0 - pair_coeff @atom:65_b31_a31_d31_i31 @atom:65_b31_a31_d31_i31 lj/cut/coul/long 0.155 3.15365 - pair_coeff @atom:66_b32_a32_d32_i32 @atom:66_b32_a32_d32_i32 lj/cut/coul/long 0.0 0.0 - pair_coeff @atom:67_b33_a33_d33_i33 @atom:67_b33_a33_d33_i33 lj/cut/coul/long 0.0 0.0 - pair_coeff @atom:68_b34_a34_d34_i34 @atom:68_b34_a34_d34_i34 lj/cut/coul/long 0.15 3.176 - pair_coeff @atom:69_b35_a35_d35_i35 @atom:69_b35_a35_d35_i35 lj/cut/coul/long 0.0 0.0 - pair_coeff @atom:70_b36_a36_d36_i36 @atom:70_b36_a36_d36_i36 lj/cut/coul/long 0.1 3.27 - pair_coeff @atom:71_b37_a37_d37_i37 @atom:71_b37_a37_d37_i37 lj/cut/coul/long 0.0 0.0 - pair_coeff @atom:72_b38_a38_d38_i38 @atom:72_b38_a38_d38_i38 lj/cut/coul/long 0.0 0.0 - pair_coeff @atom:73_b39_a39_d39_i39 @atom:73_b39_a39_d39_i39 lj/cut/coul/long 0.16 3.12 - pair_coeff @atom:74_b40_a40_d40_i40 @atom:74_b40_a40_d40_i40 lj/cut/coul/long 0.0 0.0 - pair_coeff @atom:75_b41_a41_d41_i41 @atom:75_b41_a41_d41_i41 lj/cut/coul/long 0.0 0.0 - pair_coeff @atom:76_b42_a42_d42_i42 @atom:76_b42_a42_d42_i42 lj/cut/coul/long 0.1554 3.16557 - pair_coeff @atom:77_b43_a43_d43_i43 @atom:77_b43_a43_d43_i43 lj/cut/coul/long 0.0 0.0 - pair_coeff @atom:78_b44_a44_d44_i44 @atom:78_b44_a44_d44_i44 lj/cut/coul/long 0.17 3.42 - pair_coeff @atom:79_b45_a45_d45_i45 @atom:79_b45_a45_d45_i45 lj/cut/coul/long 0.0 0.0 - pair_coeff @atom:80_b13_a13_d13_i13 @atom:80_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:81_b13_a13_d13_i13 @atom:81_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:82_b13_a13_d13_i13 @atom:82_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:83_b13_a13_d13_i13 @atom:83_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:84_b13_a13_d13_i13 @atom:84_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:85_b46_a46_d46_i46 @atom:85_b46_a46_d46_i46 lj/cut/coul/long 0.03 2.5 - pair_coeff @atom:86_b47_a47_d47_i47 @atom:86_b47_a47_d47_i47 lj/cut/coul/long 0.076 3.55 - pair_coeff @atom:87_b47_a47_d47_i47 @atom:87_b47_a47_d47_i47 lj/cut/coul/long 0.076 3.55 - pair_coeff @atom:88_b47_a47_d47_i47 @atom:88_b47_a47_d47_i47 lj/cut/coul/long 0.076 3.55 - pair_coeff @atom:89_b46_a46_d46_i46 @atom:89_b46_a46_d46_i46 lj/cut/coul/long 0.03 2.42 - pair_coeff @atom:90_b48_a48_d48_i48 @atom:90_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 - pair_coeff @atom:91_b49_a49_d49_i49 @atom:91_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42 - pair_coeff @atom:92_b48_a48_d48_i48 @atom:92_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 - pair_coeff @atom:93_b13_a13_d13_i13 @atom:93_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:94_b13_a13_d13_i13 @atom:94_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:95_b50_a50_d50_i50 @atom:95_b50_a50_d50_i50 lj/cut/coul/long 0.076 3.55 - pair_coeff @atom:96_b5_a5_d5_i5 @atom:96_b5_a5_d5_i5 lj/cut/coul/long 0.17 3.12 - pair_coeff @atom:97_b7_a7_d7_i7 @atom:97_b7_a7_d7_i7 lj/cut/coul/long 0.0 0.0 - pair_coeff @atom:98_b46_a46_d46_i46 @atom:98_b46_a46_d46_i46 lj/cut/coul/long 0.03 2.5 - pair_coeff @atom:99_b13_a13_d13_i13 @atom:99_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:100_b13_a13_d13_i13 @atom:100_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:101_b13_a13_d13_i13 @atom:101_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:102_b13_a13_d13_i13 @atom:102_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:103_b13_a13_d13_i13 @atom:103_b13_a13_d13_i13 lj/cut/coul/long 0.062 3.25 - pair_coeff @atom:104_b5_a5_d5_i5 @atom:104_b5_a5_d5_i5 lj/cut/coul/long 0.17 3.07 - pair_coeff @atom:105_b7_a7_d7_i7 @atom:105_b7_a7_d7_i7 lj/cut/coul/long 0.0 0.0 - pair_coeff @atom:106_b1_a1_d1_i1 @atom:106_b1_a1_d1_i1 lj/cut/coul/long 0.061 2.94 - pair_coeff @atom:107_b46_a46_d46_i46 @atom:107_b46_a46_d46_i46 lj/cut/coul/long 0.03 2.5 - pair_coeff @atom:108_b48_a48_d48_i48 @atom:108_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 - pair_coeff @atom:109_b5_a5_d5_i5 @atom:109_b5_a5_d5_i5 lj/cut/coul/long 0.17 3.07 - pair_coeff @atom:110_b7_a7_d7_i7 @atom:110_b7_a7_d7_i7 lj/cut/coul/long 0.0 0.0 - pair_coeff @atom:111_b5_a5_d5_i5 @atom:111_b5_a5_d5_i5 lj/cut/coul/long 0.17 3.07 - pair_coeff @atom:112_b7_a7_d7_i7 @atom:112_b7_a7_d7_i7 lj/cut/coul/long 0.0 0.0 - pair_coeff @atom:113_b5_a5_d5_i5 @atom:113_b5_a5_d5_i5 lj/cut/coul/long 0.17 3.07 - pair_coeff @atom:114_b7_a7_d7_i7 @atom:114_b7_a7_d7_i7 lj/cut/coul/long 0.0 0.0 - pair_coeff @atom:115_b13_a13_d13_i13 @atom:115_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:116_b13_a13_d13_i13 @atom:116_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:117_b13_a13_d13_i13 @atom:117_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:118_b46_a46_d46_i46 @atom:118_b46_a46_d46_i46 lj/cut/coul/long 0.03 2.5 - pair_coeff @atom:119_b20_a20_d20_i20 @atom:119_b20_a20_d20_i20 lj/cut/coul/long 0.14 2.9 - pair_coeff @atom:120_b50_a50_d50_i50 @atom:120_b50_a50_d50_i50 lj/cut/coul/long 0.076 3.55 - pair_coeff @atom:121_b20_a20_d20_i20 @atom:121_b20_a20_d20_i20 lj/cut/coul/long 0.14 2.9 - pair_coeff @atom:122_b20_a20_d20_i20 @atom:122_b20_a20_d20_i20 lj/cut/coul/long 0.14 2.9 - pair_coeff @atom:123_b13_a13_d13_i13 @atom:123_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:124_b13_a13_d13_i13 @atom:124_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:125_b13_a13_d13_i13 @atom:125_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:126_b13_a13_d13_i13 @atom:126_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:127_b46_a46_d46_i46 @atom:127_b46_a46_d46_i46 lj/cut/coul/long 0.03 2.5 - pair_coeff @atom:128_b20_a20_d20_i20 @atom:128_b20_a20_d20_i20 lj/cut/coul/long 0.14 2.9 - pair_coeff @atom:129_b5_a5_d5_i5 @atom:129_b5_a5_d5_i5 lj/cut/coul/long 0.17 3.07 - pair_coeff @atom:130_b7_a7_d7_i7 @atom:130_b7_a7_d7_i7 lj/cut/coul/long 0.0 0.0 - pair_coeff @atom:131_b51_a51_d51_i51 @atom:131_b51_a51_d51_i51 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:132_b46_a46_d46_i46 @atom:132_b46_a46_d46_i46 lj/cut/coul/long 0.03 2.5 - pair_coeff @atom:133_b51_a51_d51_i51 @atom:133_b51_a51_d51_i51 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:134_b46_a46_d46_i46 @atom:134_b46_a46_d46_i46 lj/cut/coul/long 0.03 2.5 - pair_coeff @atom:135_b51_a51_d51_i51 @atom:135_b51_a51_d51_i51 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:136_b46_a46_d46_i46 @atom:136_b46_a46_d46_i46 lj/cut/coul/long 0.03 2.5 - pair_coeff @atom:137_b51_a51_d51_i51 @atom:137_b51_a51_d51_i51 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:138_b46_a46_d46_i46 @atom:138_b46_a46_d46_i46 lj/cut/coul/long 0.03 2.5 - pair_coeff @atom:139_b51_a51_d51_i51 @atom:139_b51_a51_d51_i51 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:140_b51_a51_d51_i51 @atom:140_b51_a51_d51_i51 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:141_b48_a48_d48_i48 @atom:141_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 - pair_coeff @atom:142_b15_a15_d15_i15 @atom:142_b15_a15_d15_i15 lj/cut/coul/long 0.25 3.55 - pair_coeff @atom:143_b15_a15_d15_i15 @atom:143_b15_a15_d15_i15 lj/cut/coul/long 0.25 3.7 - pair_coeff @atom:144_b16_a16_d16_i16 @atom:144_b16_a16_d16_i16 lj/cut/coul/long 0.25 3.55 - pair_coeff @atom:145_b16_a16_d16_i16 @atom:145_b16_a16_d16_i16 lj/cut/coul/long 0.25 3.55 - pair_coeff @atom:146_b17_a17_d17_i17 @atom:146_b17_a17_d17_i17 lj/cut/coul/long 0.0 0.0 - pair_coeff @atom:147_b17_a17_d17_i17 @atom:147_b17_a17_d17_i17 lj/cut/coul/long 0.0 0.0 - pair_coeff @atom:148_b13_a13_d13_i13 @atom:148_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:149_b13_a13_d13_i13 @atom:149_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:150_b13_a13_d13_i13 @atom:150_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:151_b13_a13_d13_i13 @atom:151_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:152_b13_a13_d13_i13 @atom:152_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:153_b13_a13_d13_i13 @atom:153_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:154_b13_a13_d13_i13 @atom:154_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:155_b13_a13_d13_i13 @atom:155_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:156_b13_a13_d13_i13 @atom:156_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:157_b13_a13_d13_i13 @atom:157_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:158_b13_a13_d13_i13 @atom:158_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:159_b13_a13_d13_i13 @atom:159_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:160_b13_a13_d13_i13 @atom:160_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:161_b13_a13_d13_i13 @atom:161_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:162_b13_a13_d13_i13 @atom:162_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:163_b48_a48_d48_i48 @atom:163_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 - pair_coeff @atom:164_b16_a16_d16_i16 @atom:164_b16_a16_d16_i16 lj/cut/coul/long 0.25 3.55 - pair_coeff @atom:165_b13_a13_d13_i13 @atom:165_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:166_b13_a13_d13_i13 @atom:166_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:167_b13_a13_d13_i13 @atom:167_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:168_b21_a21_d21_i21 @atom:168_b21_a21_d21_i21 lj/cut/coul/long 0.3 3.4 - pair_coeff @atom:169_b47_a47_d47_i47 @atom:169_b47_a47_d47_i47 lj/cut/coul/long 0.076 3.55 - pair_coeff @atom:170_b48_a48_d48_i48 @atom:170_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 - pair_coeff @atom:171_b13_a13_d13_i13 @atom:171_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:172_b13_a13_d13_i13 @atom:172_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:173_b3_a3_d3_i3 @atom:173_b3_a3_d3_i3 lj/cut/coul/long 0.105 3.75 - pair_coeff @atom:174_b3_a3_d3_i3 @atom:174_b3_a3_d3_i3 lj/cut/coul/long 0.105 3.75 - pair_coeff @atom:175_b3_a3_d3_i3 @atom:175_b3_a3_d3_i3 lj/cut/coul/long 0.105 3.75 - pair_coeff @atom:176_b3_a3_d3_i3 @atom:176_b3_a3_d3_i3 lj/cut/coul/long 0.105 3.75 - pair_coeff @atom:177_b3_a3_d3_i3 @atom:177_b3_a3_d3_i3 lj/cut/coul/long 0.105 3.75 - pair_coeff @atom:178_b4_a4_d4_i4 @atom:178_b4_a4_d4_i4 lj/cut/coul/long 0.21 2.96 - pair_coeff @atom:179_b24_a24_d24_i24 @atom:179_b24_a24_d24_i24 lj/cut/coul/long 0.17 3.25 - pair_coeff @atom:180_b24_a24_d24_i24 @atom:180_b24_a24_d24_i24 lj/cut/coul/long 0.17 3.25 - pair_coeff @atom:181_b24_a24_d24_i24 @atom:181_b24_a24_d24_i24 lj/cut/coul/long 0.17 3.25 - pair_coeff @atom:182_b45_a45_d45_i45 @atom:182_b45_a45_d45_i45 lj/cut/coul/long 0.0 0.0 - pair_coeff @atom:183_b45_a45_d45_i45 @atom:183_b45_a45_d45_i45 lj/cut/coul/long 0.0 0.0 - pair_coeff @atom:184_b13_a13_d13_i13 @atom:184_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:185_b13_a13_d13_i13 @atom:185_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:186_b13_a13_d13_i13 @atom:186_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:187_b13_a13_d13_i13 @atom:187_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:188_b13_a13_d13_i13 @atom:188_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:189_b3_a3_d3_i3 @atom:189_b3_a3_d3_i3 lj/cut/coul/long 0.105 3.75 - pair_coeff @atom:190_b4_a4_d4_i4 @atom:190_b4_a4_d4_i4 lj/cut/coul/long 0.21 2.96 - pair_coeff @atom:191_b24_a24_d24_i24 @atom:191_b24_a24_d24_i24 lj/cut/coul/long 0.17 3.25 - pair_coeff @atom:192_b45_a45_d45_i45 @atom:192_b45_a45_d45_i45 lj/cut/coul/long 0.0 0.0 - pair_coeff @atom:193_b24_a24_d24_i24 @atom:193_b24_a24_d24_i24 lj/cut/coul/long 0.17 3.25 - pair_coeff @atom:194_b3_a3_d3_i3 @atom:194_b3_a3_d3_i3 lj/cut/coul/long 0.105 3.75 - pair_coeff @atom:195_b4_a4_d4_i4 @atom:195_b4_a4_d4_i4 lj/cut/coul/long 0.21 2.96 - pair_coeff @atom:196_b45_a45_d45_i45 @atom:196_b45_a45_d45_i45 lj/cut/coul/long 0.0 0.0 - pair_coeff @atom:197_b46_a46_d46_i46 @atom:197_b46_a46_d46_i46 lj/cut/coul/long 0.02 2.5 - pair_coeff @atom:198_b13_a13_d13_i13 @atom:198_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:199_b13_a13_d13_i13 @atom:199_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:200_b13_a13_d13_i13 @atom:200_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:201_b13_a13_d13_i13 @atom:201_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:202_b48_a48_d48_i48 @atom:202_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 - pair_coeff @atom:203_b19_a19_d19_i19 @atom:203_b19_a19_d19_i19 lj/cut/coul/long 0.15 3.65 - pair_coeff @atom:204_b18_a18_d18_i18 @atom:204_b18_a18_d18_i18 lj/cut/coul/long 0.17 3.2 - pair_coeff @atom:205_b48_a48_d48_i48 @atom:205_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 - pair_coeff @atom:206_b21_a21_d21_i21 @atom:206_b21_a21_d21_i21 lj/cut/coul/long 0.3 3.4 - pair_coeff @atom:207_b24_a24_d24_i24 @atom:207_b24_a24_d24_i24 lj/cut/coul/long 0.17 3.25 - pair_coeff @atom:208_b48_a48_d48_i48 @atom:208_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 - pair_coeff @atom:209_b3_a3_d3_i3 @atom:209_b3_a3_d3_i3 lj/cut/coul/long 0.105 3.75 - pair_coeff @atom:210_b4_a4_d4_i4 @atom:210_b4_a4_d4_i4 lj/cut/coul/long 0.21 2.96 - pair_coeff @atom:211_b5_a5_d5_i5 @atom:211_b5_a5_d5_i5 lj/cut/coul/long 0.17 3.0 - pair_coeff @atom:212_b7_a7_d7_i7 @atom:212_b7_a7_d7_i7 lj/cut/coul/long 0.0 0.0 - pair_coeff @atom:213_b3_a3_d3_i3 @atom:213_b3_a3_d3_i3 lj/cut/coul/long 0.105 3.75 - pair_coeff @atom:214_b52_a52_d52_i52 @atom:214_b52_a52_d52_i52 lj/cut/coul/long 0.21 2.96 - pair_coeff @atom:215_b13_a13_d13_i13 @atom:215_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:216_b13_a13_d13_i13 @atom:216_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:217_b13_a13_d13_i13 @atom:217_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:218_b13_a13_d13_i13 @atom:218_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:219_b3_a3_d3_i3 @atom:219_b3_a3_d3_i3 lj/cut/coul/long 0.105 3.75 - pair_coeff @atom:220_b4_a4_d4_i4 @atom:220_b4_a4_d4_i4 lj/cut/coul/long 0.21 2.96 - pair_coeff @atom:221_b46_a46_d46_i46 @atom:221_b46_a46_d46_i46 lj/cut/coul/long 0.015 2.42 - pair_coeff @atom:222_b3_a3_d3_i3 @atom:222_b3_a3_d3_i3 lj/cut/coul/long 0.105 3.75 - pair_coeff @atom:223_b4_a4_d4_i4 @atom:223_b4_a4_d4_i4 lj/cut/coul/long 0.21 2.96 - pair_coeff @atom:224_b46_a46_d46_i46 @atom:224_b46_a46_d46_i46 lj/cut/coul/long 0.015 2.42 - pair_coeff @atom:225_b13_a13_d13_i13 @atom:225_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:226_b13_a13_d13_i13 @atom:226_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:227_b13_a13_d13_i13 @atom:227_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:228_b13_a13_d13_i13 @atom:228_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:229_b53_a53_d53_i53 @atom:229_b53_a53_d53_i53 lj/cut/coul/long 0.17 3.25 - pair_coeff @atom:230_b53_a53_d53_i53 @atom:230_b53_a53_d53_i53 lj/cut/coul/long 0.17 3.25 - pair_coeff @atom:231_b53_a53_d53_i53 @atom:231_b53_a53_d53_i53 lj/cut/coul/long 0.17 3.25 - pair_coeff @atom:232_b54_a54_d54_i54 @atom:232_b54_a54_d54_i54 lj/cut/coul/long 0.0 0.0 - pair_coeff @atom:233_b54_a54_d54_i54 @atom:233_b54_a54_d54_i54 lj/cut/coul/long 0.0 0.0 - pair_coeff @atom:234_b13_a13_d13_i13 @atom:234_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:235_b13_a13_d13_i13 @atom:235_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:236_b13_a13_d13_i13 @atom:236_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:237_b13_a13_d13_i13 @atom:237_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:238_b13_a13_d13_i13 @atom:238_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:239_b13_a13_d13_i13 @atom:239_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:240_b13_a13_d13_i13 @atom:240_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:241_b13_a13_d13_i13 @atom:241_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:242_b13_a13_d13_i13 @atom:242_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:243_b55_a55_d55_i55 @atom:243_b55_a55_d55_i55 lj/cut/coul/long 0.17 3.25 - pair_coeff @atom:244_b54_a54_d54_i54 @atom:244_b54_a54_d54_i54 lj/cut/coul/long 0.0 0.0 - pair_coeff @atom:245_b48_a48_d48_i48 @atom:245_b48_a48_d48_i48 lj/cut/coul/long 0.05 3.55 - pair_coeff @atom:246_b55_a55_d55_i55 @atom:246_b55_a55_d55_i55 lj/cut/coul/long 0.17 3.25 - pair_coeff @atom:247_b54_a54_d54_i54 @atom:247_b54_a54_d54_i54 lj/cut/coul/long 0.0 0.0 - pair_coeff @atom:248_b13_a13_d13_i13 @atom:248_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:249_b13_a13_d13_i13 @atom:249_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:250_b13_a13_d13_i13 @atom:250_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:251_b13_a13_d13_i13 @atom:251_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:252_b53_a53_d53_i53 @atom:252_b53_a53_d53_i53 lj/cut/coul/long 0.17 3.25 - pair_coeff @atom:253_b54_a54_d54_i54 @atom:253_b54_a54_d54_i54 lj/cut/coul/long 0.0 0.0 - pair_coeff @atom:254_b56_a56_d56_i56 @atom:254_b56_a56_d56_i56 lj/cut/coul/long 0.17 3.25 - pair_coeff @atom:255_b48_a48_d48_i48 @atom:255_b48_a48_d48_i48 lj/cut/coul/long 0.08 3.5 - pair_coeff @atom:256_b55_a55_d55_i55 @atom:256_b55_a55_d55_i55 lj/cut/coul/long 0.17 3.25 - pair_coeff @atom:257_b45_a45_d45_i45 @atom:257_b45_a45_d45_i45 lj/cut/coul/long 0.0 0.0 - pair_coeff @atom:258_b48_a48_d48_i48 @atom:258_b48_a48_d48_i48 lj/cut/coul/long 0.08 3.5 - pair_coeff @atom:259_b49_a49_d49_i49 @atom:259_b49_a49_d49_i49 lj/cut/coul/long 0.05 2.5 - pair_coeff @atom:260_b48_a48_d48_i48 @atom:260_b48_a48_d48_i48 lj/cut/coul/long 0.08 3.5 - pair_coeff @atom:261_b49_a49_d49_i49 @atom:261_b49_a49_d49_i49 lj/cut/coul/long 0.05 2.5 - pair_coeff @atom:262_b57_a57_d57_i57 @atom:262_b57_a57_d57_i57 lj/cut/coul/long 0.17 3.25 - pair_coeff @atom:263_b3_a3_d3_i3 @atom:263_b3_a3_d3_i3 lj/cut/coul/long 0.105 3.75 - pair_coeff @atom:264_b57_a57_d57_i57 @atom:264_b57_a57_d57_i57 lj/cut/coul/long 0.17 3.25 - pair_coeff @atom:265_b3_a3_d3_i3 @atom:265_b3_a3_d3_i3 lj/cut/coul/long 0.105 3.75 - pair_coeff @atom:266_b47_a47_d47_i47 @atom:266_b47_a47_d47_i47 lj/cut/coul/long 0.08 3.5 - pair_coeff @atom:267_b47_a47_d47_i47 @atom:267_b47_a47_d47_i47 lj/cut/coul/long 0.08 3.5 - pair_coeff @atom:268_b45_a45_d45_i45 @atom:268_b45_a45_d45_i45 lj/cut/coul/long 0.0 0.0 - pair_coeff @atom:269_b4_a4_d4_i4 @atom:269_b4_a4_d4_i4 lj/cut/coul/long 0.21 2.96 - pair_coeff @atom:270_b45_a45_d45_i45 @atom:270_b45_a45_d45_i45 lj/cut/coul/long 0.0 0.0 - pair_coeff @atom:271_b4_a4_d4_i4 @atom:271_b4_a4_d4_i4 lj/cut/coul/long 0.21 2.96 - pair_coeff @atom:272_b46_a46_d46_i46 @atom:272_b46_a46_d46_i46 lj/cut/coul/long 0.05 2.5 - pair_coeff @atom:273_b46_a46_d46_i46 @atom:273_b46_a46_d46_i46 lj/cut/coul/long 0.05 2.5 - pair_coeff @atom:274_b13_a13_d13_i13 @atom:274_b13_a13_d13_i13 lj/cut/coul/long 0.08 3.5 - pair_coeff @atom:275_b46_a46_d46_i46 @atom:275_b46_a46_d46_i46 lj/cut/coul/long 0.05 2.5 - pair_coeff @atom:276_b57_a57_d57_i57 @atom:276_b57_a57_d57_i57 lj/cut/coul/long 0.17 3.25 - pair_coeff @atom:277_b3_a3_d3_i3 @atom:277_b3_a3_d3_i3 lj/cut/coul/long 0.105 3.75 - pair_coeff @atom:278_b56_a56_d56_i56 @atom:278_b56_a56_d56_i56 lj/cut/coul/long 0.17 3.25 - pair_coeff @atom:279_b48_a48_d48_i48 @atom:279_b48_a48_d48_i48 lj/cut/coul/long 0.08 3.5 - pair_coeff @atom:280_b47_a47_d47_i47 @atom:280_b47_a47_d47_i47 lj/cut/coul/long 0.08 3.5 - pair_coeff @atom:281_b47_a47_d47_i47 @atom:281_b47_a47_d47_i47 lj/cut/coul/long 0.08 3.5 - pair_coeff @atom:282_b45_a45_d45_i45 @atom:282_b45_a45_d45_i45 lj/cut/coul/long 0.0 0.0 - pair_coeff @atom:283_b4_a4_d4_i4 @atom:283_b4_a4_d4_i4 lj/cut/coul/long 0.21 2.96 - pair_coeff @atom:284_b55_a55_d55_i55 @atom:284_b55_a55_d55_i55 lj/cut/coul/long 0.17 3.25 - pair_coeff @atom:285_b45_a45_d45_i45 @atom:285_b45_a45_d45_i45 lj/cut/coul/long 0.0 0.0 - pair_coeff @atom:286_b45_a45_d45_i45 @atom:286_b45_a45_d45_i45 lj/cut/coul/long 0.0 0.0 - pair_coeff @atom:287_b46_a46_d46_i46 @atom:287_b46_a46_d46_i46 lj/cut/coul/long 0.05 2.5 - pair_coeff @atom:288_b58_a58_d58_i58 @atom:288_b58_a58_d58_i58 lj/cut/coul/long 0.05 2.5 - pair_coeff @atom:289_b56_a56_d56_i56 @atom:289_b56_a56_d56_i56 lj/cut/coul/long 0.17 3.25 - pair_coeff @atom:290_b59_a59_d59_i59 @atom:290_b59_a59_d59_i59 lj/cut/coul/long 0.08 3.5 - pair_coeff @atom:291_b56_a56_d56_i56 @atom:291_b56_a56_d56_i56 lj/cut/coul/long 0.17 3.25 - pair_coeff @atom:292_b60_a60_d60_i60 @atom:292_b60_a60_d60_i60 lj/cut/coul/long 0.08 3.5 - pair_coeff @atom:293_b60_a60_d60_i60 @atom:293_b60_a60_d60_i60 lj/cut/coul/long 0.08 3.5 - pair_coeff @atom:294_b48_a48_d48_i48 @atom:294_b48_a48_d48_i48 lj/cut/coul/long 0.08 3.5 - pair_coeff @atom:295_b61_a61_d61_i61 @atom:295_b61_a61_d61_i61 lj/cut/coul/long 0.17 3.25 - pair_coeff @atom:296_b62_a62_d62_i62 @atom:296_b62_a62_d62_i62 lj/cut/coul/long 0.08 3.5 - pair_coeff @atom:297_b57_a57_d57_i57 @atom:297_b57_a57_d57_i57 lj/cut/coul/long 0.17 3.25 - pair_coeff @atom:298_b63_a63_d63_i63 @atom:298_b63_a63_d63_i63 lj/cut/coul/long 0.05 2.5 - pair_coeff @atom:299_b55_a55_d55_i55 @atom:299_b55_a55_d55_i55 lj/cut/coul/long 0.17 3.25 - pair_coeff @atom:300_b45_a45_d45_i45 @atom:300_b45_a45_d45_i45 lj/cut/coul/long 0.0 0.0 - pair_coeff @atom:301_b45_a45_d45_i45 @atom:301_b45_a45_d45_i45 lj/cut/coul/long 0.0 0.0 - pair_coeff @atom:302_b63_a63_d63_i63 @atom:302_b63_a63_d63_i63 lj/cut/coul/long 0.05 2.5 - pair_coeff @atom:303_b45_a45_d45_i45 @atom:303_b45_a45_d45_i45 lj/cut/coul/long 0.0 0.0 - pair_coeff @atom:304_b57_a57_d57_i57 @atom:304_b57_a57_d57_i57 lj/cut/coul/long 0.17 3.25 - pair_coeff @atom:305_b48_a48_d48_i48 @atom:305_b48_a48_d48_i48 lj/cut/coul/long 0.08 3.5 - pair_coeff @atom:306_b56_a56_d56_i56 @atom:306_b56_a56_d56_i56 lj/cut/coul/long 0.17 3.25 - pair_coeff @atom:307_b60_a60_d60_i60 @atom:307_b60_a60_d60_i60 lj/cut/coul/long 0.08 3.5 - pair_coeff @atom:308_b60_a60_d60_i60 @atom:308_b60_a60_d60_i60 lj/cut/coul/long 0.08 3.5 - pair_coeff @atom:309_b3_a3_d3_i3 @atom:309_b3_a3_d3_i3 lj/cut/coul/long 0.105 3.75 - pair_coeff @atom:310_b45_a45_d45_i45 @atom:310_b45_a45_d45_i45 lj/cut/coul/long 0.0 0.0 - pair_coeff @atom:311_b55_a55_d55_i55 @atom:311_b55_a55_d55_i55 lj/cut/coul/long 0.17 3.25 - pair_coeff @atom:312_b45_a45_d45_i45 @atom:312_b45_a45_d45_i45 lj/cut/coul/long 0.0 0.0 - pair_coeff @atom:313_b4_a4_d4_i4 @atom:313_b4_a4_d4_i4 lj/cut/coul/long 0.21 2.96 - pair_coeff @atom:314_b13_a13_d13_i13 @atom:314_b13_a13_d13_i13 lj/cut/coul/long 0.08 3.5 - pair_coeff @atom:315_b46_a46_d46_i46 @atom:315_b46_a46_d46_i46 lj/cut/coul/long 0.05 2.5 - pair_coeff @atom:316_b13_a13_d13_i13 @atom:316_b13_a13_d13_i13 lj/cut/coul/long 0.08 3.5 - pair_coeff @atom:317_b46_a46_d46_i46 @atom:317_b46_a46_d46_i46 lj/cut/coul/long 0.05 2.5 - pair_coeff @atom:318_b13_a13_d13_i13 @atom:318_b13_a13_d13_i13 lj/cut/coul/long 0.08 3.5 - pair_coeff @atom:319_b46_a46_d46_i46 @atom:319_b46_a46_d46_i46 lj/cut/coul/long 0.05 2.5 - pair_coeff @atom:320_b57_a57_d57_i57 @atom:320_b57_a57_d57_i57 lj/cut/coul/long 0.17 3.25 - pair_coeff @atom:321_b3_a3_d3_i3 @atom:321_b3_a3_d3_i3 lj/cut/coul/long 0.105 3.75 - pair_coeff @atom:322_b57_a57_d57_i57 @atom:322_b57_a57_d57_i57 lj/cut/coul/long 0.17 3.25 - pair_coeff @atom:323_b48_a48_d48_i48 @atom:323_b48_a48_d48_i48 lj/cut/coul/long 0.08 3.5 - pair_coeff @atom:324_b47_a47_d47_i47 @atom:324_b47_a47_d47_i47 lj/cut/coul/long 0.08 3.5 - pair_coeff @atom:325_b47_a47_d47_i47 @atom:325_b47_a47_d47_i47 lj/cut/coul/long 0.08 3.5 - pair_coeff @atom:326_b45_a45_d45_i45 @atom:326_b45_a45_d45_i45 lj/cut/coul/long 0.0 0.0 - pair_coeff @atom:327_b4_a4_d4_i4 @atom:327_b4_a4_d4_i4 lj/cut/coul/long 0.21 2.96 - pair_coeff @atom:328_b45_a45_d45_i45 @atom:328_b45_a45_d45_i45 lj/cut/coul/long 0.0 0.0 - pair_coeff @atom:329_b55_a55_d55_i55 @atom:329_b55_a55_d55_i55 lj/cut/coul/long 0.17 3.25 - pair_coeff @atom:330_b45_a45_d45_i45 @atom:330_b45_a45_d45_i45 lj/cut/coul/long 0.0 0.0 - pair_coeff @atom:331_b45_a45_d45_i45 @atom:331_b45_a45_d45_i45 lj/cut/coul/long 0.0 0.0 - pair_coeff @atom:332_b49_a49_d49_i49 @atom:332_b49_a49_d49_i49 lj/cut/coul/long 0.05 2.5 - pair_coeff @atom:333_b58_a58_d58_i58 @atom:333_b58_a58_d58_i58 lj/cut/coul/long 0.05 2.5 - pair_coeff @atom:334_b13_a13_d13_i13 @atom:334_b13_a13_d13_i13 lj/cut/coul/long 0.08 3.5 - pair_coeff @atom:335_b46_a46_d46_i46 @atom:335_b46_a46_d46_i46 lj/cut/coul/long 0.05 2.5 - pair_coeff @atom:336_b64_a64_d64_i64 @atom:336_b64_a64_d64_i64 lj/cut/coul/long 0.2 3.74 - pair_coeff @atom:337_b52_a52_d52_i52 @atom:337_b52_a52_d52_i52 lj/cut/coul/long 0.21 2.96 - pair_coeff @atom:338_b20_a20_d20_i20 @atom:338_b20_a20_d20_i20 lj/cut/coul/long 0.17 3.0 - pair_coeff @atom:339_b13_a13_d13_i13 @atom:339_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.55 - pair_coeff @atom:340_b47_a47_d47_i47 @atom:340_b47_a47_d47_i47 lj/cut/coul/long 0.08 3.5 - pair_coeff @atom:341_b21_a21_d21_i21 @atom:341_b21_a21_d21_i21 lj/cut/coul/long 0.3 3.4 - pair_coeff @atom:342_b47_a47_d47_i47 @atom:342_b47_a47_d47_i47 lj/cut/coul/long 0.076 3.55 - pair_coeff @atom:343_b1_a1_d1_i1 @atom:343_b1_a1_d1_i1 lj/cut/coul/long 0.71 3.05 - pair_coeff @atom:344_b21_a21_d21_i21 @atom:344_b21_a21_d21_i21 lj/cut/coul/long 0.71 4.02 - pair_coeff @atom:345_b65_a65_d65_i65 @atom:345_b65_a65_d65_i65 lj/cut/coul/long 0.71 4.28 - pair_coeff @atom:346_b66_a66_d66_i66 @atom:346_b66_a66_d66_i66 lj/cut/coul/long 0.71 4.81 - pair_coeff @atom:347_b67_a67_d67_i67 @atom:347_b67_a67_d67_i67 lj/cut/coul/long 0.0005 5.34 - pair_coeff @atom:348_b68_a68_d68_i68 @atom:348_b68_a68_d68_i68 lj/cut/coul/long 0.0005 2.87 - pair_coeff @atom:349_b69_a69_d69_i69 @atom:349_b69_a69_d69_i69 lj/cut/coul/long 0.0005 4.07 - pair_coeff @atom:350_b70_a70_d70_i70 @atom:350_b70_a70_d70_i70 lj/cut/coul/long 0.0005 5.17 - pair_coeff @atom:351_b71_a71_d71_i71 @atom:351_b71_a71_d71_i71 lj/cut/coul/long 0.0005 5.6 - pair_coeff @atom:352_b72_a72_d72_i72 @atom:352_b72_a72_d72_i72 lj/cut/coul/long 0.0005 6.2 - pair_coeff @atom:353_b73_a73_d73_i73 @atom:353_b73_a73_d73_i73 lj/cut/coul/long 0.875044 1.644471 - pair_coeff @atom:354_b74_a74_d74_i74 @atom:354_b74_a74_d74_i74 lj/cut/coul/long 0.449657 2.412031 - pair_coeff @atom:355_b75_a75_d75_i75 @atom:355_b75_a75_d75_i75 lj/cut/coul/long 0.118226 3.102688 - pair_coeff @atom:356_b76_a76_d76_i76 @atom:356_b76_a76_d76_i76 lj/cut/coul/long 0.047096 3.81661 - pair_coeff @atom:357_b6_a6_d6_i6 @atom:357_b6_a6_d6_i6 lj/cut/coul/long 0.3 4.2 - pair_coeff @atom:358_b46_a46_d46_i46 @atom:358_b46_a46_d46_i46 lj/cut/coul/long 0.05 2.5 - pair_coeff @atom:359_b15_a15_d15_i15 @atom:359_b15_a15_d15_i15 lj/cut/coul/long 0.5 4.25 - pair_coeff @atom:360_b6_a6_d6_i6 @atom:360_b6_a6_d6_i6 lj/cut/coul/long 0.3 4.2 - pair_coeff @atom:361_b46_a46_d46_i46 @atom:361_b46_a46_d46_i46 lj/cut/coul/long 0.05 2.5 - pair_coeff @atom:362_b5_a5_d5_i5 @atom:362_b5_a5_d5_i5 lj/cut/coul/long 0.25 3.15 - pair_coeff @atom:363_b13_a13_d13_i13 @atom:363_b13_a13_d13_i13 lj/cut/coul/long 0.3 4.2 - pair_coeff @atom:364_b46_a46_d46_i46 @atom:364_b46_a46_d46_i46 lj/cut/coul/long 0.05 2.5 - pair_coeff @atom:365_b19_a19_d19_i19 @atom:365_b19_a19_d19_i19 lj/cut/coul/long 0.15 3.65 - pair_coeff @atom:366_b18_a18_d18_i18 @atom:366_b18_a18_d18_i18 lj/cut/coul/long 0.25 3.4 - pair_coeff @atom:367_b6_a6_d6_i6 @atom:367_b6_a6_d6_i6 lj/cut/coul/long 0.3 4.2 - pair_coeff @atom:368_b46_a46_d46_i46 @atom:368_b46_a46_d46_i46 lj/cut/coul/long 0.05 2.5 - pair_coeff @atom:369_b53_a53_d53_i53 @atom:369_b53_a53_d53_i53 lj/cut/coul/long 0.25 3.4 - pair_coeff @atom:370_b45_a45_d45_i45 @atom:370_b45_a45_d45_i45 lj/cut/coul/long 0.05 2.5 - pair_coeff @atom:371_b6_a6_d6_i6 @atom:371_b6_a6_d6_i6 lj/cut/coul/long 0.3 4.2 - pair_coeff @atom:372_b46_a46_d46_i46 @atom:372_b46_a46_d46_i46 lj/cut/coul/long 0.05 2.5 - pair_coeff @atom:373_b13_a13_d13_i13 @atom:373_b13_a13_d13_i13 lj/cut/coul/long 0.3 4.2 - pair_coeff @atom:374_b46_a46_d46_i46 @atom:374_b46_a46_d46_i46 lj/cut/coul/long 0.05 2.5 - pair_coeff @atom:375_b33_a33_d33_i33 @atom:375_b33_a33_d33_i33 lj/cut/coul/long 0.0 0.0 - pair_coeff @atom:376_b5_a5_d5_i5 @atom:376_b5_a5_d5_i5 lj/cut/coul/long 0.25 3.2 - pair_coeff @atom:377_b7_a7_d7_i7 @atom:377_b7_a7_d7_i7 lj/cut/coul/long 0.0 0.0 - pair_coeff @atom:378_b77_a77_d77_i77 @atom:378_b77_a77_d77_i77 lj/cut/coul/long 0.4 2.81524 - pair_coeff @atom:379_b78_a78_d78_i78 @atom:379_b78_a78_d78_i78 lj/cut/coul/long 0.2 3.11815 - pair_coeff @atom:380_b20_a20_d20_i20 @atom:380_b20_a20_d20_i20 lj/cut/coul/long 0.14 2.9 - pair_coeff @atom:381_b64_a64_d64_i64 @atom:381_b64_a64_d64_i64 lj/cut/coul/long 0.2 3.74 - pair_coeff @atom:382_b52_a52_d52_i52 @atom:382_b52_a52_d52_i52 lj/cut/coul/long 0.2 3.15 - pair_coeff @atom:383_b20_a20_d20_i20 @atom:383_b20_a20_d20_i20 lj/cut/coul/long 0.14 2.9 - pair_coeff @atom:384_b13_a13_d13_i13 @atom:384_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:385_b46_a46_d46_i46 @atom:385_b46_a46_d46_i46 lj/cut/coul/long 0.03 2.5 - pair_coeff @atom:386_b64_a64_d64_i64 @atom:386_b64_a64_d64_i64 lj/cut/coul/long 0.2 3.74 - pair_coeff @atom:387_b52_a52_d52_i52 @atom:387_b52_a52_d52_i52 lj/cut/coul/long 0.2 3.15 - pair_coeff @atom:388_b20_a20_d20_i20 @atom:388_b20_a20_d20_i20 lj/cut/coul/long 0.14 2.9 - pair_coeff @atom:389_b13_a13_d13_i13 @atom:389_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:390_b46_a46_d46_i46 @atom:390_b46_a46_d46_i46 lj/cut/coul/long 0.03 2.5 - pair_coeff @atom:391_b64_a64_d64_i64 @atom:391_b64_a64_d64_i64 lj/cut/coul/long 0.2 3.74 - pair_coeff @atom:392_b52_a52_d52_i52 @atom:392_b52_a52_d52_i52 lj/cut/coul/long 0.2 3.15 - pair_coeff @atom:393_b20_a20_d20_i20 @atom:393_b20_a20_d20_i20 lj/cut/coul/long 0.14 2.9 - pair_coeff @atom:394_b13_a13_d13_i13 @atom:394_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:395_b46_a46_d46_i46 @atom:395_b46_a46_d46_i46 lj/cut/coul/long 0.03 2.5 - pair_coeff @atom:396_b13_a13_d13_i13 @atom:396_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:397_b46_a46_d46_i46 @atom:397_b46_a46_d46_i46 lj/cut/coul/long 0.03 2.5 - pair_coeff @atom:398_b48_a48_d48_i48 @atom:398_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 - pair_coeff @atom:399_b13_a13_d13_i13 @atom:399_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:400_b46_a46_d46_i46 @atom:400_b46_a46_d46_i46 lj/cut/coul/long 0.03 2.5 - pair_coeff @atom:401_b48_a48_d48_i48 @atom:401_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 - pair_coeff @atom:402_b13_a13_d13_i13 @atom:402_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:403_b46_a46_d46_i46 @atom:403_b46_a46_d46_i46 lj/cut/coul/long 0.03 2.5 - pair_coeff @atom:404_b48_a48_d48_i48 @atom:404_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 - pair_coeff @atom:405_b13_a13_d13_i13 @atom:405_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:406_b3_a3_d3_i3 @atom:406_b3_a3_d3_i3 lj/cut/coul/long 0.105 3.75 - pair_coeff @atom:407_b4_a4_d4_i4 @atom:407_b4_a4_d4_i4 lj/cut/coul/long 0.21 2.96 - pair_coeff @atom:408_b20_a20_d20_i20 @atom:408_b20_a20_d20_i20 lj/cut/coul/long 0.17 3.0 - pair_coeff @atom:409_b13_a13_d13_i13 @atom:409_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:410_b46_a46_d46_i46 @atom:410_b46_a46_d46_i46 lj/cut/coul/long 0.015 2.42 - pair_coeff @atom:411_b3_a3_d3_i3 @atom:411_b3_a3_d3_i3 lj/cut/coul/long 0.105 3.75 - pair_coeff @atom:412_b3_a3_d3_i3 @atom:412_b3_a3_d3_i3 lj/cut/coul/long 0.105 3.75 - pair_coeff @atom:413_b48_a48_d48_i48 @atom:413_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 - pair_coeff @atom:414_b20_a20_d20_i20 @atom:414_b20_a20_d20_i20 lj/cut/coul/long 0.17 3.0 - pair_coeff @atom:415_b79_a79_d79_i79 @atom:415_b79_a79_d79_i79 lj/cut/coul/long 0.25 3.55 - pair_coeff @atom:416_b23_a23_d23_i23 @atom:416_b23_a23_d23_i23 lj/cut/coul/long 0.17 2.96 - pair_coeff @atom:417_b13_a13_d13_i13 @atom:417_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:418_b46_a46_d46_i46 @atom:418_b46_a46_d46_i46 lj/cut/coul/long 0.03 2.5 - pair_coeff @atom:419_b24_a24_d24_i24 @atom:419_b24_a24_d24_i24 lj/cut/coul/long 0.17 3.25 - pair_coeff @atom:420_b45_a45_d45_i45 @atom:420_b45_a45_d45_i45 lj/cut/coul/long 0.0 0.0 - pair_coeff @atom:421_b24_a24_d24_i24 @atom:421_b24_a24_d24_i24 lj/cut/coul/long 0.17 3.25 - pair_coeff @atom:422_b45_a45_d45_i45 @atom:422_b45_a45_d45_i45 lj/cut/coul/long 0.0 0.0 - pair_coeff @atom:423_b13_a13_d13_i13 @atom:423_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:424_b46_a46_d46_i46 @atom:424_b46_a46_d46_i46 lj/cut/coul/long 0.03 2.5 - pair_coeff @atom:425_b13_a13_d13_i13 @atom:425_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:426_b46_a46_d46_i46 @atom:426_b46_a46_d46_i46 lj/cut/coul/long 0.03 2.5 - pair_coeff @atom:427_b13_a13_d13_i13 @atom:427_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:428_b46_a46_d46_i46 @atom:428_b46_a46_d46_i46 lj/cut/coul/long 0.03 2.5 - pair_coeff @atom:429_b48_a48_d48_i48 @atom:429_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 - pair_coeff @atom:430_b48_a48_d48_i48 @atom:430_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 - pair_coeff @atom:431_b13_a13_d13_i13 @atom:431_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:432_b13_a13_d13_i13 @atom:432_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:433_b13_a13_d13_i13 @atom:433_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:434_b79_a79_d79_i79 @atom:434_b79_a79_d79_i79 lj/cut/coul/long 0.25 3.55 - pair_coeff @atom:435_b23_a23_d23_i23 @atom:435_b23_a23_d23_i23 lj/cut/coul/long 0.17 2.96 - pair_coeff @atom:436_b22_a22_d22_i22 @atom:436_b22_a22_d22_i22 lj/cut/coul/long 0.395 3.56 - pair_coeff @atom:437_b22_a22_d22_i22 @atom:437_b22_a22_d22_i22 lj/cut/coul/long 0.395 3.56 - pair_coeff @atom:438_b23_a23_d23_i23 @atom:438_b23_a23_d23_i23 lj/cut/coul/long 0.28 2.93 - pair_coeff @atom:439_b13_a13_d13_i13 @atom:439_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:440_b13_a13_d13_i13 @atom:440_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:441_b80_a80_d80_i80 @atom:441_b80_a80_d80_i80 lj/cut/coul/long 0.07 3.55 - pair_coeff @atom:442_b60_a60_d60_i60 @atom:442_b60_a60_d60_i60 lj/cut/coul/long 0.07 3.55 - pair_coeff @atom:443_b81_a81_d81_i81 @atom:443_b81_a81_d81_i81 lj/cut/coul/long 0.07 3.55 - pair_coeff @atom:444_b57_a57_d57_i57 @atom:444_b57_a57_d57_i57 lj/cut/coul/long 0.17 3.25 - pair_coeff @atom:445_b45_a45_d45_i45 @atom:445_b45_a45_d45_i45 lj/cut/coul/long 0.0 0.0 - pair_coeff @atom:446_b13_a13_d13_i13 @atom:446_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:447_b82_a82_d82_i82 @atom:447_b82_a82_d82_i82 lj/cut/coul/long 0.07 3.55 - pair_coeff @atom:448_b83_a83_d83_i83 @atom:448_b83_a83_d83_i83 lj/cut/coul/long 0.07 3.55 - pair_coeff @atom:449_b84_a84_d84_i84 @atom:449_b84_a84_d84_i84 lj/cut/coul/long 0.07 3.55 - pair_coeff @atom:450_b82_a82_d82_i82 @atom:450_b82_a82_d82_i82 lj/cut/coul/long 0.07 3.55 - pair_coeff @atom:451_b85_a85_d85_i85 @atom:451_b85_a85_d85_i85 lj/cut/coul/long 0.07 3.55 - pair_coeff @atom:452_b61_a61_d61_i61 @atom:452_b61_a61_d61_i61 lj/cut/coul/long 0.17 3.25 - pair_coeff @atom:453_b57_a57_d57_i57 @atom:453_b57_a57_d57_i57 lj/cut/coul/long 0.17 3.25 - pair_coeff @atom:454_b45_a45_d45_i45 @atom:454_b45_a45_d45_i45 lj/cut/coul/long 0.0 0.0 - pair_coeff @atom:455_b84_a84_d84_i84 @atom:455_b84_a84_d84_i84 lj/cut/coul/long 0.07 3.55 - pair_coeff @atom:456_b13_a13_d13_i13 @atom:456_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:457_b13_a13_d13_i13 @atom:457_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:458_b47_a47_d47_i47 @atom:458_b47_a47_d47_i47 lj/cut/coul/long 0.076 3.55 - pair_coeff @atom:459_b47_a47_d47_i47 @atom:459_b47_a47_d47_i47 lj/cut/coul/long 0.076 3.55 - pair_coeff @atom:460_b86_a86_d86_i86 @atom:460_b86_a86_d86_i86 lj/cut/coul/long 0.07 3.55 - pair_coeff @atom:461_b56_a56_d56_i56 @atom:461_b56_a56_d56_i56 lj/cut/coul/long 0.17 3.25 - pair_coeff @atom:462_b48_a48_d48_i48 @atom:462_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 - pair_coeff @atom:463_b48_a48_d48_i48 @atom:463_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 - pair_coeff @atom:464_b48_a48_d48_i48 @atom:464_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 - pair_coeff @atom:465_b49_a49_d49_i49 @atom:465_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42 - pair_coeff @atom:466_b49_a49_d49_i49 @atom:466_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42 - pair_coeff @atom:467_b49_a49_d49_i49 @atom:467_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42 - pair_coeff @atom:468_b56_a56_d56_i56 @atom:468_b56_a56_d56_i56 lj/cut/coul/long 0.17 3.25 - pair_coeff @atom:469_b48_a48_d48_i48 @atom:469_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 - pair_coeff @atom:470_b49_a49_d49_i49 @atom:470_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42 - pair_coeff @atom:471_b56_a56_d56_i56 @atom:471_b56_a56_d56_i56 lj/cut/coul/long 0.17 3.25 - pair_coeff @atom:472_b59_a59_d59_i59 @atom:472_b59_a59_d59_i59 lj/cut/coul/long 0.07 3.55 - pair_coeff @atom:473_b48_a48_d48_i48 @atom:473_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 - pair_coeff @atom:474_b48_a48_d48_i48 @atom:474_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 - pair_coeff @atom:475_b49_a49_d49_i49 @atom:475_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42 - pair_coeff @atom:476_b49_a49_d49_i49 @atom:476_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42 - pair_coeff @atom:477_b49_a49_d49_i49 @atom:477_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42 - pair_coeff @atom:478_b56_a56_d56_i56 @atom:478_b56_a56_d56_i56 lj/cut/coul/long 0.17 3.25 - pair_coeff @atom:479_b48_a48_d48_i48 @atom:479_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 - pair_coeff @atom:480_b48_a48_d48_i48 @atom:480_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 - pair_coeff @atom:481_b49_a49_d49_i49 @atom:481_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42 - pair_coeff @atom:482_b49_a49_d49_i49 @atom:482_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42 - pair_coeff @atom:483_b57_a57_d57_i57 @atom:483_b57_a57_d57_i57 lj/cut/coul/long 0.17 3.25 - pair_coeff @atom:484_b84_a84_d84_i84 @atom:484_b84_a84_d84_i84 lj/cut/coul/long 0.07 3.55 - pair_coeff @atom:485_b87_a87_d87_i87 @atom:485_b87_a87_d87_i87 lj/cut/coul/long 0.07 3.55 - pair_coeff @atom:486_b45_a45_d45_i45 @atom:486_b45_a45_d45_i45 lj/cut/coul/long 0.0 0.0 - pair_coeff @atom:487_b49_a49_d49_i49 @atom:487_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42 - pair_coeff @atom:488_b49_a49_d49_i49 @atom:488_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42 - pair_coeff @atom:489_b57_a57_d57_i57 @atom:489_b57_a57_d57_i57 lj/cut/coul/long 0.17 3.25 - pair_coeff @atom:490_b61_a61_d61_i61 @atom:490_b61_a61_d61_i61 lj/cut/coul/long 0.17 3.25 - pair_coeff @atom:491_b88_a88_d88_i88 @atom:491_b88_a88_d88_i88 lj/cut/coul/long 0.07 3.55 - pair_coeff @atom:492_b87_a87_d87_i87 @atom:492_b87_a87_d87_i87 lj/cut/coul/long 0.07 3.55 - pair_coeff @atom:493_b84_a84_d84_i84 @atom:493_b84_a84_d84_i84 lj/cut/coul/long 0.07 3.55 - pair_coeff @atom:494_b45_a45_d45_i45 @atom:494_b45_a45_d45_i45 lj/cut/coul/long 0.0 0.0 - pair_coeff @atom:495_b49_a49_d49_i49 @atom:495_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42 - pair_coeff @atom:496_b49_a49_d49_i49 @atom:496_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42 - pair_coeff @atom:497_b49_a49_d49_i49 @atom:497_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42 - pair_coeff @atom:498_b57_a57_d57_i57 @atom:498_b57_a57_d57_i57 lj/cut/coul/long 0.17 3.25 - pair_coeff @atom:499_b82_a82_d82_i82 @atom:499_b82_a82_d82_i82 lj/cut/coul/long 0.07 3.55 - pair_coeff @atom:500_b61_a61_d61_i61 @atom:500_b61_a61_d61_i61 lj/cut/coul/long 0.17 3.25 - pair_coeff @atom:501_b83_a83_d83_i83 @atom:501_b83_a83_d83_i83 lj/cut/coul/long 0.07 3.55 - pair_coeff @atom:502_b84_a84_d84_i84 @atom:502_b84_a84_d84_i84 lj/cut/coul/long 0.07 3.55 - pair_coeff @atom:503_b45_a45_d45_i45 @atom:503_b45_a45_d45_i45 lj/cut/coul/long 0.0 0.0 - pair_coeff @atom:504_b49_a49_d49_i49 @atom:504_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42 - pair_coeff @atom:505_b49_a49_d49_i49 @atom:505_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42 - pair_coeff @atom:506_b49_a49_d49_i49 @atom:506_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42 - pair_coeff @atom:507_b20_a20_d20_i20 @atom:507_b20_a20_d20_i20 lj/cut/coul/long 0.14 2.9 - pair_coeff @atom:508_b84_a84_d84_i84 @atom:508_b84_a84_d84_i84 lj/cut/coul/long 0.07 3.55 - pair_coeff @atom:509_b87_a87_d87_i87 @atom:509_b87_a87_d87_i87 lj/cut/coul/long 0.076 3.55 - pair_coeff @atom:510_b49_a49_d49_i49 @atom:510_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42 - pair_coeff @atom:511_b49_a49_d49_i49 @atom:511_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42 - pair_coeff @atom:512_b20_a20_d20_i20 @atom:512_b20_a20_d20_i20 lj/cut/coul/long 0.14 2.9 - pair_coeff @atom:513_b82_a82_d82_i82 @atom:513_b82_a82_d82_i82 lj/cut/coul/long 0.07 3.55 - pair_coeff @atom:514_b61_a61_d61_i61 @atom:514_b61_a61_d61_i61 lj/cut/coul/long 0.17 3.25 - pair_coeff @atom:515_b83_a83_d83_i83 @atom:515_b83_a83_d83_i83 lj/cut/coul/long 0.07 3.55 - pair_coeff @atom:516_b84_a84_d84_i84 @atom:516_b84_a84_d84_i84 lj/cut/coul/long 0.07 3.55 - pair_coeff @atom:517_b49_a49_d49_i49 @atom:517_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42 - pair_coeff @atom:518_b49_a49_d49_i49 @atom:518_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42 - pair_coeff @atom:519_b49_a49_d49_i49 @atom:519_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42 - pair_coeff @atom:520_b20_a20_d20_i20 @atom:520_b20_a20_d20_i20 lj/cut/coul/long 0.14 2.9 - pair_coeff @atom:521_b61_a61_d61_i61 @atom:521_b61_a61_d61_i61 lj/cut/coul/long 0.17 3.25 - pair_coeff @atom:522_b88_a88_d88_i88 @atom:522_b88_a88_d88_i88 lj/cut/coul/long 0.07 3.55 - pair_coeff @atom:523_b87_a87_d87_i87 @atom:523_b87_a87_d87_i87 lj/cut/coul/long 0.07 3.55 - pair_coeff @atom:524_b84_a84_d84_i84 @atom:524_b84_a84_d84_i84 lj/cut/coul/long 0.07 3.55 - pair_coeff @atom:525_b49_a49_d49_i49 @atom:525_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42 - pair_coeff @atom:526_b49_a49_d49_i49 @atom:526_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42 - pair_coeff @atom:527_b49_a49_d49_i49 @atom:527_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42 - pair_coeff @atom:528_b57_a57_d57_i57 @atom:528_b57_a57_d57_i57 lj/cut/coul/long 0.17 3.25 - pair_coeff @atom:529_b84_a84_d84_i84 @atom:529_b84_a84_d84_i84 lj/cut/coul/long 0.07 3.55 - pair_coeff @atom:530_b87_a87_d87_i87 @atom:530_b87_a87_d87_i87 lj/cut/coul/long 0.07 3.55 - pair_coeff @atom:531_b48_a48_d48_i48 @atom:531_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 - pair_coeff @atom:532_b48_a48_d48_i48 @atom:532_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 - pair_coeff @atom:533_b48_a48_d48_i48 @atom:533_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 - pair_coeff @atom:534_b48_a48_d48_i48 @atom:534_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 - pair_coeff @atom:535_b81_a81_d81_i81 @atom:535_b81_a81_d81_i81 lj/cut/coul/long 0.07 3.55 - pair_coeff @atom:536_b60_a60_d60_i60 @atom:536_b60_a60_d60_i60 lj/cut/coul/long 0.07 3.55 - pair_coeff @atom:537_b45_a45_d45_i45 @atom:537_b45_a45_d45_i45 lj/cut/coul/long 0.0 0.0 - pair_coeff @atom:538_b49_a49_d49_i49 @atom:538_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42 - pair_coeff @atom:539_b49_a49_d49_i49 @atom:539_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42 - pair_coeff @atom:540_b49_a49_d49_i49 @atom:540_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42 - pair_coeff @atom:541_b49_a49_d49_i49 @atom:541_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42 - pair_coeff @atom:542_b49_a49_d49_i49 @atom:542_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42 - pair_coeff @atom:543_b49_a49_d49_i49 @atom:543_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42 - pair_coeff @atom:544_b56_a56_d56_i56 @atom:544_b56_a56_d56_i56 lj/cut/coul/long 0.17 3.25 - pair_coeff @atom:545_b48_a48_d48_i48 @atom:545_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 - pair_coeff @atom:546_b48_a48_d48_i48 @atom:546_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 - pair_coeff @atom:547_b48_a48_d48_i48 @atom:547_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 - pair_coeff @atom:548_b48_a48_d48_i48 @atom:548_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 - pair_coeff @atom:549_b48_a48_d48_i48 @atom:549_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 - pair_coeff @atom:550_b48_a48_d48_i48 @atom:550_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 - pair_coeff @atom:551_b48_a48_d48_i48 @atom:551_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 - pair_coeff @atom:552_b48_a48_d48_i48 @atom:552_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 - pair_coeff @atom:553_b48_a48_d48_i48 @atom:553_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 - pair_coeff @atom:554_b49_a49_d49_i49 @atom:554_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42 - pair_coeff @atom:555_b49_a49_d49_i49 @atom:555_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42 - pair_coeff @atom:556_b49_a49_d49_i49 @atom:556_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42 - pair_coeff @atom:557_b49_a49_d49_i49 @atom:557_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42 - pair_coeff @atom:558_b49_a49_d49_i49 @atom:558_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42 - pair_coeff @atom:559_b49_a49_d49_i49 @atom:559_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42 - pair_coeff @atom:560_b49_a49_d49_i49 @atom:560_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42 - pair_coeff @atom:561_b56_a56_d56_i56 @atom:561_b56_a56_d56_i56 lj/cut/coul/long 0.17 3.25 - pair_coeff @atom:562_b59_a59_d59_i59 @atom:562_b59_a59_d59_i59 lj/cut/coul/long 0.07 3.55 - pair_coeff @atom:563_b56_a56_d56_i56 @atom:563_b56_a56_d56_i56 lj/cut/coul/long 0.17 3.25 - pair_coeff @atom:564_b60_a60_d60_i60 @atom:564_b60_a60_d60_i60 lj/cut/coul/long 0.07 3.55 - pair_coeff @atom:565_b60_a60_d60_i60 @atom:565_b60_a60_d60_i60 lj/cut/coul/long 0.07 3.55 - pair_coeff @atom:566_b48_a48_d48_i48 @atom:566_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 - pair_coeff @atom:567_b61_a61_d61_i61 @atom:567_b61_a61_d61_i61 lj/cut/coul/long 0.17 3.25 - pair_coeff @atom:568_b62_a62_d62_i62 @atom:568_b62_a62_d62_i62 lj/cut/coul/long 0.07 3.55 - pair_coeff @atom:569_b57_a57_d57_i57 @atom:569_b57_a57_d57_i57 lj/cut/coul/long 0.17 3.25 - pair_coeff @atom:570_b49_a49_d49_i49 @atom:570_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42 - pair_coeff @atom:571_b49_a49_d49_i49 @atom:571_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42 - pair_coeff @atom:572_b49_a49_d49_i49 @atom:572_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42 - pair_coeff @atom:573_b45_a45_d45_i45 @atom:573_b45_a45_d45_i45 lj/cut/coul/long 0.0 0.0 - pair_coeff @atom:574_b16_a16_d16_i16 @atom:574_b16_a16_d16_i16 lj/cut/coul/long 0.25 3.55 - pair_coeff @atom:575_b82_a82_d82_i82 @atom:575_b82_a82_d82_i82 lj/cut/coul/long 0.07 3.55 - pair_coeff @atom:576_b61_a61_d61_i61 @atom:576_b61_a61_d61_i61 lj/cut/coul/long 0.17 3.25 - pair_coeff @atom:577_b83_a83_d83_i83 @atom:577_b83_a83_d83_i83 lj/cut/coul/long 0.07 3.55 - pair_coeff @atom:578_b84_a84_d84_i84 @atom:578_b84_a84_d84_i84 lj/cut/coul/long 0.07 3.55 - pair_coeff @atom:579_b49_a49_d49_i49 @atom:579_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42 - pair_coeff @atom:580_b49_a49_d49_i49 @atom:580_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42 - pair_coeff @atom:581_b49_a49_d49_i49 @atom:581_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42 - pair_coeff @atom:582_b56_a56_d56_i56 @atom:582_b56_a56_d56_i56 lj/cut/coul/long 0.17 3.25 - pair_coeff @atom:583_b59_a59_d59_i59 @atom:583_b59_a59_d59_i59 lj/cut/coul/long 0.07 3.55 - pair_coeff @atom:584_b49_a49_d49_i49 @atom:584_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42 - pair_coeff @atom:585_b48_a48_d48_i48 @atom:585_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 - pair_coeff @atom:586_b13_a13_d13_i13 @atom:586_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:587_b56_a56_d56_i56 @atom:587_b56_a56_d56_i56 lj/cut/coul/long 0.17 3.25 - pair_coeff @atom:588_b48_a48_d48_i48 @atom:588_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 - pair_coeff @atom:589_b48_a48_d48_i48 @atom:589_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 - pair_coeff @atom:590_b48_a48_d48_i48 @atom:590_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 - pair_coeff @atom:591_b48_a48_d48_i48 @atom:591_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 - pair_coeff @atom:592_b48_a48_d48_i48 @atom:592_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 - pair_coeff @atom:593_b48_a48_d48_i48 @atom:593_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 - pair_coeff @atom:594_b49_a49_d49_i49 @atom:594_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42 - pair_coeff @atom:595_b49_a49_d49_i49 @atom:595_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42 - pair_coeff @atom:596_b49_a49_d49_i49 @atom:596_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42 - pair_coeff @atom:597_b49_a49_d49_i49 @atom:597_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42 - pair_coeff @atom:598_b57_a57_d57_i57 @atom:598_b57_a57_d57_i57 lj/cut/coul/long 0.17 3.25 - pair_coeff @atom:599_b82_a82_d82_i82 @atom:599_b82_a82_d82_i82 lj/cut/coul/long 0.07 3.55 - pair_coeff @atom:600_b61_a61_d61_i61 @atom:600_b61_a61_d61_i61 lj/cut/coul/long 0.17 3.25 - pair_coeff @atom:601_b83_a83_d83_i83 @atom:601_b83_a83_d83_i83 lj/cut/coul/long 0.07 3.55 - pair_coeff @atom:602_b84_a84_d84_i84 @atom:602_b84_a84_d84_i84 lj/cut/coul/long 0.07 3.55 - pair_coeff @atom:603_b13_a13_d13_i13 @atom:603_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:604_b49_a49_d49_i49 @atom:604_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42 - pair_coeff @atom:605_b49_a49_d49_i49 @atom:605_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42 - pair_coeff @atom:606_b49_a49_d49_i49 @atom:606_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42 - pair_coeff @atom:607_b46_a46_d46_i46 @atom:607_b46_a46_d46_i46 lj/cut/coul/long 0.03 2.5 - pair_coeff @atom:608_b13_a13_d13_i13 @atom:608_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:609_b13_a13_d13_i13 @atom:609_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:610_b13_a13_d13_i13 @atom:610_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:611_b13_a13_d13_i13 @atom:611_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:612_b13_a13_d13_i13 @atom:612_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:613_b13_a13_d13_i13 @atom:613_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:614_b13_a13_d13_i13 @atom:614_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:615_b13_a13_d13_i13 @atom:615_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:616_b13_a13_d13_i13 @atom:616_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:617_b13_a13_d13_i13 @atom:617_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:618_b13_a13_d13_i13 @atom:618_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:619_b13_a13_d13_i13 @atom:619_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:620_b13_a13_d13_i13 @atom:620_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:621_b13_a13_d13_i13 @atom:621_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:622_b13_a13_d13_i13 @atom:622_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:623_b15_a15_d15_i15 @atom:623_b15_a15_d15_i15 lj/cut/coul/long 0.25 3.55 - pair_coeff @atom:624_b17_a17_d17_i17 @atom:624_b17_a17_d17_i17 lj/cut/coul/long 0.0 0.0 - pair_coeff @atom:625_b48_a48_d48_i48 @atom:625_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 - pair_coeff @atom:626_b89_a89_d89_i89 @atom:626_b89_a89_d89_i89 lj/cut/coul/long 0.105 3.75 - pair_coeff @atom:627_b90_a90_d90_i90 @atom:627_b90_a90_d90_i90 lj/cut/coul/long 0.17 3.25 - pair_coeff @atom:628_b91_a91_d91_i91 @atom:628_b91_a91_d91_i91 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:629_b91_a91_d91_i91 @atom:629_b91_a91_d91_i91 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:630_b13_a13_d13_i13 @atom:630_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:631_b86_a86_d86_i86 @atom:631_b86_a86_d86_i86 lj/cut/coul/long 0.07 3.55 - pair_coeff @atom:632_b86_a86_d86_i86 @atom:632_b86_a86_d86_i86 lj/cut/coul/long 0.07 3.55 - pair_coeff @atom:633_b86_a86_d86_i86 @atom:633_b86_a86_d86_i86 lj/cut/coul/long 0.07 3.55 - pair_coeff @atom:634_b86_a86_d86_i86 @atom:634_b86_a86_d86_i86 lj/cut/coul/long 0.07 3.55 - pair_coeff @atom:635_b86_a86_d86_i86 @atom:635_b86_a86_d86_i86 lj/cut/coul/long 0.07 3.55 - pair_coeff @atom:636_b86_a86_d86_i86 @atom:636_b86_a86_d86_i86 lj/cut/coul/long 0.07 3.55 - pair_coeff @atom:637_b16_a16_d16_i16 @atom:637_b16_a16_d16_i16 lj/cut/coul/long 0.25 3.55 - pair_coeff @atom:638_b92_a92_d92_i92 @atom:638_b92_a92_d92_i92 lj/cut/coul/long 0.054 3.473 - pair_coeff @atom:639_b93_a93_d93_i93 @atom:639_b93_a93_d93_i93 lj/cut/coul/long 0.05 3.3 - pair_coeff @atom:640_b94_a94_d94_i94 @atom:640_b94_a94_d94_i94 lj/cut/coul/long 0.05 3.3 - pair_coeff @atom:641_b95_a95_d95_i95 @atom:641_b95_a95_d95_i95 lj/cut/coul/long 0.076 3.55 - pair_coeff @atom:642_b13_a13_d13_i13 @atom:642_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:643_b46_a46_d46_i46 @atom:643_b46_a46_d46_i46 lj/cut/coul/long 0.03 2.5 - pair_coeff @atom:644_b96_a96_d96_i96 @atom:644_b96_a96_d96_i96 lj/cut/coul/long 0.06 3.75 - pair_coeff @atom:645_b97_a97_d97_i97 @atom:645_b97_a97_d97_i97 lj/cut/coul/long 0.054 3.473 - pair_coeff @atom:646_b98_a98_d98_i98 @atom:646_b98_a98_d98_i98 lj/cut/coul/long 0.05 3.3 - pair_coeff @atom:647_b99_a99_d99_i99 @atom:647_b99_a99_d99_i99 lj/cut/coul/long 0.05 3.3 - pair_coeff @atom:648_b100_a100_d100_i100 @atom:648_b100_a100_d100_i100 lj/cut/coul/long 0.04 2.95 - pair_coeff @atom:649_b47_a47_d47_i47 @atom:649_b47_a47_d47_i47 lj/cut/coul/long 0.076 3.55 - pair_coeff @atom:650_b21_a21_d21_i21 @atom:650_b21_a21_d21_i21 lj/cut/coul/long 0.3 3.4 - pair_coeff @atom:651_b46_a46_d46_i46 @atom:651_b46_a46_d46_i46 lj/cut/coul/long 0.03 2.42 - pair_coeff @atom:652_b91_a91_d91_i91 @atom:652_b91_a91_d91_i91 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:653_b91_a91_d91_i91 @atom:653_b91_a91_d91_i91 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:654_b91_a91_d91_i91 @atom:654_b91_a91_d91_i91 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:655_b48_a48_d48_i48 @atom:655_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 - pair_coeff @atom:656_b49_a49_d49_i49 @atom:656_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42 - pair_coeff @atom:657_b48_a48_d48_i48 @atom:657_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 - pair_coeff @atom:658_b49_a49_d49_i49 @atom:658_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42 - pair_coeff @atom:659_b48_a48_d48_i48 @atom:659_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 - pair_coeff @atom:660_b1_a1_d1_i1 @atom:660_b1_a1_d1_i1 lj/cut/coul/long 0.061 2.85 - pair_coeff @atom:661_b48_a48_d48_i48 @atom:661_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 - pair_coeff @atom:662_b1_a1_d1_i1 @atom:662_b1_a1_d1_i1 lj/cut/coul/long 0.061 2.85 - pair_coeff @atom:663_b65_a65_d65_i65 @atom:663_b65_a65_d65_i65 lj/cut/coul/long 0.47 3.47 - pair_coeff @atom:664_b2_a2_d2_i2 @atom:664_b2_a2_d2_i2 lj/cut/coul/long 0.118 3.905 - pair_coeff @atom:665_b48_a48_d48_i48 @atom:665_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 - pair_coeff @atom:666_b13_a13_d13_i13 @atom:666_b13_a13_d13_i13 lj/cut/coul/long 0.062 3.25 - pair_coeff @atom:667_b1_a1_d1_i1 @atom:667_b1_a1_d1_i1 lj/cut/coul/long 0.061 2.94 - pair_coeff @atom:668_b48_a48_d48_i48 @atom:668_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 - pair_coeff @atom:669_b1_a1_d1_i1 @atom:669_b1_a1_d1_i1 lj/cut/coul/long 0.061 2.85 - pair_coeff @atom:670_b48_a48_d48_i48 @atom:670_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 - pair_coeff @atom:671_b65_a65_d65_i65 @atom:671_b65_a65_d65_i65 lj/cut/coul/long 0.47 3.47 - pair_coeff @atom:672_b48_a48_d48_i48 @atom:672_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 - pair_coeff @atom:673_b66_a66_d66_i66 @atom:673_b66_a66_d66_i66 lj/cut/coul/long 0.6 3.75 - pair_coeff @atom:674_b91_a91_d91_i91 @atom:674_b91_a91_d91_i91 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:675_b15_a15_d15_i15 @atom:675_b15_a15_d15_i15 lj/cut/coul/long 0.25 3.55 - pair_coeff @atom:676_b48_a48_d48_i48 @atom:676_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 - pair_coeff @atom:677_b48_a48_d48_i48 @atom:677_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 - pair_coeff @atom:678_b48_a48_d48_i48 @atom:678_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 - pair_coeff @atom:679_b48_a48_d48_i48 @atom:679_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 - pair_coeff @atom:680_b48_a48_d48_i48 @atom:680_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 - pair_coeff @atom:681_b49_a49_d49_i49 @atom:681_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42 - pair_coeff @atom:682_b49_a49_d49_i49 @atom:682_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42 - pair_coeff @atom:683_b48_a48_d48_i48 @atom:683_b48_a48_d48_i48 lj/cut/coul/long 0.05 3.55 - pair_coeff @atom:684_b55_a55_d55_i55 @atom:684_b55_a55_d55_i55 lj/cut/coul/long 0.17 3.25 - pair_coeff @atom:685_b45_a45_d45_i45 @atom:685_b45_a45_d45_i45 lj/cut/coul/long 0.0 0.0 - pair_coeff @atom:686_b45_a45_d45_i45 @atom:686_b45_a45_d45_i45 lj/cut/coul/long 0.0 0.0 - pair_coeff @atom:687_b49_a49_d49_i49 @atom:687_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42 - pair_coeff @atom:688_b13_a13_d13_i13 @atom:688_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:689_b13_a13_d13_i13 @atom:689_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:690_b101_a101_d101_i101 @atom:690_b101_a101_d101_i101 lj/cut/coul/long 0.17 3.25 - pair_coeff @atom:691_b56_a56_d56_i56 @atom:691_b56_a56_d56_i56 lj/cut/coul/long 0.17 3.25 - pair_coeff @atom:692_b101_a101_d101_i101 @atom:692_b101_a101_d101_i101 lj/cut/coul/long 0.17 3.25 - pair_coeff @atom:693_b48_a48_d48_i48 @atom:693_b48_a48_d48_i48 lj/cut/coul/long 0.05 3.55 - pair_coeff @atom:694_b18_a18_d18_i18 @atom:694_b18_a18_d18_i18 lj/cut/coul/long 0.17 3.2 - pair_coeff @atom:695_b19_a19_d19_i19 @atom:695_b19_a19_d19_i19 lj/cut/coul/long 0.066 3.3 - pair_coeff @atom:696_b13_a13_d13_i13 @atom:696_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.3 - pair_coeff @atom:697_b13_a13_d13_i13 @atom:697_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.3 - pair_coeff @atom:698_b13_a13_d13_i13 @atom:698_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.3 - pair_coeff @atom:699_b13_a13_d13_i13 @atom:699_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.3 - pair_coeff @atom:700_b46_a46_d46_i46 @atom:700_b46_a46_d46_i46 lj/cut/coul/long 0.015 2.5 - pair_coeff @atom:701_b102_a102_d102_i102 @atom:701_b102_a102_d102_i102 lj/cut/coul/long 0.12 3.25 - pair_coeff @atom:702_b103_a103_d103_i103 @atom:702_b103_a103_d103_i103 lj/cut/coul/long 0.17 2.96 - pair_coeff @atom:703_b13_a13_d13_i13 @atom:703_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:704_b46_a46_d46_i46 @atom:704_b46_a46_d46_i46 lj/cut/coul/long 0.015 2.5 - pair_coeff @atom:705_b13_a13_d13_i13 @atom:705_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:706_b13_a13_d13_i13 @atom:706_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:707_b13_a13_d13_i13 @atom:707_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:708_b102_a102_d102_i102 @atom:708_b102_a102_d102_i102 lj/cut/coul/long 0.12 3.25 - pair_coeff @atom:709_b48_a48_d48_i48 @atom:709_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 - pair_coeff @atom:710_b13_a13_d13_i13 @atom:710_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.3 - pair_coeff @atom:711_b56_a56_d56_i56 @atom:711_b56_a56_d56_i56 lj/cut/coul/long 0.17 3.25 - pair_coeff @atom:712_b4_a4_d4_i4 @atom:712_b4_a4_d4_i4 lj/cut/coul/long 0.21 2.96 - pair_coeff @atom:713_b3_a3_d3_i3 @atom:713_b3_a3_d3_i3 lj/cut/coul/long 0.105 3.75 - pair_coeff @atom:714_b20_a20_d20_i20 @atom:714_b20_a20_d20_i20 lj/cut/coul/long 0.17 3.0 - pair_coeff @atom:715_b13_a13_d13_i13 @atom:715_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:716_b13_a13_d13_i13 @atom:716_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:717_b13_a13_d13_i13 @atom:717_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:718_b46_a46_d46_i46 @atom:718_b46_a46_d46_i46 lj/cut/coul/long 0.015 2.42 - pair_coeff @atom:719_b46_a46_d46_i46 @atom:719_b46_a46_d46_i46 lj/cut/coul/long 0.015 2.42 - pair_coeff @atom:720_b46_a46_d46_i46 @atom:720_b46_a46_d46_i46 lj/cut/coul/long 0.015 2.42 - pair_coeff @atom:721_b20_a20_d20_i20 @atom:721_b20_a20_d20_i20 lj/cut/coul/long 0.14 2.9 - pair_coeff @atom:722_b104_a104_d104_i104 @atom:722_b104_a104_d104_i104 lj/cut/coul/long 0.2 3.74 - pair_coeff @atom:723_b13_a13_d13_i13 @atom:723_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:724_b13_a13_d13_i13 @atom:724_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:725_b46_a46_d46_i46 @atom:725_b46_a46_d46_i46 lj/cut/coul/long 0.03 2.5 - pair_coeff @atom:726_b64_a64_d64_i64 @atom:726_b64_a64_d64_i64 lj/cut/coul/long 0.2 3.74 - pair_coeff @atom:727_b1_a1_d1_i1 @atom:727_b1_a1_d1_i1 lj/cut/coul/long 0.061 3.1181 - pair_coeff @atom:728_b24_a24_d24_i24 @atom:728_b24_a24_d24_i24 lj/cut/coul/long 0.17 3.15 - pair_coeff @atom:729_b4_a4_d4_i4 @atom:729_b4_a4_d4_i4 lj/cut/coul/long 0.21 2.86 - pair_coeff @atom:730_b44_a44_d44_i44 @atom:730_b44_a44_d44_i44 lj/cut/coul/long 0.17 3.3 - pair_coeff @atom:731_b44_a44_d44_i44 @atom:731_b44_a44_d44_i44 lj/cut/coul/long 0.17 3.3 - pair_coeff @atom:732_b44_a44_d44_i44 @atom:732_b44_a44_d44_i44 lj/cut/coul/long 0.17 3.3 - pair_coeff @atom:733_b13_a13_d13_i13 @atom:733_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:734_b13_a13_d13_i13 @atom:734_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:735_b13_a13_d13_i13 @atom:735_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:736_b13_a13_d13_i13 @atom:736_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:737_b13_a13_d13_i13 @atom:737_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:738_b13_a13_d13_i13 @atom:738_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:739_b45_a45_d45_i45 @atom:739_b45_a45_d45_i45 lj/cut/coul/long 0.0 0.0 - pair_coeff @atom:740_b45_a45_d45_i45 @atom:740_b45_a45_d45_i45 lj/cut/coul/long 0.0 0.0 - pair_coeff @atom:741_b46_a46_d46_i46 @atom:741_b46_a46_d46_i46 lj/cut/coul/long 0.015 2.5 - pair_coeff @atom:742_b13_a13_d13_i13 @atom:742_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:743_b13_a13_d13_i13 @atom:743_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:744_b13_a13_d13_i13 @atom:744_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:745_b13_a13_d13_i13 @atom:745_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:746_b48_a48_d48_i48 @atom:746_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 - pair_coeff @atom:747_b48_a48_d48_i48 @atom:747_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 - pair_coeff @atom:748_b48_a48_d48_i48 @atom:748_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 - pair_coeff @atom:749_b13_a13_d13_i13 @atom:749_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:750_b13_a13_d13_i13 @atom:750_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:751_b13_a13_d13_i13 @atom:751_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:752_b13_a13_d13_i13 @atom:752_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:753_b13_a13_d13_i13 @atom:753_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:754_b13_a13_d13_i13 @atom:754_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:755_b19_a19_d19_i19 @atom:755_b19_a19_d19_i19 lj/cut/coul/long 0.086 3.3 - pair_coeff @atom:756_b46_a46_d46_i46 @atom:756_b46_a46_d46_i46 lj/cut/coul/long 0.015 2.42 - pair_coeff @atom:757_b19_a19_d19_i19 @atom:757_b19_a19_d19_i19 lj/cut/coul/long 0.21 3.3 - pair_coeff @atom:758_b19_a19_d19_i19 @atom:758_b19_a19_d19_i19 lj/cut/coul/long 0.135 3.3 - pair_coeff @atom:759_b19_a19_d19_i19 @atom:759_b19_a19_d19_i19 lj/cut/coul/long 0.1 3.3 - pair_coeff @atom:760_b46_a46_d46_i46 @atom:760_b46_a46_d46_i46 lj/cut/coul/long 0.015 2.5 - pair_coeff @atom:761_b51_a51_d51_i51 @atom:761_b51_a51_d51_i51 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:762_b51_a51_d51_i51 @atom:762_b51_a51_d51_i51 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:763_b51_a51_d51_i51 @atom:763_b51_a51_d51_i51 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:764_b5_a5_d5_i5 @atom:764_b5_a5_d5_i5 lj/cut/coul/long 0.17 3.12 - pair_coeff @atom:765_b7_a7_d7_i7 @atom:765_b7_a7_d7_i7 lj/cut/coul/long 0.0 0.0 - pair_coeff @atom:766_b105_a105_d105_i105 @atom:766_b105_a105_d105_i105 lj/cut/coul/long 0.17 3.25 - pair_coeff @atom:767_b105_a105_d105_i105 @atom:767_b105_a105_d105_i105 lj/cut/coul/long 0.17 3.25 - pair_coeff @atom:768_b105_a105_d105_i105 @atom:768_b105_a105_d105_i105 lj/cut/coul/long 0.17 3.25 - pair_coeff @atom:769_b19_a19_d19_i19 @atom:769_b19_a19_d19_i19 lj/cut/coul/long 0.21 3.3 - pair_coeff @atom:770_b53_a53_d53_i53 @atom:770_b53_a53_d53_i53 lj/cut/coul/long 0.17 3.25 - pair_coeff @atom:771_b54_a54_d54_i54 @atom:771_b54_a54_d54_i54 lj/cut/coul/long 0.0 0.0 - pair_coeff @atom:772_b13_a13_d13_i13 @atom:772_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:773_b13_a13_d13_i13 @atom:773_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:774_b13_a13_d13_i13 @atom:774_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:775_b13_a13_d13_i13 @atom:775_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:776_b84_a84_d84_i84 @atom:776_b84_a84_d84_i84 lj/cut/coul/long 0.07 3.55 - pair_coeff @atom:777_b87_a87_d87_i87 @atom:777_b87_a87_d87_i87 lj/cut/coul/long 0.076 3.55 - pair_coeff @atom:778_b86_a86_d86_i86 @atom:778_b86_a86_d86_i86 lj/cut/coul/long 0.07 3.55 - pair_coeff @atom:779_b86_a86_d86_i86 @atom:779_b86_a86_d86_i86 lj/cut/coul/long 0.07 3.55 - pair_coeff @atom:780_b46_a46_d46_i46 @atom:780_b46_a46_d46_i46 lj/cut/coul/long 0.03 2.5 - pair_coeff @atom:781_b13_a13_d13_i13 @atom:781_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:782_b3_a3_d3_i3 @atom:782_b3_a3_d3_i3 lj/cut/coul/long 0.105 3.75 - pair_coeff @atom:783_b53_a53_d53_i53 @atom:783_b53_a53_d53_i53 lj/cut/coul/long 0.17 3.25 - pair_coeff @atom:784_b52_a52_d52_i52 @atom:784_b52_a52_d52_i52 lj/cut/coul/long 0.21 2.96 - pair_coeff @atom:785_b54_a54_d54_i54 @atom:785_b54_a54_d54_i54 lj/cut/coul/long 0.0 0.0 - pair_coeff @atom:786_b1_a1_d1_i1 @atom:786_b1_a1_d1_i1 lj/cut/coul/long 0.061 2.94 - pair_coeff @atom:787_b13_a13_d13_i13 @atom:787_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:788_b46_a46_d46_i46 @atom:788_b46_a46_d46_i46 lj/cut/coul/long 0.03 2.5 - pair_coeff @atom:789_b13_a13_d13_i13 @atom:789_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:790_b13_a13_d13_i13 @atom:790_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:791_b13_a13_d13_i13 @atom:791_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:792_b13_a13_d13_i13 @atom:792_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:793_b13_a13_d13_i13 @atom:793_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:794_b13_a13_d13_i13 @atom:794_b13_a13_d13_i13 lj/cut/coul/long 0.097 3.5 - pair_coeff @atom:795_b1_a1_d1_i1 @atom:795_b1_a1_d1_i1 lj/cut/coul/long 0.053 2.95 - pair_coeff @atom:796_b13_a13_d13_i13 @atom:796_b13_a13_d13_i13 lj/cut/coul/long 0.062 3.25 - pair_coeff @atom:797_b46_a46_d46_i46 @atom:797_b46_a46_d46_i46 lj/cut/coul/long 0.03 2.5 - pair_coeff @atom:798_b13_a13_d13_i13 @atom:798_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:799_b13_a13_d13_i13 @atom:799_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:800_b21_a21_d21_i21 @atom:800_b21_a21_d21_i21 lj/cut/coul/long 0.3 3.4 - pair_coeff @atom:801_b13_a13_d13_i13 @atom:801_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:802_b46_a46_d46_i46 @atom:802_b46_a46_d46_i46 lj/cut/coul/long 0.03 2.5 - pair_coeff @atom:803_b13_a13_d13_i13 @atom:803_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:804_b13_a13_d13_i13 @atom:804_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:805_b65_a65_d65_i65 @atom:805_b65_a65_d65_i65 lj/cut/coul/long 0.47 3.47 - pair_coeff @atom:806_b13_a13_d13_i13 @atom:806_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:807_b46_a46_d46_i46 @atom:807_b46_a46_d46_i46 lj/cut/coul/long 0.03 2.5 - pair_coeff @atom:808_b13_a13_d13_i13 @atom:808_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:809_b13_a13_d13_i13 @atom:809_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:810_b1_a1_d1_i1 @atom:810_b1_a1_d1_i1 lj/cut/coul/long 0.061 2.94 - pair_coeff @atom:811_b21_a21_d21_i21 @atom:811_b21_a21_d21_i21 lj/cut/coul/long 0.3 3.4 - pair_coeff @atom:812_b65_a65_d65_i65 @atom:812_b65_a65_d65_i65 lj/cut/coul/long 0.47 3.47 - pair_coeff @atom:813_b48_a48_d48_i48 @atom:813_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 - pair_coeff @atom:814_b20_a20_d20_i20 @atom:814_b20_a20_d20_i20 lj/cut/coul/long 0.14 2.9 - pair_coeff @atom:815_b13_a13_d13_i13 @atom:815_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:816_b1_a1_d1_i1 @atom:816_b1_a1_d1_i1 lj/cut/coul/long 0.06 2.9 - pair_coeff @atom:817_b24_a24_d24_i24 @atom:817_b24_a24_d24_i24 lj/cut/coul/long 0.17 3.25 - pair_coeff @atom:818_b48_a48_d48_i48 @atom:818_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 - pair_coeff @atom:819_b13_a13_d13_i13 @atom:819_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:820_b3_a3_d3_i3 @atom:820_b3_a3_d3_i3 lj/cut/coul/long 0.105 3.75 - pair_coeff @atom:821_b3_a3_d3_i3 @atom:821_b3_a3_d3_i3 lj/cut/coul/long 0.105 3.75 - pair_coeff @atom:822_b4_a4_d4_i4 @atom:822_b4_a4_d4_i4 lj/cut/coul/long 0.21 2.96 - pair_coeff @atom:823_b24_a24_d24_i24 @atom:823_b24_a24_d24_i24 lj/cut/coul/long 0.17 3.25 - pair_coeff @atom:824_b45_a45_d45_i45 @atom:824_b45_a45_d45_i45 lj/cut/coul/long 0.0 0.0 - pair_coeff @atom:825_b5_a5_d5_i5 @atom:825_b5_a5_d5_i5 lj/cut/coul/long 0.17 3.12 - pair_coeff @atom:826_b7_a7_d7_i7 @atom:826_b7_a7_d7_i7 lj/cut/coul/long 0.0 0.0 - pair_coeff @atom:827_b13_a13_d13_i13 @atom:827_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:828_b13_a13_d13_i13 @atom:828_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:829_b86_a86_d86_i86 @atom:829_b86_a86_d86_i86 lj/cut/coul/long 0.07 3.55 - pair_coeff @atom:830_b86_a86_d86_i86 @atom:830_b86_a86_d86_i86 lj/cut/coul/long 0.07 3.55 - pair_coeff @atom:831_b86_a86_d86_i86 @atom:831_b86_a86_d86_i86 lj/cut/coul/long 0.07 3.55 - pair_coeff @atom:832_b86_a86_d86_i86 @atom:832_b86_a86_d86_i86 lj/cut/coul/long 0.07 3.55 - pair_coeff @atom:833_b48_a48_d48_i48 @atom:833_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 - pair_coeff @atom:834_b106_a106_d106_i106 @atom:834_b106_a106_d106_i106 lj/cut/coul/long 0.0125 1.96 - pair_coeff @atom:835_b13_a13_d13_i13 @atom:835_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:836_b13_a13_d13_i13 @atom:836_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:837_b13_a13_d13_i13 @atom:837_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:838_b66_a66_d66_i66 @atom:838_b66_a66_d66_i66 lj/cut/coul/long 0.6 3.75 - pair_coeff @atom:839_b46_a46_d46_i46 @atom:839_b46_a46_d46_i46 lj/cut/coul/long 0.03 2.5 - pair_coeff @atom:840_b24_a24_d24_i24 @atom:840_b24_a24_d24_i24 lj/cut/coul/long 0.17 3.25 - pair_coeff @atom:841_b48_a48_d48_i48 @atom:841_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 - pair_coeff @atom:842_b48_a48_d48_i48 @atom:842_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 - pair_coeff @atom:843_b24_a24_d24_i24 @atom:843_b24_a24_d24_i24 lj/cut/coul/long 0.17 3.25 - pair_coeff @atom:844_b48_a48_d48_i48 @atom:844_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 - pair_coeff @atom:845_b3_a3_d3_i3 @atom:845_b3_a3_d3_i3 lj/cut/coul/long 0.105 3.75 - pair_coeff @atom:846_b4_a4_d4_i4 @atom:846_b4_a4_d4_i4 lj/cut/coul/long 0.21 2.96 - pair_coeff @atom:847_b107_a107_d107_i107 @atom:847_b107_a107_d107_i107 lj/cut/coul/long 0.17 3.25 - pair_coeff @atom:848_b13_a13_d13_i13 @atom:848_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:849_b13_a13_d13_i13 @atom:849_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:850_b13_a13_d13_i13 @atom:850_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:851_b13_a13_d13_i13 @atom:851_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:852_b46_a46_d46_i46 @atom:852_b46_a46_d46_i46 lj/cut/coul/long 0.015 2.42 - pair_coeff @atom:853_b3_a3_d3_i3 @atom:853_b3_a3_d3_i3 lj/cut/coul/long 0.105 3.75 - pair_coeff @atom:854_b4_a4_d4_i4 @atom:854_b4_a4_d4_i4 lj/cut/coul/long 0.21 2.96 - pair_coeff @atom:855_b46_a46_d46_i46 @atom:855_b46_a46_d46_i46 lj/cut/coul/long 0.015 2.42 - pair_coeff @atom:856_b13_a13_d13_i13 @atom:856_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:857_b13_a13_d13_i13 @atom:857_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:858_b13_a13_d13_i13 @atom:858_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:859_b13_a13_d13_i13 @atom:859_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:860_b13_a13_d13_i13 @atom:860_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:861_b13_a13_d13_i13 @atom:861_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:862_b13_a13_d13_i13 @atom:862_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:863_b13_a13_d13_i13 @atom:863_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:864_b13_a13_d13_i13 @atom:864_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:865_b13_a13_d13_i13 @atom:865_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:866_b108_a108_d108_i108 @atom:866_b108_a108_d108_i108 lj/cut/coul/long 0.1 4.0 - pair_coeff @atom:867_b108_a108_d108_i108 @atom:867_b108_a108_d108_i108 lj/cut/coul/long 0.1 4.0 - pair_coeff @atom:868_b108_a108_d108_i108 @atom:868_b108_a108_d108_i108 lj/cut/coul/long 0.1 4.0 - pair_coeff @atom:869_b108_a108_d108_i108 @atom:869_b108_a108_d108_i108 lj/cut/coul/long 0.1 4.0 - pair_coeff @atom:870_b45_a45_d45_i45 @atom:870_b45_a45_d45_i45 lj/cut/coul/long 0.03 2.5 - pair_coeff @atom:871_b13_a13_d13_i13 @atom:871_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:872_b13_a13_d13_i13 @atom:872_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:873_b13_a13_d13_i13 @atom:873_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:874_b13_a13_d13_i13 @atom:874_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:875_b1_a1_d1_i1 @atom:875_b1_a1_d1_i1 lj/cut/coul/long 0.72 3.08 - pair_coeff @atom:876_b21_a21_d21_i21 @atom:876_b21_a21_d21_i21 lj/cut/coul/long 0.11779 4.18 - pair_coeff @atom:877_b65_a65_d65_i65 @atom:877_b65_a65_d65_i65 lj/cut/coul/long 0.09 4.51 - pair_coeff @atom:878_b66_a66_d66_i66 @atom:878_b66_a66_d66_i66 lj/cut/coul/long 0.07 5.15 - pair_coeff @atom:879_b68_a68_d68_i68 @atom:879_b68_a68_d68_i68 lj/cut/coul/long 0.018279 2.7 - pair_coeff @atom:880_b69_a69_d69_i69 @atom:880_b69_a69_d69_i69 lj/cut/coul/long 0.002772 3.35 - pair_coeff @atom:881_b70_a70_d70_i70 @atom:881_b70_a70_d70_i70 lj/cut/coul/long 0.000328 4.06 - pair_coeff @atom:882_b71_a71_d71_i71 @atom:882_b71_a71_d71_i71 lj/cut/coul/long 0.000171 4.32 - pair_coeff @atom:883_b72_a72_d72_i72 @atom:883_b72_a72_d72_i72 lj/cut/coul/long 8.1e-05 4.82 - pair_coeff @atom:884_b73_a73_d73_i73 @atom:884_b73_a73_d73_i73 lj/cut/coul/long 0.875044 2.91 - pair_coeff @atom:885_b74_a74_d74_i74 @atom:885_b74_a74_d74_i74 lj/cut/coul/long 0.449657 3.47 - pair_coeff @atom:886_b75_a75_d75_i75 @atom:886_b75_a75_d75_i75 lj/cut/coul/long 0.118226 3.82 - pair_coeff @atom:887_b76_a76_d76_i76 @atom:887_b76_a76_d76_i76 lj/cut/coul/long 0.047096 4.18 - pair_coeff @atom:888_b13_a13_d13_i13 @atom:888_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:889_b13_a13_d13_i13 @atom:889_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:890_b13_a13_d13_i13 @atom:890_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:891_b13_a13_d13_i13 @atom:891_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - pair_coeff @atom:892_b46_a46_d46_i46 @atom:892_b46_a46_d46_i46 lj/cut/coul/long 0.03 2.5 - pair_coeff @atom:893_b53_a53_d53_i53 @atom:893_b53_a53_d53_i53 lj/cut/coul/long 0.17 3.25 - pair_coeff @atom:894_b48_a48_d48_i48 @atom:894_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 - pair_coeff @atom:895_b53_a53_d53_i53 @atom:895_b53_a53_d53_i53 lj/cut/coul/long 0.17 3.25 - pair_coeff @atom:896_b48_a48_d48_i48 @atom:896_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 - pair_coeff @atom:897_b109_a109_d109_i109 @atom:897_b109_a109_d109_i109 lj/cut/coul/long 0.076 3.55 - pair_coeff @atom:898_b109_a109_d109_i109 @atom:898_b109_a109_d109_i109 lj/cut/coul/long 0.076 3.55 - pair_coeff @atom:899_b46_a46_d46_i46 @atom:899_b46_a46_d46_i46 lj/cut/coul/long 0.03 2.42 - pair_coeff @atom:900_b47_a47_d47_i47 @atom:900_b47_a47_d47_i47 lj/cut/coul/long 0.086 3.3 - pair_coeff @atom:901_b47_a47_d47_i47 @atom:901_b47_a47_d47_i47 lj/cut/coul/long 0.086 3.3 - pair_coeff @atom:902_b47_a47_d47_i47 @atom:902_b47_a47_d47_i47 lj/cut/coul/long 0.086 3.3 - pair_coeff @atom:903_b110_a110_d110_i110 @atom:903_b110_a110_d110_i110 lj/cut/coul/long 0.086 3.3 - pair_coeff @atom:904_b110_a110_d110_i110 @atom:904_b110_a110_d110_i110 lj/cut/coul/long 0.086 3.3 - pair_coeff @atom:905_b4_a4_d4_i4 @atom:905_b4_a4_d4_i4 lj/cut/coul/long 0.21 2.96 - pair_coeff @atom:906_b13_a13_d13_i13 @atom:906_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 - } #(end of pair_coeffs) - + # ---------- EQUIVALENCE CATEGORIES for bonded interaction lookup ---------- + # Each type of atom has a separate ID used for looking up bond parameters + # and a separate ID for looking up 3-body angle interaction parameters + # and a separate ID for looking up 4-body dihedral interaction parameters + # and a separate ID for looking up 4-body improper interaction parameters + # The complete @atom type name includes ALL of these ID numbers. There's + # no need to force the end-user to type the complete name of each atom. + # The "replace" command used below informs moltemplate that the short + # @atom names we have been using abovee are equivalent to the complete + # @atom names used below: - # ------- force-field-IDs for bonded interaction lookup ------- - # (First append the "force-field-ID" to the atom type name. - # Later use these expanded names for force-field lookup.) replace{ @atom:1 @atom:1_b1_a1_d1_i1 } replace{ @atom:2 @atom:2_b2_a2_d2_i2 } replace{ @atom:3 @atom:3_b3_a3_d3_i3 } @@ -3661,9 +2766,931 @@ OPLSAA { replace{ @atom:904 @atom:904_b110_a110_d110_i110 } replace{ @atom:905 @atom:905_b4_a4_d4_i4 } replace{ @atom:906 @atom:906_b13_a13_d13_i13 } - #(end of force-field-IDs) + + + # --------------- Non-Bonded interactions: --------------------- + # http://lammps.sandia.gov/doc/pair_lj.html + # Syntax: + # pair_coeff AtomType1 AtomType2 pair_style_name parameters... + + write_once("In Settings") { + pair_coeff @atom:1_b1_a1_d1_i1 @atom:1_b1_a1_d1_i1 lj/cut/coul/long 0.061 2.94 + pair_coeff @atom:2_b2_a2_d2_i2 @atom:2_b2_a2_d2_i2 lj/cut/coul/long 0.118 3.905 + pair_coeff @atom:3_b3_a3_d3_i3 @atom:3_b3_a3_d3_i3 lj/cut/coul/long 0.105 3.75 + pair_coeff @atom:4_b4_a4_d4_i4 @atom:4_b4_a4_d4_i4 lj/cut/coul/long 0.21 2.96 + pair_coeff @atom:5_b5_a5_d5_i5 @atom:5_b5_a5_d5_i5 lj/cut/coul/long 0.17 3.0 + pair_coeff @atom:6_b6_a6_d6_i6 @atom:6_b6_a6_d6_i6 lj/cut/coul/long 0.16 3.91 + pair_coeff @atom:7_b7_a7_d7_i7 @atom:7_b7_a7_d7_i7 lj/cut/coul/long 0.0 0.0 + pair_coeff @atom:8_b8_a8_d8_i8 @atom:8_b8_a8_d8_i8 lj/cut/coul/long 0.294 3.73 + pair_coeff @atom:9_b6_a6_d6_i6 @atom:9_b6_a6_d6_i6 lj/cut/coul/long 0.207 3.775 + pair_coeff @atom:10_b6_a6_d6_i6 @atom:10_b6_a6_d6_i6 lj/cut/coul/long 0.175 3.905 + pair_coeff @atom:11_b6_a6_d6_i6 @atom:11_b6_a6_d6_i6 lj/cut/coul/long 0.16 3.91 + pair_coeff @atom:12_b6_a6_d6_i6 @atom:12_b6_a6_d6_i6 lj/cut/coul/long 0.145 3.96 + pair_coeff @atom:13_b2_a2_d2_i2 @atom:13_b2_a2_d2_i2 lj/cut/coul/long 0.118 3.905 + pair_coeff @atom:14_b9_a9_d9_i9 @atom:14_b9_a9_d9_i9 lj/cut/coul/long 0.14 3.85 + pair_coeff @atom:15_b10_a10_d10_i10 @atom:15_b10_a10_d10_i10 lj/cut/coul/long 0.08 3.85 + pair_coeff @atom:16_b11_a11_d11_i11 @atom:16_b11_a11_d11_i11 lj/cut/coul/long 0.115 3.8 + pair_coeff @atom:17_b12_a12_d12_i12 @atom:17_b12_a12_d12_i12 lj/cut/coul/long 0.11 3.75 + pair_coeff @atom:18_b13_a13_d13_i13 @atom:18_b13_a13_d13_i13 lj/cut/coul/long 0.05 3.8 + pair_coeff @atom:19_b14_a14_d14_i14 @atom:19_b14_a14_d14_i14 lj/cut/coul/long 0.105 3.75 + pair_coeff @atom:20_b5_a5_d5_i5 @atom:20_b5_a5_d5_i5 lj/cut/coul/long 0.17 3.07 + pair_coeff @atom:21_b7_a7_d7_i7 @atom:21_b7_a7_d7_i7 lj/cut/coul/long 0.0 0.0 + pair_coeff @atom:22_b6_a6_d6_i6 @atom:22_b6_a6_d6_i6 lj/cut/coul/long 0.207 3.775 + pair_coeff @atom:23_b2_a2_d2_i2 @atom:23_b2_a2_d2_i2 lj/cut/coul/long 0.118 3.905 + pair_coeff @atom:24_b15_a15_d15_i15 @atom:24_b15_a15_d15_i15 lj/cut/coul/long 0.25 3.7 + pair_coeff @atom:25_b15_a15_d15_i15 @atom:25_b15_a15_d15_i15 lj/cut/coul/long 0.25 3.55 + pair_coeff @atom:26_b16_a16_d16_i16 @atom:26_b16_a16_d16_i16 lj/cut/coul/long 0.25 3.55 + pair_coeff @atom:27_b16_a16_d16_i16 @atom:27_b16_a16_d16_i16 lj/cut/coul/long 0.25 3.55 + pair_coeff @atom:28_b17_a17_d17_i17 @atom:28_b17_a17_d17_i17 lj/cut/coul/long 0.0 0.0 + pair_coeff @atom:29_b17_a17_d17_i17 @atom:29_b17_a17_d17_i17 lj/cut/coul/long 0.0 0.0 + pair_coeff @atom:30_b6_a6_d6_i6 @atom:30_b6_a6_d6_i6 lj/cut/coul/long 0.207 3.775 + pair_coeff @atom:31_b2_a2_d2_i2 @atom:31_b2_a2_d2_i2 lj/cut/coul/long 0.118 3.905 + pair_coeff @atom:32_b6_a6_d6_i6 @atom:32_b6_a6_d6_i6 lj/cut/coul/long 0.17 3.8 + pair_coeff @atom:33_b2_a2_d2_i2 @atom:33_b2_a2_d2_i2 lj/cut/coul/long 0.118 3.8 + pair_coeff @atom:34_b6_a6_d6_i6 @atom:34_b6_a6_d6_i6 lj/cut/coul/long 0.17 3.8 + pair_coeff @atom:35_b2_a2_d2_i2 @atom:35_b2_a2_d2_i2 lj/cut/coul/long 0.118 3.8 + pair_coeff @atom:36_b18_a18_d18_i18 @atom:36_b18_a18_d18_i18 lj/cut/coul/long 0.17 3.2 + pair_coeff @atom:37_b19_a19_d19_i19 @atom:37_b19_a19_d19_i19 lj/cut/coul/long 0.15 3.65 + pair_coeff @atom:38_b6_a6_d6_i6 @atom:38_b6_a6_d6_i6 lj/cut/coul/long 0.207 3.775 + pair_coeff @atom:39_b10_a10_d10_i10 @atom:39_b10_a10_d10_i10 lj/cut/coul/long 0.08 3.85 + pair_coeff @atom:40_b13_a13_d13_i13 @atom:40_b13_a13_d13_i13 lj/cut/coul/long 0.05 3.8 + pair_coeff @atom:41_b20_a20_d20_i20 @atom:41_b20_a20_d20_i20 lj/cut/coul/long 0.17 3.0 + pair_coeff @atom:42_b6_a6_d6_i6 @atom:42_b6_a6_d6_i6 lj/cut/coul/long 0.17 3.8 + pair_coeff @atom:43_b2_a2_d2_i2 @atom:43_b2_a2_d2_i2 lj/cut/coul/long 0.118 3.8 + pair_coeff @atom:44_b2_a2_d2_i2 @atom:44_b2_a2_d2_i2 lj/cut/coul/long 0.118 3.8 + pair_coeff @atom:45_b21_a21_d21_i21 @atom:45_b21_a21_d21_i21 lj/cut/coul/long 0.3 3.4 + pair_coeff @atom:46_b10_a10_d10_i10 @atom:46_b10_a10_d10_i10 lj/cut/coul/long 0.08 3.8 + pair_coeff @atom:47_b21_a21_d21_i21 @atom:47_b21_a21_d21_i21 lj/cut/coul/long 0.3 3.47 + pair_coeff @atom:48_b13_a13_d13_i13 @atom:48_b13_a13_d13_i13 lj/cut/coul/long 0.05 3.8 + pair_coeff @atom:49_b21_a21_d21_i21 @atom:49_b21_a21_d21_i21 lj/cut/coul/long 0.266 3.47 + pair_coeff @atom:50_b22_a22_d22_i22 @atom:50_b22_a22_d22_i22 lj/cut/coul/long 0.395 3.56 + pair_coeff @atom:51_b23_a23_d23_i23 @atom:51_b23_a23_d23_i23 lj/cut/coul/long 0.28 2.93 + pair_coeff @atom:52_b6_a6_d6_i6 @atom:52_b6_a6_d6_i6 lj/cut/coul/long 0.16 3.81 + pair_coeff @atom:53_b4_a4_d4_i4 @atom:53_b4_a4_d4_i4 lj/cut/coul/long 0.21 2.96 + pair_coeff @atom:54_b24_a24_d24_i24 @atom:54_b24_a24_d24_i24 lj/cut/coul/long 0.17 3.25 + pair_coeff @atom:55_b3_a3_d3_i3 @atom:55_b3_a3_d3_i3 lj/cut/coul/long 0.115 3.8 + pair_coeff @atom:56_b6_a6_d6_i6 @atom:56_b6_a6_d6_i6 lj/cut/coul/long 0.17 3.8 + pair_coeff @atom:57_b25_a25_d25_i25 @atom:57_b25_a25_d25_i25 lj/cut/coul/long 0.0 0.0 + pair_coeff @atom:58_b26_a26_d26_i26 @atom:58_b26_a26_d26_i26 lj/cut/coul/long 0.02 2.556 + pair_coeff @atom:59_b27_a27_d27_i27 @atom:59_b27_a27_d27_i27 lj/cut/coul/long 0.069 2.78 + pair_coeff @atom:60_b28_a28_d28_i28 @atom:60_b28_a28_d28_i28 lj/cut/coul/long 0.2339 3.401 + pair_coeff @atom:61_b29_a29_d29_i29 @atom:61_b29_a29_d29_i29 lj/cut/coul/long 0.317 3.624 + pair_coeff @atom:62_b30_a30_d30_i30 @atom:62_b30_a30_d30_i30 lj/cut/coul/long 0.433 3.935 + pair_coeff @atom:63_b31_a31_d31_i31 @atom:63_b31_a31_d31_i31 lj/cut/coul/long 0.1521 3.15061 + pair_coeff @atom:64_b32_a32_d32_i32 @atom:64_b32_a32_d32_i32 lj/cut/coul/long 0.0 0.0 + pair_coeff @atom:65_b31_a31_d31_i31 @atom:65_b31_a31_d31_i31 lj/cut/coul/long 0.155 3.15365 + pair_coeff @atom:66_b32_a32_d32_i32 @atom:66_b32_a32_d32_i32 lj/cut/coul/long 0.0 0.0 + pair_coeff @atom:67_b33_a33_d33_i33 @atom:67_b33_a33_d33_i33 lj/cut/coul/long 0.0 0.0 + pair_coeff @atom:68_b34_a34_d34_i34 @atom:68_b34_a34_d34_i34 lj/cut/coul/long 0.15 3.176 + pair_coeff @atom:69_b35_a35_d35_i35 @atom:69_b35_a35_d35_i35 lj/cut/coul/long 0.0 0.0 + pair_coeff @atom:70_b36_a36_d36_i36 @atom:70_b36_a36_d36_i36 lj/cut/coul/long 0.1 3.27 + pair_coeff @atom:71_b37_a37_d37_i37 @atom:71_b37_a37_d37_i37 lj/cut/coul/long 0.0 0.0 + pair_coeff @atom:72_b38_a38_d38_i38 @atom:72_b38_a38_d38_i38 lj/cut/coul/long 0.0 0.0 + pair_coeff @atom:73_b39_a39_d39_i39 @atom:73_b39_a39_d39_i39 lj/cut/coul/long 0.16 3.12 + pair_coeff @atom:74_b40_a40_d40_i40 @atom:74_b40_a40_d40_i40 lj/cut/coul/long 0.0 0.0 + pair_coeff @atom:75_b41_a41_d41_i41 @atom:75_b41_a41_d41_i41 lj/cut/coul/long 0.0 0.0 + pair_coeff @atom:76_b42_a42_d42_i42 @atom:76_b42_a42_d42_i42 lj/cut/coul/long 0.1554 3.16557 + pair_coeff @atom:77_b43_a43_d43_i43 @atom:77_b43_a43_d43_i43 lj/cut/coul/long 0.0 0.0 + pair_coeff @atom:78_b44_a44_d44_i44 @atom:78_b44_a44_d44_i44 lj/cut/coul/long 0.17 3.42 + pair_coeff @atom:79_b45_a45_d45_i45 @atom:79_b45_a45_d45_i45 lj/cut/coul/long 0.0 0.0 + pair_coeff @atom:80_b13_a13_d13_i13 @atom:80_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:81_b13_a13_d13_i13 @atom:81_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:82_b13_a13_d13_i13 @atom:82_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:83_b13_a13_d13_i13 @atom:83_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:84_b13_a13_d13_i13 @atom:84_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:85_b46_a46_d46_i46 @atom:85_b46_a46_d46_i46 lj/cut/coul/long 0.03 2.5 + pair_coeff @atom:86_b47_a47_d47_i47 @atom:86_b47_a47_d47_i47 lj/cut/coul/long 0.076 3.55 + pair_coeff @atom:87_b47_a47_d47_i47 @atom:87_b47_a47_d47_i47 lj/cut/coul/long 0.076 3.55 + pair_coeff @atom:88_b47_a47_d47_i47 @atom:88_b47_a47_d47_i47 lj/cut/coul/long 0.076 3.55 + pair_coeff @atom:89_b46_a46_d46_i46 @atom:89_b46_a46_d46_i46 lj/cut/coul/long 0.03 2.42 + pair_coeff @atom:90_b48_a48_d48_i48 @atom:90_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 + pair_coeff @atom:91_b49_a49_d49_i49 @atom:91_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42 + pair_coeff @atom:92_b48_a48_d48_i48 @atom:92_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 + pair_coeff @atom:93_b13_a13_d13_i13 @atom:93_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:94_b13_a13_d13_i13 @atom:94_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:95_b50_a50_d50_i50 @atom:95_b50_a50_d50_i50 lj/cut/coul/long 0.076 3.55 + pair_coeff @atom:96_b5_a5_d5_i5 @atom:96_b5_a5_d5_i5 lj/cut/coul/long 0.17 3.12 + pair_coeff @atom:97_b7_a7_d7_i7 @atom:97_b7_a7_d7_i7 lj/cut/coul/long 0.0 0.0 + pair_coeff @atom:98_b46_a46_d46_i46 @atom:98_b46_a46_d46_i46 lj/cut/coul/long 0.03 2.5 + pair_coeff @atom:99_b13_a13_d13_i13 @atom:99_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:100_b13_a13_d13_i13 @atom:100_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:101_b13_a13_d13_i13 @atom:101_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:102_b13_a13_d13_i13 @atom:102_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:103_b13_a13_d13_i13 @atom:103_b13_a13_d13_i13 lj/cut/coul/long 0.062 3.25 + pair_coeff @atom:104_b5_a5_d5_i5 @atom:104_b5_a5_d5_i5 lj/cut/coul/long 0.17 3.07 + pair_coeff @atom:105_b7_a7_d7_i7 @atom:105_b7_a7_d7_i7 lj/cut/coul/long 0.0 0.0 + pair_coeff @atom:106_b1_a1_d1_i1 @atom:106_b1_a1_d1_i1 lj/cut/coul/long 0.061 2.94 + pair_coeff @atom:107_b46_a46_d46_i46 @atom:107_b46_a46_d46_i46 lj/cut/coul/long 0.03 2.5 + pair_coeff @atom:108_b48_a48_d48_i48 @atom:108_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 + pair_coeff @atom:109_b5_a5_d5_i5 @atom:109_b5_a5_d5_i5 lj/cut/coul/long 0.17 3.07 + pair_coeff @atom:110_b7_a7_d7_i7 @atom:110_b7_a7_d7_i7 lj/cut/coul/long 0.0 0.0 + pair_coeff @atom:111_b5_a5_d5_i5 @atom:111_b5_a5_d5_i5 lj/cut/coul/long 0.17 3.07 + pair_coeff @atom:112_b7_a7_d7_i7 @atom:112_b7_a7_d7_i7 lj/cut/coul/long 0.0 0.0 + pair_coeff @atom:113_b5_a5_d5_i5 @atom:113_b5_a5_d5_i5 lj/cut/coul/long 0.17 3.07 + pair_coeff @atom:114_b7_a7_d7_i7 @atom:114_b7_a7_d7_i7 lj/cut/coul/long 0.0 0.0 + pair_coeff @atom:115_b13_a13_d13_i13 @atom:115_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:116_b13_a13_d13_i13 @atom:116_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:117_b13_a13_d13_i13 @atom:117_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:118_b46_a46_d46_i46 @atom:118_b46_a46_d46_i46 lj/cut/coul/long 0.03 2.5 + pair_coeff @atom:119_b20_a20_d20_i20 @atom:119_b20_a20_d20_i20 lj/cut/coul/long 0.14 2.9 + pair_coeff @atom:120_b50_a50_d50_i50 @atom:120_b50_a50_d50_i50 lj/cut/coul/long 0.076 3.55 + pair_coeff @atom:121_b20_a20_d20_i20 @atom:121_b20_a20_d20_i20 lj/cut/coul/long 0.14 2.9 + pair_coeff @atom:122_b20_a20_d20_i20 @atom:122_b20_a20_d20_i20 lj/cut/coul/long 0.14 2.9 + pair_coeff @atom:123_b13_a13_d13_i13 @atom:123_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:124_b13_a13_d13_i13 @atom:124_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:125_b13_a13_d13_i13 @atom:125_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:126_b13_a13_d13_i13 @atom:126_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:127_b46_a46_d46_i46 @atom:127_b46_a46_d46_i46 lj/cut/coul/long 0.03 2.5 + pair_coeff @atom:128_b20_a20_d20_i20 @atom:128_b20_a20_d20_i20 lj/cut/coul/long 0.14 2.9 + pair_coeff @atom:129_b5_a5_d5_i5 @atom:129_b5_a5_d5_i5 lj/cut/coul/long 0.17 3.07 + pair_coeff @atom:130_b7_a7_d7_i7 @atom:130_b7_a7_d7_i7 lj/cut/coul/long 0.0 0.0 + pair_coeff @atom:131_b51_a51_d51_i51 @atom:131_b51_a51_d51_i51 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:132_b46_a46_d46_i46 @atom:132_b46_a46_d46_i46 lj/cut/coul/long 0.03 2.5 + pair_coeff @atom:133_b51_a51_d51_i51 @atom:133_b51_a51_d51_i51 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:134_b46_a46_d46_i46 @atom:134_b46_a46_d46_i46 lj/cut/coul/long 0.03 2.5 + pair_coeff @atom:135_b51_a51_d51_i51 @atom:135_b51_a51_d51_i51 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:136_b46_a46_d46_i46 @atom:136_b46_a46_d46_i46 lj/cut/coul/long 0.03 2.5 + pair_coeff @atom:137_b51_a51_d51_i51 @atom:137_b51_a51_d51_i51 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:138_b46_a46_d46_i46 @atom:138_b46_a46_d46_i46 lj/cut/coul/long 0.03 2.5 + pair_coeff @atom:139_b51_a51_d51_i51 @atom:139_b51_a51_d51_i51 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:140_b51_a51_d51_i51 @atom:140_b51_a51_d51_i51 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:141_b48_a48_d48_i48 @atom:141_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 + pair_coeff @atom:142_b15_a15_d15_i15 @atom:142_b15_a15_d15_i15 lj/cut/coul/long 0.25 3.55 + pair_coeff @atom:143_b15_a15_d15_i15 @atom:143_b15_a15_d15_i15 lj/cut/coul/long 0.25 3.7 + pair_coeff @atom:144_b16_a16_d16_i16 @atom:144_b16_a16_d16_i16 lj/cut/coul/long 0.25 3.55 + pair_coeff @atom:145_b16_a16_d16_i16 @atom:145_b16_a16_d16_i16 lj/cut/coul/long 0.25 3.55 + pair_coeff @atom:146_b17_a17_d17_i17 @atom:146_b17_a17_d17_i17 lj/cut/coul/long 0.0 0.0 + pair_coeff @atom:147_b17_a17_d17_i17 @atom:147_b17_a17_d17_i17 lj/cut/coul/long 0.0 0.0 + pair_coeff @atom:148_b13_a13_d13_i13 @atom:148_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:149_b13_a13_d13_i13 @atom:149_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:150_b13_a13_d13_i13 @atom:150_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:151_b13_a13_d13_i13 @atom:151_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:152_b13_a13_d13_i13 @atom:152_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:153_b13_a13_d13_i13 @atom:153_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:154_b13_a13_d13_i13 @atom:154_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:155_b13_a13_d13_i13 @atom:155_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:156_b13_a13_d13_i13 @atom:156_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:157_b13_a13_d13_i13 @atom:157_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:158_b13_a13_d13_i13 @atom:158_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:159_b13_a13_d13_i13 @atom:159_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:160_b13_a13_d13_i13 @atom:160_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:161_b13_a13_d13_i13 @atom:161_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:162_b13_a13_d13_i13 @atom:162_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:163_b48_a48_d48_i48 @atom:163_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 + pair_coeff @atom:164_b16_a16_d16_i16 @atom:164_b16_a16_d16_i16 lj/cut/coul/long 0.25 3.55 + pair_coeff @atom:165_b13_a13_d13_i13 @atom:165_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:166_b13_a13_d13_i13 @atom:166_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:167_b13_a13_d13_i13 @atom:167_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:168_b21_a21_d21_i21 @atom:168_b21_a21_d21_i21 lj/cut/coul/long 0.3 3.4 + pair_coeff @atom:169_b47_a47_d47_i47 @atom:169_b47_a47_d47_i47 lj/cut/coul/long 0.076 3.55 + pair_coeff @atom:170_b48_a48_d48_i48 @atom:170_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 + pair_coeff @atom:171_b13_a13_d13_i13 @atom:171_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:172_b13_a13_d13_i13 @atom:172_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:173_b3_a3_d3_i3 @atom:173_b3_a3_d3_i3 lj/cut/coul/long 0.105 3.75 + pair_coeff @atom:174_b3_a3_d3_i3 @atom:174_b3_a3_d3_i3 lj/cut/coul/long 0.105 3.75 + pair_coeff @atom:175_b3_a3_d3_i3 @atom:175_b3_a3_d3_i3 lj/cut/coul/long 0.105 3.75 + pair_coeff @atom:176_b3_a3_d3_i3 @atom:176_b3_a3_d3_i3 lj/cut/coul/long 0.105 3.75 + pair_coeff @atom:177_b3_a3_d3_i3 @atom:177_b3_a3_d3_i3 lj/cut/coul/long 0.105 3.75 + pair_coeff @atom:178_b4_a4_d4_i4 @atom:178_b4_a4_d4_i4 lj/cut/coul/long 0.21 2.96 + pair_coeff @atom:179_b24_a24_d24_i24 @atom:179_b24_a24_d24_i24 lj/cut/coul/long 0.17 3.25 + pair_coeff @atom:180_b24_a24_d24_i24 @atom:180_b24_a24_d24_i24 lj/cut/coul/long 0.17 3.25 + pair_coeff @atom:181_b24_a24_d24_i24 @atom:181_b24_a24_d24_i24 lj/cut/coul/long 0.17 3.25 + pair_coeff @atom:182_b45_a45_d45_i45 @atom:182_b45_a45_d45_i45 lj/cut/coul/long 0.0 0.0 + pair_coeff @atom:183_b45_a45_d45_i45 @atom:183_b45_a45_d45_i45 lj/cut/coul/long 0.0 0.0 + pair_coeff @atom:184_b13_a13_d13_i13 @atom:184_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:185_b13_a13_d13_i13 @atom:185_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:186_b13_a13_d13_i13 @atom:186_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:187_b13_a13_d13_i13 @atom:187_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:188_b13_a13_d13_i13 @atom:188_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:189_b3_a3_d3_i3 @atom:189_b3_a3_d3_i3 lj/cut/coul/long 0.105 3.75 + pair_coeff @atom:190_b4_a4_d4_i4 @atom:190_b4_a4_d4_i4 lj/cut/coul/long 0.21 2.96 + pair_coeff @atom:191_b24_a24_d24_i24 @atom:191_b24_a24_d24_i24 lj/cut/coul/long 0.17 3.25 + pair_coeff @atom:192_b45_a45_d45_i45 @atom:192_b45_a45_d45_i45 lj/cut/coul/long 0.0 0.0 + pair_coeff @atom:193_b24_a24_d24_i24 @atom:193_b24_a24_d24_i24 lj/cut/coul/long 0.17 3.25 + pair_coeff @atom:194_b3_a3_d3_i3 @atom:194_b3_a3_d3_i3 lj/cut/coul/long 0.105 3.75 + pair_coeff @atom:195_b4_a4_d4_i4 @atom:195_b4_a4_d4_i4 lj/cut/coul/long 0.21 2.96 + pair_coeff @atom:196_b45_a45_d45_i45 @atom:196_b45_a45_d45_i45 lj/cut/coul/long 0.0 0.0 + pair_coeff @atom:197_b46_a46_d46_i46 @atom:197_b46_a46_d46_i46 lj/cut/coul/long 0.02 2.5 + pair_coeff @atom:198_b13_a13_d13_i13 @atom:198_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:199_b13_a13_d13_i13 @atom:199_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:200_b13_a13_d13_i13 @atom:200_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:201_b13_a13_d13_i13 @atom:201_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:202_b48_a48_d48_i48 @atom:202_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 + pair_coeff @atom:203_b19_a19_d19_i19 @atom:203_b19_a19_d19_i19 lj/cut/coul/long 0.15 3.65 + pair_coeff @atom:204_b18_a18_d18_i18 @atom:204_b18_a18_d18_i18 lj/cut/coul/long 0.17 3.2 + pair_coeff @atom:205_b48_a48_d48_i48 @atom:205_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 + pair_coeff @atom:206_b21_a21_d21_i21 @atom:206_b21_a21_d21_i21 lj/cut/coul/long 0.3 3.4 + pair_coeff @atom:207_b24_a24_d24_i24 @atom:207_b24_a24_d24_i24 lj/cut/coul/long 0.17 3.25 + pair_coeff @atom:208_b48_a48_d48_i48 @atom:208_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 + pair_coeff @atom:209_b3_a3_d3_i3 @atom:209_b3_a3_d3_i3 lj/cut/coul/long 0.105 3.75 + pair_coeff @atom:210_b4_a4_d4_i4 @atom:210_b4_a4_d4_i4 lj/cut/coul/long 0.21 2.96 + pair_coeff @atom:211_b5_a5_d5_i5 @atom:211_b5_a5_d5_i5 lj/cut/coul/long 0.17 3.0 + pair_coeff @atom:212_b7_a7_d7_i7 @atom:212_b7_a7_d7_i7 lj/cut/coul/long 0.0 0.0 + pair_coeff @atom:213_b3_a3_d3_i3 @atom:213_b3_a3_d3_i3 lj/cut/coul/long 0.105 3.75 + pair_coeff @atom:214_b52_a52_d52_i52 @atom:214_b52_a52_d52_i52 lj/cut/coul/long 0.21 2.96 + pair_coeff @atom:215_b13_a13_d13_i13 @atom:215_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:216_b13_a13_d13_i13 @atom:216_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:217_b13_a13_d13_i13 @atom:217_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:218_b13_a13_d13_i13 @atom:218_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:219_b3_a3_d3_i3 @atom:219_b3_a3_d3_i3 lj/cut/coul/long 0.105 3.75 + pair_coeff @atom:220_b4_a4_d4_i4 @atom:220_b4_a4_d4_i4 lj/cut/coul/long 0.21 2.96 + pair_coeff @atom:221_b46_a46_d46_i46 @atom:221_b46_a46_d46_i46 lj/cut/coul/long 0.015 2.42 + pair_coeff @atom:222_b3_a3_d3_i3 @atom:222_b3_a3_d3_i3 lj/cut/coul/long 0.105 3.75 + pair_coeff @atom:223_b4_a4_d4_i4 @atom:223_b4_a4_d4_i4 lj/cut/coul/long 0.21 2.96 + pair_coeff @atom:224_b46_a46_d46_i46 @atom:224_b46_a46_d46_i46 lj/cut/coul/long 0.015 2.42 + pair_coeff @atom:225_b13_a13_d13_i13 @atom:225_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:226_b13_a13_d13_i13 @atom:226_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:227_b13_a13_d13_i13 @atom:227_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:228_b13_a13_d13_i13 @atom:228_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:229_b53_a53_d53_i53 @atom:229_b53_a53_d53_i53 lj/cut/coul/long 0.17 3.25 + pair_coeff @atom:230_b53_a53_d53_i53 @atom:230_b53_a53_d53_i53 lj/cut/coul/long 0.17 3.25 + pair_coeff @atom:231_b53_a53_d53_i53 @atom:231_b53_a53_d53_i53 lj/cut/coul/long 0.17 3.25 + pair_coeff @atom:232_b54_a54_d54_i54 @atom:232_b54_a54_d54_i54 lj/cut/coul/long 0.0 0.0 + pair_coeff @atom:233_b54_a54_d54_i54 @atom:233_b54_a54_d54_i54 lj/cut/coul/long 0.0 0.0 + pair_coeff @atom:234_b13_a13_d13_i13 @atom:234_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:235_b13_a13_d13_i13 @atom:235_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:236_b13_a13_d13_i13 @atom:236_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:237_b13_a13_d13_i13 @atom:237_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:238_b13_a13_d13_i13 @atom:238_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:239_b13_a13_d13_i13 @atom:239_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:240_b13_a13_d13_i13 @atom:240_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:241_b13_a13_d13_i13 @atom:241_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:242_b13_a13_d13_i13 @atom:242_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:243_b55_a55_d55_i55 @atom:243_b55_a55_d55_i55 lj/cut/coul/long 0.17 3.25 + pair_coeff @atom:244_b54_a54_d54_i54 @atom:244_b54_a54_d54_i54 lj/cut/coul/long 0.0 0.0 + pair_coeff @atom:245_b48_a48_d48_i48 @atom:245_b48_a48_d48_i48 lj/cut/coul/long 0.05 3.55 + pair_coeff @atom:246_b55_a55_d55_i55 @atom:246_b55_a55_d55_i55 lj/cut/coul/long 0.17 3.25 + pair_coeff @atom:247_b54_a54_d54_i54 @atom:247_b54_a54_d54_i54 lj/cut/coul/long 0.0 0.0 + pair_coeff @atom:248_b13_a13_d13_i13 @atom:248_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:249_b13_a13_d13_i13 @atom:249_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:250_b13_a13_d13_i13 @atom:250_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:251_b13_a13_d13_i13 @atom:251_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:252_b53_a53_d53_i53 @atom:252_b53_a53_d53_i53 lj/cut/coul/long 0.17 3.25 + pair_coeff @atom:253_b54_a54_d54_i54 @atom:253_b54_a54_d54_i54 lj/cut/coul/long 0.0 0.0 + pair_coeff @atom:254_b56_a56_d56_i56 @atom:254_b56_a56_d56_i56 lj/cut/coul/long 0.17 3.25 + pair_coeff @atom:255_b48_a48_d48_i48 @atom:255_b48_a48_d48_i48 lj/cut/coul/long 0.08 3.5 + pair_coeff @atom:256_b55_a55_d55_i55 @atom:256_b55_a55_d55_i55 lj/cut/coul/long 0.17 3.25 + pair_coeff @atom:257_b45_a45_d45_i45 @atom:257_b45_a45_d45_i45 lj/cut/coul/long 0.0 0.0 + pair_coeff @atom:258_b48_a48_d48_i48 @atom:258_b48_a48_d48_i48 lj/cut/coul/long 0.08 3.5 + pair_coeff @atom:259_b49_a49_d49_i49 @atom:259_b49_a49_d49_i49 lj/cut/coul/long 0.05 2.5 + pair_coeff @atom:260_b48_a48_d48_i48 @atom:260_b48_a48_d48_i48 lj/cut/coul/long 0.08 3.5 + pair_coeff @atom:261_b49_a49_d49_i49 @atom:261_b49_a49_d49_i49 lj/cut/coul/long 0.05 2.5 + pair_coeff @atom:262_b57_a57_d57_i57 @atom:262_b57_a57_d57_i57 lj/cut/coul/long 0.17 3.25 + pair_coeff @atom:263_b3_a3_d3_i3 @atom:263_b3_a3_d3_i3 lj/cut/coul/long 0.105 3.75 + pair_coeff @atom:264_b57_a57_d57_i57 @atom:264_b57_a57_d57_i57 lj/cut/coul/long 0.17 3.25 + pair_coeff @atom:265_b3_a3_d3_i3 @atom:265_b3_a3_d3_i3 lj/cut/coul/long 0.105 3.75 + pair_coeff @atom:266_b47_a47_d47_i47 @atom:266_b47_a47_d47_i47 lj/cut/coul/long 0.08 3.5 + pair_coeff @atom:267_b47_a47_d47_i47 @atom:267_b47_a47_d47_i47 lj/cut/coul/long 0.08 3.5 + pair_coeff @atom:268_b45_a45_d45_i45 @atom:268_b45_a45_d45_i45 lj/cut/coul/long 0.0 0.0 + pair_coeff @atom:269_b4_a4_d4_i4 @atom:269_b4_a4_d4_i4 lj/cut/coul/long 0.21 2.96 + pair_coeff @atom:270_b45_a45_d45_i45 @atom:270_b45_a45_d45_i45 lj/cut/coul/long 0.0 0.0 + pair_coeff @atom:271_b4_a4_d4_i4 @atom:271_b4_a4_d4_i4 lj/cut/coul/long 0.21 2.96 + pair_coeff @atom:272_b46_a46_d46_i46 @atom:272_b46_a46_d46_i46 lj/cut/coul/long 0.05 2.5 + pair_coeff @atom:273_b46_a46_d46_i46 @atom:273_b46_a46_d46_i46 lj/cut/coul/long 0.05 2.5 + pair_coeff @atom:274_b13_a13_d13_i13 @atom:274_b13_a13_d13_i13 lj/cut/coul/long 0.08 3.5 + pair_coeff @atom:275_b46_a46_d46_i46 @atom:275_b46_a46_d46_i46 lj/cut/coul/long 0.05 2.5 + pair_coeff @atom:276_b57_a57_d57_i57 @atom:276_b57_a57_d57_i57 lj/cut/coul/long 0.17 3.25 + pair_coeff @atom:277_b3_a3_d3_i3 @atom:277_b3_a3_d3_i3 lj/cut/coul/long 0.105 3.75 + pair_coeff @atom:278_b56_a56_d56_i56 @atom:278_b56_a56_d56_i56 lj/cut/coul/long 0.17 3.25 + pair_coeff @atom:279_b48_a48_d48_i48 @atom:279_b48_a48_d48_i48 lj/cut/coul/long 0.08 3.5 + pair_coeff @atom:280_b47_a47_d47_i47 @atom:280_b47_a47_d47_i47 lj/cut/coul/long 0.08 3.5 + pair_coeff @atom:281_b47_a47_d47_i47 @atom:281_b47_a47_d47_i47 lj/cut/coul/long 0.08 3.5 + pair_coeff @atom:282_b45_a45_d45_i45 @atom:282_b45_a45_d45_i45 lj/cut/coul/long 0.0 0.0 + pair_coeff @atom:283_b4_a4_d4_i4 @atom:283_b4_a4_d4_i4 lj/cut/coul/long 0.21 2.96 + pair_coeff @atom:284_b55_a55_d55_i55 @atom:284_b55_a55_d55_i55 lj/cut/coul/long 0.17 3.25 + pair_coeff @atom:285_b45_a45_d45_i45 @atom:285_b45_a45_d45_i45 lj/cut/coul/long 0.0 0.0 + pair_coeff @atom:286_b45_a45_d45_i45 @atom:286_b45_a45_d45_i45 lj/cut/coul/long 0.0 0.0 + pair_coeff @atom:287_b46_a46_d46_i46 @atom:287_b46_a46_d46_i46 lj/cut/coul/long 0.05 2.5 + pair_coeff @atom:288_b58_a58_d58_i58 @atom:288_b58_a58_d58_i58 lj/cut/coul/long 0.05 2.5 + pair_coeff @atom:289_b56_a56_d56_i56 @atom:289_b56_a56_d56_i56 lj/cut/coul/long 0.17 3.25 + pair_coeff @atom:290_b59_a59_d59_i59 @atom:290_b59_a59_d59_i59 lj/cut/coul/long 0.08 3.5 + pair_coeff @atom:291_b56_a56_d56_i56 @atom:291_b56_a56_d56_i56 lj/cut/coul/long 0.17 3.25 + pair_coeff @atom:292_b60_a60_d60_i60 @atom:292_b60_a60_d60_i60 lj/cut/coul/long 0.08 3.5 + pair_coeff @atom:293_b60_a60_d60_i60 @atom:293_b60_a60_d60_i60 lj/cut/coul/long 0.08 3.5 + pair_coeff @atom:294_b48_a48_d48_i48 @atom:294_b48_a48_d48_i48 lj/cut/coul/long 0.08 3.5 + pair_coeff @atom:295_b61_a61_d61_i61 @atom:295_b61_a61_d61_i61 lj/cut/coul/long 0.17 3.25 + pair_coeff @atom:296_b62_a62_d62_i62 @atom:296_b62_a62_d62_i62 lj/cut/coul/long 0.08 3.5 + pair_coeff @atom:297_b57_a57_d57_i57 @atom:297_b57_a57_d57_i57 lj/cut/coul/long 0.17 3.25 + pair_coeff @atom:298_b63_a63_d63_i63 @atom:298_b63_a63_d63_i63 lj/cut/coul/long 0.05 2.5 + pair_coeff @atom:299_b55_a55_d55_i55 @atom:299_b55_a55_d55_i55 lj/cut/coul/long 0.17 3.25 + pair_coeff @atom:300_b45_a45_d45_i45 @atom:300_b45_a45_d45_i45 lj/cut/coul/long 0.0 0.0 + pair_coeff @atom:301_b45_a45_d45_i45 @atom:301_b45_a45_d45_i45 lj/cut/coul/long 0.0 0.0 + pair_coeff @atom:302_b63_a63_d63_i63 @atom:302_b63_a63_d63_i63 lj/cut/coul/long 0.05 2.5 + pair_coeff @atom:303_b45_a45_d45_i45 @atom:303_b45_a45_d45_i45 lj/cut/coul/long 0.0 0.0 + pair_coeff @atom:304_b57_a57_d57_i57 @atom:304_b57_a57_d57_i57 lj/cut/coul/long 0.17 3.25 + pair_coeff @atom:305_b48_a48_d48_i48 @atom:305_b48_a48_d48_i48 lj/cut/coul/long 0.08 3.5 + pair_coeff @atom:306_b56_a56_d56_i56 @atom:306_b56_a56_d56_i56 lj/cut/coul/long 0.17 3.25 + pair_coeff @atom:307_b60_a60_d60_i60 @atom:307_b60_a60_d60_i60 lj/cut/coul/long 0.08 3.5 + pair_coeff @atom:308_b60_a60_d60_i60 @atom:308_b60_a60_d60_i60 lj/cut/coul/long 0.08 3.5 + pair_coeff @atom:309_b3_a3_d3_i3 @atom:309_b3_a3_d3_i3 lj/cut/coul/long 0.105 3.75 + pair_coeff @atom:310_b45_a45_d45_i45 @atom:310_b45_a45_d45_i45 lj/cut/coul/long 0.0 0.0 + pair_coeff @atom:311_b55_a55_d55_i55 @atom:311_b55_a55_d55_i55 lj/cut/coul/long 0.17 3.25 + pair_coeff @atom:312_b45_a45_d45_i45 @atom:312_b45_a45_d45_i45 lj/cut/coul/long 0.0 0.0 + pair_coeff @atom:313_b4_a4_d4_i4 @atom:313_b4_a4_d4_i4 lj/cut/coul/long 0.21 2.96 + pair_coeff @atom:314_b13_a13_d13_i13 @atom:314_b13_a13_d13_i13 lj/cut/coul/long 0.08 3.5 + pair_coeff @atom:315_b46_a46_d46_i46 @atom:315_b46_a46_d46_i46 lj/cut/coul/long 0.05 2.5 + pair_coeff @atom:316_b13_a13_d13_i13 @atom:316_b13_a13_d13_i13 lj/cut/coul/long 0.08 3.5 + pair_coeff @atom:317_b46_a46_d46_i46 @atom:317_b46_a46_d46_i46 lj/cut/coul/long 0.05 2.5 + pair_coeff @atom:318_b13_a13_d13_i13 @atom:318_b13_a13_d13_i13 lj/cut/coul/long 0.08 3.5 + pair_coeff @atom:319_b46_a46_d46_i46 @atom:319_b46_a46_d46_i46 lj/cut/coul/long 0.05 2.5 + pair_coeff @atom:320_b57_a57_d57_i57 @atom:320_b57_a57_d57_i57 lj/cut/coul/long 0.17 3.25 + pair_coeff @atom:321_b3_a3_d3_i3 @atom:321_b3_a3_d3_i3 lj/cut/coul/long 0.105 3.75 + pair_coeff @atom:322_b57_a57_d57_i57 @atom:322_b57_a57_d57_i57 lj/cut/coul/long 0.17 3.25 + pair_coeff @atom:323_b48_a48_d48_i48 @atom:323_b48_a48_d48_i48 lj/cut/coul/long 0.08 3.5 + pair_coeff @atom:324_b47_a47_d47_i47 @atom:324_b47_a47_d47_i47 lj/cut/coul/long 0.08 3.5 + pair_coeff @atom:325_b47_a47_d47_i47 @atom:325_b47_a47_d47_i47 lj/cut/coul/long 0.08 3.5 + pair_coeff @atom:326_b45_a45_d45_i45 @atom:326_b45_a45_d45_i45 lj/cut/coul/long 0.0 0.0 + pair_coeff @atom:327_b4_a4_d4_i4 @atom:327_b4_a4_d4_i4 lj/cut/coul/long 0.21 2.96 + pair_coeff @atom:328_b45_a45_d45_i45 @atom:328_b45_a45_d45_i45 lj/cut/coul/long 0.0 0.0 + pair_coeff @atom:329_b55_a55_d55_i55 @atom:329_b55_a55_d55_i55 lj/cut/coul/long 0.17 3.25 + pair_coeff @atom:330_b45_a45_d45_i45 @atom:330_b45_a45_d45_i45 lj/cut/coul/long 0.0 0.0 + pair_coeff @atom:331_b45_a45_d45_i45 @atom:331_b45_a45_d45_i45 lj/cut/coul/long 0.0 0.0 + pair_coeff @atom:332_b49_a49_d49_i49 @atom:332_b49_a49_d49_i49 lj/cut/coul/long 0.05 2.5 + pair_coeff @atom:333_b58_a58_d58_i58 @atom:333_b58_a58_d58_i58 lj/cut/coul/long 0.05 2.5 + pair_coeff @atom:334_b13_a13_d13_i13 @atom:334_b13_a13_d13_i13 lj/cut/coul/long 0.08 3.5 + pair_coeff @atom:335_b46_a46_d46_i46 @atom:335_b46_a46_d46_i46 lj/cut/coul/long 0.05 2.5 + pair_coeff @atom:336_b64_a64_d64_i64 @atom:336_b64_a64_d64_i64 lj/cut/coul/long 0.2 3.74 + pair_coeff @atom:337_b52_a52_d52_i52 @atom:337_b52_a52_d52_i52 lj/cut/coul/long 0.21 2.96 + pair_coeff @atom:338_b20_a20_d20_i20 @atom:338_b20_a20_d20_i20 lj/cut/coul/long 0.17 3.0 + pair_coeff @atom:339_b13_a13_d13_i13 @atom:339_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.55 + pair_coeff @atom:340_b47_a47_d47_i47 @atom:340_b47_a47_d47_i47 lj/cut/coul/long 0.08 3.5 + pair_coeff @atom:341_b21_a21_d21_i21 @atom:341_b21_a21_d21_i21 lj/cut/coul/long 0.3 3.4 + pair_coeff @atom:342_b47_a47_d47_i47 @atom:342_b47_a47_d47_i47 lj/cut/coul/long 0.076 3.55 + pair_coeff @atom:343_b1_a1_d1_i1 @atom:343_b1_a1_d1_i1 lj/cut/coul/long 0.71 3.05 + pair_coeff @atom:344_b21_a21_d21_i21 @atom:344_b21_a21_d21_i21 lj/cut/coul/long 0.71 4.02 + pair_coeff @atom:345_b65_a65_d65_i65 @atom:345_b65_a65_d65_i65 lj/cut/coul/long 0.71 4.28 + pair_coeff @atom:346_b66_a66_d66_i66 @atom:346_b66_a66_d66_i66 lj/cut/coul/long 0.71 4.81 + pair_coeff @atom:347_b67_a67_d67_i67 @atom:347_b67_a67_d67_i67 lj/cut/coul/long 0.0005 5.34 + pair_coeff @atom:348_b68_a68_d68_i68 @atom:348_b68_a68_d68_i68 lj/cut/coul/long 0.0005 2.87 + pair_coeff @atom:349_b69_a69_d69_i69 @atom:349_b69_a69_d69_i69 lj/cut/coul/long 0.0005 4.07 + pair_coeff @atom:350_b70_a70_d70_i70 @atom:350_b70_a70_d70_i70 lj/cut/coul/long 0.0005 5.17 + pair_coeff @atom:351_b71_a71_d71_i71 @atom:351_b71_a71_d71_i71 lj/cut/coul/long 0.0005 5.6 + pair_coeff @atom:352_b72_a72_d72_i72 @atom:352_b72_a72_d72_i72 lj/cut/coul/long 0.0005 6.2 + pair_coeff @atom:353_b73_a73_d73_i73 @atom:353_b73_a73_d73_i73 lj/cut/coul/long 0.875044 1.644471 + pair_coeff @atom:354_b74_a74_d74_i74 @atom:354_b74_a74_d74_i74 lj/cut/coul/long 0.449657 2.412031 + pair_coeff @atom:355_b75_a75_d75_i75 @atom:355_b75_a75_d75_i75 lj/cut/coul/long 0.118226 3.102688 + pair_coeff @atom:356_b76_a76_d76_i76 @atom:356_b76_a76_d76_i76 lj/cut/coul/long 0.047096 3.81661 + pair_coeff @atom:357_b6_a6_d6_i6 @atom:357_b6_a6_d6_i6 lj/cut/coul/long 0.3 4.2 + pair_coeff @atom:358_b46_a46_d46_i46 @atom:358_b46_a46_d46_i46 lj/cut/coul/long 0.05 2.5 + pair_coeff @atom:359_b15_a15_d15_i15 @atom:359_b15_a15_d15_i15 lj/cut/coul/long 0.5 4.25 + pair_coeff @atom:360_b6_a6_d6_i6 @atom:360_b6_a6_d6_i6 lj/cut/coul/long 0.3 4.2 + pair_coeff @atom:361_b46_a46_d46_i46 @atom:361_b46_a46_d46_i46 lj/cut/coul/long 0.05 2.5 + pair_coeff @atom:362_b5_a5_d5_i5 @atom:362_b5_a5_d5_i5 lj/cut/coul/long 0.25 3.15 + pair_coeff @atom:363_b13_a13_d13_i13 @atom:363_b13_a13_d13_i13 lj/cut/coul/long 0.3 4.2 + pair_coeff @atom:364_b46_a46_d46_i46 @atom:364_b46_a46_d46_i46 lj/cut/coul/long 0.05 2.5 + pair_coeff @atom:365_b19_a19_d19_i19 @atom:365_b19_a19_d19_i19 lj/cut/coul/long 0.15 3.65 + pair_coeff @atom:366_b18_a18_d18_i18 @atom:366_b18_a18_d18_i18 lj/cut/coul/long 0.25 3.4 + pair_coeff @atom:367_b6_a6_d6_i6 @atom:367_b6_a6_d6_i6 lj/cut/coul/long 0.3 4.2 + pair_coeff @atom:368_b46_a46_d46_i46 @atom:368_b46_a46_d46_i46 lj/cut/coul/long 0.05 2.5 + pair_coeff @atom:369_b53_a53_d53_i53 @atom:369_b53_a53_d53_i53 lj/cut/coul/long 0.25 3.4 + pair_coeff @atom:370_b45_a45_d45_i45 @atom:370_b45_a45_d45_i45 lj/cut/coul/long 0.05 2.5 + pair_coeff @atom:371_b6_a6_d6_i6 @atom:371_b6_a6_d6_i6 lj/cut/coul/long 0.3 4.2 + pair_coeff @atom:372_b46_a46_d46_i46 @atom:372_b46_a46_d46_i46 lj/cut/coul/long 0.05 2.5 + pair_coeff @atom:373_b13_a13_d13_i13 @atom:373_b13_a13_d13_i13 lj/cut/coul/long 0.3 4.2 + pair_coeff @atom:374_b46_a46_d46_i46 @atom:374_b46_a46_d46_i46 lj/cut/coul/long 0.05 2.5 + pair_coeff @atom:375_b33_a33_d33_i33 @atom:375_b33_a33_d33_i33 lj/cut/coul/long 0.0 0.0 + pair_coeff @atom:376_b5_a5_d5_i5 @atom:376_b5_a5_d5_i5 lj/cut/coul/long 0.25 3.2 + pair_coeff @atom:377_b7_a7_d7_i7 @atom:377_b7_a7_d7_i7 lj/cut/coul/long 0.0 0.0 + pair_coeff @atom:378_b77_a77_d77_i77 @atom:378_b77_a77_d77_i77 lj/cut/coul/long 0.4 2.81524 + pair_coeff @atom:379_b78_a78_d78_i78 @atom:379_b78_a78_d78_i78 lj/cut/coul/long 0.2 3.11815 + pair_coeff @atom:380_b20_a20_d20_i20 @atom:380_b20_a20_d20_i20 lj/cut/coul/long 0.14 2.9 + pair_coeff @atom:381_b64_a64_d64_i64 @atom:381_b64_a64_d64_i64 lj/cut/coul/long 0.2 3.74 + pair_coeff @atom:382_b52_a52_d52_i52 @atom:382_b52_a52_d52_i52 lj/cut/coul/long 0.2 3.15 + pair_coeff @atom:383_b20_a20_d20_i20 @atom:383_b20_a20_d20_i20 lj/cut/coul/long 0.14 2.9 + pair_coeff @atom:384_b13_a13_d13_i13 @atom:384_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:385_b46_a46_d46_i46 @atom:385_b46_a46_d46_i46 lj/cut/coul/long 0.03 2.5 + pair_coeff @atom:386_b64_a64_d64_i64 @atom:386_b64_a64_d64_i64 lj/cut/coul/long 0.2 3.74 + pair_coeff @atom:387_b52_a52_d52_i52 @atom:387_b52_a52_d52_i52 lj/cut/coul/long 0.2 3.15 + pair_coeff @atom:388_b20_a20_d20_i20 @atom:388_b20_a20_d20_i20 lj/cut/coul/long 0.14 2.9 + pair_coeff @atom:389_b13_a13_d13_i13 @atom:389_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:390_b46_a46_d46_i46 @atom:390_b46_a46_d46_i46 lj/cut/coul/long 0.03 2.5 + pair_coeff @atom:391_b64_a64_d64_i64 @atom:391_b64_a64_d64_i64 lj/cut/coul/long 0.2 3.74 + pair_coeff @atom:392_b52_a52_d52_i52 @atom:392_b52_a52_d52_i52 lj/cut/coul/long 0.2 3.15 + pair_coeff @atom:393_b20_a20_d20_i20 @atom:393_b20_a20_d20_i20 lj/cut/coul/long 0.14 2.9 + pair_coeff @atom:394_b13_a13_d13_i13 @atom:394_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:395_b46_a46_d46_i46 @atom:395_b46_a46_d46_i46 lj/cut/coul/long 0.03 2.5 + pair_coeff @atom:396_b13_a13_d13_i13 @atom:396_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:397_b46_a46_d46_i46 @atom:397_b46_a46_d46_i46 lj/cut/coul/long 0.03 2.5 + pair_coeff @atom:398_b48_a48_d48_i48 @atom:398_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 + pair_coeff @atom:399_b13_a13_d13_i13 @atom:399_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:400_b46_a46_d46_i46 @atom:400_b46_a46_d46_i46 lj/cut/coul/long 0.03 2.5 + pair_coeff @atom:401_b48_a48_d48_i48 @atom:401_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 + pair_coeff @atom:402_b13_a13_d13_i13 @atom:402_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:403_b46_a46_d46_i46 @atom:403_b46_a46_d46_i46 lj/cut/coul/long 0.03 2.5 + pair_coeff @atom:404_b48_a48_d48_i48 @atom:404_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 + pair_coeff @atom:405_b13_a13_d13_i13 @atom:405_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:406_b3_a3_d3_i3 @atom:406_b3_a3_d3_i3 lj/cut/coul/long 0.105 3.75 + pair_coeff @atom:407_b4_a4_d4_i4 @atom:407_b4_a4_d4_i4 lj/cut/coul/long 0.21 2.96 + pair_coeff @atom:408_b20_a20_d20_i20 @atom:408_b20_a20_d20_i20 lj/cut/coul/long 0.17 3.0 + pair_coeff @atom:409_b13_a13_d13_i13 @atom:409_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:410_b46_a46_d46_i46 @atom:410_b46_a46_d46_i46 lj/cut/coul/long 0.015 2.42 + pair_coeff @atom:411_b3_a3_d3_i3 @atom:411_b3_a3_d3_i3 lj/cut/coul/long 0.105 3.75 + pair_coeff @atom:412_b3_a3_d3_i3 @atom:412_b3_a3_d3_i3 lj/cut/coul/long 0.105 3.75 + pair_coeff @atom:413_b48_a48_d48_i48 @atom:413_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 + pair_coeff @atom:414_b20_a20_d20_i20 @atom:414_b20_a20_d20_i20 lj/cut/coul/long 0.17 3.0 + pair_coeff @atom:415_b79_a79_d79_i79 @atom:415_b79_a79_d79_i79 lj/cut/coul/long 0.25 3.55 + pair_coeff @atom:416_b23_a23_d23_i23 @atom:416_b23_a23_d23_i23 lj/cut/coul/long 0.17 2.96 + pair_coeff @atom:417_b13_a13_d13_i13 @atom:417_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:418_b46_a46_d46_i46 @atom:418_b46_a46_d46_i46 lj/cut/coul/long 0.03 2.5 + pair_coeff @atom:419_b24_a24_d24_i24 @atom:419_b24_a24_d24_i24 lj/cut/coul/long 0.17 3.25 + pair_coeff @atom:420_b45_a45_d45_i45 @atom:420_b45_a45_d45_i45 lj/cut/coul/long 0.0 0.0 + pair_coeff @atom:421_b24_a24_d24_i24 @atom:421_b24_a24_d24_i24 lj/cut/coul/long 0.17 3.25 + pair_coeff @atom:422_b45_a45_d45_i45 @atom:422_b45_a45_d45_i45 lj/cut/coul/long 0.0 0.0 + pair_coeff @atom:423_b13_a13_d13_i13 @atom:423_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:424_b46_a46_d46_i46 @atom:424_b46_a46_d46_i46 lj/cut/coul/long 0.03 2.5 + pair_coeff @atom:425_b13_a13_d13_i13 @atom:425_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:426_b46_a46_d46_i46 @atom:426_b46_a46_d46_i46 lj/cut/coul/long 0.03 2.5 + pair_coeff @atom:427_b13_a13_d13_i13 @atom:427_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:428_b46_a46_d46_i46 @atom:428_b46_a46_d46_i46 lj/cut/coul/long 0.03 2.5 + pair_coeff @atom:429_b48_a48_d48_i48 @atom:429_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 + pair_coeff @atom:430_b48_a48_d48_i48 @atom:430_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 + pair_coeff @atom:431_b13_a13_d13_i13 @atom:431_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:432_b13_a13_d13_i13 @atom:432_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:433_b13_a13_d13_i13 @atom:433_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:434_b79_a79_d79_i79 @atom:434_b79_a79_d79_i79 lj/cut/coul/long 0.25 3.55 + pair_coeff @atom:435_b23_a23_d23_i23 @atom:435_b23_a23_d23_i23 lj/cut/coul/long 0.17 2.96 + pair_coeff @atom:436_b22_a22_d22_i22 @atom:436_b22_a22_d22_i22 lj/cut/coul/long 0.395 3.56 + pair_coeff @atom:437_b22_a22_d22_i22 @atom:437_b22_a22_d22_i22 lj/cut/coul/long 0.395 3.56 + pair_coeff @atom:438_b23_a23_d23_i23 @atom:438_b23_a23_d23_i23 lj/cut/coul/long 0.28 2.93 + pair_coeff @atom:439_b13_a13_d13_i13 @atom:439_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:440_b13_a13_d13_i13 @atom:440_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:441_b80_a80_d80_i80 @atom:441_b80_a80_d80_i80 lj/cut/coul/long 0.07 3.55 + pair_coeff @atom:442_b60_a60_d60_i60 @atom:442_b60_a60_d60_i60 lj/cut/coul/long 0.07 3.55 + pair_coeff @atom:443_b81_a81_d81_i81 @atom:443_b81_a81_d81_i81 lj/cut/coul/long 0.07 3.55 + pair_coeff @atom:444_b57_a57_d57_i57 @atom:444_b57_a57_d57_i57 lj/cut/coul/long 0.17 3.25 + pair_coeff @atom:445_b45_a45_d45_i45 @atom:445_b45_a45_d45_i45 lj/cut/coul/long 0.0 0.0 + pair_coeff @atom:446_b13_a13_d13_i13 @atom:446_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:447_b82_a82_d82_i82 @atom:447_b82_a82_d82_i82 lj/cut/coul/long 0.07 3.55 + pair_coeff @atom:448_b83_a83_d83_i83 @atom:448_b83_a83_d83_i83 lj/cut/coul/long 0.07 3.55 + pair_coeff @atom:449_b84_a84_d84_i84 @atom:449_b84_a84_d84_i84 lj/cut/coul/long 0.07 3.55 + pair_coeff @atom:450_b82_a82_d82_i82 @atom:450_b82_a82_d82_i82 lj/cut/coul/long 0.07 3.55 + pair_coeff @atom:451_b85_a85_d85_i85 @atom:451_b85_a85_d85_i85 lj/cut/coul/long 0.07 3.55 + pair_coeff @atom:452_b61_a61_d61_i61 @atom:452_b61_a61_d61_i61 lj/cut/coul/long 0.17 3.25 + pair_coeff @atom:453_b57_a57_d57_i57 @atom:453_b57_a57_d57_i57 lj/cut/coul/long 0.17 3.25 + pair_coeff @atom:454_b45_a45_d45_i45 @atom:454_b45_a45_d45_i45 lj/cut/coul/long 0.0 0.0 + pair_coeff @atom:455_b84_a84_d84_i84 @atom:455_b84_a84_d84_i84 lj/cut/coul/long 0.07 3.55 + pair_coeff @atom:456_b13_a13_d13_i13 @atom:456_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:457_b13_a13_d13_i13 @atom:457_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:458_b47_a47_d47_i47 @atom:458_b47_a47_d47_i47 lj/cut/coul/long 0.076 3.55 + pair_coeff @atom:459_b47_a47_d47_i47 @atom:459_b47_a47_d47_i47 lj/cut/coul/long 0.076 3.55 + pair_coeff @atom:460_b86_a86_d86_i86 @atom:460_b86_a86_d86_i86 lj/cut/coul/long 0.07 3.55 + pair_coeff @atom:461_b56_a56_d56_i56 @atom:461_b56_a56_d56_i56 lj/cut/coul/long 0.17 3.25 + pair_coeff @atom:462_b48_a48_d48_i48 @atom:462_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 + pair_coeff @atom:463_b48_a48_d48_i48 @atom:463_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 + pair_coeff @atom:464_b48_a48_d48_i48 @atom:464_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 + pair_coeff @atom:465_b49_a49_d49_i49 @atom:465_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42 + pair_coeff @atom:466_b49_a49_d49_i49 @atom:466_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42 + pair_coeff @atom:467_b49_a49_d49_i49 @atom:467_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42 + pair_coeff @atom:468_b56_a56_d56_i56 @atom:468_b56_a56_d56_i56 lj/cut/coul/long 0.17 3.25 + pair_coeff @atom:469_b48_a48_d48_i48 @atom:469_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 + pair_coeff @atom:470_b49_a49_d49_i49 @atom:470_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42 + pair_coeff @atom:471_b56_a56_d56_i56 @atom:471_b56_a56_d56_i56 lj/cut/coul/long 0.17 3.25 + pair_coeff @atom:472_b59_a59_d59_i59 @atom:472_b59_a59_d59_i59 lj/cut/coul/long 0.07 3.55 + pair_coeff @atom:473_b48_a48_d48_i48 @atom:473_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 + pair_coeff @atom:474_b48_a48_d48_i48 @atom:474_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 + pair_coeff @atom:475_b49_a49_d49_i49 @atom:475_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42 + pair_coeff @atom:476_b49_a49_d49_i49 @atom:476_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42 + pair_coeff @atom:477_b49_a49_d49_i49 @atom:477_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42 + pair_coeff @atom:478_b56_a56_d56_i56 @atom:478_b56_a56_d56_i56 lj/cut/coul/long 0.17 3.25 + pair_coeff @atom:479_b48_a48_d48_i48 @atom:479_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 + pair_coeff @atom:480_b48_a48_d48_i48 @atom:480_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 + pair_coeff @atom:481_b49_a49_d49_i49 @atom:481_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42 + pair_coeff @atom:482_b49_a49_d49_i49 @atom:482_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42 + pair_coeff @atom:483_b57_a57_d57_i57 @atom:483_b57_a57_d57_i57 lj/cut/coul/long 0.17 3.25 + pair_coeff @atom:484_b84_a84_d84_i84 @atom:484_b84_a84_d84_i84 lj/cut/coul/long 0.07 3.55 + pair_coeff @atom:485_b87_a87_d87_i87 @atom:485_b87_a87_d87_i87 lj/cut/coul/long 0.07 3.55 + pair_coeff @atom:486_b45_a45_d45_i45 @atom:486_b45_a45_d45_i45 lj/cut/coul/long 0.0 0.0 + pair_coeff @atom:487_b49_a49_d49_i49 @atom:487_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42 + pair_coeff @atom:488_b49_a49_d49_i49 @atom:488_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42 + pair_coeff @atom:489_b57_a57_d57_i57 @atom:489_b57_a57_d57_i57 lj/cut/coul/long 0.17 3.25 + pair_coeff @atom:490_b61_a61_d61_i61 @atom:490_b61_a61_d61_i61 lj/cut/coul/long 0.17 3.25 + pair_coeff @atom:491_b88_a88_d88_i88 @atom:491_b88_a88_d88_i88 lj/cut/coul/long 0.07 3.55 + pair_coeff @atom:492_b87_a87_d87_i87 @atom:492_b87_a87_d87_i87 lj/cut/coul/long 0.07 3.55 + pair_coeff @atom:493_b84_a84_d84_i84 @atom:493_b84_a84_d84_i84 lj/cut/coul/long 0.07 3.55 + pair_coeff @atom:494_b45_a45_d45_i45 @atom:494_b45_a45_d45_i45 lj/cut/coul/long 0.0 0.0 + pair_coeff @atom:495_b49_a49_d49_i49 @atom:495_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42 + pair_coeff @atom:496_b49_a49_d49_i49 @atom:496_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42 + pair_coeff @atom:497_b49_a49_d49_i49 @atom:497_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42 + pair_coeff @atom:498_b57_a57_d57_i57 @atom:498_b57_a57_d57_i57 lj/cut/coul/long 0.17 3.25 + pair_coeff @atom:499_b82_a82_d82_i82 @atom:499_b82_a82_d82_i82 lj/cut/coul/long 0.07 3.55 + pair_coeff @atom:500_b61_a61_d61_i61 @atom:500_b61_a61_d61_i61 lj/cut/coul/long 0.17 3.25 + pair_coeff @atom:501_b83_a83_d83_i83 @atom:501_b83_a83_d83_i83 lj/cut/coul/long 0.07 3.55 + pair_coeff @atom:502_b84_a84_d84_i84 @atom:502_b84_a84_d84_i84 lj/cut/coul/long 0.07 3.55 + pair_coeff @atom:503_b45_a45_d45_i45 @atom:503_b45_a45_d45_i45 lj/cut/coul/long 0.0 0.0 + pair_coeff @atom:504_b49_a49_d49_i49 @atom:504_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42 + pair_coeff @atom:505_b49_a49_d49_i49 @atom:505_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42 + pair_coeff @atom:506_b49_a49_d49_i49 @atom:506_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42 + pair_coeff @atom:507_b20_a20_d20_i20 @atom:507_b20_a20_d20_i20 lj/cut/coul/long 0.14 2.9 + pair_coeff @atom:508_b84_a84_d84_i84 @atom:508_b84_a84_d84_i84 lj/cut/coul/long 0.07 3.55 + pair_coeff @atom:509_b87_a87_d87_i87 @atom:509_b87_a87_d87_i87 lj/cut/coul/long 0.076 3.55 + pair_coeff @atom:510_b49_a49_d49_i49 @atom:510_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42 + pair_coeff @atom:511_b49_a49_d49_i49 @atom:511_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42 + pair_coeff @atom:512_b20_a20_d20_i20 @atom:512_b20_a20_d20_i20 lj/cut/coul/long 0.14 2.9 + pair_coeff @atom:513_b82_a82_d82_i82 @atom:513_b82_a82_d82_i82 lj/cut/coul/long 0.07 3.55 + pair_coeff @atom:514_b61_a61_d61_i61 @atom:514_b61_a61_d61_i61 lj/cut/coul/long 0.17 3.25 + pair_coeff @atom:515_b83_a83_d83_i83 @atom:515_b83_a83_d83_i83 lj/cut/coul/long 0.07 3.55 + pair_coeff @atom:516_b84_a84_d84_i84 @atom:516_b84_a84_d84_i84 lj/cut/coul/long 0.07 3.55 + pair_coeff @atom:517_b49_a49_d49_i49 @atom:517_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42 + pair_coeff @atom:518_b49_a49_d49_i49 @atom:518_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42 + pair_coeff @atom:519_b49_a49_d49_i49 @atom:519_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42 + pair_coeff @atom:520_b20_a20_d20_i20 @atom:520_b20_a20_d20_i20 lj/cut/coul/long 0.14 2.9 + pair_coeff @atom:521_b61_a61_d61_i61 @atom:521_b61_a61_d61_i61 lj/cut/coul/long 0.17 3.25 + pair_coeff @atom:522_b88_a88_d88_i88 @atom:522_b88_a88_d88_i88 lj/cut/coul/long 0.07 3.55 + pair_coeff @atom:523_b87_a87_d87_i87 @atom:523_b87_a87_d87_i87 lj/cut/coul/long 0.07 3.55 + pair_coeff @atom:524_b84_a84_d84_i84 @atom:524_b84_a84_d84_i84 lj/cut/coul/long 0.07 3.55 + pair_coeff @atom:525_b49_a49_d49_i49 @atom:525_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42 + pair_coeff @atom:526_b49_a49_d49_i49 @atom:526_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42 + pair_coeff @atom:527_b49_a49_d49_i49 @atom:527_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42 + pair_coeff @atom:528_b57_a57_d57_i57 @atom:528_b57_a57_d57_i57 lj/cut/coul/long 0.17 3.25 + pair_coeff @atom:529_b84_a84_d84_i84 @atom:529_b84_a84_d84_i84 lj/cut/coul/long 0.07 3.55 + pair_coeff @atom:530_b87_a87_d87_i87 @atom:530_b87_a87_d87_i87 lj/cut/coul/long 0.07 3.55 + pair_coeff @atom:531_b48_a48_d48_i48 @atom:531_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 + pair_coeff @atom:532_b48_a48_d48_i48 @atom:532_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 + pair_coeff @atom:533_b48_a48_d48_i48 @atom:533_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 + pair_coeff @atom:534_b48_a48_d48_i48 @atom:534_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 + pair_coeff @atom:535_b81_a81_d81_i81 @atom:535_b81_a81_d81_i81 lj/cut/coul/long 0.07 3.55 + pair_coeff @atom:536_b60_a60_d60_i60 @atom:536_b60_a60_d60_i60 lj/cut/coul/long 0.07 3.55 + pair_coeff @atom:537_b45_a45_d45_i45 @atom:537_b45_a45_d45_i45 lj/cut/coul/long 0.0 0.0 + pair_coeff @atom:538_b49_a49_d49_i49 @atom:538_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42 + pair_coeff @atom:539_b49_a49_d49_i49 @atom:539_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42 + pair_coeff @atom:540_b49_a49_d49_i49 @atom:540_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42 + pair_coeff @atom:541_b49_a49_d49_i49 @atom:541_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42 + pair_coeff @atom:542_b49_a49_d49_i49 @atom:542_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42 + pair_coeff @atom:543_b49_a49_d49_i49 @atom:543_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42 + pair_coeff @atom:544_b56_a56_d56_i56 @atom:544_b56_a56_d56_i56 lj/cut/coul/long 0.17 3.25 + pair_coeff @atom:545_b48_a48_d48_i48 @atom:545_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 + pair_coeff @atom:546_b48_a48_d48_i48 @atom:546_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 + pair_coeff @atom:547_b48_a48_d48_i48 @atom:547_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 + pair_coeff @atom:548_b48_a48_d48_i48 @atom:548_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 + pair_coeff @atom:549_b48_a48_d48_i48 @atom:549_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 + pair_coeff @atom:550_b48_a48_d48_i48 @atom:550_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 + pair_coeff @atom:551_b48_a48_d48_i48 @atom:551_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 + pair_coeff @atom:552_b48_a48_d48_i48 @atom:552_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 + pair_coeff @atom:553_b48_a48_d48_i48 @atom:553_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 + pair_coeff @atom:554_b49_a49_d49_i49 @atom:554_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42 + pair_coeff @atom:555_b49_a49_d49_i49 @atom:555_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42 + pair_coeff @atom:556_b49_a49_d49_i49 @atom:556_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42 + pair_coeff @atom:557_b49_a49_d49_i49 @atom:557_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42 + pair_coeff @atom:558_b49_a49_d49_i49 @atom:558_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42 + pair_coeff @atom:559_b49_a49_d49_i49 @atom:559_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42 + pair_coeff @atom:560_b49_a49_d49_i49 @atom:560_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42 + pair_coeff @atom:561_b56_a56_d56_i56 @atom:561_b56_a56_d56_i56 lj/cut/coul/long 0.17 3.25 + pair_coeff @atom:562_b59_a59_d59_i59 @atom:562_b59_a59_d59_i59 lj/cut/coul/long 0.07 3.55 + pair_coeff @atom:563_b56_a56_d56_i56 @atom:563_b56_a56_d56_i56 lj/cut/coul/long 0.17 3.25 + pair_coeff @atom:564_b60_a60_d60_i60 @atom:564_b60_a60_d60_i60 lj/cut/coul/long 0.07 3.55 + pair_coeff @atom:565_b60_a60_d60_i60 @atom:565_b60_a60_d60_i60 lj/cut/coul/long 0.07 3.55 + pair_coeff @atom:566_b48_a48_d48_i48 @atom:566_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 + pair_coeff @atom:567_b61_a61_d61_i61 @atom:567_b61_a61_d61_i61 lj/cut/coul/long 0.17 3.25 + pair_coeff @atom:568_b62_a62_d62_i62 @atom:568_b62_a62_d62_i62 lj/cut/coul/long 0.07 3.55 + pair_coeff @atom:569_b57_a57_d57_i57 @atom:569_b57_a57_d57_i57 lj/cut/coul/long 0.17 3.25 + pair_coeff @atom:570_b49_a49_d49_i49 @atom:570_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42 + pair_coeff @atom:571_b49_a49_d49_i49 @atom:571_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42 + pair_coeff @atom:572_b49_a49_d49_i49 @atom:572_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42 + pair_coeff @atom:573_b45_a45_d45_i45 @atom:573_b45_a45_d45_i45 lj/cut/coul/long 0.0 0.0 + pair_coeff @atom:574_b16_a16_d16_i16 @atom:574_b16_a16_d16_i16 lj/cut/coul/long 0.25 3.55 + pair_coeff @atom:575_b82_a82_d82_i82 @atom:575_b82_a82_d82_i82 lj/cut/coul/long 0.07 3.55 + pair_coeff @atom:576_b61_a61_d61_i61 @atom:576_b61_a61_d61_i61 lj/cut/coul/long 0.17 3.25 + pair_coeff @atom:577_b83_a83_d83_i83 @atom:577_b83_a83_d83_i83 lj/cut/coul/long 0.07 3.55 + pair_coeff @atom:578_b84_a84_d84_i84 @atom:578_b84_a84_d84_i84 lj/cut/coul/long 0.07 3.55 + pair_coeff @atom:579_b49_a49_d49_i49 @atom:579_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42 + pair_coeff @atom:580_b49_a49_d49_i49 @atom:580_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42 + pair_coeff @atom:581_b49_a49_d49_i49 @atom:581_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42 + pair_coeff @atom:582_b56_a56_d56_i56 @atom:582_b56_a56_d56_i56 lj/cut/coul/long 0.17 3.25 + pair_coeff @atom:583_b59_a59_d59_i59 @atom:583_b59_a59_d59_i59 lj/cut/coul/long 0.07 3.55 + pair_coeff @atom:584_b49_a49_d49_i49 @atom:584_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42 + pair_coeff @atom:585_b48_a48_d48_i48 @atom:585_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 + pair_coeff @atom:586_b13_a13_d13_i13 @atom:586_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:587_b56_a56_d56_i56 @atom:587_b56_a56_d56_i56 lj/cut/coul/long 0.17 3.25 + pair_coeff @atom:588_b48_a48_d48_i48 @atom:588_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 + pair_coeff @atom:589_b48_a48_d48_i48 @atom:589_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 + pair_coeff @atom:590_b48_a48_d48_i48 @atom:590_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 + pair_coeff @atom:591_b48_a48_d48_i48 @atom:591_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 + pair_coeff @atom:592_b48_a48_d48_i48 @atom:592_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 + pair_coeff @atom:593_b48_a48_d48_i48 @atom:593_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 + pair_coeff @atom:594_b49_a49_d49_i49 @atom:594_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42 + pair_coeff @atom:595_b49_a49_d49_i49 @atom:595_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42 + pair_coeff @atom:596_b49_a49_d49_i49 @atom:596_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42 + pair_coeff @atom:597_b49_a49_d49_i49 @atom:597_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42 + pair_coeff @atom:598_b57_a57_d57_i57 @atom:598_b57_a57_d57_i57 lj/cut/coul/long 0.17 3.25 + pair_coeff @atom:599_b82_a82_d82_i82 @atom:599_b82_a82_d82_i82 lj/cut/coul/long 0.07 3.55 + pair_coeff @atom:600_b61_a61_d61_i61 @atom:600_b61_a61_d61_i61 lj/cut/coul/long 0.17 3.25 + pair_coeff @atom:601_b83_a83_d83_i83 @atom:601_b83_a83_d83_i83 lj/cut/coul/long 0.07 3.55 + pair_coeff @atom:602_b84_a84_d84_i84 @atom:602_b84_a84_d84_i84 lj/cut/coul/long 0.07 3.55 + pair_coeff @atom:603_b13_a13_d13_i13 @atom:603_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:604_b49_a49_d49_i49 @atom:604_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42 + pair_coeff @atom:605_b49_a49_d49_i49 @atom:605_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42 + pair_coeff @atom:606_b49_a49_d49_i49 @atom:606_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42 + pair_coeff @atom:607_b46_a46_d46_i46 @atom:607_b46_a46_d46_i46 lj/cut/coul/long 0.03 2.5 + pair_coeff @atom:608_b13_a13_d13_i13 @atom:608_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:609_b13_a13_d13_i13 @atom:609_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:610_b13_a13_d13_i13 @atom:610_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:611_b13_a13_d13_i13 @atom:611_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:612_b13_a13_d13_i13 @atom:612_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:613_b13_a13_d13_i13 @atom:613_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:614_b13_a13_d13_i13 @atom:614_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:615_b13_a13_d13_i13 @atom:615_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:616_b13_a13_d13_i13 @atom:616_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:617_b13_a13_d13_i13 @atom:617_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:618_b13_a13_d13_i13 @atom:618_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:619_b13_a13_d13_i13 @atom:619_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:620_b13_a13_d13_i13 @atom:620_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:621_b13_a13_d13_i13 @atom:621_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:622_b13_a13_d13_i13 @atom:622_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:623_b15_a15_d15_i15 @atom:623_b15_a15_d15_i15 lj/cut/coul/long 0.25 3.55 + pair_coeff @atom:624_b17_a17_d17_i17 @atom:624_b17_a17_d17_i17 lj/cut/coul/long 0.0 0.0 + pair_coeff @atom:625_b48_a48_d48_i48 @atom:625_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 + pair_coeff @atom:626_b89_a89_d89_i89 @atom:626_b89_a89_d89_i89 lj/cut/coul/long 0.105 3.75 + pair_coeff @atom:627_b90_a90_d90_i90 @atom:627_b90_a90_d90_i90 lj/cut/coul/long 0.17 3.25 + pair_coeff @atom:628_b91_a91_d91_i91 @atom:628_b91_a91_d91_i91 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:629_b91_a91_d91_i91 @atom:629_b91_a91_d91_i91 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:630_b13_a13_d13_i13 @atom:630_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:631_b86_a86_d86_i86 @atom:631_b86_a86_d86_i86 lj/cut/coul/long 0.07 3.55 + pair_coeff @atom:632_b86_a86_d86_i86 @atom:632_b86_a86_d86_i86 lj/cut/coul/long 0.07 3.55 + pair_coeff @atom:633_b86_a86_d86_i86 @atom:633_b86_a86_d86_i86 lj/cut/coul/long 0.07 3.55 + pair_coeff @atom:634_b86_a86_d86_i86 @atom:634_b86_a86_d86_i86 lj/cut/coul/long 0.07 3.55 + pair_coeff @atom:635_b86_a86_d86_i86 @atom:635_b86_a86_d86_i86 lj/cut/coul/long 0.07 3.55 + pair_coeff @atom:636_b86_a86_d86_i86 @atom:636_b86_a86_d86_i86 lj/cut/coul/long 0.07 3.55 + pair_coeff @atom:637_b16_a16_d16_i16 @atom:637_b16_a16_d16_i16 lj/cut/coul/long 0.25 3.55 + pair_coeff @atom:638_b92_a92_d92_i92 @atom:638_b92_a92_d92_i92 lj/cut/coul/long 0.054 3.473 + pair_coeff @atom:639_b93_a93_d93_i93 @atom:639_b93_a93_d93_i93 lj/cut/coul/long 0.05 3.3 + pair_coeff @atom:640_b94_a94_d94_i94 @atom:640_b94_a94_d94_i94 lj/cut/coul/long 0.05 3.3 + pair_coeff @atom:641_b95_a95_d95_i95 @atom:641_b95_a95_d95_i95 lj/cut/coul/long 0.076 3.55 + pair_coeff @atom:642_b13_a13_d13_i13 @atom:642_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:643_b46_a46_d46_i46 @atom:643_b46_a46_d46_i46 lj/cut/coul/long 0.03 2.5 + pair_coeff @atom:644_b96_a96_d96_i96 @atom:644_b96_a96_d96_i96 lj/cut/coul/long 0.06 3.75 + pair_coeff @atom:645_b97_a97_d97_i97 @atom:645_b97_a97_d97_i97 lj/cut/coul/long 0.054 3.473 + pair_coeff @atom:646_b98_a98_d98_i98 @atom:646_b98_a98_d98_i98 lj/cut/coul/long 0.05 3.3 + pair_coeff @atom:647_b99_a99_d99_i99 @atom:647_b99_a99_d99_i99 lj/cut/coul/long 0.05 3.3 + pair_coeff @atom:648_b100_a100_d100_i100 @atom:648_b100_a100_d100_i100 lj/cut/coul/long 0.04 2.95 + pair_coeff @atom:649_b47_a47_d47_i47 @atom:649_b47_a47_d47_i47 lj/cut/coul/long 0.076 3.55 + pair_coeff @atom:650_b21_a21_d21_i21 @atom:650_b21_a21_d21_i21 lj/cut/coul/long 0.3 3.4 + pair_coeff @atom:651_b46_a46_d46_i46 @atom:651_b46_a46_d46_i46 lj/cut/coul/long 0.03 2.42 + pair_coeff @atom:652_b91_a91_d91_i91 @atom:652_b91_a91_d91_i91 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:653_b91_a91_d91_i91 @atom:653_b91_a91_d91_i91 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:654_b91_a91_d91_i91 @atom:654_b91_a91_d91_i91 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:655_b48_a48_d48_i48 @atom:655_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 + pair_coeff @atom:656_b49_a49_d49_i49 @atom:656_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42 + pair_coeff @atom:657_b48_a48_d48_i48 @atom:657_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 + pair_coeff @atom:658_b49_a49_d49_i49 @atom:658_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42 + pair_coeff @atom:659_b48_a48_d48_i48 @atom:659_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 + pair_coeff @atom:660_b1_a1_d1_i1 @atom:660_b1_a1_d1_i1 lj/cut/coul/long 0.061 2.85 + pair_coeff @atom:661_b48_a48_d48_i48 @atom:661_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 + pair_coeff @atom:662_b1_a1_d1_i1 @atom:662_b1_a1_d1_i1 lj/cut/coul/long 0.061 2.85 + pair_coeff @atom:663_b65_a65_d65_i65 @atom:663_b65_a65_d65_i65 lj/cut/coul/long 0.47 3.47 + pair_coeff @atom:664_b2_a2_d2_i2 @atom:664_b2_a2_d2_i2 lj/cut/coul/long 0.118 3.905 + pair_coeff @atom:665_b48_a48_d48_i48 @atom:665_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 + pair_coeff @atom:666_b13_a13_d13_i13 @atom:666_b13_a13_d13_i13 lj/cut/coul/long 0.062 3.25 + pair_coeff @atom:667_b1_a1_d1_i1 @atom:667_b1_a1_d1_i1 lj/cut/coul/long 0.061 2.94 + pair_coeff @atom:668_b48_a48_d48_i48 @atom:668_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 + pair_coeff @atom:669_b1_a1_d1_i1 @atom:669_b1_a1_d1_i1 lj/cut/coul/long 0.061 2.85 + pair_coeff @atom:670_b48_a48_d48_i48 @atom:670_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 + pair_coeff @atom:671_b65_a65_d65_i65 @atom:671_b65_a65_d65_i65 lj/cut/coul/long 0.47 3.47 + pair_coeff @atom:672_b48_a48_d48_i48 @atom:672_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 + pair_coeff @atom:673_b66_a66_d66_i66 @atom:673_b66_a66_d66_i66 lj/cut/coul/long 0.6 3.75 + pair_coeff @atom:674_b91_a91_d91_i91 @atom:674_b91_a91_d91_i91 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:675_b15_a15_d15_i15 @atom:675_b15_a15_d15_i15 lj/cut/coul/long 0.25 3.55 + pair_coeff @atom:676_b48_a48_d48_i48 @atom:676_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 + pair_coeff @atom:677_b48_a48_d48_i48 @atom:677_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 + pair_coeff @atom:678_b48_a48_d48_i48 @atom:678_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 + pair_coeff @atom:679_b48_a48_d48_i48 @atom:679_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 + pair_coeff @atom:680_b48_a48_d48_i48 @atom:680_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 + pair_coeff @atom:681_b49_a49_d49_i49 @atom:681_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42 + pair_coeff @atom:682_b49_a49_d49_i49 @atom:682_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42 + pair_coeff @atom:683_b48_a48_d48_i48 @atom:683_b48_a48_d48_i48 lj/cut/coul/long 0.05 3.55 + pair_coeff @atom:684_b55_a55_d55_i55 @atom:684_b55_a55_d55_i55 lj/cut/coul/long 0.17 3.25 + pair_coeff @atom:685_b45_a45_d45_i45 @atom:685_b45_a45_d45_i45 lj/cut/coul/long 0.0 0.0 + pair_coeff @atom:686_b45_a45_d45_i45 @atom:686_b45_a45_d45_i45 lj/cut/coul/long 0.0 0.0 + pair_coeff @atom:687_b49_a49_d49_i49 @atom:687_b49_a49_d49_i49 lj/cut/coul/long 0.03 2.42 + pair_coeff @atom:688_b13_a13_d13_i13 @atom:688_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:689_b13_a13_d13_i13 @atom:689_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:690_b101_a101_d101_i101 @atom:690_b101_a101_d101_i101 lj/cut/coul/long 0.17 3.25 + pair_coeff @atom:691_b56_a56_d56_i56 @atom:691_b56_a56_d56_i56 lj/cut/coul/long 0.17 3.25 + pair_coeff @atom:692_b101_a101_d101_i101 @atom:692_b101_a101_d101_i101 lj/cut/coul/long 0.17 3.25 + pair_coeff @atom:693_b48_a48_d48_i48 @atom:693_b48_a48_d48_i48 lj/cut/coul/long 0.05 3.55 + pair_coeff @atom:694_b18_a18_d18_i18 @atom:694_b18_a18_d18_i18 lj/cut/coul/long 0.17 3.2 + pair_coeff @atom:695_b19_a19_d19_i19 @atom:695_b19_a19_d19_i19 lj/cut/coul/long 0.066 3.3 + pair_coeff @atom:696_b13_a13_d13_i13 @atom:696_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.3 + pair_coeff @atom:697_b13_a13_d13_i13 @atom:697_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.3 + pair_coeff @atom:698_b13_a13_d13_i13 @atom:698_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.3 + pair_coeff @atom:699_b13_a13_d13_i13 @atom:699_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.3 + pair_coeff @atom:700_b46_a46_d46_i46 @atom:700_b46_a46_d46_i46 lj/cut/coul/long 0.015 2.5 + pair_coeff @atom:701_b102_a102_d102_i102 @atom:701_b102_a102_d102_i102 lj/cut/coul/long 0.12 3.25 + pair_coeff @atom:702_b103_a103_d103_i103 @atom:702_b103_a103_d103_i103 lj/cut/coul/long 0.17 2.96 + pair_coeff @atom:703_b13_a13_d13_i13 @atom:703_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:704_b46_a46_d46_i46 @atom:704_b46_a46_d46_i46 lj/cut/coul/long 0.015 2.5 + pair_coeff @atom:705_b13_a13_d13_i13 @atom:705_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:706_b13_a13_d13_i13 @atom:706_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:707_b13_a13_d13_i13 @atom:707_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:708_b102_a102_d102_i102 @atom:708_b102_a102_d102_i102 lj/cut/coul/long 0.12 3.25 + pair_coeff @atom:709_b48_a48_d48_i48 @atom:709_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 + pair_coeff @atom:710_b13_a13_d13_i13 @atom:710_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.3 + pair_coeff @atom:711_b56_a56_d56_i56 @atom:711_b56_a56_d56_i56 lj/cut/coul/long 0.17 3.25 + pair_coeff @atom:712_b4_a4_d4_i4 @atom:712_b4_a4_d4_i4 lj/cut/coul/long 0.21 2.96 + pair_coeff @atom:713_b3_a3_d3_i3 @atom:713_b3_a3_d3_i3 lj/cut/coul/long 0.105 3.75 + pair_coeff @atom:714_b20_a20_d20_i20 @atom:714_b20_a20_d20_i20 lj/cut/coul/long 0.17 3.0 + pair_coeff @atom:715_b13_a13_d13_i13 @atom:715_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:716_b13_a13_d13_i13 @atom:716_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:717_b13_a13_d13_i13 @atom:717_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:718_b46_a46_d46_i46 @atom:718_b46_a46_d46_i46 lj/cut/coul/long 0.015 2.42 + pair_coeff @atom:719_b46_a46_d46_i46 @atom:719_b46_a46_d46_i46 lj/cut/coul/long 0.015 2.42 + pair_coeff @atom:720_b46_a46_d46_i46 @atom:720_b46_a46_d46_i46 lj/cut/coul/long 0.015 2.42 + pair_coeff @atom:721_b20_a20_d20_i20 @atom:721_b20_a20_d20_i20 lj/cut/coul/long 0.14 2.9 + pair_coeff @atom:722_b104_a104_d104_i104 @atom:722_b104_a104_d104_i104 lj/cut/coul/long 0.2 3.74 + pair_coeff @atom:723_b13_a13_d13_i13 @atom:723_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:724_b13_a13_d13_i13 @atom:724_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:725_b46_a46_d46_i46 @atom:725_b46_a46_d46_i46 lj/cut/coul/long 0.03 2.5 + pair_coeff @atom:726_b64_a64_d64_i64 @atom:726_b64_a64_d64_i64 lj/cut/coul/long 0.2 3.74 + pair_coeff @atom:727_b1_a1_d1_i1 @atom:727_b1_a1_d1_i1 lj/cut/coul/long 0.061 3.1181 + pair_coeff @atom:728_b24_a24_d24_i24 @atom:728_b24_a24_d24_i24 lj/cut/coul/long 0.17 3.15 + pair_coeff @atom:729_b4_a4_d4_i4 @atom:729_b4_a4_d4_i4 lj/cut/coul/long 0.21 2.86 + pair_coeff @atom:730_b44_a44_d44_i44 @atom:730_b44_a44_d44_i44 lj/cut/coul/long 0.17 3.3 + pair_coeff @atom:731_b44_a44_d44_i44 @atom:731_b44_a44_d44_i44 lj/cut/coul/long 0.17 3.3 + pair_coeff @atom:732_b44_a44_d44_i44 @atom:732_b44_a44_d44_i44 lj/cut/coul/long 0.17 3.3 + pair_coeff @atom:733_b13_a13_d13_i13 @atom:733_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:734_b13_a13_d13_i13 @atom:734_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:735_b13_a13_d13_i13 @atom:735_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:736_b13_a13_d13_i13 @atom:736_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:737_b13_a13_d13_i13 @atom:737_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:738_b13_a13_d13_i13 @atom:738_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:739_b45_a45_d45_i45 @atom:739_b45_a45_d45_i45 lj/cut/coul/long 0.0 0.0 + pair_coeff @atom:740_b45_a45_d45_i45 @atom:740_b45_a45_d45_i45 lj/cut/coul/long 0.0 0.0 + pair_coeff @atom:741_b46_a46_d46_i46 @atom:741_b46_a46_d46_i46 lj/cut/coul/long 0.015 2.5 + pair_coeff @atom:742_b13_a13_d13_i13 @atom:742_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:743_b13_a13_d13_i13 @atom:743_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:744_b13_a13_d13_i13 @atom:744_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:745_b13_a13_d13_i13 @atom:745_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:746_b48_a48_d48_i48 @atom:746_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 + pair_coeff @atom:747_b48_a48_d48_i48 @atom:747_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 + pair_coeff @atom:748_b48_a48_d48_i48 @atom:748_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 + pair_coeff @atom:749_b13_a13_d13_i13 @atom:749_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:750_b13_a13_d13_i13 @atom:750_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:751_b13_a13_d13_i13 @atom:751_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:752_b13_a13_d13_i13 @atom:752_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:753_b13_a13_d13_i13 @atom:753_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:754_b13_a13_d13_i13 @atom:754_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:755_b19_a19_d19_i19 @atom:755_b19_a19_d19_i19 lj/cut/coul/long 0.086 3.3 + pair_coeff @atom:756_b46_a46_d46_i46 @atom:756_b46_a46_d46_i46 lj/cut/coul/long 0.015 2.42 + pair_coeff @atom:757_b19_a19_d19_i19 @atom:757_b19_a19_d19_i19 lj/cut/coul/long 0.21 3.3 + pair_coeff @atom:758_b19_a19_d19_i19 @atom:758_b19_a19_d19_i19 lj/cut/coul/long 0.135 3.3 + pair_coeff @atom:759_b19_a19_d19_i19 @atom:759_b19_a19_d19_i19 lj/cut/coul/long 0.1 3.3 + pair_coeff @atom:760_b46_a46_d46_i46 @atom:760_b46_a46_d46_i46 lj/cut/coul/long 0.015 2.5 + pair_coeff @atom:761_b51_a51_d51_i51 @atom:761_b51_a51_d51_i51 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:762_b51_a51_d51_i51 @atom:762_b51_a51_d51_i51 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:763_b51_a51_d51_i51 @atom:763_b51_a51_d51_i51 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:764_b5_a5_d5_i5 @atom:764_b5_a5_d5_i5 lj/cut/coul/long 0.17 3.12 + pair_coeff @atom:765_b7_a7_d7_i7 @atom:765_b7_a7_d7_i7 lj/cut/coul/long 0.0 0.0 + pair_coeff @atom:766_b105_a105_d105_i105 @atom:766_b105_a105_d105_i105 lj/cut/coul/long 0.17 3.25 + pair_coeff @atom:767_b105_a105_d105_i105 @atom:767_b105_a105_d105_i105 lj/cut/coul/long 0.17 3.25 + pair_coeff @atom:768_b105_a105_d105_i105 @atom:768_b105_a105_d105_i105 lj/cut/coul/long 0.17 3.25 + pair_coeff @atom:769_b19_a19_d19_i19 @atom:769_b19_a19_d19_i19 lj/cut/coul/long 0.21 3.3 + pair_coeff @atom:770_b53_a53_d53_i53 @atom:770_b53_a53_d53_i53 lj/cut/coul/long 0.17 3.25 + pair_coeff @atom:771_b54_a54_d54_i54 @atom:771_b54_a54_d54_i54 lj/cut/coul/long 0.0 0.0 + pair_coeff @atom:772_b13_a13_d13_i13 @atom:772_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:773_b13_a13_d13_i13 @atom:773_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:774_b13_a13_d13_i13 @atom:774_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:775_b13_a13_d13_i13 @atom:775_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:776_b84_a84_d84_i84 @atom:776_b84_a84_d84_i84 lj/cut/coul/long 0.07 3.55 + pair_coeff @atom:777_b87_a87_d87_i87 @atom:777_b87_a87_d87_i87 lj/cut/coul/long 0.076 3.55 + pair_coeff @atom:778_b86_a86_d86_i86 @atom:778_b86_a86_d86_i86 lj/cut/coul/long 0.07 3.55 + pair_coeff @atom:779_b86_a86_d86_i86 @atom:779_b86_a86_d86_i86 lj/cut/coul/long 0.07 3.55 + pair_coeff @atom:780_b46_a46_d46_i46 @atom:780_b46_a46_d46_i46 lj/cut/coul/long 0.03 2.5 + pair_coeff @atom:781_b13_a13_d13_i13 @atom:781_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:782_b3_a3_d3_i3 @atom:782_b3_a3_d3_i3 lj/cut/coul/long 0.105 3.75 + pair_coeff @atom:783_b53_a53_d53_i53 @atom:783_b53_a53_d53_i53 lj/cut/coul/long 0.17 3.25 + pair_coeff @atom:784_b52_a52_d52_i52 @atom:784_b52_a52_d52_i52 lj/cut/coul/long 0.21 2.96 + pair_coeff @atom:785_b54_a54_d54_i54 @atom:785_b54_a54_d54_i54 lj/cut/coul/long 0.0 0.0 + pair_coeff @atom:786_b1_a1_d1_i1 @atom:786_b1_a1_d1_i1 lj/cut/coul/long 0.061 2.94 + pair_coeff @atom:787_b13_a13_d13_i13 @atom:787_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:788_b46_a46_d46_i46 @atom:788_b46_a46_d46_i46 lj/cut/coul/long 0.03 2.5 + pair_coeff @atom:789_b13_a13_d13_i13 @atom:789_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:790_b13_a13_d13_i13 @atom:790_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:791_b13_a13_d13_i13 @atom:791_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:792_b13_a13_d13_i13 @atom:792_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:793_b13_a13_d13_i13 @atom:793_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:794_b13_a13_d13_i13 @atom:794_b13_a13_d13_i13 lj/cut/coul/long 0.097 3.5 + pair_coeff @atom:795_b1_a1_d1_i1 @atom:795_b1_a1_d1_i1 lj/cut/coul/long 0.053 2.95 + pair_coeff @atom:796_b13_a13_d13_i13 @atom:796_b13_a13_d13_i13 lj/cut/coul/long 0.062 3.25 + pair_coeff @atom:797_b46_a46_d46_i46 @atom:797_b46_a46_d46_i46 lj/cut/coul/long 0.03 2.5 + pair_coeff @atom:798_b13_a13_d13_i13 @atom:798_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:799_b13_a13_d13_i13 @atom:799_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:800_b21_a21_d21_i21 @atom:800_b21_a21_d21_i21 lj/cut/coul/long 0.3 3.4 + pair_coeff @atom:801_b13_a13_d13_i13 @atom:801_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:802_b46_a46_d46_i46 @atom:802_b46_a46_d46_i46 lj/cut/coul/long 0.03 2.5 + pair_coeff @atom:803_b13_a13_d13_i13 @atom:803_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:804_b13_a13_d13_i13 @atom:804_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:805_b65_a65_d65_i65 @atom:805_b65_a65_d65_i65 lj/cut/coul/long 0.47 3.47 + pair_coeff @atom:806_b13_a13_d13_i13 @atom:806_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:807_b46_a46_d46_i46 @atom:807_b46_a46_d46_i46 lj/cut/coul/long 0.03 2.5 + pair_coeff @atom:808_b13_a13_d13_i13 @atom:808_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:809_b13_a13_d13_i13 @atom:809_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:810_b1_a1_d1_i1 @atom:810_b1_a1_d1_i1 lj/cut/coul/long 0.061 2.94 + pair_coeff @atom:811_b21_a21_d21_i21 @atom:811_b21_a21_d21_i21 lj/cut/coul/long 0.3 3.4 + pair_coeff @atom:812_b65_a65_d65_i65 @atom:812_b65_a65_d65_i65 lj/cut/coul/long 0.47 3.47 + pair_coeff @atom:813_b48_a48_d48_i48 @atom:813_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 + pair_coeff @atom:814_b20_a20_d20_i20 @atom:814_b20_a20_d20_i20 lj/cut/coul/long 0.14 2.9 + pair_coeff @atom:815_b13_a13_d13_i13 @atom:815_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:816_b1_a1_d1_i1 @atom:816_b1_a1_d1_i1 lj/cut/coul/long 0.06 2.9 + pair_coeff @atom:817_b24_a24_d24_i24 @atom:817_b24_a24_d24_i24 lj/cut/coul/long 0.17 3.25 + pair_coeff @atom:818_b48_a48_d48_i48 @atom:818_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 + pair_coeff @atom:819_b13_a13_d13_i13 @atom:819_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:820_b3_a3_d3_i3 @atom:820_b3_a3_d3_i3 lj/cut/coul/long 0.105 3.75 + pair_coeff @atom:821_b3_a3_d3_i3 @atom:821_b3_a3_d3_i3 lj/cut/coul/long 0.105 3.75 + pair_coeff @atom:822_b4_a4_d4_i4 @atom:822_b4_a4_d4_i4 lj/cut/coul/long 0.21 2.96 + pair_coeff @atom:823_b24_a24_d24_i24 @atom:823_b24_a24_d24_i24 lj/cut/coul/long 0.17 3.25 + pair_coeff @atom:824_b45_a45_d45_i45 @atom:824_b45_a45_d45_i45 lj/cut/coul/long 0.0 0.0 + pair_coeff @atom:825_b5_a5_d5_i5 @atom:825_b5_a5_d5_i5 lj/cut/coul/long 0.17 3.12 + pair_coeff @atom:826_b7_a7_d7_i7 @atom:826_b7_a7_d7_i7 lj/cut/coul/long 0.0 0.0 + pair_coeff @atom:827_b13_a13_d13_i13 @atom:827_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:828_b13_a13_d13_i13 @atom:828_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:829_b86_a86_d86_i86 @atom:829_b86_a86_d86_i86 lj/cut/coul/long 0.07 3.55 + pair_coeff @atom:830_b86_a86_d86_i86 @atom:830_b86_a86_d86_i86 lj/cut/coul/long 0.07 3.55 + pair_coeff @atom:831_b86_a86_d86_i86 @atom:831_b86_a86_d86_i86 lj/cut/coul/long 0.07 3.55 + pair_coeff @atom:832_b86_a86_d86_i86 @atom:832_b86_a86_d86_i86 lj/cut/coul/long 0.07 3.55 + pair_coeff @atom:833_b48_a48_d48_i48 @atom:833_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 + pair_coeff @atom:834_b106_a106_d106_i106 @atom:834_b106_a106_d106_i106 lj/cut/coul/long 0.0125 1.96 + pair_coeff @atom:835_b13_a13_d13_i13 @atom:835_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:836_b13_a13_d13_i13 @atom:836_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:837_b13_a13_d13_i13 @atom:837_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:838_b66_a66_d66_i66 @atom:838_b66_a66_d66_i66 lj/cut/coul/long 0.6 3.75 + pair_coeff @atom:839_b46_a46_d46_i46 @atom:839_b46_a46_d46_i46 lj/cut/coul/long 0.03 2.5 + pair_coeff @atom:840_b24_a24_d24_i24 @atom:840_b24_a24_d24_i24 lj/cut/coul/long 0.17 3.25 + pair_coeff @atom:841_b48_a48_d48_i48 @atom:841_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 + pair_coeff @atom:842_b48_a48_d48_i48 @atom:842_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 + pair_coeff @atom:843_b24_a24_d24_i24 @atom:843_b24_a24_d24_i24 lj/cut/coul/long 0.17 3.25 + pair_coeff @atom:844_b48_a48_d48_i48 @atom:844_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 + pair_coeff @atom:845_b3_a3_d3_i3 @atom:845_b3_a3_d3_i3 lj/cut/coul/long 0.105 3.75 + pair_coeff @atom:846_b4_a4_d4_i4 @atom:846_b4_a4_d4_i4 lj/cut/coul/long 0.21 2.96 + pair_coeff @atom:847_b107_a107_d107_i107 @atom:847_b107_a107_d107_i107 lj/cut/coul/long 0.17 3.25 + pair_coeff @atom:848_b13_a13_d13_i13 @atom:848_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:849_b13_a13_d13_i13 @atom:849_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:850_b13_a13_d13_i13 @atom:850_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:851_b13_a13_d13_i13 @atom:851_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:852_b46_a46_d46_i46 @atom:852_b46_a46_d46_i46 lj/cut/coul/long 0.015 2.42 + pair_coeff @atom:853_b3_a3_d3_i3 @atom:853_b3_a3_d3_i3 lj/cut/coul/long 0.105 3.75 + pair_coeff @atom:854_b4_a4_d4_i4 @atom:854_b4_a4_d4_i4 lj/cut/coul/long 0.21 2.96 + pair_coeff @atom:855_b46_a46_d46_i46 @atom:855_b46_a46_d46_i46 lj/cut/coul/long 0.015 2.42 + pair_coeff @atom:856_b13_a13_d13_i13 @atom:856_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:857_b13_a13_d13_i13 @atom:857_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:858_b13_a13_d13_i13 @atom:858_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:859_b13_a13_d13_i13 @atom:859_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:860_b13_a13_d13_i13 @atom:860_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:861_b13_a13_d13_i13 @atom:861_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:862_b13_a13_d13_i13 @atom:862_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:863_b13_a13_d13_i13 @atom:863_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:864_b13_a13_d13_i13 @atom:864_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:865_b13_a13_d13_i13 @atom:865_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:866_b108_a108_d108_i108 @atom:866_b108_a108_d108_i108 lj/cut/coul/long 0.1 4.0 + pair_coeff @atom:867_b108_a108_d108_i108 @atom:867_b108_a108_d108_i108 lj/cut/coul/long 0.1 4.0 + pair_coeff @atom:868_b108_a108_d108_i108 @atom:868_b108_a108_d108_i108 lj/cut/coul/long 0.1 4.0 + pair_coeff @atom:869_b108_a108_d108_i108 @atom:869_b108_a108_d108_i108 lj/cut/coul/long 0.1 4.0 + pair_coeff @atom:870_b45_a45_d45_i45 @atom:870_b45_a45_d45_i45 lj/cut/coul/long 0.03 2.5 + pair_coeff @atom:871_b13_a13_d13_i13 @atom:871_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:872_b13_a13_d13_i13 @atom:872_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:873_b13_a13_d13_i13 @atom:873_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:874_b13_a13_d13_i13 @atom:874_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:875_b1_a1_d1_i1 @atom:875_b1_a1_d1_i1 lj/cut/coul/long 0.72 3.08 + pair_coeff @atom:876_b21_a21_d21_i21 @atom:876_b21_a21_d21_i21 lj/cut/coul/long 0.11779 4.18 + pair_coeff @atom:877_b65_a65_d65_i65 @atom:877_b65_a65_d65_i65 lj/cut/coul/long 0.09 4.51 + pair_coeff @atom:878_b66_a66_d66_i66 @atom:878_b66_a66_d66_i66 lj/cut/coul/long 0.07 5.15 + pair_coeff @atom:879_b68_a68_d68_i68 @atom:879_b68_a68_d68_i68 lj/cut/coul/long 0.018279 2.7 + pair_coeff @atom:880_b69_a69_d69_i69 @atom:880_b69_a69_d69_i69 lj/cut/coul/long 0.002772 3.35 + pair_coeff @atom:881_b70_a70_d70_i70 @atom:881_b70_a70_d70_i70 lj/cut/coul/long 0.000328 4.06 + pair_coeff @atom:882_b71_a71_d71_i71 @atom:882_b71_a71_d71_i71 lj/cut/coul/long 0.000171 4.32 + pair_coeff @atom:883_b72_a72_d72_i72 @atom:883_b72_a72_d72_i72 lj/cut/coul/long 8.1e-05 4.82 + pair_coeff @atom:884_b73_a73_d73_i73 @atom:884_b73_a73_d73_i73 lj/cut/coul/long 0.875044 2.91 + pair_coeff @atom:885_b74_a74_d74_i74 @atom:885_b74_a74_d74_i74 lj/cut/coul/long 0.449657 3.47 + pair_coeff @atom:886_b75_a75_d75_i75 @atom:886_b75_a75_d75_i75 lj/cut/coul/long 0.118226 3.82 + pair_coeff @atom:887_b76_a76_d76_i76 @atom:887_b76_a76_d76_i76 lj/cut/coul/long 0.047096 4.18 + pair_coeff @atom:888_b13_a13_d13_i13 @atom:888_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:889_b13_a13_d13_i13 @atom:889_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:890_b13_a13_d13_i13 @atom:890_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:891_b13_a13_d13_i13 @atom:891_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + pair_coeff @atom:892_b46_a46_d46_i46 @atom:892_b46_a46_d46_i46 lj/cut/coul/long 0.03 2.5 + pair_coeff @atom:893_b53_a53_d53_i53 @atom:893_b53_a53_d53_i53 lj/cut/coul/long 0.17 3.25 + pair_coeff @atom:894_b48_a48_d48_i48 @atom:894_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 + pair_coeff @atom:895_b53_a53_d53_i53 @atom:895_b53_a53_d53_i53 lj/cut/coul/long 0.17 3.25 + pair_coeff @atom:896_b48_a48_d48_i48 @atom:896_b48_a48_d48_i48 lj/cut/coul/long 0.07 3.55 + pair_coeff @atom:897_b109_a109_d109_i109 @atom:897_b109_a109_d109_i109 lj/cut/coul/long 0.076 3.55 + pair_coeff @atom:898_b109_a109_d109_i109 @atom:898_b109_a109_d109_i109 lj/cut/coul/long 0.076 3.55 + pair_coeff @atom:899_b46_a46_d46_i46 @atom:899_b46_a46_d46_i46 lj/cut/coul/long 0.03 2.42 + pair_coeff @atom:900_b47_a47_d47_i47 @atom:900_b47_a47_d47_i47 lj/cut/coul/long 0.086 3.3 + pair_coeff @atom:901_b47_a47_d47_i47 @atom:901_b47_a47_d47_i47 lj/cut/coul/long 0.086 3.3 + pair_coeff @atom:902_b47_a47_d47_i47 @atom:902_b47_a47_d47_i47 lj/cut/coul/long 0.086 3.3 + pair_coeff @atom:903_b110_a110_d110_i110 @atom:903_b110_a110_d110_i110 lj/cut/coul/long 0.086 3.3 + pair_coeff @atom:904_b110_a110_d110_i110 @atom:904_b110_a110_d110_i110 lj/cut/coul/long 0.086 3.3 + pair_coeff @atom:905_b4_a4_d4_i4 @atom:905_b4_a4_d4_i4 lj/cut/coul/long 0.21 2.96 + pair_coeff @atom:906_b13_a13_d13_i13 @atom:906_b13_a13_d13_i13 lj/cut/coul/long 0.066 3.5 + } #(end of pair_coeffs) + + + + # ------- Bonded Interactions: ------- + # http://lammps.sandia.gov/doc/bond_harmonic.html + # Syntax: + # bond_coeff BondTypeName BondStyle parameters... + write_once("In Settings") { bond_coeff @bond:1-2 harmonic 367.0 1.38 bond_coeff @bond:1-3 harmonic 420.0 1.357 @@ -4046,6 +4073,10 @@ OPLSAA { bond_coeff @bond:109-109 harmonic 549.0 1.345 } #(end of bond_coeffs) + # Rules for assigning bond types by atom type: + # BondTypeName AtomType1 AtomType2 + # (* = wildcard) + write_once("Data Bonds By Type") { @bond:1-2 @atom:*_b1_a*_d*_i* @atom:*_b2_a*_d*_i* @bond:1-3 @atom:*_b1_a*_d*_i* @atom:*_b3_a*_d*_i* @@ -4429,6 +4460,13 @@ OPLSAA { } #(end of bonds by type) + + + # ------- Angle Interactions: ------- + # http://lammps.sandia.gov/doc/angle_harmonic.html + # Syntax: + # angle_coeff AngleTypeName AngleStyle parameters... + write_once("In Settings") { angle_coeff @angle:25-1-25 harmonic 33.0 109.47 angle_coeff @angle:1-2-2 harmonic 50.0 109.5 @@ -5449,6 +5487,10 @@ OPLSAA { angle_coeff @angle:47-110-47 harmonic 160.0 180.0 } #(end of angle_coeffs) + # Rules for creating angle interactions according to atom type: + # AngleTypeName AtomType1 AtomType2 AtomType3 + # (* = wildcard) + write_once("Data Angles By Type") { @angle:25-1-25 @atom:*_b*_a25_d*_i* @atom:*_b*_a1_d*_i* @atom:*_b*_a25_d*_i* @angle:1-2-2 @atom:*_b*_a1_d*_i* @atom:*_b*_a2_d*_i* @atom:*_b*_a2_d*_i* @@ -6470,6 +6512,13 @@ OPLSAA { } #(end of angles by type) + + + # ----------- Dihedral Interactions: ------------ + # http://lammps.sandia.gov/doc/dihedral_opls.html + # Syntax: + # dihedral_coeff DihedralTypeName DihedralStyle parameters... + write_once("In Settings") { dihedral_coeff @dihedral:X-2-2-2 opls -2.5 1.25 3.1 0.0 dihedral_coeff @dihedral:X-2-2-6 opls -2.5 1.25 3.1 0.0 @@ -6744,11 +6793,6 @@ OPLSAA { dihedral_coeff @dihedral:46-13-20-48 opls 0.0 0.0 0.76 0.0 dihedral_coeff @dihedral:46-13-20-51 opls 0.0 0.0 0.76 0.0 dihedral_coeff @dihedral:46-13-20-64 opls 0.0 0.0 0.3 0.0 - dihedral_coeff @dihedral:13-13-44-13 opls 0.416 -0.128 0.695 0.0 - dihedral_coeff @dihedral:13-13-44-45 opls -0.19 -0.417 0.418 0.0 - dihedral_coeff @dihedral:46-13-44-13 opls 0.0 0.0 0.56 0.0 - dihedral_coeff @dihedral:46-13-44-45 opls 0.0 0.0 0.4 0.0 - dihedral_coeff @dihedral:46-13-44-48 opls 0.0 0.0 0.56 0.0 dihedral_coeff @dihedral:X-13-24-45 opls 0.0 0.0 0.0 0.0 dihedral_coeff @dihedral:3-13-24-3 opls -2.365 0.912 -0.85 0.0 dihedral_coeff @dihedral:3-13-24-13 opls -1.737 1.251 -3.501 0.0 @@ -6765,6 +6809,11 @@ OPLSAA { dihedral_coeff @dihedral:46-13-24-48 opls 0.0 0.0 0.0 0.0 dihedral_coeff @dihedral:46-13-24-79 opls 1.362 -1.457 0.149 0.0 dihedral_coeff @dihedral:48-13-24-59 opls 0.0 0.0 0.0 0.0 + dihedral_coeff @dihedral:13-13-44-13 opls 0.416 -0.128 0.695 0.0 + dihedral_coeff @dihedral:13-13-44-45 opls -0.19 -0.417 0.418 0.0 + dihedral_coeff @dihedral:46-13-44-13 opls 0.0 0.0 0.56 0.0 + dihedral_coeff @dihedral:46-13-44-45 opls 0.0 0.0 0.4 0.0 + dihedral_coeff @dihedral:46-13-44-48 opls 0.0 0.0 0.56 0.0 dihedral_coeff @dihedral:X-13-47-13 opls 1.711 -0.5 0.663 0.0 dihedral_coeff @dihedral:X-13-47-46 opls 0.0 0.0 0.468 0.0 dihedral_coeff @dihedral:X-13-47-47 opls 0.5 0.0 0.0 0.0 @@ -6937,18 +6986,6 @@ OPLSAA { dihedral_coeff @dihedral:84-20-84-87 opls 0.0 7.25 0.0 0.0 dihedral_coeff @dihedral:108-20-108-13 opls 0.0 0.0 0.0 0.0 dihedral_coeff @dihedral:108-20-108-20 opls 0.0 0.0 0.0 0.0 - dihedral_coeff @dihedral:13-44-44-13 opls 0.0 0.0 0.3 0.0 - dihedral_coeff @dihedral:13-44-44-45 opls 0.0 0.0 0.3 0.0 - dihedral_coeff @dihedral:45-44-44-45 opls 0.0 0.0 0.3 0.0 - dihedral_coeff @dihedral:13-44-48-48 opls -7.582 3.431 3.198 0.0 - dihedral_coeff @dihedral:45-44-48-48 opls 0.0 2.03 0.0 0.0 - dihedral_coeff @dihedral:59-44-48-48 opls 0.0 2.1 0.0 0.0 - dihedral_coeff @dihedral:82-44-48-48 opls 0.0 2.1 0.0 0.0 - dihedral_coeff @dihedral:84-44-48-48 opls 0.0 2.1 0.0 0.0 - dihedral_coeff @dihedral:45-44-82-16 opls 0.0 2.1 0.0 0.0 - dihedral_coeff @dihedral:45-44-82-61 opls 0.0 2.1 0.0 0.0 - dihedral_coeff @dihedral:48-44-82-16 opls 0.0 2.1 0.0 0.0 - dihedral_coeff @dihedral:48-44-82-61 opls 0.0 2.1 0.0 0.0 dihedral_coeff @dihedral:X-24-48-48 opls 0.0 2.1 0.0 0.0 dihedral_coeff @dihedral:3-24-48-48 opls 0.0 2.1 0.0 0.0 dihedral_coeff @dihedral:13-24-48-48 opls 0.0 2.1 0.0 0.0 @@ -6990,6 +7027,18 @@ OPLSAA { dihedral_coeff @dihedral:45-24-91-89 opls 0.0 0.0 0.0 0.0 dihedral_coeff @dihedral:45-24-91-91 opls 0.0 0.0 0.0 0.0 dihedral_coeff @dihedral:X-24-106-X opls 0.0 0.0 0.0 0.0 + dihedral_coeff @dihedral:13-44-44-13 opls 0.0 0.0 0.3 0.0 + dihedral_coeff @dihedral:13-44-44-45 opls 0.0 0.0 0.3 0.0 + dihedral_coeff @dihedral:45-44-44-45 opls 0.0 0.0 0.3 0.0 + dihedral_coeff @dihedral:13-44-48-48 opls -7.582 3.431 3.198 0.0 + dihedral_coeff @dihedral:45-44-48-48 opls 0.0 2.03 0.0 0.0 + dihedral_coeff @dihedral:59-44-48-48 opls 0.0 2.1 0.0 0.0 + dihedral_coeff @dihedral:82-44-48-48 opls 0.0 2.1 0.0 0.0 + dihedral_coeff @dihedral:84-44-48-48 opls 0.0 2.1 0.0 0.0 + dihedral_coeff @dihedral:45-44-82-16 opls 0.0 2.1 0.0 0.0 + dihedral_coeff @dihedral:45-44-82-61 opls 0.0 2.1 0.0 0.0 + dihedral_coeff @dihedral:48-44-82-16 opls 0.0 2.1 0.0 0.0 + dihedral_coeff @dihedral:48-44-82-61 opls 0.0 2.1 0.0 0.0 dihedral_coeff @dihedral:47-46-47-13 opls 0.0 -8.0 0.0 0.0 dihedral_coeff @dihedral:47-46-47-46 opls 0.0 -8.0 0.0 0.0 dihedral_coeff @dihedral:X-47-47-X opls 0.0 14.0 0.0 0.0 @@ -7273,6 +7322,10 @@ OPLSAA { dihedral_coeff @dihedral:13-13-13-47 opls 1.3 -0.05 0.2 0.0 } #(end of dihedral_coeffs) + # Rules for creating dihedral interactions according to atom type: + # DihedralTypeName AtomType1 AtomType2 AtomType3 AtomType4 + # (* = wildcard) + write_once("Data Dihedrals By Type") { @dihedral:X-2-2-2 @atom:* @atom:*_b*_a*_d2_i* @atom:*_b*_a*_d2_i* @atom:*_b*_a*_d2_i* @dihedral:X-2-2-6 @atom:* @atom:*_b*_a*_d2_i* @atom:*_b*_a*_d2_i* @atom:*_b*_a*_d6_i* @@ -7547,11 +7600,6 @@ OPLSAA { @dihedral:46-13-20-48 @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d13_i* @atom:*_b*_a*_d20_i* @atom:*_b*_a*_d48_i* @dihedral:46-13-20-51 @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d13_i* @atom:*_b*_a*_d20_i* @atom:*_b*_a*_d51_i* @dihedral:46-13-20-64 @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d13_i* @atom:*_b*_a*_d20_i* @atom:*_b*_a*_d64_i* - @dihedral:13-13-44-13 @atom:*_b*_a*_d13_i* @atom:*_b*_a*_d13_i* @atom:*_b*_a*_d44_i* @atom:*_b*_a*_d13_i* - @dihedral:13-13-44-45 @atom:*_b*_a*_d13_i* @atom:*_b*_a*_d13_i* @atom:*_b*_a*_d44_i* @atom:*_b*_a*_d45_i* - @dihedral:46-13-44-13 @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d13_i* @atom:*_b*_a*_d44_i* @atom:*_b*_a*_d13_i* - @dihedral:46-13-44-45 @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d13_i* @atom:*_b*_a*_d44_i* @atom:*_b*_a*_d45_i* - @dihedral:46-13-44-48 @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d13_i* @atom:*_b*_a*_d44_i* @atom:*_b*_a*_d48_i* @dihedral:X-13-24-45 @atom:* @atom:*_b*_a*_d13_i* @atom:*_b*_a*_d24_i* @atom:*_b*_a*_d45_i* @dihedral:3-13-24-3 @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d13_i* @atom:*_b*_a*_d24_i* @atom:*_b*_a*_d3_i* @dihedral:3-13-24-13 @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d13_i* @atom:*_b*_a*_d24_i* @atom:*_b*_a*_d13_i* @@ -7568,6 +7616,11 @@ OPLSAA { @dihedral:46-13-24-48 @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d13_i* @atom:*_b*_a*_d24_i* @atom:*_b*_a*_d48_i* @dihedral:46-13-24-79 @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d13_i* @atom:*_b*_a*_d24_i* @atom:*_b*_a*_d79_i* @dihedral:48-13-24-59 @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d13_i* @atom:*_b*_a*_d24_i* @atom:*_b*_a*_d59_i* + @dihedral:13-13-44-13 @atom:*_b*_a*_d13_i* @atom:*_b*_a*_d13_i* @atom:*_b*_a*_d44_i* @atom:*_b*_a*_d13_i* + @dihedral:13-13-44-45 @atom:*_b*_a*_d13_i* @atom:*_b*_a*_d13_i* @atom:*_b*_a*_d44_i* @atom:*_b*_a*_d45_i* + @dihedral:46-13-44-13 @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d13_i* @atom:*_b*_a*_d44_i* @atom:*_b*_a*_d13_i* + @dihedral:46-13-44-45 @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d13_i* @atom:*_b*_a*_d44_i* @atom:*_b*_a*_d45_i* + @dihedral:46-13-44-48 @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d13_i* @atom:*_b*_a*_d44_i* @atom:*_b*_a*_d48_i* @dihedral:X-13-47-13 @atom:* @atom:*_b*_a*_d13_i* @atom:*_b*_a*_d47_i* @atom:*_b*_a*_d13_i* @dihedral:X-13-47-46 @atom:* @atom:*_b*_a*_d13_i* @atom:*_b*_a*_d47_i* @atom:*_b*_a*_d46_i* @dihedral:X-13-47-47 @atom:* @atom:*_b*_a*_d13_i* @atom:*_b*_a*_d47_i* @atom:*_b*_a*_d47_i* @@ -7740,18 +7793,6 @@ OPLSAA { @dihedral:84-20-84-87 @atom:*_b*_a*_d84_i* @atom:*_b*_a*_d20_i* @atom:*_b*_a*_d84_i* @atom:*_b*_a*_d87_i* @dihedral:108-20-108-13 @atom:*_b*_a*_d108_i* @atom:*_b*_a*_d20_i* @atom:*_b*_a*_d108_i* @atom:*_b*_a*_d13_i* @dihedral:108-20-108-20 @atom:*_b*_a*_d108_i* @atom:*_b*_a*_d20_i* @atom:*_b*_a*_d108_i* @atom:*_b*_a*_d20_i* - @dihedral:13-44-44-13 @atom:*_b*_a*_d13_i* @atom:*_b*_a*_d44_i* @atom:*_b*_a*_d44_i* @atom:*_b*_a*_d13_i* - @dihedral:13-44-44-45 @atom:*_b*_a*_d13_i* @atom:*_b*_a*_d44_i* @atom:*_b*_a*_d44_i* @atom:*_b*_a*_d45_i* - @dihedral:45-44-44-45 @atom:*_b*_a*_d45_i* @atom:*_b*_a*_d44_i* @atom:*_b*_a*_d44_i* @atom:*_b*_a*_d45_i* - @dihedral:13-44-48-48 @atom:*_b*_a*_d13_i* @atom:*_b*_a*_d44_i* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d48_i* - @dihedral:45-44-48-48 @atom:*_b*_a*_d45_i* @atom:*_b*_a*_d44_i* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d48_i* - @dihedral:59-44-48-48 @atom:*_b*_a*_d59_i* @atom:*_b*_a*_d44_i* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d48_i* - @dihedral:82-44-48-48 @atom:*_b*_a*_d82_i* @atom:*_b*_a*_d44_i* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d48_i* - @dihedral:84-44-48-48 @atom:*_b*_a*_d84_i* @atom:*_b*_a*_d44_i* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d48_i* - @dihedral:45-44-82-16 @atom:*_b*_a*_d45_i* @atom:*_b*_a*_d44_i* @atom:*_b*_a*_d82_i* @atom:*_b*_a*_d16_i* - @dihedral:45-44-82-61 @atom:*_b*_a*_d45_i* @atom:*_b*_a*_d44_i* @atom:*_b*_a*_d82_i* @atom:*_b*_a*_d61_i* - @dihedral:48-44-82-16 @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d44_i* @atom:*_b*_a*_d82_i* @atom:*_b*_a*_d16_i* - @dihedral:48-44-82-61 @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d44_i* @atom:*_b*_a*_d82_i* @atom:*_b*_a*_d61_i* @dihedral:X-24-48-48 @atom:* @atom:*_b*_a*_d24_i* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d48_i* @dihedral:3-24-48-48 @atom:*_b*_a*_d3_i* @atom:*_b*_a*_d24_i* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d48_i* @dihedral:13-24-48-48 @atom:*_b*_a*_d13_i* @atom:*_b*_a*_d24_i* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d48_i* @@ -7793,6 +7834,18 @@ OPLSAA { @dihedral:45-24-91-89 @atom:*_b*_a*_d45_i* @atom:*_b*_a*_d24_i* @atom:*_b*_a*_d91_i* @atom:*_b*_a*_d89_i* @dihedral:45-24-91-91 @atom:*_b*_a*_d45_i* @atom:*_b*_a*_d24_i* @atom:*_b*_a*_d91_i* @atom:*_b*_a*_d91_i* @dihedral:X-24-106-X @atom:* @atom:*_b*_a*_d24_i* @atom:*_b*_a*_d106_i* @atom:* + @dihedral:13-44-44-13 @atom:*_b*_a*_d13_i* @atom:*_b*_a*_d44_i* @atom:*_b*_a*_d44_i* @atom:*_b*_a*_d13_i* + @dihedral:13-44-44-45 @atom:*_b*_a*_d13_i* @atom:*_b*_a*_d44_i* @atom:*_b*_a*_d44_i* @atom:*_b*_a*_d45_i* + @dihedral:45-44-44-45 @atom:*_b*_a*_d45_i* @atom:*_b*_a*_d44_i* @atom:*_b*_a*_d44_i* @atom:*_b*_a*_d45_i* + @dihedral:13-44-48-48 @atom:*_b*_a*_d13_i* @atom:*_b*_a*_d44_i* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d48_i* + @dihedral:45-44-48-48 @atom:*_b*_a*_d45_i* @atom:*_b*_a*_d44_i* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d48_i* + @dihedral:59-44-48-48 @atom:*_b*_a*_d59_i* @atom:*_b*_a*_d44_i* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d48_i* + @dihedral:82-44-48-48 @atom:*_b*_a*_d82_i* @atom:*_b*_a*_d44_i* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d48_i* + @dihedral:84-44-48-48 @atom:*_b*_a*_d84_i* @atom:*_b*_a*_d44_i* @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d48_i* + @dihedral:45-44-82-16 @atom:*_b*_a*_d45_i* @atom:*_b*_a*_d44_i* @atom:*_b*_a*_d82_i* @atom:*_b*_a*_d16_i* + @dihedral:45-44-82-61 @atom:*_b*_a*_d45_i* @atom:*_b*_a*_d44_i* @atom:*_b*_a*_d82_i* @atom:*_b*_a*_d61_i* + @dihedral:48-44-82-16 @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d44_i* @atom:*_b*_a*_d82_i* @atom:*_b*_a*_d16_i* + @dihedral:48-44-82-61 @atom:*_b*_a*_d48_i* @atom:*_b*_a*_d44_i* @atom:*_b*_a*_d82_i* @atom:*_b*_a*_d61_i* @dihedral:47-46-47-13 @atom:*_b*_a*_d47_i* @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d47_i* @atom:*_b*_a*_d13_i* @dihedral:47-46-47-46 @atom:*_b*_a*_d47_i* @atom:*_b*_a*_d46_i* @atom:*_b*_a*_d47_i* @atom:*_b*_a*_d46_i* @dihedral:X-47-47-X @atom:* @atom:*_b*_a*_d47_i* @atom:*_b*_a*_d47_i* @atom:* @@ -8077,6 +8130,13 @@ OPLSAA { } #(end of dihedrals by type) + + + # ---------- Improper Interactions: ---------- + # http://lammps.sandia.gov/doc/improper_harmonic.html + # Syntax: + # improper_coeff ImproperTypeName ImproperStyle parameters + write_once("In Settings") { improper_coeff @improper:X-X-3-4 harmonic 10.5 180.0 improper_coeff @improper:X-X-3-52 harmonic 10.5 180.0 @@ -8085,6 +8145,9 @@ OPLSAA { improper_coeff @improper:X-X-48-X harmonic 2.5 180.0 } #(end of improper_coeffs) + # Rules for creating dihedral interactions according to atom type: + # ImproperTypeName AtomType1 AtomType2 AtomType3 AtomType4 + # (* = wildcard) write_once("Data Impropers By Type (opls_imp.py)") { @improper:X-X-3-4 @atom:* @atom:* @atom:*_b*_a*_d*_i3 @atom:*_b*_a*_d*_i4 @improper:X-X-3-52 @atom:* @atom:* @atom:*_b*_a*_d*_i3 @atom:*_b*_a*_d*_i52 @@ -8094,6 +8157,8 @@ OPLSAA { } #(end of impropers by type) + + # -------- (descriptive comment) -------- # ---- biologically relevant atom types: ---- # biotype 1 N "Glycine" 180 @@ -8886,6 +8951,13 @@ OPLSAA { # ---------- (end of comment) ---------- + + + # LAMMPS supports many different kinds of bonded and non-bonded + # interactions which can be selected at run time. Eventually + # we must inform LAMMPS which of them we will need. We specify + # this in the "In Init" section: + write_once("In Init") { units real atom_style full @@ -8899,8 +8971,19 @@ OPLSAA { kspace_style pppm 0.0001 } #end of init parameters -} # OPLSAA + # Note: We use "hybrid" styles in case the user later wishes to + # combine the molecules built using this force-field with other + # molecules that use other styles. (This is not necessarily + # a good idea, but LAMMPS and moltemplate both allow it.) + # For more information: + # http://lammps.sandia.gov/doc/pair_hybrid.html + # http://lammps.sandia.gov/doc/bond_hybrid.html + # http://lammps.sandia.gov/doc/angle_hybrid.html + # http://lammps.sandia.gov/doc/dihedral_hybrid.html + # http://lammps.sandia.gov/doc/improper_hybrid.html + +} # OPLSAA @@ -8908,12 +8991,12 @@ OPLSAA { ############################### NOTES #################################### # -# This file was generated using this script: +# This file was generated (on 2017-7-18) using this script: # # tinkerparm2lt.py -name OPLSAA -file oplsaa.prm -dihedral-style opls # # The oplsaa.prm file was downloaded from the TINKER website -# http://dasher.wustl.edu/tinker/distribution/params/oplsaa.prm +# https://dasher.wustl.edu/tinker/distribution/params/oplsaa.prm # (You can build a smaller version of this file by editing the oplsaa.prm # file and deleting the lines beginning with "atom" that you don't need, # and subsequently running tinkerparm2lt.py on the new file. This can @@ -8924,11 +9007,12 @@ OPLSAA { # special_bonds lj/coul 0.0 0.0 0.5 # (See http://lammps.sandia.gov/doc/special_bonds.html for details) # -# WARNING: All Urey-Bradley interactions have been IGNORED +# WARNING: All Urey-Bradley interactions have been IGNORED including: +# ffid1 ffid2 ffid3 K r0 +# ureybrad 35 34 35 38.25 1.5537 # # WARNING: Many of these atoms are UNITED-ATOM (UA) atoms (#1-56). This means # the hydrogen atoms have been absorbed into the heavy atoms, and the -# force-field modified accordingly. Moltemplate should complain if -# you attempt to bond these atoms to hydrogen atoms. +# force-field modified accordingly. (Hopefully, moltemplate will +# complain if you attempt to bond these atoms to hydrogen atoms.) ########################################################################## - diff --git a/tools/moltemplate/src/moltemplate_force_fields/oplsaa/AUTHOR.TXT b/tools/moltemplate/moltemplate/force_fields/oplsaa/AUTHOR.txt similarity index 99% rename from tools/moltemplate/src/moltemplate_force_fields/oplsaa/AUTHOR.TXT rename to tools/moltemplate/moltemplate/force_fields/oplsaa/AUTHOR.txt index a46bd51d4cf69cf39122588c820de9a8e0b3b4f3..a3e9f3ee787a06de02b12e953746910ca823865c 100644 --- a/tools/moltemplate/src/moltemplate_force_fields/oplsaa/AUTHOR.TXT +++ b/tools/moltemplate/moltemplate/force_fields/oplsaa/AUTHOR.txt @@ -1,3 +1,2 @@ OPLSAA force-field conversion tools provided by Jason Lambert, Sebastian Echeverri, and Andrew Jewett - diff --git a/tools/moltemplate/src/moltemplate_force_fields/oplsaa/loplsaa_ext.prm b/tools/moltemplate/moltemplate/force_fields/oplsaa/loplsaa_ext.prm similarity index 100% rename from tools/moltemplate/src/moltemplate_force_fields/oplsaa/loplsaa_ext.prm rename to tools/moltemplate/moltemplate/force_fields/oplsaa/loplsaa_ext.prm diff --git a/tools/moltemplate/moltemplate/force_fields/sdk/README.txt b/tools/moltemplate/moltemplate/force_fields/sdk/README.txt new file mode 100644 index 0000000000000000000000000000000000000000..6ca9e8f98ff3177c34239da0c92ae972d7c33942 --- /dev/null +++ b/tools/moltemplate/moltemplate/force_fields/sdk/README.txt @@ -0,0 +1,63 @@ +README! + +v0.2 + +This is only part of the SDK force field and is to be used for lipids only. Only parameters from: + +Shinoda et al. J. Phys. Chem. B, Vol. 114, No. 20, 2010 +http://dx.doi.org/10.1021/jp9107206 + +are used. + +NOTE: We extracted the parameters from that publication from the files +distributed with the "EMC" tool. If you use these files, please also cite: +P. J. in ‘t Veld and G. C. Rutledge, Macromolecules 2003, 36, 7358. + + +This works for any topology built using the following types: + +Name Structure Charge +NC -CH2CH2-N-(CH3)3 +1 +NH -CH2CH2-NH3 +1 +PH -PO4- -1 +PHE -PO4- (PE lipid) -1 +GL -CH2CH-CH2- +EST1 -CH2CO2- +EST2 -H2CO2- +CMD2 -HC=CH- (cis) +CM -CH2CH2CH2- +CT CH3CH2CH2- +CT2 CH3CH2- +W (H2O)3 + +This coarse-grainng allows for design of a wide variety of lipids. + +NEW! in v0.2: + SDK Cholesterol model has been added! Using parameters from: + +MacDermaid et al. J. Chem. Phys, 143(24), 243144, 2015 +http://dx.doi.org/10.1063/1.4937153 + +are used. The following types are defined specifically for cholesterol: + +Name Structure Location +C2T -CH-(CH3)2 Tail +CM2 -CH2-CH2- Tail +CM2R -CH2-CH2- Ring A +CMDB -CH2-C=CH- Ring A/B +CMB -CH2-CH-CH- Ring B/C +CMR -CH-CH2-CH2- Ring B/C +CMR5 -CH2-CH2-CH- Ring D +CTB -CH2-CH-CH3- Tail +CTBA -C-CH3 Ring A/B +CTBB -C-CH3 Ring C/D +OAB -CH-OH Ring A + +See the provided reference for details on the CG cholesterol topology. +A 5-10 timestep is used when using cholesterol. + +Several limiations, due to missing parameters: +-use of cholesterol with type "NH" is not possible. +-use of cholesterol with type "PHE" is not possible. + +--- diff --git a/tools/moltemplate/moltemplate/force_fields/sdk/SDK_lipid+chol.lt b/tools/moltemplate/moltemplate/force_fields/sdk/SDK_lipid+chol.lt new file mode 100644 index 0000000000000000000000000000000000000000..f610085113381d4e5703f11fb3639e30f93b5a95 --- /dev/null +++ b/tools/moltemplate/moltemplate/force_fields/sdk/SDK_lipid+chol.lt @@ -0,0 +1,423 @@ +# Autogenerated by EMC 2 LT tool v0.2 on 2017-06-29 +# +# ./emcprm2lt.py --pair-style=lj/sdk/coul/long --bond-style=harmonic --angle-style=sdk sdk_lipids.prm sdk_cholesterol.prm --name=SDK_lipid+chol --units +# +# Adapted from EMC by Pieter J. in 't Veld +# Originally written as, FFNAME:SDK STYLE:COARSE VERSION:1.0 on Oct 2014 + +SDK { + write_once("Data Masses") { + @atom:CM 42.080400 # CM + @atom:CMD2 26.037800 # CMD2 + @atom:CT 43.088300 # CT + @atom:CT2 29.061500 # CT2 + @atom:EST1 58.036600 # EST1 + @atom:EST2 58.036600 # EST2 + @atom:GL 41.072500 # GL + @atom:NC 87.164400 # NC + @atom:NH 44.076100 # NH + @atom:PH 94.971600 # PH + @atom:PHE 94.971600 # PHE + @atom:W 54.045600 # W + @atom:C2T 43.090000 # C2T + @atom:CM2 28.050000 # CM2 + @atom:CM2R 28.050000 # CM2R + @atom:CMDB 39.060000 # CMDB + @atom:CMB 40.060000 # CMB + @atom:CMR 41.070000 # CMR + @atom:CMR5 41.070000 # CMR5 + @atom:CTB 42.080000 # CTB + @atom:CTBA 27.050000 # CTBA + @atom:CTBB 27.050000 # CTBB + @atom:OAB 30.030000 # OAB + } # end of atom masses + + # ----- EQUIVALENCE CATEGORIES for bonded interaction lookup ----- + replace{ @atom:CM @atom:CM_bCM_aCM_dCM_iCM} + replace{ @atom:CMD2 @atom:CMD2_bCMD2_aCMD2_dCMD2_iCMD2} + replace{ @atom:CT @atom:CT_bCT_aCT_dCT_iCT} + replace{ @atom:CT2 @atom:CT2_bCT2_aCT2_dCT2_iCT2} + replace{ @atom:EST1 @atom:EST1_bEST1_aEST1_dEST1_iEST1} + replace{ @atom:EST2 @atom:EST2_bEST2_aEST2_dEST2_iEST2} + replace{ @atom:GL @atom:GL_bGL_aGL_dGL_iGL} + replace{ @atom:NC @atom:NC_bNC_aNC_dNC_iNC} + replace{ @atom:NH @atom:NH_bNH_aNH_dNH_iNH} + replace{ @atom:PH @atom:PH_bPH_aPH_dPH_iPH} + replace{ @atom:PHE @atom:PHE_bPHE_aPHE_dPHE_iPHE} + replace{ @atom:W @atom:W_bW_aW_dW_iW} + replace{ @atom:C2T @atom:C2T_bC2T_aC2T_dC2T_iC2T} + replace{ @atom:CM2 @atom:CM2_bCM2_aCM2_dCM2_iCM2} + replace{ @atom:CM2R @atom:CM2R_bCM2R_aCM2R_dCM2R_iCM2R} + replace{ @atom:CMDB @atom:CMDB_bCMDB_aCMDB_dCMDB_iCMDB} + replace{ @atom:CMB @atom:CMB_bCMB_aCMB_dCMB_iCMB} + replace{ @atom:CMR @atom:CMR_bCMR_aCMR_dCMR_iCMR} + replace{ @atom:CMR5 @atom:CMR5_bCMR5_aCMR5_dCMR5_iCMR5} + replace{ @atom:CTB @atom:CTB_bCTB_aCTB_dCTB_iCTB} + replace{ @atom:CTBA @atom:CTBA_bCTBA_aCTBA_dCTBA_iCTBA} + replace{ @atom:CTBB @atom:CTBB_bCTBB_aCTBB_dCTBB_iCTBB} + replace{ @atom:OAB @atom:OAB_bOAB_aOAB_dOAB_iOAB} + # END EQUIVALENCE + + write_once("In Settings") { + # ----- Non-Bonded interactions ----- + pair_coeff @atom:CM_bCM_aCM_dCM_iCM @atom:CM_bCM_aCM_dCM_iCM lj9_6 0.420000 4.506000 # CM-CM + pair_coeff @atom:CM_bCM_aCM_dCM_iCM @atom:CMD2_bCMD2_aCMD2_dCMD2_iCMD2 lj9_6 0.312000 4.255500 # CM-CMD2 + pair_coeff @atom:CM_bCM_aCM_dCM_iCM @atom:CT_bCT_aCT_dCT_iCT lj9_6 0.444000 4.545500 # CM-CT + pair_coeff @atom:CM_bCM_aCM_dCM_iCM @atom:CT2_bCT2_aCT2_dCT2_iCT2 lj9_6 0.362000 4.363500 # CM-CT2 + pair_coeff @atom:CM_bCM_aCM_dCM_iCM @atom:EST1_bEST1_aEST1_dEST1_iEST1 lj9_6 0.470000 4.403000 # CM-EST1 + pair_coeff @atom:CM_bCM_aCM_dCM_iCM @atom:EST2_bEST2_aEST2_dEST2_iEST2 lj9_6 0.470000 4.403000 # CM-EST2 + pair_coeff @atom:CM_bCM_aCM_dCM_iCM @atom:GL_bGL_aGL_dGL_iGL lj9_6 0.420000 4.506000 # CM-GL + pair_coeff @atom:CM_bCM_aCM_dCM_iCM @atom:NC_bNC_aNC_dNC_iNC lj9_6 0.400000 5.128000 # CM-NC + pair_coeff @atom:CM_bCM_aCM_dCM_iCM @atom:NH_bNH_aNH_dNH_iNH lj9_6 0.330000 4.553000 # CM-NH + pair_coeff @atom:CM_bCM_aCM_dCM_iCM @atom:PH_bPH_aPH_dPH_iPH lj9_6 0.300000 4.953000 # CM-PH + pair_coeff @atom:CM_bCM_aCM_dCM_iCM @atom:PHE_bPHE_aPHE_dPHE_iPHE lj9_6 0.300000 4.953000 # CM-PHE + pair_coeff @atom:CM_bCM_aCM_dCM_iCM @atom:W_bW_aW_dW_iW lj12_4 0.340000 4.438500 # CM-W + pair_coeff @atom:CMD2_bCMD2_aCMD2_dCMD2_iCMD2 @atom:CMD2_bCMD2_aCMD2_dCMD2_iCMD2 lj9_6 0.232000 4.005000 # CMD2-CMD2 + pair_coeff @atom:CMD2_bCMD2_aCMD2_dCMD2_iCMD2 @atom:CT_bCT_aCT_dCT_iCT lj9_6 0.330000 4.295000 # CMD2-CT + pair_coeff @atom:CMD2_bCMD2_aCMD2_dCMD2_iCMD2 @atom:CT2_bCT2_aCT2_dCT2_iCT2 lj9_6 0.269000 4.113000 # CMD2-CT2 + pair_coeff @atom:CMD2_bCMD2_aCMD2_dCMD2_iCMD2 @atom:EST1_bEST1_aEST1_dEST1_iEST1 lj9_6 0.440000 4.005000 # CMD2-EST1 + pair_coeff @atom:CMD2_bCMD2_aCMD2_dCMD2_iCMD2 @atom:EST2_bEST2_aEST2_dEST2_iEST2 lj9_6 0.440000 4.005000 # CMD2-EST2 + pair_coeff @atom:CMD2_bCMD2_aCMD2_dCMD2_iCMD2 @atom:GL_bGL_aGL_dGL_iGL lj9_6 0.312000 4.255500 # CMD2-GL + pair_coeff @atom:CMD2_bCMD2_aCMD2_dCMD2_iCMD2 @atom:NC_bNC_aNC_dNC_iNC lj9_6 0.350000 4.877500 # CMD2-NC + pair_coeff @atom:CMD2_bCMD2_aCMD2_dCMD2_iCMD2 @atom:NH_bNH_aNH_dNH_iNH lj9_6 0.300000 4.302500 # CMD2-NH + pair_coeff @atom:CMD2_bCMD2_aCMD2_dCMD2_iCMD2 @atom:PH_bPH_aPH_dPH_iPH lj9_6 0.300000 4.702500 # CMD2-PH + pair_coeff @atom:CMD2_bCMD2_aCMD2_dCMD2_iCMD2 @atom:PHE_bPHE_aPHE_dPHE_iPHE lj9_6 0.300000 4.702500 # CMD2-PHE + pair_coeff @atom:CMD2_bCMD2_aCMD2_dCMD2_iCMD2 @atom:W_bW_aW_dW_iW lj12_4 0.270000 4.188000 # CMD2-W + pair_coeff @atom:CT_bCT_aCT_dCT_iCT @atom:CT_bCT_aCT_dCT_iCT lj9_6 0.469000 4.585000 # CT-CT + pair_coeff @atom:CT_bCT_aCT_dCT_iCT @atom:CT2_bCT2_aCT2_dCT2_iCT2 lj9_6 0.383000 4.403000 # CT-CT2 + pair_coeff @atom:CT_bCT_aCT_dCT_iCT @atom:EST1_bEST1_aEST1_dEST1_iEST1 lj9_6 0.470000 4.442500 # CT-EST1 + pair_coeff @atom:CT_bCT_aCT_dCT_iCT @atom:EST2_bEST2_aEST2_dEST2_iEST2 lj9_6 0.470000 4.442500 # CT-EST2 + pair_coeff @atom:CT_bCT_aCT_dCT_iCT @atom:GL_bGL_aGL_dGL_iGL lj9_6 0.444000 4.545500 # CT-GL + pair_coeff @atom:CT_bCT_aCT_dCT_iCT @atom:NC_bNC_aNC_dNC_iNC lj9_6 0.420000 5.167500 # CT-NC + pair_coeff @atom:CT_bCT_aCT_dCT_iCT @atom:NH_bNH_aNH_dNH_iNH lj9_6 0.340000 4.925000 # CT-NH + pair_coeff @atom:CT_bCT_aCT_dCT_iCT @atom:PH_bPH_aPH_dPH_iPH lj9_6 0.320000 4.992500 # CT-PH + pair_coeff @atom:CT_bCT_aCT_dCT_iCT @atom:PHE_bPHE_aPHE_dPHE_iPHE lj9_6 0.320000 4.992500 # CT-PHE + pair_coeff @atom:CT_bCT_aCT_dCT_iCT @atom:W_bW_aW_dW_iW lj12_4 0.360000 4.478000 # CT-W + pair_coeff @atom:CT2_bCT2_aCT2_dCT2_iCT2 @atom:CT2_bCT2_aCT2_dCT2_iCT2 lj9_6 0.312000 4.221000 # CT2-CT2 + pair_coeff @atom:CT2_bCT2_aCT2_dCT2_iCT2 @atom:EST1_bEST1_aEST1_dEST1_iEST1 lj9_6 0.390000 4.260500 # CT2-EST1 + pair_coeff @atom:CT2_bCT2_aCT2_dCT2_iCT2 @atom:EST2_bEST2_aEST2_dEST2_iEST2 lj9_6 0.390000 4.260500 # CT2-EST2 + pair_coeff @atom:CT2_bCT2_aCT2_dCT2_iCT2 @atom:GL_bGL_aGL_dGL_iGL lj9_6 0.362000 4.365000 # CT2-GL + pair_coeff @atom:CT2_bCT2_aCT2_dCT2_iCT2 @atom:NC_bNC_aNC_dNC_iNC lj9_6 0.320000 4.985500 # CT2-NC + pair_coeff @atom:CT2_bCT2_aCT2_dCT2_iCT2 @atom:NH_bNH_aNH_dNH_iNH lj9_6 0.320000 4.410500 # CT2-NH + pair_coeff @atom:CT2_bCT2_aCT2_dCT2_iCT2 @atom:PH_bPH_aPH_dPH_iPH lj9_6 0.280000 4.810500 # CT2-PH + pair_coeff @atom:CT2_bCT2_aCT2_dCT2_iCT2 @atom:PHE_bPHE_aPHE_dPHE_iPHE lj9_6 0.280000 4.810500 # CT2-PHE + pair_coeff @atom:CT2_bCT2_aCT2_dCT2_iCT2 @atom:W_bW_aW_dW_iW lj12_4 0.290000 4.296000 # CT2-W + pair_coeff @atom:EST1_bEST1_aEST1_dEST1_iEST1 @atom:EST1_bEST1_aEST1_dEST1_iEST1 lj9_6 0.495000 4.300000 # EST1-EST1 + pair_coeff @atom:EST1_bEST1_aEST1_dEST1_iEST1 @atom:EST2_bEST2_aEST2_dEST2_iEST2 lj9_6 0.495000 4.300000 # EST1-EST2 + pair_coeff @atom:EST1_bEST1_aEST1_dEST1_iEST1 @atom:GL_bGL_aGL_dGL_iGL lj9_6 0.470000 4.403000 # EST1-GL + pair_coeff @atom:EST1_bEST1_aEST1_dEST1_iEST1 @atom:NC_bNC_aNC_dNC_iNC lj9_6 0.750000 4.475000 # EST1-NC + pair_coeff @atom:EST1_bEST1_aEST1_dEST1_iEST1 @atom:NH_bNH_aNH_dNH_iNH lj9_6 0.850000 4.110000 # EST1-NH + pair_coeff @atom:EST1_bEST1_aEST1_dEST1_iEST1 @atom:PH_bPH_aPH_dPH_iPH lj9_6 0.500000 4.550000 # EST1-PH + pair_coeff @atom:EST1_bEST1_aEST1_dEST1_iEST1 @atom:PHE_bPHE_aPHE_dPHE_iPHE lj9_6 0.500000 4.550000 # EST1-PHE + pair_coeff @atom:EST1_bEST1_aEST1_dEST1_iEST1 @atom:W_bW_aW_dW_iW lj12_4 0.820000 4.290000 # EST1-W + pair_coeff @atom:EST2_bEST2_aEST2_dEST2_iEST2 @atom:EST2_bEST2_aEST2_dEST2_iEST2 lj9_6 0.495000 4.300000 # EST2-EST2 + pair_coeff @atom:EST2_bEST2_aEST2_dEST2_iEST2 @atom:GL_bGL_aGL_dGL_iGL lj9_6 0.470000 4.403000 # EST2-GL + pair_coeff @atom:EST2_bEST2_aEST2_dEST2_iEST2 @atom:NC_bNC_aNC_dNC_iNC lj9_6 0.750000 4.475000 # EST2-NC + pair_coeff @atom:EST2_bEST2_aEST2_dEST2_iEST2 @atom:NH_bNH_aNH_dNH_iNH lj9_6 0.850000 4.110000 # EST2-NH + pair_coeff @atom:EST2_bEST2_aEST2_dEST2_iEST2 @atom:PH_bPH_aPH_dPH_iPH lj9_6 0.500000 4.550000 # EST2-PH + pair_coeff @atom:EST2_bEST2_aEST2_dEST2_iEST2 @atom:PHE_bPHE_aPHE_dPHE_iPHE lj9_6 0.500000 4.550000 # EST2-PHE + pair_coeff @atom:EST2_bEST2_aEST2_dEST2_iEST2 @atom:W_bW_aW_dW_iW lj12_4 0.820000 4.290000 # EST2-W + pair_coeff @atom:GL_bGL_aGL_dGL_iGL @atom:GL_bGL_aGL_dGL_iGL lj9_6 0.420000 4.506000 # GL-GL + pair_coeff @atom:GL_bGL_aGL_dGL_iGL @atom:NC_bNC_aNC_dNC_iNC lj9_6 0.650000 4.620000 # GL-NC + pair_coeff @atom:GL_bGL_aGL_dGL_iGL @atom:NH_bNH_aNH_dNH_iNH lj9_6 0.750000 4.190000 # GL-NH + pair_coeff @atom:GL_bGL_aGL_dGL_iGL @atom:PH_bPH_aPH_dPH_iPH lj9_6 0.300000 4.750000 # GL-PH + pair_coeff @atom:GL_bGL_aGL_dGL_iGL @atom:PHE_bPHE_aPHE_dPHE_iPHE lj9_6 0.300000 4.750000 # GL-PHE + pair_coeff @atom:GL_bGL_aGL_dGL_iGL @atom:W_bW_aW_dW_iW lj12_4 0.640000 4.438500 # GL-W + pair_coeff @atom:NC_bNC_aNC_dNC_iNC @atom:NC_bNC_aNC_dNC_iNC lj9_6 0.700000 5.750000 # NC-NC + pair_coeff @atom:NC_bNC_aNC_dNC_iNC @atom:NH_bNH_aNH_dNH_iNH lj9_6 0.880000 5.175000 # NC-NH + pair_coeff @atom:NC_bNC_aNC_dNC_iNC @atom:PH_bPH_aPH_dPH_iPH lj9_6 1.150000 4.200000 # NC-PH + pair_coeff @atom:NC_bNC_aNC_dNC_iNC @atom:PHE_bPHE_aPHE_dPHE_iPHE lj9_6 1.150000 4.200000 # NC-PHE + pair_coeff @atom:NC_bNC_aNC_dNC_iNC @atom:W_bW_aW_dW_iW lj12_4 0.900000 4.610000 # NC-W + pair_coeff @atom:NH_bNH_aNH_dNH_iNH @atom:NH_bNH_aNH_dNH_iNH lj9_6 1.100000 4.600000 # NH-NH + pair_coeff @atom:NH_bNH_aNH_dNH_iNH @atom:PH_bPH_aPH_dPH_iPH lj9_6 1.200000 3.800000 # NH-PH + pair_coeff @atom:NH_bNH_aNH_dNH_iNH @atom:PHE_bPHE_aPHE_dPHE_iPHE lj9_6 1.200000 3.800000 # NH-PHE + pair_coeff @atom:NH_bNH_aNH_dNH_iNH @atom:W_bW_aW_dW_iW lj12_4 0.800000 3.950000 # NH-W + pair_coeff @atom:PH_bPH_aPH_dPH_iPH @atom:PH_bPH_aPH_dPH_iPH lj9_6 1.400000 5.400000 # PH-PH + pair_coeff @atom:PH_bPH_aPH_dPH_iPH @atom:PHE_bPHE_aPHE_dPHE_iPHE lj9_6 1.400000 5.000000 # PH-PHE + pair_coeff @atom:PH_bPH_aPH_dPH_iPH @atom:W_bW_aW_dW_iW lj12_4 1.000000 4.030000 # PH-W + pair_coeff @atom:PHE_bPHE_aPHE_dPHE_iPHE @atom:PHE_bPHE_aPHE_dPHE_iPHE lj9_6 1.400000 4.600000 # PHE-PHE + pair_coeff @atom:PHE_bPHE_aPHE_dPHE_iPHE @atom:W_bW_aW_dW_iW lj12_4 1.000000 4.030000 # PHE-W + pair_coeff @atom:W_bW_aW_dW_iW @atom:W_bW_aW_dW_iW lj12_4 0.895000 4.371000 # W-W + pair_coeff @atom:C2T_bC2T_aC2T_dC2T_iC2T @atom:NC_bNC_aNC_dNC_iNC lj9_6 0.420000 5.167500 # C2T-NC + pair_coeff @atom:CMR5_bCMR5_aCMR5_dCMR5_iCMR5 @atom:CT_bCT_aCT_dCT_iCT lj9_6 0.444000 4.545500 # CMR5-CT + pair_coeff @atom:C2T_bC2T_aC2T_dC2T_iC2T @atom:CTBA_bCTBA_aCTBA_dCTBA_iCTBA lj9_6 0.252000 4.767700 # C2T-CTBA + pair_coeff @atom:CT_bCT_aCT_dCT_iCT @atom:CTB_bCTB_aCTB_dCTB_iCTB lj9_6 0.469000 4.585000 # CT-CTB + pair_coeff @atom:C2T_bC2T_aC2T_dC2T_iC2T @atom:CMR_bCMR_aCMR_dCMR_iCMR lj9_6 0.331000 4.771400 # C2T-CMR + pair_coeff @atom:CT_bCT_aCT_dCT_iCT @atom:CTBA_bCTBA_aCTBA_dCTBA_iCTBA lj9_6 0.383000 4.403000 # CT-CTBA + pair_coeff @atom:C2T_bC2T_aC2T_dC2T_iC2T @atom:CTBB_bCTBB_aCTBB_dCTBB_iCTBB lj9_6 0.252000 4.767700 # C2T-CTBB + pair_coeff @atom:CT_bCT_aCT_dCT_iCT @atom:CTBB_bCTBB_aCTBB_dCTBB_iCTBB lj9_6 0.383000 4.403000 # CT-CTBB + pair_coeff @atom:C2T_bC2T_aC2T_dC2T_iC2T @atom:GL_bGL_aGL_dGL_iGL lj9_6 0.444000 4.545500 # C2T-GL + pair_coeff @atom:CT_bCT_aCT_dCT_iCT @atom:OAB_bOAB_aOAB_dOAB_iOAB lj9_6 0.437000 4.033000 # CT-OAB + pair_coeff @atom:C2T_bC2T_aC2T_dC2T_iC2T @atom:CM2R_bCM2R_aCM2R_dCM2R_iCM2R lj9_6 0.254000 4.610100 # C2T-CM2R + pair_coeff @atom:CT2_bCT2_aCT2_dCT2_iCT2 @atom:CTB_bCTB_aCTB_dCTB_iCTB lj9_6 0.383000 4.403000 # CT2-CTB + pair_coeff @atom:C2T_bC2T_aC2T_dC2T_iC2T @atom:CMD2_bCMD2_aCMD2_dCMD2_iCMD2 lj9_6 0.330000 4.295000 # C2T-CMD2 + pair_coeff @atom:CT2_bCT2_aCT2_dCT2_iCT2 @atom:CTBA_bCTBA_aCTBA_dCTBA_iCTBA lj9_6 0.312000 4.221000 # CT2-CTBA + pair_coeff @atom:C2T_bC2T_aC2T_dC2T_iC2T @atom:CMR5_bCMR5_aCMR5_dCMR5_iCMR5 lj9_6 0.331000 4.771400 # C2T-CMR5 + pair_coeff @atom:CT2_bCT2_aCT2_dCT2_iCT2 @atom:CTBB_bCTBB_aCTBB_dCTBB_iCTBB lj9_6 0.312000 4.221000 # CT2-CTBB + pair_coeff @atom:C2T_bC2T_aC2T_dC2T_iC2T @atom:W_bW_aW_dW_iW lj12_4 0.360000 4.478000 # C2T-W + pair_coeff @atom:CT2_bCT2_aCT2_dCT2_iCT2 @atom:OAB_bOAB_aOAB_dOAB_iOAB lj9_6 0.415000 3.950500 # CT2-OAB + pair_coeff @atom:C2T_bC2T_aC2T_dC2T_iC2T @atom:C2T_bC2T_aC2T_dC2T_iC2T lj9_6 0.400000 4.811500 # C2T-C2T + pair_coeff @atom:CTB_bCTB_aCTB_dCTB_iCTB @atom:CTB_bCTB_aCTB_dCTB_iCTB lj9_6 0.269000 5.015500 # CTB-CTB + pair_coeff @atom:C2T_bC2T_aC2T_dC2T_iC2T @atom:OAB_bOAB_aOAB_dOAB_iOAB lj9_6 0.437000 4.033000 # C2T-OAB + pair_coeff @atom:CTB_bCTB_aCTB_dCTB_iCTB @atom:EST1_bEST1_aEST1_dEST1_iEST1 lj9_6 0.470000 4.442500 # CTB-EST1 + pair_coeff @atom:C2T_bC2T_aC2T_dC2T_iC2T @atom:PH_bPH_aPH_dPH_iPH lj9_6 0.320000 4.992500 # C2T-PH + pair_coeff @atom:CTB_bCTB_aCTB_dCTB_iCTB @atom:EST2_bEST2_aEST2_dEST2_iEST2 lj9_6 0.470000 4.442500 # CTB-EST2 + pair_coeff @atom:C2T_bC2T_aC2T_dC2T_iC2T @atom:CMDB_bCMDB_aCMDB_dCMDB_iCMDB lj9_6 0.354000 4.894100 # C2T-CMDB + pair_coeff @atom:CTB_bCTB_aCTB_dCTB_iCTB @atom:NC_bNC_aNC_dNC_iNC lj9_6 0.420000 5.167500 # CTB-NC + pair_coeff @atom:C2T_bC2T_aC2T_dC2T_iC2T @atom:CT2_bCT2_aCT2_dCT2_iCT2 lj9_6 0.297000 4.527200 # C2T-CT2 + pair_coeff @atom:CTB_bCTB_aCTB_dCTB_iCTB @atom:CTBA_bCTBA_aCTBA_dCTBA_iCTBA lj9_6 0.265000 4.464800 # CTB-CTBA + pair_coeff @atom:C2T_bC2T_aC2T_dC2T_iC2T @atom:CM2_bCM2_aCM2_dCM2_iCM2 lj9_6 0.291000 4.588000 # C2T-CM2 + pair_coeff @atom:CTB_bCTB_aCTB_dCTB_iCTB @atom:CTBB_bCTBB_aCTBB_dCTBB_iCTBB lj9_6 0.265000 4.464800 # CTB-CTBB + pair_coeff @atom:C2T_bC2T_aC2T_dC2T_iC2T @atom:CM_bCM_aCM_dCM_iCM lj9_6 0.391000 4.545500 # C2T-CM + pair_coeff @atom:CTB_bCTB_aCTB_dCTB_iCTB @atom:GL_bGL_aGL_dGL_iGL lj9_6 0.444000 4.545500 # CTB-GL + pair_coeff @atom:C2T_bC2T_aC2T_dC2T_iC2T @atom:CT_bCT_aCT_dCT_iCT lj9_6 0.409000 4.860100 # C2T-CT + pair_coeff @atom:CTB_bCTB_aCTB_dCTB_iCTB @atom:W_bW_aW_dW_iW lj12_4 0.360000 4.478000 # CTB-W + pair_coeff @atom:C2T_bC2T_aC2T_dC2T_iC2T @atom:CTB_bCTB_aCTB_dCTB_iCTB lj9_6 0.283000 4.910900 # C2T-CTB + pair_coeff @atom:CTB_bCTB_aCTB_dCTB_iCTB @atom:OAB_bOAB_aOAB_dOAB_iOAB lj9_6 0.437000 4.033000 # CTB-OAB + pair_coeff @atom:C2T_bC2T_aC2T_dC2T_iC2T @atom:CMB_bCMB_aCMB_dCMB_iCMB lj9_6 0.310000 4.656400 # C2T-CMB + pair_coeff @atom:CTB_bCTB_aCTB_dCTB_iCTB @atom:PH_bPH_aPH_dPH_iPH lj9_6 0.320000 4.992500 # CTB-PH + pair_coeff @atom:C2T_bC2T_aC2T_dC2T_iC2T @atom:EST1_bEST1_aEST1_dEST1_iEST1 lj9_6 0.470000 4.442500 # C2T-EST1 + pair_coeff @atom:CTBA_bCTBA_aCTBA_dCTBA_iCTBA @atom:NC_bNC_aNC_dNC_iNC lj9_6 0.320000 4.985500 # CTBA-NC + pair_coeff @atom:C2T_bC2T_aC2T_dC2T_iC2T @atom:EST2_bEST2_aEST2_dEST2_iEST2 lj9_6 0.470000 4.442500 # C2T-EST2 + pair_coeff @atom:CTBA_bCTBA_aCTBA_dCTBA_iCTBA @atom:EST1_bEST1_aEST1_dEST1_iEST1 lj9_6 0.390000 4.260500 # CTBA-EST1 + pair_coeff @atom:CM_bCM_aCM_dCM_iCM @atom:CMR_bCMR_aCMR_dCMR_iCMR lj9_6 0.420000 4.506000 # CM-CMR + pair_coeff @atom:CTBA_bCTBA_aCTBA_dCTBA_iCTBA @atom:EST2_bEST2_aEST2_dEST2_iEST2 lj9_6 0.390000 4.260500 # CTBA-EST2 + pair_coeff @atom:CM_bCM_aCM_dCM_iCM @atom:CM2R_bCM2R_aCM2R_dCM2R_iCM2R lj9_6 0.390000 4.434200 # CM-CM2R + pair_coeff @atom:CTBA_bCTBA_aCTBA_dCTBA_iCTBA @atom:W_bW_aW_dW_iW lj12_4 0.290000 4.296000 # CTBA-W + pair_coeff @atom:CM_bCM_aCM_dCM_iCM @atom:CMR5_bCMR5_aCMR5_dCMR5_iCMR5 lj9_6 0.420000 4.506000 # CM-CMR5 + pair_coeff @atom:CTBA_bCTBA_aCTBA_dCTBA_iCTBA @atom:GL_bGL_aGL_dGL_iGL lj9_6 0.362000 4.363500 # CTBA-GL + pair_coeff @atom:CM_bCM_aCM_dCM_iCM @atom:OAB_bOAB_aOAB_dOAB_iOAB lj9_6 0.561000 4.093000 # CM-OAB + pair_coeff @atom:CTBA_bCTBA_aCTBA_dCTBA_iCTBA @atom:CTBA_bCTBA_aCTBA_dCTBA_iCTBA lj9_6 0.265000 4.461000 # CTBA-CTBA + pair_coeff @atom:CM_bCM_aCM_dCM_iCM @atom:CMDB_bCMDB_aCMDB_dCMDB_iCMDB lj9_6 0.362000 4.379000 # CM-CMDB + pair_coeff @atom:CTBA_bCTBA_aCTBA_dCTBA_iCTBA @atom:CTBB_bCTBB_aCTBB_dCTBB_iCTBB lj9_6 0.265000 4.461000 # CTBA-CTBB + pair_coeff @atom:CM_bCM_aCM_dCM_iCM @atom:CM2_bCM2_aCM2_dCM2_iCM2 lj9_6 0.336000 4.461900 # CM-CM2 + pair_coeff @atom:CTBA_bCTBA_aCTBA_dCTBA_iCTBA @atom:PH_bPH_aPH_dPH_iPH lj9_6 0.280000 4.810500 # CTBA-PH + pair_coeff @atom:CM_bCM_aCM_dCM_iCM @atom:CTB_bCTB_aCTB_dCTB_iCTB lj9_6 0.444000 4.545500 # CM-CTB + pair_coeff @atom:CTBA_bCTBA_aCTBA_dCTBA_iCTBA @atom:OAB_bOAB_aOAB_dOAB_iOAB lj9_6 0.380000 3.840000 # CTBA-OAB + pair_coeff @atom:CM_bCM_aCM_dCM_iCM @atom:CMB_bCMB_aCMB_dCMB_iCMB lj9_6 0.420000 4.506000 # CM-CMB + pair_coeff @atom:CTBB_bCTBB_aCTBB_dCTBB_iCTBB @atom:W_bW_aW_dW_iW lj12_4 0.290000 4.296000 # CTBB-W + pair_coeff @atom:CM_bCM_aCM_dCM_iCM @atom:CTBA_bCTBA_aCTBA_dCTBA_iCTBA lj9_6 0.362000 4.363500 # CM-CTBA + pair_coeff @atom:CTBB_bCTBB_aCTBB_dCTBB_iCTBB @atom:NC_bNC_aNC_dNC_iNC lj9_6 0.320000 4.985500 # CTBB-NC + pair_coeff @atom:CM_bCM_aCM_dCM_iCM @atom:CTBB_bCTBB_aCTBB_dCTBB_iCTBB lj9_6 0.362000 4.363500 # CM-CTBB + pair_coeff @atom:CTBB_bCTBB_aCTBB_dCTBB_iCTBB @atom:GL_bGL_aGL_dGL_iGL lj9_6 0.362000 4.363500 # CTBB-GL + pair_coeff @atom:CM2_bCM2_aCM2_dCM2_iCM2 @atom:PH_bPH_aPH_dPH_iPH lj9_6 0.248000 4.936800 # CM2-PH + pair_coeff @atom:CTBB_bCTBB_aCTBB_dCTBB_iCTBB @atom:EST1_bEST1_aEST1_dEST1_iEST1 lj9_6 0.390000 4.260500 # CTBB-EST1 + pair_coeff @atom:CM2_bCM2_aCM2_dCM2_iCM2 @atom:OAB_bOAB_aOAB_dOAB_iOAB lj9_6 0.413000 4.066900 # CM2-OAB + pair_coeff @atom:CTBB_bCTBB_aCTBB_dCTBB_iCTBB @atom:EST2_bEST2_aEST2_dEST2_iEST2 lj9_6 0.390000 4.260500 # CTBB-EST2 + pair_coeff @atom:CM2_bCM2_aCM2_dCM2_iCM2 @atom:CM2R_bCM2R_aCM2R_dCM2R_iCM2R lj9_6 0.237000 4.440300 # CM2-CM2R + pair_coeff @atom:CTBB_bCTBB_aCTBB_dCTBB_iCTBB @atom:PH_bPH_aPH_dPH_iPH lj9_6 0.280000 4.810500 # CTBB-PH + pair_coeff @atom:CM2_bCM2_aCM2_dCM2_iCM2 @atom:CMD2_bCMD2_aCMD2_dCMD2_iCMD2 lj9_6 0.248000 4.231300 # CM2-CMD2 + pair_coeff @atom:CTBB_bCTBB_aCTBB_dCTBB_iCTBB @atom:OAB_bOAB_aOAB_dOAB_iOAB lj9_6 0.380000 3.840000 # CTBB-OAB + pair_coeff @atom:CM2_bCM2_aCM2_dCM2_iCM2 @atom:CMR5_bCMR5_aCMR5_dCMR5_iCMR5 lj9_6 0.333000 4.484600 # CM2-CMR5 + pair_coeff @atom:CTBB_bCTBB_aCTBB_dCTBB_iCTBB @atom:CTBB_bCTBB_aCTBB_dCTBB_iCTBB lj9_6 0.265000 4.461000 # CTBB-CTBB + pair_coeff @atom:CM2_bCM2_aCM2_dCM2_iCM2 @atom:CT2_bCT2_aCT2_dCT2_iCT2 lj9_6 0.228000 4.319900 # CM2-CT2 + pair_coeff @atom:EST1_bEST1_aEST1_dEST1_iEST1 @atom:OAB_bOAB_aOAB_dOAB_iOAB lj9_6 1.100000 3.990000 # EST1-OAB + pair_coeff @atom:CM2_bCM2_aCM2_dCM2_iCM2 @atom:CM2_bCM2_aCM2_dCM2_iCM2 lj9_6 0.265000 4.461000 # CM2-CM2 + pair_coeff @atom:EST2_bEST2_aEST2_dEST2_iEST2 @atom:OAB_bOAB_aOAB_dOAB_iOAB lj9_6 1.100000 3.990000 # EST2-OAB + pair_coeff @atom:CM2_bCM2_aCM2_dCM2_iCM2 @atom:CMDB_bCMDB_aCMDB_dCMDB_iCMDB lj9_6 0.267000 4.369700 # CM2-CMDB + pair_coeff @atom:GL_bGL_aGL_dGL_iGL @atom:OAB_bOAB_aOAB_dOAB_iOAB lj9_6 0.669000 4.093000 # GL-OAB + pair_coeff @atom:CM2_bCM2_aCM2_dCM2_iCM2 @atom:CT_bCT_aCT_dCT_iCT lj9_6 0.301000 4.454600 # CM2-CT + pair_coeff @atom:NC_bNC_aNC_dNC_iNC @atom:OAB_bOAB_aOAB_dOAB_iOAB lj9_6 0.637000 3.931900 # NC-OAB + pair_coeff @atom:CM2_bCM2_aCM2_dCM2_iCM2 @atom:CTB_bCTB_aCTB_dCTB_iCTB lj9_6 0.353000 4.524600 # CM2-CTB + pair_coeff @atom:OAB_bOAB_aOAB_dOAB_iOAB @atom:W_bW_aW_dW_iW lj9_6 1.026000 4.025500 # OAB-W + pair_coeff @atom:CM2_bCM2_aCM2_dCM2_iCM2 @atom:CMB_bCMB_aCMB_dCMB_iCMB lj9_6 0.333000 4.484600 # CM2-CMB + pair_coeff @atom:OAB_bOAB_aOAB_dOAB_iOAB @atom:PH_bPH_aPH_dPH_iPH lj9_6 0.928000 3.616600 # OAB-PH + pair_coeff @atom:CM2_bCM2_aCM2_dCM2_iCM2 @atom:NC_bNC_aNC_dNC_iNC lj9_6 0.306000 5.113800 # CM2-NC + pair_coeff @atom:OAB_bOAB_aOAB_dOAB_iOAB @atom:OAB_bOAB_aOAB_dOAB_iOAB lj9_6 0.580000 3.680000 # OAB-OAB + pair_coeff @atom:CM2_bCM2_aCM2_dCM2_iCM2 @atom:EST1_bEST1_aEST1_dEST1_iEST1 lj9_6 0.366000 4.380500 # CM2-EST1 + pair_coeff @atom:CM2_bCM2_aCM2_dCM2_iCM2 @atom:EST2_bEST2_aEST2_dEST2_iEST2 lj9_6 0.366000 4.380500 # CM2-EST2 + } # end of nonbonded parameters + + write_once("In Settings") { + # ----- Bonds ----- + bond_coeff @bond:CM-CM harmonic 6.160000 3.640000 # CM-CM + bond_coeff @bond:CM-CMD2 harmonic 8.000000 3.030000 # CM-CMD2 + bond_coeff @bond:CM-CT harmonic 6.160000 3.650000 # CM-CT + bond_coeff @bond:CM-CT2 harmonic 9.000000 3.130000 # CM-CT2 + bond_coeff @bond:CM-EST1 harmonic 4.700000 3.550000 # CM-EST1 + bond_coeff @bond:CM-EST2 harmonic 5.100000 3.610000 # CM-EST2 + bond_coeff @bond:CM-PHE harmonic 12.000000 3.690000 # CM-PHE + bond_coeff @bond:CM-SO4 harmonic 11.000000 3.630000 # CM-SO4 + bond_coeff @bond:CMD2-CT harmonic 8.000000 3.090000 # CMD2-CT + bond_coeff @bond:CMD2-CT2 harmonic 60.000000 2.540000 # CMD2-CT2 + bond_coeff @bond:CT-CT harmonic 6.955000 3.710000 # CT-CT + bond_coeff @bond:EST1-GL harmonic 30.000000 2.880000 # EST1-GL + bond_coeff @bond:EST2-GL harmonic 8.400000 3.480000 # EST2-GL + bond_coeff @bond:GL-PHE harmonic 8.900000 3.520000 # GL-PHE + bond_coeff @bond:NC-PHE harmonic 4.800000 4.250000 # NC-PHE + bond_coeff @bond:NH-PHE harmonic 9.400000 3.600000 # NH-PHE + bond_coeff @bond:PHE1-PHE2 harmonic 2.500000 150.000000 # PHE1-PHE2 + bond_coeff @bond:C2T-CM2 harmonic 55.000000 2.500000 # C2T-CM2 + bond_coeff @bond:CM2-CTB harmonic 42.500000 2.900000 # CM2-CTB + bond_coeff @bond:CM2R-CTBA harmonic 45.000000 2.400000 # CM2R-CTBA + bond_coeff @bond:CM2R-OAB harmonic 50.000000 2.600000 # CM2R-OAB + bond_coeff @bond:CMB-CMDB harmonic 75.000000 3.500000 # CMB-CMDB + bond_coeff @bond:CMB-CMR5 harmonic 50.000000 3.000000 # CMB-CMR5 + bond_coeff @bond:CMB-CTBA harmonic 35.000000 3.400000 # CMB-CTBA + bond_coeff @bond:CMB-CTBB harmonic 50.000000 3.000000 # CMB-CTBB + bond_coeff @bond:CMDB-CTBA harmonic 40.000000 2.500000 # CMDB-CTBA + bond_coeff @bond:CMDB-OAB harmonic 55.000000 3.100000 # CMDB-OAB + bond_coeff @bond:CMR5-CTBB harmonic 60.000000 2.300000 # CMR5-CTBB + bond_coeff @bond:CMR-CTBA harmonic 50.000000 3.000000 # CMR-CTBA + bond_coeff @bond:CMR-CTBB harmonic 55.000000 2.500000 # CMR-CTBB + bond_coeff @bond:CTB-CTBB harmonic 22.500000 3.400000 # CTB-CTBB + bond_coeff @bond:CMR5-CTB harmonic 35.000000 3.100000 # CMR5-CTB + } + + write_once("Data Bonds By Type") { + @bond:CM-CM @atom:*_bCM_a*_d*_i* @atom:*_bCM_a*_d*_i* + @bond:CM-CMD2 @atom:*_bCM_a*_d*_i* @atom:*_bCMD2_a*_d*_i* + @bond:CM-CT @atom:*_bCM_a*_d*_i* @atom:*_bCT_a*_d*_i* + @bond:CM-CT2 @atom:*_bCM_a*_d*_i* @atom:*_bCT2_a*_d*_i* + @bond:CM-EST1 @atom:*_bCM_a*_d*_i* @atom:*_bEST1_a*_d*_i* + @bond:CM-EST2 @atom:*_bCM_a*_d*_i* @atom:*_bEST2_a*_d*_i* + @bond:CM-PHE @atom:*_bCM_a*_d*_i* @atom:*_bPHE_a*_d*_i* + @bond:CM-SO4 @atom:*_bCM_a*_d*_i* @atom:*_bSO4_a*_d*_i* + @bond:CMD2-CT @atom:*_bCMD2_a*_d*_i* @atom:*_bCT_a*_d*_i* + @bond:CMD2-CT2 @atom:*_bCMD2_a*_d*_i* @atom:*_bCT2_a*_d*_i* + @bond:CT-CT @atom:*_bCT_a*_d*_i* @atom:*_bCT_a*_d*_i* + @bond:EST1-GL @atom:*_bEST1_a*_d*_i* @atom:*_bGL_a*_d*_i* + @bond:EST2-GL @atom:*_bEST2_a*_d*_i* @atom:*_bGL_a*_d*_i* + @bond:GL-PHE @atom:*_bGL_a*_d*_i* @atom:*_bPHE_a*_d*_i* + @bond:NC-PHE @atom:*_bNC_a*_d*_i* @atom:*_bPHE_a*_d*_i* + @bond:NH-PHE @atom:*_bNH_a*_d*_i* @atom:*_bPHE_a*_d*_i* + @bond:PHE1-PHE2 @atom:*_bPHE1_a*_d*_i* @atom:*_bPHE2_a*_d*_i* + @bond:C2T-CM2 @atom:*_bC2T_a*_d*_i* @atom:*_bCM2_a*_d*_i* + @bond:CM2-CTB @atom:*_bCM2_a*_d*_i* @atom:*_bCTB_a*_d*_i* + @bond:CM2R-CTBA @atom:*_bCM2R_a*_d*_i* @atom:*_bCTBA_a*_d*_i* + @bond:CM2R-OAB @atom:*_bCM2R_a*_d*_i* @atom:*_bOAB_a*_d*_i* + @bond:CMB-CMDB @atom:*_bCMB_a*_d*_i* @atom:*_bCMDB_a*_d*_i* + @bond:CMB-CMR5 @atom:*_bCMB_a*_d*_i* @atom:*_bCMR5_a*_d*_i* + @bond:CMB-CTBA @atom:*_bCMB_a*_d*_i* @atom:*_bCTBA_a*_d*_i* + @bond:CMB-CTBB @atom:*_bCMB_a*_d*_i* @atom:*_bCTBB_a*_d*_i* + @bond:CMDB-CTBA @atom:*_bCMDB_a*_d*_i* @atom:*_bCTBA_a*_d*_i* + @bond:CMDB-OAB @atom:*_bCMDB_a*_d*_i* @atom:*_bOAB_a*_d*_i* + @bond:CMR5-CTBB @atom:*_bCMR5_a*_d*_i* @atom:*_bCTBB_a*_d*_i* + @bond:CMR-CTBA @atom:*_bCMR_a*_d*_i* @atom:*_bCTBA_a*_d*_i* + @bond:CMR-CTBB @atom:*_bCMR_a*_d*_i* @atom:*_bCTBB_a*_d*_i* + @bond:CTB-CTBB @atom:*_bCTB_a*_d*_i* @atom:*_bCTBB_a*_d*_i* + @bond:CMR5-CTB @atom:*_bCMR5_a*_d*_i* @atom:*_bCTB_a*_d*_i* + } # end of bonds + + write_once("In Settings") { + # ----- Angles ----- + angle_coeff @angle:CM-CM-CM sdk 1.190000 173.000000 # CM-CM-CM + angle_coeff @angle:CM-CM-CMD2 sdk 1.900000 161.000000 # CM-CM-CMD2 + angle_coeff @angle:CM-CM-CT sdk 1.190000 175.000000 # CM-CM-CT + angle_coeff @angle:CM-CM-CT2 sdk 1.600000 172.000000 # CM-CM-CT2 + angle_coeff @angle:CM-CM-EST1 sdk 1.000000 178.000000 # CM-CM-EST1 + angle_coeff @angle:CM-CM-EST2 sdk 1.000000 178.000000 # CM-CM-EST2 + angle_coeff @angle:CM-CM-PHE sdk 1.100000 178.000000 # CM-CM-PHE + angle_coeff @angle:CM-CMD2-CM sdk 6.000000 110.000000 # CM-CMD2-CM + angle_coeff @angle:CM-EST1-GL sdk 0.800000 168.000000 # CM-EST1-GL + angle_coeff @angle:CM-EST2-GL sdk 0.800000 172.000000 # CM-EST2-GL + angle_coeff @angle:CM-PHE-NC sdk 3.300000 112.000000 # CM-PHE-NC + angle_coeff @angle:CT-CM-CT sdk 1.093000 175.500000 # CT-CM-CT + angle_coeff @angle:CT-CM-CT2 sdk 1.600000 172.000000 # CT-CM-CT2 + angle_coeff @angle:CT-CMD2-CT sdk 7.700000 116.000000 # CT-CMD2-CT + angle_coeff @angle:CT2-CM-CT2 sdk 1.700000 173.000000 # CT2-CM-CT2 + angle_coeff @angle:CT2-CMD2-CT2 sdk 12.000000 110.000000 # CT2-CMD2-CT2 + angle_coeff @angle:EST1-GL-EST2 sdk 1.000000 95.000000 # EST1-GL-EST2 + angle_coeff @angle:EST1-GL-PHE sdk 1.400000 124.000000 # EST1-GL-PHE + angle_coeff @angle:EST2-GL-PHE sdk 2.000000 138.000000 # EST2-GL-PHE + angle_coeff @angle:GL-PHE-NC sdk 3.100000 112.000000 # GL-PHE-NC + angle_coeff @angle:GL-PHE-NH sdk 4.000000 102.000000 # GL-PHE-NH + angle_coeff @angle:C2T-CM2-CTB sdk 8.000000 160.000000 # C2T-CM2-CTB + angle_coeff @angle:CM2-CTB-CTBB sdk 4.000000 130.000000 # CM2-CTB-CTBB + angle_coeff @angle:CM2R-CTBA-CMB harmonic 40.000000 112.500000 # CM2R-CTBA-CMB + angle_coeff @angle:CM2R-CTBA-CMDB harmonic 22.500000 75.900000 # CM2R-CTBA-CMDB + angle_coeff @angle:CM2R-CTBA-CMR harmonic 35.000000 98.700000 # CM2R-CTBA-CMR + angle_coeff @angle:CM2R-OAB-CMDB harmonic 40.000000 63.900000 # CM2R-OAB-CMDB + angle_coeff @angle:CMB-CMDB-CTBA harmonic 45.000000 68.600000 # CMB-CMDB-CTBA + angle_coeff @angle:CMB-CMDB-OAB harmonic 65.000000 146.600000 # CMB-CMDB-OAB + angle_coeff @angle:CMB-CMR5-CTBB harmonic 35.000000 67.800000 # CMB-CMR5-CTBB + angle_coeff @angle:CMB-CTBA-CMDB harmonic 25.000000 68.900000 # CMB-CTBA-CMDB + angle_coeff @angle:CMB-CTBA-CMR harmonic 75.000000 47.800000 # CMB-CTBA-CMR + angle_coeff @angle:CMB-CTBB-CMR5 harmonic 25.000000 68.200000 # CMB-CTBB-CMR5 + angle_coeff @angle:CMB-CTBB-CMR harmonic 50.000000 56.300000 # CMB-CTBB-CMR + angle_coeff @angle:CMB-CTBB-CTB sdk 35.000000 120.700000 # CMB-CTBB-CTB + angle_coeff @angle:CMDB-CMB-CMR5 harmonic 150.000000 175.600000 # CMDB-CMB-CMR5 + angle_coeff @angle:CMDB-CMB-CTBA harmonic 62.500000 42.500000 # CMDB-CMB-CTBA + angle_coeff @angle:CMDB-CMB-CTBB harmonic 25.000000 134.200000 # CMDB-CMB-CTBB + angle_coeff @angle:CMDB-CTBA-CMR harmonic 50.000000 108.600000 # CMDB-CTBA-CMR + angle_coeff @angle:CMR5-CNB-CTBA harmonic 15.000000 135.800000 # CMR5-CNB-CTBA + angle_coeff @angle:CMR5-CMB-CTBB harmonic 45.000000 44.000000 # CMR5-CMB-CTBB + angle_coeff @angle:CMR5-CTBB-CTB harmonic 20.000000 62.700000 # CMR5-CTBB-CTB + angle_coeff @angle:CMR-CTBB-CMR5 harmonic 75.000000 107.000000 # CMR-CTBB-CMR5 + angle_coeff @angle:CMR-CTBB-CTB sdk 37.500000 110.100000 # CMR-CTBB-CTB + angle_coeff @angle:CTBA-CM2R-OAB harmonic 25.000000 107.400000 # CTBA-CM2R-OAB + angle_coeff @angle:CTBA-CMB-CTBB harmonic 20.000000 92.200000 # CTBA-CMB-CTBB + angle_coeff @angle:CTBA-CMDB-OAB harmonic 20.000000 91.800000 # CTBA-CMDB-OAB + angle_coeff @angle:CTBA-CMR-CTBB harmonic 15.000000 115.000000 # CTBA-CMR-CTBB + angle_coeff @angle:CMB-CMR5-CTB harmonic 88.000000 131.700000 # CMB-CMR5-CTB + angle_coeff @angle:CTBB-CMR5-CTB harmonic 20.000000 77.400000 # CTBB-CMR5-CTB + angle_coeff @angle:CM2-CTB-CMR5 sdk 20.000000 118.000000 # CM2-CTB-CMR5 + angle_coeff @angle:CMR5-CTB-CTBB harmonic 62.500000 39.700000 # CMR5-CTB-CTBB + } + + write_once("Data Angles By Type") { + @angle:CM-CM-CM @atom:*_b*_aCM_d*_i* @atom:*_b*_aCM_d*_i* @atom:*_b*_aCM_d*_i* + @angle:CM-CM-CMD2 @atom:*_b*_aCM_d*_i* @atom:*_b*_aCM_d*_i* @atom:*_b*_aCMD2_d*_i* + @angle:CM-CM-CT @atom:*_b*_aCM_d*_i* @atom:*_b*_aCM_d*_i* @atom:*_b*_aCT_d*_i* + @angle:CM-CM-CT2 @atom:*_b*_aCM_d*_i* @atom:*_b*_aCM_d*_i* @atom:*_b*_aCT2_d*_i* + @angle:CM-CM-EST1 @atom:*_b*_aCM_d*_i* @atom:*_b*_aCM_d*_i* @atom:*_b*_aEST1_d*_i* + @angle:CM-CM-EST2 @atom:*_b*_aCM_d*_i* @atom:*_b*_aCM_d*_i* @atom:*_b*_aEST2_d*_i* + @angle:CM-CM-PHE @atom:*_b*_aCM_d*_i* @atom:*_b*_aCM_d*_i* @atom:*_b*_aPHE_d*_i* + @angle:CM-CMD2-CM @atom:*_b*_aCM_d*_i* @atom:*_b*_aCMD2_d*_i* @atom:*_b*_aCM_d*_i* + @angle:CM-EST1-GL @atom:*_b*_aCM_d*_i* @atom:*_b*_aEST1_d*_i* @atom:*_b*_aGL_d*_i* + @angle:CM-EST2-GL @atom:*_b*_aCM_d*_i* @atom:*_b*_aEST2_d*_i* @atom:*_b*_aGL_d*_i* + @angle:CM-PHE-NC @atom:*_b*_aCM_d*_i* @atom:*_b*_aPHE_d*_i* @atom:*_b*_aNC_d*_i* + @angle:CT-CM-CT @atom:*_b*_aCT_d*_i* @atom:*_b*_aCM_d*_i* @atom:*_b*_aCT_d*_i* + @angle:CT-CM-CT2 @atom:*_b*_aCT_d*_i* @atom:*_b*_aCM_d*_i* @atom:*_b*_aCT2_d*_i* + @angle:CT-CMD2-CT @atom:*_b*_aCT_d*_i* @atom:*_b*_aCMD2_d*_i* @atom:*_b*_aCT_d*_i* + @angle:CT2-CM-CT2 @atom:*_b*_aCT2_d*_i* @atom:*_b*_aCM_d*_i* @atom:*_b*_aCT2_d*_i* + @angle:CT2-CMD2-CT2 @atom:*_b*_aCT2_d*_i* @atom:*_b*_aCMD2_d*_i* @atom:*_b*_aCT2_d*_i* + @angle:EST1-GL-EST2 @atom:*_b*_aEST1_d*_i* @atom:*_b*_aGL_d*_i* @atom:*_b*_aEST2_d*_i* + @angle:EST1-GL-PHE @atom:*_b*_aEST1_d*_i* @atom:*_b*_aGL_d*_i* @atom:*_b*_aPHE_d*_i* + @angle:EST2-GL-PHE @atom:*_b*_aEST2_d*_i* @atom:*_b*_aGL_d*_i* @atom:*_b*_aPHE_d*_i* + @angle:GL-PHE-NC @atom:*_b*_aGL_d*_i* @atom:*_b*_aPHE_d*_i* @atom:*_b*_aNC_d*_i* + @angle:GL-PHE-NH @atom:*_b*_aGL_d*_i* @atom:*_b*_aPHE_d*_i* @atom:*_b*_aNH_d*_i* + @angle:C2T-CM2-CTB @atom:*_b*_aC2T_d*_i* @atom:*_b*_aCM2_d*_i* @atom:*_b*_aCTB_d*_i* + @angle:CM2-CTB-CTBB @atom:*_b*_aCM2_d*_i* @atom:*_b*_aCTB_d*_i* @atom:*_b*_aCTBB_d*_i* + @angle:CM2R-CTBA-CMB @atom:*_b*_aCM2R_d*_i* @atom:*_b*_aCTBA_d*_i* @atom:*_b*_aCMB_d*_i* + @angle:CM2R-CTBA-CMDB @atom:*_b*_aCM2R_d*_i* @atom:*_b*_aCTBA_d*_i* @atom:*_b*_aCMDB_d*_i* + @angle:CM2R-CTBA-CMR @atom:*_b*_aCM2R_d*_i* @atom:*_b*_aCTBA_d*_i* @atom:*_b*_aCMR_d*_i* + @angle:CM2R-OAB-CMDB @atom:*_b*_aCM2R_d*_i* @atom:*_b*_aOAB_d*_i* @atom:*_b*_aCMDB_d*_i* + @angle:CMB-CMDB-CTBA @atom:*_b*_aCMB_d*_i* @atom:*_b*_aCMDB_d*_i* @atom:*_b*_aCTBA_d*_i* + @angle:CMB-CMDB-OAB @atom:*_b*_aCMB_d*_i* @atom:*_b*_aCMDB_d*_i* @atom:*_b*_aOAB_d*_i* + @angle:CMB-CMR5-CTBB @atom:*_b*_aCMB_d*_i* @atom:*_b*_aCMR5_d*_i* @atom:*_b*_aCTBB_d*_i* + @angle:CMB-CTBA-CMDB @atom:*_b*_aCMB_d*_i* @atom:*_b*_aCTBA_d*_i* @atom:*_b*_aCMDB_d*_i* + @angle:CMB-CTBA-CMR @atom:*_b*_aCMB_d*_i* @atom:*_b*_aCTBA_d*_i* @atom:*_b*_aCMR_d*_i* + @angle:CMB-CTBB-CMR5 @atom:*_b*_aCMB_d*_i* @atom:*_b*_aCTBB_d*_i* @atom:*_b*_aCMR5_d*_i* + @angle:CMB-CTBB-CMR @atom:*_b*_aCMB_d*_i* @atom:*_b*_aCTBB_d*_i* @atom:*_b*_aCMR_d*_i* + @angle:CMB-CTBB-CTB @atom:*_b*_aCMB_d*_i* @atom:*_b*_aCTBB_d*_i* @atom:*_b*_aCTB_d*_i* + @angle:CMDB-CMB-CMR5 @atom:*_b*_aCMDB_d*_i* @atom:*_b*_aCMB_d*_i* @atom:*_b*_aCMR5_d*_i* + @angle:CMDB-CMB-CTBA @atom:*_b*_aCMDB_d*_i* @atom:*_b*_aCMB_d*_i* @atom:*_b*_aCTBA_d*_i* + @angle:CMDB-CMB-CTBB @atom:*_b*_aCMDB_d*_i* @atom:*_b*_aCMB_d*_i* @atom:*_b*_aCTBB_d*_i* + @angle:CMDB-CTBA-CMR @atom:*_b*_aCMDB_d*_i* @atom:*_b*_aCTBA_d*_i* @atom:*_b*_aCMR_d*_i* + @angle:CMR5-CNB-CTBA @atom:*_b*_aCMR5_d*_i* @atom:*_b*_aCNB_d*_i* @atom:*_b*_aCTBA_d*_i* + @angle:CMR5-CMB-CTBB @atom:*_b*_aCMR5_d*_i* @atom:*_b*_aCMB_d*_i* @atom:*_b*_aCTBB_d*_i* + @angle:CMR5-CTBB-CTB @atom:*_b*_aCMR5_d*_i* @atom:*_b*_aCTBB_d*_i* @atom:*_b*_aCTB_d*_i* + @angle:CMR-CTBB-CMR5 @atom:*_b*_aCMR_d*_i* @atom:*_b*_aCTBB_d*_i* @atom:*_b*_aCMR5_d*_i* + @angle:CMR-CTBB-CTB @atom:*_b*_aCMR_d*_i* @atom:*_b*_aCTBB_d*_i* @atom:*_b*_aCTB_d*_i* + @angle:CTBA-CM2R-OAB @atom:*_b*_aCTBA_d*_i* @atom:*_b*_aCM2R_d*_i* @atom:*_b*_aOAB_d*_i* + @angle:CTBA-CMB-CTBB @atom:*_b*_aCTBA_d*_i* @atom:*_b*_aCMB_d*_i* @atom:*_b*_aCTBB_d*_i* + @angle:CTBA-CMDB-OAB @atom:*_b*_aCTBA_d*_i* @atom:*_b*_aCMDB_d*_i* @atom:*_b*_aOAB_d*_i* + @angle:CTBA-CMR-CTBB @atom:*_b*_aCTBA_d*_i* @atom:*_b*_aCMR_d*_i* @atom:*_b*_aCTBB_d*_i* + @angle:CMB-CMR5-CTB @atom:*_b*_aCMB_d*_i* @atom:*_b*_aCMR5_d*_i* @atom:*_b*_aCTB_d*_i* + @angle:CTBB-CMR5-CTB @atom:*_b*_aCTBB_d*_i* @atom:*_b*_aCMR5_d*_i* @atom:*_b*_aCTB_d*_i* + @angle:CM2-CTB-CMR5 @atom:*_b*_aCM2_d*_i* @atom:*_b*_aCTB_d*_i* @atom:*_b*_aCMR5_d*_i* + @angle:CMR5-CTB-CTBB @atom:*_b*_aCMR5_d*_i* @atom:*_b*_aCTB_d*_i* @atom:*_b*_aCTBB_d*_i* + } # end of angles + + write_once("In Init") { + # Warning: This is a very generic "In Init" section, further + # modification prior to any simulation is extremely likely + units real + atom_style full + bond_style hybrid harmonic + angle_style hybrid sdk + pair_style hybrid lj/sdk/coul/long 9.000000 12.000000 + special_bonds lj/coul 0.0 0.0 0.0 + } # end init +} # SDK diff --git a/tools/moltemplate/moltemplate/force_fields/sdk/SDK_lipidONLY.lt b/tools/moltemplate/moltemplate/force_fields/sdk/SDK_lipidONLY.lt new file mode 100644 index 0000000000000000000000000000000000000000..de10509439f67e8a76f8637b98f1c778dc773372 --- /dev/null +++ b/tools/moltemplate/moltemplate/force_fields/sdk/SDK_lipidONLY.lt @@ -0,0 +1,221 @@ +# Autogenerated by EMC 2 LT tool v0.2 on 2017-02-27 +# +# ./emcprm2lt.py --pair-style=lj/sdk/coul/long --bond-style=harmonic --angle-style=harmonic sdk_lipids.prm --name=SDK_lipidONLY +# +# Adapted from EMC by Pieter J. in 't Veld +# Originally written as, FFNAME:SDK STYLE:COARSE VERSION:1.0 on Oct 2014 + +SDK { + write_once("Data Masses") { + @atom:CM 42.080400 # CM + @atom:CMD2 26.037800 # CMD2 + @atom:CT 43.088300 # CT + @atom:CT2 29.061500 # CT2 + @atom:EST1 58.036600 # EST1 + @atom:EST2 58.036600 # EST2 + @atom:GL 41.072500 # GL + @atom:NC 87.164400 # NC + @atom:NH 44.076100 # NH + @atom:PH 94.971600 # PH + @atom:PHE 94.971600 # PHE + @atom:W 54.045600 # W + } # end of atom masses + + # ----- EQUIVALENCE CATEGORIES for bonded interaction lookup ----- + replace{ @atom:CM @atom:CM_bCM_aCM_dCM_iCM} + replace{ @atom:CMD2 @atom:CMD2_bCMD2_aCMD2_dCMD2_iCMD2} + replace{ @atom:CT @atom:CT_bCT_aCT_dCT_iCT} + replace{ @atom:CT2 @atom:CT2_bCT2_aCT2_dCT2_iCT2} + replace{ @atom:EST1 @atom:EST1_bEST1_aEST1_dEST1_iEST1} + replace{ @atom:EST2 @atom:EST2_bEST2_aEST2_dEST2_iEST2} + replace{ @atom:GL @atom:GL_bGL_aGL_dGL_iGL} + replace{ @atom:NC @atom:NC_bNC_aNC_dNC_iNC} + replace{ @atom:NH @atom:NH_bNH_aNH_dNH_iNH} + replace{ @atom:PH @atom:PH_bPH_aPH_dPH_iPH} + replace{ @atom:PHE @atom:PHE_bPHE_aPHE_dPHE_iPHE} + replace{ @atom:W @atom:W_bW_aW_dW_iW} + # END EQUIVALENCE + + write_once("In Settings") { + # ----- Non-Bonded interactions ----- + pair_coeff @atom:CM_bCM_aCM_dCM_iCM @atom:CM_bCM_aCM_dCM_iCM lj9_6 0.420000 4.506000 # CM-CM + pair_coeff @atom:CM_bCM_aCM_dCM_iCM @atom:CMD2_bCMD2_aCMD2_dCMD2_iCMD2 lj9_6 0.312000 4.255500 # CM-CMD2 + pair_coeff @atom:CM_bCM_aCM_dCM_iCM @atom:CT_bCT_aCT_dCT_iCT lj9_6 0.444000 4.545500 # CM-CT + pair_coeff @atom:CM_bCM_aCM_dCM_iCM @atom:CT2_bCT2_aCT2_dCT2_iCT2 lj9_6 0.362000 4.363500 # CM-CT2 + pair_coeff @atom:CM_bCM_aCM_dCM_iCM @atom:EST1_bEST1_aEST1_dEST1_iEST1 lj9_6 0.470000 4.403000 # CM-EST1 + pair_coeff @atom:CM_bCM_aCM_dCM_iCM @atom:EST2_bEST2_aEST2_dEST2_iEST2 lj9_6 0.470000 4.403000 # CM-EST2 + pair_coeff @atom:CM_bCM_aCM_dCM_iCM @atom:GL_bGL_aGL_dGL_iGL lj9_6 0.420000 4.506000 # CM-GL + pair_coeff @atom:CM_bCM_aCM_dCM_iCM @atom:NC_bNC_aNC_dNC_iNC lj9_6 0.400000 5.128000 # CM-NC + pair_coeff @atom:CM_bCM_aCM_dCM_iCM @atom:NH_bNH_aNH_dNH_iNH lj9_6 0.330000 4.553000 # CM-NH + pair_coeff @atom:CM_bCM_aCM_dCM_iCM @atom:PH_bPH_aPH_dPH_iPH lj9_6 0.300000 4.953000 # CM-PH + pair_coeff @atom:CM_bCM_aCM_dCM_iCM @atom:PHE_bPHE_aPHE_dPHE_iPHE lj9_6 0.300000 4.953000 # CM-PHE + pair_coeff @atom:CM_bCM_aCM_dCM_iCM @atom:W_bW_aW_dW_iW lj12_4 0.340000 4.438500 # CM-W + pair_coeff @atom:CMD2_bCMD2_aCMD2_dCMD2_iCMD2 @atom:CMD2_bCMD2_aCMD2_dCMD2_iCMD2 lj9_6 0.232000 4.005000 # CMD2-CMD2 + pair_coeff @atom:CMD2_bCMD2_aCMD2_dCMD2_iCMD2 @atom:CT_bCT_aCT_dCT_iCT lj9_6 0.330000 4.295000 # CMD2-CT + pair_coeff @atom:CMD2_bCMD2_aCMD2_dCMD2_iCMD2 @atom:CT2_bCT2_aCT2_dCT2_iCT2 lj9_6 0.269000 4.113000 # CMD2-CT2 + pair_coeff @atom:CMD2_bCMD2_aCMD2_dCMD2_iCMD2 @atom:EST1_bEST1_aEST1_dEST1_iEST1 lj9_6 0.440000 4.005000 # CMD2-EST1 + pair_coeff @atom:CMD2_bCMD2_aCMD2_dCMD2_iCMD2 @atom:EST2_bEST2_aEST2_dEST2_iEST2 lj9_6 0.440000 4.005000 # CMD2-EST2 + pair_coeff @atom:CMD2_bCMD2_aCMD2_dCMD2_iCMD2 @atom:GL_bGL_aGL_dGL_iGL lj9_6 0.312000 4.255500 # CMD2-GL + pair_coeff @atom:CMD2_bCMD2_aCMD2_dCMD2_iCMD2 @atom:NC_bNC_aNC_dNC_iNC lj9_6 0.350000 4.877500 # CMD2-NC + pair_coeff @atom:CMD2_bCMD2_aCMD2_dCMD2_iCMD2 @atom:NH_bNH_aNH_dNH_iNH lj9_6 0.300000 4.302500 # CMD2-NH + pair_coeff @atom:CMD2_bCMD2_aCMD2_dCMD2_iCMD2 @atom:PH_bPH_aPH_dPH_iPH lj9_6 0.300000 4.702500 # CMD2-PH + pair_coeff @atom:CMD2_bCMD2_aCMD2_dCMD2_iCMD2 @atom:PHE_bPHE_aPHE_dPHE_iPHE lj9_6 0.300000 4.702500 # CMD2-PHE + pair_coeff @atom:CMD2_bCMD2_aCMD2_dCMD2_iCMD2 @atom:W_bW_aW_dW_iW lj12_4 0.270000 4.188000 # CMD2-W + pair_coeff @atom:CT_bCT_aCT_dCT_iCT @atom:CT_bCT_aCT_dCT_iCT lj9_6 0.469000 4.585000 # CT-CT + pair_coeff @atom:CT_bCT_aCT_dCT_iCT @atom:CT2_bCT2_aCT2_dCT2_iCT2 lj9_6 0.383000 4.403000 # CT-CT2 + pair_coeff @atom:CT_bCT_aCT_dCT_iCT @atom:EST1_bEST1_aEST1_dEST1_iEST1 lj9_6 0.470000 4.442500 # CT-EST1 + pair_coeff @atom:CT_bCT_aCT_dCT_iCT @atom:EST2_bEST2_aEST2_dEST2_iEST2 lj9_6 0.470000 4.442500 # CT-EST2 + pair_coeff @atom:CT_bCT_aCT_dCT_iCT @atom:GL_bGL_aGL_dGL_iGL lj9_6 0.444000 4.545500 # CT-GL + pair_coeff @atom:CT_bCT_aCT_dCT_iCT @atom:NC_bNC_aNC_dNC_iNC lj9_6 0.420000 5.167500 # CT-NC + pair_coeff @atom:CT_bCT_aCT_dCT_iCT @atom:NH_bNH_aNH_dNH_iNH lj9_6 0.340000 4.925000 # CT-NH + pair_coeff @atom:CT_bCT_aCT_dCT_iCT @atom:PH_bPH_aPH_dPH_iPH lj9_6 0.320000 4.992500 # CT-PH + pair_coeff @atom:CT_bCT_aCT_dCT_iCT @atom:PHE_bPHE_aPHE_dPHE_iPHE lj9_6 0.320000 4.992500 # CT-PHE + pair_coeff @atom:CT_bCT_aCT_dCT_iCT @atom:W_bW_aW_dW_iW lj12_4 0.360000 4.478000 # CT-W + pair_coeff @atom:CT2_bCT2_aCT2_dCT2_iCT2 @atom:CT2_bCT2_aCT2_dCT2_iCT2 lj9_6 0.312000 4.221000 # CT2-CT2 + pair_coeff @atom:CT2_bCT2_aCT2_dCT2_iCT2 @atom:EST1_bEST1_aEST1_dEST1_iEST1 lj9_6 0.390000 4.260500 # CT2-EST1 + pair_coeff @atom:CT2_bCT2_aCT2_dCT2_iCT2 @atom:EST2_bEST2_aEST2_dEST2_iEST2 lj9_6 0.390000 4.260500 # CT2-EST2 + pair_coeff @atom:CT2_bCT2_aCT2_dCT2_iCT2 @atom:GL_bGL_aGL_dGL_iGL lj9_6 0.362000 4.365000 # CT2-GL + pair_coeff @atom:CT2_bCT2_aCT2_dCT2_iCT2 @atom:NC_bNC_aNC_dNC_iNC lj9_6 0.320000 4.985500 # CT2-NC + pair_coeff @atom:CT2_bCT2_aCT2_dCT2_iCT2 @atom:NH_bNH_aNH_dNH_iNH lj9_6 0.320000 4.410500 # CT2-NH + pair_coeff @atom:CT2_bCT2_aCT2_dCT2_iCT2 @atom:PH_bPH_aPH_dPH_iPH lj9_6 0.280000 4.810500 # CT2-PH + pair_coeff @atom:CT2_bCT2_aCT2_dCT2_iCT2 @atom:PHE_bPHE_aPHE_dPHE_iPHE lj9_6 0.280000 4.810500 # CT2-PHE + pair_coeff @atom:CT2_bCT2_aCT2_dCT2_iCT2 @atom:W_bW_aW_dW_iW lj12_4 0.290000 4.296000 # CT2-W + pair_coeff @atom:EST1_bEST1_aEST1_dEST1_iEST1 @atom:EST1_bEST1_aEST1_dEST1_iEST1 lj9_6 0.495000 4.300000 # EST1-EST1 + pair_coeff @atom:EST1_bEST1_aEST1_dEST1_iEST1 @atom:EST2_bEST2_aEST2_dEST2_iEST2 lj9_6 0.495000 4.300000 # EST1-EST2 + pair_coeff @atom:EST1_bEST1_aEST1_dEST1_iEST1 @atom:GL_bGL_aGL_dGL_iGL lj9_6 0.470000 4.403000 # EST1-GL + pair_coeff @atom:EST1_bEST1_aEST1_dEST1_iEST1 @atom:NC_bNC_aNC_dNC_iNC lj9_6 0.750000 4.475000 # EST1-NC + pair_coeff @atom:EST1_bEST1_aEST1_dEST1_iEST1 @atom:NH_bNH_aNH_dNH_iNH lj9_6 0.850000 4.110000 # EST1-NH + pair_coeff @atom:EST1_bEST1_aEST1_dEST1_iEST1 @atom:PH_bPH_aPH_dPH_iPH lj9_6 0.500000 4.550000 # EST1-PH + pair_coeff @atom:EST1_bEST1_aEST1_dEST1_iEST1 @atom:PHE_bPHE_aPHE_dPHE_iPHE lj9_6 0.500000 4.550000 # EST1-PHE + pair_coeff @atom:EST1_bEST1_aEST1_dEST1_iEST1 @atom:W_bW_aW_dW_iW lj12_4 0.820000 4.290000 # EST1-W + pair_coeff @atom:EST2_bEST2_aEST2_dEST2_iEST2 @atom:EST2_bEST2_aEST2_dEST2_iEST2 lj9_6 0.495000 4.300000 # EST2-EST2 + pair_coeff @atom:EST2_bEST2_aEST2_dEST2_iEST2 @atom:GL_bGL_aGL_dGL_iGL lj9_6 0.470000 4.403000 # EST2-GL + pair_coeff @atom:EST2_bEST2_aEST2_dEST2_iEST2 @atom:NC_bNC_aNC_dNC_iNC lj9_6 0.750000 4.475000 # EST2-NC + pair_coeff @atom:EST2_bEST2_aEST2_dEST2_iEST2 @atom:NH_bNH_aNH_dNH_iNH lj9_6 0.850000 4.110000 # EST2-NH + pair_coeff @atom:EST2_bEST2_aEST2_dEST2_iEST2 @atom:PH_bPH_aPH_dPH_iPH lj9_6 0.500000 4.550000 # EST2-PH + pair_coeff @atom:EST2_bEST2_aEST2_dEST2_iEST2 @atom:PHE_bPHE_aPHE_dPHE_iPHE lj9_6 0.500000 4.550000 # EST2-PHE + pair_coeff @atom:EST2_bEST2_aEST2_dEST2_iEST2 @atom:W_bW_aW_dW_iW lj12_4 0.820000 4.290000 # EST2-W + pair_coeff @atom:GL_bGL_aGL_dGL_iGL @atom:GL_bGL_aGL_dGL_iGL lj9_6 0.420000 4.506000 # GL-GL + pair_coeff @atom:GL_bGL_aGL_dGL_iGL @atom:NC_bNC_aNC_dNC_iNC lj9_6 0.650000 4.620000 # GL-NC + pair_coeff @atom:GL_bGL_aGL_dGL_iGL @atom:NH_bNH_aNH_dNH_iNH lj9_6 0.750000 4.190000 # GL-NH + pair_coeff @atom:GL_bGL_aGL_dGL_iGL @atom:PH_bPH_aPH_dPH_iPH lj9_6 0.300000 4.750000 # GL-PH + pair_coeff @atom:GL_bGL_aGL_dGL_iGL @atom:PHE_bPHE_aPHE_dPHE_iPHE lj9_6 0.300000 4.750000 # GL-PHE + pair_coeff @atom:GL_bGL_aGL_dGL_iGL @atom:W_bW_aW_dW_iW lj12_4 0.640000 4.438500 # GL-W + pair_coeff @atom:NC_bNC_aNC_dNC_iNC @atom:NC_bNC_aNC_dNC_iNC lj9_6 0.700000 5.750000 # NC-NC + pair_coeff @atom:NC_bNC_aNC_dNC_iNC @atom:NH_bNH_aNH_dNH_iNH lj9_6 0.880000 5.175000 # NC-NH + pair_coeff @atom:NC_bNC_aNC_dNC_iNC @atom:PH_bPH_aPH_dPH_iPH lj9_6 1.150000 4.200000 # NC-PH + pair_coeff @atom:NC_bNC_aNC_dNC_iNC @atom:PHE_bPHE_aPHE_dPHE_iPHE lj9_6 1.150000 4.200000 # NC-PHE + pair_coeff @atom:NC_bNC_aNC_dNC_iNC @atom:W_bW_aW_dW_iW lj12_4 0.900000 4.610000 # NC-W + pair_coeff @atom:NH_bNH_aNH_dNH_iNH @atom:NH_bNH_aNH_dNH_iNH lj9_6 1.100000 4.600000 # NH-NH + pair_coeff @atom:NH_bNH_aNH_dNH_iNH @atom:PH_bPH_aPH_dPH_iPH lj9_6 1.200000 3.800000 # NH-PH + pair_coeff @atom:NH_bNH_aNH_dNH_iNH @atom:PHE_bPHE_aPHE_dPHE_iPHE lj9_6 1.200000 3.800000 # NH-PHE + pair_coeff @atom:NH_bNH_aNH_dNH_iNH @atom:W_bW_aW_dW_iW lj12_4 0.800000 3.950000 # NH-W + pair_coeff @atom:PH_bPH_aPH_dPH_iPH @atom:PH_bPH_aPH_dPH_iPH lj9_6 1.400000 5.400000 # PH-PH + pair_coeff @atom:PH_bPH_aPH_dPH_iPH @atom:PHE_bPHE_aPHE_dPHE_iPHE lj9_6 1.400000 5.000000 # PH-PHE + pair_coeff @atom:PH_bPH_aPH_dPH_iPH @atom:W_bW_aW_dW_iW lj12_4 1.000000 4.030000 # PH-W + pair_coeff @atom:PHE_bPHE_aPHE_dPHE_iPHE @atom:PHE_bPHE_aPHE_dPHE_iPHE lj9_6 1.400000 4.600000 # PHE-PHE + pair_coeff @atom:PHE_bPHE_aPHE_dPHE_iPHE @atom:W_bW_aW_dW_iW lj12_4 1.000000 4.030000 # PHE-W + pair_coeff @atom:W_bW_aW_dW_iW @atom:W_bW_aW_dW_iW lj12_4 0.895000 4.371000 # W-W + } # end of nonbonded parameters + + write_once("In Settings") { + # ----- Bonds ----- + bond_coeff @bond:CM-CM harmonic 3.080000 3.640000 + bond_coeff @bond:CM-CMD2 harmonic 4.000000 3.030000 + bond_coeff @bond:CM-CT harmonic 3.080000 3.650000 + bond_coeff @bond:CM-CT2 harmonic 4.500000 3.130000 + bond_coeff @bond:CM-EST1 harmonic 2.350000 3.550000 + bond_coeff @bond:CM-EST2 harmonic 2.550000 3.610000 + bond_coeff @bond:CM-PHE harmonic 6.000000 3.690000 + bond_coeff @bond:CM-SO4 harmonic 5.500000 3.630000 + bond_coeff @bond:CMD2-CT harmonic 4.000000 3.090000 + bond_coeff @bond:CMD2-CT2 harmonic 30.000000 2.540000 + bond_coeff @bond:CT-CT harmonic 3.477500 3.710000 + bond_coeff @bond:EST1-GL harmonic 15.000000 2.880000 + bond_coeff @bond:EST2-GL harmonic 4.200000 3.480000 + bond_coeff @bond:GL-PHE harmonic 4.450000 3.520000 + bond_coeff @bond:NC-PHE harmonic 2.400000 4.250000 + bond_coeff @bond:NH-PHE harmonic 4.700000 3.600000 + bond_coeff @bond:PHE1-PHE2 harmonic 1.250000 150.000000 + } + + write_once("Data Bonds By Type") { + @bond:CM-CM @atom:*_bCM_a*_d*_i* @atom:*_bCM_a*_d*_i* + @bond:CM-CMD2 @atom:*_bCM_a*_d*_i* @atom:*_bCMD2_a*_d*_i* + @bond:CM-CT @atom:*_bCM_a*_d*_i* @atom:*_bCT_a*_d*_i* + @bond:CM-CT2 @atom:*_bCM_a*_d*_i* @atom:*_bCT2_a*_d*_i* + @bond:CM-EST1 @atom:*_bCM_a*_d*_i* @atom:*_bEST1_a*_d*_i* + @bond:CM-EST2 @atom:*_bCM_a*_d*_i* @atom:*_bEST2_a*_d*_i* + @bond:CM-PHE @atom:*_bCM_a*_d*_i* @atom:*_bPHE_a*_d*_i* + @bond:CM-SO4 @atom:*_bCM_a*_d*_i* @atom:*_bSO4_a*_d*_i* + @bond:CMD2-CT @atom:*_bCMD2_a*_d*_i* @atom:*_bCT_a*_d*_i* + @bond:CMD2-CT2 @atom:*_bCMD2_a*_d*_i* @atom:*_bCT2_a*_d*_i* + @bond:CT-CT @atom:*_bCT_a*_d*_i* @atom:*_bCT_a*_d*_i* + @bond:EST1-GL @atom:*_bEST1_a*_d*_i* @atom:*_bGL_a*_d*_i* + @bond:EST2-GL @atom:*_bEST2_a*_d*_i* @atom:*_bGL_a*_d*_i* + @bond:GL-PHE @atom:*_bGL_a*_d*_i* @atom:*_bPHE_a*_d*_i* + @bond:NC-PHE @atom:*_bNC_a*_d*_i* @atom:*_bPHE_a*_d*_i* + @bond:NH-PHE @atom:*_bNH_a*_d*_i* @atom:*_bPHE_a*_d*_i* + @bond:PHE1-PHE2 @atom:*_bPHE1_a*_d*_i* @atom:*_bPHE2_a*_d*_i* + } # end of bonds + + write_once("In Settings") { + # ----- Angles ----- + angle_coeff @angle:CM-CM-CM harmonic 1.190000 173.000000 + angle_coeff @angle:CM-CM-CMD2 harmonic 1.900000 161.000000 + angle_coeff @angle:CM-CM-CT harmonic 1.190000 175.000000 + angle_coeff @angle:CM-CM-CT2 harmonic 1.600000 172.000000 + angle_coeff @angle:CM-CM-EST1 harmonic 1.000000 178.000000 + angle_coeff @angle:CM-CM-EST2 harmonic 1.000000 178.000000 + angle_coeff @angle:CM-CM-PHE harmonic 1.100000 178.000000 + angle_coeff @angle:CM-CMD2-CM harmonic 6.000000 110.000000 + angle_coeff @angle:CM-EST1-GL harmonic 0.800000 168.000000 + angle_coeff @angle:CM-EST2-GL harmonic 0.800000 172.000000 + angle_coeff @angle:CM-PHE-NC harmonic 3.300000 112.000000 + angle_coeff @angle:CT-CM-CT harmonic 1.093000 175.500000 + angle_coeff @angle:CT-CM-CT2 harmonic 1.600000 172.000000 + angle_coeff @angle:CT-CMD2-CT harmonic 7.700000 116.000000 + angle_coeff @angle:CT2-CM-CT2 harmonic 1.700000 173.000000 + angle_coeff @angle:CT2-CMD2-CT2 harmonic 12.000000 110.000000 + angle_coeff @angle:EST1-GL-EST2 harmonic 1.000000 95.000000 + angle_coeff @angle:EST1-GL-PHE harmonic 1.400000 124.000000 + angle_coeff @angle:EST2-GL-PHE harmonic 2.000000 138.000000 + angle_coeff @angle:GL-PHE-NC harmonic 3.100000 112.000000 + angle_coeff @angle:GL-PHE-NH harmonic 4.000000 102.000000 + } + + write_once("Data Angles By Type") { + @angle:CM-CM-CM @atom:*_b*_aCM_d*_i* @atom:*_b*_aCM_d*_i* @atom:*_b*_aCM_d*_i* + @angle:CM-CM-CMD2 @atom:*_b*_aCM_d*_i* @atom:*_b*_aCM_d*_i* @atom:*_b*_aCMD2_d*_i* + @angle:CM-CM-CT @atom:*_b*_aCM_d*_i* @atom:*_b*_aCM_d*_i* @atom:*_b*_aCT_d*_i* + @angle:CM-CM-CT2 @atom:*_b*_aCM_d*_i* @atom:*_b*_aCM_d*_i* @atom:*_b*_aCT2_d*_i* + @angle:CM-CM-EST1 @atom:*_b*_aCM_d*_i* @atom:*_b*_aCM_d*_i* @atom:*_b*_aEST1_d*_i* + @angle:CM-CM-EST2 @atom:*_b*_aCM_d*_i* @atom:*_b*_aCM_d*_i* @atom:*_b*_aEST2_d*_i* + @angle:CM-CM-PHE @atom:*_b*_aCM_d*_i* @atom:*_b*_aCM_d*_i* @atom:*_b*_aPHE_d*_i* + @angle:CM-CMD2-CM @atom:*_b*_aCM_d*_i* @atom:*_b*_aCMD2_d*_i* @atom:*_b*_aCM_d*_i* + @angle:CM-EST1-GL @atom:*_b*_aCM_d*_i* @atom:*_b*_aEST1_d*_i* @atom:*_b*_aGL_d*_i* + @angle:CM-EST2-GL @atom:*_b*_aCM_d*_i* @atom:*_b*_aEST2_d*_i* @atom:*_b*_aGL_d*_i* + @angle:CM-PHE-NC @atom:*_b*_aCM_d*_i* @atom:*_b*_aPHE_d*_i* @atom:*_b*_aNC_d*_i* + @angle:CT-CM-CT @atom:*_b*_aCT_d*_i* @atom:*_b*_aCM_d*_i* @atom:*_b*_aCT_d*_i* + @angle:CT-CM-CT2 @atom:*_b*_aCT_d*_i* @atom:*_b*_aCM_d*_i* @atom:*_b*_aCT2_d*_i* + @angle:CT-CMD2-CT @atom:*_b*_aCT_d*_i* @atom:*_b*_aCMD2_d*_i* @atom:*_b*_aCT_d*_i* + @angle:CT2-CM-CT2 @atom:*_b*_aCT2_d*_i* @atom:*_b*_aCM_d*_i* @atom:*_b*_aCT2_d*_i* + @angle:CT2-CMD2-CT2 @atom:*_b*_aCT2_d*_i* @atom:*_b*_aCMD2_d*_i* @atom:*_b*_aCT2_d*_i* + @angle:EST1-GL-EST2 @atom:*_b*_aEST1_d*_i* @atom:*_b*_aGL_d*_i* @atom:*_b*_aEST2_d*_i* + @angle:EST1-GL-PHE @atom:*_b*_aEST1_d*_i* @atom:*_b*_aGL_d*_i* @atom:*_b*_aPHE_d*_i* + @angle:EST2-GL-PHE @atom:*_b*_aEST2_d*_i* @atom:*_b*_aGL_d*_i* @atom:*_b*_aPHE_d*_i* + @angle:GL-PHE-NC @atom:*_b*_aGL_d*_i* @atom:*_b*_aPHE_d*_i* @atom:*_b*_aNC_d*_i* + @angle:GL-PHE-NH @atom:*_b*_aGL_d*_i* @atom:*_b*_aPHE_d*_i* @atom:*_b*_aNH_d*_i* + } # end of angles + + write_once("In Init") { + # Warning: This is a very generic "In Init" section, further + # modification prior to any simulation is extremely likely + units real + atom_style full + bond_style hybrid harmonic + angle_style hybrid harmonic + pair_style hybrid lj/sdk/coul/long 9.000000 12.000000 + special_bonds lj/coul 0.0 0.0 0.0 + } # end init +} # SDK diff --git a/tools/moltemplate/moltemplate/force_fields/sdk/emcprm2lt.py b/tools/moltemplate/moltemplate/force_fields/sdk/emcprm2lt.py new file mode 100755 index 0000000000000000000000000000000000000000..c924ce64e0d8e5ea85700528254cab23577d332f --- /dev/null +++ b/tools/moltemplate/moltemplate/force_fields/sdk/emcprm2lt.py @@ -0,0 +1,613 @@ +#!/usr/bin/python + +import os, sys, getopt +import datetime + +__version__ = 0.2 + +#################### UNITS #################### +# Only used with --units flag +econv = 1.0 # Additional Factor for unit conversion if needed (energies) +lconv = 1.0 # Additional Factor for unit conversion if neededa (lengths) +dconv = 1.0 # Additional Factor for unit conversion if neededa (densities) +############################################### + +print('\nEMC 2 LT conversion tool: v%s\n' % __version__) + +def helpme(): + print 'Help for the EMC 2 LT conversion tool\n' + print 'Input takes a list of files in EMC .prm format to be read.' + print 'Additional styles (bond, angle, etc) can be modified via the',\ + 'command line. Any valid LAMMPS style can be used.\n' + print 'Styles include:' + print '--pair-style=' + print '--bond-style=' + print '--angle-style=' + print '--dihedral-style=' + print '--improper-style=\n' + print 'Default styles are lj/cut/coul/long, harmonic, harmonic, harmonic,',\ + 'harmonic \n' + print 'Other commands:' + print '--name= provides basename for output file if desired\n' + print '--units flag for manual units (no parameter needed)\n' + print 'Usage example:' + print 'emcprm2lt.py file1 file2 --bond-style=harmonic --angle-style=harmonic' + print '' + +def Abort(): + print 'Aborting...' + sys.exit() + +def WriteInit(): +# Write generic LAMMPS settings, likely need additional on a per-ff basis + foutput.write(' write_once("In Init") {\n') + foutput.write(' # Warning: This is a very generic "In Init" section, further\n') + foutput.write(' # modification prior to any simulation is extremely likely\n') + foutput.write(' units real\n') + foutput.write(' atom_style full\n') + foutput.write(' bond_style hybrid %s\n' % bstyle) + if angle_flag: + foutput.write(' angle_style hybrid %s\n' % astyle) + if torsion_flag: + foutput.write(' dihedral_style hybrid %s\n' % dstyle) + if improp_flag: + foutput.write(' improper_style hybrid %s\n' % istyle) + foutput.write(' pair_style hybrid %s %f %f\n' % (pstyle, + float(inner[0])*lconv, float(cutoff[0])*lconv)) + if pair14[0] == 'OFF': + foutput.write(' special_bonds lj/coul 0.0 0.0 0.0\n') + else: + print 'Warning: special_bonds needed, add to "In Init" section\n' + foutput.write(' } # end init\n') + +def Units(length_flag, energy_flag, density_flag): +# Check flags for all units, determine what conversions are needed, hard-coded for LAMMPS 'real' + print 'Attempting to auto-convert units... This should always be double-checked',\ + ' especially for unique potential styles' + global lconv; global econv; global dconv + if length_flag: + print 'Warning: length scale does not match LAMMPS real units, attempting conversion to angstroms' + if length[0] == 'NANOMETER': + lconv = 10.0 + print ' nanometer -> angstrom' + elif length[0] == 'MICROMETER': + lconv = 10000.0 + print ' micrometer -> angstrom' + elif length[0] == 'METER': + lconv = 10000000000.0 + print ' meter -> angstrom' + else: + print 'Length units NOT converted' + if energy_flag: + print 'Warning: energy units do not match LAMMPS real units, attempting conversion to kcal/mol' + if energy[0] == 'KJ/MOL': + econv = 0.239006 + print ' kj/mol -> kcal/mol' + elif energy[0] == 'J/MOL': + econv = 0.000239006 + print ' j/mol -> kcal/mol' + elif energy[0] == 'CAL/MOL': + econv = 0.001 + print ' cal/mol -> kcal/mol' + else: + print 'Energy units NOT converted' + if density_flag: + print 'Warning: density units do not match LAMMPS real units, attempting conversion to gram/cm^3' + if density[0] == 'KG/M^3': + dconv = 0.001 + print ' kg/m^3 -> g/cm^3' + else: + print 'Density units NOT converted' + return lconv, econv, dconv + +def ChkPotential(manual_flag, angle_flag, torsion_flag, improp_flag): +# Check type of potential, determine type of unit conversion is necessary + global beconv + if angle_flag: + global aeconv + if torsion_flag: + global deconv + if improp_flag: + global ieconv + if manual_flag == False: + # Chk bond potential + if bstyle == '' or bstyle == 'harmonic': + beconv = econv / (2*pow(lconv,2)) + else: + print 'Cannot find bond potential type, use manual units' + Abort() + if angle_flag: + if astyle == '' or astyle == 'harmonic': + aeconv = econv + elif astyle == 'cosine/squared': + aeconv = econv / 2 + elif astyle == 'sdk': + aeconv = econv + else: + print 'Cannot find angle potential type, use manual units' + Abort() + # torsion and improper not implemented fully + elif torsion_flag: + if dstyle == '' or dstyle == 'harmonic': + deconv = econv + else: + print 'Cannot find torsion potential type, use manual units' + Abort() + elif improp_flag: + if istyle == '' or istyle == 'harmonic': + ieconv = econv + else: + print 'Cannot find improper potential type, use manual units' + Abort() + else: + # Modify as needed + print 'Warning: Manual units used, set potential conversion units in script' + beconv = 1 + if angle_flag: + aeconv = 1 + if torsion_flag: + deconv = 1 + if improp_flag: + ieconv = 1 + + +### Parse input ### +if len(sys.argv) == 1: + helpme() + sys.exit() +manual_units = False # Turned on via command line +args = list(sys.argv[1:]) +myopts, args = getopt.gnu_getopt(args, 'fh', ['pair-style=', 'bond-style=', 'angle-style=', + 'dihedral-style=', 'improper-style=', 'name=', 'units']) +filenames = list(args) +pstyle = ''; bstyle = ''; astyle = ''; dstyle = ''; istyle = '' +name = '' +for opt, arg in myopts: + if opt in ('-f'): + filenames = arg + elif opt in ('--pair-style'): + pstyle = arg + elif opt in ('--bond-style'): + bstyle = arg + elif opt in ('--angle-style'): + astyle = arg + elif opt in ('--dihedral-style'): + dstyle = arg + elif opt in ('--improper-style'): + istyle = arg + elif opt in ('--name'): + name = arg + elif opt in ('--units'): + manual_units = True + print 'Manual units enabled, modify python script accordingly' + elif opt in ('-h', '--help'): + helpme() + sys.exit() + +### Check input filenames, make sure they exist ### +print 'Converting: ' +for i in range(len(filenames)): + if os.path.isfile(filenames[i]): + print '', filenames[i] + else: + print 'invalid filename:', filenames[i] + Abort() +print 'from EMC .prm to moltemplate .lt format\n' + +### Open all files ### +f = [open(fname, 'r') for fname in filenames] + +### All these settings from DEFINE should be list of fixed size ### +ffname = [[] for i in range(len(f))] +fftype = [[] for i in range(len(f))] +version = [[] for i in range(len(f))] +created1 = [[] for i in range(len(f))] +created2 = [[] for i in range(len(f))] +length = [[] for i in range(len(f))] +energy = [[] for i in range(len(f))] +density = [[] for i in range(len(f))] +mix = [[] for i in range(len(f))] +nbonded = [[] for i in range(len(f))] +inner = [[] for i in range(len(f))] +cutoff = [[] for i in range(len(f))] +pair14 = [[] for i in range(len(f))] +angle_def = [[] for i in range(len(f))] +torsion_def = [[] for i in range(len(f))] +improp_def = [[] for i in range(len(f))] # not all prm have this + +### Parse DEFINE section, save info for each file ### +for i in range(len(f)): + grab = False + for line in f[i]: + if line.strip() == 'ITEM DEFINE': + grab = True + elif line.strip() == 'ITEM END': + grab = False + elif grab: + if line.startswith('FFNAME'): + ffname[i] = line.split()[1].strip() + if line.startswith('FFTYPE'): + fftype[i] = line.split()[1].strip() + if line.startswith('VERSION'): + version[i] = line.split()[1].strip() + if line.startswith('CREATED'): + created1[i] = line.split()[1].strip() + created2[i] = line.split()[2].strip() + if line.startswith('LENGTH'): + length[i] = line.split()[1].strip() + if line.startswith('ENERGY'): + energy[i] = line.split()[1].strip() + if line.startswith('DENSITY'): + density[i] = line.split()[1].strip() + if line.startswith('MIX'): + mix[i] = line.split()[1].strip() + if line.startswith('NBONDED'): + nbonded[i] = line.split()[1].strip() + if line.startswith('INNER'): + inner[i] = line.split()[1].strip() + if line.startswith('CUTOFF'): + cutoff[i] = line.split()[1].strip() + if line.startswith('PAIR14'): + pair14[i] = line.split()[1].strip() + if line.startswith('ANGLE'): + angle_def[i] = line.split()[1].strip() + if line.startswith('TORSION'): + torsion_def[i] = line.split()[1].strip() + if line.startswith('IMPROP'): + improp_def[i] = line.split()[1].strip() + +### Sanity Checks ### +for i in range(len(f)): + for j in range(len(f)): + if ffname[j] != ffname[i]: + print 'force field files do not match' + Abort() + if length[j] != length[i]: + print 'units not identical between files' + Abort() + if energy[j] != energy[i]: + print 'units not identical between files' + Abort() + if density[j] != density[i]: + print 'units not identical between files' + Abort() + if inner[j] != inner[i]: + print 'inner cutoff not identical between files' + Abort() + if cutoff[j] != cutoff[i]: + print 'cutoff not identical between files' + Abort() + if pair14[j] != pair14[i]: + print '1-4 pair interaction not consistent between files' + Abort() + +### Check if sections exist in PRM file ### +angle_flag = False; torsion_flag = False; improp_flag = False +for i in range(len(f)): + if angle_def[i] == 'WARN': + angle_flag = True + if torsion_def[i] == 'WARN': + torsion_flag = True + if improp_def[i] == 'WARN': + improp_flag = True + +### Check which units to use, trip convert flags ### +length_flag = False; energy_flag = False; density_flag = False +if length[0] != 'ANGSTROM': + length_flag = True +if energy[0] != 'KCAL/MOL': + energy_flag = True +if density[0] != 'G/CC': + density_flag = True +if manual_units == True: + length_flag = False + energy_flag = False + density_flag = False +Units(length_flag, energy_flag, density_flag) + +### Read Whole File, save to lists ### +# Non-crucial sections include +# BONDS, ANGLE, TORSION, IMPROP, NONBOND +# Read all sections every time, only output sections when flags tripped +f = [open(fname, 'r') for fname in filenames] +masses = []; nonbond = []; bond = []; angle = []; torsion = []; improp = [] +equiv = [] +for i in range(len(f)): + MASS = False + NONBOND = False + BOND = False + ANGLE = False + TORSION = False + IMPROP = False + EQUIV = False + for line in f[i]: + if line.strip() == 'ITEM MASS': + MASS = True + elif line.strip() == 'ITEM END': + MASS = False + elif MASS: + if not line.startswith('#'): + if not line.startswith('\n'): + masses.append(line.strip().split()) + if line.strip() == 'ITEM NONBOND': + NONBOND = True + elif line.strip() == 'ITEM END': + NONBOND = False + elif NONBOND: + if not line.startswith('#'): + if not line.startswith('\n'): + nonbond.append(line.strip().split()) + if line.strip() == 'ITEM BOND': + BOND = True + elif line.strip() == 'ITEM END': + BOND = False + elif BOND: + if not line.startswith('#'): + if not line.startswith('\n'): + bond.append(line.strip().split()) + if line.strip() == 'ITEM ANGLE': + ANGLE = True + elif line.strip() == 'ITEM END': + ANGLE = False + elif ANGLE: + if not line.startswith('#'): + if not line.startswith('\n'): + angle.append(line.strip().split()) + if line.strip() == 'ITEM TORSION': + TORSION = True + elif line.strip() == 'ITEM END': + TORSION = False + elif TORSION: + if not line.startswith('#'): + if not line.startswith('\n'): + torsion.append(line.strip().split()) + if line.strip() == 'ITEM IMPROP': + IMPROP = True + elif line.strip() == 'ITEM END': + IMPROP = False + elif IMPROP: + if not line.startswith('#'): + if not line.startswith('\n'): + improp.append(line.strip().split()) + if line.strip() == 'ITEM EQUIVALENCE': + EQUIV = True + elif line.strip() == 'ITEM END': + EQUIV = False + elif EQUIV: + if not line.startswith('#'): + if not line.startswith('\n'): + equiv.append(line.strip().split()) +### Close prm files ### +for fname in f: + fname.close() + +### Sanity checks before writing LT files ### +# Check Equiv +for i in range(len(equiv)): + for j in range(len(equiv)): + if (equiv[i][0] == equiv[j][0]) and (equiv[i] != equiv[j]): + print 'Error: Identical atom types with different equivalences' + Abort() +# Check Masses +for i in range(len(masses)): + for j in range(len(masses)): + if (masses[i][0] == masses[j][0]) and (masses[i][1] != masses[j][1]): + print 'Error: Identical types with different mass' + Abort() +# Check Nonbond +for i in range(len(nonbond)): + for j in range(len(nonbond)): + if (nonbond[i][0] == nonbond[j][0]) and (nonbond[i][1] == nonbond[j][1]) and ((nonbond[i][2] != nonbond[j][2]) or (nonbond[i][3] != nonbond[j][3])): + print nonbond[i], nonbond[j] + print 'Error: Identical types with different pair-interactions' + Abort() + +### Remove double equivalences ### +for i in range(len(equiv)): + once = True + for j in range(len(equiv)): + if (equiv[i][0] == equiv[j][0]) and once: + once = False + elif (equiv[i][0] == equiv[j][0]): + equiv[j][1] = None + equiv[j][2] = 'duplicate' + if len(equiv[i]) != 6: + print 'Warning: Incorrect equivalence formatting for type %s' % equiv[i][0],\ + 'skipping type, topology may not be complete' + equiv[i][1] = None + equiv[i][2] = 'invalid_format' + +### Check Potential Styles and Set Units ### +ChkPotential(manual_units, angle_flag, torsion_flag, improp_flag) + +### Set output LT file ### +fname = 'ff_output.lt' +if name == '': + fname = ffname[0] + '.lt' +else: + fname = name + '.lt' +foutput = open(fname, 'w') + +### Output to LT format ### +foutput.write('# Autogenerated by EMC 2 LT tool v%s on %s\n' % (__version__, str(datetime.date.today()))) +foutput.write('#\n# ') +for i in range(len(sys.argv)): + foutput.write('%s ' % sys.argv[i]) +foutput.write('\n') +foutput.write('#\n') +foutput.write('# Adapted from EMC by Pieter J. in \'t Veld\n') +foutput.write('# Originally written as, FFNAME:%s STYLE:%s VERSION:%s on %s %s\n' % + (ffname[0], fftype[0], version[0], created1[0], created2[0])) +foutput.write('\n') +foutput.write('%s {\n' % ffname[0]) + +# Charges not necessary? emc file assign charges in smiles, which would +# be in the per-molecule files created by moltemplate user... not here + +### Mass Info ### +foutput.write(' write_once("Data Masses") {\n') +for i in range(len(masses)): + if equiv[i][1] != None: + foutput.write(' @atom:%s %f # %s\n' % + (masses[i][0], float(masses[i][1]), masses[i][0])) +foutput.write(' } # end of atom masses\n\n') + +### Equiv Info ### +# Write Equivalence +foutput.write(' # ----- EQUIVALENCE CATEGORIES for bonded interaction lookup -----\n') +for i in range(len(equiv)): + if equiv[i][1] != None: + foutput.write(' replace{ @atom:%s @atom:%s_b%s_a%s_d%s_i%s}\n' % + (equiv[i][0], equiv[i][0], equiv[i][2], equiv[i][3], equiv[i][4], equiv[i][5])) +foutput.write(' # END EQUIVALENCE\n\n') +# Sanity check equivalences vs masses +for i in range(len(equiv)): + check = None + for j in range(len(masses)): + if equiv[i][0] == masses[j][0]: + check = 'success' + if check == None: + print equiv[i], masses[j] + print 'Atom defined in Equivlances, but not found in Masses' + Abort() +# Sanity check masses vs equivalences +for i in range(len(masses)): + check = None + for j in range(len(masses)): + if masses[i][0] == equiv[j][0]: + check = 'success' + if check == None: + print masses[i], equiv[j] + print 'Atom defined in Masses, but not found in Equivlances' + Abort() + +### Nonbonded Info ### +if pstyle == '': + print 'Warning: no non-bonded potential provided, assuming lj/cut/coul/long' + pstyle = 'lj/cut/coul/long' +foutput.write(' write_once("In Settings") {\n') +foutput.write(' # ----- Non-Bonded interactions -----\n') +# Add new types from equivalence +for i in range(len(equiv)): + once = True + for j in range(len(nonbond)): + # Get terms for new types + if (equiv[i][0] != equiv[i][1]) and (equiv[i][1] == nonbond[j][0]): + if not equiv[i][1] == nonbond[j][1]: + line = '%s %s %s %s' % (equiv[i][0], nonbond[j][1], nonbond[j][2], nonbond[j][3]) + nonbond.append(line.split()) + if once: + once = False + line = '%s %s %s %s' % (equiv[i][0], equiv[i][0], nonbond[j][2], nonbond[j][3]) + nonbond.append(line.split()) + if (equiv[i][0] != equiv[i][1]) and (equiv[i][1] == nonbond[j][1]): + line = '%s %s %s %s' % (equiv[i][0], nonbond[j][0], nonbond[j][2], nonbond[j][3]) + if line.split() != nonbond[-1]: + nonbond.append(line.split()) +for i in range(len(nonbond)): + atom1name = None + atom2name = None + stylename = pstyle + if pstyle == 'lj/sdk' or 'lj/sdk/coul/long': + stylename = 'lj%s_%s' % (nonbond[i][4], nonbond[i][5]) + # Cross Terms + Diagonal, normal + for j in range(len(equiv)): + if nonbond[i][0] == equiv[j][0]: + atom1name = '%s_b%s_a%s_d%s_i%s' % (nonbond[i][0], equiv[j][2], equiv[j][3], equiv[j][4], equiv[j][5]) + if nonbond[i][1] == equiv[j][0]: + atom2name = '%s_b%s_a%s_d%s_i%s' % (nonbond[i][1], equiv[j][2], equiv[j][3], equiv[j][4], equiv[j][5]) + if atom1name == None or atom2name == None: + print atom1name, atom2name, nonbond[i] + print 'Error: Atom in Nonbonded Pairs not found in Equivalences' + Abort() + foutput.write(' pair_coeff @atom:%s @atom:%s %s %f %f' % + (atom1name, atom2name, stylename, float(nonbond[i][3])*econv, float(nonbond[i][2])*lconv)) + foutput.write(' # %s-%s\n' % (nonbond[i][0], nonbond[i][1])) +foutput.write(' } # end of nonbonded parameters\n\n') + +### Bond Info ### +if bstyle == '': + print 'Warning: no bond potential provided, assuming harmonic' + bstyle == 'harmonic' +foutput.write(' write_once("In Settings") {\n') +foutput.write(' # ----- Bonds -----\n') +for i in range(len(bond)): + foutput.write(' bond_coeff @bond:%s-%s %s %f %f' % + (bond[i][0], bond[i][1], bstyle, float(bond[i][2])*beconv, float(bond[i][3])*lconv)) + foutput.write(' # %s-%s\n' % (bond[i][0], bond[i][1])) +foutput.write(' }\n\n') +foutput.write(' write_once("Data Bonds By Type") {\n') +for i in range(len(bond)): + foutput.write(' @bond:%s-%s @atom:*_b%s_a*_d*_i* @atom:*_b%s_a*_d*_i*\n' % + (bond[i][0], bond[i][1], bond[i][0], bond[i][1])) +foutput.write(' } # end of bonds\n\n') + +### Angle Info ### +if angle_flag: + if astyle == '': + print 'Warning: no angle potential provided, assuming harmonic' + astyle == 'harmonic' + foutput.write(' write_once("In Settings") {\n') + foutput.write(' # ----- Angles -----\n') + for i in range(len(angle)): + if (len(angle[i]) > 5): # Check if extra data in angle array + foutput.write(' angle_coeff @angle:%s-%s-%s %s %f %f' % + (angle[i][0], angle[i][1], angle[i][2], str(angle[i][5]), float(angle[i][3])*aeconv, float(angle[i][4]))) + foutput.write(' # %s-%s-%s\n' % (angle[i][0], angle[i][1], angle[i][2])) + else: + foutput.write(' angle_coeff @angle:%s-%s-%s %s %f %f' % + (angle[i][0], angle[i][1], angle[i][2], astyle, float(angle[i][3])*aeconv, float(angle[i][4]))) + foutput.write(' # %s-%s-%s\n' % (angle[i][0], angle[i][1], angle[i][2])) + foutput.write(' }\n\n') + foutput.write(' write_once("Data Angles By Type") {\n') + for i in range(len(angle)): + foutput.write(' @angle:%s-%s-%s @atom:*_b*_a%s_d*_i* @atom:*_b*_a%s_d*_i* @atom:*_b*_a%s_d*_i*\n' % + (angle[i][0], angle[i][1], angle[i][2], angle[i][0], angle[i][1], angle[i][2])) + foutput.write(' } # end of angles\n\n') + +### Torsion/Dihedral Info ###a +# Incomplete +if torsion_flag: + if dstyle == '': + print 'Warning: no dihedral/torsion potential provided, assuming harmonic' + dstyle == 'harmonic' + foutput.write(' write_once("In Settings") {\n') + foutput.write(' # ----- Dihedrals -----\n') + for i in range(len(torsion)): + foutput.write(' dihedral_coeff @dihedral:%s-%s-%s-%s %s %f %f %f %f\n' % + (torsion[i][0], torsion[i][1], torsion[i][2], torsion[i][3], dstyle, float(torsion[i][4])*deconv, float(torsion[i][5]), float(torsion[i][6]))) + foutput.write(' }\n\n') + foutput.write(' write_once("Data Dihedrals By Type") {\n') + for i in range(len(torsion)): + foutput.write(' @dihedral:%s-%s-%s-%s @atom:*_b*_a*_d%s_i* @atom:*_b*_a*_d%s_i* @atom:*_b*_a*_d%s_i* @atom:*_b*_a*_d%s_i*' % + (torsion[i][0], torsion[i][1], torsion[i][2], torsion[i][3], torsion[i][0], torsion[i][1], torsion[i][2], torsion[i][3])) + foutput.write(' } # end of dihedrals\n\n') + +### Improper Info ### +# Incomplete +ieconv = econv # improper coeff conversion +if improp_flag: + if istyle == '': + print 'Warning: no improper potential provided, assuming harmonic' + istyle == 'harmonic' + foutput.write(' write_once("In Settings") {\n') + foutput.write(' # ----- Impropers -----\n') + # As discussed, a check for convention of impropers is probably needed here + for i in range(len(improp)): + foutput.write(' improper_coeff @improper:%s-%s-%s-%s %s %f %f\n' % + (improp[i][0], improp[i][1], improp[i][2], improp[i][3], istyle, + float(improp[i][4]), float(improp[i][5]))) + foutput.write(' }\n\n') + foutput.write(' write_once("Data Impropers By Type") {\n') + for i in range(len(improp)): + foutput.write(' @improper:%s-%s-%s-%s @atom:*_b*_a*_d*_i%s @atom:*_b*_a*_d*_i%s @atom:*_b*_a*_d*_i%s @atom:*_b*_a*_d*_i%s' % + (improp[i][0], improp[i][1], improp[i][2], improp[i][3], improp[i][0], improp[i][1], improp[i][2], improp[i][3])) + foutput.write(' } # end of impropers\n\n') + +### Initialization Info ### +print 'Warning: Attempting to write generic "In Init" section,',\ + 'further modification after this script is extremely likely' +WriteInit() + +foutput.write('} # %s\n' % ffname[0]) +sys.exit() diff --git a/tools/moltemplate/moltemplate/force_fields/sdk/sdk_cholesterol.prm b/tools/moltemplate/moltemplate/force_fields/sdk/sdk_cholesterol.prm new file mode 100644 index 0000000000000000000000000000000000000000..8bf9cf5caa8616bfe2b763957c25dcf3733d82e0 --- /dev/null +++ b/tools/moltemplate/moltemplate/force_fields/sdk/sdk_cholesterol.prm @@ -0,0 +1,233 @@ +# +# SDK interaction parameters using sdk.92172.tmp +# converted on Feb 28, 2017 by David Stelter +# to be used in conjuction with EMC v9.3.7 or higher +# + +# Force field definition + +ITEM DEFINE + +FFNAME SDK +FFTYPE COARSE +VERSION 1.0 +CREATED Feb 2017 +LENGTH ANGSTROM +ENERGY KCAL/MOL +DENSITY G/CC +MIX NONE +NBONDED 1 +INNER 9 +CUTOFF 12 +PAIR14 OFF +ANGLE WARN +TORSION IGNORE + +ITEM END + +# Literature references + +ITEM REFERENCES + +# year volume page journal + +2015 143 243144 J. Phys. Chem. B + +ITEM END + +# Masses + +ITEM MASS + +# type mass ncons charge +C2T 43.09 0 0 +CM2 28.05 0 0 +CM2R 28.05 0 0 +CMDB 39.06 0 0 +CMB 40.06 0 0 +CMR 41.07 0 0 +CMR5 41.07 0 0 +CTB 42.08 0 0 +CTBA 27.05 0 0 +CTBB 27.05 0 0 +OAB 30.03 0 0 + +ITEM END + +# Typing equivalences + +ITEM EQUIVALENCE + +# type pair bond angle torsion improper +C2T C2T C2T C2T C2T C2T +CM2 CM2 CM2 CM2 CM2 CM2 +CM2R CM2R CM2R CM2R CM2R CM2R +CMDB CMDB CMDB CMDB CMDB CMDB +CMB CMB CMB CMB CMB CMB +CMR CMR CMR CMR CMR CMR +CMR5 CMR5 CMR5 CMR5 CMR5 CMR5 +CTB CTB CTB CTB CTB CTB +CTBA CTBA CTBA CTBA CTBA CTBA +CTBB CTBB CTBB CTBB CTBB CTBB +OAB OAB OAB OAB OAB OAB + +ITEM END + +# Nonbonded parameters + +ITEM NONBOND + +# type1 type2 sigma epsilon m n +C2T NC 5.1675 0.42 9 6 +CMR5 CT 4.5455 0.444 9 6 +C2T CTBA 4.7677 0.252 9 6 +CT CTB 4.585 0.469 9 6 +C2T CMR 4.7714 0.331 9 6 +CT CTBA 4.403 0.383 9 6 +C2T CTBB 4.7677 0.252 9 6 +CT CTBB 4.403 0.383 9 6 +C2T GL 4.5455 0.444 9 6 +CT OAB 4.033 0.437 9 6 +C2T CM2R 4.6101 0.254 9 6 +CT2 CTB 4.403 0.383 9 6 +C2T CMD2 4.295 0.33 9 6 +CT2 CTBA 4.221 0.312 9 6 +C2T CMR5 4.7714 0.331 9 6 +CT2 CTBB 4.221 0.312 9 6 +C2T W 4.478 0.36 12 4 +CT2 OAB 3.9505 0.415 9 6 +C2T C2T 4.8115 0.4 9 6 +CTB CTB 5.0155 0.269 9 6 +C2T OAB 4.033 0.437 9 6 +CTB EST1 4.4425 0.47 9 6 +C2T PH 4.9925 0.32 9 6 +CTB EST2 4.4425 0.47 9 6 +C2T CMDB 4.8941 0.354 9 6 +CTB NC 5.1675 0.42 9 6 +C2T CT2 4.5272 0.297 9 6 +CTB CTBA 4.4648 0.265 9 6 +C2T CM2 4.588 0.291 9 6 +CTB CTBB 4.4648 0.265 9 6 +C2T CM 4.5455 0.391 9 6 +CTB GL 4.5455 0.444 9 6 +C2T CT 4.8601 0.409 9 6 +CTB W 4.478 0.36 12 4 +C2T CTB 4.9109 0.283 9 6 +CTB OAB 4.033 0.437 9 6 +C2T CMB 4.6564 0.31 9 6 +CTB PH 4.9925 0.32 9 6 +C2T EST1 4.4425 0.47 9 6 +CTBA NC 4.9855 0.32 9 6 +C2T EST2 4.4425 0.47 9 6 +CTBA EST1 4.2605 0.39 9 6 +CM CMR 4.506 0.42 9 6 +CTBA EST2 4.2605 0.39 9 6 +CM CM2R 4.4342 0.39 9 6 +CTBA W 4.296 0.29 12 4 +CM CMR5 4.506 0.42 9 6 +CTBA GL 4.3635 0.362 9 6 +CM OAB 4.093 0.561 9 6 +CTBA CTBA 4.461 0.265 9 6 +CM CMDB 4.379 0.362 9 6 +CTBA CTBB 4.461 0.265 9 6 +CM CM2 4.4619 0.336 9 6 +CTBA PH 4.8105 0.28 9 6 +CM CTB 4.5455 0.444 9 6 +CTBA OAB 3.84 0.38 9 6 +CM CMB 4.506 0.42 9 6 +CTBB W 4.296 0.29 12 4 +CM CTBA 4.3635 0.362 9 6 +CTBB NC 4.9855 0.32 9 6 +CM CTBB 4.3635 0.362 9 6 +CTBB GL 4.3635 0.362 9 6 +CM2 PH 4.9368 0.248 9 6 +CTBB EST1 4.2605 0.39 9 6 +CM2 OAB 4.0669 0.413 9 6 +CTBB EST2 4.2605 0.39 9 6 +CM2 CM2R 4.4403 0.237 9 6 +CTBB PH 4.8105 0.28 9 6 +CM2 CMD2 4.2313 0.248 9 6 +CTBB OAB 3.84 0.38 9 6 +CM2 CMR5 4.4846 0.333 9 6 +CTBB CTBB 4.461 0.265 9 6 +CM2 CT2 4.3199 0.228 9 6 +EST1 OAB 3.99 1.1 9 6 +CM2 CM2 4.461 0.265 9 6 +EST2 OAB 3.99 1.1 9 6 +CM2 CMDB 4.3697 0.267 9 6 +GL OAB 4.093 0.669 9 6 +CM2 CT 4.4546 0.301 9 6 +NC OAB 3.9319 0.637 9 6 +CM2 CTB 4.5246 0.353 9 6 +OAB W 4.0255 1.026 9 6 +CM2 CMB 4.4846 0.333 9 6 +OAB PH 3.6166 0.928 9 6 +CM2 NC 5.1138 0.306 9 6 +OAB OAB 3.68 0.58 9 6 +CM2 EST1 4.3805 0.366 9 6 +CM2 EST2 4.3805 0.366 9 6 + +ITEM END + +# Bond parameters + +ITEM BOND + +# type1 type2 k l0 +C2T CM2 55 2.5 +CM2 CTB 42.5 2.9 +CM2R CTBA 45 2.4 +CM2R OAB 50 2.6 +CMB CMDB 75 3.5 +CMB CMR5 50 3.0 +CMB CTBA 35 3.4 +CMB CTBB 50 3.0 +CMDB CTBA 40 2.5 +CMDB OAB 55 3.1 +CMR5 CTBB 60 2.3 +CMR CTBA 50 3.0 +CMR CTBB 55 2.5 +CTB CTBB 22.5 3.4 +CMR5 CTB 35 3.1 + +ITEM END + +# Angle parameters + +ITEM ANGLE + +# type1 type2 type3 k theta0 type +C2T CM2 CTB 8 160.0 sdk +CM2 CTB CTBB 4 130.0 sdk +CM2R CTBA CMB 40 112.5 harmonic +CM2R CTBA CMDB 22.5 75.9 harmonic +CM2R CTBA CMR 35 98.7 harmonic +CM2R OAB CMDB 40 63.9 harmonic +CMB CMDB CTBA 45 68.6 harmonic +CMB CMDB OAB 65 146.6 harmonic +CMB CMR5 CTBB 35 67.8 harmonic +CMB CTBA CMDB 25 68.9 harmonic +CMB CTBA CMR 75 47.8 harmonic +CMB CTBB CMR5 25 68.2 harmonic +CMB CTBB CMR 50 56.3 harmonic +CMB CTBB CTB 35 120.7 sdk +CMDB CMB CMR5 150 175.6 harmonic +CMDB CMB CTBA 62.5 42.5 harmonic +CMDB CMB CTBB 25 134.2 harmonic +CMDB CTBA CMR 50 108.6 harmonic +CMR5 CNB CTBA 15 135.8 harmonic +CMR5 CMB CTBB 45 44.0 harmonic +CMR5 CTBB CTB 20 62.7 harmonic +CMR CTBB CMR5 75 107.0 harmonic +CMR CTBB CTB 37.5 110.1 sdk +CTBA CM2R OAB 25 107.4 harmonic +CTBA CMB CTBB 20 92.2 harmonic +CTBA CMDB OAB 20 91.8 harmonic +CTBA CMR CTBB 15 115.0 harmonic +CMB CMR5 CTB 88 131.7 harmonic +CTBB CMR5 CTB 20 77.4 harmonic +CM2 CTB CMR5 20 118.0 sdk +CMR5 CTB CTBB 62.5 39.7 harmonic + +ITEM END + diff --git a/tools/moltemplate/moltemplate/force_fields/sdk/sdk_lipids.prm b/tools/moltemplate/moltemplate/force_fields/sdk/sdk_lipids.prm new file mode 100644 index 0000000000000000000000000000000000000000..2bf0769c6dc3648fdfa162d28a82bb6f18e02c9a --- /dev/null +++ b/tools/moltemplate/moltemplate/force_fields/sdk/sdk_lipids.prm @@ -0,0 +1,222 @@ +# +# SDK interaction parameters using sdk.92172.tmp +# converted by sdk.pl v1.0, August 31, 2014 by Pieter J. in 't Veld +# to be used in conjuction with EMC v9.3.7 or higher +# + +# Force field definition + +ITEM DEFINE + +FFNAME SDK +FFTYPE COARSE +VERSION 1.0 +CREATED Oct 2014 +LENGTH ANGSTROM +ENERGY KCAL/MOL +DENSITY G/CC +MIX NONE +NBONDED 1 +INNER 9 +CUTOFF 12 +PAIR14 OFF +ANGLE WARN +TORSION IGNORE + +ITEM END + +# Literature references + +ITEM REFERENCES + +# year volume page journal + +2010 114 6836 [4] J. Phys. Chem. B + +ITEM END + +# Masses + +ITEM MASS + +# type mass ncons charge cite comment + +CM 42.0804 2 0 1 >CCC< +CMD2 26.0378 2 0 4 >\C=C/< +CT 43.0883 1 0 1 CCC< +CT2 29.0615 1 0 1 CC< +EST1 58.0366 2 0 4 >CC(=O)O< +EST2 58.0366 2 0 4 >CC(=O)O< +GL 41.0725 3 0 4 >CCCCN(C)(C)C +NH 44.0761 1 1 4 >CCN +PH 94.9716 2 -1 4 >OP(O)(O)O< +PHE 94.9716 2 -1 4 >OP(O)(O)O< +W 54.0456 0 0 1 O.O.O + +ITEM END + +# Typing equivalences + +ITEM EQUIVALENCE + +# type pair bond angle torsion improper + +CM CM CM CM CM CM +CMD2 CMD2 CMD2 CMD2 CMD2 CMD2 +CT CT CT CT CT CT +CT2 CT2 CT2 CT2 CT2 CT2 +EST1 EST1 EST1 EST1 EST1 EST1 +EST2 EST2 EST2 EST2 EST2 EST2 +GL GL GL GL GL GL +NC NC NC NC NC NC +NH NH NH NH NH NH +PH PH PH PH PH PH +PHE PHE PHE PHE PHE PHE +W W W W W W + +ITEM END + +# Nonbonded parameters + +ITEM NONBOND + +# type1 type2 sigma epsilon m n + +CM CM 4.506 0.42 9 6 +CM CMD2 4.2555 0.312 9 6 +CM CT 4.5455 0.444 9 6 +CM CT2 4.3635 0.362 9 6 +CM EST1 4.403 0.47 9 6 +CM EST2 4.403 0.47 9 6 +CM GL 4.506 0.42 9 6 +CM NC 5.128 0.4 9 6 +CM NH 4.553 0.33 9 6 +CM PH 4.953 0.3 9 6 +CM PHE 4.953 0.3 9 6 +CM W 4.4385 0.34 12 4 +CMD2 CMD2 4.005 0.232 9 6 +CMD2 CT 4.295 0.33 9 6 +CMD2 CT2 4.113 0.269 9 6 +CMD2 EST1 4.005 0.44 9 6 +CMD2 EST2 4.005 0.44 9 6 +CMD2 GL 4.2555 0.312 9 6 +CMD2 NC 4.8775 0.35 9 6 +CMD2 NH 4.3025 0.3 9 6 +CMD2 PH 4.7025 0.3 9 6 +CMD2 PHE 4.7025 0.3 9 6 +CMD2 W 4.188 0.27 12 4 +CT CT 4.585 0.469 9 6 +CT CT2 4.403 0.383 9 6 +CT EST1 4.4425 0.47 9 6 +CT EST2 4.4425 0.47 9 6 +CT GL 4.5455 0.444 9 6 +CT NC 5.1675 0.42 9 6 +CT NH 4.925 0.34 9 6 +CT PH 4.9925 0.32 9 6 +CT PHE 4.9925 0.32 9 6 +CT W 4.478 0.36 12 4 +CT2 CT2 4.221 0.312 9 6 +CT2 EST1 4.2605 0.39 9 6 +CT2 EST2 4.2605 0.39 9 6 +CT2 GL 4.365 0.362 9 6 +CT2 NC 4.9855 0.32 9 6 +CT2 NH 4.4105 0.32 9 6 +CT2 PH 4.8105 0.28 9 6 +CT2 PHE 4.8105 0.28 9 6 +CT2 W 4.296 0.29 12 4 +EST1 EST1 4.3 0.495 9 6 +EST1 EST2 4.3 0.495 9 6 +EST1 GL 4.403 0.47 9 6 +EST1 NC 4.475 0.75 9 6 +EST1 NH 4.11 0.85 9 6 +EST1 PH 4.55 0.5 9 6 +EST1 PHE 4.55 0.5 9 6 +EST1 W 4.29 0.82 12 4 +EST2 EST2 4.3 0.495 9 6 +EST2 GL 4.403 0.47 9 6 +EST2 NC 4.475 0.75 9 6 +EST2 NH 4.11 0.85 9 6 +EST2 PH 4.55 0.5 9 6 +EST2 PHE 4.55 0.5 9 6 +EST2 W 4.29 0.82 12 4 +GL GL 4.506 0.42 9 6 +GL NC 4.62 0.65 9 6 +GL NH 4.19 0.75 9 6 +GL PH 4.75 0.3 9 6 +GL PHE 4.75 0.3 9 6 +GL W 4.4385 0.64 12 4 +NC NC 5.75 0.7 9 6 +NC NH 5.175 0.88 9 6 +NC PH 4.2 1.15 9 6 +NC PHE 4.2 1.15 9 6 +NC W 4.61 0.9 12 4 +NH NH 4.6 1.1 9 6 +NH PH 3.8 1.2 9 6 +NH PHE 3.8 1.2 9 6 +NH W 3.95 0.8 12 4 +PH PH 5.4 1.4 9 6 +PH PHE 5 1.4 9 6 +PH W 4.03 1 12 4 +PHE PHE 4.6 1.4 9 6 +PHE W 4.03 1 12 4 +W W 4.371 0.895 12 4 + +ITEM END + +# Bond parameters + +ITEM BOND + +# type1 type2 k l0 + +CM CM 6.16 3.64 +CM CMD2 8 3.03 +CM CT 6.16 3.65 +CM CT2 9 3.13 +CM EST1 4.7 3.55 +CM EST2 5.1 3.61 +CM PHE 12 3.69 +CM SO4 11 3.63 +CMD2 CT 8 3.09 +CMD2 CT2 60 2.54 +CT CT 6.955 3.71 +EST1 GL 30 2.88 +EST2 GL 8.4 3.48 +GL PHE 8.9 3.52 +NC PHE 4.8 4.25 +NH PHE 9.4 3.6 +PHE1 PHE2 2.5 150 + +ITEM END + +# Angle parameters + +ITEM ANGLE + +# type1 type2 type3 k theta0 + +CM CM CM 1.19 173 +CM CM CMD2 1.9 161 +CM CM CT 1.19 175 +CM CM CT2 1.6 172 +CM CM EST1 1 178 +CM CM EST2 1 178 +CM CM PHE 1.1 178 +CM CMD2 CM 6 110 +CM EST1 GL 0.8 168 +CM EST2 GL 0.8 172 +CM PHE NC 3.3 112 +CT CM CT 1.093 175.5 +CT CM CT2 1.6 172 +CT CMD2 CT 7.7 116 +CT2 CM CT2 1.7 173 +CT2 CMD2 CT2 12 110 +EST1 GL EST2 1 95 +EST1 GL PHE 1.4 124 +EST2 GL PHE 2 138 +GL PHE NC 3.1 112 +GL PHE NH 4 102 + +ITEM END + diff --git a/tools/moltemplate/src/moltemplate_force_fields/spce.lt b/tools/moltemplate/moltemplate/force_fields/spce.lt similarity index 100% rename from tools/moltemplate/src/moltemplate_force_fields/spce.lt rename to tools/moltemplate/moltemplate/force_fields/spce.lt diff --git a/tools/moltemplate/src/moltemplate_force_fields/spce_ice_rect16.lt b/tools/moltemplate/moltemplate/force_fields/spce_ice_rect16.lt similarity index 98% rename from tools/moltemplate/src/moltemplate_force_fields/spce_ice_rect16.lt rename to tools/moltemplate/moltemplate/force_fields/spce_ice_rect16.lt index fb431cedeeeca69aafde9d60b20f8bc8f960d7d1..e67b228e9e873e6392c4e845b1d0ed570233cda6 100644 --- a/tools/moltemplate/src/moltemplate_force_fields/spce_ice_rect16.lt +++ b/tools/moltemplate/moltemplate/force_fields/spce_ice_rect16.lt @@ -1,81 +1,81 @@ -# This ice (1h) unit cell is rectangular and contains 16 water molecules. -# (Coordinates and cell dimensions converted were from a PDB file.) -# The dimensions of the unit cell (in Angstroms) are: 9.043 7.832 7.361 - - -import "spce.lt" # <-- define the "SPCE" molecule - -SpceIceRect16 { - - # Create a 3-dimensional array of 16 water molecules - - wat = new SPCE[4][2][2] - - # Array indices will be correlated with position [xindex][yindex][zindex] - - # You can overwrite coordinates of atoms after they were created this way: - # (Order is not important) - # atom-ID molecule-ID atomType charge newX newY newZ - - write("Data Atoms") { - $atom:wat[0][0][0]/O $mol:wat[0][0][0] @atom:SPCE/O -0.8476 1.131 2.611 2.300 - $atom:wat[0][0][0]/H1 $mol:wat[0][0][0] @atom:SPCE/H 0.4238 0.322 2.144 1.970 - $atom:wat[0][0][0]/H2 $mol:wat[0][0][0] @atom:SPCE/H 0.4238 1.131 3.545 1.970 - $atom:wat[1][0][0]/O $mol:wat[1][0][0] @atom:SPCE/O -0.8476 3.391 1.305 1.381 - $atom:wat[1][0][0]/H1 $mol:wat[1][0][0] @atom:SPCE/H 0.4238 2.582 1.772 1.711 - $atom:wat[1][0][0]/H2 $mol:wat[1][0][0] @atom:SPCE/H 0.4238 3.391 0.371 1.711 - $atom:wat[2][0][0]/O $mol:wat[2][0][0] @atom:SPCE/O -0.8476 5.652 2.611 2.300 - $atom:wat[2][0][0]/H1 $mol:wat[2][0][0] @atom:SPCE/H 0.4238 4.843 2.144 1.970 - $atom:wat[2][0][0]/H2 $mol:wat[2][0][0] @atom:SPCE/H 0.4238 5.652 2.611 3.291 - $atom:wat[3][0][0]/O $mol:wat[3][0][0] @atom:SPCE/O -0.8476 7.912 1.305 1.381 - $atom:wat[3][0][0]/H1 $mol:wat[3][0][0] @atom:SPCE/H 0.4238 7.103 1.772 1.711 - $atom:wat[3][0][0]/H2 $mol:wat[3][0][0] @atom:SPCE/H 0.4238 7.912 1.305 0.390 - $atom:wat[0][1][0]/O $mol:wat[0][1][0] @atom:SPCE/O -0.8476 1.131 5.221 1.381 - $atom:wat[0][1][0]/H1 $mol:wat[0][1][0] @atom:SPCE/H 0.4238 1.940 5.688 1.711 - $atom:wat[0][1][0]/H2 $mol:wat[0][1][0] @atom:SPCE/H 0.4238 1.131 5.221 0.390 - $atom:wat[1][1][0]/O $mol:wat[1][1][0] @atom:SPCE/O -0.8476 3.391 6.526 2.300 - $atom:wat[1][1][0]/H1 $mol:wat[1][1][0] @atom:SPCE/H 0.4238 4.200 6.059 1.970 - $atom:wat[1][1][0]/H2 $mol:wat[1][1][0] @atom:SPCE/H 0.4238 3.391 6.526 3.291 - $atom:wat[2][1][0]/O $mol:wat[2][1][0] @atom:SPCE/O -0.8476 5.652 5.221 1.381 - $atom:wat[2][1][0]/H1 $mol:wat[2][1][0] @atom:SPCE/H 0.4238 6.461 5.688 1.711 - $atom:wat[2][1][0]/H2 $mol:wat[2][1][0] @atom:SPCE/H 0.4238 5.652 4.287 1.711 - $atom:wat[3][1][0]/O $mol:wat[3][1][0] @atom:SPCE/O -0.8476 7.912 6.526 2.300 - $atom:wat[3][1][0]/H1 $mol:wat[3][1][0] @atom:SPCE/H 0.4238 8.721 6.059 1.970 - $atom:wat[3][1][0]/H2 $mol:wat[3][1][0] @atom:SPCE/H 0.4238 7.912 7.460 1.970 - $atom:wat[0][0][1]/O $mol:wat[0][0][1] @atom:SPCE/O -0.8476 1.131 2.611 5.061 - $atom:wat[0][0][1]/H1 $mol:wat[0][0][1] @atom:SPCE/H 0.4238 1.940 2.144 5.391 - $atom:wat[0][0][1]/H2 $mol:wat[0][0][1] @atom:SPCE/H 0.4238 1.131 2.611 4.070 - $atom:wat[1][0][1]/O $mol:wat[1][0][1] @atom:SPCE/O -0.8476 3.391 1.305 5.981 - $atom:wat[1][0][1]/H1 $mol:wat[1][0][1] @atom:SPCE/H 0.4238 4.200 1.772 5.651 - $atom:wat[1][0][1]/H2 $mol:wat[1][0][1] @atom:SPCE/H 0.4238 3.391 1.305 6.972 - $atom:wat[2][0][1]/O $mol:wat[2][0][1] @atom:SPCE/O -0.8476 5.652 2.611 5.061 - $atom:wat[2][0][1]/H1 $mol:wat[2][0][1] @atom:SPCE/H 0.4238 6.461 2.144 5.391 - $atom:wat[2][0][1]/H2 $mol:wat[2][0][1] @atom:SPCE/H 0.4238 5.652 3.545 5.391 - $atom:wat[3][0][1]/O $mol:wat[3][0][1] @atom:SPCE/O -0.8476 7.912 1.305 5.981 - $atom:wat[3][0][1]/H1 $mol:wat[3][0][1] @atom:SPCE/H 0.4238 8.721 1.772 5.651 - $atom:wat[3][0][1]/H2 $mol:wat[3][0][1] @atom:SPCE/H 0.4238 7.912 0.371 5.651 - $atom:wat[0][1][1]/O $mol:wat[0][1][1] @atom:SPCE/O -0.8476 1.131 5.221 5.981 - $atom:wat[0][1][1]/H1 $mol:wat[0][1][1] @atom:SPCE/H 0.4238 0.322 5.688 5.651 - $atom:wat[0][1][1]/H2 $mol:wat[0][1][1] @atom:SPCE/H 0.4238 1.131 4.287 5.651 - $atom:wat[1][1][1]/O $mol:wat[1][1][1] @atom:SPCE/O -0.8476 3.391 6.526 5.061 - $atom:wat[1][1][1]/H1 $mol:wat[1][1][1] @atom:SPCE/H 0.4238 2.582 6.059 5.391 - $atom:wat[1][1][1]/H2 $mol:wat[1][1][1] @atom:SPCE/H 0.4238 3.391 7.460 5.391 - $atom:wat[2][1][1]/O $mol:wat[2][1][1] @atom:SPCE/O -0.8476 5.652 5.221 5.981 - $atom:wat[2][1][1]/H1 $mol:wat[2][1][1] @atom:SPCE/H 0.4238 4.843 5.688 5.651 - $atom:wat[2][1][1]/H2 $mol:wat[2][1][1] @atom:SPCE/H 0.4238 5.652 5.221 6.972 - $atom:wat[3][1][1]/O $mol:wat[3][1][1] @atom:SPCE/O -0.8476 7.912 6.526 5.061 - $atom:wat[3][1][1]/H1 $mol:wat[3][1][1] @atom:SPCE/H 0.4238 7.103 6.059 5.391 - $atom:wat[3][1][1]/H2 $mol:wat[3][1][1] @atom:SPCE/H 0.4238 7.912 6.526 4.070 - } -} # SpceIceRect16 - -# Credit goes to Martin Chaplin. -# These coordinates were orignally downloaded from Martin Chaplin's -# website: http://www.btinternet.com/~martin.chaplin/ice1h.html -# ... and then they were stretched independently in the xy and z -# directions in order to match the lattice parameters measured by -# Rottger et al., -# "Lattice constants and thermal expansion of H2O and D2O ice Ih" -# between 10 and 265K", Acta Crystallogr. B, 50 (1994) 644-648 -# I am using the lattice constants measured at temperature 265K -# (and pressure=100Torr). +# This ice (1h) unit cell is rectangular and contains 16 water molecules. +# (Coordinates and cell dimensions converted were from a PDB file.) +# The dimensions of the unit cell (in Angstroms) are: 9.043 7.832 7.361 + + +import "spce.lt" # <-- define the "SPCE" molecule + +SpceIceRect16 { + + # Create a 3-dimensional array of 16 water molecules + + wat = new SPCE[4][2][2] + + # Array indices will be correlated with position [xindex][yindex][zindex] + + # You can overwrite coordinates of atoms after they were created this way: + # (Order is not important) + # atom-ID molecule-ID atomType charge newX newY newZ + + write("Data Atoms") { + $atom:wat[0][0][0]/O $mol:wat[0][0][0] @atom:SPCE/O -0.8476 1.131 2.611 2.300 + $atom:wat[0][0][0]/H1 $mol:wat[0][0][0] @atom:SPCE/H 0.4238 0.322 2.144 1.970 + $atom:wat[0][0][0]/H2 $mol:wat[0][0][0] @atom:SPCE/H 0.4238 1.131 3.545 1.970 + $atom:wat[1][0][0]/O $mol:wat[1][0][0] @atom:SPCE/O -0.8476 3.391 1.305 1.381 + $atom:wat[1][0][0]/H1 $mol:wat[1][0][0] @atom:SPCE/H 0.4238 2.582 1.772 1.711 + $atom:wat[1][0][0]/H2 $mol:wat[1][0][0] @atom:SPCE/H 0.4238 3.391 0.371 1.711 + $atom:wat[2][0][0]/O $mol:wat[2][0][0] @atom:SPCE/O -0.8476 5.652 2.611 2.300 + $atom:wat[2][0][0]/H1 $mol:wat[2][0][0] @atom:SPCE/H 0.4238 4.843 2.144 1.970 + $atom:wat[2][0][0]/H2 $mol:wat[2][0][0] @atom:SPCE/H 0.4238 5.652 2.611 3.291 + $atom:wat[3][0][0]/O $mol:wat[3][0][0] @atom:SPCE/O -0.8476 7.912 1.305 1.381 + $atom:wat[3][0][0]/H1 $mol:wat[3][0][0] @atom:SPCE/H 0.4238 7.103 1.772 1.711 + $atom:wat[3][0][0]/H2 $mol:wat[3][0][0] @atom:SPCE/H 0.4238 7.912 1.305 0.390 + $atom:wat[0][1][0]/O $mol:wat[0][1][0] @atom:SPCE/O -0.8476 1.131 5.221 1.381 + $atom:wat[0][1][0]/H1 $mol:wat[0][1][0] @atom:SPCE/H 0.4238 1.940 5.688 1.711 + $atom:wat[0][1][0]/H2 $mol:wat[0][1][0] @atom:SPCE/H 0.4238 1.131 5.221 0.390 + $atom:wat[1][1][0]/O $mol:wat[1][1][0] @atom:SPCE/O -0.8476 3.391 6.526 2.300 + $atom:wat[1][1][0]/H1 $mol:wat[1][1][0] @atom:SPCE/H 0.4238 4.200 6.059 1.970 + $atom:wat[1][1][0]/H2 $mol:wat[1][1][0] @atom:SPCE/H 0.4238 3.391 6.526 3.291 + $atom:wat[2][1][0]/O $mol:wat[2][1][0] @atom:SPCE/O -0.8476 5.652 5.221 1.381 + $atom:wat[2][1][0]/H1 $mol:wat[2][1][0] @atom:SPCE/H 0.4238 6.461 5.688 1.711 + $atom:wat[2][1][0]/H2 $mol:wat[2][1][0] @atom:SPCE/H 0.4238 5.652 4.287 1.711 + $atom:wat[3][1][0]/O $mol:wat[3][1][0] @atom:SPCE/O -0.8476 7.912 6.526 2.300 + $atom:wat[3][1][0]/H1 $mol:wat[3][1][0] @atom:SPCE/H 0.4238 8.721 6.059 1.970 + $atom:wat[3][1][0]/H2 $mol:wat[3][1][0] @atom:SPCE/H 0.4238 7.912 7.460 1.970 + $atom:wat[0][0][1]/O $mol:wat[0][0][1] @atom:SPCE/O -0.8476 1.131 2.611 5.061 + $atom:wat[0][0][1]/H1 $mol:wat[0][0][1] @atom:SPCE/H 0.4238 1.940 2.144 5.391 + $atom:wat[0][0][1]/H2 $mol:wat[0][0][1] @atom:SPCE/H 0.4238 1.131 2.611 4.070 + $atom:wat[1][0][1]/O $mol:wat[1][0][1] @atom:SPCE/O -0.8476 3.391 1.305 5.981 + $atom:wat[1][0][1]/H1 $mol:wat[1][0][1] @atom:SPCE/H 0.4238 4.200 1.772 5.651 + $atom:wat[1][0][1]/H2 $mol:wat[1][0][1] @atom:SPCE/H 0.4238 3.391 1.305 6.972 + $atom:wat[2][0][1]/O $mol:wat[2][0][1] @atom:SPCE/O -0.8476 5.652 2.611 5.061 + $atom:wat[2][0][1]/H1 $mol:wat[2][0][1] @atom:SPCE/H 0.4238 6.461 2.144 5.391 + $atom:wat[2][0][1]/H2 $mol:wat[2][0][1] @atom:SPCE/H 0.4238 5.652 3.545 5.391 + $atom:wat[3][0][1]/O $mol:wat[3][0][1] @atom:SPCE/O -0.8476 7.912 1.305 5.981 + $atom:wat[3][0][1]/H1 $mol:wat[3][0][1] @atom:SPCE/H 0.4238 8.721 1.772 5.651 + $atom:wat[3][0][1]/H2 $mol:wat[3][0][1] @atom:SPCE/H 0.4238 7.912 0.371 5.651 + $atom:wat[0][1][1]/O $mol:wat[0][1][1] @atom:SPCE/O -0.8476 1.131 5.221 5.981 + $atom:wat[0][1][1]/H1 $mol:wat[0][1][1] @atom:SPCE/H 0.4238 0.322 5.688 5.651 + $atom:wat[0][1][1]/H2 $mol:wat[0][1][1] @atom:SPCE/H 0.4238 1.131 4.287 5.651 + $atom:wat[1][1][1]/O $mol:wat[1][1][1] @atom:SPCE/O -0.8476 3.391 6.526 5.061 + $atom:wat[1][1][1]/H1 $mol:wat[1][1][1] @atom:SPCE/H 0.4238 2.582 6.059 5.391 + $atom:wat[1][1][1]/H2 $mol:wat[1][1][1] @atom:SPCE/H 0.4238 3.391 7.460 5.391 + $atom:wat[2][1][1]/O $mol:wat[2][1][1] @atom:SPCE/O -0.8476 5.652 5.221 5.981 + $atom:wat[2][1][1]/H1 $mol:wat[2][1][1] @atom:SPCE/H 0.4238 4.843 5.688 5.651 + $atom:wat[2][1][1]/H2 $mol:wat[2][1][1] @atom:SPCE/H 0.4238 5.652 5.221 6.972 + $atom:wat[3][1][1]/O $mol:wat[3][1][1] @atom:SPCE/O -0.8476 7.912 6.526 5.061 + $atom:wat[3][1][1]/H1 $mol:wat[3][1][1] @atom:SPCE/H 0.4238 7.103 6.059 5.391 + $atom:wat[3][1][1]/H2 $mol:wat[3][1][1] @atom:SPCE/H 0.4238 7.912 6.526 4.070 + } +} # SpceIceRect16 + +# Credit goes to Martin Chaplin. +# These coordinates were orignally downloaded from Martin Chaplin's +# website: http://www.btinternet.com/~martin.chaplin/ice1h.html +# ... and then they were stretched independently in the xy and z +# directions in order to match the lattice parameters measured by +# Rottger et al., +# "Lattice constants and thermal expansion of H2O and D2O ice Ih" +# between 10 and 265K", Acta Crystallogr. B, 50 (1994) 644-648 +# I am using the lattice constants measured at temperature 265K +# (and pressure=100Torr). diff --git a/tools/moltemplate/src/moltemplate_force_fields/spce_ice_rect32.lt b/tools/moltemplate/moltemplate/force_fields/spce_ice_rect32.lt similarity index 98% rename from tools/moltemplate/src/moltemplate_force_fields/spce_ice_rect32.lt rename to tools/moltemplate/moltemplate/force_fields/spce_ice_rect32.lt index 7ddcb0adfe00469ffced7b613f9f8236a82ff6be..0a52d82981d0e55bb0172c41039aee688f790a5a 100644 --- a/tools/moltemplate/src/moltemplate_force_fields/spce_ice_rect32.lt +++ b/tools/moltemplate/moltemplate/force_fields/spce_ice_rect32.lt @@ -1,129 +1,129 @@ -# This ice (1h) unit cell is rectangular and contains 32 water molecules. -# (Coordinates and cell dimensions converted were from a PDB file.) -# The dimensions of the unit cell (in Angstroms) are: 9.043 15.663 7.361 - - -import "spce.lt" # <-- define the "SPCE" molecule - -SpceIceRect32 { - - # Create a 3-dimensional array of 32 water molecules - - wat = new SPCE[4][4][2] - - # Array indices will be correlated with position [xindex][yindex][zindex] - - # You can overwrite coordinates of atoms after they were created this way: - # (Order is not important) - # atom-ID molecule-ID atomType charge newX newY newZ - - write("Data Atoms") { - $atom:wat[0][0][0]/O $mol:wat[0][0][0] @atom:SPCE/O -0.8476 1.131 2.611 2.300 - $atom:wat[0][0][0]/H1 $mol:wat[0][0][0] @atom:SPCE/H 0.4238 0.322 2.144 1.970 - $atom:wat[0][0][0]/H2 $mol:wat[0][0][0] @atom:SPCE/H 0.4238 1.131 2.611 3.291 - $atom:wat[1][0][0]/O $mol:wat[1][0][0] @atom:SPCE/O -0.8476 3.391 1.305 1.381 - $atom:wat[1][0][0]/H1 $mol:wat[1][0][0] @atom:SPCE/H 0.4238 2.582 1.772 1.711 - $atom:wat[1][0][0]/H2 $mol:wat[1][0][0] @atom:SPCE/H 0.4238 3.391 1.305 0.390 - $atom:wat[2][0][0]/O $mol:wat[2][0][0] @atom:SPCE/O -0.8476 5.652 2.611 2.300 - $atom:wat[2][0][0]/H1 $mol:wat[2][0][0] @atom:SPCE/H 0.4238 4.843 2.144 1.970 - $atom:wat[2][0][0]/H2 $mol:wat[2][0][0] @atom:SPCE/H 0.4238 5.652 3.545 1.970 - $atom:wat[3][0][0]/O $mol:wat[3][0][0] @atom:SPCE/O -0.8476 7.912 1.305 1.381 - $atom:wat[3][0][0]/H1 $mol:wat[3][0][0] @atom:SPCE/H 0.4238 7.103 1.772 1.711 - $atom:wat[3][0][0]/H2 $mol:wat[3][0][0] @atom:SPCE/H 0.4238 7.912 0.371 1.711 - $atom:wat[0][1][0]/O $mol:wat[0][1][0] @atom:SPCE/O -0.8476 1.131 5.221 1.381 - $atom:wat[0][1][0]/H1 $mol:wat[0][1][0] @atom:SPCE/H 0.4238 1.940 5.688 1.711 - $atom:wat[0][1][0]/H2 $mol:wat[0][1][0] @atom:SPCE/H 0.4238 1.131 4.287 1.711 - $atom:wat[1][1][0]/O $mol:wat[1][1][0] @atom:SPCE/O -0.8476 3.391 6.526 2.300 - $atom:wat[1][1][0]/H1 $mol:wat[1][1][0] @atom:SPCE/H 0.4238 4.200 6.059 1.970 - $atom:wat[1][1][0]/H2 $mol:wat[1][1][0] @atom:SPCE/H 0.4238 3.391 6.526 3.291 - $atom:wat[2][1][0]/O $mol:wat[2][1][0] @atom:SPCE/O -0.8476 5.652 5.221 1.381 - $atom:wat[2][1][0]/H1 $mol:wat[2][1][0] @atom:SPCE/H 0.4238 6.461 5.688 1.711 - $atom:wat[2][1][0]/H2 $mol:wat[2][1][0] @atom:SPCE/H 0.4238 5.652 5.221 0.390 - $atom:wat[3][1][0]/O $mol:wat[3][1][0] @atom:SPCE/O -0.8476 7.912 6.526 2.300 - $atom:wat[3][1][0]/H1 $mol:wat[3][1][0] @atom:SPCE/H 0.4238 8.721 6.059 1.970 - $atom:wat[3][1][0]/H2 $mol:wat[3][1][0] @atom:SPCE/H 0.4238 7.912 7.460 1.970 - $atom:wat[0][2][0]/O $mol:wat[0][2][0] @atom:SPCE/O -0.8476 1.131 10.443 2.300 - $atom:wat[0][2][0]/H1 $mol:wat[0][2][0] @atom:SPCE/H 0.4238 0.322 9.976 1.970 - $atom:wat[0][2][0]/H2 $mol:wat[0][2][0] @atom:SPCE/H 0.4238 1.131 11.377 1.970 - $atom:wat[1][2][0]/O $mol:wat[1][2][0] @atom:SPCE/O -0.8476 3.391 9.137 1.381 - $atom:wat[1][2][0]/H1 $mol:wat[1][2][0] @atom:SPCE/H 0.4238 2.582 9.604 1.711 - $atom:wat[1][2][0]/H2 $mol:wat[1][2][0] @atom:SPCE/H 0.4238 3.391 8.203 1.711 - $atom:wat[2][2][0]/O $mol:wat[2][2][0] @atom:SPCE/O -0.8476 5.652 10.443 2.300 - $atom:wat[2][2][0]/H1 $mol:wat[2][2][0] @atom:SPCE/H 0.4238 4.843 9.976 1.970 - $atom:wat[2][2][0]/H2 $mol:wat[2][2][0] @atom:SPCE/H 0.4238 5.652 10.443 3.291 - $atom:wat[3][2][0]/O $mol:wat[3][2][0] @atom:SPCE/O -0.8476 7.912 9.137 1.381 - $atom:wat[3][2][0]/H1 $mol:wat[3][2][0] @atom:SPCE/H 0.4238 7.103 9.604 1.711 - $atom:wat[3][2][0]/H2 $mol:wat[3][2][0] @atom:SPCE/H 0.4238 7.912 9.137 0.390 - $atom:wat[0][3][0]/O $mol:wat[0][3][0] @atom:SPCE/O -0.8476 1.131 13.053 1.381 - $atom:wat[0][3][0]/H1 $mol:wat[0][3][0] @atom:SPCE/H 0.4238 1.940 13.520 1.711 - $atom:wat[0][3][0]/H2 $mol:wat[0][3][0] @atom:SPCE/H 0.4238 1.131 13.053 0.390 - $atom:wat[1][3][0]/O $mol:wat[1][3][0] @atom:SPCE/O -0.8476 3.391 14.358 2.300 - $atom:wat[1][3][0]/H1 $mol:wat[1][3][0] @atom:SPCE/H 0.4238 4.200 13.891 1.970 - $atom:wat[1][3][0]/H2 $mol:wat[1][3][0] @atom:SPCE/H 0.4238 3.391 15.292 1.970 - $atom:wat[2][3][0]/O $mol:wat[2][3][0] @atom:SPCE/O -0.8476 5.652 13.053 1.381 - $atom:wat[2][3][0]/H1 $mol:wat[2][3][0] @atom:SPCE/H 0.4238 6.461 13.520 1.711 - $atom:wat[2][3][0]/H2 $mol:wat[2][3][0] @atom:SPCE/H 0.4238 5.652 12.119 1.711 - $atom:wat[3][3][0]/O $mol:wat[3][3][0] @atom:SPCE/O -0.8476 7.912 14.358 2.300 - $atom:wat[3][3][0]/H1 $mol:wat[3][3][0] @atom:SPCE/H 0.4238 8.721 13.891 1.970 - $atom:wat[3][3][0]/H2 $mol:wat[3][3][0] @atom:SPCE/H 0.4238 7.912 14.358 3.291 - $atom:wat[0][0][1]/O $mol:wat[0][0][1] @atom:SPCE/O -0.8476 1.131 2.611 5.061 - $atom:wat[0][0][1]/H1 $mol:wat[0][0][1] @atom:SPCE/H 0.4238 1.940 2.144 5.391 - $atom:wat[0][0][1]/H2 $mol:wat[0][0][1] @atom:SPCE/H 0.4238 1.131 3.545 5.391 - $atom:wat[1][0][1]/O $mol:wat[1][0][1] @atom:SPCE/O -0.8476 3.391 1.305 5.981 - $atom:wat[1][0][1]/H1 $mol:wat[1][0][1] @atom:SPCE/H 0.4238 4.200 1.772 5.651 - $atom:wat[1][0][1]/H2 $mol:wat[1][0][1] @atom:SPCE/H 0.4238 3.391 0.371 5.651 - $atom:wat[2][0][1]/O $mol:wat[2][0][1] @atom:SPCE/O -0.8476 5.652 2.611 5.061 - $atom:wat[2][0][1]/H1 $mol:wat[2][0][1] @atom:SPCE/H 0.4238 6.461 2.144 5.391 - $atom:wat[2][0][1]/H2 $mol:wat[2][0][1] @atom:SPCE/H 0.4238 5.652 2.611 4.070 - $atom:wat[3][0][1]/O $mol:wat[3][0][1] @atom:SPCE/O -0.8476 7.912 1.305 5.981 - $atom:wat[3][0][1]/H1 $mol:wat[3][0][1] @atom:SPCE/H 0.4238 8.721 1.772 5.651 - $atom:wat[3][0][1]/H2 $mol:wat[3][0][1] @atom:SPCE/H 0.4238 7.912 1.305 6.972 - $atom:wat[0][1][1]/O $mol:wat[0][1][1] @atom:SPCE/O -0.8476 1.131 5.221 5.981 - $atom:wat[0][1][1]/H1 $mol:wat[0][1][1] @atom:SPCE/H 0.4238 0.322 5.688 5.651 - $atom:wat[0][1][1]/H2 $mol:wat[0][1][1] @atom:SPCE/H 0.4238 1.131 5.221 6.972 - $atom:wat[1][1][1]/O $mol:wat[1][1][1] @atom:SPCE/O -0.8476 3.391 6.526 5.061 - $atom:wat[1][1][1]/H1 $mol:wat[1][1][1] @atom:SPCE/H 0.4238 2.582 6.059 5.391 - $atom:wat[1][1][1]/H2 $mol:wat[1][1][1] @atom:SPCE/H 0.4238 3.391 7.460 5.391 - $atom:wat[2][1][1]/O $mol:wat[2][1][1] @atom:SPCE/O -0.8476 5.652 5.221 5.981 - $atom:wat[2][1][1]/H1 $mol:wat[2][1][1] @atom:SPCE/H 0.4238 4.843 5.688 5.651 - $atom:wat[2][1][1]/H2 $mol:wat[2][1][1] @atom:SPCE/H 0.4238 5.652 4.287 5.651 - $atom:wat[3][1][1]/O $mol:wat[3][1][1] @atom:SPCE/O -0.8476 7.912 6.526 5.061 - $atom:wat[3][1][1]/H1 $mol:wat[3][1][1] @atom:SPCE/H 0.4238 7.103 6.059 5.391 - $atom:wat[3][1][1]/H2 $mol:wat[3][1][1] @atom:SPCE/H 0.4238 7.912 6.526 4.070 - $atom:wat[0][2][1]/O $mol:wat[0][2][1] @atom:SPCE/O -0.8476 1.131 10.443 5.061 - $atom:wat[0][2][1]/H1 $mol:wat[0][2][1] @atom:SPCE/H 0.4238 1.940 9.976 5.391 - $atom:wat[0][2][1]/H2 $mol:wat[0][2][1] @atom:SPCE/H 0.4238 1.131 10.443 4.070 - $atom:wat[1][2][1]/O $mol:wat[1][2][1] @atom:SPCE/O -0.8476 3.391 9.137 5.981 - $atom:wat[1][2][1]/H1 $mol:wat[1][2][1] @atom:SPCE/H 0.4238 4.200 9.604 5.651 - $atom:wat[1][2][1]/H2 $mol:wat[1][2][1] @atom:SPCE/H 0.4238 3.391 9.137 6.972 - $atom:wat[2][2][1]/O $mol:wat[2][2][1] @atom:SPCE/O -0.8476 5.652 10.443 5.061 - $atom:wat[2][2][1]/H1 $mol:wat[2][2][1] @atom:SPCE/H 0.4238 6.461 9.976 5.391 - $atom:wat[2][2][1]/H2 $mol:wat[2][2][1] @atom:SPCE/H 0.4238 5.652 11.377 5.391 - $atom:wat[3][2][1]/O $mol:wat[3][2][1] @atom:SPCE/O -0.8476 7.912 9.137 5.981 - $atom:wat[3][2][1]/H1 $mol:wat[3][2][1] @atom:SPCE/H 0.4238 8.721 9.604 5.651 - $atom:wat[3][2][1]/H2 $mol:wat[3][2][1] @atom:SPCE/H 0.4238 7.912 8.203 5.651 - $atom:wat[0][3][1]/O $mol:wat[0][3][1] @atom:SPCE/O -0.8476 1.131 13.053 5.981 - $atom:wat[0][3][1]/H1 $mol:wat[0][3][1] @atom:SPCE/H 0.4238 0.322 13.520 5.651 - $atom:wat[0][3][1]/H2 $mol:wat[0][3][1] @atom:SPCE/H 0.4238 1.131 12.119 5.651 - $atom:wat[1][3][1]/O $mol:wat[1][3][1] @atom:SPCE/O -0.8476 3.391 14.358 5.061 - $atom:wat[1][3][1]/H1 $mol:wat[1][3][1] @atom:SPCE/H 0.4238 2.582 13.891 5.391 - $atom:wat[1][3][1]/H2 $mol:wat[1][3][1] @atom:SPCE/H 0.4238 3.391 14.358 4.070 - $atom:wat[2][3][1]/O $mol:wat[2][3][1] @atom:SPCE/O -0.8476 5.652 13.053 5.981 - $atom:wat[2][3][1]/H1 $mol:wat[2][3][1] @atom:SPCE/H 0.4238 4.843 13.520 5.651 - $atom:wat[2][3][1]/H2 $mol:wat[2][3][1] @atom:SPCE/H 0.4238 5.652 13.053 6.972 - $atom:wat[3][3][1]/O $mol:wat[3][3][1] @atom:SPCE/O -0.8476 7.912 14.358 5.061 - $atom:wat[3][3][1]/H1 $mol:wat[3][3][1] @atom:SPCE/H 0.4238 7.103 13.891 5.391 - $atom:wat[3][3][1]/H2 $mol:wat[3][3][1] @atom:SPCE/H 0.4238 7.912 15.292 5.391 - } -} # SpceIceRect32 - -# Credit goes to Martin Chaplin. -# These coordinates were orignally downloaded from Martin Chaplin's -# website: http://www.btinternet.com/~martin.chaplin/ice1h.html -# ... and then they were stretched independently in the xy and z -# directions in order to match the lattice parameters measured by -# Rottger et al., -# "Lattice constants and thermal expansion of H2O and D2O ice Ih" -# between 10 and 265K", Acta Crystallogr. B, 50 (1994) 644-648 -# I am using the lattice constants measured at temperature 265K -# (and pressure=100Torr). +# This ice (1h) unit cell is rectangular and contains 32 water molecules. +# (Coordinates and cell dimensions converted were from a PDB file.) +# The dimensions of the unit cell (in Angstroms) are: 9.043 15.663 7.361 + + +import "spce.lt" # <-- define the "SPCE" molecule + +SpceIceRect32 { + + # Create a 3-dimensional array of 32 water molecules + + wat = new SPCE[4][4][2] + + # Array indices will be correlated with position [xindex][yindex][zindex] + + # You can overwrite coordinates of atoms after they were created this way: + # (Order is not important) + # atom-ID molecule-ID atomType charge newX newY newZ + + write("Data Atoms") { + $atom:wat[0][0][0]/O $mol:wat[0][0][0] @atom:SPCE/O -0.8476 1.131 2.611 2.300 + $atom:wat[0][0][0]/H1 $mol:wat[0][0][0] @atom:SPCE/H 0.4238 0.322 2.144 1.970 + $atom:wat[0][0][0]/H2 $mol:wat[0][0][0] @atom:SPCE/H 0.4238 1.131 2.611 3.291 + $atom:wat[1][0][0]/O $mol:wat[1][0][0] @atom:SPCE/O -0.8476 3.391 1.305 1.381 + $atom:wat[1][0][0]/H1 $mol:wat[1][0][0] @atom:SPCE/H 0.4238 2.582 1.772 1.711 + $atom:wat[1][0][0]/H2 $mol:wat[1][0][0] @atom:SPCE/H 0.4238 3.391 1.305 0.390 + $atom:wat[2][0][0]/O $mol:wat[2][0][0] @atom:SPCE/O -0.8476 5.652 2.611 2.300 + $atom:wat[2][0][0]/H1 $mol:wat[2][0][0] @atom:SPCE/H 0.4238 4.843 2.144 1.970 + $atom:wat[2][0][0]/H2 $mol:wat[2][0][0] @atom:SPCE/H 0.4238 5.652 3.545 1.970 + $atom:wat[3][0][0]/O $mol:wat[3][0][0] @atom:SPCE/O -0.8476 7.912 1.305 1.381 + $atom:wat[3][0][0]/H1 $mol:wat[3][0][0] @atom:SPCE/H 0.4238 7.103 1.772 1.711 + $atom:wat[3][0][0]/H2 $mol:wat[3][0][0] @atom:SPCE/H 0.4238 7.912 0.371 1.711 + $atom:wat[0][1][0]/O $mol:wat[0][1][0] @atom:SPCE/O -0.8476 1.131 5.221 1.381 + $atom:wat[0][1][0]/H1 $mol:wat[0][1][0] @atom:SPCE/H 0.4238 1.940 5.688 1.711 + $atom:wat[0][1][0]/H2 $mol:wat[0][1][0] @atom:SPCE/H 0.4238 1.131 4.287 1.711 + $atom:wat[1][1][0]/O $mol:wat[1][1][0] @atom:SPCE/O -0.8476 3.391 6.526 2.300 + $atom:wat[1][1][0]/H1 $mol:wat[1][1][0] @atom:SPCE/H 0.4238 4.200 6.059 1.970 + $atom:wat[1][1][0]/H2 $mol:wat[1][1][0] @atom:SPCE/H 0.4238 3.391 6.526 3.291 + $atom:wat[2][1][0]/O $mol:wat[2][1][0] @atom:SPCE/O -0.8476 5.652 5.221 1.381 + $atom:wat[2][1][0]/H1 $mol:wat[2][1][0] @atom:SPCE/H 0.4238 6.461 5.688 1.711 + $atom:wat[2][1][0]/H2 $mol:wat[2][1][0] @atom:SPCE/H 0.4238 5.652 5.221 0.390 + $atom:wat[3][1][0]/O $mol:wat[3][1][0] @atom:SPCE/O -0.8476 7.912 6.526 2.300 + $atom:wat[3][1][0]/H1 $mol:wat[3][1][0] @atom:SPCE/H 0.4238 8.721 6.059 1.970 + $atom:wat[3][1][0]/H2 $mol:wat[3][1][0] @atom:SPCE/H 0.4238 7.912 7.460 1.970 + $atom:wat[0][2][0]/O $mol:wat[0][2][0] @atom:SPCE/O -0.8476 1.131 10.443 2.300 + $atom:wat[0][2][0]/H1 $mol:wat[0][2][0] @atom:SPCE/H 0.4238 0.322 9.976 1.970 + $atom:wat[0][2][0]/H2 $mol:wat[0][2][0] @atom:SPCE/H 0.4238 1.131 11.377 1.970 + $atom:wat[1][2][0]/O $mol:wat[1][2][0] @atom:SPCE/O -0.8476 3.391 9.137 1.381 + $atom:wat[1][2][0]/H1 $mol:wat[1][2][0] @atom:SPCE/H 0.4238 2.582 9.604 1.711 + $atom:wat[1][2][0]/H2 $mol:wat[1][2][0] @atom:SPCE/H 0.4238 3.391 8.203 1.711 + $atom:wat[2][2][0]/O $mol:wat[2][2][0] @atom:SPCE/O -0.8476 5.652 10.443 2.300 + $atom:wat[2][2][0]/H1 $mol:wat[2][2][0] @atom:SPCE/H 0.4238 4.843 9.976 1.970 + $atom:wat[2][2][0]/H2 $mol:wat[2][2][0] @atom:SPCE/H 0.4238 5.652 10.443 3.291 + $atom:wat[3][2][0]/O $mol:wat[3][2][0] @atom:SPCE/O -0.8476 7.912 9.137 1.381 + $atom:wat[3][2][0]/H1 $mol:wat[3][2][0] @atom:SPCE/H 0.4238 7.103 9.604 1.711 + $atom:wat[3][2][0]/H2 $mol:wat[3][2][0] @atom:SPCE/H 0.4238 7.912 9.137 0.390 + $atom:wat[0][3][0]/O $mol:wat[0][3][0] @atom:SPCE/O -0.8476 1.131 13.053 1.381 + $atom:wat[0][3][0]/H1 $mol:wat[0][3][0] @atom:SPCE/H 0.4238 1.940 13.520 1.711 + $atom:wat[0][3][0]/H2 $mol:wat[0][3][0] @atom:SPCE/H 0.4238 1.131 13.053 0.390 + $atom:wat[1][3][0]/O $mol:wat[1][3][0] @atom:SPCE/O -0.8476 3.391 14.358 2.300 + $atom:wat[1][3][0]/H1 $mol:wat[1][3][0] @atom:SPCE/H 0.4238 4.200 13.891 1.970 + $atom:wat[1][3][0]/H2 $mol:wat[1][3][0] @atom:SPCE/H 0.4238 3.391 15.292 1.970 + $atom:wat[2][3][0]/O $mol:wat[2][3][0] @atom:SPCE/O -0.8476 5.652 13.053 1.381 + $atom:wat[2][3][0]/H1 $mol:wat[2][3][0] @atom:SPCE/H 0.4238 6.461 13.520 1.711 + $atom:wat[2][3][0]/H2 $mol:wat[2][3][0] @atom:SPCE/H 0.4238 5.652 12.119 1.711 + $atom:wat[3][3][0]/O $mol:wat[3][3][0] @atom:SPCE/O -0.8476 7.912 14.358 2.300 + $atom:wat[3][3][0]/H1 $mol:wat[3][3][0] @atom:SPCE/H 0.4238 8.721 13.891 1.970 + $atom:wat[3][3][0]/H2 $mol:wat[3][3][0] @atom:SPCE/H 0.4238 7.912 14.358 3.291 + $atom:wat[0][0][1]/O $mol:wat[0][0][1] @atom:SPCE/O -0.8476 1.131 2.611 5.061 + $atom:wat[0][0][1]/H1 $mol:wat[0][0][1] @atom:SPCE/H 0.4238 1.940 2.144 5.391 + $atom:wat[0][0][1]/H2 $mol:wat[0][0][1] @atom:SPCE/H 0.4238 1.131 3.545 5.391 + $atom:wat[1][0][1]/O $mol:wat[1][0][1] @atom:SPCE/O -0.8476 3.391 1.305 5.981 + $atom:wat[1][0][1]/H1 $mol:wat[1][0][1] @atom:SPCE/H 0.4238 4.200 1.772 5.651 + $atom:wat[1][0][1]/H2 $mol:wat[1][0][1] @atom:SPCE/H 0.4238 3.391 0.371 5.651 + $atom:wat[2][0][1]/O $mol:wat[2][0][1] @atom:SPCE/O -0.8476 5.652 2.611 5.061 + $atom:wat[2][0][1]/H1 $mol:wat[2][0][1] @atom:SPCE/H 0.4238 6.461 2.144 5.391 + $atom:wat[2][0][1]/H2 $mol:wat[2][0][1] @atom:SPCE/H 0.4238 5.652 2.611 4.070 + $atom:wat[3][0][1]/O $mol:wat[3][0][1] @atom:SPCE/O -0.8476 7.912 1.305 5.981 + $atom:wat[3][0][1]/H1 $mol:wat[3][0][1] @atom:SPCE/H 0.4238 8.721 1.772 5.651 + $atom:wat[3][0][1]/H2 $mol:wat[3][0][1] @atom:SPCE/H 0.4238 7.912 1.305 6.972 + $atom:wat[0][1][1]/O $mol:wat[0][1][1] @atom:SPCE/O -0.8476 1.131 5.221 5.981 + $atom:wat[0][1][1]/H1 $mol:wat[0][1][1] @atom:SPCE/H 0.4238 0.322 5.688 5.651 + $atom:wat[0][1][1]/H2 $mol:wat[0][1][1] @atom:SPCE/H 0.4238 1.131 5.221 6.972 + $atom:wat[1][1][1]/O $mol:wat[1][1][1] @atom:SPCE/O -0.8476 3.391 6.526 5.061 + $atom:wat[1][1][1]/H1 $mol:wat[1][1][1] @atom:SPCE/H 0.4238 2.582 6.059 5.391 + $atom:wat[1][1][1]/H2 $mol:wat[1][1][1] @atom:SPCE/H 0.4238 3.391 7.460 5.391 + $atom:wat[2][1][1]/O $mol:wat[2][1][1] @atom:SPCE/O -0.8476 5.652 5.221 5.981 + $atom:wat[2][1][1]/H1 $mol:wat[2][1][1] @atom:SPCE/H 0.4238 4.843 5.688 5.651 + $atom:wat[2][1][1]/H2 $mol:wat[2][1][1] @atom:SPCE/H 0.4238 5.652 4.287 5.651 + $atom:wat[3][1][1]/O $mol:wat[3][1][1] @atom:SPCE/O -0.8476 7.912 6.526 5.061 + $atom:wat[3][1][1]/H1 $mol:wat[3][1][1] @atom:SPCE/H 0.4238 7.103 6.059 5.391 + $atom:wat[3][1][1]/H2 $mol:wat[3][1][1] @atom:SPCE/H 0.4238 7.912 6.526 4.070 + $atom:wat[0][2][1]/O $mol:wat[0][2][1] @atom:SPCE/O -0.8476 1.131 10.443 5.061 + $atom:wat[0][2][1]/H1 $mol:wat[0][2][1] @atom:SPCE/H 0.4238 1.940 9.976 5.391 + $atom:wat[0][2][1]/H2 $mol:wat[0][2][1] @atom:SPCE/H 0.4238 1.131 10.443 4.070 + $atom:wat[1][2][1]/O $mol:wat[1][2][1] @atom:SPCE/O -0.8476 3.391 9.137 5.981 + $atom:wat[1][2][1]/H1 $mol:wat[1][2][1] @atom:SPCE/H 0.4238 4.200 9.604 5.651 + $atom:wat[1][2][1]/H2 $mol:wat[1][2][1] @atom:SPCE/H 0.4238 3.391 9.137 6.972 + $atom:wat[2][2][1]/O $mol:wat[2][2][1] @atom:SPCE/O -0.8476 5.652 10.443 5.061 + $atom:wat[2][2][1]/H1 $mol:wat[2][2][1] @atom:SPCE/H 0.4238 6.461 9.976 5.391 + $atom:wat[2][2][1]/H2 $mol:wat[2][2][1] @atom:SPCE/H 0.4238 5.652 11.377 5.391 + $atom:wat[3][2][1]/O $mol:wat[3][2][1] @atom:SPCE/O -0.8476 7.912 9.137 5.981 + $atom:wat[3][2][1]/H1 $mol:wat[3][2][1] @atom:SPCE/H 0.4238 8.721 9.604 5.651 + $atom:wat[3][2][1]/H2 $mol:wat[3][2][1] @atom:SPCE/H 0.4238 7.912 8.203 5.651 + $atom:wat[0][3][1]/O $mol:wat[0][3][1] @atom:SPCE/O -0.8476 1.131 13.053 5.981 + $atom:wat[0][3][1]/H1 $mol:wat[0][3][1] @atom:SPCE/H 0.4238 0.322 13.520 5.651 + $atom:wat[0][3][1]/H2 $mol:wat[0][3][1] @atom:SPCE/H 0.4238 1.131 12.119 5.651 + $atom:wat[1][3][1]/O $mol:wat[1][3][1] @atom:SPCE/O -0.8476 3.391 14.358 5.061 + $atom:wat[1][3][1]/H1 $mol:wat[1][3][1] @atom:SPCE/H 0.4238 2.582 13.891 5.391 + $atom:wat[1][3][1]/H2 $mol:wat[1][3][1] @atom:SPCE/H 0.4238 3.391 14.358 4.070 + $atom:wat[2][3][1]/O $mol:wat[2][3][1] @atom:SPCE/O -0.8476 5.652 13.053 5.981 + $atom:wat[2][3][1]/H1 $mol:wat[2][3][1] @atom:SPCE/H 0.4238 4.843 13.520 5.651 + $atom:wat[2][3][1]/H2 $mol:wat[2][3][1] @atom:SPCE/H 0.4238 5.652 13.053 6.972 + $atom:wat[3][3][1]/O $mol:wat[3][3][1] @atom:SPCE/O -0.8476 7.912 14.358 5.061 + $atom:wat[3][3][1]/H1 $mol:wat[3][3][1] @atom:SPCE/H 0.4238 7.103 13.891 5.391 + $atom:wat[3][3][1]/H2 $mol:wat[3][3][1] @atom:SPCE/H 0.4238 7.912 15.292 5.391 + } +} # SpceIceRect32 + +# Credit goes to Martin Chaplin. +# These coordinates were orignally downloaded from Martin Chaplin's +# website: http://www.btinternet.com/~martin.chaplin/ice1h.html +# ... and then they were stretched independently in the xy and z +# directions in order to match the lattice parameters measured by +# Rottger et al., +# "Lattice constants and thermal expansion of H2O and D2O ice Ih" +# between 10 and 265K", Acta Crystallogr. B, 50 (1994) 644-648 +# I am using the lattice constants measured at temperature 265K +# (and pressure=100Torr). diff --git a/tools/moltemplate/src/moltemplate_force_fields/spce_ice_rect8.lt b/tools/moltemplate/moltemplate/force_fields/spce_ice_rect8.lt similarity index 98% rename from tools/moltemplate/src/moltemplate_force_fields/spce_ice_rect8.lt rename to tools/moltemplate/moltemplate/force_fields/spce_ice_rect8.lt index ccfd2f18c6e81cafd57eb7570a1f1cc3d1e7e4ce..ae5d22a77e7933c72b9898c77b6c4115ee204193 100644 --- a/tools/moltemplate/src/moltemplate_force_fields/spce_ice_rect8.lt +++ b/tools/moltemplate/moltemplate/force_fields/spce_ice_rect8.lt @@ -1,57 +1,57 @@ -# This ice (1h) unit cell is rectangular and contains 8 water molecules. -# (Coordinates and cell dimensions converted were from a PDB file.) -# The dimensions of the unit cell (in Angstroms) are: 4.521 7.832 7.362 - - -import "spce.lt" # <-- define the "SPCE" molecule - -SpceIceRect8 { - - # Create a 3-dimensional array of 8 water molecules - - wat = new SPCE[2][2][2] - - # Array indices will be correlated with position [xindex][yindex][zindex] - - # You can overwrite coordinates of atoms after they were created this way: - # (Order is not important) - # atom-ID molecule-ID atomType charge newX newY newZ - - write("Data Atoms") { - $atom:wat[1][0][0]/O $mol:wat[1][0][0] @atom:SPCE/O -0.8476 3.391 1.305 1.381 - $atom:wat[1][0][0]/H1 $mol:wat[1][0][0] @atom:SPCE/H 0.4238 3.391 0.370 1.710 - $atom:wat[1][0][0]/H2 $mol:wat[1][0][0] @atom:SPCE/H 0.4238 2.582 1.772 1.710 - $atom:wat[1][0][1]/O $mol:wat[1][0][1] @atom:SPCE/O -0.8476 3.391 1.305 5.981 - $atom:wat[1][0][1]/H1 $mol:wat[1][0][1] @atom:SPCE/H 0.4238 3.391 1.305 6.970 - $atom:wat[1][0][1]/H2 $mol:wat[1][0][1] @atom:SPCE/H 0.4238 4.200 1.772 5.652 - $atom:wat[0][0][0]/O $mol:wat[0][0][0] @atom:SPCE/O -0.8476 1.131 2.611 2.300 - $atom:wat[0][0][0]/H1 $mol:wat[0][0][0] @atom:SPCE/H 0.4238 1.131 2.611 3.289 - $atom:wat[0][0][0]/H2 $mol:wat[0][0][0] @atom:SPCE/H 0.4238 0.320 2.143 1.971 - $atom:wat[0][0][1]/O $mol:wat[0][0][1] @atom:SPCE/O -0.8476 1.131 2.611 5.061 - $atom:wat[0][0][1]/H1 $mol:wat[0][0][1] @atom:SPCE/H 0.4238 1.940 2.143 5.391 - $atom:wat[0][0][1]/H2 $mol:wat[0][0][1] @atom:SPCE/H 0.4238 1.131 3.546 5.391 - $atom:wat[0][1][0]/O $mol:wat[0][1][0] @atom:SPCE/O -0.8476 1.131 5.221 1.381 - $atom:wat[0][1][0]/H1 $mol:wat[0][1][0] @atom:SPCE/H 0.4238 1.131 4.286 1.710 - $atom:wat[0][1][0]/H2 $mol:wat[0][1][0] @atom:SPCE/H 0.4238 0.320 5.688 1.710 - $atom:wat[0][1][1]/O $mol:wat[0][1][1] @atom:SPCE/O -0.8476 1.131 5.221 5.981 - $atom:wat[0][1][1]/H1 $mol:wat[0][1][1] @atom:SPCE/H 0.4238 1.131 5.221 6.970 - $atom:wat[0][1][1]/H2 $mol:wat[0][1][1] @atom:SPCE/H 0.4238 1.940 5.688 5.652 - $atom:wat[1][1][0]/O $mol:wat[1][1][0] @atom:SPCE/O -0.8476 3.391 6.526 2.300 - $atom:wat[1][1][0]/H1 $mol:wat[1][1][0] @atom:SPCE/H 0.4238 3.391 6.526 3.289 - $atom:wat[1][1][0]/H2 $mol:wat[1][1][0] @atom:SPCE/H 0.4238 2.582 6.058 1.971 - $atom:wat[1][1][1]/O $mol:wat[1][1][1] @atom:SPCE/O -0.8476 3.391 6.526 5.061 - $atom:wat[1][1][1]/H1 $mol:wat[1][1][1] @atom:SPCE/H 0.4238 4.200 6.058 5.391 - $atom:wat[1][1][1]/H2 $mol:wat[1][1][1] @atom:SPCE/H 0.4238 3.391 7.462 5.391 - } -} # IceRect8 - -# Credit goes to Martin Chaplin. -# These coordinates were orignally downloaded from Martin Chaplin's -# website: http://www.btinternet.com/~martin.chaplin/ice1h.html -# ... and then they were stretched independently in the xy and z -# directions in order to match the lattice parameters measured by -# Rottger et al., -# "Lattice constants and thermal expansion of H2O and D2O ice Ih" -# between 10 and 265K", Acta Crystallogr. B, 50 (1994) 644-648 -# I am using the lattice constants measured at temperature 265K -# (and pressure=100Torr). +# This ice (1h) unit cell is rectangular and contains 8 water molecules. +# (Coordinates and cell dimensions converted were from a PDB file.) +# The dimensions of the unit cell (in Angstroms) are: 4.521 7.832 7.362 + + +import "spce.lt" # <-- define the "SPCE" molecule + +SpceIceRect8 { + + # Create a 3-dimensional array of 8 water molecules + + wat = new SPCE[2][2][2] + + # Array indices will be correlated with position [xindex][yindex][zindex] + + # You can overwrite coordinates of atoms after they were created this way: + # (Order is not important) + # atom-ID molecule-ID atomType charge newX newY newZ + + write("Data Atoms") { + $atom:wat[1][0][0]/O $mol:wat[1][0][0] @atom:SPCE/O -0.8476 3.391 1.305 1.381 + $atom:wat[1][0][0]/H1 $mol:wat[1][0][0] @atom:SPCE/H 0.4238 3.391 0.370 1.710 + $atom:wat[1][0][0]/H2 $mol:wat[1][0][0] @atom:SPCE/H 0.4238 2.582 1.772 1.710 + $atom:wat[1][0][1]/O $mol:wat[1][0][1] @atom:SPCE/O -0.8476 3.391 1.305 5.981 + $atom:wat[1][0][1]/H1 $mol:wat[1][0][1] @atom:SPCE/H 0.4238 3.391 1.305 6.970 + $atom:wat[1][0][1]/H2 $mol:wat[1][0][1] @atom:SPCE/H 0.4238 4.200 1.772 5.652 + $atom:wat[0][0][0]/O $mol:wat[0][0][0] @atom:SPCE/O -0.8476 1.131 2.611 2.300 + $atom:wat[0][0][0]/H1 $mol:wat[0][0][0] @atom:SPCE/H 0.4238 1.131 2.611 3.289 + $atom:wat[0][0][0]/H2 $mol:wat[0][0][0] @atom:SPCE/H 0.4238 0.320 2.143 1.971 + $atom:wat[0][0][1]/O $mol:wat[0][0][1] @atom:SPCE/O -0.8476 1.131 2.611 5.061 + $atom:wat[0][0][1]/H1 $mol:wat[0][0][1] @atom:SPCE/H 0.4238 1.940 2.143 5.391 + $atom:wat[0][0][1]/H2 $mol:wat[0][0][1] @atom:SPCE/H 0.4238 1.131 3.546 5.391 + $atom:wat[0][1][0]/O $mol:wat[0][1][0] @atom:SPCE/O -0.8476 1.131 5.221 1.381 + $atom:wat[0][1][0]/H1 $mol:wat[0][1][0] @atom:SPCE/H 0.4238 1.131 4.286 1.710 + $atom:wat[0][1][0]/H2 $mol:wat[0][1][0] @atom:SPCE/H 0.4238 0.320 5.688 1.710 + $atom:wat[0][1][1]/O $mol:wat[0][1][1] @atom:SPCE/O -0.8476 1.131 5.221 5.981 + $atom:wat[0][1][1]/H1 $mol:wat[0][1][1] @atom:SPCE/H 0.4238 1.131 5.221 6.970 + $atom:wat[0][1][1]/H2 $mol:wat[0][1][1] @atom:SPCE/H 0.4238 1.940 5.688 5.652 + $atom:wat[1][1][0]/O $mol:wat[1][1][0] @atom:SPCE/O -0.8476 3.391 6.526 2.300 + $atom:wat[1][1][0]/H1 $mol:wat[1][1][0] @atom:SPCE/H 0.4238 3.391 6.526 3.289 + $atom:wat[1][1][0]/H2 $mol:wat[1][1][0] @atom:SPCE/H 0.4238 2.582 6.058 1.971 + $atom:wat[1][1][1]/O $mol:wat[1][1][1] @atom:SPCE/O -0.8476 3.391 6.526 5.061 + $atom:wat[1][1][1]/H1 $mol:wat[1][1][1] @atom:SPCE/H 0.4238 4.200 6.058 5.391 + $atom:wat[1][1][1]/H2 $mol:wat[1][1][1] @atom:SPCE/H 0.4238 3.391 7.462 5.391 + } +} # IceRect8 + +# Credit goes to Martin Chaplin. +# These coordinates were orignally downloaded from Martin Chaplin's +# website: http://www.btinternet.com/~martin.chaplin/ice1h.html +# ... and then they were stretched independently in the xy and z +# directions in order to match the lattice parameters measured by +# Rottger et al., +# "Lattice constants and thermal expansion of H2O and D2O ice Ih" +# between 10 and 265K", Acta Crystallogr. B, 50 (1994) 644-648 +# I am using the lattice constants measured at temperature 265K +# (and pressure=100Torr). diff --git a/tools/moltemplate/moltemplate/force_fields/tinker/tinkerparm2lt.py b/tools/moltemplate/moltemplate/force_fields/tinker/tinkerparm2lt.py new file mode 100755 index 0000000000000000000000000000000000000000..acb3db5e5c92fe7ed9004dcfda9f0168def1e15d --- /dev/null +++ b/tools/moltemplate/moltemplate/force_fields/tinker/tinkerparm2lt.py @@ -0,0 +1,680 @@ +#! /usr/bin/env python + +""" +This standalone python script can be used to convert the force-fields +distributed with TINKER (".prm" files) into moltemplate (".lt") format. + +This script has only been tested with the OPLSAA force field (oplsaa.prm). +The full list of force-field files distributed with TINKER is available at: +http://dasher.wustl.edu/tinker/distribution/params + +Other TINKER compatible force fields may not work. (One reason for this is that +some force fields require features, such as point-dipole polarizability, which, +to my knowledge, have not yet been implemented in LAMMPS as of 2017-2-01.) + +""" + + +__author__ = 'Jason Lambert and Andrew Jewett' +# (some additional corrections by Miguel Gonzalez, Yue Chun Chiu and others) +__version__ = '0.2.1' +__date__ = '2017-17-18' + + +import sys +import os +from sets import Set +from operator import itemgetter + + +g_program_name = __file__.split('/')[-1] + + +doc_msg = \ + "Typical Usage:\n\n" + \ + " " + g_program_name + " -name OPLS < oplsaa.prm > oplsaa.lt\n\n" + \ + " where \"oplsaa.prm\" is a force-field file downloaded from the TINKER website,\n" + \ + " \"oplsaa.lt\" is the corresponding file converted into moltemplate (.lt) format.\n" + \ + " and \"OPLS\" is the name that future moltemplate users will use to refer to\n" + \ + " this force-field (optional).\n" + \ + "Optional Arguments\n" + \ + " -name FORCEFIELDNAME # Give the force-field a name\n" + \ + " -file FILE_NAME # Read force field parameters from a file\n" + \ + " -url URL # Read force field parameters from a file on the web\n" + \ + " -atoms \"QUOTED LIST\" # Restrict output to a subset of atom types\n" + + +def SplitQuotedString(string, + quotes='\'\"', + delimiters=' \t\r\f\n', + escape='\\', + comment_char='#'): + tokens = [] + token = '' + reading_token = True + escaped_state = False + quote_state = None + for c in string: + + if (c in comment_char) and (not escaped_state) and (quote_state == None): + tokens.append(token) + return tokens + + elif (c in delimiters) and (not escaped_state) and (quote_state == None): + if reading_token: + tokens.append(token) + token = '' + reading_token = False + + elif c in escape: + if escaped_state: + token += c + reading_token = True + escaped_state = False + else: + escaped_state = True + # and leave c (the '\' character) out of token + elif (c in quotes) and (not escaped_state): + if (quote_state != None): + if (c == quote_state): + quote_state = None + else: + quote_state = c + token += c + reading_token = True + else: + if (c == 'n') and (escaped_state == True): + c = '\n' + elif (c == 't') and (escaped_state == True): + c = '\t' + elif (c == 'r') and (escaped_state == True): + c = '\r' + elif (c == 'f') and (escaped_state == True): + c = '\f' + token += c + reading_token = True + escaped_state = False + + if len(string) > 0: + tokens.append(token) + return tokens + + +def RemoveOuterQuotes(text, quotes='\"\''): + if ((len(text) >= 2) and (text[0] in quotes) and (text[-1] == text[0])): + return text[1:-1] + else: + return text + + + +def main(): + try: + sys.stderr.write(g_program_name + ", version " + + __version__ + ", " + __date__ + "\n") + if sys.version < '2.6': + raise Exception('Error: Using python ' + sys.version + '\n' + + ' Alas, your version of python is too old.\n' + ' You must upgrade to a newer version of python (2.6 or later).') + + if sys.version < '2.7': + from ordereddict import OrderedDict + else: + from collections import OrderedDict + + if sys.version > '3': + import io + else: + import cStringIO + + # defaults: + ffname = "TINKER_FORCE_FIELD" + type_subset = Set([]) + filename_in = "" + file_in = sys.stdin + pair_style_name = "lj/cut/coul/long" + pair_style_link = "http://lammps.sandia.gov/doc/pair_lj.html" + bond_style_name = "harmonic" + bond_style_link = "http://lammps.sandia.gov/doc/bond_harmonic.html" + angle_style_name = "harmonic" + angle_style_link = "http://lammps.sandia.gov/doc/angle_harmonic.html" + dihedral_style_name = "fourier" + dihedral_style_link = "http://lammps.sandia.gov/doc/dihedral_fourier.html" + improper_style_name = "harmonic" + improper_style_link = "http://lammps.sandia.gov/doc/improper_harmonic.html" + special_bonds_command = "special_bonds lj/coul 0.0 0.0 0.5" + mixing_style = "geometric" + contains_united_atoms = False + + argv = [arg for arg in sys.argv] + + i = 1 + + while i < len(argv): + + #sys.stderr.write('argv['+str(i)+'] = \"'+argv[i]+'\"\n') + + if argv[i] == '-atoms': + if i + 1 >= len(argv): + raise Exception('Error: the \"' + argv[i] + '\" argument should be followed by a quoted string\n' + ' which contains a space-delimited list of of a subset of atom types\n' + ' you want to use from the original force-field.\n' + ' Make sure you enclose the entire list in quotes.\n') + type_subset = Set(argv[i + 1].strip('\"\'').strip().split()) + del argv[i:i + 2] + + elif argv[i] == '-name': + if i + 1 >= len(argv): + raise Exception( + 'Error: ' + argv[i] + ' flag should be followed by the name of the force-field\n') + ffname = argv[i + 1] + del argv[i:i + 2] + + elif argv[i] in ('-file', '-in-file'): + if i + 1 >= len(argv): + raise Exception( + 'Error: ' + argv[i] + ' flag should be followed by the name of a force-field file\n') + filename_in = argv[i + 1] + try: + file_in = open(filename_in, 'r') + except IOError: + sys.stderr.write('Error: Unable to open file\n' + ' \"' + filename_in + '\"\n' + ' for reading.\n') + sys.exit(1) + del argv[i:i + 2] + + elif argv[i] == '-dihedral-style': + if i + 1 >= len(argv): + raise Exception( + 'Error: ' + argv[i] + ' flag should be followed by either \"opls\" or \"fourier\"\n') + dihedral_style_name = argv[i + 1] + if dihedral_style_name == "fourier": + dihedral_style_link = "http://lammps.sandia.gov/doc/dihedral_fourier.html" + if dihedral_style_name == "opls": + dihedral_style_link = "http://lammps.sandia.gov/doc/dihedral_opls.html" + else: + raise Exception( + 'Error: ' + argv[i] + ' ' + dihedral_style_name + ' not supported.\n') + del argv[i:i + 2] + + elif argv[i] in ('-url', '-in-url'): + import urllib2 + if i + 1 >= len(argv): + raise Exception( + 'Error: ' + argv[i] + ' flag should be followed by the name of a force-field file.\n') + url = argv[i + 1] + try: + request = urllib2.Request(url) + file_in = urllib2.urlopen(request) + except urllib2.URLError: + sys.stdout.write("Error: Unable to open link:\n" + url + "\n") + sys.exit(1) + del argv[i:i + 2] + + elif argv[i] in ('-help', '--help', '-?', '--?'): + sys.stderr.write(doc_msg) + sys.exit(0) + del argv[i:i + 1] + + else: + i += 1 + + if len(argv) != 1: + raise Exception('Error: Unrecongized arguments: ' + ' '.join(argv[1:]) + + '\n\n' + doc_msg) + + #sys.stderr.write("Reading parameter file...\n") + + lines = file_in.readlines() + + atom2charge = OrderedDict() # lookup charge from atom type + atom2mass = OrderedDict() # lookup mass from atom type + atom2vdw_e = OrderedDict() # lookup Lennard-Jones "epsilon" parameter + atom2vdw_s = OrderedDict() # lookup Lennard-Jones "sigma" parameter + atom2descr = OrderedDict() + atom2ffid = OrderedDict() # lookup force-field-ID from atom type + # force-field-ID is an id number/string used to assign + # bonds, angles, dihedrals, and impropers. + + bonds_by_type = OrderedDict() # lookup bond parameters by force-field-ID + angles_by_type = OrderedDict() # lookup angle parameters by force-field-ID + dihedrals_by_type = OrderedDict() # lookup dihedral parameters by force-field-ID + impropers_by_type = OrderedDict() # lookup improper parameters by force-field-ID + lines_ureybrad = [] + lines_biotype = [] + + for iline in range(0, len(lines)): + line = lines[iline] + tokens = SplitQuotedString(line.strip(), + comment_char='#') + + if (len(tokens) > 1) and (tokens[0] == 'atom'): + tokens = map(RemoveOuterQuotes, + SplitQuotedString(line.strip(), + comment_char='')) + if (len(tokens) > 6): + if ((len(type_subset) == 0) or (tokens[1] in type_subset)): + atom2ffid[tokens[1]] = tokens[2] + #atom2mass[tokens[1]] = float(tokens[6]) + # Some atoms in oplsaa.prm have zero mass. Unfortunately this + # causes LAMMPS to crash, even if these atoms are never used, + # so I give the mass a non-zero value instead. + atom2mass[tokens[1]] = max(float(tokens[6]), 1e-30) + atom2descr[tokens[1]] = tokens[4] + if tokens[4].find('(UA)') != -1: + contains_united_atoms = True + else: + raise Exception('Error: Invalid atom line:\n' + line) + elif (len(tokens) > 2) and (tokens[0] == 'charge'): + if ((len(type_subset) == 0) or (tokens[1] in type_subset)): + atom2charge[tokens[1]] = float(tokens[2]) + elif (len(tokens) > 3) and (tokens[0] == 'vdw'): + if ((len(type_subset) == 0) or (tokens[1] in type_subset)): + atom2vdw_e[tokens[1]] = float(tokens[3]) # "epsilon" + atom2vdw_s[tokens[1]] = float(tokens[2]) # "sigma" + elif (len(tokens) > 4) and (tokens[0] == 'bond'): + k = float(tokens[3]) + r0 = float(tokens[4]) + bonds_by_type[tokens[1], tokens[2]] = (k, r0) + elif (len(tokens) > 5) and (tokens[0] == 'angle'): + k = float(tokens[4]) + angle0 = float(tokens[5]) + angles_by_type[tokens[1], tokens[2], tokens[3]] = (k, angle0) + elif (len(tokens) > 11) and (tokens[0] == 'torsion'): + if dihedral_style_name == 'fourier': + # http://lammps.sandia.gov/doc/dihedral_fourier.html + m = (len(tokens) - 5) / 3 + K = [0.0 for i in range(0, m)] + n = [0.0 for i in range(0, m)] + d = [0.0 for i in range(0, m)] + for i in range(0, m): + K[i] = float(tokens[5 + 3 * i]) + d[i] = float(tokens[5 + 3 * i + 1]) + n[i] = float(tokens[5 + 3 * i + 2]) + dihedrals_by_type[tokens[1], tokens[2], + tokens[3], tokens[4]] = (K, n, d) + elif dihedral_style_name == 'opls': + # http://lammps.sandia.gov/doc/dihedral_opls.html + K1 = float(tokens[5]) + K2 = float(tokens[8]) + K3 = float(tokens[11]) + K4 = 0.0 + if len(tokens) > 14: + K4 = float(tokens[14]) + if ((float(tokens[6]) != 0.0) or (float(tokens[7]) != 1.0) or + (float(tokens[9]) not in (180.0, -180.0)) or (float(tokens[10]) != 2.0) or + (float(tokens[12]) != 0.0) or (float(tokens[13]) != 3.0) or + ((K4 != 0.0) and + ((len(tokens) <= 16) or + (float(tokens[15]) not in (180.0, -180.0)) or + (float(tokens[16]) != 4.0)))): + raise Exception("Error: This parameter file is incompatible with -dihedral-style \"" + dihedral_style_name + "\"\n" + + " (See line number " + str(iline + 1) + " of parameter file.)\n") + dihedrals_by_type[tokens[1], tokens[2], + tokens[3], tokens[4]] = (K1, K2, K3, K4) + else: + assert(False) + + elif (len(tokens) > 7) and (tokens[0] == 'imptors'): + k = float(tokens[5]) + angle0 = float(tokens[6]) + multiplicity = float(tokens[7]) + impropers_by_type[tokens[1], tokens[2], tokens[ + 3], tokens[4]] = (k / multiplicity, angle0) + elif ((len(tokens) > 0) and (tokens[0] == 'biotype')): + # I'm not sure what to do with these, so I'll store them for now and + # append them as comments to the .lt file generated by the program. + lines_biotype.append(line.rstrip()) + elif ((len(tokens) > 0) and (tokens[0] == 'ureybrad')): + # I'm not sure what to do with these, so I'll store them for now and + # append them as comments to the .lt file generated by the program. + lines_ureybrad.append(line.rstrip()) + elif ((len(tokens) > 1) and (tokens[0] == 'radiusrule')): + if tokens[1] == 'GEOMETRIC': + mixing_style = 'geometric' + elif tokens[1] == 'ARITHMETIC': + mixing_style = 'arithmetic' + else: + raise Exception("Error: Unrecognized mixing style: " + tokens[1] + ", found here:\n" + + line) + elif ((len(tokens) > 1) and (tokens[0] == 'epsilonrule')): + if tokens[1] != 'GEOMETRIC': + raise Exception("Error: As of 2016-9-21, LAMMPS only supports GEOMETRIC mixing of energies\n" + + " This force field simply cannot be used with LAMMPS in a general way.\n" + + " One way around this is to manually change the \"epsilonrule\" back to\n" + + " GEOMETRIC, and limit the number of atom types considered by this\n" + + " program by using the -atoms \"LIST OF ATOMS\" argument,\n" + + " to only include the atoms you care about, and then explicitly\n" + + " define pair_coeffs for all possible pairs of these atom types.\n" + + " If this is a popular force-field, then lobby the LAMMPS developers\n" + + " to consider alternate mixing rules.\n\n" + + "The offending line from the file is line number " + str(iline) + ":\n" + + line + "\n") + + + + #sys.stderr.write(" done.\n") + #sys.stderr.write("Converting to moltemplate format...\n") + + + system_is_charged = False + for atom_type in atom2charge: + if atom2charge[atom_type] != 0.0: + system_is_charged = True + + if system_is_charged: + pair_style_name = "lj/cut/coul/long" + pair_style_params = "10.0 10.0" + kspace_style = " kspace_style pppm 0.0001\n" + pair_style_link = "http://lammps.sandia.gov/doc/pair_lj.html" + else: + pair_style_name = "lj/cut" + pair_style_params = "10.0" + kspace_style = "" + pair_style_link = "http://lammps.sandia.gov/doc/pair_lj.html" + + pair_style_command = " pair_style hybrid " + \ + pair_style_name + " " + pair_style_params + "\n" + + + sys.stdout.write("# This file was generated automatically using:\n") + sys.stdout.write("# " + g_program_name + " " + " ".join(sys.argv[1:]) + "\n") + if contains_united_atoms: + sys.stdout.write("#\n" + "# WARNING: Many of these atoms are probably UNITED-ATOM (UA) atoms.\n" + "# The hydrogen atoms have been absorbed into the heavy atoms, and the\n" + "# force-field modified accordingly. Do not mix with ordinary atoms.\n") + sys.stdout.write("#\n" + "# WARNING: The following 1-2, 1-3, and 1-4 weighting parameters were ASSUMED:\n") + sys.stdout.write("# " + special_bonds_command + "\n") + sys.stdout.write( + "# (See http://lammps.sandia.gov/doc/special_bonds.html for details)\n") + if len(lines_ureybrad) > 0: + sys.stdout.write("#\n" + "# WARNING: All Urey-Bradley interactions have been IGNORED including:\n") + sys.stdout.write("# ffid1 ffid2 ffid3 K r0\n# ") + sys.stdout.write("\n# ".join(lines_ureybrad)) + sys.stdout.write("\n\n") + sys.stdout.write("\n\n") + sys.stdout.write(ffname + " {\n\n") + + sys.stdout.write(" # Below we will use lammps \"set\" command to assign atom charges\n" + " # by atom type. http://lammps.sandia.gov/doc/set.html\n\n") + + sys.stdout.write(" write_once(\"In Charges\") {\n") + for atype in atom2mass: + assert(atype in atom2descr) + sys.stdout.write(" set type @atom:" + atype + " charge " + str(atom2charge[atype]) + + " # \"" + atom2descr[atype] + "\"\n") + sys.stdout.write(" } #(end of atom partial charges)\n\n\n") + + + sys.stdout.write(" write_once(\"Data Masses\") {\n") + for atype in atom2mass: + sys.stdout.write(" @atom:" + atype + " " + str(atom2mass[atype]) + "\n") + sys.stdout.write(" } #(end of atom masses)\n\n\n") + + + sys.stdout.write(" # ---------- EQUIVALENCE CATEGORIES for bonded interaction lookup ----------\n" + " # Each type of atom has a separate ID used for looking up bond parameters\n" + " # and a separate ID for looking up 3-body angle interaction parameters\n" + " # and a separate ID for looking up 4-body dihedral interaction parameters\n" + " # and a separate ID for looking up 4-body improper interaction parameters\n" + #" # (This is because there are several different types of sp3 carbon atoms\n" + #" # which have the same torsional properties when within an alkane molecule,\n" + #" # for example. If they share the same dihedral-ID, then this frees us\n" + #" # from being forced define separate dihedral interaction parameters\n" + #" # for all of them.)\n" + " # The complete @atom type name includes ALL of these ID numbers. There's\n" + " # no need to force the end-user to type the complete name of each atom.\n" + " # The \"replace\" command used below informs moltemplate that the short\n" + " # @atom names we have been using abovee are equivalent to the complete\n" + " # @atom names used below:\n\n") + + for atype in atom2ffid: + ffid = atype + "_ffid" + atom2ffid[atype] + sys.stdout.write(" replace{ @atom:" + atype + + " @atom:" + atype + "_b" + atom2ffid[atype] + "_a" + atom2ffid[atype] + "_d" + atom2ffid[atype] + "_i" + atom2ffid[atype] + " }\n") + sys.stdout.write("\n\n\n\n") + + + sys.stdout.write(" # --------------- Non-Bonded interactions: ---------------------\n" + " # " + pair_style_link + "\n" + " # Syntax:\n" + " # pair_coeff AtomType1 AtomType2 pair_style_name parameters...\n\n") + + sys.stdout.write(" write_once(\"In Settings\") {\n") + for atype in atom2vdw_e: + assert(atype in atom2vdw_s) + if not (atype in atom2ffid): + continue + + sys.stdout.write(" pair_coeff " + + "@atom:" + atype + "_b" + atom2ffid[atype] + "_a" + atom2ffid[ + atype] + "_d" + atom2ffid[atype] + "_i" + atom2ffid[atype] + " " + "@atom:" + atype + "_b" + atom2ffid[atype] + "_a" + atom2ffid[atype] + "_d" + atom2ffid[atype] + "_i" + atom2ffid[atype] + " " + + pair_style_name + + " " + str(atom2vdw_e[atype]) + + " " + str(atom2vdw_s[atype]) + "\n") + sys.stdout.write(" } #(end of pair_coeffs)\n\n\n\n") + + + sys.stdout.write(" # ------- Bonded Interactions: -------\n" + " # " + bond_style_link + "\n" + " # Syntax: \n" + " # bond_coeff BondTypeName BondStyle parameters...\n\n") + + sys.stdout.write(" write_once(\"In Settings\") {\n") + for btype in bonds_by_type: + ffid1 = btype[0] if btype[0] != "0" else "X" + ffid2 = btype[1] if btype[1] != "0" else "X" + (k, r0) = bonds_by_type[btype] + sys.stdout.write(" bond_coeff @bond:" + ffid1 + "-" + ffid2 + " " + + bond_style_name + " " + str(k) + " " + str(r0) + "\n") + sys.stdout.write(" } #(end of bond_coeffs)\n\n") + + sys.stdout.write(" # Rules for assigning bond types by atom type:\n" + " # BondTypeName AtomType1 AtomType2\n" + " # (* = wildcard)\n\n") + + sys.stdout.write(" write_once(\"Data Bonds By Type\") {\n") + for btype in bonds_by_type: + ffid1 = btype[0] if btype[0] != "0" else "X" + ffid2 = btype[1] if btype[1] != "0" else "X" + sys.stdout.write(" @bond:" + ffid1 + "-" + ffid2) + ffid1 = "@atom:*_b" + btype[0] + \ + "_a*_d*_i*" if btype[0] != "0" else "@atom:*" + ffid2 = "@atom:*_b" + btype[1] + \ + "_a*_d*_i*" if btype[1] != "0" else "@atom:*" + sys.stdout.write(" " + ffid1 + " " + ffid2 + "\n") + sys.stdout.write(" } #(end of bonds by type)\n\n\n\n\n") + + + sys.stdout.write(" # ------- Angle Interactions: -------\n" + " # " + angle_style_link + "\n" + " # Syntax: \n" + " # angle_coeff AngleTypeName AngleStyle parameters...\n\n") + + sys.stdout.write(" write_once(\"In Settings\") {\n") + for atype in angles_by_type: + ffid1 = atype[0] if atype[0] != "0" else "X" + ffid2 = atype[1] if atype[1] != "0" else "X" + ffid3 = atype[2] if atype[2] != "0" else "X" + (k, angle0) = angles_by_type[atype] + sys.stdout.write(" angle_coeff @angle:" + ffid1 + "-" + ffid2 + "-" + ffid3 + " " + + angle_style_name + " " + str(k) + " " + str(angle0) + "\n") + sys.stdout.write(" } #(end of angle_coeffs)\n\n") + + + sys.stdout.write(" # Rules for creating angle interactions according to atom type:\n" + " # AngleTypeName AtomType1 AtomType2 AtomType3\n" + " # (* = wildcard)\n\n") + + sys.stdout.write(" write_once(\"Data Angles By Type\") {\n") + for atype in angles_by_type: + ffid1 = atype[0] if atype[0] != "0" else "X" + ffid2 = atype[1] if atype[1] != "0" else "X" + ffid3 = atype[2] if atype[2] != "0" else "X" + sys.stdout.write(" @angle:" + ffid1 + "-" + ffid2 + "-" + ffid3) + ffid1 = "@atom:*_b*_a" + atype[0] + \ + "_d*_i*" if atype[0] != "0" else "@atom:*" + ffid2 = "@atom:*_b*_a" + atype[1] + \ + "_d*_i*" if atype[1] != "0" else "@atom:*" + ffid3 = "@atom:*_b*_a" + atype[2] + \ + "_d*_i*" if atype[2] != "0" else "@atom:*" + sys.stdout.write(" " + ffid1 + " " + ffid2 + " " + ffid3 + "\n") + sys.stdout.write(" } #(end of angles by type)\n\n\n\n\n") + + + sys.stdout.write(" # ----------- Dihedral Interactions: ------------\n" + " # " + dihedral_style_link + "\n" + " # Syntax:\n" + " # dihedral_coeff DihedralTypeName DihedralStyle parameters...\n\n") + + sys.stdout.write(" write_once(\"In Settings\") {\n") + for dtype in dihedrals_by_type: + ffid1 = dtype[0] if dtype[0] != "0" else "X" + ffid2 = dtype[1] if dtype[1] != "0" else "X" + ffid3 = dtype[2] if dtype[2] != "0" else "X" + ffid4 = dtype[3] if dtype[3] != "0" else "X" + sys.stdout.write(" dihedral_coeff @dihedral:" + + ffid1 + "-" + ffid2 + "-" + ffid3 + "-" + ffid4 + " " + + dihedral_style_name + " ") + if dihedral_style_name == 'fourier': + # http://lammps.sandia.gov/doc/dihedral_fourier.html + (K, n, d) = dihedrals_by_type[dtype] + m = len(K) + assert((m == len(n)) and (m == len(d))) + sys.stdout.write(str(m)) + for i in range(0, m): + sys.stdout.write(" " + str(K[i]) + + " " + str(n[i]) + " " + str(d[i])) + sys.stdout.write("\n") + elif dihedral_style_name == 'opls': + # http://lammps.sandia.gov/doc/dihedral_opls.html + (K1, K2, K3, K4) = dihedrals_by_type[dtype] + sys.stdout.write(str(K1) + " " + str(K2) + " " + + str(K3) + " " + str(K4) + "\n") + else: + assert(False) + sys.stdout.write(" } #(end of dihedral_coeffs)\n\n") + + + sys.stdout.write(" # Rules for creating dihedral interactions according to atom type:\n" + " # DihedralTypeName AtomType1 AtomType2 AtomType3 AtomType4\n" + " # (* = wildcard)\n\n") + + sys.stdout.write(" write_once(\"Data Dihedrals By Type\") {\n") + for dtype in dihedrals_by_type: + ffid1 = dtype[0] if dtype[0] != "0" else "X" + ffid2 = dtype[1] if dtype[1] != "0" else "X" + ffid3 = dtype[2] if dtype[2] != "0" else "X" + ffid4 = dtype[3] if dtype[3] != "0" else "X" + sys.stdout.write(" @dihedral:" + ffid1 + "-" + + ffid2 + "-" + ffid3 + "-" + ffid4) + ffid1 = "@atom:*_b*_a*_d" + dtype[0] + \ + "_i*" if dtype[0] != "0" else "@atom:*" + ffid2 = "@atom:*_b*_a*_d" + dtype[1] + \ + "_i*" if dtype[1] != "0" else "@atom:*" + ffid3 = "@atom:*_b*_a*_d" + dtype[2] + \ + "_i*" if dtype[2] != "0" else "@atom:*" + ffid4 = "@atom:*_b*_a*_d" + dtype[3] + \ + "_i*" if dtype[3] != "0" else "@atom:*" + sys.stdout.write(" " + ffid1 + " " + ffid2 + + " " + ffid3 + " " + ffid4 + "\n") + sys.stdout.write(" } #(end of dihedrals by type)\n\n\n\n\n") + + + sys.stdout.write(" # ---------- Improper Interactions: ----------\n" + " # " + improper_style_link + "\n" + " # Syntax:\n" + " # improper_coeff ImproperTypeName ImproperStyle parameters\n\n") + + sys.stdout.write(" write_once(\"In Settings\") {\n") + for itype in impropers_by_type: + ffid1 = itype[0] if itype[0] != "0" else "X" + ffid2 = itype[1] if itype[1] != "0" else "X" + ffid3 = itype[2] if itype[2] != "0" else "X" + ffid4 = itype[3] if itype[3] != "0" else "X" + (k, angle0) = impropers_by_type[itype] + sys.stdout.write(" improper_coeff @improper:" + + ffid1 + "-" + ffid2 + "-" + ffid3 + "-" + ffid4 + " " + + improper_style_name + " " + str(k) + " " + str(angle0) + "\n") + sys.stdout.write(" } #(end of improper_coeffs)\n\n") + + + sys.stdout.write(" # Rules for creating dihedral interactions according to atom type:\n" + " # ImproperTypeName AtomType1 AtomType2 AtomType3 AtomType4\n" + " # (* = wildcard)\n") + + sys.stdout.write(" write_once(\"Data Impropers By Type (opls_imp.py)\") {\n") + for itype in impropers_by_type: + ffid1 = itype[0] if itype[0] != "0" else "X" + ffid2 = itype[1] if itype[1] != "0" else "X" + ffid3 = itype[2] if itype[2] != "0" else "X" + ffid4 = itype[3] if itype[3] != "0" else "X" + sys.stdout.write(" @improper:" + ffid1 + "-" + + ffid2 + "-" + ffid3 + "-" + ffid4) + ffid1 = "@atom:*_b*_a*_d*_i" + itype[0] if itype[0] != "0" else "@atom:*" + ffid2 = "@atom:*_b*_a*_d*_i" + itype[1] if itype[1] != "0" else "@atom:*" + ffid3 = "@atom:*_b*_a*_d*_i" + itype[2] if itype[2] != "0" else "@atom:*" + ffid4 = "@atom:*_b*_a*_d*_i" + itype[3] if itype[3] != "0" else "@atom:*" + sys.stdout.write(" " + ffid1 + " " + ffid2 + + " " + ffid3 + " " + ffid4 + "\n") + sys.stdout.write(" } #(end of impropers by type)\n\n\n\n\n") + + sys.stdout.write(" # -------- (descriptive comment) --------\n") + sys.stdout.write(" # ---- biologically relevant atom types: ----\n # ") + sys.stdout.write("\n # ".join(lines_biotype)) + sys.stdout.write("\n # ---------- (end of comment) ----------\n") + sys.stdout.write("\n\n\n\n") + + + sys.stdout.write(" # LAMMPS supports many different kinds of bonded and non-bonded\n" + " # interactions which can be selected at run time. Eventually\n" + " # we must inform LAMMPS which of them we will need. We specify\n" + " # this in the \"In Init\" section: \n\n") + + sys.stdout.write(" write_once(\"In Init\") {\n") + sys.stdout.write(" units real\n") + sys.stdout.write(" atom_style full\n") + sys.stdout.write(" bond_style hybrid " + bond_style_name + "\n") + sys.stdout.write(" angle_style hybrid " + angle_style_name + "\n") + sys.stdout.write(" dihedral_style hybrid " + dihedral_style_name + "\n") + sys.stdout.write(" improper_style hybrid " + improper_style_name + "\n") + sys.stdout.write(pair_style_command) + sys.stdout.write(" pair_modify mix " + mixing_style + "\n") + sys.stdout.write(" " + special_bonds_command + "\n") + sys.stdout.write(kspace_style) + sys.stdout.write(" } #end of init parameters\n\n") + + sys.stdout.write(" # Note: We use \"hybrid\" styles in case the user later wishes to\n" + " # combine the molecules built using this force-field with other\n" + " # molecules that use other styles. (This is not necessarily\n" + " # a good idea, but LAMMPS and moltemplate both allow it.)\n" + " # For more information:\n" + " # http://lammps.sandia.gov/doc/pair_hybrid.html\n" + " # http://lammps.sandia.gov/doc/bond_hybrid.html\n" + " # http://lammps.sandia.gov/doc/angle_hybrid.html\n" + " # http://lammps.sandia.gov/doc/dihedral_hybrid.html\n" + " # http://lammps.sandia.gov/doc/improper_hybrid.html\n\n\n") + + sys.stdout.write("} # " + ffname + "\n\n") + + + #sys.stderr.write(" done.\n") + + if filename_in != "": + file_in.close() + + + + + except Exception as err: + sys.stderr.write('\n\n' + str(err) + '\n') + sys.exit(1) + + +if __name__ == '__main__': + main() diff --git a/tools/moltemplate/src/moltemplate_force_fields/tip3p_1983.lt b/tools/moltemplate/moltemplate/force_fields/tip3p_1983.lt similarity index 100% rename from tools/moltemplate/src/moltemplate_force_fields/tip3p_1983.lt rename to tools/moltemplate/moltemplate/force_fields/tip3p_1983.lt diff --git a/tools/moltemplate/src/moltemplate_force_fields/tip3p_1983_charmm.lt b/tools/moltemplate/moltemplate/force_fields/tip3p_1983_charmm.lt similarity index 100% rename from tools/moltemplate/src/moltemplate_force_fields/tip3p_1983_charmm.lt rename to tools/moltemplate/moltemplate/force_fields/tip3p_1983_charmm.lt diff --git a/tools/moltemplate/src/moltemplate_force_fields/tip3p_2004.lt b/tools/moltemplate/moltemplate/force_fields/tip3p_2004.lt similarity index 100% rename from tools/moltemplate/src/moltemplate_force_fields/tip3p_2004.lt rename to tools/moltemplate/moltemplate/force_fields/tip3p_2004.lt diff --git a/tools/moltemplate/src/moltemplate_force_fields/trappe1998.lt b/tools/moltemplate/moltemplate/force_fields/trappe1998.lt similarity index 100% rename from tools/moltemplate/src/moltemplate_force_fields/trappe1998.lt rename to tools/moltemplate/moltemplate/force_fields/trappe1998.lt diff --git a/tools/moltemplate/src/moltemplate_force_fields/watmw.lt b/tools/moltemplate/moltemplate/force_fields/watmw.lt similarity index 100% rename from tools/moltemplate/src/moltemplate_force_fields/watmw.lt rename to tools/moltemplate/moltemplate/force_fields/watmw.lt diff --git a/tools/moltemplate/moltemplate/genpoly_lt.py b/tools/moltemplate/moltemplate/genpoly_lt.py new file mode 100755 index 0000000000000000000000000000000000000000..2c4014e5dbd851d08000de79323c06c81de17aa5 --- /dev/null +++ b/tools/moltemplate/moltemplate/genpoly_lt.py @@ -0,0 +1,746 @@ +#!/usr/bin/env python + +""" + Generate a moltemplate (.lt) file containing a definition of a polymer + molecule whose monomers are located at the positions specified in + "coords.raw" (a 3-column text file). Monomers will be rotated so + that they point in the direction connecting neighbors (r[i+1]-r[i]) + The user can specify the subunits to use when building the polymer, + the atoms to to build bonds (and angles, and dihedrals) between monomers + and the helical pitch of the polymer. The output of this program is + a text file in moltemplate (.lt) format containing the sequence of + moltemplate commands needed to build this polymer molecule(s). (One must + then run moltemplate on this file to build the LAMMPS simulation files.) + Multiple Polymers: + To make it easier to create polymer melts, multiple polymers can be created + from coordinates in the same file by using the "-cuts" command line argument. + Encapsulation: + If the "-polymer-name PolyName" command line option is given, then these + moltemplate commands will be nested within the definition of a moltemplate + object (named "PolyName", in this example. Later in your moltemplate files, + you must remember to instantiate a copy of this moltemplate object using + a command like "polymer = new PolyName" Atoms within this object will + share the same molecule-ID number.) If multiple polymers are requested, then + each of them will have their own polymer object. + +""" + + +g_usage_msg = """ +Usage: + + genpoly_lt.py \\ + [-bond btype a1 a2] \\ + [-helix deltaphi] \\ + [-axis x,y,z] \\ + [-circular yes/no/connected] \\ + [-dir-indices ia ib] \\ + [-angle atype a1 a2 a3 i1 i2 i3] \\ + [-dihedral dtype a1 a2 a3 a4 i1 i2 i3 i4] \\ + [-improper itype a1 a2 a3 a4 i1 i2 i3 i4] \\ + [-monomer-name mname] \\ + [-sequence sequence.txt] \\ + [-polymer-name pname] \\ + [-inherits ForceFieldObject] \\ + [-header "import \"monomer.lt\""] \\ + [-cuts cuts.txt] \\ + [-box paddingX,paddingY,paddingZ] \\ + < coords.raw > polymer.lt + +""" + + +import sys +import random +from math import * + + +class InputError(Exception): + """ A generic exception object containing a string for error reporting. + (Raising this exception implies that the caller has provided + a faulty input file or argument.) + + """ + + def __init__(self, err_msg): + self.err_msg = err_msg + + def __str__(self): + return self.err_msg + + def __repr__(self): + return str(self) + + +class GPSettings(object): + + def __init__(self): + self.direction_orig = [1.0, 0.0, 0.0] + self.is_circular = False + self.connect_ends = False + self.delta_phi = 0.0 + self.header = 'import \"forcefield.lt\"' + self.name_monomer = 'Monomer' + self.name_polymer = '' + self.inherits = '' + self.name_sequence = [] + self.dir_index_offsets = (-1,1) + self.cuts = [] + self.box_padding = None + self.bonds_name = [] + self.bonds_type = [] + self.bonds_atoms = [] + self.bonds_index_offsets = [] + self.angles_name = [] + self.angles_type = [] + self.angles_atoms = [] + self.angles_index_offsets = [] + self.dihedrals_name = [] + self.dihedrals_type = [] + self.dihedrals_atoms = [] + self.dihedrals_index_offsets = [] + self.impropers_name = [] + self.impropers_type = [] + self.impropers_atoms = [] + self.impropers_index_offsets = [] + + def ParseArgs(self, argv): + i = 1 + while i < len(argv): + #sys.stderr.write('argv['+str(i)+'] = \"'+argv[i]+'\"\n') + if argv[i].lower() == '-bond': + if i + 3 >= len(argv): + raise InputError( + 'Error: ' + argv[i] + ' flag should be followed by 4 strings.\n') + # self.bonds_name.append(argv[i+1]) + self.bonds_type.append(argv[i + 1]) + self.bonds_atoms.append((argv[i + 2], + argv[i + 3])) + self.bonds_index_offsets.append((0, 1)) + del(argv[i:i + 4]) + elif argv[i].lower() == '-angle': + if i + 7 >= len(argv): + raise InputError( + 'Error: ' + argv[i] + ' flag should be followed by 5 strings and 3 integers.\n') + # self.angles_name.append(argv[i+1]) + self.angles_type.append(argv[i + 1]) + self.angles_atoms.append((argv[i + 2], + argv[i + 3], + argv[i + 4])) + self.angles_index_offsets.append((int(argv[i + 5]), + int(argv[i + 6]), + int(argv[i + 7]))) + if ((self.angles_index_offsets[-1][0] < 0) or + (self.angles_index_offsets[-1][1] < 0) or + (self.angles_index_offsets[-1][2] < 0)): + raise InputError( + 'Error: ' + argv[i] + ' indices (i1 i2 i3) must be >= 0\n') + del(argv[i:i + 8]) + elif argv[i].lower() == '-dihedral': + if i + 9 >= len(argv): + raise InputError( + 'Error: ' + argv[i] + ' flag should be followed by 6 strings and 4 integers.\n') + # self.dihedrals_name.append(argv[i+1]) + self.dihedrals_type.append(argv[i + 1]) + self.dihedrals_atoms.append((argv[i + 2], + argv[i + 3], + argv[i + 4], + argv[i + 5])) + self.dihedrals_index_offsets.append((int(argv[i + 6]), + int(argv[i + 7]), + int(argv[i + 8]), + int(argv[i + 9]))) + if ((self.dihedrals_index_offsets[-1][0] < 0) or + (self.dihedrals_index_offsets[-1][1] < 0) or + (self.dihedrals_index_offsets[-1][2] < 0) or + (self.dihedrals_index_offsets[-1][3] < 0)): + raise InputError( + 'Error: ' + argv[i] + ' indices (i1 i2 i3 i4) must be >= 0\n') + del(argv[i:i + 10]) + elif argv[i].lower() == '-improper': + if i + 9 >= len(argv): + raise InputError( + 'Error: ' + argv[i] + ' flag should be followed by 6 strings and 4 integers.\n') + # self.impropers_name.append(argv[i+1]) + self.impropers_type.append(argv[i + 1]) + self.impropers_atoms.append((argv[i + 2], + argv[i + 3], + argv[i + 4], + argv[i + 5])) + self.impropers_index_offsets.append((int(argv[i + 6]), + int(argv[i + 7]), + int(argv[i + 8]), + int(argv[i + 9]))) + if ((self.impropers_index_offsets[-1][0] < 0) or + (self.impropers_index_offsets[-1][1] < 0) or + (self.impropers_index_offsets[-1][2] < 0) or + (self.impropers_index_offsets[-1][3] < 0)): + raise InputError( + 'Error: ' + argv[i] + ' indices (i1 i2 i3 i4) must be >= 0\n') + del(argv[i:i + 10]) + elif (argv[i].lower() == '-monomer-name'): + if i + 1 >= len(argv): + raise InputError( + 'Error: ' + argv[i] + ' flag should be followed by a string\n') + self.name_monomer = argv[i + 1] + del(argv[i:i + 2]) + elif (argv[i].lower() == '-sequence'): + if i + 1 >= len(argv): + raise InputError( + 'Error: ' + argv[i] + ' flag should be followed by a file name\n') + try: + f = open(argv[i + 1], "r") + except IOError: + raise InputError( + 'Error: file ' + argv[i + 1] + ' could not be opened for reading\n') + self.name_sequence = [] + for line_orig in f: + line = line_orig.strip() + ic = line.find('#') + if ic != -1: + line = line[:ic] + else: + line = line.strip() + if len(line) > 0: + self.name_sequence.append(line) + del(argv[i:i + 2]) + elif (argv[i].lower() == '-cuts'): + if i + 1 >= len(argv): + raise InputError( + 'Error: ' + argv[i] + ' flag should be followed by a file name\n') + try: + f = open(argv[i + 1], "r") + except IOError: + raise InputError( + 'Error: file ' + argv[i + 1] + ' could not be opened for reading\n') + self.name_sequence = [] + for line_orig in f: + line = line_orig.strip() + ic = line.find('#') + if ic != -1: + line = line[:ic] + else: + line = line.strip() + if len(line) > 0: + try: + self.cuts.append(int(line)) + except ValueError: + raise InputError( + 'Error: file ' + argv[i + 1] + ' should contain only nonnegative integers.\n') + del(argv[i:i + 2]) + elif (argv[i].lower() == '-polymer-name'): + if i + 1 >= len(argv): + raise InputError( + 'Error: ' + argv[i] + ' flag should be followed by a string\n') + self.name_polymer = argv[i + 1] + del(argv[i:i + 2]) + elif (argv[i].lower() == '-inherits'): + if i + 1 >= len(argv): + raise InputError( + 'Error: ' + argv[i] + ' flag should be followed by a string\n') + self.inherits = argv[i + 1] + if self.inherits.find('inherits ') == 0: + self.inherits = ' ' + self.inherits + else: + self.inherits = ' inherits ' + self.inherits + if self.name_polymer == '': + self.name_polymer = 'Polymer' # supply a default name + del(argv[i:i + 2]) + elif (argv[i].lower() == '-header'): + if i + 1 >= len(argv): + raise InputError( + 'Error: ' + argv[i] + ' flag should be followed by a string (usually in quotes)\n') + self.header = argv[i + 1] + del(argv[i:i + 2]) + elif argv[i].lower() == '-axis': + if i + 1 >= len(argv): + raise InputError('Error: ' + argv[i] + ' flag should be followed ' + + 'by 3 numbers separated by commas (no spaces)\n') + self.direction_orig = map(float, argv[i + 1].split(',')) + del(argv[i:i + 2]) + elif argv[i].lower() == '-circular': + if i + 1 >= len(argv): + raise InputError('Error: ' + argv[i] + ' flag should be followed by an argument\n' + + ' ("yes", "no", or "connected")\n') + if argv[i + 1].lower() == 'yes': + self.connect_ends = True + self.is_circular = True + elif argv[i + 1].lower() == 'connected': + self.connect_ends = True + self.is_circular = False + elif argv[i + 1].lower() == 'no': + self.connect_ends = False + self.is_circular = False + else: + raise InputError('Error: ' + argv[i] + ' flag should be followed by an argument\n' + + ' ("yes", "no", or "connected")\n') + del(argv[i:i + 2]) + elif argv[i].lower() == '-helix': + if i + 1 >= len(argv): + raise InputError( + 'Error: ' + argv[i] + ' flag should be followed by a number (angle in degrees)\n') + self.delta_phi = float(argv[i + 1]) + del(argv[i:i + 2]) + elif (argv[i].lower() == '-dir-indices'): + if i + 2 >= len(argv): + raise InputError( + 'Error: ' + argv[i] + ' flag should be followed by two integers\n') + self.dir_index_offsets = (int(argv[i + 1]), int(argv[i + 2])) + if self.dir_index_offsets[0] == self.dir_index_offsets[1]: + raise InputError( + 'Error: The two numbers following ' + argv[i] + ' must not be equal.\n') + del(argv[i:i + 3]) + elif (argv[i].lower() == '-box'): + if i + 1 >= len(argv): + raise InputError('Error: ' + argv[i] + ' flag should be followed ' + + 'by 3 numbers separated by commas (no spaces)\n') + self.box_padding = map(float, argv[i + 1].split(',')) + if len(self.box_padding) == 1: + self.box_padding = self.box_padding * 3 + del(argv[i:i + 2]) + + # elif ((argv[i][0] == '-') and (__name__ == '__main__')): + # + # raise InputError('Error('+g_program_name+'):\n'+\ + # 'Unrecogized command line argument \"'+argv[i]+\ + # '\"\n\n'+\ + # __doc__) + else: + i += 1 + + for b in range(0, len(self.bonds_type)): + if len(self.bonds_type) > 1: + self.bonds_name.append('genpoly' + str(b + 1) + '_') + else: + self.bonds_name.append('genpoly') + for b in range(0, len(self.angles_type)): + if len(self.angles_type) > 1: + self.angles_name.append('genpoly' + str(b + 1) + '_') + else: + self.angles_name.append('genpoly') + for b in range(0, len(self.dihedrals_type)): + if len(self.dihedrals_type) > 1: + self.dihedrals_name.append('genpoly' + str(b + 1) + '_') + else: + self.dihedrals_name.append('genpoly') + for b in range(0, len(self.impropers_type)): + if len(self.impropers_type) > 1: + self.impropers_name.append('genpoly' + str(b + 1) + '_') + else: + self.impropers_name.append('genpoly') + + +class WrapPeriodic(object): + """ Wrap() calculates the remainder of i % N. + It turns out to be convenient to do this multiple times and later + query whether i/N != 0 in any of them once (by checking bounds_err). + + """ + bounds_err = False + + @classmethod + def Wrap(obj, i, N): + if i / N != 0: + obj.bounds_err = True + return i % N + + def WrapF(obj, x, L): + i = floor(x / L) + if i != 0: + obj.bounds_err = True + return x - i * L + + +class GenPoly(object): + """ + Read coordinates from a file, and generate a list of \"new\" commands + in moltemplate format with the position of each monomer located + at these positions, oriented appropriately, with bonds (and angles, + dihedrals, etc...) connecting successive monomers together. + By default (if settings.cuts==False) only a single polymer is created. + However this class can create multiple polymers of different lengths. + The list of coordinates for each polymer are saved separately within + the "self.coords_multi" member. + + """ + + def __init__(self): + self.settings = GPSettings() + self.coords_multi = [] # a list-of-list-of-lists of numbers Nxnx3 + self.direction_vects = [] + self.box_bounds_min = [0.0, 0.0, 0.0] + self.box_bounds_max = [0.0, 0.0, 0.0] + self.N = 0 + + def ParseArgs(self, argv): + # The command above will remove arguments from argv which are + # understood by GPSettings.ParseArgs(argv). + # The remaining arguments will be handled below. + self.settings.ParseArgs(argv) + + def ReadCoords(self, infile): + coords = [] + lines = infile.readlines() + for i in range(0, len(lines)): + tokens = lines[i].strip().split() + if (len(tokens) == 3): + coords.append(map(float, tokens)) + + self.N = len(coords) + if self.N < 2: + raise InputError( + "Error: Coordinate file must have at least 2 positions.\n") + # Now generate self.settings.name_sequence: + if len(self.settings.name_sequence) != self.N: + self.settings.name_sequence = [self.settings.name_monomer] * self.N + + self.settings.cuts.append(self.N + 1) + self.settings.cuts.sort() + i = 0 + for j in self.settings.cuts: + self.coords_multi.append(coords[i:j]) + i = j + + def ChooseDirections(self, coords): + """ + Calculate the direction each monomer subunit should be pointing at: + + """ + + self.N = len(coords) + self.direction_vects = [[0.0, 0.0, 0.0] for i in range(0, self.N + 1)] + + if self.settings.is_circular: + for i in range(0, self.N): + # By default, the direction that monomer "i" is pointing is + # determined by the position of the monomers before and after it + # (at index i-1, and i+1). More generally, we allow the user + # to choose what these offsets are ("dir_index_offsets[") + ia = WrapPeriodic.Wrap(i + self.settings.dir_index_offsets[0], + self.N) + ib = WrapPeriodic.Wrap(i + self.settings.dir_index_offsets[1], + self.N) + for d in range(0, 3): + self.direction_vects[i][d] = coords[ + ib][d] - coords[ia][d] + else: + for i in range(1, self.N - 1): + for d in range(0, 3): + self.direction_vects[i][d] = coords[ + i + self.settings.dir_index_offsets[1]][d] - coords[ + i + self.settings.dir_index_offsets[0]][d] + + for d in range(0, 3): + self.direction_vects[0][d] = coords[1][d] - coords[0][d] + self.direction_vects[ + self.N - 1][d] = coords[self.N - 1][d] - coords[self.N - 2][d] + + # Optional: normalize the direction vectors + + for i in range(0, self.N): + direction_len = 0.0 + for d in range(0, 3): + direction_len += (self.direction_vects[i][d])**2 + direction_len = sqrt(direction_len) + for d in range(0, 3): + self.direction_vects[i][d] /= direction_len + + # Special case: self.direction_vects[-1] is the direction that the original monomer + # in "monomer.lt" was pointing. (By default, 1,0,0 <--> the "x" + # direction) + + self.direction_vects[-1] = self.settings.direction_orig + + def WriteLTFile(self, outfile): + """ Write an moltemplate (.lt) file containing the definition of + this polymer object. (If multiple polymer objects were requested by + the user (using the -cuts argument), then their definitions will + appear nested within this object, and each of them will be + instantiated once when the parent object is instantiated.) + + """ + + outfile.write(self.settings.header + "\n\n\n") + if len(self.coords_multi) == 1: + self.WritePolymer(outfile, + self.settings.name_polymer + + self.settings.inherits, + self.coords_multi[0]) + else: + if self.settings.name_polymer != '': + outfile.write(self.settings.name_polymer + " {\n\n") + outfile.write('# Definitions of individual polymers to follow\n\n') + for i in range(0, len(self.coords_multi)): + self.WritePolymer(outfile, + self.settings.name_polymer + '_sub' + str(i + 1) + + self.settings.inherits, + self.coords_multi[i]) + outfile.write('\n\n' + '# Now instantiate all the polymers (once each)\n\n') + + for i in range(0, len(self.coords_multi)): + outfile.write('polymers[' + str(i) + '] = new ' + + self.settings.name_polymer + '_sub' + str(i + 1) + '\n') + + if self.settings.name_polymer != '': + outfile.write('\n\n' + '} # ' + self.settings.name_polymer + '\n\n') + + if self.settings.box_padding != None: + for i in range(0, len(self.coords_multi)): + # calculate the box big enough to collectively enclose + # all of the coordinates (even multiple coordinate sets) + self.CalcBoxBoundaries(self.coords_multi[i]) + self.WriteBoxBoundaries(outfile) + + def WritePolymer(self, + outfile, + name_polymer, + coords): + """ Write a single polymer object to a file. + This function is invoked by WriteLTFile() + + """ + self.ChooseDirections(coords) + + if name_polymer != '': + outfile.write(name_polymer + ' {\n' + '\n\n\n' + 'create_var {$mol}\n' + '# The line above forces all monomer subunits to share the same molecule-ID\n' + '# (Note: Setting the molecule-ID number is optional and is usually ignored.)\n\n\n\n') + + outfile.write(""" +# ------------ List of Monomers: ------------ +# +# (Note: move(), rot(), and rotvv() commands control the position +# of each monomer. (See the moltemplate manual for an explanation +# of what they do.) Commands enclosed in push() are cumulative +# and remain in effect until removed by pop().) + + + +""" + ) + + outfile.write("push(move(0,0,0))\n") + + for i in range(0, self.N): + #im1 = i-1 + # if im1 < 0 or self.settings.connect_ends: + # if im1 < 0: + # im1 += self.N + outfile.write("pop()\n") + outfile.write("push(rotvv(" + + str(self.direction_vects[i - 1][0]) + "," + + str(self.direction_vects[i - 1][1]) + "," + + str(self.direction_vects[i - 1][2]) + "," + + str(self.direction_vects[i][0]) + "," + + str(self.direction_vects[i][1]) + "," + + str(self.direction_vects[i][2]) + "))\n") + # Recall that self.direction_vects[-1] = + # self.settings.direction_orig (usually 1,0,0) + outfile.write("push(move(" + + str(coords[i][0]) + "," + + str(coords[i][1]) + "," + + str(coords[i][2]) + "))\n") + + outfile.write("mon[" + str(i) + "] = new " + + self.settings.name_sequence[i] + + ".rot(" + str(self.settings.delta_phi * i) + ",1,0,0)\n") + + assert(len(self.settings.bonds_name) == + len(self.settings.bonds_type) == + len(self.settings.bonds_atoms) == + len(self.settings.bonds_index_offsets)) + if len(self.settings.bonds_type) > 0: + outfile.write("\n" + "\n" + "write(\"Data Bonds\") {\n") + WrapPeriodic.bounds_err = False + for i in range(0, self.N): + test = False + for b in range(0, len(self.settings.bonds_type)): + I = i + self.settings.bonds_index_offsets[b][0] + J = i + self.settings.bonds_index_offsets[b][1] + I = WrapPeriodic.Wrap(I, self.N) + J = WrapPeriodic.Wrap(J, self.N) + if WrapPeriodic.bounds_err: + WrapPeriodic.bounds_err = False + if not self.settings.connect_ends: + continue + outfile.write( + " $bond:" + self.settings.bonds_name[b] + str(i + 1)) + if len(self.settings.bonds_type) > 1: + outfile.write("_" + str(b + 1)) + outfile.write(" @bond:" + self.settings.bonds_type[b] + " $atom:mon[" + str(I) + "]/" + self.settings.bonds_atoms[ + b][0] + " $atom:mon[" + str(J) + "]/" + self.settings.bonds_atoms[b][1] + "\n") + if len(self.settings.bonds_type) > 0: + outfile.write("} # write(\"Data Bonds\") {...\n\n\n") + + assert(len(self.settings.angles_name) == + len(self.settings.angles_type) == + len(self.settings.angles_atoms) == + len(self.settings.angles_index_offsets)) + if len(self.settings.angles_type) > 0: + outfile.write("\n" + "\n" + "write(\"Data Angles\") {\n") + for i in range(0, self.N): + for b in range(0, len(self.settings.angles_type)): + I = i + self.settings.angles_index_offsets[b][0] + J = i + self.settings.angles_index_offsets[b][1] + K = i + self.settings.angles_index_offsets[b][2] + I = WrapPeriodic.Wrap(I, self.N) + J = WrapPeriodic.Wrap(J, self.N) + K = WrapPeriodic.Wrap(K, self.N) + if WrapPeriodic.bounds_err: + WrapPeriodic.bounds_err = False + if not self.settings.connect_ends: + continue + outfile.write( + " $angle:" + self.settings.angles_name[b] + str(i + 1)) + if len(self.settings.angles_type) > 1: + outfile.write("_" + str(b + 1)) + outfile.write(" @angle:" + self.settings.angles_type[b] + + " $atom:mon[" + str(I) + "]/" + self.settings.angles_atoms[b][0] + + " $atom:mon[" + str(J) + "]/" + self.settings.angles_atoms[b][1] + + " $atom:mon[" + str(K) + "]/" + self.settings.angles_atoms[b][2] + + "\n") + if len(self.settings.angles_type) > 0: + outfile.write("} # write(\"Data Angles\") {...\n\n\n") + + assert(len(self.settings.dihedrals_name) == + len(self.settings.dihedrals_type) == + len(self.settings.dihedrals_atoms) == + len(self.settings.dihedrals_index_offsets)) + if len(self.settings.dihedrals_type) > 0: + outfile.write("\n" + "\n" + "write(\"Data Dihedrals\") {\n") + for i in range(0, self.N): + for b in range(0, len(self.settings.dihedrals_type)): + I = i + self.settings.dihedrals_index_offsets[b][0] + J = i + self.settings.dihedrals_index_offsets[b][1] + K = i + self.settings.dihedrals_index_offsets[b][2] + L = i + self.settings.dihedrals_index_offsets[b][3] + I = WrapPeriodic.Wrap(I, self.N) + J = WrapPeriodic.Wrap(J, self.N) + K = WrapPeriodic.Wrap(K, self.N) + L = WrapPeriodic.Wrap(L, self.N) + if WrapPeriodic.bounds_err: + WrapPeriodic.bounds_err = False + if not self.settings.connect_ends: + continue + outfile.write(" $dihedral:" + + self.settings.dihedrals_name[b] + str(i + 1)) + if len(self.settings.dihedrals_type) > 1: + outfile.write("_" + str(b + 1)) + outfile.write(" @dihedral:" + self.settings.dihedrals_type[b] + + " $atom:mon[" + str(I) + "]/" + self.settings.dihedrals_atoms[b][0] + + " $atom:mon[" + str(J) + "]/" + self.settings.dihedrals_atoms[b][1] + + " $atom:mon[" + str(K) + "]/" + self.settings.dihedrals_atoms[b][2] + + " $atom:mon[" + str(L) + "]/" + self.settings.dihedrals_atoms[b][3] + + "\n") + if len(self.settings.dihedrals_type) > 0: + outfile.write("} # write(\"Data Dihedrals\") {...\n\n\n") + + assert(len(self.settings.impropers_name) == + len(self.settings.impropers_type) == + len(self.settings.impropers_atoms) == + len(self.settings.impropers_index_offsets)) + if len(self.settings.impropers_type) > 0: + outfile.write("\n" + "\n" + "write(\"Data Impropers\") {\n") + for i in range(0, self.N): + for b in range(0, len(self.settings.impropers_type)): + I = i + self.settings.impropers_index_offsets[b][0] + J = i + self.settings.impropers_index_offsets[b][1] + K = i + self.settings.impropers_index_offsets[b][2] + L = i + self.settings.impropers_index_offsets[b][3] + I = WrapPeriodic.Wrap(I, self.N) + J = WrapPeriodic.Wrap(J, self.N) + K = WrapPeriodic.Wrap(K, self.N) + L = WrapPeriodic.Wrap(L, self.N) + if WrapPeriodic.bounds_err: + WrapPeriodic.bounds_err = False + if not self.settings.connect_ends: + continue + outfile.write(" $improper:" + + self.settings.impropers_name[b] + str(i + 1)) + if len(self.settings.impropers_type) > 1: + outfile.write("_" + str(b + 1)) + outfile.write(" @improper:" + self.settings.impropers_type[b] + + " $atom:mon[" + str(I) + "]/" + self.settings.impropers_atoms[b][0] + + " $atom:mon[" + str(J) + "]/" + self.settings.impropers_atoms[b][1] + + " $atom:mon[" + str(K) + "]/" + self.settings.impropers_atoms[b][2] + + " $atom:mon[" + str(L) + "]/" + self.settings.impropers_atoms[b][3] + + "\n") + if len(self.settings.impropers_type) > 0: + outfile.write("} # write(\"Data Impropers\") {...\n\n\n") + + if name_polymer != '': + outfile.write("} # " + name_polymer + "\n\n\n\n") + + def CalcBoxBoundaries(self, coords): + N = len(coords) + for i in range(0, N): + for d in range(0, 3): + if not self.box_bounds_min: + assert(not self.box_bounds_max) + self.box_bounds_min = [xd for xd in coords[i]] + self.box_bounds_max = [xd for xd in coords[i]] + else: + if coords[i][d] > self.box_bounds_max[d]: + self.box_bounds_max[d] = coords[i][d] + if coords[i][d] < self.box_bounds_min[d]: + self.box_bounds_min[d] = coords[i][d] + + def WriteBoxBoundaries(self, outfile): + for d in range(0, 3): + self.box_bounds_min[d] -= self.settings.box_padding[d] + self.box_bounds_max[d] += self.settings.box_padding[d] + outfile.write("\n# ---------------- simulation box -----------------\n" + + "# Now define a box big enough to hold a polymer with this (initial) shape\n" + "\n\n" + "write_once(\"Data Boundary\") {\n" + + str(self.box_bounds_min[0]) + " " + + str(self.box_bounds_max[0]) + " xlo xhi\n" + + str(self.box_bounds_min[1]) + " " + + str(self.box_bounds_max[1]) + " ylo yhi\n" + + str(self.box_bounds_min[2]) + " " + + str(self.box_bounds_max[2]) + " zlo zhi\n" + "}\n\n\n") + + +def main(): + try: + g_program_name = __file__.split('/')[-1] + g_version_str = '0.0.5' + g_date_str = '2017-4-14' + sys.stderr.write(g_program_name + ' v' + + g_version_str + ' ' + g_date_str + '\n') + argv = [arg for arg in sys.argv] + infile = sys.stdin + outfile = sys.stdout + genpoly = GenPoly() + genpoly.ParseArgs(argv) + # Any remain arguments? + if len(argv) > 1: + raise InputError('Error(' + g_program_name + '):\n' + + 'Unrecogized command line argument \"' + argv[1] + + '\"\n\n' + + g_usage_msg) + genpoly.ReadCoords(infile) + genpoly.WriteLTFile(outfile) + + except (ValueError, InputError) as err: + sys.stderr.write('\n' + str(err) + '\n') + sys.exit(-1) + + return + +if __name__ == '__main__': + main() diff --git a/tools/moltemplate/moltemplate/ltemplify.py b/tools/moltemplate/moltemplate/ltemplify.py new file mode 100755 index 0000000000000000000000000000000000000000..753d9b3ad0f0cc30438fb3d1405f3be04923dc90 --- /dev/null +++ b/tools/moltemplate/moltemplate/ltemplify.py @@ -0,0 +1,3588 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +# Author: Andrew Jewett (jewett.aij at g mail) +# http://www.chem.ucsb.edu/~sheagroup +# License: 3-clause BSD License (See LICENSE.TXT) +# Copyright (c) 2012, Regents of the University of California +# All rights reserved. + +""" +ltemplify.py + +The "ltemplify.py" script can be used to convert existing LAMMPS +input script and data files into a single .lt file +(which includes both topology and force-field information + for a single molecule in your system). + +Example: + + ltemplify.py -name Mol file.in file.data > mol.lt + +This creates a template for a new type of molecule (named "Mol"), +consisting of all the atoms in the lammps files you included, +and saves this data in a single ttree file ("mol.lt"). +This file can be used with moltemplate (ttree) to +define large systems containing this molecule. + +""" + +import sys +try: + from .ttree_lex import * + from .lttree_styles import * +except (SystemError, ValueError): + # not installed as a package + from ttree_lex import * + from lttree_styles import * + +g_program_name = __file__.split('/')[-1] # = 'ltemplify.py' +g_version_str = '0.53.1' +g_date_str = '2017-6-08' + +def Intify(s): + if s.isdigit(): + return int(s) + elif s[0:2] == 'id': + return int(s[2:]) + elif s[0:4] == 'type': + return int(s[4:]) + else: + return s + + +def IsNumber(s): + try: + float(s) + return True + except (ValueError, TypeError): + return False + + +def StringToInterval(sel_str, slice_delim='*'): + # Split a string into 1-3 tokens using the slice_delim and convert to int. + # What a mess. I should rewrite this function + + i_slice = sel_str.find(slice_delim) + + if i_slice == -1: + a = sel_str + b = sel_str + c = '' + else: + a = sel_str[:i_slice] + bc = sel_str[i_slice + len(slice_delim):] + b = '' + c = '' + i_slice = bc.find(slice_delim) + if i_slice == -1: + b = bc + c = '' + else: + b = bc[:i_slice] + c = bc[i_slice + len(slice_delim):] + + if a == '': + a = None + elif a.isdigit(): + a = int(a) + else: + raise InputError('Error: invalid selection string \"' + + sel_str + '\"\n') + + if b == '': + b = None + elif b.isdigit(): + b = int(b) + else: + raise InputError('Error: invalid selection string \"' + + sel_str + '\"\n') + + if c == '': + c = None + elif c.isdigit(): + c = int(c) + else: + raise InputError('Error: invalid selection string \"' + + sel_str + '\"\n') + + if c == None: + return (a, b) + else: + return (a, b, c) + + +# Selections are simply lists of 2-tuples (pairs) + +def LammpsSelectToIntervals(sel_str, slice_delim='*', or_delim=', '): + """ + This function converts a string such as "1*4 6 9*12 50*70*10" into + a list of tuples, for example: [(1,4), (6,6), (9,12), (50,50), (60,60), (70,70)] + In general, the of intervals has the form: + [(a1,b1), (a2,b2), (a3,b3), ... ] + + An atom is considered to belong to this selection + if it happens to lie within the closed interval [a,b] + for any pair of a,b values in the list of intervals. + If for a given pair a,b, either a or b is "None", then that a or b + value is not used to disqualify membership in the interval. + (Similar to -infinity or +infinity. In other words if a is set to None, + then to belong to the interval it is enough to be less than b.) + + """ + selection_list = [] + # tokens = sel_str.split(or_delim) <-- Not what we want when + # len(or_delim)>1 + tokens = LineLex.TextBlock2Lines(sel_str, or_delim, keep_delim=False) + for token in tokens: + token = token.strip() + interval = StringToInterval(token, slice_delim) + + if len(interval) == 2: + # Normally, "interval" should be a tuple containing 2 entries + selection_list.append(interval) + else: + assert(len(interval) == 3) + # Handle 1000:2000:10 notation + # (corresponding to 1000, 1010, 1020, 1030, ..., 1990, 2000) + a = interval[0] + b = interval[1] + incr = interval[2] + i = a + while i <= b: + selection_list.append((i, i)) + i += incr + + return selection_list + + +def IntervalListToMinMax(interval_list): + min_a = None + max_b = None + for (a, b) in interval_list: + if ((not (type(a) is int)) or (not (type(b) is int))): + return None, None # only integer min/max makes sense. otherwise skip + + if (min_a == None) or (a < min_a): + min_a = a + if (max_b == None) or (b > max_b): + max_b = b + return min_a, max_b + + +def MergeIntervals(interval_list): + """ + A crude simple function that merges consecutive intervals in the list + whenever they overlap. (This function does not bother to compare + non-consecutive entries in the interval_list.) + + """ + i = 1 + while i < len(interval_list): + if ((interval_list[i - 1][1] == None) or + (interval_list[i - 1][1] + 1 >= interval_list[i][0])): + interval_list[i - 1] = (interval_list[i - 1] + [0], interval_list[i][1]) + del interval_list[i] + else: + i += 1 + + +def BelongsToSel(i, sel): + if (i == None) or (sel == None) or (len(sel) == 0): + # If the user has not specified a selection for this category, + # then by default all objects are accepted + return True + + elif (type(i) is str): + if i.isdigit(): + i = int(i) + else: + return True + + belongs = False + for interval in sel: + assert(len(interval) == 2) + if interval[0]: + if i >= interval[0]: + if (interval[1] == None) or (i <= interval[1]): + belongs = True + break + elif interval[1]: + if i <= interval[1]: + belongs = True + break + else: + # In that case, the user entered something like "*" + # which covers all possible numbers + belongs = True + break + + return belongs + + +def main(): + try: + sys.stderr.write(g_program_name + ' v' + + g_version_str + ' ' + g_date_str + '\n') + + non_empty_output = False + no_warnings = True + indent = 2 + cindent = 0 + atomid_selection = [] + atomtype_selection = [] + molid_selection = [] + mol_name = '' + + min_sel_atomid = None + min_sel_atomtype = None + min_sel_bondid = None + min_sel_bondtype = None + min_sel_angleid = None + min_sel_angletype = None + min_sel_dihedralid = None + min_sel_dihedraltype = None + min_sel_improperid = None + min_sel_impropertype = None + + max_sel_atomid = None + max_sel_atomtype = None + max_sel_bondid = None + max_sel_bondtype = None + max_sel_angleid = None + max_sel_angletype = None + max_sel_dihedralid = None + max_sel_dihedraltype = None + max_sel_improperid = None + max_sel_impropertype = None + + needed_atomids = set([]) + needed_atomtypes = set([]) + needed_molids = set([]) + needed_bondids = set([]) + needed_bondtypes = set([]) + needed_angleids = set([]) + needed_angletypes = set([]) + needed_dihedralids = set([]) + needed_dihedraltypes = set([]) + needed_improperids = set([]) + needed_impropertypes = set([]) + + min_needed_atomtype = None + max_needed_atomtype = None + min_needed_bondtype = None + max_needed_bondtype = None + min_needed_angletype = None + max_needed_angletype = None + min_needed_dihedraltype = None + max_needed_dihedraltype = None + min_needed_impropertype = None + max_needed_impropertype = None + + min_needed_atomid = None + max_needed_atomid = None + min_needed_molid = None + max_needed_molid = None + min_needed_bondid = None + max_needed_bondid = None + min_needed_angleid = None + max_needed_angleid = None + min_needed_dihedralid = None + max_needed_dihedralid = None + min_needed_improperid = None + max_needed_improperid = None + + # To process the selections, we need to know the atom style: + atom_style_undefined = True + + i_atomid = None + i_atomtype = None + i_molid = None + i_x = None + i_y = None + i_z = None + + l_in_init = [] + l_in_settings = [] + l_in_masses = [] + l_in_pair_coeffs = [] + l_in_bond_coeffs = [] + l_in_angle_coeffs = [] + l_in_dihedral_coeffs = [] + l_in_improper_coeffs = [] + l_in_group = [] + l_in_set = [] + l_in_set_static = [] + l_in_fix_shake = [] + l_in_fix_rigid = [] + l_in_fix_poems = [] + l_in_fix_qeq = [] + l_in_fix_qmmm = [] + l_data_masses = [] + l_data_bond_coeffs = [] + l_data_angle_coeffs = [] + l_data_dihedral_coeffs = [] + l_data_improper_coeffs = [] + l_data_pair_coeffs = [] + l_data_pairij_coeffs = [] + l_data_atoms = [] + l_data_velocities = [] + l_data_bonds = [] + l_data_angles = [] + l_data_dihedrals = [] + l_data_impropers = [] + + # class2 force fields + # l_in_bondbond_coeffs = [] <--not needed, included in l_in_angle_coeff + # l_in_bondangle_coeffs = [] <--not needed, included in l_in_angle_coeff + # l_in_middlebondtorsion_coeffs = [] not needed, included in l_in_dihedral_coeff + # l_in_endbondtorsion_coeffs = [] <--not needed, included in l_in_dihedral_coeff + # l_in_angletorsion_coeffs = [] <--not needed, included in l_in_dihedral_coeff + # l_in_angleangletorsion_coeffs = [] not needed, included in l_in_dihedral_coeff + # l_in_bondbond13_coeffs = [] <--not needed, included in l_in_dihedral_coeff + # l_in_angleangle_coeffs = [] <--not needed, included in + # l_in_improper_coeff + l_data_bondbond_coeffs = [] + l_data_bondangle_coeffs = [] + l_data_middlebondtorsion_coeffs = [] + l_data_endbondtorsion_coeffs = [] + l_data_angletorsion_coeffs = [] + l_data_angleangletorsion_coeffs = [] + l_data_bondbond13_coeffs = [] + l_data_angleangle_coeffs = [] + + # non-point-like particles: + l_data_ellipsoids = [] + l_data_lines = [] + l_data_triangles = [] + + # automatic generation of bonded interactions by type: + l_data_angles_by_type = [] + l_data_dihedrals_by_type = [] + l_data_impropers_by_type = [] + + atoms_already_read = False + some_pair_coeffs_read = False + complained_atom_style_mismatch = False + infer_types_from_comments = False + remove_coeffs_from_data_file = True + + argv = [arg for arg in sys.argv] + + i = 1 + + while i < len(argv): + + #sys.stderr.write('argv['+str(i)+'] = \"'+argv[i]+'\"\n') + + if argv[i] == '-columns': + if i + 1 >= len(argv): + raise InputError('Error: the \"' + argv[i] + '\" argument should be followed by a quoted\n' + ' string which contains a space-delimited list of the names of\n' + ' of columns in the \"Atoms\" section of the LAMMPS data file.\n' + ' If the list contains the symbols:\n' + ' \"atom-ID\" or \"atomid\", they are interpreted\n' + ' as unique atom ID numbers, and columns named\n' + ' \"atom-type\" or \"atomtype\" are interpreted\n' + ' as atom types. Finally, columns named\n' + ' \"molecule-ID\", \"molecule\", or \"mol-ID\", or \"mol\"\n' + ' are interpreted as unique molecule id numbers.\n' + 'Example:\n' + ' ' + + argv[ + i] + ' \'atom-ID atom-type q polarizability molecule-ID x y z\'\n' + ' defines a custom atom_style containing the properties\n' + ' atom-ID atom-type q polarizability molecule-ID x y z\n' + ' Make sure you enclose the entire list in quotes.\n') + column_names = argv[i + 1].strip('\"\'').strip().split() + del argv[i:i + 2] + + elif (argv[i] == '-ignore-comments'): + infer_types_from_comments = False + del argv[i:i + 1] + + elif (argv[i] == '-infer-comments'): + infer_types_from_comments = True + del argv[i:i + 1] + + elif ((argv[i] == '-name') or + (argv[i] == '-molname') or + (argv[i] == '-molecule-name') or + (argv[i] == '-molecule_name')): + if i + 1 >= len(argv): + raise InputError( + 'Error: ' + argv[i] + ' flag should be followed by a a molecule type name.\n') + cindent = 2 + indent += cindent + mol_name = argv[i + 1] + del argv[i:i + 2] + + elif ((argv[i].lower() == '-atomstyle') or + (argv[i].lower() == '-atom_style') or + (argv[i].lower() == '-atom-style')): + if i + 1 >= len(argv): + raise InputError('Error: ' + argv[i] + ' flag should be followed by a an atom_style name.\n' + ' (or single quoted string which includes a space-separated\n' + ' list of column names).\n') + atom_style_undefined = False + column_names = AtomStyle2ColNames(argv[i + 1]) + if (argv[i + 1].strip().split()[0] in g_style_map): + l_in_init.append((' ' * indent) + + 'atom_style ' + argv[i + 1] + '\n') + sys.stderr.write('\n \"Atoms\" column format:\n') + sys.stderr.write(' ' + (' '.join(column_names)) + '\n') + i_atomid, i_atomtype, i_molid = ColNames2AidAtypeMolid( + column_names) + # Which columns contain the coordinates? + ii_coords = ColNames2Coords(column_names) + assert(len(ii_coords) == 1) + i_x = ii_coords[0][0] + i_y = ii_coords[0][1] + i_z = ii_coords[0][2] + + if i_molid: + sys.stderr.write(' (i_atomid=' + str(i_atomid + 1) + ', i_atomtype=' + str( + i_atomtype + 1) + ', i_molid=' + str(i_molid + 1) + ')\n\n') + else: + sys.stderr.write(' (i_atomid=' + str(i_atomid + 1) + + ', i_atomtype=' + str(i_atomtype + 1) + ')\n') + del argv[i:i + 2] + + elif ((argv[i].lower() == '-id') or + #(argv[i].lower() == '-a') or + #(argv[i].lower() == '-atoms') or + (argv[i].lower() == '-atomid') or + #(argv[i].lower() == '-atomids') or + (argv[i].lower() == '-atom-id') + #(argv[i].lower() == '-atom-ids') or + #(argv[i].lower() == '-$atom') or + #(argv[i].lower() == '-$atoms') + ): + if i + 1 >= len(argv): + raise InputError('Error: ' + argv[i] + ' flag should be followed by a list of integers\n' + ' (or strings). These identify the group of atoms you want to\n' + ' to include in the template you are creating.\n') + atomid_selection += LammpsSelectToIntervals(argv[i + 1]) + min_sel_atomid, max_sel_atomid = IntervalListToMinMax( + atomid_selection) + del argv[i:i + 2] + elif ((argv[i].lower() == '-datacoeffs') or + (argv[i].lower() == '-datacoeff') or + (argv[i].lower() == '-Coeff') or + (argv[i].lower() == '-Coeffs')): + remove_coeffs_from_data_file = False + del argv[i:i + 1] + elif ((argv[i].lower() == '-type') or + #(argv[i].lower() == '-t') or + (argv[i].lower() == '-atomtype') or + (argv[i].lower() == '-atom-type') + #(argv[i].lower() == '-atomtypes') or + #(argv[i].lower() == '-atom-types') or + #(argv[i].lower() == '-@atom') or + #(argv[i].lower() == '-@atoms') or + #(argv[i].lower() == '-@atomtype') or + #(argv[i].lower() == '-@atomtypes') + ): + if i + 1 >= len(argv): + raise InputError('Error: ' + argv[i] + ' flag should be followed by a list of integers.\n' + ' (or strings). These identify the group of atom types you want to\n' + ' to include in the template you are creating.\n') + atomtype_selection += LammpsSelectToIntervals(argv[i + 1]) + min_sel_atomtype, max_sel_atomtype = IntervalListToMinMax( + atomtype_selection) + del argv[i:i + 2] + elif ((argv[i].lower() == '-mol') or + #(argv[i].lower() == '-m') or + (argv[i].lower() == '-molid') or + #(argv[i].lower() == '-molids') or + (argv[i].lower() == '-mol-id') or + #(argv[i].lower() == '-mol-ids') or + #(argv[i].lower() == '-molecule') or + (argv[i].lower() == '-moleculeid') or + (argv[i].lower() == '-molecule-id') + #(argv[i].lower() == '-molecules') or + #(argv[i].lower() == '-molecule-ids') or + #(argv[i].lower() == '-$mol') or + #(argv[i].lower() == '-$molecule') + ): + if i + 1 >= len(argv): + sys.stderr.write('Error: ' + argv[i] + ' flag should be followed by a list of integers.\n' + ' (or strings). These identify the group of molecules you want to\n' + ' include in the template you are creating.\n') + molid_selection += LammpsSelectToIntervals(argv[i + 1]) + del argv[i:i + 2] + else: + i += 1 + + # We might need to parse the simulation boundary-box. + # If so, use these variables. (None means uninitialized.) + boundary_xlo = None + boundary_xhi = None + boundary_ylo = None + boundary_yhi = None + boundary_zlo = None + boundary_zhi = None + boundary_xy = None + boundary_yz = None + boundary_xz = None + + # atom type names + atomtypes_name2int = {} + atomtypes_int2name = {} + # atomids_name2int = {} not needed + atomids_int2name = {} + atomids_by_type = {} + + if atom_style_undefined: + # The default atom_style is "full" + column_names = AtomStyle2ColNames('full') + i_atomid, i_atomtype, i_molid = ColNames2AidAtypeMolid(column_names) + # Which columns contain the coordinates? + ii_coords = ColNames2Coords(column_names) + assert(len(ii_coords) == 1) + i_x = ii_coords[0][0] + i_y = ii_coords[0][1] + i_z = ii_coords[0][2] + + #--------------------------------------------------------- + #-- The remaining arguments are files that the user wants + #-- us to read and convert. It is typical to have + #-- multiple input files, because LAMMPS users often + #-- store their force field parameters in either the LAMMPS + #-- data files and input script files, or both. + #-- We want to search all of the LAMMPS input files in + #-- order to make sure we extracted all the force field + #-- parameters (coeff commands). + #--------------------------------------------------------- + + for i_arg in range(1, len(argv)): + fname = argv[i_arg] + try: + lammps_file = open(fname, 'r') + except IOError: + raise InputError('Error: unrecognized argument (\"' + fname + '\"),\n' + ' OR unable to open file:\n' + '\n' + ' \"' + fname + '\"\n' + ' for reading.\n' + '\n' + ' (If you were not trying to open a file with this name,\n' + ' then there is a problem in your argument list.)\n') + + sys.stderr.write('reading file \"' + fname + '\"\n') + + atomid2type = {} + atomid2mol = {} + data_file_header_names = set(['LAMMPS Description', + 'Atoms', 'Masses', 'Velocities', 'Bonds', + 'Angles', 'Dihedrals', 'Impropers', + 'Pair Coeffs', + 'Bond Coeffs', 'Angle Coeffs', + 'Dihedral Coeffs', 'Improper Coeffs', + # class2 force fields: + 'BondBond Coeffs', 'BondAngle Coeffs', + 'MiddleBondTorsion Coeffs', 'EndBondTorsion Coeffs', + 'AngleTorsion Coeffs', 'AngleAngleTorsion Coeffs', + 'BondBond13 Coeffs', + 'AngleAngle Coeffs', + # non-point-like particles: + 'Ellipsoids', 'Triangles', 'Lines', + # specifying bonded interactions by type: + 'Angles By Type', 'Dihedrals By Type', 'Impropers By Type' + ]) + + lex = LineLex(lammps_file, fname) + lex.source_triggers = set(['include', 'import']) + # set up lex to accept most characters in file names: + lex.wordterminators = '(){}' + lex.whitespace + # set up lex to understand the "include" statement: + lex.source = 'include' + lex.escape = '\\' + + while lex: + infile = lex.infile + lineno = lex.lineno + line = lex.ReadLine() + if (lex.infile != infile): + infile = lex.infile + lineno = lex.lineno + + #sys.stderr.write(' processing \"'+line.strip()+'\", (\"'+infile+'\":'+str(lineno)+')\n') + + if line == '': + break + + tokens = line.strip().split() + if (len(tokens) > 0): + if ((tokens[0] == 'atom_style') and + atom_style_undefined): + + sys.stderr.write( + ' Atom Style found. Processing: \"' + line.strip() + '\"\n') + if atoms_already_read: + raise InputError('Error: The file containing the \"atom_style\" command must\n' + ' come before the data file in the argument list.\n' + ' (The templify program needs to know the atom style before reading\n' + ' the data file. Either change the order of arguments so that the\n' + ' LAMMPS input script file is processed before the data file, or use\n' + ' the \"-atom_style\" command line argument to specify the atom_style.)\n') + + column_names = AtomStyle2ColNames(line.split()[1]) + i_atomid, i_atomtype, i_molid = ColNames2AidAtypeMolid( + column_names) + # Which columns contain the coordinates? + ii_coords = ColNames2Coords(column_names) + assert(len(ii_coords) == 1) + i_x = ii_coords[0][0] + i_y = ii_coords[0][1] + i_z = ii_coords[0][2] + + sys.stderr.write('\n \"Atoms\" column format:\n') + sys.stderr.write(' ' + (' '.join(column_names)) + '\n') + if i_molid: + sys.stderr.write(' (i_atomid=' + str(i_atomid + 1) + ', i_atomtype=' + str( + i_atomtype + 1) + ', i_molid=' + str(i_molid + 1) + ')\n\n') + else: + sys.stderr.write( + ' (i_atomid=' + str(i_atomid + 1) + ', i_atomtype=' + str(i_atomtype + 1) + ')\n\n') + l_in_init.append((' ' * indent) + line.lstrip()) + + elif (tokens[0] in set(['units', + 'angle_style', + 'bond_style', + 'dihedral_style', + 'improper_style', + 'min_style', + 'pair_style', + 'pair_modify', + 'special_bonds', + 'kspace_style', + 'kspace_modify'])): + l_in_init.append((' ' * indent) + line.lstrip()) + + # if (line.strip() == 'LAMMPS Description'): + # sys.stderr.write(' reading \"'+line.strip()+'\"\n') + # # skip over this section + # while lex: + # line = lex.ReadLine() + # if line.strip() in data_file_header_names: + # lex.push_raw_text(line) # <- Save line for later + # break + + elif (line.strip() == 'Atoms'): + sys.stderr.write(' reading \"' + line.strip() + '\"\n') + atoms_already_read = True + + # Before attempting to read atomic coordinates, first find + # the lattice vectors of the simulation's boundary box: + # Why do we care about the Simulation Boundary? + # Some LAMMPS data files store atomic coordinates in a + # complex format with 6 numbers, 3 floats, and 3 integers. + # The 3 floats are x,y,z coordinates. Any additional numbers + # following these are integers which tell LAMMPS which cell + # the particle belongs to, (in case it has wandered out of + # the original periodic boundary box). In order to find + # the true location of the particle, we need to offset that + # particle's position with the unit-cell lattice vectors: + # avec, bvec, cvec (or multiples thereof) + # avec, bvec, cvec are the axis of the parallelepiped which + # define the simulation's boundary. They are described here: + # http://lammps.sandia.gov/doc/Section_howto.html#howto-12 + if ((boundary_xlo == None) or (boundary_xhi == None) or + (boundary_ylo == None) or (boundary_yhi == None) or + (boundary_zlo == None) or (boundary_zhi == None)): + + raise InputError('Error: Either DATA file lacks a boundary-box header, or it is in the wrong\n' + ' place. At the beginning of the file, you need to specify the box size:\n' + ' xlo xhi ylo yhi zlo zhi (and xy xz yz if triclinic)\n' + ' These numbers should appear BEFORE the other sections in the data file\n' + ' (such as the \"Atoms\", \"Masses\", \"Bonds\", \"Pair Coeffs\" sections)\n' + '\n' + ' Use this format (example):\n' + ' -100.0 100.0 xhi xlo\n' + ' 0.0 200.0 yhi ylo\n' + ' -25.0 50.0 zhi zlo\n' + '\n' + 'For details, see http://lammps.sandia.gov/doc/read_data.html\n' + '\n' + ' (NOTE: If the atom coordinates are NOT followed by integers, then\n' + ' these numbers are all ignored, however you must still specify\n' + ' xlo, xhi, ylo, yhi, zlo, zhi. You can set them all to 0.0.)\n') + + if not (boundary_xy and boundary_yz and boundary_xz): + # Then use a simple rectangular boundary box: + avec = (boundary_xhi - boundary_xlo, 0.0, 0.0) + bvec = (0.0, boundary_yhi - boundary_ylo, 0.0) + cvec = (0.0, 0.0, boundary_zhi - boundary_zlo) + else: + # Triclinic geometry in LAMMPS is explained here: + # http://lammps.sandia.gov/doc/Section_howto.html#howto-12 + # http://lammps.sandia.gov/doc/read_data.html + avec = (boundary_xhi - boundary_xlo, 0.0, 0.0) + bvec = (boundary_xy, boundary_yhi - boundary_ylo, 0.0) + cvec = (boundary_xz, boundary_yz, + boundary_zhi - boundary_zlo) + + while lex: + line = lex.ReadLine() + if line.strip() in data_file_header_names: + lex.push_raw_text(line) # <- Save line for later + break + tokens = line.strip().split() + if len(tokens) > 0: + if ((len(tokens) <= i_atomid) or + (len(tokens) <= i_atomtype) or + ((i_molid != None) and + (len(tokens) <= i_molid))): + raise InputError('Error: The number of columns in the \"Atoms\" section does\n' + ' not match the atom_style (see column name list above).\n') + elif ((len(tokens) != len(column_names)) and + (len(tokens) != len(column_names) + 3) and + (not complained_atom_style_mismatch)): + complained_atom_style_mismatch = True + sys.stderr.write('Warning: The number of columns in the \"Atoms\" section does\n' + ' not match the atom_style (see column name list above).\n') + # this is not a very serious warning. + # no_warnings = False <--no need. commenting + # out + + atomid = Intify(tokens[i_atomid]) + atomtype = Intify(tokens[i_atomtype]) + + molid = None + if i_molid: + molid = Intify(tokens[i_molid]) + + atomid2type[atomid] = atomtype + if i_molid: + atomid2mol[atomid] = molid + + if (BelongsToSel(atomid, atomid_selection) and + BelongsToSel(atomtype, atomtype_selection) and + BelongsToSel(molid, molid_selection)): + + tokens[i_atomid] = '$atom:id' + \ + tokens[i_atomid] + #tokens[i_atomid] = '$atom:'+atomids_int2name[atomid] + # fill atomtype_int2str[] with a default name (change later): + #tokens[i_atomtype] = '@atom:type'+tokens[i_atomtype] + atomtype_name = 'type' + tokens[i_atomtype] + atomtypes_int2name[atomtype] = atomtype_name + tokens[i_atomtype] = '@atom:' + atomtype_name + + # Interpreting unit-cell counters + # If present, then unit-cell "flags" must be + # added to the x,y,z coordinates. + # + # For more details on unit-cell "flags", see: + # http://lammps.sandia.gov/doc/read_data.html + # "In the data file, atom lines (all lines or + # none of them) can optionally list 3 trailing + # integer values (nx,ny,nz), which are used to + # initialize the atom’s image flags. + # If nx,ny,nz values are not listed in the + # data file, LAMMPS initializes them to 0. + # Note that the image flags are immediately + # updated if an atom’s coordinates need to + # wrapped back into the simulation box." + + if (len(tokens) == len(column_names) + 3): + nx = int(tokens[-3]) + ny = int(tokens[-2]) + nz = int(tokens[-1]) + x = float( + tokens[i_x]) + nx * avec[0] + ny * bvec[0] + nz * cvec[0] + y = float( + tokens[i_y]) + nx * avec[1] + ny * bvec[1] + nz * cvec[1] + z = float( + tokens[i_z]) + nx * avec[2] + ny * bvec[2] + nz * cvec[2] + tokens[i_x] = str(x) + tokens[i_y] = str(y) + tokens[i_z] = str(z) + # Now get rid of them: + del tokens[-3:] + + # I can't use atomids_int2name or atomtypes_int2name yet + # because they probably have not been defined yet. + # (Instead assign these names in a later pass.) + + if i_molid: + tokens[i_molid] = '$mol:id' + \ + tokens[i_molid] + l_data_atoms.append( + (' ' * indent) + (' '.join(tokens) + '\n')) + needed_atomids.add(atomid) + + needed_atomtypes.add(atomtype) + # Not all atom_styles have molids. + # Check for this before adding. + if molid != None: + needed_molids.add(molid) + + for atomtype in needed_atomtypes: + assert(type(atomtype) is int) + if ((min_needed_atomtype == None) or + (min_needed_atomtype > atomtype)): + min_needed_atomtype = atomtype + if ((max_needed_atomtype == None) or + (max_needed_atomtype < atomtype)): + max_needed_atomtype = atomtype + + for atomid in needed_atomids: + assert(type(atomid) is int) + if ((min_needed_atomid == None) or + (min_needed_atomid > atomid)): + min_needed_atomid = atomid + if ((max_needed_atomid == None) or + (max_needed_atomid < atomid)): + max_needed_atomid = atomid + for molid in needed_molids: + assert(type(molid) is int) + if ((min_needed_molid == None) or + (min_needed_molid > molid)): + min_needed_molid = molid + if ((max_needed_molid == None) or + (max_needed_molid < molid)): + max_needed_molid = molid + + elif (line.strip() == 'Masses'): + sys.stderr.write(' reading \"' + line.strip() + '\"\n') + while lex: + # Read the next line of text but don't skip comments + comment_char_backup = lex.commenters + lex.commenters = '' + line = lex.ReadLine() + lex.commenters = comment_char_backup + + comment_text = '' + ic = line.find('#') + if ic != -1: + line = line[:ic] + comment_text = line[ic + 1:].strip() + line = line.rstrip() + + if line.strip() in data_file_header_names: + lex.push_raw_text(line) # <- Save line for later + break + + tokens = line.strip().split() + if len(tokens) > 0: + atomtype = Intify(tokens[0]) + atomtype_name = str(atomtype) + + if comment_text != '': + comment_tokens = comment_text.split() + # Assume the first word after the # is the atom + # type name + atomtype_name = comment_tokens[0] + + if BelongsToSel(atomtype, atomtype_selection): + #tokens[0] = '@atom:type'+tokens[0] + l_data_masses.append( + (' ' * indent) + (' '.join(tokens) + '\n')) + # infer atom type names from comment strings? + if infer_types_from_comments: + if atomtype_name in atomtypes_name2int: + raise InputError('Error: duplicate atom type names in mass section: \"' + atomtype_name + '\"\n' + ' (By default ' + g_program_name + + ' attempts to infer atom type names from\n' + ' comments which appear in the \"Masses\" section of your data file.)\n' + ' You can avoid this error by adding the \"-ignore-comments\" argument.\n') + atomtypes_name2int[ + atomtype_name] = atomtype + atomtypes_int2name[ + atomtype] = atomtype_name + else: + atomtypes_int2name[ + atomtype] = 'type' + str(atomtype) + + elif (line.strip() == 'Velocities'): + sys.stderr.write(' reading \"' + line.strip() + '\"\n') + while lex: + line = lex.ReadLine() + if line.strip() in data_file_header_names: + lex.push_raw_text(line) # <- Save line for later + break + tokens = line.strip().split() + if len(tokens) > 0: + atomid = Intify(tokens[0]) + atomtype = None + if atomid in atomid2type: + atomtype = atomid2type[atomid] + moldid = None + if atomid in atomid2mol: + molid = atomid2mol[atomid] + if (BelongsToSel(atomid, atomid_selection) and + BelongsToSel(atomtype, atomtype_selection) and + BelongsToSel(molid, molid_selection)): + tokens[0] = '$atom:id' + tokens[0] + #tokens[0] = '$atom:'+atomids_int2name[atomid] + # NOTE:I can't use "atomids_int2name" yet because + # they probably have not been defined yet. + # (Instead assign these names in a later pass.) + l_data_velocities.append( + (' ' * indent) + (' '.join(tokens) + '\n')) + + # non-point-like-particles: + elif (line.strip() == 'Ellipsoids'): + sys.stderr.write(' reading \"' + line.strip() + '\"\n') + while lex: + line = lex.ReadLine() + if line.strip() in data_file_header_names: + lex.push_raw_text(line) # <- Save line for later + break + tokens = line.strip().split() + if len(tokens) > 0: + atomid = Intify(tokens[0]) + atomtype = None + if atomid in atomid2type: + atomtype = atomid2type[atomid] + moldid = None + if atomid in atomid2mol: + molid = atomid2mol[atomid] + if (BelongsToSel(atomid, atomid_selection) and + BelongsToSel(atomtype, atomtype_selection) and + BelongsToSel(molid, molid_selection)): + tokens[0] = '$atom:id' + tokens[0] + #tokens[0] = '$atom:'+atomids_int2name[atomid] + # NOTE:I can't use "atomids_int2name" yet because + # they probably have not been defined yet. + # (Instead assign these names in a later pass.) + l_data_ellipsoids.append( + (' ' * indent) + (' '.join(tokens) + '\n')) + elif (line.strip() == 'Lines'): + sys.stderr.write(' reading \"' + line.strip() + '\"\n') + while lex: + line = lex.ReadLine() + if line.strip() in data_file_header_names: + lex.push_raw_text(line) # <- Save line for later + break + tokens = line.strip().split() + if len(tokens) > 0: + atomid = Intify(tokens[0]) + atomtype = None + if atomid in atomid2type: + atomtype = atomid2type[atomid] + moldid = None + if atomid in atomid2mol: + molid = atomid2mol[atomid] + if (BelongsToSel(atomid, atomid_selection) and + BelongsToSel(atomtype, atomtype_selection) and + BelongsToSel(molid, molid_selection)): + tokens[0] = '$atom:id' + tokens[0] + #tokens[0] = '$atom:'+atomids_int2name[atomid] + # NOTE:I can't use "atomids_int2name" yet because + # they probably have not been defined yet. + # (Instead assign these names in a later pass.) + l_data_lines.append( + (' ' * indent) + (' '.join(tokens) + '\n')) + elif (line.strip() == 'Triangles'): + sys.stderr.write(' reading \"' + line.strip() + '\"\n') + while lex: + line = lex.ReadLine() + if line.strip() in data_file_header_names: + lex.push_raw_text(line) # <- Save line for later + break + tokens = line.strip().split() + if len(tokens) > 0: + atomid = Intify(tokens[0]) + atomtype = None + if atomid in atomid2type: + atomtype = atomid2type[atomid] + moldid = None + if atomid in atomid2mol: + molid = atomid2mol[atomid] + if (BelongsToSel(atomid, atomid_selection) and + BelongsToSel(atomtype, atomtype_selection) and + BelongsToSel(molid, molid_selection)): + tokens[0] = '$atom:id' + tokens[0] + #tokens[0] = '$atom:'+atomids_int2name[atomid] + # NOTE:I can't use "atomids_int2name" yet because + # they probably have not been defined yet. + # (Instead assign these names in a later pass.) + l_data_triangles.append( + (' ' * indent) + (' '.join(tokens) + '\n')) + + elif (line.strip() == 'Bonds'): + sys.stderr.write(' reading \"' + line.strip() + '\"\n') + while lex: + line = lex.ReadLine() + if line.strip() in data_file_header_names: + lex.push_raw_text(line) # <- Save line for later + break + tokens = line.strip().split() + if len(tokens) > 0: + if (len(tokens) < 4): + raise InputError('Error: near or before ' + ErrorLeader(infile, lineno) + '\n' + ' Nonsensical line in Bonds section:\n' + ' \"' + line.strip() + '\"\n') + #tokens[0] = '$bond:id'+tokens[0] + #tokens[1] = '@bond:type'+tokens[1] + atomids = [None, None] + atomtypes = [None, None] + molids = [None, None] + in_selections = True + some_in_selection = False + for n in range(0, 2): + atomids[n] = Intify(tokens[2 + n]) + if atomids[n] in atomid2type: + atomtypes[n] = atomid2type[atomids[n]] + if atomids[n] in atomid2mol: + molids[n] = atomid2mol[atomids[n]] + if (BelongsToSel(atomids[n], atomid_selection) and + BelongsToSel(atomtypes[n], atomtype_selection) and + BelongsToSel(molids[n], molid_selection)): + #tokens[2+n] = '$atom:id'+tokens[2+n] + #tokens[2+n] = '$atom:'+atomids_int2name[atomids[n]] + some_in_selection = True + else: + in_selections = False + if in_selections: + l_data_bonds.append( + (' ' * indent) + (' '.join(tokens) + '\n')) + elif some_in_selection: + sys.stderr.write( + 'WARNING: SELECTION BREAKS BONDS\n') + sys.stderr.write( + ' (between atom ids: ') + + for n in range(0, 2): + sys.stderr.write(str(atomids[n]) + ' ') + sys.stderr.write(')\n' + ' The atoms you selected are bonded\n' + ' to other atoms you didn\'t select.\n' + ' Are you sure you selected the correct atoms?\n') + no_warnings = False + + elif (line.strip() == 'Angles'): + sys.stderr.write(' reading \"' + line.strip() + '\"\n') + while lex: + line = lex.ReadLine() + if line == '': + break + if line.strip() in data_file_header_names: + lex.push_raw_text(line) # <- Save line for later + break + tokens = line.strip().split() + if len(tokens) > 0: + if (len(tokens) < 5): + raise InputError('Error: near or before ' + ErrorLeader(infile, lineno) + '\n' + ' Nonsensical line in Angles section:\n' + ' \"' + line.strip() + '\"\n') + #tokens[0] = '$angle:id'+tokens[0] + #tokens[1] = '@angle:type'+tokens[1] + atomids = [None, None, None] + atomtypes = [None, None, None] + molids = [None, None, None] + in_selections = True + some_in_selection = False + for n in range(0, 3): + atomids[n] = Intify(tokens[2 + n]) + if atomids[n] in atomid2type: + atomtypes[n] = atomid2type[atomids[n]] + if atomids[n] in atomid2mol: + molids[n] = atomid2mol[atomids[n]] + if (BelongsToSel(atomids[n], atomid_selection) and + BelongsToSel(atomtypes[n], atomtype_selection) and + BelongsToSel(molids[n], molid_selection)): + #tokens[2+n] = '$atom:id'+tokens[2+n] + #tokens[2+n] = '$atom:'+atomids_int2name[atomids[n]] + some_in_selection = True + else: + in_selections = False + if in_selections: + l_data_angles.append( + (' ' * indent) + (' '.join(tokens) + '\n')) + elif some_in_selection: + sys.stderr.write( + 'WARNING: SELECTION BREAKS ANGLES\n') + sys.stderr.write( + ' (between atom ids: ') + for n in range(0, 3): + sys.stderr.write(str(atomids[n]) + ' ') + sys.stderr.write(')\n' + ' The atoms you selected participate in 3-body \"Angle\"\n' + ' interactions with other atoms you didn\'t select.\n' + ' (They will be ignored.)\n' + ' Are you sure you selected the correct atoms?\n') + no_warnings = False + + elif (line.strip() == 'Dihedrals'): + sys.stderr.write(' reading \"' + line.strip() + '\"\n') + while lex: + line = lex.ReadLine() + if line.strip() in data_file_header_names: + lex.push_raw_text(line) # <- Save line for later + break + tokens = line.strip().split() + if len(tokens) > 0: + if (len(tokens) < 6): + raise InputError('Error: near or before ' + ErrorLeader(infile, lineno) + '\n' + ' Nonsensical line in Dihedrals section:\n' + ' \"' + line.strip() + '\"\n') + #tokens[0] = '$dihedral:id'+tokens[0] + #tokens[1] = '@dihedral:type'+tokens[1] + atomids = [None, None, None, None] + atomtypes = [None, None, None, None] + molids = [None, None, None, None] + in_selections = True + some_in_selection = False + for n in range(0, 4): + atomids[n] = Intify(tokens[2 + n]) + if atomids[n] in atomid2type: + atomtypes[n] = atomid2type[atomids[n]] + if atomids[n] in atomid2mol: + molids[n] = atomid2mol[atomids[n]] + if (BelongsToSel(atomids[n], atomid_selection) and + BelongsToSel(atomtypes[n], atomtype_selection) and + BelongsToSel(molids[n], molid_selection)): + #tokens[2+n] = '$atom:id'+tokens[2+n] + #tokens[2+n] = '$atom:'+atomids_int2name[atomids[n]] + some_in_selection = True + else: + in_selections = False + if in_selections: + l_data_dihedrals.append( + (' ' * indent) + (' '.join(tokens) + '\n')) + elif some_in_selection: + sys.stderr.write( + 'WARNING: SELECTION BREAKS DIHEDRALS\n') + sys.stderr.write( + ' (between atom ids: ') + for n in range(0, 4): + sys.stderr.write(str(atomids[n]) + ' ') + sys.stderr.write(')\n' + ' The atoms you selected participate in 4-body \"Dihedral\"\n' + ' interactions with other atoms you didn\'t select.\n' + ' (They will be ignored.)\n' + ' Are you sure you selected the correct atoms?\n') + no_warnings = False + + elif (line.strip() == 'Impropers'): + sys.stderr.write(' reading \"' + line.strip() + '\"\n') + while lex: + line = lex.ReadLine() + if line.strip() in data_file_header_names: + lex.push_raw_text(line) # <- Save line for later + break + tokens = line.strip().split() + if len(tokens) > 0: + if (len(tokens) < 6): + raise InputError('Error: near or before ' + ErrorLeader(infile, lineno) + '\n' + ' Nonsensical line in Impropers section:\n' + ' \"' + line.strip() + '\"\n') + #tokens[0] = '$improper:id'+tokens[0] + #tokens[1] = '@improper:type'+tokens[1] + atomids = [None, None, None, None] + atomtypes = [None, None, None, None] + molids = [None, None, None, None] + in_selections = True + some_in_selection = False + for n in range(0, 4): + atomids[n] = Intify(tokens[2 + n]) + if atomids[n] in atomid2type: + atomtypes[n] = atomid2type[atomids[n]] + if atomids[n] in atomid2mol: + molids[n] = atomid2mol[atomids[n]] + if (BelongsToSel(atomids[n], atomid_selection) and + BelongsToSel(atomtypes[n], atomtype_selection) and + BelongsToSel(molids[n], molid_selection)): + #tokens[2+n] = '$atom:id'+tokens[2+n] + #tokens[2+n] = '$atom:'+atomids_int2name[atomids[n]] + some_in_selection = True + else: + in_selections = False + if in_selections: + l_data_impropers.append( + (' ' * indent) + (' '.join(tokens) + '\n')) + elif some_in_selection: + sys.stderr.write( + 'WARNING: SELECTION BREAKS IMPROPERS\n') + sys.stderr.write( + ' (between atom ids: ') + for n in range(0, 4): + sys.stderr.write(str(atomids[n]) + ' ') + sys.stderr.write(')\n' + ' The atoms you selected participate in 4-body \"Improper\"\n' + ' interactions with other atoms you didn\'t select.\n' + ' (They will be ignored.)\n' + ' Are you sure you selected the correct atoms?\n') + no_warnings = False + + elif (line.strip() == 'Bond Coeffs'): + sys.stderr.write(' reading \"' + line.strip() + '\"\n') + while lex: + line = lex.ReadLine() + if line.strip() in data_file_header_names: + lex.push_raw_text(line) # <- Save line for later + break + tokens = line.strip().split() + if len(tokens) > 0: + #tokens[0] = '@bond:type'+tokens[0] + l_data_bond_coeffs.append( + (' ' * indent) + (' '.join(tokens) + '\n')) + + elif (line.strip() == 'Angle Coeffs'): + sys.stderr.write(' reading \"' + line.strip() + '\"\n') + while lex: + line = lex.ReadLine() + if line.strip() in data_file_header_names: + lex.push_raw_text(line) # <- Save line for later + break + tokens = line.strip().split() + if len(tokens) > 0: + #tokens[0] = '@angle:type'+tokens[0] + l_data_angle_coeffs.append( + (' ' * indent) + (' '.join(tokens) + '\n')) + + elif (line.strip() == 'Dihedral Coeffs'): + sys.stderr.write(' reading \"' + line.strip() + '\"\n') + while lex: + line = lex.ReadLine() + if line.strip() in data_file_header_names: + lex.push_raw_text(line) # <- Save line for later + break + tokens = line.strip().split() + if len(tokens) > 0: + #tokens[0] = '@dihedral:type'+tokens[0] + l_data_dihedral_coeffs.append( + (' ' * indent) + (' '.join(tokens) + '\n')) + + elif (line.strip() == 'Improper Coeffs'): + sys.stderr.write(' reading \"' + line.strip() + '\"\n') + while lex: + line = lex.ReadLine() + if line.strip() in data_file_header_names: + lex.push_raw_text(line) # <- Save line for later + break + tokens = line.strip().split() + if len(tokens) > 0: + #tokens[0] = '@improper:type'+tokens[0] + l_data_improper_coeffs.append( + (' ' * indent) + (' '.join(tokens) + '\n')) + + elif (line.strip() == 'Pair Coeffs'): + sys.stderr.write(' reading \"' + line.strip() + '\"\n') + some_pair_coeffs_read = True + while lex: + line = lex.ReadLine() + if line.strip() in data_file_header_names: + lex.push_raw_text(line) # <- Save line for later + break + tokens = line.strip().split() + if len(tokens) > 0: + if (len(tokens) < 2): + raise InputError('Error: near or before ' + ErrorLeader(infile, lineno) + '\n' + ' Nonsensical line in Pair Coeffs section:\n' + ' \"' + line.strip() + '\"\n') + atomtype_i_str = tokens[0] + if '*' in atomtype_i_str: + raise InputError('PROBLEM near or before ' + ErrorLeader(infile, lineno) + '\n' + ' As of 2015-8, moltemplate forbids use of the "\*\" wildcard\n' + ' character in the \"Pair Coeffs\" section.\n') + else: + i = int(atomtype_i_str) + if ((not i) or + BelongsToSel(i, atomtype_selection)): + i_str = '@atom:type' + str(i) + tokens[0] = i_str + l_data_pair_coeffs.append( + (' ' * indent) + (' '.join(tokens) + '\n')) + + elif (line.strip() == 'PairIJ Coeffs'): + sys.stderr.write(' reading \"' + line.strip() + '\"\n') + some_pair_coeffs_read = True + while lex: + line = lex.ReadLine() + if line.strip() in data_file_header_names: + lex.push_raw_text(line) # <- Save line for later + break + tokens = line.strip().split() + if len(tokens) > 0: + if (len(tokens) < 2): + raise InputError('Error: near or before ' + ErrorLeader(infile, lineno) + '\n' + ' Nonsensical line in Pair Coeffs section:\n' + ' \"' + line.strip() + '\"\n') + atomtype_i_str = tokens[0] + atomtype_j_str = tokens[1] + if (('*' in atomtype_i_str) or ('*' in atomtype_j_str)): + raise InputError('PROBLEM near or before ' + ErrorLeader(infile, lineno) + '\n' + ' As of 2015-8, moltemplate forbids use of the "\*\" wildcard\n' + ' character in the \"PairIJ Coeffs\" section.\n') + else: + i = int(atomtype_i_str) + j = int(atomtype_j_str) + if (((not i) or BelongsToSel(i, atomtype_selection)) and + ((not j) or BelongsToSel(j, atomtype_selection))): + i_str = '@atom:type' + str(i) + j_str = '@atom:type' + str(j) + tokens[0] = i_str + tokens[1] = j_str + l_data_pair_coeffs.append( + (' ' * indent) + (' '.join(tokens) + '\n')) + + elif (tokens[0] == 'pair_coeff'): + some_pair_coeffs_read = True + if (len(tokens) < 3): + raise InputError('Error: near or before ' + ErrorLeader(infile, lineno) + '\n' + ' Nonsensical pair_coeff command:\n' + ' \"' + line.strip() + '\"\n') + l_in_pair_coeffs.append(' ' * indent + line.strip()) + + elif (tokens[0] == 'mass'): + some_pair_coeffs_read = True + if (len(tokens) < 3): + raise InputError('Error: near or before ' + ErrorLeader(infile, lineno) + '\n' + ' Nonsensical \"mass\" command:\n' + ' \"' + line.strip() + '\"\n') + l_in_masses.append( + (' ' * indent) + (' '.join(tokens) + '\n')) + + elif (tokens[0] == 'bond_coeff'): + if (len(tokens) < 2): + raise InputError('Error: near or before ' + ErrorLeader(infile, lineno) + '\n' + ' Nonsensical bond_coeff command:\n' + ' \"' + line.strip() + '\"\n') + #tokens[1] = '@bond:type'+tokens[1] + l_in_bond_coeffs.append( + (' ' * indent) + (' '.join(tokens) + '\n')) + + elif (tokens[0] == 'angle_coeff'): + if (len(tokens) < 2): + raise InputError('Error: near or before ' + ErrorLeader(infile, lineno) + '\n' + ' Nonsensical angle_coeff command:\n' + ' \"' + line.strip() + '\"\n') + #tokens[1] = '@angle:type'+tokens[1] + l_in_angle_coeffs.append( + (' ' * indent) + (' '.join(tokens) + '\n')) + + elif (tokens[0] == 'dihedral_coeff'): + if (len(tokens) < 2): + raise InputError('Error: near or before ' + ErrorLeader(infile, lineno) + '\n' + ' Nonsensical dihedral_coeff command:\n' + ' \"' + line.strip() + '\"\n') + #tokens[1] = '@dihedral:type'+tokens[1] + l_in_dihedral_coeffs.append( + (' ' * indent) + (' '.join(tokens) + '\n')) + elif (tokens[0] == 'improper_coeff'): + if (len(tokens) < 2): + raise InputError('Error: near or before ' + ErrorLeader(infile, lineno) + '\n' + ' Nonsensical improper_coeff command:\n' + ' \"' + line.strip() + '\"\n') + #tokens[1] = '@improper:type'+tokens[1] + l_in_improper_coeffs.append( + (' ' * indent) + (' '.join(tokens) + '\n')) + + # -- class2 force fields -- + elif (line.strip() == 'BondBond Coeffs'): + sys.stderr.write(' reading \"' + line.strip() + '\"\n') + while lex: + line = lex.ReadLine() + if line.strip() in data_file_header_names: + lex.push_raw_text(line) # <- Save line for later + break + tokens = line.strip().split() + if len(tokens) > 0: + #tokens[0] = '@angle:type'+tokens[0] + l_data_bondbond_coeffs.append( + (' ' * indent) + (' '.join(tokens) + '\n')) + + elif (line.strip() == 'BondAngle Coeffs'): + sys.stderr.write(' reading \"' + line.strip() + '\"\n') + while lex: + line = lex.ReadLine() + if line.strip() in data_file_header_names: + lex.push_raw_text(line) # <- Save line for later + break + tokens = line.strip().split() + if len(tokens) > 0: + #tokens[0] = '@angle:type'+tokens[0] + l_data_bondangle_coeffs.append( + (' ' * indent) + (' '.join(tokens) + '\n')) + + elif (line.strip() == 'MiddleBondTorsion Coeffs'): + sys.stderr.write(' reading \"' + line.strip() + '\"\n') + while lex: + line = lex.ReadLine() + if line.strip() in data_file_header_names: + lex.push_raw_text(line) # <- Save line for later + break + tokens = line.strip().split() + if len(tokens) > 0: + #tokens[0] = '@dihedral:type'+tokens[0] + l_data_middlebondtorsion_coeffs.append( + (' ' * indent) + (' '.join(tokens) + '\n')) + + elif (line.strip() == 'EndBondTorsion Coeffs'): + sys.stderr.write(' reading \"' + line.strip() + '\"\n') + while lex: + line = lex.ReadLine() + if line.strip() in data_file_header_names: + lex.push_raw_text(line) # <- Save line for later + break + tokens = line.strip().split() + if len(tokens) > 0: + #tokens[0] = '@dihedral:type'+tokens[0] + l_data_endbondtorsion_coeffs.append( + (' ' * indent) + (' '.join(tokens) + '\n')) + + elif (line.strip() == 'AngleTorsion Coeffs'): + sys.stderr.write(' reading \"' + line.strip() + '\"\n') + while lex: + line = lex.ReadLine() + if line.strip() in data_file_header_names: + lex.push_raw_text(line) # <- Save line for later + break + tokens = line.strip().split() + if len(tokens) > 0: + #tokens[0] = '@dihedral:type'+tokens[0] + l_data_angletorsion_coeffs.append( + (' ' * indent) + (' '.join(tokens) + '\n')) + + elif (line.strip() == 'AngleAngleTorsion Coeffs'): + sys.stderr.write(' reading \"' + line.strip() + '\"\n') + while lex: + line = lex.ReadLine() + if line.strip() in data_file_header_names: + lex.push_raw_text(line) # <- Save line for later + break + tokens = line.strip().split() + if len(tokens) > 0: + #tokens[0] = '@dihedral:type'+tokens[0] + l_data_angleangletorsion_coeffs.append( + (' ' * indent) + (' '.join(tokens) + '\n')) + + elif (line.strip() == 'BondBond13 Coeffs'): + sys.stderr.write(' reading \"' + line.strip() + '\"\n') + while lex: + line = lex.ReadLine() + if line.strip() in data_file_header_names: + lex.push_raw_text(line) # <- Save line for later + break + tokens = line.strip().split() + if len(tokens) > 0: + #tokens[0] = '@dihedral:type'+tokens[0] + l_data_bondbond13_coeffs.append( + (' ' * indent) + (' '.join(tokens) + '\n')) + + elif (line.strip() == 'AngleAngle Coeffs'): + sys.stderr.write(' reading \"' + line.strip() + '\"\n') + while lex: + line = lex.ReadLine() + if line.strip() in data_file_header_names: + lex.push_raw_text(line) # <- Save line for later + break + tokens = line.strip().split() + if len(tokens) > 0: + #tokens[0] = '@improper:type'+tokens[0] + l_data_angleangle_coeffs.append( + (' ' * indent) + (' '.join(tokens) + '\n')) + + elif (line.strip() == 'Angles By Type'): + sys.stderr.write(' reading \"' + line.strip() + '\"\n') + while lex: + line = lex.ReadLine() + if line.strip() in data_file_header_names: + lex.push_raw_text(line) # <- Save line for later + break + tokens = line.strip().split() + if len(tokens) > 0: + tokens[0] = '@angle:type' + tokens[0] + l_data_angles_by_type.append( + (' ' * indent) + (' '.join(tokens) + '\n')) + + elif (line.strip() == 'Dihedrals By Type'): + sys.stderr.write(' reading \"' + line.strip() + '\"\n') + while lex: + line = lex.ReadLine() + if line.strip() in data_file_header_names: + lex.push_raw_text(line) # <- Save line for later + break + tokens = line.strip().split() + if len(tokens) > 0: + tokens[0] = '@dihedral:type' + tokens[0] + l_data_dihedrals_by_type.append( + (' ' * indent) + (' '.join(tokens) + '\n')) + + elif (line.strip() == 'Impropers By Type'): + sys.stderr.write(' reading \"' + line.strip() + '\"\n') + while lex: + line = lex.ReadLine() + if line.strip() in data_file_header_names: + lex.push_raw_text(line) # <- Save line for later + break + tokens = line.strip().split() + if len(tokens) > 0: + tokens[0] = '@improper:type' + tokens[0] + l_data_impropers_by_type.append( + (' ' * indent) + (' '.join(tokens) + '\n')) + + # Figure out the size of the simulation box boundary: + elif ((len(tokens) == 4) and + (tokens[2] == 'xlo') and + (tokens[3] == 'xhi') and + IsNumber(tokens[0]) and + IsNumber(tokens[1])): + boundary_xlo = float(tokens[0]) + boundary_xhi = float(tokens[1]) + + elif ((len(tokens) == 4) and + (tokens[2] == 'ylo') and + (tokens[3] == 'yhi') and + IsNumber(tokens[0]) and + IsNumber(tokens[1])): + boundary_ylo = float(tokens[0]) + boundary_yhi = float(tokens[1]) + + elif ((len(tokens) == 4) and + (tokens[2] == 'zlo') and + (tokens[3] == 'zhi') and + IsNumber(tokens[0]) and + IsNumber(tokens[1])): + boundary_zlo = float(tokens[0]) + boundary_zhi = float(tokens[1]) + + elif ((len(tokens) == 6) and + (tokens[3] == 'xy') and + (tokens[4] == 'xz') and + (tokens[5] == 'yz') and + IsNumber(tokens[0]) and + IsNumber(tokens[1]) and + IsNumber(tokens[2])): + boundary_xy = float(tokens[0]) + boundary_xz = float(tokens[1]) + boundary_yz = float(tokens[2]) + + elif (tokens[0] == 'group'): + if (len(tokens) < 3): + raise InputError('Error: near or before ' + ErrorLeader(infile, lineno) + '\n' + ' Nonsensical group command:\n' + ' \"' + line.strip() + '\"\n') + l_in_group.append( + (' ' * indent) + (' '.join(tokens) + '\n')) + + elif (tokens[0] == 'set'): + if (len(tokens) < 3): + raise InputError('Error: near or before ' + ErrorLeader(infile, lineno) + '\n' + ' Nonsensical set command:\n' + ' \"' + line.strip() + '\"\n') + l_in_set.append( + (' ' * indent) + (' '.join(tokens) + '\n')) + + elif ((tokens[0] == 'fix') and (len(tokens) >= 4)): + if (tokens[3].find('rigid') == 0): + if (len(tokens) < 6): + raise InputError('Error: near or before ' + ErrorLeader(infile, lineno) + '\n' + ' Nonsensical ' + + tokens[0] + ' ' + + tokens[3] + ' command:\n' + ' \"' + line.strip() + '\"\n') + l_in_fix_rigid.append( + (' ' * indent) + (' '.join(tokens) + '\n')) + elif (tokens[3].find('shake') == 0): + if (len(tokens) < 7): + raise InputError('Error: near or before ' + ErrorLeader(infile, lineno) + '\n' + ' Nonsensical ' + + tokens[0] + ' ' + + tokens[3] + ' command:\n' + ' \"' + line.strip() + '\"\n') + l_in_fix_shake.append( + (' ' * indent) + (' '.join(tokens) + '\n')) + elif (tokens[3].find('poems') == 0): + if (len(tokens) < 4): + raise InputError('Error: near or before ' + ErrorLeader(infile, lineno) + '\n' + ' Nonsensical ' + + tokens[0] + ' ' + + tokens[3] + ' command:\n' + ' \"' + line.strip() + '\"\n') + l_in_fix_poems.append( + (' ' * indent) + (' '.join(tokens) + '\n')) + elif (tokens[3].find('qeq') == 0): + if (len(tokens) < 8): + raise InputError('Error: near or before ' + ErrorLeader(infile, lineno) + '\n' + ' Nonsensical ' + + tokens[0] + ' ' + + tokens[3] + ' command:\n' + ' \"' + line.strip() + '\"\n') + l_in_fix_qeq.append( + (' ' * indent) + (' '.join(tokens) + '\n')) + elif (tokens[3].find('qmmm') == 0): + if (len(tokens) < 8): + raise InputError('Error: near or before ' + ErrorLeader(infile, lineno) + '\n' + ' Nonsensical ' + + tokens[0] + ' ' + + tokens[3] + ' command:\n' + ' \"' + line.strip() + '\"\n') + l_in_fix_qmmm.append( + (' ' * indent) + (' '.join(tokens) + '\n')) + elif (tokens[3].find('restrain') == 0): + sys.stderr('WARNING: fix \"' + tokens[3] + '\" commands are NOT understood by ' + g_program_name + '.\n' + ' If you need restraints, add them to your final .LT file (eg. \"system.lt\"),\n' + ' (And be sure to use unique (full, long) moltemplate names for each $atom:.)\n' + ' Ignoring line \"' + line.strip() + '\"\n') + + else: + sys.stderr.write(' Ignoring line \"' + + line.strip() + '\"\n') + + sys.stderr.write('\n\n') + + sys.stderr.write(' processing \"Atoms\" section (') + + # post-processing: + + if len(l_data_masses) == 0: + infer_types_from_comments = False + + # Pass 1 through l_data_atoms: + # Now do a second-pass throught the "l_data_atoms" section, and + # finish dealing with "infer_types_from_comments". + # During this pass, peplace the atomtype names and atomid names with + # atom type names which were inferred from comments read earlier. + + sys.stderr.write('pass1') + for i in range(0, len(l_data_atoms)): + tokens = l_data_atoms[i].split() + atomid = tokens[i_atomid] + if atomid.find('$atom:') == 0: + atomid = atomid[6:] + # convert to an integer + atomid = Intify(atomid) + + if infer_types_from_comments: + atomtype = tokens[i_atomtype] + # remove the "@atom:" prefix (we will put it back later) + if atomtype.find('@atom:') == 0: + atomtype = atomtype[6:] + # convert to an integer + atomtype = Intify(atomtype) + atomtype_name = atomtypes_int2name[atomtype] + if atomtype in atomids_by_type: + l_atomids = atomids_by_type[atomtype] + prev_count = len(l_atomids) + # lookup the most recently added atom of this type: + #prev_atomid_name = l_atomids[-1] + #ic = prev_atomid_name.rfind('_') + #prev_count = int(prev_atomid_name[ic+1:]) + atomid_name = atomtype_name + '_' + str(prev_count + 1) + atomids_by_type[atomtype].append(atomid) + else: + atomids_by_type[atomtype] = [atomid] + atomid_name = atomtype_name + '_1' + atomids_int2name[atomid] = atomid_name + #atomids_name2str[atomid_name] = atomid + else: + atomids_int2name[atomid] = 'id' + str(atomid) + + sys.stderr.write(', pass2') + # Pass 2: If any atom types only appear once, simplify their atomid names. + for i in range(0, len(l_data_atoms)): + tokens = l_data_atoms[i].split() + + # remove the "@atom:" prefix (we will put it back later) + atomtype = tokens[i_atomtype] + if atomtype.find('@atom:') == 0: + atomtype = atomtype[6:] + atomtype = Intify(atomtype) + if infer_types_from_comments: + if len(atomids_by_type[atomtype]) == 1: + atomid = tokens[i_atomid] + if atomid.find('$atom:') == 0: + atomid = atomid[6:] + atomid = Intify(atomid) + atomtype_name = atomtypes_int2name[atomtype] + atomids_int2name[atomid] = atomtype_name + + sys.stderr.write(', pass3') + # Pass 3: substitute the atomid names and atom type names into l_data_atoms + for i in range(0, len(l_data_atoms)): + tokens = l_data_atoms[i].split() + atomid = tokens[i_atomid] + if atomid.find('$atom:') == 0: + atomid = atomid[6:] + # convert to an integer + atomid = Intify(atomid) + atomtype = tokens[i_atomtype] + if atomtype.find('@atom:') == 0: + atomtype = atomtype[6:] + atomtype = Intify(atomtype) + tokens = l_data_atoms[i].split() + tokens[i_atomid] = '$atom:' + atomids_int2name[atomid] + tokens[i_atomtype] = '@atom:' + atomtypes_int2name[atomtype] + l_data_atoms[i] = (' ' * indent) + (' '.join(tokens) + '\n') + sys.stderr.write(')\n') + + if len(l_data_atoms) == 0: + raise InputError('Error(' + g_program_name + '): You have no atoms in you selection!\n' + '\n' + ' Either you have chosen a set of atoms, molecules, or atom types which\n' + ' does not exist, or there is a problem with (the format of) your\n' + ' arguments. Check the documentation and examples.\n') + + # --- Now delete items that were not selected from the other lists --- + + # --- MASSES --- + + # delete masses for atom types we don't care about anymore: + i_line = 0 + while i_line < len(l_data_masses): + line = l_data_masses[i_line] + tokens = line.strip().split() + atomtype = Intify(tokens[0]) + if ((not (atomtype in needed_atomtypes)) and + (not ((len(atomtype_selection) > 0) and + BelongsToSel(atomtype, atomtype_selection)))): + del l_data_masses[i_line] + else: + atomtype_name = atomtypes_int2name[atomtype] + tokens[0] = '@atom:' + atomtype_name + l_data_masses[i_line] = (' ' * indent) + (' '.join(tokens) + '\n') + i_line += 1 + + # --- PAIR COEFFS --- + + # delete data_pair_coeffs for atom types we don't care about anymore: + i_line = 0 + while i_line < len(l_data_pair_coeffs): + line = l_data_pair_coeffs[i_line] + tokens = line.strip().split() + assert(len(tokens) > 0) + split_colon = tokens[0].split(':') + assert(len(split_colon) == 2) + atomtype = Intify(split_colon[1]) + if ((not (atomtype in needed_atomtypes)) and + (not ((len(atomtype_selection) > 0) and + BelongsToSel(atomtype, atomtype_selection)))): + del l_data_pair_coeffs[i_line] + else: + i_line += 1 + + # delete data_pairij_coeffs for atom types we don't care about anymore: + i_line = 0 + while i_line < len(l_data_pairij_coeffs): + line = l_data_pairij_coeffs[i_line] + tokens = line.strip().split() + assert(len(tokens) > 0) + split_colon_I = tokens[0].split(':') + assert(len(split_colon_I) == 2) + atomtype_I = Intify(split_colon_I[1]) + split_colon_J = tokens[1].split(':') + assert(len(split_colon_J) == 2) + atomtype_J = Intify(split_colon_J[1]) + if (((not (atomtype_I in needed_atomtypes)) and + (not ((len(atomtype_selection) > 0) and + BelongsToSel(atomtype_I, atomtype_selection)))) + or + ((not (atomtype_J in needed_atomtypes)) and + (not ((len(atomtype_selection) > 0) and + BelongsToSel(atomtype_J, atomtype_selection))))): + del l_data_pairij_coeffs[i_line] + else: + i_line += 1 + + # delete in_pair_coeffs for atom we don't care about anymore: + i_line = 0 + while i_line < len(l_in_pair_coeffs): + line = l_in_pair_coeffs[i_line] + tokens = line.strip().split() + atomtype_i_str = tokens[1] + atomtype_j_str = tokens[2] + # if (('*' in atomtype_i_str) or + # ('*' in atomtype_j_str)): + # sys.stderr.write('WARNING: near or before '+ErrorLeader(infile, lineno)+'\n' + # ' pair_coeff command contains a \"*\" character.\n' + # ' Keep in mind that using moltemplate.sh you can manually change the\n' + # ' numbers assigned to each atom type (when using -a or -b). Make sure\n' + # ' nor to accidentally change the order of atom types in one of these\n' + # ' pair_coeff commands. For example, commands like\n' + # ' pair_coeff 10*4 20*10 0.15 3.6\n' + # ' can be generated by moltemplate.sh, however\n' + # ' they may be rejected by LAMMPS (because LAMMPS prefers this\n' + # ' pair_coeff 4*10 10*20 0.15 3.6)\n' + # ' Later on, you may want to check to make sure moltemplate.sh\n' + # ' is not doing this. (Fortunately you never have to worry unless\n' + # ' you are using the -a or -b arguments with moltemplate.sh)\n') + + if ('*' in atomtype_i_str): + atomtype_i_tokens = atomtype_i_str.split('*') + + if atomtype_i_tokens[0] == '': + if (min_sel_atomtype and + (min_sel_atomtype < min_needed_atomtype)): + i_a = min_sel_atomtype + else: + i_a = min_needed_atomtype + else: + i_a = Intify(atomtype_i_tokens[0]) + + if atomtype_i_tokens[1] == '': + if (max_sel_atomtype and + (max_sel_atomtype > max_needed_atomtype)): + i_b = max_sel_atomtype + else: + i_b = max_needed_atomtype + else: + i_b = Intify(atomtype_i_tokens[1]) + + else: + i_a = i_b = Intify(atomtype_i_str) + + i_a_final = None + i_b_final = None + for i in range(i_a, i_b + 1): + if ((i in needed_atomtypes) or (min_sel_atomtype <= i)): + i_a_final = i + break + for i in reversed(range(i_a, i_b + 1)): + if ((i in needed_atomtypes) or (max_sel_atomtype >= i)): + i_b_final = i + break + + # if i_a_final and i_b_final: + # if i_a_final == i_b_final: + # i_str = '@atom:type'+str(i_a_final) + # tokens[1] = i_str + # else: + # i_str = '@{atom:type'+str(i_a_final)+'}*@{atom:type'+str(i_b_final)+'}' + + if ('*' in atomtype_j_str): + atomtype_j_tokens = atomtype_j_str.split('*') + + if atomtype_j_tokens[0] == '': + if (min_sel_atomtype and + (min_sel_atomtype < min_needed_atomtype)): + j_a = min_sel_atomtype + else: + j_a = min_needed_atomtype + else: + j_a = Intify(atomtype_j_tokens[0]) + + if atomtype_j_tokens[1] == '': + if (max_sel_atomtype and + (max_sel_atomtype > max_needed_atomtype)): + j_b = max_sel_atomtype + else: + j_b = max_needed_atomtype + else: + j_b = Intify(atomtype_j_tokens[1]) + + else: + j_a = j_b = Intify(atomtype_j_str) + + j_a_final = None + j_b_final = None + for j in range(j_a, j_b + 1): + if ((j in needed_atomtypes) or (min_sel_atomtype <= j)): + j_a_final = j + break + for j in reversed(range(j_a, j_b + 1)): + if ((j in needed_atomtypes) or (max_sel_atomtype >= j)): + j_b_final = j + break + + # if j_a_final and j_b_final: + # if j_a_final == j_b_final: + # j_str = '@atom:type'+str(j_a_final) + # tokens[1] = j_str + # else: + # j_str = '@{atom:type'+str(j_a_final)+'}*@{atom:type'+str(j_b_final)+'}' + + if not (i_a_final and i_b_final and j_a_final and j_b_final): + del l_in_pair_coeffs[i_line] + elif (('*' in atomtype_i_str) or ('*' in atomtype_j_str)): + del l_in_pair_coeffs[i_line] + for i in range(i_a_final, i_b_final + 1): + for j in range(j_a_final, j_b_final + 1): + if j >= i: + #tokens[1] = '@atom:type'+str(i) + #tokens[2] = '@atom:type'+str(j) + tokens[1] = '@atom:' + atomtypes_int2name[i] + tokens[2] = '@atom:' + atomtypes_int2name[j] + l_in_pair_coeffs.insert(i_line, + (' ' * indent) + (' '.join(tokens) + '\n')) + i_line += 1 + else: + #tokens[1] = '@atom:type'+tokens[1] + #tokens[2] = '@atom:type'+tokens[2] + tokens[1] = '@atom:' + atomtypes_int2name[int(tokens[1])] + tokens[2] = '@atom:' + atomtypes_int2name[int(tokens[2])] + l_in_pair_coeffs[i_line] = ( + ' ' * indent) + (' '.join(tokens) + '\n') + i_line += 1 + + # delete mass commands for atom types we don't care about anymore: + i_line = 0 + while i_line < len(l_in_masses): + line = l_in_masses[i_line] + tokens = line.strip().split() + atomtype_i_str = tokens[1] + # if (('*' in atomtype_i_str) or + # ('*' in atomtype_j_str)): + # sys.stderr.write('WARNING: near or before '+ErrorLeader(infile, lineno)+'\n' + # ' pair_coeff command contains a \"*\" character.\n' + # ' Keep in mind that using moltemplate.sh you can manually change the\n' + # ' numbers assigned to each atom type (when using -a or -b). Make sure\n' + # ' nor to accidentally change the order of atom types in one of these\n' + # ' pair_coeff commands. For example, commands like\n' + # ' pair_coeff 10*4 20*10 0.15 3.6\n' + # ' can be generated by moltemplate.sh, however\n' + # ' they may be rejected by LAMMPS (because LAMMPS prefers this\n' + # ' pair_coeff 4*10 10*20 0.15 3.6)\n' + # ' Later on, you may want to check to make sure moltemplate.sh\n' + # ' is not doing this. (Fortunately you never have to worry unless\n' + # ' you are using the -a or -b arguments with moltemplate.sh)\n') + + if ('*' in atomtype_i_str): + atomtype_i_tokens = atomtype_i_str.split('*') + + if atomtype_i_tokens[0] == '': + if (min_sel_atomtype and + (min_sel_atomtype < min_needed_atomtype)): + i_a = min_sel_atomtype + else: + i_a = min_needed_atomtype + else: + i_a = Intify(atomtype_i_tokens[0]) + + if atomtype_i_tokens[1] == '': + if (max_sel_atomtype and + (max_sel_atomtype > max_needed_atomtype)): + i_b = max_sel_atomtype + else: + i_b = max_needed_atomtype + else: + i_b = Intify(atomtype_i_tokens[1]) + + else: + i_a = i_b = Intify(atomtype_i_str) + + i_a_final = None + i_b_final = None + for i in range(i_a, i_b + 1): + if ((i in needed_atomtypes) or (min_sel_atomtype <= i)): + i_a_final = i + break + for i in reversed(range(i_a, i_b + 1)): + if ((i in needed_atomtypes) or (max_sel_atomtype >= i)): + i_b_final = i + break + # if i_a_final and i_b_final: + # if i_a_final == i_b_final: + # i_str = '@atom:type'+str(i_a_final) + # tokens[1] = i_str + # else: + # i_str = '@{atom:type'+str(i_a_final)+'}*@{atom:type'+str(i_b_final)+'}' + + if not (i_a_final and i_b_final and j_a_final and j_b_final): + del l_in_masses[i_line] + elif ('*' in atomtype_i_str): + del l_in_masses[i_line] + for i in range(i_a_final, i_b_final + 1): + #tokens[1] = '@atom:type'+str(i) + tokens[1] = '@atom:' + atomtypes_int2name[i] + # CONTINUEHERE: CHECK THAT THIS IS WORKING + l_in_masses.insert(i_line, (' ' * indent) + + (' '.join(tokens) + '\n')) + i_line += 1 + else: + assert(i_a == i_b) + #tokens[1] = '@atom:type'+str(i_a) + tokens[1] = '@atom:' + atomtypes_int2name[i_a] + # CONTINUEHERE: CHECK THAT THIS IS WORKING + l_in_masses[i_line] = (' ' * indent) + (' '.join(tokens) + '\n') + i_line += 1 + + # --- BONDS AND BOND COEFFS --- + + # delete lines from data_bonds if they involve atoms we don't care about + i_line = 0 + while i_line < len(l_data_bonds): + line = l_data_bonds[i_line] + tokens = line.strip().split() + assert(len(tokens) == 4) + + bondid = Intify(tokens[0]) + bondtype = Intify(tokens[1]) + atomid1 = Intify(tokens[2]) + atomid2 = Intify(tokens[3]) + # if ((atomid1 in needed_atomids) and + # (atomid2 in needed_atomids)): + tokens[0] = '$bond:id' + str(bondid) + tokens[1] = '@bond:type' + str(bondtype) + #tokens[2] = '$atom:id'+str(atomid1) + #tokens[3] = '$atom:id'+str(atomid2) + tokens[2] = '$atom:' + atomids_int2name[atomid1] + tokens[3] = '$atom:' + atomids_int2name[atomid2] + needed_bondids.add(bondid) + needed_bondtypes.add(bondtype) + l_data_bonds[i_line] = (' ' * indent) + (' '.join(tokens) + '\n') + i_line += 1 + # else: + # del l_data_bonds[i_line] + + # delete data_bond_coeffs for bondtypes we don't care about anymore: + i_line = 0 + while i_line < len(l_data_bond_coeffs): + line = l_data_bond_coeffs[i_line] + tokens = line.strip().split() + bondtype = Intify(tokens[0]) + if (not (bondtype in needed_bondtypes)): + del l_data_bond_coeffs[i_line] + else: + tokens[0] = '@bond:type' + str(bondtype) + l_data_bond_coeffs[i_line] = ( + ' ' * indent) + (' '.join(tokens) + '\n') + i_line += 1 + + # delete in_bond_coeffs for bondtypes we don't care about anymore: + for bondtype in needed_bondtypes: + assert(type(bondtype) is int) + if ((min_needed_bondtype == None) or + (min_needed_bondtype > bondtype)): + min_needed_bondtype = bondtype + if ((max_needed_bondtype == None) or + (max_needed_bondtype < bondtype)): + max_needed_bondtype = bondtype + for bondid in needed_bondids: + assert(type(bondid) is int) + if ((min_needed_bondid == None) or + (min_needed_bondid > bondid)): + min_needed_bondid = bondid + if ((max_needed_bondid == None) or + (max_needed_bondid < bondid)): + max_needed_bondid = bondid + + i_line = 0 + while i_line < len(l_in_bond_coeffs): + line = l_in_bond_coeffs[i_line] + tokens = line.strip().split() + bondtype_str = tokens[1] + + if ('*' in bondtype_str): + bondtype_tokens = bondtype_str.split('*') + + if bondtype_tokens[0] == '': + i_a = min_needed_bondtype + else: + i_a = Intify(bondtype_tokens[0]) + + if bondtype_tokens[1] == '': + i_b = max_needed_bondtype + else: + i_b = Intify(bondtype_tokens[1]) + + else: + i_a = Intify(bondtype_str) + i_b = i_a + + if i_a < min_needed_bondtype: + i_a = min_needed_bondtype + if i_b > max_needed_bondtype: + i_b = max_needed_bondtype + + # if i_a == i_b: + # i_str = '@bond:type'+str(i_a) + # tokens[1] = i_str + # else: + # i_str = '@{bond:type'+str(j_a)+'}*@{bond:type'+str(j_b)+'}' + + if ('*' in bondtype_str): + del l_in_bond_coeffs[i_line] + for i in range(i_a, i_b + 1): + if (i in needed_bondtypes): + tokens[1] = '@bond:type' + str(i) + l_in_bond_coeffs.insert(i_line, + (' ' * indent) + (' '.join(tokens) + '\n')) + i_line += 1 + else: + if i_a < i_b: + raise InputError('Error: number of bond types in data file is not consistent with the\n' + ' number of bond types you have define bond_coeffs for.\n') + if (i_a == i_b) and (i_a in needed_bondtypes): + tokens[1] = '@bond:type' + str(i_a) + l_in_bond_coeffs[i_line] = ( + ' ' * indent) + (' '.join(tokens) + '\n') + i_line += 1 + else: + del l_in_bond_coeffs[i_line] + + # --- ANGLES AND ANGLE COEFFS --- + + # delete lines from data_angles if they involve atoms we don't care about + i_line = 0 + while i_line < len(l_data_angles): + line = l_data_angles[i_line] + tokens = line.strip().split() + assert(len(tokens) == 5) + + angleid = Intify(tokens[0]) + angletype = Intify(tokens[1]) + atomid1 = Intify(tokens[2]) + atomid2 = Intify(tokens[3]) + atomid3 = Intify(tokens[4]) + # if ((atomid1 in needed_atomids) and + # (atomid2 in needed_atomids)): + tokens[0] = '$angle:id' + str(angleid) + tokens[1] = '@angle:type' + str(angletype) + #tokens[2] = '$atom:id'+str(atomid1) + #tokens[3] = '$atom:id'+str(atomid2) + #tokens[4] = '$atom:id'+str(atomid3) + tokens[2] = '$atom:' + atomids_int2name[atomid1] + tokens[3] = '$atom:' + atomids_int2name[atomid2] + tokens[4] = '$atom:' + atomids_int2name[atomid3] + needed_angleids.add(angleid) + needed_angletypes.add(angletype) + l_data_angles[i_line] = (' ' * indent) + (' '.join(tokens) + '\n') + i_line += 1 + # else: + # del l_data_angles[i_line] + + # delete data_angle_coeffs for angletypes we don't care about anymore: + i_line = 0 + while i_line < len(l_data_angle_coeffs): + line = l_data_angle_coeffs[i_line] + tokens = line.strip().split() + angletype = Intify(tokens[0]) + if (not (angletype in needed_angletypes)): + del l_data_angle_coeffs[i_line] + else: + tokens[0] = '@angle:type' + str(angletype) + l_data_angle_coeffs[i_line] = ( + ' ' * indent) + (' '.join(tokens) + '\n') + i_line += 1 + + # --- class2specific ---- + # Do the same for BondBond and BondAngle Coeffs: + # NOTE: LAMMPS INPUT SCRIPTS, ALL CLASS2 COEFFS are represented by: + # angle_coeff, dihedral_coeff, and improper_coeff commands. + # THERE ARE NO bondbond_coeff commands, or bondangle_coeff commands, + # etc..., so we dont have to worry about l_in_bondbond_coeffs,... + # delete data_bondbond_coeffs for angletypes we don't care about anymore: + i_line = 0 + while i_line < len(l_data_bondbond_coeffs): + line = l_data_bondbond_coeffs[i_line] + tokens = line.strip().split() + angletype = Intify(tokens[0]) + if (not (angletype in needed_angletypes)): + del l_data_bondbond_coeffs[i_line] + else: + tokens[0] = '@angle:type' + str(angletype) + l_data_bondbond_coeffs[i_line] = ( + ' ' * indent) + (' '.join(tokens) + '\n') + i_line += 1 + # delete data_bondangle_coeffs for angletypes we don't care about anymore: + i_line = 0 + while i_line < len(l_data_bondangle_coeffs): + line = l_data_bondangle_coeffs[i_line] + tokens = line.strip().split() + angletype = Intify(tokens[0]) + if (not (angletype in needed_angletypes)): + del l_data_bondangle_coeffs[i_line] + else: + tokens[0] = '@angle:type' + str(angletype) + l_data_bondangle_coeffs[i_line] = ( + ' ' * indent) + (' '.join(tokens) + '\n') + i_line += 1 + # --- end of class2specific ---- + + # delete in_angle_coeffs for angletypes we don't care about anymore: + for angletype in needed_angletypes: + assert(type(angletype) is int) + if ((min_needed_angletype == None) or + (min_needed_angletype > angletype)): + min_needed_angletype = angletype + if ((max_needed_angletype == None) or + (max_needed_angletype < angletype)): + max_needed_angletype = angletype + for angleid in needed_angleids: + assert(type(angleid) is int) + if ((min_needed_angleid == None) or + (min_needed_angleid > angleid)): + min_needed_angleid = angleid + if ((max_needed_angleid == None) or + (max_needed_angleid < angleid)): + max_needed_angleid = angleid + + i_line = 0 + while i_line < len(l_in_angle_coeffs): + line = l_in_angle_coeffs[i_line] + tokens = line.strip().split() + angletype_str = tokens[1] + + if ('*' in angletype_str): + angletype_tokens = angletype_str.split('*') + + if angletype_tokens[0] == '': + i_a = min_needed_angletype + else: + i_a = Intify(angletype_tokens[0]) + + if angletype_tokens[1] == '': + i_b = max_needed_angletype + else: + i_b = Intify(angletype_tokens[1]) + + else: + i_a = i_b = Intify(angletype_str) + + if i_a < min_needed_angletype: + i_a = min_needed_angletype + if i_b > max_needed_angletype: + i_b = max_needed_angletype + + # if i_a == i_b: + # i_str = '@angle:type'+str(i_a) + # tokens[1] = i_str + # else: + # i_str = '@{angle:type'+str(j_a)+'}*@{angle:type'+str(j_b)+'}' + + if ('*' in angletype_str): + del l_in_angle_coeffs[i_line] + for i in range(i_a, i_b + 1): + if (i in needed_angletypes): + tokens[1] = '@angle:type' + str(i) + l_in_angle_coeffs.insert(i_line, + (' ' * indent) + (' '.join(tokens) + '\n')) + i_line += 1 + else: + if i_a < i_b: + raise InputError('Error: number of angle types in data file is not consistent with the\n' + ' number of angle types you have define angle_coeffs for.\n') + if (i_a == i_b) and (i_a in needed_angletypes): + tokens[1] = '@angle:type' + str(i_a) + l_in_angle_coeffs[i_line] = ( + ' ' * indent) + (' '.join(tokens) + '\n') + i_line += 1 + else: + del l_in_angle_coeffs[i_line] + + # --- DIHEDRALS AND DIHEDRAL COEFFS --- + + # delete lines from data_dihedrals if they involve atoms we don't care + # about + i_line = 0 + while i_line < len(l_data_dihedrals): + line = l_data_dihedrals[i_line] + tokens = line.strip().split() + assert(len(tokens) == 6) + + dihedralid = Intify(tokens[0]) + dihedraltype = Intify(tokens[1]) + atomid1 = Intify(tokens[2]) + atomid2 = Intify(tokens[3]) + atomid3 = Intify(tokens[4]) + atomid4 = Intify(tokens[5]) + # if ((atomid1 in needed_atomids) and + # (atomid2 in needed_atomids)): + tokens[0] = '$dihedral:id' + str(dihedralid) + tokens[1] = '@dihedral:type' + str(dihedraltype) + #tokens[2] = '$atom:id'+str(atomid1) + #tokens[3] = '$atom:id'+str(atomid2) + #tokens[4] = '$atom:id'+str(atomid3) + #tokens[5] = '$atom:id'+str(atomid4) + tokens[2] = '$atom:' + atomids_int2name[atomid1] + tokens[3] = '$atom:' + atomids_int2name[atomid2] + tokens[4] = '$atom:' + atomids_int2name[atomid3] + tokens[5] = '$atom:' + atomids_int2name[atomid4] + + needed_dihedralids.add(dihedralid) + needed_dihedraltypes.add(dihedraltype) + l_data_dihedrals[i_line] = (' ' * indent) + (' '.join(tokens) + '\n') + i_line += 1 + # else: + # del l_data_dihedrals[i_line] + + # delete data_dihedral_coeffs for dihedraltypes we don't care about + # anymore: + i_line = 0 + while i_line < len(l_data_dihedral_coeffs): + line = l_data_dihedral_coeffs[i_line] + tokens = line.strip().split() + dihedraltype = Intify(tokens[0]) + if (not (dihedraltype in needed_dihedraltypes)): + del l_data_dihedral_coeffs[i_line] + else: + tokens[0] = '@dihedral:type' + str(dihedraltype) + l_data_dihedral_coeffs[i_line] = ( + ' ' * indent) + (' '.join(tokens) + '\n') + i_line += 1 + + # --- class2specific ---- + # Do the same for MiddleBondTorsion, EndBondTorsion, AngleTorsion, + # AngleAngleTorsion, and BondBond13 Coeffs + # NOTE: LAMMPS INPUT SCRIPTS, ALL CLASS2 COEFFS are represented by: + # angle_coeff, dihedral_coeff, and improper_coeff commands. + # THERE ARE NO "middlebondtorsion_coeff" commands, etc...so we don't + # have to worry about dealing with "l_in_middlebondtorsion_coeffs",... + # delete data_middlebondtorsion_coeffs for dihedraltypes we don't care + # about anymore: + i_line = 0 + while i_line < len(l_data_middlebondtorsion_coeffs): + line = l_data_middlebondtorsion_coeffs[i_line] + tokens = line.strip().split() + dihedraltype = Intify(tokens[0]) + if (not (dihedraltype in needed_dihedraltypes)): + del l_data_middlebondtorsion_coeffs[i_line] + else: + tokens[0] = '@dihedral:type' + str(dihedraltype) + l_data_middlebondtorsion_coeffs[i_line] = ( + ' ' * indent) + (' '.join(tokens) + '\n') + i_line += 1 + # delete data_endbondtorsion_coeffs for dihedraltypes we don't care about + # anymore: + i_line = 0 + while i_line < len(l_data_endbondtorsion_coeffs): + line = l_data_endbondtorsion_coeffs[i_line] + tokens = line.strip().split() + dihedraltype = Intify(tokens[0]) + if (not (dihedraltype in needed_dihedraltypes)): + del l_data_endbondtorsion_coeffs[i_line] + else: + tokens[0] = '@dihedral:type' + str(dihedraltype) + l_data_endbondtorsion_coeffs[i_line] = ( + ' ' * indent) + (' '.join(tokens) + '\n') + i_line += 1 + # delete data_angletorsion_coeffs for dihedraltypes we don't care about + # anymore: + i_line = 0 + while i_line < len(l_data_angletorsion_coeffs): + line = l_data_angletorsion_coeffs[i_line] + tokens = line.strip().split() + dihedraltype = Intify(tokens[0]) + if (not (dihedraltype in needed_dihedraltypes)): + del l_data_angletorsion_coeffs[i_line] + else: + tokens[0] = '@dihedral:type' + str(dihedraltype) + l_data_angletorsion_coeffs[i_line] = ( + ' ' * indent) + (' '.join(tokens) + '\n') + i_line += 1 + # delete data_angleangletorsion_coeffs for dihedraltypes we don't care + # about anymore: + i_line = 0 + while i_line < len(l_data_angleangletorsion_coeffs): + line = l_data_angleangletorsion_coeffs[i_line] + tokens = line.strip().split() + dihedraltype = Intify(tokens[0]) + if (not (dihedraltype in needed_dihedraltypes)): + del l_data_angleangletorsion_coeffs[i_line] + else: + tokens[0] = '@dihedral:type' + str(dihedraltype) + l_data_angleangletorsion_coeffs[i_line] = ( + ' ' * indent) + (' '.join(tokens) + '\n') + i_line += 1 + # delete data_bondbond13_coeffs for dihedraltypes we don't care about + # anymore: + i_line = 0 + while i_line < len(l_data_bondbond13_coeffs): + line = l_data_bondbond13_coeffs[i_line] + tokens = line.strip().split() + dihedraltype = Intify(tokens[0]) + if (not (dihedraltype in needed_dihedraltypes)): + del l_data_bondbond13_coeffs[i_line] + else: + tokens[0] = '@dihedral:type' + str(dihedraltype) + l_data_bondbond13_coeffs[i_line] = ( + ' ' * indent) + (' '.join(tokens) + '\n') + i_line += 1 + # --- end of class2specific ---- + + # delete in_dihedral_coeffs for dihedraltypes we don't care about anymore: + for dihedraltype in needed_dihedraltypes: + assert(type(dihedraltype) is int) + if ((min_needed_dihedraltype == None) or + (min_needed_dihedraltype > dihedraltype)): + min_needed_dihedraltype = dihedraltype + if ((max_needed_dihedraltype == None) or + (max_needed_dihedraltype < dihedraltype)): + max_needed_dihedraltype = dihedraltype + for dihedralid in needed_dihedralids: + assert(type(dihedralid) is int) + if ((min_needed_dihedralid == None) or + (min_needed_dihedralid > dihedralid)): + min_needed_dihedralid = dihedralid + if ((max_needed_dihedralid == None) or + (max_needed_dihedralid < dihedralid)): + max_needed_dihedralid = dihedralid + + i_line = 0 + while i_line < len(l_in_dihedral_coeffs): + line = l_in_dihedral_coeffs[i_line] + tokens = line.strip().split() + dihedraltype_str = tokens[1] + + if ('*' in dihedraltype_str): + dihedraltype_tokens = dihedraltype_str.split('*') + + if dihedraltype_tokens[0] == '': + i_a = min_needed_dihedraltype + else: + i_a = Intify(dihedraltype_tokens[0]) + + if dihedraltype_tokens[1] == '': + i_b = max_needed_dihedraltype + else: + i_b = Intify(dihedraltype_tokens[1]) + + else: + i_a = i_b = Intify(dihedraltype_str) + + if i_a < min_needed_dihedraltype: + i_a = min_needed_dihedraltype + if i_b > max_needed_dihedraltype: + i_b = max_needed_dihedraltype + + # if i_a == i_b: + # i_str = '@dihedral:type'+str(i_a) + # tokens[1] = i_str + # else: + # i_str = '@{dihedral:type'+str(j_a)+'}*@{dihedral:type'+str(j_b)+'}' + + if ('*' in dihedraltype_str): + del l_in_dihedral_coeffs[i_line] + for i in range(i_a, i_b + 1): + if (i in needed_dihedraltypes): + tokens[1] = '@dihedral:type' + str(i) + l_in_dihedral_coeffs.insert(i_line, + (' ' * indent) + (' '.join(tokens) + '\n')) + i_line += 1 + else: + if i_a < i_b: + raise InputError('Error: number of dihedral types in data file is not consistent with the\n' + ' number of dihedral types you have define dihedral_coeffs for.\n') + if (i_a == i_b) and (i_a in needed_dihedraltypes): + tokens[1] = '@dihedral:type' + str(i_a) + l_in_dihedral_coeffs[i_line] = ( + ' ' * indent) + (' '.join(tokens) + '\n') + i_line += 1 + else: + del l_in_dihedral_coeffs[i_line] + + # --- IMPROPERS AND IMPROPER COEFFS --- + + # delete lines from data_impropers if they involve atoms we don't care + # about + i_line = 0 + while i_line < len(l_data_impropers): + line = l_data_impropers[i_line] + tokens = line.strip().split() + assert(len(tokens) == 6) + + improperid = Intify(tokens[0]) + impropertype = Intify(tokens[1]) + atomid1 = Intify(tokens[2]) + atomid2 = Intify(tokens[3]) + atomid3 = Intify(tokens[4]) + atomid4 = Intify(tokens[5]) + # if ((atomid1 in needed_atomids) and + # (atomid2 in needed_atomids)): + tokens[0] = '$improper:id' + str(improperid) + tokens[1] = '@improper:type' + str(impropertype) + #tokens[2] = '$atom:id'+str(atomid1) + #tokens[3] = '$atom:id'+str(atomid2) + #tokens[4] = '$atom:id'+str(atomid3) + #tokens[5] = '$atom:id'+str(atomid4) + tokens[2] = '$atom:' + atomids_int2name[atomid1] + tokens[3] = '$atom:' + atomids_int2name[atomid2] + tokens[4] = '$atom:' + atomids_int2name[atomid3] + tokens[5] = '$atom:' + atomids_int2name[atomid4] + + needed_improperids.add(improperid) + needed_impropertypes.add(impropertype) + l_data_impropers[i_line] = (' ' * indent) + (' '.join(tokens) + '\n') + i_line += 1 + # else: + # del l_data_impropers[i_line] + + # delete data_improper_coeffs for impropertypes we don't care about + # anymore: + i_line = 0 + while i_line < len(l_data_improper_coeffs): + line = l_data_improper_coeffs[i_line] + tokens = line.strip().split() + impropertype = Intify(tokens[0]) + if (not (impropertype in needed_impropertypes)): + del l_data_improper_coeffs[i_line] + else: + tokens[0] = '@improper:type' + str(impropertype) + l_data_improper_coeffs[i_line] = ( + ' ' * indent) + (' '.join(tokens) + '\n') + i_line += 1 + + # --- class2specific ---- + # Do the same for AngleAngle Coeffs + # NOTE: LAMMPS INPUT SCRIPTS, ALL CLASS2 COEFFS are represented by: + # angle_coeff, dihedral_coeff, and improper_coeff commands. + # THERE ARE NO "angleangle_coeff" commands, etc...so we don't + # have to worry about dealing with "l_in_angleangle_coeffs",... + # delete data_middlebondtorsion_coeffs for dihedraltypes we don't care about anymore: + # delete data_angleangle_coeffs for impropertypes we don't care about + # anymore: + i_line = 0 + while i_line < len(l_data_angleangle_coeffs): + line = l_data_angleangle_coeffs[i_line] + tokens = line.strip().split() + impropertype = Intify(tokens[0]) + if (not (impropertype in needed_impropertypes)): + del l_data_angleangle_coeffs[i_line] + else: + tokens[0] = '@improper:type' + str(impropertype) + l_data_angleangle_coeffs[i_line] = ( + ' ' * indent) + (' '.join(tokens) + '\n') + i_line += 1 + # --- end of class2specific ---- + + # delete in_improper_coeffs for impropertypes we don't care about anymore: + for impropertype in needed_impropertypes: + assert(type(impropertype) is int) + if ((min_needed_impropertype == None) or + (min_needed_impropertype > impropertype)): + min_needed_impropertype = impropertype + if ((max_needed_impropertype == None) or + (max_needed_impropertype < impropertype)): + max_needed_impropertype = impropertype + for improperid in needed_improperids: + assert(type(improperid) is int) + if ((min_needed_improperid == None) or + (min_needed_improperid > improperid)): + min_needed_improperid = improperid + if ((max_needed_improperid == None) or + (max_needed_improperid < improperid)): + max_needed_improperid = improperid + + i_line = 0 + while i_line < len(l_in_improper_coeffs): + line = l_in_improper_coeffs[i_line] + tokens = line.strip().split() + impropertype_str = tokens[1] + + if ('*' in impropertype_str): + impropertype_tokens = impropertype_str.split('*') + + if impropertype_tokens[0] == '': + i_a = min_needed_impropertype + else: + i_a = Intify(impropertype_tokens[0]) + + if impropertype_tokens[1] == '': + i_b = max_needed_impropertype + else: + i_b = Intify(impropertype_tokens[1]) + + else: + i_a = i_b = Intify(impropertype_str) + + if i_a < min_needed_impropertype: + i_a = min_needed_impropertype + if i_b > max_needed_impropertype: + i_b = max_needed_impropertype + + # if i_a == i_b: + # i_str = '@improper:type'+str(i_a) + # tokens[1] = i_str + # else: + # i_str = '@{improper:type'+str(j_a)+'}*@{improper:type'+str(j_b)+'}' + + if ('*' in impropertype_str): + del l_in_improper_coeffs[i_line] + for i in range(i_a, i_b + 1): + if (i in needed_impropertypes): + tokens[1] = '@improper:type' + str(i) + l_in_improper_coeffs.insert(i_line, + (' ' * indent) + (' '.join(tokens) + '\n')) + i_line += 1 + else: + if i_a < i_b: + raise InputError('Error: number of improper types in data file is not consistent with the\n' + ' number of improper types you have define improper_coeffs for.\n') + if (i_a == i_b) and (i_a in needed_impropertypes): + tokens[1] = '@improper:type' + str(i_a) + l_in_improper_coeffs[i_line] = ( + ' ' * indent) + (' '.join(tokens) + '\n') + i_line += 1 + else: + del l_in_improper_coeffs[i_line] + + # --- GROUPS --- + + # Now parse through all of the "group" commands and try and figure + # out if any of these groups contain any of the atoms we are keeping. + # If so, then save the group and write it out. + # (I hate trying to parse this kind of text.) + + # if len(l_in_group) > 0: + # sys.stderr.write('\n' + # ' --groups-- Attempting to parse \"group\" commands.\n' + # ' This may cause '+g_program_name+' to crash.\n' + # ' If so, comment out all group commands in your input script(s), and\n' + # ' try again. (And please report the error. -Andrew 2014-10-30)\n') + + i_line = 0 + groups_needed = set(['all']) + while i_line < len(l_in_group): + line = l_in_group[i_line] + tokens = line.strip().split() + delete_this_command = False + explicit_definition = False + if len(tokens) < 3: + delete_this_command = True + group_name = tokens[1] + specifier_style = tokens[2] + str_logical = '' + str_selection = '' + if specifier_style[0:4] == 'type': + str_logical += specifier_style[4:] + explicit_definition = True + specifier_style = 'type' + elif specifier_style == 'id': + str_logical += specifier_style[2:] + explicit_definition = True + specifier_style = 'id' + elif specifier_style == 'molecule': + str_logical += specifier_style[8:] + specifier_style = 'molecule' + explicit_definition = True + + if explicit_definition: + i_token_sel_min = 3 + if len(tokens) <= i_token_sel_min: + sys.stderr.write('WARNING: possible syntax error on this line:\n' + + ' ' + l_in_group[i_line] + '\n') + delete_this_command = True + if str_logical == '': + str_logical = tokens[i_token_sel_min] + if not str_logical[0].isdigit(): + i_token_sel_min += 1 + if len(tokens) <= i_token_sel_min: + tokens.append('') + else: + tokens.insert(i_token_sel_min, str_logical) + + i_token_sel_max = len(tokens) - 1 + + for i in range(i_token_sel_min, len(tokens)): + if tokens[i].isdigit(): + break + else: + i_token_sel_max = i + + assert(len(tokens) > i_token_sel_min) + + if str_logical[0:2] in ('<=', '>=', '==', '!=', '<>'): + tokens[i_token_sel_min] = str_logical[ + 2:] + tokens[i_token_sel_min] + str_logical = str_logical[0:2] + if str_logical == '<=': + l_group_selection = [(None, int(tokens[i_token_sel_min]))] + elif str_logical == '>=': + l_group_selection = [(int(tokens[i_token_sel_min]), None)] + elif str_logical == '==': + l_group_selection = [(int(tokens[i_token_sel_min]), + int(tokens[i_token_sel_min]))] + elif str_logical == '!=': + l_group_selection = [(None, int(tokens[i_token_sel_min]) - 1), + (int(tokens[i_token_sel_min]) + 1, None)] + elif str_logical == '<>': + l_group_selection = [(int(tokens[i_token_sel_min]), + int(tokens[i_token_sel_max]))] + + elif str_logical[0:1] in ('<', '>'): + tokens[i_token_sel_min] = str_logical[ + 1:] + tokens[i_token_sel_min] + str_logical = str_logical[0:1] + if str_logical == '<': + l_group_selection = [ + (None, int(tokens[i_token_sel_min]) - 1)] + elif str_logical == '>': + l_group_selection = [ + (int(tokens[i_token_sel_min]) + 1, None)] + else: + str_selection = ' '.join( + tokens[i_token_sel_min:i_token_sel_max + 1]) + l_group_selection = LammpsSelectToIntervals(str_selection, + slice_delim=':', + or_delim=' ') + + mn, mx = IntervalListToMinMax(l_group_selection) + if mn == None: + mn = 1 + filtered_selection = [] + if specifier_style == 'type': + if mx == None: + mx = max_needed_atomtype + for i in range(mn, mx + 1): + if (BelongsToSel(i, l_group_selection) + and (i in needed_atomtypes)): + filtered_selection.append((i, i)) + elif specifier_style == 'id': + if mx == None: + mx = max_needed_atomid + for i in range(mn, mx + 1): + if (BelongsToSel(i, l_group_selection) + and (i in needed_atomids)): + filtered_selection.append((i, i)) + elif specifier_style == 'molecule': + if mx == None: + mx = max_needed_molid + for i in range(mn, mx + 1): + if (BelongsToSel(i, l_group_selection) + and (i in needed_molids)): + filtered_selection.append((i, i)) + + MergeIntervals(filtered_selection) + + if len(filtered_selection) > 0: + + tokens = ['group', group_name, specifier_style] + for interval in filtered_selection: + a = interval[0] + b = interval[1] + + if specifier_style == 'type': + if a == b: + tokens.append('@atom:type' + str(a)) + else: + tokens.append('@{atom:type' + str(a) + + '}:@{atom:type' + str(b) + '}') + + if specifier_style == 'id': + if a == b: + tokens.append('$atom:id' + str(a)) + else: + tokens.append('${atom:id' + str(a) + + '}:${atom:id' + str(b) + '}') + + if specifier_style == 'molecule': + if a == b: + tokens.append('$mol:id' + str(a)) + else: + tokens.append('${mol:id' + str(a) + + '}:${mol:id' + str(b) + '}') + + # Commenting out next two lines. (This is handled later.) + #l_in_group[i_line] = ' '.join(tokens) + # groups_needed.add(group_name) + + else: + delete_this_command = True + + else: + if len(tokens) > 3: + if tokens[2] == 'union': + i_token = 3 + while i_token < len(tokens): + if not (tokens[i_token] in groups_needed): + del tokens[i_token] + else: + i_token += 1 + # if none of the groups contain atoms we need, + # then delete the entire command + if len(tokens) <= 3: + delete_this_command = True + elif tokens[2] == 'intersect': + i_token = 3 + while i_token < len(tokens): + if not (tokens[i_token] in groups_needed): + # if any of the groups we need are empty + # then delete the command + delete_this_command = True + break + i_token += 1 + elif (tokens[2] == 'subtract') and (len(tokens) >= 5): + if not (tokens[3] in groups_needed): + delete_this_command = True + i_token = 4 + while i_token < len(tokens): + if not (tokens[i_token] in groups_needed): + del tokens[i_token] + else: + i_token += 1 + else: + # Otherwise I don't recongize the syntax of this + # group command. In that case, I just delete it. + delete_this_command = True + + elif tokens[2] == 'clear': + pass + elif tokens[2] == 'delete': + pass + else: + delete_this_command = True + if delete_this_command: + sys.stderr.write('WARNING: Ignoring line \n\"' + + l_in_group[i_line].rstrip() + '\"\n') + del l_in_group[i_line] + else: + groups_needed.add(group_name) + l_in_group[i_line] = (' ' * indent) + ' '.join(tokens) + '\n' + i_line += 1 + + # --- fix rigid --- + + i_line = 0 + while i_line < len(l_in_fix_rigid): + line = l_in_fix_rigid[i_line] + tokens = line.strip().split() + if len(tokens) < 4: + break + fixid = tokens[1] + group_name = tokens[2] + delete_this_command = True + assert(tokens[3].find('rigid') == 0) + if group_name in groups_needed: + delete_this_command = False + + if delete_this_command: + sys.stderr.write('WARNING: Ignoring line \n\"' + + l_in_fix_rigid[i_line].rstrip() + '\"\n') + del l_in_fix_rigid[i_line] + else: + l_in_fix_rigid[i_line] = (' ' * indent) + ' '.join(tokens) + '\n' + i_line += 1 + + # --- set --- + + i_line = 0 + while i_line < len(l_in_set): + line = l_in_set[i_line] + tokens = line.strip().split() + l_new_set_commands = [] + l_new_set_static_commands = [] + if len(tokens) < 4: + break + if tokens[1] == 'type': + pattern = tokens[2].split('*') + if pattern[0] == '': + types_lo = min_needed_atomtype + else: + types_lo = types_hi = int(pattern[0]) + if types_lo < min_needed_atomtype: + types_lo = min_needed_atomtype + if len(pattern) == 2: + if pattern[1] == '': + types_hi = max_needed_atomtype + else: + types_hi = min(int(pattern[1]), max_needed_atomtype) + for i in range(types_lo, types_hi+1): + if i in needed_atomtypes: + l_new_set_static_commands.append((' ' * indent) + + ' '.join(tokens[0:2])+' '+ + '@atom:type'+str(i) + ' ' + + ' '.join(tokens[3:])) + elif tokens[1] == 'atom': + pattern = tokens[2].split('*') + if pattern[0] == '': + atomids_lo = min_needed_atomid + else: + atomids_lo = atomids_hi = int(pattern[0]) + if atomids_lo < min_needed_atomid: + atomids_lo = min_needed_atomid + if len(pattern) == 2: + if pattern[1] == '': + atomids_hi = max_needed_atomid + else: + atomids_hi = min(int(pattern[1]), max_needed_atomid) + for i in range(atomids_lo, atomids_hi+1): + if i in needed_atomids: + l_new_set_commands.append((' ' * indent) + + tokens[0:2].join(' ')+' '+ + str(i) + ' ' + + tokens[3:].join(' ')) + elif tokens[1] == 'mol': + pattern = tokens[2].split('*') + if pattern[0] == '': + molids_lo = min_needed_molid + else: + molids_lo = molids_hi = int(pattern[0]) + if molids_lo < min_needed_molid: + molids_lo = min_needed_molid + if len(pattern) == 2: + if pattern[1] == '': + molids_hi = max_needed_molid + else: + molids_hi = min(int(pattern[1]), max_needed_molid) + for i in range(molids_lo, molids_hi+1): + if i in needed_molids: + l_new_set_commands.append(tokens[0:2].join(' ')+' '+ + str(i) + ' ' + + tokens[3:].join(' ')) + elif tokens[0] == 'group': + group_name = tokens[2] + if group_name in groups_needed: + l_new_set_static_commands = [l_in_set[i_line]] + + if len(l_new_set_commands) > 0: + l_in_set[i_line:i_line+1] = l_new_set_commands + i_line += len(l_new_set_commands) + elif len(l_new_set_static_commands) > 0: + l_in_set_static += l_new_set_static_commands + del l_in_set[i_line] + else: + sys.stderr.write('WARNING: Ignoring line \n\"' + + l_in_set[i_line].rstrip() + '\"\n') + del l_in_set[i_line] + + + # --- fix shake --- + + i_line = 0 + while i_line < len(l_in_fix_shake): + line = l_in_fix_shake[i_line] + tokens = line.strip().split() + if len(tokens) < 4: + break + fixid = tokens[1] + group_name = tokens[2] + delete_this_command = True + assert(tokens[3].find('shake') == 0) + + # parse the list of angle types + #i_token = tokens.index('a') + for i_token in range(0, len(tokens)): + if tokens[i_token] == 'a': + break + if i_token != len(tokens): + i_token += 1 + while (i_token < len(tokens)) and tokens[i_token].isdigit(): + # delete angle types from the list which + # do not belong to the selection + btype = int(tokens[i_token]) + if int(tokens[i_token]) in needed_angletypes: + tokens[i_token] = '@angle:type' + tokens[i_token] + i_token += 1 + delete_this_command = False + else: + del tokens[i_token] + + # parse the list of bond types + #i_token = tokens.index('b') + for i_token in range(0, len(tokens)): + if tokens[i_token] == 'b': + break + if i_token != len(tokens): + i_token += 1 + while (i_token < len(tokens)) and tokens[i_token].isdigit(): + # delete bond types from the list which + # do not belong to the selection + btype = int(tokens[i_token]) + if int(tokens[i_token]) in needed_bondtypes: + tokens[i_token] = '@bond:type' + tokens[i_token] + i_token += 1 + delete_this_command = False + else: + del tokens[i_token] + + # parse the list of atom types + # i_token = tokens.index('t') + for i_token in range(0, len(tokens)): + if tokens[i_token] == 't': + break + if i_token != len(tokens): + i_token += 1 + while (i_token < len(tokens)) and tokens[i_token].isdigit(): + # delete atom types from the list which + # do not belong to the selection + btype = int(tokens[i_token]) + if int(tokens[i_token]) in needed_atomtypes: + tokens[i_token] = '@atom:type' + tokens[i_token] + i_token += 1 + delete_this_command = False + else: + del tokens[i_token] + + # Selecting atoms by mass feature should still work, so we + # don't need to delete or ignore these kinds of commands. + # for i_token in range(0, len(tokens)): + # if tokens[i_token] == 'm': + # break + # if i_token != len(tokens): + # delete_this_command = True + + if 'mol' in tokens: + delete_this_command = True + + if not (group_name in groups_needed): + delete_this_command = True + + if delete_this_command: + sys.stderr.write('WARNING: Ignoring line \n\"' + + l_in_fix_shake[i_line].rstrip() + '\"\n') + del l_in_fix_shake[i_line] + else: + l_in_fix_shake[i_line] = (' ' * indent) + ' '.join(tokens) + '\n' + i_line += 1 + + # --- fix poems --- + + i_line = 0 + while i_line < len(l_in_fix_poems): + line = l_in_fix_poems[i_line] + tokens = line.strip().split() + if len(tokens) < 4: + break + fixid = tokens[1] + group_name = tokens[2] + delete_this_command = True + assert(tokens[3].find('poems') == 0) + if group_name in groups_needed: + delete_this_command = False + if tokens[4] != 'molecule': + delete_this_command = True + sys.stderr.write('WARNING: ' + g_program_name + ' ONLY supports \"fix poems\" commands\n' + ' which use the \"molecule\" keyword.\n') + if tokens[4] == 'file': + sys.stderr.write(' If you want use external files with fix poems, then you will have to\n' + ' generate the file yourself. You ask use moltemplate to generate\n' + ' this file for you, by manually adding a section at the end of your\n' + ' final .LT file (eg. \"system.lt\") which resembles the following:\n\n' + 'write(\"poems_file.txt\") {\n' + ' 1 1 $atom:idname1a $atom:idname2a $atom:idname3a ...\n' + ' 2 1 $atom:idname1b $atom:idname2b $atom:idname3b ...\n' + ' 3 1 $atom:idname1c $atom:idname2c $atom:idname3c ...\n' + ' : : etc...\n' + '}\n\n' + ' ...where $atom:idname1a, $atom:idname2a, ... are moltemplate-compatible\n' + ' unique (full,long) id-names for the atoms in each rigid body.\n' + ' This will insure the atom-id numbers in this file are correct.\n' + + ' See the documentation for fix poems for details.\n') + + if delete_this_command: + sys.stderr.write('WARNING: Ignoring line \n\"' + + l_in_fix_poems[i_line].rstrip() + '\"\n') + del l_in_fix_poems[i_line] + else: + l_in_fix_poems[i_line] = (' ' * indent) + ' '.join(tokens) + '\n' + i_line += 1 + + # --- fix qeq --- + + i_line = 0 + while i_line < len(l_in_fix_qeq): + line = l_in_fix_qeq[i_line] + tokens = line.strip().split() + if len(tokens) < 4: + break + fixid = tokens[1] + group_name = tokens[2] + delete_this_command = True + assert(tokens[3].find('qeq') == 0) + if group_name in groups_needed: + delete_this_command = False + + if delete_this_command: + sys.stderr.write('WARNING: Ignoring line \n\"' + + l_in_fix_qeq[i_line].rstrip() + '\"\n') + del l_in_fix_qeq[i_line] + else: + l_in_fix_qeq[i_line] = (' ' * indent) + ' '.join(tokens) + '\n' + i_line += 1 + + # --- fix qmmm --- + + i_line = 0 + while i_line < len(l_in_fix_qmmm): + line = l_in_fix_qmmm[i_line] + tokens = line.strip().split() + if len(tokens) < 4: + break + fixid = tokens[1] + group_name = tokens[2] + delete_this_command = True + assert(tokens[3].find('qmmm') == 0) + if group_name in groups_needed: + delete_this_command = False + + if delete_this_command: + sys.stderr.write('WARNING: Ignoring line \n\"' + + l_in_fix_qmmm[i_line].rstrip() + '\"\n') + del l_in_fix_qmmm[i_line] + else: + l_in_fix_qmmm[i_line] = (' ' * indent) + ' '.join(tokens) + '\n' + i_line += 1 + + ######################################## + ### Now begin writing the template. ### + ######################################## + + if not some_pair_coeffs_read: + sys.stderr.write('Warning: No \"pair coeffs\" set.\n' + ' (No interactions between non-bonded atoms defined.)\n') + no_warnings = False + + # sys.stderr.write('Writing ttree data to standard out.\n' + # ' You can redirect this to a file using:\n'+ + # ' '+' '.join(sys.argv)+' > filename.ttree\n' + # ' ----------------------\n') + + if mol_name != '': + sys.stdout.write(mol_name + ' {\n') + + if len(l_in_init) > 0: + sys.stdout.write('\n ### LAMMPS commands for initialization\n' + ' ### (These can be overridden later.)\n\n') + l_in_init.insert(0, (' ' * cindent) + + 'write_once(\"' + in_init + '\") {\n') + l_in_init.append((' ' * cindent) + '}\n') + sys.stdout.write('\n') + sys.stdout.write(''.join(l_in_init)) + if len(l_in_settings) > 0: + sys.stdout.write('\n ### LAMMPS commands for settings\n' + ' ### (These can be overridden later.)\n\n') + l_in_settings.insert(0, (' ' * cindent) + + 'write_once(\"' + in_settings + '\") {\n') + l_in_settings.append((' ' * cindent) + '}\n') + sys.stdout.write('\n') + sys.stdout.write(''.join(l_in_settings)) + non_empty_output = True + if len(l_in_masses) > 0: + l_in_masses.insert(0, (' ' * cindent) + + 'write_once(\"' + in_settings + '\") {\n') + l_in_masses.append((' ' * cindent) + '}\n') + sys.stdout.write('\n') + sys.stdout.write(''.join(l_in_masses)) + non_empty_output = True + + if remove_coeffs_from_data_file: + if len(l_data_pair_coeffs) > 0: + for line in l_data_pair_coeffs: + tokens = line.strip().split() + atomtype_str = tokens[0] + l_in_pair_coeffs.append((' ' * cindent) + ' pair_coeff ' + atomtype_str + + ' ' + atomtype_str + ' ' + ' '.join(tokens[1:]) + '\n') + l_data_pair_coeffs = [] + if len(l_data_pairij_coeffs) > 0: + for line in l_data_pairij_coeffs: + l_in_pair_coeffs.append( + (' ' * cindent) + ' pair_coeff ' + line.strip() + '\n') + l_data_pairij_coeffs = [] + if len(l_in_pair_coeffs) > 0: + l_in_pair_coeffs.insert(0, (' ' * cindent) + + 'write_once(\"' + in_settings + '\") {\n') + l_in_pair_coeffs.append((' ' * cindent) + '}\n') + sys.stdout.write('\n') + sys.stdout.write(''.join(l_in_pair_coeffs)) + non_empty_output = True + + if (remove_coeffs_from_data_file and (len(l_data_bond_coeffs) > 0)): + for line in l_data_bond_coeffs: + l_in_bond_coeffs.append( + (' ' * cindent) + ' bond_coeff ' + line.strip() + '\n') + l_data_bond_coeffs = [] + if len(l_in_bond_coeffs) > 0: + l_in_bond_coeffs.insert(0, (' ' * cindent) + + 'write_once(\"' + in_settings + '\") {\n') + l_in_bond_coeffs.append((' ' * cindent) + '}\n') + sys.stdout.write('\n') + sys.stdout.write(''.join(l_in_bond_coeffs)) + non_empty_output = True + + if (remove_coeffs_from_data_file and (len(l_data_angle_coeffs) > 0)): + for line in l_data_angle_coeffs: + l_in_angle_coeffs.append( + (' ' * cindent) + ' angle_coeff ' + line.strip() + '\n') + l_data_angle_coeffs = [] + for line in l_data_bondbond_coeffs: + tokens = line.strip().split() + l_in_angle_coeffs.append( + (' ' * cindent) + ' angle_coeff ' + tokens[0] + ' bb ' + ' '.join(tokens[1:]) + '\n') + l_data_bondbond_coeffs = [] + for line in l_data_bondangle_coeffs: + tokens = line.strip().split() + l_in_angle_coeffs.append( + (' ' * cindent) + ' angle_coeff ' + tokens[0] + ' ba ' + ' '.join(tokens[1:]) + '\n') + l_data_bondangle_coeffs = [] + if len(l_in_angle_coeffs) > 0: + l_in_angle_coeffs.insert( + 0, (' ' * cindent) + 'write_once(\"' + in_settings + '\") {\n') + l_in_angle_coeffs.append((' ' * cindent) + '}\n') + sys.stdout.write('\n') + sys.stdout.write(''.join(l_in_angle_coeffs)) + non_empty_output = True + + if (remove_coeffs_from_data_file and (len(l_data_dihedral_coeffs) > 0)): + for line in l_data_dihedral_coeffs: + l_in_dihedral_coeffs.append( + (' ' * cindent) + ' dihedral_coeff ' + line.strip() + '\n') + l_data_dihedral_coeffs = [] + + for line in l_data_middlebondtorsion_coeffs: + tokens = line.strip().split() + l_in_dihedral_coeffs.append( + (' ' * cindent) + ' dihedral_coeff ' + tokens[0] + ' mbt ' + ' '.join(tokens[1:]) + '\n') + l_data_middlebondtorsion_coeffs = [] + + for line in l_data_endbondtorsion_coeffs: + tokens = line.strip().split() + l_in_dihedral_coeffs.append( + (' ' * cindent) + ' dihedral_coeff ' + tokens[0] + ' ebt ' + ' '.join(tokens[1:]) + '\n') + l_data_endbondtorsion_coeffs = [] + + for line in l_data_angletorsion_coeffs: + tokens = line.strip().split() + l_in_dihedral_coeffs.append( + (' ' * cindent) + ' dihedral_coeff ' + tokens[0] + ' at ' + ' '.join(tokens[1:]) + '\n') + l_data_angletorsion_coeffs = [] + + for line in l_data_angleangletorsion_coeffs: + tokens = line.strip().split() + l_in_dihedral_coeffs.append( + (' ' * cindent) + ' dihedral_coeff ' + tokens[0] + ' aat ' + ' '.join(tokens[1:]) + '\n') + l_data_angleangletorsion_coeffs = [] + + for line in l_data_bondbond13_coeffs: + tokens = line.strip().split() + l_in_dihedral_coeffs.append( + (' ' * cindent) + ' dihedral_coeff ' + tokens[0] + ' bb13 ' + ' '.join(tokens[1:]) + '\n') + l_data_bondbond13_coeffs = [] + + if len(l_in_dihedral_coeffs) > 0: + l_in_dihedral_coeffs.insert( + 0, (' ' * cindent) + 'write_once(\"' + in_settings + '\") {\n') + l_in_dihedral_coeffs.append((' ' * cindent) + '}\n') + sys.stdout.write('\n') + sys.stdout.write(''.join(l_in_dihedral_coeffs)) + non_empty_output = True + + if (remove_coeffs_from_data_file and (len(l_data_improper_coeffs) > 0)): + for line in l_data_improper_coeffs: + l_in_improper_coeffs.append( + (' ' * cindent) + ' improper_coeff ' + line.strip() + '\n') + l_data_improper_coeffs = [] + + for line in l_data_angleangle_coeffs: + tokens = line.strip().split() + l_in_improper_coeffs.append( + (' ' * cindent) + ' improper_coeff ' + tokens[0] + ' aa ' + ' '.join(tokens[1:]) + '\n') + l_data_angleangle_coeffs = [] + + if len(l_in_improper_coeffs) > 0: + l_in_improper_coeffs.insert( + 0, (' ' * cindent) + 'write_once(\"' + in_settings + '\") {\n') + l_in_improper_coeffs.append((' ' * cindent) + '}\n') + sys.stdout.write('\n') + sys.stdout.write(''.join(l_in_improper_coeffs)) + non_empty_output = True + + if non_empty_output: + sys.stdout.write('\n\n ### DATA sections\n\n') + + if len(l_data_masses) > 0: + l_data_masses.insert(0, (' ' * cindent) + + 'write_once(\"' + data_masses + '\") {\n') + l_data_masses.append((' ' * cindent) + '}\n') + sys.stdout.write('\n') + sys.stdout.write(''.join(l_data_masses)) + non_empty_output = True + if len(l_data_bond_coeffs) > 0: + l_data_bond_coeffs.insert( + 0, (' ' * cindent) + 'write_once(\"' + data_bond_coeffs + '\") {\n') + l_data_bond_coeffs.append((' ' * cindent) + '}\n') + sys.stdout.write('\n') + sys.stdout.write(''.join(l_data_bond_coeffs)) + non_empty_output = True + if len(l_data_angle_coeffs) > 0: + l_data_angle_coeffs.insert( + 0, (' ' * cindent) + 'write_once(\"' + data_angle_coeffs + '\") {\n') + l_data_angle_coeffs.append((' ' * cindent) + '}\n') + sys.stdout.write('\n') + sys.stdout.write(''.join(l_data_angle_coeffs)) + non_empty_output = True + if len(l_data_dihedral_coeffs) > 0: + l_data_dihedral_coeffs.insert( + 0, (' ' * cindent) + 'write_once(\"' + data_dihedral_coeffs + '\") {\n') + l_data_dihedral_coeffs.append((' ' * cindent) + '}\n') + sys.stdout.write('\n') + sys.stdout.write(''.join(l_data_dihedral_coeffs)) + non_empty_output = True + if len(l_data_improper_coeffs) > 0: + l_data_improper_coeffs.insert( + 0, (' ' * cindent) + 'write_once(\"' + data_improper_coeffs + '\") {\n') + l_data_improper_coeffs.append((' ' * cindent) + '}\n') + sys.stdout.write('\n') + sys.stdout.write(''.join(l_data_improper_coeffs)) + non_empty_output = True + if len(l_data_pair_coeffs) > 0: + l_data_pair_coeffs.insert( + 0, (' ' * cindent) + 'write_once(\"' + data_pair_coeffs + '\") {\n') + l_data_pair_coeffs.append((' ' * cindent) + '}\n') + sys.stdout.write('\n') + sys.stdout.write(''.join(l_data_pair_coeffs)) + non_empty_output = True + if len(l_data_pairij_coeffs) > 0: + l_data_pairij_coeffs.insert( + 0, (' ' * cindent) + 'write_once(\"' + data_pairij_coeffs + '\") {\n') + l_data_pairij_coeffs.append((' ' * cindent) + '}\n') + sys.stdout.write('\n') + sys.stdout.write(''.join(l_data_pairij_coeffs)) + non_empty_output = True + + # class2 force fields: + if len(l_data_bondbond_coeffs) > 0: + l_data_bondbond_coeffs.insert( + 0, (' ' * cindent) + 'write_once(\"' + data_bondbond_coeffs + '\") {\n') + l_data_bondbond_coeffs.append((' ' * cindent) + '}\n') + sys.stdout.write('\n') + sys.stdout.write(''.join(l_data_bondbond_coeffs)) + non_empty_output = True + if len(l_data_bondangle_coeffs) > 0: + l_data_bondangle_coeffs.insert( + 0, (' ' * cindent) + 'write_once(\"' + data_bondangle_coeffs + '\") {\n') + l_data_bondangle_coeffs.append((' ' * cindent) + '}\n') + sys.stdout.write('\n') + sys.stdout.write(''.join(l_data_bondangle_coeffs)) + non_empty_output = True + if len(l_data_middlebondtorsion_coeffs) > 0: + l_data_middlebondtorsion_coeffs.insert( + 0, (' ' * cindent) + 'write_once(\"' + data_middlebondtorsion_coeffs + '\") {\n') + l_data_middlebondtorsion_coeffs.append((' ' * cindent) + '}\n') + sys.stdout.write('\n') + sys.stdout.write(''.join(l_data_middlebondtorsion_coeffs)) + non_empty_output = True + if len(l_data_endbondtorsion_coeffs) > 0: + l_data_endbondtorsion_coeffs.insert( + 0, (' ' * cindent) + 'write_once(\"' + data_endbondtorsion_coeffs + '\") {\n') + l_data_endbondtorsion_coeffs.append((' ' * cindent) + '}\n') + sys.stdout.write('\n') + sys.stdout.write(''.join(l_data_endbondtorsion_coeffs)) + non_empty_output = True + if len(l_data_angletorsion_coeffs) > 0: + l_data_angletorsion_coeffs.insert( + 0, (' ' * cindent) + 'write_once(\"' + data_angletorsion_coeffs + '\") {\n') + l_data_angletorsion_coeffs.append((' ' * cindent) + '}\n') + sys.stdout.write('\n') + sys.stdout.write(''.join(l_data_angletorsion_coeffs)) + non_empty_output = True + if len(l_data_angleangletorsion_coeffs) > 0: + l_data_angleangletorsion_coeffs.insert( + 0, (' ' * cindent) + 'write_once(\"' + data_angleangletorsion_coeffs + '\") {\n') + l_data_angleangletorsion_coeffs.append((' ' * cindent) + '}\n') + sys.stdout.write('\n') + sys.stdout.write(''.join(l_data_angleangletorsion_coeffs)) + non_empty_output = True + if len(l_data_bondbond13_coeffs) > 0: + l_data_bondbond13_coeffs.insert( + 0, (' ' * cindent) + 'write_once(\"' + data_bondbond13_coeffs + '\") {\n') + l_data_bondbond13_coeffs.append((' ' * cindent) + '}\n') + sys.stdout.write('\n') + sys.stdout.write(''.join(l_data_bondbond13_coeffs)) + non_empty_output = True + if len(l_data_angleangle_coeffs) > 0: + l_data_angleangle_coeffs.insert( + 0, (' ' * cindent) + 'write_once(\"' + data_angleangle_coeffs + '\") {\n') + l_data_angleangle_coeffs.append((' ' * cindent) + '}\n') + sys.stdout.write('\n') + sys.stdout.write(''.join(l_data_angleangle_coeffs)) + non_empty_output = True + + # automatic generation of bonded interactions by type: + if len(l_data_angles_by_type) > 0: + l_data_angles_by_type.insert( + 0, (' ' * cindent) + 'write_once(\"' + data_angles_by_type + '\") {\n') + l_data_angles_by_type.append((' ' * cindent) + '}\n') + sys.stdout.write('\n') + sys.stdout.write(''.join(l_data_angles_by_type)) + non_empty_output = True + if len(l_data_dihedrals_by_type) > 0: + l_data_dihedrals_by_type.insert( + 0, (' ' * cindent) + 'write_once(\"' + data_dihedrals_by_type + '\") {\n') + l_data_dihedrals_by_type.append((' ' * cindent) + '}\n') + sys.stdout.write('\n') + sys.stdout.write(''.join(l_data_dihedrals_by_type)) + non_empty_output = True + if len(l_data_impropers_by_type) > 0: + l_data_impropers_by_type.insert( + 0, (' ' * cindent) + 'write_once(\"' + data_impropers_by_type + '\") {\n') + l_data_impropers_by_type.append((' ' * cindent) + '}\n') + sys.stdout.write('\n') + sys.stdout.write(''.join(l_data_impropers_by_type)) + non_empty_output = True + + if len(l_data_atoms) > 0: + l_data_atoms.insert(0, (' ' * cindent) + + 'write(\"' + data_atoms + '\") {\n') + l_data_atoms.append((' ' * cindent) + '}\n') + sys.stdout.write('\n') + sys.stdout.write(''.join(l_data_atoms)) + non_empty_output = True + else: + sys.stderr.write('Warning: missing \"Atoms\" section.\n' + ' (Did you include a LAMMPS data file in your argument list?)\n') + no_warnings = False + + # non-point-like particles + if len(l_data_ellipsoids) > 0: + l_data_ellipsoids.insert( + 0, (' ' * cindent) + 'write(\"' + data_ellipsoids + '\") {\n') + l_data_ellipsoids.append((' ' * cindent) + '}\n') + sys.stdout.write('\n') + sys.stdout.write(''.join(l_data_ellipsoids)) + if len(l_data_lines) > 0: + l_data_lines.insert(0, (' ' * cindent) + + 'write(\"' + data_lines + '\") {\n') + l_data_lines.append((' ' * cindent) + '}\n') + sys.stdout.write('\n') + sys.stdout.write(''.join(l_data_lines)) + if len(l_data_triangles) > 0: + l_data_triangles.insert(0, (' ' * cindent) + + 'write(\"' + data_triangles + '\") {\n') + l_data_triangles.append((' ' * cindent) + '}\n') + sys.stdout.write('\n') + sys.stdout.write(''.join(l_data_triangles)) + + # DO NOT WRITE OUT VELOCITY DATA + # (Why: because it makes it difficult to combine this molecular template + # with molecule templates from other sources which lack velocity data. + # LAMMPS (and topotools) will crash if the number of entries in the + # Velocities section of a data file does not match the number of atoms.) + # COMMENTING OUT: + # if len(l_data_velocities) > 0: + # l_data_velocities.insert(0, (' '*cindent)+'write(\"'+data_velocities+'\") {\n') + # l_data_velocities.append((' '*cindent)+'}\n') + # sys.stdout.write('\n') + # sys.stdout.write(''.join(l_data_velocities)) + if len(l_data_bonds) > 0: + l_data_bonds.insert(0, (' ' * cindent) + + 'write(\"' + data_bonds + '\") {\n') + l_data_bonds.append((' ' * cindent) + '}\n') + sys.stdout.write('\n') + sys.stdout.write(''.join(l_data_bonds)) + non_empty_output = True + if len(l_data_angles) > 0: + l_data_angles.insert(0, (' ' * cindent) + + 'write(\"' + data_angles + '\") {\n') + l_data_angles.append((' ' * cindent) + '}\n') + sys.stdout.write('\n') + sys.stdout.write(''.join(l_data_angles)) + non_empty_output = True + if len(l_data_dihedrals) > 0: + l_data_dihedrals.insert(0, (' ' * cindent) + + 'write(\"' + data_dihedrals + '\") {\n') + l_data_dihedrals.append((' ' * cindent) + '}\n') + sys.stdout.write('\n') + sys.stdout.write(''.join(l_data_dihedrals)) + non_empty_output = True + if len(l_data_impropers) > 0: + l_data_impropers.insert(0, (' ' * cindent) + + 'write(\"' + data_impropers + '\") {\n') + l_data_impropers.append((' ' * cindent) + '}\n') + sys.stdout.write('\n') + sys.stdout.write(''.join(l_data_impropers)) + non_empty_output = True + + if len(l_in_group) > 0: + no_warnings = False + l_in_group.insert(0, (' ' * cindent) + + 'write(\"' + in_settings + '\") {\n') + l_in_group.append((' ' * cindent) + '}\n') + sys.stdout.write('\n') + sys.stdout.write(''.join(l_in_group)) + # sys.stderr.write('######################################################\n' + # 'WARNING: One or more \"group\" commands appear to refer to relevant atoms.\n' + # ' Please check to make sure that the group(s) generated by\n' + # ' '+g_program_name+' contain the correct atoms. (-Andrew 2014-10-30)\n' + # '######################################################\n') + assert(non_empty_output) + + if len(l_in_set) > 0: + l_in_set.insert(0, ((' ' * cindent) + + 'write(\"' + in_settings + '\") {')) + l_in_set.append((' ' * cindent) + '} # end of list of \"set\" commands\n') + sys.stdout.write('\n') + sys.stdout.write((' ' * cindent) + '# list of \"set\" commands:\n') + sys.stdout.write('\n'.join(l_in_set)) + + if len(l_in_set_static) > 0: + l_in_set_static.insert(0, ((' ' * cindent) + + 'write_once(\"' + in_settings + '\") {')) + l_in_set_static.append((' ' * cindent) + '} # end of list of (static) \"set\" commands\n') + sys.stdout.write('\n') + sys.stdout.write((' ' * cindent) + '# list of (static) \"set\" commands:\n') + sys.stdout.write('\n'.join(l_in_set_static)) + + if len(l_in_fix_rigid) > 0: + no_warnings = False + l_in_fix_rigid.insert(0, (' ' * cindent) + + 'write(\"' + in_settings + '\") {\n') + l_in_fix_rigid.append((' ' * cindent) + '}\n') + sys.stdout.write('\n') + sys.stdout.write(''.join(l_in_fix_rigid)) + sys.stderr.write('WARNING: \"fix rigid\" style command(s) applied to selected atoms.\n' + ' Please make sure that the fix group(s) are defined correctly.\n' + '######################################################\n') + assert(non_empty_output) + + if len(l_in_fix_shake) > 0: + no_warnings = False + l_in_fix_shake.insert(0, (' ' * cindent) + + 'write(\"' + in_settings + '\") {\n') + l_in_fix_shake.append((' ' * cindent) + '}\n') + sys.stdout.write('\n') + sys.stdout.write(''.join(l_in_fix_shake)) + sys.stderr.write('WARNING: \"fix shake\" style command(s) applied to selected atoms.\n' + ' Please check to make sure that the fix group(s) are defined correctly,\n' + + ' and also check that the atom, bond, and angle types are correct.\n' + '######################################################\n') + assert(non_empty_output) + + if len(l_in_fix_poems) > 0: + no_warnings = False + l_in_fix_poems.insert(0, (' ' * cindent) + + 'write(\"' + in_settings + '\") {\n') + l_in_fix_poems.append((' ' * cindent) + '}\n') + sys.stdout.write('\n') + sys.stdout.write(''.join(l_in_fix_poems)) + sys.stderr.write('WARNING: \"fix poems\" style command(s) applied to selected atoms.\n' + ' Please make sure that the fix group(s) are defined correctly.\n' + '######################################################\n') + assert(non_empty_output) + + if len(l_in_fix_qeq) > 0: + no_warnings = False + l_in_fix_qeq.insert(0, (' ' * cindent) + + 'write(\"' + in_settings + '\") {\n') + l_in_fix_qeq.append((' ' * cindent) + '}\n') + sys.stdout.write('\n') + sys.stdout.write(''.join(l_in_fix_qeq)) + sys.stderr.write('WARNING: \"fix qeq\" style command(s) applied to selected atoms.\n' + ' Please make sure that the fix group(s) are defined correctly.\n' + '######################################################\n') + assert(non_empty_output) + + if len(l_in_fix_qmmm) > 0: + no_warnings = False + l_in_fix_qmmm.insert(0, (' ' * cindent) + + 'write(\"' + in_settings + '\") {\n') + l_in_fix_qmmm.append((' ' * cindent) + '}\n') + sys.stdout.write('\n') + sys.stdout.write(''.join(l_in_fix_qmmm)) + sys.stderr.write('WARNING: \"fix qmmm\" style command(s) applied to selected atoms.\n' + ' Please make sure that the fix group(s) are defined correctly.\n' + '######################################################\n') + assert(non_empty_output) + + if mol_name != '': + sys.stdout.write('\n} # end of \"' + mol_name + '\" type definition\n') + + # if non_empty_output and no_warnings: + if non_empty_output: + sys.stderr.write('WARNING: The ' + g_program_name + ' script has not been rigorously tested.\n' + ' Exotic (many-body) pair-styles and pair-styles with\n' + ' unusual syntax (such hbond/dreiding) are not understood\n' + ' by ' + g_program_name + + ' (...although they are supported by moltemplate).\n' + ' Please look over the resulting LT file and check for errors.\n' + ' Convert any remaining atom, bond, angle, dihedral, or improper id\n' + ' or type numbers to the corresponding $ or @-style counter variables.\n' + ' Feel free to report any bugs you find. (-Andrew Jewett 2015-8-02)\n') + + + except (ValueError, InputError) as err: + sys.stderr.write('\n' + str(err) + '\n') + sys.exit(-1) + + return + +if __name__ == '__main__': + main() diff --git a/tools/moltemplate/src/lttree.py b/tools/moltemplate/moltemplate/lttree.py old mode 100644 new mode 100755 similarity index 65% rename from tools/moltemplate/src/lttree.py rename to tools/moltemplate/moltemplate/lttree.py index 743419eb2b9dde0e0d3ab41cf73860e945838c3e..168a60ecc33c6881bf4fa19955e094391c5fdfc3 --- a/tools/moltemplate/src/lttree.py +++ b/tools/moltemplate/moltemplate/lttree.py @@ -10,27 +10,52 @@ lttree.py lttree.py is an extension of the generic ttree.py program. -This version can understand and manipulate ttree-style templates which +This version can understand and manipulate ttree-style templates which are specialized for storing molecule-specific data for use in LAMMPS. The main difference between lttree.py and ttree.py is: -Unlike ttree.py, lttree.py understands rigid-body movement commands like +Unlike ttree.py, lttree.py understands rigid-body movement commands like "rot()" and "move()" which allows it to reorient and move each copy of a molecule to a new location. (ttree.py just ignores these commands. Consequently LAMMPS input file (fragments) created with ttree.py have -invalid (overlapping) atomic coordinates and must be modified or aguemted +invalid (overlapping) atomic coordinates and must be modified or aguemted later (by loading atomic coordinates from a PDB file or an XYZ file). -lttree.py understands the "Data Atoms" section of a LAMMPS -data file (in addition to the various "atom_styles" which effect it). +lttree.py understands the "Data Atoms" section of a LAMMPS +data file (in addition to the various "atom_styles" which effect it). Additional LAMMPS-specific features may be added in the future. """ +g_program_name = __file__.split('/')[-1] # ='lttree.py' +g_date_str = '2017-4-11' +g_version_str = '0.76.0' + + import sys -from ttree import * -from lttree_styles import * -from ttree_matrix_stack import * +from collections import defaultdict +import pkg_resources + +try: + from .ttree import BasicUISettings, BasicUIParseArgs, EraseTemplateFiles, \ + StackableCommand, PopCommand, PopRightCommand, PopLeftCommand, \ + PushCommand, PushLeftCommand, PushRightCommand, ScopeCommand, \ + WriteVarBindingsFile, StaticObj, InstanceObj, \ + BasicUI, ScopeBegin, ScopeEnd, WriteFileCommand, Render + from .ttree_lex import InputError, TextBlock, DeleteLinesWithBadVars, \ + TemplateLexer + from .lttree_styles import AtomStyle2ColNames, ColNames2AidAtypeMolid, \ + ColNames2Coords, ColNames2Vects, data_atoms, data_masses + from .ttree_matrix_stack import AffineTransform, MultiAffineStack, \ + LinTransform +except (SystemError, ValueError): + # not installed as a package + from ttree import * + from ttree_lex import * + from lttree_styles import * + from ttree_matrix_stack import * + + try: unicode @@ -39,37 +64,35 @@ except NameError: basestring = unicode = str - - class LttreeSettings(BasicUISettings): + def __init__(self, user_bindings_x=None, user_bindings=None, order_method='by_command'): - BasicUISettings.__init__(self, - user_bindings_x, - user_bindings, + BasicUISettings.__init__(self, + user_bindings_x, + user_bindings, order_method) # The following new member data indicate which columns store - # LAMMPS-specific information. - # The next 6 members store keep track of the different columns + # LAMMPS-specific information. + # The next 6 members store keep track of the different columns # of the "Data Atoms" section of a LAMMPS data file: - self.column_names = [] #<--A list of column names (optional) - self.ii_coords=[] #<--A list of triplets of column indexes storing coordinate data - self.ii_vects=[] #<--A list of triplets of column indexes storing directional data - # (such as dipole or ellipsoid orientations) - self.i_atomid=None #<--An integer indicating which column has the atomid - self.i_atomtype=None #<--An integer indicating which column has the atomtype - self.i_molid=None #<--An integer indicating which column has the molid, if applicable - self.infile=None # Name of the outermost file. This is the file - # which was read at the moment parsing begins. - + self.column_names = [] # <--A list of column names (optional) + self.ii_coords = [] # <--A list of triplets of column indexes storing coordinate data + self.ii_vects = [] # <--A list of triplets of column indexes storing directional data + # (such as dipole or ellipsoid orientations) + self.i_atomid = None # <--An integer indicating which column has the atomid + self.i_atomtype = None # <--An integer indicating which column has the atomtype + self.i_molid = None # <--An integer indicating which column has the molid, if applicable - -def LttreeParseArgs(argv, settings): +def LttreeParseArgs(argv, settings, main=False, show_warnings=True): + # By default, include force_fields provided with the package + argv.extend(["-import-path", + pkg_resources.resource_filename(__name__, 'force_fields/')]) BasicUIParseArgs(argv, settings) @@ -79,98 +102,103 @@ def LttreeParseArgs(argv, settings): i = 1 while i < len(argv): #sys.stderr.write('argv['+str(i)+'] = \"'+argv[i]+'\"\n') - if ((argv[i].lower() == '-atomstyle') or - (argv[i].lower() == '-atom-style') or - (argv[i].lower() == '-atom_style')): - if i+1 >= len(argv): - raise InputError('Error('+g_program_name+'): The '+argv[i]+' flag should be followed by a LAMMPS\n' + if ((argv[i].lower() == '-atomstyle') or + (argv[i].lower() == '-atom-style') or + (argv[i].lower() == '-atom_style')): + if i + 1 >= len(argv): + raise InputError('Error(' + g_program_name + '): The ' + argv[i] + ' flag should be followed by a LAMMPS\n' ' atom_style name (or single quoted string containing a space-separated\n' ' list of column names such as: atom-ID atom-type q x y z molecule-ID.)\n') - settings.column_names = AtomStyle2ColNames(argv[i+1]) - sys.stderr.write('\n \"'+data_atoms+'\" column format:\n') - sys.stderr.write(' '+(' '.join(settings.column_names))+'\n\n') + settings.column_names = AtomStyle2ColNames(argv[i + 1]) + sys.stderr.write('\n \"' + data_atoms + '\" column format:\n') + sys.stderr.write( + ' ' + (' '.join(settings.column_names)) + '\n\n') settings.ii_coords = ColNames2Coords(settings.column_names) settings.ii_vects = ColNames2Vects(settings.column_names) - settings.i_atomid, settings.i_atomtype, settings.i_molid = ColNames2AidAtypeMolid(settings.column_names) - del(argv[i:i+2]) + settings.i_atomid, settings.i_atomtype, settings.i_molid = ColNames2AidAtypeMolid( + settings.column_names) + del(argv[i:i + 2]) elif (argv[i].lower() == '-icoord'): - if i+1 >= len(argv): - raise InputError('Error: '+argv[i]+' flag should be followed by list of integers\n' + if i + 1 >= len(argv): + raise InputError('Error: ' + argv[i] + ' flag should be followed by list of integers\n' ' corresponding to column numbers for coordinates in\n' - ' the \"'+data_atoms+'\" section of a LAMMPS data file.\n') - ilist = argv[i+1].split() + ' the \"' + data_atoms + '\" section of a LAMMPS data file.\n') + ilist = argv[i + 1].split() if (len(ilist) % 3) != 0: - raise InputError('Error: '+argv[i]+' flag should be followed by list of integers.\n' + raise InputError('Error: ' + argv[i] + ' flag should be followed by list of integers.\n' ' This is usually a list of 3 integers, but it can contain more.\n' ' The number of cooridnate columns must be divisible by 3,\n' ' (even if the simulation is in 2 dimensions)\n') settings.iaffinevects = [] - for i in range(0, len(ilist)/3): - cols = [int(ilist[3*i])+1, - int(ilist[3*i+1])+1, - int(ilist[3*i+2])+1] + for i in range(0, len(ilist) / 3): + cols = [int(ilist[3 * i]) + 1, + int(ilist[3 * i + 1]) + 1, + int(ilist[3 * i + 2]) + 1] settings.iaffinevects.append(cols) - del(argv[i:i+2]) + del(argv[i:i + 2]) elif (argv[i].lower() == '-ivect'): - if i+1 >= len(argv): - raise InputError('Error: '+argv[i]+' flag should be followed by list of integers\n' + if i + 1 >= len(argv): + raise InputError('Error: ' + argv[i] + ' flag should be followed by list of integers\n' ' corresponding to column numbers for direction vectors in\n' - ' the \"'+data_atoms+'\" section of a LAMMPS data file.\n') - ilist = argv[i+1].split() + ' the \"' + data_atoms + '\" section of a LAMMPS data file.\n') + ilist = argv[i + 1].split() if (len(ilist) % 3) != 0: - raise InputError('Error: '+argv[i]+' flag should be followed by list of integers.\n' + raise InputError('Error: ' + argv[i] + ' flag should be followed by list of integers.\n' ' This is usually a list of 3 integers, but it can contain more.\n' ' The number of cooridnate columns must be divisible by 3,\n' ' (even if the simulation is in 2 dimensions)\n') settings.ivects = [] - for i in range(0, len(ilist)/3): - cols = [int(ilist[3*i])+1, - int(ilist[3*i+1])+1, - int(ilist[3*i+2])+1] + for i in range(0, len(ilist) / 3): + cols = [int(ilist[3 * i]) + 1, + int(ilist[3 * i + 1]) + 1, + int(ilist[3 * i + 2]) + 1] settings.ivects.append(cols) - del(argv[i:i+2]) - elif ((argv[i].lower() == '-iatomid') or - (argv[i].lower() == '-iid') or + del(argv[i:i + 2]) + elif ((argv[i].lower() == '-iatomid') or + (argv[i].lower() == '-iid') or (argv[i].lower() == '-iatom-id')): - if ((i+1 >= len(argv)) or (not str.isdigit(argv[i+1]))): - raise InputError('Error: '+argv[i]+' flag should be followed by an integer\n' - ' (>=1) indicating which column in the \"'+data_atoms+'\" section of a\n' + if ((i + 1 >= len(argv)) or (not str.isdigit(argv[i + 1]))): + raise InputError('Error: ' + argv[i] + ' flag should be followed by an integer\n' + ' (>=1) indicating which column in the \"' + + data_atoms + '\" section of a\n' ' LAMMPS data file contains the atom id number (typically 1).\n' ' (This argument is unnecessary if you use the -atomstyle argument.)\n') - i_atomid = int(argv[i+1])-1 - del(argv[i:i+2]) - elif ((argv[i].lower() == '-iatomtype') or - (argv[i].lower() == '-itype') or + i_atomid = int(argv[i + 1]) - 1 + del(argv[i:i + 2]) + elif ((argv[i].lower() == '-iatomtype') or + (argv[i].lower() == '-itype') or (argv[i].lower() == '-iatom-type')): - if ((i+1 >= len(argv)) or (not str.isdigit(argv[i+1]))): - raise InputError('Error: '+argv[i]+' flag should be followed by an integer\n' - ' (>=1) indicating which column in the \"'+data_atoms+'\" section of a\n' + if ((i + 1 >= len(argv)) or (not str.isdigit(argv[i + 1]))): + raise InputError('Error: ' + argv[i] + ' flag should be followed by an integer\n' + ' (>=1) indicating which column in the \"' + + data_atoms + '\" section of a\n' ' LAMMPS data file contains the atom type.\n' ' (This argument is unnecessary if you use the -atomstyle argument.)\n') - i_atomtype = int(argv[i+1])-1 - del(argv[i:i+2]) - elif ((argv[i].lower() == '-imolid') or - (argv[i].lower() == '-imol') or - (argv[i].lower() == '-imol-id') or - (argv[i].lower() == '-imoleculeid') or + i_atomtype = int(argv[i + 1]) - 1 + del(argv[i:i + 2]) + elif ((argv[i].lower() == '-imolid') or + (argv[i].lower() == '-imol') or + (argv[i].lower() == '-imol-id') or + (argv[i].lower() == '-imoleculeid') or (argv[i].lower() == '-imolecule-id')): - if ((i+1 >= len(argv)) or (not str.isdigit(argv[i+1]))): - raise InputError('Error: '+argv[i]+' flag should be followed by an integer\n' - ' (>=1) indicating which column in the \"'+data_atoms+'\" section of a\n' + if ((i + 1 >= len(argv)) or (not str.isdigit(argv[i + 1]))): + raise InputError('Error: ' + argv[i] + ' flag should be followed by an integer\n' + ' (>=1) indicating which column in the \"' + + data_atoms + '\" section of a\n' ' LAMMPS data file contains the molecule id number.\n' ' (This argument is unnecessary if you use the -atomstyle argument.)\n') - i_molid = int(argv[i+1])-1 - del(argv[i:i+2]) + i_molid = int(argv[i + 1]) - 1 + del(argv[i:i + 2]) - elif ((argv[i][0] == '-') and (__name__ == "__main__")): - #elif (__name__ == "__main__"): - raise InputError('Error('+g_program_name+'):\n' - 'Unrecognized command line argument \"'+argv[i]+'\"\n') + elif (argv[i].find('-') == 0) and main: + # elif (__name__ == "__main__"): + raise InputError('Error(' + g_program_name + '):\n' + 'Unrecogized command line argument \"' + argv[i] + '\"\n') else: i += 1 - if __name__ == "__main__": + if main: # Instantiate the lexer we will be using. # (The lexer's __init__() function requires an openned file. @@ -184,75 +212,71 @@ def LttreeParseArgs(argv, settings): ' the name of a file containing ttree template commands\n') elif len(argv) == 2: try: - settings.lex = TemplateLexer(open(argv[1], 'r'), argv[1]) # Parse text from file - except IOError: + # Parse text from the file named argv[1] + settings.lex.infile = argv[1] + settings.lex.instream = open(argv[1], 'r') + except IOError: sys.stderr.write('Error: unable to open file\n' - ' \"'+argv[1]+'\"\n' + ' \"' + argv[1] + '\"\n' ' for reading.\n') sys.exit(1) del(argv[1:2]) else: # if there are more than 2 remaining arguments, - problem_args = ['\"'+arg+'\"' for arg in argv[1:]] - raise InputError('Syntax Error('+g_program_name+'):\n\n' + problem_args = ['\"' + arg + '\"' for arg in argv[1:]] + raise InputError('Syntax Error(' + g_program_name + '):\n\n' ' Problem with argument list.\n' ' The remaining arguments are:\n\n' - ' '+(' '.join(problem_args))+'\n\n' + ' ' + (' '.join(problem_args)) + '\n\n' ' (The actual problem may be earlier in the argument list.\n' ' If these arguments are source files, then keep in mind\n' ' that this program can not parse multiple source files.)\n' ' Check the syntax of the entire argument list.\n') - - - if len(settings.ii_coords) == 0: + if len(settings.ii_coords) == 0 and show_warnings: sys.stderr.write('########################################################\n' '## WARNING: atom_style unspecified ##\n' - '## --> \"'+data_atoms+'\" column data has an unknown format ##\n' + '## --> \"' + data_atoms + '\" column data has an unknown format ##\n' '## Assuming atom_style = \"full\" ##\n' - # '########################################################\n' - # '## To specify the \"'+data_atoms+'\" column format you can: ##\n' - # '## 1) Use the -atomstyle \"STYLE\" argument ##\n' - # '## where \"STYLE\" is a string indicating a LAMMPS ##\n' - # '## atom_style, including hybrid styles.(Standard ##\n' - # '## atom styles defined in 2011 are supported.) ##\n' - # '## 2) Use the -atomstyle \"COL_LIST\" argument ##\n' - # '## where \"COL_LIST" is a quoted list of strings ##\n' - # '## indicating the name of each column. ##\n' - # '## Names \"x\",\"y\",\"z\" are interpreted as ##\n' - # '## atomic coordinates. \"mux\",\"muy\",\"muz\" ##\n' - # '## are interpreted as direction vectors. ##\n' - # '## 3) Use the -icoord \"cx cy cz...\" argument ##\n' - # '## where \"cx cy cz\" is a list of integers ##\n' - # '## indicating the column numbers for the x,y,z ##\n' - # '## coordinates of each atom. ##\n' - # '## 4) Use the -ivect \"cmux cmuy cmuz...\" argument ##\n' - # '## where \"cmux cmuy cmuz...\" is a list of ##\n' - # '## integers indicating the column numbers for ##\n' - # '## the vector that determines the direction of a ##\n' - # '## dipole or ellipsoid (ie. a rotateable vector).##\n' - # '## (More than one triplet can be specified. The ##\n' - # '## number of entries must be divisible by 3.) ##\n' + # '########################################################\n' + # '## To specify the \"'+data_atoms+'\" column format you can: ##\n' + # '## 1) Use the -atomstyle \"STYLE\" argument ##\n' + # '## where \"STYLE\" is a string indicating a LAMMPS ##\n' + # '## atom_style, including hybrid styles.(Standard ##\n' + # '## atom styles defined in 2011 are supported.) ##\n' + # '## 2) Use the -atomstyle \"COL_LIST\" argument ##\n' + # '## where \"COL_LIST" is a quoted list of strings ##\n' + # '## indicating the name of each column. ##\n' + # '## Names \"x\",\"y\",\"z\" are interpreted as ##\n' + # '## atomic coordinates. \"mux\",\"muy\",\"muz\" ##\n' + # '## are interpreted as direction vectors. ##\n' + # '## 3) Use the -icoord \"cx cy cz...\" argument ##\n' + # '## where \"cx cy cz\" is a list of integers ##\n' + # '## indicating the column numbers for the x,y,z ##\n' + # '## coordinates of each atom. ##\n' + # '## 4) Use the -ivect \"cmux cmuy cmuz...\" argument ##\n' + # '## where \"cmux cmuy cmuz...\" is a list of ##\n' + # '## integers indicating the column numbers for ##\n' + # '## the vector that determines the direction of a ##\n' + # '## dipole or ellipsoid (ie. a rotateable vector).##\n' + # '## (More than one triplet can be specified. The ##\n' + # '## number of entries must be divisible by 3.) ##\n' '########################################################\n') # The default atom_style is "full" settings.column_names = AtomStyle2ColNames('full') settings.ii_coords = ColNames2Coords(settings.column_names) settings.ii_vects = ColNames2Vects(settings.column_names) - settings.i_atomid, settings.i_atomtype, settings.i_molid = ColNames2AidAtypeMolid(settings.column_names) - - - - - - + settings.i_atomid, settings.i_atomtype, settings.i_molid = ColNames2AidAtypeMolid( + settings.column_names) + return -def TransformAtomText(text, matrix): - """ Apply transformations to the coordinates and other vector degrees - of freedom stored in the \"Data Atoms\" section of a LAMMPS data file. +def TransformAtomText(text, matrix, settings): + """ Apply transformations to the coordinates and other vector degrees + of freedom stored in the \"Data Atoms\" section of a LAMMPS data file. This is the \"text\" argument. The \"matrix\" stores the aggregate sum of combined transformations to be applied. @@ -268,16 +292,16 @@ def TransformAtomText(text, matrix): ic = line_orig.find('#') if ic != -1: line = line_orig[:ic] - comment = ' '+line_orig[ic:].rstrip('\n') + comment = ' ' + line_orig[ic:].rstrip('\n') else: line = line_orig.rstrip('\n') comment = '' columns = line.split() if len(columns) > 0: - if len(columns) == len(settings.column_names)+3: + if len(columns) == len(settings.column_names) + 3: raise InputError('Error: lttree.py does not yet support integer unit-cell counters \n' - ' within the \"'+data_atoms+'\" section of a LAMMPS data file.\n' + ' within the \"' + data_atoms + '\" section of a LAMMPS data file.\n' ' Instead please add the appropriate offsets (these offsets\n' ' should be multiples of the cell size) to the atom coordinates\n' ' in the data file, and eliminate the extra columns. Then try again.\n' @@ -287,30 +311,29 @@ def TransformAtomText(text, matrix): ' match the LAMMPS atom_style you selected.\n' ' Use the -atomstyle